From 32463b3e5114c3404f0d0cab7c20399633f17cdf Mon Sep 17 00:00:00 2001 From: Christoph Oberhofer Date: Sun, 24 Apr 2016 22:03:07 +0200 Subject: [PATCH] Updated to 0.11.0 --- examples/file_input.html | 1 + examples/file_input.js | 24 +- examples/js/quagga.js | 2249 ++++++++++++---------- examples/js/quagga.min.js | 6 +- examples/live_w_locator.html | 1 + examples/live_w_locator.js | 20 +- examples/static_images.html | 1 + examples/static_images.js | 26 +- index.md | 39 +- test/fixtures/ean_extended/image-001.jpg | Bin 0 -> 88067 bytes test/fixtures/ean_extended/image-002.jpg | Bin 0 -> 106604 bytes test/fixtures/ean_extended/image-003.jpg | Bin 0 -> 95708 bytes test/fixtures/ean_extended/image-004.jpg | Bin 0 -> 84494 bytes test/fixtures/ean_extended/image-005.jpg | Bin 0 -> 143483 bytes test/fixtures/ean_extended/image-006.jpg | Bin 0 -> 114039 bytes test/fixtures/ean_extended/image-007.jpg | Bin 0 -> 98082 bytes test/fixtures/ean_extended/image-008.jpg | Bin 0 -> 108918 bytes test/fixtures/ean_extended/image-009.jpg | Bin 0 -> 111748 bytes test/fixtures/ean_extended/image-010.jpg | Bin 0 -> 93217 bytes 19 files changed, 1328 insertions(+), 1039 deletions(-) create mode 100644 test/fixtures/ean_extended/image-001.jpg create mode 100644 test/fixtures/ean_extended/image-002.jpg create mode 100644 test/fixtures/ean_extended/image-003.jpg create mode 100644 test/fixtures/ean_extended/image-004.jpg create mode 100644 test/fixtures/ean_extended/image-005.jpg create mode 100644 test/fixtures/ean_extended/image-006.jpg create mode 100644 test/fixtures/ean_extended/image-007.jpg create mode 100644 test/fixtures/ean_extended/image-008.jpg create mode 100644 test/fixtures/ean_extended/image-009.jpg create mode 100644 test/fixtures/ean_extended/image-010.jpg diff --git a/examples/file_input.html b/examples/file_input.html index 62756c9..3c1cee2 100644 --- a/examples/file_input.html +++ b/examples/file_input.html @@ -29,6 +29,7 @@ showInMenu: false + diff --git a/examples/file_input.js b/examples/file_input.js index 354e578..371c5fd 100644 --- a/examples/file_input.js +++ b/examples/file_input.js @@ -88,7 +88,20 @@ $(function() { }, decoder: { readers: function(value) { - return [value + "_reader"]; + if (value === 'ean_extended') { + return [{ + format: "ean_reader", + config: { + supplements: [ + 'ean_5_reader', 'ean_2_reader' + ] + } + }]; + } + return [{ + format: value + "_reader", + config: {} + }]; } } }, @@ -102,13 +115,16 @@ $(function() { }, numOfWorkers: 1, decoder: { - readers: ["code_128_reader"] + readers: [{ + format: "code_128_reader", + config: {} + }] }, locate: true, src: null } }; - + App.init(); Quagga.onProcessed(function(result) { @@ -145,4 +161,4 @@ $(function() { $node.find("h4.code").html(code); $("#result_strip ul.thumbnails").prepend($node); }); -}); \ No newline at end of file +}); diff --git a/examples/js/quagga.js b/examples/js/quagga.js index 86c2a52..0bb302f 100644 --- a/examples/js/quagga.js +++ b/examples/js/quagga.js @@ -45,7 +45,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ __webpack_require__.p = "/"; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 154); +/******/ return __webpack_require__(__webpack_require__.s = 156); /******/ }) /************************************************************************/ /******/ ([ @@ -159,7 +159,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 1 */ /***/ function(module, exports, __webpack_require__) { - /* WEBPACK VAR INJECTION */(function(module, global) {var checkGlobal = __webpack_require__(104); + /* WEBPACK VAR INJECTION */(function(module, global) {var checkGlobal = __webpack_require__(106); /** Used to determine if values are of the language type `Object`. */ var objectTypes = { @@ -242,777 +242,835 @@ return /******/ (function(modules) { // webpackBootstrap /* 3 */ /***/ function(module, exports, __webpack_require__) { - var getNative = __webpack_require__(12), - root = __webpack_require__(1); - - /* Built-in method references that are verified to be native. */ - var Map = getNative(root, 'Map'); - - module.e = Map; - - -/***/ }, -/* 4 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @type {Function} - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ = __webpack_require__(17); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default = __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ && __WEBPACK_IMPORTED_MODULE_0_lodash_merge__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__; } + /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_merge___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default }); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__barcode_reader__ = __webpack_require__(6); - module.e = isArray; - - -/***/ }, -/* 5 */ -/***/ function(module, exports, __webpack_require__) { - - function BarcodeReader(config) { - this._row = []; - this.config = config || {}; - return this; - } - BarcodeReader.prototype._nextUnset = function (line, start) { - var i; + var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - if (start === undefined) { - start = 0; - } - for (i = start; i < line.length; i++) { - if (!line[i]) { - return i; - } - } - return line.length; - }; - BarcodeReader.prototype._matchPattern = function (counter, code) { - var i, - error = 0, - singleError = 0, - modulo = this.MODULO, - maxSingleError = this.SINGLE_CODE_ERROR || 1; - for (i = 0; i < counter.length; i++) { - singleError = Math.abs(code[i] - counter[i]); - if (singleError > maxSingleError) { - return Number.MAX_VALUE; - } - error += singleError; - } - return error / modulo; - }; - BarcodeReader.prototype._nextSet = function (line, offset) { - var i; + function EANReader(opts, supplements) { + opts = /* harmony import */__WEBPACK_IMPORTED_MODULE_0_lodash_merge___default.a.bind()(getDefaulConfig(), opts); + /* harmony import */__WEBPACK_IMPORTED_MODULE_1__barcode_reader__["a"].call(this, opts, supplements); + } - offset = offset || 0; - for (i = offset; i < line.length; i++) { - if (line[i]) { - return i; - } - } - return line.length; - }; + function getDefaulConfig() { + var config = {}; - BarcodeReader.prototype._normalize = function (counter, correction) { - var i, - self = this, - sum = 0, - ratio, - numOnes = 0, - normalized = new Array(counter.length), - norm = 0, - modulo = self.MODULO; + Object.keys(EANReader.CONFIG_KEYS).forEach(function (key) { + config[key] = EANReader.CONFIG_KEYS[key].default; + }); + return config; + } - if (correction) { - self._correct(counter, correction); - } - for (i = 0; i < counter.length; i++) { - sum += counter[i]; - } - ratio = sum / (modulo - numOnes); - for (i = 0; i < counter.length; i++) { - norm = counter[i] === 1 ? counter[i] : counter[i] / ratio; - normalized[i] = norm; - } - return normalized; + var properties = { + CODE_L_START: { value: 0 }, + CODE_G_START: { value: 10 }, + START_PATTERN: { value: [1, 1, 1] }, + STOP_PATTERN: { value: [1, 1, 1] }, + MIDDLE_PATTERN: { value: [1, 1, 1, 1, 1] }, + EXTENSION_START_PATTERN: { value: [1, 1, 2] }, + CODE_PATTERN: { value: [[3, 2, 1, 1], [2, 2, 2, 1], [2, 1, 2, 2], [1, 4, 1, 1], [1, 1, 3, 2], [1, 2, 3, 1], [1, 1, 1, 4], [1, 3, 1, 2], [1, 2, 1, 3], [3, 1, 1, 2], [1, 1, 2, 3], [1, 2, 2, 2], [2, 2, 1, 2], [1, 1, 4, 1], [2, 3, 1, 1], [1, 3, 2, 1], [4, 1, 1, 1], [2, 1, 3, 1], [3, 1, 2, 1], [2, 1, 1, 3]] }, + CODE_FREQUENCY: { value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26] }, + SINGLE_CODE_ERROR: { value: 0.70 }, + AVG_CODE_ERROR: { value: 0.48 }, + FORMAT: { value: "ean_13", writeable: false } }; - BarcodeReader.prototype._correctBars = function (counter, correction, indices) { - var length = indices.length, - tmp = 0; - while (length--) { - tmp = counter[indices[length]] * (1 - (1 - correction) / 2); - if (tmp > 1) { - counter[indices[length]] = tmp; - } - } - }; + EANReader.prototype = Object.create(/* harmony import */__WEBPACK_IMPORTED_MODULE_1__barcode_reader__["a"].prototype, properties); + EANReader.prototype.constructor = EANReader; - BarcodeReader.prototype._matchTrace = function (cmpCounter, epsilon) { - var counter = [], + EANReader.prototype._decodeCode = function (start, coderange) { + var counter = [0, 0, 0, 0], i, self = this, - offset = self._nextSet(self._row), + offset = start, isWhite = !self._row[offset], counterPos = 0, bestMatch = { error: Number.MAX_VALUE, code: -1, - start: 0 + start: start, + end: start }, + code, error; - if (cmpCounter) { - for (i = 0; i < cmpCounter.length; i++) { - counter.push(0); - } - for (i = offset; i < self._row.length; i++) { - if (self._row[i] ^ isWhite) { - counter[counterPos]++; - } else { - if (counterPos === counter.length - 1) { - error = self._matchPattern(counter, cmpCounter); + if (!coderange) { + coderange = self.CODE_PATTERN.length; + } - if (error < epsilon) { - bestMatch.start = i - offset; - bestMatch.end = i; - bestMatch.counter = counter; - return bestMatch; - } else { - return null; + for (i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + for (code = 0; code < coderange; code++) { + error = self._matchPattern(counter, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; } - } else { - counterPos++; } - counter[counterPos] = 1; - isWhite = !isWhite; - } - } - } else { - counter.push(0); - for (i = offset; i < self._row.length; i++) { - if (self._row[i] ^ isWhite) { - counter[counterPos]++; + bestMatch.end = i; + if (bestMatch.error > self.AVG_CODE_ERROR) { + return null; + } + return bestMatch; } else { counterPos++; - counter.push(0); - counter[counterPos] = 1; - isWhite = !isWhite; } + counter[counterPos] = 1; + isWhite = !isWhite; } } - - // if cmpCounter was not given - bestMatch.start = offset; - bestMatch.end = self._row.length - 1; - bestMatch.counter = counter; - return bestMatch; + return null; }; - BarcodeReader.prototype.decodePattern = function (pattern) { - var self = this, - result; + EANReader.prototype._findPattern = function (pattern, offset, isWhite, tryHarder, epsilon) { + var counter = [], + self = this, + i, + counterPos = 0, + bestMatch = { + error: Number.MAX_VALUE, + code: -1, + start: 0, + end: 0 + }, + error, + j, + sum; - self._row = pattern; - result = self._decode(); - if (result === null) { - self._row.reverse(); - result = self._decode(); - if (result) { - result.direction = BarcodeReader.DIRECTION.REVERSE; - result.start = self._row.length - result.start; - result.end = self._row.length - result.end; - } - } else { - result.direction = BarcodeReader.DIRECTION.FORWARD; - } - if (result) { - result.format = self.FORMAT; + if (!offset) { + offset = self._nextSet(self._row); } - return result; - }; - BarcodeReader.prototype._matchRange = function (start, end, value) { - var i; + if (isWhite === undefined) { + isWhite = false; + } - start = start < 0 ? 0 : start; - for (i = start; i < end; i++) { - if (this._row[i] !== value) { - return false; - } + if (tryHarder === undefined) { + tryHarder = true; } - return true; - }; - BarcodeReader.prototype._fillCounters = function (offset, end, isWhite) { - var self = this, - counterPos = 0, - i, - counters = []; + if (epsilon === undefined) { + epsilon = self.AVG_CODE_ERROR; + } - isWhite = typeof isWhite !== 'undefined' ? isWhite : true; - offset = typeof offset !== 'undefined' ? offset : self._nextUnset(self._row); - end = end || self._row.length; + for (i = 0; i < pattern.length; i++) { + counter[i] = 0; + } - counters[counterPos] = 0; - for (i = offset; i < end; i++) { + for (i = offset; i < self._row.length; i++) { if (self._row[i] ^ isWhite) { - counters[counterPos]++; + counter[counterPos]++; } else { - counterPos++; - counters[counterPos] = 1; - isWhite = !isWhite; - } - } - return counters; - }; - - Object.defineProperty(BarcodeReader.prototype, "FORMAT", { - value: 'unknown', - writeable: false - }); + if (counterPos === counter.length - 1) { + sum = 0; + for (j = 0; j < counter.length; j++) { + sum += counter[j]; + } + error = self._matchPattern(counter, pattern); - BarcodeReader.DIRECTION = { - FORWARD: 1, - REVERSE: -1 + if (error < epsilon) { + bestMatch.error = error; + bestMatch.start = i - sum; + bestMatch.end = i; + return bestMatch; + } + if (tryHarder) { + for (j = 0; j < counter.length - 2; j++) { + counter[j] = counter[j + 2]; + } + counter[counter.length - 2] = 0; + counter[counter.length - 1] = 0; + counterPos--; + } else { + return null; + } + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + return null; }; - BarcodeReader.Exception = { - StartNotFoundException: "Start-Info was not found!", - CodeNotFoundException: "Code could not be found!", - PatternNotFoundException: "Pattern could not be found!" + EANReader.prototype._findStart = function () { + var self = this, + leadingWhitespaceStart, + offset = self._nextSet(self._row), + startInfo; + + while (!startInfo) { + startInfo = self._findPattern(self.START_PATTERN, offset); + if (!startInfo) { + return null; + } + leadingWhitespaceStart = startInfo.start - (startInfo.end - startInfo.start); + if (leadingWhitespaceStart >= 0) { + if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) { + return startInfo; + } + } + offset = startInfo.end; + startInfo = null; + } }; - BarcodeReader.CONFIG_KEYS = {}; + EANReader.prototype._verifyTrailingWhitespace = function (endInfo) { + var self = this, + trailingWhitespaceEnd; - /* harmony default export */ exports["a"] = BarcodeReader; + trailingWhitespaceEnd = endInfo.end + (endInfo.end - endInfo.start); + if (trailingWhitespaceEnd < self._row.length) { + if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) { + return endInfo; + } + } + return null; + }; + + EANReader.prototype._findEnd = function (offset, isWhite) { + var self = this, + endInfo = self._findPattern(self.STOP_PATTERN, offset, isWhite, false); + + return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null; + }; + + EANReader.prototype._calculateFirstDigit = function (codeFrequency) { + var i, + self = this; + + for (i = 0; i < self.CODE_FREQUENCY.length; i++) { + if (codeFrequency === self.CODE_FREQUENCY[i]) { + return i; + } + } + return null; + }; + + EANReader.prototype._decodePayload = function (code, result, decodedCodes) { + var i, + self = this, + codeFrequency = 0x0, + firstDigit; + + for (i = 0; i < 6; i++) { + code = self._decodeCode(code.end); + if (!code) { + return null; + } + if (code.code >= self.CODE_G_START) { + code.code = code.code - self.CODE_G_START; + codeFrequency |= 1 << 5 - i; + } else { + codeFrequency |= 0 << 5 - i; + } + result.push(code.code); + decodedCodes.push(code); + } + + firstDigit = self._calculateFirstDigit(codeFrequency); + if (firstDigit === null) { + return null; + } + result.unshift(firstDigit); + + code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false); + if (code === null) { + return null; + } + decodedCodes.push(code); + + for (i = 0; i < 6; i++) { + code = self._decodeCode(code.end, self.CODE_G_START); + if (!code) { + return null; + } + decodedCodes.push(code); + result.push(code.code); + } + + return code; + }; + + EANReader.prototype._decode = function () { + var startInfo, + self = this, + code, + result = [], + decodedCodes = [], + resultInfo = {}; + + startInfo = self._findStart(); + if (!startInfo) { + return null; + } + code = { + code: startInfo.code, + start: startInfo.start, + end: startInfo.end + }; + decodedCodes.push(code); + code = self._decodePayload(code, result, decodedCodes); + if (!code) { + return null; + } + code = self._findEnd(code.end, false); + if (!code) { + return null; + } + + decodedCodes.push(code); + + // Checksum + if (!self._checksum(result)) { + return null; + } + + if (this.supplements.length > 0) { + var ext = this._decodeExtensions(code.end); + if (!ext) { + return null; + } + var lastCode = ext.decodedCodes[ext.decodedCodes.length - 1], + endInfo = { + start: lastCode.start + ((lastCode.end - lastCode.start) / 2 | 0), + end: lastCode.end + }; + if (!self._verifyTrailingWhitespace(endInfo)) { + return null; + } + resultInfo = { + supplement: ext, + code: result.join("") + ext.code + }; + } + + return _extends({ + code: result.join(""), + start: startInfo.start, + end: code.end, + codeset: "", + startInfo: startInfo, + decodedCodes: decodedCodes + }, resultInfo); + }; + + EANReader.prototype._decodeExtensions = function (offset) { + var i, + start = this._nextSet(this._row, offset), + startInfo = this._findPattern(this.EXTENSION_START_PATTERN, start, false, false), + result; + + if (startInfo === null) { + return null; + } + + for (i = 0; i < this.supplements.length; i++) { + result = this.supplements[i].decode(this._row, startInfo.end); + if (result !== null) { + return { + code: result.code, + start: start, + startInfo: startInfo, + end: result.end, + codeset: "", + decodedCodes: result.decodedCodes + }; + } + } + return null; + }; + + EANReader.prototype._checksum = function (result) { + var sum = 0, + i; + + for (i = result.length - 2; i >= 0; i -= 2) { + sum += result[i]; + } + sum *= 3; + for (i = result.length - 1; i >= 0; i -= 2) { + sum += result[i]; + } + return sum % 10 === 0; + }; + + EANReader.CONFIG_KEYS = { + supplements: { + 'type': 'arrayOf(string)', + 'default': [], + 'description': 'Allowed extensions to be decoded (2 and/or 5)' + } + }; + + /* harmony default export */ exports["a"] = EANReader; /***/ }, -/* 6 */ +/* 4 */ /***/ function(module, exports, __webpack_require__) { - module.e = clone + var getNative = __webpack_require__(12), + root = __webpack_require__(1); - /** - * Creates a new vec2 initialized with values from an existing vector - * - * @param {vec2} a vector to clone - * @returns {vec2} a new 2D vector - */ - function clone(a) { - var out = new Float32Array(2) - out[0] = a[0] - out[1] = a[1] - return out - } + /* Built-in method references that are verified to be native. */ + var Map = getNative(root, 'Map'); + + module.e = Map; + /***/ }, -/* 7 */ +/* 5 */ /***/ function(module, exports, __webpack_require__) { /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". + * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ + * @type {Function} * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. * @example * - * _.isObjectLike({}); + * _.isArray([1, 2, 3]); * // => true * - * _.isObjectLike([1, 2, 3]); - * // => true + * _.isArray(document.body.children); + * // => false * - * _.isObjectLike(_.noop); + * _.isArray('abc'); * // => false * - * _.isObjectLike(null); + * _.isArray(_.noop); * // => false */ - function isObjectLike(value) { - return !!value && typeof value == 'object'; - } + var isArray = Array.isArray; - module.e = isObjectLike; + module.e = isArray; /***/ }, -/* 8 */ +/* 6 */ /***/ function(module, exports, __webpack_require__) { - /* harmony default export */ exports["a"] = { - init: function init(arr, val) { - var l = arr.length; - while (l--) { - arr[l] = val; - } - }, - - /** - * Shuffles the content of an array - * @return {Array} the array itself shuffled - */ - shuffle: function shuffle(arr) { - var i = arr.length - 1, - j, - x; - for (i; i >= 0; i--) { - j = Math.floor(Math.random() * i); - x = arr[i]; - arr[i] = arr[j]; - arr[j] = x; - } - return arr; - }, + function BarcodeReader(config, supplements) { + this._row = []; + this.config = config || {}; + this.supplements = supplements; + return this; + } - toPointList: function toPointList(arr) { - var i, - j, - row = [], - rows = []; - for (i = 0; i < arr.length; i++) { - row = []; - for (j = 0; j < arr[i].length; j++) { - row[j] = arr[i][j]; - } - rows[i] = "[" + row.join(",") + "]"; - } - return "[" + rows.join(",\r\n") + "]"; - }, + BarcodeReader.prototype._nextUnset = function (line, start) { + var i; - /** - * returns the elements which's score is bigger than the threshold - * @return {Array} the reduced array - */ - threshold: function threshold(arr, _threshold, scoreFunc) { - var i, - queue = []; - for (i = 0; i < arr.length; i++) { - if (scoreFunc.apply(arr, [arr[i]]) >= _threshold) { - queue.push(arr[i]); - } + if (start === undefined) { + start = 0; + } + for (i = start; i < line.length; i++) { + if (!line[i]) { + return i; } - return queue; - }, + } + return line.length; + }; - maxIndex: function maxIndex(arr) { - var i, - max = 0; - for (i = 0; i < arr.length; i++) { - if (arr[i] > arr[max]) { - max = i; - } - } - return max; - }, + BarcodeReader.prototype._matchPattern = function (counter, code, maxSingleError) { + var i, + error = 0, + singleError = 0, + sum = 0, + modulo = 0, + barWidth, + count, + scaled; - max: function max(arr) { - var i, - max = 0; - for (i = 0; i < arr.length; i++) { - if (arr[i] > max) { - max = arr[i]; - } - } - return max; - }, + maxSingleError = maxSingleError || this.SINGLE_CODE_ERROR || 1; - sum: function sum(arr) { - var length = arr.length, - sum = 0; + for (i = 0; i < counter.length; i++) { + sum += counter[i]; + modulo += code[i]; + } + if (sum < modulo) { + return Number.MAX_VALUE; + } + barWidth = sum / modulo; + maxSingleError *= barWidth; - while (length--) { - sum += arr[length]; + for (i = 0; i < counter.length; i++) { + count = counter[i]; + scaled = code[i] * barWidth; + singleError = Math.abs(count - scaled) / scaled; + if (singleError > maxSingleError) { + return Number.MAX_VALUE; } - return sum; + error += singleError; } + return error / modulo; }; - -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { - - /* harmony default export */ exports["a"] = { - drawRect: function drawRect(pos, size, ctx, style) { - ctx.strokeStyle = style.color; - ctx.fillStyle = style.color; - ctx.lineWidth = 1; - ctx.beginPath(); - ctx.strokeRect(pos.x, pos.y, size.x, size.y); - }, - drawPath: function drawPath(path, def, ctx, style) { - ctx.strokeStyle = style.color; - ctx.fillStyle = style.color; - ctx.lineWidth = style.lineWidth; - ctx.beginPath(); - ctx.moveTo(path[0][def.x], path[0][def.y]); - for (var j = 1; j < path.length; j++) { - ctx.lineTo(path[j][def.x], path[j][def.y]); - } - ctx.closePath(); - ctx.stroke(); - }, - drawImage: function drawImage(imageData, size, ctx) { - var canvasData = ctx.getImageData(0, 0, size.x, size.y), - data = canvasData.data, - imageDataPos = imageData.length, - canvasDataPos = data.length, - value; - if (canvasDataPos / imageDataPos !== 4) { - return false; - } - while (imageDataPos--) { - value = imageData[imageDataPos]; - data[--canvasDataPos] = 255; - data[--canvasDataPos] = value; - data[--canvasDataPos] = value; - data[--canvasDataPos] = value; + BarcodeReader.prototype._nextSet = function (line, offset) { + var i; + + offset = offset || 0; + for (i = offset; i < line.length; i++) { + if (line[i]) { + return i; } - ctx.putImageData(canvasData, 0, 0); - return true; } + return line.length; }; - -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { - - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(5); - - function EANReader(opts) { - /* harmony import */__WEBPACK_IMPORTED_MODULE_0__barcode_reader__["a"].call(this, opts); - } - - var properties = { - CODE_L_START: { value: 0 }, - MODULO: { value: 7 }, - CODE_G_START: { value: 10 }, - START_PATTERN: { value: [1 / 3 * 7, 1 / 3 * 7, 1 / 3 * 7] }, - STOP_PATTERN: { value: [1 / 3 * 7, 1 / 3 * 7, 1 / 3 * 7] }, - MIDDLE_PATTERN: { value: [1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7] }, - CODE_PATTERN: { value: [[3, 2, 1, 1], [2, 2, 2, 1], [2, 1, 2, 2], [1, 4, 1, 1], [1, 1, 3, 2], [1, 2, 3, 1], [1, 1, 1, 4], [1, 3, 1, 2], [1, 2, 1, 3], [3, 1, 1, 2], [1, 1, 2, 3], [1, 2, 2, 2], [2, 2, 1, 2], [1, 1, 4, 1], [2, 3, 1, 1], [1, 3, 2, 1], [4, 1, 1, 1], [2, 1, 3, 1], [3, 1, 2, 1], [2, 1, 1, 3]] }, - CODE_FREQUENCY: { value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26] }, - SINGLE_CODE_ERROR: { value: 0.67 }, - AVG_CODE_ERROR: { value: 0.27 }, - FORMAT: { value: "ean_13", writeable: false } + BarcodeReader.prototype._correctBars = function (counter, correction, indices) { + var length = indices.length, + tmp = 0; + while (length--) { + tmp = counter[indices[length]] * (1 - (1 - correction) / 2); + if (tmp > 1) { + counter[indices[length]] = tmp; + } + } }; - EANReader.prototype = Object.create(/* harmony import */__WEBPACK_IMPORTED_MODULE_0__barcode_reader__["a"].prototype, properties); - EANReader.prototype.constructor = EANReader; - - EANReader.prototype._decodeCode = function (start, coderange) { - var counter = [0, 0, 0, 0], + BarcodeReader.prototype._matchTrace = function (cmpCounter, epsilon) { + var counter = [], i, self = this, - offset = start, + offset = self._nextSet(self._row), isWhite = !self._row[offset], counterPos = 0, bestMatch = { error: Number.MAX_VALUE, code: -1, - start: start, - end: start + start: 0 }, - code, - error, - normalized; + error; - if (!coderange) { - coderange = self.CODE_PATTERN.length; - } + if (cmpCounter) { + for (i = 0; i < cmpCounter.length; i++) { + counter.push(0); + } + for (i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + error = self._matchPattern(counter, cmpCounter); - for (i = offset; i < self._row.length; i++) { - if (self._row[i] ^ isWhite) { - counter[counterPos]++; - } else { - if (counterPos === counter.length - 1) { - normalized = self._normalize(counter); - if (normalized) { - for (code = 0; code < coderange; code++) { - error = self._matchPattern(normalized, self.CODE_PATTERN[code]); - if (error < bestMatch.error) { - bestMatch.code = code; - bestMatch.error = error; - } - } - bestMatch.end = i; - if (bestMatch.error > self.AVG_CODE_ERROR) { + if (error < epsilon) { + bestMatch.start = i - offset; + bestMatch.end = i; + bestMatch.counter = counter; + return bestMatch; + } else { return null; } - return bestMatch; + } else { + counterPos++; } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + } else { + counter.push(0); + for (i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; } else { counterPos++; + counter.push(0); + counter[counterPos] = 1; + isWhite = !isWhite; } - counter[counterPos] = 1; - isWhite = !isWhite; } } - return null; + + // if cmpCounter was not given + bestMatch.start = offset; + bestMatch.end = self._row.length - 1; + bestMatch.counter = counter; + return bestMatch; }; - EANReader.prototype._findPattern = function (pattern, offset, isWhite, tryHarder, epsilon) { - var counter = [], - self = this, - i, - counterPos = 0, - bestMatch = { - error: Number.MAX_VALUE, - code: -1, - start: 0, - end: 0 - }, - error, - j, - sum, - normalized; + BarcodeReader.prototype.decodePattern = function (pattern) { + var self = this, + result; - if (!offset) { - offset = self._nextSet(self._row); + self._row = pattern; + result = self._decode(); + if (result === null) { + self._row.reverse(); + result = self._decode(); + if (result) { + result.direction = BarcodeReader.DIRECTION.REVERSE; + result.start = self._row.length - result.start; + result.end = self._row.length - result.end; + } + } else { + result.direction = BarcodeReader.DIRECTION.FORWARD; } - - if (isWhite === undefined) { - isWhite = false; + if (result) { + result.format = self.FORMAT; } + return result; + }; - if (tryHarder === undefined) { - tryHarder = true; - } + BarcodeReader.prototype._matchRange = function (start, end, value) { + var i; - if (epsilon === undefined) { - epsilon = self.AVG_CODE_ERROR; + start = start < 0 ? 0 : start; + for (i = start; i < end; i++) { + if (this._row[i] !== value) { + return false; + } } + return true; + }; - for (i = 0; i < pattern.length; i++) { - counter[i] = 0; - } + BarcodeReader.prototype._fillCounters = function (offset, end, isWhite) { + var self = this, + counterPos = 0, + i, + counters = []; - for (i = offset; i < self._row.length; i++) { + isWhite = typeof isWhite !== 'undefined' ? isWhite : true; + offset = typeof offset !== 'undefined' ? offset : self._nextUnset(self._row); + end = end || self._row.length; + + counters[counterPos] = 0; + for (i = offset; i < end; i++) { if (self._row[i] ^ isWhite) { - counter[counterPos]++; + counters[counterPos]++; } else { - if (counterPos === counter.length - 1) { - sum = 0; - for (j = 0; j < counter.length; j++) { - sum += counter[j]; - } - normalized = self._normalize(counter); - if (normalized) { - error = self._matchPattern(normalized, pattern); - - if (error < epsilon) { - bestMatch.error = error; - bestMatch.start = i - sum; - bestMatch.end = i; - return bestMatch; - } - } - if (tryHarder) { - for (j = 0; j < counter.length - 2; j++) { - counter[j] = counter[j + 2]; - } - counter[counter.length - 2] = 0; - counter[counter.length - 1] = 0; - counterPos--; - } else { - return null; - } - } else { - counterPos++; - } - counter[counterPos] = 1; + counterPos++; + counters[counterPos] = 1; isWhite = !isWhite; } } - return null; + return counters; }; - EANReader.prototype._findStart = function () { - var self = this, - leadingWhitespaceStart, - offset = self._nextSet(self._row), - startInfo; + Object.defineProperty(BarcodeReader.prototype, "FORMAT", { + value: 'unknown', + writeable: false + }); - while (!startInfo) { - startInfo = self._findPattern(self.START_PATTERN, offset); - if (!startInfo) { - return null; - } - leadingWhitespaceStart = startInfo.start - (startInfo.end - startInfo.start); - if (leadingWhitespaceStart >= 0) { - if (self._matchRange(leadingWhitespaceStart, startInfo.start, 0)) { - return startInfo; - } - } - offset = startInfo.end; - startInfo = null; - } + BarcodeReader.DIRECTION = { + FORWARD: 1, + REVERSE: -1 }; - EANReader.prototype._verifyTrailingWhitespace = function (endInfo) { - var self = this, - trailingWhitespaceEnd; - - trailingWhitespaceEnd = endInfo.end + (endInfo.end - endInfo.start); - if (trailingWhitespaceEnd < self._row.length) { - if (self._matchRange(endInfo.end, trailingWhitespaceEnd, 0)) { - return endInfo; - } - } - return null; + BarcodeReader.Exception = { + StartNotFoundException: "Start-Info was not found!", + CodeNotFoundException: "Code could not be found!", + PatternNotFoundException: "Pattern could not be found!" }; - EANReader.prototype._findEnd = function (offset, isWhite) { - var self = this, - endInfo = self._findPattern(self.STOP_PATTERN, offset, isWhite, false); + BarcodeReader.CONFIG_KEYS = {}; - return endInfo !== null ? self._verifyTrailingWhitespace(endInfo) : null; - }; + /* harmony default export */ exports["a"] = BarcodeReader; + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + module.e = clone - EANReader.prototype._calculateFirstDigit = function (codeFrequency) { - var i, - self = this; + /** + * Creates a new vec2 initialized with values from an existing vector + * + * @param {vec2} a vector to clone + * @returns {vec2} a new 2D vector + */ + function clone(a) { + var out = new Float32Array(2) + out[0] = a[0] + out[1] = a[1] + return out + } + +/***/ }, +/* 8 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } - for (i = 0; i < self.CODE_FREQUENCY.length; i++) { - if (codeFrequency === self.CODE_FREQUENCY[i]) { - return i; + module.e = isObjectLike; + + +/***/ }, +/* 9 */ +/***/ function(module, exports, __webpack_require__) { + + /* harmony default export */ exports["a"] = { + init: function init(arr, val) { + var l = arr.length; + while (l--) { + arr[l] = val; } - } - return null; - }; - - EANReader.prototype._decodePayload = function (code, result, decodedCodes) { - var i, - self = this, - codeFrequency = 0x0, - firstDigit; + }, - for (i = 0; i < 6; i++) { - code = self._decodeCode(code.end); - if (!code) { - return null; - } - if (code.code >= self.CODE_G_START) { - code.code = code.code - self.CODE_G_START; - codeFrequency |= 1 << 5 - i; - } else { - codeFrequency |= 0 << 5 - i; + /** + * Shuffles the content of an array + * @return {Array} the array itself shuffled + */ + shuffle: function shuffle(arr) { + var i = arr.length - 1, + j, + x; + for (i; i >= 0; i--) { + j = Math.floor(Math.random() * i); + x = arr[i]; + arr[i] = arr[j]; + arr[j] = x; } - result.push(code.code); - decodedCodes.push(code); - } - - firstDigit = self._calculateFirstDigit(codeFrequency); - if (firstDigit === null) { - return null; - } - result.unshift(firstDigit); - - code = self._findPattern(self.MIDDLE_PATTERN, code.end, true, false); - if (code === null) { - return null; - } - decodedCodes.push(code); + return arr; + }, - for (i = 0; i < 6; i++) { - code = self._decodeCode(code.end, self.CODE_G_START); - if (!code) { - return null; + toPointList: function toPointList(arr) { + var i, + j, + row = [], + rows = []; + for (i = 0; i < arr.length; i++) { + row = []; + for (j = 0; j < arr[i].length; j++) { + row[j] = arr[i][j]; + } + rows[i] = "[" + row.join(",") + "]"; } - decodedCodes.push(code); - result.push(code.code); - } + return "[" + rows.join(",\r\n") + "]"; + }, - return code; - }; + /** + * returns the elements which's score is bigger than the threshold + * @return {Array} the reduced array + */ + threshold: function threshold(arr, _threshold, scoreFunc) { + var i, + queue = []; + for (i = 0; i < arr.length; i++) { + if (scoreFunc.apply(arr, [arr[i]]) >= _threshold) { + queue.push(arr[i]); + } + } + return queue; + }, - EANReader.prototype._decode = function () { - var startInfo, - self = this, - code, - result = [], - decodedCodes = []; + maxIndex: function maxIndex(arr) { + var i, + max = 0; + for (i = 0; i < arr.length; i++) { + if (arr[i] > arr[max]) { + max = i; + } + } + return max; + }, - startInfo = self._findStart(); - if (!startInfo) { - return null; - } - code = { - code: startInfo.code, - start: startInfo.start, - end: startInfo.end - }; - decodedCodes.push(code); - code = self._decodePayload(code, result, decodedCodes); - if (!code) { - return null; - } - code = self._findEnd(code.end, false); - if (!code) { - return null; - } + max: function max(arr) { + var i, + max = 0; + for (i = 0; i < arr.length; i++) { + if (arr[i] > max) { + max = arr[i]; + } + } + return max; + }, - decodedCodes.push(code); + sum: function sum(arr) { + var length = arr.length, + sum = 0; - // Checksum - if (!self._checksum(result)) { - return null; + while (length--) { + sum += arr[length]; + } + return sum; } - - return { - code: result.join(""), - start: startInfo.start, - end: code.end, - codeset: "", - startInfo: startInfo, - decodedCodes: decodedCodes - }; }; + +/***/ }, +/* 10 */ +/***/ function(module, exports, __webpack_require__) { + + /* harmony default export */ exports["a"] = { + drawRect: function drawRect(pos, size, ctx, style) { + ctx.strokeStyle = style.color; + ctx.fillStyle = style.color; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.strokeRect(pos.x, pos.y, size.x, size.y); + }, + drawPath: function drawPath(path, def, ctx, style) { + ctx.strokeStyle = style.color; + ctx.fillStyle = style.color; + ctx.lineWidth = style.lineWidth; + ctx.beginPath(); + ctx.moveTo(path[0][def.x], path[0][def.y]); + for (var j = 1; j < path.length; j++) { + ctx.lineTo(path[j][def.x], path[j][def.y]); + } + ctx.closePath(); + ctx.stroke(); + }, + drawImage: function drawImage(imageData, size, ctx) { + var canvasData = ctx.getImageData(0, 0, size.x, size.y), + data = canvasData.data, + imageDataPos = imageData.length, + canvasDataPos = data.length, + value; - EANReader.prototype._checksum = function (result) { - var sum = 0, - i; - - for (i = result.length - 2; i >= 0; i -= 2) { - sum += result[i]; - } - sum *= 3; - for (i = result.length - 1; i >= 0; i -= 2) { - sum += result[i]; + if (canvasDataPos / imageDataPos !== 4) { + return false; + } + while (imageDataPos--) { + value = imageData[imageDataPos]; + data[--canvasDataPos] = 255; + data[--canvasDataPos] = value; + data[--canvasDataPos] = value; + data[--canvasDataPos] = value; + } + ctx.putImageData(canvasData, 0, 0); + return true; } - return sum % 10 === 0; }; - - /* harmony default export */ exports["a"] = EANReader; /***/ }, /* 11 */ @@ -1046,7 +1104,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 12 */ /***/ function(module, exports, __webpack_require__) { - var isNative = __webpack_require__(140); + var isNative = __webpack_require__(142); /** * Gets the native function at `key` of `object`. @@ -1185,17 +1243,61 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 17 */ +/***/ function(module, exports, __webpack_require__) { + + var baseMerge = __webpack_require__(101), + createAssigner = __webpack_require__(115); + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable properties of source objects into the destination + * object. Source properties that resolve to `undefined` are skipped if a + * destination value exists. Array and plain object properties are merged + * recursively.Other objects and value types are overridden by assignment. + * Source objects are applied from left to right. Subsequent sources + * overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var users = { + * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] + * }; + * + * var ages = { + * 'data': [{ 'age': 36 }, { 'age': 40 }] + * }; + * + * _.merge(users, ages); + * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + module.e = merge; + + +/***/ }, +/* 18 */ /***/ function(module, exports, __webpack_require__) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cluster__ = __webpack_require__(51); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__array_helper__ = __webpack_require__(8); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__array_helper__ = __webpack_require__(9); /* harmony export */ exports["f"] = imageRef;/* unused harmony export computeIntegralImage2 *//* unused harmony export computeIntegralImage *//* unused harmony export thresholdImage *//* unused harmony export computeHistogram *//* unused harmony export sharpenLine *//* unused harmony export determineOtsuThreshold *//* harmony export */ exports["c"] = otsuThreshold;/* unused harmony export computeBinaryImage *//* harmony export */ exports["d"] = cluster;/* unused harmony export dilate *//* unused harmony export erode *//* unused harmony export subtract *//* unused harmony export bitwiseOr *//* unused harmony export countNonZero *//* harmony export */ exports["e"] = topGeneric;/* unused harmony export grayArrayFromImage *//* unused harmony export grayArrayFromContext *//* harmony export */ exports["i"] = grayAndHalfSampleFromCanvasData;/* harmony export */ exports["j"] = computeGray;/* unused harmony export loadImageArray *//* harmony export */ exports["g"] = halfSample;/* harmony export */ exports["a"] = hsv2rgb;/* unused harmony export _computeDivisors *//* harmony export */ exports["b"] = calculatePatchSize;/* unused harmony export _parseCSSDimensionValues *//* harmony export */ exports["h"] = computeImageArea; var vec2 = { - clone: __webpack_require__(6) + clone: __webpack_require__(7) }; var vec3 = { - clone: __webpack_require__(78) + clone: __webpack_require__(80) }; /** @@ -1968,17 +2070,17 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 18 */ +/* 19 */ /***/ function(module, exports, __webpack_require__) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__subImage__ = __webpack_require__(53); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_cv_utils__ = __webpack_require__(17); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__common_array_helper__ = __webpack_require__(8); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_cv_utils__ = __webpack_require__(18); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__common_array_helper__ = __webpack_require__(9); var vec2 = { - clone: __webpack_require__(6) + clone: __webpack_require__(7) }; /** @@ -2328,7 +2430,7 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = ImageWrapper; /***/ }, -/* 19 */ +/* 20 */ /***/ function(module, exports, __webpack_require__) { /** @@ -2359,10 +2461,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 20 */ +/* 21 */ /***/ function(module, exports, __webpack_require__) { - var copyObjectWith = __webpack_require__(111); + var copyObjectWith = __webpack_require__(113); /** * Copies properties of `source` to `object`. @@ -2381,7 +2483,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 21 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { /** @@ -2407,7 +2509,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 22 */ +/* 23 */ /***/ function(module, exports, __webpack_require__) { /** Used as references for various `Number` constants. */ @@ -2434,7 +2536,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 23 */ +/* 24 */ /***/ function(module, exports, __webpack_require__) { /** Used for built-in method references. */ @@ -2458,10 +2560,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 24 */ +/* 25 */ /***/ function(module, exports, __webpack_require__) { - var isArrayLikeObject = __webpack_require__(26); + var isArrayLikeObject = __webpack_require__(27); /** `Object#toString` result references. */ var argsTag = '[object Arguments]'; @@ -2507,12 +2609,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 25 */ +/* 26 */ /***/ function(module, exports, __webpack_require__) { - var getLength = __webpack_require__(115), + var getLength = __webpack_require__(117), isFunction = __webpack_require__(16), - isLength = __webpack_require__(27); + isLength = __webpack_require__(28); /** * Checks if `value` is array-like. A value is considered array-like if it's @@ -2546,11 +2648,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 26 */ +/* 27 */ /***/ function(module, exports, __webpack_require__) { - var isArrayLike = __webpack_require__(25), - isObjectLike = __webpack_require__(7); + var isArrayLike = __webpack_require__(26), + isObjectLike = __webpack_require__(8); /** * This method is like `_.isArrayLike` except that it also checks if `value` @@ -2583,7 +2685,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 27 */ +/* 28 */ /***/ function(module, exports, __webpack_require__) { /** Used as references for various `Number` constants. */ @@ -2621,50 +2723,6 @@ return /******/ (function(modules) { // webpackBootstrap module.e = isLength; -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { - - var baseMerge = __webpack_require__(99), - createAssigner = __webpack_require__(113); - - /** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable properties of source objects into the destination - * object. Source properties that resolve to `undefined` are skipped if a - * destination value exists. Array and plain object properties are merged - * recursively.Other objects and value types are overridden by assignment. - * Source objects are applied from left to right. Subsequent sources - * overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var users = { - * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] - * }; - * - * var ages = { - * 'data': [{ 'age': 36 }, { 'age': 40 }] - * }; - * - * _.merge(users, ages); - * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } - */ - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - - module.e = merge; - - /***/ }, /* 29 */ /***/ function(module, exports, __webpack_require__) { @@ -2773,8 +2831,8 @@ return /******/ (function(modules) { // webpackBootstrap /* 30 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(5); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_array_helper__ = __webpack_require__(8); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(6); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_array_helper__ = __webpack_require__(9); @@ -3008,11 +3066,11 @@ return /******/ (function(modules) { // webpackBootstrap /* 32 */ /***/ function(module, exports, __webpack_require__) { - var stackClear = __webpack_require__(133), - stackDelete = __webpack_require__(134), - stackGet = __webpack_require__(135), - stackHas = __webpack_require__(136), - stackSet = __webpack_require__(137); + var stackClear = __webpack_require__(135), + stackDelete = __webpack_require__(136), + stackGet = __webpack_require__(137), + stackHas = __webpack_require__(138), + stackSet = __webpack_require__(139); /** * Creates a stack cache object to store key-value pairs. @@ -3238,7 +3296,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 40 */ /***/ function(module, exports, __webpack_require__) { - var Uint8Array = __webpack_require__(84); + var Uint8Array = __webpack_require__(86); /** * Creates a clone of `arrayBuffer`. @@ -3313,11 +3371,11 @@ return /******/ (function(modules) { // webpackBootstrap /* 43 */ /***/ function(module, exports, __webpack_require__) { - var baseTimes = __webpack_require__(103), - isArguments = __webpack_require__(24), - isArray = __webpack_require__(4), - isLength = __webpack_require__(27), - isString = __webpack_require__(142); + var baseTimes = __webpack_require__(105), + isArguments = __webpack_require__(25), + isArray = __webpack_require__(5), + isLength = __webpack_require__(28), + isString = __webpack_require__(144); /** * Creates an array of index keys for `object` values of arrays, @@ -3343,8 +3401,8 @@ return /******/ (function(modules) { // webpackBootstrap /* 44 */ /***/ function(module, exports, __webpack_require__) { - var isLength = __webpack_require__(27), - isObjectLike = __webpack_require__(7); + var isLength = __webpack_require__(28), + isObjectLike = __webpack_require__(8); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', @@ -3424,12 +3482,12 @@ return /******/ (function(modules) { // webpackBootstrap /* 45 */ /***/ function(module, exports, __webpack_require__) { - var baseHas = __webpack_require__(96), - baseKeys = __webpack_require__(97), + var baseHas = __webpack_require__(98), + baseKeys = __webpack_require__(99), indexKeys = __webpack_require__(43), - isArrayLike = __webpack_require__(25), - isIndex = __webpack_require__(22), - isPrototype = __webpack_require__(23); + isArrayLike = __webpack_require__(26), + isIndex = __webpack_require__(23), + isPrototype = __webpack_require__(24); /** * Creates an array of the own enumerable property names of `object`. @@ -3485,10 +3543,10 @@ return /******/ (function(modules) { // webpackBootstrap /* 46 */ /***/ function(module, exports, __webpack_require__) { - var baseKeysIn = __webpack_require__(98), + var baseKeysIn = __webpack_require__(100), indexKeys = __webpack_require__(43), - isIndex = __webpack_require__(22), - isPrototype = __webpack_require__(23); + isIndex = __webpack_require__(23), + isPrototype = __webpack_require__(24); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -3545,8 +3603,8 @@ return /******/ (function(modules) { // webpackBootstrap /* 47 */ /***/ function(module, exports, __webpack_require__) { - var apply = __webpack_require__(88), - toInteger = __webpack_require__(144); + var apply = __webpack_require__(90), + toInteger = __webpack_require__(146); /** Used as the `TypeError` message for "Functions" methods. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -3644,21 +3702,21 @@ return /******/ (function(modules) { // webpackBootstrap /* 49 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ = __webpack_require__(28); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ = __webpack_require__(17); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default = __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ && __WEBPACK_IMPORTED_MODULE_0_lodash_merge__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_merge___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_typedefs__ = __webpack_require__(54); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_typedefs___default = __WEBPACK_IMPORTED_MODULE_1__common_typedefs__ && __WEBPACK_IMPORTED_MODULE_1__common_typedefs__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_1__common_typedefs__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_1__common_typedefs__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_1__common_typedefs___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_1__common_typedefs___default }); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_webrtc_adapter__ = __webpack_require__(147); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_webrtc_adapter__ = __webpack_require__(149); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_webrtc_adapter___default = __WEBPACK_IMPORTED_MODULE_2_webrtc_adapter__ && __WEBPACK_IMPORTED_MODULE_2_webrtc_adapter__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_2_webrtc_adapter__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_2_webrtc_adapter__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_2_webrtc_adapter___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_2_webrtc_adapter___default }); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_image_wrapper__ = __webpack_require__(18); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_image_wrapper__ = __webpack_require__(19); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__locator_barcode_locator__ = __webpack_require__(63); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__decoder_barcode_decoder__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__common_events__ = __webpack_require__(52); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__input_camera_access__ = __webpack_require__(59); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__common_image_debug__ = __webpack_require__(9); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__common_image_debug__ = __webpack_require__(10); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__analytics_result_collector__ = __webpack_require__(50); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__config_config__ = __webpack_require__(56); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_input_stream__ = __webpack_require__(62); @@ -3681,7 +3739,7 @@ return /******/ (function(modules) { // webpackBootstrap var vec2 = { - clone: __webpack_require__(6) + clone: __webpack_require__(7) }; var _inputStream, @@ -4207,7 +4265,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 50 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_image_debug__ = __webpack_require__(9); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_image_debug__ = __webpack_require__(10); function contains(codeResult, list) { @@ -4268,7 +4326,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var vec2 = { - clone: __webpack_require__(6), + clone: __webpack_require__(7), dot: __webpack_require__(31) }; /** @@ -4614,16 +4672,18 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__bresenham__ = __webpack_require__(58); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_image_debug__ = __webpack_require__(9); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_image_debug__ = __webpack_require__(10); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__reader_code_128_reader__ = __webpack_require__(67); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__reader_ean_reader__ = __webpack_require__(10); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__reader_ean_reader__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__reader_code_39_reader__ = __webpack_require__(30); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__reader_code_39_vin_reader__ = __webpack_require__(68); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__reader_codabar_reader__ = __webpack_require__(66); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__reader_upc_reader__ = __webpack_require__(72); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__reader_ean_8_reader__ = __webpack_require__(69); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__reader_upc_e_reader__ = __webpack_require__(71); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__reader_i2of5_reader__ = __webpack_require__(70); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__reader_upc_reader__ = __webpack_require__(74); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__reader_ean_8_reader__ = __webpack_require__(71); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__reader_ean_2_reader__ = __webpack_require__(69); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__reader_ean_5_reader__ = __webpack_require__(70); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__reader_upc_e_reader__ = __webpack_require__(73); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__reader_i2of5_reader__ = __webpack_require__(72); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; @@ -4638,16 +4698,20 @@ return /******/ (function(modules) { // webpackBootstrap + + var READERS = { code_128_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_2__reader_code_128_reader__["a"], ean_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_3__reader_ean_reader__["a"], + ean_5_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_10__reader_ean_5_reader__["a"], + ean_2_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_9__reader_ean_2_reader__["a"], ean_8_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_8__reader_ean_8_reader__["a"], code_39_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_4__reader_code_39_reader__["a"], code_39_vin_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_5__reader_code_39_vin_reader__["a"], codabar_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_6__reader_codabar_reader__["a"], upc_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_7__reader_upc_reader__["a"], - upc_e_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_9__reader_upc_e_reader__["a"], - i2of5_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_10__reader_i2of5_reader__["a"] + upc_e_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_11__reader_upc_e_reader__["a"], + i2of5_reader: /* harmony import */__WEBPACK_IMPORTED_MODULE_12__reader_i2of5_reader__["a"] }; /* harmony default export */ exports["a"] = { create: function create(config, inputImageWrapper) { @@ -4702,7 +4766,8 @@ return /******/ (function(modules) { // webpackBootstrap function initReaders() { config.readers.forEach(function (readerConfig) { var reader, - configuration = {}; + configuration = {}, + supplements = []; if ((typeof readerConfig === 'undefined' ? 'undefined' : _typeof(readerConfig)) === 'object') { reader = readerConfig.format; @@ -4713,7 +4778,12 @@ return /******/ (function(modules) { // webpackBootstrap if (true) { console.log("Before registering reader: ", reader); } - _barcodeReaders.push(new READERS[reader](configuration)); + if (configuration.supplements) { + supplements = configuration.supplements.map(function (supplement) { + return new READERS[supplement](); + }); + } + _barcodeReaders.push(new READERS[reader](configuration, supplements)); }); if (true) { console.log("Registered Readers: " + _barcodeReaders.map(function (reader) { @@ -4936,7 +5006,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 58 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_image_wrapper__ = __webpack_require__(18); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_image_wrapper__ = __webpack_require__(19); var Bresenham = {}; @@ -5141,10 +5211,10 @@ return /******/ (function(modules) { // webpackBootstrap /* 59 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_pick__ = __webpack_require__(143); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_pick__ = __webpack_require__(145); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_pick___default = __WEBPACK_IMPORTED_MODULE_0_lodash_pick__ && __WEBPACK_IMPORTED_MODULE_0_lodash_pick__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_pick__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_pick__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_pick___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_pick___default }); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_merge__ = __webpack_require__(28); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_merge__ = __webpack_require__(17); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_merge___default = __WEBPACK_IMPORTED_MODULE_1_lodash_merge__ && __WEBPACK_IMPORTED_MODULE_1_lodash_merge__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_1_lodash_merge__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_1_lodash_merge__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_1_lodash_merge___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_1_lodash_merge___default }); @@ -5254,7 +5324,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 60 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_cv_utils__ = __webpack_require__(17); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_cv_utils__ = __webpack_require__(18); var FrameGrabber = {}; @@ -5716,10 +5786,10 @@ return /******/ (function(modules) { // webpackBootstrap /* 63 */ /***/ function(module, exports, __webpack_require__) { - /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_image_wrapper__ = __webpack_require__(18); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_cv_utils__ = __webpack_require__(17); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__common_array_helper__ = __webpack_require__(8); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_image_debug__ = __webpack_require__(9); + /* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__common_image_wrapper__ = __webpack_require__(19); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__common_cv_utils__ = __webpack_require__(18); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__common_array_helper__ = __webpack_require__(9); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__common_image_debug__ = __webpack_require__(10); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__rasterizer__ = __webpack_require__(64); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__tracer__ = __webpack_require__(29); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__skeletonizer__ = __webpack_require__(65); @@ -5731,15 +5801,15 @@ return /******/ (function(modules) { // webpackBootstrap var vec2 = { - clone: __webpack_require__(6), + clone: __webpack_require__(7), dot: __webpack_require__(31), - scale: __webpack_require__(76), - transformMat2: __webpack_require__(77) + scale: __webpack_require__(78), + transformMat2: __webpack_require__(79) }; var mat2 = { - copy: __webpack_require__(73), - create: __webpack_require__(74), - invert: __webpack_require__(75) + copy: __webpack_require__(75), + create: __webpack_require__(76), + invert: __webpack_require__(77) }; var _config, @@ -6710,7 +6780,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 66 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(5); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(6); function CodabarReader() { @@ -7000,7 +7070,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 67 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(5); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__barcode_reader__ = __webpack_require__(6); function Code128Reader() { @@ -7016,7 +7086,6 @@ return /******/ (function(modules) { // webpackBootstrap START_CODE_B: { value: 104 }, START_CODE_C: { value: 105 }, STOP_CODE: { value: 106 }, - MODULO: { value: 11 }, CODE_PATTERN: { value: [[2, 1, 2, 2, 2, 2], [2, 2, 2, 1, 2, 2], [2, 2, 2, 2, 2, 1], [1, 2, 1, 2, 2, 3], [1, 2, 1, 3, 2, 2], [1, 3, 1, 2, 2, 2], [1, 2, 2, 2, 1, 3], [1, 2, 2, 3, 1, 2], [1, 3, 2, 2, 1, 2], [2, 2, 1, 2, 1, 3], [2, 2, 1, 3, 1, 2], [2, 3, 1, 2, 1, 2], [1, 1, 2, 2, 3, 2], [1, 2, 2, 1, 3, 2], [1, 2, 2, 2, 3, 1], [1, 1, 3, 2, 2, 2], [1, 2, 3, 1, 2, 2], [1, 2, 3, 2, 2, 1], [2, 2, 3, 2, 1, 1], [2, 2, 1, 1, 3, 2], [2, 2, 1, 2, 3, 1], [2, 1, 3, 2, 1, 2], [2, 2, 3, 1, 1, 2], [3, 1, 2, 1, 3, 1], [3, 1, 1, 2, 2, 2], [3, 2, 1, 1, 2, 2], [3, 2, 1, 2, 2, 1], [3, 1, 2, 2, 1, 2], [3, 2, 2, 1, 1, 2], [3, 2, 2, 2, 1, 1], [2, 1, 2, 1, 2, 3], [2, 1, 2, 3, 2, 1], [2, 3, 2, 1, 2, 1], [1, 1, 1, 3, 2, 3], [1, 3, 1, 1, 2, 3], [1, 3, 1, 3, 2, 1], [1, 1, 2, 3, 1, 3], [1, 3, 2, 1, 1, 3], [1, 3, 2, 3, 1, 1], [2, 1, 1, 3, 1, 3], [2, 3, 1, 1, 1, 3], [2, 3, 1, 3, 1, 1], [1, 1, 2, 1, 3, 3], [1, 1, 2, 3, 3, 1], [1, 3, 2, 1, 3, 1], [1, 1, 3, 1, 2, 3], [1, 1, 3, 3, 2, 1], [1, 3, 3, 1, 2, 1], [3, 1, 3, 1, 2, 1], [2, 1, 1, 3, 3, 1], [2, 3, 1, 1, 3, 1], [2, 1, 3, 1, 1, 3], [2, 1, 3, 3, 1, 1], [2, 1, 3, 1, 3, 1], [3, 1, 1, 1, 2, 3], [3, 1, 1, 3, 2, 1], [3, 3, 1, 1, 2, 1], [3, 1, 2, 1, 1, 3], [3, 1, 2, 3, 1, 1], [3, 3, 2, 1, 1, 1], [3, 1, 4, 1, 1, 1], [2, 2, 1, 4, 1, 1], [4, 3, 1, 1, 1, 1], [1, 1, 1, 2, 2, 4], [1, 1, 1, 4, 2, 2], [1, 2, 1, 1, 2, 4], [1, 2, 1, 4, 2, 1], [1, 4, 1, 1, 2, 2], [1, 4, 1, 2, 2, 1], [1, 1, 2, 2, 1, 4], [1, 1, 2, 4, 1, 2], [1, 2, 2, 1, 1, 4], [1, 2, 2, 4, 1, 1], [1, 4, 2, 1, 1, 2], [1, 4, 2, 2, 1, 1], [2, 4, 1, 2, 1, 1], [2, 2, 1, 1, 1, 4], [4, 1, 3, 1, 1, 1], [2, 4, 1, 1, 1, 2], [1, 3, 4, 1, 1, 1], [1, 1, 1, 2, 4, 2], [1, 2, 1, 1, 4, 2], [1, 2, 1, 2, 4, 1], [1, 1, 4, 2, 1, 2], [1, 2, 4, 1, 1, 2], [1, 2, 4, 2, 1, 1], [4, 1, 1, 2, 1, 2], [4, 2, 1, 1, 1, 2], [4, 2, 1, 2, 1, 1], [2, 1, 2, 1, 4, 1], [2, 1, 4, 1, 2, 1], [4, 1, 2, 1, 2, 1], [1, 1, 1, 1, 4, 3], [1, 1, 1, 3, 4, 1], [1, 3, 1, 1, 4, 1], [1, 1, 4, 1, 1, 3], [1, 1, 4, 3, 1, 1], [4, 1, 1, 1, 1, 3], [4, 1, 1, 3, 1, 1], [1, 1, 3, 1, 4, 1], [1, 1, 4, 1, 3, 1], [3, 1, 1, 1, 4, 1], [4, 1, 1, 1, 3, 1], [2, 1, 1, 4, 1, 2], [2, 1, 1, 2, 1, 4], [2, 1, 1, 2, 3, 2], [2, 3, 3, 1, 1, 1, 2]] }, SINGLE_CODE_ERROR: { value: 0.64 }, AVG_CODE_ERROR: { value: 0.30 }, @@ -7045,33 +7114,32 @@ return /******/ (function(modules) { // webpackBootstrap } }, code, - error, - normalized; + error; for (i = offset; i < self._row.length; i++) { if (self._row[i] ^ isWhite) { counter[counterPos]++; } else { if (counterPos === counter.length - 1) { - normalized = self._normalize(counter, correction); - if (normalized) { - for (code = 0; code < self.CODE_PATTERN.length; code++) { - error = self._matchPattern(normalized, self.CODE_PATTERN[code]); - if (error < bestMatch.error) { - bestMatch.code = code; - bestMatch.error = error; - } - } - bestMatch.end = i; - if (bestMatch.code === -1) { - return null; - } - if (self.CODE_PATTERN[bestMatch.code]) { - bestMatch.correction.bar = calculateCorrection(self.CODE_PATTERN[bestMatch.code], normalized, this.MODULE_INDICES.bar); - bestMatch.correction.space = calculateCorrection(self.CODE_PATTERN[bestMatch.code], normalized, this.MODULE_INDICES.space); + if (correction) { + self._correct(counter, correction); + } + for (code = 0; code < self.CODE_PATTERN.length; code++) { + error = self._matchPattern(counter, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; } - return bestMatch; } + bestMatch.end = i; + if (bestMatch.code === -1 || bestMatch.error > self.AVG_CODE_ERROR) { + return null; + } + if (self.CODE_PATTERN[bestMatch.code]) { + bestMatch.correction.bar = calculateCorrection(self.CODE_PATTERN[bestMatch.code], counter, this.MODULE_INDICES.bar); + bestMatch.correction.space = calculateCorrection(self.CODE_PATTERN[bestMatch.code], counter, this.MODULE_INDICES.space); + } + return bestMatch; } else { counterPos++; } @@ -7107,8 +7175,7 @@ return /******/ (function(modules) { // webpackBootstrap code, error, j, - sum, - normalized; + sum; for (i = offset; i < self._row.length; i++) { if (self._row[i] ^ isWhite) { @@ -7119,23 +7186,20 @@ return /******/ (function(modules) { // webpackBootstrap for (j = 0; j < counter.length; j++) { sum += counter[j]; } - normalized = self._normalize(counter); - if (normalized) { - for (code = self.START_CODE_A; code <= self.START_CODE_C; code++) { - error = self._matchPattern(normalized, self.CODE_PATTERN[code]); - if (error < bestMatch.error) { - bestMatch.code = code; - bestMatch.error = error; - } - } - if (bestMatch.error < self.AVG_CODE_ERROR) { - bestMatch.start = i - sum; - bestMatch.end = i; - bestMatch.correction.bar = calculateCorrection(self.CODE_PATTERN[code], normalized, [0, 2, 4]); - bestMatch.correction.space = calculateCorrection(self.CODE_PATTERN[code], normalized, [1, 3, 5]); - return bestMatch; + for (code = self.START_CODE_A; code <= self.START_CODE_C; code++) { + error = self._matchPattern(counter, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; } } + if (bestMatch.error < self.AVG_CODE_ERROR) { + bestMatch.start = i - sum; + bestMatch.end = i; + bestMatch.correction.bar = calculateCorrection(self.CODE_PATTERN[bestMatch.code], counter, this.MODULE_INDICES.bar); + bestMatch.correction.space = calculateCorrection(self.CODE_PATTERN[bestMatch.code], counter, this.MODULE_INDICES.space); + return bestMatch; + } for (j = 0; j < 4; j++) { counter[j] = counter[j + 2]; @@ -7351,74 +7415,220 @@ return /******/ (function(modules) { // webpackBootstrap return sumExpected / sumNormalized; } - /* harmony default export */ exports["a"] = Code128Reader; + /* harmony default export */ exports["a"] = Code128Reader; + +/***/ }, +/* 68 */ +/***/ function(module, exports, __webpack_require__) { + + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__code_39_reader__ = __webpack_require__(30); + + + function Code39VINReader() { + /* harmony import */__WEBPACK_IMPORTED_MODULE_0__code_39_reader__["a"].call(this); + } + + var patterns = { + IOQ: /[IOQ]/g, + AZ09: /[A-Z0-9]{17}/ + }; + + Code39VINReader.prototype = Object.create(/* harmony import */__WEBPACK_IMPORTED_MODULE_0__code_39_reader__["a"].prototype); + Code39VINReader.prototype.constructor = Code39VINReader; + + // Cribbed from: + // https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/client/result/VINResultParser.java + Code39VINReader.prototype._decode = function () { + var result = /* harmony import */__WEBPACK_IMPORTED_MODULE_0__code_39_reader__["a"].prototype._decode.apply(this); + if (!result) { + return null; + } + + var code = result.code; + + if (!code) { + return null; + } + + code = code.replace(patterns.IOQ, ''); + + if (!code.match(patterns.AZ09)) { + if (true) { + console.log('Failed AZ09 pattern code:', code); + } + return null; + } + + if (!this._checkChecksum(code)) { + return null; + } + + result.code = code; + return result; + }; + + Code39VINReader.prototype._checkChecksum = function (code) { + // TODO + return !!code; + }; + + /* harmony default export */ exports["a"] = Code39VINReader; + +/***/ }, +/* 69 */ +/***/ function(module, exports, __webpack_require__) { + + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(3); + + + function EAN2Reader() { + /* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].call(this); + } + + var properties = { + FORMAT: { value: "ean_2", writeable: false } + }; + + EAN2Reader.prototype = Object.create(/* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].prototype, properties); + EAN2Reader.prototype.constructor = EAN2Reader; + + EAN2Reader.prototype.decode = function (row, start) { + this._row = row; + var counters = [0, 0, 0, 0], + codeFrequency = 0, + i = 0, + offset = start, + end = this._row.length, + code, + result = [], + decodedCodes = []; + + for (i = 0; i < 2 && offset < end; i++) { + code = this._decodeCode(offset); + if (!code) { + return null; + } + decodedCodes.push(code); + result.push(code.code % 10); + if (code.code >= this.CODE_G_START) { + codeFrequency |= 1 << 1 - i; + } + if (i != 1) { + offset = this._nextSet(this._row, code.end); + offset = this._nextUnset(this._row, offset); + } + } + + if (result.length != 2 || parseInt(result.join("")) % 4 !== codeFrequency) { + return null; + } + return { + code: result.join(""), + decodedCodes: decodedCodes, + end: code.end + }; + }; + + /* harmony default export */ exports["a"] = EAN2Reader; /***/ }, -/* 68 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__code_39_reader__ = __webpack_require__(30); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(3); - function Code39VINReader() { - /* harmony import */__WEBPACK_IMPORTED_MODULE_0__code_39_reader__["a"].call(this); + function EAN5Reader() { + /* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].call(this); } - var patterns = { - IOQ: /[IOQ]/g, - AZ09: /[A-Z0-9]{17}/ + var properties = { + FORMAT: { value: "ean_5", writeable: false } }; - Code39VINReader.prototype = Object.create(/* harmony import */__WEBPACK_IMPORTED_MODULE_0__code_39_reader__["a"].prototype); - Code39VINReader.prototype.constructor = Code39VINReader; + var CHECK_DIGIT_ENCODINGS = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5]; - // Cribbed from: - // https://github.com/zxing/zxing/blob/master/core/src/main/java/com/google/zxing/client/result/VINResultParser.java - Code39VINReader.prototype._decode = function () { - var result = /* harmony import */__WEBPACK_IMPORTED_MODULE_0__code_39_reader__["a"].prototype._decode.apply(this); - if (!result) { - return null; - } + EAN5Reader.prototype = Object.create(/* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].prototype, properties); + EAN5Reader.prototype.constructor = EAN5Reader; - var code = result.code; + EAN5Reader.prototype.decode = function (row, start) { + this._row = row; + var counters = [0, 0, 0, 0], + codeFrequency = 0, + i = 0, + offset = start, + end = this._row.length, + code, + result = [], + decodedCodes = []; - if (!code) { - return null; + for (i = 0; i < 5 && offset < end; i++) { + code = this._decodeCode(offset); + if (!code) { + return null; + } + decodedCodes.push(code); + result.push(code.code % 10); + if (code.code >= this.CODE_G_START) { + codeFrequency |= 1 << 4 - i; + } + if (i != 4) { + offset = this._nextSet(this._row, code.end); + offset = this._nextUnset(this._row, offset); + } } - code = code.replace(patterns.IOQ, ''); - - if (!code.match(patterns.AZ09)) { - if (true) { - console.log('Failed AZ09 pattern code:', code); - } + if (result.length != 5) { return null; } - if (!this._checkChecksum(code)) { + if (extensionChecksum(result) !== determineCheckDigit(codeFrequency)) { return null; } - - result.code = code; - return result; + return { + code: result.join(""), + decodedCodes: decodedCodes, + end: code.end + }; }; - Code39VINReader.prototype._checkChecksum = function (code) { - // TODO - return !!code; - }; + function determineCheckDigit(codeFrequency) { + var i; + for (i = 0; i < 10; i++) { + if (codeFrequency === CHECK_DIGIT_ENCODINGS[i]) { + return i; + } + } + return null; + } - /* harmony default export */ exports["a"] = Code39VINReader; + function extensionChecksum(result) { + var length = result.length, + sum = 0, + i; + + for (i = length - 2; i >= 0; i -= 2) { + sum += result[i]; + } + sum *= 3; + for (i = length - 1; i >= 0; i -= 2) { + sum += result[i]; + } + sum *= 3; + return sum % 10; + } + + /* harmony default export */ exports["a"] = EAN5Reader; /***/ }, -/* 69 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(10); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(3); - function EAN8Reader() { - /* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].call(this); + function EAN8Reader(opts, supplements) { + /* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].call(this, opts, supplements); } var properties = { @@ -7462,13 +7672,13 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = EAN8Reader; /***/ }, -/* 70 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ = __webpack_require__(28); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ = __webpack_require__(17); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default = __WEBPACK_IMPORTED_MODULE_0_lodash_merge__ && __WEBPACK_IMPORTED_MODULE_0_lodash_merge__.__esModule ? function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__['default'] } : function() { return __WEBPACK_IMPORTED_MODULE_0_lodash_merge__; } /* harmony import */ Object.defineProperty(__WEBPACK_IMPORTED_MODULE_0_lodash_merge___default, 'a', { get: __WEBPACK_IMPORTED_MODULE_0_lodash_merge___default }); - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__barcode_reader__ = __webpack_require__(5); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__barcode_reader__ = __webpack_require__(6); @@ -7495,9 +7705,8 @@ return /******/ (function(modules) { // webpackBootstrap var N = 1, W = 3, properties = { - MODULO: { value: 10 }, - START_PATTERN: { value: [N * 2.5, N * 2.5, N * 2.5, N * 2.5] }, - STOP_PATTERN: { value: [N * 2, N * 2, W * 2] }, + START_PATTERN: { value: [N, N, N, N] }, + STOP_PATTERN: { value: [N, N, W] }, CODE_PATTERN: { value: [[N, N, W, W, N], [W, N, N, N, W], [N, W, N, N, W], [W, W, N, N, N], [N, N, W, N, W], [W, N, W, N, N], [N, W, W, N, N], [N, N, N, W, W], [W, N, N, W, N], [N, W, N, W, N]] }, SINGLE_CODE_ERROR: { value: 0.78, writable: true }, AVG_CODE_ERROR: { value: 0.38, writable: true }, @@ -7571,16 +7780,12 @@ return /******/ (function(modules) { // webpackBootstrap for (j = 0; j < counter.length; j++) { sum += counter[j]; } - normalized = self._normalize(counter); - if (normalized) { - error = self._matchPattern(normalized, pattern); - - if (error < epsilon) { - bestMatch.error = error; - bestMatch.start = i - sum; - bestMatch.end = i; - return bestMatch; - } + error = self._matchPattern(counter, pattern); + if (error < epsilon) { + bestMatch.error = error; + bestMatch.start = i - sum; + bestMatch.end = i; + return bestMatch; } if (tryHarder) { for (j = 0; j < counter.length - 2; j++) { @@ -7694,20 +7899,16 @@ return /******/ (function(modules) { // webpackBootstrap for (j = 0; j < counter.length; j++) { sum += counter[j]; } - normalized = self._normalize(counter); - if (normalized) { - for (code = 0; code < self.CODE_PATTERN.length; code++) { - error = self._matchPattern(normalized, self.CODE_PATTERN[code]); - if (error < bestMatch.error) { - bestMatch.code = code; - bestMatch.error = error; - } - } - if (bestMatch.error < epsilon) { - return bestMatch; + for (code = 0; code < self.CODE_PATTERN.length; code++) { + error = self._matchPattern(counter, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; } } - return null; + if (bestMatch.error < epsilon) { + return bestMatch; + } }; I2of5Reader.prototype._decodePayload = function (counters, result, decodedCodes) { @@ -7793,14 +7994,14 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = I2of5Reader; /***/ }, -/* 71 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(10); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(3); - function UPCEReader() { - /* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].call(this); + function UPCEReader(opts, supplements) { + /* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].call(this, opts, supplements); } var properties = { @@ -7893,14 +8094,14 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = UPCEReader; /***/ }, -/* 72 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { - /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(10); + /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ean_reader__ = __webpack_require__(3); - function UPCReader() { - /* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].call(this); + function UPCReader(opts, supplements) { + /* harmony import */__WEBPACK_IMPORTED_MODULE_0__ean_reader__["a"].call(this, opts, supplements); } var properties = { @@ -7923,7 +8124,7 @@ return /******/ (function(modules) { // webpackBootstrap /* harmony default export */ exports["a"] = UPCReader; /***/ }, -/* 73 */ +/* 75 */ /***/ function(module, exports, __webpack_require__) { module.e = copy @@ -7946,7 +8147,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 74 */ +/* 76 */ /***/ function(module, exports, __webpack_require__) { module.e = create @@ -7968,7 +8169,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 75 */ +/* 77 */ /***/ function(module, exports, __webpack_require__) { module.e = invert @@ -8001,7 +8202,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 76 */ +/* 78 */ /***/ function(module, exports, __webpack_require__) { module.e = scale @@ -8021,7 +8222,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 77 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { module.e = transformMat2 @@ -8043,7 +8244,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 78 */ +/* 80 */ /***/ function(module, exports, __webpack_require__) { module.e = clone; @@ -8063,7 +8264,7 @@ return /******/ (function(modules) { // webpackBootstrap } /***/ }, -/* 79 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { var nativeCreate = __webpack_require__(14); @@ -8087,14 +8288,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 80 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { - var mapClear = __webpack_require__(126), - mapDelete = __webpack_require__(127), - mapGet = __webpack_require__(128), - mapHas = __webpack_require__(129), - mapSet = __webpack_require__(130); + var mapClear = __webpack_require__(128), + mapDelete = __webpack_require__(129), + mapGet = __webpack_require__(130), + mapHas = __webpack_require__(131), + mapSet = __webpack_require__(132); /** * Creates a map cache object to store key-value pairs. @@ -8125,7 +8326,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 81 */ +/* 83 */ /***/ function(module, exports, __webpack_require__) { var root = __webpack_require__(1); @@ -8137,7 +8338,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 82 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { var getNative = __webpack_require__(12), @@ -8150,7 +8351,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 83 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { var root = __webpack_require__(1); @@ -8162,7 +8363,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 84 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { var root = __webpack_require__(1); @@ -8174,7 +8375,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 85 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { var getNative = __webpack_require__(12), @@ -8187,7 +8388,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 86 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8208,7 +8409,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 87 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8228,7 +8429,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 88 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8256,7 +8457,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 89 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8282,10 +8483,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 90 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { - var copyObject = __webpack_require__(20), + var copyObject = __webpack_require__(21), keys = __webpack_require__(45); /** @@ -8305,24 +8506,24 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 91 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { var Stack = __webpack_require__(32), arrayEach = __webpack_require__(33), assignValue = __webpack_require__(35), - baseAssign = __webpack_require__(90), - baseForOwn = __webpack_require__(95), - cloneBuffer = __webpack_require__(105), + baseAssign = __webpack_require__(92), + baseForOwn = __webpack_require__(97), + cloneBuffer = __webpack_require__(107), copyArray = __webpack_require__(41), - copySymbols = __webpack_require__(112), - getTag = __webpack_require__(117), - initCloneArray = __webpack_require__(121), - initCloneByTag = __webpack_require__(122), - initCloneObject = __webpack_require__(123), - isArray = __webpack_require__(4), - isBuffer = __webpack_require__(139), - isHostObject = __webpack_require__(21), + copySymbols = __webpack_require__(114), + getTag = __webpack_require__(119), + initCloneArray = __webpack_require__(123), + initCloneByTag = __webpack_require__(124), + initCloneObject = __webpack_require__(125), + isArray = __webpack_require__(5), + isBuffer = __webpack_require__(141), + isHostObject = __webpack_require__(22), isObject = __webpack_require__(2); /** `Object#toString` result references. */ @@ -8442,7 +8643,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 92 */ +/* 94 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(2); @@ -8466,13 +8667,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 93 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { - var arrayPush = __webpack_require__(89), - isArguments = __webpack_require__(24), - isArray = __webpack_require__(4), - isArrayLikeObject = __webpack_require__(26); + var arrayPush = __webpack_require__(91), + isArguments = __webpack_require__(25), + isArray = __webpack_require__(5), + isArrayLikeObject = __webpack_require__(27); /** * The base implementation of `_.flatten` with support for restricting flattening. @@ -8511,10 +8712,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 94 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { - var createBaseFor = __webpack_require__(114); + var createBaseFor = __webpack_require__(116); /** * The base implementation of `baseForIn` and `baseForOwn` which iterates @@ -8534,10 +8735,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 95 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { - var baseFor = __webpack_require__(94), + var baseFor = __webpack_require__(96), keys = __webpack_require__(45); /** @@ -8556,7 +8757,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 96 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { /** Used for built-in method references. */ @@ -8588,7 +8789,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 97 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { /* Built-in method references for those with the same name as other `lodash` methods. */ @@ -8610,11 +8811,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 98 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { - var Reflect = __webpack_require__(81), - iteratorToArray = __webpack_require__(125); + var Reflect = __webpack_require__(83), + iteratorToArray = __webpack_require__(127); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -8652,14 +8853,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 99 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { var Stack = __webpack_require__(32), arrayEach = __webpack_require__(33), assignMergeValue = __webpack_require__(34), - baseMergeDeep = __webpack_require__(100), - isArray = __webpack_require__(4), + baseMergeDeep = __webpack_require__(102), + isArray = __webpack_require__(5), isObject = __webpack_require__(2), isTypedArray = __webpack_require__(44), keysIn = __webpack_require__(46); @@ -8708,20 +8909,20 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 100 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { var assignMergeValue = __webpack_require__(34), - baseClone = __webpack_require__(91), + baseClone = __webpack_require__(93), copyArray = __webpack_require__(41), - isArguments = __webpack_require__(24), - isArray = __webpack_require__(4), - isArrayLikeObject = __webpack_require__(26), + isArguments = __webpack_require__(25), + isArray = __webpack_require__(5), + isArrayLikeObject = __webpack_require__(27), isFunction = __webpack_require__(16), isObject = __webpack_require__(2), - isPlainObject = __webpack_require__(141), + isPlainObject = __webpack_require__(143), isTypedArray = __webpack_require__(44), - toPlainObject = __webpack_require__(146); + toPlainObject = __webpack_require__(148); /** * A specialized version of `baseMerge` for arrays and objects which performs @@ -8796,10 +8997,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 101 */ +/* 103 */ /***/ function(module, exports, __webpack_require__) { - var arrayReduce = __webpack_require__(19); + var arrayReduce = __webpack_require__(20); /** * The base implementation of `_.pick` without support for individual @@ -8824,7 +9025,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 102 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8844,7 +9045,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 103 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8870,7 +9071,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 104 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8888,7 +9089,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 105 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { /** @@ -8912,12 +9113,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 106 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { - var addMapEntry = __webpack_require__(86), - arrayReduce = __webpack_require__(19), - mapToArray = __webpack_require__(131); + var addMapEntry = __webpack_require__(88), + arrayReduce = __webpack_require__(20), + mapToArray = __webpack_require__(133); /** * Creates a clone of `map`. @@ -8934,7 +9135,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 107 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { /** Used to match `RegExp` flags from their coerced string values. */ @@ -8957,12 +9158,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 108 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { - var addSetEntry = __webpack_require__(87), - arrayReduce = __webpack_require__(19), - setToArray = __webpack_require__(132); + var addSetEntry = __webpack_require__(89), + arrayReduce = __webpack_require__(20), + setToArray = __webpack_require__(134); /** * Creates a clone of `set`. @@ -8979,10 +9180,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 109 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { - var Symbol = __webpack_require__(83); + var Symbol = __webpack_require__(85); /** Used to convert symbols to primitives and strings. */ var symbolProto = Symbol ? Symbol.prototype : undefined, @@ -9003,7 +9204,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 110 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { var cloneArrayBuffer = __webpack_require__(40); @@ -9025,7 +9226,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 111 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { var assignValue = __webpack_require__(35); @@ -9063,11 +9264,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 112 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { - var copyObject = __webpack_require__(20), - getSymbols = __webpack_require__(116); + var copyObject = __webpack_require__(21), + getSymbols = __webpack_require__(118); /** * Copies own symbol properties of `source` to `object`. @@ -9085,10 +9286,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 113 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { - var isIterateeCall = __webpack_require__(124), + var isIterateeCall = __webpack_require__(126), rest = __webpack_require__(47); /** @@ -9128,7 +9329,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 114 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { /** @@ -9159,10 +9360,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 115 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { - var baseProperty = __webpack_require__(102); + var baseProperty = __webpack_require__(104); /** * Gets the "length" property value of `object`. @@ -9180,7 +9381,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 116 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { /** Built-in value references. */ @@ -9201,12 +9402,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 117 */ +/* 119 */ /***/ function(module, exports, __webpack_require__) { - var Map = __webpack_require__(3), - Set = __webpack_require__(82), - WeakMap = __webpack_require__(85); + var Map = __webpack_require__(4), + Set = __webpack_require__(84), + WeakMap = __webpack_require__(87); /** `Object#toString` result references. */ var mapTag = '[object Map]', @@ -9266,7 +9467,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 118 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { var hashHas = __webpack_require__(42); @@ -9287,7 +9488,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 119 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { var nativeCreate = __webpack_require__(14); @@ -9321,7 +9522,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 120 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { var nativeCreate = __webpack_require__(14); @@ -9345,7 +9546,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 121 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { /** Used for built-in method references. */ @@ -9377,15 +9578,15 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 122 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { var cloneArrayBuffer = __webpack_require__(40), - cloneMap = __webpack_require__(106), - cloneRegExp = __webpack_require__(107), - cloneSet = __webpack_require__(108), - cloneSymbol = __webpack_require__(109), - cloneTypedArray = __webpack_require__(110); + cloneMap = __webpack_require__(108), + cloneRegExp = __webpack_require__(109), + cloneSet = __webpack_require__(110), + cloneSymbol = __webpack_require__(111), + cloneTypedArray = __webpack_require__(112); /** `Object#toString` result references. */ var boolTag = '[object Boolean]', @@ -9457,11 +9658,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 123 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { - var baseCreate = __webpack_require__(92), - isPrototype = __webpack_require__(23); + var baseCreate = __webpack_require__(94), + isPrototype = __webpack_require__(24); /** Built-in value references. */ var getPrototypeOf = Object.getPrototypeOf; @@ -9483,12 +9684,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 124 */ +/* 126 */ /***/ function(module, exports, __webpack_require__) { var eq = __webpack_require__(15), - isArrayLike = __webpack_require__(25), - isIndex = __webpack_require__(22), + isArrayLike = __webpack_require__(26), + isIndex = __webpack_require__(23), isObject = __webpack_require__(2); /** @@ -9517,7 +9718,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 125 */ +/* 127 */ /***/ function(module, exports, __webpack_require__) { /** @@ -9541,11 +9742,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 126 */ +/* 128 */ /***/ function(module, exports, __webpack_require__) { - var Hash = __webpack_require__(79), - Map = __webpack_require__(3); + var Hash = __webpack_require__(81), + Map = __webpack_require__(4); /** * Removes all key-value entries from the map. @@ -9566,12 +9767,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 127 */ +/* 129 */ /***/ function(module, exports, __webpack_require__) { - var Map = __webpack_require__(3), + var Map = __webpack_require__(4), assocDelete = __webpack_require__(36), - hashDelete = __webpack_require__(118), + hashDelete = __webpack_require__(120), isKeyable = __webpack_require__(13); /** @@ -9595,12 +9796,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 128 */ +/* 130 */ /***/ function(module, exports, __webpack_require__) { - var Map = __webpack_require__(3), + var Map = __webpack_require__(4), assocGet = __webpack_require__(37), - hashGet = __webpack_require__(119), + hashGet = __webpack_require__(121), isKeyable = __webpack_require__(13); /** @@ -9624,10 +9825,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 129 */ +/* 131 */ /***/ function(module, exports, __webpack_require__) { - var Map = __webpack_require__(3), + var Map = __webpack_require__(4), assocHas = __webpack_require__(38), hashHas = __webpack_require__(42), isKeyable = __webpack_require__(13); @@ -9653,12 +9854,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 130 */ +/* 132 */ /***/ function(module, exports, __webpack_require__) { - var Map = __webpack_require__(3), + var Map = __webpack_require__(4), assocSet = __webpack_require__(39), - hashSet = __webpack_require__(120), + hashSet = __webpack_require__(122), isKeyable = __webpack_require__(13); /** @@ -9687,7 +9888,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 131 */ +/* 133 */ /***/ function(module, exports, __webpack_require__) { /** @@ -9711,7 +9912,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 132 */ +/* 134 */ /***/ function(module, exports, __webpack_require__) { /** @@ -9735,7 +9936,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 133 */ +/* 135 */ /***/ function(module, exports, __webpack_require__) { /** @@ -9753,7 +9954,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 134 */ +/* 136 */ /***/ function(module, exports, __webpack_require__) { var assocDelete = __webpack_require__(36); @@ -9778,7 +9979,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 135 */ +/* 137 */ /***/ function(module, exports, __webpack_require__) { var assocGet = __webpack_require__(37); @@ -9803,7 +10004,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 136 */ +/* 138 */ /***/ function(module, exports, __webpack_require__) { var assocHas = __webpack_require__(38); @@ -9828,10 +10029,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 137 */ +/* 139 */ /***/ function(module, exports, __webpack_require__) { - var MapCache = __webpack_require__(80), + var MapCache = __webpack_require__(82), assocSet = __webpack_require__(39); /** Used as the size to enable large array optimizations. */ @@ -9870,7 +10071,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 138 */ +/* 140 */ /***/ function(module, exports, __webpack_require__) { /** @@ -9899,10 +10100,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 139 */ +/* 141 */ /***/ function(module, exports, __webpack_require__) { - /* WEBPACK VAR INJECTION */(function(module) {var constant = __webpack_require__(138), + /* WEBPACK VAR INJECTION */(function(module) {var constant = __webpack_require__(140), root = __webpack_require__(1); /** Used to determine if values are of the language type `Object`. */ @@ -9954,12 +10155,12 @@ return /******/ (function(modules) { // webpackBootstrap /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(48)(module))) /***/ }, -/* 140 */ +/* 142 */ /***/ function(module, exports, __webpack_require__) { var isFunction = __webpack_require__(16), - isHostObject = __webpack_require__(21), - isObjectLike = __webpack_require__(7); + isHostObject = __webpack_require__(22), + isObjectLike = __webpack_require__(8); /** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; @@ -10013,11 +10214,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 141 */ +/* 143 */ /***/ function(module, exports, __webpack_require__) { - var isHostObject = __webpack_require__(21), - isObjectLike = __webpack_require__(7); + var isHostObject = __webpack_require__(22), + isObjectLike = __webpack_require__(8); /** `Object#toString` result references. */ var objectTag = '[object Object]'; @@ -10085,11 +10286,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 142 */ +/* 144 */ /***/ function(module, exports, __webpack_require__) { - var isArray = __webpack_require__(4), - isObjectLike = __webpack_require__(7); + var isArray = __webpack_require__(5), + isObjectLike = __webpack_require__(8); /** `Object#toString` result references. */ var stringTag = '[object String]'; @@ -10128,11 +10329,11 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 143 */ +/* 145 */ /***/ function(module, exports, __webpack_require__) { - var baseFlatten = __webpack_require__(93), - basePick = __webpack_require__(101), + var baseFlatten = __webpack_require__(95), + basePick = __webpack_require__(103), rest = __webpack_require__(47); /** @@ -10160,10 +10361,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 144 */ +/* 146 */ /***/ function(module, exports, __webpack_require__) { - var toNumber = __webpack_require__(145); + var toNumber = __webpack_require__(147); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0, @@ -10210,7 +10411,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 145 */ +/* 147 */ /***/ function(module, exports, __webpack_require__) { var isFunction = __webpack_require__(16), @@ -10275,10 +10476,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 146 */ +/* 148 */ /***/ function(module, exports, __webpack_require__) { - var copyObject = __webpack_require__(20), + var copyObject = __webpack_require__(21), keysIn = __webpack_require__(46); /** @@ -10312,7 +10513,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 147 */ +/* 149 */ /***/ function(module, exports, __webpack_require__) { /* @@ -10341,9 +10542,9 @@ return /******/ (function(modules) { // webpackBootstrap //require('./utils').disableLog(true); // Browser shims. - var chromeShim = __webpack_require__(148) || null; - var edgeShim = __webpack_require__(151) || null; - var firefoxShim = __webpack_require__(152) || null; + var chromeShim = __webpack_require__(150) || null; + var edgeShim = __webpack_require__(153) || null; + var firefoxShim = __webpack_require__(154) || null; // Shim browser if found. switch (browserDetails.browser) { @@ -10393,7 +10594,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 148 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { /* @@ -10635,14 +10836,14 @@ return /******/ (function(modules) { // webpackBootstrap shimOnTrack: chromeShim.shimOnTrack, shimSourceObject: chromeShim.shimSourceObject, shimPeerConnection: chromeShim.shimPeerConnection, - shimGetUserMedia: __webpack_require__(149), + shimGetUserMedia: __webpack_require__(151), attachMediaStream: chromeShim.attachMediaStream, reattachMediaStream: chromeShim.reattachMediaStream }; /***/ }, -/* 149 */ +/* 151 */ /***/ function(module, exports, __webpack_require__) { /* @@ -10783,7 +10984,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 150 */ +/* 152 */ /***/ function(module, exports, __webpack_require__) { /* @@ -11175,7 +11376,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 151 */ +/* 153 */ /***/ function(module, exports, __webpack_require__) { /* @@ -11187,7 +11388,7 @@ return /******/ (function(modules) { // webpackBootstrap */ 'use strict'; - var SDPUtils = __webpack_require__(150); + var SDPUtils = __webpack_require__(152); var logging = __webpack_require__(0).log; var browserDetails = __webpack_require__(0).browserDetails; @@ -12080,7 +12281,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 152 */ +/* 154 */ /***/ function(module, exports, __webpack_require__) { /* @@ -12310,14 +12511,14 @@ return /******/ (function(modules) { // webpackBootstrap shimOnTrack: firefoxShim.shimOnTrack, shimSourceObject: firefoxShim.shimSourceObject, shimPeerConnection: firefoxShim.shimPeerConnection, - shimGetUserMedia: __webpack_require__(153), + shimGetUserMedia: __webpack_require__(155), attachMediaStream: firefoxShim.attachMediaStream, reattachMediaStream: firefoxShim.reattachMediaStream } /***/ }, -/* 153 */ +/* 155 */ /***/ function(module, exports, __webpack_require__) { /* @@ -12436,7 +12637,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 154 */ +/* 156 */ /***/ function(module, exports, __webpack_require__) { module.e = __webpack_require__(49); @@ -12446,4 +12647,4 @@ return /******/ (function(modules) { // webpackBootstrap /******/ ]) }); ; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9teU1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGZkZmZjY2ZhN2JkNTkyNzZiOTcxIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL3V0aWxzLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19yb290LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2lzT2JqZWN0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19NYXAuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvcmVhZGVyL2JhcmNvZGVfcmVhZGVyLmpzIiwid2VicGFjazovLy8uL34vZ2wtdmVjMi9jbG9uZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbW1vbi9hcnJheV9oZWxwZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbW1vbi9pbWFnZV9kZWJ1Zy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvcmVhZGVyL2Vhbl9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19pc0tleWFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9lcS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21tb24vY3ZfdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbW1vbi9pbWFnZV93cmFwcGVyLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hcnJheVJlZHVjZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fY29weU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faXNIb3N0T2JqZWN0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19pc0luZGV4LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19pc1Byb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9tZXJnZS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvbG9jYXRvci90cmFjZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9jb2RlXzM5X3JlYWRlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2dsLXZlYzIvZG90LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19TdGFjay5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYXNzb2NEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Fzc29jR2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hc3NvY0hhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYXNzb2NTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2NvcHlBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faGFzaEhhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faW5kZXhLZXlzLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9rZXlzLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2tleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9yZXN0LmpzIiwid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3F1YWdnYS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYW5hbHl0aWNzL3Jlc3VsdF9jb2xsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbW1vbi9jbHVzdGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21tb24vZXZlbnRzLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21tb24vc3ViSW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbW1vbi90eXBlZGVmcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29uZmlnL2NvbmZpZy5kZXYuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbmZpZy9jb25maWcuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2RlY29kZXIvYmFyY29kZV9kZWNvZGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9kZWNvZGVyL2JyZXNlbmhhbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5wdXQvY2FtZXJhX2FjY2Vzcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5wdXQvZnJhbWVfZ3JhYmJlci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5wdXQvaW1hZ2VfbG9hZGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9pbnB1dC9pbnB1dF9zdHJlYW0uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2xvY2F0b3IvYmFyY29kZV9sb2NhdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9sb2NhdG9yL3Jhc3Rlcml6ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2xvY2F0b3Ivc2tlbGV0b25pemVyLmpzIiwid2VicGFjazovLy8uL3NyYy9yZWFkZXIvY29kYWJhcl9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9jb2RlXzEyOF9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9jb2RlXzM5X3Zpbl9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9lYW5fOF9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9pMm9mNV9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci91cGNfZV9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci91cGNfcmVhZGVyLmpzIiwid2VicGFjazovLy8uL34vZ2wtbWF0Mi9jb3B5LmpzIiwid2VicGFjazovLy8uL34vZ2wtbWF0Mi9jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9nbC1tYXQyL2ludmVydC5qcyIsIndlYnBhY2s6Ly8vLi9+L2dsLXZlYzIvc2NhbGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9nbC12ZWMyL3RyYW5zZm9ybU1hdDIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9nbC12ZWMzL2Nsb25lLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19IYXNoLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19NYXBDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fUmVmbGVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fU2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX1dlYWtNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2FkZE1hcEVudHJ5LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hZGRTZXRFbnRyeS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYXBwbHkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2FycmF5UHVzaC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUFzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUNsb25lLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19iYXNlQ3JlYXRlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19iYXNlRmxhdHRlbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUZvci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUZvck93bi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Jhc2VLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Jhc2VNZXJnZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZVBpY2suanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19jaGVja0dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Nsb25lTWFwLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19jbG9uZVJlZ0V4cC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fY2xvbmVTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Nsb25lU3ltYm9sLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2NvcHlPYmplY3RXaXRoLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19jb3B5U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fY3JlYXRlQXNzaWduZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2NyZWF0ZUJhc2VGb3IuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2dldExlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fZ2V0U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fZ2V0VGFnLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19oYXNoR2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19oYXNoU2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2luaXRDbG9uZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faXNJdGVyYXRlZUNhbGwuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2l0ZXJhdG9yVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fbWFwQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX21hcERlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fbWFwR2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19tYXBIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX21hcFNldC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fc2V0VG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fc3RhY2tEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX3N0YWNrR2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19zdGFja0hhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fc3RhY2tTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNOYXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNQbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9waWNrLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL3RvSW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC90b051bWJlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC90b1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2FkYXB0ZXJfY29yZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9jaHJvbWUvY2hyb21lX3NoaW0uanMiLCJ3ZWJwYWNrOi8vLy4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvY2hyb21lL2dldHVzZXJtZWRpYS5qcyIsIndlYnBhY2s6Ly8vLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9lZGdlL2VkZ2Vfc2RwLmpzIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2VkZ2UvZWRnZV9zaGltLmpzIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2ZpcmVmb3gvZmlyZWZveF9zaGltLmpzIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2ZpcmVmb3gvZ2V0dXNlcm1lZGlhLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNSQTtBQUNB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDdkJBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLEVBQUU7QUFDYixjQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsT0FBTztBQUNsQixjQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3REQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsT0FBTztBQUNsQixjQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzNDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsRUFBRTtBQUNiLGNBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzFEQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVyxFQUFFO0FBQ2IsY0FBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFhLFNBQVM7QUFDdEIsV0FBVTtBQUNWO0FBQ0EsY0FBYSxTQUFTO0FBQ3RCLFdBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFDOzs7Ozs7O0FDMUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsc0JBQXNCLEVBQUU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxpQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBLGNBQWE7QUFDYixZQUFXO0FBQ1g7QUFDQSxRQUFPO0FBQ1A7QUFDQSxJQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBLElBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFFQUFvRTtBQUNwRTtBQUNBLHlFQUF3RTtBQUN4RTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBLFlBQVc7O0FBRVg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFpQjtBQUNqQixZQUFXO0FBQ1g7QUFDQTtBQUNBLFVBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWU7QUFDZjtBQUNBLFVBQVM7QUFDVDtBQUNBLE1BQUs7QUFDTCxJQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ2xQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7O0FBRUE7QUFD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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUF5QixxQkFBcUI7QUFDOUM7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF1QixzQ0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPOztBQUVQO0FBQ0Esd0JBQXVCLGdEQUFnRDtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBaUI7QUFDakI7QUFDQSxZQUFXO0FBQ1gsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBLFFBQU87QUFDUDtBQUNBLFFBQU87QUFDUDtBQUNBLFFBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtB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Q0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBLElBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDdE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBdUI7QUFDdkIsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsK0JBQThCO0FBQzlCLHFDQUFvQyxFQUFFO0FBQ3RDLHdDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTLGdFQUFnRTtBQUN6RSxVQUFTO0FBQ1Q7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoicXVhZ2dhLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShmYWN0b3J5LnRvU3RyaW5nKCkpLmRlZmF1bHQ7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJRdWFnZ2FcIl0gPSBmYWN0b3J5KGZhY3RvcnkudG9TdHJpbmcoKSkuZGVmYXVsdDtcblx0ZWxzZVxuXHRcdHJvb3RbXCJRdWFnZ2FcIl0gPSBmYWN0b3J5KGZhY3RvcnkudG9TdHJpbmcoKSkuZGVmYXVsdDtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fZmFjdG9yeVNvdXJjZV9fKSB7XG5yZXR1cm4gXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjay9teU1vZHVsZURlZmluaXRpb25cbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZTtcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZToge30sXG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZSwgbW9kdWxlLCBtb2R1bGUuZSwgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5lO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDE1NCk7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL2Jvb3RzdHJhcCBmZGZmY2NmYTdiZDU5Mjc2Yjk3MVxuICoqLyIsIi8qXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlXG4gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlXG4gKiAgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbG9nRGlzYWJsZWRfID0gZmFsc2U7XG5cbi8vIFV0aWxpdHkgbWV0aG9kcy5cbnZhciB1dGlscyA9IHtcbiAgZGlzYWJsZUxvZzogZnVuY3Rpb24oYm9vbCkge1xuICAgIGlmICh0eXBlb2YgYm9vbCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdBcmd1bWVudCB0eXBlOiAnICsgdHlwZW9mIGJvb2wgK1xuICAgICAgICAgICcuIFBsZWFzZSB1c2UgYSBib29sZWFuLicpO1xuICAgIH1cbiAgICBsb2dEaXNhYmxlZF8gPSBib29sO1xuICAgIHJldHVybiAoYm9vbCkgPyAnYWRhcHRlci5qcyBsb2dnaW5nIGRpc2FibGVkJyA6XG4gICAgICAgICdhZGFwdGVyLmpzIGxvZ2dpbmcgZW5hYmxlZCc7XG4gIH0sXG5cbiAgbG9nOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChsb2dEaXNhYmxlZF8pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKTtcbiAgICB9XG4gIH0sXG5cbiAgIC8qKlxuICAgKiBFeHRyYWN0IGJyb3dzZXIgdmVyc2lvbiBvdXQgb2YgdGhlIHByb3ZpZGVkIHVzZXIgYWdlbnQgc3RyaW5nLlxuICAgKiBAcGFyYW0geyFzdHJpbmd9IHVhc3RyaW5nIHVzZXJBZ2VudCBzdHJpbmcuXG4gICAqIEBwYXJhbSB7IXN0cmluZ30gZXhwciBSZWd1bGFyIGV4cHJlc3Npb24gdXNlZCBhcyBtYXRjaCBjcml0ZXJpYS5cbiAgICogQHBhcmFtIHshbnVtYmVyfSBwb3MgcG9zaXRpb24gaW4gdGhlIHZlcnNpb24gc3RyaW5nIHRvIGJlIHJldHVybmVkLlxuICAgKiBAcmV0dXJuIHshbnVtYmVyfSBicm93c2VyIHZlcnNpb24uXG4gICAqL1xuICBleHRyYWN0VmVyc2lvbjogZnVuY3Rpb24odWFzdHJpbmcsIGV4cHIsIHBvcykge1xuICAgIHZhciBtYXRjaCA9IHVhc3RyaW5nLm1hdGNoKGV4cHIpO1xuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaC5sZW5ndGggPj0gcG9zICYmIHBhcnNlSW50KG1hdGNoW3Bvc10sIDEwKTtcbiAgfSxcblxuICAvKipcbiAgICogQnJvd3NlciBkZXRlY3Rvci5cbiAgICogQHJldHVybiB7b2JqZWN0fSByZXN1bHQgY29udGFpbmluZyBicm93c2VyLCB2ZXJzaW9uIGFuZCBtaW5WZXJzaW9uXG4gICAqICAgICBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgZGV0ZWN0QnJvd3NlcjogZnVuY3Rpb24oKSB7XG4gICAgLy8gUmV0dXJuZWQgcmVzdWx0IG9iamVjdC5cbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgcmVzdWx0LmJyb3dzZXIgPSBudWxsO1xuICAgIHJlc3VsdC52ZXJzaW9uID0gbnVsbDtcbiAgICByZXN1bHQubWluVmVyc2lvbiA9IG51bGw7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIXdpbmRvdy5uYXZpZ2F0b3IpIHtcbiAgICAgIHJlc3VsdC5icm93c2VyID0gJ05vdCBhIGJyb3dzZXIuJztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIGlmIChuYXZpZ2F0b3IubW96R2V0VXNlck1lZGlhKSB7XG4gICAgICAvLyBGaXJlZm94LlxuICAgICAgcmVzdWx0LmJyb3dzZXIgPSAnZmlyZWZveCc7XG4gICAgICByZXN1bHQudmVyc2lvbiA9IHRoaXMuZXh0cmFjdFZlcnNpb24obmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgICAgICAvRmlyZWZveFxcLyhbMC05XSspXFwuLywgMSk7XG4gICAgICByZXN1bHQubWluVmVyc2lvbiA9IDMxO1xuICAgIH0gZWxzZSBpZiAobmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSAmJiB3aW5kb3cud2Via2l0UlRDUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIC8vIENocm9tZSwgQ2hyb21pdW0sIFdlYlZpZXcsIE9wZXJhIGFuZCBvdGhlciBXZWJLaXQgYnJvd3NlcnMuXG4gICAgICByZXN1bHQuYnJvd3NlciA9ICdjaHJvbWUnO1xuICAgICAgcmVzdWx0LnZlcnNpb24gPSB0aGlzLmV4dHJhY3RWZXJzaW9uKG5hdmlnYXRvci51c2VyQWdlbnQsXG4gICAgICAgICAgL0Nocm9tKGV8aXVtKVxcLyhbMC05XSspXFwuLywgMik7XG4gICAgICByZXN1bHQubWluVmVyc2lvbiA9IDM4O1xuICAgIH0gZWxzZSBpZihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzICYmXG4gICAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykuKFxcZCspJC8pKSB7XG4gICAgICAvLyBFZGdlLlxuICAgICAgcmVzdWx0LmJyb3dzZXIgPSAnZWRnZSc7XG4gICAgICByZXN1bHQudmVyc2lvbiA9IHRoaXMuZXh0cmFjdFZlcnNpb24obmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgICAgICAvRWRnZVxcLyhcXGQrKS4oXFxkKykkLywgMik7XG4gICAgICByZXN1bHQubWluVmVyc2lvbiA9IDEwNTQ3O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQuYnJvd3NlciA9ICdOb3QgYSBzdXBwb3J0ZWQgYnJvd3Nlci4nO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBXYXJuIGlmIHZlcnNpb24gaXMgbGVzcyB0aGFuIG1pblZlcnNpb24uXG4gICAgaWYgKHJlc3VsdC52ZXJzaW9uIDwgcmVzdWx0Lm1pblZlcnNpb24pIHtcbiAgICAgIHV0aWxzLmxvZygnQnJvd3NlcjogJyArIHJlc3VsdC5icm93c2VyICsgJyBWZXJzaW9uOiAnICsgcmVzdWx0LnZlcnNpb24gK1xuICAgICAgICAgICcgPCBtaW5pbXVtIHN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgcmVzdWx0Lm1pblZlcnNpb24gK1xuICAgICAgICAgICdcXG4gc29tZSB0aGluZ3MgbWlnaHQgbm90IHdvcmshJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxuLy8gRXhwb3J0LlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGxvZzogdXRpbHMubG9nLFxuICBkaXNhYmxlTG9nOiB1dGlscy5kaXNhYmxlTG9nLFxuICBicm93c2VyRGV0YWlsczogdXRpbHMuZGV0ZWN0QnJvd3NlcigpLFxuICBleHRyYWN0VmVyc2lvbjogdXRpbHMuZXh0cmFjdFZlcnNpb25cbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvdXRpbHMuanNcbiAqKiBtb2R1bGUgaWQgPSAwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgY2hlY2tHbG9iYWwgPSByZXF1aXJlKCcuL19jaGVja0dsb2JhbCcpO1xuXG4vKiogVXNlZCB0byBkZXRlcm1pbmUgaWYgdmFsdWVzIGFyZSBvZiB0aGUgbGFuZ3VhZ2UgdHlwZSBgT2JqZWN0YC4gKi9cbnZhciBvYmplY3RUeXBlcyA9IHtcbiAgJ2Z1bmN0aW9uJzogdHJ1ZSxcbiAgJ29iamVjdCc6IHRydWVcbn07XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSAob2JqZWN0VHlwZXNbdHlwZW9mIGV4cG9ydHNdICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUpXG4gID8gZXhwb3J0c1xuICA6IHVuZGVmaW5lZDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSAob2JqZWN0VHlwZXNbdHlwZW9mIG1vZHVsZV0gJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUpXG4gID8gbW9kdWxlXG4gIDogdW5kZWZpbmVkO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSBjaGVja0dsb2JhbChmcmVlRXhwb3J0cyAmJiBmcmVlTW9kdWxlICYmIHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IGNoZWNrR2xvYmFsKG9iamVjdFR5cGVzW3R5cGVvZiBzZWxmXSAmJiBzZWxmKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGB3aW5kb3dgLiAqL1xudmFyIGZyZWVXaW5kb3cgPSBjaGVja0dsb2JhbChvYmplY3RUeXBlc1t0eXBlb2Ygd2luZG93XSAmJiB3aW5kb3cpO1xuXG4vKiogRGV0ZWN0IGB0aGlzYCBhcyB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciB0aGlzR2xvYmFsID0gY2hlY2tHbG9iYWwob2JqZWN0VHlwZXNbdHlwZW9mIHRoaXNdICYmIHRoaXMpO1xuXG4vKipcbiAqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuXG4gKlxuICogVGhlIGB0aGlzYCB2YWx1ZSBpcyB1c2VkIGlmIGl0J3MgdGhlIGdsb2JhbCBvYmplY3QgdG8gYXZvaWQgR3JlYXNlbW9ua2V5J3NcbiAqIHJlc3RyaWN0ZWQgYHdpbmRvd2Agb2JqZWN0LCBvdGhlcndpc2UgdGhlIGB3aW5kb3dgIG9iamVjdCBpcyB1c2VkLlxuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHxcbiAgKChmcmVlV2luZG93ICE9PSAodGhpc0dsb2JhbCAmJiB0aGlzR2xvYmFsLndpbmRvdykpICYmIGZyZWVXaW5kb3cpIHx8XG4gICAgZnJlZVNlbGYgfHwgdGhpc0dsb2JhbCB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX3Jvb3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZSBbbGFuZ3VhZ2UgdHlwZV0oaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4OCkgb2YgYE9iamVjdGAuXG4gKiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2lzT2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fTWFwLmpzXG4gKiogbW9kdWxlIGlkID0gM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAdHlwZSB7RnVuY3Rpb259XG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNBcnJheS5qc1xuICoqIG1vZHVsZSBpZCA9IDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsImZ1bmN0aW9uIEJhcmNvZGVSZWFkZXIoY29uZmlnKSB7XHJcbiAgICB0aGlzLl9yb3cgPSBbXTtcclxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnIHx8IHt9O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn1cclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9uZXh0VW5zZXQgPSBmdW5jdGlvbihsaW5lLCBzdGFydCkge1xyXG4gICAgdmFyIGk7XHJcblxyXG4gICAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBzdGFydCA9IDA7XHJcbiAgICB9XHJcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGxpbmUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoIWxpbmVbaV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpbmUubGVuZ3RoO1xyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5wcm90b3R5cGUuX21hdGNoUGF0dGVybiA9IGZ1bmN0aW9uKGNvdW50ZXIsIGNvZGUpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIGVycm9yID0gMCxcclxuICAgICAgICBzaW5nbGVFcnJvciA9IDAsXHJcbiAgICAgICAgbW9kdWxvID0gdGhpcy5NT0RVTE8sXHJcbiAgICAgICAgbWF4U2luZ2xlRXJyb3IgPSB0aGlzLlNJTkdMRV9DT0RFX0VSUk9SIHx8IDE7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IGNvdW50ZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBzaW5nbGVFcnJvciA9IE1hdGguYWJzKGNvZGVbaV0gLSBjb3VudGVyW2ldKTtcclxuICAgICAgICBpZiAoc2luZ2xlRXJyb3IgPiBtYXhTaW5nbGVFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXJyb3IgKz0gc2luZ2xlRXJyb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXJyb3IgLyBtb2R1bG87XHJcbn07XHJcblxyXG5CYXJjb2RlUmVhZGVyLnByb3RvdHlwZS5fbmV4dFNldCA9IGZ1bmN0aW9uKGxpbmUsIG9mZnNldCkge1xyXG4gICAgdmFyIGk7XHJcblxyXG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XHJcbiAgICBmb3IgKGkgPSBvZmZzZXQ7IGkgPCBsaW5lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGxpbmVbaV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpbmUubGVuZ3RoO1xyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5wcm90b3R5cGUuX25vcm1hbGl6ZSA9IGZ1bmN0aW9uKGNvdW50ZXIsIGNvcnJlY3Rpb24pIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHN1bSA9IDAsXHJcbiAgICAgICAgcmF0aW8sXHJcbiAgICAgICAgbnVtT25lcyA9IDAsXHJcbiAgICAgICAgbm9ybWFsaXplZCA9IG5ldyBBcnJheShjb3VudGVyLmxlbmd0aCksXHJcbiAgICAgICAgbm9ybSA9IDAsXHJcbiAgICAgICAgbW9kdWxvID0gc2VsZi5NT0RVTE87XHJcblxyXG4gICAgaWYgKGNvcnJlY3Rpb24pIHtcclxuICAgICAgICBzZWxmLl9jb3JyZWN0KGNvdW50ZXIsIGNvcnJlY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgZm9yIChpID0gMDsgaSA8IGNvdW50ZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBzdW0gKz0gY291bnRlcltpXTtcclxuICAgIH1cclxuICAgIHJhdGlvID0gc3VtIC8gKG1vZHVsbyAtIG51bU9uZXMpO1xyXG4gICAgZm9yIChpID0gMDsgaSA8IGNvdW50ZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBub3JtID0gY291bnRlcltpXSA9PT0gMSA/IGNvdW50ZXJbaV0gOiBjb3VudGVyW2ldIC8gcmF0aW87XHJcbiAgICAgICAgbm9ybWFsaXplZFtpXSA9IG5vcm07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxufTtcclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9jb3JyZWN0QmFycyA9IGZ1bmN0aW9uKGNvdW50ZXIsIGNvcnJlY3Rpb24sIGluZGljZXMpIHtcclxuICAgIHZhciBsZW5ndGggPSBpbmRpY2VzLmxlbmd0aCxcclxuICAgICAgICB0bXAgPSAwO1xyXG4gICAgd2hpbGUobGVuZ3RoLS0pIHtcclxuICAgICAgICB0bXAgPSBjb3VudGVyW2luZGljZXNbbGVuZ3RoXV0gKiAoMSAtICgoMSAtIGNvcnJlY3Rpb24pIC8gMikpO1xyXG4gICAgICAgIGlmICh0bXAgPiAxKSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJbaW5kaWNlc1tsZW5ndGhdXSA9IHRtcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9tYXRjaFRyYWNlID0gZnVuY3Rpb24oY21wQ291bnRlciwgZXBzaWxvbikge1xyXG4gICAgdmFyIGNvdW50ZXIgPSBbXSxcclxuICAgICAgICBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIG9mZnNldCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93KSxcclxuICAgICAgICBpc1doaXRlID0gIXNlbGYuX3Jvd1tvZmZzZXRdLFxyXG4gICAgICAgIGNvdW50ZXJQb3MgPSAwLFxyXG4gICAgICAgIGJlc3RNYXRjaCA9IHtcclxuICAgICAgICAgICAgZXJyb3I6IE51bWJlci5NQVhfVkFMVUUsXHJcbiAgICAgICAgICAgIGNvZGU6IC0xLFxyXG4gICAgICAgICAgICBzdGFydDogMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I7XHJcblxyXG4gICAgaWYgKGNtcENvdW50ZXIpIHtcclxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGNtcENvdW50ZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY291bnRlci5wdXNoKDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKCBpID0gb2Zmc2V0OyBpIDwgc2VsZi5fcm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLl9yb3dbaV0gXiBpc1doaXRlKSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdKys7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY291bnRlclBvcyA9PT0gY291bnRlci5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9tYXRjaFBhdHRlcm4oY291bnRlciwgY21wQ291bnRlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA8IGVwc2lsb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLnN0YXJ0ID0gaSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVuZCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb3VudGVyID0gY291bnRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10gPSAxO1xyXG4gICAgICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjb3VudGVyLnB1c2goMCk7XHJcbiAgICAgICAgZm9yICggaSA9IG9mZnNldDsgaSA8IHNlbGYuX3Jvdy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoc2VsZi5fcm93W2ldIF4gaXNXaGl0ZSkge1xyXG4gICAgICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY291bnRlclBvcysrO1xyXG4gICAgICAgICAgICAgICAgY291bnRlci5wdXNoKDApO1xyXG4gICAgICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSA9IDE7XHJcbiAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgY21wQ291bnRlciB3YXMgbm90IGdpdmVuXHJcbiAgICBiZXN0TWF0Y2guc3RhcnQgPSBvZmZzZXQ7XHJcbiAgICBiZXN0TWF0Y2guZW5kID0gc2VsZi5fcm93Lmxlbmd0aCAtIDE7XHJcbiAgICBiZXN0TWF0Y2guY291bnRlciA9IGNvdW50ZXI7XHJcbiAgICByZXR1cm4gYmVzdE1hdGNoO1xyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlUGF0dGVybiA9IGZ1bmN0aW9uKHBhdHRlcm4pIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICByZXN1bHQ7XHJcblxyXG4gICAgc2VsZi5fcm93ID0gcGF0dGVybjtcclxuICAgIHJlc3VsdCA9IHNlbGYuX2RlY29kZSgpO1xyXG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xyXG4gICAgICAgIHNlbGYuX3Jvdy5yZXZlcnNlKCk7XHJcbiAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVjb2RlKCk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXN1bHQuZGlyZWN0aW9uID0gQmFyY29kZVJlYWRlci5ESVJFQ1RJT04uUkVWRVJTRTtcclxuICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gc2VsZi5fcm93Lmxlbmd0aCAtIHJlc3VsdC5zdGFydDtcclxuICAgICAgICAgICAgcmVzdWx0LmVuZCA9IHNlbGYuX3Jvdy5sZW5ndGggLSByZXN1bHQuZW5kO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0LmRpcmVjdGlvbiA9IEJhcmNvZGVSZWFkZXIuRElSRUNUSU9OLkZPUldBUkQ7XHJcbiAgICB9XHJcbiAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgcmVzdWx0LmZvcm1hdCA9IHNlbGYuRk9STUFUO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9tYXRjaFJhbmdlID0gZnVuY3Rpb24oc3RhcnQsIGVuZCwgdmFsdWUpIHtcclxuICAgIHZhciBpO1xyXG5cclxuICAgIHN0YXJ0ID0gc3RhcnQgPCAwID8gMCA6IHN0YXJ0O1xyXG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLl9yb3dbaV0gIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9maWxsQ291bnRlcnMgPSBmdW5jdGlvbihvZmZzZXQsIGVuZCwgaXNXaGl0ZSkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIGNvdW50ZXJQb3MgPSAwLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgY291bnRlcnMgPSBbXTtcclxuXHJcbiAgICBpc1doaXRlID0gKHR5cGVvZiBpc1doaXRlICE9PSAndW5kZWZpbmVkJykgPyBpc1doaXRlIDogdHJ1ZTtcclxuICAgIG9mZnNldCA9ICh0eXBlb2Ygb2Zmc2V0ICE9PSAndW5kZWZpbmVkJykgPyBvZmZzZXQgOiBzZWxmLl9uZXh0VW5zZXQoc2VsZi5fcm93KTtcclxuICAgIGVuZCA9IGVuZCB8fCBzZWxmLl9yb3cubGVuZ3RoO1xyXG5cclxuICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NdID0gMDtcclxuICAgIGZvciAoaSA9IG9mZnNldDsgaSA8IGVuZDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc10rKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb3VudGVyUG9zKys7XHJcbiAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb3VudGVycztcclxufTtcclxuXHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXJjb2RlUmVhZGVyLnByb3RvdHlwZSwgXCJGT1JNQVRcIiwge1xyXG4gICAgdmFsdWU6ICd1bmtub3duJyxcclxuICAgIHdyaXRlYWJsZTogZmFsc2VcclxufSk7XHJcblxyXG5CYXJjb2RlUmVhZGVyLkRJUkVDVElPTiA9IHtcclxuICAgIEZPUldBUkQ6IDEsXHJcbiAgICBSRVZFUlNFOiAtMVxyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5FeGNlcHRpb24gPSB7XHJcbiAgICBTdGFydE5vdEZvdW5kRXhjZXB0aW9uOiBcIlN0YXJ0LUluZm8gd2FzIG5vdCBmb3VuZCFcIixcclxuICAgIENvZGVOb3RGb3VuZEV4Y2VwdGlvbjogXCJDb2RlIGNvdWxkIG5vdCBiZSBmb3VuZCFcIixcclxuICAgIFBhdHRlcm5Ob3RGb3VuZEV4Y2VwdGlvbjogXCJQYXR0ZXJuIGNvdWxkIG5vdCBiZSBmb3VuZCFcIlxyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5DT05GSUdfS0VZUyA9IHt9O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFyY29kZVJlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL2JhcmNvZGVfcmVhZGVyLmpzXG4gKiovIiwibW9kdWxlLmV4cG9ydHMgPSBjbG9uZVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdmVjMiBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4aXN0aW5nIHZlY3RvclxuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gY2xvbmVcbiAqIEByZXR1cm5zIHt2ZWMyfSBhIG5ldyAyRCB2ZWN0b3JcbiAqL1xuZnVuY3Rpb24gY2xvbmUoYSkge1xuICAgIHZhciBvdXQgPSBuZXcgRmxvYXQzMkFycmF5KDIpXG4gICAgb3V0WzBdID0gYVswXVxuICAgIG91dFsxXSA9IGFbMV1cbiAgICByZXR1cm4gb3V0XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZ2wtdmVjMi9jbG9uZS5qc1xuICoqIG1vZHVsZSBpZCA9IDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzXG4gKiogbW9kdWxlIGlkID0gN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgaW5pdDogZnVuY3Rpb24oYXJyLCB2YWwpIHtcclxuICAgICAgICB2YXIgbCA9IGFyci5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKGwtLSkge1xyXG4gICAgICAgICAgICBhcnJbbF0gPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNodWZmbGVzIHRoZSBjb250ZW50IG9mIGFuIGFycmF5XHJcbiAgICAgKiBAcmV0dXJuIHtBcnJheX0gdGhlIGFycmF5IGl0c2VsZiBzaHVmZmxlZFxyXG4gICAgICovXHJcbiAgICBzaHVmZmxlOiBmdW5jdGlvbihhcnIpIHtcclxuICAgICAgICB2YXIgaSA9IGFyci5sZW5ndGggLSAxLCBqLCB4O1xyXG4gICAgICAgIGZvciAoaTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGkpO1xyXG4gICAgICAgICAgICB4ID0gYXJyW2ldO1xyXG4gICAgICAgICAgICBhcnJbaV0gPSBhcnJbal07XHJcbiAgICAgICAgICAgIGFycltqXSA9IHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LFxyXG5cclxuICAgIHRvUG9pbnRMaXN0OiBmdW5jdGlvbihhcnIpIHtcclxuICAgICAgICB2YXIgaSwgaiwgcm93ID0gW10sIHJvd3MgPSBbXTtcclxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByb3cgPSBbXTtcclxuICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBhcnJbaV0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIHJvd1tqXSA9IGFycltpXVtqXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByb3dzW2ldID0gXCJbXCIgKyByb3cuam9pbihcIixcIikgKyBcIl1cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiW1wiICsgcm93cy5qb2luKFwiLFxcclxcblwiKSArIFwiXVwiO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgdGhlIGVsZW1lbnRzIHdoaWNoJ3Mgc2NvcmUgaXMgYmlnZ2VyIHRoYW4gdGhlIHRocmVzaG9sZFxyXG4gICAgICogQHJldHVybiB7QXJyYXl9IHRoZSByZWR1Y2VkIGFycmF5XHJcbiAgICAgKi9cclxuICAgIHRocmVzaG9sZDogZnVuY3Rpb24oYXJyLCB0aHJlc2hvbGQsIHNjb3JlRnVuYykge1xyXG4gICAgICAgIHZhciBpLCBxdWV1ZSA9IFtdO1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChzY29yZUZ1bmMuYXBwbHkoYXJyLCBbYXJyW2ldXSkgPj0gdGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKGFycltpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHF1ZXVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBtYXhJbmRleDogZnVuY3Rpb24oYXJyKSB7XHJcbiAgICAgICAgdmFyIGksIG1heCA9IDA7XHJcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA+IGFyclttYXhdKSB7XHJcbiAgICAgICAgICAgICAgICBtYXggPSBpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXg7XHJcbiAgICB9LFxyXG5cclxuICAgIG1heDogZnVuY3Rpb24oYXJyKSB7XHJcbiAgICAgICAgdmFyIGksIG1heCA9IDA7XHJcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA+IG1heCkge1xyXG4gICAgICAgICAgICAgICAgbWF4ID0gYXJyW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXg7XHJcbiAgICB9LFxyXG5cclxuICAgIHN1bTogZnVuY3Rpb24oYXJyKSB7XHJcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGgsXHJcbiAgICAgICAgICAgIHN1bSA9IDA7XHJcblxyXG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgICAgICBzdW0gKz0gYXJyW2xlbmd0aF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9XHJcbn07XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbW1vbi9hcnJheV9oZWxwZXIuanNcbiAqKi8iLCJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBkcmF3UmVjdDogZnVuY3Rpb24ocG9zLCBzaXplLCBjdHgsIHN0eWxlKXtcclxuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBzdHlsZS5jb2xvcjtcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gc3R5bGUuY29sb3I7XHJcbiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7XHJcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGN0eC5zdHJva2VSZWN0KHBvcy54LCBwb3MueSwgc2l6ZS54LCBzaXplLnkpO1xyXG4gICAgfSxcclxuICAgIGRyYXdQYXRoOiBmdW5jdGlvbihwYXRoLCBkZWYsIGN0eCwgc3R5bGUpIHtcclxuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBzdHlsZS5jb2xvcjtcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gc3R5bGUuY29sb3I7XHJcbiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IHN0eWxlLmxpbmVXaWR0aDtcclxuICAgICAgICBjdHguYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY3R4Lm1vdmVUbyhwYXRoWzBdW2RlZi54XSwgcGF0aFswXVtkZWYueV0pO1xyXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcGF0aC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBjdHgubGluZVRvKHBhdGhbal1bZGVmLnhdLCBwYXRoW2pdW2RlZi55XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN0eC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjdHguc3Ryb2tlKCk7XHJcbiAgICB9LFxyXG4gICAgZHJhd0ltYWdlOiBmdW5jdGlvbihpbWFnZURhdGEsIHNpemUsIGN0eCkge1xyXG4gICAgICAgIHZhciBjYW52YXNEYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBzaXplLngsIHNpemUueSksXHJcbiAgICAgICAgICAgIGRhdGEgPSBjYW52YXNEYXRhLmRhdGEsXHJcbiAgICAgICAgICAgIGltYWdlRGF0YVBvcyA9IGltYWdlRGF0YS5sZW5ndGgsXHJcbiAgICAgICAgICAgIGNhbnZhc0RhdGFQb3MgPSBkYXRhLmxlbmd0aCxcclxuICAgICAgICAgICAgdmFsdWU7XHJcblxyXG4gICAgICAgIGlmIChjYW52YXNEYXRhUG9zIC8gaW1hZ2VEYXRhUG9zICE9PSA0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGltYWdlRGF0YVBvcy0tKXtcclxuICAgICAgICAgICAgdmFsdWUgPSBpbWFnZURhdGFbaW1hZ2VEYXRhUG9zXTtcclxuICAgICAgICAgICAgZGF0YVstLWNhbnZhc0RhdGFQb3NdID0gMjU1O1xyXG4gICAgICAgICAgICBkYXRhWy0tY2FudmFzRGF0YVBvc10gPSB2YWx1ZTtcclxuICAgICAgICAgICAgZGF0YVstLWNhbnZhc0RhdGFQb3NdID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGRhdGFbLS1jYW52YXNEYXRhUG9zXSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdHgucHV0SW1hZ2VEYXRhKGNhbnZhc0RhdGEsIDAsIDApO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21tb24vaW1hZ2VfZGVidWcuanNcbiAqKi8iLCJpbXBvcnQgQmFyY29kZVJlYWRlciBmcm9tICcuL2JhcmNvZGVfcmVhZGVyJztcclxuXHJcbmZ1bmN0aW9uIEVBTlJlYWRlcihvcHRzKSB7XHJcbiAgICBCYXJjb2RlUmVhZGVyLmNhbGwodGhpcywgb3B0cyk7XHJcbn1cclxuXHJcbnZhciBwcm9wZXJ0aWVzID0ge1xyXG4gICAgQ09ERV9MX1NUQVJUOiB7dmFsdWU6IDB9LFxyXG4gICAgTU9EVUxPOiB7dmFsdWU6IDd9LFxyXG4gICAgQ09ERV9HX1NUQVJUOiB7dmFsdWU6IDEwfSxcclxuICAgIFNUQVJUX1BBVFRFUk46IHt2YWx1ZTogWzEgLyAzICogNywgMSAvIDMgKiA3LCAxIC8gMyAqIDddfSxcclxuICAgIFNUT1BfUEFUVEVSTjoge3ZhbHVlOiBbMSAvIDMgKiA3LCAxIC8gMyAqIDcsIDEgLyAzICogN119LFxyXG4gICAgTUlERExFX1BBVFRFUk46IHt2YWx1ZTogWzEgLyA1ICogNywgMSAvIDUgKiA3LCAxIC8gNSAqIDcsIDEgLyA1ICogNywgMSAvIDUgKiA3XX0sXHJcbiAgICBDT0RFX1BBVFRFUk46IHt2YWx1ZTogW1xyXG4gICAgICAgIFszLCAyLCAxLCAxXSxcclxuICAgICAgICBbMiwgMiwgMiwgMV0sXHJcbiAgICAgICAgWzIsIDEsIDIsIDJdLFxyXG4gICAgICAgIFsxLCA0LCAxLCAxXSxcclxuICAgICAgICBbMSwgMSwgMywgMl0sXHJcbiAgICAgICAgWzEsIDIsIDMsIDFdLFxyXG4gICAgICAgIFsxLCAxLCAxLCA0XSxcclxuICAgICAgICBbMSwgMywgMSwgMl0sXHJcbiAgICAgICAgWzEsIDIsIDEsIDNdLFxyXG4gICAgICAgIFszLCAxLCAxLCAyXSxcclxuICAgICAgICBbMSwgMSwgMiwgM10sXHJcbiAgICAgICAgWzEsIDIsIDIsIDJdLFxyXG4gICAgICAgIFsyLCAyLCAxLCAyXSxcclxuICAgICAgICBbMSwgMSwgNCwgMV0sXHJcbiAgICAgICAgWzIsIDMsIDEsIDFdLFxyXG4gICAgICAgIFsxLCAzLCAyLCAxXSxcclxuICAgICAgICBbNCwgMSwgMSwgMV0sXHJcbiAgICAgICAgWzIsIDEsIDMsIDFdLFxyXG4gICAgICAgIFszLCAxLCAyLCAxXSxcclxuICAgICAgICBbMiwgMSwgMSwgM11cclxuICAgIF19LFxyXG4gICAgQ09ERV9GUkVRVUVOQ1k6IHt2YWx1ZTogWzAsIDExLCAxMywgMTQsIDE5LCAyNSwgMjgsIDIxLCAyMiwgMjZdfSxcclxuICAgIFNJTkdMRV9DT0RFX0VSUk9SOiB7dmFsdWU6IDAuNjd9LFxyXG4gICAgQVZHX0NPREVfRVJST1I6IHt2YWx1ZTogMC4yN30sXHJcbiAgICBGT1JNQVQ6IHt2YWx1ZTogXCJlYW5fMTNcIiwgd3JpdGVhYmxlOiBmYWxzZX1cclxufTtcclxuXHJcbkVBTlJlYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJhcmNvZGVSZWFkZXIucHJvdG90eXBlLCBwcm9wZXJ0aWVzKTtcclxuRUFOUmVhZGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEVBTlJlYWRlcjtcclxuXHJcbkVBTlJlYWRlci5wcm90b3R5cGUuX2RlY29kZUNvZGUgPSBmdW5jdGlvbihzdGFydCwgY29kZXJhbmdlKSB7XHJcbiAgICB2YXIgY291bnRlciA9IFswLCAwLCAwLCAwXSxcclxuICAgICAgICBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIG9mZnNldCA9IHN0YXJ0LFxyXG4gICAgICAgIGlzV2hpdGUgPSAhc2VsZi5fcm93W29mZnNldF0sXHJcbiAgICAgICAgY291bnRlclBvcyA9IDAsXHJcbiAgICAgICAgYmVzdE1hdGNoID0ge1xyXG4gICAgICAgICAgICBlcnJvcjogTnVtYmVyLk1BWF9WQUxVRSxcclxuICAgICAgICAgICAgY29kZTogLTEsXHJcbiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcclxuICAgICAgICAgICAgZW5kOiBzdGFydFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICBlcnJvcixcclxuICAgICAgICBub3JtYWxpemVkO1xyXG5cclxuICAgIGlmICghY29kZXJhbmdlKSB7XHJcbiAgICAgICAgY29kZXJhbmdlID0gc2VsZi5DT0RFX1BBVFRFUk4ubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoIGkgPSBvZmZzZXQ7IGkgPCBzZWxmLl9yb3cubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoc2VsZi5fcm93W2ldIF4gaXNXaGl0ZSkge1xyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdKys7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3MgPT09IGNvdW50ZXIubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IHNlbGYuX25vcm1hbGl6ZShjb3VudGVyKTtcclxuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb2RlID0gMDsgY29kZSA8IGNvZGVyYW5nZTsgY29kZSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2VsZi5fbWF0Y2hQYXR0ZXJuKG5vcm1hbGl6ZWQsIHNlbGYuQ09ERV9QQVRURVJOW2NvZGVdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIDwgYmVzdE1hdGNoLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guY29kZSA9IGNvZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guZXJyb3IgPSBlcnJvcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guZW5kID0gaTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYmVzdE1hdGNoLmVycm9yID4gc2VsZi5BVkdfQ09ERV9FUlJPUikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fZmluZFBhdHRlcm4gPSBmdW5jdGlvbihwYXR0ZXJuLCBvZmZzZXQsIGlzV2hpdGUsIHRyeUhhcmRlciwgZXBzaWxvbikge1xyXG4gICAgdmFyIGNvdW50ZXIgPSBbXSxcclxuICAgICAgICBzZWxmID0gdGhpcyxcclxuICAgICAgICBpLFxyXG4gICAgICAgIGNvdW50ZXJQb3MgPSAwLFxyXG4gICAgICAgIGJlc3RNYXRjaCA9IHtcclxuICAgICAgICAgICAgZXJyb3I6IE51bWJlci5NQVhfVkFMVUUsXHJcbiAgICAgICAgICAgIGNvZGU6IC0xLFxyXG4gICAgICAgICAgICBzdGFydDogMCxcclxuICAgICAgICAgICAgZW5kOiAwXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcixcclxuICAgICAgICBqLFxyXG4gICAgICAgIHN1bSxcclxuICAgICAgICBub3JtYWxpemVkO1xyXG5cclxuICAgIGlmICghb2Zmc2V0KSB7XHJcbiAgICAgICAgb2Zmc2V0ID0gc2VsZi5fbmV4dFNldChzZWxmLl9yb3cpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc1doaXRlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpc1doaXRlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRyeUhhcmRlciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdHJ5SGFyZGVyID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIGVwc2lsb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGVwc2lsb24gPSBzZWxmLkFWR19DT0RFX0VSUk9SO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoIGkgPSAwOyBpIDwgcGF0dGVybi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvdW50ZXJbaV0gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoIGkgPSBvZmZzZXQ7IGkgPCBzZWxmLl9yb3cubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoc2VsZi5fcm93W2ldIF4gaXNXaGl0ZSkge1xyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdKys7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3MgPT09IGNvdW50ZXIubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgc3VtID0gMDtcclxuICAgICAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgY291bnRlci5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSBjb3VudGVyW2pdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IHNlbGYuX25vcm1hbGl6ZShjb3VudGVyKTtcclxuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9tYXRjaFBhdHRlcm4obm9ybWFsaXplZCwgcGF0dGVybik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA8IGVwc2lsb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVycm9yID0gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5zdGFydCA9IGkgLSBzdW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lbmQgPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmVzdE1hdGNoO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0cnlIYXJkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IGNvdW50ZXIubGVuZ3RoIC0gMjsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJbal0gPSBjb3VudGVyW2ogKyAyXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcltjb3VudGVyLmxlbmd0aCAtIDJdID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyW2NvdW50ZXIubGVuZ3RoIC0gMV0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MtLTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyUG9zKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSA9IDE7XHJcbiAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbkVBTlJlYWRlci5wcm90b3R5cGUuX2ZpbmRTdGFydCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIGxlYWRpbmdXaGl0ZXNwYWNlU3RhcnQsXHJcbiAgICAgICAgb2Zmc2V0ID0gc2VsZi5fbmV4dFNldChzZWxmLl9yb3cpLFxyXG4gICAgICAgIHN0YXJ0SW5mbztcclxuXHJcbiAgICB3aGlsZSAoIXN0YXJ0SW5mbykge1xyXG4gICAgICAgIHN0YXJ0SW5mbyA9IHNlbGYuX2ZpbmRQYXR0ZXJuKHNlbGYuU1RBUlRfUEFUVEVSTiwgb2Zmc2V0KTtcclxuICAgICAgICBpZiAoIXN0YXJ0SW5mbykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGVhZGluZ1doaXRlc3BhY2VTdGFydCA9IHN0YXJ0SW5mby5zdGFydCAtIChzdGFydEluZm8uZW5kIC0gc3RhcnRJbmZvLnN0YXJ0KTtcclxuICAgICAgICBpZiAobGVhZGluZ1doaXRlc3BhY2VTdGFydCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLl9tYXRjaFJhbmdlKGxlYWRpbmdXaGl0ZXNwYWNlU3RhcnQsIHN0YXJ0SW5mby5zdGFydCwgMCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzdGFydEluZm87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgb2Zmc2V0ID0gc3RhcnRJbmZvLmVuZDtcclxuICAgICAgICBzdGFydEluZm8gPSBudWxsO1xyXG4gICAgfVxyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fdmVyaWZ5VHJhaWxpbmdXaGl0ZXNwYWNlID0gZnVuY3Rpb24oZW5kSW5mbykge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHRyYWlsaW5nV2hpdGVzcGFjZUVuZDtcclxuXHJcbiAgICB0cmFpbGluZ1doaXRlc3BhY2VFbmQgPSBlbmRJbmZvLmVuZCArIChlbmRJbmZvLmVuZCAtIGVuZEluZm8uc3RhcnQpO1xyXG4gICAgaWYgKHRyYWlsaW5nV2hpdGVzcGFjZUVuZCA8IHNlbGYuX3Jvdy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoc2VsZi5fbWF0Y2hSYW5nZShlbmRJbmZvLmVuZCwgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kLCAwKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZW5kSW5mbztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbkVBTlJlYWRlci5wcm90b3R5cGUuX2ZpbmRFbmQgPSBmdW5jdGlvbihvZmZzZXQsIGlzV2hpdGUpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICBlbmRJbmZvID0gc2VsZi5fZmluZFBhdHRlcm4oc2VsZi5TVE9QX1BBVFRFUk4sIG9mZnNldCwgaXNXaGl0ZSwgZmFsc2UpO1xyXG5cclxuICAgIHJldHVybiBlbmRJbmZvICE9PSBudWxsID8gc2VsZi5fdmVyaWZ5VHJhaWxpbmdXaGl0ZXNwYWNlKGVuZEluZm8pIDogbnVsbDtcclxufTtcclxuXHJcbkVBTlJlYWRlci5wcm90b3R5cGUuX2NhbGN1bGF0ZUZpcnN0RGlnaXQgPSBmdW5jdGlvbihjb2RlRnJlcXVlbmN5KSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBzZWxmID0gdGhpcztcclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IHNlbGYuQ09ERV9GUkVRVUVOQ1kubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY29kZUZyZXF1ZW5jeSA9PT0gc2VsZi5DT0RFX0ZSRVFVRU5DWVtpXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbkVBTlJlYWRlci5wcm90b3R5cGUuX2RlY29kZVBheWxvYWQgPSBmdW5jdGlvbihjb2RlLCByZXN1bHQsIGRlY29kZWRDb2Rlcykge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgY29kZUZyZXF1ZW5jeSA9IDB4MCxcclxuICAgICAgICBmaXJzdERpZ2l0O1xyXG5cclxuICAgIGZvciAoIGkgPSAwOyBpIDwgNjsgaSsrKSB7XHJcbiAgICAgICAgY29kZSA9IHNlbGYuX2RlY29kZUNvZGUoY29kZS5lbmQpO1xyXG4gICAgICAgIGlmICghY29kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvZGUuY29kZSA+PSBzZWxmLkNPREVfR19TVEFSVCkge1xyXG4gICAgICAgICAgICBjb2RlLmNvZGUgPSBjb2RlLmNvZGUgLSBzZWxmLkNPREVfR19TVEFSVDtcclxuICAgICAgICAgICAgY29kZUZyZXF1ZW5jeSB8PSAxIDw8ICg1IC0gaSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29kZUZyZXF1ZW5jeSB8PSAwIDw8ICg1IC0gaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGNvZGUuY29kZSk7XHJcbiAgICAgICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyc3REaWdpdCA9IHNlbGYuX2NhbGN1bGF0ZUZpcnN0RGlnaXQoY29kZUZyZXF1ZW5jeSk7XHJcbiAgICBpZiAoZmlyc3REaWdpdCA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmVzdWx0LnVuc2hpZnQoZmlyc3REaWdpdCk7XHJcblxyXG4gICAgY29kZSA9IHNlbGYuX2ZpbmRQYXR0ZXJuKHNlbGYuTUlERExFX1BBVFRFUk4sIGNvZGUuZW5kLCB0cnVlLCBmYWxzZSk7XHJcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCA2OyBpKyspIHtcclxuICAgICAgICBjb2RlID0gc2VsZi5fZGVjb2RlQ29kZShjb2RlLmVuZCwgc2VsZi5DT0RFX0dfU1RBUlQpO1xyXG4gICAgICAgIGlmICghY29kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goY29kZS5jb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29kZTtcclxufTtcclxuXHJcbkVBTlJlYWRlci5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHN0YXJ0SW5mbyxcclxuICAgICAgICBzZWxmID0gdGhpcyxcclxuICAgICAgICBjb2RlLFxyXG4gICAgICAgIHJlc3VsdCA9IFtdLFxyXG4gICAgICAgIGRlY29kZWRDb2RlcyA9IFtdO1xyXG5cclxuICAgIHN0YXJ0SW5mbyA9IHNlbGYuX2ZpbmRTdGFydCgpO1xyXG4gICAgaWYgKCFzdGFydEluZm8pIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvZGUgPSB7XHJcbiAgICAgICAgY29kZTogc3RhcnRJbmZvLmNvZGUsXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0SW5mby5zdGFydCxcclxuICAgICAgICBlbmQ6IHN0YXJ0SW5mby5lbmRcclxuICAgIH07XHJcbiAgICBkZWNvZGVkQ29kZXMucHVzaChjb2RlKTtcclxuICAgIGNvZGUgPSBzZWxmLl9kZWNvZGVQYXlsb2FkKGNvZGUsIHJlc3VsdCwgZGVjb2RlZENvZGVzKTtcclxuICAgIGlmICghY29kZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29kZSA9IHNlbGYuX2ZpbmRFbmQoY29kZS5lbmQsIGZhbHNlKTtcclxuICAgIGlmICghY29kZSl7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcblxyXG4gICAgLy8gQ2hlY2tzdW1cclxuICAgIGlmICghc2VsZi5fY2hlY2tzdW0ocmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogcmVzdWx0LmpvaW4oXCJcIiksXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0SW5mby5zdGFydCxcclxuICAgICAgICBlbmQ6IGNvZGUuZW5kLFxyXG4gICAgICAgIGNvZGVzZXQ6IFwiXCIsXHJcbiAgICAgICAgc3RhcnRJbmZvOiBzdGFydEluZm8sXHJcbiAgICAgICAgZGVjb2RlZENvZGVzOiBkZWNvZGVkQ29kZXNcclxuICAgIH07XHJcbn07XHJcblxyXG5FQU5SZWFkZXIucHJvdG90eXBlLl9jaGVja3N1bSA9IGZ1bmN0aW9uKHJlc3VsdCkge1xyXG4gICAgdmFyIHN1bSA9IDAsIGk7XHJcblxyXG4gICAgZm9yICggaSA9IHJlc3VsdC5sZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikge1xyXG4gICAgICAgIHN1bSArPSByZXN1bHRbaV07XHJcbiAgICB9XHJcbiAgICBzdW0gKj0gMztcclxuICAgIGZvciAoIGkgPSByZXN1bHQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDIpIHtcclxuICAgICAgICBzdW0gKz0gcmVzdWx0W2ldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1bSAlIDEwID09PSAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgKEVBTlJlYWRlcik7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL3JlYWRlci9lYW5fcmVhZGVyLmpzXG4gKiovIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWBcbiAqIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNlYXJjaC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NJbmRleE9mO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hc3NvY0luZGV4T2YuanNcbiAqKiBtb2R1bGUgaWQgPSAxMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGlzTmF0aXZlID0gcmVxdWlyZSgnLi9pc05hdGl2ZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gb2JqZWN0W2tleV07XG4gIHJldHVybiBpc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROYXRpdmU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2dldE5hdGl2ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICh0eXBlID09ICdzdHJpbmcnICYmIHZhbHVlICE9ICdfX3Byb3RvX18nKSB8fCB2YWx1ZSA9PSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5YWJsZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faXNLZXlhYmxlLmpzXG4gKiogbW9kdWxlIGlkID0gMTNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIFBlcmZvcm1zIGEgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICogdmFyIG90aGVyID0geyAndXNlcic6ICdmcmVkJyB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXE7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvZXEuanNcbiAqKiBtb2R1bGUgaWQgPSAxNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDggd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXkgYW5kIHdlYWsgbWFwIGNvbnN0cnVjdG9ycyxcbiAgLy8gYW5kIFBoYW50b21KUyAxLjkgd2hpY2ggcmV0dXJucyAnZnVuY3Rpb24nIGZvciBgTm9kZUxpc3RgIGluc3RhbmNlcy5cbiAgdmFyIHRhZyA9IGlzT2JqZWN0KHZhbHVlKSA/IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNGdW5jdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJpbXBvcnQgQ2x1c3RlcjIgZnJvbSAnLi9jbHVzdGVyJztcclxuaW1wb3J0IEFycmF5SGVscGVyIGZyb20gJy4vYXJyYXlfaGVscGVyJztcclxuY29uc3QgdmVjMiA9IHtcclxuICAgIGNsb25lOiByZXF1aXJlKCdnbC12ZWMyL2Nsb25lJyksXHJcbn07XHJcbmNvbnN0IHZlYzMgPSB7XHJcbiAgICBjbG9uZTogcmVxdWlyZSgnZ2wtdmVjMy9jbG9uZScpLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBwYXJhbSB4IHgtY29vcmRpbmF0ZVxyXG4gKiBAcGFyYW0geSB5LWNvb3JkaW5hdGVcclxuICogQHJldHVybiBJbWFnZVJlZmVyZW5jZSB7eCx5fSBDb29yZGluYXRlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VSZWYoeCwgeSkge1xyXG4gICAgdmFyIHRoYXQgPSB7XHJcbiAgICAgICAgeDogeCxcclxuICAgICAgICB5OiB5LFxyXG4gICAgICAgIHRvVmVjMjogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2ZWMyLmNsb25lKFt0aGlzLngsIHRoaXMueV0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9WZWMzOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZlYzMuY2xvbmUoW3RoaXMueCwgdGhpcy55LCAxXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByb3VuZDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHRoaXMueCA9IHRoaXMueCA+IDAuMCA/IE1hdGguZmxvb3IodGhpcy54ICsgMC41KSA6IE1hdGguZmxvb3IodGhpcy54IC0gMC41KTtcclxuICAgICAgICAgICAgdGhpcy55ID0gdGhpcy55ID4gMC4wID8gTWF0aC5mbG9vcih0aGlzLnkgKyAwLjUpIDogTWF0aC5mbG9vcih0aGlzLnkgLSAwLjUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoYXQ7XHJcbn07XHJcblxyXG4vKipcclxuICogQ29tcHV0ZXMgYW4gaW50ZWdyYWwgaW1hZ2Ugb2YgYSBnaXZlbiBncmF5c2NhbGUgaW1hZ2UuXHJcbiAqIEBwYXJhbSBpbWFnZURhdGFDb250YWluZXIge0ltYWdlRGF0YUNvbnRhaW5lcn0gdGhlIGltYWdlIHRvIGJlIGludGVncmF0ZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlSW50ZWdyYWxJbWFnZTIoaW1hZ2VXcmFwcGVyLCBpbnRlZ3JhbFdyYXBwZXIpIHtcclxuICAgIHZhciBpbWFnZURhdGEgPSBpbWFnZVdyYXBwZXIuZGF0YTtcclxuICAgIHZhciB3aWR0aCA9IGltYWdlV3JhcHBlci5zaXplLng7XHJcbiAgICB2YXIgaGVpZ2h0ID0gaW1hZ2VXcmFwcGVyLnNpemUueTtcclxuICAgIHZhciBpbnRlZ3JhbEltYWdlRGF0YSA9IGludGVncmFsV3JhcHBlci5kYXRhO1xyXG4gICAgdmFyIHN1bSA9IDAsIHBvc0EgPSAwLCBwb3NCID0gMCwgcG9zQyA9IDAsIHBvc0QgPSAwLCB4LCB5O1xyXG5cclxuICAgIC8vIHN1bSB1cCBmaXJzdCBjb2x1bW5cclxuICAgIHBvc0IgPSB3aWR0aDtcclxuICAgIHN1bSA9IDA7XHJcbiAgICBmb3IgKCB5ID0gMTsgeSA8IGhlaWdodDsgeSsrKSB7XHJcbiAgICAgICAgc3VtICs9IGltYWdlRGF0YVtwb3NBXTtcclxuICAgICAgICBpbnRlZ3JhbEltYWdlRGF0YVtwb3NCXSArPSBzdW07XHJcbiAgICAgICAgcG9zQSArPSB3aWR0aDtcclxuICAgICAgICBwb3NCICs9IHdpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc0EgPSAwO1xyXG4gICAgcG9zQiA9IDE7XHJcbiAgICBzdW0gPSAwO1xyXG4gICAgZm9yICggeCA9IDE7IHggPCB3aWR0aDsgeCsrKSB7XHJcbiAgICAgICAgc3VtICs9IGltYWdlRGF0YVtwb3NBXTtcclxuICAgICAgICBpbnRlZ3JhbEltYWdlRGF0YVtwb3NCXSArPSBzdW07XHJcbiAgICAgICAgcG9zQSsrO1xyXG4gICAgICAgIHBvc0IrKztcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCB5ID0gMTsgeSA8IGhlaWdodDsgeSsrKSB7XHJcbiAgICAgICAgcG9zQSA9IHkgKiB3aWR0aCArIDE7XHJcbiAgICAgICAgcG9zQiA9ICh5IC0gMSkgKiB3aWR0aCArIDE7XHJcbiAgICAgICAgcG9zQyA9IHkgKiB3aWR0aDtcclxuICAgICAgICBwb3NEID0gKHkgLSAxKSAqIHdpZHRoO1xyXG4gICAgICAgIGZvciAoIHggPSAxOyB4IDwgd2lkdGg7IHgrKykge1xyXG4gICAgICAgICAgICBpbnRlZ3JhbEltYWdlRGF0YVtwb3NBXSArPVxyXG4gICAgICAgICAgICAgICAgaW1hZ2VEYXRhW3Bvc0FdICsgaW50ZWdyYWxJbWFnZURhdGFbcG9zQl0gKyBpbnRlZ3JhbEltYWdlRGF0YVtwb3NDXSAtIGludGVncmFsSW1hZ2VEYXRhW3Bvc0RdO1xyXG4gICAgICAgICAgICBwb3NBKys7XHJcbiAgICAgICAgICAgIHBvc0IrKztcclxuICAgICAgICAgICAgcG9zQysrO1xyXG4gICAgICAgICAgICBwb3NEKys7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVJbnRlZ3JhbEltYWdlKGltYWdlV3JhcHBlciwgaW50ZWdyYWxXcmFwcGVyKSB7XHJcbiAgICB2YXIgaW1hZ2VEYXRhID0gaW1hZ2VXcmFwcGVyLmRhdGE7XHJcbiAgICB2YXIgd2lkdGggPSBpbWFnZVdyYXBwZXIuc2l6ZS54O1xyXG4gICAgdmFyIGhlaWdodCA9IGltYWdlV3JhcHBlci5zaXplLnk7XHJcbiAgICB2YXIgaW50ZWdyYWxJbWFnZURhdGEgPSBpbnRlZ3JhbFdyYXBwZXIuZGF0YTtcclxuICAgIHZhciBzdW0gPSAwO1xyXG5cclxuICAgIC8vIHN1bSB1cCBmaXJzdCByb3dcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xyXG4gICAgICAgIHN1bSArPSBpbWFnZURhdGFbaV07XHJcbiAgICAgICAgaW50ZWdyYWxJbWFnZURhdGFbaV0gPSBzdW07XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICh2YXIgdiA9IDE7IHYgPCBoZWlnaHQ7IHYrKykge1xyXG4gICAgICAgIHN1bSA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgdSA9IDA7IHUgPCB3aWR0aDsgdSsrKSB7XHJcbiAgICAgICAgICAgIHN1bSArPSBpbWFnZURhdGFbdiAqIHdpZHRoICsgdV07XHJcbiAgICAgICAgICAgIGludGVncmFsSW1hZ2VEYXRhWygodikgKiB3aWR0aCkgKyB1XSA9IHN1bSArIGludGVncmFsSW1hZ2VEYXRhWyh2IC0gMSkgKiB3aWR0aCArIHVdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0aHJlc2hvbGRJbWFnZShpbWFnZVdyYXBwZXIsIHRocmVzaG9sZCwgdGFyZ2V0V3JhcHBlcikge1xyXG4gICAgaWYgKCF0YXJnZXRXcmFwcGVyKSB7XHJcbiAgICAgICAgdGFyZ2V0V3JhcHBlciA9IGltYWdlV3JhcHBlcjtcclxuICAgIH1cclxuICAgIHZhciBpbWFnZURhdGEgPSBpbWFnZVdyYXBwZXIuZGF0YSwgbGVuZ3RoID0gaW1hZ2VEYXRhLmxlbmd0aCwgdGFyZ2V0RGF0YSA9IHRhcmdldFdyYXBwZXIuZGF0YTtcclxuXHJcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcclxuICAgICAgICB0YXJnZXREYXRhW2xlbmd0aF0gPSBpbWFnZURhdGFbbGVuZ3RoXSA8IHRocmVzaG9sZCA/IDEgOiAwO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVIaXN0b2dyYW0oaW1hZ2VXcmFwcGVyLCBiaXRzUGVyUGl4ZWwpIHtcclxuICAgIGlmICghYml0c1BlclBpeGVsKSB7XHJcbiAgICAgICAgYml0c1BlclBpeGVsID0gODtcclxuICAgIH1cclxuICAgIHZhciBpbWFnZURhdGEgPSBpbWFnZVdyYXBwZXIuZGF0YSxcclxuICAgICAgICBsZW5ndGggPSBpbWFnZURhdGEubGVuZ3RoLFxyXG4gICAgICAgIGJpdFNoaWZ0ID0gOCAtIGJpdHNQZXJQaXhlbCxcclxuICAgICAgICBidWNrZXRDbnQgPSAxIDw8IGJpdHNQZXJQaXhlbCxcclxuICAgICAgICBoaXN0ID0gbmV3IEludDMyQXJyYXkoYnVja2V0Q250KTtcclxuXHJcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcclxuICAgICAgICBoaXN0W2ltYWdlRGF0YVtsZW5ndGhdID4+IGJpdFNoaWZ0XSsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhpc3Q7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2hhcnBlbkxpbmUobGluZSkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgbGVuZ3RoID0gbGluZS5sZW5ndGgsXHJcbiAgICAgICAgbGVmdCA9IGxpbmVbMF0sXHJcbiAgICAgICAgY2VudGVyID0gbGluZVsxXSxcclxuICAgICAgICByaWdodDtcclxuXHJcbiAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgcmlnaHQgPSBsaW5lW2kgKyAxXTtcclxuICAgICAgICAvLyAgLTEgNCAtMSBrZXJuZWxcclxuICAgICAgICBsaW5lW2kgLSAxXSA9ICgoKGNlbnRlciAqIDIpIC0gbGVmdCAtIHJpZ2h0KSkgJiAyNTU7XHJcbiAgICAgICAgbGVmdCA9IGNlbnRlcjtcclxuICAgICAgICBjZW50ZXIgPSByaWdodDtcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5lO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluZU90c3VUaHJlc2hvbGQoaW1hZ2VXcmFwcGVyLCBiaXRzUGVyUGl4ZWwpIHtcclxuICAgIGlmICghYml0c1BlclBpeGVsKSB7XHJcbiAgICAgICAgYml0c1BlclBpeGVsID0gODtcclxuICAgIH1cclxuICAgIHZhciBoaXN0LFxyXG4gICAgICAgIHRocmVzaG9sZCxcclxuICAgICAgICBiaXRTaGlmdCA9IDggLSBiaXRzUGVyUGl4ZWw7XHJcblxyXG4gICAgZnVuY3Rpb24gcHgoaW5pdCwgZW5kKSB7XHJcbiAgICAgICAgdmFyIHN1bSA9IDAsIGk7XHJcbiAgICAgICAgZm9yICggaSA9IGluaXQ7IGkgPD0gZW5kOyBpKyspIHtcclxuICAgICAgICAgICAgc3VtICs9IGhpc3RbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbXgoaW5pdCwgZW5kKSB7XHJcbiAgICAgICAgdmFyIGksIHN1bSA9IDA7XHJcblxyXG4gICAgICAgIGZvciAoIGkgPSBpbml0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHN1bSArPSBpICogaGlzdFtpXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZGV0ZXJtaW5lVGhyZXNob2xkKCkge1xyXG4gICAgICAgIHZhciB2ZXQgPSBbMF0sIHAxLCBwMiwgcDEyLCBrLCBtMSwgbTIsIG0xMixcclxuICAgICAgICAgICAgbWF4ID0gKDEgPDwgYml0c1BlclBpeGVsKSAtIDE7XHJcblxyXG4gICAgICAgIGhpc3QgPSBjb21wdXRlSGlzdG9ncmFtKGltYWdlV3JhcHBlciwgYml0c1BlclBpeGVsKTtcclxuICAgICAgICBmb3IgKCBrID0gMTsgayA8IG1heDsgaysrKSB7XHJcbiAgICAgICAgICAgIHAxID0gcHgoMCwgayk7XHJcbiAgICAgICAgICAgIHAyID0gcHgoayArIDEsIG1heCk7XHJcbiAgICAgICAgICAgIHAxMiA9IHAxICogcDI7XHJcbiAgICAgICAgICAgIGlmIChwMTIgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHAxMiA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbTEgPSBteCgwLCBrKSAqIHAyO1xyXG4gICAgICAgICAgICBtMiA9IG14KGsgKyAxLCBtYXgpICogcDE7XHJcbiAgICAgICAgICAgIG0xMiA9IG0xIC0gbTI7XHJcbiAgICAgICAgICAgIHZldFtrXSA9IG0xMiAqIG0xMiAvIHAxMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEFycmF5SGVscGVyLm1heEluZGV4KHZldCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhyZXNob2xkID0gZGV0ZXJtaW5lVGhyZXNob2xkKCk7XHJcbiAgICByZXR1cm4gdGhyZXNob2xkIDw8IGJpdFNoaWZ0O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG90c3VUaHJlc2hvbGQoaW1hZ2VXcmFwcGVyLCB0YXJnZXRXcmFwcGVyKSB7XHJcbiAgICB2YXIgdGhyZXNob2xkID0gZGV0ZXJtaW5lT3RzdVRocmVzaG9sZChpbWFnZVdyYXBwZXIpO1xyXG5cclxuICAgIHRocmVzaG9sZEltYWdlKGltYWdlV3JhcHBlciwgdGhyZXNob2xkLCB0YXJnZXRXcmFwcGVyKTtcclxuICAgIHJldHVybiB0aHJlc2hvbGQ7XHJcbn07XHJcblxyXG4vLyBsb2NhbCB0aHJlc2hvbGRpbmdcclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVCaW5hcnlJbWFnZShpbWFnZVdyYXBwZXIsIGludGVncmFsV3JhcHBlciwgdGFyZ2V0V3JhcHBlcikge1xyXG4gICAgY29tcHV0ZUludGVncmFsSW1hZ2UoaW1hZ2VXcmFwcGVyLCBpbnRlZ3JhbFdyYXBwZXIpO1xyXG5cclxuICAgIGlmICghdGFyZ2V0V3JhcHBlcikge1xyXG4gICAgICAgIHRhcmdldFdyYXBwZXIgPSBpbWFnZVdyYXBwZXI7XHJcbiAgICB9XHJcbiAgICB2YXIgaW1hZ2VEYXRhID0gaW1hZ2VXcmFwcGVyLmRhdGE7XHJcbiAgICB2YXIgdGFyZ2V0RGF0YSA9IHRhcmdldFdyYXBwZXIuZGF0YTtcclxuICAgIHZhciB3aWR0aCA9IGltYWdlV3JhcHBlci5zaXplLng7XHJcbiAgICB2YXIgaGVpZ2h0ID0gaW1hZ2VXcmFwcGVyLnNpemUueTtcclxuICAgIHZhciBpbnRlZ3JhbEltYWdlRGF0YSA9IGludGVncmFsV3JhcHBlci5kYXRhO1xyXG4gICAgdmFyIHN1bSA9IDAsIHYsIHUsIGtlcm5lbCA9IDMsIEEsIEIsIEMsIEQsIGF2Zywgc2l6ZSA9IChrZXJuZWwgKiAyICsgMSkgKiAoa2VybmVsICogMiArIDEpO1xyXG5cclxuICAgIC8vIGNsZWFyIG91dCB0b3AgJiBib3R0b20tYm9yZGVyXHJcbiAgICBmb3IgKCB2ID0gMDsgdiA8PSBrZXJuZWw7IHYrKykge1xyXG4gICAgICAgIGZvciAoIHUgPSAwOyB1IDwgd2lkdGg7IHUrKykge1xyXG4gICAgICAgICAgICB0YXJnZXREYXRhWygodikgKiB3aWR0aCkgKyB1XSA9IDA7XHJcbiAgICAgICAgICAgIHRhcmdldERhdGFbKCgoaGVpZ2h0IC0gMSkgLSB2KSAqIHdpZHRoKSArIHVdID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2xlYXIgb3V0IGxlZnQgJiByaWdodCBib3JkZXJcclxuICAgIGZvciAoIHYgPSBrZXJuZWw7IHYgPCBoZWlnaHQgLSBrZXJuZWw7IHYrKykge1xyXG4gICAgICAgIGZvciAoIHUgPSAwOyB1IDw9IGtlcm5lbDsgdSsrKSB7XHJcbiAgICAgICAgICAgIHRhcmdldERhdGFbKCh2KSAqIHdpZHRoKSArIHVdID0gMDtcclxuICAgICAgICAgICAgdGFyZ2V0RGF0YVsoKHYpICogd2lkdGgpICsgKHdpZHRoIC0gMSAtIHUpXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAoIHYgPSBrZXJuZWwgKyAxOyB2IDwgaGVpZ2h0IC0ga2VybmVsIC0gMTsgdisrKSB7XHJcbiAgICAgICAgZm9yICggdSA9IGtlcm5lbCArIDE7IHUgPCB3aWR0aCAtIGtlcm5lbDsgdSsrKSB7XHJcbiAgICAgICAgICAgIEEgPSBpbnRlZ3JhbEltYWdlRGF0YVsodiAtIGtlcm5lbCAtIDEpICogd2lkdGggKyAodSAtIGtlcm5lbCAtIDEpXTtcclxuICAgICAgICAgICAgQiA9IGludGVncmFsSW1hZ2VEYXRhWyh2IC0ga2VybmVsIC0gMSkgKiB3aWR0aCArICh1ICsga2VybmVsKV07XHJcbiAgICAgICAgICAgIEMgPSBpbnRlZ3JhbEltYWdlRGF0YVsodiArIGtlcm5lbCkgKiB3aWR0aCArICh1IC0ga2VybmVsIC0gMSldO1xyXG4gICAgICAgICAgICBEID0gaW50ZWdyYWxJbWFnZURhdGFbKHYgKyBrZXJuZWwpICogd2lkdGggKyAodSArIGtlcm5lbCldO1xyXG4gICAgICAgICAgICBzdW0gPSBEIC0gQyAtIEIgKyBBO1xyXG4gICAgICAgICAgICBhdmcgPSBzdW0gLyAoc2l6ZSk7XHJcbiAgICAgICAgICAgIHRhcmdldERhdGFbdiAqIHdpZHRoICsgdV0gPSBpbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gPiAoYXZnICsgNSkgPyAwIDogMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2x1c3Rlcihwb2ludHMsIHRocmVzaG9sZCwgcHJvcGVydHkpIHtcclxuICAgIHZhciBpLCBrLCBjbHVzdGVyLCBwb2ludCwgY2x1c3RlcnMgPSBbXTtcclxuXHJcbiAgICBpZiAoIXByb3BlcnR5KSB7XHJcbiAgICAgICAgcHJvcGVydHkgPSBcInJhZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGFkZFRvQ2x1c3RlcihuZXdQb2ludCkge1xyXG4gICAgICAgIHZhciBmb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAoIGsgPSAwOyBrIDwgY2x1c3RlcnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgY2x1c3RlciA9IGNsdXN0ZXJzW2tdO1xyXG4gICAgICAgICAgICBpZiAoY2x1c3Rlci5maXRzKG5ld1BvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgY2x1c3Rlci5hZGQobmV3UG9pbnQpO1xyXG4gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpdGVyYXRlIG92ZXIgZWFjaCBjbG91ZFxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb2ludCA9IENsdXN0ZXIyLmNyZWF0ZVBvaW50KHBvaW50c1tpXSwgaSwgcHJvcGVydHkpO1xyXG4gICAgICAgIGlmICghYWRkVG9DbHVzdGVyKHBvaW50KSkge1xyXG4gICAgICAgICAgICBjbHVzdGVycy5wdXNoKENsdXN0ZXIyLmNyZWF0ZShwb2ludCwgdGhyZXNob2xkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsdXN0ZXJzO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFRyYWNlciA9IHtcclxuICAgIHRyYWNlOiBmdW5jdGlvbihwb2ludHMsIHZlYykge1xyXG4gICAgICAgIHZhciBpdGVyYXRpb24sIG1heEl0ZXJhdGlvbnMgPSAxMCwgdG9wID0gW10sIHJlc3VsdCA9IFtdLCBjZW50ZXJQb3MgPSAwLCBjdXJyZW50UG9zID0gMDtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gdHJhY2UoaWR4LCBmb3J3YXJkKSB7XHJcbiAgICAgICAgICAgIHZhciBmcm9tLCB0bywgdG9JZHgsIHByZWRpY3RlZFBvcywgdGhyZXNob2xkWCA9IDEsIHRocmVzaG9sZFkgPSBNYXRoLmFicyh2ZWNbMV0gLyAxMCksIGZvdW5kID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBmdW5jdGlvbiBtYXRjaChwb3MsIHByZWRpY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBvcy54ID4gKHByZWRpY3RlZC54IC0gdGhyZXNob2xkWClcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgcG9zLnggPCAocHJlZGljdGVkLnggKyB0aHJlc2hvbGRYKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBwb3MueSA+IChwcmVkaWN0ZWQueSAtIHRocmVzaG9sZFkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHBvcy55IDwgKHByZWRpY3RlZC55ICsgdGhyZXNob2xkWSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgbmV4dCBpbmRleCBpcyB3aXRoaW4gdGhlIHZlYyBzcGVjaWZpY2F0aW9uc1xyXG4gICAgICAgICAgICAvLyBpZiBub3QsIGNoZWNrIGFzIGxvbmcgYXMgdGhlIHRocmVzaG9sZCBpcyBtZXRcclxuXHJcbiAgICAgICAgICAgIGZyb20gPSBwb2ludHNbaWR4XTtcclxuICAgICAgICAgICAgaWYgKGZvcndhcmQpIHtcclxuICAgICAgICAgICAgICAgIHByZWRpY3RlZFBvcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB4OiBmcm9tLnggKyB2ZWNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgeTogZnJvbS55ICsgdmVjWzFdXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcHJlZGljdGVkUG9zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IGZyb20ueCAtIHZlY1swXSxcclxuICAgICAgICAgICAgICAgICAgICB5OiBmcm9tLnkgLSB2ZWNbMV1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRvSWR4ID0gZm9yd2FyZCA/IGlkeCArIDEgOiBpZHggLSAxO1xyXG4gICAgICAgICAgICB0byA9IHBvaW50c1t0b0lkeF07XHJcbiAgICAgICAgICAgIHdoaWxlICh0byAmJiAoIGZvdW5kID0gbWF0Y2godG8sIHByZWRpY3RlZFBvcykpICE9PSB0cnVlICYmIChNYXRoLmFicyh0by55IC0gZnJvbS55KSA8IHZlY1sxXSkpIHtcclxuICAgICAgICAgICAgICAgIHRvSWR4ID0gZm9yd2FyZCA/IHRvSWR4ICsgMSA6IHRvSWR4IC0gMTtcclxuICAgICAgICAgICAgICAgIHRvID0gcG9pbnRzW3RvSWR4XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGZvdW5kID8gdG9JZHggOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yICggaXRlcmF0aW9uID0gMDsgaXRlcmF0aW9uIDwgbWF4SXRlcmF0aW9uczsgaXRlcmF0aW9uKyspIHtcclxuICAgICAgICAgICAgLy8gcmFuZG9tbHkgc2VsZWN0IHBvaW50IHRvIHN0YXJ0IHdpdGhcclxuICAgICAgICAgICAgY2VudGVyUG9zID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9pbnRzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgICAgICAvLyB0cmFjZSBmb3J3YXJkXHJcbiAgICAgICAgICAgIHRvcCA9IFtdO1xyXG4gICAgICAgICAgICBjdXJyZW50UG9zID0gY2VudGVyUG9zO1xyXG4gICAgICAgICAgICB0b3AucHVzaChwb2ludHNbY3VycmVudFBvc10pO1xyXG4gICAgICAgICAgICB3aGlsZSAoKCBjdXJyZW50UG9zID0gdHJhY2UoY3VycmVudFBvcywgdHJ1ZSkpICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0b3AucHVzaChwb2ludHNbY3VycmVudFBvc10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjZW50ZXJQb3MgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zID0gY2VudGVyUG9zO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKCggY3VycmVudFBvcyA9IHRyYWNlKGN1cnJlbnRQb3MsIGZhbHNlKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0b3AucHVzaChwb2ludHNbY3VycmVudFBvc10pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodG9wLmxlbmd0aCA+IHJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IERJTEFURSA9IDE7XHJcbmV4cG9ydCBjb25zdCBFUk9ERSA9IDI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGlsYXRlKGluSW1hZ2VXcmFwcGVyLCBvdXRJbWFnZVdyYXBwZXIpIHtcclxuICAgIHZhciB2LFxyXG4gICAgICAgIHUsXHJcbiAgICAgICAgaW5JbWFnZURhdGEgPSBpbkltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIG91dEltYWdlRGF0YSA9IG91dEltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIGhlaWdodCA9IGluSW1hZ2VXcmFwcGVyLnNpemUueSxcclxuICAgICAgICB3aWR0aCA9IGluSW1hZ2VXcmFwcGVyLnNpemUueCxcclxuICAgICAgICBzdW0sXHJcbiAgICAgICAgeVN0YXJ0MSxcclxuICAgICAgICB5U3RhcnQyLFxyXG4gICAgICAgIHhTdGFydDEsXHJcbiAgICAgICAgeFN0YXJ0MjtcclxuXHJcbiAgICBmb3IgKCB2ID0gMTsgdiA8IGhlaWdodCAtIDE7IHYrKykge1xyXG4gICAgICAgIGZvciAoIHUgPSAxOyB1IDwgd2lkdGggLSAxOyB1KyspIHtcclxuICAgICAgICAgICAgeVN0YXJ0MSA9IHYgLSAxO1xyXG4gICAgICAgICAgICB5U3RhcnQyID0gdiArIDE7XHJcbiAgICAgICAgICAgIHhTdGFydDEgPSB1IC0gMTtcclxuICAgICAgICAgICAgeFN0YXJ0MiA9IHUgKyAxO1xyXG4gICAgICAgICAgICBzdW0gPSBpbkltYWdlRGF0YVt5U3RhcnQxICogd2lkdGggKyB4U3RhcnQxXSArIGluSW1hZ2VEYXRhW3lTdGFydDEgKiB3aWR0aCArIHhTdGFydDJdICtcclxuICAgICAgICAgICAgaW5JbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gK1xyXG4gICAgICAgICAgICBpbkltYWdlRGF0YVt5U3RhcnQyICogd2lkdGggKyB4U3RhcnQxXSArIGluSW1hZ2VEYXRhW3lTdGFydDIgKiB3aWR0aCArIHhTdGFydDJdO1xyXG4gICAgICAgICAgICBvdXRJbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gPSBzdW0gPiAwID8gMSA6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVyb2RlKGluSW1hZ2VXcmFwcGVyLCBvdXRJbWFnZVdyYXBwZXIpIHtcclxuICAgIHZhciB2LFxyXG4gICAgICAgIHUsXHJcbiAgICAgICAgaW5JbWFnZURhdGEgPSBpbkltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIG91dEltYWdlRGF0YSA9IG91dEltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIGhlaWdodCA9IGluSW1hZ2VXcmFwcGVyLnNpemUueSxcclxuICAgICAgICB3aWR0aCA9IGluSW1hZ2VXcmFwcGVyLnNpemUueCxcclxuICAgICAgICBzdW0sXHJcbiAgICAgICAgeVN0YXJ0MSxcclxuICAgICAgICB5U3RhcnQyLFxyXG4gICAgICAgIHhTdGFydDEsXHJcbiAgICAgICAgeFN0YXJ0MjtcclxuXHJcbiAgICBmb3IgKCB2ID0gMTsgdiA8IGhlaWdodCAtIDE7IHYrKykge1xyXG4gICAgICAgIGZvciAoIHUgPSAxOyB1IDwgd2lkdGggLSAxOyB1KyspIHtcclxuICAgICAgICAgICAgeVN0YXJ0MSA9IHYgLSAxO1xyXG4gICAgICAgICAgICB5U3RhcnQyID0gdiArIDE7XHJcbiAgICAgICAgICAgIHhTdGFydDEgPSB1IC0gMTtcclxuICAgICAgICAgICAgeFN0YXJ0MiA9IHUgKyAxO1xyXG4gICAgICAgICAgICBzdW0gPSBpbkltYWdlRGF0YVt5U3RhcnQxICogd2lkdGggKyB4U3RhcnQxXSArIGluSW1hZ2VEYXRhW3lTdGFydDEgKiB3aWR0aCArIHhTdGFydDJdICtcclxuICAgICAgICAgICAgaW5JbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gK1xyXG4gICAgICAgICAgICBpbkltYWdlRGF0YVt5U3RhcnQyICogd2lkdGggKyB4U3RhcnQxXSArIGluSW1hZ2VEYXRhW3lTdGFydDIgKiB3aWR0aCArIHhTdGFydDJdO1xyXG4gICAgICAgICAgICBvdXRJbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gPSBzdW0gPT09IDUgPyAxIDogMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3QoYUltYWdlV3JhcHBlciwgYkltYWdlV3JhcHBlciwgcmVzdWx0SW1hZ2VXcmFwcGVyKSB7XHJcbiAgICBpZiAoIXJlc3VsdEltYWdlV3JhcHBlcikge1xyXG4gICAgICAgIHJlc3VsdEltYWdlV3JhcHBlciA9IGFJbWFnZVdyYXBwZXI7XHJcbiAgICB9XHJcbiAgICB2YXIgbGVuZ3RoID0gYUltYWdlV3JhcHBlci5kYXRhLmxlbmd0aCxcclxuICAgICAgICBhSW1hZ2VEYXRhID0gYUltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIGJJbWFnZURhdGEgPSBiSW1hZ2VXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgY0ltYWdlRGF0YSA9IHJlc3VsdEltYWdlV3JhcHBlci5kYXRhO1xyXG5cclxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgIGNJbWFnZURhdGFbbGVuZ3RoXSA9IGFJbWFnZURhdGFbbGVuZ3RoXSAtIGJJbWFnZURhdGFbbGVuZ3RoXTtcclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBiaXR3aXNlT3IoYUltYWdlV3JhcHBlciwgYkltYWdlV3JhcHBlciwgcmVzdWx0SW1hZ2VXcmFwcGVyKSB7XHJcbiAgICBpZiAoIXJlc3VsdEltYWdlV3JhcHBlcikge1xyXG4gICAgICAgIHJlc3VsdEltYWdlV3JhcHBlciA9IGFJbWFnZVdyYXBwZXI7XHJcbiAgICB9XHJcbiAgICB2YXIgbGVuZ3RoID0gYUltYWdlV3JhcHBlci5kYXRhLmxlbmd0aCxcclxuICAgICAgICBhSW1hZ2VEYXRhID0gYUltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIGJJbWFnZURhdGEgPSBiSW1hZ2VXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgY0ltYWdlRGF0YSA9IHJlc3VsdEltYWdlV3JhcHBlci5kYXRhO1xyXG5cclxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgIGNJbWFnZURhdGFbbGVuZ3RoXSA9IGFJbWFnZURhdGFbbGVuZ3RoXSB8fCBiSW1hZ2VEYXRhW2xlbmd0aF07XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY291bnROb25aZXJvKGltYWdlV3JhcHBlcikge1xyXG4gICAgdmFyIGxlbmd0aCA9IGltYWdlV3JhcHBlci5kYXRhLmxlbmd0aCwgZGF0YSA9IGltYWdlV3JhcHBlci5kYXRhLCBzdW0gPSAwO1xyXG5cclxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgIHN1bSArPSBkYXRhW2xlbmd0aF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VtO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvcEdlbmVyaWMobGlzdCwgdG9wLCBzY29yZUZ1bmMpIHtcclxuICAgIHZhciBpLCBtaW5JZHggPSAwLCBtaW4gPSAwLCBxdWV1ZSA9IFtdLCBzY29yZSwgaGl0LCBwb3M7XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCB0b3A7IGkrKykge1xyXG4gICAgICAgIHF1ZXVlW2ldID0ge1xyXG4gICAgICAgICAgICBzY29yZTogMCxcclxuICAgICAgICAgICAgaXRlbTogbnVsbFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgc2NvcmUgPSBzY29yZUZ1bmMuYXBwbHkodGhpcywgW2xpc3RbaV1dKTtcclxuICAgICAgICBpZiAoc2NvcmUgPiBtaW4pIHtcclxuICAgICAgICAgICAgaGl0ID0gcXVldWVbbWluSWR4XTtcclxuICAgICAgICAgICAgaGl0LnNjb3JlID0gc2NvcmU7XHJcbiAgICAgICAgICAgIGhpdC5pdGVtID0gbGlzdFtpXTtcclxuICAgICAgICAgICAgbWluID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICAgICAgZm9yICggcG9zID0gMDsgcG9zIDwgdG9wOyBwb3MrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXVlW3Bvc10uc2NvcmUgPCBtaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW4gPSBxdWV1ZVtwb3NdLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbklkeCA9IHBvcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcXVldWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ3JheUFycmF5RnJvbUltYWdlKGh0bWxJbWFnZSwgb2Zmc2V0WCwgY3R4LCBhcnJheSkge1xyXG4gICAgY3R4LmRyYXdJbWFnZShodG1sSW1hZ2UsIG9mZnNldFgsIDAsIGh0bWxJbWFnZS53aWR0aCwgaHRtbEltYWdlLmhlaWdodCk7XHJcbiAgICB2YXIgY3R4RGF0YSA9IGN0eC5nZXRJbWFnZURhdGEob2Zmc2V0WCwgMCwgaHRtbEltYWdlLndpZHRoLCBodG1sSW1hZ2UuaGVpZ2h0KS5kYXRhO1xyXG4gICAgY29tcHV0ZUdyYXkoY3R4RGF0YSwgYXJyYXkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdyYXlBcnJheUZyb21Db250ZXh0KGN0eCwgc2l6ZSwgb2Zmc2V0LCBhcnJheSkge1xyXG4gICAgdmFyIGN0eERhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKG9mZnNldC54LCBvZmZzZXQueSwgc2l6ZS54LCBzaXplLnkpLmRhdGE7XHJcbiAgICBjb21wdXRlR3JheShjdHhEYXRhLCBhcnJheSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ3JheUFuZEhhbGZTYW1wbGVGcm9tQ2FudmFzRGF0YShjYW52YXNEYXRhLCBzaXplLCBvdXRBcnJheSkge1xyXG4gICAgdmFyIHRvcFJvd0lkeCA9IDA7XHJcbiAgICB2YXIgYm90dG9tUm93SWR4ID0gc2l6ZS54O1xyXG4gICAgdmFyIGVuZElkeCA9IE1hdGguZmxvb3IoY2FudmFzRGF0YS5sZW5ndGggLyA0KTtcclxuICAgIHZhciBvdXRXaWR0aCA9IHNpemUueCAvIDI7XHJcbiAgICB2YXIgb3V0SW1nSWR4ID0gMDtcclxuICAgIHZhciBpbldpZHRoID0gc2l6ZS54O1xyXG4gICAgdmFyIGk7XHJcblxyXG4gICAgd2hpbGUgKGJvdHRvbVJvd0lkeCA8IGVuZElkeCkge1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgb3V0V2lkdGg7IGkrKykge1xyXG4gICAgICAgICAgICBvdXRBcnJheVtvdXRJbWdJZHhdID0gTWF0aC5mbG9vcigoXHJcbiAgICAgICAgICAgICAgICAoMC4yOTkgKiBjYW52YXNEYXRhW3RvcFJvd0lkeCAqIDQgKyAwXSArXHJcbiAgICAgICAgICAgICAgICAgMC41ODcgKiBjYW52YXNEYXRhW3RvcFJvd0lkeCAqIDQgKyAxXSArXHJcbiAgICAgICAgICAgICAgICAgMC4xMTQgKiBjYW52YXNEYXRhW3RvcFJvd0lkeCAqIDQgKyAyXSkgK1xyXG4gICAgICAgICAgICAgICAgKDAuMjk5ICogY2FudmFzRGF0YVsodG9wUm93SWR4ICsgMSkgKiA0ICsgMF0gK1xyXG4gICAgICAgICAgICAgICAgIDAuNTg3ICogY2FudmFzRGF0YVsodG9wUm93SWR4ICsgMSkgKiA0ICsgMV0gK1xyXG4gICAgICAgICAgICAgICAgIDAuMTE0ICogY2FudmFzRGF0YVsodG9wUm93SWR4ICsgMSkgKiA0ICsgMl0pICtcclxuICAgICAgICAgICAgICAgICgwLjI5OSAqIGNhbnZhc0RhdGFbKGJvdHRvbVJvd0lkeCkgKiA0ICsgMF0gK1xyXG4gICAgICAgICAgICAgICAgIDAuNTg3ICogY2FudmFzRGF0YVsoYm90dG9tUm93SWR4KSAqIDQgKyAxXSArXHJcbiAgICAgICAgICAgICAgICAgMC4xMTQgKiBjYW52YXNEYXRhWyhib3R0b21Sb3dJZHgpICogNCArIDJdKSArXHJcbiAgICAgICAgICAgICAgICAoMC4yOTkgKiBjYW52YXNEYXRhWyhib3R0b21Sb3dJZHggKyAxKSAqIDQgKyAwXSArXHJcbiAgICAgICAgICAgICAgICAgMC41ODcgKiBjYW52YXNEYXRhWyhib3R0b21Sb3dJZHggKyAxKSAqIDQgKyAxXSArXHJcbiAgICAgICAgICAgICAgICAgMC4xMTQgKiBjYW52YXNEYXRhWyhib3R0b21Sb3dJZHggKyAxKSAqIDQgKyAyXSkpIC8gNCk7XHJcbiAgICAgICAgICAgIG91dEltZ0lkeCsrO1xyXG4gICAgICAgICAgICB0b3BSb3dJZHggPSB0b3BSb3dJZHggKyAyO1xyXG4gICAgICAgICAgICBib3R0b21Sb3dJZHggPSBib3R0b21Sb3dJZHggKyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0b3BSb3dJZHggPSB0b3BSb3dJZHggKyBpbldpZHRoO1xyXG4gICAgICAgIGJvdHRvbVJvd0lkeCA9IGJvdHRvbVJvd0lkeCArIGluV2lkdGg7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUdyYXkoaW1hZ2VEYXRhLCBvdXRBcnJheSwgY29uZmlnKSB7XHJcbiAgICB2YXIgbCA9IChpbWFnZURhdGEubGVuZ3RoIC8gNCkgfCAwLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgc2luZ2xlQ2hhbm5lbCA9IGNvbmZpZyAmJiBjb25maWcuc2luZ2xlQ2hhbm5lbCA9PT0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoc2luZ2xlQ2hhbm5lbCkge1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgb3V0QXJyYXlbaV0gPSBpbWFnZURhdGFbaSAqIDQgKyAwXTtcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgb3V0QXJyYXlbaV0gPSBNYXRoLmZsb29yKFxyXG4gICAgICAgICAgICAgICAgMC4yOTkgKiBpbWFnZURhdGFbaSAqIDQgKyAwXSArIDAuNTg3ICogaW1hZ2VEYXRhW2kgKiA0ICsgMV0gKyAwLjExNCAqIGltYWdlRGF0YVtpICogNCArIDJdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEltYWdlQXJyYXkoc3JjLCBjYWxsYmFjaywgY2FudmFzKSB7XHJcbiAgICBpZiAoIWNhbnZhcykge1xyXG4gICAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgfVxyXG4gICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgaW1nLmNhbGxiYWNrID0gY2FsbGJhY2s7XHJcbiAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UodGhpcywgMCwgMCk7XHJcbiAgICAgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy53aWR0aCAqIHRoaXMuaGVpZ2h0KTtcclxuICAgICAgICBjdHguZHJhd0ltYWdlKHRoaXMsIDAsIDApO1xyXG4gICAgICAgIHZhciBkYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCkuZGF0YTtcclxuICAgICAgICBjb21wdXRlR3JheShkYXRhLCBhcnJheSk7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayhhcnJheSwge1xyXG4gICAgICAgICAgICB4OiB0aGlzLndpZHRoLFxyXG4gICAgICAgICAgICB5OiB0aGlzLmhlaWdodFxyXG4gICAgICAgIH0sIHRoaXMpO1xyXG4gICAgfTtcclxuICAgIGltZy5zcmMgPSBzcmM7XHJcbn07XHJcblxyXG4vKipcclxuICogQHBhcmFtIGluSW1nIHtJbWFnZVdyYXBwZXJ9IGlucHV0IGltYWdlIHRvIGJlIHNhbXBsZWRcclxuICogQHBhcmFtIG91dEltZyB7SW1hZ2VXcmFwcGVyfSB0byBiZSBzdG9yZWQgaW5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoYWxmU2FtcGxlKGluSW1nV3JhcHBlciwgb3V0SW1nV3JhcHBlcikge1xyXG4gICAgdmFyIGluSW1nID0gaW5JbWdXcmFwcGVyLmRhdGE7XHJcbiAgICB2YXIgaW5XaWR0aCA9IGluSW1nV3JhcHBlci5zaXplLng7XHJcbiAgICB2YXIgb3V0SW1nID0gb3V0SW1nV3JhcHBlci5kYXRhO1xyXG4gICAgdmFyIHRvcFJvd0lkeCA9IDA7XHJcbiAgICB2YXIgYm90dG9tUm93SWR4ID0gaW5XaWR0aDtcclxuICAgIHZhciBlbmRJZHggPSBpbkltZy5sZW5ndGg7XHJcbiAgICB2YXIgb3V0V2lkdGggPSBpbldpZHRoIC8gMjtcclxuICAgIHZhciBvdXRJbWdJZHggPSAwO1xyXG4gICAgd2hpbGUgKGJvdHRvbVJvd0lkeCA8IGVuZElkeCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0V2lkdGg7IGkrKykge1xyXG4gICAgICAgICAgICBvdXRJbWdbb3V0SW1nSWR4XSA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgICAgICAgICAoaW5JbWdbdG9wUm93SWR4XSArIGluSW1nW3RvcFJvd0lkeCArIDFdICsgaW5JbWdbYm90dG9tUm93SWR4XSArIGluSW1nW2JvdHRvbVJvd0lkeCArIDFdKSAvIDQpO1xyXG4gICAgICAgICAgICBvdXRJbWdJZHgrKztcclxuICAgICAgICAgICAgdG9wUm93SWR4ID0gdG9wUm93SWR4ICsgMjtcclxuICAgICAgICAgICAgYm90dG9tUm93SWR4ID0gYm90dG9tUm93SWR4ICsgMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdG9wUm93SWR4ID0gdG9wUm93SWR4ICsgaW5XaWR0aDtcclxuICAgICAgICBib3R0b21Sb3dJZHggPSBib3R0b21Sb3dJZHggKyBpbldpZHRoO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdjJyZ2IoaHN2LCByZ2IpIHtcclxuICAgIHZhciBoID0gaHN2WzBdLFxyXG4gICAgICAgIHMgPSBoc3ZbMV0sXHJcbiAgICAgICAgdiA9IGhzdlsyXSxcclxuICAgICAgICBjID0gdiAqIHMsXHJcbiAgICAgICAgeCA9IGMgKiAoMSAtIE1hdGguYWJzKChoIC8gNjApICUgMiAtIDEpKSxcclxuICAgICAgICBtID0gdiAtIGMsXHJcbiAgICAgICAgciA9IDAsXHJcbiAgICAgICAgZyA9IDAsXHJcbiAgICAgICAgYiA9IDA7XHJcblxyXG4gICAgcmdiID0gcmdiIHx8IFswLCAwLCAwXTtcclxuXHJcbiAgICBpZiAoaCA8IDYwKSB7XHJcbiAgICAgICAgciA9IGM7XHJcbiAgICAgICAgZyA9IHg7XHJcbiAgICB9IGVsc2UgaWYgKGggPCAxMjApIHtcclxuICAgICAgICByID0geDtcclxuICAgICAgICBnID0gYztcclxuICAgIH0gZWxzZSBpZiAoaCA8IDE4MCkge1xyXG4gICAgICAgIGcgPSBjO1xyXG4gICAgICAgIGIgPSB4O1xyXG4gICAgfSBlbHNlIGlmIChoIDwgMjQwKSB7XHJcbiAgICAgICAgZyA9IHg7XHJcbiAgICAgICAgYiA9IGM7XHJcbiAgICB9IGVsc2UgaWYgKGggPCAzMDApIHtcclxuICAgICAgICByID0geDtcclxuICAgICAgICBiID0gYztcclxuICAgIH0gZWxzZSBpZiAoaCA8IDM2MCkge1xyXG4gICAgICAgIHIgPSBjO1xyXG4gICAgICAgIGIgPSB4O1xyXG4gICAgfVxyXG4gICAgcmdiWzBdID0gKChyICsgbSkgKiAyNTUpIHwgMDtcclxuICAgIHJnYlsxXSA9ICgoZyArIG0pICogMjU1KSB8IDA7XHJcbiAgICByZ2JbMl0gPSAoKGIgKyBtKSAqIDI1NSkgfCAwO1xyXG4gICAgcmV0dXJuIHJnYjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfY29tcHV0ZURpdmlzb3JzKG4pIHtcclxuICAgIHZhciBsYXJnZURpdmlzb3JzID0gW10sXHJcbiAgICAgICAgZGl2aXNvcnMgPSBbXSxcclxuICAgICAgICBpO1xyXG5cclxuICAgIGZvciAoaSA9IDE7IGkgPCBNYXRoLnNxcnQobikgKyAxOyBpKyspIHtcclxuICAgICAgICBpZiAobiAlIGkgPT09IDApIHtcclxuICAgICAgICAgICAgZGl2aXNvcnMucHVzaChpKTtcclxuICAgICAgICAgICAgaWYgKGkgIT09IG4gLyBpKSB7XHJcbiAgICAgICAgICAgICAgICBsYXJnZURpdmlzb3JzLnVuc2hpZnQoTWF0aC5mbG9vcihuIC8gaSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRpdmlzb3JzLmNvbmNhdChsYXJnZURpdmlzb3JzKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIF9jb21wdXRlSW50ZXJzZWN0aW9uKGFycjEsIGFycjIpIHtcclxuICAgIHZhciBpID0gMCxcclxuICAgICAgICBqID0gMCxcclxuICAgICAgICByZXN1bHQgPSBbXTtcclxuXHJcbiAgICB3aGlsZSAoaSA8IGFycjEubGVuZ3RoICYmIGogPCBhcnIyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChhcnIxW2ldID09PSBhcnIyW2pdKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFycjFbaV0pO1xyXG4gICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgIGorKztcclxuICAgICAgICB9IGVsc2UgaWYgKGFycjFbaV0gPiBhcnIyW2pdKSB7XHJcbiAgICAgICAgICAgIGorKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpKys7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVQYXRjaFNpemUocGF0Y2hTaXplLCBpbWdTaXplKSB7XHJcbiAgICB2YXIgZGl2aXNvcnNYID0gX2NvbXB1dGVEaXZpc29ycyhpbWdTaXplLngpLFxyXG4gICAgICAgIGRpdmlzb3JzWSA9IF9jb21wdXRlRGl2aXNvcnMoaW1nU2l6ZS55KSxcclxuICAgICAgICB3aWRlU2lkZSA9IE1hdGgubWF4KGltZ1NpemUueCwgaW1nU2l6ZS55KSxcclxuICAgICAgICBjb21tb24gPSBfY29tcHV0ZUludGVyc2VjdGlvbihkaXZpc29yc1gsIGRpdmlzb3JzWSksXHJcbiAgICAgICAgbnJPZlBhdGNoZXNMaXN0ID0gWzgsIDEwLCAxNSwgMjAsIDMyLCA2MCwgODBdLFxyXG4gICAgICAgIG5yT2ZQYXRjaGVzTWFwID0ge1xyXG4gICAgICAgICAgICBcIngtc21hbGxcIjogNSxcclxuICAgICAgICAgICAgXCJzbWFsbFwiOiA0LFxyXG4gICAgICAgICAgICBcIm1lZGl1bVwiOiAzLFxyXG4gICAgICAgICAgICBcImxhcmdlXCI6IDIsXHJcbiAgICAgICAgICAgIFwieC1sYXJnZVwiOiAxXHJcbiAgICAgICAgfSxcclxuICAgICAgICBuck9mUGF0Y2hlc0lkeCA9IG5yT2ZQYXRjaGVzTWFwW3BhdGNoU2l6ZV0gfHwgbnJPZlBhdGNoZXNNYXAubWVkaXVtLFxyXG4gICAgICAgIG5yT2ZQYXRjaGVzID0gbnJPZlBhdGNoZXNMaXN0W25yT2ZQYXRjaGVzSWR4XSxcclxuICAgICAgICBkZXNpcmVkUGF0Y2hTaXplID0gTWF0aC5mbG9vcih3aWRlU2lkZSAvIG5yT2ZQYXRjaGVzKSxcclxuICAgICAgICBvcHRpbWFsUGF0Y2hTaXplO1xyXG5cclxuICAgIGZ1bmN0aW9uIGZpbmRQYXRjaFNpemVGb3JEaXZpc29ycyhkaXZpc29ycykge1xyXG4gICAgICAgIHZhciBpID0gMCxcclxuICAgICAgICAgICAgZm91bmQgPSBkaXZpc29yc1tNYXRoLmZsb29yKGRpdmlzb3JzLmxlbmd0aCAvIDIpXTtcclxuXHJcbiAgICAgICAgd2hpbGUgKGkgPCAoZGl2aXNvcnMubGVuZ3RoIC0gMSkgJiYgZGl2aXNvcnNbaV0gPCBkZXNpcmVkUGF0Y2hTaXplKSB7XHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyhkaXZpc29yc1tpXSAtIGRlc2lyZWRQYXRjaFNpemUpID4gTWF0aC5hYnMoZGl2aXNvcnNbaSAtIDFdIC0gZGVzaXJlZFBhdGNoU2l6ZSkpIHtcclxuICAgICAgICAgICAgICAgIGZvdW5kID0gZGl2aXNvcnNbaSAtIDFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZm91bmQgPSBkaXZpc29yc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVzaXJlZFBhdGNoU2l6ZSAvIGZvdW5kIDwgbnJPZlBhdGNoZXNMaXN0W25yT2ZQYXRjaGVzSWR4ICsgMV0gLyBuck9mUGF0Y2hlc0xpc3RbbnJPZlBhdGNoZXNJZHhdICYmXHJcbiAgICAgICAgICAgIGRlc2lyZWRQYXRjaFNpemUgLyBmb3VuZCA+IG5yT2ZQYXRjaGVzTGlzdFtuck9mUGF0Y2hlc0lkeCAtIDFdIC8gbnJPZlBhdGNoZXNMaXN0W25yT2ZQYXRjaGVzSWR4XSApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHt4OiBmb3VuZCwgeTogZm91bmR9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpbWFsUGF0Y2hTaXplID0gZmluZFBhdGNoU2l6ZUZvckRpdmlzb3JzKGNvbW1vbik7XHJcbiAgICBpZiAoIW9wdGltYWxQYXRjaFNpemUpIHtcclxuICAgICAgICBvcHRpbWFsUGF0Y2hTaXplID0gZmluZFBhdGNoU2l6ZUZvckRpdmlzb3JzKF9jb21wdXRlRGl2aXNvcnMod2lkZVNpZGUpKTtcclxuICAgICAgICBpZiAoIW9wdGltYWxQYXRjaFNpemUpIHtcclxuICAgICAgICAgICAgb3B0aW1hbFBhdGNoU2l6ZSA9IGZpbmRQYXRjaFNpemVGb3JEaXZpc29ycygoX2NvbXB1dGVEaXZpc29ycyhkZXNpcmVkUGF0Y2hTaXplICogbnJPZlBhdGNoZXMpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9wdGltYWxQYXRjaFNpemU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX3BhcnNlQ1NTRGltZW5zaW9uVmFsdWVzKHZhbHVlKSB7XHJcbiAgICB2YXIgZGltZW5zaW9uID0ge1xyXG4gICAgICAgIHZhbHVlOiBwYXJzZUZsb2F0KHZhbHVlKSxcclxuICAgICAgICB1bml0OiB2YWx1ZS5pbmRleE9mKFwiJVwiKSA9PT0gdmFsdWUubGVuZ3RoIC0gMSA/IFwiJVwiIDogXCIlXCJcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGRpbWVuc2lvbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBfZGltZW5zaW9uc0NvbnZlcnRlcnMgPSB7XHJcbiAgICB0b3A6IGZ1bmN0aW9uKGRpbWVuc2lvbiwgY29udGV4dCkge1xyXG4gICAgICAgIGlmIChkaW1lbnNpb24udW5pdCA9PT0gXCIlXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoY29udGV4dC5oZWlnaHQgKiAoZGltZW5zaW9uLnZhbHVlIC8gMTAwKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHJpZ2h0OiBmdW5jdGlvbihkaW1lbnNpb24sIGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoZGltZW5zaW9uLnVuaXQgPT09IFwiJVwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKGNvbnRleHQud2lkdGggLSAoY29udGV4dC53aWR0aCAqIChkaW1lbnNpb24udmFsdWUgLyAxMDApKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGJvdHRvbTogZnVuY3Rpb24oZGltZW5zaW9uLCBjb250ZXh0KSB7XHJcbiAgICAgICAgaWYgKGRpbWVuc2lvbi51bml0ID09PSBcIiVcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihjb250ZXh0LmhlaWdodCAtIChjb250ZXh0LmhlaWdodCAqIChkaW1lbnNpb24udmFsdWUgLyAxMDApKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGxlZnQ6IGZ1bmN0aW9uKGRpbWVuc2lvbiwgY29udGV4dCkge1xyXG4gICAgICAgIGlmIChkaW1lbnNpb24udW5pdCA9PT0gXCIlXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoY29udGV4dC53aWR0aCAqIChkaW1lbnNpb24udmFsdWUgLyAxMDApKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUltYWdlQXJlYShpbnB1dFdpZHRoLCBpbnB1dEhlaWdodCwgYXJlYSkge1xyXG4gICAgdmFyIGNvbnRleHQgPSB7d2lkdGg6IGlucHV0V2lkdGgsIGhlaWdodDogaW5wdXRIZWlnaHR9O1xyXG5cclxuICAgIHZhciBwYXJzZWRBcmVhID0gT2JqZWN0LmtleXMoYXJlYSkucmVkdWNlKGZ1bmN0aW9uKHJlc3VsdCwga2V5KSB7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gYXJlYVtrZXldLFxyXG4gICAgICAgICAgICBwYXJzZWQgPSBfcGFyc2VDU1NEaW1lbnNpb25WYWx1ZXModmFsdWUpLFxyXG4gICAgICAgICAgICBjYWxjdWxhdGVkID0gX2RpbWVuc2lvbnNDb252ZXJ0ZXJzW2tleV0ocGFyc2VkLCBjb250ZXh0KTtcclxuXHJcbiAgICAgICAgcmVzdWx0W2tleV0gPSBjYWxjdWxhdGVkO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9LCB7fSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzeDogcGFyc2VkQXJlYS5sZWZ0LFxyXG4gICAgICAgIHN5OiBwYXJzZWRBcmVhLnRvcCxcclxuICAgICAgICBzdzogcGFyc2VkQXJlYS5yaWdodCAtIHBhcnNlZEFyZWEubGVmdCxcclxuICAgICAgICBzaDogcGFyc2VkQXJlYS5ib3R0b20gLSBwYXJzZWRBcmVhLnRvcFxyXG4gICAgfTtcclxufTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tbW9uL2N2X3V0aWxzLmpzXG4gKiovIiwiaW1wb3J0IFN1YkltYWdlIGZyb20gJy4vc3ViSW1hZ2UnO1xyXG5pbXBvcnQge2hzdjJyZ2J9IGZyb20gJy4uL2NvbW1vbi9jdl91dGlscyc7XHJcbmltcG9ydCBBcnJheUhlbHBlciBmcm9tICcuLi9jb21tb24vYXJyYXlfaGVscGVyJztcclxuY29uc3QgdmVjMiA9IHtcclxuICAgIGNsb25lOiByZXF1aXJlKCdnbC12ZWMyL2Nsb25lJyksXHJcbn07XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGJhc2ljIGltYWdlIGNvbWJpbmluZyB0aGUgZGF0YSBhbmQgc2l6ZS5cclxuICogSW4gYWRkaXRpb24sIHNvbWUgbWV0aG9kcyBmb3IgbWFuaXB1bGF0aW9uIGFyZSBjb250YWluZWQuXHJcbiAqIEBwYXJhbSBzaXplIHt4LHl9IFRoZSBzaXplIG9mIHRoZSBpbWFnZSBpbiBwaXhlbFxyXG4gKiBAcGFyYW0gZGF0YSB7QXJyYXl9IElmIGdpdmVuLCBhIGZsYXQgYXJyYXkgY29udGFpbmluZyB0aGUgcGl4ZWwgZGF0YVxyXG4gKiBAcGFyYW0gQXJyYXlUeXBlIHtUeXBlfSBJZiBnaXZlbiwgdGhlIGRlc2lyZWQgRGF0YVR5cGUgb2YgdGhlIEFycmF5IChtYXkgYmUgdHlwZWQvbm9uLXR5cGVkKVxyXG4gKiBAcGFyYW0gaW5pdGlhbGl6ZSB7Qm9vbGVhbn0gSW5kaWNhdGluZyBpZiB0aGUgYXJyYXkgc2hvdWxkIGJlIGluaXRpYWxpemVkIG9uIGNyZWF0aW9uLlxyXG4gKiBAcmV0dXJucyB7SW1hZ2VXcmFwcGVyfVxyXG4gKi9cclxuZnVuY3Rpb24gSW1hZ2VXcmFwcGVyKHNpemUsIGRhdGEsIEFycmF5VHlwZSwgaW5pdGlhbGl6ZSkge1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgICAgaWYgKEFycmF5VHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBuZXcgQXJyYXlUeXBlKHNpemUueCAqIHNpemUueSk7XHJcbiAgICAgICAgICAgIGlmIChBcnJheVR5cGUgPT09IEFycmF5ICYmIGluaXRpYWxpemUpIHtcclxuICAgICAgICAgICAgICAgIEFycmF5SGVscGVyLmluaXQodGhpcy5kYXRhLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IG5ldyBVaW50OEFycmF5KHNpemUueCAqIHNpemUueSk7XHJcbiAgICAgICAgICAgIGlmIChVaW50OEFycmF5ID09PSBBcnJheSAmJiBpbml0aWFsaXplKSB7XHJcbiAgICAgICAgICAgICAgICBBcnJheUhlbHBlci5pbml0KHRoaXMuZGF0YSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNpemUgPSBzaXplO1xyXG59XHJcblxyXG4vKipcclxuICogdGVzdHMgaWYgYSBwb3NpdGlvbiBpcyB3aXRoaW4gdGhlIGltYWdlIHdpdGggYSBnaXZlbiBvZmZzZXRcclxuICogQHBhcmFtIGltZ1JlZiB7eCwgeX0gVGhlIGxvY2F0aW9uIHRvIHRlc3RcclxuICogQHBhcmFtIGJvcmRlciBOdW1iZXIgdGhlIHBhZGRpbmcgdmFsdWUgaW4gcGl4ZWxcclxuICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgbG9jYXRpb24gaW5zaWRlIHRoZSBpbWFnZSdzIGJvcmRlciwgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAqIEBzZWUgY3ZkL2ltYWdlLmhcclxuICovXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuaW5JbWFnZVdpdGhCb3JkZXIgPSBmdW5jdGlvbihpbWdSZWYsIGJvcmRlcikge1xyXG4gICAgcmV0dXJuIChpbWdSZWYueCA+PSBib3JkZXIpXHJcbiAgICAgICAgJiYgKGltZ1JlZi55ID49IGJvcmRlcilcclxuICAgICAgICAmJiAoaW1nUmVmLnggPCAodGhpcy5zaXplLnggLSBib3JkZXIpKVxyXG4gICAgICAgICYmIChpbWdSZWYueSA8ICh0aGlzLnNpemUueSAtIGJvcmRlcikpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFBlcmZvcm1zIGJpbGluZWFyIHNhbXBsaW5nXHJcbiAqIEBwYXJhbSBpbkltZyBJbWFnZSB0byBleHRyYWN0IHNhbXBsZSBmcm9tXHJcbiAqIEBwYXJhbSB4IHRoZSB4LWNvb3JkaW5hdGVcclxuICogQHBhcmFtIHkgdGhlIHktY29vcmRpbmF0ZVxyXG4gKiBAcmV0dXJucyB0aGUgc2FtcGxlZCB2YWx1ZVxyXG4gKiBAc2VlIGN2ZC92aXNpb24uaFxyXG4gKi9cclxuSW1hZ2VXcmFwcGVyLnNhbXBsZSA9IGZ1bmN0aW9uKGluSW1nLCB4LCB5KSB7XHJcbiAgICB2YXIgbHggPSBNYXRoLmZsb29yKHgpO1xyXG4gICAgdmFyIGx5ID0gTWF0aC5mbG9vcih5KTtcclxuICAgIHZhciB3ID0gaW5JbWcuc2l6ZS54O1xyXG4gICAgdmFyIGJhc2UgPSBseSAqIGluSW1nLnNpemUueCArIGx4O1xyXG4gICAgdmFyIGEgPSBpbkltZy5kYXRhW2Jhc2UgKyAwXTtcclxuICAgIHZhciBiID0gaW5JbWcuZGF0YVtiYXNlICsgMV07XHJcbiAgICB2YXIgYyA9IGluSW1nLmRhdGFbYmFzZSArIHddO1xyXG4gICAgdmFyIGQgPSBpbkltZy5kYXRhW2Jhc2UgKyB3ICsgMV07XHJcbiAgICB2YXIgZSA9IGEgLSBiO1xyXG4gICAgeCAtPSBseDtcclxuICAgIHkgLT0gbHk7XHJcblxyXG4gICAgdmFyIHJlc3VsdCA9IE1hdGguZmxvb3IoeCAqICh5ICogKGUgLSBjICsgZCkgLSBlKSArIHkgKiAoYyAtIGEpICsgYSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEluaXRpYWxpemVzIGEgZ2l2ZW4gYXJyYXkuIFNldHMgZWFjaCBlbGVtZW50IHRvIHplcm8uXHJcbiAqIEBwYXJhbSBhcnJheSB7QXJyYXl9IFRoZSBhcnJheSB0byBpbml0aWFsaXplXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIuY2xlYXJBcnJheSA9IGZ1bmN0aW9uKGFycmF5KSB7XHJcbiAgICB2YXIgbCA9IGFycmF5Lmxlbmd0aDtcclxuICAgIHdoaWxlIChsLS0pIHtcclxuICAgICAgICBhcnJheVtsXSA9IDA7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIHtTdWJJbWFnZX0gZnJvbSB0aGUgY3VycmVudCBpbWFnZSAoe3RoaXN9KS5cclxuICogQHBhcmFtIGZyb20ge0ltYWdlUmVmfSBUaGUgcG9zaXRpb24gd2hlcmUgdG8gc3RhcnQgdGhlIHtTdWJJbWFnZX0gZnJvbS4gKHRvcC1sZWZ0IGNvcm5lcilcclxuICogQHBhcmFtIHNpemUge0ltYWdlUmVmfSBUaGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIGltYWdlXHJcbiAqIEByZXR1cm5zIHtTdWJJbWFnZX0gQSBzaGFyZWQgcGFydCBvZiB0aGUgb3JpZ2luYWwgaW1hZ2VcclxuICovXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuc3ViSW1hZ2UgPSBmdW5jdGlvbihmcm9tLCBzaXplKSB7XHJcbiAgICByZXR1cm4gbmV3IFN1YkltYWdlKGZyb20sIHNpemUsIHRoaXMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYW4ge0ltYWdlV3JhcHBlcikgYW5kIGNvcGllcyB0aGUgbmVlZGVkIHVuZGVybHlpbmcgaW1hZ2UtZGF0YSBhcmVhXHJcbiAqIEBwYXJhbSBpbWFnZVdyYXBwZXIge0ltYWdlV3JhcHBlcn0gVGhlIHRhcmdldCB7SW1hZ2VXcmFwcGVyfSB3aGVyZSB0aGUgZGF0YSBzaG91bGQgYmUgY29waWVkXHJcbiAqIEBwYXJhbSBmcm9tIHtJbWFnZVJlZn0gVGhlIGxvY2F0aW9uIHdoZXJlIHRvIGNvcHkgZnJvbSAodG9wLWxlZnQgbG9jYXRpb24pXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIucHJvdG90eXBlLnN1YkltYWdlQXNDb3B5ID0gZnVuY3Rpb24oaW1hZ2VXcmFwcGVyLCBmcm9tKSB7XHJcbiAgICB2YXIgc2l6ZVkgPSBpbWFnZVdyYXBwZXIuc2l6ZS55LCBzaXplWCA9IGltYWdlV3JhcHBlci5zaXplLng7XHJcbiAgICB2YXIgeCwgeTtcclxuICAgIGZvciAoIHggPSAwOyB4IDwgc2l6ZVg7IHgrKykge1xyXG4gICAgICAgIGZvciAoIHkgPSAwOyB5IDwgc2l6ZVk7IHkrKykge1xyXG4gICAgICAgICAgICBpbWFnZVdyYXBwZXIuZGF0YVt5ICogc2l6ZVggKyB4XSA9IHRoaXMuZGF0YVsoZnJvbS55ICsgeSkgKiB0aGlzLnNpemUueCArIGZyb20ueCArIHhdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuY29weVRvID0gZnVuY3Rpb24oaW1hZ2VXcmFwcGVyKSB7XHJcbiAgICB2YXIgbGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCwgc3JjRGF0YSA9IHRoaXMuZGF0YSwgZHN0RGF0YSA9IGltYWdlV3JhcHBlci5kYXRhO1xyXG5cclxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgIGRzdERhdGFbbGVuZ3RoXSA9IHNyY0RhdGFbbGVuZ3RoXTtcclxuICAgIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXRyaWV2ZXMgYSBnaXZlbiBwaXhlbCBwb3NpdGlvbiBmcm9tIHRoZSBpbWFnZVxyXG4gKiBAcGFyYW0geCB7TnVtYmVyfSBUaGUgeC1wb3NpdGlvblxyXG4gKiBAcGFyYW0geSB7TnVtYmVyfSBUaGUgeS1wb3NpdGlvblxyXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JheXNjYWxlIHZhbHVlIGF0IHRoZSBwaXhlbC1wb3NpdGlvblxyXG4gKi9cclxuSW1hZ2VXcmFwcGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih4LCB5KSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhW3kgKiB0aGlzLnNpemUueCArIHhdO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHJpZXZlcyBhIGdpdmVuIHBpeGVsIHBvc2l0aW9uIGZyb20gdGhlIGltYWdlXHJcbiAqIEBwYXJhbSB4IHtOdW1iZXJ9IFRoZSB4LXBvc2l0aW9uXHJcbiAqIEBwYXJhbSB5IHtOdW1iZXJ9IFRoZSB5LXBvc2l0aW9uXHJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBncmF5c2NhbGUgdmFsdWUgYXQgdGhlIHBpeGVsLXBvc2l0aW9uXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIucHJvdG90eXBlLmdldFNhZmUgPSBmdW5jdGlvbih4LCB5KSB7XHJcbiAgICB2YXIgaTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaW5kZXhNYXBwaW5nKSB7XHJcbiAgICAgICAgdGhpcy5pbmRleE1hcHBpbmcgPSB7XHJcbiAgICAgICAgICAgIHg6IFtdLFxyXG4gICAgICAgICAgICB5OiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuc2l6ZS54OyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5pbmRleE1hcHBpbmcueFtpXSA9IGk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXhNYXBwaW5nLnhbaSArIHRoaXMuc2l6ZS54XSA9IGk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLnNpemUueTsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXhNYXBwaW5nLnlbaV0gPSBpO1xyXG4gICAgICAgICAgICB0aGlzLmluZGV4TWFwcGluZy55W2kgKyB0aGlzLnNpemUueV0gPSBpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRhdGFbKHRoaXMuaW5kZXhNYXBwaW5nLnlbeSArIHRoaXMuc2l6ZS55XSkgKiB0aGlzLnNpemUueCArIHRoaXMuaW5kZXhNYXBwaW5nLnhbeCArIHRoaXMuc2l6ZS54XV07XHJcbn07XHJcblxyXG4vKipcclxuICogU2V0cyBhIGdpdmVuIHBpeGVsIHBvc2l0aW9uIGluIHRoZSBpbWFnZVxyXG4gKiBAcGFyYW0geCB7TnVtYmVyfSBUaGUgeC1wb3NpdGlvblxyXG4gKiBAcGFyYW0geSB7TnVtYmVyfSBUaGUgeS1wb3NpdGlvblxyXG4gKiBAcGFyYW0gdmFsdWUge051bWJlcn0gVGhlIGdyYXlzY2FsZSB2YWx1ZSB0byBzZXRcclxuICogQHJldHVybnMge0ltYWdlV3JhcHBlcn0gVGhlIEltYWdlIGl0c2VsZiAoZm9yIHBvc3NpYmxlIGNoYWluaW5nKVxyXG4gKi9cclxuSW1hZ2VXcmFwcGVyLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbih4LCB5LCB2YWx1ZSkge1xyXG4gICAgdGhpcy5kYXRhW3kgKiB0aGlzLnNpemUueCArIHhdID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBTZXRzIHRoZSBib3JkZXIgb2YgdGhlIGltYWdlICgxIHBpeGVsKSB0byB6ZXJvXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIucHJvdG90eXBlLnplcm9Cb3JkZXIgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBpLCB3aWR0aCA9IHRoaXMuc2l6ZS54LCBoZWlnaHQgPSB0aGlzLnNpemUueSwgZGF0YSA9IHRoaXMuZGF0YTtcclxuICAgIGZvciAoIGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xyXG4gICAgICAgIGRhdGFbaV0gPSBkYXRhWyhoZWlnaHQgLSAxKSAqIHdpZHRoICsgaV0gPSAwO1xyXG4gICAgfVxyXG4gICAgZm9yICggaSA9IDE7IGkgPCBoZWlnaHQgLSAxOyBpKyspIHtcclxuICAgICAgICBkYXRhW2kgKiB3aWR0aF0gPSBkYXRhW2kgKiB3aWR0aCArICh3aWR0aCAtIDEpXSA9IDA7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vKipcclxuICogSW52ZXJ0cyBhIGJpbmFyeSBpbWFnZSBpbiBwbGFjZVxyXG4gKi9cclxuSW1hZ2VXcmFwcGVyLnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5kYXRhLCBsZW5ndGggPSBkYXRhLmxlbmd0aDtcclxuXHJcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcclxuICAgICAgICBkYXRhW2xlbmd0aF0gPSBkYXRhW2xlbmd0aF0gPyAwIDogMTtcclxuICAgIH1cclxufTtcclxuXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuY29udm9sdmUgPSBmdW5jdGlvbihrZXJuZWwpIHtcclxuICAgIHZhciB4LCB5LCBreCwga3ksIGtTaXplID0gKGtlcm5lbC5sZW5ndGggLyAyKSB8IDAsIGFjY3UgPSAwO1xyXG4gICAgZm9yICggeSA9IDA7IHkgPCB0aGlzLnNpemUueTsgeSsrKSB7XHJcbiAgICAgICAgZm9yICggeCA9IDA7IHggPCB0aGlzLnNpemUueDsgeCsrKSB7XHJcbiAgICAgICAgICAgIGFjY3UgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKCBreSA9IC1rU2l6ZTsga3kgPD0ga1NpemU7IGt5KyspIHtcclxuICAgICAgICAgICAgICAgIGZvciAoIGt4ID0gLWtTaXplOyBreCA8PSBrU2l6ZTsga3grKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjY3UgKz0ga2VybmVsW2t5ICsga1NpemVdW2t4ICsga1NpemVdICogdGhpcy5nZXRTYWZlKHggKyBreCwgeSArIGt5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRhdGFbeSAqIHRoaXMuc2l6ZS54ICsgeF0gPSBhY2N1O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUubW9tZW50cyA9IGZ1bmN0aW9uKGxhYmVsY291bnQpIHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5kYXRhLFxyXG4gICAgICAgIHgsXHJcbiAgICAgICAgeSxcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLnNpemUueSxcclxuICAgICAgICB3aWR0aCA9IHRoaXMuc2l6ZS54LFxyXG4gICAgICAgIHZhbCxcclxuICAgICAgICB5c3EsXHJcbiAgICAgICAgbGFiZWxzdW0gPSBbXSxcclxuICAgICAgICBpLFxyXG4gICAgICAgIGxhYmVsLFxyXG4gICAgICAgIG11MTEsXHJcbiAgICAgICAgbXUwMixcclxuICAgICAgICBtdTIwLFxyXG4gICAgICAgIHhfLFxyXG4gICAgICAgIHlfLFxyXG4gICAgICAgIHRtcCxcclxuICAgICAgICByZXN1bHQgPSBbXSxcclxuICAgICAgICBQSSA9IE1hdGguUEksXHJcbiAgICAgICAgUElfNCA9IFBJIC8gNDtcclxuXHJcbiAgICBpZiAobGFiZWxjb3VudCA8PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IGxhYmVsY291bnQ7IGkrKykge1xyXG4gICAgICAgIGxhYmVsc3VtW2ldID0ge1xyXG4gICAgICAgICAgICBtMDA6IDAsXHJcbiAgICAgICAgICAgIG0wMTogMCxcclxuICAgICAgICAgICAgbTEwOiAwLFxyXG4gICAgICAgICAgICBtMTE6IDAsXHJcbiAgICAgICAgICAgIG0wMjogMCxcclxuICAgICAgICAgICAgbTIwOiAwLFxyXG4gICAgICAgICAgICB0aGV0YTogMCxcclxuICAgICAgICAgICAgcmFkOiAwXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XHJcbiAgICAgICAgeXNxID0geSAqIHk7XHJcbiAgICAgICAgZm9yICggeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XHJcbiAgICAgICAgICAgIHZhbCA9IGRhdGFbeSAqIHdpZHRoICsgeF07XHJcbiAgICAgICAgICAgIGlmICh2YWwgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IGxhYmVsc3VtW3ZhbCAtIDFdO1xyXG4gICAgICAgICAgICAgICAgbGFiZWwubTAwICs9IDE7XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5tMDEgKz0geTtcclxuICAgICAgICAgICAgICAgIGxhYmVsLm0xMCArPSB4O1xyXG4gICAgICAgICAgICAgICAgbGFiZWwubTExICs9IHggKiB5O1xyXG4gICAgICAgICAgICAgICAgbGFiZWwubTAyICs9IHlzcTtcclxuICAgICAgICAgICAgICAgIGxhYmVsLm0yMCArPSB4ICogeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IGxhYmVsY291bnQ7IGkrKykge1xyXG4gICAgICAgIGxhYmVsID0gbGFiZWxzdW1baV07XHJcbiAgICAgICAgaWYgKCFpc05hTihsYWJlbC5tMDApICYmIGxhYmVsLm0wMCAhPT0gMCkge1xyXG4gICAgICAgICAgICB4XyA9IGxhYmVsLm0xMCAvIGxhYmVsLm0wMDtcclxuICAgICAgICAgICAgeV8gPSBsYWJlbC5tMDEgLyBsYWJlbC5tMDA7XHJcbiAgICAgICAgICAgIG11MTEgPSBsYWJlbC5tMTEgLyBsYWJlbC5tMDAgLSB4XyAqIHlfO1xyXG4gICAgICAgICAgICBtdTAyID0gbGFiZWwubTAyIC8gbGFiZWwubTAwIC0geV8gKiB5XztcclxuICAgICAgICAgICAgbXUyMCA9IGxhYmVsLm0yMCAvIGxhYmVsLm0wMCAtIHhfICogeF87XHJcbiAgICAgICAgICAgIHRtcCA9IChtdTAyIC0gbXUyMCkgLyAoMiAqIG11MTEpO1xyXG4gICAgICAgICAgICB0bXAgPSAwLjUgKiBNYXRoLmF0YW4odG1wKSArIChtdTExID49IDAgPyBQSV80IDogLVBJXzQgKSArIFBJO1xyXG4gICAgICAgICAgICBsYWJlbC50aGV0YSA9ICh0bXAgKiAxODAgLyBQSSArIDkwKSAlIDE4MCAtIDkwO1xyXG4gICAgICAgICAgICBpZiAobGFiZWwudGhldGEgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbC50aGV0YSArPSAxODA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGFiZWwucmFkID0gdG1wID4gUEkgPyB0bXAgLSBQSSA6IHRtcDtcclxuICAgICAgICAgICAgbGFiZWwudmVjID0gdmVjMi5jbG9uZShbTWF0aC5jb3ModG1wKSwgTWF0aC5zaW4odG1wKV0pO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChsYWJlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG4vKipcclxuICogRGlzcGxheXMgdGhlIHtJbWFnZVdyYXBwZXJ9IGluIGEgZ2l2ZW4gY2FudmFzXHJcbiAqIEBwYXJhbSBjYW52YXMge0NhbnZhc30gVGhlIGNhbnZhcyBlbGVtZW50IHRvIHdyaXRlIHRvXHJcbiAqIEBwYXJhbSBzY2FsZSB7TnVtYmVyfSBTY2FsZSB3aGljaCBpcyBhcHBsaWVkIHRvIGVhY2ggcGl4ZWwtdmFsdWVcclxuICovXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uKGNhbnZhcywgc2NhbGUpIHtcclxuICAgIHZhciBjdHgsXHJcbiAgICAgICAgZnJhbWUsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBjdXJyZW50LFxyXG4gICAgICAgIHBpeGVsLFxyXG4gICAgICAgIHgsXHJcbiAgICAgICAgeTtcclxuXHJcbiAgICBpZiAoIXNjYWxlKSB7XHJcbiAgICAgICAgc2NhbGUgPSAxLjA7XHJcbiAgICB9XHJcbiAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHRoaXMuc2l6ZS54O1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHRoaXMuc2l6ZS55O1xyXG4gICAgZnJhbWUgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcbiAgICBkYXRhID0gZnJhbWUuZGF0YTtcclxuICAgIGN1cnJlbnQgPSAwO1xyXG4gICAgZm9yICh5ID0gMDsgeSA8IHRoaXMuc2l6ZS55OyB5KyspIHtcclxuICAgICAgICBmb3IgKHggPSAwOyB4IDwgdGhpcy5zaXplLng7IHgrKykge1xyXG4gICAgICAgICAgICBwaXhlbCA9IHkgKiB0aGlzLnNpemUueCArIHg7XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSB0aGlzLmdldCh4LCB5KSAqIHNjYWxlO1xyXG4gICAgICAgICAgICBkYXRhW3BpeGVsICogNCArIDBdID0gY3VycmVudDtcclxuICAgICAgICAgICAgZGF0YVtwaXhlbCAqIDQgKyAxXSA9IGN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGRhdGFbcGl4ZWwgKiA0ICsgMl0gPSBjdXJyZW50O1xyXG4gICAgICAgICAgICBkYXRhW3BpeGVsICogNCArIDNdID0gMjU1O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vZnJhbWUuZGF0YSA9IGRhdGE7XHJcbiAgICBjdHgucHV0SW1hZ2VEYXRhKGZyYW1lLCAwLCAwKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBEaXNwbGF5cyB0aGUge1N1YkltYWdlfSBpbiBhIGdpdmVuIGNhbnZhc1xyXG4gKiBAcGFyYW0gY2FudmFzIHtDYW52YXN9IFRoZSBjYW52YXMgZWxlbWVudCB0byB3cml0ZSB0b1xyXG4gKiBAcGFyYW0gc2NhbGUge051bWJlcn0gU2NhbGUgd2hpY2ggaXMgYXBwbGllZCB0byBlYWNoIHBpeGVsLXZhbHVlXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIucHJvdG90eXBlLm92ZXJsYXkgPSBmdW5jdGlvbihjYW52YXMsIHNjYWxlLCBmcm9tKSB7XHJcbiAgICBpZiAoIXNjYWxlIHx8IHNjYWxlIDwgMCB8fCBzY2FsZSA+IDM2MCkge1xyXG4gICAgICAgIHNjYWxlID0gMzYwO1xyXG4gICAgfVxyXG4gICAgdmFyIGhzdiA9IFswLCAxLCAxXTtcclxuICAgIHZhciByZ2IgPSBbMCwgMCwgMF07XHJcbiAgICB2YXIgd2hpdGVSZ2IgPSBbMjU1LCAyNTUsIDI1NV07XHJcbiAgICB2YXIgYmxhY2tSZ2IgPSBbMCwgMCwgMF07XHJcbiAgICB2YXIgcmVzdWx0ID0gW107XHJcbiAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICB2YXIgZnJhbWUgPSBjdHguZ2V0SW1hZ2VEYXRhKGZyb20ueCwgZnJvbS55LCB0aGlzLnNpemUueCwgdGhpcy5zaXplLnkpO1xyXG4gICAgdmFyIGRhdGEgPSBmcmFtZS5kYXRhO1xyXG4gICAgdmFyIGxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGg7XHJcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcclxuICAgICAgICBoc3ZbMF0gPSB0aGlzLmRhdGFbbGVuZ3RoXSAqIHNjYWxlO1xyXG4gICAgICAgIHJlc3VsdCA9IGhzdlswXSA8PSAwID8gd2hpdGVSZ2IgOiBoc3ZbMF0gPj0gMzYwID8gYmxhY2tSZ2IgOiBoc3YycmdiKGhzdiwgcmdiKTtcclxuICAgICAgICBkYXRhW2xlbmd0aCAqIDQgKyAwXSA9IHJlc3VsdFswXTtcclxuICAgICAgICBkYXRhW2xlbmd0aCAqIDQgKyAxXSA9IHJlc3VsdFsxXTtcclxuICAgICAgICBkYXRhW2xlbmd0aCAqIDQgKyAyXSA9IHJlc3VsdFsyXTtcclxuICAgICAgICBkYXRhW2xlbmd0aCAqIDQgKyAzXSA9IDI1NTtcclxuICAgIH1cclxuICAgIGN0eC5wdXRJbWFnZURhdGEoZnJhbWUsIGZyb20ueCwgZnJvbS55KTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEltYWdlV3JhcHBlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tbW9uL2ltYWdlX3dyYXBwZXIuanNcbiAqKi8iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBhcnJheVsrK2luZGV4XTtcbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlSZWR1Y2U7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2FycmF5UmVkdWNlLmpzXG4gKiogbW9kdWxlIGlkID0gMTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBjb3B5T2JqZWN0V2l0aCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3RXaXRoJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3RXaXRoKHNvdXJjZSwgcHJvcHMsIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weU9iamVjdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY29weU9iamVjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDIwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgaG9zdCBvYmplY3QgaW4gSUUgPCA5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgaG9zdCBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNIb3N0T2JqZWN0KHZhbHVlKSB7XG4gIC8vIE1hbnkgaG9zdCBvYmplY3RzIGFyZSBgT2JqZWN0YCBvYmplY3RzIHRoYXQgY2FuIGNvZXJjZSB0byBzdHJpbmdzXG4gIC8vIGRlc3BpdGUgaGF2aW5nIGltcHJvcGVybHkgZGVmaW5lZCBgdG9TdHJpbmdgIG1ldGhvZHMuXG4gIHZhciByZXN1bHQgPSBmYWxzZTtcbiAgaWYgKHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gISEodmFsdWUgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSG9zdE9iamVjdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faXNIb3N0T2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YWx1ZSA9ICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHwgcmVJc1VpbnQudGVzdCh2YWx1ZSkpID8gK3ZhbHVlIDogLTE7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcbiAgcmV0dXJuIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbmRleDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faXNJbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzXG4gKiogbW9kdWxlIGlkID0gMjNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIC8vIFNhZmFyaSA4LjEgaW5jb3JyZWN0bHkgbWFrZXMgYGFyZ3VtZW50cy5jYWxsZWVgIGVudW1lcmFibGUgaW4gc3RyaWN0IG1vZGUuXG4gIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgKCFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgfHwgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gYXJnc1RhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNBcmd1bWVudHMuanNcbiAqKiBtb2R1bGUgaWQgPSAyNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGdldExlbmd0aCA9IHJlcXVpcmUoJy4vX2dldExlbmd0aCcpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKGdldExlbmd0aCh2YWx1ZSkpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc0FycmF5TGlrZS5qc1xuICoqIG1vZHVsZSBpZCA9IDI1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2VPYmplY3Q7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAyNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBpcyBsb29zZWx5IGJhc2VkIG9uIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNMZW5ndGguanNcbiAqKiBtb2R1bGUgaWQgPSAyN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGUgZGVzdGluYXRpb25cbiAqIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZSBza2lwcGVkIGlmIGFcbiAqIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBtZXJnZWRcbiAqIHJlY3Vyc2l2ZWx5Lk90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5IGFzc2lnbm1lbnQuXG4gKiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnQgc291cmNlc1xuICogb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0ge1xuICogICAnZGF0YSc6IFt7ICd1c2VyJzogJ2Jhcm5leScgfSwgeyAndXNlcic6ICdmcmVkJyB9XVxuICogfTtcbiAqXG4gKiB2YXIgYWdlcyA9IHtcbiAqICAgJ2RhdGEnOiBbeyAnYWdlJzogMzYgfSwgeyAnYWdlJzogNDAgfV1cbiAqIH07XG4gKlxuICogXy5tZXJnZSh1c2VycywgYWdlcyk7XG4gKiAvLyA9PiB7ICdkYXRhJzogW3sgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sIHsgJ3VzZXInOiAnZnJlZCcsICdhZ2UnOiA0MCB9XSB9XG4gKi9cbnZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL21lcmdlLmpzXG4gKiogbW9kdWxlIGlkID0gMjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxyXG4gKiBodHRwOi8vd3d3LmNvZGVwcm9qZWN0LmNvbS9UaXBzLzQwNzE3Mi9Db25uZWN0ZWQtQ29tcG9uZW50LUxhYmVsaW5nLWFuZC1WZWN0b3JpemF0aW9uXHJcbiAqL1xyXG52YXIgVHJhY2VyID0ge1xyXG4gICAgc2VhcmNoRGlyZWN0aW9uczogW1swLCAxXSwgWzEsIDFdLCBbMSwgMF0sIFsxLCAtMV0sIFswLCAtMV0sIFstMSwgLTFdLCBbLTEsIDBdLCBbLTEsIDFdXSxcclxuICAgIGNyZWF0ZTogZnVuY3Rpb24oaW1hZ2VXcmFwcGVyLCBsYWJlbFdyYXBwZXIpIHtcclxuICAgICAgICB2YXIgaW1hZ2VEYXRhID0gaW1hZ2VXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgICAgIGxhYmVsRGF0YSA9IGxhYmVsV3JhcHBlci5kYXRhLFxyXG4gICAgICAgICAgICBzZWFyY2hEaXJlY3Rpb25zID0gdGhpcy5zZWFyY2hEaXJlY3Rpb25zLFxyXG4gICAgICAgICAgICB3aWR0aCA9IGltYWdlV3JhcHBlci5zaXplLngsXHJcbiAgICAgICAgICAgIHBvcztcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gdHJhY2UoY3VycmVudCwgY29sb3IsIGxhYmVsLCBlZGdlbGFiZWwpIHtcclxuICAgICAgICAgICAgdmFyIGksXHJcbiAgICAgICAgICAgICAgICB5LFxyXG4gICAgICAgICAgICAgICAgeDtcclxuXHJcbiAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgNzsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB5ID0gY3VycmVudC5jeSArIHNlYXJjaERpcmVjdGlvbnNbY3VycmVudC5kaXJdWzBdO1xyXG4gICAgICAgICAgICAgICAgeCA9IGN1cnJlbnQuY3ggKyBzZWFyY2hEaXJlY3Rpb25zW2N1cnJlbnQuZGlyXVsxXTtcclxuICAgICAgICAgICAgICAgIHBvcyA9IHkgKiB3aWR0aCArIHg7XHJcbiAgICAgICAgICAgICAgICBpZiAoKGltYWdlRGF0YVtwb3NdID09PSBjb2xvcikgJiYgKChsYWJlbERhdGFbcG9zXSA9PT0gMCkgfHwgKGxhYmVsRGF0YVtwb3NdID09PSBsYWJlbCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxEYXRhW3Bvc10gPSBsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmN5ID0geTtcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmN4ID0geDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsRGF0YVtwb3NdID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRGF0YVtwb3NdID0gZWRnZWxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50LmRpciA9IChjdXJyZW50LmRpciArIDEpICUgODtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiB2ZXJ0ZXgyRCh4LCB5LCBkaXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGRpcjogZGlyLFxyXG4gICAgICAgICAgICAgICAgeDogeCxcclxuICAgICAgICAgICAgICAgIHk6IHksXHJcbiAgICAgICAgICAgICAgICBuZXh0OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcHJldjogbnVsbFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gY29udG91clRyYWNpbmcoc3ksIHN4LCBsYWJlbCwgY29sb3IsIGVkZ2VsYWJlbCkge1xyXG4gICAgICAgICAgICB2YXIgRnYgPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgQ3YsXHJcbiAgICAgICAgICAgICAgICBQLFxyXG4gICAgICAgICAgICAgICAgbGRpcixcclxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3g6IHN4LFxyXG4gICAgICAgICAgICAgICAgICAgIGN5OiBzeSxcclxuICAgICAgICAgICAgICAgICAgICBkaXI6IDBcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBpZiAodHJhY2UoY3VycmVudCwgY29sb3IsIGxhYmVsLCBlZGdlbGFiZWwpKSB7XHJcbiAgICAgICAgICAgICAgICBGdiA9IHZlcnRleDJEKHN4LCBzeSwgY3VycmVudC5kaXIpO1xyXG4gICAgICAgICAgICAgICAgQ3YgPSBGdjtcclxuICAgICAgICAgICAgICAgIGxkaXIgPSBjdXJyZW50LmRpcjtcclxuICAgICAgICAgICAgICAgIFAgPSB2ZXJ0ZXgyRChjdXJyZW50LmN4LCBjdXJyZW50LmN5LCAwKTtcclxuICAgICAgICAgICAgICAgIFAucHJldiA9IEN2O1xyXG4gICAgICAgICAgICAgICAgQ3YubmV4dCA9IFA7XHJcbiAgICAgICAgICAgICAgICBQLm5leHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgQ3YgPSBQO1xyXG4gICAgICAgICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuZGlyID0gKGN1cnJlbnQuZGlyICsgNikgJSA4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNlKGN1cnJlbnQsIGNvbG9yLCBsYWJlbCwgZWRnZWxhYmVsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGRpciAhPT0gY3VycmVudC5kaXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3YuZGlyID0gY3VycmVudC5kaXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFAgPSB2ZXJ0ZXgyRChjdXJyZW50LmN4LCBjdXJyZW50LmN5LCAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUC5wcmV2ID0gQ3Y7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN2Lm5leHQgPSBQO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBQLm5leHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdiA9IFA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3YuZGlyID0gbGRpcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3YueCA9IGN1cnJlbnQuY3g7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN2LnkgPSBjdXJyZW50LmN5O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZGlyID0gY3VycmVudC5kaXI7XHJcbiAgICAgICAgICAgICAgICB9IHdoaWxlIChjdXJyZW50LmN4ICE9PSBzeCB8fCBjdXJyZW50LmN5ICE9PSBzeSk7XHJcbiAgICAgICAgICAgICAgICBGdi5wcmV2ID0gQ3YucHJldjtcclxuICAgICAgICAgICAgICAgIEN2LnByZXYubmV4dCA9IEZ2O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBGdjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRyYWNlOiBmdW5jdGlvbihjdXJyZW50LCBjb2xvciwgbGFiZWwsIGVkZ2VsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYWNlKGN1cnJlbnQsIGNvbG9yLCBsYWJlbCwgZWRnZWxhYmVsKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29udG91clRyYWNpbmc6IGZ1bmN0aW9uKHN5LCBzeCwgbGFiZWwsIGNvbG9yLCBlZGdlbGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250b3VyVHJhY2luZyhzeSwgc3gsIGxhYmVsLCBjb2xvciwgZWRnZWxhYmVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCAoVHJhY2VyKTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvbG9jYXRvci90cmFjZXIuanNcbiAqKi8iLCJpbXBvcnQgQmFyY29kZVJlYWRlciBmcm9tICcuL2JhcmNvZGVfcmVhZGVyJztcclxuaW1wb3J0IEFycmF5SGVscGVyIGZyb20gJy4uL2NvbW1vbi9hcnJheV9oZWxwZXInO1xyXG5cclxuZnVuY3Rpb24gQ29kZTM5UmVhZGVyKCkge1xyXG4gICAgQmFyY29kZVJlYWRlci5jYWxsKHRoaXMpO1xyXG59XHJcblxyXG52YXIgcHJvcGVydGllcyA9IHtcclxuICAgIEFMUEhBQkVUSF9TVFJJTkc6IHt2YWx1ZTogXCIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotLiAqJC8rJVwifSxcclxuICAgIEFMUEhBQkVUOiB7dmFsdWU6IFs0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LFxyXG4gICAgICAgIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDQ1LCA0NiwgMzIsIDQyLCAzNiwgNDcsIDQzLCAzN119LFxyXG4gICAgQ0hBUkFDVEVSX0VOQ09ESU5HUzoge3ZhbHVlOiBbMHgwMzQsIDB4MTIxLCAweDA2MSwgMHgxNjAsIDB4MDMxLCAweDEzMCwgMHgwNzAsIDB4MDI1LCAweDEyNCwgMHgwNjQsIDB4MTA5LCAweDA0OSxcclxuICAgICAgICAweDE0OCwgMHgwMTksIDB4MTE4LCAweDA1OCwgMHgwMEQsIDB4MTBDLCAweDA0QywgMHgwMUMsIDB4MTAzLCAweDA0MywgMHgxNDIsIDB4MDEzLCAweDExMiwgMHgwNTIsIDB4MDA3LCAweDEwNixcclxuICAgICAgICAweDA0NiwgMHgwMTYsIDB4MTgxLCAweDBDMSwgMHgxQzAsIDB4MDkxLCAweDE5MCwgMHgwRDAsIDB4MDg1LCAweDE4NCwgMHgwQzQsIDB4MDk0LCAweDBBOCwgMHgwQTIsIDB4MDhBLCAweDAyQVxyXG4gICAgXX0sXHJcbiAgICBBU1RFUklTSzoge3ZhbHVlOiAweDA5NH0sXHJcbiAgICBGT1JNQVQ6IHt2YWx1ZTogXCJjb2RlXzM5XCIsIHdyaXRlYWJsZTogZmFsc2V9XHJcbn07XHJcblxyXG5Db2RlMzlSZWFkZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCYXJjb2RlUmVhZGVyLnByb3RvdHlwZSwgcHJvcGVydGllcyk7XHJcbkNvZGUzOVJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb2RlMzlSZWFkZXI7XHJcblxyXG5Db2RlMzlSZWFkZXIucHJvdG90eXBlLl90b0NvdW50ZXJzID0gZnVuY3Rpb24oc3RhcnQsIGNvdW50ZXIpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICBudW1Db3VudGVycyA9IGNvdW50ZXIubGVuZ3RoLFxyXG4gICAgICAgIGVuZCA9IHNlbGYuX3Jvdy5sZW5ndGgsXHJcbiAgICAgICAgaXNXaGl0ZSA9ICFzZWxmLl9yb3dbc3RhcnRdLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgY291bnRlclBvcyA9IDA7XHJcblxyXG4gICAgQXJyYXlIZWxwZXIuaW5pdChjb3VudGVyLCAwKTtcclxuXHJcbiAgICBmb3IgKCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xyXG4gICAgICAgIGlmIChzZWxmLl9yb3dbaV0gXiBpc1doaXRlKSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10rKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb3VudGVyUG9zKys7XHJcbiAgICAgICAgICAgIGlmIChjb3VudGVyUG9zID09PSBudW1Db3VudGVycykge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY291bnRlcjtcclxufTtcclxuXHJcbkNvZGUzOVJlYWRlci5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIGNvdW50ZXJzID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLFxyXG4gICAgICAgIHJlc3VsdCA9IFtdLFxyXG4gICAgICAgIHN0YXJ0ID0gc2VsZi5fZmluZFN0YXJ0KCksXHJcbiAgICAgICAgZGVjb2RlZENoYXIsXHJcbiAgICAgICAgbGFzdFN0YXJ0LFxyXG4gICAgICAgIHBhdHRlcm4sXHJcbiAgICAgICAgbmV4dFN0YXJ0O1xyXG5cclxuICAgIGlmICghc3RhcnQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIG5leHRTdGFydCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93LCBzdGFydC5lbmQpO1xyXG5cclxuICAgIGRvIHtcclxuICAgICAgICBjb3VudGVycyA9IHNlbGYuX3RvQ291bnRlcnMobmV4dFN0YXJ0LCBjb3VudGVycyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHNlbGYuX3RvUGF0dGVybihjb3VudGVycyk7XHJcbiAgICAgICAgaWYgKHBhdHRlcm4gPCAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWNvZGVkQ2hhciA9IHNlbGYuX3BhdHRlcm5Ub0NoYXIocGF0dGVybik7XHJcbiAgICAgICAgaWYgKGRlY29kZWRDaGFyIDwgMCl7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQucHVzaChkZWNvZGVkQ2hhcik7XHJcbiAgICAgICAgbGFzdFN0YXJ0ID0gbmV4dFN0YXJ0O1xyXG4gICAgICAgIG5leHRTdGFydCArPSBBcnJheUhlbHBlci5zdW0oY291bnRlcnMpO1xyXG4gICAgICAgIG5leHRTdGFydCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93LCBuZXh0U3RhcnQpO1xyXG4gICAgfSB3aGlsZSAoZGVjb2RlZENoYXIgIT09ICcqJyk7XHJcbiAgICByZXN1bHQucG9wKCk7XHJcblxyXG4gICAgaWYgKCFyZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFzZWxmLl92ZXJpZnlUcmFpbGluZ1doaXRlc3BhY2UobGFzdFN0YXJ0LCBuZXh0U3RhcnQsIGNvdW50ZXJzKSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogcmVzdWx0LmpvaW4oXCJcIiksXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0LnN0YXJ0LFxyXG4gICAgICAgIGVuZDogbmV4dFN0YXJ0LFxyXG4gICAgICAgIHN0YXJ0SW5mbzogc3RhcnQsXHJcbiAgICAgICAgZGVjb2RlZENvZGVzOiByZXN1bHRcclxuICAgIH07XHJcbn07XHJcblxyXG5Db2RlMzlSZWFkZXIucHJvdG90eXBlLl92ZXJpZnlUcmFpbGluZ1doaXRlc3BhY2UgPSBmdW5jdGlvbihsYXN0U3RhcnQsIG5leHRTdGFydCwgY291bnRlcnMpIHtcclxuICAgIHZhciB0cmFpbGluZ1doaXRlc3BhY2VFbmQsXHJcbiAgICAgICAgcGF0dGVyblNpemUgPSBBcnJheUhlbHBlci5zdW0oY291bnRlcnMpO1xyXG5cclxuICAgIHRyYWlsaW5nV2hpdGVzcGFjZUVuZCA9IG5leHRTdGFydCAtIGxhc3RTdGFydCAtIHBhdHRlcm5TaXplO1xyXG4gICAgaWYgKCh0cmFpbGluZ1doaXRlc3BhY2VFbmQgKiAzKSA+PSBwYXR0ZXJuU2l6ZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuQ29kZTM5UmVhZGVyLnByb3RvdHlwZS5fcGF0dGVyblRvQ2hhciA9IGZ1bmN0aW9uKHBhdHRlcm4pIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLkNIQVJBQ1RFUl9FTkNPRElOR1MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoc2VsZi5DSEFSQUNURVJfRU5DT0RJTkdTW2ldID09PSBwYXR0ZXJuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHNlbGYuQUxQSEFCRVRbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxufTtcclxuXHJcbkNvZGUzOVJlYWRlci5wcm90b3R5cGUuX2ZpbmROZXh0V2lkdGggPSBmdW5jdGlvbihjb3VudGVycywgY3VycmVudCkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgbWluV2lkdGggPSBOdW1iZXIuTUFYX1ZBTFVFO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChjb3VudGVyc1tpXSA8IG1pbldpZHRoICYmIGNvdW50ZXJzW2ldID4gY3VycmVudCkge1xyXG4gICAgICAgICAgICBtaW5XaWR0aCA9IGNvdW50ZXJzW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWluV2lkdGg7XHJcbn07XHJcblxyXG5Db2RlMzlSZWFkZXIucHJvdG90eXBlLl90b1BhdHRlcm4gPSBmdW5jdGlvbihjb3VudGVycykge1xyXG4gICAgdmFyIG51bUNvdW50ZXJzID0gY291bnRlcnMubGVuZ3RoLFxyXG4gICAgICAgIG1heE5hcnJvd1dpZHRoID0gMCxcclxuICAgICAgICBudW1XaWRlQmFycyA9IG51bUNvdW50ZXJzLFxyXG4gICAgICAgIHdpZGVCYXJXaWR0aCA9IDAsXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgcGF0dGVybixcclxuICAgICAgICBpO1xyXG5cclxuICAgIHdoaWxlIChudW1XaWRlQmFycyA+IDMpIHtcclxuICAgICAgICBtYXhOYXJyb3dXaWR0aCA9IHNlbGYuX2ZpbmROZXh0V2lkdGgoY291bnRlcnMsIG1heE5hcnJvd1dpZHRoKTtcclxuICAgICAgICBudW1XaWRlQmFycyA9IDA7XHJcbiAgICAgICAgcGF0dGVybiA9IDA7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bUNvdW50ZXJzOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNvdW50ZXJzW2ldID4gbWF4TmFycm93V2lkdGgpIHtcclxuICAgICAgICAgICAgICAgIHBhdHRlcm4gfD0gMSA8PCAobnVtQ291bnRlcnMgLSAxIC0gaSk7XHJcbiAgICAgICAgICAgICAgICBudW1XaWRlQmFycysrO1xyXG4gICAgICAgICAgICAgICAgd2lkZUJhcldpZHRoICs9IGNvdW50ZXJzW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobnVtV2lkZUJhcnMgPT09IDMpIHtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bUNvdW50ZXJzICYmIG51bVdpZGVCYXJzID4gMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY291bnRlcnNbaV0gPiBtYXhOYXJyb3dXaWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG51bVdpZGVCYXJzLS07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChjb3VudGVyc1tpXSAqIDIpID49IHdpZGVCYXJXaWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxufTtcclxuXHJcbkNvZGUzOVJlYWRlci5wcm90b3R5cGUuX2ZpbmRTdGFydCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIG9mZnNldCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93KSxcclxuICAgICAgICBwYXR0ZXJuU3RhcnQgPSBvZmZzZXQsXHJcbiAgICAgICAgY291bnRlciA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSxcclxuICAgICAgICBjb3VudGVyUG9zID0gMCxcclxuICAgICAgICBpc1doaXRlID0gZmFsc2UsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBqLFxyXG4gICAgICAgIHdoaXRlU3BhY2VNdXN0U3RhcnQ7XHJcblxyXG4gICAgZm9yICggaSA9IG9mZnNldDsgaSA8IHNlbGYuX3Jvdy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzZWxmLl9yb3dbaV0gXiBpc1doaXRlKSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10rKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoY291bnRlclBvcyA9PT0gY291bnRlci5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmaW5kIHN0YXJ0IHBhdHRlcm5cclxuICAgICAgICAgICAgICAgIGlmIChzZWxmLl90b1BhdHRlcm4oY291bnRlcikgPT09IHNlbGYuQVNURVJJU0spIHtcclxuICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlTXVzdFN0YXJ0ID0gTWF0aC5mbG9vcihNYXRoLm1heCgwLCBwYXR0ZXJuU3RhcnQgLSAoKGkgLSBwYXR0ZXJuU3RhcnQpIC8gNCkpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fbWF0Y2hSYW5nZSh3aGl0ZVNwYWNlTXVzdFN0YXJ0LCBwYXR0ZXJuU3RhcnQsIDApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcGF0dGVyblN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHBhdHRlcm5TdGFydCArPSBjb3VudGVyWzBdICsgY291bnRlclsxXTtcclxuICAgICAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgNzsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcltqXSA9IGNvdW50ZXJbaiArIDJdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY291bnRlcls3XSA9IDA7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyWzhdID0gMDtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MtLTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQ29kZTM5UmVhZGVyO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWFkZXIvY29kZV8zOV9yZWFkZXIuanNcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IGRvdFxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIGRvdCBwcm9kdWN0IG9mIHR3byB2ZWMyJ3NcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IGEgdGhlIGZpcnN0IG9wZXJhbmRcbiAqIEBwYXJhbSB7dmVjMn0gYiB0aGUgc2Vjb25kIG9wZXJhbmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IGRvdCBwcm9kdWN0IG9mIGEgYW5kIGJcbiAqL1xuZnVuY3Rpb24gZG90KGEsIGIpIHtcbiAgICByZXR1cm4gYVswXSAqIGJbMF0gKyBhWzFdICogYlsxXVxufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2dsLXZlYzIvZG90LmpzXG4gKiogbW9kdWxlIGlkID0gMzFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBzdGFja0NsZWFyID0gcmVxdWlyZSgnLi9fc3RhY2tDbGVhcicpLFxuICAgIHN0YWNrRGVsZXRlID0gcmVxdWlyZSgnLi9fc3RhY2tEZWxldGUnKSxcbiAgICBzdGFja0dldCA9IHJlcXVpcmUoJy4vX3N0YWNrR2V0JyksXG4gICAgc3RhY2tIYXMgPSByZXF1aXJlKCcuL19zdGFja0hhcycpLFxuICAgIHN0YWNrU2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPyB2YWx1ZXMubGVuZ3RoIDogMDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gdmFsdWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBmdW5jdGlvbnMgdG8gdGhlIGBTdGFja2AgY2FjaGUuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YWNrO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19TdGFjay5qc1xuICoqIG1vZHVsZSBpZCA9IDMyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RWFjaChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUVhY2g7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2FycmF5RWFjaC5qc1xuICoqIG1vZHVsZSBpZCA9IDMzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAodHlwZW9mIGtleSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbk1lcmdlVmFsdWU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Fzc2lnbk1lcmdlVmFsdWUuanNcbiAqKiBtb2R1bGUgaWQgPSAzNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Fzc2lnblZhbHVlLmpzXG4gKiogbW9kdWxlIGlkID0gMzVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBhc3NvY2lhdGl2ZSBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jRGVsZXRlKGFycmF5LCBrZXkpIHtcbiAgdmFyIGluZGV4ID0gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBhcnJheS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgYXJyYXkucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0RlbGV0ZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYXNzb2NEZWxldGUuanNcbiAqKiBtb2R1bGUgaWQgPSAzNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIEdldHMgdGhlIGFzc29jaWF0aXZlIGFycmF5IHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGFzc29jR2V0KGFycmF5LCBrZXkpIHtcbiAgdmFyIGluZGV4ID0gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpO1xuICByZXR1cm4gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogYXJyYXlbaW5kZXhdWzFdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jR2V0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hc3NvY0dldC5qc1xuICoqIG1vZHVsZSBpZCA9IDM3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGFuIGFzc29jaWF0aXZlIGFycmF5IHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhc3NvY0hhcyhhcnJheSwga2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0hhcztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYXNzb2NIYXMuanNcbiAqKiBtb2R1bGUgaWQgPSAzOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKipcbiAqIFNldHMgdGhlIGFzc29jaWF0aXZlIGFycmF5IGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NTZXQoYXJyYXksIGtleSwgdmFsdWUpIHtcbiAgdmFyIGluZGV4ID0gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgYXJyYXkucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGFycmF5W2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NTZXQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Fzc29jU2V0LmpzXG4gKiogbW9kdWxlIGlkID0gMzlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVBcnJheUJ1ZmZlcjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY2xvbmVBcnJheUJ1ZmZlci5qc1xuICoqIG1vZHVsZSBpZCA9IDQwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheT1bXV0gVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIHRvLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlBcnJheShzb3VyY2UsIGFycmF5KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5QXJyYXk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2NvcHlBcnJheS5qc1xuICoqIG1vZHVsZSBpZCA9IDQxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGhhc2gsIGtleSkge1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gaGFzaFtrZXldICE9PSB1bmRlZmluZWQgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGhhc2gsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faGFzaEhhcy5qc1xuICoqIG1vZHVsZSBpZCA9IDQyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZVRpbWVzID0gcmVxdWlyZSgnLi9fYmFzZVRpbWVzJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzU3RyaW5nID0gcmVxdWlyZSgnLi9pc1N0cmluZycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgaW5kZXgga2V5cyBmb3IgYG9iamVjdGAgdmFsdWVzIG9mIGFycmF5cyxcbiAqIGBhcmd1bWVudHNgIG9iamVjdHMsIGFuZCBzdHJpbmdzLCBvdGhlcndpc2UgYG51bGxgIGlzIHJldHVybmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl8bnVsbH0gUmV0dXJucyBpbmRleCBrZXlzLCBlbHNlIGBudWxsYC5cbiAqL1xuZnVuY3Rpb24gaW5kZXhLZXlzKG9iamVjdCkge1xuICB2YXIgbGVuZ3RoID0gb2JqZWN0ID8gb2JqZWN0Lmxlbmd0aCA6IHVuZGVmaW5lZDtcbiAgaWYgKGlzTGVuZ3RoKGxlbmd0aCkgJiZcbiAgICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNTdHJpbmcob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKSkge1xuICAgIHJldHVybiBiYXNlVGltZXMobGVuZ3RoLCBTdHJpbmcpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluZGV4S2V5cztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faW5kZXhLZXlzLmpzXG4gKiogbW9kdWxlIGlkID0gNDNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9XG50eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9IHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZSBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShuZXcgVWludDhBcnJheSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkoW10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW29iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNUeXBlZEFycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gNDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBiYXNlSGFzID0gcmVxdWlyZSgnLi9fYmFzZUhhcycpLFxuICAgIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBpbmRleEtleXMgPSByZXF1aXJlKCcuL19pbmRleEtleXMnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpO1xuICBpZiAoIShpc1Byb3RvIHx8IGlzQXJyYXlMaWtlKG9iamVjdCkpKSB7XG4gICAgcmV0dXJuIGJhc2VLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIGluZGV4ZXMgPSBpbmRleEtleXMob2JqZWN0KSxcbiAgICAgIHNraXBJbmRleGVzID0gISFpbmRleGVzLFxuICAgICAgcmVzdWx0ID0gaW5kZXhlcyB8fCBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmIChiYXNlSGFzKG9iamVjdCwga2V5KSAmJlxuICAgICAgICAhKHNraXBJbmRleGVzICYmIChrZXkgPT0gJ2xlbmd0aCcgfHwgaXNJbmRleChrZXksIGxlbmd0aCkpKSAmJlxuICAgICAgICAhKGlzUHJvdG8gJiYga2V5ID09ICdjb25zdHJ1Y3RvcicpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gva2V5cy5qc1xuICoqIG1vZHVsZSBpZCA9IDQ1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSxcbiAgICBpbmRleEtleXMgPSByZXF1aXJlKCcuL19pbmRleEtleXMnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICBwcm9wcyA9IGJhc2VLZXlzSW4ob2JqZWN0KSxcbiAgICAgIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgaW5kZXhlcyA9IGluZGV4S2V5cyhvYmplY3QpLFxuICAgICAgc2tpcEluZGV4ZXMgPSAhIWluZGV4ZXMsXG4gICAgICByZXN1bHQgPSBpbmRleGVzIHx8IFtdLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcbiAgICBpZiAoIShza2lwSW5kZXhlcyAmJiAoa2V5ID09ICdsZW5ndGgnIHx8IGlzSW5kZXgoa2V5LCBsZW5ndGgpKSkgJiZcbiAgICAgICAgIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gva2V5c0luLmpzXG4gKiogbW9kdWxlIGlkID0gNDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5JyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAqIGNyZWF0ZWQgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBmcm9tIGBzdGFydGAgYW5kIGJleW9uZCBwcm92aWRlZCBhcyBhbiBhcnJheS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlIFtyZXN0IHBhcmFtZXRlcl0oaHR0cHM6Ly9tZG4uaW8vcmVzdF9wYXJhbWV0ZXJzKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBzYXkgPSBfLnJlc3QoZnVuY3Rpb24od2hhdCwgbmFtZXMpIHtcbiAqICAgcmV0dXJuIHdoYXQgKyAnICcgKyBfLmluaXRpYWwobmFtZXMpLmpvaW4oJywgJykgK1xuICogICAgIChfLnNpemUobmFtZXMpID4gMSA/ICcsICYgJyA6ICcnKSArIF8ubGFzdChuYW1lcyk7XG4gKiB9KTtcbiAqXG4gKiBzYXkoJ2hlbGxvJywgJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnKTtcbiAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAqL1xuZnVuY3Rpb24gcmVzdChmdW5jLCBzdGFydCkge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiB0b0ludGVnZXIoc3RhcnQpLCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBzd2l0Y2ggKHN0YXJ0KSB7XG4gICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJyYXkpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFycmF5KTtcbiAgICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcnJheSk7XG4gICAgfVxuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIGluZGV4ID0gLTE7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gYXJyYXk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVzdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9yZXN0LmpzXG4gKiogbW9kdWxlIGlkID0gNDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9kdWxlKSB7XHJcblx0aWYoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcclxuXHRcdG1vZHVsZS5kZXByZWNhdGUgPSBmdW5jdGlvbigpIHt9O1xyXG5cdFx0bW9kdWxlLnBhdGhzID0gW107XHJcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcclxuXHRcdG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xyXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJleHBvcnRzXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZS5lOyB9LFxyXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIG1vZHVsZS5lID0gdjsgfVxyXG5cdFx0fSk7XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImxvYWRlZFwiLCB7XHJcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcblx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtb2R1bGUubDsgfVxyXG5cdFx0fSk7XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZS5pOyB9XHJcblx0XHR9KTtcclxuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwgPSAxO1xyXG5cdH1cclxuXHRyZXR1cm4gbW9kdWxlO1xyXG59XHJcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzXG4gKiogbW9kdWxlIGlkID0gNDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsImltcG9ydCBUeXBlRGVmcyBmcm9tICcuL2NvbW1vbi90eXBlZGVmcyc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuaW1wb3J0IFdlYnJ0Y0FkYXB0ZXIgZnJvbSAnd2VicnRjLWFkYXB0ZXInOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXHJcbmltcG9ydCBJbWFnZVdyYXBwZXIgZnJvbSAnLi9jb21tb24vaW1hZ2Vfd3JhcHBlcic7XHJcbmltcG9ydCBCYXJjb2RlTG9jYXRvciBmcm9tICcuL2xvY2F0b3IvYmFyY29kZV9sb2NhdG9yJztcclxuaW1wb3J0IEJhcmNvZGVEZWNvZGVyIGZyb20gJy4vZGVjb2Rlci9iYXJjb2RlX2RlY29kZXInO1xyXG5pbXBvcnQgRXZlbnRzIGZyb20gJy4vY29tbW9uL2V2ZW50cyc7XHJcbmltcG9ydCBDYW1lcmFBY2Nlc3MgZnJvbSAnLi9pbnB1dC9jYW1lcmFfYWNjZXNzJztcclxuaW1wb3J0IEltYWdlRGVidWcgZnJvbSAnLi9jb21tb24vaW1hZ2VfZGVidWcnO1xyXG5pbXBvcnQgUmVzdWx0Q29sbGVjdG9yIGZyb20gJy4vYW5hbHl0aWNzL3Jlc3VsdF9jb2xsZWN0b3InO1xyXG5pbXBvcnQgQ29uZmlnIGZyb20gJy4vY29uZmlnL2NvbmZpZyc7XHJcbmltcG9ydCBJbnB1dFN0cmVhbSBmcm9tICdpbnB1dF9zdHJlYW0nO1xyXG5pbXBvcnQgRnJhbWVHcmFiYmVyIGZyb20gJ2ZyYW1lX2dyYWJiZXInO1xyXG5pbXBvcnQge21lcmdlfSBmcm9tICdsb2Rhc2gnO1xyXG5jb25zdCB2ZWMyID0ge1xyXG4gICAgY2xvbmU6IHJlcXVpcmUoJ2dsLXZlYzIvY2xvbmUnKVxyXG59O1xyXG5cclxudmFyIF9pbnB1dFN0cmVhbSxcclxuICAgIF9mcmFtZWdyYWJiZXIsXHJcbiAgICBfc3RvcHBlZCxcclxuICAgIF9jYW52YXNDb250YWluZXIgPSB7XHJcbiAgICAgICAgY3R4OiB7XHJcbiAgICAgICAgICAgIGltYWdlOiBudWxsLFxyXG4gICAgICAgICAgICBvdmVybGF5OiBudWxsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkb206IHtcclxuICAgICAgICAgICAgaW1hZ2U6IG51bGwsXHJcbiAgICAgICAgICAgIG92ZXJsYXk6IG51bGxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgX2lucHV0SW1hZ2VXcmFwcGVyLFxyXG4gICAgX2JveFNpemUsXHJcbiAgICBfZGVjb2RlcixcclxuICAgIF93b3JrZXJQb29sID0gW10sXHJcbiAgICBfb25VSVRocmVhZCA9IHRydWUsXHJcbiAgICBfcmVzdWx0Q29sbGVjdG9yLFxyXG4gICAgX2NvbmZpZyA9IHt9O1xyXG5cclxuZnVuY3Rpb24gaW5pdGlhbGl6ZURhdGEoaW1hZ2VXcmFwcGVyKSB7XHJcbiAgICBpbml0QnVmZmVycyhpbWFnZVdyYXBwZXIpO1xyXG4gICAgX2RlY29kZXIgPSBCYXJjb2RlRGVjb2Rlci5jcmVhdGUoX2NvbmZpZy5kZWNvZGVyLCBfaW5wdXRJbWFnZVdyYXBwZXIpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0SW5wdXRTdHJlYW0oY2IpIHtcclxuICAgIHZhciB2aWRlbztcclxuICAgIGlmIChfY29uZmlnLmlucHV0U3RyZWFtLnR5cGUgPT09IFwiVmlkZW9TdHJlYW1cIikge1xyXG4gICAgICAgIHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInZpZGVvXCIpO1xyXG4gICAgICAgIF9pbnB1dFN0cmVhbSA9IElucHV0U3RyZWFtLmNyZWF0ZVZpZGVvU3RyZWFtKHZpZGVvKTtcclxuICAgIH0gZWxzZSBpZiAoX2NvbmZpZy5pbnB1dFN0cmVhbS50eXBlID09PSBcIkltYWdlU3RyZWFtXCIpIHtcclxuICAgICAgICBfaW5wdXRTdHJlYW0gPSBJbnB1dFN0cmVhbS5jcmVhdGVJbWFnZVN0cmVhbSgpO1xyXG4gICAgfSBlbHNlIGlmIChfY29uZmlnLmlucHV0U3RyZWFtLnR5cGUgPT09IFwiTGl2ZVN0cmVhbVwiKSB7XHJcbiAgICAgICAgdmFyICR2aWV3cG9ydCA9IGdldFZpZXdQb3J0KCk7XHJcbiAgICAgICAgaWYgKCR2aWV3cG9ydCkge1xyXG4gICAgICAgICAgICB2aWRlbyA9ICR2aWV3cG9ydC5xdWVyeVNlbGVjdG9yKFwidmlkZW9cIik7XHJcbiAgICAgICAgICAgIGlmICghdmlkZW8pIHtcclxuICAgICAgICAgICAgICAgIHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInZpZGVvXCIpO1xyXG4gICAgICAgICAgICAgICAgJHZpZXdwb3J0LmFwcGVuZENoaWxkKHZpZGVvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBfaW5wdXRTdHJlYW0gPSBJbnB1dFN0cmVhbS5jcmVhdGVMaXZlU3RyZWFtKHZpZGVvKTtcclxuICAgICAgICBDYW1lcmFBY2Nlc3MucmVxdWVzdCh2aWRlbywgX2NvbmZpZy5pbnB1dFN0cmVhbS5jb25zdHJhaW50cylcclxuICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIF9pbnB1dFN0cmVhbS50cmlnZ2VyKFwiY2FucmVjb3JkXCIpO1xyXG4gICAgICAgIH0pLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2lucHV0U3RyZWFtLnNldEF0dHJpYnV0ZShcInByZWxvYWRcIiwgXCJhdXRvXCIpO1xyXG4gICAgX2lucHV0U3RyZWFtLnNldEF0dHJpYnV0ZShcImF1dG9wbGF5XCIsIHRydWUpO1xyXG4gICAgX2lucHV0U3RyZWFtLnNldElucHV0U3RyZWFtKF9jb25maWcuaW5wdXRTdHJlYW0pO1xyXG4gICAgX2lucHV0U3RyZWFtLmFkZEV2ZW50TGlzdGVuZXIoXCJjYW5yZWNvcmRcIiwgY2FuUmVjb3JkLmJpbmQodW5kZWZpbmVkLCBjYikpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRWaWV3UG9ydCgpIHtcclxuICAgIHZhciB0YXJnZXQgPSBfY29uZmlnLmlucHV0U3RyZWFtLnRhcmdldDtcclxuICAgIC8vIENoZWNrIGlmIHRhcmdldCBpcyBhbHJlYWR5IGEgRE9NIGVsZW1lbnRcclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0Lm5vZGVOYW1lICYmIHRhcmdldC5ub2RlVHlwZSA9PT0gMSkge1xyXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFVzZSAnI2ludGVyYWN0aXZlLnZpZXdwb3J0JyBhcyBhIGZhbGxiYWNrIHNlbGVjdG9yIChiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSlcclxuICAgICAgICB2YXIgc2VsZWN0b3IgPSB0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJyA/IHRhcmdldCA6ICcjaW50ZXJhY3RpdmUudmlld3BvcnQnO1xyXG4gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gY2FuUmVjb3JkKGNiKSB7XHJcbiAgICBCYXJjb2RlTG9jYXRvci5jaGVja0ltYWdlQ29uc3RyYWludHMoX2lucHV0U3RyZWFtLCBfY29uZmlnLmxvY2F0b3IpO1xyXG4gICAgaW5pdENhbnZhcyhfY29uZmlnKTtcclxuICAgIF9mcmFtZWdyYWJiZXIgPSBGcmFtZUdyYWJiZXIuY3JlYXRlKF9pbnB1dFN0cmVhbSwgX2NhbnZhc0NvbnRhaW5lci5kb20uaW1hZ2UpO1xyXG5cclxuICAgIGFkanVzdFdvcmtlclBvb2woX2NvbmZpZy5udW1PZldvcmtlcnMsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmIChfY29uZmlnLm51bU9mV29ya2VycyA9PT0gMCkge1xyXG4gICAgICAgICAgICBpbml0aWFsaXplRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZWFkeShjYik7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmVhZHkoY2Ipe1xyXG4gICAgX2lucHV0U3RyZWFtLnBsYXkoKTtcclxuICAgIGNiKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRDYW52YXMoKSB7XHJcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgdmFyICR2aWV3cG9ydCA9IGdldFZpZXdQb3J0KCk7XHJcbiAgICAgICAgX2NhbnZhc0NvbnRhaW5lci5kb20uaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiY2FudmFzLmltZ0J1ZmZlclwiKTtcclxuICAgICAgICBpZiAoIV9jYW52YXNDb250YWluZXIuZG9tLmltYWdlKSB7XHJcbiAgICAgICAgICAgIF9jYW52YXNDb250YWluZXIuZG9tLmltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcclxuICAgICAgICAgICAgX2NhbnZhc0NvbnRhaW5lci5kb20uaW1hZ2UuY2xhc3NOYW1lID0gXCJpbWdCdWZmZXJcIjtcclxuICAgICAgICAgICAgaWYgKCR2aWV3cG9ydCAmJiBfY29uZmlnLmlucHV0U3RyZWFtLnR5cGUgPT09IFwiSW1hZ2VTdHJlYW1cIikge1xyXG4gICAgICAgICAgICAgICAgJHZpZXdwb3J0LmFwcGVuZENoaWxkKF9jYW52YXNDb250YWluZXIuZG9tLmltYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBfY2FudmFzQ29udGFpbmVyLmN0eC5pbWFnZSA9IF9jYW52YXNDb250YWluZXIuZG9tLmltYWdlLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5pbWFnZS53aWR0aCA9IF9pbnB1dFN0cmVhbS5nZXRDYW52YXNTaXplKCkueDtcclxuICAgICAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5pbWFnZS5oZWlnaHQgPSBfaW5wdXRTdHJlYW0uZ2V0Q2FudmFzU2l6ZSgpLnk7XHJcblxyXG4gICAgICAgIF9jYW52YXNDb250YWluZXIuZG9tLm92ZXJsYXkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiY2FudmFzLmRyYXdpbmdCdWZmZXJcIik7XHJcbiAgICAgICAgaWYgKCFfY2FudmFzQ29udGFpbmVyLmRvbS5vdmVybGF5KSB7XHJcbiAgICAgICAgICAgIF9jYW52YXNDb250YWluZXIuZG9tLm92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xyXG4gICAgICAgICAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5vdmVybGF5LmNsYXNzTmFtZSA9IFwiZHJhd2luZ0J1ZmZlclwiO1xyXG4gICAgICAgICAgICBpZiAoJHZpZXdwb3J0KSB7XHJcbiAgICAgICAgICAgICAgICAkdmlld3BvcnQuYXBwZW5kQ2hpbGQoX2NhbnZhc0NvbnRhaW5lci5kb20ub3ZlcmxheSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIGNsZWFyRml4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpO1xyXG4gICAgICAgICAgICBjbGVhckZpeC5zZXRBdHRyaWJ1dGUoXCJjbGVhclwiLCBcImFsbFwiKTtcclxuICAgICAgICAgICAgaWYgKCR2aWV3cG9ydCkge1xyXG4gICAgICAgICAgICAgICAgJHZpZXdwb3J0LmFwcGVuZENoaWxkKGNsZWFyRml4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBfY2FudmFzQ29udGFpbmVyLmN0eC5vdmVybGF5ID0gX2NhbnZhc0NvbnRhaW5lci5kb20ub3ZlcmxheS5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgX2NhbnZhc0NvbnRhaW5lci5kb20ub3ZlcmxheS53aWR0aCA9IF9pbnB1dFN0cmVhbS5nZXRDYW52YXNTaXplKCkueDtcclxuICAgICAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5vdmVybGF5LmhlaWdodCA9IF9pbnB1dFN0cmVhbS5nZXRDYW52YXNTaXplKCkueTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdEJ1ZmZlcnMoaW1hZ2VXcmFwcGVyKSB7XHJcbiAgICBpZiAoaW1hZ2VXcmFwcGVyKSB7XHJcbiAgICAgICAgX2lucHV0SW1hZ2VXcmFwcGVyID0gaW1hZ2VXcmFwcGVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBfaW5wdXRJbWFnZVdyYXBwZXIgPSBuZXcgSW1hZ2VXcmFwcGVyKHtcclxuICAgICAgICAgICAgeDogX2lucHV0U3RyZWFtLmdldFdpZHRoKCksXHJcbiAgICAgICAgICAgIHk6IF9pbnB1dFN0cmVhbS5nZXRIZWlnaHQoKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhfaW5wdXRJbWFnZVdyYXBwZXIuc2l6ZSk7XHJcbiAgICB9XHJcbiAgICBfYm94U2l6ZSA9IFtcclxuICAgICAgICB2ZWMyLmNsb25lKFswLCAwXSksXHJcbiAgICAgICAgdmVjMi5jbG9uZShbMCwgX2lucHV0SW1hZ2VXcmFwcGVyLnNpemUueV0pLFxyXG4gICAgICAgIHZlYzIuY2xvbmUoW19pbnB1dEltYWdlV3JhcHBlci5zaXplLngsIF9pbnB1dEltYWdlV3JhcHBlci5zaXplLnldKSxcclxuICAgICAgICB2ZWMyLmNsb25lKFtfaW5wdXRJbWFnZVdyYXBwZXIuc2l6ZS54LCAwXSlcclxuICAgIF07XHJcbiAgICBCYXJjb2RlTG9jYXRvci5pbml0KF9pbnB1dEltYWdlV3JhcHBlciwgX2NvbmZpZy5sb2NhdG9yKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdCb3hlcygpIHtcclxuICAgIGlmIChfY29uZmlnLmxvY2F0ZSkge1xyXG4gICAgICAgIHJldHVybiBCYXJjb2RlTG9jYXRvci5sb2NhdGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFtbXHJcbiAgICAgICAgICAgIHZlYzIuY2xvbmUoX2JveFNpemVbMF0pLFxyXG4gICAgICAgICAgICB2ZWMyLmNsb25lKF9ib3hTaXplWzFdKSxcclxuICAgICAgICAgICAgdmVjMi5jbG9uZShfYm94U2l6ZVsyXSksXHJcbiAgICAgICAgICAgIHZlYzIuY2xvbmUoX2JveFNpemVbM10pXV07XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYW5zZm9ybVJlc3VsdChyZXN1bHQpIHtcclxuICAgIHZhciB0b3BSaWdodCA9IF9pbnB1dFN0cmVhbS5nZXRUb3BSaWdodCgpLFxyXG4gICAgICAgIHhPZmZzZXQgPSB0b3BSaWdodC54LFxyXG4gICAgICAgIHlPZmZzZXQgPSB0b3BSaWdodC55LFxyXG4gICAgICAgIGk7XHJcblxyXG4gICAgaWYgKHhPZmZzZXQgPT09IDAgJiYgeU9mZnNldCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzdWx0LmJhcmNvZGVzKSB7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlc3VsdC5iYXJjb2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm1SZXN1bHQocmVzdWx0LmJhcmNvZGVzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlc3VsdC5saW5lICYmIHJlc3VsdC5saW5lLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgIG1vdmVMaW5lKHJlc3VsdC5saW5lKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzdWx0LmJveCkge1xyXG4gICAgICAgIG1vdmVCb3gocmVzdWx0LmJveCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlc3VsdC5ib3hlcyAmJiByZXN1bHQuYm94ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHQuYm94ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbW92ZUJveChyZXN1bHQuYm94ZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBtb3ZlQm94KGJveCkge1xyXG4gICAgICAgIHZhciBjb3JuZXIgPSBib3gubGVuZ3RoO1xyXG5cclxuICAgICAgICB3aGlsZSAoY29ybmVyLS0pIHtcclxuICAgICAgICAgICAgYm94W2Nvcm5lcl1bMF0gKz0geE9mZnNldDtcclxuICAgICAgICAgICAgYm94W2Nvcm5lcl1bMV0gKz0geU9mZnNldDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbW92ZUxpbmUobGluZSkge1xyXG4gICAgICAgIGxpbmVbMF0ueCArPSB4T2Zmc2V0O1xyXG4gICAgICAgIGxpbmVbMF0ueSArPSB5T2Zmc2V0O1xyXG4gICAgICAgIGxpbmVbMV0ueCArPSB4T2Zmc2V0O1xyXG4gICAgICAgIGxpbmVbMV0ueSArPSB5T2Zmc2V0O1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRSZXN1bHQgKHJlc3VsdCwgaW1hZ2VEYXRhKSB7XHJcbiAgICBpZiAoIWltYWdlRGF0YSB8fCAhX3Jlc3VsdENvbGxlY3Rvcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzdWx0LmJhcmNvZGVzKSB7XHJcbiAgICAgICAgcmVzdWx0LmJhcmNvZGVzLmZpbHRlcihiYXJjb2RlID0+IGJhcmNvZGUuY29kZVJlc3VsdClcclxuICAgICAgICAgICAgLmZvckVhY2goYmFyY29kZSA9PiBhZGRSZXN1bHQoYmFyY29kZSwgaW1hZ2VEYXRhKSk7XHJcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5jb2RlUmVzdWx0KSB7XHJcbiAgICAgICAgX3Jlc3VsdENvbGxlY3Rvci5hZGRSZXN1bHQoaW1hZ2VEYXRhLCBfaW5wdXRTdHJlYW0uZ2V0Q2FudmFzU2l6ZSgpLCByZXN1bHQuY29kZVJlc3VsdCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhc0NvZGVSZXN1bHQgKHJlc3VsdCkge1xyXG4gICAgcmV0dXJuIHJlc3VsdCAmJiAocmVzdWx0LmJhcmNvZGVzID9cclxuICAgICAgcmVzdWx0LmJhcmNvZGVzLnNvbWUoYmFyY29kZSA9PiBiYXJjb2RlLmNvZGVSZXN1bHQpIDpcclxuICAgICAgcmVzdWx0LmNvZGVSZXN1bHQpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwdWJsaXNoUmVzdWx0KHJlc3VsdCwgaW1hZ2VEYXRhKSB7XHJcbiAgICBsZXQgcmVzdWx0VG9QdWJsaXNoID0gcmVzdWx0O1xyXG5cclxuICAgIGlmIChyZXN1bHQgJiYgX29uVUlUaHJlYWQpIHtcclxuICAgICAgICB0cmFuc2Zvcm1SZXN1bHQocmVzdWx0KTtcclxuICAgICAgICBhZGRSZXN1bHQocmVzdWx0LCBpbWFnZURhdGEpO1xyXG4gICAgICAgIHJlc3VsdFRvUHVibGlzaCA9IHJlc3VsdC5iYXJjb2RlcyB8fCByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgRXZlbnRzLnB1Ymxpc2goXCJwcm9jZXNzZWRcIiwgcmVzdWx0VG9QdWJsaXNoKTtcclxuICAgIGlmIChoYXNDb2RlUmVzdWx0KHJlc3VsdCkpIHtcclxuICAgICAgICBFdmVudHMucHVibGlzaChcImRldGVjdGVkXCIsIHJlc3VsdFRvUHVibGlzaCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGxvY2F0ZUFuZERlY29kZSgpIHtcclxuICAgIHZhciByZXN1bHQsXHJcbiAgICAgICAgYm94ZXM7XHJcblxyXG4gICAgYm94ZXMgPSBnZXRCb3VuZGluZ0JveGVzKCk7XHJcbiAgICBpZiAoYm94ZXMpIHtcclxuICAgICAgICByZXN1bHQgPSBfZGVjb2Rlci5kZWNvZGVGcm9tQm91bmRpbmdCb3hlcyhib3hlcyk7XHJcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xyXG4gICAgICAgIHJlc3VsdC5ib3hlcyA9IGJveGVzO1xyXG4gICAgICAgIHB1Ymxpc2hSZXN1bHQocmVzdWx0LCBfaW5wdXRJbWFnZVdyYXBwZXIuZGF0YSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHB1Ymxpc2hSZXN1bHQoKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdXBkYXRlKCkge1xyXG4gICAgdmFyIGF2YWlsYWJsZVdvcmtlcjtcclxuXHJcbiAgICBpZiAoX29uVUlUaHJlYWQpIHtcclxuICAgICAgICBpZiAoX3dvcmtlclBvb2wubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBhdmFpbGFibGVXb3JrZXIgPSBfd29ya2VyUG9vbC5maWx0ZXIoZnVuY3Rpb24od29ya2VyVGhyZWFkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIXdvcmtlclRocmVhZC5idXN5O1xyXG4gICAgICAgICAgICB9KVswXTtcclxuICAgICAgICAgICAgaWYgKGF2YWlsYWJsZVdvcmtlcikge1xyXG4gICAgICAgICAgICAgICAgX2ZyYW1lZ3JhYmJlci5hdHRhY2hEYXRhKGF2YWlsYWJsZVdvcmtlci5pbWFnZURhdGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBhbGwgd29ya2VycyBhcmUgYnVzeVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgX2ZyYW1lZ3JhYmJlci5hdHRhY2hEYXRhKF9pbnB1dEltYWdlV3JhcHBlci5kYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKF9mcmFtZWdyYWJiZXIuZ3JhYigpKSB7XHJcbiAgICAgICAgICAgIGlmIChhdmFpbGFibGVXb3JrZXIpIHtcclxuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVdvcmtlci5idXN5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVdvcmtlci53b3JrZXIucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgIGNtZDogJ3Byb2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlRGF0YTogYXZhaWxhYmxlV29ya2VyLmltYWdlRGF0YVxyXG4gICAgICAgICAgICAgICAgfSwgW2F2YWlsYWJsZVdvcmtlci5pbWFnZURhdGEuYnVmZmVyXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhdGVBbmREZWNvZGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9jYXRlQW5kRGVjb2RlKCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN0YXJ0Q29udGludW91c1VwZGF0ZSgpIHtcclxuICAgIHZhciBuZXh0ID0gbnVsbCxcclxuICAgICAgICBkZWxheSA9IDEwMDAgLyAoX2NvbmZpZy5mcmVxdWVuY3kgfHwgNjApO1xyXG5cclxuICAgIF9zdG9wcGVkID0gZmFsc2U7XHJcbiAgICAoZnVuY3Rpb24gZnJhbWUodGltZXN0YW1wKSB7XHJcbiAgICAgICAgbmV4dCA9IG5leHQgfHwgdGltZXN0YW1wO1xyXG4gICAgICAgIGlmICghX3N0b3BwZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRpbWVzdGFtcCA+PSBuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICBuZXh0ICs9IGRlbGF5O1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltRnJhbWUoZnJhbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0ocGVyZm9ybWFuY2Uubm93KCkpKTtcclxufVxyXG5cclxuZnVuY3Rpb24gc3RhcnQoKSB7XHJcbiAgICBpZiAoX29uVUlUaHJlYWQgJiYgX2NvbmZpZy5pbnB1dFN0cmVhbS50eXBlID09PSBcIkxpdmVTdHJlYW1cIikge1xyXG4gICAgICAgIHN0YXJ0Q29udGludW91c1VwZGF0ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB1cGRhdGUoKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFdvcmtlcihjYikge1xyXG4gICAgdmFyIGJsb2JVUkwsXHJcbiAgICAgICAgd29ya2VyVGhyZWFkID0ge1xyXG4gICAgICAgICAgICB3b3JrZXI6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgaW1hZ2VEYXRhOiBuZXcgVWludDhBcnJheShfaW5wdXRTdHJlYW0uZ2V0V2lkdGgoKSAqIF9pbnB1dFN0cmVhbS5nZXRIZWlnaHQoKSksXHJcbiAgICAgICAgICAgIGJ1c3k6IHRydWVcclxuICAgICAgICB9O1xyXG5cclxuICAgIGJsb2JVUkwgPSBnZW5lcmF0ZVdvcmtlckJsb2IoKTtcclxuICAgIHdvcmtlclRocmVhZC53b3JrZXIgPSBuZXcgV29ya2VyKGJsb2JVUkwpO1xyXG5cclxuICAgIHdvcmtlclRocmVhZC53b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIGlmIChlLmRhdGEuZXZlbnQgPT09ICdpbml0aWFsaXplZCcpIHtcclxuICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChibG9iVVJMKTtcclxuICAgICAgICAgICAgd29ya2VyVGhyZWFkLmJ1c3kgPSBmYWxzZTtcclxuICAgICAgICAgICAgd29ya2VyVGhyZWFkLmltYWdlRGF0YSA9IG5ldyBVaW50OEFycmF5KGUuZGF0YS5pbWFnZURhdGEpO1xyXG4gICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIldvcmtlciBpbml0aWFsaXplZFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2Iod29ya2VyVGhyZWFkKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5ldmVudCA9PT0gJ3Byb2Nlc3NlZCcpIHtcclxuICAgICAgICAgICAgd29ya2VyVGhyZWFkLmltYWdlRGF0YSA9IG5ldyBVaW50OEFycmF5KGUuZGF0YS5pbWFnZURhdGEpO1xyXG4gICAgICAgICAgICB3b3JrZXJUaHJlYWQuYnVzeSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBwdWJsaXNoUmVzdWx0KGUuZGF0YS5yZXN1bHQsIHdvcmtlclRocmVhZC5pbWFnZURhdGEpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLmV2ZW50ID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiV29ya2VyIGVycm9yOiBcIiArIGUuZGF0YS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgd29ya2VyVGhyZWFkLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgY21kOiAnaW5pdCcsXHJcbiAgICAgICAgc2l6ZToge3g6IF9pbnB1dFN0cmVhbS5nZXRXaWR0aCgpLCB5OiBfaW5wdXRTdHJlYW0uZ2V0SGVpZ2h0KCl9LFxyXG4gICAgICAgIGltYWdlRGF0YTogd29ya2VyVGhyZWFkLmltYWdlRGF0YSxcclxuICAgICAgICBjb25maWc6IGNvbmZpZ0ZvcldvcmtlcihfY29uZmlnKVxyXG4gICAgfSwgW3dvcmtlclRocmVhZC5pbWFnZURhdGEuYnVmZmVyXSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbmZpZ0Zvcldvcmtlcihjb25maWcpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uY29uZmlnLFxyXG4gICAgICAgIGlucHV0U3RyZWFtOiB7XHJcbiAgICAgICAgICAgIC4uLmNvbmZpZy5pbnB1dFN0cmVhbSxcclxuICAgICAgICAgICAgdGFyZ2V0OiBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gd29ya2VySW50ZXJmYWNlKGZhY3RvcnkpIHtcclxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmKi9cclxuICAgIGlmIChmYWN0b3J5KSB7XHJcbiAgICAgICAgdmFyIFF1YWdnYSA9IGZhY3RvcnkoKS5kZWZhdWx0O1xyXG4gICAgICAgIGlmICghUXVhZ2dhKSB7XHJcbiAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoeydldmVudCc6ICdlcnJvcicsIG1lc3NhZ2U6ICdRdWFnZ2EgY291bGQgbm90IGJlIGNyZWF0ZWQnfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB2YXIgaW1hZ2VXcmFwcGVyO1xyXG5cclxuICAgIHNlbGYub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICAgIGlmIChlLmRhdGEuY21kID09PSAnaW5pdCcpIHtcclxuICAgICAgICAgICAgdmFyIGNvbmZpZyA9IGUuZGF0YS5jb25maWc7XHJcbiAgICAgICAgICAgIGNvbmZpZy5udW1PZldvcmtlcnMgPSAwO1xyXG4gICAgICAgICAgICBpbWFnZVdyYXBwZXIgPSBuZXcgUXVhZ2dhLkltYWdlV3JhcHBlcih7XHJcbiAgICAgICAgICAgICAgICB4OiBlLmRhdGEuc2l6ZS54LFxyXG4gICAgICAgICAgICAgICAgeTogZS5kYXRhLnNpemUueVxyXG4gICAgICAgICAgICB9LCBuZXcgVWludDhBcnJheShlLmRhdGEuaW1hZ2VEYXRhKSk7XHJcbiAgICAgICAgICAgIFF1YWdnYS5pbml0KGNvbmZpZywgcmVhZHksIGltYWdlV3JhcHBlcik7XHJcbiAgICAgICAgICAgIFF1YWdnYS5vblByb2Nlc3NlZChvblByb2Nlc3NlZCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEuY21kID09PSAncHJvY2VzcycpIHtcclxuICAgICAgICAgICAgaW1hZ2VXcmFwcGVyLmRhdGEgPSBuZXcgVWludDhBcnJheShlLmRhdGEuaW1hZ2VEYXRhKTtcclxuICAgICAgICAgICAgUXVhZ2dhLnN0YXJ0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEuY21kID09PSAnc2V0UmVhZGVycycpIHtcclxuICAgICAgICAgICAgUXVhZ2dhLnNldFJlYWRlcnMoZS5kYXRhLnJlYWRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZnVuY3Rpb24gb25Qcm9jZXNzZWQocmVzdWx0KSB7XHJcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICdldmVudCc6ICdwcm9jZXNzZWQnLFxyXG4gICAgICAgICAgICBpbWFnZURhdGE6IGltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgICAgICByZXN1bHQ6IHJlc3VsdFxyXG4gICAgICAgIH0sIFtpbWFnZVdyYXBwZXIuZGF0YS5idWZmZXJdKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiByZWFkeSgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxyXG4gICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoeydldmVudCc6ICdpbml0aWFsaXplZCcsIGltYWdlRGF0YTogaW1hZ2VXcmFwcGVyLmRhdGF9LCBbaW1hZ2VXcmFwcGVyLmRhdGEuYnVmZmVyXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmF0ZVdvcmtlckJsb2IoKSB7XHJcbiAgICB2YXIgYmxvYixcclxuICAgICAgICBmYWN0b3J5U291cmNlO1xyXG5cclxuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cclxuICAgIGlmICh0eXBlb2YgX19mYWN0b3J5U291cmNlX18gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgZmFjdG9yeVNvdXJjZSA9IF9fZmFjdG9yeVNvdXJjZV9fOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXHJcbiAgICB9XHJcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xyXG5cclxuICAgIGJsb2IgPSBuZXcgQmxvYihbJygnICsgd29ya2VySW50ZXJmYWNlLnRvU3RyaW5nKCkgKyAnKSgnICsgZmFjdG9yeVNvdXJjZSArICcpOyddLFxyXG4gICAgICAgIHt0eXBlOiAndGV4dC9qYXZhc2NyaXB0J30pO1xyXG5cclxuICAgIHJldHVybiB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0UmVhZGVycyhyZWFkZXJzKSB7XHJcbiAgICBpZiAoX2RlY29kZXIpIHtcclxuICAgICAgICBfZGVjb2Rlci5zZXRSZWFkZXJzKHJlYWRlcnMpO1xyXG4gICAgfSBlbHNlIGlmIChfb25VSVRocmVhZCAmJiBfd29ya2VyUG9vbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgX3dvcmtlclBvb2wuZm9yRWFjaChmdW5jdGlvbih3b3JrZXJUaHJlYWQpIHtcclxuICAgICAgICAgICAgd29ya2VyVGhyZWFkLndvcmtlci5wb3N0TWVzc2FnZSh7Y21kOiAnc2V0UmVhZGVycycsIHJlYWRlcnM6IHJlYWRlcnN9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gYWRqdXN0V29ya2VyUG9vbChjYXBhY2l0eSwgY2IpIHtcclxuICAgIGNvbnN0IGluY3JlYXNlQnkgPSBjYXBhY2l0eSAtIF93b3JrZXJQb29sLmxlbmd0aDtcclxuICAgIGlmIChpbmNyZWFzZUJ5ID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGNiICYmIGNiKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5jcmVhc2VCeSA8IDApIHtcclxuICAgICAgICBjb25zdCB3b3JrZXJzVG9UZXJtaW5hdGUgPSBfd29ya2VyUG9vbC5zbGljZShpbmNyZWFzZUJ5KTtcclxuICAgICAgICB3b3JrZXJzVG9UZXJtaW5hdGUuZm9yRWFjaChmdW5jdGlvbih3b3JrZXJUaHJlYWQpIHtcclxuICAgICAgICAgICAgd29ya2VyVGhyZWFkLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJXb3JrZXIgdGVybWluYXRlZCFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBfd29ya2VyUG9vbCA9IF93b3JrZXJQb29sLnNsaWNlKDAsIGluY3JlYXNlQnkpO1xyXG4gICAgICAgIHJldHVybiBjYiAmJiBjYigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluY3JlYXNlQnk7IGkrKykge1xyXG4gICAgICAgICAgICBpbml0V29ya2VyKHdvcmtlckluaXRpYWxpemVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHdvcmtlckluaXRpYWxpemVkKHdvcmtlclRocmVhZCkge1xyXG4gICAgICAgICAgICBfd29ya2VyUG9vbC5wdXNoKHdvcmtlclRocmVhZCk7XHJcbiAgICAgICAgICAgIGlmIChfd29ya2VyUG9vbC5sZW5ndGggPj0gY2FwYWNpdHkpe1xyXG4gICAgICAgICAgICAgICAgY2IgJiYgY2IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgaW5pdDogZnVuY3Rpb24oY29uZmlnLCBjYiwgaW1hZ2VXcmFwcGVyKSB7XHJcbiAgICAgICAgX2NvbmZpZyA9IG1lcmdlKHt9LCBDb25maWcsIGNvbmZpZyk7XHJcbiAgICAgICAgaWYgKGltYWdlV3JhcHBlcikge1xyXG4gICAgICAgICAgICBfb25VSVRocmVhZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpbml0aWFsaXplRGF0YShpbWFnZVdyYXBwZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gY2IoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpbml0SW5wdXRTdHJlYW0oY2IpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdGFydDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgc3RhcnQoKTtcclxuICAgIH0sXHJcbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcclxuICAgICAgICBfc3RvcHBlZCA9IHRydWU7XHJcbiAgICAgICAgYWRqdXN0V29ya2VyUG9vbCgwKTtcclxuICAgICAgICBpZiAoX2NvbmZpZy5pbnB1dFN0cmVhbS50eXBlID09PSBcIkxpdmVTdHJlYW1cIikge1xyXG4gICAgICAgICAgICBDYW1lcmFBY2Nlc3MucmVsZWFzZSgpO1xyXG4gICAgICAgICAgICBfaW5wdXRTdHJlYW0uY2xlYXJFdmVudEhhbmRsZXJzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHBhdXNlOiBmdW5jdGlvbigpIHtcclxuICAgICAgICBfc3RvcHBlZCA9IHRydWU7XHJcbiAgICB9LFxyXG4gICAgb25EZXRlY3RlZDogZnVuY3Rpb24oY2FsbGJhY2spIHtcclxuICAgICAgICBFdmVudHMuc3Vic2NyaWJlKFwiZGV0ZWN0ZWRcIiwgY2FsbGJhY2spO1xyXG4gICAgfSxcclxuICAgIG9mZkRldGVjdGVkOiBmdW5jdGlvbihjYWxsYmFjaykge1xyXG4gICAgICAgIEV2ZW50cy51bnN1YnNjcmliZShcImRldGVjdGVkXCIsIGNhbGxiYWNrKTtcclxuICAgIH0sXHJcbiAgICBvblByb2Nlc3NlZDogZnVuY3Rpb24oY2FsbGJhY2spIHtcclxuICAgICAgICBFdmVudHMuc3Vic2NyaWJlKFwicHJvY2Vzc2VkXCIsIGNhbGxiYWNrKTtcclxuICAgIH0sXHJcbiAgICBvZmZQcm9jZXNzZWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgRXZlbnRzLnVuc3Vic2NyaWJlKFwicHJvY2Vzc2VkXCIsIGNhbGxiYWNrKTtcclxuICAgIH0sXHJcbiAgICBzZXRSZWFkZXJzOiBmdW5jdGlvbihyZWFkZXJzKSB7XHJcbiAgICAgICAgc2V0UmVhZGVycyhyZWFkZXJzKTtcclxuICAgIH0sXHJcbiAgICByZWdpc3RlclJlc3VsdENvbGxlY3RvcjogZnVuY3Rpb24ocmVzdWx0Q29sbGVjdG9yKSB7XHJcbiAgICAgICAgaWYgKHJlc3VsdENvbGxlY3RvciAmJiB0eXBlb2YgcmVzdWx0Q29sbGVjdG9yLmFkZFJlc3VsdCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBfcmVzdWx0Q29sbGVjdG9yID0gcmVzdWx0Q29sbGVjdG9yO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjYW52YXM6IF9jYW52YXNDb250YWluZXIsXHJcbiAgICBkZWNvZGVTaW5nbGU6IGZ1bmN0aW9uKGNvbmZpZywgcmVzdWx0Q2FsbGJhY2spIHtcclxuICAgICAgICBjb25maWcgPSBtZXJnZSh7XHJcbiAgICAgICAgICAgIGlucHV0U3RyZWFtOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcIkltYWdlU3RyZWFtXCIsXHJcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBzaXplOiA4MDAsXHJcbiAgICAgICAgICAgICAgICBzcmM6IGNvbmZpZy5zcmNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbnVtT2ZXb3JrZXJzOiAoRU5WLmRldmVsb3BtZW50ICYmIGNvbmZpZy5kZWJ1ZykgPyAwIDogMSxcclxuICAgICAgICAgICAgbG9jYXRvcjoge1xyXG4gICAgICAgICAgICAgICAgaGFsZlNhbXBsZTogZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIGNvbmZpZyk7XHJcbiAgICAgICAgdGhpcy5pbml0KGNvbmZpZywgKCkgPT4ge1xyXG4gICAgICAgICAgICBFdmVudHMub25jZShcInByb2Nlc3NlZFwiLCAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdENhbGxiYWNrLmNhbGwobnVsbCwgcmVzdWx0KTtcclxuICAgICAgICAgICAgfSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHN0YXJ0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgSW1hZ2VXcmFwcGVyOiBJbWFnZVdyYXBwZXIsXHJcbiAgICBJbWFnZURlYnVnOiBJbWFnZURlYnVnLFxyXG4gICAgUmVzdWx0Q29sbGVjdG9yOiBSZXN1bHRDb2xsZWN0b3JcclxufTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcXVhZ2dhLmpzXG4gKiovIiwiaW1wb3J0IEltYWdlRGVidWcgZnJvbSAnLi4vY29tbW9uL2ltYWdlX2RlYnVnJztcclxuXHJcbmZ1bmN0aW9uIGNvbnRhaW5zKGNvZGVSZXN1bHQsIGxpc3QpIHtcclxuICAgIGlmIChsaXN0KSB7XHJcbiAgICAgICAgcmV0dXJuIGxpc3Quc29tZShmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbSkuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1ba2V5XSA9PT0gY29kZVJlc3VsdFtrZXldO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFzc2VzRmlsdGVyKGNvZGVSZXN1bHQsIGZpbHRlcikge1xyXG4gICAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICByZXR1cm4gZmlsdGVyKGNvZGVSZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIGNyZWF0ZTogZnVuY3Rpb24oY29uZmlnKSB7XHJcbiAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIiksXHJcbiAgICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIiksXHJcbiAgICAgICAgICAgIHJlc3VsdHMgPSBbXSxcclxuICAgICAgICAgICAgY2FwYWNpdHkgPSBjb25maWcuY2FwYWNpdHkgfHwgMjAsXHJcbiAgICAgICAgICAgIGNhcHR1cmUgPSBjb25maWcuY2FwdHVyZSA9PT0gdHJ1ZTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc0NvbnN0cmFpbnRzKGNvZGVSZXN1bHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhcGFjaXR5XHJcbiAgICAgICAgICAgICAgICAmJiBjb2RlUmVzdWx0XHJcbiAgICAgICAgICAgICAgICAmJiAhY29udGFpbnMoY29kZVJlc3VsdCwgY29uZmlnLmJsYWNrbGlzdClcclxuICAgICAgICAgICAgICAgICYmIHBhc3Nlc0ZpbHRlcihjb2RlUmVzdWx0LCBjb25maWcuZmlsdGVyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGFkZFJlc3VsdDogZnVuY3Rpb24oZGF0YSwgaW1hZ2VTaXplLCBjb2RlUmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0ge307XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZXNDb25zdHJhaW50cyhjb2RlUmVzdWx0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcGFjaXR5LS07XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmNvZGVSZXN1bHQgPSBjb2RlUmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXB0dXJlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGltYWdlU2l6ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2VTaXplLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlRGVidWcuZHJhd0ltYWdlKGRhdGEsIGltYWdlU2l6ZSwgY3R4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZyYW1lID0gY2FudmFzLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2V0UmVzdWx0czogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2FuYWx5dGljcy9yZXN1bHRfY29sbGVjdG9yLmpzXG4gKiovIiwiY29uc3QgdmVjMiA9IHtcclxuICAgIGNsb25lOiByZXF1aXJlKCdnbC12ZWMyL2Nsb25lJyksXHJcbiAgICBkb3Q6IHJlcXVpcmUoJ2dsLXZlYzIvZG90JylcclxufVxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgY2x1c3RlciBmb3IgZ3JvdXBpbmcgc2ltaWxhciBvcmllbnRhdGlvbnMgb2YgZGF0YXBvaW50c1xyXG4gICAgICovXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIGNyZWF0ZTogZnVuY3Rpb24ocG9pbnQsIHRocmVzaG9sZCkge1xyXG4gICAgICAgIHZhciBwb2ludHMgPSBbXSxcclxuICAgICAgICAgICAgY2VudGVyID0ge1xyXG4gICAgICAgICAgICAgICAgcmFkOiAwLFxyXG4gICAgICAgICAgICAgICAgdmVjOiB2ZWMyLmNsb25lKFswLCAwXSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcG9pbnRNYXAgPSB7fTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHtcclxuICAgICAgICAgICAgYWRkKHBvaW50KTtcclxuICAgICAgICAgICAgdXBkYXRlQ2VudGVyKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiBhZGQocG9pbnRUb0FkZCkge1xyXG4gICAgICAgICAgICBwb2ludE1hcFtwb2ludFRvQWRkLmlkXSA9IHBvaW50VG9BZGQ7XHJcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKHBvaW50VG9BZGQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ2VudGVyKCkge1xyXG4gICAgICAgICAgICB2YXIgaSwgc3VtID0gMDtcclxuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHN1bSArPSBwb2ludHNbaV0ucmFkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNlbnRlci5yYWQgPSBzdW0gLyBwb2ludHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjZW50ZXIudmVjID0gdmVjMi5jbG9uZShbTWF0aC5jb3MoY2VudGVyLnJhZCksIE1hdGguc2luKGNlbnRlci5yYWQpXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbml0KCk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24ocG9pbnRUb0FkZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwb2ludE1hcFtwb2ludFRvQWRkLmlkXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFkZChwb2ludFRvQWRkKTtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDZW50ZXIoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZml0czogZnVuY3Rpb24ob3RoZXJQb2ludCkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgY29zaW5lIHNpbWlsYXJpdHkgdG8gY2VudGVyLWFuZ2xlXHJcbiAgICAgICAgICAgICAgICB2YXIgc2ltaWxhcml0eSA9IE1hdGguYWJzKHZlYzIuZG90KG90aGVyUG9pbnQucG9pbnQudmVjLCBjZW50ZXIudmVjKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2ltaWxhcml0eSA+IHRocmVzaG9sZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXRQb2ludHM6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50cztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZ2V0Q2VudGVyOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjZW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfSxcclxuICAgIGNyZWF0ZVBvaW50OiBmdW5jdGlvbihuZXdQb2ludCwgaWQsIHByb3BlcnR5KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmFkOiBuZXdQb2ludFtwcm9wZXJ0eV0sXHJcbiAgICAgICAgICAgIHBvaW50OiBuZXdQb2ludCxcclxuICAgICAgICAgICAgaWQ6IGlkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tbW9uL2NsdXN0ZXIuanNcbiAqKi8iLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgZXZlbnRzID0ge307XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0RXZlbnQoZXZlbnROYW1lKSB7XHJcbiAgICAgICAgaWYgKCFldmVudHNbZXZlbnROYW1lXSkge1xyXG4gICAgICAgICAgICBldmVudHNbZXZlbnROYW1lXSA9IHtcclxuICAgICAgICAgICAgICAgIHN1YnNjcmliZXJzOiBbXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXZlbnRzW2V2ZW50TmFtZV07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY2xlYXJFdmVudHMoKXtcclxuICAgICAgICBldmVudHMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBwdWJsaXNoU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbiwgZGF0YSkge1xyXG4gICAgICAgIGlmIChzdWJzY3JpcHRpb24uYXN5bmMpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi5jYWxsYmFjayhkYXRhKTtcclxuICAgICAgICAgICAgfSwgNCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLmNhbGxiYWNrKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdWJzY3JpYmUoZXZlbnQsIGNhbGxiYWNrLCBhc3luYykge1xyXG4gICAgICAgIHZhciBzdWJzY3JpcHRpb247XHJcblxyXG4gICAgICAgIGlmICggdHlwZW9mIGNhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxyXG4gICAgICAgICAgICAgICAgYXN5bmM6IGFzeW5jXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uID0gY2FsbGJhY2s7XHJcbiAgICAgICAgICAgIGlmICghc3Vic2NyaXB0aW9uLmNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBcIkNhbGxiYWNrIHdhcyBub3Qgc3BlY2lmaWVkIG9uIG9wdGlvbnNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0RXZlbnQoZXZlbnQpLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHN1YnNjcmliZTogZnVuY3Rpb24oZXZlbnQsIGNhbGxiYWNrLCBhc3luYykge1xyXG4gICAgICAgICAgICByZXR1cm4gc3Vic2NyaWJlKGV2ZW50LCBjYWxsYmFjaywgYXN5bmMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHVibGlzaDogZnVuY3Rpb24oZXZlbnROYW1lLCBkYXRhKSB7XHJcbiAgICAgICAgICAgIHZhciBldmVudCA9IGdldEV2ZW50KGV2ZW50TmFtZSksXHJcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVycyA9IGV2ZW50LnN1YnNjcmliZXJzO1xyXG5cclxuICAgICAgICAgICAgZXZlbnQuc3Vic2NyaWJlcnMgPSBzdWJzY3JpYmVycy5maWx0ZXIoZnVuY3Rpb24oc3Vic2NyaWJlcikge1xyXG4gICAgICAgICAgICAgICAgcHVibGlzaFN1YnNjcmlwdGlvbihzdWJzY3JpYmVyLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAhc3Vic2NyaWJlci5vbmNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uY2U6IGZ1bmN0aW9uKGV2ZW50LCBjYWxsYmFjaywgYXN5bmMpIHtcclxuICAgICAgICAgICAgc3Vic2NyaWJlKGV2ZW50LCB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogY2FsbGJhY2ssXHJcbiAgICAgICAgICAgICAgICBhc3luYzogYXN5bmMsXHJcbiAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdW5zdWJzY3JpYmU6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgdmFyIGV2ZW50O1xyXG5cclxuICAgICAgICAgICAgaWYgKGV2ZW50TmFtZSkge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQgPSBnZXRFdmVudChldmVudE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50ICYmIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3Vic2NyaWJlcnMgPSBldmVudC5zdWJzY3JpYmVycy5maWx0ZXIoZnVuY3Rpb24oc3Vic2NyaWJlcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJzY3JpYmVyLmNhbGxiYWNrICE9PSBjYWxsYmFjaztcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3Vic2NyaWJlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNsZWFyRXZlbnRzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59KSgpO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21tb24vZXZlbnRzLmpzXG4gKiovIiwiLyoqXHJcbiAqIENvbnN0cnVjdCByZXByZXNlbnRpbmcgYSBwYXJ0IG9mIGFub3RoZXIge0ltYWdlV3JhcHBlcn0uIFNoYXJlcyBkYXRhXHJcbiAqIGJldHdlZW4gdGhlIHBhcmVudCBhbmQgdGhlIGNoaWxkLlxyXG4gKiBAcGFyYW0gZnJvbSB7SW1hZ2VSZWZ9IFRoZSBwb3NpdGlvbiB3aGVyZSB0byBzdGFydCB0aGUge1N1YkltYWdlfSBmcm9tLiAodG9wLWxlZnQgY29ybmVyKVxyXG4gKiBAcGFyYW0gc2l6ZSB7SW1hZ2VSZWZ9IFRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgaW1hZ2VcclxuICogQHBhcmFtIEkge0ltYWdlV3JhcHBlcn0gVGhlIHtJbWFnZVdyYXBwZXJ9IHRvIHNoYXJlIGZyb21cclxuICogQHJldHVybnMge1N1YkltYWdlfSBBIHNoYXJlZCBwYXJ0IG9mIHRoZSBvcmlnaW5hbCBpbWFnZVxyXG4gKi9cclxuZnVuY3Rpb24gU3ViSW1hZ2UoZnJvbSwgc2l6ZSwgSSkge1xyXG4gICAgaWYgKCFJKSB7XHJcbiAgICAgICAgSSA9IHtcclxuICAgICAgICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgICAgICAgc2l6ZTogc2l6ZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGEgPSBJLmRhdGE7XHJcbiAgICB0aGlzLm9yaWdpbmFsU2l6ZSA9IEkuc2l6ZTtcclxuICAgIHRoaXMuSSA9IEk7XHJcblxyXG4gICAgdGhpcy5mcm9tID0gZnJvbTtcclxuICAgIHRoaXMuc2l6ZSA9IHNpemU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEaXNwbGF5cyB0aGUge1N1YkltYWdlfSBpbiBhIGdpdmVuIGNhbnZhc1xyXG4gKiBAcGFyYW0gY2FudmFzIHtDYW52YXN9IFRoZSBjYW52YXMgZWxlbWVudCB0byB3cml0ZSB0b1xyXG4gKiBAcGFyYW0gc2NhbGUge051bWJlcn0gU2NhbGUgd2hpY2ggaXMgYXBwbGllZCB0byBlYWNoIHBpeGVsLXZhbHVlXHJcbiAqL1xyXG5TdWJJbWFnZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uKGNhbnZhcywgc2NhbGUpIHtcclxuICAgIHZhciBjdHgsXHJcbiAgICAgICAgZnJhbWUsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBjdXJyZW50LFxyXG4gICAgICAgIHksXHJcbiAgICAgICAgeCxcclxuICAgICAgICBwaXhlbDtcclxuXHJcbiAgICBpZiAoIXNjYWxlKSB7XHJcbiAgICAgICAgc2NhbGUgPSAxLjA7XHJcbiAgICB9XHJcbiAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHRoaXMuc2l6ZS54O1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHRoaXMuc2l6ZS55O1xyXG4gICAgZnJhbWUgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcbiAgICBkYXRhID0gZnJhbWUuZGF0YTtcclxuICAgIGN1cnJlbnQgPSAwO1xyXG4gICAgZm9yICh5ID0gMDsgeSA8IHRoaXMuc2l6ZS55OyB5KyspIHtcclxuICAgICAgICBmb3IgKHggPSAwOyB4IDwgdGhpcy5zaXplLng7IHgrKykge1xyXG4gICAgICAgICAgICBwaXhlbCA9IHkgKiB0aGlzLnNpemUueCArIHg7XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSB0aGlzLmdldCh4LCB5KSAqIHNjYWxlO1xyXG4gICAgICAgICAgICBkYXRhW3BpeGVsICogNCArIDBdID0gY3VycmVudDtcclxuICAgICAgICAgICAgZGF0YVtwaXhlbCAqIDQgKyAxXSA9IGN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGRhdGFbcGl4ZWwgKiA0ICsgMl0gPSBjdXJyZW50O1xyXG4gICAgICAgICAgICBkYXRhW3BpeGVsICogNCArIDNdID0gMjU1O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZyYW1lLmRhdGEgPSBkYXRhO1xyXG4gICAgY3R4LnB1dEltYWdlRGF0YShmcmFtZSwgMCwgMCk7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0cmlldmVzIGEgZ2l2ZW4gcGl4ZWwgcG9zaXRpb24gZnJvbSB0aGUge1N1YkltYWdlfVxyXG4gKiBAcGFyYW0geCB7TnVtYmVyfSBUaGUgeC1wb3NpdGlvblxyXG4gKiBAcGFyYW0geSB7TnVtYmVyfSBUaGUgeS1wb3NpdGlvblxyXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JheXNjYWxlIHZhbHVlIGF0IHRoZSBwaXhlbC1wb3NpdGlvblxyXG4gKi9cclxuU3ViSW1hZ2UucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHgsIHkpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFbKHRoaXMuZnJvbS55ICsgeSkgKiB0aGlzLm9yaWdpbmFsU2l6ZS54ICsgdGhpcy5mcm9tLnggKyB4XTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBVcGRhdGVzIHRoZSB1bmRlcmx5aW5nIGRhdGEgZnJvbSBhIGdpdmVuIHtJbWFnZVdyYXBwZXJ9XHJcbiAqIEBwYXJhbSBpbWFnZSB7SW1hZ2VXcmFwcGVyfSBUaGUgdXBkYXRlZCBpbWFnZVxyXG4gKi9cclxuU3ViSW1hZ2UucHJvdG90eXBlLnVwZGF0ZURhdGEgPSBmdW5jdGlvbihpbWFnZSkge1xyXG4gICAgdGhpcy5vcmlnaW5hbFNpemUgPSBpbWFnZS5zaXplO1xyXG4gICAgdGhpcy5kYXRhID0gaW1hZ2UuZGF0YTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBVcGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2hhcmVkIGFyZWFcclxuICogQHBhcmFtIGZyb20ge3gseX0gVGhlIG5ldyBsb2NhdGlvblxyXG4gKiBAcmV0dXJucyB7U3ViSW1hZ2V9IHJldHVybnMge3RoaXN9IGZvciBwb3NzaWJsZSBjaGFpbmluZ1xyXG4gKi9cclxuU3ViSW1hZ2UucHJvdG90eXBlLnVwZGF0ZUZyb20gPSBmdW5jdGlvbihmcm9tKSB7XHJcbiAgICB0aGlzLmZyb20gPSBmcm9tO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCAoU3ViSW1hZ2UpO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21tb24vc3ViSW1hZ2UuanNcbiAqKi8iLCIvKlxyXG4gKiB0eXBlZGVmcy5qc1xyXG4gKiBOb3JtYWxpemVzIGJyb3dzZXItc3BlY2lmaWMgcHJlZml4ZXNcclxuICovXHJcblxyXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIHdpbmRvdy5yZXF1ZXN0QW5pbUZyYW1lID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSB8fFxyXG4gICAgICAgICAgICB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8XHJcbiAgICAgICAgICAgIHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcclxuICAgICAgICAgICAgd2luZG93Lm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcclxuICAgICAgICAgICAgd2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uICgvKiBmdW5jdGlvbiBGcmFtZVJlcXVlc3RDYWxsYmFjayAqLyBjYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDEwMDAgLyA2MCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICB9KSgpO1xyXG59XHJcbk1hdGguaW11bCA9IE1hdGguaW11bCB8fCBmdW5jdGlvbihhLCBiKSB7XHJcbiAgICB2YXIgYWggPSAoYSA+Pj4gMTYpICYgMHhmZmZmLFxyXG4gICAgICAgIGFsID0gYSAmIDB4ZmZmZixcclxuICAgICAgICBiaCA9IChiID4+PiAxNikgJiAweGZmZmYsXHJcbiAgICAgICAgYmwgPSBiICYgMHhmZmZmO1xyXG4gICAgLy8gdGhlIHNoaWZ0IGJ5IDAgZml4ZXMgdGhlIHNpZ24gb24gdGhlIGhpZ2ggcGFydFxyXG4gICAgLy8gdGhlIGZpbmFsIHwwIGNvbnZlcnRzIHRoZSB1bnNpZ25lZCB2YWx1ZSBpbnRvIGEgc2lnbmVkIHZhbHVlXHJcbiAgICByZXR1cm4gKChhbCAqIGJsKSArICgoKGFoICogYmwgKyBhbCAqIGJoKSA8PCAxNikgPj4+IDApIHwgMCk7XHJcbn07XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbW1vbi90eXBlZGVmcy5qc1xuICoqLyIsIm1vZHVsZS5leHBvcnRzID0ge1xyXG4gICAgaW5wdXRTdHJlYW06IHtcclxuICAgICAgICBuYW1lOiBcIkxpdmVcIixcclxuICAgICAgICB0eXBlOiBcIkxpdmVTdHJlYW1cIixcclxuICAgICAgICBjb25zdHJhaW50czoge1xyXG4gICAgICAgICAgICB3aWR0aDogNjQwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ4MCxcclxuICAgICAgICAgICAgLy8gYXNwZWN0UmF0aW86IDY0MC80ODAsIC8vIG9wdGlvbmFsXHJcbiAgICAgICAgICAgIGZhY2luZ01vZGU6IFwiZW52aXJvbm1lbnRcIiwgLy8gb3IgdXNlclxyXG4gICAgICAgICAgICAvLyBkZXZpY2VJZDogXCIzODc0NTk4MzQ1NzM4NzU5ODM3NTk4Mzc1OTgzNFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBhcmVhOiB7XHJcbiAgICAgICAgICAgIHRvcDogXCIwJVwiLFxyXG4gICAgICAgICAgICByaWdodDogXCIwJVwiLFxyXG4gICAgICAgICAgICBsZWZ0OiBcIjAlXCIsXHJcbiAgICAgICAgICAgIGJvdHRvbTogXCIwJVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaW5nbGVDaGFubmVsOiBmYWxzZSAvLyB0cnVlOiBvbmx5IHRoZSByZWQgY29sb3ItY2hhbm5lbCBpcyByZWFkXHJcbiAgICB9LFxyXG4gICAgbG9jYXRlOiB0cnVlLFxyXG4gICAgbnVtT2ZXb3JrZXJzOiAwLFxyXG4gICAgZGVjb2Rlcjoge1xyXG4gICAgICAgIHJlYWRlcnM6IFtcclxuICAgICAgICAgICAgJ2NvZGVfMTI4X3JlYWRlcidcclxuICAgICAgICBdLFxyXG4gICAgICAgIGRlYnVnOiB7XHJcbiAgICAgICAgICAgIGRyYXdCb3VuZGluZ0JveDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNob3dGcmVxdWVuY3k6IGZhbHNlLFxyXG4gICAgICAgICAgICBkcmF3U2NhbmxpbmU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzaG93UGF0dGVybjogZmFsc2VcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbG9jYXRvcjoge1xyXG4gICAgICAgIGhhbGZTYW1wbGU6IHRydWUsXHJcbiAgICAgICAgcGF0Y2hTaXplOiBcIm1lZGl1bVwiLCAvLyB4LXNtYWxsLCBzbWFsbCwgbWVkaXVtLCBsYXJnZSwgeC1sYXJnZVxyXG4gICAgICAgIGRlYnVnOiB7XHJcbiAgICAgICAgICAgIHNob3dDYW52YXM6IGZhbHNlLFxyXG4gICAgICAgICAgICBzaG93UGF0Y2hlczogZmFsc2UsXHJcbiAgICAgICAgICAgIHNob3dGb3VuZFBhdGNoZXM6IGZhbHNlLFxyXG4gICAgICAgICAgICBzaG93U2tlbGV0b246IGZhbHNlLFxyXG4gICAgICAgICAgICBzaG93TGFiZWxzOiBmYWxzZSxcclxuICAgICAgICAgICAgc2hvd1BhdGNoTGFiZWxzOiBmYWxzZSxcclxuICAgICAgICAgICAgc2hvd1JlbWFpbmluZ1BhdGNoTGFiZWxzOiBmYWxzZSxcclxuICAgICAgICAgICAgYm94RnJvbVBhdGNoZXM6IHtcclxuICAgICAgICAgICAgICAgIHNob3dUcmFuc2Zvcm1lZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBzaG93VHJhbnNmb3JtZWRCb3g6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0JCOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb25maWcvY29uZmlnLmRldi5qc1xuICoqLyIsImxldCBjb25maWc7XHJcblxyXG5pZiAoRU5WLmRldmVsb3BtZW50KXtcclxuICAgIGNvbmZpZyA9IHJlcXVpcmUoJy4vY29uZmlnLmRldi5qcycpO1xyXG59IGVsc2UgaWYgKEVOVi5ub2RlKSB7XHJcbiAgICBjb25maWcgPSByZXF1aXJlKCcuL2NvbmZpZy5ub2RlLmpzJyk7XHJcbn0gZWxzZSB7XHJcbiAgICBjb25maWcgPSByZXF1aXJlKCcuL2NvbmZpZy5wcm9kLmpzJyk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNvbmZpZztcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29uZmlnL2NvbmZpZy5qc1xuICoqLyIsImltcG9ydCBCcmVzZW5oYW0gZnJvbSAnLi9icmVzZW5oYW0nO1xyXG5pbXBvcnQgSW1hZ2VEZWJ1ZyBmcm9tICcuLi9jb21tb24vaW1hZ2VfZGVidWcnO1xyXG5pbXBvcnQgQ29kZTEyOFJlYWRlciBmcm9tICcuLi9yZWFkZXIvY29kZV8xMjhfcmVhZGVyJztcclxuaW1wb3J0IEVBTlJlYWRlciBmcm9tICcuLi9yZWFkZXIvZWFuX3JlYWRlcic7XHJcbmltcG9ydCBDb2RlMzlSZWFkZXIgZnJvbSAnLi4vcmVhZGVyL2NvZGVfMzlfcmVhZGVyJztcclxuaW1wb3J0IENvZGUzOVZJTlJlYWRlciBmcm9tICcuLi9yZWFkZXIvY29kZV8zOV92aW5fcmVhZGVyJztcclxuaW1wb3J0IENvZGFiYXJSZWFkZXIgZnJvbSAnLi4vcmVhZGVyL2NvZGFiYXJfcmVhZGVyJztcclxuaW1wb3J0IFVQQ1JlYWRlciBmcm9tICcuLi9yZWFkZXIvdXBjX3JlYWRlcic7XHJcbmltcG9ydCBFQU44UmVhZGVyIGZyb20gJy4uL3JlYWRlci9lYW5fOF9yZWFkZXInO1xyXG5pbXBvcnQgVVBDRVJlYWRlciBmcm9tICcuLi9yZWFkZXIvdXBjX2VfcmVhZGVyJztcclxuaW1wb3J0IEkyb2Y1UmVhZGVyIGZyb20gJy4uL3JlYWRlci9pMm9mNV9yZWFkZXInO1xyXG5cclxuY29uc3QgUkVBREVSUyA9IHtcclxuICAgIGNvZGVfMTI4X3JlYWRlcjogQ29kZTEyOFJlYWRlcixcclxuICAgIGVhbl9yZWFkZXI6IEVBTlJlYWRlcixcclxuICAgIGVhbl84X3JlYWRlcjogRUFOOFJlYWRlcixcclxuICAgIGNvZGVfMzlfcmVhZGVyOiBDb2RlMzlSZWFkZXIsXHJcbiAgICBjb2RlXzM5X3Zpbl9yZWFkZXI6IENvZGUzOVZJTlJlYWRlcixcclxuICAgIGNvZGFiYXJfcmVhZGVyOiBDb2RhYmFyUmVhZGVyLFxyXG4gICAgdXBjX3JlYWRlcjogVVBDUmVhZGVyLFxyXG4gICAgdXBjX2VfcmVhZGVyOiBVUENFUmVhZGVyLFxyXG4gICAgaTJvZjVfcmVhZGVyOiBJMm9mNVJlYWRlclxyXG59O1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBjcmVhdGU6IGZ1bmN0aW9uKGNvbmZpZywgaW5wdXRJbWFnZVdyYXBwZXIpIHtcclxuICAgICAgICB2YXIgX2NhbnZhcyA9IHtcclxuICAgICAgICAgICAgICAgIGN0eDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXk6IG51bGxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBkb206IHtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3k6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5OiBudWxsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF9iYXJjb2RlUmVhZGVycyA9IFtdO1xyXG5cclxuICAgICAgICBpbml0Q2FudmFzKCk7XHJcbiAgICAgICAgaW5pdFJlYWRlcnMoKTtcclxuICAgICAgICBpbml0Q29uZmlnKCk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGluaXRDYW52YXMoKSB7XHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgdmFyICRkZWJ1ZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjZGVidWcuZGV0ZWN0aW9uXCIpO1xyXG4gICAgICAgICAgICAgICAgX2NhbnZhcy5kb20uZnJlcXVlbmN5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImNhbnZhcy5mcmVxdWVuY3lcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9jYW52YXMuZG9tLmZyZXF1ZW5jeSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jYW52YXMuZG9tLmZyZXF1ZW5jeSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NhbnZhcy5kb20uZnJlcXVlbmN5LmNsYXNzTmFtZSA9IFwiZnJlcXVlbmN5XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1Zykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkZGVidWcuYXBwZW5kQ2hpbGQoX2NhbnZhcy5kb20uZnJlcXVlbmN5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfY2FudmFzLmN0eC5mcmVxdWVuY3kgPSBfY2FudmFzLmRvbS5mcmVxdWVuY3kuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIF9jYW52YXMuZG9tLnBhdHRlcm4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiY2FudmFzLnBhdHRlcm5CdWZmZXJcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9jYW52YXMuZG9tLnBhdHRlcm4pIHtcclxuICAgICAgICAgICAgICAgICAgICBfY2FudmFzLmRvbS5wYXR0ZXJuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBfY2FudmFzLmRvbS5wYXR0ZXJuLmNsYXNzTmFtZSA9IFwicGF0dGVybkJ1ZmZlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGRlYnVnLmFwcGVuZENoaWxkKF9jYW52YXMuZG9tLnBhdHRlcm4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9jYW52YXMuY3R4LnBhdHRlcm4gPSBfY2FudmFzLmRvbS5wYXR0ZXJuLmdldENvbnRleHQoXCIyZFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBfY2FudmFzLmRvbS5vdmVybGF5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImNhbnZhcy5kcmF3aW5nQnVmZmVyXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9jYW52YXMuZG9tLm92ZXJsYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICBfY2FudmFzLmN0eC5vdmVybGF5ID0gX2NhbnZhcy5kb20ub3ZlcmxheS5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGluaXRSZWFkZXJzKCkge1xyXG4gICAgICAgICAgICBjb25maWcucmVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHJlYWRlckNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlYWRlcixcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0ge307XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZWFkZXJDb25maWcgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyID0gcmVhZGVyQ29uZmlnLmZvcm1hdDtcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gcmVhZGVyQ29uZmlnLmNvbmZpZztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlYWRlckNvbmZpZyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSByZWFkZXJDb25maWc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJCZWZvcmUgcmVnaXN0ZXJpbmcgcmVhZGVyOiBcIiwgcmVhZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9iYXJjb2RlUmVhZGVycy5wdXNoKG5ldyBSRUFERVJTW3JlYWRlcl0oY29uZmlndXJhdGlvbikpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJSZWdpc3RlcmVkIFJlYWRlcnM6IFwiICsgX2JhcmNvZGVSZWFkZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgocmVhZGVyKSA9PiBKU09OLnN0cmluZ2lmeSh7Zm9ybWF0OiByZWFkZXIuRk9STUFULCBjb25maWc6IHJlYWRlci5jb25maWd9KSlcclxuICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGluaXRDb25maWcoKSB7XHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGksXHJcbiAgICAgICAgICAgICAgICAgICAgdmlzID0gW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogX2NhbnZhcy5kb20uZnJlcXVlbmN5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wOiBjb25maWcuZGVidWcuc2hvd0ZyZXF1ZW5jeVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogX2NhbnZhcy5kb20ucGF0dGVybixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcDogY29uZmlnLmRlYnVnLnNob3dQYXR0ZXJuXHJcbiAgICAgICAgICAgICAgICAgICAgfV07XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHZpcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2aXNbaV0ucHJvcCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNbaV0ubm9kZS5zdHlsZS5kaXNwbGF5ID0gXCJibG9ja1wiO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc1tpXS5ub2RlLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIGV4dGVuZCB0aGUgbGluZSBvbiBib3RoIGVuZHNcclxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBsaW5lXHJcbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGFuZ2xlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgZnVuY3Rpb24gZ2V0RXh0ZW5kZWRMaW5lKGxpbmUsIGFuZ2xlLCBleHQpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZXh0ZW5kTGluZShhbW91bnQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBleHRlbnNpb24gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeTogYW1vdW50ICogTWF0aC5zaW4oYW5nbGUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHg6IGFtb3VudCAqIE1hdGguY29zKGFuZ2xlKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBsaW5lWzBdLnkgLT0gZXh0ZW5zaW9uLnk7XHJcbiAgICAgICAgICAgICAgICBsaW5lWzBdLnggLT0gZXh0ZW5zaW9uLng7XHJcbiAgICAgICAgICAgICAgICBsaW5lWzFdLnkgKz0gZXh0ZW5zaW9uLnk7XHJcbiAgICAgICAgICAgICAgICBsaW5lWzFdLnggKz0gZXh0ZW5zaW9uLng7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIGluc2lkZSBpbWFnZVxyXG4gICAgICAgICAgICBleHRlbmRMaW5lKGV4dCk7XHJcbiAgICAgICAgICAgIHdoaWxlIChleHQgPiAxICYmICghaW5wdXRJbWFnZVdyYXBwZXIuaW5JbWFnZVdpdGhCb3JkZXIobGluZVswXSwgMClcclxuICAgICAgICAgICAgICAgICAgICB8fCAhaW5wdXRJbWFnZVdyYXBwZXIuaW5JbWFnZVdpdGhCb3JkZXIobGluZVsxXSwgMCkpKSB7XHJcbiAgICAgICAgICAgICAgICBleHQgLT0gTWF0aC5jZWlsKGV4dCAvIDIpO1xyXG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZSgtZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbGluZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldExpbmUoYm94KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbe1xyXG4gICAgICAgICAgICAgICAgeDogKGJveFsxXVswXSAtIGJveFswXVswXSkgLyAyICsgYm94WzBdWzBdLFxyXG4gICAgICAgICAgICAgICAgeTogKGJveFsxXVsxXSAtIGJveFswXVsxXSkgLyAyICsgYm94WzBdWzFdXHJcbiAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgIHg6IChib3hbM11bMF0gLSBib3hbMl1bMF0pIC8gMiArIGJveFsyXVswXSxcclxuICAgICAgICAgICAgICAgIHk6IChib3hbM11bMV0gLSBib3hbMl1bMV0pIC8gMiArIGJveFsyXVsxXVxyXG4gICAgICAgICAgICB9XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHRyeURlY29kZShsaW5lKSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgaSxcclxuICAgICAgICAgICAgICAgIGJhcmNvZGVMaW5lID0gQnJlc2VuaGFtLmdldEJhcmNvZGVMaW5lKGlucHV0SW1hZ2VXcmFwcGVyLCBsaW5lWzBdLCBsaW5lWzFdKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgY29uZmlnLmRlYnVnLnNob3dGcmVxdWVuY3kpIHtcclxuICAgICAgICAgICAgICAgIEltYWdlRGVidWcuZHJhd1BhdGgobGluZSwge3g6ICd4JywgeTogJ3knfSwgX2NhbnZhcy5jdHgub3ZlcmxheSwge2NvbG9yOiAncmVkJywgbGluZVdpZHRoOiAzfSk7XHJcbiAgICAgICAgICAgICAgICBCcmVzZW5oYW0uZGVidWcucHJpbnRGcmVxdWVuY3koYmFyY29kZUxpbmUubGluZSwgX2NhbnZhcy5kb20uZnJlcXVlbmN5KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQnJlc2VuaGFtLnRvQmluYXJ5TGluZShiYXJjb2RlTGluZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIGNvbmZpZy5kZWJ1Zy5zaG93UGF0dGVybikge1xyXG4gICAgICAgICAgICAgICAgQnJlc2VuaGFtLmRlYnVnLnByaW50UGF0dGVybihiYXJjb2RlTGluZS5saW5lLCBfY2FudmFzLmRvbS5wYXR0ZXJuKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBfYmFyY29kZVJlYWRlcnMubGVuZ3RoICYmIHJlc3VsdCA9PT0gbnVsbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBfYmFyY29kZVJlYWRlcnNbaV0uZGVjb2RlUGF0dGVybihiYXJjb2RlTGluZS5saW5lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBjb2RlUmVzdWx0OiByZXN1bHQsXHJcbiAgICAgICAgICAgICAgICBiYXJjb2RlTGluZTogYmFyY29kZUxpbmVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFRoaXMgbWV0aG9kIHNsaWNlcyB0aGUgZ2l2ZW4gYXJlYSBhcGFydCBhbmQgdHJpZXMgdG8gZGV0ZWN0IGEgYmFyY29kZS1wYXR0ZXJuXHJcbiAgICAgICAgICogZm9yIGVhY2ggc2xpY2UuIEl0IHJldHVybnMgdGhlIGRlY29kZWQgYmFyY29kZSwgb3IgbnVsbCBpZiBub3RoaW5nIHdhcyBmb3VuZFxyXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGJveFxyXG4gICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGxpbmVcclxuICAgICAgICAgKiBAcGFyYW0ge051bWJlcn0gbGluZUFuZ2xlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgZnVuY3Rpb24gdHJ5RGVjb2RlQnJ1dGVGb3JjZShib3gsIGxpbmUsIGxpbmVBbmdsZSkge1xyXG4gICAgICAgICAgICB2YXIgc2lkZUxlbmd0aCA9IE1hdGguc3FydChNYXRoLnBvdyhib3hbMV1bMF0gLSBib3hbMF1bMF0sIDIpICsgTWF0aC5wb3coKGJveFsxXVsxXSAtIGJveFswXVsxXSksIDIpKSxcclxuICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICBzbGljZXMgPSAxNixcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG51bGwsXHJcbiAgICAgICAgICAgICAgICBkaXIsXHJcbiAgICAgICAgICAgICAgICBleHRlbnNpb24sXHJcbiAgICAgICAgICAgICAgICB4ZGlyID0gTWF0aC5zaW4obGluZUFuZ2xlKSxcclxuICAgICAgICAgICAgICAgIHlkaXIgPSBNYXRoLmNvcyhsaW5lQW5nbGUpO1xyXG5cclxuICAgICAgICAgICAgZm9yICggaSA9IDE7IGkgPCBzbGljZXMgJiYgcmVzdWx0ID09PSBudWxsOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIC8vIG1vdmUgbGluZSBwZXJwZW5kaWN1bGFyIHRvIGFuZ2xlXHJcbiAgICAgICAgICAgICAgICBkaXIgPSBzaWRlTGVuZ3RoIC8gc2xpY2VzICogaSAqIChpICUgMiA9PT0gMCA/IC0xIDogMSk7XHJcbiAgICAgICAgICAgICAgICBleHRlbnNpb24gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeTogZGlyICogeGRpcixcclxuICAgICAgICAgICAgICAgICAgICB4OiBkaXIgKiB5ZGlyXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgbGluZVswXS55ICs9IGV4dGVuc2lvbi54O1xyXG4gICAgICAgICAgICAgICAgbGluZVswXS54IC09IGV4dGVuc2lvbi55O1xyXG4gICAgICAgICAgICAgICAgbGluZVsxXS55ICs9IGV4dGVuc2lvbi54O1xyXG4gICAgICAgICAgICAgICAgbGluZVsxXS54IC09IGV4dGVuc2lvbi55O1xyXG5cclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRyeURlY29kZShsaW5lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ2V0TGluZUxlbmd0aChsaW5lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoXHJcbiAgICAgICAgICAgICAgICBNYXRoLnBvdyhNYXRoLmFicyhsaW5lWzFdLnkgLSBsaW5lWzBdLnkpLCAyKSArXHJcbiAgICAgICAgICAgICAgICBNYXRoLnBvdyhNYXRoLmFicyhsaW5lWzFdLnggLSBsaW5lWzBdLngpLCAyKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBXaXRoIHRoZSBoZWxwIG9mIHRoZSBjb25maWd1cmVkIHJlYWRlcnMgKENvZGUxMjggb3IgRUFOKSB0aGlzIGZ1bmN0aW9uIHRyaWVzIHRvIGRldGVjdCBhXHJcbiAgICAgICAgICogdmFsaWQgYmFyY29kZSBwYXR0ZXJuIHdpdGhpbiB0aGUgZ2l2ZW4gYXJlYS5cclxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gYm94IFRoZSBhcmVhIHRvIHNlYXJjaCBpblxyXG4gICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IHRoZSByZXN1bHQge2NvZGVSZXN1bHQsIGxpbmUsIGFuZ2xlLCBwYXR0ZXJuLCB0aHJlc2hvbGR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgZnVuY3Rpb24gZGVjb2RlRnJvbUJvdW5kaW5nQm94KGJveCkge1xyXG4gICAgICAgICAgICB2YXIgbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVBbmdsZSxcclxuICAgICAgICAgICAgICAgIGN0eCA9IF9jYW52YXMuY3R4Lm92ZXJsYXksXHJcbiAgICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICAgICBsaW5lTGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5kZWJ1Zy5kcmF3Qm91bmRpbmdCb3ggJiYgY3R4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgSW1hZ2VEZWJ1Zy5kcmF3UGF0aChib3gsIHt4OiAwLCB5OiAxfSwgY3R4LCB7Y29sb3I6IFwiYmx1ZVwiLCBsaW5lV2lkdGg6IDJ9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGluZSA9IGdldExpbmUoYm94KTtcclxuICAgICAgICAgICAgbGluZUxlbmd0aCA9IGdldExpbmVMZW5ndGgobGluZSk7XHJcbiAgICAgICAgICAgIGxpbmVBbmdsZSA9IE1hdGguYXRhbjIobGluZVsxXS55IC0gbGluZVswXS55LCBsaW5lWzFdLnggLSBsaW5lWzBdLngpO1xyXG4gICAgICAgICAgICBsaW5lID0gZ2V0RXh0ZW5kZWRMaW5lKGxpbmUsIGxpbmVBbmdsZSwgTWF0aC5mbG9vcihsaW5lTGVuZ3RoICogMC4xKSk7XHJcbiAgICAgICAgICAgIGlmIChsaW5lID09PSBudWxsKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXN1bHQgPSB0cnlEZWNvZGUobGluZSk7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRyeURlY29kZUJydXRlRm9yY2UoYm94LCBsaW5lLCBsaW5lQW5nbGUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiByZXN1bHQgJiYgY29uZmlnLmRlYnVnLmRyYXdTY2FubGluZSAmJiBjdHgpIHtcclxuICAgICAgICAgICAgICAgIEltYWdlRGVidWcuZHJhd1BhdGgobGluZSwge3g6ICd4JywgeTogJ3knfSwgY3R4LCB7Y29sb3I6ICdyZWQnLCBsaW5lV2lkdGg6IDN9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGNvZGVSZXN1bHQ6IHJlc3VsdC5jb2RlUmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgbGluZTogbGluZSxcclxuICAgICAgICAgICAgICAgIGFuZ2xlOiBsaW5lQW5nbGUsXHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiByZXN1bHQuYmFyY29kZUxpbmUubGluZSxcclxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogcmVzdWx0LmJhcmNvZGVMaW5lLnRocmVzaG9sZFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZGVjb2RlRnJvbUJvdW5kaW5nQm94OiBmdW5jdGlvbihib3gpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWNvZGVGcm9tQm91bmRpbmdCb3goYm94KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVjb2RlRnJvbUJvdW5kaW5nQm94ZXM6IGZ1bmN0aW9uKGJveGVzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaSwgcmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgICAgIGJhcmNvZGVzID0gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgPSBjb25maWcubXVsdGlwbGU7XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBib3hlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJveCA9IGJveGVzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlY29kZUZyb21Cb3VuZGluZ0JveChib3gpIHx8IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ib3ggPSBib3g7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYXJjb2Rlcy5wdXNoKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuY29kZVJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYXJjb2Rlc1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldFJlYWRlcnM6IGZ1bmN0aW9uKHJlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZy5yZWFkZXJzID0gcmVhZGVycztcclxuICAgICAgICAgICAgICAgIF9iYXJjb2RlUmVhZGVycy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgaW5pdFJlYWRlcnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2RlY29kZXIvYmFyY29kZV9kZWNvZGVyLmpzXG4gKiovIiwiaW1wb3J0IEltYWdlV3JhcHBlciBmcm9tICcuLi9jb21tb24vaW1hZ2Vfd3JhcHBlcic7XHJcblxyXG52YXIgQnJlc2VuaGFtID0ge307XHJcblxyXG52YXIgU2xvcGUgPSB7XHJcbiAgICBESVI6IHtcclxuICAgICAgICBVUDogMSxcclxuICAgICAgICBET1dOOiAtMVxyXG4gICAgfVxyXG59O1xyXG4vKipcclxuICogU2NhbnMgYSBsaW5lIG9mIHRoZSBnaXZlbiBpbWFnZSBmcm9tIHBvaW50IHAxIHRvIHAyIGFuZCByZXR1cm5zIGEgcmVzdWx0IG9iamVjdCBjb250YWluaW5nXHJcbiAqIGdyYXktc2NhbGUgdmFsdWVzICgwLTI1NSkgb2YgdGhlIHVuZGVybHlpbmcgcGl4ZWxzIGluIGFkZGl0aW9uIHRvIHRoZSBtaW5cclxuICogYW5kIG1heCB2YWx1ZXMuXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbWFnZVdyYXBwZXJcclxuICogQHBhcmFtIHtPYmplY3R9IHAxIFRoZSBzdGFydCBwb2ludCB7eCx5fVxyXG4gKiBAcGFyYW0ge09iamVjdH0gcDIgVGhlIGVuZCBwb2ludCB7eCx5fVxyXG4gKiBAcmV0dXJucyB7bGluZSwgbWluLCBtYXh9XHJcbiAqL1xyXG5CcmVzZW5oYW0uZ2V0QmFyY29kZUxpbmUgPSBmdW5jdGlvbihpbWFnZVdyYXBwZXIsIHAxLCBwMikge1xyXG4gICAgdmFyIHgwID0gcDEueCB8IDAsXHJcbiAgICAgICAgeTAgPSBwMS55IHwgMCxcclxuICAgICAgICB4MSA9IHAyLnggfCAwLFxyXG4gICAgICAgIHkxID0gcDIueSB8IDAsXHJcbiAgICAgICAgc3RlZXAgPSBNYXRoLmFicyh5MSAtIHkwKSA+IE1hdGguYWJzKHgxIC0geDApLFxyXG4gICAgICAgIGRlbHRheCxcclxuICAgICAgICBkZWx0YXksXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgeXN0ZXAsXHJcbiAgICAgICAgeSxcclxuICAgICAgICB0bXAsXHJcbiAgICAgICAgeCxcclxuICAgICAgICBsaW5lID0gW10sXHJcbiAgICAgICAgaW1hZ2VEYXRhID0gaW1hZ2VXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgd2lkdGggPSBpbWFnZVdyYXBwZXIuc2l6ZS54LFxyXG4gICAgICAgIHN1bSA9IDAsXHJcbiAgICAgICAgdmFsLFxyXG4gICAgICAgIG1pbiA9IDI1NSxcclxuICAgICAgICBtYXggPSAwO1xyXG5cclxuICAgIGZ1bmN0aW9uIHJlYWQoYSwgYikge1xyXG4gICAgICAgIHZhbCA9IGltYWdlRGF0YVtiICogd2lkdGggKyBhXTtcclxuICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgIG1pbiA9IHZhbCA8IG1pbiA/IHZhbCA6IG1pbjtcclxuICAgICAgICBtYXggPSB2YWwgPiBtYXggPyB2YWwgOiBtYXg7XHJcbiAgICAgICAgbGluZS5wdXNoKHZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ZWVwKSB7XHJcbiAgICAgICAgdG1wID0geDA7XHJcbiAgICAgICAgeDAgPSB5MDtcclxuICAgICAgICB5MCA9IHRtcDtcclxuXHJcbiAgICAgICAgdG1wID0geDE7XHJcbiAgICAgICAgeDEgPSB5MTtcclxuICAgICAgICB5MSA9IHRtcDtcclxuICAgIH1cclxuICAgIGlmICh4MCA+IHgxKSB7XHJcbiAgICAgICAgdG1wID0geDA7XHJcbiAgICAgICAgeDAgPSB4MTtcclxuICAgICAgICB4MSA9IHRtcDtcclxuXHJcbiAgICAgICAgdG1wID0geTA7XHJcbiAgICAgICAgeTAgPSB5MTtcclxuICAgICAgICB5MSA9IHRtcDtcclxuICAgIH1cclxuICAgIGRlbHRheCA9IHgxIC0geDA7XHJcbiAgICBkZWx0YXkgPSBNYXRoLmFicyh5MSAtIHkwKTtcclxuICAgIGVycm9yID0gKGRlbHRheCAvIDIpIHwgMDtcclxuICAgIHkgPSB5MDtcclxuICAgIHlzdGVwID0geTAgPCB5MSA/IDEgOiAtMTtcclxuICAgIGZvciAoIHggPSB4MDsgeCA8IHgxOyB4KyspIHtcclxuICAgICAgICBpZiAoc3RlZXApe1xyXG4gICAgICAgICAgICByZWFkKHksIHgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlYWQoeCwgeSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVycm9yID0gZXJyb3IgLSBkZWx0YXk7XHJcbiAgICAgICAgaWYgKGVycm9yIDwgMCkge1xyXG4gICAgICAgICAgICB5ID0geSArIHlzdGVwO1xyXG4gICAgICAgICAgICBlcnJvciA9IGVycm9yICsgZGVsdGF4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGxpbmU6IGxpbmUsXHJcbiAgICAgICAgbWluOiBtaW4sXHJcbiAgICAgICAgbWF4OiBtYXhcclxuICAgIH07XHJcbn07XHJcblxyXG4vKipcclxuICogQ29udmVydHMgdGhlIHJlc3VsdCBmcm9tIGdldEJhcmNvZGVMaW5lIGludG8gYSBiaW5hcnkgcmVwcmVzZW50YXRpb25cclxuICogYWxzbyBjb25zaWRlcmluZyB0aGUgZnJlcXVlbmN5IGFuZCBzbG9wZSBvZiB0aGUgc2lnbmFsIGZvciBtb3JlIHJvYnVzdCByZXN1bHRzXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSByZXN1bHQge2xpbmUsIG1pbiwgbWF4fVxyXG4gKi9cclxuQnJlc2VuaGFtLnRvQmluYXJ5TGluZSA9IGZ1bmN0aW9uKHJlc3VsdCkge1xyXG4gICAgdmFyIG1pbiA9IHJlc3VsdC5taW4sXHJcbiAgICAgICAgbWF4ID0gcmVzdWx0Lm1heCxcclxuICAgICAgICBsaW5lID0gcmVzdWx0LmxpbmUsXHJcbiAgICAgICAgc2xvcGUsXHJcbiAgICAgICAgc2xvcGUyLFxyXG4gICAgICAgIGNlbnRlciA9IG1pbiArIChtYXggLSBtaW4pIC8gMixcclxuICAgICAgICBleHRyZW1hID0gW10sXHJcbiAgICAgICAgY3VycmVudERpcixcclxuICAgICAgICBkaXIsXHJcbiAgICAgICAgdGhyZXNob2xkID0gKG1heCAtIG1pbikgLyAxMixcclxuICAgICAgICByVGhyZXNob2xkID0gLXRocmVzaG9sZCxcclxuICAgICAgICBpLFxyXG4gICAgICAgIGo7XHJcblxyXG4gICAgLy8gMS4gZmluZCBleHRyZW1hXHJcbiAgICBjdXJyZW50RGlyID0gbGluZVswXSA+IGNlbnRlciA/IFNsb3BlLkRJUi5VUCA6IFNsb3BlLkRJUi5ET1dOO1xyXG4gICAgZXh0cmVtYS5wdXNoKHtcclxuICAgICAgICBwb3M6IDAsXHJcbiAgICAgICAgdmFsOiBsaW5lWzBdXHJcbiAgICB9KTtcclxuICAgIGZvciAoIGkgPSAwOyBpIDwgbGluZS5sZW5ndGggLSAyOyBpKyspIHtcclxuICAgICAgICBzbG9wZSA9IChsaW5lW2kgKyAxXSAtIGxpbmVbaV0pO1xyXG4gICAgICAgIHNsb3BlMiA9IChsaW5lW2kgKyAyXSAtIGxpbmVbaSArIDFdKTtcclxuICAgICAgICBpZiAoKHNsb3BlICsgc2xvcGUyKSA8IHJUaHJlc2hvbGQgJiYgbGluZVtpICsgMV0gPCAoY2VudGVyICogMS41KSkge1xyXG4gICAgICAgICAgICBkaXIgPSBTbG9wZS5ESVIuRE9XTjtcclxuICAgICAgICB9IGVsc2UgaWYgKChzbG9wZSArIHNsb3BlMikgPiB0aHJlc2hvbGQgJiYgbGluZVtpICsgMV0gPiAoY2VudGVyICogMC41KSkge1xyXG4gICAgICAgICAgICBkaXIgPSBTbG9wZS5ESVIuVVA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGlyID0gY3VycmVudERpcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjdXJyZW50RGlyICE9PSBkaXIpIHtcclxuICAgICAgICAgICAgZXh0cmVtYS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBvczogaSxcclxuICAgICAgICAgICAgICAgIHZhbDogbGluZVtpXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY3VycmVudERpciA9IGRpcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBleHRyZW1hLnB1c2goe1xyXG4gICAgICAgIHBvczogbGluZS5sZW5ndGgsXHJcbiAgICAgICAgdmFsOiBsaW5lW2xpbmUubGVuZ3RoIC0gMV1cclxuICAgIH0pO1xyXG5cclxuICAgIGZvciAoIGogPSBleHRyZW1hWzBdLnBvczsgaiA8IGV4dHJlbWFbMV0ucG9zOyBqKyspIHtcclxuICAgICAgICBsaW5lW2pdID0gbGluZVtqXSA+IGNlbnRlciA/IDAgOiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGl0ZXJhdGUgb3ZlciBleHRyZW1hIGFuZCBjb252ZXJ0IHRvIGJpbmFyeSBiYXNlZCBvbiBhdmcgYmV0d2VlbiBtaW5tYXhcclxuICAgIGZvciAoIGkgPSAxOyBpIDwgZXh0cmVtYS5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBpZiAoZXh0cmVtYVtpICsgMV0udmFsID4gZXh0cmVtYVtpXS52YWwpIHtcclxuICAgICAgICAgICAgdGhyZXNob2xkID0gKGV4dHJlbWFbaV0udmFsICsgKChleHRyZW1hW2kgKyAxXS52YWwgLSBleHRyZW1hW2ldLnZhbCkgLyAzKSAqIDIpIHwgMDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJlc2hvbGQgPSAoZXh0cmVtYVtpICsgMV0udmFsICsgKChleHRyZW1hW2ldLnZhbCAtIGV4dHJlbWFbaSArIDFdLnZhbCkgLyAzKSkgfCAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yICggaiA9IGV4dHJlbWFbaV0ucG9zOyBqIDwgZXh0cmVtYVtpICsgMV0ucG9zOyBqKyspIHtcclxuICAgICAgICAgICAgbGluZVtqXSA9IGxpbmVbal0gPiB0aHJlc2hvbGQgPyAwIDogMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBsaW5lOiBsaW5lLFxyXG4gICAgICAgIHRocmVzaG9sZDogdGhyZXNob2xkXHJcbiAgICB9O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFVzZWQgZm9yIGRldmVsb3BtZW50IG9ubHlcclxuICovXHJcbkJyZXNlbmhhbS5kZWJ1ZyA9IHtcclxuICAgIHByaW50RnJlcXVlbmN5OiBmdW5jdGlvbihsaW5lLCBjYW52YXMpIHtcclxuICAgICAgICB2YXIgaSxcclxuICAgICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgICBjYW52YXMud2lkdGggPSBsaW5lLmxlbmd0aDtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gMjU2O1xyXG5cclxuICAgICAgICBjdHguYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gXCJibHVlXCI7XHJcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsaW5lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGN0eC5tb3ZlVG8oaSwgMjU1KTtcclxuICAgICAgICAgICAgY3R4LmxpbmVUbyhpLCAyNTUgLSBsaW5lW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3R4LnN0cm9rZSgpO1xyXG4gICAgICAgIGN0eC5jbG9zZVBhdGgoKTtcclxuICAgIH0sXHJcblxyXG4gICAgcHJpbnRQYXR0ZXJuOiBmdW5jdGlvbihsaW5lLCBjYW52YXMpIHtcclxuICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKSwgaTtcclxuXHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gbGluZS5sZW5ndGg7XHJcbiAgICAgICAgY3R4LmZpbGxDb2xvciA9IFwiYmxhY2tcIjtcclxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGxpbmUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGxpbmVbaV0gPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdChpLCAwLCAxLCAxMDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQnJlc2VuaGFtO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9kZWNvZGVyL2JyZXNlbmhhbS5qc1xuICoqLyIsImltcG9ydCB7bWVyZ2UsIHBpY2t9IGZyb20gJ2xvZGFzaCc7XHJcblxyXG52YXIgc3RyZWFtUmVmLFxyXG4gICAgbG9hZGVkRGF0YUhhbmRsZXI7XHJcblxyXG5mdW5jdGlvbiB3YWl0Rm9yVmlkZW8odmlkZW8pIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgbGV0IGF0dGVtcHRzID0gMTA7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGNoZWNrVmlkZW8oKSB7XHJcbiAgICAgICAgICAgIGlmIChhdHRlbXB0cyA+IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICh2aWRlby52aWRlb1dpZHRoID4gMCAmJiB2aWRlby52aWRlb0hlaWdodCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHZpZGVvLnZpZGVvV2lkdGggKyBcInB4IHggXCIgKyB2aWRlby52aWRlb0hlaWdodCArIFwicHhcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2hlY2tWaWRlbywgNTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdCgnVW5hYmxlIHRvIHBsYXkgdmlkZW8gc3RyZWFtLiBJcyB3ZWJjYW0gd29ya2luZz8nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhdHRlbXB0cy0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjaGVja1ZpZGVvKCk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyaWVzIHRvIGF0dGFjaCB0aGUgY2FtZXJhLXN0cmVhbSB0byBhIGdpdmVuIHZpZGVvLWVsZW1lbnRcclxuICogYW5kIGNhbGxzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGVuIHRoZSBjb250ZW50IGlzIHJlYWR5XHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25zdHJhaW50c1xyXG4gKiBAcGFyYW0ge09iamVjdH0gdmlkZW9cclxuICovXHJcbmZ1bmN0aW9uIGluaXRDYW1lcmEodmlkZW8sIGNvbnN0cmFpbnRzKSB7XHJcbiAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMpXHJcbiAgICAudGhlbigoc3RyZWFtKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgc3RyZWFtUmVmID0gc3RyZWFtO1xyXG4gICAgICAgICAgICB2aWRlby5zcmMgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChzdHJlYW0pO1xyXG4gICAgICAgICAgICB2aWRlby5vbmxvYWRlZG1ldGFkYXRhID0gKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHZpZGVvLnBsYXkoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgICAudGhlbih3YWl0Rm9yVmlkZW8uYmluZChudWxsLCB2aWRlbykpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkZXByZWNhdGVkQ29uc3RyYWludHModmlkZW9Db25zdHJhaW50cykge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHBpY2sodmlkZW9Db25zdHJhaW50cywgW1wid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJmYWNpbmdNb2RlXCIsXHJcbiAgICAgICAgICAgIFwiYXNwZWN0UmF0aW9cIiwgXCJkZXZpY2VJZFwiXSk7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2aWRlb0NvbnN0cmFpbnRzW1wibWluQXNwZWN0UmF0aW9cIl0gIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgICAgICAgIHZpZGVvQ29uc3RyYWludHNbXCJtaW5Bc3BlY3RSYXRpb1wiXSA+IDApIHtcclxuICAgICAgICBub3JtYWxpemVkW1wiYXNwZWN0UmF0aW9cIl0gPSB2aWRlb0NvbnN0cmFpbnRzW1wibWluQXNwZWN0UmF0aW9cIl07XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJXQVJOSU5HOiBDb25zdHJhaW50ICdtaW5Bc3BlY3RSYXRpbycgaXMgZGVwcmVjYXRlZDsgVXNlICdhc3BlY3RSYXRpbycgaW5zdGVhZFwiKTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmlkZW9Db25zdHJhaW50c1tcImZhY2luZ1wiXSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICBub3JtYWxpemVkW1wiZmFjaW5nTW9kZVwiXSA9IHZpZGVvQ29uc3RyYWludHNbXCJmYWNpbmdcIl07XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJXQVJOSU5HOiBDb25zdHJhaW50ICdmYWNpbmcnIGlzIGRlcHJlY2F0ZWQuIFVzZSAnZmFjaW5nTW9kZScgaW5zdGVhZCdcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcclxufVxyXG5cclxuZnVuY3Rpb24gYXBwbHlDYW1lcmFGYWNpbmcoZmFjaW5nLCBjb25zdHJhaW50cykge1xyXG4gICAgaWYgKHR5cGVvZiBjb25zdHJhaW50cy52aWRlby5kZXZpY2VJZCAhPT0gJ3VuZGVmaW5lZCcgfHwgIWZhY2luZyl7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjb25zdHJhaW50cyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrICE9PSAndW5kZWZpbmVkJyAmJlxyXG4gICAgICAgICAgICB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIE1lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcygoc291cmNlSW5mb3MpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvU291cmNlID0gc291cmNlSW5mb3MuZmlsdGVyKChzb3VyY2VJbmZvKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgc291cmNlSW5mby5raW5kID09PSBcInZpZGVvXCIgJiYgc291cmNlSW5mby5mYWNpbmcgPT09IGZhY2luZ1xyXG4gICAgICAgICAgICAgICAgKSlbMF07XHJcbiAgICAgICAgICAgICAgICBpZiAodmlkZW9Tb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShtZXJnZSh7fSwgY29uc3RyYWludHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2aWRlbzoge2RldmljZUlkOiB2aWRlb1NvdXJjZS5pZH19KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShjb25zdHJhaW50cyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtZXJnZSh7fSwgY29uc3RyYWludHMsIHt2aWRlbzoge2ZhY2luZ01vZGU6IGZhY2luZ319KSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBpY2tDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKSB7XHJcbiAgICBjb25zdCBjb25zdHJhaW50cyA9IHtcclxuICAgICAgICBhdWRpbzogZmFsc2UsXHJcbiAgICAgICAgdmlkZW86IGRlcHJlY2F0ZWRDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKVxyXG4gICAgfTtcclxuICAgIHJldHVybiBhcHBseUNhbWVyYUZhY2luZyhjb25zdHJhaW50cy52aWRlby5mYWNpbmdNb2RlLCBjb25zdHJhaW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHJlcXVlc3Q6IGZ1bmN0aW9uKHZpZGVvLCB2aWRlb0NvbnN0cmFpbnRzKSB7XHJcbiAgICAgICAgcmV0dXJuIHBpY2tDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKVxyXG4gICAgICAgICAgICAudGhlbihpbml0Q2FtZXJhLmJpbmQobnVsbCwgdmlkZW8pKTtcclxuICAgIH0sXHJcbiAgICByZWxlYXNlOiBmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgdHJhY2tzID0gc3RyZWFtUmVmICYmIHN0cmVhbVJlZi5nZXRWaWRlb1RyYWNrcygpO1xyXG4gICAgICAgIGlmICh0cmFja3MgJiYgdHJhY2tzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0cmFja3NbMF0uc3RvcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdHJlYW1SZWYgPSBudWxsO1xyXG4gICAgfVxyXG59O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9pbnB1dC9jYW1lcmFfYWNjZXNzLmpzXG4gKiovIiwiaW1wb3J0IHtcclxuICAgIGltYWdlUmVmLFxyXG4gICAgZ3JheUFuZEhhbGZTYW1wbGVGcm9tQ2FudmFzRGF0YSxcclxuICAgIGNvbXB1dGVHcmF5XHJcbn0gZnJvbSAnLi4vY29tbW9uL2N2X3V0aWxzJztcclxuXHJcbnZhciBGcmFtZUdyYWJiZXIgPSB7fTtcclxuXHJcbkZyYW1lR3JhYmJlci5jcmVhdGUgPSBmdW5jdGlvbihpbnB1dFN0cmVhbSwgY2FudmFzKSB7XHJcbiAgICB2YXIgX3RoYXQgPSB7fSxcclxuICAgICAgICBfc3RyZWFtQ29uZmlnID0gaW5wdXRTdHJlYW0uZ2V0Q29uZmlnKCksXHJcbiAgICAgICAgX3ZpZGVvX3NpemUgPSBpbWFnZVJlZihpbnB1dFN0cmVhbS5nZXRSZWFsV2lkdGgoKSwgaW5wdXRTdHJlYW0uZ2V0UmVhbEhlaWdodCgpKSxcclxuICAgICAgICBfY2FudmFzU2l6ZSA9IGlucHV0U3RyZWFtLmdldENhbnZhc1NpemUoKSxcclxuICAgICAgICBfc2l6ZSA9IGltYWdlUmVmKGlucHV0U3RyZWFtLmdldFdpZHRoKCksIGlucHV0U3RyZWFtLmdldEhlaWdodCgpKSxcclxuICAgICAgICB0b3BSaWdodCA9IGlucHV0U3RyZWFtLmdldFRvcFJpZ2h0KCksXHJcbiAgICAgICAgX3N4ID0gdG9wUmlnaHQueCxcclxuICAgICAgICBfc3kgPSB0b3BSaWdodC55LFxyXG4gICAgICAgIF9jYW52YXMsXHJcbiAgICAgICAgX2N0eCA9IG51bGwsXHJcbiAgICAgICAgX2RhdGEgPSBudWxsO1xyXG5cclxuICAgIF9jYW52YXMgPSBjYW52YXMgPyBjYW52YXMgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xyXG4gICAgX2NhbnZhcy53aWR0aCA9IF9jYW52YXNTaXplLng7XHJcbiAgICBfY2FudmFzLmhlaWdodCA9IF9jYW52YXNTaXplLnk7XHJcbiAgICBfY3R4ID0gX2NhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICBfZGF0YSA9IG5ldyBVaW50OEFycmF5KF9zaXplLnggKiBfc2l6ZS55KTtcclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkZyYW1lR3JhYmJlclwiLCBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgIHNpemU6IF9zaXplLFxyXG4gICAgICAgICAgICB0b3BSaWdodDogdG9wUmlnaHQsXHJcbiAgICAgICAgICAgIHZpZGVvU2l6ZTogX3ZpZGVvX3NpemUsXHJcbiAgICAgICAgICAgIGNhbnZhc1NpemU6IF9jYW52YXNTaXplXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlcyB0aGUgZ2l2ZW4gYXJyYXkgYXMgZnJhbWUtYnVmZmVyXHJcbiAgICAgKi9cclxuICAgIF90aGF0LmF0dGFjaERhdGEgPSBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICAgICAgX2RhdGEgPSBkYXRhO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHVzZWQgZnJhbWUtYnVmZmVyXHJcbiAgICAgKi9cclxuICAgIF90aGF0LmdldERhdGEgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX2RhdGE7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmV0Y2hlcyBhIGZyYW1lIGZyb20gdGhlIGlucHV0LXN0cmVhbSBhbmQgcHV0cyBpbnRvIHRoZSBmcmFtZS1idWZmZXIuXHJcbiAgICAgKiBUaGUgaW1hZ2UtZGF0YSBpcyBjb252ZXJ0ZWQgdG8gZ3JheS1zY2FsZSBhbmQgdGhlbiBoYWxmLXNhbXBsZWQgaWYgY29uZmlndXJlZC5cclxuICAgICAqL1xyXG4gICAgX3RoYXQuZ3JhYiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBkb0hhbGZTYW1wbGUgPSBfc3RyZWFtQ29uZmlnLmhhbGZTYW1wbGUsXHJcbiAgICAgICAgICAgIGZyYW1lID0gaW5wdXRTdHJlYW0uZ2V0RnJhbWUoKSxcclxuICAgICAgICAgICAgY3R4RGF0YTtcclxuICAgICAgICBpZiAoZnJhbWUpIHtcclxuICAgICAgICAgICAgX2N0eC5kcmF3SW1hZ2UoZnJhbWUsIDAsIDAsIF9jYW52YXNTaXplLngsIF9jYW52YXNTaXplLnkpO1xyXG4gICAgICAgICAgICBjdHhEYXRhID0gX2N0eC5nZXRJbWFnZURhdGEoX3N4LCBfc3ksIF9zaXplLngsIF9zaXplLnkpLmRhdGE7XHJcbiAgICAgICAgICAgIGlmIChkb0hhbGZTYW1wbGUpe1xyXG4gICAgICAgICAgICAgICAgZ3JheUFuZEhhbGZTYW1wbGVGcm9tQ2FudmFzRGF0YShjdHhEYXRhLCBfc2l6ZSwgX2RhdGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29tcHV0ZUdyYXkoY3R4RGF0YSwgX2RhdGEsIF9zdHJlYW1Db25maWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIF90aGF0LmdldFNpemUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX3NpemU7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBfdGhhdDtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZyYW1lR3JhYmJlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvaW5wdXQvZnJhbWVfZ3JhYmJlci5qc1xuICoqLyIsInZhciBJbWFnZUxvYWRlciA9IHt9O1xyXG5JbWFnZUxvYWRlci5sb2FkID0gZnVuY3Rpb24oZGlyZWN0b3J5LCBjYWxsYmFjaywgb2Zmc2V0LCBzaXplLCBzZXF1ZW5jZSkge1xyXG4gICAgdmFyIGh0bWxJbWFnZXNTcmNBcnJheSA9IG5ldyBBcnJheShzaXplKSxcclxuICAgICAgICBodG1sSW1hZ2VzQXJyYXkgPSBuZXcgQXJyYXkoaHRtbEltYWdlc1NyY0FycmF5Lmxlbmd0aCksXHJcbiAgICAgICAgaSxcclxuICAgICAgICBpbWcsXHJcbiAgICAgICAgbnVtO1xyXG5cclxuICAgIGlmIChzZXF1ZW5jZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBodG1sSW1hZ2VzU3JjQXJyYXlbMF0gPSBkaXJlY3Rvcnk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgaHRtbEltYWdlc1NyY0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIG51bSA9IChvZmZzZXQgKyBpKTtcclxuICAgICAgICAgICAgaHRtbEltYWdlc1NyY0FycmF5W2ldID0gZGlyZWN0b3J5ICsgXCJpbWFnZS1cIiArIChcIjAwXCIgKyBudW0pLnNsaWNlKC0zKSArIFwiLmpwZ1wiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGh0bWxJbWFnZXNBcnJheS5ub3RMb2FkZWQgPSBbXTtcclxuICAgIGh0bWxJbWFnZXNBcnJheS5hZGRJbWFnZSA9IGZ1bmN0aW9uKGltYWdlKSB7XHJcbiAgICAgICAgaHRtbEltYWdlc0FycmF5Lm5vdExvYWRlZC5wdXNoKGltYWdlKTtcclxuICAgIH07XHJcbiAgICBodG1sSW1hZ2VzQXJyYXkubG9hZGVkID0gZnVuY3Rpb24obG9hZGVkSW1nKSB7XHJcbiAgICAgICAgdmFyIG5vdGxvYWRlZEltZ3MgPSBodG1sSW1hZ2VzQXJyYXkubm90TG9hZGVkO1xyXG4gICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgbm90bG9hZGVkSW1ncy5sZW5ndGg7IHgrKykge1xyXG4gICAgICAgICAgICBpZiAobm90bG9hZGVkSW1nc1t4XSA9PT0gbG9hZGVkSW1nKSB7XHJcbiAgICAgICAgICAgICAgICBub3Rsb2FkZWRJbWdzLnNwbGljZSh4LCAxKTtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIHkgPSAwOyB5IDwgaHRtbEltYWdlc1NyY0FycmF5Lmxlbmd0aDsgeSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltZ05hbWUgPSBodG1sSW1hZ2VzU3JjQXJyYXlbeV0uc3Vic3RyKGh0bWxJbWFnZXNTcmNBcnJheVt5XS5sYXN0SW5kZXhPZihcIi9cIikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2FkZWRJbWcuc3JjLmxhc3RJbmRleE9mKGltZ05hbWUpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sSW1hZ2VzQXJyYXlbeV0gPSBsb2FkZWRJbWc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChub3Rsb2FkZWRJbWdzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkltYWdlcyBsb2FkZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgW2h0bWxJbWFnZXNBcnJheV0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBodG1sSW1hZ2VzU3JjQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBodG1sSW1hZ2VzQXJyYXkuYWRkSW1hZ2UoaW1nKTtcclxuICAgICAgICBhZGRPbmxvYWRIYW5kbGVyKGltZywgaHRtbEltYWdlc0FycmF5KTtcclxuICAgICAgICBpbWcuc3JjID0gaHRtbEltYWdlc1NyY0FycmF5W2ldO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gYWRkT25sb2FkSGFuZGxlcihpbWcsIGh0bWxJbWFnZXNBcnJheSkge1xyXG4gICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGh0bWxJbWFnZXNBcnJheS5sb2FkZWQodGhpcyk7XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCAoSW1hZ2VMb2FkZXIpO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9pbnB1dC9pbWFnZV9sb2FkZXIuanNcbiAqKi8iLCJpbXBvcnQgSW1hZ2VMb2FkZXIgZnJvbSAnLi9pbWFnZV9sb2FkZXInO1xyXG5cclxudmFyIElucHV0U3RyZWFtID0ge307XHJcbklucHV0U3RyZWFtLmNyZWF0ZVZpZGVvU3RyZWFtID0gZnVuY3Rpb24odmlkZW8pIHtcclxuICAgIHZhciB0aGF0ID0ge30sXHJcbiAgICAgICAgX2NvbmZpZyA9IG51bGwsXHJcbiAgICAgICAgX2V2ZW50TmFtZXMgPSBbJ2NhbnJlY29yZCcsICdlbmRlZCddLFxyXG4gICAgICAgIF9ldmVudEhhbmRsZXJzID0ge30sXHJcbiAgICAgICAgX2NhbGN1bGF0ZWRXaWR0aCxcclxuICAgICAgICBfY2FsY3VsYXRlZEhlaWdodCxcclxuICAgICAgICBfdG9wUmlnaHQgPSB7eDogMCwgeTogMH0sXHJcbiAgICAgICAgX2NhbnZhc1NpemUgPSB7eDogMCwgeTogMH07XHJcblxyXG4gICAgZnVuY3Rpb24gaW5pdFNpemUoKSB7XHJcbiAgICAgICAgdmFyIHdpZHRoID0gdmlkZW8udmlkZW9XaWR0aCxcclxuICAgICAgICAgICAgaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7XHJcblxyXG4gICAgICAgIF9jYWxjdWxhdGVkV2lkdGggPVxyXG4gICAgICAgICAgICBfY29uZmlnLnNpemUgPyB3aWR0aCAvIGhlaWdodCA+IDEgPyBfY29uZmlnLnNpemUgOiBNYXRoLmZsb29yKCh3aWR0aCAvIGhlaWdodCkgKiBfY29uZmlnLnNpemUpIDogd2lkdGg7XHJcbiAgICAgICAgX2NhbGN1bGF0ZWRIZWlnaHQgPVxyXG4gICAgICAgICAgICBfY29uZmlnLnNpemUgPyB3aWR0aCAvIGhlaWdodCA+IDEgPyBNYXRoLmZsb29yKChoZWlnaHQgLyB3aWR0aCkgKiBfY29uZmlnLnNpemUpIDogX2NvbmZpZy5zaXplIDogaGVpZ2h0O1xyXG5cclxuICAgICAgICBfY2FudmFzU2l6ZS54ID0gX2NhbGN1bGF0ZWRXaWR0aDtcclxuICAgICAgICBfY2FudmFzU2l6ZS55ID0gX2NhbGN1bGF0ZWRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhhdC5nZXRSZWFsV2lkdGggPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdmlkZW8udmlkZW9XaWR0aDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRSZWFsSGVpZ2h0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHZpZGVvLnZpZGVvSGVpZ2h0O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldFdpZHRoID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jYWxjdWxhdGVkV2lkdGg7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jYWxjdWxhdGVkSGVpZ2h0O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldFdpZHRoID0gZnVuY3Rpb24od2lkdGgpIHtcclxuICAgICAgICBfY2FsY3VsYXRlZFdpZHRoID0gd2lkdGg7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0SGVpZ2h0ID0gZnVuY3Rpb24oaGVpZ2h0KSB7XHJcbiAgICAgICAgX2NhbGN1bGF0ZWRIZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0SW5wdXRTdHJlYW0gPSBmdW5jdGlvbihjb25maWcpIHtcclxuICAgICAgICBfY29uZmlnID0gY29uZmlnO1xyXG4gICAgICAgIHZpZGVvLnNyYyA9ICh0eXBlb2YgY29uZmlnLnNyYyAhPT0gJ3VuZGVmaW5lZCcpID8gY29uZmlnLnNyYyA6ICcnO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmVuZGVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHZpZGVvLmVuZGVkO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldENvbmZpZyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBfY29uZmlnO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XHJcbiAgICAgICAgdmlkZW8uc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5wYXVzZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZpZGVvLnBhdXNlKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQucGxheSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZpZGVvLnBsYXkoKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRDdXJyZW50VGltZSA9IGZ1bmN0aW9uKHRpbWUpIHtcclxuICAgICAgICBpZiAoX2NvbmZpZy50eXBlICE9PSBcIkxpdmVTdHJlYW1cIikge1xyXG4gICAgICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IHRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudCwgZiwgYm9vbCkge1xyXG4gICAgICAgIGlmIChfZXZlbnROYW1lcy5pbmRleE9mKGV2ZW50KSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgaWYgKCFfZXZlbnRIYW5kbGVyc1tldmVudF0pIHtcclxuICAgICAgICAgICAgICAgIF9ldmVudEhhbmRsZXJzW2V2ZW50XSA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9ldmVudEhhbmRsZXJzW2V2ZW50XS5wdXNoKGYpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGYsIGJvb2wpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5jbGVhckV2ZW50SGFuZGxlcnMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBfZXZlbnROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50TmFtZSkge1xyXG4gICAgICAgICAgICB2YXIgaGFuZGxlcnMgPSBfZXZlbnRIYW5kbGVyc1tldmVudE5hbWVdO1xyXG4gICAgICAgICAgICBpZiAoaGFuZGxlcnMgJiYgaGFuZGxlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbihoYW5kbGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGhhbmRsZXIpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC50cmlnZ2VyID0gZnVuY3Rpb24oZXZlbnROYW1lLCBhcmdzKSB7XHJcbiAgICAgICAgdmFyIGosXHJcbiAgICAgICAgICAgIGhhbmRsZXJzID0gX2V2ZW50SGFuZGxlcnNbZXZlbnROYW1lXTtcclxuXHJcbiAgICAgICAgaWYgKGV2ZW50TmFtZSA9PT0gJ2NhbnJlY29yZCcpIHtcclxuICAgICAgICAgICAgaW5pdFNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGhhbmRsZXJzICYmIGhhbmRsZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBoYW5kbGVycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlcnNbal0uYXBwbHkodGhhdCwgYXJncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0VG9wUmlnaHQgPSBmdW5jdGlvbih0b3BSaWdodCkge1xyXG4gICAgICAgIF90b3BSaWdodC54ID0gdG9wUmlnaHQueDtcclxuICAgICAgICBfdG9wUmlnaHQueSA9IHRvcFJpZ2h0Lnk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZ2V0VG9wUmlnaHQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX3RvcFJpZ2h0O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldENhbnZhc1NpemUgPSBmdW5jdGlvbihzaXplKSB7XHJcbiAgICAgICAgX2NhbnZhc1NpemUueCA9IHNpemUueDtcclxuICAgICAgICBfY2FudmFzU2l6ZS55ID0gc2l6ZS55O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldENhbnZhc1NpemUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX2NhbnZhc1NpemU7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZ2V0RnJhbWUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdmlkZW87XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59O1xyXG5cclxuSW5wdXRTdHJlYW0uY3JlYXRlTGl2ZVN0cmVhbSA9IGZ1bmN0aW9uKHZpZGVvKSB7XHJcbiAgICB2aWRlby5zZXRBdHRyaWJ1dGUoXCJhdXRvcGxheVwiLCB0cnVlKTtcclxuICAgIHZhciB0aGF0ID0gSW5wdXRTdHJlYW0uY3JlYXRlVmlkZW9TdHJlYW0odmlkZW8pO1xyXG5cclxuICAgIHRoYXQuZW5kZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59O1xyXG5cclxuSW5wdXRTdHJlYW0uY3JlYXRlSW1hZ2VTdHJlYW0gPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciB0aGF0ID0ge307XHJcbiAgICB2YXIgX2NvbmZpZyA9IG51bGw7XHJcblxyXG4gICAgdmFyIHdpZHRoID0gMCxcclxuICAgICAgICBoZWlnaHQgPSAwLFxyXG4gICAgICAgIGZyYW1lSWR4ID0gMCxcclxuICAgICAgICBwYXVzZWQgPSB0cnVlLFxyXG4gICAgICAgIGxvYWRlZCA9IGZhbHNlLFxyXG4gICAgICAgIGltZ0FycmF5ID0gbnVsbCxcclxuICAgICAgICBzaXplID0gMCxcclxuICAgICAgICBvZmZzZXQgPSAxLFxyXG4gICAgICAgIGJhc2VVcmwgPSBudWxsLFxyXG4gICAgICAgIGVuZGVkID0gZmFsc2UsXHJcbiAgICAgICAgY2FsY3VsYXRlZFdpZHRoLFxyXG4gICAgICAgIGNhbGN1bGF0ZWRIZWlnaHQsXHJcbiAgICAgICAgX2V2ZW50TmFtZXMgPSBbJ2NhbnJlY29yZCcsICdlbmRlZCddLFxyXG4gICAgICAgIF9ldmVudEhhbmRsZXJzID0ge30sXHJcbiAgICAgICAgX3RvcFJpZ2h0ID0ge3g6IDAsIHk6IDB9LFxyXG4gICAgICAgIF9jYW52YXNTaXplID0ge3g6IDAsIHk6IDB9O1xyXG5cclxuICAgIGZ1bmN0aW9uIGxvYWRJbWFnZXMoKSB7XHJcbiAgICAgICAgbG9hZGVkID0gZmFsc2U7XHJcbiAgICAgICAgSW1hZ2VMb2FkZXIubG9hZChiYXNlVXJsLCBmdW5jdGlvbihpbWdzKSB7XHJcbiAgICAgICAgICAgIGltZ0FycmF5ID0gaW1ncztcclxuICAgICAgICAgICAgd2lkdGggPSBpbWdzWzBdLndpZHRoO1xyXG4gICAgICAgICAgICBoZWlnaHQgPSBpbWdzWzBdLmhlaWdodDtcclxuICAgICAgICAgICAgY2FsY3VsYXRlZFdpZHRoID1cclxuICAgICAgICAgICAgICAgIF9jb25maWcuc2l6ZSA/IHdpZHRoIC8gaGVpZ2h0ID4gMSA/IF9jb25maWcuc2l6ZSA6IE1hdGguZmxvb3IoKHdpZHRoIC8gaGVpZ2h0KSAqIF9jb25maWcuc2l6ZSkgOiB3aWR0aDtcclxuICAgICAgICAgICAgY2FsY3VsYXRlZEhlaWdodCA9XHJcbiAgICAgICAgICAgICAgICBfY29uZmlnLnNpemUgPyB3aWR0aCAvIGhlaWdodCA+IDEgPyBNYXRoLmZsb29yKChoZWlnaHQgLyB3aWR0aCkgKiBfY29uZmlnLnNpemUpIDogX2NvbmZpZy5zaXplIDogaGVpZ2h0O1xyXG4gICAgICAgICAgICBfY2FudmFzU2l6ZS54ID0gY2FsY3VsYXRlZFdpZHRoO1xyXG4gICAgICAgICAgICBfY2FudmFzU2l6ZS55ID0gY2FsY3VsYXRlZEhlaWdodDtcclxuICAgICAgICAgICAgbG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgZnJhbWVJZHggPSAwO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgcHVibGlzaEV2ZW50KFwiY2FucmVjb3JkXCIsIFtdKTtcclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgfSwgb2Zmc2V0LCBzaXplLCBfY29uZmlnLnNlcXVlbmNlKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBwdWJsaXNoRXZlbnQoZXZlbnROYW1lLCBhcmdzKSB7XHJcbiAgICAgICAgdmFyIGosXHJcbiAgICAgICAgICAgIGhhbmRsZXJzID0gX2V2ZW50SGFuZGxlcnNbZXZlbnROYW1lXTtcclxuXHJcbiAgICAgICAgaWYgKGhhbmRsZXJzICYmIGhhbmRsZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBoYW5kbGVycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaGFuZGxlcnNbal0uYXBwbHkodGhhdCwgYXJncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoYXQudHJpZ2dlciA9IHB1Ymxpc2hFdmVudDtcclxuXHJcbiAgICB0aGF0LmdldFdpZHRoID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRXaWR0aDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRIZWlnaHQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gY2FsY3VsYXRlZEhlaWdodDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRXaWR0aCA9IGZ1bmN0aW9uKG5ld1dpZHRoKSB7XHJcbiAgICAgICAgY2FsY3VsYXRlZFdpZHRoID0gbmV3V2lkdGg7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0SGVpZ2h0ID0gZnVuY3Rpb24obmV3SGVpZ2h0KSB7XHJcbiAgICAgICAgY2FsY3VsYXRlZEhlaWdodCA9IG5ld0hlaWdodDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRSZWFsV2lkdGggPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gd2lkdGg7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZ2V0UmVhbEhlaWdodCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0SW5wdXRTdHJlYW0gPSBmdW5jdGlvbihzdHJlYW0pIHtcclxuICAgICAgICBfY29uZmlnID0gc3RyZWFtO1xyXG4gICAgICAgIGlmIChzdHJlYW0uc2VxdWVuY2UgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGJhc2VVcmwgPSBzdHJlYW0uc3JjO1xyXG4gICAgICAgICAgICBzaXplID0gMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBiYXNlVXJsID0gc3RyZWFtLnNyYztcclxuICAgICAgICAgICAgc2l6ZSA9IHN0cmVhbS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxvYWRJbWFnZXMoKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5lbmRlZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBlbmRlZDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbigpIHt9O1xyXG5cclxuICAgIHRoYXQuZ2V0Q29uZmlnID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jb25maWc7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQucGF1c2UgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBwYXVzZWQgPSB0cnVlO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnBsYXkgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBwYXVzZWQgPSBmYWxzZTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRDdXJyZW50VGltZSA9IGZ1bmN0aW9uKHRpbWUpIHtcclxuICAgICAgICBmcmFtZUlkeCA9IHRpbWU7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50LCBmKSB7XHJcbiAgICAgICAgaWYgKF9ldmVudE5hbWVzLmluZGV4T2YoZXZlbnQpICE9PSAtMSkge1xyXG4gICAgICAgICAgICBpZiAoIV9ldmVudEhhbmRsZXJzW2V2ZW50XSkge1xyXG4gICAgICAgICAgICAgICAgX2V2ZW50SGFuZGxlcnNbZXZlbnRdID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX2V2ZW50SGFuZGxlcnNbZXZlbnRdLnB1c2goZik7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldFRvcFJpZ2h0ID0gZnVuY3Rpb24odG9wUmlnaHQpIHtcclxuICAgICAgICBfdG9wUmlnaHQueCA9IHRvcFJpZ2h0Lng7XHJcbiAgICAgICAgX3RvcFJpZ2h0LnkgPSB0b3BSaWdodC55O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldFRvcFJpZ2h0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF90b3BSaWdodDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRDYW52YXNTaXplID0gZnVuY3Rpb24oY2FudmFzU2l6ZSkge1xyXG4gICAgICAgIF9jYW52YXNTaXplLnggPSBjYW52YXNTaXplLng7XHJcbiAgICAgICAgX2NhbnZhc1NpemUueSA9IGNhbnZhc1NpemUueTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRDYW52YXNTaXplID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jYW52YXNTaXplO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldEZyYW1lID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIGZyYW1lO1xyXG5cclxuICAgICAgICBpZiAoIWxvYWRlZCl7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXBhdXNlZCkge1xyXG4gICAgICAgICAgICBmcmFtZSA9IGltZ0FycmF5W2ZyYW1lSWR4XTtcclxuICAgICAgICAgICAgaWYgKGZyYW1lSWR4IDwgKHNpemUgLSAxKSkge1xyXG4gICAgICAgICAgICAgICAgZnJhbWVJZHgrKztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHB1Ymxpc2hFdmVudChcImVuZGVkXCIsIFtdKTtcclxuICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmcmFtZTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoYXQ7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJbnB1dFN0cmVhbTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvaW5wdXQvaW5wdXRfc3RyZWFtLmpzXG4gKiovIiwiaW1wb3J0IEltYWdlV3JhcHBlciBmcm9tICcuLi9jb21tb24vaW1hZ2Vfd3JhcHBlcic7XHJcbmltcG9ydCB7XHJcbiAgICBjYWxjdWxhdGVQYXRjaFNpemUsXHJcbiAgICBvdHN1VGhyZXNob2xkLFxyXG4gICAgaHN2MnJnYixcclxuICAgIGNsdXN0ZXIsXHJcbiAgICB0b3BHZW5lcmljLFxyXG4gICAgaW1hZ2VSZWYsXHJcbiAgICBoYWxmU2FtcGxlLFxyXG4gICAgY29tcHV0ZUltYWdlQXJlYVxyXG59IGZyb20gJy4uL2NvbW1vbi9jdl91dGlscyc7XHJcbmltcG9ydCBBcnJheUhlbHBlciBmcm9tICcuLi9jb21tb24vYXJyYXlfaGVscGVyJztcclxuaW1wb3J0IEltYWdlRGVidWcgZnJvbSAnLi4vY29tbW9uL2ltYWdlX2RlYnVnJztcclxuaW1wb3J0IFJhc3Rlcml6ZXIgZnJvbSAnLi9yYXN0ZXJpemVyJztcclxuaW1wb3J0IFRyYWNlciBmcm9tICcuL3RyYWNlcic7XHJcbmltcG9ydCBza2VsZXRvbml6ZXIgZnJvbSAnLi9za2VsZXRvbml6ZXInO1xyXG5jb25zdCB2ZWMyID0ge1xyXG4gICAgY2xvbmU6IHJlcXVpcmUoJ2dsLXZlYzIvY2xvbmUnKSxcclxuICAgIGRvdDogIHJlcXVpcmUoJ2dsLXZlYzIvZG90JyksXHJcbiAgICBzY2FsZTogcmVxdWlyZSgnZ2wtdmVjMi9zY2FsZScpLFxyXG4gICAgdHJhbnNmb3JtTWF0MjogcmVxdWlyZSgnZ2wtdmVjMi90cmFuc2Zvcm1NYXQyJylcclxufTtcclxuY29uc3QgbWF0MiA9IHtcclxuICAgIGNvcHk6IHJlcXVpcmUoJ2dsLW1hdDIvY29weScpLFxyXG4gICAgY3JlYXRlOiByZXF1aXJlKCdnbC1tYXQyL2NyZWF0ZScpLFxyXG4gICAgaW52ZXJ0OiByZXF1aXJlKCdnbC1tYXQyL2ludmVydCcpXHJcbn1cclxuXHJcbnZhciBfY29uZmlnLFxyXG4gICAgX2N1cnJlbnRJbWFnZVdyYXBwZXIsXHJcbiAgICBfc2tlbEltYWdlV3JhcHBlcixcclxuICAgIF9zdWJJbWFnZVdyYXBwZXIsXHJcbiAgICBfbGFiZWxJbWFnZVdyYXBwZXIsXHJcbiAgICBfcGF0Y2hHcmlkLFxyXG4gICAgX3BhdGNoTGFiZWxHcmlkLFxyXG4gICAgX2ltYWdlVG9QYXRjaEdyaWQsXHJcbiAgICBfYmluYXJ5SW1hZ2VXcmFwcGVyLFxyXG4gICAgX3BhdGNoU2l6ZSxcclxuICAgIF9jYW52YXNDb250YWluZXIgPSB7XHJcbiAgICAgICAgY3R4OiB7XHJcbiAgICAgICAgICAgIGJpbmFyeTogbnVsbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZG9tOiB7XHJcbiAgICAgICAgICAgIGJpbmFyeTogbnVsbFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBfbnVtUGF0Y2hlcyA9IHt4OiAwLCB5OiAwfSxcclxuICAgIF9pbnB1dEltYWdlV3JhcHBlcixcclxuICAgIF9za2VsZXRvbml6ZXI7XHJcblxyXG5mdW5jdGlvbiBpbml0QnVmZmVycygpIHtcclxuICAgIHZhciBza2VsZXRvbkltYWdlRGF0YTtcclxuXHJcbiAgICBpZiAoX2NvbmZpZy5oYWxmU2FtcGxlKSB7XHJcbiAgICAgICAgX2N1cnJlbnRJbWFnZVdyYXBwZXIgPSBuZXcgSW1hZ2VXcmFwcGVyKHtcclxuICAgICAgICAgICAgeDogX2lucHV0SW1hZ2VXcmFwcGVyLnNpemUueCAvIDIgfCAwLFxyXG4gICAgICAgICAgICB5OiBfaW5wdXRJbWFnZVdyYXBwZXIuc2l6ZS55IC8gMiB8IDBcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgX2N1cnJlbnRJbWFnZVdyYXBwZXIgPSBfaW5wdXRJbWFnZVdyYXBwZXI7XHJcbiAgICB9XHJcblxyXG4gICAgX3BhdGNoU2l6ZSA9IGNhbGN1bGF0ZVBhdGNoU2l6ZShfY29uZmlnLnBhdGNoU2l6ZSwgX2N1cnJlbnRJbWFnZVdyYXBwZXIuc2l6ZSk7XHJcblxyXG4gICAgX251bVBhdGNoZXMueCA9IF9jdXJyZW50SW1hZ2VXcmFwcGVyLnNpemUueCAvIF9wYXRjaFNpemUueCB8IDA7XHJcbiAgICBfbnVtUGF0Y2hlcy55ID0gX2N1cnJlbnRJbWFnZVdyYXBwZXIuc2l6ZS55IC8gX3BhdGNoU2l6ZS55IHwgMDtcclxuXHJcbiAgICBfYmluYXJ5SW1hZ2VXcmFwcGVyID0gbmV3IEltYWdlV3JhcHBlcihfY3VycmVudEltYWdlV3JhcHBlci5zaXplLCB1bmRlZmluZWQsIFVpbnQ4QXJyYXksIGZhbHNlKTtcclxuXHJcbiAgICBfbGFiZWxJbWFnZVdyYXBwZXIgPSBuZXcgSW1hZ2VXcmFwcGVyKF9wYXRjaFNpemUsIHVuZGVmaW5lZCwgQXJyYXksIHRydWUpO1xyXG5cclxuICAgIHNrZWxldG9uSW1hZ2VEYXRhID0gbmV3IEFycmF5QnVmZmVyKDY0ICogMTAyNCk7XHJcbiAgICBfc3ViSW1hZ2VXcmFwcGVyID0gbmV3IEltYWdlV3JhcHBlcihfcGF0Y2hTaXplLFxyXG4gICAgICAgIG5ldyBVaW50OEFycmF5KHNrZWxldG9uSW1hZ2VEYXRhLCAwLCBfcGF0Y2hTaXplLnggKiBfcGF0Y2hTaXplLnkpKTtcclxuICAgIF9za2VsSW1hZ2VXcmFwcGVyID0gbmV3IEltYWdlV3JhcHBlcihfcGF0Y2hTaXplLFxyXG4gICAgICAgIG5ldyBVaW50OEFycmF5KHNrZWxldG9uSW1hZ2VEYXRhLCBfcGF0Y2hTaXplLnggKiBfcGF0Y2hTaXplLnkgKiAzLCBfcGF0Y2hTaXplLnggKiBfcGF0Y2hTaXplLnkpLFxyXG4gICAgICAgIHVuZGVmaW5lZCwgdHJ1ZSk7XHJcbiAgICBfc2tlbGV0b25pemVyID0gc2tlbGV0b25pemVyKCh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgPyB3aW5kb3cgOiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnKSA/IHNlbGYgOiBnbG9iYWwsIHtcclxuICAgICAgICBzaXplOiBfcGF0Y2hTaXplLnhcclxuICAgIH0sIHNrZWxldG9uSW1hZ2VEYXRhKTtcclxuXHJcbiAgICBfaW1hZ2VUb1BhdGNoR3JpZCA9IG5ldyBJbWFnZVdyYXBwZXIoe1xyXG4gICAgICAgIHg6IChfY3VycmVudEltYWdlV3JhcHBlci5zaXplLnggLyBfc3ViSW1hZ2VXcmFwcGVyLnNpemUueCkgfCAwLFxyXG4gICAgICAgIHk6IChfY3VycmVudEltYWdlV3JhcHBlci5zaXplLnkgLyBfc3ViSW1hZ2VXcmFwcGVyLnNpemUueSkgfCAwXHJcbiAgICB9LCB1bmRlZmluZWQsIEFycmF5LCB0cnVlKTtcclxuICAgIF9wYXRjaEdyaWQgPSBuZXcgSW1hZ2VXcmFwcGVyKF9pbWFnZVRvUGF0Y2hHcmlkLnNpemUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0cnVlKTtcclxuICAgIF9wYXRjaExhYmVsR3JpZCA9IG5ldyBJbWFnZVdyYXBwZXIoX2ltYWdlVG9QYXRjaEdyaWQuc2l6ZSwgdW5kZWZpbmVkLCBJbnQzMkFycmF5LCB0cnVlKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdENhbnZhcygpIHtcclxuICAgIGlmIChfY29uZmlnLnVzZVdvcmtlciB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgX2NhbnZhc0NvbnRhaW5lci5kb20uYmluYXJ5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcclxuICAgIF9jYW52YXNDb250YWluZXIuZG9tLmJpbmFyeS5jbGFzc05hbWUgPSBcImJpbmFyeUJ1ZmZlclwiO1xyXG4gICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiBfY29uZmlnLmRlYnVnLnNob3dDYW52YXMgPT09IHRydWUpIHtcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2RlYnVnXCIpLmFwcGVuZENoaWxkKF9jYW52YXNDb250YWluZXIuZG9tLmJpbmFyeSk7XHJcbiAgICB9XHJcbiAgICBfY2FudmFzQ29udGFpbmVyLmN0eC5iaW5hcnkgPSBfY2FudmFzQ29udGFpbmVyLmRvbS5iaW5hcnkuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgX2NhbnZhc0NvbnRhaW5lci5kb20uYmluYXJ5LndpZHRoID0gX2JpbmFyeUltYWdlV3JhcHBlci5zaXplLng7XHJcbiAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5iaW5hcnkuaGVpZ2h0ID0gX2JpbmFyeUltYWdlV3JhcHBlci5zaXplLnk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgYm91bmRpbmcgYm94IHdoaWNoIGVuY2xvc2VzIGFsbCB0aGUgZ2l2ZW4gcGF0Y2hlc1xyXG4gKiBAcmV0dXJucyB7QXJyYXl9IFRoZSBtaW5pbWFsIGJvdW5kaW5nIGJveFxyXG4gKi9cclxuZnVuY3Rpb24gYm94RnJvbVBhdGNoZXMocGF0Y2hlcykge1xyXG4gICAgdmFyIG92ZXJBdmcsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBqLFxyXG4gICAgICAgIHBhdGNoLFxyXG4gICAgICAgIHRyYW5zTWF0LFxyXG4gICAgICAgIG1pbnggPVxyXG4gICAgICAgIF9iaW5hcnlJbWFnZVdyYXBwZXIuc2l6ZS54LFxyXG4gICAgICAgIG1pbnkgPSBfYmluYXJ5SW1hZ2VXcmFwcGVyLnNpemUueSxcclxuICAgICAgICBtYXh4ID0gLV9iaW5hcnlJbWFnZVdyYXBwZXIuc2l6ZS54LFxyXG4gICAgICAgIG1heHkgPSAtX2JpbmFyeUltYWdlV3JhcHBlci5zaXplLnksXHJcbiAgICAgICAgYm94LFxyXG4gICAgICAgIHNjYWxlO1xyXG5cclxuICAgIC8vIGRyYXcgYWxsIHBhdGNoZXMgd2hpY2ggYXJlIHRvIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxyXG4gICAgb3ZlckF2ZyA9IDA7XHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IHBhdGNoZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwYXRjaCA9IHBhdGNoZXNbaV07XHJcbiAgICAgICAgb3ZlckF2ZyArPSBwYXRjaC5yYWQ7XHJcbiAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiBfY29uZmlnLmRlYnVnLnNob3dQYXRjaGVzKSB7XHJcbiAgICAgICAgICAgIEltYWdlRGVidWcuZHJhd1JlY3QocGF0Y2gucG9zLCBfc3ViSW1hZ2VXcmFwcGVyLnNpemUsIF9jYW52YXNDb250YWluZXIuY3R4LmJpbmFyeSwge2NvbG9yOiBcInJlZFwifSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJBdmcgLz0gcGF0Y2hlcy5sZW5ndGg7XHJcbiAgICBvdmVyQXZnID0gKG92ZXJBdmcgKiAxODAgLyBNYXRoLlBJICsgOTApICUgMTgwIC0gOTA7XHJcbiAgICBpZiAob3ZlckF2ZyA8IDApIHtcclxuICAgICAgICBvdmVyQXZnICs9IDE4MDtcclxuICAgIH1cclxuXHJcbiAgICBvdmVyQXZnID0gKDE4MCAtIG92ZXJBdmcpICogTWF0aC5QSSAvIDE4MDtcclxuICAgIHRyYW5zTWF0ID0gbWF0Mi5jb3B5KG1hdDIuY3JlYXRlKCksIFtNYXRoLmNvcyhvdmVyQXZnKSwgTWF0aC5zaW4ob3ZlckF2ZyksIC1NYXRoLnNpbihvdmVyQXZnKSwgTWF0aC5jb3Mob3ZlckF2ZyldKTtcclxuXHJcbiAgICAvLyBpdGVyYXRlIG92ZXIgcGF0Y2hlcyBhbmQgcm90YXRlIGJ5IGFuZ2xlXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IHBhdGNoZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwYXRjaCA9IHBhdGNoZXNbaV07XHJcbiAgICAgICAgZm9yICggaiA9IDA7IGogPCA0OyBqKyspIHtcclxuICAgICAgICAgICAgdmVjMi50cmFuc2Zvcm1NYXQyKHBhdGNoLmJveFtqXSwgcGF0Y2guYm94W2pdLCB0cmFuc01hdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIF9jb25maWcuZGVidWcuYm94RnJvbVBhdGNoZXMuc2hvd1RyYW5zZm9ybWVkKSB7XHJcbiAgICAgICAgICAgIEltYWdlRGVidWcuZHJhd1BhdGgocGF0Y2guYm94LCB7eDogMCwgeTogMX0sIF9jYW52YXNDb250YWluZXIuY3R4LmJpbmFyeSwge2NvbG9yOiAnIzk5ZmYwMCcsIGxpbmVXaWR0aDogMn0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBmaW5kIGJvdW5kaW5nIGJveFxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBwYXRjaGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcGF0Y2ggPSBwYXRjaGVzW2ldO1xyXG4gICAgICAgIGZvciAoIGogPSAwOyBqIDwgNDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXRjaC5ib3hbal1bMF0gPCBtaW54KSB7XHJcbiAgICAgICAgICAgICAgICBtaW54ID0gcGF0Y2guYm94W2pdWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwYXRjaC5ib3hbal1bMF0gPiBtYXh4KSB7XHJcbiAgICAgICAgICAgICAgICBtYXh4ID0gcGF0Y2guYm94W2pdWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwYXRjaC5ib3hbal1bMV0gPCBtaW55KSB7XHJcbiAgICAgICAgICAgICAgICBtaW55ID0gcGF0Y2guYm94W2pdWzFdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChwYXRjaC5ib3hbal1bMV0gPiBtYXh5KSB7XHJcbiAgICAgICAgICAgICAgICBtYXh5ID0gcGF0Y2guYm94W2pdWzFdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJveCA9IFtbbWlueCwgbWlueV0sIFttYXh4LCBtaW55XSwgW21heHgsIG1heHldLCBbbWlueCwgbWF4eV1dO1xyXG5cclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5ib3hGcm9tUGF0Y2hlcy5zaG93VHJhbnNmb3JtZWRCb3gpIHtcclxuICAgICAgICBJbWFnZURlYnVnLmRyYXdQYXRoKGJveCwge3g6IDAsIHk6IDF9LCBfY2FudmFzQ29udGFpbmVyLmN0eC5iaW5hcnksIHtjb2xvcjogJyNmZjAwMDAnLCBsaW5lV2lkdGg6IDJ9KTtcclxuICAgIH1cclxuXHJcbiAgICBzY2FsZSA9IF9jb25maWcuaGFsZlNhbXBsZSA/IDIgOiAxO1xyXG4gICAgLy8gcmV2ZXJzZSByb3RhdGlvbjtcclxuICAgIHRyYW5zTWF0ID0gbWF0Mi5pbnZlcnQodHJhbnNNYXQsIHRyYW5zTWF0KTtcclxuICAgIGZvciAoIGogPSAwOyBqIDwgNDsgaisrKSB7XHJcbiAgICAgICAgdmVjMi50cmFuc2Zvcm1NYXQyKGJveFtqXSwgYm94W2pdLCB0cmFuc01hdCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiBfY29uZmlnLmRlYnVnLmJveEZyb21QYXRjaGVzLnNob3dCQikge1xyXG4gICAgICAgIEltYWdlRGVidWcuZHJhd1BhdGgoYm94LCB7eDogMCwgeTogMX0sIF9jYW52YXNDb250YWluZXIuY3R4LmJpbmFyeSwge2NvbG9yOiAnI2ZmMDAwMCcsIGxpbmVXaWR0aDogMn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoIGogPSAwOyBqIDwgNDsgaisrKSB7XHJcbiAgICAgICAgdmVjMi5zY2FsZShib3hbal0sIGJveFtqXSwgc2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBib3g7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgYmluYXJ5IGltYWdlIG9mIHRoZSBjdXJyZW50IGltYWdlXHJcbiAqL1xyXG5mdW5jdGlvbiBiaW5hcml6ZUltYWdlKCkge1xyXG4gICAgb3RzdVRocmVzaG9sZChfY3VycmVudEltYWdlV3JhcHBlciwgX2JpbmFyeUltYWdlV3JhcHBlcik7XHJcbiAgICBfYmluYXJ5SW1hZ2VXcmFwcGVyLnplcm9Cb3JkZXIoKTtcclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5zaG93Q2FudmFzKSB7XHJcbiAgICAgICAgX2JpbmFyeUltYWdlV3JhcHBlci5zaG93KF9jYW52YXNDb250YWluZXIuZG9tLmJpbmFyeSwgMjU1KTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEl0ZXJhdGUgb3ZlciB0aGUgZW50aXJlIGltYWdlXHJcbiAqIGV4dHJhY3QgcGF0Y2hlc1xyXG4gKi9cclxuZnVuY3Rpb24gZmluZFBhdGNoZXMoKSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBqLFxyXG4gICAgICAgIHgsXHJcbiAgICAgICAgeSxcclxuICAgICAgICBtb21lbnRzLFxyXG4gICAgICAgIHBhdGNoZXNGb3VuZCA9IFtdLFxyXG4gICAgICAgIHJhc3Rlcml6ZXIsXHJcbiAgICAgICAgcmFzdGVyUmVzdWx0LFxyXG4gICAgICAgIHBhdGNoO1xyXG4gICAgZm9yIChpID0gMDsgaSA8IF9udW1QYXRjaGVzLng7IGkrKykge1xyXG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBfbnVtUGF0Y2hlcy55OyBqKyspIHtcclxuICAgICAgICAgICAgeCA9IF9zdWJJbWFnZVdyYXBwZXIuc2l6ZS54ICogaTtcclxuICAgICAgICAgICAgeSA9IF9zdWJJbWFnZVdyYXBwZXIuc2l6ZS55ICogajtcclxuXHJcbiAgICAgICAgICAgIC8vIHNlcGVyYXRlIHBhcnRzXHJcbiAgICAgICAgICAgIHNrZWxldG9uaXplKHgsIHkpO1xyXG5cclxuICAgICAgICAgICAgLy8gUmFzdGVyaXplLCBmaW5kIGluZGl2aWR1YWwgYmFyc1xyXG4gICAgICAgICAgICBfc2tlbEltYWdlV3JhcHBlci56ZXJvQm9yZGVyKCk7XHJcbiAgICAgICAgICAgIEFycmF5SGVscGVyLmluaXQoX2xhYmVsSW1hZ2VXcmFwcGVyLmRhdGEsIDApO1xyXG4gICAgICAgICAgICByYXN0ZXJpemVyID0gUmFzdGVyaXplci5jcmVhdGUoX3NrZWxJbWFnZVdyYXBwZXIsIF9sYWJlbEltYWdlV3JhcHBlcik7XHJcbiAgICAgICAgICAgIHJhc3RlclJlc3VsdCA9IHJhc3Rlcml6ZXIucmFzdGVyaXplKDApO1xyXG5cclxuICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiBfY29uZmlnLmRlYnVnLnNob3dMYWJlbHMpIHtcclxuICAgICAgICAgICAgICAgIF9sYWJlbEltYWdlV3JhcHBlci5vdmVybGF5KF9jYW52YXNDb250YWluZXIuZG9tLmJpbmFyeSwgTWF0aC5mbG9vcigzNjAgLyByYXN0ZXJSZXN1bHQuY291bnQpLFxyXG4gICAgICAgICAgICAgICAgICAgIHt4OiB4LCB5OiB5fSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBtb21lbnRzIGZyb20gdGhlIHNrZWxldG9uaXplZCBwYXRjaFxyXG4gICAgICAgICAgICBtb21lbnRzID0gX2xhYmVsSW1hZ2VXcmFwcGVyLm1vbWVudHMocmFzdGVyUmVzdWx0LmNvdW50KTtcclxuXHJcbiAgICAgICAgICAgIC8vIGV4dHJhY3QgZWxpZ2libGUgcGF0Y2hlc1xyXG4gICAgICAgICAgICBwYXRjaGVzRm91bmQgPSBwYXRjaGVzRm91bmQuY29uY2F0KGRlc2NyaWJlUGF0Y2gobW9tZW50cywgW2ksIGpdLCB4LCB5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5zaG93Rm91bmRQYXRjaGVzKSB7XHJcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBwYXRjaGVzRm91bmQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcGF0Y2ggPSBwYXRjaGVzRm91bmRbaV07XHJcbiAgICAgICAgICAgIEltYWdlRGVidWcuZHJhd1JlY3QocGF0Y2gucG9zLCBfc3ViSW1hZ2VXcmFwcGVyLnNpemUsIF9jYW52YXNDb250YWluZXIuY3R4LmJpbmFyeSxcclxuICAgICAgICAgICAgICAgIHtjb2xvcjogXCIjOTlmZjAwXCIsIGxpbmVXaWR0aDogMn0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGF0Y2hlc0ZvdW5kO1xyXG59XHJcblxyXG4vKipcclxuICogRmluZHMgdGhvc2UgY29ubmVjdGVkIGFyZWFzIHdoaWNoIGNvbnRhaW4gYXQgbGVhc3QgNiBwYXRjaGVzXHJcbiAqIGFuZCByZXR1cm5zIHRoZW0gb3JkZXJlZCBERVNDIGJ5IHRoZSBudW1iZXIgb2YgY29udGFpbmVkIHBhdGNoZXNcclxuICogQHBhcmFtIHtOdW1iZXJ9IG1heExhYmVsXHJcbiAqL1xyXG5mdW5jdGlvbiBmaW5kQmlnZ2VzdENvbm5lY3RlZEFyZWFzKG1heExhYmVsKXtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHN1bSxcclxuICAgICAgICBsYWJlbEhpc3QgPSBbXSxcclxuICAgICAgICB0b3BMYWJlbHMgPSBbXTtcclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IG1heExhYmVsOyBpKyspIHtcclxuICAgICAgICBsYWJlbEhpc3QucHVzaCgwKTtcclxuICAgIH1cclxuICAgIHN1bSA9IF9wYXRjaExhYmVsR3JpZC5kYXRhLmxlbmd0aDtcclxuICAgIHdoaWxlIChzdW0tLSkge1xyXG4gICAgICAgIGlmIChfcGF0Y2hMYWJlbEdyaWQuZGF0YVtzdW1dID4gMCkge1xyXG4gICAgICAgICAgICBsYWJlbEhpc3RbX3BhdGNoTGFiZWxHcmlkLmRhdGFbc3VtXSAtIDFdKys7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxhYmVsSGlzdCA9IGxhYmVsSGlzdC5tYXAoZnVuY3Rpb24odmFsLCBpZHgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB2YWw6IHZhbCxcclxuICAgICAgICAgICAgbGFiZWw6IGlkeCArIDFcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGFiZWxIaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xyXG4gICAgICAgIHJldHVybiBiLnZhbCAtIGEudmFsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gZXh0cmFjdCB0b3AgYXJlYXMgd2l0aCBhdCBsZWFzdCA2IHBhdGNoZXMgcHJlc2VudFxyXG4gICAgdG9wTGFiZWxzID0gbGFiZWxIaXN0LmZpbHRlcihmdW5jdGlvbihlbCkge1xyXG4gICAgICAgIHJldHVybiBlbC52YWwgPj0gNTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0b3BMYWJlbHM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKlxyXG4gKi9cclxuZnVuY3Rpb24gZmluZEJveGVzKHRvcExhYmVscywgbWF4TGFiZWwpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIGosXHJcbiAgICAgICAgc3VtLFxyXG4gICAgICAgIHBhdGNoZXMgPSBbXSxcclxuICAgICAgICBwYXRjaCxcclxuICAgICAgICBib3gsXHJcbiAgICAgICAgYm94ZXMgPSBbXSxcclxuICAgICAgICBoc3YgPSBbMCwgMSwgMV0sXHJcbiAgICAgICAgcmdiID0gWzAsIDAsIDBdO1xyXG5cclxuICAgIGZvciAoIGkgPSAwOyBpIDwgdG9wTGFiZWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgc3VtID0gX3BhdGNoTGFiZWxHcmlkLmRhdGEubGVuZ3RoO1xyXG4gICAgICAgIHBhdGNoZXMubGVuZ3RoID0gMDtcclxuICAgICAgICB3aGlsZSAoc3VtLS0pIHtcclxuICAgICAgICAgICAgaWYgKF9wYXRjaExhYmVsR3JpZC5kYXRhW3N1bV0gPT09IHRvcExhYmVsc1tpXS5sYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2ggPSBfaW1hZ2VUb1BhdGNoR3JpZC5kYXRhW3N1bV07XHJcbiAgICAgICAgICAgICAgICBwYXRjaGVzLnB1c2gocGF0Y2gpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJveCA9IGJveEZyb21QYXRjaGVzKHBhdGNoZXMpO1xyXG4gICAgICAgIGlmIChib3gpIHtcclxuICAgICAgICAgICAgYm94ZXMucHVzaChib3gpO1xyXG5cclxuICAgICAgICAgICAgLy8gZHJhdyBwYXRjaC1sYWJlbHMgaWYgcmVxdWVzdGVkXHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5zaG93UmVtYWluaW5nUGF0Y2hMYWJlbHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgcGF0Y2hlcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGNoID0gcGF0Y2hlc1tqXTtcclxuICAgICAgICAgICAgICAgICAgICBoc3ZbMF0gPSAodG9wTGFiZWxzW2ldLmxhYmVsIC8gKG1heExhYmVsICsgMSkpICogMzYwO1xyXG4gICAgICAgICAgICAgICAgICAgIGhzdjJyZ2IoaHN2LCByZ2IpO1xyXG4gICAgICAgICAgICAgICAgICAgIEltYWdlRGVidWcuZHJhd1JlY3QocGF0Y2gucG9zLCBfc3ViSW1hZ2VXcmFwcGVyLnNpemUsIF9jYW52YXNDb250YWluZXIuY3R4LmJpbmFyeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge2NvbG9yOiBcInJnYihcIiArIHJnYi5qb2luKFwiLFwiKSArIFwiKVwiLCBsaW5lV2lkdGg6IDJ9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBib3hlcztcclxufVxyXG5cclxuLyoqXHJcbiAqIEZpbmQgc2ltaWxhciBtb21lbnRzICh2aWEgY2x1c3RlcilcclxuICogQHBhcmFtIHtPYmplY3R9IG1vbWVudHNcclxuICovXHJcbmZ1bmN0aW9uIHNpbWlsYXJNb21lbnRzKG1vbWVudHMpIHtcclxuICAgIHZhciBjbHVzdGVycyA9IGNsdXN0ZXIobW9tZW50cywgMC45MCk7XHJcbiAgICB2YXIgdG9wQ2x1c3RlciA9IHRvcEdlbmVyaWMoY2x1c3RlcnMsIDEsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICByZXR1cm4gZS5nZXRQb2ludHMoKS5sZW5ndGg7XHJcbiAgICB9KTtcclxuICAgIHZhciBwb2ludHMgPSBbXSwgcmVzdWx0ID0gW107XHJcbiAgICBpZiAodG9wQ2x1c3Rlci5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBwb2ludHMgPSB0b3BDbHVzdGVyWzBdLml0ZW0uZ2V0UG9pbnRzKCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2gocG9pbnRzW2ldLnBvaW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBza2VsZXRvbml6ZSh4LCB5KSB7XHJcbiAgICBfYmluYXJ5SW1hZ2VXcmFwcGVyLnN1YkltYWdlQXNDb3B5KF9zdWJJbWFnZVdyYXBwZXIsIGltYWdlUmVmKHgsIHkpKTtcclxuICAgIF9za2VsZXRvbml6ZXIuc2tlbGV0b25pemUoKTtcclxuXHJcbiAgICAvLyBTaG93IHNrZWxldG9uIGlmIHJlcXVlc3RlZFxyXG4gICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiBfY29uZmlnLmRlYnVnLnNob3dTa2VsZXRvbikge1xyXG4gICAgICAgIF9za2VsSW1hZ2VXcmFwcGVyLm92ZXJsYXkoX2NhbnZhc0NvbnRhaW5lci5kb20uYmluYXJ5LCAzNjAsIGltYWdlUmVmKHgsIHkpKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dHJhY3RzIGFuZCBkZXNjcmliZXMgdGhvc2UgcGF0Y2hlcyB3aGljaCBzZWVtIHRvIGNvbnRhaW4gYSBiYXJjb2RlIHBhdHRlcm5cclxuICogQHBhcmFtIHtBcnJheX0gbW9tZW50c1xyXG4gKiBAcGFyYW0ge09iamVjdH0gcGF0Y2hQb3MsXHJcbiAqIEBwYXJhbSB7TnVtYmVyfSB4XHJcbiAqIEBwYXJhbSB7TnVtYmVyfSB5XHJcbiAqIEByZXR1cm5zIHtBcnJheX0gbGlzdCBvZiBwYXRjaGVzXHJcbiAqL1xyXG5mdW5jdGlvbiBkZXNjcmliZVBhdGNoKG1vbWVudHMsIHBhdGNoUG9zLCB4LCB5KSB7XHJcbiAgICB2YXIgayxcclxuICAgICAgICBhdmcsXHJcbiAgICAgICAgZWxpZ2libGVNb21lbnRzID0gW10sXHJcbiAgICAgICAgbWF0Y2hpbmdNb21lbnRzLFxyXG4gICAgICAgIHBhdGNoLFxyXG4gICAgICAgIHBhdGNoZXNGb3VuZCA9IFtdLFxyXG4gICAgICAgIG1pbkNvbXBvbmVudFdlaWdodCA9IE1hdGguY2VpbChfcGF0Y2hTaXplLnggLyAzKTtcclxuXHJcbiAgICBpZiAobW9tZW50cy5sZW5ndGggPj0gMikge1xyXG4gICAgICAgIC8vIG9ubHkgY29sbGVjdCBtb21lbnRzIHdoaWNoJ3MgYXJlYSBjb3ZlcnMgYXQgbGVhc3QgbWluQ29tcG9uZW50V2VpZ2h0IHBpeGVscy5cclxuICAgICAgICBmb3IgKCBrID0gMDsgayA8IG1vbWVudHMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgaWYgKG1vbWVudHNba10ubTAwID4gbWluQ29tcG9uZW50V2VpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICBlbGlnaWJsZU1vbWVudHMucHVzaChtb21lbnRzW2tdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgYXQgbGVhc3QgMiBtb21lbnRzIGFyZSBmb3VuZCB3aGljaCBoYXZlIGF0IGxlYXN0IG1pbkNvbXBvbmVudFdlaWdodHMgY292ZXJlZFxyXG4gICAgICAgIGlmIChlbGlnaWJsZU1vbWVudHMubGVuZ3RoID49IDIpIHtcclxuICAgICAgICAgICAgbWF0Y2hpbmdNb21lbnRzID0gc2ltaWxhck1vbWVudHMoZWxpZ2libGVNb21lbnRzKTtcclxuICAgICAgICAgICAgYXZnID0gMDtcclxuICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBzaW1pbGFyaXR5IG9mIHRoZSBtb21lbnRzXHJcbiAgICAgICAgICAgIGZvciAoIGsgPSAwOyBrIDwgbWF0Y2hpbmdNb21lbnRzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgICAgICAgICBhdmcgKz0gbWF0Y2hpbmdNb21lbnRzW2tdLnJhZDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gT25seSB0d28gb2YgdGhlIG1vbWVudHMgYXJlIGFsbG93ZWQgbm90IHRvIGZpdCBpbnRvIHRoZSBlcXVhdGlvblxyXG4gICAgICAgICAgICAvLyBhZGQgdGhlIHBhdGNoIHRvIHRoZSBzZXRcclxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nTW9tZW50cy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgbWF0Y2hpbmdNb21lbnRzLmxlbmd0aCA+PSAoZWxpZ2libGVNb21lbnRzLmxlbmd0aCAvIDQpICogM1xyXG4gICAgICAgICAgICAgICAgICAgICYmIG1hdGNoaW5nTW9tZW50cy5sZW5ndGggPiBtb21lbnRzLmxlbmd0aCAvIDQpIHtcclxuICAgICAgICAgICAgICAgIGF2ZyAvPSBtYXRjaGluZ01vbWVudHMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgcGF0Y2ggPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IHBhdGNoUG9zWzFdICogX251bVBhdGNoZXMueCArIHBhdGNoUG9zWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgIHBvczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4OiB4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiB5XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBib3g6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmVjMi5jbG9uZShbeCwgeV0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZWMyLmNsb25lKFt4ICsgX3N1YkltYWdlV3JhcHBlci5zaXplLngsIHldKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmVjMi5jbG9uZShbeCArIF9zdWJJbWFnZVdyYXBwZXIuc2l6ZS54LCB5ICsgX3N1YkltYWdlV3JhcHBlci5zaXplLnldKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmVjMi5jbG9uZShbeCwgeSArIF9zdWJJbWFnZVdyYXBwZXIuc2l6ZS55XSlcclxuICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vbWVudHM6IG1hdGNoaW5nTW9tZW50cyxcclxuICAgICAgICAgICAgICAgICAgICByYWQ6IGF2ZyxcclxuICAgICAgICAgICAgICAgICAgICB2ZWM6IHZlYzIuY2xvbmUoW01hdGguY29zKGF2ZyksIE1hdGguc2luKGF2ZyldKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHBhdGNoZXNGb3VuZC5wdXNoKHBhdGNoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwYXRjaGVzRm91bmQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBmaW5kcyBwYXRjaGVzIHdoaWNoIGFyZSBjb25uZWN0ZWQgYW5kIHNoYXJlIHRoZSBzYW1lIG9yaWVudGF0aW9uXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXRjaGVzRm91bmRcclxuICovXHJcbmZ1bmN0aW9uIHJhc3Rlcml6ZUFuZ3VsYXJTaW1pbGFyaXR5KHBhdGNoZXNGb3VuZCkge1xyXG4gICAgdmFyIGxhYmVsID0gMCxcclxuICAgICAgICB0aHJlc2hvbGQgPSAwLjk1LFxyXG4gICAgICAgIGN1cnJJZHggPSAwLFxyXG4gICAgICAgIGosXHJcbiAgICAgICAgcGF0Y2gsXHJcbiAgICAgICAgaHN2ID0gWzAsIDEsIDFdLFxyXG4gICAgICAgIHJnYiA9IFswLCAwLCAwXTtcclxuXHJcbiAgICBmdW5jdGlvbiBub3RZZXRQcm9jZXNzZWQoKSB7XHJcbiAgICAgICAgdmFyIGk7XHJcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBfcGF0Y2hMYWJlbEdyaWQuZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoX3BhdGNoTGFiZWxHcmlkLmRhdGFbaV0gPT09IDAgJiYgX3BhdGNoR3JpZC5kYXRhW2ldID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gX3BhdGNoTGFiZWxHcmlkLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB0cmFjZShjdXJyZW50SWR4KSB7XHJcbiAgICAgICAgdmFyIHgsXHJcbiAgICAgICAgICAgIHksXHJcbiAgICAgICAgICAgIGN1cnJlbnRQYXRjaCxcclxuICAgICAgICAgICAgaWR4LFxyXG4gICAgICAgICAgICBkaXIsXHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICB4OiBjdXJyZW50SWR4ICUgX3BhdGNoTGFiZWxHcmlkLnNpemUueCxcclxuICAgICAgICAgICAgICAgIHk6IChjdXJyZW50SWR4IC8gX3BhdGNoTGFiZWxHcmlkLnNpemUueCkgfCAwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNpbWlsYXJpdHk7XHJcblxyXG4gICAgICAgIGlmIChjdXJyZW50SWR4IDwgX3BhdGNoTGFiZWxHcmlkLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRQYXRjaCA9IF9pbWFnZVRvUGF0Y2hHcmlkLmRhdGFbY3VycmVudElkeF07XHJcbiAgICAgICAgICAgIC8vIGFzc2lnbiBsYWJlbFxyXG4gICAgICAgICAgICBfcGF0Y2hMYWJlbEdyaWQuZGF0YVtjdXJyZW50SWR4XSA9IGxhYmVsO1xyXG4gICAgICAgICAgICBmb3IgKCBkaXIgPSAwOyBkaXIgPCBUcmFjZXIuc2VhcmNoRGlyZWN0aW9ucy5sZW5ndGg7IGRpcisrKSB7XHJcbiAgICAgICAgICAgICAgICB5ID0gY3VycmVudC55ICsgVHJhY2VyLnNlYXJjaERpcmVjdGlvbnNbZGlyXVswXTtcclxuICAgICAgICAgICAgICAgIHggPSBjdXJyZW50LnggKyBUcmFjZXIuc2VhcmNoRGlyZWN0aW9uc1tkaXJdWzFdO1xyXG4gICAgICAgICAgICAgICAgaWR4ID0geSAqIF9wYXRjaExhYmVsR3JpZC5zaXplLnggKyB4O1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIGlmIHBhdGNoIGVtcHR5XHJcbiAgICAgICAgICAgICAgICBpZiAoX3BhdGNoR3JpZC5kYXRhW2lkeF0gPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBfcGF0Y2hMYWJlbEdyaWQuZGF0YVtpZHhdID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoX3BhdGNoTGFiZWxHcmlkLmRhdGFbaWR4XSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNpbWlsYXJpdHkgPSBNYXRoLmFicyh2ZWMyLmRvdChfaW1hZ2VUb1BhdGNoR3JpZC5kYXRhW2lkeF0udmVjLCBjdXJyZW50UGF0Y2gudmVjKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbWlsYXJpdHkgPiB0aHJlc2hvbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UoaWR4KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJlcGFyZSBmb3IgZmluZGluZyB0aGUgcmlnaHQgcGF0Y2hlc1xyXG4gICAgQXJyYXlIZWxwZXIuaW5pdChfcGF0Y2hHcmlkLmRhdGEsIDApO1xyXG4gICAgQXJyYXlIZWxwZXIuaW5pdChfcGF0Y2hMYWJlbEdyaWQuZGF0YSwgMCk7XHJcbiAgICBBcnJheUhlbHBlci5pbml0KF9pbWFnZVRvUGF0Y2hHcmlkLmRhdGEsIG51bGwpO1xyXG5cclxuICAgIGZvciAoIGogPSAwOyBqIDwgcGF0Y2hlc0ZvdW5kLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgcGF0Y2ggPSBwYXRjaGVzRm91bmRbal07XHJcbiAgICAgICAgX2ltYWdlVG9QYXRjaEdyaWQuZGF0YVtwYXRjaC5pbmRleF0gPSBwYXRjaDtcclxuICAgICAgICBfcGF0Y2hHcmlkLmRhdGFbcGF0Y2guaW5kZXhdID0gMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByYXN0ZXJpemUgdGhlIHBhdGNoZXMgZm91bmQgdG8gZGV0ZXJtaW5lIGFyZWFcclxuICAgIF9wYXRjaEdyaWQuemVyb0JvcmRlcigpO1xyXG5cclxuICAgIHdoaWxlICgoIGN1cnJJZHggPSBub3RZZXRQcm9jZXNzZWQoKSkgPCBfcGF0Y2hMYWJlbEdyaWQuZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICBsYWJlbCsrO1xyXG4gICAgICAgIHRyYWNlKGN1cnJJZHgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGRyYXcgcGF0Y2gtbGFiZWxzIGlmIHJlcXVlc3RlZFxyXG4gICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiBfY29uZmlnLmRlYnVnLnNob3dQYXRjaExhYmVscykge1xyXG4gICAgICAgIGZvciAoIGogPSAwOyBqIDwgX3BhdGNoTGFiZWxHcmlkLmRhdGEubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgaWYgKF9wYXRjaExhYmVsR3JpZC5kYXRhW2pdID4gMCAmJiBfcGF0Y2hMYWJlbEdyaWQuZGF0YVtqXSA8PSBsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgcGF0Y2ggPSBfaW1hZ2VUb1BhdGNoR3JpZC5kYXRhW2pdO1xyXG4gICAgICAgICAgICAgICAgaHN2WzBdID0gKF9wYXRjaExhYmVsR3JpZC5kYXRhW2pdIC8gKGxhYmVsICsgMSkpICogMzYwO1xyXG4gICAgICAgICAgICAgICAgaHN2MnJnYihoc3YsIHJnYik7XHJcbiAgICAgICAgICAgICAgICBJbWFnZURlYnVnLmRyYXdSZWN0KHBhdGNoLnBvcywgX3N1YkltYWdlV3JhcHBlci5zaXplLCBfY2FudmFzQ29udGFpbmVyLmN0eC5iaW5hcnksXHJcbiAgICAgICAgICAgICAgICAgICAge2NvbG9yOiBcInJnYihcIiArIHJnYi5qb2luKFwiLFwiKSArIFwiKVwiLCBsaW5lV2lkdGg6IDJ9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbGFiZWw7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIGluaXQ6IGZ1bmN0aW9uKGlucHV0SW1hZ2VXcmFwcGVyLCBjb25maWcpIHtcclxuICAgICAgICBfY29uZmlnID0gY29uZmlnO1xyXG4gICAgICAgIF9pbnB1dEltYWdlV3JhcHBlciA9IGlucHV0SW1hZ2VXcmFwcGVyO1xyXG5cclxuICAgICAgICBpbml0QnVmZmVycygpO1xyXG4gICAgICAgIGluaXRDYW52YXMoKTtcclxuICAgIH0sXHJcblxyXG4gICAgbG9jYXRlOiBmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgcGF0Y2hlc0ZvdW5kLFxyXG4gICAgICAgICAgICB0b3BMYWJlbHMsXHJcbiAgICAgICAgICAgIGJveGVzO1xyXG5cclxuICAgICAgICBpZiAoX2NvbmZpZy5oYWxmU2FtcGxlKSB7XHJcbiAgICAgICAgICAgIGhhbGZTYW1wbGUoX2lucHV0SW1hZ2VXcmFwcGVyLCBfY3VycmVudEltYWdlV3JhcHBlcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBiaW5hcml6ZUltYWdlKCk7XHJcbiAgICAgICAgcGF0Y2hlc0ZvdW5kID0gZmluZFBhdGNoZXMoKTtcclxuICAgICAgICAvLyByZXR1cm4gdW5sZXNzIDUlIG9yIG1vcmUgcGF0Y2hlcyBhcmUgZm91bmRcclxuICAgICAgICBpZiAocGF0Y2hlc0ZvdW5kLmxlbmd0aCA8IF9udW1QYXRjaGVzLnggKiBfbnVtUGF0Y2hlcy55ICogMC4wNSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJhc3RlcnJpemUgYXJlYSBieSBjb21wYXJpbmcgYW5ndWxhciBzaW1pbGFyaXR5O1xyXG4gICAgICAgIHZhciBtYXhMYWJlbCA9IHJhc3Rlcml6ZUFuZ3VsYXJTaW1pbGFyaXR5KHBhdGNoZXNGb3VuZCk7XHJcbiAgICAgICAgaWYgKG1heExhYmVsIDwgMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHNlYXJjaCBmb3IgYXJlYSB3aXRoIHRoZSBtb3N0IHBhdGNoZXMgKGJpZ2dlc3QgY29ubmVjdGVkIGFyZWEpXHJcbiAgICAgICAgdG9wTGFiZWxzID0gZmluZEJpZ2dlc3RDb25uZWN0ZWRBcmVhcyhtYXhMYWJlbCk7XHJcbiAgICAgICAgaWYgKHRvcExhYmVscy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBib3hlcyA9IGZpbmRCb3hlcyh0b3BMYWJlbHMsIG1heExhYmVsKTtcclxuICAgICAgICByZXR1cm4gYm94ZXM7XHJcbiAgICB9LFxyXG5cclxuICAgIGNoZWNrSW1hZ2VDb25zdHJhaW50czogZnVuY3Rpb24oaW5wdXRTdHJlYW0sIGNvbmZpZykge1xyXG4gICAgICAgIHZhciBwYXRjaFNpemUsXHJcbiAgICAgICAgICAgIHdpZHRoID0gaW5wdXRTdHJlYW0uZ2V0V2lkdGgoKSxcclxuICAgICAgICAgICAgaGVpZ2h0ID0gaW5wdXRTdHJlYW0uZ2V0SGVpZ2h0KCksXHJcbiAgICAgICAgICAgIGhhbGZTYW1wbGUgPSBjb25maWcuaGFsZlNhbXBsZSA/IDAuNSA6IDEsXHJcbiAgICAgICAgICAgIHNpemUsXHJcbiAgICAgICAgICAgIGFyZWE7XHJcblxyXG4gICAgICAgIC8vIGNhbGN1bGF0ZSB3aWR0aCBhbmQgaGVpZ2h0IGJhc2VkIG9uIGFyZWFcclxuICAgICAgICBpZiAoaW5wdXRTdHJlYW0uZ2V0Q29uZmlnKCkuYXJlYSkge1xyXG4gICAgICAgICAgICBhcmVhID0gY29tcHV0ZUltYWdlQXJlYSh3aWR0aCwgaGVpZ2h0LCBpbnB1dFN0cmVhbS5nZXRDb25maWcoKS5hcmVhKTtcclxuICAgICAgICAgICAgaW5wdXRTdHJlYW0uc2V0VG9wUmlnaHQoe3g6IGFyZWEuc3gsIHk6IGFyZWEuc3l9KTtcclxuICAgICAgICAgICAgaW5wdXRTdHJlYW0uc2V0Q2FudmFzU2l6ZSh7eDogd2lkdGgsIHk6IGhlaWdodH0pO1xyXG4gICAgICAgICAgICB3aWR0aCA9IGFyZWEuc3c7XHJcbiAgICAgICAgICAgIGhlaWdodCA9IGFyZWEuc2g7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaXplID0ge1xyXG4gICAgICAgICAgICB4OiBNYXRoLmZsb29yKHdpZHRoICogaGFsZlNhbXBsZSksXHJcbiAgICAgICAgICAgIHk6IE1hdGguZmxvb3IoaGVpZ2h0ICogaGFsZlNhbXBsZSlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBwYXRjaFNpemUgPSBjYWxjdWxhdGVQYXRjaFNpemUoY29uZmlnLnBhdGNoU2l6ZSwgc2l6ZSk7XHJcbiAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlBhdGNoLVNpemU6IFwiICsgSlNPTi5zdHJpbmdpZnkocGF0Y2hTaXplKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbnB1dFN0cmVhbS5zZXRXaWR0aChNYXRoLmZsb29yKE1hdGguZmxvb3Ioc2l6ZS54IC8gcGF0Y2hTaXplLngpICogKDEgLyBoYWxmU2FtcGxlKSAqIHBhdGNoU2l6ZS54KSk7XHJcbiAgICAgICAgaW5wdXRTdHJlYW0uc2V0SGVpZ2h0KE1hdGguZmxvb3IoTWF0aC5mbG9vcihzaXplLnkgLyBwYXRjaFNpemUueSkgKiAoMSAvIGhhbGZTYW1wbGUpICogcGF0Y2hTaXplLnkpKTtcclxuXHJcbiAgICAgICAgaWYgKChpbnB1dFN0cmVhbS5nZXRXaWR0aCgpICUgcGF0Y2hTaXplLngpID09PSAwICYmIChpbnB1dFN0cmVhbS5nZXRIZWlnaHQoKSAlIHBhdGNoU2l6ZS55KSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkltYWdlIGRpbWVuc2lvbnMgZG8gbm90IGNvbXBseSB3aXRoIHRoZSBjdXJyZW50IHNldHRpbmdzOiBXaWR0aCAoXCIgK1xyXG4gICAgICAgICAgICB3aWR0aCArIFwiIClhbmQgaGVpZ2h0IChcIiArIGhlaWdodCArXHJcbiAgICAgICAgICAgIFwiKSBtdXN0IGEgbXVsdGlwbGUgb2YgXCIgKyBwYXRjaFNpemUueCk7XHJcbiAgICB9XHJcbn07XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2xvY2F0b3IvYmFyY29kZV9sb2NhdG9yLmpzXG4gKiovIiwiaW1wb3J0IFRyYWNlciBmcm9tICcuL3RyYWNlcic7XHJcblxyXG4vKipcclxuICogaHR0cDovL3d3dy5jb2RlcHJvamVjdC5jb20vVGlwcy80MDcxNzIvQ29ubmVjdGVkLUNvbXBvbmVudC1MYWJlbGluZy1hbmQtVmVjdG9yaXphdGlvblxyXG4gKi9cclxudmFyIFJhc3Rlcml6ZXIgPSB7XHJcbiAgICBjcmVhdGVDb250b3VyMkQ6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRpcjogbnVsbCxcclxuICAgICAgICAgICAgaW5kZXg6IG51bGwsXHJcbiAgICAgICAgICAgIGZpcnN0VmVydGV4OiBudWxsLFxyXG4gICAgICAgICAgICBpbnNpZGVDb250b3VyczogbnVsbCxcclxuICAgICAgICAgICAgbmV4dHBlZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHByZXZwZWVyOiBudWxsXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbiAgICBDT05UT1VSX0RJUjoge1xyXG4gICAgICAgIENXX0RJUjogMCxcclxuICAgICAgICBDQ1dfRElSOiAxLFxyXG4gICAgICAgIFVOS05PV05fRElSOiAyXHJcbiAgICB9LFxyXG4gICAgRElSOiB7XHJcbiAgICAgICAgT1VUU0lERV9FREdFOiAtMzI3NjcsXHJcbiAgICAgICAgSU5TSURFX0VER0U6IC0zMjc2NlxyXG4gICAgfSxcclxuICAgIGNyZWF0ZTogZnVuY3Rpb24oaW1hZ2VXcmFwcGVyLCBsYWJlbFdyYXBwZXIpIHtcclxuICAgICAgICB2YXIgaW1hZ2VEYXRhID0gaW1hZ2VXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgICAgIGxhYmVsRGF0YSA9IGxhYmVsV3JhcHBlci5kYXRhLFxyXG4gICAgICAgICAgICB3aWR0aCA9IGltYWdlV3JhcHBlci5zaXplLngsXHJcbiAgICAgICAgICAgIGhlaWdodCA9IGltYWdlV3JhcHBlci5zaXplLnksXHJcbiAgICAgICAgICAgIHRyYWNlciA9IFRyYWNlci5jcmVhdGUoaW1hZ2VXcmFwcGVyLCBsYWJlbFdyYXBwZXIpO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByYXN0ZXJpemU6IGZ1bmN0aW9uKGRlcHRobGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBjb2xvcixcclxuICAgICAgICAgICAgICAgICAgICBiYyxcclxuICAgICAgICAgICAgICAgICAgICBsYyxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbGluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIGN4LFxyXG4gICAgICAgICAgICAgICAgICAgIGN5LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yTWFwID0gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgdmVydGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIHAsXHJcbiAgICAgICAgICAgICAgICAgICAgY2MsXHJcbiAgICAgICAgICAgICAgICAgICAgc2MsXHJcbiAgICAgICAgICAgICAgICAgICAgcG9zLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbm5lY3RlZENvdW50ID0gMCxcclxuICAgICAgICAgICAgICAgICAgICBpO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgNDAwOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvck1hcFtpXSA9IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29sb3JNYXBbMF0gPSBpbWFnZURhdGFbMF07XHJcbiAgICAgICAgICAgICAgICBjYyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBmb3IgKCBjeSA9IDE7IGN5IDwgaGVpZ2h0IC0gMTsgY3krKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsaW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGJjID0gY29sb3JNYXBbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICggY3ggPSAxOyBjeCA8IHdpZHRoIC0gMTsgY3grKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBjeSAqIHdpZHRoICsgY3g7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYWJlbERhdGFbcG9zXSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBpbWFnZURhdGFbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2xvciAhPT0gYmMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFiZWxpbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYyA9IGNvbm5lY3RlZENvdW50ICsgMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JNYXBbbGNdID0gY29sb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJjID0gY29sb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleCA9IHRyYWNlci5jb250b3VyVHJhY2luZyhjeSwgY3gsIGxjLCBjb2xvciwgUmFzdGVyaXplci5ESVIuT1VUU0lERV9FREdFKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnRleCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkQ291bnQrKztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaW5kZXggPSBsYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBSYXN0ZXJpemVyLmNyZWF0ZUNvbnRvdXIyRCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5kaXIgPSBSYXN0ZXJpemVyLkNPTlRPVVJfRElSLkNXX0RJUjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5kZXggPSBsYWJlbGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5maXJzdFZlcnRleCA9IHZlcnRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAubmV4dHBlZXIgPSBjYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zaWRlQ29udG91cnMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNjICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MucHJldnBlZXIgPSBwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MgPSBwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGV4ID0gdHJhY2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29udG91clRyYWNpbmcoY3ksIGN4LCBSYXN0ZXJpemVyLkRJUi5JTlNJREVfRURHRSwgY29sb3IsIGxhYmVsaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVydGV4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gUmFzdGVyaXplci5jcmVhdGVDb250b3VyMkQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuZmlyc3RWZXJ0ZXggPSB2ZXJ0ZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmluc2lkZUNvbnRvdXJzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXB0aGxhYmVsID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5kaXIgPSBSYXN0ZXJpemVyLkNPTlRPVVJfRElSLkNDV19ESVI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuZGlyID0gUmFzdGVyaXplci5DT05UT1VSX0RJUi5DV19ESVI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmluZGV4ID0gZGVwdGhsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjID0gY2M7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHNjICE9PSBudWxsKSAmJiBzYy5pbmRleCAhPT0gbGFiZWxpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjID0gc2MubmV4dHBlZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2MgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLm5leHRwZWVyID0gc2MuaW5zaWRlQ29udG91cnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjLmluc2lkZUNvbnRvdXJzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjLmluc2lkZUNvbnRvdXJzLnByZXZwZWVyID0gcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MuaW5zaWRlQ29udG91cnMgPSBwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbERhdGFbcG9zXSA9IGxhYmVsaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFiZWxEYXRhW3Bvc10gPT09IFJhc3Rlcml6ZXIuRElSLk9VVFNJREVfRURHRVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxhYmVsRGF0YVtwb3NdID09PSBSYXN0ZXJpemVyLkRJUi5JTlNJREVfRURHRSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxpbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFiZWxEYXRhW3Bvc10gPT09IFJhc3Rlcml6ZXIuRElSLklOU0lERV9FREdFKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmMgPSBpbWFnZURhdGFbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmMgPSBjb2xvck1hcFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaW5kZXggPSBsYWJlbERhdGFbcG9zXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJjID0gY29sb3JNYXBbbGFiZWxpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzYyA9IGNjO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKHNjICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2MuaW5kZXggPSBkZXB0aGxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHNjID0gc2MubmV4dHBlZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNjOiBjYyxcclxuICAgICAgICAgICAgICAgICAgICBjb3VudDogY29ubmVjdGVkQ291bnRcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRlYnVnOiB7XHJcbiAgICAgICAgICAgICAgICBkcmF3Q29udG91cjogZnVuY3Rpb24oY2FudmFzLCBmaXJzdENvbnRvdXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHEgPSBmaXJzdENvbnRvdXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBcInJlZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBcInJlZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAxO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocHEgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXEgPSBwcS5pbnNpZGVDb250b3VycztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpcSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAocHEgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlxICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gaXE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcSA9IGlxLm5leHRwZWVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IHBxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHEgPSBwcS5uZXh0cGVlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlxID0gcHEuaW5zaWRlQ29udG91cnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlxID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChxLmRpcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFJhc3Rlcml6ZXIuQ09OVE9VUl9ESVIuQ1dfRElSOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gXCJyZWRcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFJhc3Rlcml6ZXIuQ09OVE9VUl9ESVIuQ0NXX0RJUjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IFwiYmx1ZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUmFzdGVyaXplci5DT05UT1VSX0RJUi5VTktOT1dOX0RJUjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IFwiZ3JlZW5cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gcS5maXJzdFZlcnRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdHgubW92ZVRvKHAueCwgcC55KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHAubmV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5saW5lVG8ocC54LCBwLnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChwICE9PSBxLmZpcnN0VmVydGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSYXN0ZXJpemVyO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9sb2NhdG9yL3Jhc3Rlcml6ZXIuanNcbiAqKi8iLCIvKiBAcHJlc2VydmUgQVNNIEJFR0lOICovXHJcbi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSovXHJcbmZ1bmN0aW9uIFNrZWxldG9uaXplcihzdGRsaWIsIGZvcmVpZ24sIGJ1ZmZlcikge1xyXG4gICAgXCJ1c2UgYXNtXCI7XHJcblxyXG4gICAgdmFyIGltYWdlcyA9IG5ldyBzdGRsaWIuVWludDhBcnJheShidWZmZXIpLFxyXG4gICAgICAgIHNpemUgPSBmb3JlaWduLnNpemUgfCAwLFxyXG4gICAgICAgIGltdWwgPSBzdGRsaWIuTWF0aC5pbXVsO1xyXG5cclxuICAgIGZ1bmN0aW9uIGVyb2RlKGluSW1hZ2VQdHIsIG91dEltYWdlUHRyKSB7XHJcbiAgICAgICAgaW5JbWFnZVB0ciA9IGluSW1hZ2VQdHIgfCAwO1xyXG4gICAgICAgIG91dEltYWdlUHRyID0gb3V0SW1hZ2VQdHIgfCAwO1xyXG5cclxuICAgICAgICB2YXIgdiA9IDAsXHJcbiAgICAgICAgICAgIHUgPSAwLFxyXG4gICAgICAgICAgICBzdW0gPSAwLFxyXG4gICAgICAgICAgICB5U3RhcnQxID0gMCxcclxuICAgICAgICAgICAgeVN0YXJ0MiA9IDAsXHJcbiAgICAgICAgICAgIHhTdGFydDEgPSAwLFxyXG4gICAgICAgICAgICB4U3RhcnQyID0gMCxcclxuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcclxuXHJcbiAgICAgICAgZm9yICggdiA9IDE7ICh2IHwgMCkgPCAoKHNpemUgLSAxKSB8IDApOyB2ID0gKHYgKyAxKSB8IDApIHtcclxuICAgICAgICAgICAgb2Zmc2V0ID0gKG9mZnNldCArIHNpemUpIHwgMDtcclxuICAgICAgICAgICAgZm9yICggdSA9IDE7ICh1IHwgMCkgPCAoKHNpemUgLSAxKSB8IDApOyB1ID0gKHUgKyAxKSB8IDApIHtcclxuICAgICAgICAgICAgICAgIHlTdGFydDEgPSAob2Zmc2V0IC0gc2l6ZSkgfCAwO1xyXG4gICAgICAgICAgICAgICAgeVN0YXJ0MiA9IChvZmZzZXQgKyBzaXplKSB8IDA7XHJcbiAgICAgICAgICAgICAgICB4U3RhcnQxID0gKHUgLSAxKSB8IDA7XHJcbiAgICAgICAgICAgICAgICB4U3RhcnQyID0gKHUgKyAxKSB8IDA7XHJcbiAgICAgICAgICAgICAgICBzdW0gPSAoKGltYWdlc1soaW5JbWFnZVB0ciArIHlTdGFydDEgKyB4U3RhcnQxKSB8IDBdIHwgMClcclxuICAgICAgICAgICAgICAgICAgICArIChpbWFnZXNbKGluSW1hZ2VQdHIgKyB5U3RhcnQxICsgeFN0YXJ0MikgfCAwXSB8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKyAoaW1hZ2VzWyhpbkltYWdlUHRyICsgb2Zmc2V0ICsgdSkgfCAwXSB8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKyAoaW1hZ2VzWyhpbkltYWdlUHRyICsgeVN0YXJ0MiArIHhTdGFydDEpIHwgMF0gfCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICsgKGltYWdlc1soaW5JbWFnZVB0ciArIHlTdGFydDIgKyB4U3RhcnQyKSB8IDBdIHwgMCkpIHwgMDtcclxuICAgICAgICAgICAgICAgIGlmICgoc3VtIHwgMCkgPT0gKDUgfCAwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlc1sob3V0SW1hZ2VQdHIgKyBvZmZzZXQgKyB1KSB8IDBdID0gMTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzWyhvdXRJbWFnZVB0ciArIG9mZnNldCArIHUpIHwgMF0gPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdChhSW1hZ2VQdHIsIGJJbWFnZVB0ciwgb3V0SW1hZ2VQdHIpIHtcclxuICAgICAgICBhSW1hZ2VQdHIgPSBhSW1hZ2VQdHIgfCAwO1xyXG4gICAgICAgIGJJbWFnZVB0ciA9IGJJbWFnZVB0ciB8IDA7XHJcbiAgICAgICAgb3V0SW1hZ2VQdHIgPSBvdXRJbWFnZVB0ciB8IDA7XHJcblxyXG4gICAgICAgIHZhciBsZW5ndGggPSAwO1xyXG5cclxuICAgICAgICBsZW5ndGggPSBpbXVsKHNpemUsIHNpemUpIHwgMDtcclxuXHJcbiAgICAgICAgd2hpbGUgKChsZW5ndGggfCAwKSA+IDApIHtcclxuICAgICAgICAgICAgbGVuZ3RoID0gKGxlbmd0aCAtIDEpIHwgMDtcclxuICAgICAgICAgICAgaW1hZ2VzWyhvdXRJbWFnZVB0ciArIGxlbmd0aCkgfCAwXSA9XHJcbiAgICAgICAgICAgICAgICAoKGltYWdlc1soYUltYWdlUHRyICsgbGVuZ3RoKSB8IDBdIHwgMCkgLSAoaW1hZ2VzWyhiSW1hZ2VQdHIgKyBsZW5ndGgpIHwgMF0gfCAwKSkgfCAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBiaXR3aXNlT3IoYUltYWdlUHRyLCBiSW1hZ2VQdHIsIG91dEltYWdlUHRyKSB7XHJcbiAgICAgICAgYUltYWdlUHRyID0gYUltYWdlUHRyIHwgMDtcclxuICAgICAgICBiSW1hZ2VQdHIgPSBiSW1hZ2VQdHIgfCAwO1xyXG4gICAgICAgIG91dEltYWdlUHRyID0gb3V0SW1hZ2VQdHIgfCAwO1xyXG5cclxuICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuXHJcbiAgICAgICAgbGVuZ3RoID0gaW11bChzaXplLCBzaXplKSB8IDA7XHJcblxyXG4gICAgICAgIHdoaWxlICgobGVuZ3RoIHwgMCkgPiAwKSB7XHJcbiAgICAgICAgICAgIGxlbmd0aCA9IChsZW5ndGggLSAxKSB8IDA7XHJcbiAgICAgICAgICAgIGltYWdlc1sob3V0SW1hZ2VQdHIgKyBsZW5ndGgpIHwgMF0gPVxyXG4gICAgICAgICAgICAgICAgKChpbWFnZXNbKGFJbWFnZVB0ciArIGxlbmd0aCkgfCAwXSB8IDApIHwgKGltYWdlc1soYkltYWdlUHRyICsgbGVuZ3RoKSB8IDBdIHwgMCkpIHwgMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY291bnROb25aZXJvKGltYWdlUHRyKSB7XHJcbiAgICAgICAgaW1hZ2VQdHIgPSBpbWFnZVB0ciB8IDA7XHJcblxyXG4gICAgICAgIHZhciBzdW0gPSAwLFxyXG4gICAgICAgICAgICBsZW5ndGggPSAwO1xyXG5cclxuICAgICAgICBsZW5ndGggPSBpbXVsKHNpemUsIHNpemUpIHwgMDtcclxuXHJcbiAgICAgICAgd2hpbGUgKChsZW5ndGggfCAwKSA+IDApIHtcclxuICAgICAgICAgICAgbGVuZ3RoID0gKGxlbmd0aCAtIDEpIHwgMDtcclxuICAgICAgICAgICAgc3VtID0gKChzdW0gfCAwKSArIChpbWFnZXNbKGltYWdlUHRyICsgbGVuZ3RoKSB8IDBdIHwgMCkpIHwgMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAoc3VtIHwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gaW5pdChpbWFnZVB0ciwgdmFsdWUpIHtcclxuICAgICAgICBpbWFnZVB0ciA9IGltYWdlUHRyIHwgMDtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlIHwgMDtcclxuXHJcbiAgICAgICAgdmFyIGxlbmd0aCA9IDA7XHJcblxyXG4gICAgICAgIGxlbmd0aCA9IGltdWwoc2l6ZSwgc2l6ZSkgfCAwO1xyXG5cclxuICAgICAgICB3aGlsZSAoKGxlbmd0aCB8IDApID4gMCkge1xyXG4gICAgICAgICAgICBsZW5ndGggPSAobGVuZ3RoIC0gMSkgfCAwO1xyXG4gICAgICAgICAgICBpbWFnZXNbKGltYWdlUHRyICsgbGVuZ3RoKSB8IDBdID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRpbGF0ZShpbkltYWdlUHRyLCBvdXRJbWFnZVB0cikge1xyXG4gICAgICAgIGluSW1hZ2VQdHIgPSBpbkltYWdlUHRyIHwgMDtcclxuICAgICAgICBvdXRJbWFnZVB0ciA9IG91dEltYWdlUHRyIHwgMDtcclxuXHJcbiAgICAgICAgdmFyIHYgPSAwLFxyXG4gICAgICAgICAgICB1ID0gMCxcclxuICAgICAgICAgICAgc3VtID0gMCxcclxuICAgICAgICAgICAgeVN0YXJ0MSA9IDAsXHJcbiAgICAgICAgICAgIHlTdGFydDIgPSAwLFxyXG4gICAgICAgICAgICB4U3RhcnQxID0gMCxcclxuICAgICAgICAgICAgeFN0YXJ0MiA9IDAsXHJcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XHJcblxyXG4gICAgICAgIGZvciAoIHYgPSAxOyAodiB8IDApIDwgKChzaXplIC0gMSkgfCAwKTsgdiA9ICh2ICsgMSkgfCAwKSB7XHJcbiAgICAgICAgICAgIG9mZnNldCA9IChvZmZzZXQgKyBzaXplKSB8IDA7XHJcbiAgICAgICAgICAgIGZvciAoIHUgPSAxOyAodSB8IDApIDwgKChzaXplIC0gMSkgfCAwKTsgdSA9ICh1ICsgMSkgfCAwKSB7XHJcbiAgICAgICAgICAgICAgICB5U3RhcnQxID0gKG9mZnNldCAtIHNpemUpIHwgMDtcclxuICAgICAgICAgICAgICAgIHlTdGFydDIgPSAob2Zmc2V0ICsgc2l6ZSkgfCAwO1xyXG4gICAgICAgICAgICAgICAgeFN0YXJ0MSA9ICh1IC0gMSkgfCAwO1xyXG4gICAgICAgICAgICAgICAgeFN0YXJ0MiA9ICh1ICsgMSkgfCAwO1xyXG4gICAgICAgICAgICAgICAgc3VtID0gKChpbWFnZXNbKGluSW1hZ2VQdHIgKyB5U3RhcnQxICsgeFN0YXJ0MSkgfCAwXSB8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKyAoaW1hZ2VzWyhpbkltYWdlUHRyICsgeVN0YXJ0MSArIHhTdGFydDIpIHwgMF0gfCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICsgKGltYWdlc1soaW5JbWFnZVB0ciArIG9mZnNldCArIHUpIHwgMF0gfCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICsgKGltYWdlc1soaW5JbWFnZVB0ciArIHlTdGFydDIgKyB4U3RhcnQxKSB8IDBdIHwgMClcclxuICAgICAgICAgICAgICAgICAgICArIChpbWFnZXNbKGluSW1hZ2VQdHIgKyB5U3RhcnQyICsgeFN0YXJ0MikgfCAwXSB8IDApKSB8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHN1bSB8IDApID4gKDAgfCAwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlc1sob3V0SW1hZ2VQdHIgKyBvZmZzZXQgKyB1KSB8IDBdID0gMTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VzWyhvdXRJbWFnZVB0ciArIG9mZnNldCArIHUpIHwgMF0gPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBtZW1jcHkoc3JjSW1hZ2VQdHIsIGRzdEltYWdlUHRyKSB7XHJcbiAgICAgICAgc3JjSW1hZ2VQdHIgPSBzcmNJbWFnZVB0ciB8IDA7XHJcbiAgICAgICAgZHN0SW1hZ2VQdHIgPSBkc3RJbWFnZVB0ciB8IDA7XHJcblxyXG4gICAgICAgIHZhciBsZW5ndGggPSAwO1xyXG5cclxuICAgICAgICBsZW5ndGggPSBpbXVsKHNpemUsIHNpemUpIHwgMDtcclxuXHJcbiAgICAgICAgd2hpbGUgKChsZW5ndGggfCAwKSA+IDApIHtcclxuICAgICAgICAgICAgbGVuZ3RoID0gKGxlbmd0aCAtIDEpIHwgMDtcclxuICAgICAgICAgICAgaW1hZ2VzWyhkc3RJbWFnZVB0ciArIGxlbmd0aCkgfCAwXSA9IChpbWFnZXNbKHNyY0ltYWdlUHRyICsgbGVuZ3RoKSB8IDBdIHwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHplcm9Cb3JkZXIoaW1hZ2VQdHIpIHtcclxuICAgICAgICBpbWFnZVB0ciA9IGltYWdlUHRyIHwgMDtcclxuXHJcbiAgICAgICAgdmFyIHggPSAwLFxyXG4gICAgICAgICAgICB5ID0gMDtcclxuXHJcbiAgICAgICAgZm9yICggeCA9IDA7ICh4IHwgMCkgPCAoKHNpemUgLSAxKSB8IDApOyB4ID0gKHggKyAxKSB8IDApIHtcclxuICAgICAgICAgICAgaW1hZ2VzWyhpbWFnZVB0ciArIHgpIHwgMF0gPSAwO1xyXG4gICAgICAgICAgICBpbWFnZXNbKGltYWdlUHRyICsgeSkgfCAwXSA9IDA7XHJcbiAgICAgICAgICAgIHkgPSAoKHkgKyBzaXplKSAtIDEpIHwgMDtcclxuICAgICAgICAgICAgaW1hZ2VzWyhpbWFnZVB0ciArIHkpIHwgMF0gPSAwO1xyXG4gICAgICAgICAgICB5ID0gKHkgKyAxKSB8IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoIHggPSAwOyAoeCB8IDApIDwgKHNpemUgfCAwKTsgeCA9ICh4ICsgMSkgfCAwKSB7XHJcbiAgICAgICAgICAgIGltYWdlc1soaW1hZ2VQdHIgKyB5KSB8IDBdID0gMDtcclxuICAgICAgICAgICAgeSA9ICh5ICsgMSkgfCAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBza2VsZXRvbml6ZSgpIHtcclxuICAgICAgICB2YXIgc3ViSW1hZ2VQdHIgPSAwLFxyXG4gICAgICAgICAgICBlcm9kZWRJbWFnZVB0ciA9IDAsXHJcbiAgICAgICAgICAgIHRlbXBJbWFnZVB0ciA9IDAsXHJcbiAgICAgICAgICAgIHNrZWxJbWFnZVB0ciA9IDAsXHJcbiAgICAgICAgICAgIHN1bSA9IDAsXHJcbiAgICAgICAgICAgIGRvbmUgPSAwO1xyXG5cclxuICAgICAgICBlcm9kZWRJbWFnZVB0ciA9IGltdWwoc2l6ZSwgc2l6ZSkgfCAwO1xyXG4gICAgICAgIHRlbXBJbWFnZVB0ciA9IChlcm9kZWRJbWFnZVB0ciArIGVyb2RlZEltYWdlUHRyKSB8IDA7XHJcbiAgICAgICAgc2tlbEltYWdlUHRyID0gKHRlbXBJbWFnZVB0ciArIGVyb2RlZEltYWdlUHRyKSB8IDA7XHJcblxyXG4gICAgICAgIC8vIGluaXQgc2tlbC1pbWFnZVxyXG4gICAgICAgIGluaXQoc2tlbEltYWdlUHRyLCAwKTtcclxuICAgICAgICB6ZXJvQm9yZGVyKHN1YkltYWdlUHRyKTtcclxuXHJcbiAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBlcm9kZShzdWJJbWFnZVB0ciwgZXJvZGVkSW1hZ2VQdHIpO1xyXG4gICAgICAgICAgICBkaWxhdGUoZXJvZGVkSW1hZ2VQdHIsIHRlbXBJbWFnZVB0cik7XHJcbiAgICAgICAgICAgIHN1YnRyYWN0KHN1YkltYWdlUHRyLCB0ZW1wSW1hZ2VQdHIsIHRlbXBJbWFnZVB0cik7XHJcbiAgICAgICAgICAgIGJpdHdpc2VPcihza2VsSW1hZ2VQdHIsIHRlbXBJbWFnZVB0ciwgc2tlbEltYWdlUHRyKTtcclxuICAgICAgICAgICAgbWVtY3B5KGVyb2RlZEltYWdlUHRyLCBzdWJJbWFnZVB0cik7XHJcbiAgICAgICAgICAgIHN1bSA9IGNvdW50Tm9uWmVybyhzdWJJbWFnZVB0cikgfCAwO1xyXG4gICAgICAgICAgICBkb25lID0gKChzdW0gfCAwKSA9PSAwIHwgMCk7XHJcbiAgICAgICAgfSB3aGlsZSAoIWRvbmUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBza2VsZXRvbml6ZTogc2tlbGV0b25pemVcclxuICAgIH07XHJcbn1cclxuLyogQHByZXNlcnZlIEFTTSBFTkQgKi9cclxuZXhwb3J0IGRlZmF1bHQgU2tlbGV0b25pemVyO1xyXG4vKiBlc2xpbnQtZW5hYmxlIGVxZXFlcSovXHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2xvY2F0b3Ivc2tlbGV0b25pemVyLmpzXG4gKiovIiwiaW1wb3J0IEJhcmNvZGVSZWFkZXIgZnJvbSAnLi9iYXJjb2RlX3JlYWRlcic7XHJcblxyXG5mdW5jdGlvbiBDb2RhYmFyUmVhZGVyKCkge1xyXG4gICAgQmFyY29kZVJlYWRlci5jYWxsKHRoaXMpO1xyXG4gICAgdGhpcy5fY291bnRlcnMgPSBbXTtcclxufVxyXG5cclxudmFyIHByb3BlcnRpZXMgPSB7XHJcbiAgICBBTFBIQUJFVEhfU1RSSU5HOiB7dmFsdWU6IFwiMDEyMzQ1Njc4OS0kOi8uK0FCQ0RcIn0sXHJcbiAgICBBTFBIQUJFVDoge3ZhbHVlOiBbNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDQ1LCAzNiwgNTgsIDQ3LCA0NiwgNDMsIDY1LCA2NiwgNjcsIDY4XX0sXHJcbiAgICBDSEFSQUNURVJfRU5DT0RJTkdTOiB7dmFsdWU6IFsweDAwMywgMHgwMDYsIDB4MDA5LCAweDA2MCwgMHgwMTIsIDB4MDQyLCAweDAyMSwgMHgwMjQsIDB4MDMwLCAweDA0OCwgMHgwMGMsIDB4MDE4LFxyXG4gICAgICAgIDB4MDQ1LCAweDA1MSwgMHgwNTQsIDB4MDE1LCAweDAxQSwgMHgwMjksIDB4MDBCLCAweDAwRV19LFxyXG4gICAgU1RBUlRfRU5EOiB7dmFsdWU6IFsweDAxQSwgMHgwMjksIDB4MDBCLCAweDAwRV19LFxyXG4gICAgTUlOX0VOQ09ERURfQ0hBUlM6IHt2YWx1ZTogNH0sXHJcbiAgICBNQVhfQUNDRVBUQUJMRToge3ZhbHVlOiAyLjB9LFxyXG4gICAgUEFERElORzoge3ZhbHVlOiAxLjV9LFxyXG4gICAgRk9STUFUOiB7dmFsdWU6IFwiY29kYWJhclwiLCB3cml0ZWFibGU6IGZhbHNlfVxyXG59O1xyXG5cclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJhcmNvZGVSZWFkZXIucHJvdG90eXBlLCBwcm9wZXJ0aWVzKTtcclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb2RhYmFyUmVhZGVyO1xyXG5cclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHJlc3VsdCA9IFtdLFxyXG4gICAgICAgIHN0YXJ0LFxyXG4gICAgICAgIGRlY29kZWRDaGFyLFxyXG4gICAgICAgIHBhdHRlcm4sXHJcbiAgICAgICAgbmV4dFN0YXJ0LFxyXG4gICAgICAgIGVuZDtcclxuXHJcbiAgICB0aGlzLl9jb3VudGVycyA9IHNlbGYuX2ZpbGxDb3VudGVycygpO1xyXG4gICAgc3RhcnQgPSBzZWxmLl9maW5kU3RhcnQoKTtcclxuICAgIGlmICghc3RhcnQpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIG5leHRTdGFydCA9IHN0YXJ0LnN0YXJ0Q291bnRlcjtcclxuXHJcbiAgICBkbyB7XHJcbiAgICAgICAgcGF0dGVybiA9IHNlbGYuX3RvUGF0dGVybihuZXh0U3RhcnQpO1xyXG4gICAgICAgIGlmIChwYXR0ZXJuIDwgMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVjb2RlZENoYXIgPSBzZWxmLl9wYXR0ZXJuVG9DaGFyKHBhdHRlcm4pO1xyXG4gICAgICAgIGlmIChkZWNvZGVkQ2hhciA8IDApe1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LnB1c2goZGVjb2RlZENoYXIpO1xyXG4gICAgICAgIG5leHRTdGFydCArPSA4O1xyXG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMSAmJiBzZWxmLl9pc1N0YXJ0RW5kKHBhdHRlcm4pKSB7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH0gd2hpbGUgKG5leHRTdGFydCA8IHNlbGYuX2NvdW50ZXJzLmxlbmd0aCk7XHJcblxyXG4gICAgLy8gdmVyaWZ5IGVuZFxyXG4gICAgaWYgKChyZXN1bHQubGVuZ3RoIC0gMikgPCBzZWxmLk1JTl9FTkNPREVEX0NIQVJTIHx8ICFzZWxmLl9pc1N0YXJ0RW5kKHBhdHRlcm4pKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdmVyaWZ5IGVuZCB3aGl0ZSBzcGFjZVxyXG4gICAgaWYgKCFzZWxmLl92ZXJpZnlXaGl0ZXNwYWNlKHN0YXJ0LnN0YXJ0Q291bnRlciwgbmV4dFN0YXJ0IC0gOCkpe1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghc2VsZi5fdmFsaWRhdGVSZXN1bHQocmVzdWx0LCBzdGFydC5zdGFydENvdW50ZXIpKXtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBuZXh0U3RhcnQgPSBuZXh0U3RhcnQgPiBzZWxmLl9jb3VudGVycy5sZW5ndGggPyBzZWxmLl9jb3VudGVycy5sZW5ndGggOiBuZXh0U3RhcnQ7XHJcbiAgICBlbmQgPSBzdGFydC5zdGFydCArIHNlbGYuX3N1bUNvdW50ZXJzKHN0YXJ0LnN0YXJ0Q291bnRlciwgbmV4dFN0YXJ0IC0gOCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiByZXN1bHQuam9pbihcIlwiKSxcclxuICAgICAgICBzdGFydDogc3RhcnQuc3RhcnQsXHJcbiAgICAgICAgZW5kOiBlbmQsXHJcbiAgICAgICAgc3RhcnRJbmZvOiBzdGFydCxcclxuICAgICAgICBkZWNvZGVkQ29kZXM6IHJlc3VsdFxyXG4gICAgfTtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl92ZXJpZnlXaGl0ZXNwYWNlID0gZnVuY3Rpb24oc3RhcnRDb3VudGVyLCBlbmRDb3VudGVyKSB7XHJcbiAgICBpZiAoKHN0YXJ0Q291bnRlciAtIDEgPD0gMClcclxuICAgICAgICAgICAgfHwgdGhpcy5fY291bnRlcnNbc3RhcnRDb3VudGVyIC0gMV0gPj0gKHRoaXMuX2NhbGN1bGF0ZVBhdHRlcm5MZW5ndGgoc3RhcnRDb3VudGVyKSAvIDIuMCkpIHtcclxuICAgICAgICBpZiAoKGVuZENvdW50ZXIgKyA4ID49IHRoaXMuX2NvdW50ZXJzLmxlbmd0aClcclxuICAgICAgICAgICAgICAgIHx8IHRoaXMuX2NvdW50ZXJzW2VuZENvdW50ZXIgKyA3XSA+PSAodGhpcy5fY2FsY3VsYXRlUGF0dGVybkxlbmd0aChlbmRDb3VudGVyKSAvIDIuMCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUuX2NhbGN1bGF0ZVBhdHRlcm5MZW5ndGggPSBmdW5jdGlvbihvZmZzZXQpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHN1bSA9IDA7XHJcblxyXG4gICAgZm9yIChpID0gb2Zmc2V0OyBpIDwgb2Zmc2V0ICsgNzsgaSsrKSB7XHJcbiAgICAgICAgc3VtICs9IHRoaXMuX2NvdW50ZXJzW2ldO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdW07XHJcbn07XHJcblxyXG5Db2RhYmFyUmVhZGVyLnByb3RvdHlwZS5fdGhyZXNob2xkUmVzdWx0UGF0dGVybiA9IGZ1bmN0aW9uKHJlc3VsdCwgc3RhcnRDb3VudGVyKXtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICBjYXRlZ29yaXphdGlvbiA9IHtcclxuICAgICAgICAgICAgc3BhY2U6IHtcclxuICAgICAgICAgICAgICAgIG5hcnJvdzogeyBzaXplOiAwLCBjb3VudHM6IDAsIG1pbjogMCwgbWF4OiBOdW1iZXIuTUFYX1ZBTFVFfSxcclxuICAgICAgICAgICAgICAgIHdpZGU6IHtzaXplOiAwLCBjb3VudHM6IDAsIG1pbjogMCwgbWF4OiBOdW1iZXIuTUFYX1ZBTFVFfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBiYXI6IHtcclxuICAgICAgICAgICAgICAgIG5hcnJvdzogeyBzaXplOiAwLCBjb3VudHM6IDAsIG1pbjogMCwgbWF4OiBOdW1iZXIuTUFYX1ZBTFVFfSxcclxuICAgICAgICAgICAgICAgIHdpZGU6IHsgc2l6ZTogMCwgY291bnRzOiAwLCBtaW46IDAsIG1heDogTnVtYmVyLk1BWF9WQUxVRX1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAga2luZCxcclxuICAgICAgICBjYXQsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBqLFxyXG4gICAgICAgIHBvcyA9IHN0YXJ0Q291bnRlcixcclxuICAgICAgICBwYXR0ZXJuO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIHBhdHRlcm4gPSBzZWxmLl9jaGFyVG9QYXR0ZXJuKHJlc3VsdFtpXSk7XHJcbiAgICAgICAgZm9yIChqID0gNjsgaiA+PSAwOyBqLS0pIHtcclxuICAgICAgICAgICAga2luZCA9IChqICYgMSkgPT09IDIgPyBjYXRlZ29yaXphdGlvbi5iYXIgOiBjYXRlZ29yaXphdGlvbi5zcGFjZTtcclxuICAgICAgICAgICAgY2F0ID0gKHBhdHRlcm4gJiAxKSA9PT0gMSA/IGtpbmQud2lkZSA6IGtpbmQubmFycm93O1xyXG4gICAgICAgICAgICBjYXQuc2l6ZSArPSBzZWxmLl9jb3VudGVyc1twb3MgKyBqXTtcclxuICAgICAgICAgICAgY2F0LmNvdW50cysrO1xyXG4gICAgICAgICAgICBwYXR0ZXJuID4+PSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwb3MgKz0gODtcclxuICAgIH1cclxuXHJcbiAgICBbXCJzcGFjZVwiLCBcImJhclwiXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG4gICAgICAgIHZhciBuZXdraW5kID0gY2F0ZWdvcml6YXRpb25ba2V5XTtcclxuICAgICAgICBuZXdraW5kLndpZGUubWluID1cclxuICAgICAgICAgICAgTWF0aC5mbG9vcigobmV3a2luZC5uYXJyb3cuc2l6ZSAvIG5ld2tpbmQubmFycm93LmNvdW50cyArIG5ld2tpbmQud2lkZS5zaXplIC8gbmV3a2luZC53aWRlLmNvdW50cykgLyAyKTtcclxuICAgICAgICBuZXdraW5kLm5hcnJvdy5tYXggPSBNYXRoLmNlaWwobmV3a2luZC53aWRlLm1pbik7XHJcbiAgICAgICAgbmV3a2luZC53aWRlLm1heCA9IE1hdGguY2VpbCgobmV3a2luZC53aWRlLnNpemUgKiBzZWxmLk1BWF9BQ0NFUFRBQkxFICsgc2VsZi5QQURESU5HKSAvIG5ld2tpbmQud2lkZS5jb3VudHMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNhdGVnb3JpemF0aW9uO1xyXG59O1xyXG5cclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUuX2NoYXJUb1BhdHRlcm4gPSBmdW5jdGlvbihjaGFyKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgY2hhckNvZGUgPSBjaGFyLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgaTtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi5BTFBIQUJFVC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzZWxmLkFMUEhBQkVUW2ldID09PSBjaGFyQ29kZSl7XHJcbiAgICAgICAgICAgIHJldHVybiBzZWxmLkNIQVJBQ1RFUl9FTkNPRElOR1NbaV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIDB4MDtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl92YWxpZGF0ZVJlc3VsdCA9IGZ1bmN0aW9uKHJlc3VsdCwgc3RhcnRDb3VudGVyKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgdGhyZXNob2xkcyA9IHNlbGYuX3RocmVzaG9sZFJlc3VsdFBhdHRlcm4ocmVzdWx0LCBzdGFydENvdW50ZXIpLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgaixcclxuICAgICAgICBraW5kLFxyXG4gICAgICAgIGNhdCxcclxuICAgICAgICBzaXplLFxyXG4gICAgICAgIHBvcyA9IHN0YXJ0Q291bnRlcixcclxuICAgICAgICBwYXR0ZXJuO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwYXR0ZXJuID0gc2VsZi5fY2hhclRvUGF0dGVybihyZXN1bHRbaV0pO1xyXG4gICAgICAgIGZvciAoaiA9IDY7IGogPj0gMDsgai0tKSB7XHJcbiAgICAgICAgICAgIGtpbmQgPSAoaiAmIDEpID09PSAwID8gdGhyZXNob2xkcy5iYXIgOiB0aHJlc2hvbGRzLnNwYWNlO1xyXG4gICAgICAgICAgICBjYXQgPSAocGF0dGVybiAmIDEpID09PSAxID8ga2luZC53aWRlIDoga2luZC5uYXJyb3c7XHJcbiAgICAgICAgICAgIHNpemUgPSBzZWxmLl9jb3VudGVyc1twb3MgKyBqXTtcclxuICAgICAgICAgICAgaWYgKHNpemUgPCBjYXQubWluIHx8IHNpemUgPiBjYXQubWF4KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGF0dGVybiA+Pj0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9zICs9IDg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl9wYXR0ZXJuVG9DaGFyID0gZnVuY3Rpb24ocGF0dGVybikge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHNlbGYuQ0hBUkFDVEVSX0VOQ09ESU5HUy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzZWxmLkNIQVJBQ1RFUl9FTkNPRElOR1NbaV0gPT09IHBhdHRlcm4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoc2VsZi5BTFBIQUJFVFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG59O1xyXG5cclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUuX2NvbXB1dGVBbHRlcm5hdGluZ1RocmVzaG9sZCA9IGZ1bmN0aW9uKG9mZnNldCwgZW5kKSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBtaW4gPSBOdW1iZXIuTUFYX1ZBTFVFLFxyXG4gICAgICAgIG1heCA9IDAsXHJcbiAgICAgICAgY291bnRlcjtcclxuXHJcbiAgICBmb3IgKGkgPSBvZmZzZXQ7IGkgPCBlbmQ7IGkgKz0gMil7XHJcbiAgICAgICAgY291bnRlciA9IHRoaXMuX2NvdW50ZXJzW2ldO1xyXG4gICAgICAgIGlmIChjb3VudGVyID4gbWF4KSB7XHJcbiAgICAgICAgICAgIG1heCA9IGNvdW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb3VudGVyIDwgbWluKSB7XHJcbiAgICAgICAgICAgIG1pbiA9IGNvdW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoKG1pbiArIG1heCkgLyAyLjApIHwgMDtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl90b1BhdHRlcm4gPSBmdW5jdGlvbihvZmZzZXQpIHtcclxuICAgIHZhciBudW1Db3VudGVycyA9IDcsXHJcbiAgICAgICAgZW5kID0gb2Zmc2V0ICsgbnVtQ291bnRlcnMsXHJcbiAgICAgICAgYmFyVGhyZXNob2xkLFxyXG4gICAgICAgIHNwYWNlVGhyZXNob2xkLFxyXG4gICAgICAgIGJpdG1hc2sgPSAxIDw8IChudW1Db3VudGVycyAtIDEpLFxyXG4gICAgICAgIHBhdHRlcm4gPSAwLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgdGhyZXNob2xkO1xyXG5cclxuICAgIGlmIChlbmQgPiB0aGlzLl9jb3VudGVycy5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgYmFyVGhyZXNob2xkID0gdGhpcy5fY29tcHV0ZUFsdGVybmF0aW5nVGhyZXNob2xkKG9mZnNldCwgZW5kKTtcclxuICAgIHNwYWNlVGhyZXNob2xkID0gdGhpcy5fY29tcHV0ZUFsdGVybmF0aW5nVGhyZXNob2xkKG9mZnNldCArIDEsIGVuZCk7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IG51bUNvdW50ZXJzOyBpKyspe1xyXG4gICAgICAgIHRocmVzaG9sZCA9IChpICYgMSkgPT09IDAgPyBiYXJUaHJlc2hvbGQgOiBzcGFjZVRocmVzaG9sZDtcclxuICAgICAgICBpZiAodGhpcy5fY291bnRlcnNbb2Zmc2V0ICsgaV0gPiB0aHJlc2hvbGQpIHtcclxuICAgICAgICAgICAgcGF0dGVybiB8PSBiaXRtYXNrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBiaXRtYXNrID4+PSAxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXR0ZXJuO1xyXG59O1xyXG5cclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUuX2lzU3RhcnRFbmQgPSBmdW5jdGlvbihwYXR0ZXJuKSB7XHJcbiAgICB2YXIgaTtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5TVEFSVF9FTkQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5TVEFSVF9FTkRbaV0gPT09IHBhdHRlcm4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUuX3N1bUNvdW50ZXJzID0gZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgc3VtID0gMDtcclxuXHJcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XHJcbiAgICAgICAgc3VtICs9IHRoaXMuX2NvdW50ZXJzW2ldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1bTtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl9maW5kU3RhcnQgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICBpLFxyXG4gICAgICAgIHBhdHRlcm4sXHJcbiAgICAgICAgc3RhcnQgPSBzZWxmLl9uZXh0VW5zZXQoc2VsZi5fcm93KSxcclxuICAgICAgICBlbmQ7XHJcblxyXG4gICAgZm9yIChpID0gMTsgaSA8IHRoaXMuX2NvdW50ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcGF0dGVybiA9IHNlbGYuX3RvUGF0dGVybihpKTtcclxuICAgICAgICBpZiAocGF0dGVybiAhPT0gLTEgJiYgc2VsZi5faXNTdGFydEVuZChwYXR0ZXJuKSkge1xyXG4gICAgICAgICAgICAvLyBUT0RPOiBMb29rIGZvciB3aGl0ZXNwYWNlIGFoZWFkXHJcbiAgICAgICAgICAgIHN0YXJ0ICs9IHNlbGYuX3N1bUNvdW50ZXJzKDAsIGkpO1xyXG4gICAgICAgICAgICBlbmQgPSBzdGFydCArIHNlbGYuX3N1bUNvdW50ZXJzKGksIGkgKyA4KTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCxcclxuICAgICAgICAgICAgICAgIGVuZDogZW5kLFxyXG4gICAgICAgICAgICAgICAgc3RhcnRDb3VudGVyOiBpLFxyXG4gICAgICAgICAgICAgICAgZW5kQ291bnRlcjogaSArIDhcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDb2RhYmFyUmVhZGVyO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWFkZXIvY29kYWJhcl9yZWFkZXIuanNcbiAqKi8iLCJpbXBvcnQgQmFyY29kZVJlYWRlciBmcm9tICcuL2JhcmNvZGVfcmVhZGVyJztcclxuXHJcbmZ1bmN0aW9uIENvZGUxMjhSZWFkZXIoKSB7XHJcbiAgICBCYXJjb2RlUmVhZGVyLmNhbGwodGhpcyk7XHJcbn1cclxuXHJcbnZhciBwcm9wZXJ0aWVzID0ge1xyXG4gICAgQ09ERV9TSElGVDoge3ZhbHVlOiA5OH0sXHJcbiAgICBDT0RFX0M6IHt2YWx1ZTogOTl9LFxyXG4gICAgQ09ERV9COiB7dmFsdWU6IDEwMH0sXHJcbiAgICBDT0RFX0E6IHt2YWx1ZTogMTAxfSxcclxuICAgIFNUQVJUX0NPREVfQToge3ZhbHVlOiAxMDN9LFxyXG4gICAgU1RBUlRfQ09ERV9COiB7dmFsdWU6IDEwNH0sXHJcbiAgICBTVEFSVF9DT0RFX0M6IHt2YWx1ZTogMTA1fSxcclxuICAgIFNUT1BfQ09ERToge3ZhbHVlOiAxMDZ9LFxyXG4gICAgTU9EVUxPOiB7dmFsdWU6IDExfSxcclxuICAgIENPREVfUEFUVEVSTjoge3ZhbHVlOiBbXHJcbiAgICAgICAgWzIsIDEsIDIsIDIsIDIsIDJdLFxyXG4gICAgICAgIFsyLCAyLCAyLCAxLCAyLCAyXSxcclxuICAgICAgICBbMiwgMiwgMiwgMiwgMiwgMV0sXHJcbiAgICAgICAgWzEsIDIsIDEsIDIsIDIsIDNdLFxyXG4gICAgICAgIFsxLCAyLCAxLCAzLCAyLCAyXSxcclxuICAgICAgICBbMSwgMywgMSwgMiwgMiwgMl0sXHJcbiAgICAgICAgWzEsIDIsIDIsIDIsIDEsIDNdLFxyXG4gICAgICAgIFsxLCAyLCAyLCAzLCAxLCAyXSxcclxuICAgICAgICBbMSwgMywgMiwgMiwgMSwgMl0sXHJcbiAgICAgICAgWzIsIDIsIDEsIDIsIDEsIDNdLFxyXG4gICAgICAgIFsyLCAyLCAxLCAzLCAxLCAyXSxcclxuICAgICAgICBbMiwgMywgMSwgMiwgMSwgMl0sXHJcbiAgICAgICAgWzEsIDEsIDIsIDIsIDMsIDJdLFxyXG4gICAgICAgIFsxLCAyLCAyLCAxLCAzLCAyXSxcclxuICAgICAgICBbMSwgMiwgMiwgMiwgMywgMV0sXHJcbiAgICAgICAgWzEsIDEsIDMsIDIsIDIsIDJdLFxyXG4gICAgICAgIFsxLCAyLCAzLCAxLCAyLCAyXSxcclxuICAgICAgICBbMSwgMiwgMywgMiwgMiwgMV0sXHJcbiAgICAgICAgWzIsIDIsIDMsIDIsIDEsIDFdLFxyXG4gICAgICAgIFsyLCAyLCAxLCAxLCAzLCAyXSxcclxuICAgICAgICBbMiwgMiwgMSwgMiwgMywgMV0sXHJcbiAgICAgICAgWzIsIDEsIDMsIDIsIDEsIDJdLFxyXG4gICAgICAgIFsyLCAyLCAzLCAxLCAxLCAyXSxcclxuICAgICAgICBbMywgMSwgMiwgMSwgMywgMV0sXHJcbiAgICAgICAgWzMsIDEsIDEsIDIsIDIsIDJdLFxyXG4gICAgICAgIFszLCAyLCAxLCAxLCAyLCAyXSxcclxuICAgICAgICBbMywgMiwgMSwgMiwgMiwgMV0sXHJcbiAgICAgICAgWzMsIDEsIDIsIDIsIDEsIDJdLFxyXG4gICAgICAgIFszLCAyLCAyLCAxLCAxLCAyXSxcclxuICAgICAgICBbMywgMiwgMiwgMiwgMSwgMV0sXHJcbiAgICAgICAgWzIsIDEsIDIsIDEsIDIsIDNdLFxyXG4gICAgICAgIFsyLCAxLCAyLCAzLCAyLCAxXSxcclxuICAgICAgICBbMiwgMywgMiwgMSwgMiwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDEsIDMsIDIsIDNdLFxyXG4gICAgICAgIFsxLCAzLCAxLCAxLCAyLCAzXSxcclxuICAgICAgICBbMSwgMywgMSwgMywgMiwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDIsIDMsIDEsIDNdLFxyXG4gICAgICAgIFsxLCAzLCAyLCAxLCAxLCAzXSxcclxuICAgICAgICBbMSwgMywgMiwgMywgMSwgMV0sXHJcbiAgICAgICAgWzIsIDEsIDEsIDMsIDEsIDNdLFxyXG4gICAgICAgIFsyLCAzLCAxLCAxLCAxLCAzXSxcclxuICAgICAgICBbMiwgMywgMSwgMywgMSwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDIsIDEsIDMsIDNdLFxyXG4gICAgICAgIFsxLCAxLCAyLCAzLCAzLCAxXSxcclxuICAgICAgICBbMSwgMywgMiwgMSwgMywgMV0sXHJcbiAgICAgICAgWzEsIDEsIDMsIDEsIDIsIDNdLFxyXG4gICAgICAgIFsxLCAxLCAzLCAzLCAyLCAxXSxcclxuICAgICAgICBbMSwgMywgMywgMSwgMiwgMV0sXHJcbiAgICAgICAgWzMsIDEsIDMsIDEsIDIsIDFdLFxyXG4gICAgICAgIFsyLCAxLCAxLCAzLCAzLCAxXSxcclxuICAgICAgICBbMiwgMywgMSwgMSwgMywgMV0sXHJcbiAgICAgICAgWzIsIDEsIDMsIDEsIDEsIDNdLFxyXG4gICAgICAgIFsyLCAxLCAzLCAzLCAxLCAxXSxcclxuICAgICAgICBbMiwgMSwgMywgMSwgMywgMV0sXHJcbiAgICAgICAgWzMsIDEsIDEsIDEsIDIsIDNdLFxyXG4gICAgICAgIFszLCAxLCAxLCAzLCAyLCAxXSxcclxuICAgICAgICBbMywgMywgMSwgMSwgMiwgMV0sXHJcbiAgICAgICAgWzMsIDEsIDIsIDEsIDEsIDNdLFxyXG4gICAgICAgIFszLCAxLCAyLCAzLCAxLCAxXSxcclxuICAgICAgICBbMywgMywgMiwgMSwgMSwgMV0sXHJcbiAgICAgICAgWzMsIDEsIDQsIDEsIDEsIDFdLFxyXG4gICAgICAgIFsyLCAyLCAxLCA0LCAxLCAxXSxcclxuICAgICAgICBbNCwgMywgMSwgMSwgMSwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDEsIDIsIDIsIDRdLFxyXG4gICAgICAgIFsxLCAxLCAxLCA0LCAyLCAyXSxcclxuICAgICAgICBbMSwgMiwgMSwgMSwgMiwgNF0sXHJcbiAgICAgICAgWzEsIDIsIDEsIDQsIDIsIDFdLFxyXG4gICAgICAgIFsxLCA0LCAxLCAxLCAyLCAyXSxcclxuICAgICAgICBbMSwgNCwgMSwgMiwgMiwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDIsIDIsIDEsIDRdLFxyXG4gICAgICAgIFsxLCAxLCAyLCA0LCAxLCAyXSxcclxuICAgICAgICBbMSwgMiwgMiwgMSwgMSwgNF0sXHJcbiAgICAgICAgWzEsIDIsIDIsIDQsIDEsIDFdLFxyXG4gICAgICAgIFsxLCA0LCAyLCAxLCAxLCAyXSxcclxuICAgICAgICBbMSwgNCwgMiwgMiwgMSwgMV0sXHJcbiAgICAgICAgWzIsIDQsIDEsIDIsIDEsIDFdLFxyXG4gICAgICAgIFsyLCAyLCAxLCAxLCAxLCA0XSxcclxuICAgICAgICBbNCwgMSwgMywgMSwgMSwgMV0sXHJcbiAgICAgICAgWzIsIDQsIDEsIDEsIDEsIDJdLFxyXG4gICAgICAgIFsxLCAzLCA0LCAxLCAxLCAxXSxcclxuICAgICAgICBbMSwgMSwgMSwgMiwgNCwgMl0sXHJcbiAgICAgICAgWzEsIDIsIDEsIDEsIDQsIDJdLFxyXG4gICAgICAgIFsxLCAyLCAxLCAyLCA0LCAxXSxcclxuICAgICAgICBbMSwgMSwgNCwgMiwgMSwgMl0sXHJcbiAgICAgICAgWzEsIDIsIDQsIDEsIDEsIDJdLFxyXG4gICAgICAgIFsxLCAyLCA0LCAyLCAxLCAxXSxcclxuICAgICAgICBbNCwgMSwgMSwgMiwgMSwgMl0sXHJcbiAgICAgICAgWzQsIDIsIDEsIDEsIDEsIDJdLFxyXG4gICAgICAgIFs0LCAyLCAxLCAyLCAxLCAxXSxcclxuICAgICAgICBbMiwgMSwgMiwgMSwgNCwgMV0sXHJcbiAgICAgICAgWzIsIDEsIDQsIDEsIDIsIDFdLFxyXG4gICAgICAgIFs0LCAxLCAyLCAxLCAyLCAxXSxcclxuICAgICAgICBbMSwgMSwgMSwgMSwgNCwgM10sXHJcbiAgICAgICAgWzEsIDEsIDEsIDMsIDQsIDFdLFxyXG4gICAgICAgIFsxLCAzLCAxLCAxLCA0LCAxXSxcclxuICAgICAgICBbMSwgMSwgNCwgMSwgMSwgM10sXHJcbiAgICAgICAgWzEsIDEsIDQsIDMsIDEsIDFdLFxyXG4gICAgICAgIFs0LCAxLCAxLCAxLCAxLCAzXSxcclxuICAgICAgICBbNCwgMSwgMSwgMywgMSwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDMsIDEsIDQsIDFdLFxyXG4gICAgICAgIFsxLCAxLCA0LCAxLCAzLCAxXSxcclxuICAgICAgICBbMywgMSwgMSwgMSwgNCwgMV0sXHJcbiAgICAgICAgWzQsIDEsIDEsIDEsIDMsIDFdLFxyXG4gICAgICAgIFsyLCAxLCAxLCA0LCAxLCAyXSxcclxuICAgICAgICBbMiwgMSwgMSwgMiwgMSwgNF0sXHJcbiAgICAgICAgWzIsIDEsIDEsIDIsIDMsIDJdLFxyXG4gICAgICAgIFsyLCAzLCAzLCAxLCAxLCAxLCAyXVxyXG4gICAgXX0sXHJcbiAgICBTSU5HTEVfQ09ERV9FUlJPUjoge3ZhbHVlOiAwLjY0fSxcclxuICAgIEFWR19DT0RFX0VSUk9SOiB7dmFsdWU6IDAuMzB9LFxyXG4gICAgRk9STUFUOiB7dmFsdWU6IFwiY29kZV8xMjhcIiwgd3JpdGVhYmxlOiBmYWxzZX0sXHJcbiAgICBNT0RVTEVfSU5ESUNFUzoge3ZhbHVlOiB7YmFyOiBbMCwgMiwgNF0sIHNwYWNlOiBbMSwgMywgNV19fVxyXG59O1xyXG5cclxuQ29kZTEyOFJlYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJhcmNvZGVSZWFkZXIucHJvdG90eXBlLCBwcm9wZXJ0aWVzKTtcclxuQ29kZTEyOFJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb2RlMTI4UmVhZGVyO1xyXG5cclxuQ29kZTEyOFJlYWRlci5wcm90b3R5cGUuX2RlY29kZUNvZGUgPSBmdW5jdGlvbihzdGFydCwgY29ycmVjdGlvbikge1xyXG4gICAgdmFyIGNvdW50ZXIgPSBbMCwgMCwgMCwgMCwgMCwgMF0sXHJcbiAgICAgICAgaSxcclxuICAgICAgICBzZWxmID0gdGhpcyxcclxuICAgICAgICBvZmZzZXQgPSBzdGFydCxcclxuICAgICAgICBpc1doaXRlID0gIXNlbGYuX3Jvd1tvZmZzZXRdLFxyXG4gICAgICAgIGNvdW50ZXJQb3MgPSAwLFxyXG4gICAgICAgIGJlc3RNYXRjaCA9IHtcclxuICAgICAgICAgICAgZXJyb3I6IE51bWJlci5NQVhfVkFMVUUsXHJcbiAgICAgICAgICAgIGNvZGU6IC0xLFxyXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXHJcbiAgICAgICAgICAgIGVuZDogc3RhcnQsXHJcbiAgICAgICAgICAgIGNvcnJlY3Rpb246IHtcclxuICAgICAgICAgICAgICAgIGJhcjogMSxcclxuICAgICAgICAgICAgICAgIHNwYWNlOiAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgbm9ybWFsaXplZDtcclxuXHJcbiAgICBmb3IgKCBpID0gb2Zmc2V0OyBpIDwgc2VsZi5fcm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb3VudGVyUG9zID09PSBjb3VudGVyLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBzZWxmLl9ub3JtYWxpemUoY291bnRlciwgY29ycmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29kZSA9IDA7IGNvZGUgPCBzZWxmLkNPREVfUEFUVEVSTi5sZW5ndGg7IGNvZGUrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNlbGYuX21hdGNoUGF0dGVybihub3JtYWxpemVkLCBzZWxmLkNPREVfUEFUVEVSTltjb2RlXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA8IGJlc3RNYXRjaC5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmNvZGUgPSBjb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVycm9yID0gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVuZCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJlc3RNYXRjaC5jb2RlID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuQ09ERV9QQVRURVJOW2Jlc3RNYXRjaC5jb2RlXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guY29ycmVjdGlvbi5iYXIgPSBjYWxjdWxhdGVDb3JyZWN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5DT0RFX1BBVFRFUk5bYmVzdE1hdGNoLmNvZGVdLCBub3JtYWxpemVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NT0RVTEVfSU5ESUNFUy5iYXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guY29ycmVjdGlvbi5zcGFjZSA9IGNhbGN1bGF0ZUNvcnJlY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkNPREVfUEFUVEVSTltiZXN0TWF0Y2guY29kZV0sIG5vcm1hbGl6ZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk1PRFVMRV9JTkRJQ0VTLnNwYWNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuQ29kZTEyOFJlYWRlci5wcm90b3R5cGUuX2NvcnJlY3QgPSBmdW5jdGlvbihjb3VudGVyLCBjb3JyZWN0aW9uKSB7XHJcbiAgICB0aGlzLl9jb3JyZWN0QmFycyhjb3VudGVyLCBjb3JyZWN0aW9uLmJhciwgdGhpcy5NT0RVTEVfSU5ESUNFUy5iYXIpO1xyXG4gICAgdGhpcy5fY29ycmVjdEJhcnMoY291bnRlciwgY29ycmVjdGlvbi5zcGFjZSwgdGhpcy5NT0RVTEVfSU5ESUNFUy5zcGFjZSk7XHJcbn07XHJcblxyXG5Db2RlMTI4UmVhZGVyLnByb3RvdHlwZS5fZmluZFN0YXJ0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgY291bnRlciA9IFswLCAwLCAwLCAwLCAwLCAwXSxcclxuICAgICAgICBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIG9mZnNldCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93KSxcclxuICAgICAgICBpc1doaXRlID0gZmFsc2UsXHJcbiAgICAgICAgY291bnRlclBvcyA9IDAsXHJcbiAgICAgICAgYmVzdE1hdGNoID0ge1xyXG4gICAgICAgICAgICBlcnJvcjogTnVtYmVyLk1BWF9WQUxVRSxcclxuICAgICAgICAgICAgY29kZTogLTEsXHJcbiAgICAgICAgICAgIHN0YXJ0OiAwLFxyXG4gICAgICAgICAgICBlbmQ6IDAsXHJcbiAgICAgICAgICAgIGNvcnJlY3Rpb246IHtcclxuICAgICAgICAgICAgICAgIGJhcjogMSxcclxuICAgICAgICAgICAgICAgIHNwYWNlOiAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgaixcclxuICAgICAgICBzdW0sXHJcbiAgICAgICAgbm9ybWFsaXplZDtcclxuXHJcbiAgICBmb3IgKCBpID0gb2Zmc2V0OyBpIDwgc2VsZi5fcm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb3VudGVyUG9zID09PSBjb3VudGVyLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIHN1bSA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IGNvdW50ZXIubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gY291bnRlcltqXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBzZWxmLl9ub3JtYWxpemUoY291bnRlcik7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29kZSA9IHNlbGYuU1RBUlRfQ09ERV9BOyBjb2RlIDw9IHNlbGYuU1RBUlRfQ09ERV9DOyBjb2RlKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9tYXRjaFBhdHRlcm4obm9ybWFsaXplZCwgc2VsZi5DT0RFX1BBVFRFUk5bY29kZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPCBiZXN0TWF0Y2guZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb2RlID0gY29kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lcnJvciA9IGVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXN0TWF0Y2guZXJyb3IgPCBzZWxmLkFWR19DT0RFX0VSUk9SKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5zdGFydCA9IGkgLSBzdW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lbmQgPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guY29ycmVjdGlvbi5iYXIgPSBjYWxjdWxhdGVDb3JyZWN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5DT0RFX1BBVFRFUk5bY29kZV0sIG5vcm1hbGl6ZWQsIFswLCAyLCA0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb3JyZWN0aW9uLnNwYWNlID0gY2FsY3VsYXRlQ29ycmVjdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ09ERV9QQVRURVJOW2NvZGVdLCBub3JtYWxpemVkLCBbMSwgMywgNV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmVzdE1hdGNoO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IDQ7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJbal0gPSBjb3VudGVyW2ogKyAyXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvdW50ZXJbNF0gPSAwO1xyXG4gICAgICAgICAgICAgICAgY291bnRlcls1XSA9IDA7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyUG9zLS07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyUG9zKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSA9IDE7XHJcbiAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbkNvZGUxMjhSZWFkZXIucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICBzdGFydEluZm8gPSBzZWxmLl9maW5kU3RhcnQoKSxcclxuICAgICAgICBjb2RlID0gbnVsbCxcclxuICAgICAgICBkb25lID0gZmFsc2UsXHJcbiAgICAgICAgcmVzdWx0ID0gW10sXHJcbiAgICAgICAgbXVsdGlwbGllciA9IDAsXHJcbiAgICAgICAgY2hlY2tzdW0gPSAwLFxyXG4gICAgICAgIGNvZGVzZXQsXHJcbiAgICAgICAgcmF3UmVzdWx0ID0gW10sXHJcbiAgICAgICAgZGVjb2RlZENvZGVzID0gW10sXHJcbiAgICAgICAgc2hpZnROZXh0ID0gZmFsc2UsXHJcbiAgICAgICAgdW5zaGlmdCxcclxuICAgICAgICByZW1vdmVMYXN0Q2hhcmFjdGVyID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoc3RhcnRJbmZvID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb2RlID0ge1xyXG4gICAgICAgIGNvZGU6IHN0YXJ0SW5mby5jb2RlLFxyXG4gICAgICAgIHN0YXJ0OiBzdGFydEluZm8uc3RhcnQsXHJcbiAgICAgICAgZW5kOiBzdGFydEluZm8uZW5kLFxyXG4gICAgICAgIGNvcnJlY3Rpb246IHtcclxuICAgICAgICAgICAgYmFyOiBzdGFydEluZm8uY29ycmVjdGlvbi5iYXIsXHJcbiAgICAgICAgICAgIHNwYWNlOiBzdGFydEluZm8uY29ycmVjdGlvbi5zcGFjZVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBkZWNvZGVkQ29kZXMucHVzaChjb2RlKTtcclxuICAgIGNoZWNrc3VtID0gY29kZS5jb2RlO1xyXG4gICAgc3dpdGNoIChjb2RlLmNvZGUpIHtcclxuICAgIGNhc2Ugc2VsZi5TVEFSVF9DT0RFX0E6XHJcbiAgICAgICAgY29kZXNldCA9IHNlbGYuQ09ERV9BO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBzZWxmLlNUQVJUX0NPREVfQjpcclxuICAgICAgICBjb2Rlc2V0ID0gc2VsZi5DT0RFX0I7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIHNlbGYuU1RBUlRfQ09ERV9DOlxyXG4gICAgICAgIGNvZGVzZXQgPSBzZWxmLkNPREVfQztcclxuICAgICAgICBicmVhaztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgd2hpbGUgKCFkb25lKSB7XHJcbiAgICAgICAgdW5zaGlmdCA9IHNoaWZ0TmV4dDtcclxuICAgICAgICBzaGlmdE5leHQgPSBmYWxzZTtcclxuICAgICAgICBjb2RlID0gc2VsZi5fZGVjb2RlQ29kZShjb2RlLmVuZCwgY29kZS5jb3JyZWN0aW9uKTtcclxuICAgICAgICBpZiAoY29kZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoY29kZS5jb2RlICE9PSBzZWxmLlNUT1BfQ09ERSkge1xyXG4gICAgICAgICAgICAgICAgcmVtb3ZlTGFzdENoYXJhY3RlciA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChjb2RlLmNvZGUgIT09IHNlbGYuU1RPUF9DT0RFKSB7XHJcbiAgICAgICAgICAgICAgICByYXdSZXN1bHQucHVzaChjb2RlLmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgbXVsdGlwbGllcisrO1xyXG4gICAgICAgICAgICAgICAgY2hlY2tzdW0gKz0gbXVsdGlwbGllciAqIGNvZGUuY29kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkZWNvZGVkQ29kZXMucHVzaChjb2RlKTtcclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCAoY29kZXNldCkge1xyXG4gICAgICAgICAgICBjYXNlIHNlbGYuQ09ERV9BOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGUuY29kZSA8IDY0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgzMiArIGNvZGUuY29kZSkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlLmNvZGUgPCA5Nikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZS5jb2RlIC0gNjQpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUuY29kZSAhPT0gc2VsZi5TVE9QX0NPREUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTGFzdENoYXJhY3RlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX1NISUZUOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGlmdE5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc2V0ID0gc2VsZi5DT0RFX0I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX0I6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzZXQgPSBzZWxmLkNPREVfQjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLkNPREVfQzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNldCA9IHNlbGYuQ09ERV9DO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYuU1RPUF9DT0RFOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX0I6XHJcbiAgICAgICAgICAgICAgICBpZiAoY29kZS5jb2RlIDwgOTYpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDMyICsgY29kZS5jb2RlKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlLmNvZGUgIT09IHNlbGYuU1RPUF9DT0RFKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxhc3RDaGFyYWN0ZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYuQ09ERV9TSElGVDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnROZXh0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNldCA9IHNlbGYuQ09ERV9BO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYuQ09ERV9BOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc2V0ID0gc2VsZi5DT0RFX0E7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX0M6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzZXQgPSBzZWxmLkNPREVfQztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLlNUT1BfQ09ERTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIHNlbGYuQ09ERV9DOlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvZGUuY29kZSA8IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvZGUuY29kZSA8IDEwID8gXCIwXCIgKyBjb2RlLmNvZGUgOiBjb2RlLmNvZGUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZS5jb2RlICE9PSBzZWxmLlNUT1BfQ09ERSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMYXN0Q2hhcmFjdGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLkNPREVfQTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNldCA9IHNlbGYuQ09ERV9BO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYuQ09ERV9COlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc2V0ID0gc2VsZi5DT0RFX0I7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5TVE9QX0NPREU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodW5zaGlmdCkge1xyXG4gICAgICAgICAgICBjb2Rlc2V0ID0gY29kZXNldCA9PT0gc2VsZi5DT0RFX0EgPyBzZWxmLkNPREVfQiA6IHNlbGYuQ09ERV9BO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvZGUuZW5kID0gc2VsZi5fbmV4dFVuc2V0KHNlbGYuX3JvdywgY29kZS5lbmQpO1xyXG4gICAgaWYgKCFzZWxmLl92ZXJpZnlUcmFpbGluZ1doaXRlc3BhY2UoY29kZSkpe1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrc3VtIC09IG11bHRpcGxpZXIgKiByYXdSZXN1bHRbcmF3UmVzdWx0Lmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKGNoZWNrc3VtICUgMTAzICE9PSByYXdSZXN1bHRbcmF3UmVzdWx0Lmxlbmd0aCAtIDFdKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFyZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmVtb3ZlIGxhc3QgY29kZSBmcm9tIHJlc3VsdCAoY2hlY2tzdW0pXHJcbiAgICBpZiAocmVtb3ZlTGFzdENoYXJhY3Rlcikge1xyXG4gICAgICAgIHJlc3VsdC5zcGxpY2UocmVzdWx0Lmxlbmd0aCAtIDEsIDEpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGU6IHJlc3VsdC5qb2luKFwiXCIpLFxyXG4gICAgICAgIHN0YXJ0OiBzdGFydEluZm8uc3RhcnQsXHJcbiAgICAgICAgZW5kOiBjb2RlLmVuZCxcclxuICAgICAgICBjb2Rlc2V0OiBjb2Rlc2V0LFxyXG4gICAgICAgIHN0YXJ0SW5mbzogc3RhcnRJbmZvLFxyXG4gICAgICAgIGRlY29kZWRDb2RlczogZGVjb2RlZENvZGVzLFxyXG4gICAgICAgIGVuZEluZm86IGNvZGVcclxuICAgIH07XHJcbn07XHJcblxyXG5cclxuQmFyY29kZVJlYWRlci5wcm90b3R5cGUuX3ZlcmlmeVRyYWlsaW5nV2hpdGVzcGFjZSA9IGZ1bmN0aW9uKGVuZEluZm8pIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICB0cmFpbGluZ1doaXRlc3BhY2VFbmQ7XHJcblxyXG4gICAgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kID0gZW5kSW5mby5lbmQgKyAoKGVuZEluZm8uZW5kIC0gZW5kSW5mby5zdGFydCkgLyAyKTtcclxuICAgIGlmICh0cmFpbGluZ1doaXRlc3BhY2VFbmQgPCBzZWxmLl9yb3cubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX21hdGNoUmFuZ2UoZW5kSW5mby5lbmQsIHRyYWlsaW5nV2hpdGVzcGFjZUVuZCwgMCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVuZEluZm87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBjYWxjdWxhdGVDb3JyZWN0aW9uKGV4cGVjdGVkLCBub3JtYWxpemVkLCBpbmRpY2VzKSB7XHJcbiAgICB2YXIgbGVuZ3RoID0gaW5kaWNlcy5sZW5ndGgsXHJcbiAgICAgICAgc3VtTm9ybWFsaXplZCA9IDAsXHJcbiAgICAgICAgc3VtRXhwZWN0ZWQgPSAwO1xyXG5cclxuICAgIHdoaWxlKGxlbmd0aC0tKSB7XHJcbiAgICAgICAgc3VtRXhwZWN0ZWQgKz0gZXhwZWN0ZWRbaW5kaWNlc1tsZW5ndGhdXTtcclxuICAgICAgICBzdW1Ob3JtYWxpemVkICs9IG5vcm1hbGl6ZWRbaW5kaWNlc1tsZW5ndGhdXTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdW1FeHBlY3RlZC9zdW1Ob3JtYWxpemVkO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDb2RlMTI4UmVhZGVyO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWFkZXIvY29kZV8xMjhfcmVhZGVyLmpzXG4gKiovIiwiaW1wb3J0IENvZGUzOVJlYWRlciBmcm9tICcuL2NvZGVfMzlfcmVhZGVyJztcclxuXHJcbmZ1bmN0aW9uIENvZGUzOVZJTlJlYWRlcigpIHtcclxuICAgIENvZGUzOVJlYWRlci5jYWxsKHRoaXMpO1xyXG59XHJcblxyXG52YXIgcGF0dGVybnMgPSB7XHJcbiAgICBJT1E6IC9bSU9RXS9nLFxyXG4gICAgQVowOTogL1tBLVowLTldezE3fS9cclxufTtcclxuXHJcbkNvZGUzOVZJTlJlYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKENvZGUzOVJlYWRlci5wcm90b3R5cGUpO1xyXG5Db2RlMzlWSU5SZWFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29kZTM5VklOUmVhZGVyO1xyXG5cclxuLy8gQ3JpYmJlZCBmcm9tOlxyXG4vLyBodHRwczovL2dpdGh1Yi5jb20venhpbmcvenhpbmcvYmxvYi9tYXN0ZXIvY29yZS9zcmMvbWFpbi9qYXZhL2NvbS9nb29nbGUvenhpbmcvY2xpZW50L3Jlc3VsdC9WSU5SZXN1bHRQYXJzZXIuamF2YVxyXG5Db2RlMzlWSU5SZWFkZXIucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciByZXN1bHQgPSBDb2RlMzlSZWFkZXIucHJvdG90eXBlLl9kZWNvZGUuYXBwbHkodGhpcyk7XHJcbiAgICBpZiAoIXJlc3VsdCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBjb2RlID0gcmVzdWx0LmNvZGU7XHJcblxyXG4gICAgaWYgKCFjb2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29kZSA9IGNvZGUucmVwbGFjZShwYXR0ZXJucy5JT1EsICcnKTtcclxuXHJcbiAgICBpZiAoIWNvZGUubWF0Y2gocGF0dGVybnMuQVowOSkpIHtcclxuICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGYWlsZWQgQVowOSBwYXR0ZXJuIGNvZGU6JywgY29kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5fY2hlY2tDaGVja3N1bShjb2RlKSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc3VsdC5jb2RlID0gY29kZTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG5Db2RlMzlWSU5SZWFkZXIucHJvdG90eXBlLl9jaGVja0NoZWNrc3VtID0gZnVuY3Rpb24oY29kZSkge1xyXG4gICAgLy8gVE9ET1xyXG4gICAgcmV0dXJuICEhY29kZTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IENvZGUzOVZJTlJlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL2NvZGVfMzlfdmluX3JlYWRlci5qc1xuICoqLyIsImltcG9ydCBFQU5SZWFkZXIgZnJvbSAnLi9lYW5fcmVhZGVyJztcclxuXHJcbmZ1bmN0aW9uIEVBTjhSZWFkZXIoKSB7XHJcbiAgICBFQU5SZWFkZXIuY2FsbCh0aGlzKTtcclxufVxyXG5cclxudmFyIHByb3BlcnRpZXMgPSB7XHJcbiAgICBGT1JNQVQ6IHt2YWx1ZTogXCJlYW5fOFwiLCB3cml0ZWFibGU6IGZhbHNlfVxyXG59O1xyXG5cclxuRUFOOFJlYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVBTlJlYWRlci5wcm90b3R5cGUsIHByb3BlcnRpZXMpO1xyXG5FQU44UmVhZGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEVBTjhSZWFkZXI7XHJcblxyXG5FQU44UmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlUGF5bG9hZCA9IGZ1bmN0aW9uKGNvZGUsIHJlc3VsdCwgZGVjb2RlZENvZGVzKSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBzZWxmID0gdGhpcztcclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IDQ7IGkrKykge1xyXG4gICAgICAgIGNvZGUgPSBzZWxmLl9kZWNvZGVDb2RlKGNvZGUuZW5kLCBzZWxmLkNPREVfR19TVEFSVCk7XHJcbiAgICAgICAgaWYgKCFjb2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQucHVzaChjb2RlLmNvZGUpO1xyXG4gICAgICAgIGRlY29kZWRDb2Rlcy5wdXNoKGNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvZGUgPSBzZWxmLl9maW5kUGF0dGVybihzZWxmLk1JRERMRV9QQVRURVJOLCBjb2RlLmVuZCwgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGRlY29kZWRDb2Rlcy5wdXNoKGNvZGUpO1xyXG5cclxuICAgIGZvciAoIGkgPSAwOyBpIDwgNDsgaSsrKSB7XHJcbiAgICAgICAgY29kZSA9IHNlbGYuX2RlY29kZUNvZGUoY29kZS5lbmQsIHNlbGYuQ09ERV9HX1NUQVJUKTtcclxuICAgICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlY29kZWRDb2Rlcy5wdXNoKGNvZGUpO1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKGNvZGUuY29kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvZGU7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBFQU44UmVhZGVyO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWFkZXIvZWFuXzhfcmVhZGVyLmpzXG4gKiovIiwiaW1wb3J0IEJhcmNvZGVSZWFkZXIgZnJvbSAnLi9iYXJjb2RlX3JlYWRlcic7XHJcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ2xvZGFzaCc7XHJcblxyXG5mdW5jdGlvbiBJMm9mNVJlYWRlcihvcHRzKSB7XHJcbiAgICBvcHRzID0gbWVyZ2UoZ2V0RGVmYXVsQ29uZmlnKCksIG9wdHMpO1xyXG4gICAgQmFyY29kZVJlYWRlci5jYWxsKHRoaXMsIG9wdHMpO1xyXG4gICAgdGhpcy5iYXJTcGFjZVJhdGlvID0gWzEsIDFdO1xyXG4gICAgaWYgKG9wdHMubm9ybWFsaXplQmFyU3BhY2VXaWR0aCkge1xyXG4gICAgICAgIHRoaXMuU0lOR0xFX0NPREVfRVJST1IgPSAwLjM4O1xyXG4gICAgICAgIHRoaXMuQVZHX0NPREVfRVJST1IgPSAwLjA5O1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXREZWZhdWxDb25maWcoKSB7XHJcbiAgICB2YXIgY29uZmlnID0ge307XHJcblxyXG4gICAgT2JqZWN0LmtleXMoSTJvZjVSZWFkZXIuQ09ORklHX0tFWVMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XHJcbiAgICAgICAgY29uZmlnW2tleV0gPSBJMm9mNVJlYWRlci5DT05GSUdfS0VZU1trZXldLmRlZmF1bHQ7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb25maWc7XHJcbn1cclxuXHJcbnZhciBOID0gMSxcclxuICAgIFcgPSAzLFxyXG4gICAgcHJvcGVydGllcyA9IHtcclxuICAgICAgICBNT0RVTE86IHt2YWx1ZTogMTB9LFxyXG4gICAgICAgIFNUQVJUX1BBVFRFUk46IHt2YWx1ZTogW04gKiAyLjUsIE4gKiAyLjUsIE4gKiAyLjUsIE4gKiAyLjVdfSxcclxuICAgICAgICBTVE9QX1BBVFRFUk46IHt2YWx1ZTogW04gKiAyLCBOICogMiwgVyAqIDJdfSxcclxuICAgICAgICBDT0RFX1BBVFRFUk46IHt2YWx1ZTogW1xyXG4gICAgICAgICAgICBbTiwgTiwgVywgVywgTl0sXHJcbiAgICAgICAgICAgIFtXLCBOLCBOLCBOLCBXXSxcclxuICAgICAgICAgICAgW04sIFcsIE4sIE4sIFddLFxyXG4gICAgICAgICAgICBbVywgVywgTiwgTiwgTl0sXHJcbiAgICAgICAgICAgIFtOLCBOLCBXLCBOLCBXXSxcclxuICAgICAgICAgICAgW1csIE4sIFcsIE4sIE5dLFxyXG4gICAgICAgICAgICBbTiwgVywgVywgTiwgTl0sXHJcbiAgICAgICAgICAgIFtOLCBOLCBOLCBXLCBXXSxcclxuICAgICAgICAgICAgW1csIE4sIE4sIFcsIE5dLFxyXG4gICAgICAgICAgICBbTiwgVywgTiwgVywgTl1cclxuICAgICAgICBdfSxcclxuICAgICAgICBTSU5HTEVfQ09ERV9FUlJPUjoge3ZhbHVlOiAwLjc4LCB3cml0YWJsZTogdHJ1ZX0sXHJcbiAgICAgICAgQVZHX0NPREVfRVJST1I6IHt2YWx1ZTogMC4zOCwgd3JpdGFibGU6IHRydWV9LFxyXG4gICAgICAgIE1BWF9DT1JSRUNUSU9OX0ZBQ1RPUjoge3ZhbHVlOiA1fSxcclxuICAgICAgICBGT1JNQVQ6IHt2YWx1ZTogXCJpMm9mNVwifVxyXG4gICAgfTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmFyY29kZVJlYWRlci5wcm90b3R5cGUsIHByb3BlcnRpZXMpO1xyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBJMm9mNVJlYWRlcjtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fbWF0Y2hQYXR0ZXJuID0gZnVuY3Rpb24oY291bnRlciwgY29kZSkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm5vcm1hbGl6ZUJhclNwYWNlV2lkdGgpIHtcclxuICAgICAgICB2YXIgaSxcclxuICAgICAgICAgICAgY291bnRlclN1bSA9IFswLCAwXSxcclxuICAgICAgICAgICAgY29kZVN1bSA9IFswLCAwXSxcclxuICAgICAgICAgICAgY29ycmVjdGlvbiA9IFswLCAwXSxcclxuICAgICAgICAgICAgY29ycmVjdGlvblJhdGlvID0gdGhpcy5NQVhfQ09SUkVDVElPTl9GQUNUT1IsXHJcbiAgICAgICAgICAgIGNvcnJlY3Rpb25SYXRpb0ludmVyc2UgPSAxIC8gY29ycmVjdGlvblJhdGlvO1xyXG5cclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnRlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb3VudGVyU3VtW2kgJSAyXSArPSBjb3VudGVyW2ldO1xyXG4gICAgICAgICAgICBjb2RlU3VtW2kgJSAyXSArPSBjb2RlW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb3JyZWN0aW9uWzBdID0gY29kZVN1bVswXSAvIGNvdW50ZXJTdW1bMF07XHJcbiAgICAgICAgY29ycmVjdGlvblsxXSA9IGNvZGVTdW1bMV0gLyBjb3VudGVyU3VtWzFdO1xyXG5cclxuICAgICAgICBjb3JyZWN0aW9uWzBdID0gTWF0aC5tYXgoTWF0aC5taW4oY29ycmVjdGlvblswXSwgY29ycmVjdGlvblJhdGlvKSwgY29ycmVjdGlvblJhdGlvSW52ZXJzZSk7XHJcbiAgICAgICAgY29ycmVjdGlvblsxXSA9IE1hdGgubWF4KE1hdGgubWluKGNvcnJlY3Rpb25bMV0sIGNvcnJlY3Rpb25SYXRpbyksIGNvcnJlY3Rpb25SYXRpb0ludmVyc2UpO1xyXG4gICAgICAgIHRoaXMuYmFyU3BhY2VSYXRpbyA9IGNvcnJlY3Rpb247XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50ZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY291bnRlcltpXSAqPSB0aGlzLmJhclNwYWNlUmF0aW9baSAlIDJdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBCYXJjb2RlUmVhZGVyLnByb3RvdHlwZS5fbWF0Y2hQYXR0ZXJuLmNhbGwodGhpcywgY291bnRlciwgY29kZSk7XHJcbn07XHJcblxyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuX2ZpbmRQYXR0ZXJuID0gZnVuY3Rpb24ocGF0dGVybiwgb2Zmc2V0LCBpc1doaXRlLCB0cnlIYXJkZXIpIHtcclxuICAgIHZhciBjb3VudGVyID0gW10sXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBjb3VudGVyUG9zID0gMCxcclxuICAgICAgICBiZXN0TWF0Y2ggPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiBOdW1iZXIuTUFYX1ZBTFVFLFxyXG4gICAgICAgICAgICBjb2RlOiAtMSxcclxuICAgICAgICAgICAgc3RhcnQ6IDAsXHJcbiAgICAgICAgICAgIGVuZDogMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgaixcclxuICAgICAgICBzdW0sXHJcbiAgICAgICAgbm9ybWFsaXplZCxcclxuICAgICAgICBlcHNpbG9uID0gc2VsZi5BVkdfQ09ERV9FUlJPUjtcclxuXHJcbiAgICBpc1doaXRlID0gaXNXaGl0ZSB8fCBmYWxzZTtcclxuICAgIHRyeUhhcmRlciA9IHRyeUhhcmRlciB8fCBmYWxzZTtcclxuXHJcbiAgICBpZiAoIW9mZnNldCkge1xyXG4gICAgICAgIG9mZnNldCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IHBhdHRlcm4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb3VudGVyW2ldID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBpID0gb2Zmc2V0OyBpIDwgc2VsZi5fcm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb3VudGVyUG9zID09PSBjb3VudGVyLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIHN1bSA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IGNvdW50ZXIubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gY291bnRlcltqXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBzZWxmLl9ub3JtYWxpemUoY291bnRlcik7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2VsZi5fbWF0Y2hQYXR0ZXJuKG5vcm1hbGl6ZWQsIHBhdHRlcm4pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPCBlcHNpbG9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lcnJvciA9IGVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guc3RhcnQgPSBpIC0gc3VtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guZW5kID0gaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodHJ5SGFyZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50ZXIubGVuZ3RoIC0gMjsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJbal0gPSBjb3VudGVyW2ogKyAyXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcltjb3VudGVyLmxlbmd0aCAtIDJdID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyW2NvdW50ZXIubGVuZ3RoIC0gMV0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MtLTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyUG9zKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSA9IDE7XHJcbiAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fZmluZFN0YXJ0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgbGVhZGluZ1doaXRlc3BhY2VTdGFydCxcclxuICAgICAgICBvZmZzZXQgPSBzZWxmLl9uZXh0U2V0KHNlbGYuX3JvdyksXHJcbiAgICAgICAgc3RhcnRJbmZvLFxyXG4gICAgICAgIG5hcnJvd0JhcldpZHRoID0gMTtcclxuXHJcbiAgICB3aGlsZSAoIXN0YXJ0SW5mbykge1xyXG4gICAgICAgIHN0YXJ0SW5mbyA9IHNlbGYuX2ZpbmRQYXR0ZXJuKHNlbGYuU1RBUlRfUEFUVEVSTiwgb2Zmc2V0LCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgaWYgKCFzdGFydEluZm8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5hcnJvd0JhcldpZHRoID0gTWF0aC5mbG9vcigoc3RhcnRJbmZvLmVuZCAtIHN0YXJ0SW5mby5zdGFydCkgLyA0KTtcclxuICAgICAgICBsZWFkaW5nV2hpdGVzcGFjZVN0YXJ0ID0gc3RhcnRJbmZvLnN0YXJ0IC0gbmFycm93QmFyV2lkdGggKiAxMDtcclxuICAgICAgICBpZiAobGVhZGluZ1doaXRlc3BhY2VTdGFydCA+PSAwKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLl9tYXRjaFJhbmdlKGxlYWRpbmdXaGl0ZXNwYWNlU3RhcnQsIHN0YXJ0SW5mby5zdGFydCwgMCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzdGFydEluZm87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgb2Zmc2V0ID0gc3RhcnRJbmZvLmVuZDtcclxuICAgICAgICBzdGFydEluZm8gPSBudWxsO1xyXG4gICAgfVxyXG59O1xyXG5cclxuSTJvZjVSZWFkZXIucHJvdG90eXBlLl92ZXJpZnlUcmFpbGluZ1doaXRlc3BhY2UgPSBmdW5jdGlvbihlbmRJbmZvKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kO1xyXG5cclxuICAgIHRyYWlsaW5nV2hpdGVzcGFjZUVuZCA9IGVuZEluZm8uZW5kICsgKChlbmRJbmZvLmVuZCAtIGVuZEluZm8uc3RhcnQpIC8gMik7XHJcbiAgICBpZiAodHJhaWxpbmdXaGl0ZXNwYWNlRW5kIDwgc2VsZi5fcm93Lmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChzZWxmLl9tYXRjaFJhbmdlKGVuZEluZm8uZW5kLCB0cmFpbGluZ1doaXRlc3BhY2VFbmQsIDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbmRJbmZvO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuSTJvZjVSZWFkZXIucHJvdG90eXBlLl9maW5kRW5kID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgZW5kSW5mbyxcclxuICAgICAgICB0bXA7XHJcblxyXG4gICAgc2VsZi5fcm93LnJldmVyc2UoKTtcclxuICAgIGVuZEluZm8gPSBzZWxmLl9maW5kUGF0dGVybihzZWxmLlNUT1BfUEFUVEVSTik7XHJcbiAgICBzZWxmLl9yb3cucmV2ZXJzZSgpO1xyXG5cclxuICAgIGlmIChlbmRJbmZvID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmV2ZXJzZSBudW1iZXJzXHJcbiAgICB0bXAgPSBlbmRJbmZvLnN0YXJ0O1xyXG4gICAgZW5kSW5mby5zdGFydCA9IHNlbGYuX3Jvdy5sZW5ndGggLSBlbmRJbmZvLmVuZDtcclxuICAgIGVuZEluZm8uZW5kID0gc2VsZi5fcm93Lmxlbmd0aCAtIHRtcDtcclxuXHJcbiAgICByZXR1cm4gZW5kSW5mbyAhPT0gbnVsbCA/IHNlbGYuX3ZlcmlmeVRyYWlsaW5nV2hpdGVzcGFjZShlbmRJbmZvKSA6IG51bGw7XHJcbn07XHJcblxyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuX2RlY29kZVBhaXIgPSBmdW5jdGlvbihjb3VudGVyUGFpcikge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICBjb2RlcyA9IFtdLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudGVyUGFpci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvZGUgPSBzZWxmLl9kZWNvZGVDb2RlKGNvdW50ZXJQYWlyW2ldKTtcclxuICAgICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvZGVzLnB1c2goY29kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29kZXM7XHJcbn07XHJcblxyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuX2RlY29kZUNvZGUgPSBmdW5jdGlvbihjb3VudGVyKSB7XHJcbiAgICB2YXIgaixcclxuICAgICAgICBzZWxmID0gdGhpcyxcclxuICAgICAgICBzdW0gPSAwLFxyXG4gICAgICAgIG5vcm1hbGl6ZWQsXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgZXBzaWxvbiA9IHNlbGYuQVZHX0NPREVfRVJST1IsXHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICBiZXN0TWF0Y2ggPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiBOdW1iZXIuTUFYX1ZBTFVFLFxyXG4gICAgICAgICAgICBjb2RlOiAtMSxcclxuICAgICAgICAgICAgc3RhcnQ6IDAsXHJcbiAgICAgICAgICAgIGVuZDogMFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgZm9yICggaiA9IDA7IGogPCBjb3VudGVyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgc3VtICs9IGNvdW50ZXJbal07XHJcbiAgICB9XHJcbiAgICBub3JtYWxpemVkID0gc2VsZi5fbm9ybWFsaXplKGNvdW50ZXIpO1xyXG4gICAgaWYgKG5vcm1hbGl6ZWQpIHtcclxuICAgICAgICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgc2VsZi5DT0RFX1BBVFRFUk4ubGVuZ3RoOyBjb2RlKyspIHtcclxuICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9tYXRjaFBhdHRlcm4obm9ybWFsaXplZCwgc2VsZi5DT0RFX1BBVFRFUk5bY29kZV0pO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IgPCBiZXN0TWF0Y2guZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb2RlID0gY29kZTtcclxuICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lcnJvciA9IGVycm9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChiZXN0TWF0Y2guZXJyb3IgPCBlcHNpbG9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBiZXN0TWF0Y2g7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuX2RlY29kZVBheWxvYWQgPSBmdW5jdGlvbihjb3VudGVycywgcmVzdWx0LCBkZWNvZGVkQ29kZXMpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHBvcyA9IDAsXHJcbiAgICAgICAgY291bnRlckxlbmd0aCA9IGNvdW50ZXJzLmxlbmd0aCxcclxuICAgICAgICBjb3VudGVyUGFpciA9IFtbMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwXV0sXHJcbiAgICAgICAgY29kZXM7XHJcblxyXG4gICAgd2hpbGUgKHBvcyA8IGNvdW50ZXJMZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJQYWlyWzBdW2ldID0gY291bnRlcnNbcG9zXSAqIHRoaXMuYmFyU3BhY2VSYXRpb1swXTtcclxuICAgICAgICAgICAgY291bnRlclBhaXJbMV1baV0gPSBjb3VudGVyc1twb3MgKyAxXSAqIHRoaXMuYmFyU3BhY2VSYXRpb1sxXTtcclxuICAgICAgICAgICAgcG9zICs9IDI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvZGVzID0gc2VsZi5fZGVjb2RlUGFpcihjb3VudGVyUGFpcik7XHJcbiAgICAgICAgaWYgKCFjb2Rlcykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvZGVzW2ldLmNvZGUgKyBcIlwiKTtcclxuICAgICAgICAgICAgZGVjb2RlZENvZGVzLnB1c2goY29kZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb2RlcztcclxufTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fdmVyaWZ5Q291bnRlckxlbmd0aCA9IGZ1bmN0aW9uKGNvdW50ZXJzKSB7XHJcbiAgICByZXR1cm4gKGNvdW50ZXJzLmxlbmd0aCAlIDEwID09PSAwKTtcclxufTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc3RhcnRJbmZvLFxyXG4gICAgICAgIGVuZEluZm8sXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICByZXN1bHQgPSBbXSxcclxuICAgICAgICBkZWNvZGVkQ29kZXMgPSBbXSxcclxuICAgICAgICBjb3VudGVycztcclxuXHJcbiAgICBzdGFydEluZm8gPSBzZWxmLl9maW5kU3RhcnQoKTtcclxuICAgIGlmICghc3RhcnRJbmZvKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBkZWNvZGVkQ29kZXMucHVzaChzdGFydEluZm8pO1xyXG5cclxuICAgIGVuZEluZm8gPSBzZWxmLl9maW5kRW5kKCk7XHJcbiAgICBpZiAoIWVuZEluZm8pIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb3VudGVycyA9IHNlbGYuX2ZpbGxDb3VudGVycyhzdGFydEluZm8uZW5kLCBlbmRJbmZvLnN0YXJ0LCBmYWxzZSk7XHJcbiAgICBpZiAoIXNlbGYuX3ZlcmlmeUNvdW50ZXJMZW5ndGgoY291bnRlcnMpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb2RlID0gc2VsZi5fZGVjb2RlUGF5bG9hZChjb3VudGVycywgcmVzdWx0LCBkZWNvZGVkQ29kZXMpO1xyXG4gICAgaWYgKCFjb2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCAlIDIgIT09IDAgfHxcclxuICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA8IDYpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBkZWNvZGVkQ29kZXMucHVzaChlbmRJbmZvKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogcmVzdWx0LmpvaW4oXCJcIiksXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0SW5mby5zdGFydCxcclxuICAgICAgICBlbmQ6IGVuZEluZm8uZW5kLFxyXG4gICAgICAgIHN0YXJ0SW5mbzogc3RhcnRJbmZvLFxyXG4gICAgICAgIGRlY29kZWRDb2RlczogZGVjb2RlZENvZGVzXHJcbiAgICB9O1xyXG59O1xyXG5cclxuSTJvZjVSZWFkZXIuQ09ORklHX0tFWVMgPSB7XHJcbiAgICBub3JtYWxpemVCYXJTcGFjZVdpZHRoOiB7XHJcbiAgICAgICAgJ3R5cGUnOiAnYm9vbGVhbicsXHJcbiAgICAgICAgJ2RlZmF1bHQnOiBmYWxzZSxcclxuICAgICAgICAnZGVzY3JpcHRpb24nOiAnSWYgdHJ1ZSwgdGhlIHJlYWRlciB0cmllcyB0byBub3JtYWxpemUgdGhlJyArXHJcbiAgICAgICAgJ3dpZHRoLWRpZmZlcmVuY2UgYmV0d2VlbiBiYXJzIGFuZCBzcGFjZXMnXHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJMm9mNVJlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL2kyb2Y1X3JlYWRlci5qc1xuICoqLyIsImltcG9ydCBFQU5SZWFkZXIgZnJvbSAnLi9lYW5fcmVhZGVyJztcclxuXHJcbmZ1bmN0aW9uIFVQQ0VSZWFkZXIoKSB7XHJcbiAgICBFQU5SZWFkZXIuY2FsbCh0aGlzKTtcclxufVxyXG5cclxudmFyIHByb3BlcnRpZXMgPSB7XHJcbiAgICBDT0RFX0ZSRVFVRU5DWToge3ZhbHVlOiBbXHJcbiAgICAgICAgWyA1NiwgNTIsIDUwLCA0OSwgNDQsIDM4LCAzNSwgNDIsIDQxLCAzNyBdLFxyXG4gICAgICAgIFs3LCAxMSwgMTMsIDE0LCAxOSwgMjUsIDI4LCAyMSwgMjIsIDI2XV19LFxyXG4gICAgU1RPUF9QQVRURVJOOiB7IHZhbHVlOiBbMSAvIDYgKiA3LCAxIC8gNiAqIDcsIDEgLyA2ICogNywgMSAvIDYgKiA3LCAxIC8gNiAqIDcsIDEgLyA2ICogN119LFxyXG4gICAgRk9STUFUOiB7dmFsdWU6IFwidXBjX2VcIiwgd3JpdGVhYmxlOiBmYWxzZX1cclxufTtcclxuXHJcblVQQ0VSZWFkZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFQU5SZWFkZXIucHJvdG90eXBlLCBwcm9wZXJ0aWVzKTtcclxuVVBDRVJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBVUENFUmVhZGVyO1xyXG5cclxuVVBDRVJlYWRlci5wcm90b3R5cGUuX2RlY29kZVBheWxvYWQgPSBmdW5jdGlvbihjb2RlLCByZXN1bHQsIGRlY29kZWRDb2Rlcykge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgY29kZUZyZXF1ZW5jeSA9IDB4MDtcclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IDY7IGkrKykge1xyXG4gICAgICAgIGNvZGUgPSBzZWxmLl9kZWNvZGVDb2RlKGNvZGUuZW5kKTtcclxuICAgICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2RlLmNvZGUgPj0gc2VsZi5DT0RFX0dfU1RBUlQpIHtcclxuICAgICAgICAgICAgY29kZS5jb2RlID0gY29kZS5jb2RlIC0gc2VsZi5DT0RFX0dfU1RBUlQ7XHJcbiAgICAgICAgICAgIGNvZGVGcmVxdWVuY3kgfD0gMSA8PCAoNSAtIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQucHVzaChjb2RlLmNvZGUpO1xyXG4gICAgICAgIGRlY29kZWRDb2Rlcy5wdXNoKGNvZGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzZWxmLl9kZXRlcm1pbmVQYXJpdHkoY29kZUZyZXF1ZW5jeSwgcmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2RlO1xyXG59O1xyXG5cclxuVVBDRVJlYWRlci5wcm90b3R5cGUuX2RldGVybWluZVBhcml0eSA9IGZ1bmN0aW9uKGNvZGVGcmVxdWVuY3ksIHJlc3VsdCkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgbnJTeXN0ZW07XHJcblxyXG4gICAgZm9yIChuclN5c3RlbSA9IDA7IG5yU3lzdGVtIDwgdGhpcy5DT0RFX0ZSRVFVRU5DWS5sZW5ndGg7IG5yU3lzdGVtKyspe1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgdGhpcy5DT0RFX0ZSRVFVRU5DWVtuclN5c3RlbV0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNvZGVGcmVxdWVuY3kgPT09IHRoaXMuQ09ERV9GUkVRVUVOQ1lbbnJTeXN0ZW1dW2ldKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQudW5zaGlmdChuclN5c3RlbSk7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuVVBDRVJlYWRlci5wcm90b3R5cGUuX2NvbnZlcnRUb1VQQ0EgPSBmdW5jdGlvbihyZXN1bHQpIHtcclxuICAgIHZhciB1cGNhID0gW3Jlc3VsdFswXV0sXHJcbiAgICAgICAgbGFzdERpZ2l0ID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAyXTtcclxuXHJcbiAgICBpZiAobGFzdERpZ2l0IDw9IDIpIHtcclxuICAgICAgICB1cGNhID0gdXBjYS5jb25jYXQocmVzdWx0LnNsaWNlKDEsIDMpKVxyXG4gICAgICAgICAgICAuY29uY2F0KFtsYXN0RGlnaXQsIDAsIDAsIDAsIDBdKVxyXG4gICAgICAgICAgICAuY29uY2F0KHJlc3VsdC5zbGljZSgzLCA2KSk7XHJcbiAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMykge1xyXG4gICAgICAgIHVwY2EgPSB1cGNhLmNvbmNhdChyZXN1bHQuc2xpY2UoMSwgNCkpXHJcbiAgICAgICAgICAgIC5jb25jYXQoWzAsIDAsIDAsIDAsIDBdKVxyXG4gICAgICAgICAgICAuY29uY2F0KHJlc3VsdC5zbGljZSg0LCA2KSk7XHJcbiAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNCkge1xyXG4gICAgICAgIHVwY2EgPSB1cGNhLmNvbmNhdChyZXN1bHQuc2xpY2UoMSwgNSkpXHJcbiAgICAgICAgICAgIC5jb25jYXQoWzAsIDAsIDAsIDAsIDAsIHJlc3VsdFs1XV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB1cGNhID0gdXBjYS5jb25jYXQocmVzdWx0LnNsaWNlKDEsIDYpKVxyXG4gICAgICAgICAgICAuY29uY2F0KFswLCAwLCAwLCAwLCBsYXN0RGlnaXRdKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGNhLnB1c2gocmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSk7XHJcbiAgICByZXR1cm4gdXBjYTtcclxufTtcclxuXHJcblVQQ0VSZWFkZXIucHJvdG90eXBlLl9jaGVja3N1bSA9IGZ1bmN0aW9uKHJlc3VsdCkge1xyXG4gICAgcmV0dXJuIEVBTlJlYWRlci5wcm90b3R5cGUuX2NoZWNrc3VtLmNhbGwodGhpcywgdGhpcy5fY29udmVydFRvVVBDQShyZXN1bHQpKTtcclxufTtcclxuXHJcblVQQ0VSZWFkZXIucHJvdG90eXBlLl9maW5kRW5kID0gZnVuY3Rpb24ob2Zmc2V0LCBpc1doaXRlKSB7XHJcbiAgICBpc1doaXRlID0gdHJ1ZTtcclxuICAgIHJldHVybiBFQU5SZWFkZXIucHJvdG90eXBlLl9maW5kRW5kLmNhbGwodGhpcywgb2Zmc2V0LCBpc1doaXRlKTtcclxufTtcclxuXHJcblVQQ0VSZWFkZXIucHJvdG90eXBlLl92ZXJpZnlUcmFpbGluZ1doaXRlc3BhY2UgPSBmdW5jdGlvbihlbmRJbmZvKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kO1xyXG5cclxuICAgIHRyYWlsaW5nV2hpdGVzcGFjZUVuZCA9IGVuZEluZm8uZW5kICsgKChlbmRJbmZvLmVuZCAtIGVuZEluZm8uc3RhcnQpIC8gMik7XHJcbiAgICBpZiAodHJhaWxpbmdXaGl0ZXNwYWNlRW5kIDwgc2VsZi5fcm93Lmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChzZWxmLl9tYXRjaFJhbmdlKGVuZEluZm8uZW5kLCB0cmFpbGluZ1doaXRlc3BhY2VFbmQsIDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbmRJbmZvO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFVQQ0VSZWFkZXI7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL3JlYWRlci91cGNfZV9yZWFkZXIuanNcbiAqKi8iLCJpbXBvcnQgRUFOUmVhZGVyIGZyb20gJy4vZWFuX3JlYWRlcic7XHJcblxyXG5mdW5jdGlvbiBVUENSZWFkZXIoKSB7XHJcbiAgICBFQU5SZWFkZXIuY2FsbCh0aGlzKTtcclxufVxyXG5cclxudmFyIHByb3BlcnRpZXMgPSB7XHJcbiAgICBGT1JNQVQ6IHt2YWx1ZTogXCJ1cGNfYVwiLCB3cml0ZWFibGU6IGZhbHNlfVxyXG59O1xyXG5cclxuVVBDUmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRUFOUmVhZGVyLnByb3RvdHlwZSwgcHJvcGVydGllcyk7XHJcblVQQ1JlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBVUENSZWFkZXI7XHJcblxyXG5VUENSZWFkZXIucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciByZXN1bHQgPSBFQU5SZWFkZXIucHJvdG90eXBlLl9kZWNvZGUuY2FsbCh0aGlzKTtcclxuXHJcbiAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5jb2RlICYmIHJlc3VsdC5jb2RlLmxlbmd0aCA9PT0gMTMgJiYgcmVzdWx0LmNvZGUuY2hhckF0KDApID09PSBcIjBcIikge1xyXG4gICAgICAgIHJlc3VsdC5jb2RlID0gcmVzdWx0LmNvZGUuc3Vic3RyaW5nKDEpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFVQQ1JlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL3VwY19yZWFkZXIuanNcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IGNvcHlcblxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgbWF0MiB0byBhbm90aGVyXG4gKlxuICogQGFsaWFzIG1hdDIuY29weVxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7bWF0Mn0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5mdW5jdGlvbiBjb3B5KG91dCwgYSkge1xuICBvdXRbMF0gPSBhWzBdXG4gIG91dFsxXSA9IGFbMV1cbiAgb3V0WzJdID0gYVsyXVxuICBvdXRbM10gPSBhWzNdXG4gIHJldHVybiBvdXRcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2dsLW1hdDIvY29weS5qc1xuICoqIG1vZHVsZSBpZCA9IDczXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaWRlbnRpdHkgbWF0MlxuICpcbiAqIEBhbGlhcyBtYXQyLmNyZWF0ZVxuICogQHJldHVybnMge21hdDJ9IGEgbmV3IDJ4MiBtYXRyaXhcbiAqL1xuZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSg0KVxuICBvdXRbMF0gPSAxXG4gIG91dFsxXSA9IDBcbiAgb3V0WzJdID0gMFxuICBvdXRbM10gPSAxXG4gIHJldHVybiBvdXRcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2dsLW1hdDIvY3JlYXRlLmpzXG4gKiogbW9kdWxlIGlkID0gNzRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIm1vZHVsZS5leHBvcnRzID0gaW52ZXJ0XG5cbi8qKlxuICogSW52ZXJ0cyBhIG1hdDJcbiAqXG4gKiBAYWxpYXMgbWF0Mi5pbnZlcnRcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge21hdDJ9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuZnVuY3Rpb24gaW52ZXJ0KG91dCwgYSkge1xuICB2YXIgYTAgPSBhWzBdXG4gIHZhciBhMSA9IGFbMV1cbiAgdmFyIGEyID0gYVsyXVxuICB2YXIgYTMgPSBhWzNdXG4gIHZhciBkZXQgPSBhMCAqIGEzIC0gYTIgKiBhMVxuXG4gIGlmICghZGV0KSByZXR1cm4gbnVsbFxuICBkZXQgPSAxLjAgLyBkZXRcblxuICBvdXRbMF0gPSAgYTMgKiBkZXRcbiAgb3V0WzFdID0gLWExICogZGV0XG4gIG91dFsyXSA9IC1hMiAqIGRldFxuICBvdXRbM10gPSAgYTAgKiBkZXRcblxuICByZXR1cm4gb3V0XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9nbC1tYXQyL2ludmVydC5qc1xuICoqIG1vZHVsZSBpZCA9IDc1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IHNjYWxlXG5cbi8qKlxuICogU2NhbGVzIGEgdmVjMiBieSBhIHNjYWxhciBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gc2NhbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgdmVjdG9yIGJ5XG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIHNjYWxlKG91dCwgYSwgYikge1xuICAgIG91dFswXSA9IGFbMF0gKiBiXG4gICAgb3V0WzFdID0gYVsxXSAqIGJcbiAgICByZXR1cm4gb3V0XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZ2wtdmVjMi9zY2FsZS5qc1xuICoqIG1vZHVsZSBpZCA9IDc2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IHRyYW5zZm9ybU1hdDJcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMyIHdpdGggYSBtYXQyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHttYXQyfSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm1NYXQyKG91dCwgYSwgbSkge1xuICAgIHZhciB4ID0gYVswXSxcbiAgICAgICAgeSA9IGFbMV1cbiAgICBvdXRbMF0gPSBtWzBdICogeCArIG1bMl0gKiB5XG4gICAgb3V0WzFdID0gbVsxXSAqIHggKyBtWzNdICogeVxuICAgIHJldHVybiBvdXRcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9nbC12ZWMyL3RyYW5zZm9ybU1hdDIuanNcbiAqKiBtb2R1bGUgaWQgPSA3N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwibW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzMgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IGEgdmVjdG9yIHRvIGNsb25lXG4gKiBAcmV0dXJucyB7dmVjM30gYSBuZXcgM0QgdmVjdG9yXG4gKi9cbmZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSgzKVxuICAgIG91dFswXSA9IGFbMF1cbiAgICBvdXRbMV0gPSBhWzFdXG4gICAgb3V0WzJdID0gYVsyXVxuICAgIHJldHVybiBvdXRcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9nbC12ZWMzL2Nsb25lLmpzXG4gKiogbW9kdWxlIGlkID0gNzhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBoYXNoIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gSGFzaCgpIHt9XG5cbi8vIEF2b2lkIGluaGVyaXRpbmcgZnJvbSBgT2JqZWN0LnByb3RvdHlwZWAgd2hlbiBwb3NzaWJsZS5cbkhhc2gucHJvdG90eXBlID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDogb2JqZWN0UHJvdG87XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fSGFzaC5qc1xuICoqIG1vZHVsZSBpZCA9IDc5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgbWFwQ2xlYXIgPSByZXF1aXJlKCcuL19tYXBDbGVhcicpLFxuICAgIG1hcERlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcERlbGV0ZScpLFxuICAgIG1hcEdldCA9IHJlcXVpcmUoJy4vX21hcEdldCcpLFxuICAgIG1hcEhhcyA9IHJlcXVpcmUoJy4vX21hcEhhcycpLFxuICAgIG1hcFNldCA9IHJlcXVpcmUoJy4vX21hcFNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPyB2YWx1ZXMubGVuZ3RoIDogMDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gdmFsdWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBmdW5jdGlvbnMgdG8gdGhlIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcEhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX01hcENhY2hlLmpzXG4gKiogbW9kdWxlIGlkID0gODBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBSZWZsZWN0ID0gcm9vdC5SZWZsZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlZmxlY3Q7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX1JlZmxlY3QuanNcbiAqKiBtb2R1bGUgaWQgPSA4MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fU2V0LmpzXG4gKiogbW9kdWxlIGlkID0gODJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX1N5bWJvbC5qc1xuICoqIG1vZHVsZSBpZCA9IDgzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgVWludDhBcnJheSA9IHJvb3QuVWludDhBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBVaW50OEFycmF5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19VaW50OEFycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gODRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX1dlYWtNYXAuanNcbiAqKiBtb2R1bGUgaWQgPSA4NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBBZGRzIHRoZSBrZXktdmFsdWUgYHBhaXJgIHRvIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gcGFpciBUaGUga2V5LXZhbHVlIHBhaXIgdG8gYWRkLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgbWFwYC5cbiAqL1xuZnVuY3Rpb24gYWRkTWFwRW50cnkobWFwLCBwYWlyKSB7XG4gIC8vIERvbid0IHJldHVybiBgTWFwI3NldGAgYmVjYXVzZSBpdCBkb2Vzbid0IHJldHVybiB0aGUgbWFwIGluc3RhbmNlIGluIElFIDExLlxuICBtYXAuc2V0KHBhaXJbMF0sIHBhaXJbMV0pO1xuICByZXR1cm4gbWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZE1hcEVudHJ5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hZGRNYXBFbnRyeS5qc1xuICoqIG1vZHVsZSBpZCA9IDg2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIEFkZHMgYHZhbHVlYCB0byBgc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFkZC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYHNldGAuXG4gKi9cbmZ1bmN0aW9uIGFkZFNldEVudHJ5KHNldCwgdmFsdWUpIHtcbiAgc2V0LmFkZCh2YWx1ZSk7XG4gIHJldHVybiBzZXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWRkU2V0RW50cnk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2FkZFNldEVudHJ5LmpzXG4gKiogbW9kdWxlIGlkID0gODdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0gey4uLip9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICB2YXIgbGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hcHBseS5qc1xuICoqIG1vZHVsZSBpZCA9IDg4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hcnJheVB1c2guanNcbiAqKiBtb2R1bGUgaWQgPSA4OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZUFzc2lnbi5qc1xuICoqIG1vZHVsZSBpZCA9IDkwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbicpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpbml0Q2xvbmVBcnJheSA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUFycmF5JyksXG4gICAgaW5pdENsb25lQnlUYWcgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVCeVRhZycpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0hvc3RPYmplY3QgPSByZXF1aXJlKCcuL19pc0hvc3RPYmplY3QnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG52YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbmNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9XG5jbG9uZWFibGVUYWdzW2RhdGVUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MzJUYWddID1cbmNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9IGNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9XG5jbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPSBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tzZXRUYWddID0gY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID1cbmNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbmNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNGdWxsXSBTcGVjaWZ5IGEgY2xvbmUgaW5jbHVkaW5nIHN5bWJvbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGlzRGVlcCwgaXNGdWxsLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzQXJyKSB7XG4gICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgIGlmICghaXNEZWVwKSB7XG4gICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICB9XG4gICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgaWYgKGlzSG9zdE9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBpbml0Q2xvbmVPYmplY3QoaXNGdW5jID8ge30gOiB2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXN1bHQgPSBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gaXNGdWxsID8gY29weVN5bWJvbHModmFsdWUsIHJlc3VsdCkgOiByZXN1bHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAoaXNBcnIgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKSh2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGlzRGVlcCwgaXNGdWxsLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICB9KTtcbiAgcmV0dXJuIChpc0Z1bGwgJiYgIWlzQXJyKSA/IGNvcHlTeW1ib2xzKHZhbHVlLCByZXN1bHQpIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZUNsb25lLmpzXG4gKiogbW9kdWxlIGlkID0gOTFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvdHlwZSBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDcmVhdGUocHJvdG8pIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHByb3RvKSA/IG9iamVjdENyZWF0ZShwcm90bykgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19iYXNlQ3JlYXRlLmpzXG4gKiogbW9kdWxlIGlkID0gOTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgZmxhdHRlbmluZyB0byBhcnJheXMtbGlrZSBvYmplY3RzLlxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgJiZcbiAgICAgICAgKGlzU3RyaWN0IHx8IGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19iYXNlRmxhdHRlbi5qc1xuICoqIG1vZHVsZSBpZCA9IDkzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgY3JlYXRlQmFzZUZvciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VGb3InKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvckluYCBhbmQgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzXG4gKiBvdmVyIGBvYmplY3RgIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBpbnZva2luZyBgaXRlcmF0ZWVgIGZvclxuICogZWFjaCBwcm9wZXJ0eS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5XG4gKiByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZUZvci5qc1xuICoqIG1vZHVsZSBpZCA9IDk0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vX2Jhc2VGb3InKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yT3duO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19iYXNlRm9yT3duLmpzXG4gKiogbW9kdWxlIGlkID0gOTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VIYXMob2JqZWN0LCBrZXkpIHtcbiAgLy8gQXZvaWQgYSBidWcgaW4gSUUgMTAtMTEgd2hlcmUgb2JqZWN0cyB3aXRoIGEgW1tQcm90b3R5cGVdXSBvZiBgbnVsbGAsXG4gIC8vIHRoYXQgYXJlIGNvbXBvc2VkIGVudGlyZWx5IG9mIGluZGV4IHByb3BlcnRpZXMsIHJldHVybiBgZmFsc2VgIGZvclxuICAvLyBgaGFzT3duUHJvcGVydHlgIGNoZWNrcyBvZiB0aGVtLlxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgfHxcbiAgICAodHlwZW9mIG9iamVjdCA9PSAnb2JqZWN0JyAmJiBrZXkgaW4gb2JqZWN0ICYmIGdldFByb3RvdHlwZU9mKG9iamVjdCkgPT09IG51bGwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VIYXM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VIYXMuanNcbiAqKiBtb2R1bGUgaWQgPSA5NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBPYmplY3Qua2V5cztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHNraXAgdGhlIGNvbnN0cnVjdG9yXG4gKiBwcm9wZXJ0eSBvZiBwcm90b3R5cGVzIG9yIHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICByZXR1cm4gbmF0aXZlS2V5cyhPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VLZXlzLmpzXG4gKiogbW9kdWxlIGlkID0gOTdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBSZWZsZWN0ID0gcmVxdWlyZSgnLi9fUmVmbGVjdCcpLFxuICAgIGl0ZXJhdG9yVG9BcnJheSA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9yVG9BcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBlbnVtZXJhdGUgPSBSZWZsZWN0ID8gUmVmbGVjdC5lbnVtZXJhdGUgOiB1bmRlZmluZWQsXG4gICAgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3Qgc2tpcCB0aGUgY29uc3RydWN0b3JcbiAqIHByb3BlcnR5IG9mIHByb3RvdHlwZXMgb3IgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgb2JqZWN0ID0gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBJRSA8IDkgd2l0aCBlczYtc2hpbS5cbmlmIChlbnVtZXJhdGUgJiYgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAndmFsdWVPZic6IDEgfSwgJ3ZhbHVlT2YnKSkge1xuICBiYXNlS2V5c0luID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIGl0ZXJhdG9yVG9BcnJheShlbnVtZXJhdGUob2JqZWN0KSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXNJbjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZUtleXNJbi5qc1xuICoqIG1vZHVsZSBpZCA9IDk4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksXG4gICAgYmFzZU1lcmdlRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZURlZXAnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lcmdlYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgbWVyZ2VkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spIHtcbiAgaWYgKG9iamVjdCA9PT0gc291cmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBwcm9wcyA9IChpc0FycmF5KHNvdXJjZSkgfHwgaXNUeXBlZEFycmF5KHNvdXJjZSkpXG4gICAgPyB1bmRlZmluZWRcbiAgICA6IGtleXNJbihzb3VyY2UpO1xuXG4gIGFycmF5RWFjaChwcm9wcyB8fCBzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHNyY1ZhbHVlO1xuICAgICAgc3JjVmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNZXJnZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZU1lcmdlLmpzXG4gKiogbW9kdWxlIGlkID0gOTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGJhc2VDbG9uZSA9IHJlcXVpcmUoJy4vX2Jhc2VDbG9uZScpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKSxcbiAgICBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vaXNQbGFpbk9iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksXG4gICAgdG9QbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vdG9QbGFpbk9iamVjdCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBtZXJnZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWQgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgc3JjVmFsdWUgPSBzb3VyY2Vba2V5XSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FycmF5KHNyY1ZhbHVlKSB8fCBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpKSB7XG4gICAgICBpZiAoaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBiYXNlQ2xvbmUoc3JjVmFsdWUsICFjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gdG9QbGFpbk9iamVjdChvYmpWYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IChzcmNJbmRleCAmJiBpc0Z1bmN0aW9uKG9ialZhbHVlKSkpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBiYXNlQ2xvbmUoc3JjVmFsdWUsICFjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHN0YWNrLnNldChzcmNWYWx1ZSwgbmV3VmFsdWUpO1xuXG4gIGlmIChpc0NvbW1vbikge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNZXJnZURlZXA7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VNZXJnZURlZXAuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhcnJheVJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5UmVkdWNlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucGlja2Agd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gKiBwcm9wZXJ0eSBuYW1lcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwcm9wcykge1xuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgcmV0dXJuIGFycmF5UmVkdWNlKHByb3BzLCBmdW5jdGlvbihyZXN1bHQsIGtleSkge1xuICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICByZXN1bHRba2V5XSA9IG9iamVjdFtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVBpY2s7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VQaWNrLmpzXG4gKiogbW9kdWxlIGlkID0gMTAxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzXG4gKiogbW9kdWxlIGlkID0gMTAyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUaW1lcztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZVRpbWVzLmpzXG4gKiogbW9kdWxlIGlkID0gMTAzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZ2xvYmFsIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7bnVsbHxPYmplY3R9IFJldHVybnMgYHZhbHVlYCBpZiBpdCdzIGEgZ2xvYmFsIG9iamVjdCwgZWxzZSBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrR2xvYmFsKHZhbHVlKSB7XG4gIHJldHVybiAodmFsdWUgJiYgdmFsdWUuT2JqZWN0ID09PSBPYmplY3QpID8gdmFsdWUgOiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrR2xvYmFsO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19jaGVja0dsb2JhbC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihidWZmZXIubGVuZ3RoKTtcbiAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUJ1ZmZlcjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY2xvbmVCdWZmZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhZGRNYXBFbnRyeSA9IHJlcXVpcmUoJy4vX2FkZE1hcEVudHJ5JyksXG4gICAgYXJyYXlSZWR1Y2UgPSByZXF1aXJlKCcuL19hcnJheVJlZHVjZScpLFxuICAgIG1hcFRvQXJyYXkgPSByZXF1aXJlKCcuL19tYXBUb0FycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgbWFwLlxuICovXG5mdW5jdGlvbiBjbG9uZU1hcChtYXApIHtcbiAgcmV0dXJuIGFycmF5UmVkdWNlKG1hcFRvQXJyYXkobWFwKSwgYWRkTWFwRW50cnksIG5ldyBtYXAuY29uc3RydWN0b3IpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lTWFwO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19jbG9uZU1hcC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY2xvbmVSZWdFeHAuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhZGRTZXRFbnRyeSA9IHJlcXVpcmUoJy4vX2FkZFNldEVudHJ5JyksXG4gICAgYXJyYXlSZWR1Y2UgPSByZXF1aXJlKCcuL19hcnJheVJlZHVjZScpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBzZXRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc2V0LlxuICovXG5mdW5jdGlvbiBjbG9uZVNldChzZXQpIHtcbiAgcmV0dXJuIGFycmF5UmVkdWNlKHNldFRvQXJyYXkoc2V0KSwgYWRkU2V0RW50cnksIG5ldyBzZXQuY29uc3RydWN0b3IpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU2V0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19jbG9uZVNldC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVTeW1ib2w7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Nsb25lU3ltYm9sLmpzXG4gKiogbW9kdWxlIGlkID0gMTA5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVR5cGVkQXJyYXk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qc1xuICoqIG1vZHVsZSBpZCA9IDExMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGNvcHlPYmplY3RgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBmdW5jdGlvbiB0b1xuICogY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3RXaXRoKHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiBzb3VyY2Vba2V5XTtcblxuICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5T2JqZWN0V2l0aDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY29weU9iamVjdFdpdGguanNcbiAqKiBtb2R1bGUgaWQgPSAxMTFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyk7XG5cbi8qKlxuICogQ29waWVzIG93biBzeW1ib2wgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2NvcHlTeW1ib2xzLmpzXG4gKiogbW9kdWxlIGlkID0gMTEyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpLFxuICAgIHJlc3QgPSByZXF1aXJlKCcuL3Jlc3QnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5hc3NpZ25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25lciBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihhc3NpZ25lcikge1xuICByZXR1cm4gcmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2NyZWF0ZUFzc2lnbmVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTEzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzXG4gKiogbW9kdWxlIGlkID0gMTE0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSB2YWx1ZSBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGF2b2lkIGEgW0pJVCBidWddKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OTIpXG4gKiB0aGF0IGFmZmVjdHMgU2FmYXJpIG9uIGF0IGxlYXN0IGlPUyA4LjEtOC4zIEFSTTY0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgXCJsZW5ndGhcIiB2YWx1ZS5cbiAqL1xudmFyIGdldExlbmd0aCA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TGVuZ3RoO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19nZXRMZW5ndGguanNcbiAqKiBtb2R1bGUgaWQgPSAxMTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIHN5bWJvbCBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzIHx8IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gW107XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2dldFN5bWJvbHMuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBtYXBDdG9yU3RyaW5nID0gTWFwID8gZnVuY1RvU3RyaW5nLmNhbGwoTWFwKSA6ICcnLFxuICAgIHNldEN0b3JTdHJpbmcgPSBTZXQgPyBmdW5jVG9TdHJpbmcuY2FsbChTZXQpIDogJycsXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSBXZWFrTWFwID8gZnVuY1RvU3RyaW5nLmNhbGwoV2Vha01hcCkgOiAnJztcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0VGFnKHZhbHVlKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIElFIDExIHByb3ZpZGluZyBgdG9TdHJpbmdUYWdgIHZhbHVlcyBmb3IgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLlxuaWYgKChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IG51bGwsXG4gICAgICAgIGN0b3JTdHJpbmcgPSB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nID8gZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgOiAnJztcblxuICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fZ2V0VGFnLmpzXG4gKiogbW9kdWxlIGlkID0gMTE3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgaGFzaEhhcyA9IHJlcXVpcmUoJy4vX2hhc2hIYXMnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoaGFzaCwga2V5KSB7XG4gIHJldHVybiBoYXNoSGFzKGhhc2gsIGtleSkgJiYgZGVsZXRlIGhhc2hba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoRGVsZXRlO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19oYXNoRGVsZXRlLmpzXG4gKiogbW9kdWxlIGlkID0gMTE4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChoYXNoLCBrZXkpIHtcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBoYXNoW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaGFzaCwga2V5KSA/IGhhc2hba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19oYXNoR2V0LmpzXG4gKiogbW9kdWxlIGlkID0gMTE5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGhhc2gsIGtleSwgdmFsdWUpIHtcbiAgaGFzaFtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaFNldDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faGFzaFNldC5qc1xuICoqIG1vZHVsZSBpZCA9IDEyMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFycmF5LmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgLy8gQWRkIHByb3BlcnRpZXMgYXNzaWduZWQgYnkgYFJlZ0V4cCNleGVjYC5cbiAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICByZXN1bHQuaW5kZXggPSBhcnJheS5pbmRleDtcbiAgICByZXN1bHQuaW5wdXQgPSBhcnJheS5pbnB1dDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUFycmF5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qc1xuICoqIG1vZHVsZSBpZCA9IDEyMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyksXG4gICAgY2xvbmVNYXAgPSByZXF1aXJlKCcuL19jbG9uZU1hcCcpLFxuICAgIGNsb25lUmVnRXhwID0gcmVxdWlyZSgnLi9fY2xvbmVSZWdFeHAnKSxcbiAgICBjbG9uZVNldCA9IHJlcXVpcmUoJy4vX2Nsb25lU2V0JyksXG4gICAgY2xvbmVTeW1ib2wgPSByZXF1aXJlKCcuL19jbG9uZVN5bWJvbCcpLFxuICAgIGNsb25lVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Nsb25lVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICByZXR1cm4gY2xvbmVNYXAob2JqZWN0KTtcblxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTZXQob2JqZWN0KTtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbml0Q2xvbmVCeVRhZztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faW5pdENsb25lQnlUYWcuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lT2JqZWN0KG9iamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlT2Yob2JqZWN0KSlcbiAgICA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZU9iamVjdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faW5pdENsb25lT2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMTIzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdCkpIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faXNJdGVyYXRlZUNhbGwuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29udmVydHMgYGl0ZXJhdG9yYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGl0ZXJhdG9yIFRoZSBpdGVyYXRvciB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGl0ZXJhdG9yVG9BcnJheShpdGVyYXRvcikge1xuICB2YXIgZGF0YSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICghKGRhdGEgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdG9yVG9BcnJheTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faXRlcmF0b3JUb0FycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gMTI1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgSGFzaCA9IHJlcXVpcmUoJy4vX0hhc2gnKSxcbiAgICBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogTWFwID8gbmV3IE1hcCA6IFtdLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENsZWFyO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19tYXBDbGVhci5qc1xuICoqIG1vZHVsZSBpZCA9IDEyNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIGFzc29jRGVsZXRlID0gcmVxdWlyZSgnLi9fYXNzb2NEZWxldGUnKSxcbiAgICBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLFxuICAgIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChpc0tleWFibGUoa2V5KSkge1xuICAgIHJldHVybiBoYXNoRGVsZXRlKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBkYXRhLnN0cmluZyA6IGRhdGEuaGFzaCwga2V5KTtcbiAgfVxuICByZXR1cm4gTWFwID8gZGF0YS5tYXBbJ2RlbGV0ZSddKGtleSkgOiBhc3NvY0RlbGV0ZShkYXRhLm1hcCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBEZWxldGU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX21hcERlbGV0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEyN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIGFzc29jR2V0ID0gcmVxdWlyZSgnLi9fYXNzb2NHZXQnKSxcbiAgICBoYXNoR2V0ID0gcmVxdWlyZSgnLi9faGFzaEdldCcpLFxuICAgIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChpc0tleWFibGUoa2V5KSkge1xuICAgIHJldHVybiBoYXNoR2V0KHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBkYXRhLnN0cmluZyA6IGRhdGEuaGFzaCwga2V5KTtcbiAgfVxuICByZXR1cm4gTWFwID8gZGF0YS5tYXAuZ2V0KGtleSkgOiBhc3NvY0dldChkYXRhLm1hcCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBHZXQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX21hcEdldC5qc1xuICoqIG1vZHVsZSBpZCA9IDEyOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIGFzc29jSGFzID0gcmVxdWlyZSgnLi9fYXNzb2NIYXMnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAoaXNLZXlhYmxlKGtleSkpIHtcbiAgICByZXR1cm4gaGFzaEhhcyh0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gZGF0YS5zdHJpbmcgOiBkYXRhLmhhc2gsIGtleSk7XG4gIH1cbiAgcmV0dXJuIE1hcCA/IGRhdGEubWFwLmhhcyhrZXkpIDogYXNzb2NIYXMoZGF0YS5tYXAsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwSGFzO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19tYXBIYXMuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBNYXAgPSByZXF1aXJlKCcuL19NYXAnKSxcbiAgICBhc3NvY1NldCA9IHJlcXVpcmUoJy4vX2Fzc29jU2V0JyksXG4gICAgaGFzaFNldCA9IHJlcXVpcmUoJy4vX2hhc2hTZXQnKSxcbiAgICBpc0tleWFibGUgPSByZXF1aXJlKCcuL19pc0tleWFibGUnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gbWFwU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICBpZiAoaXNLZXlhYmxlKGtleSkpIHtcbiAgICBoYXNoU2V0KHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBkYXRhLnN0cmluZyA6IGRhdGEuaGFzaCwga2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoTWFwKSB7XG4gICAgZGF0YS5tYXAuc2V0KGtleSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGFzc29jU2V0KGRhdGEubWFwLCBrZXksIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBTZXQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX21hcFNldC5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwVG9BcnJheTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fbWFwVG9BcnJheS5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0VG9BcnJheTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fc2V0VG9BcnJheS5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBTdGFja1xuICovXG5mdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0geyAnYXJyYXknOiBbXSwgJ21hcCc6IG51bGwgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0NsZWFyO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19zdGFja0NsZWFyLmpzXG4gKiogbW9kdWxlIGlkID0gMTMzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYXNzb2NEZWxldGUgPSByZXF1aXJlKCcuL19hc3NvY0RlbGV0ZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgYXJyYXkgPSBkYXRhLmFycmF5O1xuXG4gIHJldHVybiBhcnJheSA/IGFzc29jRGVsZXRlKGFycmF5LCBrZXkpIDogZGF0YS5tYXBbJ2RlbGV0ZSddKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzXG4gKiogbW9kdWxlIGlkID0gMTM0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYXNzb2NHZXQgPSByZXF1aXJlKCcuL19hc3NvY0dldCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgYXJyYXkgPSBkYXRhLmFycmF5O1xuXG4gIHJldHVybiBhcnJheSA/IGFzc29jR2V0KGFycmF5LCBrZXkpIDogZGF0YS5tYXAuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX3N0YWNrR2V0LmpzXG4gKiogbW9kdWxlIGlkID0gMTM1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYXNzb2NIYXMgPSByZXF1aXJlKCcuL19hc3NvY0hhcycpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGFycmF5ID0gZGF0YS5hcnJheTtcblxuICByZXR1cm4gYXJyYXkgPyBhc3NvY0hhcyhhcnJheSwga2V5KSA6IGRhdGEubWFwLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19zdGFja0hhcy5qc1xuICoqIG1vZHVsZSBpZCA9IDEzNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKSxcbiAgICBhc3NvY1NldCA9IHJlcXVpcmUoJy4vX2Fzc29jU2V0Jyk7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGFycmF5ID0gZGF0YS5hcnJheTtcblxuICBpZiAoYXJyYXkpIHtcbiAgICBpZiAoYXJyYXkubGVuZ3RoIDwgKExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgYXNzb2NTZXQoYXJyYXksIGtleSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhLmFycmF5ID0gbnVsbDtcbiAgICAgIGRhdGEubWFwID0gbmV3IE1hcENhY2hlKGFycmF5KTtcbiAgICB9XG4gIH1cbiAgdmFyIG1hcCA9IGRhdGEubWFwO1xuICBpZiAobWFwKSB7XG4gICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja1NldDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fc3RhY2tTZXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxMzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGZyb20gdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICogdmFyIGdldHRlciA9IF8uY29uc3RhbnQob2JqZWN0KTtcbiAqXG4gKiBnZXR0ZXIoKSA9PT0gb2JqZWN0O1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2NvbnN0YW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTM4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgY29uc3RhbnQgPSByZXF1aXJlKCcuL2NvbnN0YW50JyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHZhbHVlcyBhcmUgb2YgdGhlIGxhbmd1YWdlIHR5cGUgYE9iamVjdGAuICovXG52YXIgb2JqZWN0VHlwZXMgPSB7XG4gICdmdW5jdGlvbic6IHRydWUsXG4gICdvYmplY3QnOiB0cnVlXG59O1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gKG9iamVjdFR5cGVzW3R5cGVvZiBleHBvcnRzXSAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlKVxuICA/IGV4cG9ydHNcbiAgOiB1bmRlZmluZWQ7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gKG9iamVjdFR5cGVzW3R5cGVvZiBtb2R1bGVdICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlKVxuICA/IG1vZHVsZVxuICA6IHVuZGVmaW5lZDtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gKGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cylcbiAgPyBmcmVlRXhwb3J0c1xuICA6IHVuZGVmaW5lZDtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gIUJ1ZmZlciA/IGNvbnN0YW50KGZhbHNlKSA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEJ1ZmZlcjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCdWZmZXI7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNCdWZmZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMzlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNIb3N0T2JqZWN0ID0gcmVxdWlyZSgnLi9faXNIb3N0T2JqZWN0JyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1wYXR0ZXJucykuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSA+IDUpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOYXRpdmUoXyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICByZXR1cm4gcmVJc05hdGl2ZS50ZXN0KGZ1bmNUb1N0cmluZy5jYWxsKHZhbHVlKSk7XG4gIH1cbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICAoaXNIb3N0T2JqZWN0KHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3IpLnRlc3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTmF0aXZlO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2lzTmF0aXZlLmpzXG4gKiogbW9kdWxlIGlkID0gMTQwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgaXNIb3N0T2JqZWN0ID0gcmVxdWlyZSgnLi9faXNIb3N0T2JqZWN0JyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZSBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHxcbiAgICAgIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpICE9IG9iamVjdFRhZyB8fCBpc0hvc3RPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmXG4gICAgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiYgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMTQxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N0cmluZygnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N0cmluZygxKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAoIWlzQXJyYXkodmFsdWUpICYmIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3RyaW5nVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmluZztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc1N0cmluZy5qc1xuICoqIG1vZHVsZSBpZCA9IDE0MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGJhc2VGbGF0dGVuID0gcmVxdWlyZSgnLi9fYmFzZUZsYXR0ZW4nKSxcbiAgICBiYXNlUGljayA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrJyksXG4gICAgcmVzdCA9IHJlcXVpcmUoJy4vcmVzdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwcm9wc10gVGhlIHByb3BlcnR5IG5hbWVzIHRvIHBpY2ssIHNwZWNpZmllZFxuICogIGluZGl2aWR1YWxseSBvciBpbiBhcnJheXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAqXG4gKiBfLnBpY2sob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICovXG52YXIgcGljayA9IHJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwcm9wcykge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB7fSA6IGJhc2VQaWNrKG9iamVjdCwgYmFzZUZsYXR0ZW4ocHJvcHMsIDEpKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBpY2s7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvcGljay5qc1xuICoqIG1vZHVsZSBpZCA9IDE0M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIGxvb3NlbHkgYmFzZWQgb24gW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMycpO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiB0b0ludGVnZXIodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHZhciByZW1haW5kZXIgPSB2YWx1ZSAlIDE7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyAocmVtYWluZGVyID8gdmFsdWUgLSByZW1haW5kZXIgOiB2YWx1ZSkgOiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvSW50ZWdlcjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC90b0ludGVnZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbSA9IC9eXFxzK3xcXHMrJC9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSBpc0Z1bmN0aW9uKHZhbHVlLnZhbHVlT2YpID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlVHJpbSwgJycpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC90b051bWJlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE0NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGVcbiAqIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvdG9QbGFpbk9iamVjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDE0NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLypcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2VcbiAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2VcbiAqICB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbi8vIFNoaW1taW5nIHN0YXJ0cyBoZXJlLlxuKGZ1bmN0aW9uKCkge1xuICAvLyBVdGlscy5cbiAgdmFyIGxvZ2dpbmcgPSByZXF1aXJlKCcuL3V0aWxzJykubG9nO1xuICB2YXIgYnJvd3NlckRldGFpbHMgPSByZXF1aXJlKCcuL3V0aWxzJykuYnJvd3NlckRldGFpbHM7XG4gIC8vIEV4cG9ydCB0byB0aGUgYWRhcHRlciBnbG9iYWwgb2JqZWN0IHZpc2libGUgaW4gdGhlIGJyb3dzZXIuXG4gIG1vZHVsZS5leHBvcnRzLmJyb3dzZXJEZXRhaWxzID0gYnJvd3NlckRldGFpbHM7XG4gIG1vZHVsZS5leHBvcnRzLmV4dHJhY3RWZXJzaW9uID0gcmVxdWlyZSgnLi91dGlscycpLmV4dHJhY3RWZXJzaW9uO1xuICBtb2R1bGUuZXhwb3J0cy5kaXNhYmxlTG9nID0gcmVxdWlyZSgnLi91dGlscycpLmRpc2FibGVMb2c7XG5cbiAgLy8gVW5jb21tZW50IGlmIHlvdSBkbyBub3Qgd2FudCBhbnkgbG9nZ2luZyBhdCBhbGwgaW5jbHVkaW5nIHRoZSBzd2l0Y2hcbiAgLy8gc3RhdGVtZW50IGJlbG93LiBDYW4gYWxzbyBiZSB0dXJuZWQgb2ZmIGluIHRoZSBicm93c2VyIHZpYVxuICAvLyBhZGFwdGVyLmRpc2FibGVMb2codHJ1ZSkgYnV0IHRoZW4gbG9nZ2luZyBmcm9tIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGJlbG93XG4gIC8vIHdpbGwgc3RpbGwgYXBwZWFyLlxuICAvL3JlcXVpcmUoJy4vdXRpbHMnKS5kaXNhYmxlTG9nKHRydWUpO1xuXG4gIC8vIEJyb3dzZXIgc2hpbXMuXG4gIHZhciBjaHJvbWVTaGltID0gcmVxdWlyZSgnLi9jaHJvbWUvY2hyb21lX3NoaW0nKSB8fCBudWxsO1xuICB2YXIgZWRnZVNoaW0gPSByZXF1aXJlKCcuL2VkZ2UvZWRnZV9zaGltJykgfHwgbnVsbDtcbiAgdmFyIGZpcmVmb3hTaGltID0gcmVxdWlyZSgnLi9maXJlZm94L2ZpcmVmb3hfc2hpbScpIHx8IG51bGw7XG5cbiAgLy8gU2hpbSBicm93c2VyIGlmIGZvdW5kLlxuICBzd2l0Y2ggKGJyb3dzZXJEZXRhaWxzLmJyb3dzZXIpIHtcbiAgICBjYXNlICdjaHJvbWUnOlxuICAgICAgaWYgKCFjaHJvbWVTaGltIHx8ICFjaHJvbWVTaGltLnNoaW1QZWVyQ29ubmVjdGlvbikge1xuICAgICAgICBsb2dnaW5nKCdDaHJvbWUgc2hpbSBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcyBhZGFwdGVyIHJlbGVhc2UuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxvZ2dpbmcoJ2FkYXB0ZXIuanMgc2hpbW1pbmcgY2hyb21lIScpO1xuICAgICAgLy8gRXhwb3J0IHRvIHRoZSBhZGFwdGVyIGdsb2JhbCBvYmplY3QgdmlzaWJsZSBpbiB0aGUgYnJvd3Nlci5cbiAgICAgIG1vZHVsZS5leHBvcnRzLmJyb3dzZXJTaGltID0gY2hyb21lU2hpbTtcblxuICAgICAgY2hyb21lU2hpbS5zaGltR2V0VXNlck1lZGlhKCk7XG4gICAgICBjaHJvbWVTaGltLnNoaW1Tb3VyY2VPYmplY3QoKTtcbiAgICAgIGNocm9tZVNoaW0uc2hpbVBlZXJDb25uZWN0aW9uKCk7XG4gICAgICBjaHJvbWVTaGltLnNoaW1PblRyYWNrKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlZGdlJzpcbiAgICAgIGlmICghZWRnZVNoaW0gfHwgIWVkZ2VTaGltLnNoaW1QZWVyQ29ubmVjdGlvbikge1xuICAgICAgICBsb2dnaW5nKCdNUyBlZGdlIHNoaW0gaXMgbm90IGluY2x1ZGVkIGluIHRoaXMgYWRhcHRlciByZWxlYXNlLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2dnaW5nKCdhZGFwdGVyLmpzIHNoaW1taW5nIGVkZ2UhJyk7XG4gICAgICAvLyBFeHBvcnQgdG8gdGhlIGFkYXB0ZXIgZ2xvYmFsIG9iamVjdCB2aXNpYmxlIGluIHRoZSBicm93c2VyLlxuICAgICAgbW9kdWxlLmV4cG9ydHMuYnJvd3NlclNoaW0gPSBlZGdlU2hpbTtcblxuICAgICAgZWRnZVNoaW0uc2hpbVBlZXJDb25uZWN0aW9uKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmaXJlZm94JzpcbiAgICAgIGlmICghZmlyZWZveFNoaW0gfHwgIWZpcmVmb3hTaGltLnNoaW1QZWVyQ29ubmVjdGlvbikge1xuICAgICAgICBsb2dnaW5nKCdGaXJlZm94IHNoaW0gaXMgbm90IGluY2x1ZGVkIGluIHRoaXMgYWRhcHRlciByZWxlYXNlLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2dnaW5nKCdhZGFwdGVyLmpzIHNoaW1taW5nIGZpcmVmb3ghJyk7XG4gICAgICAvLyBFeHBvcnQgdG8gdGhlIGFkYXB0ZXIgZ2xvYmFsIG9iamVjdCB2aXNpYmxlIGluIHRoZSBicm93c2VyLlxuICAgICAgbW9kdWxlLmV4cG9ydHMuYnJvd3NlclNoaW0gPSBmaXJlZm94U2hpbTtcblxuICAgICAgZmlyZWZveFNoaW0uc2hpbUdldFVzZXJNZWRpYSgpO1xuICAgICAgZmlyZWZveFNoaW0uc2hpbVNvdXJjZU9iamVjdCgpO1xuICAgICAgZmlyZWZveFNoaW0uc2hpbVBlZXJDb25uZWN0aW9uKCk7XG4gICAgICBmaXJlZm94U2hpbS5zaGltT25UcmFjaygpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGxvZ2dpbmcoJ1Vuc3VwcG9ydGVkIGJyb3dzZXIhJyk7XG4gIH1cbn0pKCk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvYWRhcHRlcl9jb3JlLmpzXG4gKiogbW9kdWxlIGlkID0gMTQ3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKlxuICogIENvcHlyaWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZVxuICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZVxuICogIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztcbnZhciBsb2dnaW5nID0gcmVxdWlyZSgnLi4vdXRpbHMuanMnKS5sb2c7XG52YXIgYnJvd3NlckRldGFpbHMgPSByZXF1aXJlKCcuLi91dGlscy5qcycpLmJyb3dzZXJEZXRhaWxzO1xuXG52YXIgY2hyb21lU2hpbSA9IHtcbiAgc2hpbU9uVHJhY2s6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JyAmJiB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gJiYgISgnb250cmFjaycgaW5cbiAgICAgICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLCAnb250cmFjaycsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuX29udHJhY2s7IH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24oZikge1xuICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgICBpZiAodGhpcy5fb250cmFjaykge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRoaXMuX29udHJhY2spO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0aGlzLl9vbnRyYWNrcG9seSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0aGlzLl9vbnRyYWNrID0gZik7XG4gICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0aGlzLl9vbnRyYWNrcG9seSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIC8vIG9uYWRkc3RyZWFtIGRvZXMgbm90IGZpcmUgd2hlbiBhIHRyYWNrIGlzIGFkZGVkIHRvIGFuIGV4aXN0aW5nIHN0cmVhbS5cbiAgICAgICAgICAgIC8vIGJ1dCBzdHJlYW0ub25hZGR0cmFjayBpcyBpbXBsZW1lbnRlZCBzbyB3ZSB1c2UgdGhhdFxuICAgICAgICAgICAgZS5zdHJlYW0uYWRkRXZlbnRMaXN0ZW5lcignYWRkdHJhY2snLCBmdW5jdGlvbih0ZSkge1xuICAgICAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ3RyYWNrJyk7XG4gICAgICAgICAgICAgIGV2ZW50LnRyYWNrID0gdGUudHJhY2s7XG4gICAgICAgICAgICAgIGV2ZW50LnJlY2VpdmVyID0ge3RyYWNrOiB0ZS50cmFja307XG4gICAgICAgICAgICAgIGV2ZW50LnN0cmVhbXMgPSBbZS5zdHJlYW1dO1xuICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlLnN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKGZ1bmN0aW9uKHRyYWNrKSB7XG4gICAgICAgICAgICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgndHJhY2snKTtcbiAgICAgICAgICAgICAgZXZlbnQudHJhY2sgPSB0cmFjaztcbiAgICAgICAgICAgICAgZXZlbnQucmVjZWl2ZXIgPSB7dHJhY2s6IHRyYWNrfTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RyZWFtcyA9IFtlLnN0cmVhbV07XG4gICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgICAgICB9LmJpbmQodGhpcykpO1xuICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICBzaGltU291cmNlT2JqZWN0OiBmdW5jdGlvbigpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh3aW5kb3cuSFRNTE1lZGlhRWxlbWVudCAmJlxuICAgICAgICAhKCdzcmNPYmplY3QnIGluIHdpbmRvdy5IVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSkpIHtcbiAgICAgICAgLy8gU2hpbSB0aGUgc3JjT2JqZWN0IHByb3BlcnR5LCBvbmNlLCB3aGVuIEhUTUxNZWRpYUVsZW1lbnQgaXMgZm91bmQuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3cuSFRNTE1lZGlhRWxlbWVudC5wcm90b3R5cGUsICdzcmNPYmplY3QnLCB7XG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zcmNPYmplY3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgLy8gVXNlIF9zcmNPYmplY3QgYXMgYSBwcml2YXRlIHByb3BlcnR5IGZvciB0aGlzIHNoaW1cbiAgICAgICAgICAgIHRoaXMuX3NyY09iamVjdCA9IHN0cmVhbTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNyYykge1xuICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMuc3JjKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgICAgICAgICAgdGhpcy5zcmMgPSAnJztcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHN0cmVhbSk7XG4gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlY3JlYXRlIHRoZSBibG9iIHVybCB3aGVuIGEgdHJhY2sgaXMgYWRkZWQgb3IgcmVtb3ZlZC5cbiAgICAgICAgICAgIC8vIERvaW5nIGl0IG1hbnVhbGx5IHNpbmNlIHdlIHdhbnQgdG8gYXZvaWQgYSByZWN1cnNpb24uXG4gICAgICAgICAgICBzdHJlYW0uYWRkRXZlbnRMaXN0ZW5lcignYWRkdHJhY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgaWYgKHNlbGYuc3JjKSB7XG4gICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChzZWxmLnNyYyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2VsZi5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHN0cmVhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHN0cmVhbS5hZGRFdmVudExpc3RlbmVyKCdyZW1vdmV0cmFjaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBpZiAoc2VsZi5zcmMpIHtcbiAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHNlbGYuc3JjKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZWxmLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc3RyZWFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHNoaW1QZWVyQ29ubmVjdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgLy8gVGhlIFJUQ1BlZXJDb25uZWN0aW9uIG9iamVjdC5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gPSBmdW5jdGlvbihwY0NvbmZpZywgcGNDb25zdHJhaW50cykge1xuICAgICAgLy8gVHJhbnNsYXRlIGljZVRyYW5zcG9ydFBvbGljeSB0byBpY2VUcmFuc3BvcnRzLFxuICAgICAgLy8gc2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avd2VicnRjL2lzc3Vlcy9kZXRhaWw/aWQ9NDg2OVxuICAgICAgbG9nZ2luZygnUGVlckNvbm5lY3Rpb24nKTtcbiAgICAgIGlmIChwY0NvbmZpZyAmJiBwY0NvbmZpZy5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgICAgcGNDb25maWcuaWNlVHJhbnNwb3J0cyA9IHBjQ29uZmlnLmljZVRyYW5zcG9ydFBvbGljeTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHBjQ29uZmlnLCBwY0NvbnN0cmFpbnRzKTsgLy8ganNjczppZ25vcmUgcmVxdWlyZUNhcGl0YWxpemVkQ29uc3RydWN0b3JzXG4gICAgICB2YXIgb3JpZ0dldFN0YXRzID0gcGMuZ2V0U3RhdHMuYmluZChwYyk7XG4gICAgICBwYy5nZXRTdGF0cyA9IGZ1bmN0aW9uKHNlbGVjdG9yLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsgLy8ganNoaW50IGlnbm9yZTogbGluZVxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gICAgICAgIC8vIElmIHNlbGVjdG9yIGlzIGEgZnVuY3Rpb24gdGhlbiB3ZSBhcmUgaW4gdGhlIG9sZCBzdHlsZSBzdGF0cyBzbyBqdXN0XG4gICAgICAgIC8vIHBhc3MgYmFjayB0aGUgb3JpZ2luYWwgZ2V0U3RhdHMgZm9ybWF0IHRvIGF2b2lkIGJyZWFraW5nIG9sZCB1c2Vycy5cbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBvcmlnR2V0U3RhdHMoc2VsZWN0b3IsIHN1Y2Nlc3NDYWxsYmFjayk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZml4Q2hyb21lU3RhdHNfID0gZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgICB2YXIgc3RhbmRhcmRSZXBvcnQgPSB7fTtcbiAgICAgICAgICB2YXIgcmVwb3J0cyA9IHJlc3BvbnNlLnJlc3VsdCgpO1xuICAgICAgICAgIHJlcG9ydHMuZm9yRWFjaChmdW5jdGlvbihyZXBvcnQpIHtcbiAgICAgICAgICAgIHZhciBzdGFuZGFyZFN0YXRzID0ge1xuICAgICAgICAgICAgICBpZDogcmVwb3J0LmlkLFxuICAgICAgICAgICAgICB0aW1lc3RhbXA6IHJlcG9ydC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgIHR5cGU6IHJlcG9ydC50eXBlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVwb3J0Lm5hbWVzKCkuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgICAgICAgIHN0YW5kYXJkU3RhdHNbbmFtZV0gPSByZXBvcnQuc3RhdChuYW1lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc3RhbmRhcmRSZXBvcnRbc3RhbmRhcmRTdGF0cy5pZF0gPSBzdGFuZGFyZFN0YXRzO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHN0YW5kYXJkUmVwb3J0O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICB2YXIgc3VjY2Vzc0NhbGxiYWNrV3JhcHBlcl8gPSBmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgICAgYXJnc1sxXShmaXhDaHJvbWVTdGF0c18ocmVzcG9uc2UpKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIG9yaWdHZXRTdGF0cy5hcHBseSh0aGlzLCBbc3VjY2Vzc0NhbGxiYWNrV3JhcHBlcl8sIGFyZ3VtZW50c1swXV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcHJvbWlzZS1zdXBwb3J0XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgc2VsZWN0b3IgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG9yaWdHZXRTdGF0cy5hcHBseShzZWxmLCBbXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUuYXBwbHkobnVsbCwgW2ZpeENocm9tZVN0YXRzXyhyZXNwb25zZSldKTtcbiAgICAgICAgICAgICAgICB9LCByZWplY3RdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3JpZ0dldFN0YXRzLmFwcGx5KHNlbGYsIFtyZXNvbHZlLCByZWplY3RdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHBjO1xuICAgIH07XG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSA9IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZTtcblxuICAgIC8vIHdyYXAgc3RhdGljIG1ldGhvZHMuIEN1cnJlbnRseSBqdXN0IGdlbmVyYXRlQ2VydGlmaWNhdGUuXG4gICAgaWYgKHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uLmdlbmVyYXRlQ2VydGlmaWNhdGUpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24sICdnZW5lcmF0ZUNlcnRpZmljYXRlJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gd2Via2l0UlRDUGVlckNvbm5lY3Rpb24uZ2VuZXJhdGVDZXJ0aWZpY2F0ZS5hcHBseShudWxsLFxuICAgICAgICAgICAgICAgIGFyZ3VtZW50cyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbi5nZW5lcmF0ZUNlcnRpZmljYXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gYWRkIHByb21pc2Ugc3VwcG9ydFxuICAgIFsnY3JlYXRlT2ZmZXInLCAnY3JlYXRlQW5zd2VyJ10uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHZhciBuYXRpdmVNZXRob2QgPSB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGVbbWV0aG9kXTtcbiAgICAgIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxIHx8IChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICB0eXBlb2YoYXJndW1lbnRzWzBdKSA9PT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgdmFyIG9wdHMgPSBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkO1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIG5hdGl2ZU1ldGhvZC5hcHBseShzZWxmLCBbcmVzb2x2ZSwgcmVqZWN0LCBvcHRzXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG5hdGl2ZU1ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgWydzZXRMb2NhbERlc2NyaXB0aW9uJywgJ3NldFJlbW90ZURlc2NyaXB0aW9uJyxcbiAgICAgICAgJ2FkZEljZUNhbmRpZGF0ZSddLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICB2YXIgbmF0aXZlTWV0aG9kID0gd2Via2l0UlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlW21ldGhvZF07XG4gICAgICB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgbmF0aXZlTWV0aG9kLmFwcGx5KHNlbGYsIFthcmdzWzBdLFxuICAgICAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgICAgICAgIGFyZ3NbMV0uYXBwbHkobnVsbCwgW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgICAgICAgIGFyZ3NbMl0uYXBwbHkobnVsbCwgW2Vycl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfSxcblxuICAvLyBBdHRhY2ggYSBtZWRpYSBzdHJlYW0gdG8gYW4gZWxlbWVudC5cbiAgYXR0YWNoTWVkaWFTdHJlYW06IGZ1bmN0aW9uKGVsZW1lbnQsIHN0cmVhbSkge1xuICAgIGxvZ2dpbmcoJ0RFUFJFQ0FURUQsIGF0dGFjaE1lZGlhU3RyZWFtIHdpbGwgc29vbiBiZSByZW1vdmVkLicpO1xuICAgIGlmIChicm93c2VyRGV0YWlscy52ZXJzaW9uID49IDQzKSB7XG4gICAgICBlbGVtZW50LnNyY09iamVjdCA9IHN0cmVhbTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LnNyYyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGVsZW1lbnQuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzdHJlYW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnaW5nKCdFcnJvciBhdHRhY2hpbmcgc3RyZWFtIHRvIGVsZW1lbnQuJyk7XG4gICAgfVxuICB9LFxuXG4gIHJlYXR0YWNoTWVkaWFTdHJlYW06IGZ1bmN0aW9uKHRvLCBmcm9tKSB7XG4gICAgbG9nZ2luZygnREVQUkVDQVRFRCwgcmVhdHRhY2hNZWRpYVN0cmVhbSB3aWxsIHNvb24gYmUgcmVtb3ZlZC4nKTtcbiAgICBpZiAoYnJvd3NlckRldGFpbHMudmVyc2lvbiA+PSA0Mykge1xuICAgICAgdG8uc3JjT2JqZWN0ID0gZnJvbS5zcmNPYmplY3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvLnNyYyA9IGZyb20uc3JjO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIEV4cG9zZSBwdWJsaWMgbWV0aG9kcy5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzaGltT25UcmFjazogY2hyb21lU2hpbS5zaGltT25UcmFjayxcbiAgc2hpbVNvdXJjZU9iamVjdDogY2hyb21lU2hpbS5zaGltU291cmNlT2JqZWN0LFxuICBzaGltUGVlckNvbm5lY3Rpb246IGNocm9tZVNoaW0uc2hpbVBlZXJDb25uZWN0aW9uLFxuICBzaGltR2V0VXNlck1lZGlhOiByZXF1aXJlKCcuL2dldHVzZXJtZWRpYScpLFxuICBhdHRhY2hNZWRpYVN0cmVhbTogY2hyb21lU2hpbS5hdHRhY2hNZWRpYVN0cmVhbSxcbiAgcmVhdHRhY2hNZWRpYVN0cmVhbTogY2hyb21lU2hpbS5yZWF0dGFjaE1lZGlhU3RyZWFtXG59O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2Nocm9tZS9jaHJvbWVfc2hpbS5qc1xuICoqIG1vZHVsZSBpZCA9IDE0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLypcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2VcbiAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2VcbiAqICB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7XG52YXIgbG9nZ2luZyA9IHJlcXVpcmUoJy4uL3V0aWxzLmpzJykubG9nO1xuXG4vLyBFeHBvc2UgcHVibGljIG1ldGhvZHMuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgY29uc3RyYWludHNUb0Nocm9tZV8gPSBmdW5jdGlvbihjKSB7XG4gICAgaWYgKHR5cGVvZiBjICE9PSAnb2JqZWN0JyB8fCBjLm1hbmRhdG9yeSB8fCBjLm9wdGlvbmFsKSB7XG4gICAgICByZXR1cm4gYztcbiAgICB9XG4gICAgdmFyIGNjID0ge307XG4gICAgT2JqZWN0LmtleXMoYykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgIGlmIChrZXkgPT09ICdyZXF1aXJlJyB8fCBrZXkgPT09ICdhZHZhbmNlZCcgfHwga2V5ID09PSAnbWVkaWFTb3VyY2UnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciByID0gKHR5cGVvZiBjW2tleV0gPT09ICdvYmplY3QnKSA/IGNba2V5XSA6IHtpZGVhbDogY1trZXldfTtcbiAgICAgIGlmIChyLmV4YWN0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHIuZXhhY3QgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHIubWluID0gci5tYXggPSByLmV4YWN0O1xuICAgICAgfVxuICAgICAgdmFyIG9sZG5hbWVfID0gZnVuY3Rpb24ocHJlZml4LCBuYW1lKSB7XG4gICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICByZXR1cm4gcHJlZml4ICsgbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChuYW1lID09PSAnZGV2aWNlSWQnKSA/ICdzb3VyY2VJZCcgOiBuYW1lO1xuICAgICAgfTtcbiAgICAgIGlmIChyLmlkZWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2Mub3B0aW9uYWwgPSBjYy5vcHRpb25hbCB8fCBbXTtcbiAgICAgICAgdmFyIG9jID0ge307XG4gICAgICAgIGlmICh0eXBlb2Ygci5pZGVhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBvY1tvbGRuYW1lXygnbWluJywga2V5KV0gPSByLmlkZWFsO1xuICAgICAgICAgIGNjLm9wdGlvbmFsLnB1c2gob2MpO1xuICAgICAgICAgIG9jID0ge307XG4gICAgICAgICAgb2Nbb2xkbmFtZV8oJ21heCcsIGtleSldID0gci5pZGVhbDtcbiAgICAgICAgICBjYy5vcHRpb25hbC5wdXNoKG9jKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvY1tvbGRuYW1lXygnJywga2V5KV0gPSByLmlkZWFsO1xuICAgICAgICAgIGNjLm9wdGlvbmFsLnB1c2gob2MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoci5leGFjdCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiByLmV4YWN0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICBjYy5tYW5kYXRvcnkgPSBjYy5tYW5kYXRvcnkgfHwge307XG4gICAgICAgIGNjLm1hbmRhdG9yeVtvbGRuYW1lXygnJywga2V5KV0gPSByLmV4YWN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgWydtaW4nLCAnbWF4J10uZm9yRWFjaChmdW5jdGlvbihtaXgpIHtcbiAgICAgICAgICBpZiAoclttaXhdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNjLm1hbmRhdG9yeSA9IGNjLm1hbmRhdG9yeSB8fCB7fTtcbiAgICAgICAgICAgIGNjLm1hbmRhdG9yeVtvbGRuYW1lXyhtaXgsIGtleSldID0gclttaXhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGMuYWR2YW5jZWQpIHtcbiAgICAgIGNjLm9wdGlvbmFsID0gKGNjLm9wdGlvbmFsIHx8IFtdKS5jb25jYXQoYy5hZHZhbmNlZCk7XG4gICAgfVxuICAgIHJldHVybiBjYztcbiAgfTtcblxuICB2YXIgZ2V0VXNlck1lZGlhXyA9IGZ1bmN0aW9uKGNvbnN0cmFpbnRzLCBvblN1Y2Nlc3MsIG9uRXJyb3IpIHtcbiAgICBpZiAoY29uc3RyYWludHMuYXVkaW8pIHtcbiAgICAgIGNvbnN0cmFpbnRzLmF1ZGlvID0gY29uc3RyYWludHNUb0Nocm9tZV8oY29uc3RyYWludHMuYXVkaW8pO1xuICAgIH1cbiAgICBpZiAoY29uc3RyYWludHMudmlkZW8pIHtcbiAgICAgIGNvbnN0cmFpbnRzLnZpZGVvID0gY29uc3RyYWludHNUb0Nocm9tZV8oY29uc3RyYWludHMudmlkZW8pO1xuICAgIH1cbiAgICBsb2dnaW5nKCdjaHJvbWU6ICcgKyBKU09OLnN0cmluZ2lmeShjb25zdHJhaW50cykpO1xuICAgIHJldHVybiBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBvblN1Y2Nlc3MsIG9uRXJyb3IpO1xuICB9O1xuICBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhID0gZ2V0VXNlck1lZGlhXztcblxuICAvLyBSZXR1cm5zIHRoZSByZXN1bHQgb2YgZ2V0VXNlck1lZGlhIGFzIGEgUHJvbWlzZS5cbiAgdmFyIGdldFVzZXJNZWRpYVByb21pc2VfID0gZnVuY3Rpb24oY29uc3RyYWludHMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCByZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKSB7XG4gICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyA9IHtnZXRVc2VyTWVkaWE6IGdldFVzZXJNZWRpYVByb21pc2VfLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGVEZXZpY2VzOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICAgIHZhciBraW5kcyA9IHthdWRpbzogJ2F1ZGlvaW5wdXQnLCB2aWRlbzogJ3ZpZGVvaW5wdXQnfTtcbiAgICAgICAgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcyhmdW5jdGlvbihkZXZpY2VzKSB7XG4gICAgICAgICAgcmVzb2x2ZShkZXZpY2VzLm1hcChmdW5jdGlvbihkZXZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7bGFiZWw6IGRldmljZS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAga2luZDoga2luZHNbZGV2aWNlLmtpbmRdLFxuICAgICAgICAgICAgICAgICAgICBkZXZpY2VJZDogZGV2aWNlLmlkLFxuICAgICAgICAgICAgICAgICAgICBncm91cElkOiAnJ307XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH19O1xuICB9XG5cbiAgLy8gQSBzaGltIGZvciBnZXRVc2VyTWVkaWEgbWV0aG9kIG9uIHRoZSBtZWRpYURldmljZXMgb2JqZWN0LlxuICAvLyBUT0RPKEthcHRlbkphbnNzb24pIHJlbW92ZSBvbmNlIGltcGxlbWVudGVkIGluIENocm9tZSBzdGFibGUuXG4gIGlmICghbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEpIHtcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSA9IGZ1bmN0aW9uKGNvbnN0cmFpbnRzKSB7XG4gICAgICByZXR1cm4gZ2V0VXNlck1lZGlhUHJvbWlzZV8oY29uc3RyYWludHMpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gRXZlbiB0aG91Z2ggQ2hyb21lIDQ1IGhhcyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIGFuZCBhIGdldFVzZXJNZWRpYVxuICAgIC8vIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSBQcm9taXNlLCBpdCBkb2VzIG5vdCBhY2NlcHQgc3BlYy1zdHlsZVxuICAgIC8vIGNvbnN0cmFpbnRzLlxuICAgIHZhciBvcmlnR2V0VXNlck1lZGlhID0gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEuXG4gICAgICAgIGJpbmQobmF2aWdhdG9yLm1lZGlhRGV2aWNlcyk7XG4gICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgPSBmdW5jdGlvbihjKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBsb2dnaW5nKCdzcGVjOiAgICcgKyBKU09OLnN0cmluZ2lmeShjKSk7IC8vIHdoaXRlc3BhY2UgZm9yIGFsaWdubWVudFxuICAgICAgICBjLmF1ZGlvID0gY29uc3RyYWludHNUb0Nocm9tZV8oYy5hdWRpbyk7XG4gICAgICAgIGMudmlkZW8gPSBjb25zdHJhaW50c1RvQ2hyb21lXyhjLnZpZGVvKTtcbiAgICAgICAgbG9nZ2luZygnY2hyb21lOiAnICsgSlNPTi5zdHJpbmdpZnkoYykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9yaWdHZXRVc2VyTWVkaWEoYyk7XG4gICAgfS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLy8gRHVtbXkgZGV2aWNlY2hhbmdlIGV2ZW50IG1ldGhvZHMuXG4gIC8vIFRPRE8oS2FwdGVuSmFuc3NvbikgcmVtb3ZlIG9uY2UgaW1wbGVtZW50ZWQgaW4gQ2hyb21lIHN0YWJsZS5cbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmFkZEV2ZW50TGlzdGVuZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICBsb2dnaW5nKCdEdW1teSBtZWRpYURldmljZXMuYWRkRXZlbnRMaXN0ZW5lciBjYWxsZWQuJyk7XG4gICAgfTtcbiAgfVxuICBpZiAodHlwZW9mIG5hdmlnYXRvci5tZWRpYURldmljZXMucmVtb3ZlRXZlbnRMaXN0ZW5lciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIGxvZ2dpbmcoJ0R1bW15IG1lZGlhRGV2aWNlcy5yZW1vdmVFdmVudExpc3RlbmVyIGNhbGxlZC4nKTtcbiAgICB9O1xuICB9XG59O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2Nocm9tZS9nZXR1c2VybWVkaWEuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlXG4gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlXG4gKiAgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBTRFAgaGVscGVycy5cbnZhciBTRFBVdGlscyA9IHt9O1xuXG4vLyBHZW5lcmF0ZSBhbiBhbHBoYW51bWVyaWMgaWRlbnRpZmllciBmb3IgY25hbWUgb3IgbWlkcy5cbi8vIFRPRE86IHVzZSBVVUlEcyBpbnN0ZWFkPyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9qZWQvOTgyODgzXG5TRFBVdGlscy5nZW5lcmF0ZUlkZW50aWZpZXIgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCAxMCk7XG59O1xuXG4vLyBUaGUgUlRDUCBDTkFNRSB1c2VkIGJ5IGFsbCBwZWVyY29ubmVjdGlvbnMgZnJvbSB0aGUgc2FtZSBKUy5cblNEUFV0aWxzLmxvY2FsQ05hbWUgPSBTRFBVdGlscy5nZW5lcmF0ZUlkZW50aWZpZXIoKTtcblxuXG4vLyBTcGxpdHMgU0RQIGludG8gbGluZXMsIGRlYWxpbmcgd2l0aCBib3RoIENSTEYgYW5kIExGLlxuU0RQVXRpbHMuc3BsaXRMaW5lcyA9IGZ1bmN0aW9uKGJsb2IpIHtcbiAgcmV0dXJuIGJsb2IudHJpbSgpLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgIHJldHVybiBsaW5lLnRyaW0oKTtcbiAgfSk7XG59O1xuLy8gU3BsaXRzIFNEUCBpbnRvIHNlc3Npb25wYXJ0IGFuZCBtZWRpYXNlY3Rpb25zLiBFbnN1cmVzIENSTEYuXG5TRFBVdGlscy5zcGxpdFNlY3Rpb25zID0gZnVuY3Rpb24oYmxvYikge1xuICB2YXIgcGFydHMgPSBibG9iLnNwbGl0KCdcXHJcXG5tPScpO1xuICByZXR1cm4gcGFydHMubWFwKGZ1bmN0aW9uKHBhcnQsIGluZGV4KSB7XG4gICAgcmV0dXJuIChpbmRleCA+IDAgPyAnbT0nICsgcGFydCA6IHBhcnQpLnRyaW0oKSArICdcXHJcXG4nO1xuICB9KTtcbn07XG5cbi8vIFJldHVybnMgbGluZXMgdGhhdCBzdGFydCB3aXRoIGEgY2VydGFpbiBwcmVmaXguXG5TRFBVdGlscy5tYXRjaFByZWZpeCA9IGZ1bmN0aW9uKGJsb2IsIHByZWZpeCkge1xuICByZXR1cm4gU0RQVXRpbHMuc3BsaXRMaW5lcyhibG9iKS5maWx0ZXIoZnVuY3Rpb24obGluZSkge1xuICAgIHJldHVybiBsaW5lLmluZGV4T2YocHJlZml4KSA9PT0gMDtcbiAgfSk7XG59O1xuXG4vLyBQYXJzZXMgYW4gSUNFIGNhbmRpZGF0ZSBsaW5lLiBTYW1wbGUgaW5wdXQ6XG4vLyBjYW5kaWRhdGU6NzAyNzg2MzUwIDIgdWRwIDQxODE5OTAyIDguOC44LjggNjA3NjkgdHlwIHJlbGF5IHJhZGRyIDguOC44LjggcnBvcnQgNTU5OTZcIlxuU0RQVXRpbHMucGFyc2VDYW5kaWRhdGUgPSBmdW5jdGlvbihsaW5lKSB7XG4gIHZhciBwYXJ0cztcbiAgLy8gUGFyc2UgYm90aCB2YXJpYW50cy5cbiAgaWYgKGxpbmUuaW5kZXhPZignYT1jYW5kaWRhdGU6JykgPT09IDApIHtcbiAgICBwYXJ0cyA9IGxpbmUuc3Vic3RyaW5nKDEyKS5zcGxpdCgnICcpO1xuICB9IGVsc2Uge1xuICAgIHBhcnRzID0gbGluZS5zdWJzdHJpbmcoMTApLnNwbGl0KCcgJyk7XG4gIH1cblxuICB2YXIgY2FuZGlkYXRlID0ge1xuICAgIGZvdW5kYXRpb246IHBhcnRzWzBdLFxuICAgIGNvbXBvbmVudDogcGFydHNbMV0sXG4gICAgcHJvdG9jb2w6IHBhcnRzWzJdLnRvTG93ZXJDYXNlKCksXG4gICAgcHJpb3JpdHk6IHBhcnNlSW50KHBhcnRzWzNdLCAxMCksXG4gICAgaXA6IHBhcnRzWzRdLFxuICAgIHBvcnQ6IHBhcnNlSW50KHBhcnRzWzVdLCAxMCksXG4gICAgLy8gc2tpcCBwYXJ0c1s2XSA9PSAndHlwJ1xuICAgIHR5cGU6IHBhcnRzWzddXG4gIH07XG5cbiAgZm9yICh2YXIgaSA9IDg7IGkgPCBwYXJ0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHN3aXRjaCAocGFydHNbaV0pIHtcbiAgICAgIGNhc2UgJ3JhZGRyJzpcbiAgICAgICAgY2FuZGlkYXRlLnJlbGF0ZWRBZGRyZXNzID0gcGFydHNbaSArIDFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jwb3J0JzpcbiAgICAgICAgY2FuZGlkYXRlLnJlbGF0ZWRQb3J0ID0gcGFyc2VJbnQocGFydHNbaSArIDFdLCAxMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGNwdHlwZSc6XG4gICAgICAgIGNhbmRpZGF0ZS50Y3BUeXBlID0gcGFydHNbaSArIDFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IC8vIFVua25vd24gZXh0ZW5zaW9ucyBhcmUgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW5kaWRhdGU7XG59O1xuXG4vLyBUcmFuc2xhdGVzIGEgY2FuZGlkYXRlIG9iamVjdCBpbnRvIFNEUCBjYW5kaWRhdGUgYXR0cmlidXRlLlxuU0RQVXRpbHMud3JpdGVDYW5kaWRhdGUgPSBmdW5jdGlvbihjYW5kaWRhdGUpIHtcbiAgdmFyIHNkcCA9IFtdO1xuICBzZHAucHVzaChjYW5kaWRhdGUuZm91bmRhdGlvbik7XG4gIHNkcC5wdXNoKGNhbmRpZGF0ZS5jb21wb25lbnQpO1xuICBzZHAucHVzaChjYW5kaWRhdGUucHJvdG9jb2wudG9VcHBlckNhc2UoKSk7XG4gIHNkcC5wdXNoKGNhbmRpZGF0ZS5wcmlvcml0eSk7XG4gIHNkcC5wdXNoKGNhbmRpZGF0ZS5pcCk7XG4gIHNkcC5wdXNoKGNhbmRpZGF0ZS5wb3J0KTtcblxuICB2YXIgdHlwZSA9IGNhbmRpZGF0ZS50eXBlO1xuICBzZHAucHVzaCgndHlwJyk7XG4gIHNkcC5wdXNoKHR5cGUpO1xuICBpZiAodHlwZSAhPT0gJ2hvc3QnICYmIGNhbmRpZGF0ZS5yZWxhdGVkQWRkcmVzcyAmJlxuICAgICAgY2FuZGlkYXRlLnJlbGF0ZWRQb3J0KSB7XG4gICAgc2RwLnB1c2goJ3JhZGRyJyk7XG4gICAgc2RwLnB1c2goY2FuZGlkYXRlLnJlbGF0ZWRBZGRyZXNzKTsgLy8gd2FzOiByZWxBZGRyXG4gICAgc2RwLnB1c2goJ3Jwb3J0Jyk7XG4gICAgc2RwLnB1c2goY2FuZGlkYXRlLnJlbGF0ZWRQb3J0KTsgLy8gd2FzOiByZWxQb3J0XG4gIH1cbiAgaWYgKGNhbmRpZGF0ZS50Y3BUeXBlICYmIGNhbmRpZGF0ZS5wcm90b2NvbC50b0xvd2VyQ2FzZSgpID09PSAndGNwJykge1xuICAgIHNkcC5wdXNoKCd0Y3B0eXBlJyk7XG4gICAgc2RwLnB1c2goY2FuZGlkYXRlLnRjcFR5cGUpO1xuICB9XG4gIHJldHVybiAnY2FuZGlkYXRlOicgKyBzZHAuam9pbignICcpO1xufTtcblxuLy8gUGFyc2VzIGFuIHJ0cG1hcCBsaW5lLCByZXR1cm5zIFJUQ1J0cENvZGRlY1BhcmFtZXRlcnMuIFNhbXBsZSBpbnB1dDpcbi8vIGE9cnRwbWFwOjExMSBvcHVzLzQ4MDAwLzJcblNEUFV0aWxzLnBhcnNlUnRwTWFwID0gZnVuY3Rpb24obGluZSkge1xuICB2YXIgcGFydHMgPSBsaW5lLnN1YnN0cig5KS5zcGxpdCgnICcpO1xuICB2YXIgcGFyc2VkID0ge1xuICAgIHBheWxvYWRUeXBlOiBwYXJzZUludChwYXJ0cy5zaGlmdCgpLCAxMCkgLy8gd2FzOiBpZFxuICB9O1xuXG4gIHBhcnRzID0gcGFydHNbMF0uc3BsaXQoJy8nKTtcblxuICBwYXJzZWQubmFtZSA9IHBhcnRzWzBdO1xuICBwYXJzZWQuY2xvY2tSYXRlID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKTsgLy8gd2FzOiBjbG9ja3JhdGVcbiAgcGFyc2VkLm51bUNoYW5uZWxzID0gcGFydHMubGVuZ3RoID09PSAzID8gcGFyc2VJbnQocGFydHNbMl0sIDEwKSA6IDE7IC8vIHdhczogY2hhbm5lbHNcbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5cbi8vIEdlbmVyYXRlIGFuIGE9cnRwbWFwIGxpbmUgZnJvbSBSVENSdHBDb2RlY0NhcGFiaWxpdHkgb3IgUlRDUnRwQ29kZWNQYXJhbWV0ZXJzLlxuU0RQVXRpbHMud3JpdGVSdHBNYXAgPSBmdW5jdGlvbihjb2RlYykge1xuICB2YXIgcHQgPSBjb2RlYy5wYXlsb2FkVHlwZTtcbiAgaWYgKGNvZGVjLnByZWZlcnJlZFBheWxvYWRUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICBwdCA9IGNvZGVjLnByZWZlcnJlZFBheWxvYWRUeXBlO1xuICB9XG4gIHJldHVybiAnYT1ydHBtYXA6JyArIHB0ICsgJyAnICsgY29kZWMubmFtZSArICcvJyArIGNvZGVjLmNsb2NrUmF0ZSArXG4gICAgICAoY29kZWMubnVtQ2hhbm5lbHMgIT09IDEgPyAnLycgKyBjb2RlYy5udW1DaGFubmVscyA6ICcnKSArICdcXHJcXG4nO1xufTtcblxuLy8gUGFyc2VzIGFuIGZ0bXAgbGluZSwgcmV0dXJucyBkaWN0aW9uYXJ5LiBTYW1wbGUgaW5wdXQ6XG4vLyBhPWZtdHA6OTYgdmJyPW9uO2NuZz1vblxuLy8gQWxzbyBkZWFscyB3aXRoIHZicj1vbjsgY25nPW9uXG5TRFBVdGlscy5wYXJzZUZtdHAgPSBmdW5jdGlvbihsaW5lKSB7XG4gIHZhciBwYXJzZWQgPSB7fTtcbiAgdmFyIGt2O1xuICB2YXIgcGFydHMgPSBsaW5lLnN1YnN0cihsaW5lLmluZGV4T2YoJyAnKSArIDEpLnNwbGl0KCc7Jyk7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgcGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICBrdiA9IHBhcnRzW2pdLnRyaW0oKS5zcGxpdCgnPScpO1xuICAgIHBhcnNlZFtrdlswXS50cmltKCldID0ga3ZbMV07XG4gIH1cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5cbi8vIEdlbmVyYXRlcyBhbiBhPWZ0bXAgbGluZSBmcm9tIFJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBvciBSVENSdHBDb2RlY1BhcmFtZXRlcnMuXG5TRFBVdGlscy53cml0ZUZ0bXAgPSBmdW5jdGlvbihjb2RlYykge1xuICB2YXIgbGluZSA9ICcnO1xuICB2YXIgcHQgPSBjb2RlYy5wYXlsb2FkVHlwZTtcbiAgaWYgKGNvZGVjLnByZWZlcnJlZFBheWxvYWRUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICBwdCA9IGNvZGVjLnByZWZlcnJlZFBheWxvYWRUeXBlO1xuICB9XG4gIGlmIChjb2RlYy5wYXJhbWV0ZXJzICYmIGNvZGVjLnBhcmFtZXRlcnMubGVuZ3RoKSB7XG4gICAgdmFyIHBhcmFtcyA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGNvZGVjLnBhcmFtZXRlcnMpLmZvckVhY2goZnVuY3Rpb24ocGFyYW0pIHtcbiAgICAgIHBhcmFtcy5wdXNoKHBhcmFtICsgJz0nICsgY29kZWMucGFyYW1ldGVyc1twYXJhbV0pO1xuICAgIH0pO1xuICAgIGxpbmUgKz0gJ2E9Zm10cDonICsgcHQgKyAnICcgKyBwYXJhbXMuam9pbignOycpICsgJ1xcclxcbic7XG4gIH1cbiAgcmV0dXJuIGxpbmU7XG59O1xuXG4vLyBQYXJzZXMgYW4gcnRjcC1mYiBsaW5lLCByZXR1cm5zIFJUQ1BSdGNwRmVlZGJhY2sgb2JqZWN0LiBTYW1wbGUgaW5wdXQ6XG4vLyBhPXJ0Y3AtZmI6OTggbmFjayBycHNpXG5TRFBVdGlscy5wYXJzZVJ0Y3BGYiA9IGZ1bmN0aW9uKGxpbmUpIHtcbiAgdmFyIHBhcnRzID0gbGluZS5zdWJzdHIobGluZS5pbmRleE9mKCcgJykgKyAxKS5zcGxpdCgnICcpO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IHBhcnRzLnNoaWZ0KCksXG4gICAgcGFyYW1ldGVyOiBwYXJ0cy5qb2luKCcgJylcbiAgfTtcbn07XG4vLyBHZW5lcmF0ZSBhPXJ0Y3AtZmIgbGluZXMgZnJvbSBSVENSdHBDb2RlY0NhcGFiaWxpdHkgb3IgUlRDUnRwQ29kZWNQYXJhbWV0ZXJzLlxuU0RQVXRpbHMud3JpdGVSdGNwRmIgPSBmdW5jdGlvbihjb2RlYykge1xuICB2YXIgbGluZXMgPSAnJztcbiAgdmFyIHB0ID0gY29kZWMucGF5bG9hZFR5cGU7XG4gIGlmIChjb2RlYy5wcmVmZXJyZWRQYXlsb2FkVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcHQgPSBjb2RlYy5wcmVmZXJyZWRQYXlsb2FkVHlwZTtcbiAgfVxuICBpZiAoY29kZWMucnRjcEZlZWRiYWNrICYmIGNvZGVjLnJ0Y3BGZWVkYmFjay5sZW5ndGgpIHtcbiAgICAvLyBGSVhNRTogc3BlY2lhbCBoYW5kbGluZyBmb3IgdHJyLWludD9cbiAgICBjb2RlYy5ydGNwRmVlZGJhY2suZm9yRWFjaChmdW5jdGlvbihmYikge1xuICAgICAgbGluZXMgKz0gJ2E9cnRjcC1mYjonICsgcHQgKyAnICcgKyBmYi50eXBlICsgJyAnICsgZmIucGFyYW1ldGVyICtcbiAgICAgICAgICAnXFxyXFxuJztcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbGluZXM7XG59O1xuXG4vLyBQYXJzZXMgYW4gUkZDIDU1NzYgc3NyYyBtZWRpYSBhdHRyaWJ1dGUuIFNhbXBsZSBpbnB1dDpcbi8vIGE9c3NyYzozNzM1OTI4NTU5IGNuYW1lOnNvbWV0aGluZ1xuU0RQVXRpbHMucGFyc2VTc3JjTWVkaWEgPSBmdW5jdGlvbihsaW5lKSB7XG4gIHZhciBzcCA9IGxpbmUuaW5kZXhPZignICcpO1xuICB2YXIgcGFydHMgPSB7XG4gICAgc3NyYzogbGluZS5zdWJzdHIoNywgc3AgLSA3KSxcbiAgfTtcbiAgdmFyIGNvbG9uID0gbGluZS5pbmRleE9mKCc6Jywgc3ApO1xuICBpZiAoY29sb24gPiAtMSkge1xuICAgIHBhcnRzLmF0dHJpYnV0ZSA9IGxpbmUuc3Vic3RyKHNwICsgMSwgY29sb24gLSBzcCAtIDEpO1xuICAgIHBhcnRzLnZhbHVlID0gbGluZS5zdWJzdHIoY29sb24gKyAxKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJ0cy5hdHRyaWJ1dGUgPSBsaW5lLnN1YnN0cihzcCArIDEpO1xuICB9XG4gIHJldHVybiBwYXJ0cztcbn07XG5cbi8vIEV4dHJhY3RzIERUTFMgcGFyYW1ldGVycyBmcm9tIFNEUCBtZWRpYSBzZWN0aW9uIG9yIHNlc3Npb25wYXJ0LlxuLy8gRklYTUU6IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIGZ1bmN0aW9ucyB0aGlzIHNob3VsZCBvbmx5XG4vLyAgIGdldCB0aGUgZmluZ2VycHJpbnQgbGluZSBhcyBpbnB1dC4gU2VlIGFsc28gZ2V0SWNlUGFyYW1ldGVycy5cblNEUFV0aWxzLmdldER0bHNQYXJhbWV0ZXJzID0gZnVuY3Rpb24obWVkaWFTZWN0aW9uLCBzZXNzaW9ucGFydCkge1xuICB2YXIgbGluZXMgPSBTRFBVdGlscy5zcGxpdExpbmVzKG1lZGlhU2VjdGlvbik7XG4gIGxpbmVzID0gbGluZXMuY29uY2F0KFNEUFV0aWxzLnNwbGl0TGluZXMoc2Vzc2lvbnBhcnQpKTsgLy8gU2VhcmNoIGluIHNlc3Npb24gcGFydCwgdG9vLlxuICB2YXIgZnBMaW5lID0gbGluZXMuZmlsdGVyKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICByZXR1cm4gbGluZS5pbmRleE9mKCdhPWZpbmdlcnByaW50OicpID09PSAwO1xuICB9KVswXS5zdWJzdHIoMTQpO1xuICAvLyBOb3RlOiBhPXNldHVwIGxpbmUgaXMgaWdub3JlZCBzaW5jZSB3ZSB1c2UgdGhlICdhdXRvJyByb2xlLlxuICB2YXIgZHRsc1BhcmFtZXRlcnMgPSB7XG4gICAgcm9sZTogJ2F1dG8nLFxuICAgIGZpbmdlcnByaW50czogW3tcbiAgICAgIGFsZ29yaXRobTogZnBMaW5lLnNwbGl0KCcgJylbMF0sXG4gICAgICB2YWx1ZTogZnBMaW5lLnNwbGl0KCcgJylbMV1cbiAgICB9XVxuICB9O1xuICByZXR1cm4gZHRsc1BhcmFtZXRlcnM7XG59O1xuXG4vLyBTZXJpYWxpemVzIERUTFMgcGFyYW1ldGVycyB0byBTRFAuXG5TRFBVdGlscy53cml0ZUR0bHNQYXJhbWV0ZXJzID0gZnVuY3Rpb24ocGFyYW1zLCBzZXR1cFR5cGUpIHtcbiAgdmFyIHNkcCA9ICdhPXNldHVwOicgKyBzZXR1cFR5cGUgKyAnXFxyXFxuJztcbiAgcGFyYW1zLmZpbmdlcnByaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGZwKSB7XG4gICAgc2RwICs9ICdhPWZpbmdlcnByaW50OicgKyBmcC5hbGdvcml0aG0gKyAnICcgKyBmcC52YWx1ZSArICdcXHJcXG4nO1xuICB9KTtcbiAgcmV0dXJuIHNkcDtcbn07XG4vLyBQYXJzZXMgSUNFIGluZm9ybWF0aW9uIGZyb20gU0RQIG1lZGlhIHNlY3Rpb24gb3Igc2Vzc2lvbnBhcnQuXG4vLyBGSVhNRTogZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZnVuY3Rpb25zIHRoaXMgc2hvdWxkIG9ubHlcbi8vICAgZ2V0IHRoZSBpY2UtdWZyYWcgYW5kIGljZS1wd2QgbGluZXMgYXMgaW5wdXQuXG5TRFBVdGlscy5nZXRJY2VQYXJhbWV0ZXJzID0gZnVuY3Rpb24obWVkaWFTZWN0aW9uLCBzZXNzaW9ucGFydCkge1xuICB2YXIgbGluZXMgPSBTRFBVdGlscy5zcGxpdExpbmVzKG1lZGlhU2VjdGlvbik7XG4gIGxpbmVzID0gbGluZXMuY29uY2F0KFNEUFV0aWxzLnNwbGl0TGluZXMoc2Vzc2lvbnBhcnQpKTsgLy8gU2VhcmNoIGluIHNlc3Npb24gcGFydCwgdG9vLlxuICB2YXIgaWNlUGFyYW1ldGVycyA9IHtcbiAgICB1c2VybmFtZUZyYWdtZW50OiBsaW5lcy5maWx0ZXIoZnVuY3Rpb24obGluZSkge1xuICAgICAgcmV0dXJuIGxpbmUuaW5kZXhPZignYT1pY2UtdWZyYWc6JykgPT09IDA7XG4gICAgfSlbMF0uc3Vic3RyKDEyKSxcbiAgICBwYXNzd29yZDogbGluZXMuZmlsdGVyKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9aWNlLXB3ZDonKSA9PT0gMDtcbiAgICB9KVswXS5zdWJzdHIoMTApXG4gIH07XG4gIHJldHVybiBpY2VQYXJhbWV0ZXJzO1xufTtcblxuLy8gU2VyaWFsaXplcyBJQ0UgcGFyYW1ldGVycyB0byBTRFAuXG5TRFBVdGlscy53cml0ZUljZVBhcmFtZXRlcnMgPSBmdW5jdGlvbihwYXJhbXMpIHtcbiAgcmV0dXJuICdhPWljZS11ZnJhZzonICsgcGFyYW1zLnVzZXJuYW1lRnJhZ21lbnQgKyAnXFxyXFxuJyArXG4gICAgICAnYT1pY2UtcHdkOicgKyBwYXJhbXMucGFzc3dvcmQgKyAnXFxyXFxuJztcbn07XG5cbi8vIFBhcnNlcyB0aGUgU0RQIG1lZGlhIHNlY3Rpb24gYW5kIHJldHVybnMgUlRDUnRwUGFyYW1ldGVycy5cblNEUFV0aWxzLnBhcnNlUnRwUGFyYW1ldGVycyA9IGZ1bmN0aW9uKG1lZGlhU2VjdGlvbikge1xuICB2YXIgZGVzY3JpcHRpb24gPSB7XG4gICAgY29kZWNzOiBbXSxcbiAgICBoZWFkZXJFeHRlbnNpb25zOiBbXSxcbiAgICBmZWNNZWNoYW5pc21zOiBbXSxcbiAgICBydGNwOiBbXVxuICB9O1xuICB2YXIgbGluZXMgPSBTRFBVdGlscy5zcGxpdExpbmVzKG1lZGlhU2VjdGlvbik7XG4gIHZhciBtbGluZSA9IGxpbmVzWzBdLnNwbGl0KCcgJyk7XG4gIGZvciAodmFyIGkgPSAzOyBpIDwgbWxpbmUubGVuZ3RoOyBpKyspIHsgLy8gZmluZCBhbGwgY29kZWNzIGZyb20gbWxpbmVbMy4uXVxuICAgIHZhciBwdCA9IG1saW5lW2ldO1xuICAgIHZhciBydHBtYXBsaW5lID0gU0RQVXRpbHMubWF0Y2hQcmVmaXgoXG4gICAgICAgIG1lZGlhU2VjdGlvbiwgJ2E9cnRwbWFwOicgKyBwdCArICcgJylbMF07XG4gICAgaWYgKHJ0cG1hcGxpbmUpIHtcbiAgICAgIHZhciBjb2RlYyA9IFNEUFV0aWxzLnBhcnNlUnRwTWFwKHJ0cG1hcGxpbmUpO1xuICAgICAgdmFyIGZtdHBzID0gU0RQVXRpbHMubWF0Y2hQcmVmaXgoXG4gICAgICAgICAgbWVkaWFTZWN0aW9uLCAnYT1mbXRwOicgKyBwdCArICcgJyk7XG4gICAgICAvLyBPbmx5IHRoZSBmaXJzdCBhPWZtdHA6PHB0PiBpcyBjb25zaWRlcmVkLlxuICAgICAgY29kZWMucGFyYW1ldGVycyA9IGZtdHBzLmxlbmd0aCA/IFNEUFV0aWxzLnBhcnNlRm10cChmbXRwc1swXSkgOiB7fTtcbiAgICAgIGNvZGVjLnJ0Y3BGZWVkYmFjayA9IFNEUFV0aWxzLm1hdGNoUHJlZml4KFxuICAgICAgICAgIG1lZGlhU2VjdGlvbiwgJ2E9cnRjcC1mYjonICsgcHQgKyAnICcpXG4gICAgICAgIC5tYXAoU0RQVXRpbHMucGFyc2VSdGNwRmIpO1xuICAgICAgZGVzY3JpcHRpb24uY29kZWNzLnB1c2goY29kZWMpO1xuICAgIH1cbiAgfVxuICAvLyBGSVhNRTogcGFyc2UgaGVhZGVyRXh0ZW5zaW9ucywgZmVjTWVjaGFuaXNtcyBhbmQgcnRjcC5cbiAgcmV0dXJuIGRlc2NyaXB0aW9uO1xufTtcblxuLy8gR2VuZXJhdGVzIHBhcnRzIG9mIHRoZSBTRFAgbWVkaWEgc2VjdGlvbiBkZXNjcmliaW5nIHRoZSBjYXBhYmlsaXRpZXMgLyBwYXJhbWV0ZXJzLlxuU0RQVXRpbHMud3JpdGVSdHBEZXNjcmlwdGlvbiA9IGZ1bmN0aW9uKGtpbmQsIGNhcHMpIHtcbiAgdmFyIHNkcCA9ICcnO1xuXG4gIC8vIEJ1aWxkIHRoZSBtbGluZS5cbiAgc2RwICs9ICdtPScgKyBraW5kICsgJyAnO1xuICBzZHAgKz0gY2Fwcy5jb2RlY3MubGVuZ3RoID4gMCA/ICc5JyA6ICcwJzsgLy8gcmVqZWN0IGlmIG5vIGNvZGVjcy5cbiAgc2RwICs9ICcgVURQL1RMUy9SVFAvU0FWUEYgJztcbiAgc2RwICs9IGNhcHMuY29kZWNzLm1hcChmdW5jdGlvbihjb2RlYykge1xuICAgIGlmIChjb2RlYy5wcmVmZXJyZWRQYXlsb2FkVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY29kZWMucHJlZmVycmVkUGF5bG9hZFR5cGU7XG4gICAgfVxuICAgIHJldHVybiBjb2RlYy5wYXlsb2FkVHlwZTtcbiAgfSkuam9pbignICcpICsgJ1xcclxcbic7XG5cbiAgc2RwICs9ICdjPUlOIElQNCAwLjAuMC4wXFxyXFxuJztcbiAgc2RwICs9ICdhPXJ0Y3A6OSBJTiBJUDQgMC4wLjAuMFxcclxcbic7XG5cbiAgLy8gQWRkIGE9cnRwbWFwIGxpbmVzIGZvciBlYWNoIGNvZGVjLiBBbHNvIGZtdHAgYW5kIHJ0Y3AtZmIuXG4gIGNhcHMuY29kZWNzLmZvckVhY2goZnVuY3Rpb24oY29kZWMpIHtcbiAgICBzZHAgKz0gU0RQVXRpbHMud3JpdGVSdHBNYXAoY29kZWMpO1xuICAgIHNkcCArPSBTRFBVdGlscy53cml0ZUZ0bXAoY29kZWMpO1xuICAgIHNkcCArPSBTRFBVdGlscy53cml0ZVJ0Y3BGYihjb2RlYyk7XG4gIH0pO1xuICAvLyBGSVhNRTogYWRkIGhlYWRlckV4dGVuc2lvbnMsIGZlY01lY2hhbmlzbcWfIGFuZCBydGNwLlxuICBzZHAgKz0gJ2E9cnRjcC1tdXhcXHJcXG4nO1xuICByZXR1cm4gc2RwO1xufTtcblxuU0RQVXRpbHMud3JpdGVTZXNzaW9uQm9pbGVycGxhdGUgPSBmdW5jdGlvbigpIHtcbiAgLy8gRklYTUU6IHNlc3MtaWQgc2hvdWxkIGJlIGFuIE5UUCB0aW1lc3RhbXAuXG4gIHJldHVybiAndj0wXFxyXFxuJyArXG4gICAgICAnbz10aGlzaXNhZGFwdGVyb3J0YyA4MTY5NjM5OTE1NjQ2OTQzMTM3IDIgSU4gSVA0IDEyNy4wLjAuMVxcclxcbicgK1xuICAgICAgJ3M9LVxcclxcbicgK1xuICAgICAgJ3Q9MCAwXFxyXFxuJztcbn07XG5cblNEUFV0aWxzLndyaXRlTWVkaWFTZWN0aW9uID0gZnVuY3Rpb24odHJhbnNjZWl2ZXIsIGNhcHMsIHR5cGUsIHN0cmVhbSkge1xuICB2YXIgc2RwID0gU0RQVXRpbHMud3JpdGVSdHBEZXNjcmlwdGlvbih0cmFuc2NlaXZlci5raW5kLCBjYXBzKTtcblxuICAvLyBNYXAgSUNFIHBhcmFtZXRlcnMgKHVmcmFnLCBwd2QpIHRvIFNEUC5cbiAgc2RwICs9IFNEUFV0aWxzLndyaXRlSWNlUGFyYW1ldGVycyhcbiAgICAgIHRyYW5zY2VpdmVyLmljZUdhdGhlcmVyLmdldExvY2FsUGFyYW1ldGVycygpKTtcblxuICAvLyBNYXAgRFRMUyBwYXJhbWV0ZXJzIHRvIFNEUC5cbiAgc2RwICs9IFNEUFV0aWxzLndyaXRlRHRsc1BhcmFtZXRlcnMoXG4gICAgICB0cmFuc2NlaXZlci5kdGxzVHJhbnNwb3J0LmdldExvY2FsUGFyYW1ldGVycygpLFxuICAgICAgdHlwZSA9PT0gJ29mZmVyJyA/ICdhY3RwYXNzJyA6ICdhY3RpdmUnKTtcblxuICBzZHAgKz0gJ2E9bWlkOicgKyB0cmFuc2NlaXZlci5taWQgKyAnXFxyXFxuJztcblxuICBpZiAodHJhbnNjZWl2ZXIucnRwU2VuZGVyICYmIHRyYW5zY2VpdmVyLnJ0cFJlY2VpdmVyKSB7XG4gICAgc2RwICs9ICdhPXNlbmRyZWN2XFxyXFxuJztcbiAgfSBlbHNlIGlmICh0cmFuc2NlaXZlci5ydHBTZW5kZXIpIHtcbiAgICBzZHAgKz0gJ2E9c2VuZG9ubHlcXHJcXG4nO1xuICB9IGVsc2UgaWYgKHRyYW5zY2VpdmVyLnJ0cFJlY2VpdmVyKSB7XG4gICAgc2RwICs9ICdhPXJlY3Zvbmx5XFxyXFxuJztcbiAgfSBlbHNlIHtcbiAgICBzZHAgKz0gJ2E9aW5hY3RpdmVcXHJcXG4nO1xuICB9XG5cbiAgLy8gRklYTUU6IGZvciBSVFggdGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgU1NSQ3MuIE5vdCBpbXBsZW1lbnRlZCBpbiBFZGdlIHlldC5cbiAgaWYgKHRyYW5zY2VpdmVyLnJ0cFNlbmRlcikge1xuICAgIHZhciBtc2lkID0gJ21zaWQ6JyArIHN0cmVhbS5pZCArICcgJyArXG4gICAgICAgIHRyYW5zY2VpdmVyLnJ0cFNlbmRlci50cmFjay5pZCArICdcXHJcXG4nO1xuICAgIHNkcCArPSAnYT0nICsgbXNpZDtcbiAgICBzZHAgKz0gJ2E9c3NyYzonICsgdHJhbnNjZWl2ZXIuc2VuZFNzcmMgKyAnICcgKyBtc2lkO1xuICB9XG4gIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSB3cml0dGVuIGJ5IHdyaXRlUnRwRGVzY3JpcHRpb24uXG4gIHNkcCArPSAnYT1zc3JjOicgKyB0cmFuc2NlaXZlci5zZW5kU3NyYyArICcgY25hbWU6JyArXG4gICAgICBTRFBVdGlscy5sb2NhbENOYW1lICsgJ1xcclxcbic7XG4gIHJldHVybiBzZHA7XG59O1xuXG4vLyBHZXRzIHRoZSBkaXJlY3Rpb24gZnJvbSB0aGUgbWVkaWFTZWN0aW9uIG9yIHRoZSBzZXNzaW9ucGFydC5cblNEUFV0aWxzLmdldERpcmVjdGlvbiA9IGZ1bmN0aW9uKG1lZGlhU2VjdGlvbiwgc2Vzc2lvbnBhcnQpIHtcbiAgLy8gTG9vayBmb3Igc2VuZHJlY3YsIHNlbmRvbmx5LCByZWN2b25seSwgaW5hY3RpdmUsIGRlZmF1bHQgdG8gc2VuZHJlY3YuXG4gIHZhciBsaW5lcyA9IFNEUFV0aWxzLnNwbGl0TGluZXMobWVkaWFTZWN0aW9uKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIHN3aXRjaCAobGluZXNbaV0pIHtcbiAgICAgIGNhc2UgJ2E9c2VuZHJlY3YnOlxuICAgICAgY2FzZSAnYT1zZW5kb25seSc6XG4gICAgICBjYXNlICdhPXJlY3Zvbmx5JzpcbiAgICAgIGNhc2UgJ2E9aW5hY3RpdmUnOlxuICAgICAgICByZXR1cm4gbGluZXNbaV0uc3Vic3RyKDIpO1xuICAgIH1cbiAgfVxuICBpZiAoc2Vzc2lvbnBhcnQpIHtcbiAgICByZXR1cm4gU0RQVXRpbHMuZ2V0RGlyZWN0aW9uKHNlc3Npb25wYXJ0KTtcbiAgfVxuICByZXR1cm4gJ3NlbmRyZWN2Jztcbn07XG5cbi8vIEV4cG9zZSBwdWJsaWMgbWV0aG9kcy5cbm1vZHVsZS5leHBvcnRzID0gU0RQVXRpbHM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvZWRnZS9lZGdlX3NkcC5qc1xuICoqIG1vZHVsZSBpZCA9IDE1MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLypcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2VcbiAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2VcbiAqICB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTRFBVdGlscyA9IHJlcXVpcmUoJy4vZWRnZV9zZHAnKTtcbnZhciBsb2dnaW5nID0gcmVxdWlyZSgnLi4vdXRpbHMnKS5sb2c7XG52YXIgYnJvd3NlckRldGFpbHMgPSByZXF1aXJlKCcuLi91dGlscycpLmJyb3dzZXJEZXRhaWxzO1xuXG52YXIgZWRnZVNoaW0gPSB7XG4gIHNoaW1QZWVyQ29ubmVjdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHdpbmRvdy5SVENJY2VHYXRoZXJlcikge1xuICAgICAgLy8gT1JUQyBkZWZpbmVzIGFuIFJUQ0ljZUNhbmRpZGF0ZSBvYmplY3QgYnV0IG5vIGNvbnN0cnVjdG9yLlxuICAgICAgLy8gTm90IGltcGxlbWVudGVkIGluIEVkZ2UuXG4gICAgICBpZiAoIXdpbmRvdy5SVENJY2VDYW5kaWRhdGUpIHtcbiAgICAgICAgd2luZG93LlJUQ0ljZUNhbmRpZGF0ZSA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gYXJncztcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIE9SVEMgZG9lcyBub3QgaGF2ZSBhIHNlc3Npb24gZGVzY3JpcHRpb24gb2JqZWN0IGJ1dFxuICAgICAgLy8gb3RoZXIgYnJvd3NlcnMgKGkuZS4gQ2hyb21lKSB0aGF0IHdpbGwgc3VwcG9ydCBib3RoIFBDIGFuZCBPUlRDXG4gICAgICAvLyBpbiB0aGUgZnV0dXJlIG1pZ2h0IGhhdmUgdGhpcyBkZWZpbmVkIGFscmVhZHkuXG4gICAgICBpZiAoIXdpbmRvdy5SVENTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgd2luZG93LlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gYXJncztcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gPSBmdW5jdGlvbihjb25maWcpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgdmFyIF9ldmVudFRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgIFsnYWRkRXZlbnRMaXN0ZW5lcicsICdyZW1vdmVFdmVudExpc3RlbmVyJywgJ2Rpc3BhdGNoRXZlbnQnXS5mb3JFYWNoKFxuICAgICAgICAgIGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgICBzZWxmW21ldGhvZF0gPSBfZXZlbnRUYXJnZXRbbWV0aG9kXS5iaW5kKF9ldmVudFRhcmdldCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5vbmljZWNhbmRpZGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLm9uYWRkc3RyZWFtID0gbnVsbDtcbiAgICAgIHRoaXMub250cmFjayA9IG51bGw7XG4gICAgICB0aGlzLm9ucmVtb3Zlc3RyZWFtID0gbnVsbDtcbiAgICAgIHRoaXMub25zaWduYWxpbmdzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICB0aGlzLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgIHRoaXMub25uZWdvdGlhdGlvbm5lZWRlZCA9IG51bGw7XG4gICAgICB0aGlzLm9uZGF0YWNoYW5uZWwgPSBudWxsO1xuXG4gICAgICB0aGlzLmxvY2FsU3RyZWFtcyA9IFtdO1xuICAgICAgdGhpcy5yZW1vdGVTdHJlYW1zID0gW107XG4gICAgICB0aGlzLmdldExvY2FsU3RyZWFtcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gc2VsZi5sb2NhbFN0cmVhbXM7IH07XG4gICAgICB0aGlzLmdldFJlbW90ZVN0cmVhbXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHNlbGYucmVtb3RlU3RyZWFtczsgfTtcblxuICAgICAgdGhpcy5sb2NhbERlc2NyaXB0aW9uID0gbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbih7XG4gICAgICAgIHR5cGU6ICcnLFxuICAgICAgICBzZHA6ICcnXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHtcbiAgICAgICAgdHlwZTogJycsXG4gICAgICAgIHNkcDogJydcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zaWduYWxpbmdTdGF0ZSA9ICdzdGFibGUnO1xuICAgICAgdGhpcy5pY2VDb25uZWN0aW9uU3RhdGUgPSAnbmV3JztcbiAgICAgIHRoaXMuaWNlR2F0aGVyaW5nU3RhdGUgPSAnbmV3JztcblxuICAgICAgdGhpcy5pY2VPcHRpb25zID0ge1xuICAgICAgICBnYXRoZXJQb2xpY3k6ICdhbGwnLFxuICAgICAgICBpY2VTZXJ2ZXJzOiBbXVxuICAgICAgfTtcbiAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmljZVRyYW5zcG9ydFBvbGljeSkge1xuICAgICAgICBzd2l0Y2ggKGNvbmZpZy5pY2VUcmFuc3BvcnRQb2xpY3kpIHtcbiAgICAgICAgICBjYXNlICdhbGwnOlxuICAgICAgICAgIGNhc2UgJ3JlbGF5JzpcbiAgICAgICAgICAgIHRoaXMuaWNlT3B0aW9ucy5nYXRoZXJQb2xpY3kgPSBjb25maWcuaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIG9uY2UgaW1wbGVtZW50YXRpb24gYW5kIHNwZWMgaGF2ZSBhZGRlZCB0aGlzLlxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaWNlVHJhbnNwb3J0UG9saWN5IFwibm9uZVwiIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuaWNlU2VydmVycykge1xuICAgICAgICAvLyBFZGdlIGRvZXMgbm90IGxpa2VcbiAgICAgICAgLy8gMSkgc3R1bjpcbiAgICAgICAgLy8gMikgdHVybjogdGhhdCBkb2VzIG5vdCBoYXZlIGFsbCBvZiB0dXJuOmhvc3Q6cG9ydD90cmFuc3BvcnQ9dWRwXG4gICAgICAgIHRoaXMuaWNlT3B0aW9ucy5pY2VTZXJ2ZXJzID0gY29uZmlnLmljZVNlcnZlcnMuZmlsdGVyKGZ1bmN0aW9uKHNlcnZlcikge1xuICAgICAgICAgIGlmIChzZXJ2ZXIgJiYgc2VydmVyLnVybHMpIHtcbiAgICAgICAgICAgIHNlcnZlci51cmxzID0gc2VydmVyLnVybHMuZmlsdGVyKGZ1bmN0aW9uKHVybCkge1xuICAgICAgICAgICAgICByZXR1cm4gdXJsLmluZGV4T2YoJ3RyYW5zcG9ydD11ZHAnKSAhPT0gLTE7XG4gICAgICAgICAgICB9KVswXTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBwZXItdHJhY2sgaWNlR2F0aGVycywgaWNlVHJhbnNwb3J0cywgZHRsc1RyYW5zcG9ydHMsIHJ0cFNlbmRlcnMsIC4uLlxuICAgICAgLy8gZXZlcnl0aGluZyB0aGF0IGlzIG5lZWRlZCB0byBkZXNjcmliZSBhIFNEUCBtLWxpbmUuXG4gICAgICB0aGlzLnRyYW5zY2VpdmVycyA9IFtdO1xuXG4gICAgICAvLyBzaW5jZSB0aGUgaWNlR2F0aGVyZXIgaXMgY3VycmVudGx5IGNyZWF0ZWQgaW4gY3JlYXRlT2ZmZXIgYnV0IHdlXG4gICAgICAvLyBtdXN0IG5vdCBlbWl0IGNhbmRpZGF0ZXMgdW50aWwgYWZ0ZXIgc2V0TG9jYWxEZXNjcmlwdGlvbiB3ZSBidWZmZXJcbiAgICAgIC8vIHRoZW0gaW4gdGhpcyBhcnJheS5cbiAgICAgIHRoaXMuX2xvY2FsSWNlQ2FuZGlkYXRlc0J1ZmZlciA9IFtdO1xuICAgIH07XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLl9lbWl0QnVmZmVyZWRDYW5kaWRhdGVzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc2VjdGlvbnMgPSBTRFBVdGlscy5zcGxpdFNlY3Rpb25zKHNlbGYubG9jYWxEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgLy8gRklYTUU6IG5lZWQgdG8gYXBwbHkgaWNlIGNhbmRpZGF0ZXMgaW4gYSB3YXkgd2hpY2ggaXMgYXN5bmMgYnV0IGluLW9yZGVyXG4gICAgICB0aGlzLl9sb2NhbEljZUNhbmRpZGF0ZXNCdWZmZXIuZm9yRWFjaChmdW5jdGlvbihldmVudCkge1xuICAgICAgICB2YXIgZW5kID0gIWV2ZW50LmNhbmRpZGF0ZSB8fCBPYmplY3Qua2V5cyhldmVudC5jYW5kaWRhdGUpLmxlbmd0aCA9PSAwO1xuICAgICAgICBpZiAoZW5kKSB7XG4gICAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCBzZWN0aW9ucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgc2VjdGlvbnNbal0gKz0gJ2E9ZW5kLW9mLWNhbmRpZGF0ZXNcXHJcXG4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWN0aW9uc1tldmVudC5jYW5kaWRhdGUuc2RwTUxpbmVJbmRleCArIDFdICs9XG4gICAgICAgICAgICAgICdhPScgKyBldmVudC5jYW5kaWRhdGUuY2FuZGlkYXRlICsgJ1xcclxcbic7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgaWYgKHNlbGYub25pY2VjYW5kaWRhdGUgIT09IG51bGwpIHtcbiAgICAgICAgICBzZWxmLm9uaWNlY2FuZGlkYXRlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWV2ZW50LmNhbmRpZGF0ZSkge1xuICAgICAgICAgIHNlbGYuaWNlR2F0aGVyaW5nU3RhdGUgPSAnY29tcGxldGUnO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2xvY2FsSWNlQ2FuZGlkYXRlc0J1ZmZlciA9IFtdO1xuICAgICAgdGhpcy5sb2NhbERlc2NyaXB0aW9uLnNkcCA9IHNlY3Rpb25zLmpvaW4oJycpO1xuICAgIH07XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmFkZFN0cmVhbSA9IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgLy8gQ2xvbmUgaXMgbmVjZXNzYXJ5IGZvciBsb2NhbCBkZW1vcyBtb3N0bHksIGF0dGFjaGluZyBkaXJlY3RseVxuICAgICAgLy8gdG8gdHdvIGRpZmZlcmVudCBzZW5kZXJzIGRvZXMgbm90IHdvcmsgKGJ1aWxkIDEwNTQ3KS5cbiAgICAgIHRoaXMubG9jYWxTdHJlYW1zLnB1c2goc3RyZWFtLmNsb25lKCkpO1xuICAgICAgdGhpcy5fbWF5YmVGaXJlTmVnb3RpYXRpb25OZWVkZWQoKTtcbiAgICB9O1xuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5yZW1vdmVTdHJlYW0gPSBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgIHZhciBpZHggPSB0aGlzLmxvY2FsU3RyZWFtcy5pbmRleE9mKHN0cmVhbSk7XG4gICAgICBpZiAoaWR4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0cmVhbXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIHRoaXMuX21heWJlRmlyZU5lZ290aWF0aW9uTmVlZGVkKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIERldGVybWluZXMgdGhlIGludGVyc2VjdGlvbiBvZiBsb2NhbCBhbmQgcmVtb3RlIGNhcGFiaWxpdGllcy5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLl9nZXRDb21tb25DYXBhYmlsaXRpZXMgPVxuICAgICAgICBmdW5jdGlvbihsb2NhbENhcGFiaWxpdGllcywgcmVtb3RlQ2FwYWJpbGl0aWVzKSB7XG4gICAgICB2YXIgY29tbW9uQ2FwYWJpbGl0aWVzID0ge1xuICAgICAgICBjb2RlY3M6IFtdLFxuICAgICAgICBoZWFkZXJFeHRlbnNpb25zOiBbXSxcbiAgICAgICAgZmVjTWVjaGFuaXNtczogW11cbiAgICAgIH07XG4gICAgICBsb2NhbENhcGFiaWxpdGllcy5jb2RlY3MuZm9yRWFjaChmdW5jdGlvbihsQ29kZWMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1vdGVDYXBhYmlsaXRpZXMuY29kZWNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHJDb2RlYyA9IHJlbW90ZUNhcGFiaWxpdGllcy5jb2RlY3NbaV07XG4gICAgICAgICAgaWYgKGxDb2RlYy5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHJDb2RlYy5uYW1lLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgICAgICAgbENvZGVjLmNsb2NrUmF0ZSA9PT0gckNvZGVjLmNsb2NrUmF0ZSAmJlxuICAgICAgICAgICAgICBsQ29kZWMubnVtQ2hhbm5lbHMgPT09IHJDb2RlYy5udW1DaGFubmVscykge1xuICAgICAgICAgICAgLy8gcHVzaCByQ29kZWMgc28gd2UgcmVwbHkgd2l0aCBvZmZlcmVyIHBheWxvYWQgdHlwZVxuICAgICAgICAgICAgY29tbW9uQ2FwYWJpbGl0aWVzLmNvZGVjcy5wdXNoKHJDb2RlYyk7XG5cbiAgICAgICAgICAgIC8vIEZJWE1FOiBhbHNvIG5lZWQgdG8gZGV0ZXJtaW5lIGludGVyc2VjdGlvbiBiZXR3ZWVuXG4gICAgICAgICAgICAvLyAucnRjcEZlZWRiYWNrIGFuZCAucGFyYW1ldGVyc1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgbG9jYWxDYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGxIZWFkZXJFeHRlbnNpb24pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1vdGVDYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBySGVhZGVyRXh0ZW5zaW9uID0gcmVtb3RlQ2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnNbaV07XG4gICAgICAgICAgaWYgKGxIZWFkZXJFeHRlbnNpb24udXJpID09PSBySGVhZGVyRXh0ZW5zaW9uLnVyaSkge1xuICAgICAgICAgICAgY29tbW9uQ2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMucHVzaChySGVhZGVyRXh0ZW5zaW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEZJWE1FOiBmZWNNZWNoYW5pc21zXG4gICAgICByZXR1cm4gY29tbW9uQ2FwYWJpbGl0aWVzO1xuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgSUNFIGdhdGhlcmVyLCBJQ0UgdHJhbnNwb3J0IGFuZCBEVExTIHRyYW5zcG9ydC5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLl9jcmVhdGVJY2VBbmREdGxzVHJhbnNwb3J0cyA9XG4gICAgICAgIGZ1bmN0aW9uKG1pZCwgc2RwTUxpbmVJbmRleCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIGljZUdhdGhlcmVyID0gbmV3IFJUQ0ljZUdhdGhlcmVyKHNlbGYuaWNlT3B0aW9ucyk7XG4gICAgICB2YXIgaWNlVHJhbnNwb3J0ID0gbmV3IFJUQ0ljZVRyYW5zcG9ydChpY2VHYXRoZXJlcik7XG4gICAgICBpY2VHYXRoZXJlci5vbmxvY2FsY2FuZGlkYXRlID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgnaWNlY2FuZGlkYXRlJyk7XG4gICAgICAgIGV2ZW50LmNhbmRpZGF0ZSA9IHtzZHBNaWQ6IG1pZCwgc2RwTUxpbmVJbmRleDogc2RwTUxpbmVJbmRleH07XG5cbiAgICAgICAgdmFyIGNhbmQgPSBldnQuY2FuZGlkYXRlO1xuICAgICAgICB2YXIgZW5kID0gIWNhbmQgfHwgT2JqZWN0LmtleXMoY2FuZCkubGVuZ3RoID09PSAwO1xuICAgICAgICAvLyBFZGdlIGVtaXRzIGFuIGVtcHR5IG9iamVjdCBmb3IgUlRDSWNlQ2FuZGlkYXRlQ29tcGxldGXigKVcbiAgICAgICAgaWYgKGVuZCkge1xuICAgICAgICAgIC8vIHBvbHlmaWxsIHNpbmNlIFJUQ0ljZUdhdGhlcmVyLnN0YXRlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBFZGdlIDEwNTQ3IHlldC5cbiAgICAgICAgICBpZiAoaWNlR2F0aGVyZXIuc3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWNlR2F0aGVyZXIuc3RhdGUgPSAnY29tcGxldGVkJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbWl0IGEgY2FuZGlkYXRlIHdpdGggdHlwZSBlbmRPZkNhbmRpZGF0ZXMgdG8gbWFrZSB0aGUgc2FtcGxlcyB3b3JrLlxuICAgICAgICAgIC8vIEVkZ2UgcmVxdWlyZXMgYWRkSWNlQ2FuZGlkYXRlIHdpdGggdGhpcyBlbXB0eSBjYW5kaWRhdGUgdG8gc3RhcnQgY2hlY2tpbmcuXG4gICAgICAgICAgLy8gVGhlIHJlYWwgc29sdXRpb24gaXMgdG8gc2lnbmFsIGVuZC1vZi1jYW5kaWRhdGVzIHRvIHRoZSBvdGhlciBzaWRlIHdoZW5cbiAgICAgICAgICAvLyBnZXR0aW5nIHRoZSBudWxsIGNhbmRpZGF0ZSBidXQgc29tZSBhcHBzIChsaWtlIHRoZSBzYW1wbGVzKSBkb24ndCBkbyB0aGF0LlxuICAgICAgICAgIGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUgPVxuICAgICAgICAgICAgICAnY2FuZGlkYXRlOjEgMSB1ZHAgMSAwLjAuMC4wIDkgdHlwIGVuZE9mQ2FuZGlkYXRlcyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUlRDSWNlQ2FuZGlkYXRlIGRvZXNuJ3QgaGF2ZSBhIGNvbXBvbmVudCwgbmVlZHMgdG8gYmUgYWRkZWRcbiAgICAgICAgICBjYW5kLmNvbXBvbmVudCA9IGljZVRyYW5zcG9ydC5jb21wb25lbnQgPT09ICdSVENQJyA/IDIgOiAxO1xuICAgICAgICAgIGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUgPSBTRFBVdGlscy53cml0ZUNhbmRpZGF0ZShjYW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb21wbGV0ZSA9IHNlbGYudHJhbnNjZWl2ZXJzLmV2ZXJ5KGZ1bmN0aW9uKHRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zY2VpdmVyLmljZUdhdGhlcmVyICYmXG4gICAgICAgICAgICAgIHRyYW5zY2VpdmVyLmljZUdhdGhlcmVyLnN0YXRlID09PSAnY29tcGxldGVkJztcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHVwZGF0ZSAubG9jYWxEZXNjcmlwdGlvbiB3aXRoIGNhbmRpZGF0ZSBhbmQgKHBvdGVudGlhbGx5KSBlbmQtb2YtY2FuZGlkYXRlcy5cbiAgICAgICAgLy8gICAgIFRvIG1ha2UgdGhpcyBoYXJkZXIsIHRoZSBnYXRoZXJlciBtaWdodCBlbWl0IGNhbmRpZGF0ZXMgYmVmb3JlIGxvY2FsZGVzY3JpcHRpb25cbiAgICAgICAgLy8gICAgIGlzIHNldC4gVG8gbWFrZSB0aGluZ3Mgd29yc2UsIGdhdGhlci5nZXRMb2NhbENhbmRpZGF0ZXMgc3RpbGwgZXJyb3JzIGluXG4gICAgICAgIC8vICAgICBFZGdlIDEwNTQ3IHdoZW4gbm8gY2FuZGlkYXRlcyBoYXZlIGJlZW4gZ2F0aGVyZWQgeWV0LlxuICAgICAgICBpZiAoc2VsZi5sb2NhbERlc2NyaXB0aW9uICYmIHNlbGYubG9jYWxEZXNjcmlwdGlvbi50eXBlICE9PSAnJykge1xuICAgICAgICAgIHZhciBzZWN0aW9ucyA9IFNEUFV0aWxzLnNwbGl0U2VjdGlvbnMoc2VsZi5sb2NhbERlc2NyaXB0aW9uLnNkcCk7XG4gICAgICAgICAgc2VjdGlvbnNbc2RwTUxpbmVJbmRleCArIDFdICs9ICghZW5kID8gJ2E9JyArIGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUgOlxuICAgICAgICAgICAgICAnYT1lbmQtb2YtY2FuZGlkYXRlcycpICsgJ1xcclxcbic7XG4gICAgICAgICAgc2VsZi5sb2NhbERlc2NyaXB0aW9uLnNkcCA9IHNlY3Rpb25zLmpvaW4oJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW1pdCBjYW5kaWRhdGUgaWYgbG9jYWxEZXNjcmlwdGlvbiBpcyBzZXQuXG4gICAgICAgIC8vIEFsc28gZW1pdHMgbnVsbCBjYW5kaWRhdGUgd2hlbiBhbGwgZ2F0aGVyZXJzIGFyZSBjb21wbGV0ZS5cbiAgICAgICAgc3dpdGNoKHNlbGYuaWNlR2F0aGVyaW5nU3RhdGUpIHtcbiAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICBzZWxmLl9sb2NhbEljZUNhbmRpZGF0ZXNCdWZmZXIucHVzaChldmVudCk7XG4gICAgICAgICAgaWYgKGNvbXBsZXRlKSB7XG4gICAgICAgICAgICBzZWxmLl9sb2NhbEljZUNhbmRpZGF0ZXNCdWZmZXIucHVzaChuZXcgRXZlbnQoJ2ljZWNhbmRpZGF0ZScpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2dhdGhlcmluZyc6XG4gICAgICAgICAgc2VsZi5fZW1pdEJ1ZmZlcmVkQ2FuZGlkYXRlcygpO1xuICAgICAgICAgIHNlbGYuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgICAgaWYgKHNlbGYub25pY2VjYW5kaWRhdGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHNlbGYub25pY2VjYW5kaWRhdGUoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29tcGxldGUpIHtcbiAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2ljZWNhbmRpZGF0ZScpKTtcbiAgICAgICAgICAgIGlmIChzZWxmLm9uaWNlY2FuZGlkYXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHNlbGYub25pY2VjYW5kaWRhdGUobmV3IEV2ZW50KCdpY2VjYW5kaWRhdGUnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmljZUdhdGhlcmluZ1N0YXRlID0gJ2NvbXBsZXRlJztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgICAvLyBzaG91bGQgbm90IGhhcHBlbi4uLiBjdXJyZW50bHkhXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBpY2VUcmFuc3BvcnQub25pY2VzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBzZWxmLl91cGRhdGVDb25uZWN0aW9uU3RhdGUoKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBkdGxzVHJhbnNwb3J0ID0gbmV3IFJUQ0R0bHNUcmFuc3BvcnQoaWNlVHJhbnNwb3J0KTtcbiAgICAgIGR0bHNUcmFuc3BvcnQub25kdGxzc3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgc2VsZi5fdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7XG4gICAgICB9O1xuICAgICAgZHRsc1RyYW5zcG9ydC5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIG9uZXJyb3IgZG9lcyBub3Qgc2V0IHN0YXRlIHRvIGZhaWxlZCBieSBpdHNlbGYuXG4gICAgICAgIGR0bHNUcmFuc3BvcnQuc3RhdGUgPSAnZmFpbGVkJztcbiAgICAgICAgc2VsZi5fdXBkYXRlQ29ubmVjdGlvblN0YXRlKCk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpY2VHYXRoZXJlcjogaWNlR2F0aGVyZXIsXG4gICAgICAgIGljZVRyYW5zcG9ydDogaWNlVHJhbnNwb3J0LFxuICAgICAgICBkdGxzVHJhbnNwb3J0OiBkdGxzVHJhbnNwb3J0XG4gICAgICB9O1xuICAgIH07XG5cbiAgICAvLyBTdGFydCB0aGUgUlRQIFNlbmRlciBhbmQgUmVjZWl2ZXIgZm9yIGEgdHJhbnNjZWl2ZXIuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5fdHJhbnNjZWl2ZSA9IGZ1bmN0aW9uKHRyYW5zY2VpdmVyLFxuICAgICAgICBzZW5kLCByZWN2KSB7XG4gICAgICB2YXIgcGFyYW1zID0gdGhpcy5fZ2V0Q29tbW9uQ2FwYWJpbGl0aWVzKHRyYW5zY2VpdmVyLmxvY2FsQ2FwYWJpbGl0aWVzLFxuICAgICAgICAgIHRyYW5zY2VpdmVyLnJlbW90ZUNhcGFiaWxpdGllcyk7XG4gICAgICBpZiAoc2VuZCAmJiB0cmFuc2NlaXZlci5ydHBTZW5kZXIpIHtcbiAgICAgICAgcGFyYW1zLmVuY29kaW5ncyA9IFt7XG4gICAgICAgICAgc3NyYzogdHJhbnNjZWl2ZXIuc2VuZFNzcmNcbiAgICAgICAgfV07XG4gICAgICAgIHBhcmFtcy5ydGNwID0ge1xuICAgICAgICAgIGNuYW1lOiBTRFBVdGlscy5sb2NhbENOYW1lLFxuICAgICAgICAgIHNzcmM6IHRyYW5zY2VpdmVyLnJlY3ZTc3JjXG4gICAgICAgIH07XG4gICAgICAgIHRyYW5zY2VpdmVyLnJ0cFNlbmRlci5zZW5kKHBhcmFtcyk7XG4gICAgICB9XG4gICAgICBpZiAocmVjdiAmJiB0cmFuc2NlaXZlci5ydHBSZWNlaXZlcikge1xuICAgICAgICBwYXJhbXMuZW5jb2RpbmdzID0gW3tcbiAgICAgICAgICBzc3JjOiB0cmFuc2NlaXZlci5yZWN2U3NyY1xuICAgICAgICB9XTtcbiAgICAgICAgcGFyYW1zLnJ0Y3AgPSB7XG4gICAgICAgICAgY25hbWU6IHRyYW5zY2VpdmVyLmNuYW1lLFxuICAgICAgICAgIHNzcmM6IHRyYW5zY2VpdmVyLnNlbmRTc3JjXG4gICAgICAgIH07XG4gICAgICAgIHRyYW5zY2VpdmVyLnJ0cFJlY2VpdmVyLnJlY2VpdmUocGFyYW1zKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5zZXRMb2NhbERlc2NyaXB0aW9uID1cbiAgICAgICAgZnVuY3Rpb24oZGVzY3JpcHRpb24pIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAnb2ZmZXInKSB7XG4gICAgICAgIGlmICghdGhpcy5fcGVuZGluZ09mZmVyKSB7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50cmFuc2NlaXZlcnMgPSB0aGlzLl9wZW5kaW5nT2ZmZXI7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdPZmZlcjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAnYW5zd2VyJykge1xuICAgICAgICB2YXIgc2VjdGlvbnMgPSBTRFBVdGlscy5zcGxpdFNlY3Rpb25zKHNlbGYucmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcbiAgICAgICAgdmFyIHNlc3Npb25wYXJ0ID0gc2VjdGlvbnMuc2hpZnQoKTtcbiAgICAgICAgc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihtZWRpYVNlY3Rpb24sIHNkcE1MaW5lSW5kZXgpIHtcbiAgICAgICAgICB2YXIgdHJhbnNjZWl2ZXIgPSBzZWxmLnRyYW5zY2VpdmVyc1tzZHBNTGluZUluZGV4XTtcbiAgICAgICAgICB2YXIgaWNlR2F0aGVyZXIgPSB0cmFuc2NlaXZlci5pY2VHYXRoZXJlcjtcbiAgICAgICAgICB2YXIgaWNlVHJhbnNwb3J0ID0gdHJhbnNjZWl2ZXIuaWNlVHJhbnNwb3J0O1xuICAgICAgICAgIHZhciBkdGxzVHJhbnNwb3J0ID0gdHJhbnNjZWl2ZXIuZHRsc1RyYW5zcG9ydDtcbiAgICAgICAgICB2YXIgbG9jYWxDYXBhYmlsaXRpZXMgPSB0cmFuc2NlaXZlci5sb2NhbENhcGFiaWxpdGllcztcbiAgICAgICAgICB2YXIgcmVtb3RlQ2FwYWJpbGl0aWVzID0gdHJhbnNjZWl2ZXIucmVtb3RlQ2FwYWJpbGl0aWVzO1xuICAgICAgICAgIHZhciByZWplY3RlZCA9IG1lZGlhU2VjdGlvbi5zcGxpdCgnXFxuJywgMSlbMF1cbiAgICAgICAgICAgICAgLnNwbGl0KCcgJywgMilbMV0gPT09ICcwJztcblxuICAgICAgICAgIGlmICghcmVqZWN0ZWQpIHtcbiAgICAgICAgICAgIHZhciByZW1vdGVJY2VQYXJhbWV0ZXJzID0gU0RQVXRpbHMuZ2V0SWNlUGFyYW1ldGVycyhtZWRpYVNlY3Rpb24sXG4gICAgICAgICAgICAgICAgc2Vzc2lvbnBhcnQpO1xuICAgICAgICAgICAgaWNlVHJhbnNwb3J0LnN0YXJ0KGljZUdhdGhlcmVyLCByZW1vdGVJY2VQYXJhbWV0ZXJzLCAnY29udHJvbGxlZCcpO1xuXG4gICAgICAgICAgICB2YXIgcmVtb3RlRHRsc1BhcmFtZXRlcnMgPSBTRFBVdGlscy5nZXREdGxzUGFyYW1ldGVycyhtZWRpYVNlY3Rpb24sXG4gICAgICAgICAgICAgIHNlc3Npb25wYXJ0KTtcbiAgICAgICAgICAgIGR0bHNUcmFuc3BvcnQuc3RhcnQocmVtb3RlRHRsc1BhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgaW50ZXJzZWN0aW9uIG9mIGNhcGFiaWxpdGllcy5cbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSBzZWxmLl9nZXRDb21tb25DYXBhYmlsaXRpZXMobG9jYWxDYXBhYmlsaXRpZXMsXG4gICAgICAgICAgICAgICAgcmVtb3RlQ2FwYWJpbGl0aWVzKTtcblxuICAgICAgICAgICAgLy8gU3RhcnQgdGhlIFJUQ1J0cFNlbmRlci4gVGhlIFJUQ1J0cFJlY2VpdmVyIGZvciB0aGlzIHRyYW5zY2VpdmVyXG4gICAgICAgICAgICAvLyBoYXMgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQgaW4gc2V0UmVtb3RlRGVzY3JpcHRpb24uXG4gICAgICAgICAgICBzZWxmLl90cmFuc2NlaXZlKHRyYW5zY2VpdmVyLFxuICAgICAgICAgICAgICAgIHBhcmFtcy5jb2RlY3MubGVuZ3RoID4gMCxcbiAgICAgICAgICAgICAgICBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2NhbERlc2NyaXB0aW9uID0ge1xuICAgICAgICB0eXBlOiBkZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICBzZHA6IGRlc2NyaXB0aW9uLnNkcFxuICAgICAgfTtcbiAgICAgIHN3aXRjaCAoZGVzY3JpcHRpb24udHlwZSkge1xuICAgICAgICBjYXNlICdvZmZlcic6XG4gICAgICAgICAgdGhpcy5fdXBkYXRlU2lnbmFsaW5nU3RhdGUoJ2hhdmUtbG9jYWwtb2ZmZXInKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYW5zd2VyJzpcbiAgICAgICAgICB0aGlzLl91cGRhdGVTaWduYWxpbmdTdGF0ZSgnc3RhYmxlJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW5zdXBwb3J0ZWQgdHlwZSBcIicgKyBkZXNjcmlwdGlvbi50eXBlICsgJ1wiJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGEgc3VjY2VzcyBjYWxsYmFjayB3YXMgcHJvdmlkZWQsIGVtaXQgSUNFIGNhbmRpZGF0ZXMgYWZ0ZXIgaXQgaGFzIGJlZW5cbiAgICAgIC8vIGV4ZWN1dGVkLiBPdGhlcndpc2UsIGVtaXQgY2FsbGJhY2sgYWZ0ZXIgdGhlIFByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgICB2YXIgaGFzQ2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJlxuICAgICAgICB0eXBlb2YgYXJndW1lbnRzWzFdID09PSAnZnVuY3Rpb24nO1xuICAgICAgaWYgKGhhc0NhbGxiYWNrKSB7XG4gICAgICAgIHZhciBjYiA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY2IoKTtcbiAgICAgICAgICBpZiAoc2VsZi5pY2VHYXRoZXJpbmdTdGF0ZSA9PT0gJ25ldycpIHtcbiAgICAgICAgICAgIHNlbGYuaWNlR2F0aGVyaW5nU3RhdGUgPSAnZ2F0aGVyaW5nJztcbiAgICAgICAgICB9XG4gICAgICAgICAgc2VsZi5fZW1pdEJ1ZmZlcmVkQ2FuZGlkYXRlcygpO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICAgIHZhciBwID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICBwLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICghaGFzQ2FsbGJhY2spIHtcbiAgICAgICAgICBpZiAoc2VsZi5pY2VHYXRoZXJpbmdTdGF0ZSA9PT0gJ25ldycpIHtcbiAgICAgICAgICAgIHNlbGYuaWNlR2F0aGVyaW5nU3RhdGUgPSAnZ2F0aGVyaW5nJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVXN1YWxseSBjYW5kaWRhdGVzIHdpbGwgYmUgZW1pdHRlZCBlYXJsaWVyLlxuICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHNlbGYuX2VtaXRCdWZmZXJlZENhbmRpZGF0ZXMuYmluZChzZWxmKSwgNTAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcDtcbiAgICB9O1xuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5zZXRSZW1vdGVEZXNjcmlwdGlvbiA9XG4gICAgICAgIGZ1bmN0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgc3RyZWFtID0gbmV3IE1lZGlhU3RyZWFtKCk7XG4gICAgICB2YXIgcmVjZWl2ZXJMaXN0ID0gW107XG4gICAgICB2YXIgc2VjdGlvbnMgPSBTRFBVdGlscy5zcGxpdFNlY3Rpb25zKGRlc2NyaXB0aW9uLnNkcCk7XG4gICAgICB2YXIgc2Vzc2lvbnBhcnQgPSBzZWN0aW9ucy5zaGlmdCgpO1xuICAgICAgc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihtZWRpYVNlY3Rpb24sIHNkcE1MaW5lSW5kZXgpIHtcbiAgICAgICAgdmFyIGxpbmVzID0gU0RQVXRpbHMuc3BsaXRMaW5lcyhtZWRpYVNlY3Rpb24pO1xuICAgICAgICB2YXIgbWxpbmUgPSBsaW5lc1swXS5zdWJzdHIoMikuc3BsaXQoJyAnKTtcbiAgICAgICAgdmFyIGtpbmQgPSBtbGluZVswXTtcbiAgICAgICAgdmFyIHJlamVjdGVkID0gbWxpbmVbMV0gPT09ICcwJztcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IFNEUFV0aWxzLmdldERpcmVjdGlvbihtZWRpYVNlY3Rpb24sIHNlc3Npb25wYXJ0KTtcblxuICAgICAgICB2YXIgdHJhbnNjZWl2ZXI7XG4gICAgICAgIHZhciBpY2VHYXRoZXJlcjtcbiAgICAgICAgdmFyIGljZVRyYW5zcG9ydDtcbiAgICAgICAgdmFyIGR0bHNUcmFuc3BvcnQ7XG4gICAgICAgIHZhciBydHBTZW5kZXI7XG4gICAgICAgIHZhciBydHBSZWNlaXZlcjtcbiAgICAgICAgdmFyIHNlbmRTc3JjO1xuICAgICAgICB2YXIgcmVjdlNzcmM7XG4gICAgICAgIHZhciBsb2NhbENhcGFiaWxpdGllcztcblxuICAgICAgICB2YXIgdHJhY2s7XG4gICAgICAgIC8vIEZJWE1FOiBlbnN1cmUgdGhlIG1lZGlhU2VjdGlvbiBoYXMgcnRjcC1tdXggc2V0LlxuICAgICAgICB2YXIgcmVtb3RlQ2FwYWJpbGl0aWVzID0gU0RQVXRpbHMucGFyc2VSdHBQYXJhbWV0ZXJzKG1lZGlhU2VjdGlvbik7XG4gICAgICAgIHZhciByZW1vdGVJY2VQYXJhbWV0ZXJzO1xuICAgICAgICB2YXIgcmVtb3RlRHRsc1BhcmFtZXRlcnM7XG4gICAgICAgIGlmICghcmVqZWN0ZWQpIHtcbiAgICAgICAgICByZW1vdGVJY2VQYXJhbWV0ZXJzID0gU0RQVXRpbHMuZ2V0SWNlUGFyYW1ldGVycyhtZWRpYVNlY3Rpb24sXG4gICAgICAgICAgICAgIHNlc3Npb25wYXJ0KTtcbiAgICAgICAgICByZW1vdGVEdGxzUGFyYW1ldGVycyA9IFNEUFV0aWxzLmdldER0bHNQYXJhbWV0ZXJzKG1lZGlhU2VjdGlvbixcbiAgICAgICAgICAgICAgc2Vzc2lvbnBhcnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtaWQgPSBTRFBVdGlscy5tYXRjaFByZWZpeChtZWRpYVNlY3Rpb24sICdhPW1pZDonKVswXS5zdWJzdHIoNik7XG5cbiAgICAgICAgdmFyIGNuYW1lO1xuICAgICAgICAvLyBHZXRzIHRoZSBmaXJzdCBTU1JDLiBOb3RlIHRoYXQgd2l0aCBSVFggdGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgU1NSQ3MuXG4gICAgICAgIHZhciByZW1vdGVTc3JjID0gU0RQVXRpbHMubWF0Y2hQcmVmaXgobWVkaWFTZWN0aW9uLCAnYT1zc3JjOicpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFNEUFV0aWxzLnBhcnNlU3NyY01lZGlhKGxpbmUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24ob2JqKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvYmouYXR0cmlidXRlID09PSAnY25hbWUnO1xuICAgICAgICAgICAgfSlbMF07XG4gICAgICAgIGlmIChyZW1vdGVTc3JjKSB7XG4gICAgICAgICAgcmVjdlNzcmMgPSBwYXJzZUludChyZW1vdGVTc3JjLnNzcmMsIDEwKTtcbiAgICAgICAgICBjbmFtZSA9IHJlbW90ZVNzcmMudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRpb24udHlwZSA9PT0gJ29mZmVyJykge1xuICAgICAgICAgIHZhciB0cmFuc3BvcnRzID0gc2VsZi5fY3JlYXRlSWNlQW5kRHRsc1RyYW5zcG9ydHMobWlkLCBzZHBNTGluZUluZGV4KTtcblxuICAgICAgICAgIGxvY2FsQ2FwYWJpbGl0aWVzID0gUlRDUnRwUmVjZWl2ZXIuZ2V0Q2FwYWJpbGl0aWVzKGtpbmQpO1xuICAgICAgICAgIHNlbmRTc3JjID0gKDIgKiBzZHBNTGluZUluZGV4ICsgMikgKiAxMDAxO1xuXG4gICAgICAgICAgcnRwUmVjZWl2ZXIgPSBuZXcgUlRDUnRwUmVjZWl2ZXIodHJhbnNwb3J0cy5kdGxzVHJhbnNwb3J0LCBraW5kKTtcblxuICAgICAgICAgIHRyYWNrID0gcnRwUmVjZWl2ZXIudHJhY2s7XG4gICAgICAgICAgcmVjZWl2ZXJMaXN0LnB1c2goW3RyYWNrLCBydHBSZWNlaXZlcl0pO1xuICAgICAgICAgIC8vIEZJWE1FOiBub3QgY29ycmVjdCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJlYW1zIGJ1dCB0aGF0IGlzXG4gICAgICAgICAgLy8gbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gdGhpcyBzaGltLlxuICAgICAgICAgIHN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG5cbiAgICAgICAgICAvLyBGSVhNRTogbG9vayBhdCBkaXJlY3Rpb24uXG4gICAgICAgICAgaWYgKHNlbGYubG9jYWxTdHJlYW1zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgc2VsZi5sb2NhbFN0cmVhbXNbMF0uZ2V0VHJhY2tzKCkubGVuZ3RoID49IHNkcE1MaW5lSW5kZXgpIHtcbiAgICAgICAgICAgIC8vIEZJWE1FOiBhY3R1YWxseSBtb3JlIGNvbXBsaWNhdGVkLCBuZWVkcyB0byBtYXRjaCB0eXBlcyBldGNcbiAgICAgICAgICAgIHZhciBsb2NhbHRyYWNrID0gc2VsZi5sb2NhbFN0cmVhbXNbMF0uZ2V0VHJhY2tzKClbc2RwTUxpbmVJbmRleF07XG4gICAgICAgICAgICBydHBTZW5kZXIgPSBuZXcgUlRDUnRwU2VuZGVyKGxvY2FsdHJhY2ssIHRyYW5zcG9ydHMuZHRsc1RyYW5zcG9ydCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2VsZi50cmFuc2NlaXZlcnNbc2RwTUxpbmVJbmRleF0gPSB7XG4gICAgICAgICAgICBpY2VHYXRoZXJlcjogdHJhbnNwb3J0cy5pY2VHYXRoZXJlcixcbiAgICAgICAgICAgIGljZVRyYW5zcG9ydDogdHJhbnNwb3J0cy5pY2VUcmFuc3BvcnQsXG4gICAgICAgICAgICBkdGxzVHJhbnNwb3J0OiB0cmFuc3BvcnRzLmR0bHNUcmFuc3BvcnQsXG4gICAgICAgICAgICBsb2NhbENhcGFiaWxpdGllczogbG9jYWxDYXBhYmlsaXRpZXMsXG4gICAgICAgICAgICByZW1vdGVDYXBhYmlsaXRpZXM6IHJlbW90ZUNhcGFiaWxpdGllcyxcbiAgICAgICAgICAgIHJ0cFNlbmRlcjogcnRwU2VuZGVyLFxuICAgICAgICAgICAgcnRwUmVjZWl2ZXI6IHJ0cFJlY2VpdmVyLFxuICAgICAgICAgICAga2luZDoga2luZCxcbiAgICAgICAgICAgIG1pZDogbWlkLFxuICAgICAgICAgICAgY25hbWU6IGNuYW1lLFxuICAgICAgICAgICAgc2VuZFNzcmM6IHNlbmRTc3JjLFxuICAgICAgICAgICAgcmVjdlNzcmM6IHJlY3ZTc3JjXG4gICAgICAgICAgfTtcbiAgICAgICAgICAvLyBTdGFydCB0aGUgUlRDUnRwUmVjZWl2ZXIgbm93LiBUaGUgUlRQU2VuZGVyIGlzIHN0YXJ0ZWQgaW4gc2V0TG9jYWxEZXNjcmlwdGlvbi5cbiAgICAgICAgICBzZWxmLl90cmFuc2NlaXZlKHNlbGYudHJhbnNjZWl2ZXJzW3NkcE1MaW5lSW5kZXhdLFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgZGlyZWN0aW9uID09PSAnc2VuZHJlY3YnIHx8IGRpcmVjdGlvbiA9PT0gJ3NlbmRvbmx5Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRpb24udHlwZSA9PT0gJ2Fuc3dlcicgJiYgIXJlamVjdGVkKSB7XG4gICAgICAgICAgdHJhbnNjZWl2ZXIgPSBzZWxmLnRyYW5zY2VpdmVyc1tzZHBNTGluZUluZGV4XTtcbiAgICAgICAgICBpY2VHYXRoZXJlciA9IHRyYW5zY2VpdmVyLmljZUdhdGhlcmVyO1xuICAgICAgICAgIGljZVRyYW5zcG9ydCA9IHRyYW5zY2VpdmVyLmljZVRyYW5zcG9ydDtcbiAgICAgICAgICBkdGxzVHJhbnNwb3J0ID0gdHJhbnNjZWl2ZXIuZHRsc1RyYW5zcG9ydDtcbiAgICAgICAgICBydHBTZW5kZXIgPSB0cmFuc2NlaXZlci5ydHBTZW5kZXI7XG4gICAgICAgICAgcnRwUmVjZWl2ZXIgPSB0cmFuc2NlaXZlci5ydHBSZWNlaXZlcjtcbiAgICAgICAgICBzZW5kU3NyYyA9IHRyYW5zY2VpdmVyLnNlbmRTc3JjO1xuICAgICAgICAgIC8vcmVjdlNzcmMgPSB0cmFuc2NlaXZlci5yZWN2U3NyYztcbiAgICAgICAgICBsb2NhbENhcGFiaWxpdGllcyA9IHRyYW5zY2VpdmVyLmxvY2FsQ2FwYWJpbGl0aWVzO1xuXG4gICAgICAgICAgc2VsZi50cmFuc2NlaXZlcnNbc2RwTUxpbmVJbmRleF0ucmVjdlNzcmMgPSByZWN2U3NyYztcbiAgICAgICAgICBzZWxmLnRyYW5zY2VpdmVyc1tzZHBNTGluZUluZGV4XS5yZW1vdGVDYXBhYmlsaXRpZXMgPVxuICAgICAgICAgICAgICByZW1vdGVDYXBhYmlsaXRpZXM7XG4gICAgICAgICAgc2VsZi50cmFuc2NlaXZlcnNbc2RwTUxpbmVJbmRleF0uY25hbWUgPSBjbmFtZTtcblxuICAgICAgICAgIGljZVRyYW5zcG9ydC5zdGFydChpY2VHYXRoZXJlciwgcmVtb3RlSWNlUGFyYW1ldGVycywgJ2NvbnRyb2xsaW5nJyk7XG4gICAgICAgICAgZHRsc1RyYW5zcG9ydC5zdGFydChyZW1vdGVEdGxzUGFyYW1ldGVycyk7XG5cbiAgICAgICAgICBzZWxmLl90cmFuc2NlaXZlKHRyYW5zY2VpdmVyLFxuICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09ICdzZW5kcmVjdicgfHwgZGlyZWN0aW9uID09PSAncmVjdm9ubHknLFxuICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09ICdzZW5kcmVjdicgfHwgZGlyZWN0aW9uID09PSAnc2VuZG9ubHknKTtcblxuICAgICAgICAgIGlmIChydHBSZWNlaXZlciAmJlxuICAgICAgICAgICAgICAoZGlyZWN0aW9uID09PSAnc2VuZHJlY3YnIHx8IGRpcmVjdGlvbiA9PT0gJ3NlbmRvbmx5JykpIHtcbiAgICAgICAgICAgIHRyYWNrID0gcnRwUmVjZWl2ZXIudHJhY2s7XG4gICAgICAgICAgICByZWNlaXZlckxpc3QucHVzaChbdHJhY2ssIHJ0cFJlY2VpdmVyXSk7XG4gICAgICAgICAgICBzdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGSVhNRTogYWN0dWFsbHkgdGhlIHJlY2VpdmVyIHNob3VsZCBiZSBjcmVhdGVkIGxhdGVyLlxuICAgICAgICAgICAgZGVsZXRlIHRyYW5zY2VpdmVyLnJ0cFJlY2VpdmVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVtb3RlRGVzY3JpcHRpb24gPSB7XG4gICAgICAgICAgdHlwZTogZGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICBzZHA6IGRlc2NyaXB0aW9uLnNkcFxuICAgICAgfTtcbiAgICAgIHN3aXRjaCAoZGVzY3JpcHRpb24udHlwZSkge1xuICAgICAgICBjYXNlICdvZmZlcic6XG4gICAgICAgICAgdGhpcy5fdXBkYXRlU2lnbmFsaW5nU3RhdGUoJ2hhdmUtcmVtb3RlLW9mZmVyJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Fuc3dlcic6XG4gICAgICAgICAgdGhpcy5fdXBkYXRlU2lnbmFsaW5nU3RhdGUoJ3N0YWJsZScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Vuc3VwcG9ydGVkIHR5cGUgXCInICsgZGVzY3JpcHRpb24udHlwZSArICdcIicpO1xuICAgICAgfVxuICAgICAgaWYgKHN0cmVhbS5nZXRUcmFja3MoKS5sZW5ndGgpIHtcbiAgICAgICAgc2VsZi5yZW1vdGVTdHJlYW1zLnB1c2goc3RyZWFtKTtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KCdhZGRzdHJlYW0nKTtcbiAgICAgICAgICBldmVudC5zdHJlYW0gPSBzdHJlYW07XG4gICAgICAgICAgc2VsZi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICBpZiAoc2VsZi5vbmFkZHN0cmVhbSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHNlbGYub25hZGRzdHJlYW0oZXZlbnQpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVjZWl2ZXJMaXN0LmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgdmFyIHRyYWNrID0gaXRlbVswXTtcbiAgICAgICAgICAgIHZhciByZWNlaXZlciA9IGl0ZW1bMV07XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ3RyYWNrJyk7XG4gICAgICAgICAgICBldmVudC50cmFjayA9IHRyYWNrO1xuICAgICAgICAgICAgZXZlbnQucmVjZWl2ZXIgPSByZWNlaXZlcjtcbiAgICAgICAgICAgIGV2ZW50LnN0cmVhbXMgPSBbc3RyZWFtXTtcbiAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgICAgICBpZiAoc2VsZi5vbnRyYWNrICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICBzZWxmLm9udHJhY2soZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBlb2YgYXJndW1lbnRzWzFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGFyZ3VtZW50c1sxXSwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMudHJhbnNjZWl2ZXJzLmZvckVhY2goZnVuY3Rpb24odHJhbnNjZWl2ZXIpIHtcbiAgICAgICAgLyogbm90IHlldFxuICAgICAgICBpZiAodHJhbnNjZWl2ZXIuaWNlR2F0aGVyZXIpIHtcbiAgICAgICAgICB0cmFuc2NlaXZlci5pY2VHYXRoZXJlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgICovXG4gICAgICAgIGlmICh0cmFuc2NlaXZlci5pY2VUcmFuc3BvcnQpIHtcbiAgICAgICAgICB0cmFuc2NlaXZlci5pY2VUcmFuc3BvcnQuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0cmFuc2NlaXZlci5kdGxzVHJhbnNwb3J0KSB7XG4gICAgICAgICAgdHJhbnNjZWl2ZXIuZHRsc1RyYW5zcG9ydC5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyYW5zY2VpdmVyLnJ0cFNlbmRlcikge1xuICAgICAgICAgIHRyYW5zY2VpdmVyLnJ0cFNlbmRlci5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyYW5zY2VpdmVyLnJ0cFJlY2VpdmVyKSB7XG4gICAgICAgICAgdHJhbnNjZWl2ZXIucnRwUmVjZWl2ZXIuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEZJWE1FOiBjbGVhbiB1cCB0cmFja3MsIGxvY2FsIHN0cmVhbXMsIHJlbW90ZSBzdHJlYW1zLCBldGNcbiAgICAgIHRoaXMuX3VwZGF0ZVNpZ25hbGluZ1N0YXRlKCdjbG9zZWQnKTtcbiAgICB9O1xuXG4gICAgLy8gVXBkYXRlIHRoZSBzaWduYWxpbmcgc3RhdGUuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5fdXBkYXRlU2lnbmFsaW5nU3RhdGUgPVxuICAgICAgICBmdW5jdGlvbihuZXdTdGF0ZSkge1xuICAgICAgdGhpcy5zaWduYWxpbmdTdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KCdzaWduYWxpbmdzdGF0ZWNoYW5nZScpO1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgIGlmICh0aGlzLm9uc2lnbmFsaW5nc3RhdGVjaGFuZ2UgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vbnNpZ25hbGluZ3N0YXRlY2hhbmdlKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdG8gZmlyZSB0aGUgbmVnb3RpYXRpb25uZWVkZWQgZXZlbnQuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5fbWF5YmVGaXJlTmVnb3RpYXRpb25OZWVkZWQgPVxuICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgIC8vIEZpcmUgYXdheSAoZm9yIG5vdykuXG4gICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ25lZ290aWF0aW9ubmVlZGVkJyk7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgaWYgKHRoaXMub25uZWdvdGlhdGlvbm5lZWRlZCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9ubmVnb3RpYXRpb25uZWVkZWQoZXZlbnQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gc3RhdGUuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5fdXBkYXRlQ29ubmVjdGlvblN0YXRlID1cbiAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgbmV3U3RhdGU7XG4gICAgICB2YXIgc3RhdGVzID0ge1xuICAgICAgICAnbmV3JzogMCxcbiAgICAgICAgY2xvc2VkOiAwLFxuICAgICAgICBjb25uZWN0aW5nOiAwLFxuICAgICAgICBjaGVja2luZzogMCxcbiAgICAgICAgY29ubmVjdGVkOiAwLFxuICAgICAgICBjb21wbGV0ZWQ6IDAsXG4gICAgICAgIGZhaWxlZDogMFxuICAgICAgfTtcbiAgICAgIHRoaXMudHJhbnNjZWl2ZXJzLmZvckVhY2goZnVuY3Rpb24odHJhbnNjZWl2ZXIpIHtcbiAgICAgICAgc3RhdGVzW3RyYW5zY2VpdmVyLmljZVRyYW5zcG9ydC5zdGF0ZV0rKztcbiAgICAgICAgc3RhdGVzW3RyYW5zY2VpdmVyLmR0bHNUcmFuc3BvcnQuc3RhdGVdKys7XG4gICAgICB9KTtcbiAgICAgIC8vIElDRVRyYW5zcG9ydC5jb21wbGV0ZWQgYW5kIGNvbm5lY3RlZCBhcmUgdGhlIHNhbWUgZm9yIHRoaXMgcHVycG9zZS5cbiAgICAgIHN0YXRlc1snY29ubmVjdGVkJ10gKz0gc3RhdGVzWydjb21wbGV0ZWQnXTtcblxuICAgICAgbmV3U3RhdGUgPSAnbmV3JztcbiAgICAgIGlmIChzdGF0ZXNbJ2ZhaWxlZCddID4gMCkge1xuICAgICAgICBuZXdTdGF0ZSA9ICdmYWlsZWQnO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZXNbJ2Nvbm5lY3RpbmcnXSA+IDAgfHwgc3RhdGVzWydjaGVja2luZyddID4gMCkge1xuICAgICAgICBuZXdTdGF0ZSA9ICdjb25uZWN0aW5nJztcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGVzWydkaXNjb25uZWN0ZWQnXSA+IDApIHtcbiAgICAgICAgbmV3U3RhdGUgPSAnZGlzY29ubmVjdGVkJztcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGVzWyduZXcnXSA+IDApIHtcbiAgICAgICAgbmV3U3RhdGUgPSAnbmV3JztcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGVzWydjb25uZWN0aW5nJ10gPiAwIHx8IHN0YXRlc1snY29tcGxldGVkJ10gPiAwKSB7XG4gICAgICAgIG5ld1N0YXRlID0gJ2Nvbm5lY3RlZCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdTdGF0ZSAhPT0gc2VsZi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgc2VsZi5pY2VDb25uZWN0aW9uU3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KCdpY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UnKTtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmNyZWF0ZU9mZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICBpZiAodGhpcy5fcGVuZGluZ09mZmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY3JlYXRlT2ZmZXIgY2FsbGVkIHdoaWxlIHRoZXJlIGlzIGEgcGVuZGluZyBvZmZlci4nKTtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZlck9wdGlvbnM7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgYXJndW1lbnRzWzBdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9mZmVyT3B0aW9ucyA9IGFyZ3VtZW50c1swXTtcbiAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBvZmZlck9wdGlvbnMgPSBhcmd1bWVudHNbMl07XG4gICAgICB9XG5cbiAgICAgIHZhciB0cmFja3MgPSBbXTtcbiAgICAgIHZhciBudW1BdWRpb1RyYWNrcyA9IDA7XG4gICAgICB2YXIgbnVtVmlkZW9UcmFja3MgPSAwO1xuICAgICAgLy8gRGVmYXVsdCB0byBzZW5kcmVjdi5cbiAgICAgIGlmICh0aGlzLmxvY2FsU3RyZWFtcy5sZW5ndGgpIHtcbiAgICAgICAgbnVtQXVkaW9UcmFja3MgPSB0aGlzLmxvY2FsU3RyZWFtc1swXS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aDtcbiAgICAgICAgbnVtVmlkZW9UcmFja3MgPSB0aGlzLmxvY2FsU3RyZWFtc1swXS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIC8vIERldGVybWluZSBudW1iZXIgb2YgYXVkaW8gYW5kIHZpZGVvIHRyYWNrcyB3ZSBuZWVkIHRvIHNlbmQvcmVjdi5cbiAgICAgIGlmIChvZmZlck9wdGlvbnMpIHtcbiAgICAgICAgLy8gUmVqZWN0IENocm9tZSBsZWdhY3kgY29uc3RyYWludHMuXG4gICAgICAgIGlmIChvZmZlck9wdGlvbnMubWFuZGF0b3J5IHx8IG9mZmVyT3B0aW9ucy5vcHRpb25hbCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICAgICdMZWdhY3kgbWFuZGF0b3J5L29wdGlvbmFsIGNvbnN0cmFpbnRzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9mZmVyT3B0aW9ucy5vZmZlclRvUmVjZWl2ZUF1ZGlvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBudW1BdWRpb1RyYWNrcyA9IG9mZmVyT3B0aW9ucy5vZmZlclRvUmVjZWl2ZUF1ZGlvO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvZmZlck9wdGlvbnMub2ZmZXJUb1JlY2VpdmVWaWRlbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtVmlkZW9UcmFja3MgPSBvZmZlck9wdGlvbnMub2ZmZXJUb1JlY2VpdmVWaWRlbztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMubG9jYWxTdHJlYW1zLmxlbmd0aCkge1xuICAgICAgICAvLyBQdXNoIGxvY2FsIHN0cmVhbXMuXG4gICAgICAgIHRoaXMubG9jYWxTdHJlYW1zWzBdLmdldFRyYWNrcygpLmZvckVhY2goZnVuY3Rpb24odHJhY2spIHtcbiAgICAgICAgICB0cmFja3MucHVzaCh7XG4gICAgICAgICAgICBraW5kOiB0cmFjay5raW5kLFxuICAgICAgICAgICAgdHJhY2s6IHRyYWNrLFxuICAgICAgICAgICAgd2FudFJlY2VpdmU6IHRyYWNrLmtpbmQgPT09ICdhdWRpbycgP1xuICAgICAgICAgICAgICAgIG51bUF1ZGlvVHJhY2tzID4gMCA6IG51bVZpZGVvVHJhY2tzID4gMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh0cmFjay5raW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICBudW1BdWRpb1RyYWNrcy0tO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHJhY2sua2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgbnVtVmlkZW9UcmFja3MtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gQ3JlYXRlIE0tbGluZXMgZm9yIHJlY3Zvbmx5IHN0cmVhbXMuXG4gICAgICB3aGlsZSAobnVtQXVkaW9UcmFja3MgPiAwIHx8IG51bVZpZGVvVHJhY2tzID4gMCkge1xuICAgICAgICBpZiAobnVtQXVkaW9UcmFja3MgPiAwKSB7XG4gICAgICAgICAgdHJhY2tzLnB1c2goe1xuICAgICAgICAgICAga2luZDogJ2F1ZGlvJyxcbiAgICAgICAgICAgIHdhbnRSZWNlaXZlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbnVtQXVkaW9UcmFja3MtLTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVtVmlkZW9UcmFja3MgPiAwKSB7XG4gICAgICAgICAgdHJhY2tzLnB1c2goe1xuICAgICAgICAgICAga2luZDogJ3ZpZGVvJyxcbiAgICAgICAgICAgIHdhbnRSZWNlaXZlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbnVtVmlkZW9UcmFja3MtLTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc2RwID0gU0RQVXRpbHMud3JpdGVTZXNzaW9uQm9pbGVycGxhdGUoKTtcbiAgICAgIHZhciB0cmFuc2NlaXZlcnMgPSBbXTtcbiAgICAgIHRyYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKG1saW5lLCBzZHBNTGluZUluZGV4KSB7XG4gICAgICAgIC8vIEZvciBlYWNoIHRyYWNrLCBjcmVhdGUgYW4gaWNlIGdhdGhlcmVyLCBpY2UgdHJhbnNwb3J0LCBkdGxzIHRyYW5zcG9ydCxcbiAgICAgICAgLy8gcG90ZW50aWFsbHkgcnRwc2VuZGVyIGFuZCBydHByZWNlaXZlci5cbiAgICAgICAgdmFyIHRyYWNrID0gbWxpbmUudHJhY2s7XG4gICAgICAgIHZhciBraW5kID0gbWxpbmUua2luZDtcbiAgICAgICAgdmFyIG1pZCA9IFNEUFV0aWxzLmdlbmVyYXRlSWRlbnRpZmllcigpO1xuXG4gICAgICAgIHZhciB0cmFuc3BvcnRzID0gc2VsZi5fY3JlYXRlSWNlQW5kRHRsc1RyYW5zcG9ydHMobWlkLCBzZHBNTGluZUluZGV4KTtcblxuICAgICAgICB2YXIgbG9jYWxDYXBhYmlsaXRpZXMgPSBSVENSdHBTZW5kZXIuZ2V0Q2FwYWJpbGl0aWVzKGtpbmQpO1xuICAgICAgICB2YXIgcnRwU2VuZGVyO1xuICAgICAgICB2YXIgcnRwUmVjZWl2ZXI7XG5cbiAgICAgICAgLy8gZ2VuZXJhdGUgYW4gc3NyYyBub3csIHRvIGJlIHVzZWQgbGF0ZXIgaW4gcnRwU2VuZGVyLnNlbmRcbiAgICAgICAgdmFyIHNlbmRTc3JjID0gKDIgKiBzZHBNTGluZUluZGV4ICsgMSkgKiAxMDAxO1xuICAgICAgICBpZiAodHJhY2spIHtcbiAgICAgICAgICBydHBTZW5kZXIgPSBuZXcgUlRDUnRwU2VuZGVyKHRyYWNrLCB0cmFuc3BvcnRzLmR0bHNUcmFuc3BvcnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1saW5lLndhbnRSZWNlaXZlKSB7XG4gICAgICAgICAgcnRwUmVjZWl2ZXIgPSBuZXcgUlRDUnRwUmVjZWl2ZXIodHJhbnNwb3J0cy5kdGxzVHJhbnNwb3J0LCBraW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyYW5zY2VpdmVyc1tzZHBNTGluZUluZGV4XSA9IHtcbiAgICAgICAgICBpY2VHYXRoZXJlcjogdHJhbnNwb3J0cy5pY2VHYXRoZXJlcixcbiAgICAgICAgICBpY2VUcmFuc3BvcnQ6IHRyYW5zcG9ydHMuaWNlVHJhbnNwb3J0LFxuICAgICAgICAgIGR0bHNUcmFuc3BvcnQ6IHRyYW5zcG9ydHMuZHRsc1RyYW5zcG9ydCxcbiAgICAgICAgICBsb2NhbENhcGFiaWxpdGllczogbG9jYWxDYXBhYmlsaXRpZXMsXG4gICAgICAgICAgcmVtb3RlQ2FwYWJpbGl0aWVzOiBudWxsLFxuICAgICAgICAgIHJ0cFNlbmRlcjogcnRwU2VuZGVyLFxuICAgICAgICAgIHJ0cFJlY2VpdmVyOiBydHBSZWNlaXZlcixcbiAgICAgICAgICBraW5kOiBraW5kLFxuICAgICAgICAgIG1pZDogbWlkLFxuICAgICAgICAgIHNlbmRTc3JjOiBzZW5kU3NyYyxcbiAgICAgICAgICByZWN2U3NyYzogbnVsbFxuICAgICAgICB9O1xuICAgICAgICB2YXIgdHJhbnNjZWl2ZXIgPSB0cmFuc2NlaXZlcnNbc2RwTUxpbmVJbmRleF07XG4gICAgICAgIHNkcCArPSBTRFBVdGlscy53cml0ZU1lZGlhU2VjdGlvbih0cmFuc2NlaXZlcixcbiAgICAgICAgICAgIHRyYW5zY2VpdmVyLmxvY2FsQ2FwYWJpbGl0aWVzLCAnb2ZmZXInLCBzZWxmLmxvY2FsU3RyZWFtc1swXSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fcGVuZGluZ09mZmVyID0gdHJhbnNjZWl2ZXJzO1xuICAgICAgdmFyIGRlc2MgPSBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHtcbiAgICAgICAgdHlwZTogJ29mZmVyJyxcbiAgICAgICAgc2RwOiBzZHBcbiAgICAgIH0pO1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggJiYgdHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dChhcmd1bWVudHNbMF0sIDAsIGRlc2MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShkZXNjKTtcbiAgICB9O1xuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5jcmVhdGVBbnN3ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBhbnN3ZXJPcHRpb25zO1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGFyZ3VtZW50c1swXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhbnN3ZXJPcHRpb25zID0gYXJndW1lbnRzWzBdO1xuICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGFuc3dlck9wdGlvbnMgPSBhcmd1bWVudHNbMl07XG4gICAgICB9XG5cbiAgICAgIHZhciBzZHAgPSBTRFBVdGlscy53cml0ZVNlc3Npb25Cb2lsZXJwbGF0ZSgpO1xuICAgICAgdGhpcy50cmFuc2NlaXZlcnMuZm9yRWFjaChmdW5jdGlvbih0cmFuc2NlaXZlcikge1xuICAgICAgICAvLyBDYWxjdWxhdGUgaW50ZXJzZWN0aW9uIG9mIGNhcGFiaWxpdGllcy5cbiAgICAgICAgdmFyIGNvbW1vbkNhcGFiaWxpdGllcyA9IHNlbGYuX2dldENvbW1vbkNhcGFiaWxpdGllcyhcbiAgICAgICAgICAgIHRyYW5zY2VpdmVyLmxvY2FsQ2FwYWJpbGl0aWVzLFxuICAgICAgICAgICAgdHJhbnNjZWl2ZXIucmVtb3RlQ2FwYWJpbGl0aWVzKTtcblxuICAgICAgICBzZHAgKz0gU0RQVXRpbHMud3JpdGVNZWRpYVNlY3Rpb24odHJhbnNjZWl2ZXIsIGNvbW1vbkNhcGFiaWxpdGllcyxcbiAgICAgICAgICAgICdhbnN3ZXInLCBzZWxmLmxvY2FsU3RyZWFtc1swXSk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIGRlc2MgPSBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHtcbiAgICAgICAgdHlwZTogJ2Fuc3dlcicsXG4gICAgICAgIHNkcDogc2RwXG4gICAgICB9KTtcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICYmIHR5cGVvZiBhcmd1bWVudHNbMF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoYXJndW1lbnRzWzBdLCAwLCBkZXNjKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZGVzYyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRkSWNlQ2FuZGlkYXRlID0gZnVuY3Rpb24oY2FuZGlkYXRlKSB7XG4gICAgICB2YXIgbUxpbmVJbmRleCA9IGNhbmRpZGF0ZS5zZHBNTGluZUluZGV4O1xuICAgICAgaWYgKGNhbmRpZGF0ZS5zZHBNaWQpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnRyYW5zY2VpdmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICh0aGlzLnRyYW5zY2VpdmVyc1tpXS5taWQgPT09IGNhbmRpZGF0ZS5zZHBNaWQpIHtcbiAgICAgICAgICAgIG1MaW5lSW5kZXggPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgdHJhbnNjZWl2ZXIgPSB0aGlzLnRyYW5zY2VpdmVyc1ttTGluZUluZGV4XTtcbiAgICAgIGlmICh0cmFuc2NlaXZlcikge1xuICAgICAgICB2YXIgY2FuZCA9IE9iamVjdC5rZXlzKGNhbmRpZGF0ZS5jYW5kaWRhdGUpLmxlbmd0aCA+IDAgP1xuICAgICAgICAgICAgU0RQVXRpbHMucGFyc2VDYW5kaWRhdGUoY2FuZGlkYXRlLmNhbmRpZGF0ZSkgOiB7fTtcbiAgICAgICAgLy8gSWdub3JlIENocm9tZSdzIGludmFsaWQgY2FuZGlkYXRlcyBzaW5jZSBFZGdlIGRvZXMgbm90IGxpa2UgdGhlbS5cbiAgICAgICAgaWYgKGNhbmQucHJvdG9jb2wgPT09ICd0Y3AnICYmIGNhbmQucG9ydCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZ25vcmUgUlRDUCBjYW5kaWRhdGVzLCB3ZSBhc3N1bWUgUlRDUC1NVVguXG4gICAgICAgIGlmIChjYW5kLmNvbXBvbmVudCAhPT0gJzEnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEEgZGlydHkgaGFjayB0byBtYWtlIHNhbXBsZXMgd29yay5cbiAgICAgICAgaWYgKGNhbmQudHlwZSA9PT0gJ2VuZE9mQ2FuZGlkYXRlcycpIHtcbiAgICAgICAgICBjYW5kID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNjZWl2ZXIuaWNlVHJhbnNwb3J0LmFkZFJlbW90ZUNhbmRpZGF0ZShjYW5kKTtcblxuICAgICAgICAvLyB1cGRhdGUgdGhlIHJlbW90ZURlc2NyaXB0aW9uLlxuICAgICAgICB2YXIgc2VjdGlvbnMgPSBTRFBVdGlscy5zcGxpdFNlY3Rpb25zKHRoaXMucmVtb3RlRGVzY3JpcHRpb24uc2RwKTtcbiAgICAgICAgc2VjdGlvbnNbbUxpbmVJbmRleCArIDFdICs9IChjYW5kLnR5cGUgPyBjYW5kaWRhdGUuY2FuZGlkYXRlLnRyaW0oKVxuICAgICAgICAgICAgOiAnYT1lbmQtb2YtY2FuZGlkYXRlcycpICsgJ1xcclxcbic7XG4gICAgICAgIHRoaXMucmVtb3RlRGVzY3JpcHRpb24uc2RwID0gc2VjdGlvbnMuam9pbignJyk7XG4gICAgICB9XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZW9mIGFyZ3VtZW50c1sxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dChhcmd1bWVudHNbMV0sIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH07XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmdldFN0YXRzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcHJvbWlzZXMgPSBbXTtcbiAgICAgIHRoaXMudHJhbnNjZWl2ZXJzLmZvckVhY2goZnVuY3Rpb24odHJhbnNjZWl2ZXIpIHtcbiAgICAgICAgWydydHBTZW5kZXInLCAncnRwUmVjZWl2ZXInLCAnaWNlR2F0aGVyZXInLCAnaWNlVHJhbnNwb3J0JyxcbiAgICAgICAgICAgICdkdGxzVHJhbnNwb3J0J10uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgICAgICBpZiAodHJhbnNjZWl2ZXJbbWV0aG9kXSkge1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0cmFuc2NlaXZlclttZXRob2RdLmdldFN0YXRzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVvZiBhcmd1bWVudHNbMV0gPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICBhcmd1bWVudHNbMV07XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgICB2YXIgcmVzdWx0cyA9IHt9O1xuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbihmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgICByZXMuZm9yRWFjaChmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChmdW5jdGlvbihpZCkge1xuICAgICAgICAgICAgICByZXN1bHRzW2lkXSA9IHJlc3VsdFtpZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNiLCAwLCByZXN1bHRzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxuXG4gIC8vIEF0dGFjaCBhIG1lZGlhIHN0cmVhbSB0byBhbiBlbGVtZW50LlxuICBhdHRhY2hNZWRpYVN0cmVhbTogZnVuY3Rpb24oZWxlbWVudCwgc3RyZWFtKSB7XG4gICAgbG9nZ2luZygnREVQUkVDQVRFRCwgYXR0YWNoTWVkaWFTdHJlYW0gd2lsbCBzb29uIGJlIHJlbW92ZWQuJyk7XG4gICAgZWxlbWVudC5zcmNPYmplY3QgPSBzdHJlYW07XG4gIH0sXG5cbiAgcmVhdHRhY2hNZWRpYVN0cmVhbTogZnVuY3Rpb24odG8sIGZyb20pIHtcbiAgICBsb2dnaW5nKCdERVBSRUNBVEVELCByZWF0dGFjaE1lZGlhU3RyZWFtIHdpbGwgc29vbiBiZSByZW1vdmVkLicpO1xuICAgIHRvLnNyY09iamVjdCA9IGZyb20uc3JjT2JqZWN0O1xuICB9XG59XG5cbi8vIEV4cG9zZSBwdWJsaWMgbWV0aG9kcy5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzaGltUGVlckNvbm5lY3Rpb246IGVkZ2VTaGltLnNoaW1QZWVyQ29ubmVjdGlvbixcbiAgYXR0YWNoTWVkaWFTdHJlYW06IGVkZ2VTaGltLmF0dGFjaE1lZGlhU3RyZWFtLFxuICByZWF0dGFjaE1lZGlhU3RyZWFtOiBlZGdlU2hpbS5yZWF0dGFjaE1lZGlhU3RyZWFtXG59XG5cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9lZGdlL2VkZ2Vfc2hpbS5qc1xuICoqIG1vZHVsZSBpZCA9IDE1MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLypcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2VcbiAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2VcbiAqICB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBsb2dnaW5nID0gcmVxdWlyZSgnLi4vdXRpbHMnKS5sb2c7XG52YXIgYnJvd3NlckRldGFpbHMgPSByZXF1aXJlKCcuLi91dGlscycpLmJyb3dzZXJEZXRhaWxzO1xuXG52YXIgZmlyZWZveFNoaW0gPSB7XG4gIHNoaW1PblRyYWNrOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcgJiYgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uICYmICEoJ29udHJhY2snIGluXG4gICAgICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUpKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSwgJ29udHJhY2snLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLl9vbnRyYWNrOyB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgaWYgKHRoaXMuX29udHJhY2spIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0aGlzLl9vbnRyYWNrKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdGhpcy5fb250cmFja3BvbHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdGhpcy5fb250cmFjayA9IGYpO1xuICAgICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignYWRkc3RyZWFtJywgdGhpcy5fb250cmFja3BvbHkgPSBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBlLnN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKGZ1bmN0aW9uKHRyYWNrKSB7XG4gICAgICAgICAgICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgndHJhY2snKTtcbiAgICAgICAgICAgICAgZXZlbnQudHJhY2sgPSB0cmFjaztcbiAgICAgICAgICAgICAgZXZlbnQucmVjZWl2ZXIgPSB7dHJhY2s6IHRyYWNrfTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RyZWFtcyA9IFtlLnN0cmVhbV07XG4gICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgICAgICB9LmJpbmQodGhpcykpO1xuICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICBzaGltU291cmNlT2JqZWN0OiBmdW5jdGlvbigpIHtcbiAgICAvLyBGaXJlZm94IGhhcyBzdXBwb3J0ZWQgbW96U3JjT2JqZWN0IHNpbmNlIEZGMjIsIHVucHJlZml4ZWQgaW4gNDIuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAod2luZG93LkhUTUxNZWRpYUVsZW1lbnQgJiZcbiAgICAgICAgISgnc3JjT2JqZWN0JyBpbiB3aW5kb3cuSFRNTE1lZGlhRWxlbWVudC5wcm90b3R5cGUpKSB7XG4gICAgICAgIC8vIFNoaW0gdGhlIHNyY09iamVjdCBwcm9wZXJ0eSwgb25jZSwgd2hlbiBIVE1MTWVkaWFFbGVtZW50IGlzIGZvdW5kLlxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LkhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlLCAnc3JjT2JqZWN0Jywge1xuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tb3pTcmNPYmplY3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgICAgICAgdGhpcy5tb3pTcmNPYmplY3QgPSBzdHJlYW07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgc2hpbVBlZXJDb25uZWN0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAvLyBUaGUgUlRDUGVlckNvbm5lY3Rpb24gb2JqZWN0LlxuICAgIGlmICghd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gPSBmdW5jdGlvbihwY0NvbmZpZywgcGNDb25zdHJhaW50cykge1xuICAgICAgICBpZiAoYnJvd3NlckRldGFpbHMudmVyc2lvbiA8IDM4KSB7XG4gICAgICAgICAgLy8gLnVybHMgaXMgbm90IHN1cHBvcnRlZCBpbiBGRiA8IDM4LlxuICAgICAgICAgIC8vIGNyZWF0ZSBSVENJY2VTZXJ2ZXJzIHdpdGggYSBzaW5nbGUgdXJsLlxuICAgICAgICAgIGlmIChwY0NvbmZpZyAmJiBwY0NvbmZpZy5pY2VTZXJ2ZXJzKSB7XG4gICAgICAgICAgICB2YXIgbmV3SWNlU2VydmVycyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwY0NvbmZpZy5pY2VTZXJ2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHZhciBzZXJ2ZXIgPSBwY0NvbmZpZy5pY2VTZXJ2ZXJzW2ldO1xuICAgICAgICAgICAgICBpZiAoc2VydmVyLmhhc093blByb3BlcnR5KCd1cmxzJykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlcnZlci51cmxzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgbmV3U2VydmVyID0ge1xuICAgICAgICAgICAgICAgICAgICB1cmw6IHNlcnZlci51cmxzW2pdXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgaWYgKHNlcnZlci51cmxzW2pdLmluZGV4T2YoJ3R1cm4nKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdTZXJ2ZXIudXNlcm5hbWUgPSBzZXJ2ZXIudXNlcm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlcnZlci5jcmVkZW50aWFsID0gc2VydmVyLmNyZWRlbnRpYWw7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBuZXdJY2VTZXJ2ZXJzLnB1c2gobmV3U2VydmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3SWNlU2VydmVycy5wdXNoKHBjQ29uZmlnLmljZVNlcnZlcnNbaV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwY0NvbmZpZy5pY2VTZXJ2ZXJzID0gbmV3SWNlU2VydmVycztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBtb3pSVENQZWVyQ29ubmVjdGlvbihwY0NvbmZpZywgcGNDb25zdHJhaW50cyk7IC8vIGpzY3M6aWdub3JlIHJlcXVpcmVDYXBpdGFsaXplZENvbnN0cnVjdG9yc1xuICAgICAgfTtcbiAgICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUgPSBtb3pSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGU7XG5cbiAgICAgIC8vIHdyYXAgc3RhdGljIG1ldGhvZHMuIEN1cnJlbnRseSBqdXN0IGdlbmVyYXRlQ2VydGlmaWNhdGUuXG4gICAgICBpZiAobW96UlRDUGVlckNvbm5lY3Rpb24uZ2VuZXJhdGVDZXJ0aWZpY2F0ZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLCAnZ2VuZXJhdGVDZXJ0aWZpY2F0ZScsIHtcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1velJUQ1BlZXJDb25uZWN0aW9uLmdlbmVyYXRlQ2VydGlmaWNhdGUuYXBwbHkobnVsbCxcbiAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gbW96UlRDUGVlckNvbm5lY3Rpb24uZ2VuZXJhdGVDZXJ0aWZpY2F0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB3aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uID0gbW96UlRDU2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgICAgd2luZG93LlJUQ0ljZUNhbmRpZGF0ZSA9IG1velJUQ0ljZUNhbmRpZGF0ZTtcbiAgICB9XG4gIH0sXG5cbiAgc2hpbUdldFVzZXJNZWRpYTogZnVuY3Rpb24oKSB7XG4gICAgLy8gZ2V0VXNlck1lZGlhIGNvbnN0cmFpbnRzIHNoaW0uXG4gICAgdmFyIGdldFVzZXJNZWRpYV8gPSBmdW5jdGlvbihjb25zdHJhaW50cywgb25TdWNjZXNzLCBvbkVycm9yKSB7XG4gICAgICB2YXIgY29uc3RyYWludHNUb0ZGMzdfID0gZnVuY3Rpb24oYykge1xuICAgICAgICBpZiAodHlwZW9mIGMgIT09ICdvYmplY3QnIHx8IGMucmVxdWlyZSkge1xuICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXF1aXJlID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKGMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3JlcXVpcmUnIHx8IGtleSA9PT0gJ2FkdmFuY2VkJyB8fCBrZXkgPT09ICdtZWRpYVNvdXJjZScpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHIgPSBjW2tleV0gPSAodHlwZW9mIGNba2V5XSA9PT0gJ29iamVjdCcpID9cbiAgICAgICAgICAgICAgY1trZXldIDoge2lkZWFsOiBjW2tleV19O1xuICAgICAgICAgIGlmIChyLm1pbiAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIHIubWF4ICE9PSB1bmRlZmluZWQgfHwgci5leGFjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXF1aXJlLnB1c2goa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHIuZXhhY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByLmV4YWN0ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICByLiBtaW4gPSByLm1heCA9IHIuZXhhY3Q7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjW2tleV0gPSByLmV4YWN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIHIuZXhhY3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyLmlkZWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGMuYWR2YW5jZWQgPSBjLmFkdmFuY2VkIHx8IFtdO1xuICAgICAgICAgICAgdmFyIG9jID0ge307XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIuaWRlYWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIG9jW2tleV0gPSB7bWluOiByLmlkZWFsLCBtYXg6IHIuaWRlYWx9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb2Nba2V5XSA9IHIuaWRlYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjLmFkdmFuY2VkLnB1c2gob2MpO1xuICAgICAgICAgICAgZGVsZXRlIHIuaWRlYWw7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzKHIpLmxlbmd0aCkge1xuICAgICAgICAgICAgICBkZWxldGUgY1trZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXF1aXJlLmxlbmd0aCkge1xuICAgICAgICAgIGMucmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGM7XG4gICAgICB9O1xuICAgICAgaWYgKGJyb3dzZXJEZXRhaWxzLnZlcnNpb24gPCAzOCkge1xuICAgICAgICBsb2dnaW5nKCdzcGVjOiAnICsgSlNPTi5zdHJpbmdpZnkoY29uc3RyYWludHMpKTtcbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzLmF1ZGlvKSB7XG4gICAgICAgICAgY29uc3RyYWludHMuYXVkaW8gPSBjb25zdHJhaW50c1RvRkYzN18oY29uc3RyYWludHMuYXVkaW8pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25zdHJhaW50cy52aWRlbykge1xuICAgICAgICAgIGNvbnN0cmFpbnRzLnZpZGVvID0gY29uc3RyYWludHNUb0ZGMzdfKGNvbnN0cmFpbnRzLnZpZGVvKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dnaW5nKCdmZjM3OiAnICsgSlNPTi5zdHJpbmdpZnkoY29uc3RyYWludHMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXZpZ2F0b3IubW96R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBvblN1Y2Nlc3MsIG9uRXJyb3IpO1xuICAgIH07XG5cbiAgICBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhID0gZ2V0VXNlck1lZGlhXztcblxuICAgIC8vIFJldHVybnMgdGhlIHJlc3VsdCBvZiBnZXRVc2VyTWVkaWEgYXMgYSBQcm9taXNlLlxuICAgIHZhciBnZXRVc2VyTWVkaWFQcm9taXNlXyA9IGZ1bmN0aW9uKGNvbnN0cmFpbnRzKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBTaGltIGZvciBtZWRpYURldmljZXMgb24gb2xkZXIgdmVyc2lvbnMuXG4gICAgaWYgKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKSB7XG4gICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzID0ge2dldFVzZXJNZWRpYTogZ2V0VXNlck1lZGlhUHJvbWlzZV8sXG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKCkgeyB9LFxuICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyOiBmdW5jdGlvbigpIHsgfVxuICAgICAgfTtcbiAgICB9XG4gICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzID1cbiAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHx8IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgICAgdmFyIGluZm9zID0gW1xuICAgICAgICAgIHtraW5kOiAnYXVkaW9pbnB1dCcsIGRldmljZUlkOiAnZGVmYXVsdCcsIGxhYmVsOiAnJywgZ3JvdXBJZDogJyd9LFxuICAgICAgICAgIHtraW5kOiAndmlkZW9pbnB1dCcsIGRldmljZUlkOiAnZGVmYXVsdCcsIGxhYmVsOiAnJywgZ3JvdXBJZDogJyd9XG4gICAgICAgIF07XG4gICAgICAgIHJlc29sdmUoaW5mb3MpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmIChicm93c2VyRGV0YWlscy52ZXJzaW9uIDwgNDEpIHtcbiAgICAgIC8vIFdvcmsgYXJvdW5kIGh0dHA6Ly9idWd6aWwubGEvMTE2OTY2NVxuICAgICAgdmFyIG9yZ0VudW1lcmF0ZURldmljZXMgPVxuICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcy5iaW5kKG5hdmlnYXRvci5tZWRpYURldmljZXMpO1xuICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBvcmdFbnVtZXJhdGVEZXZpY2VzKCkudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICBpZiAoZS5uYW1lID09PSAnTm90Rm91bmRFcnJvcicpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICAvLyBBdHRhY2ggYSBtZWRpYSBzdHJlYW0gdG8gYW4gZWxlbWVudC5cbiAgYXR0YWNoTWVkaWFTdHJlYW06IGZ1bmN0aW9uKGVsZW1lbnQsIHN0cmVhbSkge1xuICAgIGxvZ2dpbmcoJ0RFUFJFQ0FURUQsIGF0dGFjaE1lZGlhU3RyZWFtIHdpbGwgc29vbiBiZSByZW1vdmVkLicpO1xuICAgIGVsZW1lbnQuc3JjT2JqZWN0ID0gc3RyZWFtO1xuICB9LFxuXG4gIHJlYXR0YWNoTWVkaWFTdHJlYW06IGZ1bmN0aW9uKHRvLCBmcm9tKSB7XG4gICAgbG9nZ2luZygnREVQUkVDQVRFRCwgcmVhdHRhY2hNZWRpYVN0cmVhbSB3aWxsIHNvb24gYmUgcmVtb3ZlZC4nKTtcbiAgICB0by5zcmNPYmplY3QgPSBmcm9tLnNyY09iamVjdDtcbiAgfVxufVxuXG4vLyBFeHBvc2UgcHVibGljIG1ldGhvZHMuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2hpbU9uVHJhY2s6IGZpcmVmb3hTaGltLnNoaW1PblRyYWNrLFxuICBzaGltU291cmNlT2JqZWN0OiBmaXJlZm94U2hpbS5zaGltU291cmNlT2JqZWN0LFxuICBzaGltUGVlckNvbm5lY3Rpb246IGZpcmVmb3hTaGltLnNoaW1QZWVyQ29ubmVjdGlvbixcbiAgc2hpbUdldFVzZXJNZWRpYTogcmVxdWlyZSgnLi9nZXR1c2VybWVkaWEnKSxcbiAgYXR0YWNoTWVkaWFTdHJlYW06IGZpcmVmb3hTaGltLmF0dGFjaE1lZGlhU3RyZWFtLFxuICByZWF0dGFjaE1lZGlhU3RyZWFtOiBmaXJlZm94U2hpbS5yZWF0dGFjaE1lZGlhU3RyZWFtXG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvZmlyZWZveC9maXJlZm94X3NoaW0uanNcbiAqKiBtb2R1bGUgaWQgPSAxNTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlXG4gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlXG4gKiAgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbG9nZ2luZyA9IHJlcXVpcmUoJy4uL3V0aWxzJykubG9nO1xudmFyIGJyb3dzZXJEZXRhaWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKS5icm93c2VyRGV0YWlscztcblxuLy8gRXhwb3NlIHB1YmxpYyBtZXRob2RzLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgLy8gZ2V0VXNlck1lZGlhIGNvbnN0cmFpbnRzIHNoaW0uXG4gIHZhciBnZXRVc2VyTWVkaWFfID0gZnVuY3Rpb24oY29uc3RyYWludHMsIG9uU3VjY2Vzcywgb25FcnJvcikge1xuICAgIHZhciBjb25zdHJhaW50c1RvRkYzN18gPSBmdW5jdGlvbihjKSB7XG4gICAgICBpZiAodHlwZW9mIGMgIT09ICdvYmplY3QnIHx8IGMucmVxdWlyZSkge1xuICAgICAgICByZXR1cm4gYztcbiAgICAgIH1cbiAgICAgIHZhciByZXF1aXJlID0gW107XG4gICAgICBPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09PSAncmVxdWlyZScgfHwga2V5ID09PSAnYWR2YW5jZWQnIHx8IGtleSA9PT0gJ21lZGlhU291cmNlJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IGNba2V5XSA9ICh0eXBlb2YgY1trZXldID09PSAnb2JqZWN0JykgP1xuICAgICAgICAgICAgY1trZXldIDoge2lkZWFsOiBjW2tleV19O1xuICAgICAgICBpZiAoci5taW4gIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgci5tYXggIT09IHVuZGVmaW5lZCB8fCByLmV4YWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXF1aXJlLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoci5leGFjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByLmV4YWN0ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgci4gbWluID0gci5tYXggPSByLmV4YWN0O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjW2tleV0gPSByLmV4YWN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgci5leGFjdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoci5pZGVhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYy5hZHZhbmNlZCA9IGMuYWR2YW5jZWQgfHwgW107XG4gICAgICAgICAgdmFyIG9jID0ge307XG4gICAgICAgICAgaWYgKHR5cGVvZiByLmlkZWFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgb2Nba2V5XSA9IHttaW46IHIuaWRlYWwsIG1heDogci5pZGVhbH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9jW2tleV0gPSByLmlkZWFsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjLmFkdmFuY2VkLnB1c2gob2MpO1xuICAgICAgICAgIGRlbGV0ZSByLmlkZWFsO1xuICAgICAgICAgIGlmICghT2JqZWN0LmtleXMocikubGVuZ3RoKSB7XG4gICAgICAgICAgICBkZWxldGUgY1trZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAocmVxdWlyZS5sZW5ndGgpIHtcbiAgICAgICAgYy5yZXF1aXJlID0gcmVxdWlyZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjO1xuICAgIH07XG4gICAgaWYgKGJyb3dzZXJEZXRhaWxzLnZlcnNpb24gPCAzOCkge1xuICAgICAgbG9nZ2luZygnc3BlYzogJyArIEpTT04uc3RyaW5naWZ5KGNvbnN0cmFpbnRzKSk7XG4gICAgICBpZiAoY29uc3RyYWludHMuYXVkaW8pIHtcbiAgICAgICAgY29uc3RyYWludHMuYXVkaW8gPSBjb25zdHJhaW50c1RvRkYzN18oY29uc3RyYWludHMuYXVkaW8pO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnN0cmFpbnRzLnZpZGVvKSB7XG4gICAgICAgIGNvbnN0cmFpbnRzLnZpZGVvID0gY29uc3RyYWludHNUb0ZGMzdfKGNvbnN0cmFpbnRzLnZpZGVvKTtcbiAgICAgIH1cbiAgICAgIGxvZ2dpbmcoJ2ZmMzc6ICcgKyBKU09OLnN0cmluZ2lmeShjb25zdHJhaW50cykpO1xuICAgIH1cbiAgICByZXR1cm4gbmF2aWdhdG9yLm1vekdldFVzZXJNZWRpYShjb25zdHJhaW50cywgb25TdWNjZXNzLCBvbkVycm9yKTtcbiAgfTtcblxuICBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhID0gZ2V0VXNlck1lZGlhXztcblxuICAvLyBSZXR1cm5zIHRoZSByZXN1bHQgb2YgZ2V0VXNlck1lZGlhIGFzIGEgUHJvbWlzZS5cbiAgdmFyIGdldFVzZXJNZWRpYVByb21pc2VfID0gZnVuY3Rpb24oY29uc3RyYWludHMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCByZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU2hpbSBmb3IgbWVkaWFEZXZpY2VzIG9uIG9sZGVyIHZlcnNpb25zLlxuICBpZiAoIW5hdmlnYXRvci5tZWRpYURldmljZXMpIHtcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzID0ge2dldFVzZXJNZWRpYTogZ2V0VXNlck1lZGlhUHJvbWlzZV8sXG4gICAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbigpIHsgfSxcbiAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKCkgeyB9XG4gICAgfTtcbiAgfVxuICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgPVxuICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzIHx8IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICB2YXIgaW5mb3MgPSBbXG4gICAgICAgIHtraW5kOiAnYXVkaW9pbnB1dCcsIGRldmljZUlkOiAnZGVmYXVsdCcsIGxhYmVsOiAnJywgZ3JvdXBJZDogJyd9LFxuICAgICAgICB7a2luZDogJ3ZpZGVvaW5wdXQnLCBkZXZpY2VJZDogJ2RlZmF1bHQnLCBsYWJlbDogJycsIGdyb3VwSWQ6ICcnfVxuICAgICAgXTtcbiAgICAgIHJlc29sdmUoaW5mb3MpO1xuICAgIH0pO1xuICB9O1xuXG4gIGlmIChicm93c2VyRGV0YWlscy52ZXJzaW9uIDwgNDEpIHtcbiAgICAvLyBXb3JrIGFyb3VuZCBodHRwOi8vYnVnemlsLmxhLzExNjk2NjVcbiAgICB2YXIgb3JnRW51bWVyYXRlRGV2aWNlcyA9XG4gICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcy5iaW5kKG5hdmlnYXRvci5tZWRpYURldmljZXMpO1xuICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIG9yZ0VudW1lcmF0ZURldmljZXMoKS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAoZS5uYW1lID09PSAnTm90Rm91bmRFcnJvcicpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9maXJlZm94L2dldHVzZXJtZWRpYS5qc1xuICoqIG1vZHVsZSBpZCA9IDE1M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9teU1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGEyZTNhZGFmYzRkZDM1NGE1ZTcyIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL3V0aWxzLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19yb290LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2lzT2JqZWN0LmpzIiwid2VicGFjazovLy8uL3NyYy9yZWFkZXIvZWFuX3JlYWRlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fTWFwLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2lzQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9iYXJjb2RlX3JlYWRlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2dsLXZlYzIvY2xvbmUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21tb24vYXJyYXlfaGVscGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21tb24vaW1hZ2VfZGVidWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fZ2V0TmF0aXZlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19pc0tleWFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX25hdGl2ZUNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9lcS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL21lcmdlLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21tb24vY3ZfdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbW1vbi9pbWFnZV93cmFwcGVyLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hcnJheVJlZHVjZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fY29weU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faXNIb3N0T2JqZWN0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19pc0luZGV4LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19pc1Byb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0FyZ3VtZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvbG9jYXRvci90cmFjZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9jb2RlXzM5X3JlYWRlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2dsLXZlYzIvZG90LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19TdGFjay5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYXNzb2NEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Fzc29jR2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hc3NvY0hhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYXNzb2NTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2NvcHlBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faGFzaEhhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faW5kZXhLZXlzLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9rZXlzLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL2tleXNJbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9yZXN0LmpzIiwid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3F1YWdnYS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYW5hbHl0aWNzL3Jlc3VsdF9jb2xsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbW1vbi9jbHVzdGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21tb24vZXZlbnRzLmpzIiwid2VicGFjazovLy8uL3NyYy9jb21tb24vc3ViSW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbW1vbi90eXBlZGVmcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29uZmlnL2NvbmZpZy5kZXYuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbmZpZy9jb25maWcuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2RlY29kZXIvYmFyY29kZV9kZWNvZGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9kZWNvZGVyL2JyZXNlbmhhbS5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5wdXQvY2FtZXJhX2FjY2Vzcy5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5wdXQvZnJhbWVfZ3JhYmJlci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5wdXQvaW1hZ2VfbG9hZGVyLmpzIiwid2VicGFjazovLy8uL3NyYy9pbnB1dC9pbnB1dF9zdHJlYW0uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2xvY2F0b3IvYmFyY29kZV9sb2NhdG9yLmpzIiwid2VicGFjazovLy8uL3NyYy9sb2NhdG9yL3Jhc3Rlcml6ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2xvY2F0b3Ivc2tlbGV0b25pemVyLmpzIiwid2VicGFjazovLy8uL3NyYy9yZWFkZXIvY29kYWJhcl9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9jb2RlXzEyOF9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9jb2RlXzM5X3Zpbl9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9lYW5fMl9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9lYW5fNV9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9lYW5fOF9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci9pMm9mNV9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci91cGNfZV9yZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlYWRlci91cGNfcmVhZGVyLmpzIiwid2VicGFjazovLy8uL34vZ2wtbWF0Mi9jb3B5LmpzIiwid2VicGFjazovLy8uL34vZ2wtbWF0Mi9jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9nbC1tYXQyL2ludmVydC5qcyIsIndlYnBhY2s6Ly8vLi9+L2dsLXZlYzIvc2NhbGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9nbC12ZWMyL3RyYW5zZm9ybU1hdDIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9nbC12ZWMzL2Nsb25lLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19IYXNoLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19NYXBDYWNoZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fUmVmbGVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fU2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX1VpbnQ4QXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX1dlYWtNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2FkZE1hcEVudHJ5LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19hZGRTZXRFbnRyeS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYXBwbHkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2FycmF5UHVzaC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUFzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUNsb25lLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19iYXNlQ3JlYXRlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19iYXNlRmxhdHRlbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUZvci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUZvck93bi5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUhhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Jhc2VLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Jhc2VNZXJnZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZVBpY2suanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Jhc2VQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19jaGVja0dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Nsb25lTWFwLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19jbG9uZVJlZ0V4cC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fY2xvbmVTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2Nsb25lU3ltYm9sLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2NvcHlPYmplY3RXaXRoLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19jb3B5U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fY3JlYXRlQXNzaWduZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2NyZWF0ZUJhc2VGb3IuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2dldExlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fZ2V0U3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fZ2V0VGFnLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19oYXNoR2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19oYXNoU2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19pbml0Q2xvbmVBcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2luaXRDbG9uZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9faXNJdGVyYXRlZUNhbGwuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2l0ZXJhdG9yVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fbWFwQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX21hcERlbGV0ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fbWFwR2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19tYXBIYXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX21hcFNldC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fbWFwVG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fc2V0VG9BcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fc3RhY2tEZWxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX3N0YWNrR2V0LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19zdGFja0hhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fc3RhY2tTZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNOYXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvaXNQbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9waWNrLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL3RvSW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC90b051bWJlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC90b1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2FkYXB0ZXJfY29yZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9jaHJvbWUvY2hyb21lX3NoaW0uanMiLCJ3ZWJwYWNrOi8vLy4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvY2hyb21lL2dldHVzZXJtZWRpYS5qcyIsIndlYnBhY2s6Ly8vLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9lZGdlL2VkZ2Vfc2RwLmpzIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2VkZ2UvZWRnZV9zaGltLmpzIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2ZpcmVmb3gvZmlyZWZveF9zaGltLmpzIiwid2VicGFjazovLy8uL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2ZpcmVmb3gvZ2V0dXNlcm1lZGlhLmpzIl0s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Ozs7OztBQ25CQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE9BQU87QUFDbEIsWUFBVyxPQUFPO0FBQ2xCLGNBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3BCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE9BQU87QUFDbEIsY0FBYSxXQUFXO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3ZCQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVyxFQUFFO0FBQ2IsY0FBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE9BQU87QUFDbEIsY0FBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7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QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsRUFBRTtBQUNiLGNBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzFEQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVyxFQUFFO0FBQ2IsY0FBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFhLFNBQVM7QUFDdEIsV0FBVTtBQUNWO0FBQ0EsY0FBYSxTQUFTO0FBQ3RCLFdBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFDOzs7Ozs7O0FDMUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUF5QixxQkFBcUI7QUFDOUM7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF1QixzQ0FBc0M7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPOztBQUVQO0FBQ0Esd0JBQXVCLGdEQUFnRDtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQSxjQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBaUI7QUFDakI7QUFDQSxZQUFXO0FBQ1gsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBLFFBQU87QUFDUDtBQUNBLFFBQU87QUFDUDtBQUNBLFFBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQU87O0FBRVA7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Q0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDdE9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBdUI7QUFDdkIsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsK0JBQThCO0FBQzlCLHFDQUFvQyxFQUFFO0FBQ3RDLHdDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTLGdFQUFnRTtBQUN6RSxVQUFTO0FBQ1Q7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0EiLCJmaWxlIjoicXVhZ2dhLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShmYWN0b3J5LnRvU3RyaW5nKCkpLmRlZmF1bHQ7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJRdWFnZ2FcIl0gPSBmYWN0b3J5KGZhY3RvcnkudG9TdHJpbmcoKSkuZGVmYXVsdDtcblx0ZWxzZVxuXHRcdHJvb3RbXCJRdWFnZ2FcIl0gPSBmYWN0b3J5KGZhY3RvcnkudG9TdHJpbmcoKSkuZGVmYXVsdDtcbn0pKHRoaXMsIGZ1bmN0aW9uKF9fZmFjdG9yeVNvdXJjZV9fKSB7XG5yZXR1cm4gXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjay9teU1vZHVsZURlZmluaXRpb25cbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZTtcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZToge30sXG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZSwgbW9kdWxlLCBtb2R1bGUuZSwgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5lO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDE1Nik7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL2Jvb3RzdHJhcCBhMmUzYWRhZmM0ZGQzNTRhNWU3MlxuICoqLyIsIi8qXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlXG4gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlXG4gKiAgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbG9nRGlzYWJsZWRfID0gZmFsc2U7XG5cbi8vIFV0aWxpdHkgbWV0aG9kcy5cbnZhciB1dGlscyA9IHtcbiAgZGlzYWJsZUxvZzogZnVuY3Rpb24oYm9vbCkge1xuICAgIGlmICh0eXBlb2YgYm9vbCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdBcmd1bWVudCB0eXBlOiAnICsgdHlwZW9mIGJvb2wgK1xuICAgICAgICAgICcuIFBsZWFzZSB1c2UgYSBib29sZWFuLicpO1xuICAgIH1cbiAgICBsb2dEaXNhYmxlZF8gPSBib29sO1xuICAgIHJldHVybiAoYm9vbCkgPyAnYWRhcHRlci5qcyBsb2dnaW5nIGRpc2FibGVkJyA6XG4gICAgICAgICdhZGFwdGVyLmpzIGxvZ2dpbmcgZW5hYmxlZCc7XG4gIH0sXG5cbiAgbG9nOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChsb2dEaXNhYmxlZF8pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKTtcbiAgICB9XG4gIH0sXG5cbiAgIC8qKlxuICAgKiBFeHRyYWN0IGJyb3dzZXIgdmVyc2lvbiBvdXQgb2YgdGhlIHByb3ZpZGVkIHVzZXIgYWdlbnQgc3RyaW5nLlxuICAgKiBAcGFyYW0geyFzdHJpbmd9IHVhc3RyaW5nIHVzZXJBZ2VudCBzdHJpbmcuXG4gICAqIEBwYXJhbSB7IXN0cmluZ30gZXhwciBSZWd1bGFyIGV4cHJlc3Npb24gdXNlZCBhcyBtYXRjaCBjcml0ZXJpYS5cbiAgICogQHBhcmFtIHshbnVtYmVyfSBwb3MgcG9zaXRpb24gaW4gdGhlIHZlcnNpb24gc3RyaW5nIHRvIGJlIHJldHVybmVkLlxuICAgKiBAcmV0dXJuIHshbnVtYmVyfSBicm93c2VyIHZlcnNpb24uXG4gICAqL1xuICBleHRyYWN0VmVyc2lvbjogZnVuY3Rpb24odWFzdHJpbmcsIGV4cHIsIHBvcykge1xuICAgIHZhciBtYXRjaCA9IHVhc3RyaW5nLm1hdGNoKGV4cHIpO1xuICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaC5sZW5ndGggPj0gcG9zICYmIHBhcnNlSW50KG1hdGNoW3Bvc10sIDEwKTtcbiAgfSxcblxuICAvKipcbiAgICogQnJvd3NlciBkZXRlY3Rvci5cbiAgICogQHJldHVybiB7b2JqZWN0fSByZXN1bHQgY29udGFpbmluZyBicm93c2VyLCB2ZXJzaW9uIGFuZCBtaW5WZXJzaW9uXG4gICAqICAgICBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgZGV0ZWN0QnJvd3NlcjogZnVuY3Rpb24oKSB7XG4gICAgLy8gUmV0dXJuZWQgcmVzdWx0IG9iamVjdC5cbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgcmVzdWx0LmJyb3dzZXIgPSBudWxsO1xuICAgIHJlc3VsdC52ZXJzaW9uID0gbnVsbDtcbiAgICByZXN1bHQubWluVmVyc2lvbiA9IG51bGw7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIXdpbmRvdy5uYXZpZ2F0b3IpIHtcbiAgICAgIHJlc3VsdC5icm93c2VyID0gJ05vdCBhIGJyb3dzZXIuJztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBlbHNlIGlmIChuYXZpZ2F0b3IubW96R2V0VXNlck1lZGlhKSB7XG4gICAgICAvLyBGaXJlZm94LlxuICAgICAgcmVzdWx0LmJyb3dzZXIgPSAnZmlyZWZveCc7XG4gICAgICByZXN1bHQudmVyc2lvbiA9IHRoaXMuZXh0cmFjdFZlcnNpb24obmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgICAgICAvRmlyZWZveFxcLyhbMC05XSspXFwuLywgMSk7XG4gICAgICByZXN1bHQubWluVmVyc2lvbiA9IDMxO1xuICAgIH0gZWxzZSBpZiAobmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSAmJiB3aW5kb3cud2Via2l0UlRDUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIC8vIENocm9tZSwgQ2hyb21pdW0sIFdlYlZpZXcsIE9wZXJhIGFuZCBvdGhlciBXZWJLaXQgYnJvd3NlcnMuXG4gICAgICByZXN1bHQuYnJvd3NlciA9ICdjaHJvbWUnO1xuICAgICAgcmVzdWx0LnZlcnNpb24gPSB0aGlzLmV4dHJhY3RWZXJzaW9uKG5hdmlnYXRvci51c2VyQWdlbnQsXG4gICAgICAgICAgL0Nocm9tKGV8aXVtKVxcLyhbMC05XSspXFwuLywgMik7XG4gICAgICByZXN1bHQubWluVmVyc2lvbiA9IDM4O1xuICAgIH0gZWxzZSBpZihuYXZpZ2F0b3IubWVkaWFEZXZpY2VzICYmXG4gICAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykuKFxcZCspJC8pKSB7XG4gICAgICAvLyBFZGdlLlxuICAgICAgcmVzdWx0LmJyb3dzZXIgPSAnZWRnZSc7XG4gICAgICByZXN1bHQudmVyc2lvbiA9IHRoaXMuZXh0cmFjdFZlcnNpb24obmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgICAgICAvRWRnZVxcLyhcXGQrKS4oXFxkKykkLywgMik7XG4gICAgICByZXN1bHQubWluVmVyc2lvbiA9IDEwNTQ3O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQuYnJvd3NlciA9ICdOb3QgYSBzdXBwb3J0ZWQgYnJvd3Nlci4nO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBXYXJuIGlmIHZlcnNpb24gaXMgbGVzcyB0aGFuIG1pblZlcnNpb24uXG4gICAgaWYgKHJlc3VsdC52ZXJzaW9uIDwgcmVzdWx0Lm1pblZlcnNpb24pIHtcbiAgICAgIHV0aWxzLmxvZygnQnJvd3NlcjogJyArIHJlc3VsdC5icm93c2VyICsgJyBWZXJzaW9uOiAnICsgcmVzdWx0LnZlcnNpb24gK1xuICAgICAgICAgICcgPCBtaW5pbXVtIHN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgcmVzdWx0Lm1pblZlcnNpb24gK1xuICAgICAgICAgICdcXG4gc29tZSB0aGluZ3MgbWlnaHQgbm90IHdvcmshJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxuLy8gRXhwb3J0LlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGxvZzogdXRpbHMubG9nLFxuICBkaXNhYmxlTG9nOiB1dGlscy5kaXNhYmxlTG9nLFxuICBicm93c2VyRGV0YWlsczogdXRpbHMuZGV0ZWN0QnJvd3NlcigpLFxuICBleHRyYWN0VmVyc2lvbjogdXRpbHMuZXh0cmFjdFZlcnNpb25cbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvdXRpbHMuanNcbiAqKiBtb2R1bGUgaWQgPSAwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgY2hlY2tHbG9iYWwgPSByZXF1aXJlKCcuL19jaGVja0dsb2JhbCcpO1xuXG4vKiogVXNlZCB0byBkZXRlcm1pbmUgaWYgdmFsdWVzIGFyZSBvZiB0aGUgbGFuZ3VhZ2UgdHlwZSBgT2JqZWN0YC4gKi9cbnZhciBvYmplY3RUeXBlcyA9IHtcbiAgJ2Z1bmN0aW9uJzogdHJ1ZSxcbiAgJ29iamVjdCc6IHRydWVcbn07XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSAob2JqZWN0VHlwZXNbdHlwZW9mIGV4cG9ydHNdICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUpXG4gID8gZXhwb3J0c1xuICA6IHVuZGVmaW5lZDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSAob2JqZWN0VHlwZXNbdHlwZW9mIG1vZHVsZV0gJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUpXG4gID8gbW9kdWxlXG4gIDogdW5kZWZpbmVkO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSBjaGVja0dsb2JhbChmcmVlRXhwb3J0cyAmJiBmcmVlTW9kdWxlICYmIHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IGNoZWNrR2xvYmFsKG9iamVjdFR5cGVzW3R5cGVvZiBzZWxmXSAmJiBzZWxmKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGB3aW5kb3dgLiAqL1xudmFyIGZyZWVXaW5kb3cgPSBjaGVja0dsb2JhbChvYmplY3RUeXBlc1t0eXBlb2Ygd2luZG93XSAmJiB3aW5kb3cpO1xuXG4vKiogRGV0ZWN0IGB0aGlzYCBhcyB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciB0aGlzR2xvYmFsID0gY2hlY2tHbG9iYWwob2JqZWN0VHlwZXNbdHlwZW9mIHRoaXNdICYmIHRoaXMpO1xuXG4vKipcbiAqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuXG4gKlxuICogVGhlIGB0aGlzYCB2YWx1ZSBpcyB1c2VkIGlmIGl0J3MgdGhlIGdsb2JhbCBvYmplY3QgdG8gYXZvaWQgR3JlYXNlbW9ua2V5J3NcbiAqIHJlc3RyaWN0ZWQgYHdpbmRvd2Agb2JqZWN0LCBvdGhlcndpc2UgdGhlIGB3aW5kb3dgIG9iamVjdCBpcyB1c2VkLlxuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHxcbiAgKChmcmVlV2luZG93ICE9PSAodGhpc0dsb2JhbCAmJiB0aGlzR2xvYmFsLndpbmRvdykpICYmIGZyZWVXaW5kb3cpIHx8XG4gICAgZnJlZVNlbGYgfHwgdGhpc0dsb2JhbCB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX3Jvb3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZSBbbGFuZ3VhZ2UgdHlwZV0oaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4OCkgb2YgYE9iamVjdGAuXG4gKiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2lzT2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiaW1wb3J0IEJhcmNvZGVSZWFkZXIgZnJvbSAnLi9iYXJjb2RlX3JlYWRlcic7XHJcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ2xvZGFzaCc7XHJcblxyXG5mdW5jdGlvbiBFQU5SZWFkZXIob3B0cywgc3VwcGxlbWVudHMpIHtcclxuICAgIG9wdHMgPSBtZXJnZShnZXREZWZhdWxDb25maWcoKSwgb3B0cyk7XHJcbiAgICBCYXJjb2RlUmVhZGVyLmNhbGwodGhpcywgb3B0cywgc3VwcGxlbWVudHMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXREZWZhdWxDb25maWcoKSB7XHJcbiAgICB2YXIgY29uZmlnID0ge307XHJcblxyXG4gICAgT2JqZWN0LmtleXMoRUFOUmVhZGVyLkNPTkZJR19LRVlTKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xyXG4gICAgICAgIGNvbmZpZ1trZXldID0gRUFOUmVhZGVyLkNPTkZJR19LRVlTW2tleV0uZGVmYXVsdDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbmZpZztcclxufVxyXG5cclxudmFyIHByb3BlcnRpZXMgPSB7XHJcbiAgICBDT0RFX0xfU1RBUlQ6IHt2YWx1ZTogMH0sXHJcbiAgICBDT0RFX0dfU1RBUlQ6IHt2YWx1ZTogMTB9LFxyXG4gICAgU1RBUlRfUEFUVEVSTjoge3ZhbHVlOiBbMSwgMSwgMV19LFxyXG4gICAgU1RPUF9QQVRURVJOOiB7dmFsdWU6IFsxLCAxLCAxXX0sXHJcbiAgICBNSURETEVfUEFUVEVSTjoge3ZhbHVlOiBbMSwgMSwgMSwgMSwgMV19LFxyXG4gICAgRVhURU5TSU9OX1NUQVJUX1BBVFRFUk46IHt2YWx1ZTogWzEsIDEsIDJdfSxcclxuICAgIENPREVfUEFUVEVSTjoge3ZhbHVlOiBbXHJcbiAgICAgICAgWzMsIDIsIDEsIDFdLFxyXG4gICAgICAgIFsyLCAyLCAyLCAxXSxcclxuICAgICAgICBbMiwgMSwgMiwgMl0sXHJcbiAgICAgICAgWzEsIDQsIDEsIDFdLFxyXG4gICAgICAgIFsxLCAxLCAzLCAyXSxcclxuICAgICAgICBbMSwgMiwgMywgMV0sXHJcbiAgICAgICAgWzEsIDEsIDEsIDRdLFxyXG4gICAgICAgIFsxLCAzLCAxLCAyXSxcclxuICAgICAgICBbMSwgMiwgMSwgM10sXHJcbiAgICAgICAgWzMsIDEsIDEsIDJdLFxyXG4gICAgICAgIFsxLCAxLCAyLCAzXSxcclxuICAgICAgICBbMSwgMiwgMiwgMl0sXHJcbiAgICAgICAgWzIsIDIsIDEsIDJdLFxyXG4gICAgICAgIFsxLCAxLCA0LCAxXSxcclxuICAgICAgICBbMiwgMywgMSwgMV0sXHJcbiAgICAgICAgWzEsIDMsIDIsIDFdLFxyXG4gICAgICAgIFs0LCAxLCAxLCAxXSxcclxuICAgICAgICBbMiwgMSwgMywgMV0sXHJcbiAgICAgICAgWzMsIDEsIDIsIDFdLFxyXG4gICAgICAgIFsyLCAxLCAxLCAzXVxyXG4gICAgXX0sXHJcbiAgICBDT0RFX0ZSRVFVRU5DWToge3ZhbHVlOiBbMCwgMTEsIDEzLCAxNCwgMTksIDI1LCAyOCwgMjEsIDIyLCAyNl19LFxyXG4gICAgU0lOR0xFX0NPREVfRVJST1I6IHt2YWx1ZTogMC43MH0sXHJcbiAgICBBVkdfQ09ERV9FUlJPUjoge3ZhbHVlOiAwLjQ4fSxcclxuICAgIEZPUk1BVDoge3ZhbHVlOiBcImVhbl8xM1wiLCB3cml0ZWFibGU6IGZhbHNlfVxyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmFyY29kZVJlYWRlci5wcm90b3R5cGUsIHByb3BlcnRpZXMpO1xyXG5FQU5SZWFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRUFOUmVhZGVyO1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlQ29kZSA9IGZ1bmN0aW9uKHN0YXJ0LCBjb2RlcmFuZ2UpIHtcclxuICAgIHZhciBjb3VudGVyID0gWzAsIDAsIDAsIDBdLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgb2Zmc2V0ID0gc3RhcnQsXHJcbiAgICAgICAgaXNXaGl0ZSA9ICFzZWxmLl9yb3dbb2Zmc2V0XSxcclxuICAgICAgICBjb3VudGVyUG9zID0gMCxcclxuICAgICAgICBiZXN0TWF0Y2ggPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiBOdW1iZXIuTUFYX1ZBTFVFLFxyXG4gICAgICAgICAgICBjb2RlOiAtMSxcclxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxyXG4gICAgICAgICAgICBlbmQ6IHN0YXJ0XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb2RlLFxyXG4gICAgICAgIGVycm9yO1xyXG5cclxuICAgIGlmICghY29kZXJhbmdlKSB7XHJcbiAgICAgICAgY29kZXJhbmdlID0gc2VsZi5DT0RFX1BBVFRFUk4ubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoIGkgPSBvZmZzZXQ7IGkgPCBzZWxmLl9yb3cubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoc2VsZi5fcm93W2ldIF4gaXNXaGl0ZSkge1xyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdKys7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3MgPT09IGNvdW50ZXIubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb2RlID0gMDsgY29kZSA8IGNvZGVyYW5nZTsgY29kZSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9tYXRjaFBhdHRlcm4oY291bnRlciwgc2VsZi5DT0RFX1BBVFRFUk5bY29kZV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA8IGJlc3RNYXRjaC5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guY29kZSA9IGNvZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lcnJvciA9IGVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lbmQgPSBpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJlc3RNYXRjaC5lcnJvciA+IHNlbGYuQVZHX0NPREVfRVJST1IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBiZXN0TWF0Y2g7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyUG9zKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSA9IDE7XHJcbiAgICAgICAgICAgIGlzV2hpdGUgPSAhaXNXaGl0ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbkVBTlJlYWRlci5wcm90b3R5cGUuX2ZpbmRQYXR0ZXJuID0gZnVuY3Rpb24ocGF0dGVybiwgb2Zmc2V0LCBpc1doaXRlLCB0cnlIYXJkZXIsIGVwc2lsb24pIHtcclxuICAgIHZhciBjb3VudGVyID0gW10sXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBjb3VudGVyUG9zID0gMCxcclxuICAgICAgICBiZXN0TWF0Y2ggPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiBOdW1iZXIuTUFYX1ZBTFVFLFxyXG4gICAgICAgICAgICBjb2RlOiAtMSxcclxuICAgICAgICAgICAgc3RhcnQ6IDAsXHJcbiAgICAgICAgICAgIGVuZDogMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgaixcclxuICAgICAgICBzdW07XHJcblxyXG4gICAgaWYgKCFvZmZzZXQpIHtcclxuICAgICAgICBvZmZzZXQgPSBzZWxmLl9uZXh0U2V0KHNlbGYuX3Jvdyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzV2hpdGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlzV2hpdGUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHJ5SGFyZGVyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0cnlIYXJkZXIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICggZXBzaWxvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZXBzaWxvbiA9IHNlbGYuQVZHX0NPREVfRVJST1I7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBwYXR0ZXJuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY291bnRlcltpXSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICggaSA9IG9mZnNldDsgaSA8IHNlbGYuX3Jvdy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzZWxmLl9yb3dbaV0gXiBpc1doaXRlKSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10rKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoY291bnRlclBvcyA9PT0gY291bnRlci5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICBzdW0gPSAwO1xyXG4gICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBjb3VudGVyLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VtICs9IGNvdW50ZXJbal07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlcnJvciA9IHNlbGYuX21hdGNoUGF0dGVybihjb3VudGVyLCBwYXR0ZXJuKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgPCBlcHNpbG9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVycm9yID0gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLnN0YXJ0ID0gaSAtIHN1bTtcclxuICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guZW5kID0gaTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmVzdE1hdGNoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRyeUhhcmRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgY291bnRlci5sZW5ndGggLSAyOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcltqXSA9IGNvdW50ZXJbaiArIDJdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyW2NvdW50ZXIubGVuZ3RoIC0gMl0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJbY291bnRlci5sZW5ndGggLSAxXSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRlclBvcy0tO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fZmluZFN0YXJ0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgbGVhZGluZ1doaXRlc3BhY2VTdGFydCxcclxuICAgICAgICBvZmZzZXQgPSBzZWxmLl9uZXh0U2V0KHNlbGYuX3JvdyksXHJcbiAgICAgICAgc3RhcnRJbmZvO1xyXG5cclxuICAgIHdoaWxlICghc3RhcnRJbmZvKSB7XHJcbiAgICAgICAgc3RhcnRJbmZvID0gc2VsZi5fZmluZFBhdHRlcm4oc2VsZi5TVEFSVF9QQVRURVJOLCBvZmZzZXQpO1xyXG4gICAgICAgIGlmICghc3RhcnRJbmZvKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZWFkaW5nV2hpdGVzcGFjZVN0YXJ0ID0gc3RhcnRJbmZvLnN0YXJ0IC0gKHN0YXJ0SW5mby5lbmQgLSBzdGFydEluZm8uc3RhcnQpO1xyXG4gICAgICAgIGlmIChsZWFkaW5nV2hpdGVzcGFjZVN0YXJ0ID49IDApIHtcclxuICAgICAgICAgICAgaWYgKHNlbGYuX21hdGNoUmFuZ2UobGVhZGluZ1doaXRlc3BhY2VTdGFydCwgc3RhcnRJbmZvLnN0YXJ0LCAwKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0SW5mbztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBvZmZzZXQgPSBzdGFydEluZm8uZW5kO1xyXG4gICAgICAgIHN0YXJ0SW5mbyA9IG51bGw7XHJcbiAgICB9XHJcbn07XHJcblxyXG5FQU5SZWFkZXIucHJvdG90eXBlLl92ZXJpZnlUcmFpbGluZ1doaXRlc3BhY2UgPSBmdW5jdGlvbihlbmRJbmZvKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kO1xyXG5cclxuICAgIHRyYWlsaW5nV2hpdGVzcGFjZUVuZCA9IGVuZEluZm8uZW5kICsgKGVuZEluZm8uZW5kIC0gZW5kSW5mby5zdGFydCk7XHJcbiAgICBpZiAodHJhaWxpbmdXaGl0ZXNwYWNlRW5kIDwgc2VsZi5fcm93Lmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChzZWxmLl9tYXRjaFJhbmdlKGVuZEluZm8uZW5kLCB0cmFpbGluZ1doaXRlc3BhY2VFbmQsIDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbmRJbmZvO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fZmluZEVuZCA9IGZ1bmN0aW9uKG9mZnNldCwgaXNXaGl0ZSkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIGVuZEluZm8gPSBzZWxmLl9maW5kUGF0dGVybihzZWxmLlNUT1BfUEFUVEVSTiwgb2Zmc2V0LCBpc1doaXRlLCBmYWxzZSk7XHJcblxyXG4gICAgcmV0dXJuIGVuZEluZm8gIT09IG51bGwgPyBzZWxmLl92ZXJpZnlUcmFpbGluZ1doaXRlc3BhY2UoZW5kSW5mbykgOiBudWxsO1xyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fY2FsY3VsYXRlRmlyc3REaWdpdCA9IGZ1bmN0aW9uKGNvZGVGcmVxdWVuY3kpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGZvciAoIGkgPSAwOyBpIDwgc2VsZi5DT0RFX0ZSRVFVRU5DWS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChjb2RlRnJlcXVlbmN5ID09PSBzZWxmLkNPREVfRlJFUVVFTkNZW2ldKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlUGF5bG9hZCA9IGZ1bmN0aW9uKGNvZGUsIHJlc3VsdCwgZGVjb2RlZENvZGVzKSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBzZWxmID0gdGhpcyxcclxuICAgICAgICBjb2RlRnJlcXVlbmN5ID0gMHgwLFxyXG4gICAgICAgIGZpcnN0RGlnaXQ7XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCA2OyBpKyspIHtcclxuICAgICAgICBjb2RlID0gc2VsZi5fZGVjb2RlQ29kZShjb2RlLmVuZCk7XHJcbiAgICAgICAgaWYgKCFjb2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29kZS5jb2RlID49IHNlbGYuQ09ERV9HX1NUQVJUKSB7XHJcbiAgICAgICAgICAgIGNvZGUuY29kZSA9IGNvZGUuY29kZSAtIHNlbGYuQ09ERV9HX1NUQVJUO1xyXG4gICAgICAgICAgICBjb2RlRnJlcXVlbmN5IHw9IDEgPDwgKDUgLSBpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb2RlRnJlcXVlbmN5IHw9IDAgPDwgKDUgLSBpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LnB1c2goY29kZS5jb2RlKTtcclxuICAgICAgICBkZWNvZGVkQ29kZXMucHVzaChjb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICBmaXJzdERpZ2l0ID0gc2VsZi5fY2FsY3VsYXRlRmlyc3REaWdpdChjb2RlRnJlcXVlbmN5KTtcclxuICAgIGlmIChmaXJzdERpZ2l0ID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXN1bHQudW5zaGlmdChmaXJzdERpZ2l0KTtcclxuXHJcbiAgICBjb2RlID0gc2VsZi5fZmluZFBhdHRlcm4oc2VsZi5NSURETEVfUEFUVEVSTiwgY29kZS5lbmQsIHRydWUsIGZhbHNlKTtcclxuICAgIGlmIChjb2RlID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBkZWNvZGVkQ29kZXMucHVzaChjb2RlKTtcclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IDY7IGkrKykge1xyXG4gICAgICAgIGNvZGUgPSBzZWxmLl9kZWNvZGVDb2RlKGNvZGUuZW5kLCBzZWxmLkNPREVfR19TVEFSVCk7XHJcbiAgICAgICAgaWYgKCFjb2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWNvZGVkQ29kZXMucHVzaChjb2RlKTtcclxuICAgICAgICByZXN1bHQucHVzaChjb2RlLmNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2RlO1xyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc3RhcnRJbmZvLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgcmVzdWx0ID0gW10sXHJcbiAgICAgICAgZGVjb2RlZENvZGVzID0gW10sXHJcbiAgICAgICAgcmVzdWx0SW5mbyA9IHt9O1xyXG5cclxuICAgIHN0YXJ0SW5mbyA9IHNlbGYuX2ZpbmRTdGFydCgpO1xyXG4gICAgaWYgKCFzdGFydEluZm8pIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvZGUgPSB7XHJcbiAgICAgICAgY29kZTogc3RhcnRJbmZvLmNvZGUsXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0SW5mby5zdGFydCxcclxuICAgICAgICBlbmQ6IHN0YXJ0SW5mby5lbmRcclxuICAgIH07XHJcbiAgICBkZWNvZGVkQ29kZXMucHVzaChjb2RlKTtcclxuICAgIGNvZGUgPSBzZWxmLl9kZWNvZGVQYXlsb2FkKGNvZGUsIHJlc3VsdCwgZGVjb2RlZENvZGVzKTtcclxuICAgIGlmICghY29kZSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29kZSA9IHNlbGYuX2ZpbmRFbmQoY29kZS5lbmQsIGZhbHNlKTtcclxuICAgIGlmICghY29kZSl7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcblxyXG4gICAgLy8gQ2hlY2tzdW1cclxuICAgIGlmICghc2VsZi5fY2hlY2tzdW0ocmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnN1cHBsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgZXh0ID0gdGhpcy5fZGVjb2RlRXh0ZW5zaW9ucyhjb2RlLmVuZCk7XHJcbiAgICAgICAgaWYgKCFleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBsYXN0Q29kZSA9IGV4dC5kZWNvZGVkQ29kZXNbZXh0LmRlY29kZWRDb2Rlcy5sZW5ndGgtMV0sXHJcbiAgICAgICAgICAgIGVuZEluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydDogbGFzdENvZGUuc3RhcnQgKyAoKChsYXN0Q29kZS5lbmQgLSBsYXN0Q29kZS5zdGFydCkgLyAyKSB8IDApLFxyXG4gICAgICAgICAgICAgICAgZW5kOiBsYXN0Q29kZS5lbmRcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICBpZighc2VsZi5fdmVyaWZ5VHJhaWxpbmdXaGl0ZXNwYWNlKGVuZEluZm8pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHRJbmZvID0ge1xyXG4gICAgICAgICAgICBzdXBwbGVtZW50OiBleHQsXHJcbiAgICAgICAgICAgIGNvZGU6IHJlc3VsdC5qb2luKFwiXCIpICsgZXh0LmNvZGVcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiByZXN1bHQuam9pbihcIlwiKSxcclxuICAgICAgICBzdGFydDogc3RhcnRJbmZvLnN0YXJ0LFxyXG4gICAgICAgIGVuZDogY29kZS5lbmQsXHJcbiAgICAgICAgY29kZXNldDogXCJcIixcclxuICAgICAgICBzdGFydEluZm86IHN0YXJ0SW5mbyxcclxuICAgICAgICBkZWNvZGVkQ29kZXM6IGRlY29kZWRDb2RlcyxcclxuICAgICAgICAuLi5yZXN1bHRJbmZvXHJcbiAgICB9O1xyXG59O1xyXG5cclxuRUFOUmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlRXh0ZW5zaW9ucyA9IGZ1bmN0aW9uKG9mZnNldCkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgc3RhcnQgPSB0aGlzLl9uZXh0U2V0KHRoaXMuX3Jvdywgb2Zmc2V0KSxcclxuICAgICAgICBzdGFydEluZm8gPSB0aGlzLl9maW5kUGF0dGVybih0aGlzLkVYVEVOU0lPTl9TVEFSVF9QQVRURVJOLCBzdGFydCwgZmFsc2UsIGZhbHNlKSxcclxuICAgICAgICByZXN1bHQ7XHJcblxyXG4gICAgaWYgKHN0YXJ0SW5mbyA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLnN1cHBsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5zdXBwbGVtZW50c1tpXS5kZWNvZGUodGhpcy5fcm93LCBzdGFydEluZm8uZW5kKTtcclxuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiByZXN1bHQuY29kZSxcclxuICAgICAgICAgICAgICAgIHN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgc3RhcnRJbmZvLFxyXG4gICAgICAgICAgICAgICAgZW5kOiByZXN1bHQuZW5kLFxyXG4gICAgICAgICAgICAgICAgY29kZXNldDogXCJcIixcclxuICAgICAgICAgICAgICAgIGRlY29kZWRDb2RlczogcmVzdWx0LmRlY29kZWRDb2Rlc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5FQU5SZWFkZXIucHJvdG90eXBlLl9jaGVja3N1bSA9IGZ1bmN0aW9uKHJlc3VsdCkge1xyXG4gICAgdmFyIHN1bSA9IDAsIGk7XHJcblxyXG4gICAgZm9yICggaSA9IHJlc3VsdC5sZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikge1xyXG4gICAgICAgIHN1bSArPSByZXN1bHRbaV07XHJcbiAgICB9XHJcbiAgICBzdW0gKj0gMztcclxuICAgIGZvciAoIGkgPSByZXN1bHQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDIpIHtcclxuICAgICAgICBzdW0gKz0gcmVzdWx0W2ldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1bSAlIDEwID09PSAwO1xyXG59O1xyXG5cclxuRUFOUmVhZGVyLkNPTkZJR19LRVlTID0ge1xyXG4gICAgc3VwcGxlbWVudHM6IHtcclxuICAgICAgICAndHlwZSc6ICdhcnJheU9mKHN0cmluZyknLFxyXG4gICAgICAgICdkZWZhdWx0JzogW10sXHJcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FsbG93ZWQgZXh0ZW5zaW9ucyB0byBiZSBkZWNvZGVkICgyIGFuZC9vciA1KSdcclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IChFQU5SZWFkZXIpO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWFkZXIvZWFuX3JlYWRlci5qc1xuICoqLyIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX01hcC5qc1xuICoqIG1vZHVsZSBpZCA9IDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHR5cGUge0Z1bmN0aW9ufVxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2lzQXJyYXkuanNcbiAqKiBtb2R1bGUgaWQgPSA1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJmdW5jdGlvbiBCYXJjb2RlUmVhZGVyKGNvbmZpZywgc3VwcGxlbWVudHMpIHtcclxuICAgIHRoaXMuX3JvdyA9IFtdO1xyXG4gICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwge307XHJcbiAgICB0aGlzLnN1cHBsZW1lbnRzID0gc3VwcGxlbWVudHM7XHJcbiAgICByZXR1cm4gdGhpcztcclxufVxyXG5cclxuQmFyY29kZVJlYWRlci5wcm90b3R5cGUuX25leHRVbnNldCA9IGZ1bmN0aW9uKGxpbmUsIHN0YXJ0KSB7XHJcbiAgICB2YXIgaTtcclxuXHJcbiAgICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHN0YXJ0ID0gMDtcclxuICAgIH1cclxuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICghbGluZVtpXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGluZS5sZW5ndGg7XHJcbn07XHJcblxyXG5CYXJjb2RlUmVhZGVyLnByb3RvdHlwZS5fbWF0Y2hQYXR0ZXJuID0gZnVuY3Rpb24oY291bnRlciwgY29kZSwgbWF4U2luZ2xlRXJyb3IpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIGVycm9yID0gMCxcclxuICAgICAgICBzaW5nbGVFcnJvciA9IDAsXHJcbiAgICAgICAgc3VtID0gMCxcclxuICAgICAgICBtb2R1bG8gPSAwLFxyXG4gICAgICAgIGJhcldpZHRoLFxyXG4gICAgICAgIGNvdW50LFxyXG4gICAgICAgIHNjYWxlZDtcclxuXHJcbiAgICBtYXhTaW5nbGVFcnJvciA9IG1heFNpbmdsZUVycm9yIHx8IHRoaXMuU0lOR0xFX0NPREVfRVJST1IgfHwgMTtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgY291bnRlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHN1bSArPSBjb3VudGVyW2ldO1xyXG4gICAgICAgIG1vZHVsbyArPSBjb2RlW2ldO1xyXG4gICAgfVxyXG4gICAgaWYgKHN1bSA8IG1vZHVsbykge1xyXG4gICAgICAgIHJldHVybiBOdW1iZXIuTUFYX1ZBTFVFO1xyXG4gICAgfVxyXG4gICAgYmFyV2lkdGggPSBzdW0gLyBtb2R1bG87XHJcbiAgICBtYXhTaW5nbGVFcnJvciAqPSBiYXJXaWR0aDtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgY291bnRlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvdW50ID0gY291bnRlcltpXTtcclxuICAgICAgICBzY2FsZWQgPSBjb2RlW2ldICogYmFyV2lkdGg7XHJcbiAgICAgICAgc2luZ2xlRXJyb3IgPSBNYXRoLmFicyhjb3VudCAtIHNjYWxlZCkgLyBzY2FsZWQ7XHJcbiAgICAgICAgaWYgKHNpbmdsZUVycm9yID4gbWF4U2luZ2xlRXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVycm9yICs9IHNpbmdsZUVycm9yO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVycm9yIC8gbW9kdWxvO1xyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5wcm90b3R5cGUuX25leHRTZXQgPSBmdW5jdGlvbihsaW5lLCBvZmZzZXQpIHtcclxuICAgIHZhciBpO1xyXG5cclxuICAgIG9mZnNldCA9IG9mZnNldCB8fCAwO1xyXG4gICAgZm9yIChpID0gb2Zmc2V0OyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChsaW5lW2ldKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBsaW5lLmxlbmd0aDtcclxufTtcclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9jb3JyZWN0QmFycyA9IGZ1bmN0aW9uKGNvdW50ZXIsIGNvcnJlY3Rpb24sIGluZGljZXMpIHtcclxuICAgIHZhciBsZW5ndGggPSBpbmRpY2VzLmxlbmd0aCxcclxuICAgICAgICB0bXAgPSAwO1xyXG4gICAgd2hpbGUobGVuZ3RoLS0pIHtcclxuICAgICAgICB0bXAgPSBjb3VudGVyW2luZGljZXNbbGVuZ3RoXV0gKiAoMSAtICgoMSAtIGNvcnJlY3Rpb24pIC8gMikpO1xyXG4gICAgICAgIGlmICh0bXAgPiAxKSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJbaW5kaWNlc1tsZW5ndGhdXSA9IHRtcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9tYXRjaFRyYWNlID0gZnVuY3Rpb24oY21wQ291bnRlciwgZXBzaWxvbikge1xyXG4gICAgdmFyIGNvdW50ZXIgPSBbXSxcclxuICAgICAgICBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIG9mZnNldCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93KSxcclxuICAgICAgICBpc1doaXRlID0gIXNlbGYuX3Jvd1tvZmZzZXRdLFxyXG4gICAgICAgIGNvdW50ZXJQb3MgPSAwLFxyXG4gICAgICAgIGJlc3RNYXRjaCA9IHtcclxuICAgICAgICAgICAgZXJyb3I6IE51bWJlci5NQVhfVkFMVUUsXHJcbiAgICAgICAgICAgIGNvZGU6IC0xLFxyXG4gICAgICAgICAgICBzdGFydDogMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I7XHJcblxyXG4gICAgaWYgKGNtcENvdW50ZXIpIHtcclxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGNtcENvdW50ZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY291bnRlci5wdXNoKDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKCBpID0gb2Zmc2V0OyBpIDwgc2VsZi5fcm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLl9yb3dbaV0gXiBpc1doaXRlKSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdKys7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY291bnRlclBvcyA9PT0gY291bnRlci5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZWxmLl9tYXRjaFBhdHRlcm4oY291bnRlciwgY21wQ291bnRlcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA8IGVwc2lsb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLnN0YXJ0ID0gaSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVuZCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb3VudGVyID0gY291bnRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10gPSAxO1xyXG4gICAgICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjb3VudGVyLnB1c2goMCk7XHJcbiAgICAgICAgZm9yICggaSA9IG9mZnNldDsgaSA8IHNlbGYuX3Jvdy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoc2VsZi5fcm93W2ldIF4gaXNXaGl0ZSkge1xyXG4gICAgICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY291bnRlclBvcysrO1xyXG4gICAgICAgICAgICAgICAgY291bnRlci5wdXNoKDApO1xyXG4gICAgICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSA9IDE7XHJcbiAgICAgICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgY21wQ291bnRlciB3YXMgbm90IGdpdmVuXHJcbiAgICBiZXN0TWF0Y2guc3RhcnQgPSBvZmZzZXQ7XHJcbiAgICBiZXN0TWF0Y2guZW5kID0gc2VsZi5fcm93Lmxlbmd0aCAtIDE7XHJcbiAgICBiZXN0TWF0Y2guY291bnRlciA9IGNvdW50ZXI7XHJcbiAgICByZXR1cm4gYmVzdE1hdGNoO1xyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5wcm90b3R5cGUuZGVjb2RlUGF0dGVybiA9IGZ1bmN0aW9uKHBhdHRlcm4pIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICByZXN1bHQ7XHJcblxyXG4gICAgc2VsZi5fcm93ID0gcGF0dGVybjtcclxuICAgIHJlc3VsdCA9IHNlbGYuX2RlY29kZSgpO1xyXG4gICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xyXG4gICAgICAgIHNlbGYuX3Jvdy5yZXZlcnNlKCk7XHJcbiAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVjb2RlKCk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXN1bHQuZGlyZWN0aW9uID0gQmFyY29kZVJlYWRlci5ESVJFQ1RJT04uUkVWRVJTRTtcclxuICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gc2VsZi5fcm93Lmxlbmd0aCAtIHJlc3VsdC5zdGFydDtcclxuICAgICAgICAgICAgcmVzdWx0LmVuZCA9IHNlbGYuX3Jvdy5sZW5ndGggLSByZXN1bHQuZW5kO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0LmRpcmVjdGlvbiA9IEJhcmNvZGVSZWFkZXIuRElSRUNUSU9OLkZPUldBUkQ7XHJcbiAgICB9XHJcbiAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgcmVzdWx0LmZvcm1hdCA9IHNlbGYuRk9STUFUO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9tYXRjaFJhbmdlID0gZnVuY3Rpb24oc3RhcnQsIGVuZCwgdmFsdWUpIHtcclxuICAgIHZhciBpO1xyXG5cclxuICAgIHN0YXJ0ID0gc3RhcnQgPCAwID8gMCA6IHN0YXJ0O1xyXG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLl9yb3dbaV0gIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbkJhcmNvZGVSZWFkZXIucHJvdG90eXBlLl9maWxsQ291bnRlcnMgPSBmdW5jdGlvbihvZmZzZXQsIGVuZCwgaXNXaGl0ZSkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIGNvdW50ZXJQb3MgPSAwLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgY291bnRlcnMgPSBbXTtcclxuXHJcbiAgICBpc1doaXRlID0gKHR5cGVvZiBpc1doaXRlICE9PSAndW5kZWZpbmVkJykgPyBpc1doaXRlIDogdHJ1ZTtcclxuICAgIG9mZnNldCA9ICh0eXBlb2Ygb2Zmc2V0ICE9PSAndW5kZWZpbmVkJykgPyBvZmZzZXQgOiBzZWxmLl9uZXh0VW5zZXQoc2VsZi5fcm93KTtcclxuICAgIGVuZCA9IGVuZCB8fCBzZWxmLl9yb3cubGVuZ3RoO1xyXG5cclxuICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NdID0gMDtcclxuICAgIGZvciAoaSA9IG9mZnNldDsgaSA8IGVuZDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcnNbY291bnRlclBvc10rKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb3VudGVyUG9zKys7XHJcbiAgICAgICAgICAgIGNvdW50ZXJzW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb3VudGVycztcclxufTtcclxuXHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXJjb2RlUmVhZGVyLnByb3RvdHlwZSwgXCJGT1JNQVRcIiwge1xyXG4gICAgdmFsdWU6ICd1bmtub3duJyxcclxuICAgIHdyaXRlYWJsZTogZmFsc2VcclxufSk7XHJcblxyXG5CYXJjb2RlUmVhZGVyLkRJUkVDVElPTiA9IHtcclxuICAgIEZPUldBUkQ6IDEsXHJcbiAgICBSRVZFUlNFOiAtMVxyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5FeGNlcHRpb24gPSB7XHJcbiAgICBTdGFydE5vdEZvdW5kRXhjZXB0aW9uOiBcIlN0YXJ0LUluZm8gd2FzIG5vdCBmb3VuZCFcIixcclxuICAgIENvZGVOb3RGb3VuZEV4Y2VwdGlvbjogXCJDb2RlIGNvdWxkIG5vdCBiZSBmb3VuZCFcIixcclxuICAgIFBhdHRlcm5Ob3RGb3VuZEV4Y2VwdGlvbjogXCJQYXR0ZXJuIGNvdWxkIG5vdCBiZSBmb3VuZCFcIlxyXG59O1xyXG5cclxuQmFyY29kZVJlYWRlci5DT05GSUdfS0VZUyA9IHt9O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFyY29kZVJlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL2JhcmNvZGVfcmVhZGVyLmpzXG4gKiovIiwibW9kdWxlLmV4cG9ydHMgPSBjbG9uZVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgdmVjMiBpbml0aWFsaXplZCB3aXRoIHZhbHVlcyBmcm9tIGFuIGV4aXN0aW5nIHZlY3RvclxuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB2ZWN0b3IgdG8gY2xvbmVcbiAqIEByZXR1cm5zIHt2ZWMyfSBhIG5ldyAyRCB2ZWN0b3JcbiAqL1xuZnVuY3Rpb24gY2xvbmUoYSkge1xuICAgIHZhciBvdXQgPSBuZXcgRmxvYXQzMkFycmF5KDIpXG4gICAgb3V0WzBdID0gYVswXVxuICAgIG91dFsxXSA9IGFbMV1cbiAgICByZXR1cm4gb3V0XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZ2wtdmVjMi9jbG9uZS5qc1xuICoqIG1vZHVsZSBpZCA9IDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzXG4gKiogbW9kdWxlIGlkID0gOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgaW5pdDogZnVuY3Rpb24oYXJyLCB2YWwpIHtcclxuICAgICAgICB2YXIgbCA9IGFyci5sZW5ndGg7XHJcbiAgICAgICAgd2hpbGUgKGwtLSkge1xyXG4gICAgICAgICAgICBhcnJbbF0gPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNodWZmbGVzIHRoZSBjb250ZW50IG9mIGFuIGFycmF5XHJcbiAgICAgKiBAcmV0dXJuIHtBcnJheX0gdGhlIGFycmF5IGl0c2VsZiBzaHVmZmxlZFxyXG4gICAgICovXHJcbiAgICBzaHVmZmxlOiBmdW5jdGlvbihhcnIpIHtcclxuICAgICAgICB2YXIgaSA9IGFyci5sZW5ndGggLSAxLCBqLCB4O1xyXG4gICAgICAgIGZvciAoaTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGkpO1xyXG4gICAgICAgICAgICB4ID0gYXJyW2ldO1xyXG4gICAgICAgICAgICBhcnJbaV0gPSBhcnJbal07XHJcbiAgICAgICAgICAgIGFycltqXSA9IHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnI7XHJcbiAgICB9LFxyXG5cclxuICAgIHRvUG9pbnRMaXN0OiBmdW5jdGlvbihhcnIpIHtcclxuICAgICAgICB2YXIgaSwgaiwgcm93ID0gW10sIHJvd3MgPSBbXTtcclxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByb3cgPSBbXTtcclxuICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBhcnJbaV0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIHJvd1tqXSA9IGFycltpXVtqXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByb3dzW2ldID0gXCJbXCIgKyByb3cuam9pbihcIixcIikgKyBcIl1cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFwiW1wiICsgcm93cy5qb2luKFwiLFxcclxcblwiKSArIFwiXVwiO1xyXG4gICAgfSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgdGhlIGVsZW1lbnRzIHdoaWNoJ3Mgc2NvcmUgaXMgYmlnZ2VyIHRoYW4gdGhlIHRocmVzaG9sZFxyXG4gICAgICogQHJldHVybiB7QXJyYXl9IHRoZSByZWR1Y2VkIGFycmF5XHJcbiAgICAgKi9cclxuICAgIHRocmVzaG9sZDogZnVuY3Rpb24oYXJyLCB0aHJlc2hvbGQsIHNjb3JlRnVuYykge1xyXG4gICAgICAgIHZhciBpLCBxdWV1ZSA9IFtdO1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChzY29yZUZ1bmMuYXBwbHkoYXJyLCBbYXJyW2ldXSkgPj0gdGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKGFycltpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHF1ZXVlO1xyXG4gICAgfSxcclxuXHJcbiAgICBtYXhJbmRleDogZnVuY3Rpb24oYXJyKSB7XHJcbiAgICAgICAgdmFyIGksIG1heCA9IDA7XHJcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA+IGFyclttYXhdKSB7XHJcbiAgICAgICAgICAgICAgICBtYXggPSBpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXg7XHJcbiAgICB9LFxyXG5cclxuICAgIG1heDogZnVuY3Rpb24oYXJyKSB7XHJcbiAgICAgICAgdmFyIGksIG1heCA9IDA7XHJcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA+IG1heCkge1xyXG4gICAgICAgICAgICAgICAgbWF4ID0gYXJyW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXg7XHJcbiAgICB9LFxyXG5cclxuICAgIHN1bTogZnVuY3Rpb24oYXJyKSB7XHJcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGgsXHJcbiAgICAgICAgICAgIHN1bSA9IDA7XHJcblxyXG4gICAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgICAgICBzdW0gKz0gYXJyW2xlbmd0aF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9XHJcbn07XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbW1vbi9hcnJheV9oZWxwZXIuanNcbiAqKi8iLCJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBkcmF3UmVjdDogZnVuY3Rpb24ocG9zLCBzaXplLCBjdHgsIHN0eWxlKXtcclxuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBzdHlsZS5jb2xvcjtcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gc3R5bGUuY29sb3I7XHJcbiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7XHJcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGN0eC5zdHJva2VSZWN0KHBvcy54LCBwb3MueSwgc2l6ZS54LCBzaXplLnkpO1xyXG4gICAgfSxcclxuICAgIGRyYXdQYXRoOiBmdW5jdGlvbihwYXRoLCBkZWYsIGN0eCwgc3R5bGUpIHtcclxuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBzdHlsZS5jb2xvcjtcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gc3R5bGUuY29sb3I7XHJcbiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IHN0eWxlLmxpbmVXaWR0aDtcclxuICAgICAgICBjdHguYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY3R4Lm1vdmVUbyhwYXRoWzBdW2RlZi54XSwgcGF0aFswXVtkZWYueV0pO1xyXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcGF0aC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBjdHgubGluZVRvKHBhdGhbal1bZGVmLnhdLCBwYXRoW2pdW2RlZi55XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN0eC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjdHguc3Ryb2tlKCk7XHJcbiAgICB9LFxyXG4gICAgZHJhd0ltYWdlOiBmdW5jdGlvbihpbWFnZURhdGEsIHNpemUsIGN0eCkge1xyXG4gICAgICAgIHZhciBjYW52YXNEYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCBzaXplLngsIHNpemUueSksXHJcbiAgICAgICAgICAgIGRhdGEgPSBjYW52YXNEYXRhLmRhdGEsXHJcbiAgICAgICAgICAgIGltYWdlRGF0YVBvcyA9IGltYWdlRGF0YS5sZW5ndGgsXHJcbiAgICAgICAgICAgIGNhbnZhc0RhdGFQb3MgPSBkYXRhLmxlbmd0aCxcclxuICAgICAgICAgICAgdmFsdWU7XHJcblxyXG4gICAgICAgIGlmIChjYW52YXNEYXRhUG9zIC8gaW1hZ2VEYXRhUG9zICE9PSA0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGltYWdlRGF0YVBvcy0tKXtcclxuICAgICAgICAgICAgdmFsdWUgPSBpbWFnZURhdGFbaW1hZ2VEYXRhUG9zXTtcclxuICAgICAgICAgICAgZGF0YVstLWNhbnZhc0RhdGFQb3NdID0gMjU1O1xyXG4gICAgICAgICAgICBkYXRhWy0tY2FudmFzRGF0YVBvc10gPSB2YWx1ZTtcclxuICAgICAgICAgICAgZGF0YVstLWNhbnZhc0RhdGFQb3NdID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGRhdGFbLS1jYW52YXNEYXRhUG9zXSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdHgucHV0SW1hZ2VEYXRhKGNhbnZhc0RhdGEsIDAsIDApO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21tb24vaW1hZ2VfZGVidWcuanNcbiAqKi8iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YFxuICogb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2VhcmNoLlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qc1xuICoqIG1vZHVsZSBpZCA9IDExXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgaXNOYXRpdmUgPSByZXF1aXJlKCcuL2lzTmF0aXZlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgcmV0dXJuIGlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fZ2V0TmF0aXZlLmpzXG4gKiogbW9kdWxlIGlkID0gMTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgKHR5cGUgPT0gJ3N0cmluZycgJiYgdmFsdWUgIT0gJ19fcHJvdG9fXycpIHx8IHZhbHVlID09IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19pc0tleWFibGUuanNcbiAqKiBtb2R1bGUgaWQgPSAxM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUNyZWF0ZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzXG4gKiogbW9kdWxlIGlkID0gMTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogUGVyZm9ybXMgYSBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICd1c2VyJzogJ2ZyZWQnIH07XG4gKiB2YXIgb3RoZXIgPSB7ICd1c2VyJzogJ2ZyZWQnIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlcTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9lcS5qc1xuICoqIG1vZHVsZSBpZCA9IDE1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOCB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheSBhbmQgd2VhayBtYXAgY29uc3RydWN0b3JzLFxuICAvLyBhbmQgUGhhbnRvbUpTIDEuOSB3aGljaCByZXR1cm5zICdmdW5jdGlvbicgZm9yIGBOb2RlTGlzdGAgaW5zdGFuY2VzLlxuICB2YXIgdGFnID0gaXNPYmplY3QodmFsdWUpID8gb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc0Z1bmN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBiYXNlTWVyZ2UgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2UnKSxcbiAgICBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFzc2lnbmVyJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlIGRlc3RpbmF0aW9uXG4gKiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmUgc2tpcHBlZCBpZiBhXG4gKiBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllcyBhcmUgbWVyZ2VkXG4gKiByZWN1cnNpdmVseS5PdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieSBhc3NpZ25tZW50LlxuICogU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50IHNvdXJjZXNcbiAqIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IHtcbiAqICAgJ2RhdGEnOiBbeyAndXNlcic6ICdiYXJuZXknIH0sIHsgJ3VzZXInOiAnZnJlZCcgfV1cbiAqIH07XG4gKlxuICogdmFyIGFnZXMgPSB7XG4gKiAgICdkYXRhJzogW3sgJ2FnZSc6IDM2IH0sIHsgJ2FnZSc6IDQwIH1dXG4gKiB9O1xuICpcbiAqIF8ubWVyZ2UodXNlcnMsIGFnZXMpO1xuICogLy8gPT4geyAnZGF0YSc6IFt7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9LCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpIHtcbiAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9tZXJnZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJpbXBvcnQgQ2x1c3RlcjIgZnJvbSAnLi9jbHVzdGVyJztcclxuaW1wb3J0IEFycmF5SGVscGVyIGZyb20gJy4vYXJyYXlfaGVscGVyJztcclxuY29uc3QgdmVjMiA9IHtcclxuICAgIGNsb25lOiByZXF1aXJlKCdnbC12ZWMyL2Nsb25lJyksXHJcbn07XHJcbmNvbnN0IHZlYzMgPSB7XHJcbiAgICBjbG9uZTogcmVxdWlyZSgnZ2wtdmVjMy9jbG9uZScpLFxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEBwYXJhbSB4IHgtY29vcmRpbmF0ZVxyXG4gKiBAcGFyYW0geSB5LWNvb3JkaW5hdGVcclxuICogQHJldHVybiBJbWFnZVJlZmVyZW5jZSB7eCx5fSBDb29yZGluYXRlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VSZWYoeCwgeSkge1xyXG4gICAgdmFyIHRoYXQgPSB7XHJcbiAgICAgICAgeDogeCxcclxuICAgICAgICB5OiB5LFxyXG4gICAgICAgIHRvVmVjMjogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB2ZWMyLmNsb25lKFt0aGlzLngsIHRoaXMueV0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9WZWMzOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZlYzMuY2xvbmUoW3RoaXMueCwgdGhpcy55LCAxXSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByb3VuZDogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHRoaXMueCA9IHRoaXMueCA+IDAuMCA/IE1hdGguZmxvb3IodGhpcy54ICsgMC41KSA6IE1hdGguZmxvb3IodGhpcy54IC0gMC41KTtcclxuICAgICAgICAgICAgdGhpcy55ID0gdGhpcy55ID4gMC4wID8gTWF0aC5mbG9vcih0aGlzLnkgKyAwLjUpIDogTWF0aC5mbG9vcih0aGlzLnkgLSAwLjUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoYXQ7XHJcbn07XHJcblxyXG4vKipcclxuICogQ29tcHV0ZXMgYW4gaW50ZWdyYWwgaW1hZ2Ugb2YgYSBnaXZlbiBncmF5c2NhbGUgaW1hZ2UuXHJcbiAqIEBwYXJhbSBpbWFnZURhdGFDb250YWluZXIge0ltYWdlRGF0YUNvbnRhaW5lcn0gdGhlIGltYWdlIHRvIGJlIGludGVncmF0ZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlSW50ZWdyYWxJbWFnZTIoaW1hZ2VXcmFwcGVyLCBpbnRlZ3JhbFdyYXBwZXIpIHtcclxuICAgIHZhciBpbWFnZURhdGEgPSBpbWFnZVdyYXBwZXIuZGF0YTtcclxuICAgIHZhciB3aWR0aCA9IGltYWdlV3JhcHBlci5zaXplLng7XHJcbiAgICB2YXIgaGVpZ2h0ID0gaW1hZ2VXcmFwcGVyLnNpemUueTtcclxuICAgIHZhciBpbnRlZ3JhbEltYWdlRGF0YSA9IGludGVncmFsV3JhcHBlci5kYXRhO1xyXG4gICAgdmFyIHN1bSA9IDAsIHBvc0EgPSAwLCBwb3NCID0gMCwgcG9zQyA9IDAsIHBvc0QgPSAwLCB4LCB5O1xyXG5cclxuICAgIC8vIHN1bSB1cCBmaXJzdCBjb2x1bW5cclxuICAgIHBvc0IgPSB3aWR0aDtcclxuICAgIHN1bSA9IDA7XHJcbiAgICBmb3IgKCB5ID0gMTsgeSA8IGhlaWdodDsgeSsrKSB7XHJcbiAgICAgICAgc3VtICs9IGltYWdlRGF0YVtwb3NBXTtcclxuICAgICAgICBpbnRlZ3JhbEltYWdlRGF0YVtwb3NCXSArPSBzdW07XHJcbiAgICAgICAgcG9zQSArPSB3aWR0aDtcclxuICAgICAgICBwb3NCICs9IHdpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc0EgPSAwO1xyXG4gICAgcG9zQiA9IDE7XHJcbiAgICBzdW0gPSAwO1xyXG4gICAgZm9yICggeCA9IDE7IHggPCB3aWR0aDsgeCsrKSB7XHJcbiAgICAgICAgc3VtICs9IGltYWdlRGF0YVtwb3NBXTtcclxuICAgICAgICBpbnRlZ3JhbEltYWdlRGF0YVtwb3NCXSArPSBzdW07XHJcbiAgICAgICAgcG9zQSsrO1xyXG4gICAgICAgIHBvc0IrKztcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCB5ID0gMTsgeSA8IGhlaWdodDsgeSsrKSB7XHJcbiAgICAgICAgcG9zQSA9IHkgKiB3aWR0aCArIDE7XHJcbiAgICAgICAgcG9zQiA9ICh5IC0gMSkgKiB3aWR0aCArIDE7XHJcbiAgICAgICAgcG9zQyA9IHkgKiB3aWR0aDtcclxuICAgICAgICBwb3NEID0gKHkgLSAxKSAqIHdpZHRoO1xyXG4gICAgICAgIGZvciAoIHggPSAxOyB4IDwgd2lkdGg7IHgrKykge1xyXG4gICAgICAgICAgICBpbnRlZ3JhbEltYWdlRGF0YVtwb3NBXSArPVxyXG4gICAgICAgICAgICAgICAgaW1hZ2VEYXRhW3Bvc0FdICsgaW50ZWdyYWxJbWFnZURhdGFbcG9zQl0gKyBpbnRlZ3JhbEltYWdlRGF0YVtwb3NDXSAtIGludGVncmFsSW1hZ2VEYXRhW3Bvc0RdO1xyXG4gICAgICAgICAgICBwb3NBKys7XHJcbiAgICAgICAgICAgIHBvc0IrKztcclxuICAgICAgICAgICAgcG9zQysrO1xyXG4gICAgICAgICAgICBwb3NEKys7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVJbnRlZ3JhbEltYWdlKGltYWdlV3JhcHBlciwgaW50ZWdyYWxXcmFwcGVyKSB7XHJcbiAgICB2YXIgaW1hZ2VEYXRhID0gaW1hZ2VXcmFwcGVyLmRhdGE7XHJcbiAgICB2YXIgd2lkdGggPSBpbWFnZVdyYXBwZXIuc2l6ZS54O1xyXG4gICAgdmFyIGhlaWdodCA9IGltYWdlV3JhcHBlci5zaXplLnk7XHJcbiAgICB2YXIgaW50ZWdyYWxJbWFnZURhdGEgPSBpbnRlZ3JhbFdyYXBwZXIuZGF0YTtcclxuICAgIHZhciBzdW0gPSAwO1xyXG5cclxuICAgIC8vIHN1bSB1cCBmaXJzdCByb3dcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xyXG4gICAgICAgIHN1bSArPSBpbWFnZURhdGFbaV07XHJcbiAgICAgICAgaW50ZWdyYWxJbWFnZURhdGFbaV0gPSBzdW07XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICh2YXIgdiA9IDE7IHYgPCBoZWlnaHQ7IHYrKykge1xyXG4gICAgICAgIHN1bSA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgdSA9IDA7IHUgPCB3aWR0aDsgdSsrKSB7XHJcbiAgICAgICAgICAgIHN1bSArPSBpbWFnZURhdGFbdiAqIHdpZHRoICsgdV07XHJcbiAgICAgICAgICAgIGludGVncmFsSW1hZ2VEYXRhWygodikgKiB3aWR0aCkgKyB1XSA9IHN1bSArIGludGVncmFsSW1hZ2VEYXRhWyh2IC0gMSkgKiB3aWR0aCArIHVdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0aHJlc2hvbGRJbWFnZShpbWFnZVdyYXBwZXIsIHRocmVzaG9sZCwgdGFyZ2V0V3JhcHBlcikge1xyXG4gICAgaWYgKCF0YXJnZXRXcmFwcGVyKSB7XHJcbiAgICAgICAgdGFyZ2V0V3JhcHBlciA9IGltYWdlV3JhcHBlcjtcclxuICAgIH1cclxuICAgIHZhciBpbWFnZURhdGEgPSBpbWFnZVdyYXBwZXIuZGF0YSwgbGVuZ3RoID0gaW1hZ2VEYXRhLmxlbmd0aCwgdGFyZ2V0RGF0YSA9IHRhcmdldFdyYXBwZXIuZGF0YTtcclxuXHJcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcclxuICAgICAgICB0YXJnZXREYXRhW2xlbmd0aF0gPSBpbWFnZURhdGFbbGVuZ3RoXSA8IHRocmVzaG9sZCA/IDEgOiAwO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVIaXN0b2dyYW0oaW1hZ2VXcmFwcGVyLCBiaXRzUGVyUGl4ZWwpIHtcclxuICAgIGlmICghYml0c1BlclBpeGVsKSB7XHJcbiAgICAgICAgYml0c1BlclBpeGVsID0gODtcclxuICAgIH1cclxuICAgIHZhciBpbWFnZURhdGEgPSBpbWFnZVdyYXBwZXIuZGF0YSxcclxuICAgICAgICBsZW5ndGggPSBpbWFnZURhdGEubGVuZ3RoLFxyXG4gICAgICAgIGJpdFNoaWZ0ID0gOCAtIGJpdHNQZXJQaXhlbCxcclxuICAgICAgICBidWNrZXRDbnQgPSAxIDw8IGJpdHNQZXJQaXhlbCxcclxuICAgICAgICBoaXN0ID0gbmV3IEludDMyQXJyYXkoYnVja2V0Q250KTtcclxuXHJcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcclxuICAgICAgICBoaXN0W2ltYWdlRGF0YVtsZW5ndGhdID4+IGJpdFNoaWZ0XSsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhpc3Q7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2hhcnBlbkxpbmUobGluZSkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgbGVuZ3RoID0gbGluZS5sZW5ndGgsXHJcbiAgICAgICAgbGVmdCA9IGxpbmVbMF0sXHJcbiAgICAgICAgY2VudGVyID0gbGluZVsxXSxcclxuICAgICAgICByaWdodDtcclxuXHJcbiAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgcmlnaHQgPSBsaW5lW2kgKyAxXTtcclxuICAgICAgICAvLyAgLTEgNCAtMSBrZXJuZWxcclxuICAgICAgICBsaW5lW2kgLSAxXSA9ICgoKGNlbnRlciAqIDIpIC0gbGVmdCAtIHJpZ2h0KSkgJiAyNTU7XHJcbiAgICAgICAgbGVmdCA9IGNlbnRlcjtcclxuICAgICAgICBjZW50ZXIgPSByaWdodDtcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5lO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRldGVybWluZU90c3VUaHJlc2hvbGQoaW1hZ2VXcmFwcGVyLCBiaXRzUGVyUGl4ZWwpIHtcclxuICAgIGlmICghYml0c1BlclBpeGVsKSB7XHJcbiAgICAgICAgYml0c1BlclBpeGVsID0gODtcclxuICAgIH1cclxuICAgIHZhciBoaXN0LFxyXG4gICAgICAgIHRocmVzaG9sZCxcclxuICAgICAgICBiaXRTaGlmdCA9IDggLSBiaXRzUGVyUGl4ZWw7XHJcblxyXG4gICAgZnVuY3Rpb24gcHgoaW5pdCwgZW5kKSB7XHJcbiAgICAgICAgdmFyIHN1bSA9IDAsIGk7XHJcbiAgICAgICAgZm9yICggaSA9IGluaXQ7IGkgPD0gZW5kOyBpKyspIHtcclxuICAgICAgICAgICAgc3VtICs9IGhpc3RbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbXgoaW5pdCwgZW5kKSB7XHJcbiAgICAgICAgdmFyIGksIHN1bSA9IDA7XHJcblxyXG4gICAgICAgIGZvciAoIGkgPSBpbml0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHN1bSArPSBpICogaGlzdFtpXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZGV0ZXJtaW5lVGhyZXNob2xkKCkge1xyXG4gICAgICAgIHZhciB2ZXQgPSBbMF0sIHAxLCBwMiwgcDEyLCBrLCBtMSwgbTIsIG0xMixcclxuICAgICAgICAgICAgbWF4ID0gKDEgPDwgYml0c1BlclBpeGVsKSAtIDE7XHJcblxyXG4gICAgICAgIGhpc3QgPSBjb21wdXRlSGlzdG9ncmFtKGltYWdlV3JhcHBlciwgYml0c1BlclBpeGVsKTtcclxuICAgICAgICBmb3IgKCBrID0gMTsgayA8IG1heDsgaysrKSB7XHJcbiAgICAgICAgICAgIHAxID0gcHgoMCwgayk7XHJcbiAgICAgICAgICAgIHAyID0gcHgoayArIDEsIG1heCk7XHJcbiAgICAgICAgICAgIHAxMiA9IHAxICogcDI7XHJcbiAgICAgICAgICAgIGlmIChwMTIgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHAxMiA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbTEgPSBteCgwLCBrKSAqIHAyO1xyXG4gICAgICAgICAgICBtMiA9IG14KGsgKyAxLCBtYXgpICogcDE7XHJcbiAgICAgICAgICAgIG0xMiA9IG0xIC0gbTI7XHJcbiAgICAgICAgICAgIHZldFtrXSA9IG0xMiAqIG0xMiAvIHAxMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEFycmF5SGVscGVyLm1heEluZGV4KHZldCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhyZXNob2xkID0gZGV0ZXJtaW5lVGhyZXNob2xkKCk7XHJcbiAgICByZXR1cm4gdGhyZXNob2xkIDw8IGJpdFNoaWZ0O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG90c3VUaHJlc2hvbGQoaW1hZ2VXcmFwcGVyLCB0YXJnZXRXcmFwcGVyKSB7XHJcbiAgICB2YXIgdGhyZXNob2xkID0gZGV0ZXJtaW5lT3RzdVRocmVzaG9sZChpbWFnZVdyYXBwZXIpO1xyXG5cclxuICAgIHRocmVzaG9sZEltYWdlKGltYWdlV3JhcHBlciwgdGhyZXNob2xkLCB0YXJnZXRXcmFwcGVyKTtcclxuICAgIHJldHVybiB0aHJlc2hvbGQ7XHJcbn07XHJcblxyXG4vLyBsb2NhbCB0aHJlc2hvbGRpbmdcclxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVCaW5hcnlJbWFnZShpbWFnZVdyYXBwZXIsIGludGVncmFsV3JhcHBlciwgdGFyZ2V0V3JhcHBlcikge1xyXG4gICAgY29tcHV0ZUludGVncmFsSW1hZ2UoaW1hZ2VXcmFwcGVyLCBpbnRlZ3JhbFdyYXBwZXIpO1xyXG5cclxuICAgIGlmICghdGFyZ2V0V3JhcHBlcikge1xyXG4gICAgICAgIHRhcmdldFdyYXBwZXIgPSBpbWFnZVdyYXBwZXI7XHJcbiAgICB9XHJcbiAgICB2YXIgaW1hZ2VEYXRhID0gaW1hZ2VXcmFwcGVyLmRhdGE7XHJcbiAgICB2YXIgdGFyZ2V0RGF0YSA9IHRhcmdldFdyYXBwZXIuZGF0YTtcclxuICAgIHZhciB3aWR0aCA9IGltYWdlV3JhcHBlci5zaXplLng7XHJcbiAgICB2YXIgaGVpZ2h0ID0gaW1hZ2VXcmFwcGVyLnNpemUueTtcclxuICAgIHZhciBpbnRlZ3JhbEltYWdlRGF0YSA9IGludGVncmFsV3JhcHBlci5kYXRhO1xyXG4gICAgdmFyIHN1bSA9IDAsIHYsIHUsIGtlcm5lbCA9IDMsIEEsIEIsIEMsIEQsIGF2Zywgc2l6ZSA9IChrZXJuZWwgKiAyICsgMSkgKiAoa2VybmVsICogMiArIDEpO1xyXG5cclxuICAgIC8vIGNsZWFyIG91dCB0b3AgJiBib3R0b20tYm9yZGVyXHJcbiAgICBmb3IgKCB2ID0gMDsgdiA8PSBrZXJuZWw7IHYrKykge1xyXG4gICAgICAgIGZvciAoIHUgPSAwOyB1IDwgd2lkdGg7IHUrKykge1xyXG4gICAgICAgICAgICB0YXJnZXREYXRhWygodikgKiB3aWR0aCkgKyB1XSA9IDA7XHJcbiAgICAgICAgICAgIHRhcmdldERhdGFbKCgoaGVpZ2h0IC0gMSkgLSB2KSAqIHdpZHRoKSArIHVdID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2xlYXIgb3V0IGxlZnQgJiByaWdodCBib3JkZXJcclxuICAgIGZvciAoIHYgPSBrZXJuZWw7IHYgPCBoZWlnaHQgLSBrZXJuZWw7IHYrKykge1xyXG4gICAgICAgIGZvciAoIHUgPSAwOyB1IDw9IGtlcm5lbDsgdSsrKSB7XHJcbiAgICAgICAgICAgIHRhcmdldERhdGFbKCh2KSAqIHdpZHRoKSArIHVdID0gMDtcclxuICAgICAgICAgICAgdGFyZ2V0RGF0YVsoKHYpICogd2lkdGgpICsgKHdpZHRoIC0gMSAtIHUpXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAoIHYgPSBrZXJuZWwgKyAxOyB2IDwgaGVpZ2h0IC0ga2VybmVsIC0gMTsgdisrKSB7XHJcbiAgICAgICAgZm9yICggdSA9IGtlcm5lbCArIDE7IHUgPCB3aWR0aCAtIGtlcm5lbDsgdSsrKSB7XHJcbiAgICAgICAgICAgIEEgPSBpbnRlZ3JhbEltYWdlRGF0YVsodiAtIGtlcm5lbCAtIDEpICogd2lkdGggKyAodSAtIGtlcm5lbCAtIDEpXTtcclxuICAgICAgICAgICAgQiA9IGludGVncmFsSW1hZ2VEYXRhWyh2IC0ga2VybmVsIC0gMSkgKiB3aWR0aCArICh1ICsga2VybmVsKV07XHJcbiAgICAgICAgICAgIEMgPSBpbnRlZ3JhbEltYWdlRGF0YVsodiArIGtlcm5lbCkgKiB3aWR0aCArICh1IC0ga2VybmVsIC0gMSldO1xyXG4gICAgICAgICAgICBEID0gaW50ZWdyYWxJbWFnZURhdGFbKHYgKyBrZXJuZWwpICogd2lkdGggKyAodSArIGtlcm5lbCldO1xyXG4gICAgICAgICAgICBzdW0gPSBEIC0gQyAtIEIgKyBBO1xyXG4gICAgICAgICAgICBhdmcgPSBzdW0gLyAoc2l6ZSk7XHJcbiAgICAgICAgICAgIHRhcmdldERhdGFbdiAqIHdpZHRoICsgdV0gPSBpbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gPiAoYXZnICsgNSkgPyAwIDogMTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2x1c3Rlcihwb2ludHMsIHRocmVzaG9sZCwgcHJvcGVydHkpIHtcclxuICAgIHZhciBpLCBrLCBjbHVzdGVyLCBwb2ludCwgY2x1c3RlcnMgPSBbXTtcclxuXHJcbiAgICBpZiAoIXByb3BlcnR5KSB7XHJcbiAgICAgICAgcHJvcGVydHkgPSBcInJhZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGFkZFRvQ2x1c3RlcihuZXdQb2ludCkge1xyXG4gICAgICAgIHZhciBmb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAoIGsgPSAwOyBrIDwgY2x1c3RlcnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgY2x1c3RlciA9IGNsdXN0ZXJzW2tdO1xyXG4gICAgICAgICAgICBpZiAoY2x1c3Rlci5maXRzKG5ld1BvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgY2x1c3Rlci5hZGQobmV3UG9pbnQpO1xyXG4gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmb3VuZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpdGVyYXRlIG92ZXIgZWFjaCBjbG91ZFxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBwb2ludCA9IENsdXN0ZXIyLmNyZWF0ZVBvaW50KHBvaW50c1tpXSwgaSwgcHJvcGVydHkpO1xyXG4gICAgICAgIGlmICghYWRkVG9DbHVzdGVyKHBvaW50KSkge1xyXG4gICAgICAgICAgICBjbHVzdGVycy5wdXNoKENsdXN0ZXIyLmNyZWF0ZShwb2ludCwgdGhyZXNob2xkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsdXN0ZXJzO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFRyYWNlciA9IHtcclxuICAgIHRyYWNlOiBmdW5jdGlvbihwb2ludHMsIHZlYykge1xyXG4gICAgICAgIHZhciBpdGVyYXRpb24sIG1heEl0ZXJhdGlvbnMgPSAxMCwgdG9wID0gW10sIHJlc3VsdCA9IFtdLCBjZW50ZXJQb3MgPSAwLCBjdXJyZW50UG9zID0gMDtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gdHJhY2UoaWR4LCBmb3J3YXJkKSB7XHJcbiAgICAgICAgICAgIHZhciBmcm9tLCB0bywgdG9JZHgsIHByZWRpY3RlZFBvcywgdGhyZXNob2xkWCA9IDEsIHRocmVzaG9sZFkgPSBNYXRoLmFicyh2ZWNbMV0gLyAxMCksIGZvdW5kID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBmdW5jdGlvbiBtYXRjaChwb3MsIHByZWRpY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBvcy54ID4gKHByZWRpY3RlZC54IC0gdGhyZXNob2xkWClcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgcG9zLnggPCAocHJlZGljdGVkLnggKyB0aHJlc2hvbGRYKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBwb3MueSA+IChwcmVkaWN0ZWQueSAtIHRocmVzaG9sZFkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHBvcy55IDwgKHByZWRpY3RlZC55ICsgdGhyZXNob2xkWSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgbmV4dCBpbmRleCBpcyB3aXRoaW4gdGhlIHZlYyBzcGVjaWZpY2F0aW9uc1xyXG4gICAgICAgICAgICAvLyBpZiBub3QsIGNoZWNrIGFzIGxvbmcgYXMgdGhlIHRocmVzaG9sZCBpcyBtZXRcclxuXHJcbiAgICAgICAgICAgIGZyb20gPSBwb2ludHNbaWR4XTtcclxuICAgICAgICAgICAgaWYgKGZvcndhcmQpIHtcclxuICAgICAgICAgICAgICAgIHByZWRpY3RlZFBvcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB4OiBmcm9tLnggKyB2ZWNbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgeTogZnJvbS55ICsgdmVjWzFdXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcHJlZGljdGVkUG9zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IGZyb20ueCAtIHZlY1swXSxcclxuICAgICAgICAgICAgICAgICAgICB5OiBmcm9tLnkgLSB2ZWNbMV1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRvSWR4ID0gZm9yd2FyZCA/IGlkeCArIDEgOiBpZHggLSAxO1xyXG4gICAgICAgICAgICB0byA9IHBvaW50c1t0b0lkeF07XHJcbiAgICAgICAgICAgIHdoaWxlICh0byAmJiAoIGZvdW5kID0gbWF0Y2godG8sIHByZWRpY3RlZFBvcykpICE9PSB0cnVlICYmIChNYXRoLmFicyh0by55IC0gZnJvbS55KSA8IHZlY1sxXSkpIHtcclxuICAgICAgICAgICAgICAgIHRvSWR4ID0gZm9yd2FyZCA/IHRvSWR4ICsgMSA6IHRvSWR4IC0gMTtcclxuICAgICAgICAgICAgICAgIHRvID0gcG9pbnRzW3RvSWR4XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGZvdW5kID8gdG9JZHggOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yICggaXRlcmF0aW9uID0gMDsgaXRlcmF0aW9uIDwgbWF4SXRlcmF0aW9uczsgaXRlcmF0aW9uKyspIHtcclxuICAgICAgICAgICAgLy8gcmFuZG9tbHkgc2VsZWN0IHBvaW50IHRvIHN0YXJ0IHdpdGhcclxuICAgICAgICAgICAgY2VudGVyUG9zID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9pbnRzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgICAgICAvLyB0cmFjZSBmb3J3YXJkXHJcbiAgICAgICAgICAgIHRvcCA9IFtdO1xyXG4gICAgICAgICAgICBjdXJyZW50UG9zID0gY2VudGVyUG9zO1xyXG4gICAgICAgICAgICB0b3AucHVzaChwb2ludHNbY3VycmVudFBvc10pO1xyXG4gICAgICAgICAgICB3aGlsZSAoKCBjdXJyZW50UG9zID0gdHJhY2UoY3VycmVudFBvcywgdHJ1ZSkpICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0b3AucHVzaChwb2ludHNbY3VycmVudFBvc10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjZW50ZXJQb3MgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zID0gY2VudGVyUG9zO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKCggY3VycmVudFBvcyA9IHRyYWNlKGN1cnJlbnRQb3MsIGZhbHNlKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0b3AucHVzaChwb2ludHNbY3VycmVudFBvc10pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodG9wLmxlbmd0aCA+IHJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IERJTEFURSA9IDE7XHJcbmV4cG9ydCBjb25zdCBFUk9ERSA9IDI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGlsYXRlKGluSW1hZ2VXcmFwcGVyLCBvdXRJbWFnZVdyYXBwZXIpIHtcclxuICAgIHZhciB2LFxyXG4gICAgICAgIHUsXHJcbiAgICAgICAgaW5JbWFnZURhdGEgPSBpbkltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIG91dEltYWdlRGF0YSA9IG91dEltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIGhlaWdodCA9IGluSW1hZ2VXcmFwcGVyLnNpemUueSxcclxuICAgICAgICB3aWR0aCA9IGluSW1hZ2VXcmFwcGVyLnNpemUueCxcclxuICAgICAgICBzdW0sXHJcbiAgICAgICAgeVN0YXJ0MSxcclxuICAgICAgICB5U3RhcnQyLFxyXG4gICAgICAgIHhTdGFydDEsXHJcbiAgICAgICAgeFN0YXJ0MjtcclxuXHJcbiAgICBmb3IgKCB2ID0gMTsgdiA8IGhlaWdodCAtIDE7IHYrKykge1xyXG4gICAgICAgIGZvciAoIHUgPSAxOyB1IDwgd2lkdGggLSAxOyB1KyspIHtcclxuICAgICAgICAgICAgeVN0YXJ0MSA9IHYgLSAxO1xyXG4gICAgICAgICAgICB5U3RhcnQyID0gdiArIDE7XHJcbiAgICAgICAgICAgIHhTdGFydDEgPSB1IC0gMTtcclxuICAgICAgICAgICAgeFN0YXJ0MiA9IHUgKyAxO1xyXG4gICAgICAgICAgICBzdW0gPSBpbkltYWdlRGF0YVt5U3RhcnQxICogd2lkdGggKyB4U3RhcnQxXSArIGluSW1hZ2VEYXRhW3lTdGFydDEgKiB3aWR0aCArIHhTdGFydDJdICtcclxuICAgICAgICAgICAgaW5JbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gK1xyXG4gICAgICAgICAgICBpbkltYWdlRGF0YVt5U3RhcnQyICogd2lkdGggKyB4U3RhcnQxXSArIGluSW1hZ2VEYXRhW3lTdGFydDIgKiB3aWR0aCArIHhTdGFydDJdO1xyXG4gICAgICAgICAgICBvdXRJbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gPSBzdW0gPiAwID8gMSA6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVyb2RlKGluSW1hZ2VXcmFwcGVyLCBvdXRJbWFnZVdyYXBwZXIpIHtcclxuICAgIHZhciB2LFxyXG4gICAgICAgIHUsXHJcbiAgICAgICAgaW5JbWFnZURhdGEgPSBpbkltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIG91dEltYWdlRGF0YSA9IG91dEltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIGhlaWdodCA9IGluSW1hZ2VXcmFwcGVyLnNpemUueSxcclxuICAgICAgICB3aWR0aCA9IGluSW1hZ2VXcmFwcGVyLnNpemUueCxcclxuICAgICAgICBzdW0sXHJcbiAgICAgICAgeVN0YXJ0MSxcclxuICAgICAgICB5U3RhcnQyLFxyXG4gICAgICAgIHhTdGFydDEsXHJcbiAgICAgICAgeFN0YXJ0MjtcclxuXHJcbiAgICBmb3IgKCB2ID0gMTsgdiA8IGhlaWdodCAtIDE7IHYrKykge1xyXG4gICAgICAgIGZvciAoIHUgPSAxOyB1IDwgd2lkdGggLSAxOyB1KyspIHtcclxuICAgICAgICAgICAgeVN0YXJ0MSA9IHYgLSAxO1xyXG4gICAgICAgICAgICB5U3RhcnQyID0gdiArIDE7XHJcbiAgICAgICAgICAgIHhTdGFydDEgPSB1IC0gMTtcclxuICAgICAgICAgICAgeFN0YXJ0MiA9IHUgKyAxO1xyXG4gICAgICAgICAgICBzdW0gPSBpbkltYWdlRGF0YVt5U3RhcnQxICogd2lkdGggKyB4U3RhcnQxXSArIGluSW1hZ2VEYXRhW3lTdGFydDEgKiB3aWR0aCArIHhTdGFydDJdICtcclxuICAgICAgICAgICAgaW5JbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gK1xyXG4gICAgICAgICAgICBpbkltYWdlRGF0YVt5U3RhcnQyICogd2lkdGggKyB4U3RhcnQxXSArIGluSW1hZ2VEYXRhW3lTdGFydDIgKiB3aWR0aCArIHhTdGFydDJdO1xyXG4gICAgICAgICAgICBvdXRJbWFnZURhdGFbdiAqIHdpZHRoICsgdV0gPSBzdW0gPT09IDUgPyAxIDogMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3QoYUltYWdlV3JhcHBlciwgYkltYWdlV3JhcHBlciwgcmVzdWx0SW1hZ2VXcmFwcGVyKSB7XHJcbiAgICBpZiAoIXJlc3VsdEltYWdlV3JhcHBlcikge1xyXG4gICAgICAgIHJlc3VsdEltYWdlV3JhcHBlciA9IGFJbWFnZVdyYXBwZXI7XHJcbiAgICB9XHJcbiAgICB2YXIgbGVuZ3RoID0gYUltYWdlV3JhcHBlci5kYXRhLmxlbmd0aCxcclxuICAgICAgICBhSW1hZ2VEYXRhID0gYUltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIGJJbWFnZURhdGEgPSBiSW1hZ2VXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgY0ltYWdlRGF0YSA9IHJlc3VsdEltYWdlV3JhcHBlci5kYXRhO1xyXG5cclxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgIGNJbWFnZURhdGFbbGVuZ3RoXSA9IGFJbWFnZURhdGFbbGVuZ3RoXSAtIGJJbWFnZURhdGFbbGVuZ3RoXTtcclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBiaXR3aXNlT3IoYUltYWdlV3JhcHBlciwgYkltYWdlV3JhcHBlciwgcmVzdWx0SW1hZ2VXcmFwcGVyKSB7XHJcbiAgICBpZiAoIXJlc3VsdEltYWdlV3JhcHBlcikge1xyXG4gICAgICAgIHJlc3VsdEltYWdlV3JhcHBlciA9IGFJbWFnZVdyYXBwZXI7XHJcbiAgICB9XHJcbiAgICB2YXIgbGVuZ3RoID0gYUltYWdlV3JhcHBlci5kYXRhLmxlbmd0aCxcclxuICAgICAgICBhSW1hZ2VEYXRhID0gYUltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIGJJbWFnZURhdGEgPSBiSW1hZ2VXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgY0ltYWdlRGF0YSA9IHJlc3VsdEltYWdlV3JhcHBlci5kYXRhO1xyXG5cclxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgIGNJbWFnZURhdGFbbGVuZ3RoXSA9IGFJbWFnZURhdGFbbGVuZ3RoXSB8fCBiSW1hZ2VEYXRhW2xlbmd0aF07XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY291bnROb25aZXJvKGltYWdlV3JhcHBlcikge1xyXG4gICAgdmFyIGxlbmd0aCA9IGltYWdlV3JhcHBlci5kYXRhLmxlbmd0aCwgZGF0YSA9IGltYWdlV3JhcHBlci5kYXRhLCBzdW0gPSAwO1xyXG5cclxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgIHN1bSArPSBkYXRhW2xlbmd0aF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VtO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRvcEdlbmVyaWMobGlzdCwgdG9wLCBzY29yZUZ1bmMpIHtcclxuICAgIHZhciBpLCBtaW5JZHggPSAwLCBtaW4gPSAwLCBxdWV1ZSA9IFtdLCBzY29yZSwgaGl0LCBwb3M7XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCB0b3A7IGkrKykge1xyXG4gICAgICAgIHF1ZXVlW2ldID0ge1xyXG4gICAgICAgICAgICBzY29yZTogMCxcclxuICAgICAgICAgICAgaXRlbTogbnVsbFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgc2NvcmUgPSBzY29yZUZ1bmMuYXBwbHkodGhpcywgW2xpc3RbaV1dKTtcclxuICAgICAgICBpZiAoc2NvcmUgPiBtaW4pIHtcclxuICAgICAgICAgICAgaGl0ID0gcXVldWVbbWluSWR4XTtcclxuICAgICAgICAgICAgaGl0LnNjb3JlID0gc2NvcmU7XHJcbiAgICAgICAgICAgIGhpdC5pdGVtID0gbGlzdFtpXTtcclxuICAgICAgICAgICAgbWluID0gTnVtYmVyLk1BWF9WQUxVRTtcclxuICAgICAgICAgICAgZm9yICggcG9zID0gMDsgcG9zIDwgdG9wOyBwb3MrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXVlW3Bvc10uc2NvcmUgPCBtaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW4gPSBxdWV1ZVtwb3NdLnNjb3JlO1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbklkeCA9IHBvcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcXVldWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ3JheUFycmF5RnJvbUltYWdlKGh0bWxJbWFnZSwgb2Zmc2V0WCwgY3R4LCBhcnJheSkge1xyXG4gICAgY3R4LmRyYXdJbWFnZShodG1sSW1hZ2UsIG9mZnNldFgsIDAsIGh0bWxJbWFnZS53aWR0aCwgaHRtbEltYWdlLmhlaWdodCk7XHJcbiAgICB2YXIgY3R4RGF0YSA9IGN0eC5nZXRJbWFnZURhdGEob2Zmc2V0WCwgMCwgaHRtbEltYWdlLndpZHRoLCBodG1sSW1hZ2UuaGVpZ2h0KS5kYXRhO1xyXG4gICAgY29tcHV0ZUdyYXkoY3R4RGF0YSwgYXJyYXkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdyYXlBcnJheUZyb21Db250ZXh0KGN0eCwgc2l6ZSwgb2Zmc2V0LCBhcnJheSkge1xyXG4gICAgdmFyIGN0eERhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKG9mZnNldC54LCBvZmZzZXQueSwgc2l6ZS54LCBzaXplLnkpLmRhdGE7XHJcbiAgICBjb21wdXRlR3JheShjdHhEYXRhLCBhcnJheSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ3JheUFuZEhhbGZTYW1wbGVGcm9tQ2FudmFzRGF0YShjYW52YXNEYXRhLCBzaXplLCBvdXRBcnJheSkge1xyXG4gICAgdmFyIHRvcFJvd0lkeCA9IDA7XHJcbiAgICB2YXIgYm90dG9tUm93SWR4ID0gc2l6ZS54O1xyXG4gICAgdmFyIGVuZElkeCA9IE1hdGguZmxvb3IoY2FudmFzRGF0YS5sZW5ndGggLyA0KTtcclxuICAgIHZhciBvdXRXaWR0aCA9IHNpemUueCAvIDI7XHJcbiAgICB2YXIgb3V0SW1nSWR4ID0gMDtcclxuICAgIHZhciBpbldpZHRoID0gc2l6ZS54O1xyXG4gICAgdmFyIGk7XHJcblxyXG4gICAgd2hpbGUgKGJvdHRvbVJvd0lkeCA8IGVuZElkeCkge1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgb3V0V2lkdGg7IGkrKykge1xyXG4gICAgICAgICAgICBvdXRBcnJheVtvdXRJbWdJZHhdID0gTWF0aC5mbG9vcigoXHJcbiAgICAgICAgICAgICAgICAoMC4yOTkgKiBjYW52YXNEYXRhW3RvcFJvd0lkeCAqIDQgKyAwXSArXHJcbiAgICAgICAgICAgICAgICAgMC41ODcgKiBjYW52YXNEYXRhW3RvcFJvd0lkeCAqIDQgKyAxXSArXHJcbiAgICAgICAgICAgICAgICAgMC4xMTQgKiBjYW52YXNEYXRhW3RvcFJvd0lkeCAqIDQgKyAyXSkgK1xyXG4gICAgICAgICAgICAgICAgKDAuMjk5ICogY2FudmFzRGF0YVsodG9wUm93SWR4ICsgMSkgKiA0ICsgMF0gK1xyXG4gICAgICAgICAgICAgICAgIDAuNTg3ICogY2FudmFzRGF0YVsodG9wUm93SWR4ICsgMSkgKiA0ICsgMV0gK1xyXG4gICAgICAgICAgICAgICAgIDAuMTE0ICogY2FudmFzRGF0YVsodG9wUm93SWR4ICsgMSkgKiA0ICsgMl0pICtcclxuICAgICAgICAgICAgICAgICgwLjI5OSAqIGNhbnZhc0RhdGFbKGJvdHRvbVJvd0lkeCkgKiA0ICsgMF0gK1xyXG4gICAgICAgICAgICAgICAgIDAuNTg3ICogY2FudmFzRGF0YVsoYm90dG9tUm93SWR4KSAqIDQgKyAxXSArXHJcbiAgICAgICAgICAgICAgICAgMC4xMTQgKiBjYW52YXNEYXRhWyhib3R0b21Sb3dJZHgpICogNCArIDJdKSArXHJcbiAgICAgICAgICAgICAgICAoMC4yOTkgKiBjYW52YXNEYXRhWyhib3R0b21Sb3dJZHggKyAxKSAqIDQgKyAwXSArXHJcbiAgICAgICAgICAgICAgICAgMC41ODcgKiBjYW52YXNEYXRhWyhib3R0b21Sb3dJZHggKyAxKSAqIDQgKyAxXSArXHJcbiAgICAgICAgICAgICAgICAgMC4xMTQgKiBjYW52YXNEYXRhWyhib3R0b21Sb3dJZHggKyAxKSAqIDQgKyAyXSkpIC8gNCk7XHJcbiAgICAgICAgICAgIG91dEltZ0lkeCsrO1xyXG4gICAgICAgICAgICB0b3BSb3dJZHggPSB0b3BSb3dJZHggKyAyO1xyXG4gICAgICAgICAgICBib3R0b21Sb3dJZHggPSBib3R0b21Sb3dJZHggKyAyO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0b3BSb3dJZHggPSB0b3BSb3dJZHggKyBpbldpZHRoO1xyXG4gICAgICAgIGJvdHRvbVJvd0lkeCA9IGJvdHRvbVJvd0lkeCArIGluV2lkdGg7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUdyYXkoaW1hZ2VEYXRhLCBvdXRBcnJheSwgY29uZmlnKSB7XHJcbiAgICB2YXIgbCA9IChpbWFnZURhdGEubGVuZ3RoIC8gNCkgfCAwLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgc2luZ2xlQ2hhbm5lbCA9IGNvbmZpZyAmJiBjb25maWcuc2luZ2xlQ2hhbm5lbCA9PT0gdHJ1ZTtcclxuXHJcbiAgICBpZiAoc2luZ2xlQ2hhbm5lbCkge1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgb3V0QXJyYXlbaV0gPSBpbWFnZURhdGFbaSAqIDQgKyAwXTtcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgb3V0QXJyYXlbaV0gPSBNYXRoLmZsb29yKFxyXG4gICAgICAgICAgICAgICAgMC4yOTkgKiBpbWFnZURhdGFbaSAqIDQgKyAwXSArIDAuNTg3ICogaW1hZ2VEYXRhW2kgKiA0ICsgMV0gKyAwLjExNCAqIGltYWdlRGF0YVtpICogNCArIDJdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEltYWdlQXJyYXkoc3JjLCBjYWxsYmFjaywgY2FudmFzKSB7XHJcbiAgICBpZiAoIWNhbnZhcykge1xyXG4gICAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgfVxyXG4gICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgaW1nLmNhbGxiYWNrID0gY2FsbGJhY2s7XHJcbiAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UodGhpcywgMCwgMCk7XHJcbiAgICAgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy53aWR0aCAqIHRoaXMuaGVpZ2h0KTtcclxuICAgICAgICBjdHguZHJhd0ltYWdlKHRoaXMsIDAsIDApO1xyXG4gICAgICAgIHZhciBkYXRhID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCkuZGF0YTtcclxuICAgICAgICBjb21wdXRlR3JheShkYXRhLCBhcnJheSk7XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayhhcnJheSwge1xyXG4gICAgICAgICAgICB4OiB0aGlzLndpZHRoLFxyXG4gICAgICAgICAgICB5OiB0aGlzLmhlaWdodFxyXG4gICAgICAgIH0sIHRoaXMpO1xyXG4gICAgfTtcclxuICAgIGltZy5zcmMgPSBzcmM7XHJcbn07XHJcblxyXG4vKipcclxuICogQHBhcmFtIGluSW1nIHtJbWFnZVdyYXBwZXJ9IGlucHV0IGltYWdlIHRvIGJlIHNhbXBsZWRcclxuICogQHBhcmFtIG91dEltZyB7SW1hZ2VXcmFwcGVyfSB0byBiZSBzdG9yZWQgaW5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoYWxmU2FtcGxlKGluSW1nV3JhcHBlciwgb3V0SW1nV3JhcHBlcikge1xyXG4gICAgdmFyIGluSW1nID0gaW5JbWdXcmFwcGVyLmRhdGE7XHJcbiAgICB2YXIgaW5XaWR0aCA9IGluSW1nV3JhcHBlci5zaXplLng7XHJcbiAgICB2YXIgb3V0SW1nID0gb3V0SW1nV3JhcHBlci5kYXRhO1xyXG4gICAgdmFyIHRvcFJvd0lkeCA9IDA7XHJcbiAgICB2YXIgYm90dG9tUm93SWR4ID0gaW5XaWR0aDtcclxuICAgIHZhciBlbmRJZHggPSBpbkltZy5sZW5ndGg7XHJcbiAgICB2YXIgb3V0V2lkdGggPSBpbldpZHRoIC8gMjtcclxuICAgIHZhciBvdXRJbWdJZHggPSAwO1xyXG4gICAgd2hpbGUgKGJvdHRvbVJvd0lkeCA8IGVuZElkeCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0V2lkdGg7IGkrKykge1xyXG4gICAgICAgICAgICBvdXRJbWdbb3V0SW1nSWR4XSA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgICAgICAgICAoaW5JbWdbdG9wUm93SWR4XSArIGluSW1nW3RvcFJvd0lkeCArIDFdICsgaW5JbWdbYm90dG9tUm93SWR4XSArIGluSW1nW2JvdHRvbVJvd0lkeCArIDFdKSAvIDQpO1xyXG4gICAgICAgICAgICBvdXRJbWdJZHgrKztcclxuICAgICAgICAgICAgdG9wUm93SWR4ID0gdG9wUm93SWR4ICsgMjtcclxuICAgICAgICAgICAgYm90dG9tUm93SWR4ID0gYm90dG9tUm93SWR4ICsgMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdG9wUm93SWR4ID0gdG9wUm93SWR4ICsgaW5XaWR0aDtcclxuICAgICAgICBib3R0b21Sb3dJZHggPSBib3R0b21Sb3dJZHggKyBpbldpZHRoO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdjJyZ2IoaHN2LCByZ2IpIHtcclxuICAgIHZhciBoID0gaHN2WzBdLFxyXG4gICAgICAgIHMgPSBoc3ZbMV0sXHJcbiAgICAgICAgdiA9IGhzdlsyXSxcclxuICAgICAgICBjID0gdiAqIHMsXHJcbiAgICAgICAgeCA9IGMgKiAoMSAtIE1hdGguYWJzKChoIC8gNjApICUgMiAtIDEpKSxcclxuICAgICAgICBtID0gdiAtIGMsXHJcbiAgICAgICAgciA9IDAsXHJcbiAgICAgICAgZyA9IDAsXHJcbiAgICAgICAgYiA9IDA7XHJcblxyXG4gICAgcmdiID0gcmdiIHx8IFswLCAwLCAwXTtcclxuXHJcbiAgICBpZiAoaCA8IDYwKSB7XHJcbiAgICAgICAgciA9IGM7XHJcbiAgICAgICAgZyA9IHg7XHJcbiAgICB9IGVsc2UgaWYgKGggPCAxMjApIHtcclxuICAgICAgICByID0geDtcclxuICAgICAgICBnID0gYztcclxuICAgIH0gZWxzZSBpZiAoaCA8IDE4MCkge1xyXG4gICAgICAgIGcgPSBjO1xyXG4gICAgICAgIGIgPSB4O1xyXG4gICAgfSBlbHNlIGlmIChoIDwgMjQwKSB7XHJcbiAgICAgICAgZyA9IHg7XHJcbiAgICAgICAgYiA9IGM7XHJcbiAgICB9IGVsc2UgaWYgKGggPCAzMDApIHtcclxuICAgICAgICByID0geDtcclxuICAgICAgICBiID0gYztcclxuICAgIH0gZWxzZSBpZiAoaCA8IDM2MCkge1xyXG4gICAgICAgIHIgPSBjO1xyXG4gICAgICAgIGIgPSB4O1xyXG4gICAgfVxyXG4gICAgcmdiWzBdID0gKChyICsgbSkgKiAyNTUpIHwgMDtcclxuICAgIHJnYlsxXSA9ICgoZyArIG0pICogMjU1KSB8IDA7XHJcbiAgICByZ2JbMl0gPSAoKGIgKyBtKSAqIDI1NSkgfCAwO1xyXG4gICAgcmV0dXJuIHJnYjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfY29tcHV0ZURpdmlzb3JzKG4pIHtcclxuICAgIHZhciBsYXJnZURpdmlzb3JzID0gW10sXHJcbiAgICAgICAgZGl2aXNvcnMgPSBbXSxcclxuICAgICAgICBpO1xyXG5cclxuICAgIGZvciAoaSA9IDE7IGkgPCBNYXRoLnNxcnQobikgKyAxOyBpKyspIHtcclxuICAgICAgICBpZiAobiAlIGkgPT09IDApIHtcclxuICAgICAgICAgICAgZGl2aXNvcnMucHVzaChpKTtcclxuICAgICAgICAgICAgaWYgKGkgIT09IG4gLyBpKSB7XHJcbiAgICAgICAgICAgICAgICBsYXJnZURpdmlzb3JzLnVuc2hpZnQoTWF0aC5mbG9vcihuIC8gaSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRpdmlzb3JzLmNvbmNhdChsYXJnZURpdmlzb3JzKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIF9jb21wdXRlSW50ZXJzZWN0aW9uKGFycjEsIGFycjIpIHtcclxuICAgIHZhciBpID0gMCxcclxuICAgICAgICBqID0gMCxcclxuICAgICAgICByZXN1bHQgPSBbXTtcclxuXHJcbiAgICB3aGlsZSAoaSA8IGFycjEubGVuZ3RoICYmIGogPCBhcnIyLmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChhcnIxW2ldID09PSBhcnIyW2pdKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGFycjFbaV0pO1xyXG4gICAgICAgICAgICBpKys7XHJcbiAgICAgICAgICAgIGorKztcclxuICAgICAgICB9IGVsc2UgaWYgKGFycjFbaV0gPiBhcnIyW2pdKSB7XHJcbiAgICAgICAgICAgIGorKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpKys7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVQYXRjaFNpemUocGF0Y2hTaXplLCBpbWdTaXplKSB7XHJcbiAgICB2YXIgZGl2aXNvcnNYID0gX2NvbXB1dGVEaXZpc29ycyhpbWdTaXplLngpLFxyXG4gICAgICAgIGRpdmlzb3JzWSA9IF9jb21wdXRlRGl2aXNvcnMoaW1nU2l6ZS55KSxcclxuICAgICAgICB3aWRlU2lkZSA9IE1hdGgubWF4KGltZ1NpemUueCwgaW1nU2l6ZS55KSxcclxuICAgICAgICBjb21tb24gPSBfY29tcHV0ZUludGVyc2VjdGlvbihkaXZpc29yc1gsIGRpdmlzb3JzWSksXHJcbiAgICAgICAgbnJPZlBhdGNoZXNMaXN0ID0gWzgsIDEwLCAxNSwgMjAsIDMyLCA2MCwgODBdLFxyXG4gICAgICAgIG5yT2ZQYXRjaGVzTWFwID0ge1xyXG4gICAgICAgICAgICBcIngtc21hbGxcIjogNSxcclxuICAgICAgICAgICAgXCJzbWFsbFwiOiA0LFxyXG4gICAgICAgICAgICBcIm1lZGl1bVwiOiAzLFxyXG4gICAgICAgICAgICBcImxhcmdlXCI6IDIsXHJcbiAgICAgICAgICAgIFwieC1sYXJnZVwiOiAxXHJcbiAgICAgICAgfSxcclxuICAgICAgICBuck9mUGF0Y2hlc0lkeCA9IG5yT2ZQYXRjaGVzTWFwW3BhdGNoU2l6ZV0gfHwgbnJPZlBhdGNoZXNNYXAubWVkaXVtLFxyXG4gICAgICAgIG5yT2ZQYXRjaGVzID0gbnJPZlBhdGNoZXNMaXN0W25yT2ZQYXRjaGVzSWR4XSxcclxuICAgICAgICBkZXNpcmVkUGF0Y2hTaXplID0gTWF0aC5mbG9vcih3aWRlU2lkZSAvIG5yT2ZQYXRjaGVzKSxcclxuICAgICAgICBvcHRpbWFsUGF0Y2hTaXplO1xyXG5cclxuICAgIGZ1bmN0aW9uIGZpbmRQYXRjaFNpemVGb3JEaXZpc29ycyhkaXZpc29ycykge1xyXG4gICAgICAgIHZhciBpID0gMCxcclxuICAgICAgICAgICAgZm91bmQgPSBkaXZpc29yc1tNYXRoLmZsb29yKGRpdmlzb3JzLmxlbmd0aCAvIDIpXTtcclxuXHJcbiAgICAgICAgd2hpbGUgKGkgPCAoZGl2aXNvcnMubGVuZ3RoIC0gMSkgJiYgZGl2aXNvcnNbaV0gPCBkZXNpcmVkUGF0Y2hTaXplKSB7XHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyhkaXZpc29yc1tpXSAtIGRlc2lyZWRQYXRjaFNpemUpID4gTWF0aC5hYnMoZGl2aXNvcnNbaSAtIDFdIC0gZGVzaXJlZFBhdGNoU2l6ZSkpIHtcclxuICAgICAgICAgICAgICAgIGZvdW5kID0gZGl2aXNvcnNbaSAtIDFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZm91bmQgPSBkaXZpc29yc1tpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVzaXJlZFBhdGNoU2l6ZSAvIGZvdW5kIDwgbnJPZlBhdGNoZXNMaXN0W25yT2ZQYXRjaGVzSWR4ICsgMV0gLyBuck9mUGF0Y2hlc0xpc3RbbnJPZlBhdGNoZXNJZHhdICYmXHJcbiAgICAgICAgICAgIGRlc2lyZWRQYXRjaFNpemUgLyBmb3VuZCA+IG5yT2ZQYXRjaGVzTGlzdFtuck9mUGF0Y2hlc0lkeCAtIDFdIC8gbnJPZlBhdGNoZXNMaXN0W25yT2ZQYXRjaGVzSWR4XSApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHt4OiBmb3VuZCwgeTogZm91bmR9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBvcHRpbWFsUGF0Y2hTaXplID0gZmluZFBhdGNoU2l6ZUZvckRpdmlzb3JzKGNvbW1vbik7XHJcbiAgICBpZiAoIW9wdGltYWxQYXRjaFNpemUpIHtcclxuICAgICAgICBvcHRpbWFsUGF0Y2hTaXplID0gZmluZFBhdGNoU2l6ZUZvckRpdmlzb3JzKF9jb21wdXRlRGl2aXNvcnMod2lkZVNpZGUpKTtcclxuICAgICAgICBpZiAoIW9wdGltYWxQYXRjaFNpemUpIHtcclxuICAgICAgICAgICAgb3B0aW1hbFBhdGNoU2l6ZSA9IGZpbmRQYXRjaFNpemVGb3JEaXZpc29ycygoX2NvbXB1dGVEaXZpc29ycyhkZXNpcmVkUGF0Y2hTaXplICogbnJPZlBhdGNoZXMpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9wdGltYWxQYXRjaFNpemU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX3BhcnNlQ1NTRGltZW5zaW9uVmFsdWVzKHZhbHVlKSB7XHJcbiAgICB2YXIgZGltZW5zaW9uID0ge1xyXG4gICAgICAgIHZhbHVlOiBwYXJzZUZsb2F0KHZhbHVlKSxcclxuICAgICAgICB1bml0OiB2YWx1ZS5pbmRleE9mKFwiJVwiKSA9PT0gdmFsdWUubGVuZ3RoIC0gMSA/IFwiJVwiIDogXCIlXCJcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGRpbWVuc2lvbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBfZGltZW5zaW9uc0NvbnZlcnRlcnMgPSB7XHJcbiAgICB0b3A6IGZ1bmN0aW9uKGRpbWVuc2lvbiwgY29udGV4dCkge1xyXG4gICAgICAgIGlmIChkaW1lbnNpb24udW5pdCA9PT0gXCIlXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoY29udGV4dC5oZWlnaHQgKiAoZGltZW5zaW9uLnZhbHVlIC8gMTAwKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHJpZ2h0OiBmdW5jdGlvbihkaW1lbnNpb24sIGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoZGltZW5zaW9uLnVuaXQgPT09IFwiJVwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKGNvbnRleHQud2lkdGggLSAoY29udGV4dC53aWR0aCAqIChkaW1lbnNpb24udmFsdWUgLyAxMDApKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGJvdHRvbTogZnVuY3Rpb24oZGltZW5zaW9uLCBjb250ZXh0KSB7XHJcbiAgICAgICAgaWYgKGRpbWVuc2lvbi51bml0ID09PSBcIiVcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihjb250ZXh0LmhlaWdodCAtIChjb250ZXh0LmhlaWdodCAqIChkaW1lbnNpb24udmFsdWUgLyAxMDApKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGxlZnQ6IGZ1bmN0aW9uKGRpbWVuc2lvbiwgY29udGV4dCkge1xyXG4gICAgICAgIGlmIChkaW1lbnNpb24udW5pdCA9PT0gXCIlXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoY29udGV4dC53aWR0aCAqIChkaW1lbnNpb24udmFsdWUgLyAxMDApKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUltYWdlQXJlYShpbnB1dFdpZHRoLCBpbnB1dEhlaWdodCwgYXJlYSkge1xyXG4gICAgdmFyIGNvbnRleHQgPSB7d2lkdGg6IGlucHV0V2lkdGgsIGhlaWdodDogaW5wdXRIZWlnaHR9O1xyXG5cclxuICAgIHZhciBwYXJzZWRBcmVhID0gT2JqZWN0LmtleXMoYXJlYSkucmVkdWNlKGZ1bmN0aW9uKHJlc3VsdCwga2V5KSB7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gYXJlYVtrZXldLFxyXG4gICAgICAgICAgICBwYXJzZWQgPSBfcGFyc2VDU1NEaW1lbnNpb25WYWx1ZXModmFsdWUpLFxyXG4gICAgICAgICAgICBjYWxjdWxhdGVkID0gX2RpbWVuc2lvbnNDb252ZXJ0ZXJzW2tleV0ocGFyc2VkLCBjb250ZXh0KTtcclxuXHJcbiAgICAgICAgcmVzdWx0W2tleV0gPSBjYWxjdWxhdGVkO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9LCB7fSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzeDogcGFyc2VkQXJlYS5sZWZ0LFxyXG4gICAgICAgIHN5OiBwYXJzZWRBcmVhLnRvcCxcclxuICAgICAgICBzdzogcGFyc2VkQXJlYS5yaWdodCAtIHBhcnNlZEFyZWEubGVmdCxcclxuICAgICAgICBzaDogcGFyc2VkQXJlYS5ib3R0b20gLSBwYXJzZWRBcmVhLnRvcFxyXG4gICAgfTtcclxufTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tbW9uL2N2X3V0aWxzLmpzXG4gKiovIiwiaW1wb3J0IFN1YkltYWdlIGZyb20gJy4vc3ViSW1hZ2UnO1xyXG5pbXBvcnQge2hzdjJyZ2J9IGZyb20gJy4uL2NvbW1vbi9jdl91dGlscyc7XHJcbmltcG9ydCBBcnJheUhlbHBlciBmcm9tICcuLi9jb21tb24vYXJyYXlfaGVscGVyJztcclxuY29uc3QgdmVjMiA9IHtcclxuICAgIGNsb25lOiByZXF1aXJlKCdnbC12ZWMyL2Nsb25lJyksXHJcbn07XHJcblxyXG4vKipcclxuICogUmVwcmVzZW50cyBhIGJhc2ljIGltYWdlIGNvbWJpbmluZyB0aGUgZGF0YSBhbmQgc2l6ZS5cclxuICogSW4gYWRkaXRpb24sIHNvbWUgbWV0aG9kcyBmb3IgbWFuaXB1bGF0aW9uIGFyZSBjb250YWluZWQuXHJcbiAqIEBwYXJhbSBzaXplIHt4LHl9IFRoZSBzaXplIG9mIHRoZSBpbWFnZSBpbiBwaXhlbFxyXG4gKiBAcGFyYW0gZGF0YSB7QXJyYXl9IElmIGdpdmVuLCBhIGZsYXQgYXJyYXkgY29udGFpbmluZyB0aGUgcGl4ZWwgZGF0YVxyXG4gKiBAcGFyYW0gQXJyYXlUeXBlIHtUeXBlfSBJZiBnaXZlbiwgdGhlIGRlc2lyZWQgRGF0YVR5cGUgb2YgdGhlIEFycmF5IChtYXkgYmUgdHlwZWQvbm9uLXR5cGVkKVxyXG4gKiBAcGFyYW0gaW5pdGlhbGl6ZSB7Qm9vbGVhbn0gSW5kaWNhdGluZyBpZiB0aGUgYXJyYXkgc2hvdWxkIGJlIGluaXRpYWxpemVkIG9uIGNyZWF0aW9uLlxyXG4gKiBAcmV0dXJucyB7SW1hZ2VXcmFwcGVyfVxyXG4gKi9cclxuZnVuY3Rpb24gSW1hZ2VXcmFwcGVyKHNpemUsIGRhdGEsIEFycmF5VHlwZSwgaW5pdGlhbGl6ZSkge1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgICAgaWYgKEFycmF5VHlwZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBuZXcgQXJyYXlUeXBlKHNpemUueCAqIHNpemUueSk7XHJcbiAgICAgICAgICAgIGlmIChBcnJheVR5cGUgPT09IEFycmF5ICYmIGluaXRpYWxpemUpIHtcclxuICAgICAgICAgICAgICAgIEFycmF5SGVscGVyLmluaXQodGhpcy5kYXRhLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IG5ldyBVaW50OEFycmF5KHNpemUueCAqIHNpemUueSk7XHJcbiAgICAgICAgICAgIGlmIChVaW50OEFycmF5ID09PSBBcnJheSAmJiBpbml0aWFsaXplKSB7XHJcbiAgICAgICAgICAgICAgICBBcnJheUhlbHBlci5pbml0KHRoaXMuZGF0YSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNpemUgPSBzaXplO1xyXG59XHJcblxyXG4vKipcclxuICogdGVzdHMgaWYgYSBwb3NpdGlvbiBpcyB3aXRoaW4gdGhlIGltYWdlIHdpdGggYSBnaXZlbiBvZmZzZXRcclxuICogQHBhcmFtIGltZ1JlZiB7eCwgeX0gVGhlIGxvY2F0aW9uIHRvIHRlc3RcclxuICogQHBhcmFtIGJvcmRlciBOdW1iZXIgdGhlIHBhZGRpbmcgdmFsdWUgaW4gcGl4ZWxcclxuICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgbG9jYXRpb24gaW5zaWRlIHRoZSBpbWFnZSdzIGJvcmRlciwgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAqIEBzZWUgY3ZkL2ltYWdlLmhcclxuICovXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuaW5JbWFnZVdpdGhCb3JkZXIgPSBmdW5jdGlvbihpbWdSZWYsIGJvcmRlcikge1xyXG4gICAgcmV0dXJuIChpbWdSZWYueCA+PSBib3JkZXIpXHJcbiAgICAgICAgJiYgKGltZ1JlZi55ID49IGJvcmRlcilcclxuICAgICAgICAmJiAoaW1nUmVmLnggPCAodGhpcy5zaXplLnggLSBib3JkZXIpKVxyXG4gICAgICAgICYmIChpbWdSZWYueSA8ICh0aGlzLnNpemUueSAtIGJvcmRlcikpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFBlcmZvcm1zIGJpbGluZWFyIHNhbXBsaW5nXHJcbiAqIEBwYXJhbSBpbkltZyBJbWFnZSB0byBleHRyYWN0IHNhbXBsZSBmcm9tXHJcbiAqIEBwYXJhbSB4IHRoZSB4LWNvb3JkaW5hdGVcclxuICogQHBhcmFtIHkgdGhlIHktY29vcmRpbmF0ZVxyXG4gKiBAcmV0dXJucyB0aGUgc2FtcGxlZCB2YWx1ZVxyXG4gKiBAc2VlIGN2ZC92aXNpb24uaFxyXG4gKi9cclxuSW1hZ2VXcmFwcGVyLnNhbXBsZSA9IGZ1bmN0aW9uKGluSW1nLCB4LCB5KSB7XHJcbiAgICB2YXIgbHggPSBNYXRoLmZsb29yKHgpO1xyXG4gICAgdmFyIGx5ID0gTWF0aC5mbG9vcih5KTtcclxuICAgIHZhciB3ID0gaW5JbWcuc2l6ZS54O1xyXG4gICAgdmFyIGJhc2UgPSBseSAqIGluSW1nLnNpemUueCArIGx4O1xyXG4gICAgdmFyIGEgPSBpbkltZy5kYXRhW2Jhc2UgKyAwXTtcclxuICAgIHZhciBiID0gaW5JbWcuZGF0YVtiYXNlICsgMV07XHJcbiAgICB2YXIgYyA9IGluSW1nLmRhdGFbYmFzZSArIHddO1xyXG4gICAgdmFyIGQgPSBpbkltZy5kYXRhW2Jhc2UgKyB3ICsgMV07XHJcbiAgICB2YXIgZSA9IGEgLSBiO1xyXG4gICAgeCAtPSBseDtcclxuICAgIHkgLT0gbHk7XHJcblxyXG4gICAgdmFyIHJlc3VsdCA9IE1hdGguZmxvb3IoeCAqICh5ICogKGUgLSBjICsgZCkgLSBlKSArIHkgKiAoYyAtIGEpICsgYSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEluaXRpYWxpemVzIGEgZ2l2ZW4gYXJyYXkuIFNldHMgZWFjaCBlbGVtZW50IHRvIHplcm8uXHJcbiAqIEBwYXJhbSBhcnJheSB7QXJyYXl9IFRoZSBhcnJheSB0byBpbml0aWFsaXplXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIuY2xlYXJBcnJheSA9IGZ1bmN0aW9uKGFycmF5KSB7XHJcbiAgICB2YXIgbCA9IGFycmF5Lmxlbmd0aDtcclxuICAgIHdoaWxlIChsLS0pIHtcclxuICAgICAgICBhcnJheVtsXSA9IDA7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIHtTdWJJbWFnZX0gZnJvbSB0aGUgY3VycmVudCBpbWFnZSAoe3RoaXN9KS5cclxuICogQHBhcmFtIGZyb20ge0ltYWdlUmVmfSBUaGUgcG9zaXRpb24gd2hlcmUgdG8gc3RhcnQgdGhlIHtTdWJJbWFnZX0gZnJvbS4gKHRvcC1sZWZ0IGNvcm5lcilcclxuICogQHBhcmFtIHNpemUge0ltYWdlUmVmfSBUaGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIGltYWdlXHJcbiAqIEByZXR1cm5zIHtTdWJJbWFnZX0gQSBzaGFyZWQgcGFydCBvZiB0aGUgb3JpZ2luYWwgaW1hZ2VcclxuICovXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuc3ViSW1hZ2UgPSBmdW5jdGlvbihmcm9tLCBzaXplKSB7XHJcbiAgICByZXR1cm4gbmV3IFN1YkltYWdlKGZyb20sIHNpemUsIHRoaXMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYW4ge0ltYWdlV3JhcHBlcikgYW5kIGNvcGllcyB0aGUgbmVlZGVkIHVuZGVybHlpbmcgaW1hZ2UtZGF0YSBhcmVhXHJcbiAqIEBwYXJhbSBpbWFnZVdyYXBwZXIge0ltYWdlV3JhcHBlcn0gVGhlIHRhcmdldCB7SW1hZ2VXcmFwcGVyfSB3aGVyZSB0aGUgZGF0YSBzaG91bGQgYmUgY29waWVkXHJcbiAqIEBwYXJhbSBmcm9tIHtJbWFnZVJlZn0gVGhlIGxvY2F0aW9uIHdoZXJlIHRvIGNvcHkgZnJvbSAodG9wLWxlZnQgbG9jYXRpb24pXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIucHJvdG90eXBlLnN1YkltYWdlQXNDb3B5ID0gZnVuY3Rpb24oaW1hZ2VXcmFwcGVyLCBmcm9tKSB7XHJcbiAgICB2YXIgc2l6ZVkgPSBpbWFnZVdyYXBwZXIuc2l6ZS55LCBzaXplWCA9IGltYWdlV3JhcHBlci5zaXplLng7XHJcbiAgICB2YXIgeCwgeTtcclxuICAgIGZvciAoIHggPSAwOyB4IDwgc2l6ZVg7IHgrKykge1xyXG4gICAgICAgIGZvciAoIHkgPSAwOyB5IDwgc2l6ZVk7IHkrKykge1xyXG4gICAgICAgICAgICBpbWFnZVdyYXBwZXIuZGF0YVt5ICogc2l6ZVggKyB4XSA9IHRoaXMuZGF0YVsoZnJvbS55ICsgeSkgKiB0aGlzLnNpemUueCArIGZyb20ueCArIHhdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuY29weVRvID0gZnVuY3Rpb24oaW1hZ2VXcmFwcGVyKSB7XHJcbiAgICB2YXIgbGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCwgc3JjRGF0YSA9IHRoaXMuZGF0YSwgZHN0RGF0YSA9IGltYWdlV3JhcHBlci5kYXRhO1xyXG5cclxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xyXG4gICAgICAgIGRzdERhdGFbbGVuZ3RoXSA9IHNyY0RhdGFbbGVuZ3RoXTtcclxuICAgIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXRyaWV2ZXMgYSBnaXZlbiBwaXhlbCBwb3NpdGlvbiBmcm9tIHRoZSBpbWFnZVxyXG4gKiBAcGFyYW0geCB7TnVtYmVyfSBUaGUgeC1wb3NpdGlvblxyXG4gKiBAcGFyYW0geSB7TnVtYmVyfSBUaGUgeS1wb3NpdGlvblxyXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JheXNjYWxlIHZhbHVlIGF0IHRoZSBwaXhlbC1wb3NpdGlvblxyXG4gKi9cclxuSW1hZ2VXcmFwcGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih4LCB5KSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhW3kgKiB0aGlzLnNpemUueCArIHhdO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJldHJpZXZlcyBhIGdpdmVuIHBpeGVsIHBvc2l0aW9uIGZyb20gdGhlIGltYWdlXHJcbiAqIEBwYXJhbSB4IHtOdW1iZXJ9IFRoZSB4LXBvc2l0aW9uXHJcbiAqIEBwYXJhbSB5IHtOdW1iZXJ9IFRoZSB5LXBvc2l0aW9uXHJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBncmF5c2NhbGUgdmFsdWUgYXQgdGhlIHBpeGVsLXBvc2l0aW9uXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIucHJvdG90eXBlLmdldFNhZmUgPSBmdW5jdGlvbih4LCB5KSB7XHJcbiAgICB2YXIgaTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaW5kZXhNYXBwaW5nKSB7XHJcbiAgICAgICAgdGhpcy5pbmRleE1hcHBpbmcgPSB7XHJcbiAgICAgICAgICAgIHg6IFtdLFxyXG4gICAgICAgICAgICB5OiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuc2l6ZS54OyBpKyspIHtcclxuICAgICAgICAgICAgdGhpcy5pbmRleE1hcHBpbmcueFtpXSA9IGk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXhNYXBwaW5nLnhbaSArIHRoaXMuc2l6ZS54XSA9IGk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLnNpemUueTsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5kZXhNYXBwaW5nLnlbaV0gPSBpO1xyXG4gICAgICAgICAgICB0aGlzLmluZGV4TWFwcGluZy55W2kgKyB0aGlzLnNpemUueV0gPSBpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRhdGFbKHRoaXMuaW5kZXhNYXBwaW5nLnlbeSArIHRoaXMuc2l6ZS55XSkgKiB0aGlzLnNpemUueCArIHRoaXMuaW5kZXhNYXBwaW5nLnhbeCArIHRoaXMuc2l6ZS54XV07XHJcbn07XHJcblxyXG4vKipcclxuICogU2V0cyBhIGdpdmVuIHBpeGVsIHBvc2l0aW9uIGluIHRoZSBpbWFnZVxyXG4gKiBAcGFyYW0geCB7TnVtYmVyfSBUaGUgeC1wb3NpdGlvblxyXG4gKiBAcGFyYW0geSB7TnVtYmVyfSBUaGUgeS1wb3NpdGlvblxyXG4gKiBAcGFyYW0gdmFsdWUge051bWJlcn0gVGhlIGdyYXlzY2FsZSB2YWx1ZSB0byBzZXRcclxuICogQHJldHVybnMge0ltYWdlV3JhcHBlcn0gVGhlIEltYWdlIGl0c2VsZiAoZm9yIHBvc3NpYmxlIGNoYWluaW5nKVxyXG4gKi9cclxuSW1hZ2VXcmFwcGVyLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbih4LCB5LCB2YWx1ZSkge1xyXG4gICAgdGhpcy5kYXRhW3kgKiB0aGlzLnNpemUueCArIHhdID0gdmFsdWU7XHJcbiAgICByZXR1cm4gdGhpcztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBTZXRzIHRoZSBib3JkZXIgb2YgdGhlIGltYWdlICgxIHBpeGVsKSB0byB6ZXJvXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIucHJvdG90eXBlLnplcm9Cb3JkZXIgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBpLCB3aWR0aCA9IHRoaXMuc2l6ZS54LCBoZWlnaHQgPSB0aGlzLnNpemUueSwgZGF0YSA9IHRoaXMuZGF0YTtcclxuICAgIGZvciAoIGkgPSAwOyBpIDwgd2lkdGg7IGkrKykge1xyXG4gICAgICAgIGRhdGFbaV0gPSBkYXRhWyhoZWlnaHQgLSAxKSAqIHdpZHRoICsgaV0gPSAwO1xyXG4gICAgfVxyXG4gICAgZm9yICggaSA9IDE7IGkgPCBoZWlnaHQgLSAxOyBpKyspIHtcclxuICAgICAgICBkYXRhW2kgKiB3aWR0aF0gPSBkYXRhW2kgKiB3aWR0aCArICh3aWR0aCAtIDEpXSA9IDA7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vKipcclxuICogSW52ZXJ0cyBhIGJpbmFyeSBpbWFnZSBpbiBwbGFjZVxyXG4gKi9cclxuSW1hZ2VXcmFwcGVyLnByb3RvdHlwZS5pbnZlcnQgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5kYXRhLCBsZW5ndGggPSBkYXRhLmxlbmd0aDtcclxuXHJcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcclxuICAgICAgICBkYXRhW2xlbmd0aF0gPSBkYXRhW2xlbmd0aF0gPyAwIDogMTtcclxuICAgIH1cclxufTtcclxuXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuY29udm9sdmUgPSBmdW5jdGlvbihrZXJuZWwpIHtcclxuICAgIHZhciB4LCB5LCBreCwga3ksIGtTaXplID0gKGtlcm5lbC5sZW5ndGggLyAyKSB8IDAsIGFjY3UgPSAwO1xyXG4gICAgZm9yICggeSA9IDA7IHkgPCB0aGlzLnNpemUueTsgeSsrKSB7XHJcbiAgICAgICAgZm9yICggeCA9IDA7IHggPCB0aGlzLnNpemUueDsgeCsrKSB7XHJcbiAgICAgICAgICAgIGFjY3UgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKCBreSA9IC1rU2l6ZTsga3kgPD0ga1NpemU7IGt5KyspIHtcclxuICAgICAgICAgICAgICAgIGZvciAoIGt4ID0gLWtTaXplOyBreCA8PSBrU2l6ZTsga3grKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjY3UgKz0ga2VybmVsW2t5ICsga1NpemVdW2t4ICsga1NpemVdICogdGhpcy5nZXRTYWZlKHggKyBreCwgeSArIGt5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRhdGFbeSAqIHRoaXMuc2l6ZS54ICsgeF0gPSBhY2N1O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUubW9tZW50cyA9IGZ1bmN0aW9uKGxhYmVsY291bnQpIHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5kYXRhLFxyXG4gICAgICAgIHgsXHJcbiAgICAgICAgeSxcclxuICAgICAgICBoZWlnaHQgPSB0aGlzLnNpemUueSxcclxuICAgICAgICB3aWR0aCA9IHRoaXMuc2l6ZS54LFxyXG4gICAgICAgIHZhbCxcclxuICAgICAgICB5c3EsXHJcbiAgICAgICAgbGFiZWxzdW0gPSBbXSxcclxuICAgICAgICBpLFxyXG4gICAgICAgIGxhYmVsLFxyXG4gICAgICAgIG11MTEsXHJcbiAgICAgICAgbXUwMixcclxuICAgICAgICBtdTIwLFxyXG4gICAgICAgIHhfLFxyXG4gICAgICAgIHlfLFxyXG4gICAgICAgIHRtcCxcclxuICAgICAgICByZXN1bHQgPSBbXSxcclxuICAgICAgICBQSSA9IE1hdGguUEksXHJcbiAgICAgICAgUElfNCA9IFBJIC8gNDtcclxuXHJcbiAgICBpZiAobGFiZWxjb3VudCA8PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IGxhYmVsY291bnQ7IGkrKykge1xyXG4gICAgICAgIGxhYmVsc3VtW2ldID0ge1xyXG4gICAgICAgICAgICBtMDA6IDAsXHJcbiAgICAgICAgICAgIG0wMTogMCxcclxuICAgICAgICAgICAgbTEwOiAwLFxyXG4gICAgICAgICAgICBtMTE6IDAsXHJcbiAgICAgICAgICAgIG0wMjogMCxcclxuICAgICAgICAgICAgbTIwOiAwLFxyXG4gICAgICAgICAgICB0aGV0YTogMCxcclxuICAgICAgICAgICAgcmFkOiAwXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XHJcbiAgICAgICAgeXNxID0geSAqIHk7XHJcbiAgICAgICAgZm9yICggeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XHJcbiAgICAgICAgICAgIHZhbCA9IGRhdGFbeSAqIHdpZHRoICsgeF07XHJcbiAgICAgICAgICAgIGlmICh2YWwgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IGxhYmVsc3VtW3ZhbCAtIDFdO1xyXG4gICAgICAgICAgICAgICAgbGFiZWwubTAwICs9IDE7XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5tMDEgKz0geTtcclxuICAgICAgICAgICAgICAgIGxhYmVsLm0xMCArPSB4O1xyXG4gICAgICAgICAgICAgICAgbGFiZWwubTExICs9IHggKiB5O1xyXG4gICAgICAgICAgICAgICAgbGFiZWwubTAyICs9IHlzcTtcclxuICAgICAgICAgICAgICAgIGxhYmVsLm0yMCArPSB4ICogeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IGxhYmVsY291bnQ7IGkrKykge1xyXG4gICAgICAgIGxhYmVsID0gbGFiZWxzdW1baV07XHJcbiAgICAgICAgaWYgKCFpc05hTihsYWJlbC5tMDApICYmIGxhYmVsLm0wMCAhPT0gMCkge1xyXG4gICAgICAgICAgICB4XyA9IGxhYmVsLm0xMCAvIGxhYmVsLm0wMDtcclxuICAgICAgICAgICAgeV8gPSBsYWJlbC5tMDEgLyBsYWJlbC5tMDA7XHJcbiAgICAgICAgICAgIG11MTEgPSBsYWJlbC5tMTEgLyBsYWJlbC5tMDAgLSB4XyAqIHlfO1xyXG4gICAgICAgICAgICBtdTAyID0gbGFiZWwubTAyIC8gbGFiZWwubTAwIC0geV8gKiB5XztcclxuICAgICAgICAgICAgbXUyMCA9IGxhYmVsLm0yMCAvIGxhYmVsLm0wMCAtIHhfICogeF87XHJcbiAgICAgICAgICAgIHRtcCA9IChtdTAyIC0gbXUyMCkgLyAoMiAqIG11MTEpO1xyXG4gICAgICAgICAgICB0bXAgPSAwLjUgKiBNYXRoLmF0YW4odG1wKSArIChtdTExID49IDAgPyBQSV80IDogLVBJXzQgKSArIFBJO1xyXG4gICAgICAgICAgICBsYWJlbC50aGV0YSA9ICh0bXAgKiAxODAgLyBQSSArIDkwKSAlIDE4MCAtIDkwO1xyXG4gICAgICAgICAgICBpZiAobGFiZWwudGhldGEgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbC50aGV0YSArPSAxODA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGFiZWwucmFkID0gdG1wID4gUEkgPyB0bXAgLSBQSSA6IHRtcDtcclxuICAgICAgICAgICAgbGFiZWwudmVjID0gdmVjMi5jbG9uZShbTWF0aC5jb3ModG1wKSwgTWF0aC5zaW4odG1wKV0pO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChsYWJlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG4vKipcclxuICogRGlzcGxheXMgdGhlIHtJbWFnZVdyYXBwZXJ9IGluIGEgZ2l2ZW4gY2FudmFzXHJcbiAqIEBwYXJhbSBjYW52YXMge0NhbnZhc30gVGhlIGNhbnZhcyBlbGVtZW50IHRvIHdyaXRlIHRvXHJcbiAqIEBwYXJhbSBzY2FsZSB7TnVtYmVyfSBTY2FsZSB3aGljaCBpcyBhcHBsaWVkIHRvIGVhY2ggcGl4ZWwtdmFsdWVcclxuICovXHJcbkltYWdlV3JhcHBlci5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uKGNhbnZhcywgc2NhbGUpIHtcclxuICAgIHZhciBjdHgsXHJcbiAgICAgICAgZnJhbWUsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBjdXJyZW50LFxyXG4gICAgICAgIHBpeGVsLFxyXG4gICAgICAgIHgsXHJcbiAgICAgICAgeTtcclxuXHJcbiAgICBpZiAoIXNjYWxlKSB7XHJcbiAgICAgICAgc2NhbGUgPSAxLjA7XHJcbiAgICB9XHJcbiAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHRoaXMuc2l6ZS54O1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHRoaXMuc2l6ZS55O1xyXG4gICAgZnJhbWUgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcbiAgICBkYXRhID0gZnJhbWUuZGF0YTtcclxuICAgIGN1cnJlbnQgPSAwO1xyXG4gICAgZm9yICh5ID0gMDsgeSA8IHRoaXMuc2l6ZS55OyB5KyspIHtcclxuICAgICAgICBmb3IgKHggPSAwOyB4IDwgdGhpcy5zaXplLng7IHgrKykge1xyXG4gICAgICAgICAgICBwaXhlbCA9IHkgKiB0aGlzLnNpemUueCArIHg7XHJcbiAgICAgICAgICAgIGN1cnJlbnQgPSB0aGlzLmdldCh4LCB5KSAqIHNjYWxlO1xyXG4gICAgICAgICAgICBkYXRhW3BpeGVsICogNCArIDBdID0gY3VycmVudDtcclxuICAgICAgICAgICAgZGF0YVtwaXhlbCAqIDQgKyAxXSA9IGN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGRhdGFbcGl4ZWwgKiA0ICsgMl0gPSBjdXJyZW50O1xyXG4gICAgICAgICAgICBkYXRhW3BpeGVsICogNCArIDNdID0gMjU1O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vZnJhbWUuZGF0YSA9IGRhdGE7XHJcbiAgICBjdHgucHV0SW1hZ2VEYXRhKGZyYW1lLCAwLCAwKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBEaXNwbGF5cyB0aGUge1N1YkltYWdlfSBpbiBhIGdpdmVuIGNhbnZhc1xyXG4gKiBAcGFyYW0gY2FudmFzIHtDYW52YXN9IFRoZSBjYW52YXMgZWxlbWVudCB0byB3cml0ZSB0b1xyXG4gKiBAcGFyYW0gc2NhbGUge051bWJlcn0gU2NhbGUgd2hpY2ggaXMgYXBwbGllZCB0byBlYWNoIHBpeGVsLXZhbHVlXHJcbiAqL1xyXG5JbWFnZVdyYXBwZXIucHJvdG90eXBlLm92ZXJsYXkgPSBmdW5jdGlvbihjYW52YXMsIHNjYWxlLCBmcm9tKSB7XHJcbiAgICBpZiAoIXNjYWxlIHx8IHNjYWxlIDwgMCB8fCBzY2FsZSA+IDM2MCkge1xyXG4gICAgICAgIHNjYWxlID0gMzYwO1xyXG4gICAgfVxyXG4gICAgdmFyIGhzdiA9IFswLCAxLCAxXTtcclxuICAgIHZhciByZ2IgPSBbMCwgMCwgMF07XHJcbiAgICB2YXIgd2hpdGVSZ2IgPSBbMjU1LCAyNTUsIDI1NV07XHJcbiAgICB2YXIgYmxhY2tSZ2IgPSBbMCwgMCwgMF07XHJcbiAgICB2YXIgcmVzdWx0ID0gW107XHJcbiAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICB2YXIgZnJhbWUgPSBjdHguZ2V0SW1hZ2VEYXRhKGZyb20ueCwgZnJvbS55LCB0aGlzLnNpemUueCwgdGhpcy5zaXplLnkpO1xyXG4gICAgdmFyIGRhdGEgPSBmcmFtZS5kYXRhO1xyXG4gICAgdmFyIGxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGg7XHJcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcclxuICAgICAgICBoc3ZbMF0gPSB0aGlzLmRhdGFbbGVuZ3RoXSAqIHNjYWxlO1xyXG4gICAgICAgIHJlc3VsdCA9IGhzdlswXSA8PSAwID8gd2hpdGVSZ2IgOiBoc3ZbMF0gPj0gMzYwID8gYmxhY2tSZ2IgOiBoc3YycmdiKGhzdiwgcmdiKTtcclxuICAgICAgICBkYXRhW2xlbmd0aCAqIDQgKyAwXSA9IHJlc3VsdFswXTtcclxuICAgICAgICBkYXRhW2xlbmd0aCAqIDQgKyAxXSA9IHJlc3VsdFsxXTtcclxuICAgICAgICBkYXRhW2xlbmd0aCAqIDQgKyAyXSA9IHJlc3VsdFsyXTtcclxuICAgICAgICBkYXRhW2xlbmd0aCAqIDQgKyAzXSA9IDI1NTtcclxuICAgIH1cclxuICAgIGN0eC5wdXRJbWFnZURhdGEoZnJhbWUsIGZyb20ueCwgZnJvbS55KTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEltYWdlV3JhcHBlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tbW9uL2ltYWdlX3dyYXBwZXIuanNcbiAqKi8iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBhcnJheVsrK2luZGV4XTtcbiAgfVxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlSZWR1Y2U7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2FycmF5UmVkdWNlLmpzXG4gKiogbW9kdWxlIGlkID0gMjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBjb3B5T2JqZWN0V2l0aCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3RXaXRoJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3RXaXRoKHNvdXJjZSwgcHJvcHMsIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weU9iamVjdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY29weU9iamVjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDIxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgaG9zdCBvYmplY3QgaW4gSUUgPCA5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgaG9zdCBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNIb3N0T2JqZWN0KHZhbHVlKSB7XG4gIC8vIE1hbnkgaG9zdCBvYmplY3RzIGFyZSBgT2JqZWN0YCBvYmplY3RzIHRoYXQgY2FuIGNvZXJjZSB0byBzdHJpbmdzXG4gIC8vIGRlc3BpdGUgaGF2aW5nIGltcHJvcGVybHkgZGVmaW5lZCBgdG9TdHJpbmdgIG1ldGhvZHMuXG4gIHZhciByZXN1bHQgPSBmYWxzZTtcbiAgaWYgKHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gISEodmFsdWUgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSG9zdE9iamVjdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faXNIb3N0T2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMjJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YWx1ZSA9ICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHwgcmVJc1VpbnQudGVzdCh2YWx1ZSkpID8gK3ZhbHVlIDogLTE7XG4gIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcbiAgcmV0dXJuIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbmRleDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9faXNJbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDIzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzXG4gKiogbW9kdWxlIGlkID0gMjRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc0FycmF5TGlrZU9iamVjdCA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2VPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIC8vIFNhZmFyaSA4LjEgaW5jb3JyZWN0bHkgbWFrZXMgYGFyZ3VtZW50cy5jYWxsZWVgIGVudW1lcmFibGUgaW4gc3RyaWN0IG1vZGUuXG4gIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgKCFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgfHwgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gYXJnc1RhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNBcmd1bWVudHMuanNcbiAqKiBtb2R1bGUgaWQgPSAyNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGdldExlbmd0aCA9IHJlcXVpcmUoJy4vX2dldExlbmd0aCcpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKGdldExlbmd0aCh2YWx1ZSkpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc0FycmF5TGlrZS5qc1xuICoqIG1vZHVsZSBpZCA9IDI2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheUxpa2VPYmplY3Q7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAyN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBpcyBsb29zZWx5IGJhc2VkIG9uIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNMZW5ndGguanNcbiAqKiBtb2R1bGUgaWQgPSAyOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXHJcbiAqIGh0dHA6Ly93d3cuY29kZXByb2plY3QuY29tL1RpcHMvNDA3MTcyL0Nvbm5lY3RlZC1Db21wb25lbnQtTGFiZWxpbmctYW5kLVZlY3Rvcml6YXRpb25cclxuICovXHJcbnZhciBUcmFjZXIgPSB7XHJcbiAgICBzZWFyY2hEaXJlY3Rpb25zOiBbWzAsIDFdLCBbMSwgMV0sIFsxLCAwXSwgWzEsIC0xXSwgWzAsIC0xXSwgWy0xLCAtMV0sIFstMSwgMF0sIFstMSwgMV1dLFxyXG4gICAgY3JlYXRlOiBmdW5jdGlvbihpbWFnZVdyYXBwZXIsIGxhYmVsV3JhcHBlcikge1xyXG4gICAgICAgIHZhciBpbWFnZURhdGEgPSBpbWFnZVdyYXBwZXIuZGF0YSxcclxuICAgICAgICAgICAgbGFiZWxEYXRhID0gbGFiZWxXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgICAgIHNlYXJjaERpcmVjdGlvbnMgPSB0aGlzLnNlYXJjaERpcmVjdGlvbnMsXHJcbiAgICAgICAgICAgIHdpZHRoID0gaW1hZ2VXcmFwcGVyLnNpemUueCxcclxuICAgICAgICAgICAgcG9zO1xyXG5cclxuICAgICAgICBmdW5jdGlvbiB0cmFjZShjdXJyZW50LCBjb2xvciwgbGFiZWwsIGVkZ2VsYWJlbCkge1xyXG4gICAgICAgICAgICB2YXIgaSxcclxuICAgICAgICAgICAgICAgIHksXHJcbiAgICAgICAgICAgICAgICB4O1xyXG5cclxuICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCA3OyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHkgPSBjdXJyZW50LmN5ICsgc2VhcmNoRGlyZWN0aW9uc1tjdXJyZW50LmRpcl1bMF07XHJcbiAgICAgICAgICAgICAgICB4ID0gY3VycmVudC5jeCArIHNlYXJjaERpcmVjdGlvbnNbY3VycmVudC5kaXJdWzFdO1xyXG4gICAgICAgICAgICAgICAgcG9zID0geSAqIHdpZHRoICsgeDtcclxuICAgICAgICAgICAgICAgIGlmICgoaW1hZ2VEYXRhW3Bvc10gPT09IGNvbG9yKSAmJiAoKGxhYmVsRGF0YVtwb3NdID09PSAwKSB8fCAobGFiZWxEYXRhW3Bvc10gPT09IGxhYmVsKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbERhdGFbcG9zXSA9IGxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuY3kgPSB5O1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuY3ggPSB4O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGFiZWxEYXRhW3Bvc10gPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxEYXRhW3Bvc10gPSBlZGdlbGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuZGlyID0gKGN1cnJlbnQuZGlyICsgMSkgJSA4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIHZlcnRleDJEKHgsIHksIGRpcikge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgZGlyOiBkaXIsXHJcbiAgICAgICAgICAgICAgICB4OiB4LFxyXG4gICAgICAgICAgICAgICAgeTogeSxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBwcmV2OiBudWxsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiBjb250b3VyVHJhY2luZyhzeSwgc3gsIGxhYmVsLCBjb2xvciwgZWRnZWxhYmVsKSB7XHJcbiAgICAgICAgICAgIHZhciBGdiA9IG51bGwsXHJcbiAgICAgICAgICAgICAgICBDdixcclxuICAgICAgICAgICAgICAgIFAsXHJcbiAgICAgICAgICAgICAgICBsZGlyLFxyXG4gICAgICAgICAgICAgICAgY3VycmVudCA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjeDogc3gsXHJcbiAgICAgICAgICAgICAgICAgICAgY3k6IHN5LFxyXG4gICAgICAgICAgICAgICAgICAgIGRpcjogMFxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0cmFjZShjdXJyZW50LCBjb2xvciwgbGFiZWwsIGVkZ2VsYWJlbCkpIHtcclxuICAgICAgICAgICAgICAgIEZ2ID0gdmVydGV4MkQoc3gsIHN5LCBjdXJyZW50LmRpcik7XHJcbiAgICAgICAgICAgICAgICBDdiA9IEZ2O1xyXG4gICAgICAgICAgICAgICAgbGRpciA9IGN1cnJlbnQuZGlyO1xyXG4gICAgICAgICAgICAgICAgUCA9IHZlcnRleDJEKGN1cnJlbnQuY3gsIGN1cnJlbnQuY3ksIDApO1xyXG4gICAgICAgICAgICAgICAgUC5wcmV2ID0gQ3Y7XHJcbiAgICAgICAgICAgICAgICBDdi5uZXh0ID0gUDtcclxuICAgICAgICAgICAgICAgIFAubmV4dCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBDdiA9IFA7XHJcbiAgICAgICAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudC5kaXIgPSAoY3VycmVudC5kaXIgKyA2KSAlIDg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2UoY3VycmVudCwgY29sb3IsIGxhYmVsLCBlZGdlbGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZGlyICE9PSBjdXJyZW50LmRpcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdi5kaXIgPSBjdXJyZW50LmRpcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUCA9IHZlcnRleDJEKGN1cnJlbnQuY3gsIGN1cnJlbnQuY3ksIDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBQLnByZXYgPSBDdjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3YubmV4dCA9IFA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFAubmV4dCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN2ID0gUDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdi5kaXIgPSBsZGlyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdi54ID0gY3VycmVudC5jeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3YueSA9IGN1cnJlbnQuY3k7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxkaXIgPSBjdXJyZW50LmRpcjtcclxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKGN1cnJlbnQuY3ggIT09IHN4IHx8IGN1cnJlbnQuY3kgIT09IHN5KTtcclxuICAgICAgICAgICAgICAgIEZ2LnByZXYgPSBDdi5wcmV2O1xyXG4gICAgICAgICAgICAgICAgQ3YucHJldi5uZXh0ID0gRnY7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIEZ2O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdHJhY2U6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbG9yLCBsYWJlbCwgZWRnZWxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhY2UoY3VycmVudCwgY29sb3IsIGxhYmVsLCBlZGdlbGFiZWwpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb250b3VyVHJhY2luZzogZnVuY3Rpb24oc3ksIHN4LCBsYWJlbCwgY29sb3IsIGVkZ2VsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRvdXJUcmFjaW5nKHN5LCBzeCwgbGFiZWwsIGNvbG9yLCBlZGdlbGFiZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IChUcmFjZXIpO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9sb2NhdG9yL3RyYWNlci5qc1xuICoqLyIsImltcG9ydCBCYXJjb2RlUmVhZGVyIGZyb20gJy4vYmFyY29kZV9yZWFkZXInO1xyXG5pbXBvcnQgQXJyYXlIZWxwZXIgZnJvbSAnLi4vY29tbW9uL2FycmF5X2hlbHBlcic7XHJcblxyXG5mdW5jdGlvbiBDb2RlMzlSZWFkZXIoKSB7XHJcbiAgICBCYXJjb2RlUmVhZGVyLmNhbGwodGhpcyk7XHJcbn1cclxuXHJcbnZhciBwcm9wZXJ0aWVzID0ge1xyXG4gICAgQUxQSEFCRVRIX1NUUklORzoge3ZhbHVlOiBcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi0uICokLyslXCJ9LFxyXG4gICAgQUxQSEFCRVQ6IHt2YWx1ZTogWzQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsXHJcbiAgICAgICAgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgNDUsIDQ2LCAzMiwgNDIsIDM2LCA0NywgNDMsIDM3XX0sXHJcbiAgICBDSEFSQUNURVJfRU5DT0RJTkdTOiB7dmFsdWU6IFsweDAzNCwgMHgxMjEsIDB4MDYxLCAweDE2MCwgMHgwMzEsIDB4MTMwLCAweDA3MCwgMHgwMjUsIDB4MTI0LCAweDA2NCwgMHgxMDksIDB4MDQ5LFxyXG4gICAgICAgIDB4MTQ4LCAweDAxOSwgMHgxMTgsIDB4MDU4LCAweDAwRCwgMHgxMEMsIDB4MDRDLCAweDAxQywgMHgxMDMsIDB4MDQzLCAweDE0MiwgMHgwMTMsIDB4MTEyLCAweDA1MiwgMHgwMDcsIDB4MTA2LFxyXG4gICAgICAgIDB4MDQ2LCAweDAxNiwgMHgxODEsIDB4MEMxLCAweDFDMCwgMHgwOTEsIDB4MTkwLCAweDBEMCwgMHgwODUsIDB4MTg0LCAweDBDNCwgMHgwOTQsIDB4MEE4LCAweDBBMiwgMHgwOEEsIDB4MDJBXHJcbiAgICBdfSxcclxuICAgIEFTVEVSSVNLOiB7dmFsdWU6IDB4MDk0fSxcclxuICAgIEZPUk1BVDoge3ZhbHVlOiBcImNvZGVfMzlcIiwgd3JpdGVhYmxlOiBmYWxzZX1cclxufTtcclxuXHJcbkNvZGUzOVJlYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJhcmNvZGVSZWFkZXIucHJvdG90eXBlLCBwcm9wZXJ0aWVzKTtcclxuQ29kZTM5UmVhZGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvZGUzOVJlYWRlcjtcclxuXHJcbkNvZGUzOVJlYWRlci5wcm90b3R5cGUuX3RvQ291bnRlcnMgPSBmdW5jdGlvbihzdGFydCwgY291bnRlcikge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIG51bUNvdW50ZXJzID0gY291bnRlci5sZW5ndGgsXHJcbiAgICAgICAgZW5kID0gc2VsZi5fcm93Lmxlbmd0aCxcclxuICAgICAgICBpc1doaXRlID0gIXNlbGYuX3Jvd1tzdGFydF0sXHJcbiAgICAgICAgaSxcclxuICAgICAgICBjb3VudGVyUG9zID0gMDtcclxuXHJcbiAgICBBcnJheUhlbHBlci5pbml0KGNvdW50ZXIsIDApO1xyXG5cclxuICAgIGZvciAoIGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgaWYgKGNvdW50ZXJQb3MgPT09IG51bUNvdW50ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10gPSAxO1xyXG4gICAgICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb3VudGVyO1xyXG59O1xyXG5cclxuQ29kZTM5UmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgY291bnRlcnMgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sXHJcbiAgICAgICAgcmVzdWx0ID0gW10sXHJcbiAgICAgICAgc3RhcnQgPSBzZWxmLl9maW5kU3RhcnQoKSxcclxuICAgICAgICBkZWNvZGVkQ2hhcixcclxuICAgICAgICBsYXN0U3RhcnQsXHJcbiAgICAgICAgcGF0dGVybixcclxuICAgICAgICBuZXh0U3RhcnQ7XHJcblxyXG4gICAgaWYgKCFzdGFydCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgbmV4dFN0YXJ0ID0gc2VsZi5fbmV4dFNldChzZWxmLl9yb3csIHN0YXJ0LmVuZCk7XHJcblxyXG4gICAgZG8ge1xyXG4gICAgICAgIGNvdW50ZXJzID0gc2VsZi5fdG9Db3VudGVycyhuZXh0U3RhcnQsIGNvdW50ZXJzKTtcclxuICAgICAgICBwYXR0ZXJuID0gc2VsZi5fdG9QYXR0ZXJuKGNvdW50ZXJzKTtcclxuICAgICAgICBpZiAocGF0dGVybiA8IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlY29kZWRDaGFyID0gc2VsZi5fcGF0dGVyblRvQ2hhcihwYXR0ZXJuKTtcclxuICAgICAgICBpZiAoZGVjb2RlZENoYXIgPCAwKXtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGRlY29kZWRDaGFyKTtcclxuICAgICAgICBsYXN0U3RhcnQgPSBuZXh0U3RhcnQ7XHJcbiAgICAgICAgbmV4dFN0YXJ0ICs9IEFycmF5SGVscGVyLnN1bShjb3VudGVycyk7XHJcbiAgICAgICAgbmV4dFN0YXJ0ID0gc2VsZi5fbmV4dFNldChzZWxmLl9yb3csIG5leHRTdGFydCk7XHJcbiAgICB9IHdoaWxlIChkZWNvZGVkQ2hhciAhPT0gJyonKTtcclxuICAgIHJlc3VsdC5wb3AoKTtcclxuXHJcbiAgICBpZiAoIXJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXNlbGYuX3ZlcmlmeVRyYWlsaW5nV2hpdGVzcGFjZShsYXN0U3RhcnQsIG5leHRTdGFydCwgY291bnRlcnMpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiByZXN1bHQuam9pbihcIlwiKSxcclxuICAgICAgICBzdGFydDogc3RhcnQuc3RhcnQsXHJcbiAgICAgICAgZW5kOiBuZXh0U3RhcnQsXHJcbiAgICAgICAgc3RhcnRJbmZvOiBzdGFydCxcclxuICAgICAgICBkZWNvZGVkQ29kZXM6IHJlc3VsdFxyXG4gICAgfTtcclxufTtcclxuXHJcbkNvZGUzOVJlYWRlci5wcm90b3R5cGUuX3ZlcmlmeVRyYWlsaW5nV2hpdGVzcGFjZSA9IGZ1bmN0aW9uKGxhc3RTdGFydCwgbmV4dFN0YXJ0LCBjb3VudGVycykge1xyXG4gICAgdmFyIHRyYWlsaW5nV2hpdGVzcGFjZUVuZCxcclxuICAgICAgICBwYXR0ZXJuU2l6ZSA9IEFycmF5SGVscGVyLnN1bShjb3VudGVycyk7XHJcblxyXG4gICAgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kID0gbmV4dFN0YXJ0IC0gbGFzdFN0YXJ0IC0gcGF0dGVyblNpemU7XHJcbiAgICBpZiAoKHRyYWlsaW5nV2hpdGVzcGFjZUVuZCAqIDMpID49IHBhdHRlcm5TaXplKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn07XHJcblxyXG5Db2RlMzlSZWFkZXIucHJvdG90eXBlLl9wYXR0ZXJuVG9DaGFyID0gZnVuY3Rpb24ocGF0dGVybikge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHNlbGYuQ0hBUkFDVEVSX0VOQ09ESU5HUy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzZWxmLkNIQVJBQ1RFUl9FTkNPRElOR1NbaV0gPT09IHBhdHRlcm4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoc2VsZi5BTFBIQUJFVFtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG59O1xyXG5cclxuQ29kZTM5UmVhZGVyLnByb3RvdHlwZS5fZmluZE5leHRXaWR0aCA9IGZ1bmN0aW9uKGNvdW50ZXJzLCBjdXJyZW50KSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBtaW5XaWR0aCA9IE51bWJlci5NQVhfVkFMVUU7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IGNvdW50ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGNvdW50ZXJzW2ldIDwgbWluV2lkdGggJiYgY291bnRlcnNbaV0gPiBjdXJyZW50KSB7XHJcbiAgICAgICAgICAgIG1pbldpZHRoID0gY291bnRlcnNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtaW5XaWR0aDtcclxufTtcclxuXHJcbkNvZGUzOVJlYWRlci5wcm90b3R5cGUuX3RvUGF0dGVybiA9IGZ1bmN0aW9uKGNvdW50ZXJzKSB7XHJcbiAgICB2YXIgbnVtQ291bnRlcnMgPSBjb3VudGVycy5sZW5ndGgsXHJcbiAgICAgICAgbWF4TmFycm93V2lkdGggPSAwLFxyXG4gICAgICAgIG51bVdpZGVCYXJzID0gbnVtQ291bnRlcnMsXHJcbiAgICAgICAgd2lkZUJhcldpZHRoID0gMCxcclxuICAgICAgICBzZWxmID0gdGhpcyxcclxuICAgICAgICBwYXR0ZXJuLFxyXG4gICAgICAgIGk7XHJcblxyXG4gICAgd2hpbGUgKG51bVdpZGVCYXJzID4gMykge1xyXG4gICAgICAgIG1heE5hcnJvd1dpZHRoID0gc2VsZi5fZmluZE5leHRXaWR0aChjb3VudGVycywgbWF4TmFycm93V2lkdGgpO1xyXG4gICAgICAgIG51bVdpZGVCYXJzID0gMDtcclxuICAgICAgICBwYXR0ZXJuID0gMDtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtQ291bnRlcnM7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY291bnRlcnNbaV0gPiBtYXhOYXJyb3dXaWR0aCkge1xyXG4gICAgICAgICAgICAgICAgcGF0dGVybiB8PSAxIDw8IChudW1Db3VudGVycyAtIDEgLSBpKTtcclxuICAgICAgICAgICAgICAgIG51bVdpZGVCYXJzKys7XHJcbiAgICAgICAgICAgICAgICB3aWRlQmFyV2lkdGggKz0gY291bnRlcnNbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChudW1XaWRlQmFycyA9PT0gMykge1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtQ291bnRlcnMgJiYgbnVtV2lkZUJhcnMgPiAwOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb3VudGVyc1tpXSA+IG1heE5hcnJvd1dpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbnVtV2lkZUJhcnMtLTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKGNvdW50ZXJzW2ldICogMikgPj0gd2lkZUJhcldpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG59O1xyXG5cclxuQ29kZTM5UmVhZGVyLnByb3RvdHlwZS5fZmluZFN0YXJ0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgb2Zmc2V0ID0gc2VsZi5fbmV4dFNldChzZWxmLl9yb3cpLFxyXG4gICAgICAgIHBhdHRlcm5TdGFydCA9IG9mZnNldCxcclxuICAgICAgICBjb3VudGVyID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLFxyXG4gICAgICAgIGNvdW50ZXJQb3MgPSAwLFxyXG4gICAgICAgIGlzV2hpdGUgPSBmYWxzZSxcclxuICAgICAgICBpLFxyXG4gICAgICAgIGosXHJcbiAgICAgICAgd2hpdGVTcGFjZU11c3RTdGFydDtcclxuXHJcbiAgICBmb3IgKCBpID0gb2Zmc2V0OyBpIDwgc2VsZi5fcm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb3VudGVyUG9zID09PSBjb3VudGVyLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZpbmQgc3RhcnQgcGF0dGVyblxyXG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuX3RvUGF0dGVybihjb3VudGVyKSA9PT0gc2VsZi5BU1RFUklTSykge1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2VNdXN0U3RhcnQgPSBNYXRoLmZsb29yKE1hdGgubWF4KDAsIHBhdHRlcm5TdGFydCAtICgoaSAtIHBhdHRlcm5TdGFydCkgLyA0KSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLl9tYXRjaFJhbmdlKHdoaXRlU3BhY2VNdXN0U3RhcnQsIHBhdHRlcm5TdGFydCwgMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBwYXR0ZXJuU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcGF0dGVyblN0YXJ0ICs9IGNvdW50ZXJbMF0gKyBjb3VudGVyWzFdO1xyXG4gICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCA3OyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyW2pdID0gY291bnRlcltqICsgMl07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyWzddID0gMDtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJbOF0gPSAwO1xyXG4gICAgICAgICAgICAgICAgY291bnRlclBvcy0tO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY291bnRlclBvcysrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10gPSAxO1xyXG4gICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDb2RlMzlSZWFkZXI7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL3JlYWRlci9jb2RlXzM5X3JlYWRlci5qc1xuICoqLyIsIm1vZHVsZS5leHBvcnRzID0gZG90XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgZG90IHByb2R1Y3Qgb2YgdHdvIHZlYzInc1xuICpcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgZmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHt2ZWMyfSBiIHRoZSBzZWNvbmQgb3BlcmFuZFxuICogQHJldHVybnMge051bWJlcn0gZG90IHByb2R1Y3Qgb2YgYSBhbmQgYlxuICovXG5mdW5jdGlvbiBkb3QoYSwgYikge1xuICAgIHJldHVybiBhWzBdICogYlswXSArIGFbMV0gKiBiWzFdXG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZ2wtdmVjMi9kb3QuanNcbiAqKiBtb2R1bGUgaWQgPSAzMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKHZhbHVlcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHZhbHVlcyA/IHZhbHVlcy5sZW5ndGggOiAwO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSB2YWx1ZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIGZ1bmN0aW9ucyB0byB0aGUgYFN0YWNrYCBjYWNoZS5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX1N0YWNrLmpzXG4gKiogbW9kdWxlIGlkID0gMzJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RWFjaDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYXJyYXlFYWNoLmpzXG4gKiogbW9kdWxlIGlkID0gMzNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFzc2lnblZhbHVlYCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFzc2lnblxuICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZXEob2JqZWN0W2tleV0sIHZhbHVlKSkgfHxcbiAgICAgICh0eXBlb2Yga2V5ID09ICdudW1iZXInICYmIHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduTWVyZ2VWYWx1ZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYXNzaWduTWVyZ2VWYWx1ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDM0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25WYWx1ZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYXNzaWduVmFsdWUuanNcbiAqKiBtb2R1bGUgaWQgPSAzNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFzc29jSW5kZXhPZiA9IHJlcXVpcmUoJy4vX2Fzc29jSW5kZXhPZicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGFzc29jaWF0aXZlIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NEZWxldGUoYXJyYXksIGtleSkge1xuICB2YXIgaW5kZXggPSBhc3NvY0luZGV4T2YoYXJyYXksIGtleSk7XG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxhc3RJbmRleCA9IGFycmF5Lmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBhcnJheS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChhcnJheSwgaW5kZXgsIDEpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jRGVsZXRlO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hc3NvY0RlbGV0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDM2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgYXNzb2NpYXRpdmUgYXJyYXkgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXNzb2NHZXQoYXJyYXksIGtleSkge1xuICB2YXIgaW5kZXggPSBhc3NvY0luZGV4T2YoYXJyYXksIGtleSk7XG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBhcnJheVtpbmRleF1bMV07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NHZXQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Fzc29jR2V0LmpzXG4gKiogbW9kdWxlIGlkID0gMzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYW4gYXNzb2NpYXRpdmUgYXJyYXkgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSGFzKGFycmF5LCBrZXkpIHtcbiAgcmV0dXJuIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSGFzO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hc3NvY0hhcy5qc1xuICoqIG1vZHVsZSBpZCA9IDM4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgYXNzb2NpYXRpdmUgYXJyYXkgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICovXG5mdW5jdGlvbiBhc3NvY1NldChhcnJheSwga2V5LCB2YWx1ZSkge1xuICB2YXIgaW5kZXggPSBhc3NvY0luZGV4T2YoYXJyYXksIGtleSk7XG4gIGlmIChpbmRleCA8IDApIHtcbiAgICBhcnJheS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0gZWxzZSB7XG4gICAgYXJyYXlbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY1NldDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYXNzb2NTZXQuanNcbiAqKiBtb2R1bGUgaWQgPSAzOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzXG4gKiogbW9kdWxlIGlkID0gNDBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlBcnJheTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY29weUFycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gNDFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoaGFzaCwga2V5KSB7XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyBoYXNoW2tleV0gIT09IHVuZGVmaW5lZCA6IGhhc093blByb3BlcnR5LmNhbGwoaGFzaCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19oYXNoSGFzLmpzXG4gKiogbW9kdWxlIGlkID0gNDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNTdHJpbmcgPSByZXF1aXJlKCcuL2lzU3RyaW5nJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBpbmRleCBrZXlzIGZvciBgb2JqZWN0YCB2YWx1ZXMgb2YgYXJyYXlzLFxuICogYGFyZ3VtZW50c2Agb2JqZWN0cywgYW5kIHN0cmluZ3MsIG90aGVyd2lzZSBgbnVsbGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheXxudWxsfSBSZXR1cm5zIGluZGV4IGtleXMsIGVsc2UgYG51bGxgLlxuICovXG5mdW5jdGlvbiBpbmRleEtleXMob2JqZWN0KSB7XG4gIHZhciBsZW5ndGggPSBvYmplY3QgPyBvYmplY3QubGVuZ3RoIDogdW5kZWZpbmVkO1xuICBpZiAoaXNMZW5ndGgobGVuZ3RoKSAmJlxuICAgICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc1N0cmluZyhvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpKSB7XG4gICAgcmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsIFN0cmluZyk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5kZXhLZXlzO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19pbmRleEtleXMuanNcbiAqKiBtb2R1bGUgaWQgPSA0M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID0gdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID0gdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID0gdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID0gdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID0gdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGNvcnJlY3RseSBjbGFzc2lmaWVkLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVHlwZWRBcnJheTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc1R5cGVkQXJyYXkuanNcbiAqKiBtb2R1bGUgaWQgPSA0NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGJhc2VIYXMgPSByZXF1aXJlKCcuL19iYXNlSGFzJyksXG4gICAgYmFzZUtleXMgPSByZXF1aXJlKCcuL19iYXNlS2V5cycpLFxuICAgIGluZGV4S2V5cyA9IHJlcXVpcmUoJy4vX2luZGV4S2V5cycpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCk7XG4gIGlmICghKGlzUHJvdG8gfHwgaXNBcnJheUxpa2Uob2JqZWN0KSkpIHtcbiAgICByZXR1cm4gYmFzZUtleXMob2JqZWN0KTtcbiAgfVxuICB2YXIgaW5kZXhlcyA9IGluZGV4S2V5cyhvYmplY3QpLFxuICAgICAgc2tpcEluZGV4ZXMgPSAhIWluZGV4ZXMsXG4gICAgICByZXN1bHQgPSBpbmRleGVzIHx8IFtdLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKGJhc2VIYXMob2JqZWN0LCBrZXkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKGtleSA9PSAnbGVuZ3RoJyB8fCBpc0luZGV4KGtleSwgbGVuZ3RoKSkpICYmXG4gICAgICAgICEoaXNQcm90byAmJiBrZXkgPT0gJ2NvbnN0cnVjdG9yJykpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ga2V5cztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9rZXlzLmpzXG4gKiogbW9kdWxlIGlkID0gNDVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGluZGV4S2V5cyA9IHJlcXVpcmUoJy4vX2luZGV4S2V5cycpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHByb3BzID0gYmFzZUtleXNJbihvYmplY3QpLFxuICAgICAgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGgsXG4gICAgICBpbmRleGVzID0gaW5kZXhLZXlzKG9iamVjdCksXG4gICAgICBza2lwSW5kZXhlcyA9ICEhaW5kZXhlcyxcbiAgICAgIHJlc3VsdCA9IGluZGV4ZXMgfHwgW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgcHJvcHNMZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuICAgIGlmICghKHNraXBJbmRleGVzICYmIChrZXkgPT0gJ2xlbmd0aCcgfHwgaXNJbmRleChrZXksIGxlbmd0aCkpKSAmJlxuICAgICAgICAhKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXNJbjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9rZXlzSW4uanNcbiAqKiBtb2R1bGUgaWQgPSA0NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFwcGx5ID0gcmVxdWlyZSgnLi9fYXBwbHknKSxcbiAgICB0b0ludGVnZXIgPSByZXF1aXJlKCcuL3RvSW50ZWdlcicpO1xuXG4vKiogVXNlZCBhcyB0aGUgYFR5cGVFcnJvcmAgbWVzc2FnZSBmb3IgXCJGdW5jdGlvbnNcIiBtZXRob2RzLiAqL1xudmFyIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICogY3JlYXRlZCBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGZyb20gYHN0YXJ0YCBhbmQgYmV5b25kIHByb3ZpZGVkIGFzIGFuIGFycmF5LlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL21kbi5pby9yZXN0X3BhcmFtZXRlcnMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHNheSA9IF8ucmVzdChmdW5jdGlvbih3aGF0LCBuYW1lcykge1xuICogICByZXR1cm4gd2hhdCArICcgJyArIF8uaW5pdGlhbChuYW1lcykuam9pbignLCAnKSArXG4gKiAgICAgKF8uc2l6ZShuYW1lcykgPiAxID8gJywgJiAnIDogJycpICsgXy5sYXN0KG5hbWVzKTtcbiAqIH0pO1xuICpcbiAqIHNheSgnaGVsbG8nLCAnZnJlZCcsICdiYXJuZXknLCAncGViYmxlcycpO1xuICogLy8gPT4gJ2hlbGxvIGZyZWQsIGJhcm5leSwgJiBwZWJibGVzJ1xuICovXG5mdW5jdGlvbiByZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHRvSW50ZWdlcihzdGFydCksIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIHN3aXRjaCAoc3RhcnQpIHtcbiAgICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzLCBhcnJheSk7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJnc1swXSwgYXJyYXkpO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFycmF5KTtcbiAgICB9XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgaW5kZXggPSAtMTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSBhcnJheTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXN0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL3Jlc3QuanNcbiAqKiBtb2R1bGUgaWQgPSA0N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcclxuXHRpZighbW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge307XHJcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcclxuXHRcdC8vIG1vZHVsZS5wYXJlbnQgPSB1bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0bW9kdWxlLmNoaWxkcmVuID0gW107XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImV4cG9ydHNcIiwge1xyXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxyXG5cdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlLmU7IH0sXHJcblx0XHRcdHNldDogZnVuY3Rpb24odikgeyByZXR1cm4gbW9kdWxlLmUgPSB2OyB9XHJcblx0XHR9KTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZS5sOyB9XHJcblx0XHR9KTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwiaWRcIiwge1xyXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxyXG5cdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbW9kdWxlLmk7IH1cclxuXHRcdH0pO1xyXG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XHJcblx0fVxyXG5cdHJldHVybiBtb2R1bGU7XHJcbn1cclxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAod2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanNcbiAqKiBtb2R1bGUgaWQgPSA0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiaW1wb3J0IFR5cGVEZWZzIGZyb20gJy4vY29tbW9uL3R5cGVkZWZzJzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG5pbXBvcnQgV2VicnRjQWRhcHRlciBmcm9tICd3ZWJydGMtYWRhcHRlcic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuaW1wb3J0IEltYWdlV3JhcHBlciBmcm9tICcuL2NvbW1vbi9pbWFnZV93cmFwcGVyJztcclxuaW1wb3J0IEJhcmNvZGVMb2NhdG9yIGZyb20gJy4vbG9jYXRvci9iYXJjb2RlX2xvY2F0b3InO1xyXG5pbXBvcnQgQmFyY29kZURlY29kZXIgZnJvbSAnLi9kZWNvZGVyL2JhcmNvZGVfZGVjb2Rlcic7XHJcbmltcG9ydCBFdmVudHMgZnJvbSAnLi9jb21tb24vZXZlbnRzJztcclxuaW1wb3J0IENhbWVyYUFjY2VzcyBmcm9tICcuL2lucHV0L2NhbWVyYV9hY2Nlc3MnO1xyXG5pbXBvcnQgSW1hZ2VEZWJ1ZyBmcm9tICcuL2NvbW1vbi9pbWFnZV9kZWJ1Zyc7XHJcbmltcG9ydCBSZXN1bHRDb2xsZWN0b3IgZnJvbSAnLi9hbmFseXRpY3MvcmVzdWx0X2NvbGxlY3Rvcic7XHJcbmltcG9ydCBDb25maWcgZnJvbSAnLi9jb25maWcvY29uZmlnJztcclxuaW1wb3J0IElucHV0U3RyZWFtIGZyb20gJ2lucHV0X3N0cmVhbSc7XHJcbmltcG9ydCBGcmFtZUdyYWJiZXIgZnJvbSAnZnJhbWVfZ3JhYmJlcic7XHJcbmltcG9ydCB7bWVyZ2V9IGZyb20gJ2xvZGFzaCc7XHJcbmNvbnN0IHZlYzIgPSB7XHJcbiAgICBjbG9uZTogcmVxdWlyZSgnZ2wtdmVjMi9jbG9uZScpXHJcbn07XHJcblxyXG52YXIgX2lucHV0U3RyZWFtLFxyXG4gICAgX2ZyYW1lZ3JhYmJlcixcclxuICAgIF9zdG9wcGVkLFxyXG4gICAgX2NhbnZhc0NvbnRhaW5lciA9IHtcclxuICAgICAgICBjdHg6IHtcclxuICAgICAgICAgICAgaW1hZ2U6IG51bGwsXHJcbiAgICAgICAgICAgIG92ZXJsYXk6IG51bGxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRvbToge1xyXG4gICAgICAgICAgICBpbWFnZTogbnVsbCxcclxuICAgICAgICAgICAgb3ZlcmxheTogbnVsbFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBfaW5wdXRJbWFnZVdyYXBwZXIsXHJcbiAgICBfYm94U2l6ZSxcclxuICAgIF9kZWNvZGVyLFxyXG4gICAgX3dvcmtlclBvb2wgPSBbXSxcclxuICAgIF9vblVJVGhyZWFkID0gdHJ1ZSxcclxuICAgIF9yZXN1bHRDb2xsZWN0b3IsXHJcbiAgICBfY29uZmlnID0ge307XHJcblxyXG5mdW5jdGlvbiBpbml0aWFsaXplRGF0YShpbWFnZVdyYXBwZXIpIHtcclxuICAgIGluaXRCdWZmZXJzKGltYWdlV3JhcHBlcik7XHJcbiAgICBfZGVjb2RlciA9IEJhcmNvZGVEZWNvZGVyLmNyZWF0ZShfY29uZmlnLmRlY29kZXIsIF9pbnB1dEltYWdlV3JhcHBlcik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRJbnB1dFN0cmVhbShjYikge1xyXG4gICAgdmFyIHZpZGVvO1xyXG4gICAgaWYgKF9jb25maWcuaW5wdXRTdHJlYW0udHlwZSA9PT0gXCJWaWRlb1N0cmVhbVwiKSB7XHJcbiAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidmlkZW9cIik7XHJcbiAgICAgICAgX2lucHV0U3RyZWFtID0gSW5wdXRTdHJlYW0uY3JlYXRlVmlkZW9TdHJlYW0odmlkZW8pO1xyXG4gICAgfSBlbHNlIGlmIChfY29uZmlnLmlucHV0U3RyZWFtLnR5cGUgPT09IFwiSW1hZ2VTdHJlYW1cIikge1xyXG4gICAgICAgIF9pbnB1dFN0cmVhbSA9IElucHV0U3RyZWFtLmNyZWF0ZUltYWdlU3RyZWFtKCk7XHJcbiAgICB9IGVsc2UgaWYgKF9jb25maWcuaW5wdXRTdHJlYW0udHlwZSA9PT0gXCJMaXZlU3RyZWFtXCIpIHtcclxuICAgICAgICB2YXIgJHZpZXdwb3J0ID0gZ2V0Vmlld1BvcnQoKTtcclxuICAgICAgICBpZiAoJHZpZXdwb3J0KSB7XHJcbiAgICAgICAgICAgIHZpZGVvID0gJHZpZXdwb3J0LnF1ZXJ5U2VsZWN0b3IoXCJ2aWRlb1wiKTtcclxuICAgICAgICAgICAgaWYgKCF2aWRlbykge1xyXG4gICAgICAgICAgICAgICAgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidmlkZW9cIik7XHJcbiAgICAgICAgICAgICAgICAkdmlld3BvcnQuYXBwZW5kQ2hpbGQodmlkZW8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9pbnB1dFN0cmVhbSA9IElucHV0U3RyZWFtLmNyZWF0ZUxpdmVTdHJlYW0odmlkZW8pO1xyXG4gICAgICAgIENhbWVyYUFjY2Vzcy5yZXF1ZXN0KHZpZGVvLCBfY29uZmlnLmlucHV0U3RyZWFtLmNvbnN0cmFpbnRzKVxyXG4gICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgX2lucHV0U3RyZWFtLnRyaWdnZXIoXCJjYW5yZWNvcmRcIik7XHJcbiAgICAgICAgfSkuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaW5wdXRTdHJlYW0uc2V0QXR0cmlidXRlKFwicHJlbG9hZFwiLCBcImF1dG9cIik7XHJcbiAgICBfaW5wdXRTdHJlYW0uc2V0QXR0cmlidXRlKFwiYXV0b3BsYXlcIiwgdHJ1ZSk7XHJcbiAgICBfaW5wdXRTdHJlYW0uc2V0SW5wdXRTdHJlYW0oX2NvbmZpZy5pbnB1dFN0cmVhbSk7XHJcbiAgICBfaW5wdXRTdHJlYW0uYWRkRXZlbnRMaXN0ZW5lcihcImNhbnJlY29yZFwiLCBjYW5SZWNvcmQuYmluZCh1bmRlZmluZWQsIGNiKSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFZpZXdQb3J0KCkge1xyXG4gICAgdmFyIHRhcmdldCA9IF9jb25maWcuaW5wdXRTdHJlYW0udGFyZ2V0O1xyXG4gICAgLy8gQ2hlY2sgaWYgdGFyZ2V0IGlzIGFscmVhZHkgYSBET00gZWxlbWVudFxyXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXQubm9kZU5hbWUgJiYgdGFyZ2V0Lm5vZGVUeXBlID09PSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gVXNlICcjaW50ZXJhY3RpdmUudmlld3BvcnQnIGFzIGEgZmFsbGJhY2sgc2VsZWN0b3IgKGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KVxyXG4gICAgICAgIHZhciBzZWxlY3RvciA9IHR5cGVvZiB0YXJnZXQgPT09ICdzdHJpbmcnID8gdGFyZ2V0IDogJyNpbnRlcmFjdGl2ZS52aWV3cG9ydCc7XHJcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjYW5SZWNvcmQoY2IpIHtcclxuICAgIEJhcmNvZGVMb2NhdG9yLmNoZWNrSW1hZ2VDb25zdHJhaW50cyhfaW5wdXRTdHJlYW0sIF9jb25maWcubG9jYXRvcik7XHJcbiAgICBpbml0Q2FudmFzKF9jb25maWcpO1xyXG4gICAgX2ZyYW1lZ3JhYmJlciA9IEZyYW1lR3JhYmJlci5jcmVhdGUoX2lucHV0U3RyZWFtLCBfY2FudmFzQ29udGFpbmVyLmRvbS5pbWFnZSk7XHJcblxyXG4gICAgYWRqdXN0V29ya2VyUG9vbChfY29uZmlnLm51bU9mV29ya2VycywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKF9jb25maWcubnVtT2ZXb3JrZXJzID09PSAwKSB7XHJcbiAgICAgICAgICAgIGluaXRpYWxpemVEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlYWR5KGNiKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWFkeShjYil7XHJcbiAgICBfaW5wdXRTdHJlYW0ucGxheSgpO1xyXG4gICAgY2IoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdENhbnZhcygpIHtcclxuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICB2YXIgJHZpZXdwb3J0ID0gZ2V0Vmlld1BvcnQoKTtcclxuICAgICAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5pbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJjYW52YXMuaW1nQnVmZmVyXCIpO1xyXG4gICAgICAgIGlmICghX2NhbnZhc0NvbnRhaW5lci5kb20uaW1hZ2UpIHtcclxuICAgICAgICAgICAgX2NhbnZhc0NvbnRhaW5lci5kb20uaW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xyXG4gICAgICAgICAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5pbWFnZS5jbGFzc05hbWUgPSBcImltZ0J1ZmZlclwiO1xyXG4gICAgICAgICAgICBpZiAoJHZpZXdwb3J0ICYmIF9jb25maWcuaW5wdXRTdHJlYW0udHlwZSA9PT0gXCJJbWFnZVN0cmVhbVwiKSB7XHJcbiAgICAgICAgICAgICAgICAkdmlld3BvcnQuYXBwZW5kQ2hpbGQoX2NhbnZhc0NvbnRhaW5lci5kb20uaW1hZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9jYW52YXNDb250YWluZXIuY3R4LmltYWdlID0gX2NhbnZhc0NvbnRhaW5lci5kb20uaW1hZ2UuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICAgIF9jYW52YXNDb250YWluZXIuZG9tLmltYWdlLndpZHRoID0gX2lucHV0U3RyZWFtLmdldENhbnZhc1NpemUoKS54O1xyXG4gICAgICAgIF9jYW52YXNDb250YWluZXIuZG9tLmltYWdlLmhlaWdodCA9IF9pbnB1dFN0cmVhbS5nZXRDYW52YXNTaXplKCkueTtcclxuXHJcbiAgICAgICAgX2NhbnZhc0NvbnRhaW5lci5kb20ub3ZlcmxheSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJjYW52YXMuZHJhd2luZ0J1ZmZlclwiKTtcclxuICAgICAgICBpZiAoIV9jYW52YXNDb250YWluZXIuZG9tLm92ZXJsYXkpIHtcclxuICAgICAgICAgICAgX2NhbnZhc0NvbnRhaW5lci5kb20ub3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XHJcbiAgICAgICAgICAgIF9jYW52YXNDb250YWluZXIuZG9tLm92ZXJsYXkuY2xhc3NOYW1lID0gXCJkcmF3aW5nQnVmZmVyXCI7XHJcbiAgICAgICAgICAgIGlmICgkdmlld3BvcnQpIHtcclxuICAgICAgICAgICAgICAgICR2aWV3cG9ydC5hcHBlbmRDaGlsZChfY2FudmFzQ29udGFpbmVyLmRvbS5vdmVybGF5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgY2xlYXJGaXggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnJcIik7XHJcbiAgICAgICAgICAgIGNsZWFyRml4LnNldEF0dHJpYnV0ZShcImNsZWFyXCIsIFwiYWxsXCIpO1xyXG4gICAgICAgICAgICBpZiAoJHZpZXdwb3J0KSB7XHJcbiAgICAgICAgICAgICAgICAkdmlld3BvcnQuYXBwZW5kQ2hpbGQoY2xlYXJGaXgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9jYW52YXNDb250YWluZXIuY3R4Lm92ZXJsYXkgPSBfY2FudmFzQ29udGFpbmVyLmRvbS5vdmVybGF5LmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5vdmVybGF5LndpZHRoID0gX2lucHV0U3RyZWFtLmdldENhbnZhc1NpemUoKS54O1xyXG4gICAgICAgIF9jYW52YXNDb250YWluZXIuZG9tLm92ZXJsYXkuaGVpZ2h0ID0gX2lucHV0U3RyZWFtLmdldENhbnZhc1NpemUoKS55O1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0QnVmZmVycyhpbWFnZVdyYXBwZXIpIHtcclxuICAgIGlmIChpbWFnZVdyYXBwZXIpIHtcclxuICAgICAgICBfaW5wdXRJbWFnZVdyYXBwZXIgPSBpbWFnZVdyYXBwZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIF9pbnB1dEltYWdlV3JhcHBlciA9IG5ldyBJbWFnZVdyYXBwZXIoe1xyXG4gICAgICAgICAgICB4OiBfaW5wdXRTdHJlYW0uZ2V0V2lkdGgoKSxcclxuICAgICAgICAgICAgeTogX2lucHV0U3RyZWFtLmdldEhlaWdodCgpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKEVOVi5kZXZlbG9wbWVudCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKF9pbnB1dEltYWdlV3JhcHBlci5zaXplKTtcclxuICAgIH1cclxuICAgIF9ib3hTaXplID0gW1xyXG4gICAgICAgIHZlYzIuY2xvbmUoWzAsIDBdKSxcclxuICAgICAgICB2ZWMyLmNsb25lKFswLCBfaW5wdXRJbWFnZVdyYXBwZXIuc2l6ZS55XSksXHJcbiAgICAgICAgdmVjMi5jbG9uZShbX2lucHV0SW1hZ2VXcmFwcGVyLnNpemUueCwgX2lucHV0SW1hZ2VXcmFwcGVyLnNpemUueV0pLFxyXG4gICAgICAgIHZlYzIuY2xvbmUoW19pbnB1dEltYWdlV3JhcHBlci5zaXplLngsIDBdKVxyXG4gICAgXTtcclxuICAgIEJhcmNvZGVMb2NhdG9yLmluaXQoX2lucHV0SW1hZ2VXcmFwcGVyLCBfY29uZmlnLmxvY2F0b3IpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0JveGVzKCkge1xyXG4gICAgaWYgKF9jb25maWcubG9jYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIEJhcmNvZGVMb2NhdG9yLmxvY2F0ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gW1tcclxuICAgICAgICAgICAgdmVjMi5jbG9uZShfYm94U2l6ZVswXSksXHJcbiAgICAgICAgICAgIHZlYzIuY2xvbmUoX2JveFNpemVbMV0pLFxyXG4gICAgICAgICAgICB2ZWMyLmNsb25lKF9ib3hTaXplWzJdKSxcclxuICAgICAgICAgICAgdmVjMi5jbG9uZShfYm94U2l6ZVszXSldXTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHJhbnNmb3JtUmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdmFyIHRvcFJpZ2h0ID0gX2lucHV0U3RyZWFtLmdldFRvcFJpZ2h0KCksXHJcbiAgICAgICAgeE9mZnNldCA9IHRvcFJpZ2h0LngsXHJcbiAgICAgICAgeU9mZnNldCA9IHRvcFJpZ2h0LnksXHJcbiAgICAgICAgaTtcclxuXHJcbiAgICBpZiAoeE9mZnNldCA9PT0gMCAmJiB5T2Zmc2V0ID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXN1bHQuYmFyY29kZXMpIHtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVzdWx0LmJhcmNvZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybVJlc3VsdChyZXN1bHQuYmFyY29kZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzdWx0LmxpbmUgJiYgcmVzdWx0LmxpbmUubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgICAgbW92ZUxpbmUocmVzdWx0LmxpbmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXN1bHQuYm94KSB7XHJcbiAgICAgICAgbW92ZUJveChyZXN1bHQuYm94KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocmVzdWx0LmJveGVzICYmIHJlc3VsdC5ib3hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHJlc3VsdC5ib3hlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBtb3ZlQm94KHJlc3VsdC5ib3hlc1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIG1vdmVCb3goYm94KSB7XHJcbiAgICAgICAgdmFyIGNvcm5lciA9IGJveC5sZW5ndGg7XHJcblxyXG4gICAgICAgIHdoaWxlIChjb3JuZXItLSkge1xyXG4gICAgICAgICAgICBib3hbY29ybmVyXVswXSArPSB4T2Zmc2V0O1xyXG4gICAgICAgICAgICBib3hbY29ybmVyXVsxXSArPSB5T2Zmc2V0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBtb3ZlTGluZShsaW5lKSB7XHJcbiAgICAgICAgbGluZVswXS54ICs9IHhPZmZzZXQ7XHJcbiAgICAgICAgbGluZVswXS55ICs9IHlPZmZzZXQ7XHJcbiAgICAgICAgbGluZVsxXS54ICs9IHhPZmZzZXQ7XHJcbiAgICAgICAgbGluZVsxXS55ICs9IHlPZmZzZXQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZFJlc3VsdCAocmVzdWx0LCBpbWFnZURhdGEpIHtcclxuICAgIGlmICghaW1hZ2VEYXRhIHx8ICFfcmVzdWx0Q29sbGVjdG9yKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXN1bHQuYmFyY29kZXMpIHtcclxuICAgICAgICByZXN1bHQuYmFyY29kZXMuZmlsdGVyKGJhcmNvZGUgPT4gYmFyY29kZS5jb2RlUmVzdWx0KVxyXG4gICAgICAgICAgICAuZm9yRWFjaChiYXJjb2RlID0+IGFkZFJlc3VsdChiYXJjb2RlLCBpbWFnZURhdGEpKTtcclxuICAgIH0gZWxzZSBpZiAocmVzdWx0LmNvZGVSZXN1bHQpIHtcclxuICAgICAgICBfcmVzdWx0Q29sbGVjdG9yLmFkZFJlc3VsdChpbWFnZURhdGEsIF9pbnB1dFN0cmVhbS5nZXRDYW52YXNTaXplKCksIHJlc3VsdC5jb2RlUmVzdWx0KTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaGFzQ29kZVJlc3VsdCAocmVzdWx0KSB7XHJcbiAgICByZXR1cm4gcmVzdWx0ICYmIChyZXN1bHQuYmFyY29kZXMgP1xyXG4gICAgICByZXN1bHQuYmFyY29kZXMuc29tZShiYXJjb2RlID0+IGJhcmNvZGUuY29kZVJlc3VsdCkgOlxyXG4gICAgICByZXN1bHQuY29kZVJlc3VsdCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHB1Ymxpc2hSZXN1bHQocmVzdWx0LCBpbWFnZURhdGEpIHtcclxuICAgIGxldCByZXN1bHRUb1B1Ymxpc2ggPSByZXN1bHQ7XHJcblxyXG4gICAgaWYgKHJlc3VsdCAmJiBfb25VSVRocmVhZCkge1xyXG4gICAgICAgIHRyYW5zZm9ybVJlc3VsdChyZXN1bHQpO1xyXG4gICAgICAgIGFkZFJlc3VsdChyZXN1bHQsIGltYWdlRGF0YSk7XHJcbiAgICAgICAgcmVzdWx0VG9QdWJsaXNoID0gcmVzdWx0LmJhcmNvZGVzIHx8IHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBFdmVudHMucHVibGlzaChcInByb2Nlc3NlZFwiLCByZXN1bHRUb1B1Ymxpc2gpO1xyXG4gICAgaWYgKGhhc0NvZGVSZXN1bHQocmVzdWx0KSkge1xyXG4gICAgICAgIEV2ZW50cy5wdWJsaXNoKFwiZGV0ZWN0ZWRcIiwgcmVzdWx0VG9QdWJsaXNoKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gbG9jYXRlQW5kRGVjb2RlKCkge1xyXG4gICAgdmFyIHJlc3VsdCxcclxuICAgICAgICBib3hlcztcclxuXHJcbiAgICBib3hlcyA9IGdldEJvdW5kaW5nQm94ZXMoKTtcclxuICAgIGlmIChib3hlcykge1xyXG4gICAgICAgIHJlc3VsdCA9IF9kZWNvZGVyLmRlY29kZUZyb21Cb3VuZGluZ0JveGVzKGJveGVzKTtcclxuICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XHJcbiAgICAgICAgcmVzdWx0LmJveGVzID0gYm94ZXM7XHJcbiAgICAgICAgcHVibGlzaFJlc3VsdChyZXN1bHQsIF9pbnB1dEltYWdlV3JhcHBlci5kYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcHVibGlzaFJlc3VsdCgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB1cGRhdGUoKSB7XHJcbiAgICB2YXIgYXZhaWxhYmxlV29ya2VyO1xyXG5cclxuICAgIGlmIChfb25VSVRocmVhZCkge1xyXG4gICAgICAgIGlmIChfd29ya2VyUG9vbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGF2YWlsYWJsZVdvcmtlciA9IF93b3JrZXJQb29sLmZpbHRlcihmdW5jdGlvbih3b3JrZXJUaHJlYWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAhd29ya2VyVGhyZWFkLmJ1c3k7XHJcbiAgICAgICAgICAgIH0pWzBdO1xyXG4gICAgICAgICAgICBpZiAoYXZhaWxhYmxlV29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICBfZnJhbWVncmFiYmVyLmF0dGFjaERhdGEoYXZhaWxhYmxlV29ya2VyLmltYWdlRGF0YSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIGFsbCB3b3JrZXJzIGFyZSBidXN5XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBfZnJhbWVncmFiYmVyLmF0dGFjaERhdGEoX2lucHV0SW1hZ2VXcmFwcGVyLmRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoX2ZyYW1lZ3JhYmJlci5ncmFiKCkpIHtcclxuICAgICAgICAgICAgaWYgKGF2YWlsYWJsZVdvcmtlcikge1xyXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlV29ya2VyLmJ1c3kgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlV29ya2VyLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgY21kOiAncHJvY2VzcycsXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VEYXRhOiBhdmFpbGFibGVXb3JrZXIuaW1hZ2VEYXRhXHJcbiAgICAgICAgICAgICAgICB9LCBbYXZhaWxhYmxlV29ya2VyLmltYWdlRGF0YS5idWZmZXJdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxvY2F0ZUFuZERlY29kZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBsb2NhdGVBbmREZWNvZGUoKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc3RhcnRDb250aW51b3VzVXBkYXRlKCkge1xyXG4gICAgdmFyIG5leHQgPSBudWxsLFxyXG4gICAgICAgIGRlbGF5ID0gMTAwMCAvIChfY29uZmlnLmZyZXF1ZW5jeSB8fCA2MCk7XHJcblxyXG4gICAgX3N0b3BwZWQgPSBmYWxzZTtcclxuICAgIChmdW5jdGlvbiBmcmFtZSh0aW1lc3RhbXApIHtcclxuICAgICAgICBuZXh0ID0gbmV4dCB8fCB0aW1lc3RhbXA7XHJcbiAgICAgICAgaWYgKCFfc3RvcHBlZCkge1xyXG4gICAgICAgICAgICBpZiAodGltZXN0YW1wID49IG5leHQpIHtcclxuICAgICAgICAgICAgICAgIG5leHQgKz0gZGVsYXk7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1GcmFtZShmcmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfShwZXJmb3JtYW5jZS5ub3coKSkpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzdGFydCgpIHtcclxuICAgIGlmIChfb25VSVRocmVhZCAmJiBfY29uZmlnLmlucHV0U3RyZWFtLnR5cGUgPT09IFwiTGl2ZVN0cmVhbVwiKSB7XHJcbiAgICAgICAgc3RhcnRDb250aW51b3VzVXBkYXRlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVwZGF0ZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0V29ya2VyKGNiKSB7XHJcbiAgICB2YXIgYmxvYlVSTCxcclxuICAgICAgICB3b3JrZXJUaHJlYWQgPSB7XHJcbiAgICAgICAgICAgIHdvcmtlcjogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICBpbWFnZURhdGE6IG5ldyBVaW50OEFycmF5KF9pbnB1dFN0cmVhbS5nZXRXaWR0aCgpICogX2lucHV0U3RyZWFtLmdldEhlaWdodCgpKSxcclxuICAgICAgICAgICAgYnVzeTogdHJ1ZVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgYmxvYlVSTCA9IGdlbmVyYXRlV29ya2VyQmxvYigpO1xyXG4gICAgd29ya2VyVGhyZWFkLndvcmtlciA9IG5ldyBXb3JrZXIoYmxvYlVSTCk7XHJcblxyXG4gICAgd29ya2VyVGhyZWFkLndvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgaWYgKGUuZGF0YS5ldmVudCA9PT0gJ2luaXRpYWxpemVkJykge1xyXG4gICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVUkwpO1xyXG4gICAgICAgICAgICB3b3JrZXJUaHJlYWQuYnVzeSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB3b3JrZXJUaHJlYWQuaW1hZ2VEYXRhID0gbmV3IFVpbnQ4QXJyYXkoZS5kYXRhLmltYWdlRGF0YSk7XHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiV29ya2VyIGluaXRpYWxpemVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjYih3b3JrZXJUaHJlYWQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLmV2ZW50ID09PSAncHJvY2Vzc2VkJykge1xyXG4gICAgICAgICAgICB3b3JrZXJUaHJlYWQuaW1hZ2VEYXRhID0gbmV3IFVpbnQ4QXJyYXkoZS5kYXRhLmltYWdlRGF0YSk7XHJcbiAgICAgICAgICAgIHdvcmtlclRocmVhZC5idXN5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHB1Ymxpc2hSZXN1bHQoZS5kYXRhLnJlc3VsdCwgd29ya2VyVGhyZWFkLmltYWdlRGF0YSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEuZXZlbnQgPT09ICdlcnJvcicpIHtcclxuICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJXb3JrZXIgZXJyb3I6IFwiICsgZS5kYXRhLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB3b3JrZXJUaHJlYWQud29ya2VyLnBvc3RNZXNzYWdlKHtcclxuICAgICAgICBjbWQ6ICdpbml0JyxcclxuICAgICAgICBzaXplOiB7eDogX2lucHV0U3RyZWFtLmdldFdpZHRoKCksIHk6IF9pbnB1dFN0cmVhbS5nZXRIZWlnaHQoKX0sXHJcbiAgICAgICAgaW1hZ2VEYXRhOiB3b3JrZXJUaHJlYWQuaW1hZ2VEYXRhLFxyXG4gICAgICAgIGNvbmZpZzogY29uZmlnRm9yV29ya2VyKF9jb25maWcpXHJcbiAgICB9LCBbd29ya2VyVGhyZWFkLmltYWdlRGF0YS5idWZmZXJdKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY29uZmlnRm9yV29ya2VyKGNvbmZpZykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgaW5wdXRTdHJlYW06IHtcclxuICAgICAgICAgICAgLi4uY29uZmlnLmlucHV0U3RyZWFtLFxyXG4gICAgICAgICAgICB0YXJnZXQ6IG51bGxcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiB3b3JrZXJJbnRlcmZhY2UoZmFjdG9yeSkge1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYqL1xyXG4gICAgaWYgKGZhY3RvcnkpIHtcclxuICAgICAgICB2YXIgUXVhZ2dhID0gZmFjdG9yeSgpLmRlZmF1bHQ7XHJcbiAgICAgICAgaWYgKCFRdWFnZ2EpIHtcclxuICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7J2V2ZW50JzogJ2Vycm9yJywgbWVzc2FnZTogJ1F1YWdnYSBjb3VsZCBub3QgYmUgY3JlYXRlZCd9KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciBpbWFnZVdyYXBwZXI7XHJcblxyXG4gICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgaWYgKGUuZGF0YS5jbWQgPT09ICdpbml0Jykge1xyXG4gICAgICAgICAgICB2YXIgY29uZmlnID0gZS5kYXRhLmNvbmZpZztcclxuICAgICAgICAgICAgY29uZmlnLm51bU9mV29ya2VycyA9IDA7XHJcbiAgICAgICAgICAgIGltYWdlV3JhcHBlciA9IG5ldyBRdWFnZ2EuSW1hZ2VXcmFwcGVyKHtcclxuICAgICAgICAgICAgICAgIHg6IGUuZGF0YS5zaXplLngsXHJcbiAgICAgICAgICAgICAgICB5OiBlLmRhdGEuc2l6ZS55XHJcbiAgICAgICAgICAgIH0sIG5ldyBVaW50OEFycmF5KGUuZGF0YS5pbWFnZURhdGEpKTtcclxuICAgICAgICAgICAgUXVhZ2dhLmluaXQoY29uZmlnLCByZWFkeSwgaW1hZ2VXcmFwcGVyKTtcclxuICAgICAgICAgICAgUXVhZ2dhLm9uUHJvY2Vzc2VkKG9uUHJvY2Vzc2VkKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5jbWQgPT09ICdwcm9jZXNzJykge1xyXG4gICAgICAgICAgICBpbWFnZVdyYXBwZXIuZGF0YSA9IG5ldyBVaW50OEFycmF5KGUuZGF0YS5pbWFnZURhdGEpO1xyXG4gICAgICAgICAgICBRdWFnZ2Euc3RhcnQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5jbWQgPT09ICdzZXRSZWFkZXJzJykge1xyXG4gICAgICAgICAgICBRdWFnZ2Euc2V0UmVhZGVycyhlLmRhdGEucmVhZGVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBmdW5jdGlvbiBvblByb2Nlc3NlZChyZXN1bHQpIHtcclxuICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgJ2V2ZW50JzogJ3Byb2Nlc3NlZCcsXHJcbiAgICAgICAgICAgIGltYWdlRGF0YTogaW1hZ2VXcmFwcGVyLmRhdGEsXHJcbiAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0XHJcbiAgICAgICAgfSwgW2ltYWdlV3JhcHBlci5kYXRhLmJ1ZmZlcl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHJlYWR5KCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXHJcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7J2V2ZW50JzogJ2luaXRpYWxpemVkJywgaW1hZ2VEYXRhOiBpbWFnZVdyYXBwZXIuZGF0YX0sIFtpbWFnZVdyYXBwZXIuZGF0YS5idWZmZXJdKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBlc2xpbnQtZW5hYmxlICovXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdlbmVyYXRlV29ya2VyQmxvYigpIHtcclxuICAgIHZhciBibG9iLFxyXG4gICAgICAgIGZhY3RvcnlTb3VyY2U7XHJcblxyXG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xyXG4gICAgaWYgKHR5cGVvZiBfX2ZhY3RvcnlTb3VyY2VfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICBmYWN0b3J5U291cmNlID0gX19mYWN0b3J5U291cmNlX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcclxuICAgIH1cclxuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXHJcblxyXG4gICAgYmxvYiA9IG5ldyBCbG9iKFsnKCcgKyB3b3JrZXJJbnRlcmZhY2UudG9TdHJpbmcoKSArICcpKCcgKyBmYWN0b3J5U291cmNlICsgJyk7J10sXHJcbiAgICAgICAge3R5cGU6ICd0ZXh0L2phdmFzY3JpcHQnfSk7XHJcblxyXG4gICAgcmV0dXJuIHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRSZWFkZXJzKHJlYWRlcnMpIHtcclxuICAgIGlmIChfZGVjb2Rlcikge1xyXG4gICAgICAgIF9kZWNvZGVyLnNldFJlYWRlcnMocmVhZGVycyk7XHJcbiAgICB9IGVsc2UgaWYgKF9vblVJVGhyZWFkICYmIF93b3JrZXJQb29sLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBfd29ya2VyUG9vbC5mb3JFYWNoKGZ1bmN0aW9uKHdvcmtlclRocmVhZCkge1xyXG4gICAgICAgICAgICB3b3JrZXJUaHJlYWQud29ya2VyLnBvc3RNZXNzYWdlKHtjbWQ6ICdzZXRSZWFkZXJzJywgcmVhZGVyczogcmVhZGVyc30pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBhZGp1c3RXb3JrZXJQb29sKGNhcGFjaXR5LCBjYikge1xyXG4gICAgY29uc3QgaW5jcmVhc2VCeSA9IGNhcGFjaXR5IC0gX3dvcmtlclBvb2wubGVuZ3RoO1xyXG4gICAgaWYgKGluY3JlYXNlQnkgPT09IDApIHtcclxuICAgICAgICByZXR1cm4gY2IgJiYgY2IoKTtcclxuICAgIH1cclxuICAgIGlmIChpbmNyZWFzZUJ5IDwgMCkge1xyXG4gICAgICAgIGNvbnN0IHdvcmtlcnNUb1Rlcm1pbmF0ZSA9IF93b3JrZXJQb29sLnNsaWNlKGluY3JlYXNlQnkpO1xyXG4gICAgICAgIHdvcmtlcnNUb1Rlcm1pbmF0ZS5mb3JFYWNoKGZ1bmN0aW9uKHdvcmtlclRocmVhZCkge1xyXG4gICAgICAgICAgICB3b3JrZXJUaHJlYWQud29ya2VyLnRlcm1pbmF0ZSgpO1xyXG4gICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIldvcmtlciB0ZXJtaW5hdGVkIVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIF93b3JrZXJQb29sID0gX3dvcmtlclBvb2wuc2xpY2UoMCwgaW5jcmVhc2VCeSk7XHJcbiAgICAgICAgcmV0dXJuIGNiICYmIGNiKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5jcmVhc2VCeTsgaSsrKSB7XHJcbiAgICAgICAgICAgIGluaXRXb3JrZXIod29ya2VySW5pdGlhbGl6ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gd29ya2VySW5pdGlhbGl6ZWQod29ya2VyVGhyZWFkKSB7XHJcbiAgICAgICAgICAgIF93b3JrZXJQb29sLnB1c2god29ya2VyVGhyZWFkKTtcclxuICAgICAgICAgICAgaWYgKF93b3JrZXJQb29sLmxlbmd0aCA+PSBjYXBhY2l0eSl7XHJcbiAgICAgICAgICAgICAgICBjYiAmJiBjYigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBpbml0OiBmdW5jdGlvbihjb25maWcsIGNiLCBpbWFnZVdyYXBwZXIpIHtcclxuICAgICAgICBfY29uZmlnID0gbWVyZ2Uoe30sIENvbmZpZywgY29uZmlnKTtcclxuICAgICAgICBpZiAoaW1hZ2VXcmFwcGVyKSB7XHJcbiAgICAgICAgICAgIF9vblVJVGhyZWFkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGluaXRpYWxpemVEYXRhKGltYWdlV3JhcHBlcik7XHJcbiAgICAgICAgICAgIHJldHVybiBjYigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGluaXRJbnB1dFN0cmVhbShjYik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcclxuICAgICAgICBzdGFydCgpO1xyXG4gICAgfSxcclxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIF9zdG9wcGVkID0gdHJ1ZTtcclxuICAgICAgICBhZGp1c3RXb3JrZXJQb29sKDApO1xyXG4gICAgICAgIGlmIChfY29uZmlnLmlucHV0U3RyZWFtLnR5cGUgPT09IFwiTGl2ZVN0cmVhbVwiKSB7XHJcbiAgICAgICAgICAgIENhbWVyYUFjY2Vzcy5yZWxlYXNlKCk7XHJcbiAgICAgICAgICAgIF9pbnB1dFN0cmVhbS5jbGVhckV2ZW50SGFuZGxlcnMoKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcGF1c2U6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIF9zdG9wcGVkID0gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBvbkRldGVjdGVkOiBmdW5jdGlvbihjYWxsYmFjaykge1xyXG4gICAgICAgIEV2ZW50cy5zdWJzY3JpYmUoXCJkZXRlY3RlZFwiLCBjYWxsYmFjayk7XHJcbiAgICB9LFxyXG4gICAgb2ZmRGV0ZWN0ZWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgRXZlbnRzLnVuc3Vic2NyaWJlKFwiZGV0ZWN0ZWRcIiwgY2FsbGJhY2spO1xyXG4gICAgfSxcclxuICAgIG9uUHJvY2Vzc2VkOiBmdW5jdGlvbihjYWxsYmFjaykge1xyXG4gICAgICAgIEV2ZW50cy5zdWJzY3JpYmUoXCJwcm9jZXNzZWRcIiwgY2FsbGJhY2spO1xyXG4gICAgfSxcclxuICAgIG9mZlByb2Nlc3NlZDogZnVuY3Rpb24oY2FsbGJhY2spIHtcclxuICAgICAgICBFdmVudHMudW5zdWJzY3JpYmUoXCJwcm9jZXNzZWRcIiwgY2FsbGJhY2spO1xyXG4gICAgfSxcclxuICAgIHNldFJlYWRlcnM6IGZ1bmN0aW9uKHJlYWRlcnMpIHtcclxuICAgICAgICBzZXRSZWFkZXJzKHJlYWRlcnMpO1xyXG4gICAgfSxcclxuICAgIHJlZ2lzdGVyUmVzdWx0Q29sbGVjdG9yOiBmdW5jdGlvbihyZXN1bHRDb2xsZWN0b3IpIHtcclxuICAgICAgICBpZiAocmVzdWx0Q29sbGVjdG9yICYmIHR5cGVvZiByZXN1bHRDb2xsZWN0b3IuYWRkUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIF9yZXN1bHRDb2xsZWN0b3IgPSByZXN1bHRDb2xsZWN0b3I7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNhbnZhczogX2NhbnZhc0NvbnRhaW5lcixcclxuICAgIGRlY29kZVNpbmdsZTogZnVuY3Rpb24oY29uZmlnLCByZXN1bHRDYWxsYmFjaykge1xyXG4gICAgICAgIGNvbmZpZyA9IG1lcmdlKHtcclxuICAgICAgICAgICAgaW5wdXRTdHJlYW06IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiSW1hZ2VTdHJlYW1cIixcclxuICAgICAgICAgICAgICAgIHNlcXVlbmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNpemU6IDgwMCxcclxuICAgICAgICAgICAgICAgIHNyYzogY29uZmlnLnNyY1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBudW1PZldvcmtlcnM6IChFTlYuZGV2ZWxvcG1lbnQgJiYgY29uZmlnLmRlYnVnKSA/IDAgOiAxLFxyXG4gICAgICAgICAgICBsb2NhdG9yOiB7XHJcbiAgICAgICAgICAgICAgICBoYWxmU2FtcGxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgY29uZmlnKTtcclxuICAgICAgICB0aGlzLmluaXQoY29uZmlnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIEV2ZW50cy5vbmNlKFwicHJvY2Vzc2VkXCIsIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0Q2FsbGJhY2suY2FsbChudWxsLCByZXN1bHQpO1xyXG4gICAgICAgICAgICB9LCB0cnVlKTtcclxuICAgICAgICAgICAgc3RhcnQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBJbWFnZVdyYXBwZXI6IEltYWdlV3JhcHBlcixcclxuICAgIEltYWdlRGVidWc6IEltYWdlRGVidWcsXHJcbiAgICBSZXN1bHRDb2xsZWN0b3I6IFJlc3VsdENvbGxlY3RvclxyXG59O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9xdWFnZ2EuanNcbiAqKi8iLCJpbXBvcnQgSW1hZ2VEZWJ1ZyBmcm9tICcuLi9jb21tb24vaW1hZ2VfZGVidWcnO1xyXG5cclxuZnVuY3Rpb24gY29udGFpbnMoY29kZVJlc3VsdCwgbGlzdCkge1xyXG4gICAgaWYgKGxpc3QpIHtcclxuICAgICAgICByZXR1cm4gbGlzdC5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhpdGVtKS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVtrZXldID09PSBjb2RlUmVzdWx0W2tleV07XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXNzZXNGaWx0ZXIoY29kZVJlc3VsdCwgZmlsdGVyKSB7XHJcbiAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXIoY29kZVJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY3JlYXRlOiBmdW5jdGlvbihjb25maWcpIHtcclxuICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKSxcclxuICAgICAgICAgICAgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKSxcclxuICAgICAgICAgICAgcmVzdWx0cyA9IFtdLFxyXG4gICAgICAgICAgICBjYXBhY2l0eSA9IGNvbmZpZy5jYXBhY2l0eSB8fCAyMCxcclxuICAgICAgICAgICAgY2FwdHVyZSA9IGNvbmZpZy5jYXB0dXJlID09PSB0cnVlO1xyXG5cclxuICAgICAgICBmdW5jdGlvbiBtYXRjaGVzQ29uc3RyYWludHMoY29kZVJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FwYWNpdHlcclxuICAgICAgICAgICAgICAgICYmIGNvZGVSZXN1bHRcclxuICAgICAgICAgICAgICAgICYmICFjb250YWlucyhjb2RlUmVzdWx0LCBjb25maWcuYmxhY2tsaXN0KVxyXG4gICAgICAgICAgICAgICAgJiYgcGFzc2VzRmlsdGVyKGNvZGVSZXN1bHQsIGNvbmZpZy5maWx0ZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYWRkUmVzdWx0OiBmdW5jdGlvbihkYXRhLCBpbWFnZVNpemUsIGNvZGVSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hlc0NvbnN0cmFpbnRzKGNvZGVSZXN1bHQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FwYWNpdHktLTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuY29kZVJlc3VsdCA9IGNvZGVSZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gaW1hZ2VTaXplLng7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBpbWFnZVNpemUueTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VEZWJ1Zy5kcmF3SW1hZ2UoZGF0YSwgaW1hZ2VTaXplLCBjdHgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZnJhbWUgPSBjYW52YXMudG9EYXRhVVJMKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXRSZXN1bHRzOiBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvYW5hbHl0aWNzL3Jlc3VsdF9jb2xsZWN0b3IuanNcbiAqKi8iLCJjb25zdCB2ZWMyID0ge1xyXG4gICAgY2xvbmU6IHJlcXVpcmUoJ2dsLXZlYzIvY2xvbmUnKSxcclxuICAgIGRvdDogcmVxdWlyZSgnZ2wtdmVjMi9kb3QnKVxyXG59XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBjbHVzdGVyIGZvciBncm91cGluZyBzaW1pbGFyIG9yaWVudGF0aW9ucyBvZiBkYXRhcG9pbnRzXHJcbiAgICAgKi9cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY3JlYXRlOiBmdW5jdGlvbihwb2ludCwgdGhyZXNob2xkKSB7XHJcbiAgICAgICAgdmFyIHBvaW50cyA9IFtdLFxyXG4gICAgICAgICAgICBjZW50ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICByYWQ6IDAsXHJcbiAgICAgICAgICAgICAgICB2ZWM6IHZlYzIuY2xvbmUoWzAsIDBdKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwb2ludE1hcCA9IHt9O1xyXG5cclxuICAgICAgICBmdW5jdGlvbiBpbml0KCkge1xyXG4gICAgICAgICAgICBhZGQocG9pbnQpO1xyXG4gICAgICAgICAgICB1cGRhdGVDZW50ZXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGFkZChwb2ludFRvQWRkKSB7XHJcbiAgICAgICAgICAgIHBvaW50TWFwW3BvaW50VG9BZGQuaWRdID0gcG9pbnRUb0FkZDtcclxuICAgICAgICAgICAgcG9pbnRzLnB1c2gocG9pbnRUb0FkZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiB1cGRhdGVDZW50ZXIoKSB7XHJcbiAgICAgICAgICAgIHZhciBpLCBzdW0gPSAwO1xyXG4gICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc3VtICs9IHBvaW50c1tpXS5yYWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2VudGVyLnJhZCA9IHN1bSAvIHBvaW50cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGNlbnRlci52ZWMgPSB2ZWMyLmNsb25lKFtNYXRoLmNvcyhjZW50ZXIucmFkKSwgTWF0aC5zaW4oY2VudGVyLnJhZCldKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGluaXQoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYWRkOiBmdW5jdGlvbihwb2ludFRvQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXBvaW50TWFwW3BvaW50VG9BZGQuaWRdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRkKHBvaW50VG9BZGQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNlbnRlcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmaXRzOiBmdW5jdGlvbihvdGhlclBvaW50KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBjb3NpbmUgc2ltaWxhcml0eSB0byBjZW50ZXItYW5nbGVcclxuICAgICAgICAgICAgICAgIHZhciBzaW1pbGFyaXR5ID0gTWF0aC5hYnModmVjMi5kb3Qob3RoZXJQb2ludC5wb2ludC52ZWMsIGNlbnRlci52ZWMpKTtcclxuICAgICAgICAgICAgICAgIGlmIChzaW1pbGFyaXR5ID4gdGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldFBvaW50czogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9pbnRzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXRDZW50ZXI6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlUG9pbnQ6IGZ1bmN0aW9uKG5ld1BvaW50LCBpZCwgcHJvcGVydHkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByYWQ6IG5ld1BvaW50W3Byb3BlcnR5XSxcclxuICAgICAgICAgICAgcG9pbnQ6IG5ld1BvaW50LFxyXG4gICAgICAgICAgICBpZDogaWRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21tb24vY2x1c3Rlci5qc1xuICoqLyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbigpIHtcclxuICAgIHZhciBldmVudHMgPSB7fTtcclxuXHJcbiAgICBmdW5jdGlvbiBnZXRFdmVudChldmVudE5hbWUpIHtcclxuICAgICAgICBpZiAoIWV2ZW50c1tldmVudE5hbWVdKSB7XHJcbiAgICAgICAgICAgIGV2ZW50c1tldmVudE5hbWVdID0ge1xyXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlcnM6IFtdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBldmVudHNbZXZlbnROYW1lXTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBjbGVhckV2ZW50cygpe1xyXG4gICAgICAgIGV2ZW50cyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHB1Ymxpc2hTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uLCBkYXRhKSB7XHJcbiAgICAgICAgaWYgKHN1YnNjcmlwdGlvbi5hc3luYykge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLmNhbGxiYWNrKGRhdGEpO1xyXG4gICAgICAgICAgICB9LCA0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24uY2FsbGJhY2soZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHN1YnNjcmliZShldmVudCwgY2FsbGJhY2ssIGFzeW5jKSB7XHJcbiAgICAgICAgdmFyIHN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICAgICAgaWYgKCB0eXBlb2YgY2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjazogY2FsbGJhY2ssXHJcbiAgICAgICAgICAgICAgICBhc3luYzogYXN5bmNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdWJzY3JpcHRpb24gPSBjYWxsYmFjaztcclxuICAgICAgICAgICAgaWYgKCFzdWJzY3JpcHRpb24uY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIHRocm93IFwiQ2FsbGJhY2sgd2FzIG5vdCBzcGVjaWZpZWQgb24gb3B0aW9uc1wiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXRFdmVudChldmVudCkuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpcHRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc3Vic2NyaWJlOiBmdW5jdGlvbihldmVudCwgY2FsbGJhY2ssIGFzeW5jKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWJzY3JpYmUoZXZlbnQsIGNhbGxiYWNrLCBhc3luYyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwdWJsaXNoOiBmdW5jdGlvbihldmVudE5hbWUsIGRhdGEpIHtcclxuICAgICAgICAgICAgdmFyIGV2ZW50ID0gZ2V0RXZlbnQoZXZlbnROYW1lKSxcclxuICAgICAgICAgICAgICAgIHN1YnNjcmliZXJzID0gZXZlbnQuc3Vic2NyaWJlcnM7XHJcblxyXG4gICAgICAgICAgICBldmVudC5zdWJzY3JpYmVycyA9IHN1YnNjcmliZXJzLmZpbHRlcihmdW5jdGlvbihzdWJzY3JpYmVyKSB7XHJcbiAgICAgICAgICAgICAgICBwdWJsaXNoU3Vic2NyaXB0aW9uKHN1YnNjcmliZXIsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICFzdWJzY3JpYmVyLm9uY2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25jZTogZnVuY3Rpb24oZXZlbnQsIGNhbGxiYWNrLCBhc3luYykge1xyXG4gICAgICAgICAgICBzdWJzY3JpYmUoZXZlbnQsIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcclxuICAgICAgICAgICAgICAgIGFzeW5jOiBhc3luYyxcclxuICAgICAgICAgICAgICAgIG9uY2U6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB1bnN1YnNjcmliZTogZnVuY3Rpb24oZXZlbnROYW1lLCBjYWxsYmFjaykge1xyXG4gICAgICAgICAgICB2YXIgZXZlbnQ7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXZlbnROYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudCA9IGdldEV2ZW50KGV2ZW50TmFtZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgJiYgY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICBldmVudC5zdWJzY3JpYmVycyA9IGV2ZW50LnN1YnNjcmliZXJzLmZpbHRlcihmdW5jdGlvbihzdWJzY3JpYmVyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIuY2FsbGJhY2sgIT09IGNhbGxiYWNrO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBldmVudC5zdWJzY3JpYmVycyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJFdmVudHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn0pKCk7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbW1vbi9ldmVudHMuanNcbiAqKi8iLCIvKipcclxuICogQ29uc3RydWN0IHJlcHJlc2VudGluZyBhIHBhcnQgb2YgYW5vdGhlciB7SW1hZ2VXcmFwcGVyfS4gU2hhcmVzIGRhdGFcclxuICogYmV0d2VlbiB0aGUgcGFyZW50IGFuZCB0aGUgY2hpbGQuXHJcbiAqIEBwYXJhbSBmcm9tIHtJbWFnZVJlZn0gVGhlIHBvc2l0aW9uIHdoZXJlIHRvIHN0YXJ0IHRoZSB7U3ViSW1hZ2V9IGZyb20uICh0b3AtbGVmdCBjb3JuZXIpXHJcbiAqIEBwYXJhbSBzaXplIHtJbWFnZVJlZn0gVGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBpbWFnZVxyXG4gKiBAcGFyYW0gSSB7SW1hZ2VXcmFwcGVyfSBUaGUge0ltYWdlV3JhcHBlcn0gdG8gc2hhcmUgZnJvbVxyXG4gKiBAcmV0dXJucyB7U3ViSW1hZ2V9IEEgc2hhcmVkIHBhcnQgb2YgdGhlIG9yaWdpbmFsIGltYWdlXHJcbiAqL1xyXG5mdW5jdGlvbiBTdWJJbWFnZShmcm9tLCBzaXplLCBJKSB7XHJcbiAgICBpZiAoIUkpIHtcclxuICAgICAgICBJID0ge1xyXG4gICAgICAgICAgICBkYXRhOiBudWxsLFxyXG4gICAgICAgICAgICBzaXplOiBzaXplXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0YSA9IEkuZGF0YTtcclxuICAgIHRoaXMub3JpZ2luYWxTaXplID0gSS5zaXplO1xyXG4gICAgdGhpcy5JID0gSTtcclxuXHJcbiAgICB0aGlzLmZyb20gPSBmcm9tO1xyXG4gICAgdGhpcy5zaXplID0gc2l6ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERpc3BsYXlzIHRoZSB7U3ViSW1hZ2V9IGluIGEgZ2l2ZW4gY2FudmFzXHJcbiAqIEBwYXJhbSBjYW52YXMge0NhbnZhc30gVGhlIGNhbnZhcyBlbGVtZW50IHRvIHdyaXRlIHRvXHJcbiAqIEBwYXJhbSBzY2FsZSB7TnVtYmVyfSBTY2FsZSB3aGljaCBpcyBhcHBsaWVkIHRvIGVhY2ggcGl4ZWwtdmFsdWVcclxuICovXHJcblN1YkltYWdlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oY2FudmFzLCBzY2FsZSkge1xyXG4gICAgdmFyIGN0eCxcclxuICAgICAgICBmcmFtZSxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGN1cnJlbnQsXHJcbiAgICAgICAgeSxcclxuICAgICAgICB4LFxyXG4gICAgICAgIHBpeGVsO1xyXG5cclxuICAgIGlmICghc2NhbGUpIHtcclxuICAgICAgICBzY2FsZSA9IDEuMDtcclxuICAgIH1cclxuICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY2FudmFzLndpZHRoID0gdGhpcy5zaXplLng7XHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gdGhpcy5zaXplLnk7XHJcbiAgICBmcmFtZSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcclxuICAgIGRhdGEgPSBmcmFtZS5kYXRhO1xyXG4gICAgY3VycmVudCA9IDA7XHJcbiAgICBmb3IgKHkgPSAwOyB5IDwgdGhpcy5zaXplLnk7IHkrKykge1xyXG4gICAgICAgIGZvciAoeCA9IDA7IHggPCB0aGlzLnNpemUueDsgeCsrKSB7XHJcbiAgICAgICAgICAgIHBpeGVsID0geSAqIHRoaXMuc2l6ZS54ICsgeDtcclxuICAgICAgICAgICAgY3VycmVudCA9IHRoaXMuZ2V0KHgsIHkpICogc2NhbGU7XHJcbiAgICAgICAgICAgIGRhdGFbcGl4ZWwgKiA0ICsgMF0gPSBjdXJyZW50O1xyXG4gICAgICAgICAgICBkYXRhW3BpeGVsICogNCArIDFdID0gY3VycmVudDtcclxuICAgICAgICAgICAgZGF0YVtwaXhlbCAqIDQgKyAyXSA9IGN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGRhdGFbcGl4ZWwgKiA0ICsgM10gPSAyNTU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZnJhbWUuZGF0YSA9IGRhdGE7XHJcbiAgICBjdHgucHV0SW1hZ2VEYXRhKGZyYW1lLCAwLCAwKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXRyaWV2ZXMgYSBnaXZlbiBwaXhlbCBwb3NpdGlvbiBmcm9tIHRoZSB7U3ViSW1hZ2V9XHJcbiAqIEBwYXJhbSB4IHtOdW1iZXJ9IFRoZSB4LXBvc2l0aW9uXHJcbiAqIEBwYXJhbSB5IHtOdW1iZXJ9IFRoZSB5LXBvc2l0aW9uXHJcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBncmF5c2NhbGUgdmFsdWUgYXQgdGhlIHBpeGVsLXBvc2l0aW9uXHJcbiAqL1xyXG5TdWJJbWFnZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oeCwgeSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVsodGhpcy5mcm9tLnkgKyB5KSAqIHRoaXMub3JpZ2luYWxTaXplLnggKyB0aGlzLmZyb20ueCArIHhdO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFVwZGF0ZXMgdGhlIHVuZGVybHlpbmcgZGF0YSBmcm9tIGEgZ2l2ZW4ge0ltYWdlV3JhcHBlcn1cclxuICogQHBhcmFtIGltYWdlIHtJbWFnZVdyYXBwZXJ9IFRoZSB1cGRhdGVkIGltYWdlXHJcbiAqL1xyXG5TdWJJbWFnZS5wcm90b3R5cGUudXBkYXRlRGF0YSA9IGZ1bmN0aW9uKGltYWdlKSB7XHJcbiAgICB0aGlzLm9yaWdpbmFsU2l6ZSA9IGltYWdlLnNpemU7XHJcbiAgICB0aGlzLmRhdGEgPSBpbWFnZS5kYXRhO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBzaGFyZWQgYXJlYVxyXG4gKiBAcGFyYW0gZnJvbSB7eCx5fSBUaGUgbmV3IGxvY2F0aW9uXHJcbiAqIEByZXR1cm5zIHtTdWJJbWFnZX0gcmV0dXJucyB7dGhpc30gZm9yIHBvc3NpYmxlIGNoYWluaW5nXHJcbiAqL1xyXG5TdWJJbWFnZS5wcm90b3R5cGUudXBkYXRlRnJvbSA9IGZ1bmN0aW9uKGZyb20pIHtcclxuICAgIHRoaXMuZnJvbSA9IGZyb207XHJcbiAgICByZXR1cm4gdGhpcztcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IChTdWJJbWFnZSk7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbW1vbi9zdWJJbWFnZS5qc1xuICoqLyIsIi8qXHJcbiAqIHR5cGVkZWZzLmpzXHJcbiAqIE5vcm1hbGl6ZXMgYnJvd3Nlci1zcGVjaWZpYyBwcmVmaXhlc1xyXG4gKi9cclxuXHJcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgd2luZG93LnJlcXVlc3RBbmltRnJhbWUgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8XHJcbiAgICAgICAgICAgIHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcclxuICAgICAgICAgICAgd2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fFxyXG4gICAgICAgICAgICB3aW5kb3cub1JlcXVlc3RBbmltYXRpb25GcmFtZSB8fFxyXG4gICAgICAgICAgICB3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKC8qIGZ1bmN0aW9uIEZyYW1lUmVxdWVzdENhbGxiYWNrICovIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMTAwMCAvIDYwKTtcclxuICAgICAgICAgICAgfTtcclxuICAgIH0pKCk7XHJcbn1cclxuTWF0aC5pbXVsID0gTWF0aC5pbXVsIHx8IGZ1bmN0aW9uKGEsIGIpIHtcclxuICAgIHZhciBhaCA9IChhID4+PiAxNikgJiAweGZmZmYsXHJcbiAgICAgICAgYWwgPSBhICYgMHhmZmZmLFxyXG4gICAgICAgIGJoID0gKGIgPj4+IDE2KSAmIDB4ZmZmZixcclxuICAgICAgICBibCA9IGIgJiAweGZmZmY7XHJcbiAgICAvLyB0aGUgc2hpZnQgYnkgMCBmaXhlcyB0aGUgc2lnbiBvbiB0aGUgaGlnaCBwYXJ0XHJcbiAgICAvLyB0aGUgZmluYWwgfDAgY29udmVydHMgdGhlIHVuc2lnbmVkIHZhbHVlIGludG8gYSBzaWduZWQgdmFsdWVcclxuICAgIHJldHVybiAoKGFsICogYmwpICsgKCgoYWggKiBibCArIGFsICogYmgpIDw8IDE2KSA+Pj4gMCkgfCAwKTtcclxufTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tbW9uL3R5cGVkZWZzLmpzXG4gKiovIiwibW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBpbnB1dFN0cmVhbToge1xyXG4gICAgICAgIG5hbWU6IFwiTGl2ZVwiLFxyXG4gICAgICAgIHR5cGU6IFwiTGl2ZVN0cmVhbVwiLFxyXG4gICAgICAgIGNvbnN0cmFpbnRzOiB7XHJcbiAgICAgICAgICAgIHdpZHRoOiA2NDAsXHJcbiAgICAgICAgICAgIGhlaWdodDogNDgwLFxyXG4gICAgICAgICAgICAvLyBhc3BlY3RSYXRpbzogNjQwLzQ4MCwgLy8gb3B0aW9uYWxcclxuICAgICAgICAgICAgZmFjaW5nTW9kZTogXCJlbnZpcm9ubWVudFwiLCAvLyBvciB1c2VyXHJcbiAgICAgICAgICAgIC8vIGRldmljZUlkOiBcIjM4NzQ1OTgzNDU3Mzg3NTk4Mzc1OTgzNzU5ODM0XCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFyZWE6IHtcclxuICAgICAgICAgICAgdG9wOiBcIjAlXCIsXHJcbiAgICAgICAgICAgIHJpZ2h0OiBcIjAlXCIsXHJcbiAgICAgICAgICAgIGxlZnQ6IFwiMCVcIixcclxuICAgICAgICAgICAgYm90dG9tOiBcIjAlXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNpbmdsZUNoYW5uZWw6IGZhbHNlIC8vIHRydWU6IG9ubHkgdGhlIHJlZCBjb2xvci1jaGFubmVsIGlzIHJlYWRcclxuICAgIH0sXHJcbiAgICBsb2NhdGU6IHRydWUsXHJcbiAgICBudW1PZldvcmtlcnM6IDAsXHJcbiAgICBkZWNvZGVyOiB7XHJcbiAgICAgICAgcmVhZGVyczogW1xyXG4gICAgICAgICAgICAnY29kZV8xMjhfcmVhZGVyJ1xyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGVidWc6IHtcclxuICAgICAgICAgICAgZHJhd0JvdW5kaW5nQm94OiBmYWxzZSxcclxuICAgICAgICAgICAgc2hvd0ZyZXF1ZW5jeTogZmFsc2UsXHJcbiAgICAgICAgICAgIGRyYXdTY2FubGluZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNob3dQYXR0ZXJuOiBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBsb2NhdG9yOiB7XHJcbiAgICAgICAgaGFsZlNhbXBsZTogdHJ1ZSxcclxuICAgICAgICBwYXRjaFNpemU6IFwibWVkaXVtXCIsIC8vIHgtc21hbGwsIHNtYWxsLCBtZWRpdW0sIGxhcmdlLCB4LWxhcmdlXHJcbiAgICAgICAgZGVidWc6IHtcclxuICAgICAgICAgICAgc2hvd0NhbnZhczogZmFsc2UsXHJcbiAgICAgICAgICAgIHNob3dQYXRjaGVzOiBmYWxzZSxcclxuICAgICAgICAgICAgc2hvd0ZvdW5kUGF0Y2hlczogZmFsc2UsXHJcbiAgICAgICAgICAgIHNob3dTa2VsZXRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHNob3dMYWJlbHM6IGZhbHNlLFxyXG4gICAgICAgICAgICBzaG93UGF0Y2hMYWJlbHM6IGZhbHNlLFxyXG4gICAgICAgICAgICBzaG93UmVtYWluaW5nUGF0Y2hMYWJlbHM6IGZhbHNlLFxyXG4gICAgICAgICAgICBib3hGcm9tUGF0Y2hlczoge1xyXG4gICAgICAgICAgICAgICAgc2hvd1RyYW5zZm9ybWVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNob3dUcmFuc2Zvcm1lZEJveDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBzaG93QkI6IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbmZpZy9jb25maWcuZGV2LmpzXG4gKiovIiwibGV0IGNvbmZpZztcclxuXHJcbmlmIChFTlYuZGV2ZWxvcG1lbnQpe1xyXG4gICAgY29uZmlnID0gcmVxdWlyZSgnLi9jb25maWcuZGV2LmpzJyk7XHJcbn0gZWxzZSBpZiAoRU5WLm5vZGUpIHtcclxuICAgIGNvbmZpZyA9IHJlcXVpcmUoJy4vY29uZmlnLm5vZGUuanMnKTtcclxufSBlbHNlIHtcclxuICAgIGNvbmZpZyA9IHJlcXVpcmUoJy4vY29uZmlnLnByb2QuanMnKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY29uZmlnO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb25maWcvY29uZmlnLmpzXG4gKiovIiwiaW1wb3J0IEJyZXNlbmhhbSBmcm9tICcuL2JyZXNlbmhhbSc7XHJcbmltcG9ydCBJbWFnZURlYnVnIGZyb20gJy4uL2NvbW1vbi9pbWFnZV9kZWJ1Zyc7XHJcbmltcG9ydCBDb2RlMTI4UmVhZGVyIGZyb20gJy4uL3JlYWRlci9jb2RlXzEyOF9yZWFkZXInO1xyXG5pbXBvcnQgRUFOUmVhZGVyIGZyb20gJy4uL3JlYWRlci9lYW5fcmVhZGVyJztcclxuaW1wb3J0IENvZGUzOVJlYWRlciBmcm9tICcuLi9yZWFkZXIvY29kZV8zOV9yZWFkZXInO1xyXG5pbXBvcnQgQ29kZTM5VklOUmVhZGVyIGZyb20gJy4uL3JlYWRlci9jb2RlXzM5X3Zpbl9yZWFkZXInO1xyXG5pbXBvcnQgQ29kYWJhclJlYWRlciBmcm9tICcuLi9yZWFkZXIvY29kYWJhcl9yZWFkZXInO1xyXG5pbXBvcnQgVVBDUmVhZGVyIGZyb20gJy4uL3JlYWRlci91cGNfcmVhZGVyJztcclxuaW1wb3J0IEVBTjhSZWFkZXIgZnJvbSAnLi4vcmVhZGVyL2Vhbl84X3JlYWRlcic7XHJcbmltcG9ydCBFQU4yUmVhZGVyIGZyb20gJy4uL3JlYWRlci9lYW5fMl9yZWFkZXInO1xyXG5pbXBvcnQgRUFONVJlYWRlciBmcm9tICcuLi9yZWFkZXIvZWFuXzVfcmVhZGVyJztcclxuaW1wb3J0IFVQQ0VSZWFkZXIgZnJvbSAnLi4vcmVhZGVyL3VwY19lX3JlYWRlcic7XHJcbmltcG9ydCBJMm9mNVJlYWRlciBmcm9tICcuLi9yZWFkZXIvaTJvZjVfcmVhZGVyJztcclxuXHJcbmNvbnN0IFJFQURFUlMgPSB7XHJcbiAgICBjb2RlXzEyOF9yZWFkZXI6IENvZGUxMjhSZWFkZXIsXHJcbiAgICBlYW5fcmVhZGVyOiBFQU5SZWFkZXIsXHJcbiAgICBlYW5fNV9yZWFkZXI6IEVBTjVSZWFkZXIsXHJcbiAgICBlYW5fMl9yZWFkZXI6IEVBTjJSZWFkZXIsXHJcbiAgICBlYW5fOF9yZWFkZXI6IEVBTjhSZWFkZXIsXHJcbiAgICBjb2RlXzM5X3JlYWRlcjogQ29kZTM5UmVhZGVyLFxyXG4gICAgY29kZV8zOV92aW5fcmVhZGVyOiBDb2RlMzlWSU5SZWFkZXIsXHJcbiAgICBjb2RhYmFyX3JlYWRlcjogQ29kYWJhclJlYWRlcixcclxuICAgIHVwY19yZWFkZXI6IFVQQ1JlYWRlcixcclxuICAgIHVwY19lX3JlYWRlcjogVVBDRVJlYWRlcixcclxuICAgIGkyb2Y1X3JlYWRlcjogSTJvZjVSZWFkZXJcclxufTtcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgY3JlYXRlOiBmdW5jdGlvbihjb25maWcsIGlucHV0SW1hZ2VXcmFwcGVyKSB7XHJcbiAgICAgICAgdmFyIF9jYW52YXMgPSB7XHJcbiAgICAgICAgICAgICAgICBjdHg6IHtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3k6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5OiBudWxsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZG9tOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZnJlcXVlbmN5OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheTogbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBfYmFyY29kZVJlYWRlcnMgPSBbXTtcclxuXHJcbiAgICAgICAgaW5pdENhbnZhcygpO1xyXG4gICAgICAgIGluaXRSZWFkZXJzKCk7XHJcbiAgICAgICAgaW5pdENvbmZpZygpO1xyXG5cclxuICAgICAgICBmdW5jdGlvbiBpbml0Q2FudmFzKCkge1xyXG4gICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIHZhciAkZGVidWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2RlYnVnLmRldGVjdGlvblwiKTtcclxuICAgICAgICAgICAgICAgIF9jYW52YXMuZG9tLmZyZXF1ZW5jeSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJjYW52YXMuZnJlcXVlbmN5XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfY2FudmFzLmRvbS5mcmVxdWVuY3kpIHtcclxuICAgICAgICAgICAgICAgICAgICBfY2FudmFzLmRvbS5mcmVxdWVuY3kgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9jYW52YXMuZG9tLmZyZXF1ZW5jeS5jbGFzc05hbWUgPSBcImZyZXF1ZW5jeVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGRlYnVnLmFwcGVuZENoaWxkKF9jYW52YXMuZG9tLmZyZXF1ZW5jeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgX2NhbnZhcy5jdHguZnJlcXVlbmN5ID0gX2NhbnZhcy5kb20uZnJlcXVlbmN5LmdldENvbnRleHQoXCIyZFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBfY2FudmFzLmRvbS5wYXR0ZXJuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImNhbnZhcy5wYXR0ZXJuQnVmZmVyXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfY2FudmFzLmRvbS5wYXR0ZXJuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NhbnZhcy5kb20ucGF0dGVybiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NhbnZhcy5kb20ucGF0dGVybi5jbGFzc05hbWUgPSBcInBhdHRlcm5CdWZmZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRkZWJ1Zy5hcHBlbmRDaGlsZChfY2FudmFzLmRvbS5wYXR0ZXJuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfY2FudmFzLmN0eC5wYXR0ZXJuID0gX2NhbnZhcy5kb20ucGF0dGVybi5nZXRDb250ZXh0KFwiMmRcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgX2NhbnZhcy5kb20ub3ZlcmxheSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJjYW52YXMuZHJhd2luZ0J1ZmZlclwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChfY2FudmFzLmRvbS5vdmVybGF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NhbnZhcy5jdHgub3ZlcmxheSA9IF9jYW52YXMuZG9tLm92ZXJsYXkuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiBpbml0UmVhZGVycygpIHtcclxuICAgICAgICAgICAgY29uZmlnLnJlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihyZWFkZXJDb25maWcpIHtcclxuICAgICAgICAgICAgICAgIHZhciByZWFkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIHN1cHBsZW1lbnRzID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZWFkZXJDb25maWcgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyID0gcmVhZGVyQ29uZmlnLmZvcm1hdDtcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gcmVhZGVyQ29uZmlnLmNvbmZpZztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlYWRlckNvbmZpZyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSByZWFkZXJDb25maWc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJCZWZvcmUgcmVnaXN0ZXJpbmcgcmVhZGVyOiBcIiwgcmVhZGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnN1cHBsZW1lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VwcGxlbWVudHMgPSBjb25maWd1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdXBwbGVtZW50cy5tYXAoKHN1cHBsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUkVBREVSU1tzdXBwbGVtZW50XSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9iYXJjb2RlUmVhZGVycy5wdXNoKG5ldyBSRUFERVJTW3JlYWRlcl0oY29uZmlndXJhdGlvbiwgc3VwcGxlbWVudHMpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVnaXN0ZXJlZCBSZWFkZXJzOiBcIiArIF9iYXJjb2RlUmVhZGVyc1xyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHJlYWRlcikgPT4gSlNPTi5zdHJpbmdpZnkoe2Zvcm1hdDogcmVhZGVyLkZPUk1BVCwgY29uZmlnOiByZWFkZXIuY29uZmlnfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiBpbml0Q29uZmlnKCkge1xyXG4gICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpLFxyXG4gICAgICAgICAgICAgICAgICAgIHZpcyA9IFt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IF9jYW52YXMuZG9tLmZyZXF1ZW5jeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcDogY29uZmlnLmRlYnVnLnNob3dGcmVxdWVuY3lcclxuICAgICAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IF9jYW52YXMuZG9tLnBhdHRlcm4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3A6IGNvbmZpZy5kZWJ1Zy5zaG93UGF0dGVyblxyXG4gICAgICAgICAgICAgICAgICAgIH1dO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2aXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmlzW2ldLnByb3AgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzW2ldLm5vZGUuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNbaV0ubm9kZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBleHRlbmQgdGhlIGxpbmUgb24gYm90aCBlbmRzXHJcbiAgICAgICAgICogQHBhcmFtIHtBcnJheX0gbGluZVxyXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBhbmdsZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGZ1bmN0aW9uIGdldEV4dGVuZGVkTGluZShsaW5lLCBhbmdsZSwgZXh0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGV4dGVuZExpbmUoYW1vdW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXh0ZW5zaW9uID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHk6IGFtb3VudCAqIE1hdGguc2luKGFuZ2xlKSxcclxuICAgICAgICAgICAgICAgICAgICB4OiBhbW91bnQgKiBNYXRoLmNvcyhhbmdsZSlcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgbGluZVswXS55IC09IGV4dGVuc2lvbi55O1xyXG4gICAgICAgICAgICAgICAgbGluZVswXS54IC09IGV4dGVuc2lvbi54O1xyXG4gICAgICAgICAgICAgICAgbGluZVsxXS55ICs9IGV4dGVuc2lvbi55O1xyXG4gICAgICAgICAgICAgICAgbGluZVsxXS54ICs9IGV4dGVuc2lvbi54O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBjaGVjayBpZiBpbnNpZGUgaW1hZ2VcclxuICAgICAgICAgICAgZXh0ZW5kTGluZShleHQpO1xyXG4gICAgICAgICAgICB3aGlsZSAoZXh0ID4gMSAmJiAoIWlucHV0SW1hZ2VXcmFwcGVyLmluSW1hZ2VXaXRoQm9yZGVyKGxpbmVbMF0sIDApXHJcbiAgICAgICAgICAgICAgICAgICAgfHwgIWlucHV0SW1hZ2VXcmFwcGVyLmluSW1hZ2VXaXRoQm9yZGVyKGxpbmVbMV0sIDApKSkge1xyXG4gICAgICAgICAgICAgICAgZXh0IC09IE1hdGguY2VpbChleHQgLyAyKTtcclxuICAgICAgICAgICAgICAgIGV4dGVuZExpbmUoLWV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGxpbmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiBnZXRMaW5lKGJveCkge1xyXG4gICAgICAgICAgICByZXR1cm4gW3tcclxuICAgICAgICAgICAgICAgIHg6IChib3hbMV1bMF0gLSBib3hbMF1bMF0pIC8gMiArIGJveFswXVswXSxcclxuICAgICAgICAgICAgICAgIHk6IChib3hbMV1bMV0gLSBib3hbMF1bMV0pIC8gMiArIGJveFswXVsxXVxyXG4gICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICB4OiAoYm94WzNdWzBdIC0gYm94WzJdWzBdKSAvIDIgKyBib3hbMl1bMF0sXHJcbiAgICAgICAgICAgICAgICB5OiAoYm94WzNdWzFdIC0gYm94WzJdWzFdKSAvIDIgKyBib3hbMl1bMV1cclxuICAgICAgICAgICAgfV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiB0cnlEZWNvZGUobGluZSkge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbCxcclxuICAgICAgICAgICAgICAgIGksXHJcbiAgICAgICAgICAgICAgICBiYXJjb2RlTGluZSA9IEJyZXNlbmhhbS5nZXRCYXJjb2RlTGluZShpbnB1dEltYWdlV3JhcHBlciwgbGluZVswXSwgbGluZVsxXSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIGNvbmZpZy5kZWJ1Zy5zaG93RnJlcXVlbmN5KSB7XHJcbiAgICAgICAgICAgICAgICBJbWFnZURlYnVnLmRyYXdQYXRoKGxpbmUsIHt4OiAneCcsIHk6ICd5J30sIF9jYW52YXMuY3R4Lm92ZXJsYXksIHtjb2xvcjogJ3JlZCcsIGxpbmVXaWR0aDogM30pO1xyXG4gICAgICAgICAgICAgICAgQnJlc2VuaGFtLmRlYnVnLnByaW50RnJlcXVlbmN5KGJhcmNvZGVMaW5lLmxpbmUsIF9jYW52YXMuZG9tLmZyZXF1ZW5jeSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEJyZXNlbmhhbS50b0JpbmFyeUxpbmUoYmFyY29kZUxpbmUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiBjb25maWcuZGVidWcuc2hvd1BhdHRlcm4pIHtcclxuICAgICAgICAgICAgICAgIEJyZXNlbmhhbS5kZWJ1Zy5wcmludFBhdHRlcm4oYmFyY29kZUxpbmUubGluZSwgX2NhbnZhcy5kb20ucGF0dGVybik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgX2JhcmNvZGVSZWFkZXJzLmxlbmd0aCAmJiByZXN1bHQgPT09IG51bGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gX2JhcmNvZGVSZWFkZXJzW2ldLmRlY29kZVBhdHRlcm4oYmFyY29kZUxpbmUubGluZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgY29kZVJlc3VsdDogcmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgYmFyY29kZUxpbmU6IGJhcmNvZGVMaW5lXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBUaGlzIG1ldGhvZCBzbGljZXMgdGhlIGdpdmVuIGFyZWEgYXBhcnQgYW5kIHRyaWVzIHRvIGRldGVjdCBhIGJhcmNvZGUtcGF0dGVyblxyXG4gICAgICAgICAqIGZvciBlYWNoIHNsaWNlLiBJdCByZXR1cm5zIHRoZSBkZWNvZGVkIGJhcmNvZGUsIG9yIG51bGwgaWYgbm90aGluZyB3YXMgZm91bmRcclxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBib3hcclxuICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBsaW5lXHJcbiAgICAgICAgICogQHBhcmFtIHtOdW1iZXJ9IGxpbmVBbmdsZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGZ1bmN0aW9uIHRyeURlY29kZUJydXRlRm9yY2UoYm94LCBsaW5lLCBsaW5lQW5nbGUpIHtcclxuICAgICAgICAgICAgdmFyIHNpZGVMZW5ndGggPSBNYXRoLnNxcnQoTWF0aC5wb3coYm94WzFdWzBdIC0gYm94WzBdWzBdLCAyKSArIE1hdGgucG93KChib3hbMV1bMV0gLSBib3hbMF1bMV0pLCAyKSksXHJcbiAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgc2xpY2VzID0gMTYsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgZGlyLFxyXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uLFxyXG4gICAgICAgICAgICAgICAgeGRpciA9IE1hdGguc2luKGxpbmVBbmdsZSksXHJcbiAgICAgICAgICAgICAgICB5ZGlyID0gTWF0aC5jb3MobGluZUFuZ2xlKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoIGkgPSAxOyBpIDwgc2xpY2VzICYmIHJlc3VsdCA9PT0gbnVsbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBtb3ZlIGxpbmUgcGVycGVuZGljdWxhciB0byBhbmdsZVxyXG4gICAgICAgICAgICAgICAgZGlyID0gc2lkZUxlbmd0aCAvIHNsaWNlcyAqIGkgKiAoaSAlIDIgPT09IDAgPyAtMSA6IDEpO1xyXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHk6IGRpciAqIHhkaXIsXHJcbiAgICAgICAgICAgICAgICAgICAgeDogZGlyICogeWRpclxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGxpbmVbMF0ueSArPSBleHRlbnNpb24ueDtcclxuICAgICAgICAgICAgICAgIGxpbmVbMF0ueCAtPSBleHRlbnNpb24ueTtcclxuICAgICAgICAgICAgICAgIGxpbmVbMV0ueSArPSBleHRlbnNpb24ueDtcclxuICAgICAgICAgICAgICAgIGxpbmVbMV0ueCAtPSBleHRlbnNpb24ueTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnlEZWNvZGUobGluZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldExpbmVMZW5ndGgobGluZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KFxyXG4gICAgICAgICAgICAgICAgTWF0aC5wb3coTWF0aC5hYnMobGluZVsxXS55IC0gbGluZVswXS55KSwgMikgK1xyXG4gICAgICAgICAgICAgICAgTWF0aC5wb3coTWF0aC5hYnMobGluZVsxXS54IC0gbGluZVswXS54KSwgMikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogV2l0aCB0aGUgaGVscCBvZiB0aGUgY29uZmlndXJlZCByZWFkZXJzIChDb2RlMTI4IG9yIEVBTikgdGhpcyBmdW5jdGlvbiB0cmllcyB0byBkZXRlY3QgYVxyXG4gICAgICAgICAqIHZhbGlkIGJhcmNvZGUgcGF0dGVybiB3aXRoaW4gdGhlIGdpdmVuIGFyZWEuXHJcbiAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGJveCBUaGUgYXJlYSB0byBzZWFyY2ggaW5cclxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSB0aGUgcmVzdWx0IHtjb2RlUmVzdWx0LCBsaW5lLCBhbmdsZSwgcGF0dGVybiwgdGhyZXNob2xkfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGZ1bmN0aW9uIGRlY29kZUZyb21Cb3VuZGluZ0JveChib3gpIHtcclxuICAgICAgICAgICAgdmFyIGxpbmUsXHJcbiAgICAgICAgICAgICAgICBsaW5lQW5nbGUsXHJcbiAgICAgICAgICAgICAgICBjdHggPSBfY2FudmFzLmN0eC5vdmVybGF5LFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0LFxyXG4gICAgICAgICAgICAgICAgbGluZUxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcuZGVidWcuZHJhd0JvdW5kaW5nQm94ICYmIGN0eCkge1xyXG4gICAgICAgICAgICAgICAgICAgIEltYWdlRGVidWcuZHJhd1BhdGgoYm94LCB7eDogMCwgeTogMX0sIGN0eCwge2NvbG9yOiBcImJsdWVcIiwgbGluZVdpZHRoOiAyfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxpbmUgPSBnZXRMaW5lKGJveCk7XHJcbiAgICAgICAgICAgIGxpbmVMZW5ndGggPSBnZXRMaW5lTGVuZ3RoKGxpbmUpO1xyXG4gICAgICAgICAgICBsaW5lQW5nbGUgPSBNYXRoLmF0YW4yKGxpbmVbMV0ueSAtIGxpbmVbMF0ueSwgbGluZVsxXS54IC0gbGluZVswXS54KTtcclxuICAgICAgICAgICAgbGluZSA9IGdldEV4dGVuZGVkTGluZShsaW5lLCBsaW5lQW5nbGUsIE1hdGguZmxvb3IobGluZUxlbmd0aCAqIDAuMSkpO1xyXG4gICAgICAgICAgICBpZiAobGluZSA9PT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzdWx0ID0gdHJ5RGVjb2RlKGxpbmUpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnlEZWNvZGVCcnV0ZUZvcmNlKGJveCwgbGluZSwgbGluZUFuZ2xlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgcmVzdWx0ICYmIGNvbmZpZy5kZWJ1Zy5kcmF3U2NhbmxpbmUgJiYgY3R4KSB7XHJcbiAgICAgICAgICAgICAgICBJbWFnZURlYnVnLmRyYXdQYXRoKGxpbmUsIHt4OiAneCcsIHk6ICd5J30sIGN0eCwge2NvbG9yOiAncmVkJywgbGluZVdpZHRoOiAzfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBjb2RlUmVzdWx0OiByZXN1bHQuY29kZVJlc3VsdCxcclxuICAgICAgICAgICAgICAgIGxpbmU6IGxpbmUsXHJcbiAgICAgICAgICAgICAgICBhbmdsZTogbGluZUFuZ2xlLFxyXG4gICAgICAgICAgICAgICAgcGF0dGVybjogcmVzdWx0LmJhcmNvZGVMaW5lLmxpbmUsXHJcbiAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IHJlc3VsdC5iYXJjb2RlTGluZS50aHJlc2hvbGRcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRlY29kZUZyb21Cb3VuZGluZ0JveDogZnVuY3Rpb24oYm94KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVjb2RlRnJvbUJvdW5kaW5nQm94KGJveCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRlY29kZUZyb21Cb3VuZGluZ0JveGVzOiBmdW5jdGlvbihib3hlcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGksIHJlc3VsdCxcclxuICAgICAgICAgICAgICAgICAgICBiYXJjb2RlcyA9IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlID0gY29uZmlnLm11bHRpcGxlO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgYm94ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib3ggPSBib3hlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBkZWNvZGVGcm9tQm91bmRpbmdCb3goYm94KSB8fCB7fTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQuYm94ID0gYm94O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFyY29kZXMucHVzaChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LmNvZGVSZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFyY29kZXNcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXRSZWFkZXJzOiBmdW5jdGlvbihyZWFkZXJzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWcucmVhZGVycyA9IHJlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICBfYmFyY29kZVJlYWRlcnMubGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgIGluaXRSZWFkZXJzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9kZWNvZGVyL2JhcmNvZGVfZGVjb2Rlci5qc1xuICoqLyIsImltcG9ydCBJbWFnZVdyYXBwZXIgZnJvbSAnLi4vY29tbW9uL2ltYWdlX3dyYXBwZXInO1xyXG5cclxudmFyIEJyZXNlbmhhbSA9IHt9O1xyXG5cclxudmFyIFNsb3BlID0ge1xyXG4gICAgRElSOiB7XHJcbiAgICAgICAgVVA6IDEsXHJcbiAgICAgICAgRE9XTjogLTFcclxuICAgIH1cclxufTtcclxuLyoqXHJcbiAqIFNjYW5zIGEgbGluZSBvZiB0aGUgZ2l2ZW4gaW1hZ2UgZnJvbSBwb2ludCBwMSB0byBwMiBhbmQgcmV0dXJucyBhIHJlc3VsdCBvYmplY3QgY29udGFpbmluZ1xyXG4gKiBncmF5LXNjYWxlIHZhbHVlcyAoMC0yNTUpIG9mIHRoZSB1bmRlcmx5aW5nIHBpeGVscyBpbiBhZGRpdGlvbiB0byB0aGUgbWluXHJcbiAqIGFuZCBtYXggdmFsdWVzLlxyXG4gKiBAcGFyYW0ge09iamVjdH0gaW1hZ2VXcmFwcGVyXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBwMSBUaGUgc3RhcnQgcG9pbnQge3gseX1cclxuICogQHBhcmFtIHtPYmplY3R9IHAyIFRoZSBlbmQgcG9pbnQge3gseX1cclxuICogQHJldHVybnMge2xpbmUsIG1pbiwgbWF4fVxyXG4gKi9cclxuQnJlc2VuaGFtLmdldEJhcmNvZGVMaW5lID0gZnVuY3Rpb24oaW1hZ2VXcmFwcGVyLCBwMSwgcDIpIHtcclxuICAgIHZhciB4MCA9IHAxLnggfCAwLFxyXG4gICAgICAgIHkwID0gcDEueSB8IDAsXHJcbiAgICAgICAgeDEgPSBwMi54IHwgMCxcclxuICAgICAgICB5MSA9IHAyLnkgfCAwLFxyXG4gICAgICAgIHN0ZWVwID0gTWF0aC5hYnMoeTEgLSB5MCkgPiBNYXRoLmFicyh4MSAtIHgwKSxcclxuICAgICAgICBkZWx0YXgsXHJcbiAgICAgICAgZGVsdGF5LFxyXG4gICAgICAgIGVycm9yLFxyXG4gICAgICAgIHlzdGVwLFxyXG4gICAgICAgIHksXHJcbiAgICAgICAgdG1wLFxyXG4gICAgICAgIHgsXHJcbiAgICAgICAgbGluZSA9IFtdLFxyXG4gICAgICAgIGltYWdlRGF0YSA9IGltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgIHdpZHRoID0gaW1hZ2VXcmFwcGVyLnNpemUueCxcclxuICAgICAgICBzdW0gPSAwLFxyXG4gICAgICAgIHZhbCxcclxuICAgICAgICBtaW4gPSAyNTUsXHJcbiAgICAgICAgbWF4ID0gMDtcclxuXHJcbiAgICBmdW5jdGlvbiByZWFkKGEsIGIpIHtcclxuICAgICAgICB2YWwgPSBpbWFnZURhdGFbYiAqIHdpZHRoICsgYV07XHJcbiAgICAgICAgc3VtICs9IHZhbDtcclxuICAgICAgICBtaW4gPSB2YWwgPCBtaW4gPyB2YWwgOiBtaW47XHJcbiAgICAgICAgbWF4ID0gdmFsID4gbWF4ID8gdmFsIDogbWF4O1xyXG4gICAgICAgIGxpbmUucHVzaCh2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGVlcCkge1xyXG4gICAgICAgIHRtcCA9IHgwO1xyXG4gICAgICAgIHgwID0geTA7XHJcbiAgICAgICAgeTAgPSB0bXA7XHJcblxyXG4gICAgICAgIHRtcCA9IHgxO1xyXG4gICAgICAgIHgxID0geTE7XHJcbiAgICAgICAgeTEgPSB0bXA7XHJcbiAgICB9XHJcbiAgICBpZiAoeDAgPiB4MSkge1xyXG4gICAgICAgIHRtcCA9IHgwO1xyXG4gICAgICAgIHgwID0geDE7XHJcbiAgICAgICAgeDEgPSB0bXA7XHJcblxyXG4gICAgICAgIHRtcCA9IHkwO1xyXG4gICAgICAgIHkwID0geTE7XHJcbiAgICAgICAgeTEgPSB0bXA7XHJcbiAgICB9XHJcbiAgICBkZWx0YXggPSB4MSAtIHgwO1xyXG4gICAgZGVsdGF5ID0gTWF0aC5hYnMoeTEgLSB5MCk7XHJcbiAgICBlcnJvciA9IChkZWx0YXggLyAyKSB8IDA7XHJcbiAgICB5ID0geTA7XHJcbiAgICB5c3RlcCA9IHkwIDwgeTEgPyAxIDogLTE7XHJcbiAgICBmb3IgKCB4ID0geDA7IHggPCB4MTsgeCsrKSB7XHJcbiAgICAgICAgaWYgKHN0ZWVwKXtcclxuICAgICAgICAgICAgcmVhZCh5LCB4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZWFkKHgsIHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlcnJvciA9IGVycm9yIC0gZGVsdGF5O1xyXG4gICAgICAgIGlmIChlcnJvciA8IDApIHtcclxuICAgICAgICAgICAgeSA9IHkgKyB5c3RlcDtcclxuICAgICAgICAgICAgZXJyb3IgPSBlcnJvciArIGRlbHRheDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBsaW5lOiBsaW5lLFxyXG4gICAgICAgIG1pbjogbWluLFxyXG4gICAgICAgIG1heDogbWF4XHJcbiAgICB9O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENvbnZlcnRzIHRoZSByZXN1bHQgZnJvbSBnZXRCYXJjb2RlTGluZSBpbnRvIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uXHJcbiAqIGFsc28gY29uc2lkZXJpbmcgdGhlIGZyZXF1ZW5jeSBhbmQgc2xvcGUgb2YgdGhlIHNpZ25hbCBmb3IgbW9yZSByb2J1c3QgcmVzdWx0c1xyXG4gKiBAcGFyYW0ge09iamVjdH0gcmVzdWx0IHtsaW5lLCBtaW4sIG1heH1cclxuICovXHJcbkJyZXNlbmhhbS50b0JpbmFyeUxpbmUgPSBmdW5jdGlvbihyZXN1bHQpIHtcclxuICAgIHZhciBtaW4gPSByZXN1bHQubWluLFxyXG4gICAgICAgIG1heCA9IHJlc3VsdC5tYXgsXHJcbiAgICAgICAgbGluZSA9IHJlc3VsdC5saW5lLFxyXG4gICAgICAgIHNsb3BlLFxyXG4gICAgICAgIHNsb3BlMixcclxuICAgICAgICBjZW50ZXIgPSBtaW4gKyAobWF4IC0gbWluKSAvIDIsXHJcbiAgICAgICAgZXh0cmVtYSA9IFtdLFxyXG4gICAgICAgIGN1cnJlbnREaXIsXHJcbiAgICAgICAgZGlyLFxyXG4gICAgICAgIHRocmVzaG9sZCA9IChtYXggLSBtaW4pIC8gMTIsXHJcbiAgICAgICAgclRocmVzaG9sZCA9IC10aHJlc2hvbGQsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBqO1xyXG5cclxuICAgIC8vIDEuIGZpbmQgZXh0cmVtYVxyXG4gICAgY3VycmVudERpciA9IGxpbmVbMF0gPiBjZW50ZXIgPyBTbG9wZS5ESVIuVVAgOiBTbG9wZS5ESVIuRE9XTjtcclxuICAgIGV4dHJlbWEucHVzaCh7XHJcbiAgICAgICAgcG9zOiAwLFxyXG4gICAgICAgIHZhbDogbGluZVswXVxyXG4gICAgfSk7XHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IGxpbmUubGVuZ3RoIC0gMjsgaSsrKSB7XHJcbiAgICAgICAgc2xvcGUgPSAobGluZVtpICsgMV0gLSBsaW5lW2ldKTtcclxuICAgICAgICBzbG9wZTIgPSAobGluZVtpICsgMl0gLSBsaW5lW2kgKyAxXSk7XHJcbiAgICAgICAgaWYgKChzbG9wZSArIHNsb3BlMikgPCByVGhyZXNob2xkICYmIGxpbmVbaSArIDFdIDwgKGNlbnRlciAqIDEuNSkpIHtcclxuICAgICAgICAgICAgZGlyID0gU2xvcGUuRElSLkRPV047XHJcbiAgICAgICAgfSBlbHNlIGlmICgoc2xvcGUgKyBzbG9wZTIpID4gdGhyZXNob2xkICYmIGxpbmVbaSArIDFdID4gKGNlbnRlciAqIDAuNSkpIHtcclxuICAgICAgICAgICAgZGlyID0gU2xvcGUuRElSLlVQO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRpciA9IGN1cnJlbnREaXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY3VycmVudERpciAhPT0gZGlyKSB7XHJcbiAgICAgICAgICAgIGV4dHJlbWEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwb3M6IGksXHJcbiAgICAgICAgICAgICAgICB2YWw6IGxpbmVbaV1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGN1cnJlbnREaXIgPSBkaXI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZXh0cmVtYS5wdXNoKHtcclxuICAgICAgICBwb3M6IGxpbmUubGVuZ3RoLFxyXG4gICAgICAgIHZhbDogbGluZVtsaW5lLmxlbmd0aCAtIDFdXHJcbiAgICB9KTtcclxuXHJcbiAgICBmb3IgKCBqID0gZXh0cmVtYVswXS5wb3M7IGogPCBleHRyZW1hWzFdLnBvczsgaisrKSB7XHJcbiAgICAgICAgbGluZVtqXSA9IGxpbmVbal0gPiBjZW50ZXIgPyAwIDogMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpdGVyYXRlIG92ZXIgZXh0cmVtYSBhbmQgY29udmVydCB0byBiaW5hcnkgYmFzZWQgb24gYXZnIGJldHdlZW4gbWlubWF4XHJcbiAgICBmb3IgKCBpID0gMTsgaSA8IGV4dHJlbWEubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGV4dHJlbWFbaSArIDFdLnZhbCA+IGV4dHJlbWFbaV0udmFsKSB7XHJcbiAgICAgICAgICAgIHRocmVzaG9sZCA9IChleHRyZW1hW2ldLnZhbCArICgoZXh0cmVtYVtpICsgMV0udmFsIC0gZXh0cmVtYVtpXS52YWwpIC8gMykgKiAyKSB8IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyZXNob2xkID0gKGV4dHJlbWFbaSArIDFdLnZhbCArICgoZXh0cmVtYVtpXS52YWwgLSBleHRyZW1hW2kgKyAxXS52YWwpIC8gMykpIHwgMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoIGogPSBleHRyZW1hW2ldLnBvczsgaiA8IGV4dHJlbWFbaSArIDFdLnBvczsgaisrKSB7XHJcbiAgICAgICAgICAgIGxpbmVbal0gPSBsaW5lW2pdID4gdGhyZXNob2xkID8gMCA6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbGluZTogbGluZSxcclxuICAgICAgICB0aHJlc2hvbGQ6IHRocmVzaG9sZFxyXG4gICAgfTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBVc2VkIGZvciBkZXZlbG9wbWVudCBvbmx5XHJcbiAqL1xyXG5CcmVzZW5oYW0uZGVidWcgPSB7XHJcbiAgICBwcmludEZyZXF1ZW5jeTogZnVuY3Rpb24obGluZSwgY2FudmFzKSB7XHJcbiAgICAgICAgdmFyIGksXHJcbiAgICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gbGluZS5sZW5ndGg7XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IDI1NjtcclxuXHJcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IFwiYmx1ZVwiO1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbGluZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjdHgubW92ZVRvKGksIDI1NSk7XHJcbiAgICAgICAgICAgIGN0eC5saW5lVG8oaSwgMjU1IC0gbGluZVtpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN0eC5zdHJva2UoKTtcclxuICAgICAgICBjdHguY2xvc2VQYXRoKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIHByaW50UGF0dGVybjogZnVuY3Rpb24obGluZSwgY2FudmFzKSB7XHJcbiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIiksIGk7XHJcblxyXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IGxpbmUubGVuZ3RoO1xyXG4gICAgICAgIGN0eC5maWxsQ29sb3IgPSBcImJsYWNrXCI7XHJcbiAgICAgICAgZm9yICggaSA9IDA7IGkgPCBsaW5lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChsaW5lW2ldID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBjdHguZmlsbFJlY3QoaSwgMCwgMSwgMTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEJyZXNlbmhhbTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvZGVjb2Rlci9icmVzZW5oYW0uanNcbiAqKi8iLCJpbXBvcnQge21lcmdlLCBwaWNrfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxudmFyIHN0cmVhbVJlZixcclxuICAgIGxvYWRlZERhdGFIYW5kbGVyO1xyXG5cclxuZnVuY3Rpb24gd2FpdEZvclZpZGVvKHZpZGVvKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGxldCBhdHRlbXB0cyA9IDEwO1xyXG5cclxuICAgICAgICBmdW5jdGlvbiBjaGVja1ZpZGVvKCkge1xyXG4gICAgICAgICAgICBpZiAoYXR0ZW1wdHMgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmlkZW8udmlkZW9XaWR0aCA+IDAgJiYgdmlkZW8udmlkZW9IZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh2aWRlby52aWRlb1dpZHRoICsgXCJweCB4IFwiICsgdmlkZW8udmlkZW9IZWlnaHQgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNoZWNrVmlkZW8sIDUwMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoJ1VuYWJsZSB0byBwbGF5IHZpZGVvIHN0cmVhbS4gSXMgd2ViY2FtIHdvcmtpbmc/Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXR0ZW1wdHMtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2hlY2tWaWRlbygpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmllcyB0byBhdHRhY2ggdGhlIGNhbWVyYS1zdHJlYW0gdG8gYSBnaXZlbiB2aWRlby1lbGVtZW50XHJcbiAqIGFuZCBjYWxscyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hlbiB0aGUgY29udGVudCBpcyByZWFkeVxyXG4gKiBAcGFyYW0ge09iamVjdH0gY29uc3RyYWludHNcclxuICogQHBhcmFtIHtPYmplY3R9IHZpZGVvXHJcbiAqL1xyXG5mdW5jdGlvbiBpbml0Q2FtZXJhKHZpZGVvLCBjb25zdHJhaW50cykge1xyXG4gICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzKVxyXG4gICAgLnRoZW4oKHN0cmVhbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHN0cmVhbVJlZiA9IHN0cmVhbTtcclxuICAgICAgICAgICAgdmlkZW8uc3JjID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoc3RyZWFtKTtcclxuICAgICAgICAgICAgdmlkZW8ub25sb2FkZWRtZXRhZGF0YSA9IChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2aWRlby5wbGF5KCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gICAgLnRoZW4od2FpdEZvclZpZGVvLmJpbmQobnVsbCwgdmlkZW8pKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVwcmVjYXRlZENvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpIHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBwaWNrKHZpZGVvQ29uc3RyYWludHMsIFtcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwiZmFjaW5nTW9kZVwiLFxyXG4gICAgICAgICAgICBcImFzcGVjdFJhdGlvXCIsIFwiZGV2aWNlSWRcIl0pO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdmlkZW9Db25zdHJhaW50c1tcIm1pbkFzcGVjdFJhdGlvXCJdICE9PSAndW5kZWZpbmVkJyAmJlxyXG4gICAgICAgICAgICB2aWRlb0NvbnN0cmFpbnRzW1wibWluQXNwZWN0UmF0aW9cIl0gPiAwKSB7XHJcbiAgICAgICAgbm9ybWFsaXplZFtcImFzcGVjdFJhdGlvXCJdID0gdmlkZW9Db25zdHJhaW50c1tcIm1pbkFzcGVjdFJhdGlvXCJdO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiV0FSTklORzogQ29uc3RyYWludCAnbWluQXNwZWN0UmF0aW8nIGlzIGRlcHJlY2F0ZWQ7IFVzZSAnYXNwZWN0UmF0aW8nIGluc3RlYWRcIik7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHZpZGVvQ29uc3RyYWludHNbXCJmYWNpbmdcIl0gIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgbm9ybWFsaXplZFtcImZhY2luZ01vZGVcIl0gPSB2aWRlb0NvbnN0cmFpbnRzW1wiZmFjaW5nXCJdO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiV0FSTklORzogQ29uc3RyYWludCAnZmFjaW5nJyBpcyBkZXByZWNhdGVkLiBVc2UgJ2ZhY2luZ01vZGUnIGluc3RlYWQnXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwcGx5Q2FtZXJhRmFjaW5nKGZhY2luZywgY29uc3RyYWludHMpIHtcclxuICAgIGlmICh0eXBlb2YgY29uc3RyYWludHMudmlkZW8uZGV2aWNlSWQgIT09ICd1bmRlZmluZWQnIHx8ICFmYWNpbmcpe1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY29uc3RyYWludHMpO1xyXG4gICAgfVxyXG4gICAgaWYgKCB0eXBlb2YgTWVkaWFTdHJlYW1UcmFjayAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgICAgICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBNZWRpYVN0cmVhbVRyYWNrLmdldFNvdXJjZXMoKHNvdXJjZUluZm9zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1NvdXJjZSA9IHNvdXJjZUluZm9zLmZpbHRlcigoc291cmNlSW5mbykgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8ua2luZCA9PT0gXCJ2aWRlb1wiICYmIHNvdXJjZUluZm8uZmFjaW5nID09PSBmYWNpbmdcclxuICAgICAgICAgICAgICAgICkpWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZpZGVvU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUobWVyZ2Uoe30sIGNvbnN0cmFpbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmlkZW86IHtkZXZpY2VJZDogdmlkZW9Tb3VyY2UuaWR9fSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoY29uc3RyYWludHMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobWVyZ2Uoe30sIGNvbnN0cmFpbnRzLCB7dmlkZW86IHtmYWNpbmdNb2RlOiBmYWNpbmd9fSkpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwaWNrQ29uc3RyYWludHModmlkZW9Db25zdHJhaW50cykge1xyXG4gICAgY29uc3QgY29uc3RyYWludHMgPSB7XHJcbiAgICAgICAgYXVkaW86IGZhbHNlLFxyXG4gICAgICAgIHZpZGVvOiBkZXByZWNhdGVkQ29uc3RyYWludHModmlkZW9Db25zdHJhaW50cylcclxuICAgIH07XHJcbiAgICByZXR1cm4gYXBwbHlDYW1lcmFGYWNpbmcoY29uc3RyYWludHMudmlkZW8uZmFjaW5nTW9kZSwgY29uc3RyYWludHMpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICByZXF1ZXN0OiBmdW5jdGlvbih2aWRlbywgdmlkZW9Db25zdHJhaW50cykge1xyXG4gICAgICAgIHJldHVybiBwaWNrQ29uc3RyYWludHModmlkZW9Db25zdHJhaW50cylcclxuICAgICAgICAgICAgLnRoZW4oaW5pdENhbWVyYS5iaW5kKG51bGwsIHZpZGVvKSk7XHJcbiAgICB9LFxyXG4gICAgcmVsZWFzZTogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIHRyYWNrcyA9IHN0cmVhbVJlZiAmJiBzdHJlYW1SZWYuZ2V0VmlkZW9UcmFja3MoKTtcclxuICAgICAgICBpZiAodHJhY2tzICYmIHRyYWNrcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdHJhY2tzWzBdLnN0b3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3RyZWFtUmVmID0gbnVsbDtcclxuICAgIH1cclxufTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvaW5wdXQvY2FtZXJhX2FjY2Vzcy5qc1xuICoqLyIsImltcG9ydCB7XHJcbiAgICBpbWFnZVJlZixcclxuICAgIGdyYXlBbmRIYWxmU2FtcGxlRnJvbUNhbnZhc0RhdGEsXHJcbiAgICBjb21wdXRlR3JheVxyXG59IGZyb20gJy4uL2NvbW1vbi9jdl91dGlscyc7XHJcblxyXG52YXIgRnJhbWVHcmFiYmVyID0ge307XHJcblxyXG5GcmFtZUdyYWJiZXIuY3JlYXRlID0gZnVuY3Rpb24oaW5wdXRTdHJlYW0sIGNhbnZhcykge1xyXG4gICAgdmFyIF90aGF0ID0ge30sXHJcbiAgICAgICAgX3N0cmVhbUNvbmZpZyA9IGlucHV0U3RyZWFtLmdldENvbmZpZygpLFxyXG4gICAgICAgIF92aWRlb19zaXplID0gaW1hZ2VSZWYoaW5wdXRTdHJlYW0uZ2V0UmVhbFdpZHRoKCksIGlucHV0U3RyZWFtLmdldFJlYWxIZWlnaHQoKSksXHJcbiAgICAgICAgX2NhbnZhc1NpemUgPSBpbnB1dFN0cmVhbS5nZXRDYW52YXNTaXplKCksXHJcbiAgICAgICAgX3NpemUgPSBpbWFnZVJlZihpbnB1dFN0cmVhbS5nZXRXaWR0aCgpLCBpbnB1dFN0cmVhbS5nZXRIZWlnaHQoKSksXHJcbiAgICAgICAgdG9wUmlnaHQgPSBpbnB1dFN0cmVhbS5nZXRUb3BSaWdodCgpLFxyXG4gICAgICAgIF9zeCA9IHRvcFJpZ2h0LngsXHJcbiAgICAgICAgX3N5ID0gdG9wUmlnaHQueSxcclxuICAgICAgICBfY2FudmFzLFxyXG4gICAgICAgIF9jdHggPSBudWxsLFxyXG4gICAgICAgIF9kYXRhID0gbnVsbDtcclxuXHJcbiAgICBfY2FudmFzID0gY2FudmFzID8gY2FudmFzIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcclxuICAgIF9jYW52YXMud2lkdGggPSBfY2FudmFzU2l6ZS54O1xyXG4gICAgX2NhbnZhcy5oZWlnaHQgPSBfY2FudmFzU2l6ZS55O1xyXG4gICAgX2N0eCA9IF9jYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgX2RhdGEgPSBuZXcgVWludDhBcnJheShfc2l6ZS54ICogX3NpemUueSk7XHJcbiAgICBpZiAoRU5WLmRldmVsb3BtZW50KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJGcmFtZUdyYWJiZXJcIiwgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICBzaXplOiBfc2l6ZSxcclxuICAgICAgICAgICAgdG9wUmlnaHQ6IHRvcFJpZ2h0LFxyXG4gICAgICAgICAgICB2aWRlb1NpemU6IF92aWRlb19zaXplLFxyXG4gICAgICAgICAgICBjYW52YXNTaXplOiBfY2FudmFzU2l6ZVxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZXMgdGhlIGdpdmVuIGFycmF5IGFzIGZyYW1lLWJ1ZmZlclxyXG4gICAgICovXHJcbiAgICBfdGhhdC5hdHRhY2hEYXRhID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgIF9kYXRhID0gZGF0YTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB1c2VkIGZyYW1lLWJ1ZmZlclxyXG4gICAgICovXHJcbiAgICBfdGhhdC5nZXREYXRhID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9kYXRhO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZldGNoZXMgYSBmcmFtZSBmcm9tIHRoZSBpbnB1dC1zdHJlYW0gYW5kIHB1dHMgaW50byB0aGUgZnJhbWUtYnVmZmVyLlxyXG4gICAgICogVGhlIGltYWdlLWRhdGEgaXMgY29udmVydGVkIHRvIGdyYXktc2NhbGUgYW5kIHRoZW4gaGFsZi1zYW1wbGVkIGlmIGNvbmZpZ3VyZWQuXHJcbiAgICAgKi9cclxuICAgIF90aGF0LmdyYWIgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgZG9IYWxmU2FtcGxlID0gX3N0cmVhbUNvbmZpZy5oYWxmU2FtcGxlLFxyXG4gICAgICAgICAgICBmcmFtZSA9IGlucHV0U3RyZWFtLmdldEZyYW1lKCksXHJcbiAgICAgICAgICAgIGN0eERhdGE7XHJcbiAgICAgICAgaWYgKGZyYW1lKSB7XHJcbiAgICAgICAgICAgIF9jdHguZHJhd0ltYWdlKGZyYW1lLCAwLCAwLCBfY2FudmFzU2l6ZS54LCBfY2FudmFzU2l6ZS55KTtcclxuICAgICAgICAgICAgY3R4RGF0YSA9IF9jdHguZ2V0SW1hZ2VEYXRhKF9zeCwgX3N5LCBfc2l6ZS54LCBfc2l6ZS55KS5kYXRhO1xyXG4gICAgICAgICAgICBpZiAoZG9IYWxmU2FtcGxlKXtcclxuICAgICAgICAgICAgICAgIGdyYXlBbmRIYWxmU2FtcGxlRnJvbUNhbnZhc0RhdGEoY3R4RGF0YSwgX3NpemUsIF9kYXRhKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbXB1dGVHcmF5KGN0eERhdGEsIF9kYXRhLCBfc3RyZWFtQ29uZmlnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBfdGhhdC5nZXRTaXplID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9zaXplO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gX3RoYXQ7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGcmFtZUdyYWJiZXI7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2lucHV0L2ZyYW1lX2dyYWJiZXIuanNcbiAqKi8iLCJ2YXIgSW1hZ2VMb2FkZXIgPSB7fTtcclxuSW1hZ2VMb2FkZXIubG9hZCA9IGZ1bmN0aW9uKGRpcmVjdG9yeSwgY2FsbGJhY2ssIG9mZnNldCwgc2l6ZSwgc2VxdWVuY2UpIHtcclxuICAgIHZhciBodG1sSW1hZ2VzU3JjQXJyYXkgPSBuZXcgQXJyYXkoc2l6ZSksXHJcbiAgICAgICAgaHRtbEltYWdlc0FycmF5ID0gbmV3IEFycmF5KGh0bWxJbWFnZXNTcmNBcnJheS5sZW5ndGgpLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgaW1nLFxyXG4gICAgICAgIG51bTtcclxuXHJcbiAgICBpZiAoc2VxdWVuY2UgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgaHRtbEltYWdlc1NyY0FycmF5WzBdID0gZGlyZWN0b3J5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGh0bWxJbWFnZXNTcmNBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBudW0gPSAob2Zmc2V0ICsgaSk7XHJcbiAgICAgICAgICAgIGh0bWxJbWFnZXNTcmNBcnJheVtpXSA9IGRpcmVjdG9yeSArIFwiaW1hZ2UtXCIgKyAoXCIwMFwiICsgbnVtKS5zbGljZSgtMykgKyBcIi5qcGdcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBodG1sSW1hZ2VzQXJyYXkubm90TG9hZGVkID0gW107XHJcbiAgICBodG1sSW1hZ2VzQXJyYXkuYWRkSW1hZ2UgPSBmdW5jdGlvbihpbWFnZSkge1xyXG4gICAgICAgIGh0bWxJbWFnZXNBcnJheS5ub3RMb2FkZWQucHVzaChpbWFnZSk7XHJcbiAgICB9O1xyXG4gICAgaHRtbEltYWdlc0FycmF5LmxvYWRlZCA9IGZ1bmN0aW9uKGxvYWRlZEltZykge1xyXG4gICAgICAgIHZhciBub3Rsb2FkZWRJbWdzID0gaHRtbEltYWdlc0FycmF5Lm5vdExvYWRlZDtcclxuICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IG5vdGxvYWRlZEltZ3MubGVuZ3RoOyB4KyspIHtcclxuICAgICAgICAgICAgaWYgKG5vdGxvYWRlZEltZ3NbeF0gPT09IGxvYWRlZEltZykge1xyXG4gICAgICAgICAgICAgICAgbm90bG9hZGVkSW1ncy5zcGxpY2UoeCwgMSk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGh0bWxJbWFnZXNTcmNBcnJheS5sZW5ndGg7IHkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbWdOYW1lID0gaHRtbEltYWdlc1NyY0FycmF5W3ldLnN1YnN0cihodG1sSW1hZ2VzU3JjQXJyYXlbeV0ubGFzdEluZGV4T2YoXCIvXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZGVkSW1nLnNyYy5sYXN0SW5kZXhPZihpbWdOYW1lKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbEltYWdlc0FycmF5W3ldID0gbG9hZGVkSW1nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobm90bG9hZGVkSW1ncy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJJbWFnZXMgbG9hZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIFtodG1sSW1hZ2VzQXJyYXldKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAoIGkgPSAwOyBpIDwgaHRtbEltYWdlc1NyY0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgaHRtbEltYWdlc0FycmF5LmFkZEltYWdlKGltZyk7XHJcbiAgICAgICAgYWRkT25sb2FkSGFuZGxlcihpbWcsIGh0bWxJbWFnZXNBcnJheSk7XHJcbiAgICAgICAgaW1nLnNyYyA9IGh0bWxJbWFnZXNTcmNBcnJheVtpXTtcclxuICAgIH1cclxufTtcclxuXHJcbmZ1bmN0aW9uIGFkZE9ubG9hZEhhbmRsZXIoaW1nLCBodG1sSW1hZ2VzQXJyYXkpIHtcclxuICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBodG1sSW1hZ2VzQXJyYXkubG9hZGVkKHRoaXMpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgKEltYWdlTG9hZGVyKTtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvaW5wdXQvaW1hZ2VfbG9hZGVyLmpzXG4gKiovIiwiaW1wb3J0IEltYWdlTG9hZGVyIGZyb20gJy4vaW1hZ2VfbG9hZGVyJztcclxuXHJcbnZhciBJbnB1dFN0cmVhbSA9IHt9O1xyXG5JbnB1dFN0cmVhbS5jcmVhdGVWaWRlb1N0cmVhbSA9IGZ1bmN0aW9uKHZpZGVvKSB7XHJcbiAgICB2YXIgdGhhdCA9IHt9LFxyXG4gICAgICAgIF9jb25maWcgPSBudWxsLFxyXG4gICAgICAgIF9ldmVudE5hbWVzID0gWydjYW5yZWNvcmQnLCAnZW5kZWQnXSxcclxuICAgICAgICBfZXZlbnRIYW5kbGVycyA9IHt9LFxyXG4gICAgICAgIF9jYWxjdWxhdGVkV2lkdGgsXHJcbiAgICAgICAgX2NhbGN1bGF0ZWRIZWlnaHQsXHJcbiAgICAgICAgX3RvcFJpZ2h0ID0ge3g6IDAsIHk6IDB9LFxyXG4gICAgICAgIF9jYW52YXNTaXplID0ge3g6IDAsIHk6IDB9O1xyXG5cclxuICAgIGZ1bmN0aW9uIGluaXRTaXplKCkge1xyXG4gICAgICAgIHZhciB3aWR0aCA9IHZpZGVvLnZpZGVvV2lkdGgsXHJcbiAgICAgICAgICAgIGhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0O1xyXG5cclxuICAgICAgICBfY2FsY3VsYXRlZFdpZHRoID1cclxuICAgICAgICAgICAgX2NvbmZpZy5zaXplID8gd2lkdGggLyBoZWlnaHQgPiAxID8gX2NvbmZpZy5zaXplIDogTWF0aC5mbG9vcigod2lkdGggLyBoZWlnaHQpICogX2NvbmZpZy5zaXplKSA6IHdpZHRoO1xyXG4gICAgICAgIF9jYWxjdWxhdGVkSGVpZ2h0ID1cclxuICAgICAgICAgICAgX2NvbmZpZy5zaXplID8gd2lkdGggLyBoZWlnaHQgPiAxID8gTWF0aC5mbG9vcigoaGVpZ2h0IC8gd2lkdGgpICogX2NvbmZpZy5zaXplKSA6IF9jb25maWcuc2l6ZSA6IGhlaWdodDtcclxuXHJcbiAgICAgICAgX2NhbnZhc1NpemUueCA9IF9jYWxjdWxhdGVkV2lkdGg7XHJcbiAgICAgICAgX2NhbnZhc1NpemUueSA9IF9jYWxjdWxhdGVkSGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHRoYXQuZ2V0UmVhbFdpZHRoID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHZpZGVvLnZpZGVvV2lkdGg7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZ2V0UmVhbEhlaWdodCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB2aWRlby52aWRlb0hlaWdodDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRXaWR0aCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBfY2FsY3VsYXRlZFdpZHRoO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldEhlaWdodCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBfY2FsY3VsYXRlZEhlaWdodDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRXaWR0aCA9IGZ1bmN0aW9uKHdpZHRoKSB7XHJcbiAgICAgICAgX2NhbGN1bGF0ZWRXaWR0aCA9IHdpZHRoO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldEhlaWdodCA9IGZ1bmN0aW9uKGhlaWdodCkge1xyXG4gICAgICAgIF9jYWxjdWxhdGVkSGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldElucHV0U3RyZWFtID0gZnVuY3Rpb24oY29uZmlnKSB7XHJcbiAgICAgICAgX2NvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICB2aWRlby5zcmMgPSAodHlwZW9mIGNvbmZpZy5zcmMgIT09ICd1bmRlZmluZWQnKSA/IGNvbmZpZy5zcmMgOiAnJztcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5lbmRlZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB2aWRlby5lbmRlZDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRDb25maWcgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gX2NvbmZpZztcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xyXG4gICAgICAgIHZpZGVvLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQucGF1c2UgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB2aWRlby5wYXVzZSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnBsYXkgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB2aWRlby5wbGF5KCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0Q3VycmVudFRpbWUgPSBmdW5jdGlvbih0aW1lKSB7XHJcbiAgICAgICAgaWYgKF9jb25maWcudHlwZSAhPT0gXCJMaXZlU3RyZWFtXCIpIHtcclxuICAgICAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSB0aW1lO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQsIGYsIGJvb2wpIHtcclxuICAgICAgICBpZiAoX2V2ZW50TmFtZXMuaW5kZXhPZihldmVudCkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGlmICghX2V2ZW50SGFuZGxlcnNbZXZlbnRdKSB7XHJcbiAgICAgICAgICAgICAgICBfZXZlbnRIYW5kbGVyc1tldmVudF0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfZXZlbnRIYW5kbGVyc1tldmVudF0ucHVzaChmKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmLCBib29sKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuY2xlYXJFdmVudEhhbmRsZXJzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgX2V2ZW50TmFtZXMuZm9yRWFjaChmdW5jdGlvbihldmVudE5hbWUpIHtcclxuICAgICAgICAgICAgdmFyIGhhbmRsZXJzID0gX2V2ZW50SGFuZGxlcnNbZXZlbnROYW1lXTtcclxuICAgICAgICAgICAgaWYgKGhhbmRsZXJzICYmIGhhbmRsZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGhhbmRsZXJzLmZvckVhY2goZnVuY3Rpb24oaGFuZGxlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQudHJpZ2dlciA9IGZ1bmN0aW9uKGV2ZW50TmFtZSwgYXJncykge1xyXG4gICAgICAgIHZhciBqLFxyXG4gICAgICAgICAgICBoYW5kbGVycyA9IF9ldmVudEhhbmRsZXJzW2V2ZW50TmFtZV07XHJcblxyXG4gICAgICAgIGlmIChldmVudE5hbWUgPT09ICdjYW5yZWNvcmQnKSB7XHJcbiAgICAgICAgICAgIGluaXRTaXplKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChoYW5kbGVycyAmJiBoYW5kbGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgaGFuZGxlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGhhbmRsZXJzW2pdLmFwcGx5KHRoYXQsIGFyZ3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldFRvcFJpZ2h0ID0gZnVuY3Rpb24odG9wUmlnaHQpIHtcclxuICAgICAgICBfdG9wUmlnaHQueCA9IHRvcFJpZ2h0Lng7XHJcbiAgICAgICAgX3RvcFJpZ2h0LnkgPSB0b3BSaWdodC55O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldFRvcFJpZ2h0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF90b3BSaWdodDtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRDYW52YXNTaXplID0gZnVuY3Rpb24oc2l6ZSkge1xyXG4gICAgICAgIF9jYW52YXNTaXplLnggPSBzaXplLng7XHJcbiAgICAgICAgX2NhbnZhc1NpemUueSA9IHNpemUueTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRDYW52YXNTaXplID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIF9jYW52YXNTaXplO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldEZyYW1lID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHZpZGVvO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhhdDtcclxufTtcclxuXHJcbklucHV0U3RyZWFtLmNyZWF0ZUxpdmVTdHJlYW0gPSBmdW5jdGlvbih2aWRlbykge1xyXG4gICAgdmlkZW8uc2V0QXR0cmlidXRlKFwiYXV0b3BsYXlcIiwgdHJ1ZSk7XHJcbiAgICB2YXIgdGhhdCA9IElucHV0U3RyZWFtLmNyZWF0ZVZpZGVvU3RyZWFtKHZpZGVvKTtcclxuXHJcbiAgICB0aGF0LmVuZGVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhhdDtcclxufTtcclxuXHJcbklucHV0U3RyZWFtLmNyZWF0ZUltYWdlU3RyZWFtID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgdGhhdCA9IHt9O1xyXG4gICAgdmFyIF9jb25maWcgPSBudWxsO1xyXG5cclxuICAgIHZhciB3aWR0aCA9IDAsXHJcbiAgICAgICAgaGVpZ2h0ID0gMCxcclxuICAgICAgICBmcmFtZUlkeCA9IDAsXHJcbiAgICAgICAgcGF1c2VkID0gdHJ1ZSxcclxuICAgICAgICBsb2FkZWQgPSBmYWxzZSxcclxuICAgICAgICBpbWdBcnJheSA9IG51bGwsXHJcbiAgICAgICAgc2l6ZSA9IDAsXHJcbiAgICAgICAgb2Zmc2V0ID0gMSxcclxuICAgICAgICBiYXNlVXJsID0gbnVsbCxcclxuICAgICAgICBlbmRlZCA9IGZhbHNlLFxyXG4gICAgICAgIGNhbGN1bGF0ZWRXaWR0aCxcclxuICAgICAgICBjYWxjdWxhdGVkSGVpZ2h0LFxyXG4gICAgICAgIF9ldmVudE5hbWVzID0gWydjYW5yZWNvcmQnLCAnZW5kZWQnXSxcclxuICAgICAgICBfZXZlbnRIYW5kbGVycyA9IHt9LFxyXG4gICAgICAgIF90b3BSaWdodCA9IHt4OiAwLCB5OiAwfSxcclxuICAgICAgICBfY2FudmFzU2l6ZSA9IHt4OiAwLCB5OiAwfTtcclxuXHJcbiAgICBmdW5jdGlvbiBsb2FkSW1hZ2VzKCkge1xyXG4gICAgICAgIGxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIEltYWdlTG9hZGVyLmxvYWQoYmFzZVVybCwgZnVuY3Rpb24oaW1ncykge1xyXG4gICAgICAgICAgICBpbWdBcnJheSA9IGltZ3M7XHJcbiAgICAgICAgICAgIHdpZHRoID0gaW1nc1swXS53aWR0aDtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gaW1nc1swXS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZWRXaWR0aCA9XHJcbiAgICAgICAgICAgICAgICBfY29uZmlnLnNpemUgPyB3aWR0aCAvIGhlaWdodCA+IDEgPyBfY29uZmlnLnNpemUgOiBNYXRoLmZsb29yKCh3aWR0aCAvIGhlaWdodCkgKiBfY29uZmlnLnNpemUpIDogd2lkdGg7XHJcbiAgICAgICAgICAgIGNhbGN1bGF0ZWRIZWlnaHQgPVxyXG4gICAgICAgICAgICAgICAgX2NvbmZpZy5zaXplID8gd2lkdGggLyBoZWlnaHQgPiAxID8gTWF0aC5mbG9vcigoaGVpZ2h0IC8gd2lkdGgpICogX2NvbmZpZy5zaXplKSA6IF9jb25maWcuc2l6ZSA6IGhlaWdodDtcclxuICAgICAgICAgICAgX2NhbnZhc1NpemUueCA9IGNhbGN1bGF0ZWRXaWR0aDtcclxuICAgICAgICAgICAgX2NhbnZhc1NpemUueSA9IGNhbGN1bGF0ZWRIZWlnaHQ7XHJcbiAgICAgICAgICAgIGxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGZyYW1lSWR4ID0gMDtcclxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIHB1Ymxpc2hFdmVudChcImNhbnJlY29yZFwiLCBbXSk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH0sIG9mZnNldCwgc2l6ZSwgX2NvbmZpZy5zZXF1ZW5jZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcHVibGlzaEV2ZW50KGV2ZW50TmFtZSwgYXJncykge1xyXG4gICAgICAgIHZhciBqLFxyXG4gICAgICAgICAgICBoYW5kbGVycyA9IF9ldmVudEhhbmRsZXJzW2V2ZW50TmFtZV07XHJcblxyXG4gICAgICAgIGlmIChoYW5kbGVycyAmJiBoYW5kbGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgaGFuZGxlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGhhbmRsZXJzW2pdLmFwcGx5KHRoYXQsIGFyZ3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGF0LnRyaWdnZXIgPSBwdWJsaXNoRXZlbnQ7XHJcblxyXG4gICAgdGhhdC5nZXRXaWR0aCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBjYWxjdWxhdGVkV2lkdGg7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRIZWlnaHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0V2lkdGggPSBmdW5jdGlvbihuZXdXaWR0aCkge1xyXG4gICAgICAgIGNhbGN1bGF0ZWRXaWR0aCA9IG5ld1dpZHRoO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldEhlaWdodCA9IGZ1bmN0aW9uKG5ld0hlaWdodCkge1xyXG4gICAgICAgIGNhbGN1bGF0ZWRIZWlnaHQgPSBuZXdIZWlnaHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZ2V0UmVhbFdpZHRoID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHdpZHRoO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmdldFJlYWxIZWlnaHQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gaGVpZ2h0O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnNldElucHV0U3RyZWFtID0gZnVuY3Rpb24oc3RyZWFtKSB7XHJcbiAgICAgICAgX2NvbmZpZyA9IHN0cmVhbTtcclxuICAgICAgICBpZiAoc3RyZWFtLnNlcXVlbmNlID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBiYXNlVXJsID0gc3RyZWFtLnNyYztcclxuICAgICAgICAgICAgc2l6ZSA9IDE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYmFzZVVybCA9IHN0cmVhbS5zcmM7XHJcbiAgICAgICAgICAgIHNpemUgPSBzdHJlYW0ubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsb2FkSW1hZ2VzKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZW5kZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gZW5kZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24oKSB7fTtcclxuXHJcbiAgICB0aGF0LmdldENvbmZpZyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBfY29uZmlnO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LnBhdXNlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcGF1c2VkID0gdHJ1ZTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5wbGF5ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcGF1c2VkID0gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0Q3VycmVudFRpbWUgPSBmdW5jdGlvbih0aW1lKSB7XHJcbiAgICAgICAgZnJhbWVJZHggPSB0aW1lO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGF0LmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudCwgZikge1xyXG4gICAgICAgIGlmIChfZXZlbnROYW1lcy5pbmRleE9mKGV2ZW50KSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgaWYgKCFfZXZlbnRIYW5kbGVyc1tldmVudF0pIHtcclxuICAgICAgICAgICAgICAgIF9ldmVudEhhbmRsZXJzW2V2ZW50XSA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9ldmVudEhhbmRsZXJzW2V2ZW50XS5wdXNoKGYpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5zZXRUb3BSaWdodCA9IGZ1bmN0aW9uKHRvcFJpZ2h0KSB7XHJcbiAgICAgICAgX3RvcFJpZ2h0LnggPSB0b3BSaWdodC54O1xyXG4gICAgICAgIF90b3BSaWdodC55ID0gdG9wUmlnaHQueTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRUb3BSaWdodCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBfdG9wUmlnaHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuc2V0Q2FudmFzU2l6ZSA9IGZ1bmN0aW9uKGNhbnZhc1NpemUpIHtcclxuICAgICAgICBfY2FudmFzU2l6ZS54ID0gY2FudmFzU2l6ZS54O1xyXG4gICAgICAgIF9jYW52YXNTaXplLnkgPSBjYW52YXNTaXplLnk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoYXQuZ2V0Q2FudmFzU2l6ZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBfY2FudmFzU2l6ZTtcclxuICAgIH07XHJcblxyXG4gICAgdGhhdC5nZXRGcmFtZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBmcmFtZTtcclxuXHJcbiAgICAgICAgaWYgKCFsb2FkZWQpe1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFwYXVzZWQpIHtcclxuICAgICAgICAgICAgZnJhbWUgPSBpbWdBcnJheVtmcmFtZUlkeF07XHJcbiAgICAgICAgICAgIGlmIChmcmFtZUlkeCA8IChzaXplIC0gMSkpIHtcclxuICAgICAgICAgICAgICAgIGZyYW1lSWR4Kys7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBwdWJsaXNoRXZlbnQoXCJlbmRlZFwiLCBbXSk7XHJcbiAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZnJhbWU7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgSW5wdXRTdHJlYW07XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2lucHV0L2lucHV0X3N0cmVhbS5qc1xuICoqLyIsImltcG9ydCBJbWFnZVdyYXBwZXIgZnJvbSAnLi4vY29tbW9uL2ltYWdlX3dyYXBwZXInO1xyXG5pbXBvcnQge1xyXG4gICAgY2FsY3VsYXRlUGF0Y2hTaXplLFxyXG4gICAgb3RzdVRocmVzaG9sZCxcclxuICAgIGhzdjJyZ2IsXHJcbiAgICBjbHVzdGVyLFxyXG4gICAgdG9wR2VuZXJpYyxcclxuICAgIGltYWdlUmVmLFxyXG4gICAgaGFsZlNhbXBsZSxcclxuICAgIGNvbXB1dGVJbWFnZUFyZWFcclxufSBmcm9tICcuLi9jb21tb24vY3ZfdXRpbHMnO1xyXG5pbXBvcnQgQXJyYXlIZWxwZXIgZnJvbSAnLi4vY29tbW9uL2FycmF5X2hlbHBlcic7XHJcbmltcG9ydCBJbWFnZURlYnVnIGZyb20gJy4uL2NvbW1vbi9pbWFnZV9kZWJ1Zyc7XHJcbmltcG9ydCBSYXN0ZXJpemVyIGZyb20gJy4vcmFzdGVyaXplcic7XHJcbmltcG9ydCBUcmFjZXIgZnJvbSAnLi90cmFjZXInO1xyXG5pbXBvcnQgc2tlbGV0b25pemVyIGZyb20gJy4vc2tlbGV0b25pemVyJztcclxuY29uc3QgdmVjMiA9IHtcclxuICAgIGNsb25lOiByZXF1aXJlKCdnbC12ZWMyL2Nsb25lJyksXHJcbiAgICBkb3Q6ICByZXF1aXJlKCdnbC12ZWMyL2RvdCcpLFxyXG4gICAgc2NhbGU6IHJlcXVpcmUoJ2dsLXZlYzIvc2NhbGUnKSxcclxuICAgIHRyYW5zZm9ybU1hdDI6IHJlcXVpcmUoJ2dsLXZlYzIvdHJhbnNmb3JtTWF0MicpXHJcbn07XHJcbmNvbnN0IG1hdDIgPSB7XHJcbiAgICBjb3B5OiByZXF1aXJlKCdnbC1tYXQyL2NvcHknKSxcclxuICAgIGNyZWF0ZTogcmVxdWlyZSgnZ2wtbWF0Mi9jcmVhdGUnKSxcclxuICAgIGludmVydDogcmVxdWlyZSgnZ2wtbWF0Mi9pbnZlcnQnKVxyXG59XHJcblxyXG52YXIgX2NvbmZpZyxcclxuICAgIF9jdXJyZW50SW1hZ2VXcmFwcGVyLFxyXG4gICAgX3NrZWxJbWFnZVdyYXBwZXIsXHJcbiAgICBfc3ViSW1hZ2VXcmFwcGVyLFxyXG4gICAgX2xhYmVsSW1hZ2VXcmFwcGVyLFxyXG4gICAgX3BhdGNoR3JpZCxcclxuICAgIF9wYXRjaExhYmVsR3JpZCxcclxuICAgIF9pbWFnZVRvUGF0Y2hHcmlkLFxyXG4gICAgX2JpbmFyeUltYWdlV3JhcHBlcixcclxuICAgIF9wYXRjaFNpemUsXHJcbiAgICBfY2FudmFzQ29udGFpbmVyID0ge1xyXG4gICAgICAgIGN0eDoge1xyXG4gICAgICAgICAgICBiaW5hcnk6IG51bGxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRvbToge1xyXG4gICAgICAgICAgICBiaW5hcnk6IG51bGxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgX251bVBhdGNoZXMgPSB7eDogMCwgeTogMH0sXHJcbiAgICBfaW5wdXRJbWFnZVdyYXBwZXIsXHJcbiAgICBfc2tlbGV0b25pemVyO1xyXG5cclxuZnVuY3Rpb24gaW5pdEJ1ZmZlcnMoKSB7XHJcbiAgICB2YXIgc2tlbGV0b25JbWFnZURhdGE7XHJcblxyXG4gICAgaWYgKF9jb25maWcuaGFsZlNhbXBsZSkge1xyXG4gICAgICAgIF9jdXJyZW50SW1hZ2VXcmFwcGVyID0gbmV3IEltYWdlV3JhcHBlcih7XHJcbiAgICAgICAgICAgIHg6IF9pbnB1dEltYWdlV3JhcHBlci5zaXplLnggLyAyIHwgMCxcclxuICAgICAgICAgICAgeTogX2lucHV0SW1hZ2VXcmFwcGVyLnNpemUueSAvIDIgfCAwXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIF9jdXJyZW50SW1hZ2VXcmFwcGVyID0gX2lucHV0SW1hZ2VXcmFwcGVyO1xyXG4gICAgfVxyXG5cclxuICAgIF9wYXRjaFNpemUgPSBjYWxjdWxhdGVQYXRjaFNpemUoX2NvbmZpZy5wYXRjaFNpemUsIF9jdXJyZW50SW1hZ2VXcmFwcGVyLnNpemUpO1xyXG5cclxuICAgIF9udW1QYXRjaGVzLnggPSBfY3VycmVudEltYWdlV3JhcHBlci5zaXplLnggLyBfcGF0Y2hTaXplLnggfCAwO1xyXG4gICAgX251bVBhdGNoZXMueSA9IF9jdXJyZW50SW1hZ2VXcmFwcGVyLnNpemUueSAvIF9wYXRjaFNpemUueSB8IDA7XHJcblxyXG4gICAgX2JpbmFyeUltYWdlV3JhcHBlciA9IG5ldyBJbWFnZVdyYXBwZXIoX2N1cnJlbnRJbWFnZVdyYXBwZXIuc2l6ZSwgdW5kZWZpbmVkLCBVaW50OEFycmF5LCBmYWxzZSk7XHJcblxyXG4gICAgX2xhYmVsSW1hZ2VXcmFwcGVyID0gbmV3IEltYWdlV3JhcHBlcihfcGF0Y2hTaXplLCB1bmRlZmluZWQsIEFycmF5LCB0cnVlKTtcclxuXHJcbiAgICBza2VsZXRvbkltYWdlRGF0YSA9IG5ldyBBcnJheUJ1ZmZlcig2NCAqIDEwMjQpO1xyXG4gICAgX3N1YkltYWdlV3JhcHBlciA9IG5ldyBJbWFnZVdyYXBwZXIoX3BhdGNoU2l6ZSxcclxuICAgICAgICBuZXcgVWludDhBcnJheShza2VsZXRvbkltYWdlRGF0YSwgMCwgX3BhdGNoU2l6ZS54ICogX3BhdGNoU2l6ZS55KSk7XHJcbiAgICBfc2tlbEltYWdlV3JhcHBlciA9IG5ldyBJbWFnZVdyYXBwZXIoX3BhdGNoU2l6ZSxcclxuICAgICAgICBuZXcgVWludDhBcnJheShza2VsZXRvbkltYWdlRGF0YSwgX3BhdGNoU2l6ZS54ICogX3BhdGNoU2l6ZS55ICogMywgX3BhdGNoU2l6ZS54ICogX3BhdGNoU2l6ZS55KSxcclxuICAgICAgICB1bmRlZmluZWQsIHRydWUpO1xyXG4gICAgX3NrZWxldG9uaXplciA9IHNrZWxldG9uaXplcigodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpID8gd2luZG93IDogKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykgPyBzZWxmIDogZ2xvYmFsLCB7XHJcbiAgICAgICAgc2l6ZTogX3BhdGNoU2l6ZS54XHJcbiAgICB9LCBza2VsZXRvbkltYWdlRGF0YSk7XHJcblxyXG4gICAgX2ltYWdlVG9QYXRjaEdyaWQgPSBuZXcgSW1hZ2VXcmFwcGVyKHtcclxuICAgICAgICB4OiAoX2N1cnJlbnRJbWFnZVdyYXBwZXIuc2l6ZS54IC8gX3N1YkltYWdlV3JhcHBlci5zaXplLngpIHwgMCxcclxuICAgICAgICB5OiAoX2N1cnJlbnRJbWFnZVdyYXBwZXIuc2l6ZS55IC8gX3N1YkltYWdlV3JhcHBlci5zaXplLnkpIHwgMFxyXG4gICAgfSwgdW5kZWZpbmVkLCBBcnJheSwgdHJ1ZSk7XHJcbiAgICBfcGF0Y2hHcmlkID0gbmV3IEltYWdlV3JhcHBlcihfaW1hZ2VUb1BhdGNoR3JpZC5zaXplLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdHJ1ZSk7XHJcbiAgICBfcGF0Y2hMYWJlbEdyaWQgPSBuZXcgSW1hZ2VXcmFwcGVyKF9pbWFnZVRvUGF0Y2hHcmlkLnNpemUsIHVuZGVmaW5lZCwgSW50MzJBcnJheSwgdHJ1ZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRDYW52YXMoKSB7XHJcbiAgICBpZiAoX2NvbmZpZy51c2VXb3JrZXIgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIF9jYW52YXNDb250YWluZXIuZG9tLmJpbmFyeSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XHJcbiAgICBfY2FudmFzQ29udGFpbmVyLmRvbS5iaW5hcnkuY2xhc3NOYW1lID0gXCJiaW5hcnlCdWZmZXJcIjtcclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5zaG93Q2FudmFzID09PSB0cnVlKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNkZWJ1Z1wiKS5hcHBlbmRDaGlsZChfY2FudmFzQ29udGFpbmVyLmRvbS5iaW5hcnkpO1xyXG4gICAgfVxyXG4gICAgX2NhbnZhc0NvbnRhaW5lci5jdHguYmluYXJ5ID0gX2NhbnZhc0NvbnRhaW5lci5kb20uYmluYXJ5LmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgIF9jYW52YXNDb250YWluZXIuZG9tLmJpbmFyeS53aWR0aCA9IF9iaW5hcnlJbWFnZVdyYXBwZXIuc2l6ZS54O1xyXG4gICAgX2NhbnZhc0NvbnRhaW5lci5kb20uYmluYXJ5LmhlaWdodCA9IF9iaW5hcnlJbWFnZVdyYXBwZXIuc2l6ZS55O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIGJvdW5kaW5nIGJveCB3aGljaCBlbmNsb3NlcyBhbGwgdGhlIGdpdmVuIHBhdGNoZXNcclxuICogQHJldHVybnMge0FycmF5fSBUaGUgbWluaW1hbCBib3VuZGluZyBib3hcclxuICovXHJcbmZ1bmN0aW9uIGJveEZyb21QYXRjaGVzKHBhdGNoZXMpIHtcclxuICAgIHZhciBvdmVyQXZnLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgaixcclxuICAgICAgICBwYXRjaCxcclxuICAgICAgICB0cmFuc01hdCxcclxuICAgICAgICBtaW54ID1cclxuICAgICAgICBfYmluYXJ5SW1hZ2VXcmFwcGVyLnNpemUueCxcclxuICAgICAgICBtaW55ID0gX2JpbmFyeUltYWdlV3JhcHBlci5zaXplLnksXHJcbiAgICAgICAgbWF4eCA9IC1fYmluYXJ5SW1hZ2VXcmFwcGVyLnNpemUueCxcclxuICAgICAgICBtYXh5ID0gLV9iaW5hcnlJbWFnZVdyYXBwZXIuc2l6ZS55LFxyXG4gICAgICAgIGJveCxcclxuICAgICAgICBzY2FsZTtcclxuXHJcbiAgICAvLyBkcmF3IGFsbCBwYXRjaGVzIHdoaWNoIGFyZSB0byBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cclxuICAgIG92ZXJBdmcgPSAwO1xyXG4gICAgZm9yICggaSA9IDA7IGkgPCBwYXRjaGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcGF0Y2ggPSBwYXRjaGVzW2ldO1xyXG4gICAgICAgIG92ZXJBdmcgKz0gcGF0Y2gucmFkO1xyXG4gICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5zaG93UGF0Y2hlcykge1xyXG4gICAgICAgICAgICBJbWFnZURlYnVnLmRyYXdSZWN0KHBhdGNoLnBvcywgX3N1YkltYWdlV3JhcHBlci5zaXplLCBfY2FudmFzQ29udGFpbmVyLmN0eC5iaW5hcnksIHtjb2xvcjogXCJyZWRcIn0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvdmVyQXZnIC89IHBhdGNoZXMubGVuZ3RoO1xyXG4gICAgb3ZlckF2ZyA9IChvdmVyQXZnICogMTgwIC8gTWF0aC5QSSArIDkwKSAlIDE4MCAtIDkwO1xyXG4gICAgaWYgKG92ZXJBdmcgPCAwKSB7XHJcbiAgICAgICAgb3ZlckF2ZyArPSAxODA7XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlckF2ZyA9ICgxODAgLSBvdmVyQXZnKSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICB0cmFuc01hdCA9IG1hdDIuY29weShtYXQyLmNyZWF0ZSgpLCBbTWF0aC5jb3Mob3ZlckF2ZyksIE1hdGguc2luKG92ZXJBdmcpLCAtTWF0aC5zaW4ob3ZlckF2ZyksIE1hdGguY29zKG92ZXJBdmcpXSk7XHJcblxyXG4gICAgLy8gaXRlcmF0ZSBvdmVyIHBhdGNoZXMgYW5kIHJvdGF0ZSBieSBhbmdsZVxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBwYXRjaGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcGF0Y2ggPSBwYXRjaGVzW2ldO1xyXG4gICAgICAgIGZvciAoIGogPSAwOyBqIDwgNDsgaisrKSB7XHJcbiAgICAgICAgICAgIHZlYzIudHJhbnNmb3JtTWF0MihwYXRjaC5ib3hbal0sIHBhdGNoLmJveFtqXSwgdHJhbnNNYXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEVOVi5kZXZlbG9wbWVudCAmJiBfY29uZmlnLmRlYnVnLmJveEZyb21QYXRjaGVzLnNob3dUcmFuc2Zvcm1lZCkge1xyXG4gICAgICAgICAgICBJbWFnZURlYnVnLmRyYXdQYXRoKHBhdGNoLmJveCwge3g6IDAsIHk6IDF9LCBfY2FudmFzQ29udGFpbmVyLmN0eC5iaW5hcnksIHtjb2xvcjogJyM5OWZmMDAnLCBsaW5lV2lkdGg6IDJ9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZmluZCBib3VuZGluZyBib3hcclxuICAgIGZvciAoIGkgPSAwOyBpIDwgcGF0Y2hlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHBhdGNoID0gcGF0Y2hlc1tpXTtcclxuICAgICAgICBmb3IgKCBqID0gMDsgaiA8IDQ7IGorKykge1xyXG4gICAgICAgICAgICBpZiAocGF0Y2guYm94W2pdWzBdIDwgbWlueCkge1xyXG4gICAgICAgICAgICAgICAgbWlueCA9IHBhdGNoLmJveFtqXVswXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocGF0Y2guYm94W2pdWzBdID4gbWF4eCkge1xyXG4gICAgICAgICAgICAgICAgbWF4eCA9IHBhdGNoLmJveFtqXVswXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocGF0Y2guYm94W2pdWzFdIDwgbWlueSkge1xyXG4gICAgICAgICAgICAgICAgbWlueSA9IHBhdGNoLmJveFtqXVsxXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocGF0Y2guYm94W2pdWzFdID4gbWF4eSkge1xyXG4gICAgICAgICAgICAgICAgbWF4eSA9IHBhdGNoLmJveFtqXVsxXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBib3ggPSBbW21pbngsIG1pbnldLCBbbWF4eCwgbWlueV0sIFttYXh4LCBtYXh5XSwgW21pbngsIG1heHldXTtcclxuXHJcbiAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIF9jb25maWcuZGVidWcuYm94RnJvbVBhdGNoZXMuc2hvd1RyYW5zZm9ybWVkQm94KSB7XHJcbiAgICAgICAgSW1hZ2VEZWJ1Zy5kcmF3UGF0aChib3gsIHt4OiAwLCB5OiAxfSwgX2NhbnZhc0NvbnRhaW5lci5jdHguYmluYXJ5LCB7Y29sb3I6ICcjZmYwMDAwJywgbGluZVdpZHRoOiAyfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2NhbGUgPSBfY29uZmlnLmhhbGZTYW1wbGUgPyAyIDogMTtcclxuICAgIC8vIHJldmVyc2Ugcm90YXRpb247XHJcbiAgICB0cmFuc01hdCA9IG1hdDIuaW52ZXJ0KHRyYW5zTWF0LCB0cmFuc01hdCk7XHJcbiAgICBmb3IgKCBqID0gMDsgaiA8IDQ7IGorKykge1xyXG4gICAgICAgIHZlYzIudHJhbnNmb3JtTWF0Mihib3hbal0sIGJveFtqXSwgdHJhbnNNYXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5ib3hGcm9tUGF0Y2hlcy5zaG93QkIpIHtcclxuICAgICAgICBJbWFnZURlYnVnLmRyYXdQYXRoKGJveCwge3g6IDAsIHk6IDF9LCBfY2FudmFzQ29udGFpbmVyLmN0eC5iaW5hcnksIHtjb2xvcjogJyNmZjAwMDAnLCBsaW5lV2lkdGg6IDJ9KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBqID0gMDsgaiA8IDQ7IGorKykge1xyXG4gICAgICAgIHZlYzIuc2NhbGUoYm94W2pdLCBib3hbal0sIHNjYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYm94O1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIGJpbmFyeSBpbWFnZSBvZiB0aGUgY3VycmVudCBpbWFnZVxyXG4gKi9cclxuZnVuY3Rpb24gYmluYXJpemVJbWFnZSgpIHtcclxuICAgIG90c3VUaHJlc2hvbGQoX2N1cnJlbnRJbWFnZVdyYXBwZXIsIF9iaW5hcnlJbWFnZVdyYXBwZXIpO1xyXG4gICAgX2JpbmFyeUltYWdlV3JhcHBlci56ZXJvQm9yZGVyKCk7XHJcbiAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIF9jb25maWcuZGVidWcuc2hvd0NhbnZhcykge1xyXG4gICAgICAgIF9iaW5hcnlJbWFnZVdyYXBwZXIuc2hvdyhfY2FudmFzQ29udGFpbmVyLmRvbS5iaW5hcnksIDI1NSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJdGVyYXRlIG92ZXIgdGhlIGVudGlyZSBpbWFnZVxyXG4gKiBleHRyYWN0IHBhdGNoZXNcclxuICovXHJcbmZ1bmN0aW9uIGZpbmRQYXRjaGVzKCkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgaixcclxuICAgICAgICB4LFxyXG4gICAgICAgIHksXHJcbiAgICAgICAgbW9tZW50cyxcclxuICAgICAgICBwYXRjaGVzRm91bmQgPSBbXSxcclxuICAgICAgICByYXN0ZXJpemVyLFxyXG4gICAgICAgIHJhc3RlclJlc3VsdCxcclxuICAgICAgICBwYXRjaDtcclxuICAgIGZvciAoaSA9IDA7IGkgPCBfbnVtUGF0Y2hlcy54OyBpKyspIHtcclxuICAgICAgICBmb3IgKGogPSAwOyBqIDwgX251bVBhdGNoZXMueTsgaisrKSB7XHJcbiAgICAgICAgICAgIHggPSBfc3ViSW1hZ2VXcmFwcGVyLnNpemUueCAqIGk7XHJcbiAgICAgICAgICAgIHkgPSBfc3ViSW1hZ2VXcmFwcGVyLnNpemUueSAqIGo7XHJcblxyXG4gICAgICAgICAgICAvLyBzZXBlcmF0ZSBwYXJ0c1xyXG4gICAgICAgICAgICBza2VsZXRvbml6ZSh4LCB5KTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJhc3Rlcml6ZSwgZmluZCBpbmRpdmlkdWFsIGJhcnNcclxuICAgICAgICAgICAgX3NrZWxJbWFnZVdyYXBwZXIuemVyb0JvcmRlcigpO1xyXG4gICAgICAgICAgICBBcnJheUhlbHBlci5pbml0KF9sYWJlbEltYWdlV3JhcHBlci5kYXRhLCAwKTtcclxuICAgICAgICAgICAgcmFzdGVyaXplciA9IFJhc3Rlcml6ZXIuY3JlYXRlKF9za2VsSW1hZ2VXcmFwcGVyLCBfbGFiZWxJbWFnZVdyYXBwZXIpO1xyXG4gICAgICAgICAgICByYXN0ZXJSZXN1bHQgPSByYXN0ZXJpemVyLnJhc3Rlcml6ZSgwKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5zaG93TGFiZWxzKSB7XHJcbiAgICAgICAgICAgICAgICBfbGFiZWxJbWFnZVdyYXBwZXIub3ZlcmxheShfY2FudmFzQ29udGFpbmVyLmRvbS5iaW5hcnksIE1hdGguZmxvb3IoMzYwIC8gcmFzdGVyUmVzdWx0LmNvdW50KSxcclxuICAgICAgICAgICAgICAgICAgICB7eDogeCwgeTogeX0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUgbW9tZW50cyBmcm9tIHRoZSBza2VsZXRvbml6ZWQgcGF0Y2hcclxuICAgICAgICAgICAgbW9tZW50cyA9IF9sYWJlbEltYWdlV3JhcHBlci5tb21lbnRzKHJhc3RlclJlc3VsdC5jb3VudCk7XHJcblxyXG4gICAgICAgICAgICAvLyBleHRyYWN0IGVsaWdpYmxlIHBhdGNoZXNcclxuICAgICAgICAgICAgcGF0Y2hlc0ZvdW5kID0gcGF0Y2hlc0ZvdW5kLmNvbmNhdChkZXNjcmliZVBhdGNoKG1vbWVudHMsIFtpLCBqXSwgeCwgeSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIF9jb25maWcuZGVidWcuc2hvd0ZvdW5kUGF0Y2hlcykge1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgcGF0Y2hlc0ZvdW5kLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHBhdGNoID0gcGF0Y2hlc0ZvdW5kW2ldO1xyXG4gICAgICAgICAgICBJbWFnZURlYnVnLmRyYXdSZWN0KHBhdGNoLnBvcywgX3N1YkltYWdlV3JhcHBlci5zaXplLCBfY2FudmFzQ29udGFpbmVyLmN0eC5iaW5hcnksXHJcbiAgICAgICAgICAgICAgICB7Y29sb3I6IFwiIzk5ZmYwMFwiLCBsaW5lV2lkdGg6IDJ9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhdGNoZXNGb3VuZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZpbmRzIHRob3NlIGNvbm5lY3RlZCBhcmVhcyB3aGljaCBjb250YWluIGF0IGxlYXN0IDYgcGF0Y2hlc1xyXG4gKiBhbmQgcmV0dXJucyB0aGVtIG9yZGVyZWQgREVTQyBieSB0aGUgbnVtYmVyIG9mIGNvbnRhaW5lZCBwYXRjaGVzXHJcbiAqIEBwYXJhbSB7TnVtYmVyfSBtYXhMYWJlbFxyXG4gKi9cclxuZnVuY3Rpb24gZmluZEJpZ2dlc3RDb25uZWN0ZWRBcmVhcyhtYXhMYWJlbCl7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBzdW0sXHJcbiAgICAgICAgbGFiZWxIaXN0ID0gW10sXHJcbiAgICAgICAgdG9wTGFiZWxzID0gW107XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCBtYXhMYWJlbDsgaSsrKSB7XHJcbiAgICAgICAgbGFiZWxIaXN0LnB1c2goMCk7XHJcbiAgICB9XHJcbiAgICBzdW0gPSBfcGF0Y2hMYWJlbEdyaWQuZGF0YS5sZW5ndGg7XHJcbiAgICB3aGlsZSAoc3VtLS0pIHtcclxuICAgICAgICBpZiAoX3BhdGNoTGFiZWxHcmlkLmRhdGFbc3VtXSA+IDApIHtcclxuICAgICAgICAgICAgbGFiZWxIaXN0W19wYXRjaExhYmVsR3JpZC5kYXRhW3N1bV0gLSAxXSsrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsYWJlbEhpc3QgPSBsYWJlbEhpc3QubWFwKGZ1bmN0aW9uKHZhbCwgaWR4KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdmFsOiB2YWwsXHJcbiAgICAgICAgICAgIGxhYmVsOiBpZHggKyAxXHJcbiAgICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxhYmVsSGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcclxuICAgICAgICByZXR1cm4gYi52YWwgLSBhLnZhbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGV4dHJhY3QgdG9wIGFyZWFzIHdpdGggYXQgbGVhc3QgNiBwYXRjaGVzIHByZXNlbnRcclxuICAgIHRvcExhYmVscyA9IGxhYmVsSGlzdC5maWx0ZXIoZnVuY3Rpb24oZWwpIHtcclxuICAgICAgICByZXR1cm4gZWwudmFsID49IDU7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdG9wTGFiZWxzO1xyXG59XHJcblxyXG4vKipcclxuICpcclxuICovXHJcbmZ1bmN0aW9uIGZpbmRCb3hlcyh0b3BMYWJlbHMsIG1heExhYmVsKSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBqLFxyXG4gICAgICAgIHN1bSxcclxuICAgICAgICBwYXRjaGVzID0gW10sXHJcbiAgICAgICAgcGF0Y2gsXHJcbiAgICAgICAgYm94LFxyXG4gICAgICAgIGJveGVzID0gW10sXHJcbiAgICAgICAgaHN2ID0gWzAsIDEsIDFdLFxyXG4gICAgICAgIHJnYiA9IFswLCAwLCAwXTtcclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IHRvcExhYmVscy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHN1bSA9IF9wYXRjaExhYmVsR3JpZC5kYXRhLmxlbmd0aDtcclxuICAgICAgICBwYXRjaGVzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgd2hpbGUgKHN1bS0tKSB7XHJcbiAgICAgICAgICAgIGlmIChfcGF0Y2hMYWJlbEdyaWQuZGF0YVtzdW1dID09PSB0b3BMYWJlbHNbaV0ubGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoID0gX2ltYWdlVG9QYXRjaEdyaWQuZGF0YVtzdW1dO1xyXG4gICAgICAgICAgICAgICAgcGF0Y2hlcy5wdXNoKHBhdGNoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBib3ggPSBib3hGcm9tUGF0Y2hlcyhwYXRjaGVzKTtcclxuICAgICAgICBpZiAoYm94KSB7XHJcbiAgICAgICAgICAgIGJveGVzLnB1c2goYm94KTtcclxuXHJcbiAgICAgICAgICAgIC8vIGRyYXcgcGF0Y2gtbGFiZWxzIGlmIHJlcXVlc3RlZFxyXG4gICAgICAgICAgICBpZiAoRU5WLmRldmVsb3BtZW50ICYmIF9jb25maWcuZGVidWcuc2hvd1JlbWFpbmluZ1BhdGNoTGFiZWxzKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IHBhdGNoZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXRjaCA9IHBhdGNoZXNbal07XHJcbiAgICAgICAgICAgICAgICAgICAgaHN2WzBdID0gKHRvcExhYmVsc1tpXS5sYWJlbCAvIChtYXhMYWJlbCArIDEpKSAqIDM2MDtcclxuICAgICAgICAgICAgICAgICAgICBoc3YycmdiKGhzdiwgcmdiKTtcclxuICAgICAgICAgICAgICAgICAgICBJbWFnZURlYnVnLmRyYXdSZWN0KHBhdGNoLnBvcywgX3N1YkltYWdlV3JhcHBlci5zaXplLCBfY2FudmFzQ29udGFpbmVyLmN0eC5iaW5hcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtjb2xvcjogXCJyZ2IoXCIgKyByZ2Iuam9pbihcIixcIikgKyBcIilcIiwgbGluZVdpZHRoOiAyfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYm94ZXM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaW5kIHNpbWlsYXIgbW9tZW50cyAodmlhIGNsdXN0ZXIpXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBtb21lbnRzXHJcbiAqL1xyXG5mdW5jdGlvbiBzaW1pbGFyTW9tZW50cyhtb21lbnRzKSB7XHJcbiAgICB2YXIgY2x1c3RlcnMgPSBjbHVzdGVyKG1vbWVudHMsIDAuOTApO1xyXG4gICAgdmFyIHRvcENsdXN0ZXIgPSB0b3BHZW5lcmljKGNsdXN0ZXJzLCAxLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgcmV0dXJuIGUuZ2V0UG9pbnRzKCkubGVuZ3RoO1xyXG4gICAgfSk7XHJcbiAgICB2YXIgcG9pbnRzID0gW10sIHJlc3VsdCA9IFtdO1xyXG4gICAgaWYgKHRvcENsdXN0ZXIubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgcG9pbnRzID0gdG9wQ2x1c3RlclswXS5pdGVtLmdldFBvaW50cygpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBvaW50c1tpXS5wb2ludCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gc2tlbGV0b25pemUoeCwgeSkge1xyXG4gICAgX2JpbmFyeUltYWdlV3JhcHBlci5zdWJJbWFnZUFzQ29weShfc3ViSW1hZ2VXcmFwcGVyLCBpbWFnZVJlZih4LCB5KSk7XHJcbiAgICBfc2tlbGV0b25pemVyLnNrZWxldG9uaXplKCk7XHJcblxyXG4gICAgLy8gU2hvdyBza2VsZXRvbiBpZiByZXF1ZXN0ZWRcclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5zaG93U2tlbGV0b24pIHtcclxuICAgICAgICBfc2tlbEltYWdlV3JhcHBlci5vdmVybGF5KF9jYW52YXNDb250YWluZXIuZG9tLmJpbmFyeSwgMzYwLCBpbWFnZVJlZih4LCB5KSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHRyYWN0cyBhbmQgZGVzY3JpYmVzIHRob3NlIHBhdGNoZXMgd2hpY2ggc2VlbSB0byBjb250YWluIGEgYmFyY29kZSBwYXR0ZXJuXHJcbiAqIEBwYXJhbSB7QXJyYXl9IG1vbWVudHNcclxuICogQHBhcmFtIHtPYmplY3R9IHBhdGNoUG9zLFxyXG4gKiBAcGFyYW0ge051bWJlcn0geFxyXG4gKiBAcGFyYW0ge051bWJlcn0geVxyXG4gKiBAcmV0dXJucyB7QXJyYXl9IGxpc3Qgb2YgcGF0Y2hlc1xyXG4gKi9cclxuZnVuY3Rpb24gZGVzY3JpYmVQYXRjaChtb21lbnRzLCBwYXRjaFBvcywgeCwgeSkge1xyXG4gICAgdmFyIGssXHJcbiAgICAgICAgYXZnLFxyXG4gICAgICAgIGVsaWdpYmxlTW9tZW50cyA9IFtdLFxyXG4gICAgICAgIG1hdGNoaW5nTW9tZW50cyxcclxuICAgICAgICBwYXRjaCxcclxuICAgICAgICBwYXRjaGVzRm91bmQgPSBbXSxcclxuICAgICAgICBtaW5Db21wb25lbnRXZWlnaHQgPSBNYXRoLmNlaWwoX3BhdGNoU2l6ZS54IC8gMyk7XHJcblxyXG4gICAgaWYgKG1vbWVudHMubGVuZ3RoID49IDIpIHtcclxuICAgICAgICAvLyBvbmx5IGNvbGxlY3QgbW9tZW50cyB3aGljaCdzIGFyZWEgY292ZXJzIGF0IGxlYXN0IG1pbkNvbXBvbmVudFdlaWdodCBwaXhlbHMuXHJcbiAgICAgICAgZm9yICggayA9IDA7IGsgPCBtb21lbnRzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgICAgIGlmIChtb21lbnRzW2tdLm0wMCA+IG1pbkNvbXBvbmVudFdlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgZWxpZ2libGVNb21lbnRzLnB1c2gobW9tZW50c1trXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGlmIGF0IGxlYXN0IDIgbW9tZW50cyBhcmUgZm91bmQgd2hpY2ggaGF2ZSBhdCBsZWFzdCBtaW5Db21wb25lbnRXZWlnaHRzIGNvdmVyZWRcclxuICAgICAgICBpZiAoZWxpZ2libGVNb21lbnRzLmxlbmd0aCA+PSAyKSB7XHJcbiAgICAgICAgICAgIG1hdGNoaW5nTW9tZW50cyA9IHNpbWlsYXJNb21lbnRzKGVsaWdpYmxlTW9tZW50cyk7XHJcbiAgICAgICAgICAgIGF2ZyA9IDA7XHJcbiAgICAgICAgICAgIC8vIGRldGVybWluZSB0aGUgc2ltaWxhcml0eSBvZiB0aGUgbW9tZW50c1xyXG4gICAgICAgICAgICBmb3IgKCBrID0gMDsgayA8IG1hdGNoaW5nTW9tZW50cy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgICAgYXZnICs9IG1hdGNoaW5nTW9tZW50c1trXS5yYWQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIE9ubHkgdHdvIG9mIHRoZSBtb21lbnRzIGFyZSBhbGxvd2VkIG5vdCB0byBmaXQgaW50byB0aGUgZXF1YXRpb25cclxuICAgICAgICAgICAgLy8gYWRkIHRoZSBwYXRjaCB0byB0aGUgc2V0XHJcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ01vbWVudHMubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICYmIG1hdGNoaW5nTW9tZW50cy5sZW5ndGggPj0gKGVsaWdpYmxlTW9tZW50cy5sZW5ndGggLyA0KSAqIDNcclxuICAgICAgICAgICAgICAgICAgICAmJiBtYXRjaGluZ01vbWVudHMubGVuZ3RoID4gbW9tZW50cy5sZW5ndGggLyA0KSB7XHJcbiAgICAgICAgICAgICAgICBhdmcgLz0gbWF0Y2hpbmdNb21lbnRzLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHBhdGNoID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBwYXRjaFBvc1sxXSAqIF9udW1QYXRjaGVzLnggKyBwYXRjaFBvc1swXSxcclxuICAgICAgICAgICAgICAgICAgICBwb3M6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeDogeCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeTogeVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYm94OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIuY2xvbmUoW3gsIHldKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmVjMi5jbG9uZShbeCArIF9zdWJJbWFnZVdyYXBwZXIuc2l6ZS54LCB5XSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIuY2xvbmUoW3ggKyBfc3ViSW1hZ2VXcmFwcGVyLnNpemUueCwgeSArIF9zdWJJbWFnZVdyYXBwZXIuc2l6ZS55XSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlYzIuY2xvbmUoW3gsIHkgKyBfc3ViSW1hZ2VXcmFwcGVyLnNpemUueV0pXHJcbiAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICBtb21lbnRzOiBtYXRjaGluZ01vbWVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgcmFkOiBhdmcsXHJcbiAgICAgICAgICAgICAgICAgICAgdmVjOiB2ZWMyLmNsb25lKFtNYXRoLmNvcyhhdmcpLCBNYXRoLnNpbihhdmcpXSlcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBwYXRjaGVzRm91bmQucHVzaChwYXRjaCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0Y2hlc0ZvdW5kO1xyXG59XHJcblxyXG4vKipcclxuICogZmluZHMgcGF0Y2hlcyB3aGljaCBhcmUgY29ubmVjdGVkIGFuZCBzaGFyZSB0aGUgc2FtZSBvcmllbnRhdGlvblxyXG4gKiBAcGFyYW0ge09iamVjdH0gcGF0Y2hlc0ZvdW5kXHJcbiAqL1xyXG5mdW5jdGlvbiByYXN0ZXJpemVBbmd1bGFyU2ltaWxhcml0eShwYXRjaGVzRm91bmQpIHtcclxuICAgIHZhciBsYWJlbCA9IDAsXHJcbiAgICAgICAgdGhyZXNob2xkID0gMC45NSxcclxuICAgICAgICBjdXJySWR4ID0gMCxcclxuICAgICAgICBqLFxyXG4gICAgICAgIHBhdGNoLFxyXG4gICAgICAgIGhzdiA9IFswLCAxLCAxXSxcclxuICAgICAgICByZ2IgPSBbMCwgMCwgMF07XHJcblxyXG4gICAgZnVuY3Rpb24gbm90WWV0UHJvY2Vzc2VkKCkge1xyXG4gICAgICAgIHZhciBpO1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgX3BhdGNoTGFiZWxHcmlkLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKF9wYXRjaExhYmVsR3JpZC5kYXRhW2ldID09PSAwICYmIF9wYXRjaEdyaWQuZGF0YVtpXSA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIF9wYXRjaExhYmVsR3JpZC5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gdHJhY2UoY3VycmVudElkeCkge1xyXG4gICAgICAgIHZhciB4LFxyXG4gICAgICAgICAgICB5LFxyXG4gICAgICAgICAgICBjdXJyZW50UGF0Y2gsXHJcbiAgICAgICAgICAgIGlkeCxcclxuICAgICAgICAgICAgZGlyLFxyXG4gICAgICAgICAgICBjdXJyZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgeDogY3VycmVudElkeCAlIF9wYXRjaExhYmVsR3JpZC5zaXplLngsXHJcbiAgICAgICAgICAgICAgICB5OiAoY3VycmVudElkeCAvIF9wYXRjaExhYmVsR3JpZC5zaXplLngpIHwgMFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaW1pbGFyaXR5O1xyXG5cclxuICAgICAgICBpZiAoY3VycmVudElkeCA8IF9wYXRjaExhYmVsR3JpZC5kYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBjdXJyZW50UGF0Y2ggPSBfaW1hZ2VUb1BhdGNoR3JpZC5kYXRhW2N1cnJlbnRJZHhdO1xyXG4gICAgICAgICAgICAvLyBhc3NpZ24gbGFiZWxcclxuICAgICAgICAgICAgX3BhdGNoTGFiZWxHcmlkLmRhdGFbY3VycmVudElkeF0gPSBsYWJlbDtcclxuICAgICAgICAgICAgZm9yICggZGlyID0gMDsgZGlyIDwgVHJhY2VyLnNlYXJjaERpcmVjdGlvbnMubGVuZ3RoOyBkaXIrKykge1xyXG4gICAgICAgICAgICAgICAgeSA9IGN1cnJlbnQueSArIFRyYWNlci5zZWFyY2hEaXJlY3Rpb25zW2Rpcl1bMF07XHJcbiAgICAgICAgICAgICAgICB4ID0gY3VycmVudC54ICsgVHJhY2VyLnNlYXJjaERpcmVjdGlvbnNbZGlyXVsxXTtcclxuICAgICAgICAgICAgICAgIGlkeCA9IHkgKiBfcGF0Y2hMYWJlbEdyaWQuc2l6ZS54ICsgeDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBjb250aW51ZSBpZiBwYXRjaCBlbXB0eVxyXG4gICAgICAgICAgICAgICAgaWYgKF9wYXRjaEdyaWQuZGF0YVtpZHhdID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3BhdGNoTGFiZWxHcmlkLmRhdGFbaWR4XSA9IE51bWJlci5NQVhfVkFMVUU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKF9wYXRjaExhYmVsR3JpZC5kYXRhW2lkeF0gPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzaW1pbGFyaXR5ID0gTWF0aC5hYnModmVjMi5kb3QoX2ltYWdlVG9QYXRjaEdyaWQuZGF0YVtpZHhdLnZlYywgY3VycmVudFBhdGNoLnZlYykpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaW1pbGFyaXR5ID4gdGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlKGlkeCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHByZXBhcmUgZm9yIGZpbmRpbmcgdGhlIHJpZ2h0IHBhdGNoZXNcclxuICAgIEFycmF5SGVscGVyLmluaXQoX3BhdGNoR3JpZC5kYXRhLCAwKTtcclxuICAgIEFycmF5SGVscGVyLmluaXQoX3BhdGNoTGFiZWxHcmlkLmRhdGEsIDApO1xyXG4gICAgQXJyYXlIZWxwZXIuaW5pdChfaW1hZ2VUb1BhdGNoR3JpZC5kYXRhLCBudWxsKTtcclxuXHJcbiAgICBmb3IgKCBqID0gMDsgaiA8IHBhdGNoZXNGb3VuZC5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIHBhdGNoID0gcGF0Y2hlc0ZvdW5kW2pdO1xyXG4gICAgICAgIF9pbWFnZVRvUGF0Y2hHcmlkLmRhdGFbcGF0Y2guaW5kZXhdID0gcGF0Y2g7XHJcbiAgICAgICAgX3BhdGNoR3JpZC5kYXRhW3BhdGNoLmluZGV4XSA9IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmFzdGVyaXplIHRoZSBwYXRjaGVzIGZvdW5kIHRvIGRldGVybWluZSBhcmVhXHJcbiAgICBfcGF0Y2hHcmlkLnplcm9Cb3JkZXIoKTtcclxuXHJcbiAgICB3aGlsZSAoKCBjdXJySWR4ID0gbm90WWV0UHJvY2Vzc2VkKCkpIDwgX3BhdGNoTGFiZWxHcmlkLmRhdGEubGVuZ3RoKSB7XHJcbiAgICAgICAgbGFiZWwrKztcclxuICAgICAgICB0cmFjZShjdXJySWR4KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBkcmF3IHBhdGNoLWxhYmVscyBpZiByZXF1ZXN0ZWRcclxuICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQgJiYgX2NvbmZpZy5kZWJ1Zy5zaG93UGF0Y2hMYWJlbHMpIHtcclxuICAgICAgICBmb3IgKCBqID0gMDsgaiA8IF9wYXRjaExhYmVsR3JpZC5kYXRhLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmIChfcGF0Y2hMYWJlbEdyaWQuZGF0YVtqXSA+IDAgJiYgX3BhdGNoTGFiZWxHcmlkLmRhdGFbal0gPD0gbGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHBhdGNoID0gX2ltYWdlVG9QYXRjaEdyaWQuZGF0YVtqXTtcclxuICAgICAgICAgICAgICAgIGhzdlswXSA9IChfcGF0Y2hMYWJlbEdyaWQuZGF0YVtqXSAvIChsYWJlbCArIDEpKSAqIDM2MDtcclxuICAgICAgICAgICAgICAgIGhzdjJyZ2IoaHN2LCByZ2IpO1xyXG4gICAgICAgICAgICAgICAgSW1hZ2VEZWJ1Zy5kcmF3UmVjdChwYXRjaC5wb3MsIF9zdWJJbWFnZVdyYXBwZXIuc2l6ZSwgX2NhbnZhc0NvbnRhaW5lci5jdHguYmluYXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIHtjb2xvcjogXCJyZ2IoXCIgKyByZ2Iuam9pbihcIixcIikgKyBcIilcIiwgbGluZVdpZHRoOiAyfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBpbml0OiBmdW5jdGlvbihpbnB1dEltYWdlV3JhcHBlciwgY29uZmlnKSB7XHJcbiAgICAgICAgX2NvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICBfaW5wdXRJbWFnZVdyYXBwZXIgPSBpbnB1dEltYWdlV3JhcHBlcjtcclxuXHJcbiAgICAgICAgaW5pdEJ1ZmZlcnMoKTtcclxuICAgICAgICBpbml0Q2FudmFzKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGxvY2F0ZTogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIHBhdGNoZXNGb3VuZCxcclxuICAgICAgICAgICAgdG9wTGFiZWxzLFxyXG4gICAgICAgICAgICBib3hlcztcclxuXHJcbiAgICAgICAgaWYgKF9jb25maWcuaGFsZlNhbXBsZSkge1xyXG4gICAgICAgICAgICBoYWxmU2FtcGxlKF9pbnB1dEltYWdlV3JhcHBlciwgX2N1cnJlbnRJbWFnZVdyYXBwZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYmluYXJpemVJbWFnZSgpO1xyXG4gICAgICAgIHBhdGNoZXNGb3VuZCA9IGZpbmRQYXRjaGVzKCk7XHJcbiAgICAgICAgLy8gcmV0dXJuIHVubGVzcyA1JSBvciBtb3JlIHBhdGNoZXMgYXJlIGZvdW5kXHJcbiAgICAgICAgaWYgKHBhdGNoZXNGb3VuZC5sZW5ndGggPCBfbnVtUGF0Y2hlcy54ICogX251bVBhdGNoZXMueSAqIDAuMDUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByYXN0ZXJyaXplIGFyZWEgYnkgY29tcGFyaW5nIGFuZ3VsYXIgc2ltaWxhcml0eTtcclxuICAgICAgICB2YXIgbWF4TGFiZWwgPSByYXN0ZXJpemVBbmd1bGFyU2ltaWxhcml0eShwYXRjaGVzRm91bmQpO1xyXG4gICAgICAgIGlmIChtYXhMYWJlbCA8IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzZWFyY2ggZm9yIGFyZWEgd2l0aCB0aGUgbW9zdCBwYXRjaGVzIChiaWdnZXN0IGNvbm5lY3RlZCBhcmVhKVxyXG4gICAgICAgIHRvcExhYmVscyA9IGZpbmRCaWdnZXN0Q29ubmVjdGVkQXJlYXMobWF4TGFiZWwpO1xyXG4gICAgICAgIGlmICh0b3BMYWJlbHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYm94ZXMgPSBmaW5kQm94ZXModG9wTGFiZWxzLCBtYXhMYWJlbCk7XHJcbiAgICAgICAgcmV0dXJuIGJveGVzO1xyXG4gICAgfSxcclxuXHJcbiAgICBjaGVja0ltYWdlQ29uc3RyYWludHM6IGZ1bmN0aW9uKGlucHV0U3RyZWFtLCBjb25maWcpIHtcclxuICAgICAgICB2YXIgcGF0Y2hTaXplLFxyXG4gICAgICAgICAgICB3aWR0aCA9IGlucHV0U3RyZWFtLmdldFdpZHRoKCksXHJcbiAgICAgICAgICAgIGhlaWdodCA9IGlucHV0U3RyZWFtLmdldEhlaWdodCgpLFxyXG4gICAgICAgICAgICBoYWxmU2FtcGxlID0gY29uZmlnLmhhbGZTYW1wbGUgPyAwLjUgOiAxLFxyXG4gICAgICAgICAgICBzaXplLFxyXG4gICAgICAgICAgICBhcmVhO1xyXG5cclxuICAgICAgICAvLyBjYWxjdWxhdGUgd2lkdGggYW5kIGhlaWdodCBiYXNlZCBvbiBhcmVhXHJcbiAgICAgICAgaWYgKGlucHV0U3RyZWFtLmdldENvbmZpZygpLmFyZWEpIHtcclxuICAgICAgICAgICAgYXJlYSA9IGNvbXB1dGVJbWFnZUFyZWEod2lkdGgsIGhlaWdodCwgaW5wdXRTdHJlYW0uZ2V0Q29uZmlnKCkuYXJlYSk7XHJcbiAgICAgICAgICAgIGlucHV0U3RyZWFtLnNldFRvcFJpZ2h0KHt4OiBhcmVhLnN4LCB5OiBhcmVhLnN5fSk7XHJcbiAgICAgICAgICAgIGlucHV0U3RyZWFtLnNldENhbnZhc1NpemUoe3g6IHdpZHRoLCB5OiBoZWlnaHR9KTtcclxuICAgICAgICAgICAgd2lkdGggPSBhcmVhLnN3O1xyXG4gICAgICAgICAgICBoZWlnaHQgPSBhcmVhLnNoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2l6ZSA9IHtcclxuICAgICAgICAgICAgeDogTWF0aC5mbG9vcih3aWR0aCAqIGhhbGZTYW1wbGUpLFxyXG4gICAgICAgICAgICB5OiBNYXRoLmZsb29yKGhlaWdodCAqIGhhbGZTYW1wbGUpXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcGF0Y2hTaXplID0gY2FsY3VsYXRlUGF0Y2hTaXplKGNvbmZpZy5wYXRjaFNpemUsIHNpemUpO1xyXG4gICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJQYXRjaC1TaXplOiBcIiArIEpTT04uc3RyaW5naWZ5KHBhdGNoU2l6ZSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaW5wdXRTdHJlYW0uc2V0V2lkdGgoTWF0aC5mbG9vcihNYXRoLmZsb29yKHNpemUueCAvIHBhdGNoU2l6ZS54KSAqICgxIC8gaGFsZlNhbXBsZSkgKiBwYXRjaFNpemUueCkpO1xyXG4gICAgICAgIGlucHV0U3RyZWFtLnNldEhlaWdodChNYXRoLmZsb29yKE1hdGguZmxvb3Ioc2l6ZS55IC8gcGF0Y2hTaXplLnkpICogKDEgLyBoYWxmU2FtcGxlKSAqIHBhdGNoU2l6ZS55KSk7XHJcblxyXG4gICAgICAgIGlmICgoaW5wdXRTdHJlYW0uZ2V0V2lkdGgoKSAlIHBhdGNoU2l6ZS54KSA9PT0gMCAmJiAoaW5wdXRTdHJlYW0uZ2V0SGVpZ2h0KCkgJSBwYXRjaFNpemUueSkgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbWFnZSBkaW1lbnNpb25zIGRvIG5vdCBjb21wbHkgd2l0aCB0aGUgY3VycmVudCBzZXR0aW5nczogV2lkdGggKFwiICtcclxuICAgICAgICAgICAgd2lkdGggKyBcIiApYW5kIGhlaWdodCAoXCIgKyBoZWlnaHQgK1xyXG4gICAgICAgICAgICBcIikgbXVzdCBhIG11bHRpcGxlIG9mIFwiICsgcGF0Y2hTaXplLngpO1xyXG4gICAgfVxyXG59O1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9sb2NhdG9yL2JhcmNvZGVfbG9jYXRvci5qc1xuICoqLyIsImltcG9ydCBUcmFjZXIgZnJvbSAnLi90cmFjZXInO1xyXG5cclxuLyoqXHJcbiAqIGh0dHA6Ly93d3cuY29kZXByb2plY3QuY29tL1RpcHMvNDA3MTcyL0Nvbm5lY3RlZC1Db21wb25lbnQtTGFiZWxpbmctYW5kLVZlY3Rvcml6YXRpb25cclxuICovXHJcbnZhciBSYXN0ZXJpemVyID0ge1xyXG4gICAgY3JlYXRlQ29udG91cjJEOiBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkaXI6IG51bGwsXHJcbiAgICAgICAgICAgIGluZGV4OiBudWxsLFxyXG4gICAgICAgICAgICBmaXJzdFZlcnRleDogbnVsbCxcclxuICAgICAgICAgICAgaW5zaWRlQ29udG91cnM6IG51bGwsXHJcbiAgICAgICAgICAgIG5leHRwZWVyOiBudWxsLFxyXG4gICAgICAgICAgICBwcmV2cGVlcjogbnVsbFxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgQ09OVE9VUl9ESVI6IHtcclxuICAgICAgICBDV19ESVI6IDAsXHJcbiAgICAgICAgQ0NXX0RJUjogMSxcclxuICAgICAgICBVTktOT1dOX0RJUjogMlxyXG4gICAgfSxcclxuICAgIERJUjoge1xyXG4gICAgICAgIE9VVFNJREVfRURHRTogLTMyNzY3LFxyXG4gICAgICAgIElOU0lERV9FREdFOiAtMzI3NjZcclxuICAgIH0sXHJcbiAgICBjcmVhdGU6IGZ1bmN0aW9uKGltYWdlV3JhcHBlciwgbGFiZWxXcmFwcGVyKSB7XHJcbiAgICAgICAgdmFyIGltYWdlRGF0YSA9IGltYWdlV3JhcHBlci5kYXRhLFxyXG4gICAgICAgICAgICBsYWJlbERhdGEgPSBsYWJlbFdyYXBwZXIuZGF0YSxcclxuICAgICAgICAgICAgd2lkdGggPSBpbWFnZVdyYXBwZXIuc2l6ZS54LFxyXG4gICAgICAgICAgICBoZWlnaHQgPSBpbWFnZVdyYXBwZXIuc2l6ZS55LFxyXG4gICAgICAgICAgICB0cmFjZXIgPSBUcmFjZXIuY3JlYXRlKGltYWdlV3JhcHBlciwgbGFiZWxXcmFwcGVyKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmFzdGVyaXplOiBmdW5jdGlvbihkZXB0aGxhYmVsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgYmMsXHJcbiAgICAgICAgICAgICAgICAgICAgbGMsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBjeCxcclxuICAgICAgICAgICAgICAgICAgICBjeSxcclxuICAgICAgICAgICAgICAgICAgICBjb2xvck1hcCA9IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIHZlcnRleCxcclxuICAgICAgICAgICAgICAgICAgICBwLFxyXG4gICAgICAgICAgICAgICAgICAgIGNjLFxyXG4gICAgICAgICAgICAgICAgICAgIHNjLFxyXG4gICAgICAgICAgICAgICAgICAgIHBvcyxcclxuICAgICAgICAgICAgICAgICAgICBjb25uZWN0ZWRDb3VudCA9IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgaTtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IDQwMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3JNYXBbaV0gPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbG9yTWFwWzBdID0gaW1hZ2VEYXRhWzBdO1xyXG4gICAgICAgICAgICAgICAgY2MgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgZm9yICggY3kgPSAxOyBjeSA8IGhlaWdodCAtIDE7IGN5KyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbGluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBiYyA9IGNvbG9yTWFwWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoIGN4ID0gMTsgY3ggPCB3aWR0aCAtIDE7IGN4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gY3kgKiB3aWR0aCArIGN4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFiZWxEYXRhW3Bvc10gPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gaW1hZ2VEYXRhW3Bvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sb3IgIT09IGJjKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsaW5kZXggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGMgPSBjb25uZWN0ZWRDb3VudCArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTWFwW2xjXSA9IGNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYyA9IGNvbG9yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXggPSB0cmFjZXIuY29udG91clRyYWNpbmcoY3ksIGN4LCBsYywgY29sb3IsIFJhc3Rlcml6ZXIuRElSLk9VVFNJREVfRURHRSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJ0ZXggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RlZENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGluZGV4ID0gbGM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gUmFzdGVyaXplci5jcmVhdGVDb250b3VyMkQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuZGlyID0gUmFzdGVyaXplci5DT05UT1VSX0RJUi5DV19ESVI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmluZGV4ID0gbGFiZWxpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuZmlyc3RWZXJ0ZXggPSB2ZXJ0ZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLm5leHRwZWVyID0gY2M7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmluc2lkZUNvbnRvdXJzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLnByZXZwZWVyID0gcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjID0gcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRleCA9IHRyYWNlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRvdXJUcmFjaW5nKGN5LCBjeCwgUmFzdGVyaXplci5ESVIuSU5TSURFX0VER0UsIGNvbG9yLCBsYWJlbGluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnRleCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFJhc3Rlcml6ZXIuY3JlYXRlQ29udG91cjJEKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmZpcnN0VmVydGV4ID0gdmVydGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNpZGVDb250b3VycyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVwdGhsYWJlbCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuZGlyID0gUmFzdGVyaXplci5DT05UT1VSX0RJUi5DQ1dfRElSO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmRpciA9IFJhc3Rlcml6ZXIuQ09OVE9VUl9ESVIuQ1dfRElSO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5pbmRleCA9IGRlcHRobGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYyA9IGNjO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChzYyAhPT0gbnVsbCkgJiYgc2MuaW5kZXggIT09IGxhYmVsaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYyA9IHNjLm5leHRwZWVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5uZXh0cGVlciA9IHNjLmluc2lkZUNvbnRvdXJzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzYy5pbnNpZGVDb250b3VycyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYy5pbnNpZGVDb250b3Vycy5wcmV2cGVlciA9IHA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjLmluc2lkZUNvbnRvdXJzID0gcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxEYXRhW3Bvc10gPSBsYWJlbGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhYmVsRGF0YVtwb3NdID09PSBSYXN0ZXJpemVyLkRJUi5PVVRTSURFX0VER0VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBsYWJlbERhdGFbcG9zXSA9PT0gUmFzdGVyaXplci5ESVIuSU5TSURFX0VER0UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsRGF0YVtwb3NdID09PSBSYXN0ZXJpemVyLkRJUi5JTlNJREVfRURHRSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJjID0gaW1hZ2VEYXRhW3Bvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJjID0gY29sb3JNYXBbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGluZGV4ID0gbGFiZWxEYXRhW3Bvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYyA9IGNvbG9yTWFwW2xhYmVsaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc2MgPSBjYztcclxuICAgICAgICAgICAgICAgIHdoaWxlIChzYyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjLmluZGV4ID0gZGVwdGhsYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICBzYyA9IHNjLm5leHRwZWVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBjYzogY2MsXHJcbiAgICAgICAgICAgICAgICAgICAgY291bnQ6IGNvbm5lY3RlZENvdW50XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZWJ1Zzoge1xyXG4gICAgICAgICAgICAgICAgZHJhd0NvbnRvdXI6IGZ1bmN0aW9uKGNhbnZhcywgZmlyc3RDb250b3VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBxID0gZmlyc3RDb250b3VyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpcSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gXCJyZWRcIjtcclxuICAgICAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gXCJyZWRcIjtcclxuICAgICAgICAgICAgICAgICAgICBjdHgubGluZVdpZHRoID0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBxICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlxID0gcHEuaW5zaWRlQ29udG91cnM7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXEgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBxICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IGlxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXEgPSBpcS5uZXh0cGVlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEgPSBwcTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBxID0gcHEubmV4dHBlZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHEgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcSA9IHBxLmluc2lkZUNvbnRvdXJzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocS5kaXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBSYXN0ZXJpemVyLkNPTlRPVVJfRElSLkNXX0RJUjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IFwicmVkXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBSYXN0ZXJpemVyLkNPTlRPVVJfRElSLkNDV19ESVI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBcImJsdWVcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFJhc3Rlcml6ZXIuQ09OVE9VUl9ESVIuVU5LTk9XTl9ESVI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBcImdyZWVuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHEuZmlyc3RWZXJ0ZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3R4Lm1vdmVUbyhwLngsIHAueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBwLm5leHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgubGluZVRvKHAueCwgcC55KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAocCAhPT0gcS5maXJzdFZlcnRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgUmFzdGVyaXplcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvbG9jYXRvci9yYXN0ZXJpemVyLmpzXG4gKiovIiwiLyogQHByZXNlcnZlIEFTTSBCRUdJTiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEqL1xyXG5mdW5jdGlvbiBTa2VsZXRvbml6ZXIoc3RkbGliLCBmb3JlaWduLCBidWZmZXIpIHtcclxuICAgIFwidXNlIGFzbVwiO1xyXG5cclxuICAgIHZhciBpbWFnZXMgPSBuZXcgc3RkbGliLlVpbnQ4QXJyYXkoYnVmZmVyKSxcclxuICAgICAgICBzaXplID0gZm9yZWlnbi5zaXplIHwgMCxcclxuICAgICAgICBpbXVsID0gc3RkbGliLk1hdGguaW11bDtcclxuXHJcbiAgICBmdW5jdGlvbiBlcm9kZShpbkltYWdlUHRyLCBvdXRJbWFnZVB0cikge1xyXG4gICAgICAgIGluSW1hZ2VQdHIgPSBpbkltYWdlUHRyIHwgMDtcclxuICAgICAgICBvdXRJbWFnZVB0ciA9IG91dEltYWdlUHRyIHwgMDtcclxuXHJcbiAgICAgICAgdmFyIHYgPSAwLFxyXG4gICAgICAgICAgICB1ID0gMCxcclxuICAgICAgICAgICAgc3VtID0gMCxcclxuICAgICAgICAgICAgeVN0YXJ0MSA9IDAsXHJcbiAgICAgICAgICAgIHlTdGFydDIgPSAwLFxyXG4gICAgICAgICAgICB4U3RhcnQxID0gMCxcclxuICAgICAgICAgICAgeFN0YXJ0MiA9IDAsXHJcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XHJcblxyXG4gICAgICAgIGZvciAoIHYgPSAxOyAodiB8IDApIDwgKChzaXplIC0gMSkgfCAwKTsgdiA9ICh2ICsgMSkgfCAwKSB7XHJcbiAgICAgICAgICAgIG9mZnNldCA9IChvZmZzZXQgKyBzaXplKSB8IDA7XHJcbiAgICAgICAgICAgIGZvciAoIHUgPSAxOyAodSB8IDApIDwgKChzaXplIC0gMSkgfCAwKTsgdSA9ICh1ICsgMSkgfCAwKSB7XHJcbiAgICAgICAgICAgICAgICB5U3RhcnQxID0gKG9mZnNldCAtIHNpemUpIHwgMDtcclxuICAgICAgICAgICAgICAgIHlTdGFydDIgPSAob2Zmc2V0ICsgc2l6ZSkgfCAwO1xyXG4gICAgICAgICAgICAgICAgeFN0YXJ0MSA9ICh1IC0gMSkgfCAwO1xyXG4gICAgICAgICAgICAgICAgeFN0YXJ0MiA9ICh1ICsgMSkgfCAwO1xyXG4gICAgICAgICAgICAgICAgc3VtID0gKChpbWFnZXNbKGluSW1hZ2VQdHIgKyB5U3RhcnQxICsgeFN0YXJ0MSkgfCAwXSB8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKyAoaW1hZ2VzWyhpbkltYWdlUHRyICsgeVN0YXJ0MSArIHhTdGFydDIpIHwgMF0gfCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICsgKGltYWdlc1soaW5JbWFnZVB0ciArIG9mZnNldCArIHUpIHwgMF0gfCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICsgKGltYWdlc1soaW5JbWFnZVB0ciArIHlTdGFydDIgKyB4U3RhcnQxKSB8IDBdIHwgMClcclxuICAgICAgICAgICAgICAgICAgICArIChpbWFnZXNbKGluSW1hZ2VQdHIgKyB5U3RhcnQyICsgeFN0YXJ0MikgfCAwXSB8IDApKSB8IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoKHN1bSB8IDApID09ICg1IHwgMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZXNbKG91dEltYWdlUHRyICsgb2Zmc2V0ICsgdSkgfCAwXSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlc1sob3V0SW1hZ2VQdHIgKyBvZmZzZXQgKyB1KSB8IDBdID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gc3VidHJhY3QoYUltYWdlUHRyLCBiSW1hZ2VQdHIsIG91dEltYWdlUHRyKSB7XHJcbiAgICAgICAgYUltYWdlUHRyID0gYUltYWdlUHRyIHwgMDtcclxuICAgICAgICBiSW1hZ2VQdHIgPSBiSW1hZ2VQdHIgfCAwO1xyXG4gICAgICAgIG91dEltYWdlUHRyID0gb3V0SW1hZ2VQdHIgfCAwO1xyXG5cclxuICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuXHJcbiAgICAgICAgbGVuZ3RoID0gaW11bChzaXplLCBzaXplKSB8IDA7XHJcblxyXG4gICAgICAgIHdoaWxlICgobGVuZ3RoIHwgMCkgPiAwKSB7XHJcbiAgICAgICAgICAgIGxlbmd0aCA9IChsZW5ndGggLSAxKSB8IDA7XHJcbiAgICAgICAgICAgIGltYWdlc1sob3V0SW1hZ2VQdHIgKyBsZW5ndGgpIHwgMF0gPVxyXG4gICAgICAgICAgICAgICAgKChpbWFnZXNbKGFJbWFnZVB0ciArIGxlbmd0aCkgfCAwXSB8IDApIC0gKGltYWdlc1soYkltYWdlUHRyICsgbGVuZ3RoKSB8IDBdIHwgMCkpIHwgMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gYml0d2lzZU9yKGFJbWFnZVB0ciwgYkltYWdlUHRyLCBvdXRJbWFnZVB0cikge1xyXG4gICAgICAgIGFJbWFnZVB0ciA9IGFJbWFnZVB0ciB8IDA7XHJcbiAgICAgICAgYkltYWdlUHRyID0gYkltYWdlUHRyIHwgMDtcclxuICAgICAgICBvdXRJbWFnZVB0ciA9IG91dEltYWdlUHRyIHwgMDtcclxuXHJcbiAgICAgICAgdmFyIGxlbmd0aCA9IDA7XHJcblxyXG4gICAgICAgIGxlbmd0aCA9IGltdWwoc2l6ZSwgc2l6ZSkgfCAwO1xyXG5cclxuICAgICAgICB3aGlsZSAoKGxlbmd0aCB8IDApID4gMCkge1xyXG4gICAgICAgICAgICBsZW5ndGggPSAobGVuZ3RoIC0gMSkgfCAwO1xyXG4gICAgICAgICAgICBpbWFnZXNbKG91dEltYWdlUHRyICsgbGVuZ3RoKSB8IDBdID1cclxuICAgICAgICAgICAgICAgICgoaW1hZ2VzWyhhSW1hZ2VQdHIgKyBsZW5ndGgpIHwgMF0gfCAwKSB8IChpbWFnZXNbKGJJbWFnZVB0ciArIGxlbmd0aCkgfCAwXSB8IDApKSB8IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGNvdW50Tm9uWmVybyhpbWFnZVB0cikge1xyXG4gICAgICAgIGltYWdlUHRyID0gaW1hZ2VQdHIgfCAwO1xyXG5cclxuICAgICAgICB2YXIgc3VtID0gMCxcclxuICAgICAgICAgICAgbGVuZ3RoID0gMDtcclxuXHJcbiAgICAgICAgbGVuZ3RoID0gaW11bChzaXplLCBzaXplKSB8IDA7XHJcblxyXG4gICAgICAgIHdoaWxlICgobGVuZ3RoIHwgMCkgPiAwKSB7XHJcbiAgICAgICAgICAgIGxlbmd0aCA9IChsZW5ndGggLSAxKSB8IDA7XHJcbiAgICAgICAgICAgIHN1bSA9ICgoc3VtIHwgMCkgKyAoaW1hZ2VzWyhpbWFnZVB0ciArIGxlbmd0aCkgfCAwXSB8IDApKSB8IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKHN1bSB8IDApO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGluaXQoaW1hZ2VQdHIsIHZhbHVlKSB7XHJcbiAgICAgICAgaW1hZ2VQdHIgPSBpbWFnZVB0ciB8IDA7XHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSB8IDA7XHJcblxyXG4gICAgICAgIHZhciBsZW5ndGggPSAwO1xyXG5cclxuICAgICAgICBsZW5ndGggPSBpbXVsKHNpemUsIHNpemUpIHwgMDtcclxuXHJcbiAgICAgICAgd2hpbGUgKChsZW5ndGggfCAwKSA+IDApIHtcclxuICAgICAgICAgICAgbGVuZ3RoID0gKGxlbmd0aCAtIDEpIHwgMDtcclxuICAgICAgICAgICAgaW1hZ2VzWyhpbWFnZVB0ciArIGxlbmd0aCkgfCAwXSA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkaWxhdGUoaW5JbWFnZVB0ciwgb3V0SW1hZ2VQdHIpIHtcclxuICAgICAgICBpbkltYWdlUHRyID0gaW5JbWFnZVB0ciB8IDA7XHJcbiAgICAgICAgb3V0SW1hZ2VQdHIgPSBvdXRJbWFnZVB0ciB8IDA7XHJcblxyXG4gICAgICAgIHZhciB2ID0gMCxcclxuICAgICAgICAgICAgdSA9IDAsXHJcbiAgICAgICAgICAgIHN1bSA9IDAsXHJcbiAgICAgICAgICAgIHlTdGFydDEgPSAwLFxyXG4gICAgICAgICAgICB5U3RhcnQyID0gMCxcclxuICAgICAgICAgICAgeFN0YXJ0MSA9IDAsXHJcbiAgICAgICAgICAgIHhTdGFydDIgPSAwLFxyXG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xyXG5cclxuICAgICAgICBmb3IgKCB2ID0gMTsgKHYgfCAwKSA8ICgoc2l6ZSAtIDEpIHwgMCk7IHYgPSAodiArIDEpIHwgMCkge1xyXG4gICAgICAgICAgICBvZmZzZXQgPSAob2Zmc2V0ICsgc2l6ZSkgfCAwO1xyXG4gICAgICAgICAgICBmb3IgKCB1ID0gMTsgKHUgfCAwKSA8ICgoc2l6ZSAtIDEpIHwgMCk7IHUgPSAodSArIDEpIHwgMCkge1xyXG4gICAgICAgICAgICAgICAgeVN0YXJ0MSA9IChvZmZzZXQgLSBzaXplKSB8IDA7XHJcbiAgICAgICAgICAgICAgICB5U3RhcnQyID0gKG9mZnNldCArIHNpemUpIHwgMDtcclxuICAgICAgICAgICAgICAgIHhTdGFydDEgPSAodSAtIDEpIHwgMDtcclxuICAgICAgICAgICAgICAgIHhTdGFydDIgPSAodSArIDEpIHwgMDtcclxuICAgICAgICAgICAgICAgIHN1bSA9ICgoaW1hZ2VzWyhpbkltYWdlUHRyICsgeVN0YXJ0MSArIHhTdGFydDEpIHwgMF0gfCAwKVxyXG4gICAgICAgICAgICAgICAgICAgICsgKGltYWdlc1soaW5JbWFnZVB0ciArIHlTdGFydDEgKyB4U3RhcnQyKSB8IDBdIHwgMClcclxuICAgICAgICAgICAgICAgICAgICArIChpbWFnZXNbKGluSW1hZ2VQdHIgKyBvZmZzZXQgKyB1KSB8IDBdIHwgMClcclxuICAgICAgICAgICAgICAgICAgICArIChpbWFnZXNbKGluSW1hZ2VQdHIgKyB5U3RhcnQyICsgeFN0YXJ0MSkgfCAwXSB8IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKyAoaW1hZ2VzWyhpbkltYWdlUHRyICsgeVN0YXJ0MiArIHhTdGFydDIpIHwgMF0gfCAwKSkgfCAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKChzdW0gfCAwKSA+ICgwIHwgMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZXNbKG91dEltYWdlUHRyICsgb2Zmc2V0ICsgdSkgfCAwXSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlc1sob3V0SW1hZ2VQdHIgKyBvZmZzZXQgKyB1KSB8IDBdID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbWVtY3B5KHNyY0ltYWdlUHRyLCBkc3RJbWFnZVB0cikge1xyXG4gICAgICAgIHNyY0ltYWdlUHRyID0gc3JjSW1hZ2VQdHIgfCAwO1xyXG4gICAgICAgIGRzdEltYWdlUHRyID0gZHN0SW1hZ2VQdHIgfCAwO1xyXG5cclxuICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuXHJcbiAgICAgICAgbGVuZ3RoID0gaW11bChzaXplLCBzaXplKSB8IDA7XHJcblxyXG4gICAgICAgIHdoaWxlICgobGVuZ3RoIHwgMCkgPiAwKSB7XHJcbiAgICAgICAgICAgIGxlbmd0aCA9IChsZW5ndGggLSAxKSB8IDA7XHJcbiAgICAgICAgICAgIGltYWdlc1soZHN0SW1hZ2VQdHIgKyBsZW5ndGgpIHwgMF0gPSAoaW1hZ2VzWyhzcmNJbWFnZVB0ciArIGxlbmd0aCkgfCAwXSB8IDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB6ZXJvQm9yZGVyKGltYWdlUHRyKSB7XHJcbiAgICAgICAgaW1hZ2VQdHIgPSBpbWFnZVB0ciB8IDA7XHJcblxyXG4gICAgICAgIHZhciB4ID0gMCxcclxuICAgICAgICAgICAgeSA9IDA7XHJcblxyXG4gICAgICAgIGZvciAoIHggPSAwOyAoeCB8IDApIDwgKChzaXplIC0gMSkgfCAwKTsgeCA9ICh4ICsgMSkgfCAwKSB7XHJcbiAgICAgICAgICAgIGltYWdlc1soaW1hZ2VQdHIgKyB4KSB8IDBdID0gMDtcclxuICAgICAgICAgICAgaW1hZ2VzWyhpbWFnZVB0ciArIHkpIHwgMF0gPSAwO1xyXG4gICAgICAgICAgICB5ID0gKCh5ICsgc2l6ZSkgLSAxKSB8IDA7XHJcbiAgICAgICAgICAgIGltYWdlc1soaW1hZ2VQdHIgKyB5KSB8IDBdID0gMDtcclxuICAgICAgICAgICAgeSA9ICh5ICsgMSkgfCAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKCB4ID0gMDsgKHggfCAwKSA8IChzaXplIHwgMCk7IHggPSAoeCArIDEpIHwgMCkge1xyXG4gICAgICAgICAgICBpbWFnZXNbKGltYWdlUHRyICsgeSkgfCAwXSA9IDA7XHJcbiAgICAgICAgICAgIHkgPSAoeSArIDEpIHwgMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gc2tlbGV0b25pemUoKSB7XHJcbiAgICAgICAgdmFyIHN1YkltYWdlUHRyID0gMCxcclxuICAgICAgICAgICAgZXJvZGVkSW1hZ2VQdHIgPSAwLFxyXG4gICAgICAgICAgICB0ZW1wSW1hZ2VQdHIgPSAwLFxyXG4gICAgICAgICAgICBza2VsSW1hZ2VQdHIgPSAwLFxyXG4gICAgICAgICAgICBzdW0gPSAwLFxyXG4gICAgICAgICAgICBkb25lID0gMDtcclxuXHJcbiAgICAgICAgZXJvZGVkSW1hZ2VQdHIgPSBpbXVsKHNpemUsIHNpemUpIHwgMDtcclxuICAgICAgICB0ZW1wSW1hZ2VQdHIgPSAoZXJvZGVkSW1hZ2VQdHIgKyBlcm9kZWRJbWFnZVB0cikgfCAwO1xyXG4gICAgICAgIHNrZWxJbWFnZVB0ciA9ICh0ZW1wSW1hZ2VQdHIgKyBlcm9kZWRJbWFnZVB0cikgfCAwO1xyXG5cclxuICAgICAgICAvLyBpbml0IHNrZWwtaW1hZ2VcclxuICAgICAgICBpbml0KHNrZWxJbWFnZVB0ciwgMCk7XHJcbiAgICAgICAgemVyb0JvcmRlcihzdWJJbWFnZVB0cik7XHJcblxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgZXJvZGUoc3ViSW1hZ2VQdHIsIGVyb2RlZEltYWdlUHRyKTtcclxuICAgICAgICAgICAgZGlsYXRlKGVyb2RlZEltYWdlUHRyLCB0ZW1wSW1hZ2VQdHIpO1xyXG4gICAgICAgICAgICBzdWJ0cmFjdChzdWJJbWFnZVB0ciwgdGVtcEltYWdlUHRyLCB0ZW1wSW1hZ2VQdHIpO1xyXG4gICAgICAgICAgICBiaXR3aXNlT3Ioc2tlbEltYWdlUHRyLCB0ZW1wSW1hZ2VQdHIsIHNrZWxJbWFnZVB0cik7XHJcbiAgICAgICAgICAgIG1lbWNweShlcm9kZWRJbWFnZVB0ciwgc3ViSW1hZ2VQdHIpO1xyXG4gICAgICAgICAgICBzdW0gPSBjb3VudE5vblplcm8oc3ViSW1hZ2VQdHIpIHwgMDtcclxuICAgICAgICAgICAgZG9uZSA9ICgoc3VtIHwgMCkgPT0gMCB8IDApO1xyXG4gICAgICAgIH0gd2hpbGUgKCFkb25lKTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc2tlbGV0b25pemU6IHNrZWxldG9uaXplXHJcbiAgICB9O1xyXG59XHJcbi8qIEBwcmVzZXJ2ZSBBU00gRU5EICovXHJcbmV4cG9ydCBkZWZhdWx0IFNrZWxldG9uaXplcjtcclxuLyogZXNsaW50LWVuYWJsZSBlcWVxZXEqL1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9sb2NhdG9yL3NrZWxldG9uaXplci5qc1xuICoqLyIsImltcG9ydCBCYXJjb2RlUmVhZGVyIGZyb20gJy4vYmFyY29kZV9yZWFkZXInO1xyXG5cclxuZnVuY3Rpb24gQ29kYWJhclJlYWRlcigpIHtcclxuICAgIEJhcmNvZGVSZWFkZXIuY2FsbCh0aGlzKTtcclxuICAgIHRoaXMuX2NvdW50ZXJzID0gW107XHJcbn1cclxuXHJcbnZhciBwcm9wZXJ0aWVzID0ge1xyXG4gICAgQUxQSEFCRVRIX1NUUklORzoge3ZhbHVlOiBcIjAxMjM0NTY3ODktJDovLitBQkNEXCJ9LFxyXG4gICAgQUxQSEFCRVQ6IHt2YWx1ZTogWzQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA0NSwgMzYsIDU4LCA0NywgNDYsIDQzLCA2NSwgNjYsIDY3LCA2OF19LFxyXG4gICAgQ0hBUkFDVEVSX0VOQ09ESU5HUzoge3ZhbHVlOiBbMHgwMDMsIDB4MDA2LCAweDAwOSwgMHgwNjAsIDB4MDEyLCAweDA0MiwgMHgwMjEsIDB4MDI0LCAweDAzMCwgMHgwNDgsIDB4MDBjLCAweDAxOCxcclxuICAgICAgICAweDA0NSwgMHgwNTEsIDB4MDU0LCAweDAxNSwgMHgwMUEsIDB4MDI5LCAweDAwQiwgMHgwMEVdfSxcclxuICAgIFNUQVJUX0VORDoge3ZhbHVlOiBbMHgwMUEsIDB4MDI5LCAweDAwQiwgMHgwMEVdfSxcclxuICAgIE1JTl9FTkNPREVEX0NIQVJTOiB7dmFsdWU6IDR9LFxyXG4gICAgTUFYX0FDQ0VQVEFCTEU6IHt2YWx1ZTogMi4wfSxcclxuICAgIFBBRERJTkc6IHt2YWx1ZTogMS41fSxcclxuICAgIEZPUk1BVDoge3ZhbHVlOiBcImNvZGFiYXJcIiwgd3JpdGVhYmxlOiBmYWxzZX1cclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCYXJjb2RlUmVhZGVyLnByb3RvdHlwZSwgcHJvcGVydGllcyk7XHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29kYWJhclJlYWRlcjtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICByZXN1bHQgPSBbXSxcclxuICAgICAgICBzdGFydCxcclxuICAgICAgICBkZWNvZGVkQ2hhcixcclxuICAgICAgICBwYXR0ZXJuLFxyXG4gICAgICAgIG5leHRTdGFydCxcclxuICAgICAgICBlbmQ7XHJcblxyXG4gICAgdGhpcy5fY291bnRlcnMgPSBzZWxmLl9maWxsQ291bnRlcnMoKTtcclxuICAgIHN0YXJ0ID0gc2VsZi5fZmluZFN0YXJ0KCk7XHJcbiAgICBpZiAoIXN0YXJ0KSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBuZXh0U3RhcnQgPSBzdGFydC5zdGFydENvdW50ZXI7XHJcblxyXG4gICAgZG8ge1xyXG4gICAgICAgIHBhdHRlcm4gPSBzZWxmLl90b1BhdHRlcm4obmV4dFN0YXJ0KTtcclxuICAgICAgICBpZiAocGF0dGVybiA8IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlY29kZWRDaGFyID0gc2VsZi5fcGF0dGVyblRvQ2hhcihwYXR0ZXJuKTtcclxuICAgICAgICBpZiAoZGVjb2RlZENoYXIgPCAwKXtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGRlY29kZWRDaGFyKTtcclxuICAgICAgICBuZXh0U3RhcnQgKz0gODtcclxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDEgJiYgc2VsZi5faXNTdGFydEVuZChwYXR0ZXJuKSkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9IHdoaWxlIChuZXh0U3RhcnQgPCBzZWxmLl9jb3VudGVycy5sZW5ndGgpO1xyXG5cclxuICAgIC8vIHZlcmlmeSBlbmRcclxuICAgIGlmICgocmVzdWx0Lmxlbmd0aCAtIDIpIDwgc2VsZi5NSU5fRU5DT0RFRF9DSEFSUyB8fCAhc2VsZi5faXNTdGFydEVuZChwYXR0ZXJuKSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHZlcmlmeSBlbmQgd2hpdGUgc3BhY2VcclxuICAgIGlmICghc2VsZi5fdmVyaWZ5V2hpdGVzcGFjZShzdGFydC5zdGFydENvdW50ZXIsIG5leHRTdGFydCAtIDgpKXtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXNlbGYuX3ZhbGlkYXRlUmVzdWx0KHJlc3VsdCwgc3RhcnQuc3RhcnRDb3VudGVyKSl7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbmV4dFN0YXJ0ID0gbmV4dFN0YXJ0ID4gc2VsZi5fY291bnRlcnMubGVuZ3RoID8gc2VsZi5fY291bnRlcnMubGVuZ3RoIDogbmV4dFN0YXJ0O1xyXG4gICAgZW5kID0gc3RhcnQuc3RhcnQgKyBzZWxmLl9zdW1Db3VudGVycyhzdGFydC5zdGFydENvdW50ZXIsIG5leHRTdGFydCAtIDgpO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogcmVzdWx0LmpvaW4oXCJcIiksXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0LnN0YXJ0LFxyXG4gICAgICAgIGVuZDogZW5kLFxyXG4gICAgICAgIHN0YXJ0SW5mbzogc3RhcnQsXHJcbiAgICAgICAgZGVjb2RlZENvZGVzOiByZXN1bHRcclxuICAgIH07XHJcbn07XHJcblxyXG5Db2RhYmFyUmVhZGVyLnByb3RvdHlwZS5fdmVyaWZ5V2hpdGVzcGFjZSA9IGZ1bmN0aW9uKHN0YXJ0Q291bnRlciwgZW5kQ291bnRlcikge1xyXG4gICAgaWYgKChzdGFydENvdW50ZXIgLSAxIDw9IDApXHJcbiAgICAgICAgICAgIHx8IHRoaXMuX2NvdW50ZXJzW3N0YXJ0Q291bnRlciAtIDFdID49ICh0aGlzLl9jYWxjdWxhdGVQYXR0ZXJuTGVuZ3RoKHN0YXJ0Q291bnRlcikgLyAyLjApKSB7XHJcbiAgICAgICAgaWYgKChlbmRDb3VudGVyICsgOCA+PSB0aGlzLl9jb3VudGVycy5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICB8fCB0aGlzLl9jb3VudGVyc1tlbmRDb3VudGVyICsgN10gPj0gKHRoaXMuX2NhbGN1bGF0ZVBhdHRlcm5MZW5ndGgoZW5kQ291bnRlcikgLyAyLjApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl9jYWxjdWxhdGVQYXR0ZXJuTGVuZ3RoID0gZnVuY3Rpb24ob2Zmc2V0KSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBzdW0gPSAwO1xyXG5cclxuICAgIGZvciAoaSA9IG9mZnNldDsgaSA8IG9mZnNldCArIDc7IGkrKykge1xyXG4gICAgICAgIHN1bSArPSB0aGlzLl9jb3VudGVyc1tpXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3VtO1xyXG59O1xyXG5cclxuQ29kYWJhclJlYWRlci5wcm90b3R5cGUuX3RocmVzaG9sZFJlc3VsdFBhdHRlcm4gPSBmdW5jdGlvbihyZXN1bHQsIHN0YXJ0Q291bnRlcil7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgY2F0ZWdvcml6YXRpb24gPSB7XHJcbiAgICAgICAgICAgIHNwYWNlOiB7XHJcbiAgICAgICAgICAgICAgICBuYXJyb3c6IHsgc2l6ZTogMCwgY291bnRzOiAwLCBtaW46IDAsIG1heDogTnVtYmVyLk1BWF9WQUxVRX0sXHJcbiAgICAgICAgICAgICAgICB3aWRlOiB7c2l6ZTogMCwgY291bnRzOiAwLCBtaW46IDAsIG1heDogTnVtYmVyLk1BWF9WQUxVRX1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYmFyOiB7XHJcbiAgICAgICAgICAgICAgICBuYXJyb3c6IHsgc2l6ZTogMCwgY291bnRzOiAwLCBtaW46IDAsIG1heDogTnVtYmVyLk1BWF9WQUxVRX0sXHJcbiAgICAgICAgICAgICAgICB3aWRlOiB7IHNpemU6IDAsIGNvdW50czogMCwgbWluOiAwLCBtYXg6IE51bWJlci5NQVhfVkFMVUV9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGtpbmQsXHJcbiAgICAgICAgY2F0LFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgaixcclxuICAgICAgICBwb3MgPSBzdGFydENvdW50ZXIsXHJcbiAgICAgICAgcGF0dGVybjtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKXtcclxuICAgICAgICBwYXR0ZXJuID0gc2VsZi5fY2hhclRvUGF0dGVybihyZXN1bHRbaV0pO1xyXG4gICAgICAgIGZvciAoaiA9IDY7IGogPj0gMDsgai0tKSB7XHJcbiAgICAgICAgICAgIGtpbmQgPSAoaiAmIDEpID09PSAyID8gY2F0ZWdvcml6YXRpb24uYmFyIDogY2F0ZWdvcml6YXRpb24uc3BhY2U7XHJcbiAgICAgICAgICAgIGNhdCA9IChwYXR0ZXJuICYgMSkgPT09IDEgPyBraW5kLndpZGUgOiBraW5kLm5hcnJvdztcclxuICAgICAgICAgICAgY2F0LnNpemUgKz0gc2VsZi5fY291bnRlcnNbcG9zICsgal07XHJcbiAgICAgICAgICAgIGNhdC5jb3VudHMrKztcclxuICAgICAgICAgICAgcGF0dGVybiA+Pj0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcG9zICs9IDg7XHJcbiAgICB9XHJcblxyXG4gICAgW1wic3BhY2VcIiwgXCJiYXJcIl0uZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICB2YXIgbmV3a2luZCA9IGNhdGVnb3JpemF0aW9uW2tleV07XHJcbiAgICAgICAgbmV3a2luZC53aWRlLm1pbiA9XHJcbiAgICAgICAgICAgIE1hdGguZmxvb3IoKG5ld2tpbmQubmFycm93LnNpemUgLyBuZXdraW5kLm5hcnJvdy5jb3VudHMgKyBuZXdraW5kLndpZGUuc2l6ZSAvIG5ld2tpbmQud2lkZS5jb3VudHMpIC8gMik7XHJcbiAgICAgICAgbmV3a2luZC5uYXJyb3cubWF4ID0gTWF0aC5jZWlsKG5ld2tpbmQud2lkZS5taW4pO1xyXG4gICAgICAgIG5ld2tpbmQud2lkZS5tYXggPSBNYXRoLmNlaWwoKG5ld2tpbmQud2lkZS5zaXplICogc2VsZi5NQVhfQUNDRVBUQUJMRSArIHNlbGYuUEFERElORykgLyBuZXdraW5kLndpZGUuY291bnRzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjYXRlZ29yaXphdGlvbjtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl9jaGFyVG9QYXR0ZXJuID0gZnVuY3Rpb24oY2hhcikge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIGNoYXJDb2RlID0gY2hhci5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgIGk7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHNlbGYuQUxQSEFCRVQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoc2VsZi5BTFBIQUJFVFtpXSA9PT0gY2hhckNvZGUpe1xyXG4gICAgICAgICAgICByZXR1cm4gc2VsZi5DSEFSQUNURVJfRU5DT0RJTkdTW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAweDA7XHJcbn07XHJcblxyXG5Db2RhYmFyUmVhZGVyLnByb3RvdHlwZS5fdmFsaWRhdGVSZXN1bHQgPSBmdW5jdGlvbihyZXN1bHQsIHN0YXJ0Q291bnRlcikge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHRocmVzaG9sZHMgPSBzZWxmLl90aHJlc2hvbGRSZXN1bHRQYXR0ZXJuKHJlc3VsdCwgc3RhcnRDb3VudGVyKSxcclxuICAgICAgICBpLFxyXG4gICAgICAgIGosXHJcbiAgICAgICAga2luZCxcclxuICAgICAgICBjYXQsXHJcbiAgICAgICAgc2l6ZSxcclxuICAgICAgICBwb3MgPSBzdGFydENvdW50ZXIsXHJcbiAgICAgICAgcGF0dGVybjtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgcGF0dGVybiA9IHNlbGYuX2NoYXJUb1BhdHRlcm4ocmVzdWx0W2ldKTtcclxuICAgICAgICBmb3IgKGogPSA2OyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICBraW5kID0gKGogJiAxKSA9PT0gMCA/IHRocmVzaG9sZHMuYmFyIDogdGhyZXNob2xkcy5zcGFjZTtcclxuICAgICAgICAgICAgY2F0ID0gKHBhdHRlcm4gJiAxKSA9PT0gMSA/IGtpbmQud2lkZSA6IGtpbmQubmFycm93O1xyXG4gICAgICAgICAgICBzaXplID0gc2VsZi5fY291bnRlcnNbcG9zICsgal07XHJcbiAgICAgICAgICAgIGlmIChzaXplIDwgY2F0Lm1pbiB8fCBzaXplID4gY2F0Lm1heCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhdHRlcm4gPj49IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvcyArPSA4O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn07XHJcblxyXG5Db2RhYmFyUmVhZGVyLnByb3RvdHlwZS5fcGF0dGVyblRvQ2hhciA9IGZ1bmN0aW9uKHBhdHRlcm4pIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLkNIQVJBQ1RFUl9FTkNPRElOR1MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoc2VsZi5DSEFSQUNURVJfRU5DT0RJTkdTW2ldID09PSBwYXR0ZXJuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHNlbGYuQUxQSEFCRVRbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl9jb21wdXRlQWx0ZXJuYXRpbmdUaHJlc2hvbGQgPSBmdW5jdGlvbihvZmZzZXQsIGVuZCkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgbWluID0gTnVtYmVyLk1BWF9WQUxVRSxcclxuICAgICAgICBtYXggPSAwLFxyXG4gICAgICAgIGNvdW50ZXI7XHJcblxyXG4gICAgZm9yIChpID0gb2Zmc2V0OyBpIDwgZW5kOyBpICs9IDIpe1xyXG4gICAgICAgIGNvdW50ZXIgPSB0aGlzLl9jb3VudGVyc1tpXTtcclxuICAgICAgICBpZiAoY291bnRlciA+IG1heCkge1xyXG4gICAgICAgICAgICBtYXggPSBjb3VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY291bnRlciA8IG1pbikge1xyXG4gICAgICAgICAgICBtaW4gPSBjb3VudGVyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKChtaW4gKyBtYXgpIC8gMi4wKSB8IDA7XHJcbn07XHJcblxyXG5Db2RhYmFyUmVhZGVyLnByb3RvdHlwZS5fdG9QYXR0ZXJuID0gZnVuY3Rpb24ob2Zmc2V0KSB7XHJcbiAgICB2YXIgbnVtQ291bnRlcnMgPSA3LFxyXG4gICAgICAgIGVuZCA9IG9mZnNldCArIG51bUNvdW50ZXJzLFxyXG4gICAgICAgIGJhclRocmVzaG9sZCxcclxuICAgICAgICBzcGFjZVRocmVzaG9sZCxcclxuICAgICAgICBiaXRtYXNrID0gMSA8PCAobnVtQ291bnRlcnMgLSAxKSxcclxuICAgICAgICBwYXR0ZXJuID0gMCxcclxuICAgICAgICBpLFxyXG4gICAgICAgIHRocmVzaG9sZDtcclxuXHJcbiAgICBpZiAoZW5kID4gdGhpcy5fY291bnRlcnMubGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG5cclxuICAgIGJhclRocmVzaG9sZCA9IHRoaXMuX2NvbXB1dGVBbHRlcm5hdGluZ1RocmVzaG9sZChvZmZzZXQsIGVuZCk7XHJcbiAgICBzcGFjZVRocmVzaG9sZCA9IHRoaXMuX2NvbXB1dGVBbHRlcm5hdGluZ1RocmVzaG9sZChvZmZzZXQgKyAxLCBlbmQpO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBudW1Db3VudGVyczsgaSsrKXtcclxuICAgICAgICB0aHJlc2hvbGQgPSAoaSAmIDEpID09PSAwID8gYmFyVGhyZXNob2xkIDogc3BhY2VUaHJlc2hvbGQ7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvdW50ZXJzW29mZnNldCArIGldID4gdGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgIHBhdHRlcm4gfD0gYml0bWFzaztcclxuICAgICAgICB9XHJcbiAgICAgICAgYml0bWFzayA+Pj0gMTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGF0dGVybjtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl9pc1N0YXJ0RW5kID0gZnVuY3Rpb24ocGF0dGVybikge1xyXG4gICAgdmFyIGk7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMuU1RBUlRfRU5ELmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuU1RBUlRfRU5EW2ldID09PSBwYXR0ZXJuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufTtcclxuXHJcbkNvZGFiYXJSZWFkZXIucHJvdG90eXBlLl9zdW1Db3VudGVycyA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHN1bSA9IDA7XHJcblxyXG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykge1xyXG4gICAgICAgIHN1bSArPSB0aGlzLl9jb3VudGVyc1tpXTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdW07XHJcbn07XHJcblxyXG5Db2RhYmFyUmVhZGVyLnByb3RvdHlwZS5fZmluZFN0YXJ0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBwYXR0ZXJuLFxyXG4gICAgICAgIHN0YXJ0ID0gc2VsZi5fbmV4dFVuc2V0KHNlbGYuX3JvdyksXHJcbiAgICAgICAgZW5kO1xyXG5cclxuICAgIGZvciAoaSA9IDE7IGkgPCB0aGlzLl9jb3VudGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHBhdHRlcm4gPSBzZWxmLl90b1BhdHRlcm4oaSk7XHJcbiAgICAgICAgaWYgKHBhdHRlcm4gIT09IC0xICYmIHNlbGYuX2lzU3RhcnRFbmQocGF0dGVybikpIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogTG9vayBmb3Igd2hpdGVzcGFjZSBhaGVhZFxyXG4gICAgICAgICAgICBzdGFydCArPSBzZWxmLl9zdW1Db3VudGVycygwLCBpKTtcclxuICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBzZWxmLl9zdW1Db3VudGVycyhpLCBpICsgOCk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQsXHJcbiAgICAgICAgICAgICAgICBlbmQ6IGVuZCxcclxuICAgICAgICAgICAgICAgIHN0YXJ0Q291bnRlcjogaSxcclxuICAgICAgICAgICAgICAgIGVuZENvdW50ZXI6IGkgKyA4XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQ29kYWJhclJlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL2NvZGFiYXJfcmVhZGVyLmpzXG4gKiovIiwiaW1wb3J0IEJhcmNvZGVSZWFkZXIgZnJvbSAnLi9iYXJjb2RlX3JlYWRlcic7XHJcblxyXG5mdW5jdGlvbiBDb2RlMTI4UmVhZGVyKCkge1xyXG4gICAgQmFyY29kZVJlYWRlci5jYWxsKHRoaXMpO1xyXG59XHJcblxyXG52YXIgcHJvcGVydGllcyA9IHtcclxuICAgIENPREVfU0hJRlQ6IHt2YWx1ZTogOTh9LFxyXG4gICAgQ09ERV9DOiB7dmFsdWU6IDk5fSxcclxuICAgIENPREVfQjoge3ZhbHVlOiAxMDB9LFxyXG4gICAgQ09ERV9BOiB7dmFsdWU6IDEwMX0sXHJcbiAgICBTVEFSVF9DT0RFX0E6IHt2YWx1ZTogMTAzfSxcclxuICAgIFNUQVJUX0NPREVfQjoge3ZhbHVlOiAxMDR9LFxyXG4gICAgU1RBUlRfQ09ERV9DOiB7dmFsdWU6IDEwNX0sXHJcbiAgICBTVE9QX0NPREU6IHt2YWx1ZTogMTA2fSxcclxuICAgIENPREVfUEFUVEVSTjoge3ZhbHVlOiBbXHJcbiAgICAgICAgWzIsIDEsIDIsIDIsIDIsIDJdLFxyXG4gICAgICAgIFsyLCAyLCAyLCAxLCAyLCAyXSxcclxuICAgICAgICBbMiwgMiwgMiwgMiwgMiwgMV0sXHJcbiAgICAgICAgWzEsIDIsIDEsIDIsIDIsIDNdLFxyXG4gICAgICAgIFsxLCAyLCAxLCAzLCAyLCAyXSxcclxuICAgICAgICBbMSwgMywgMSwgMiwgMiwgMl0sXHJcbiAgICAgICAgWzEsIDIsIDIsIDIsIDEsIDNdLFxyXG4gICAgICAgIFsxLCAyLCAyLCAzLCAxLCAyXSxcclxuICAgICAgICBbMSwgMywgMiwgMiwgMSwgMl0sXHJcbiAgICAgICAgWzIsIDIsIDEsIDIsIDEsIDNdLFxyXG4gICAgICAgIFsyLCAyLCAxLCAzLCAxLCAyXSxcclxuICAgICAgICBbMiwgMywgMSwgMiwgMSwgMl0sXHJcbiAgICAgICAgWzEsIDEsIDIsIDIsIDMsIDJdLFxyXG4gICAgICAgIFsxLCAyLCAyLCAxLCAzLCAyXSxcclxuICAgICAgICBbMSwgMiwgMiwgMiwgMywgMV0sXHJcbiAgICAgICAgWzEsIDEsIDMsIDIsIDIsIDJdLFxyXG4gICAgICAgIFsxLCAyLCAzLCAxLCAyLCAyXSxcclxuICAgICAgICBbMSwgMiwgMywgMiwgMiwgMV0sXHJcbiAgICAgICAgWzIsIDIsIDMsIDIsIDEsIDFdLFxyXG4gICAgICAgIFsyLCAyLCAxLCAxLCAzLCAyXSxcclxuICAgICAgICBbMiwgMiwgMSwgMiwgMywgMV0sXHJcbiAgICAgICAgWzIsIDEsIDMsIDIsIDEsIDJdLFxyXG4gICAgICAgIFsyLCAyLCAzLCAxLCAxLCAyXSxcclxuICAgICAgICBbMywgMSwgMiwgMSwgMywgMV0sXHJcbiAgICAgICAgWzMsIDEsIDEsIDIsIDIsIDJdLFxyXG4gICAgICAgIFszLCAyLCAxLCAxLCAyLCAyXSxcclxuICAgICAgICBbMywgMiwgMSwgMiwgMiwgMV0sXHJcbiAgICAgICAgWzMsIDEsIDIsIDIsIDEsIDJdLFxyXG4gICAgICAgIFszLCAyLCAyLCAxLCAxLCAyXSxcclxuICAgICAgICBbMywgMiwgMiwgMiwgMSwgMV0sXHJcbiAgICAgICAgWzIsIDEsIDIsIDEsIDIsIDNdLFxyXG4gICAgICAgIFsyLCAxLCAyLCAzLCAyLCAxXSxcclxuICAgICAgICBbMiwgMywgMiwgMSwgMiwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDEsIDMsIDIsIDNdLFxyXG4gICAgICAgIFsxLCAzLCAxLCAxLCAyLCAzXSxcclxuICAgICAgICBbMSwgMywgMSwgMywgMiwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDIsIDMsIDEsIDNdLFxyXG4gICAgICAgIFsxLCAzLCAyLCAxLCAxLCAzXSxcclxuICAgICAgICBbMSwgMywgMiwgMywgMSwgMV0sXHJcbiAgICAgICAgWzIsIDEsIDEsIDMsIDEsIDNdLFxyXG4gICAgICAgIFsyLCAzLCAxLCAxLCAxLCAzXSxcclxuICAgICAgICBbMiwgMywgMSwgMywgMSwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDIsIDEsIDMsIDNdLFxyXG4gICAgICAgIFsxLCAxLCAyLCAzLCAzLCAxXSxcclxuICAgICAgICBbMSwgMywgMiwgMSwgMywgMV0sXHJcbiAgICAgICAgWzEsIDEsIDMsIDEsIDIsIDNdLFxyXG4gICAgICAgIFsxLCAxLCAzLCAzLCAyLCAxXSxcclxuICAgICAgICBbMSwgMywgMywgMSwgMiwgMV0sXHJcbiAgICAgICAgWzMsIDEsIDMsIDEsIDIsIDFdLFxyXG4gICAgICAgIFsyLCAxLCAxLCAzLCAzLCAxXSxcclxuICAgICAgICBbMiwgMywgMSwgMSwgMywgMV0sXHJcbiAgICAgICAgWzIsIDEsIDMsIDEsIDEsIDNdLFxyXG4gICAgICAgIFsyLCAxLCAzLCAzLCAxLCAxXSxcclxuICAgICAgICBbMiwgMSwgMywgMSwgMywgMV0sXHJcbiAgICAgICAgWzMsIDEsIDEsIDEsIDIsIDNdLFxyXG4gICAgICAgIFszLCAxLCAxLCAzLCAyLCAxXSxcclxuICAgICAgICBbMywgMywgMSwgMSwgMiwgMV0sXHJcbiAgICAgICAgWzMsIDEsIDIsIDEsIDEsIDNdLFxyXG4gICAgICAgIFszLCAxLCAyLCAzLCAxLCAxXSxcclxuICAgICAgICBbMywgMywgMiwgMSwgMSwgMV0sXHJcbiAgICAgICAgWzMsIDEsIDQsIDEsIDEsIDFdLFxyXG4gICAgICAgIFsyLCAyLCAxLCA0LCAxLCAxXSxcclxuICAgICAgICBbNCwgMywgMSwgMSwgMSwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDEsIDIsIDIsIDRdLFxyXG4gICAgICAgIFsxLCAxLCAxLCA0LCAyLCAyXSxcclxuICAgICAgICBbMSwgMiwgMSwgMSwgMiwgNF0sXHJcbiAgICAgICAgWzEsIDIsIDEsIDQsIDIsIDFdLFxyXG4gICAgICAgIFsxLCA0LCAxLCAxLCAyLCAyXSxcclxuICAgICAgICBbMSwgNCwgMSwgMiwgMiwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDIsIDIsIDEsIDRdLFxyXG4gICAgICAgIFsxLCAxLCAyLCA0LCAxLCAyXSxcclxuICAgICAgICBbMSwgMiwgMiwgMSwgMSwgNF0sXHJcbiAgICAgICAgWzEsIDIsIDIsIDQsIDEsIDFdLFxyXG4gICAgICAgIFsxLCA0LCAyLCAxLCAxLCAyXSxcclxuICAgICAgICBbMSwgNCwgMiwgMiwgMSwgMV0sXHJcbiAgICAgICAgWzIsIDQsIDEsIDIsIDEsIDFdLFxyXG4gICAgICAgIFsyLCAyLCAxLCAxLCAxLCA0XSxcclxuICAgICAgICBbNCwgMSwgMywgMSwgMSwgMV0sXHJcbiAgICAgICAgWzIsIDQsIDEsIDEsIDEsIDJdLFxyXG4gICAgICAgIFsxLCAzLCA0LCAxLCAxLCAxXSxcclxuICAgICAgICBbMSwgMSwgMSwgMiwgNCwgMl0sXHJcbiAgICAgICAgWzEsIDIsIDEsIDEsIDQsIDJdLFxyXG4gICAgICAgIFsxLCAyLCAxLCAyLCA0LCAxXSxcclxuICAgICAgICBbMSwgMSwgNCwgMiwgMSwgMl0sXHJcbiAgICAgICAgWzEsIDIsIDQsIDEsIDEsIDJdLFxyXG4gICAgICAgIFsxLCAyLCA0LCAyLCAxLCAxXSxcclxuICAgICAgICBbNCwgMSwgMSwgMiwgMSwgMl0sXHJcbiAgICAgICAgWzQsIDIsIDEsIDEsIDEsIDJdLFxyXG4gICAgICAgIFs0LCAyLCAxLCAyLCAxLCAxXSxcclxuICAgICAgICBbMiwgMSwgMiwgMSwgNCwgMV0sXHJcbiAgICAgICAgWzIsIDEsIDQsIDEsIDIsIDFdLFxyXG4gICAgICAgIFs0LCAxLCAyLCAxLCAyLCAxXSxcclxuICAgICAgICBbMSwgMSwgMSwgMSwgNCwgM10sXHJcbiAgICAgICAgWzEsIDEsIDEsIDMsIDQsIDFdLFxyXG4gICAgICAgIFsxLCAzLCAxLCAxLCA0LCAxXSxcclxuICAgICAgICBbMSwgMSwgNCwgMSwgMSwgM10sXHJcbiAgICAgICAgWzEsIDEsIDQsIDMsIDEsIDFdLFxyXG4gICAgICAgIFs0LCAxLCAxLCAxLCAxLCAzXSxcclxuICAgICAgICBbNCwgMSwgMSwgMywgMSwgMV0sXHJcbiAgICAgICAgWzEsIDEsIDMsIDEsIDQsIDFdLFxyXG4gICAgICAgIFsxLCAxLCA0LCAxLCAzLCAxXSxcclxuICAgICAgICBbMywgMSwgMSwgMSwgNCwgMV0sXHJcbiAgICAgICAgWzQsIDEsIDEsIDEsIDMsIDFdLFxyXG4gICAgICAgIFsyLCAxLCAxLCA0LCAxLCAyXSxcclxuICAgICAgICBbMiwgMSwgMSwgMiwgMSwgNF0sXHJcbiAgICAgICAgWzIsIDEsIDEsIDIsIDMsIDJdLFxyXG4gICAgICAgIFsyLCAzLCAzLCAxLCAxLCAxLCAyXVxyXG4gICAgXX0sXHJcbiAgICBTSU5HTEVfQ09ERV9FUlJPUjoge3ZhbHVlOiAwLjY0fSxcclxuICAgIEFWR19DT0RFX0VSUk9SOiB7dmFsdWU6IDAuMzB9LFxyXG4gICAgRk9STUFUOiB7dmFsdWU6IFwiY29kZV8xMjhcIiwgd3JpdGVhYmxlOiBmYWxzZX0sXHJcbiAgICBNT0RVTEVfSU5ESUNFUzoge3ZhbHVlOiB7YmFyOiBbMCwgMiwgNF0sIHNwYWNlOiBbMSwgMywgNV19fVxyXG59O1xyXG5cclxuQ29kZTEyOFJlYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJhcmNvZGVSZWFkZXIucHJvdG90eXBlLCBwcm9wZXJ0aWVzKTtcclxuQ29kZTEyOFJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb2RlMTI4UmVhZGVyO1xyXG5cclxuQ29kZTEyOFJlYWRlci5wcm90b3R5cGUuX2RlY29kZUNvZGUgPSBmdW5jdGlvbihzdGFydCwgY29ycmVjdGlvbikge1xyXG4gICAgdmFyIGNvdW50ZXIgPSBbMCwgMCwgMCwgMCwgMCwgMF0sXHJcbiAgICAgICAgaSxcclxuICAgICAgICBzZWxmID0gdGhpcyxcclxuICAgICAgICBvZmZzZXQgPSBzdGFydCxcclxuICAgICAgICBpc1doaXRlID0gIXNlbGYuX3Jvd1tvZmZzZXRdLFxyXG4gICAgICAgIGNvdW50ZXJQb3MgPSAwLFxyXG4gICAgICAgIGJlc3RNYXRjaCA9IHtcclxuICAgICAgICAgICAgZXJyb3I6IE51bWJlci5NQVhfVkFMVUUsXHJcbiAgICAgICAgICAgIGNvZGU6IC0xLFxyXG4gICAgICAgICAgICBzdGFydDogc3RhcnQsXHJcbiAgICAgICAgICAgIGVuZDogc3RhcnQsXHJcbiAgICAgICAgICAgIGNvcnJlY3Rpb246IHtcclxuICAgICAgICAgICAgICAgIGJhcjogMSxcclxuICAgICAgICAgICAgICAgIHNwYWNlOiAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgZXJyb3I7XHJcblxyXG4gICAgZm9yICggaSA9IG9mZnNldDsgaSA8IHNlbGYuX3Jvdy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChzZWxmLl9yb3dbaV0gXiBpc1doaXRlKSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10rKztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoY291bnRlclBvcyA9PT0gY291bnRlci5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29ycmVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvcnJlY3QoY291bnRlciwgY29ycmVjdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgc2VsZi5DT0RFX1BBVFRFUk4ubGVuZ3RoOyBjb2RlKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNlbGYuX21hdGNoUGF0dGVybihjb3VudGVyLCBzZWxmLkNPREVfUEFUVEVSTltjb2RlXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIDwgYmVzdE1hdGNoLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb2RlID0gY29kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVycm9yID0gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVuZCA9IGk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYmVzdE1hdGNoLmNvZGUgPT09IC0xIHx8IGJlc3RNYXRjaC5lcnJvciA+IHNlbGYuQVZHX0NPREVfRVJST1IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChzZWxmLkNPREVfUEFUVEVSTltiZXN0TWF0Y2guY29kZV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guY29ycmVjdGlvbi5iYXIgPSBjYWxjdWxhdGVDb3JyZWN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkNPREVfUEFUVEVSTltiZXN0TWF0Y2guY29kZV0sIGNvdW50ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTU9EVUxFX0lORElDRVMuYmFyKTtcclxuICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guY29ycmVjdGlvbi5zcGFjZSA9IGNhbGN1bGF0ZUNvcnJlY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ09ERV9QQVRURVJOW2Jlc3RNYXRjaC5jb2RlXSwgY291bnRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NT0RVTEVfSU5ESUNFUy5zcGFjZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYmVzdE1hdGNoO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY291bnRlclBvcysrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvdW50ZXJbY291bnRlclBvc10gPSAxO1xyXG4gICAgICAgICAgICBpc1doaXRlID0gIWlzV2hpdGU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5Db2RlMTI4UmVhZGVyLnByb3RvdHlwZS5fY29ycmVjdCA9IGZ1bmN0aW9uKGNvdW50ZXIsIGNvcnJlY3Rpb24pIHtcclxuICAgIHRoaXMuX2NvcnJlY3RCYXJzKGNvdW50ZXIsIGNvcnJlY3Rpb24uYmFyLCB0aGlzLk1PRFVMRV9JTkRJQ0VTLmJhcik7XHJcbiAgICB0aGlzLl9jb3JyZWN0QmFycyhjb3VudGVyLCBjb3JyZWN0aW9uLnNwYWNlLCB0aGlzLk1PRFVMRV9JTkRJQ0VTLnNwYWNlKTtcclxufTtcclxuXHJcbkNvZGUxMjhSZWFkZXIucHJvdG90eXBlLl9maW5kU3RhcnQgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBjb3VudGVyID0gWzAsIDAsIDAsIDAsIDAsIDBdLFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgb2Zmc2V0ID0gc2VsZi5fbmV4dFNldChzZWxmLl9yb3cpLFxyXG4gICAgICAgIGlzV2hpdGUgPSBmYWxzZSxcclxuICAgICAgICBjb3VudGVyUG9zID0gMCxcclxuICAgICAgICBiZXN0TWF0Y2ggPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiBOdW1iZXIuTUFYX1ZBTFVFLFxyXG4gICAgICAgICAgICBjb2RlOiAtMSxcclxuICAgICAgICAgICAgc3RhcnQ6IDAsXHJcbiAgICAgICAgICAgIGVuZDogMCxcclxuICAgICAgICAgICAgY29ycmVjdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgYmFyOiAxLFxyXG4gICAgICAgICAgICAgICAgc3BhY2U6IDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICBlcnJvcixcclxuICAgICAgICBqLFxyXG4gICAgICAgIHN1bTtcclxuXHJcbiAgICBmb3IgKCBpID0gb2Zmc2V0OyBpIDwgc2VsZi5fcm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb3VudGVyUG9zID09PSBjb3VudGVyLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIHN1bSA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IGNvdW50ZXIubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gY291bnRlcltqXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZvciAoY29kZSA9IHNlbGYuU1RBUlRfQ09ERV9BOyBjb2RlIDw9IHNlbGYuU1RBUlRfQ09ERV9DOyBjb2RlKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNlbGYuX21hdGNoUGF0dGVybihjb3VudGVyLCBzZWxmLkNPREVfUEFUVEVSTltjb2RlXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIDwgYmVzdE1hdGNoLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb2RlID0gY29kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVycm9yID0gZXJyb3I7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGJlc3RNYXRjaC5lcnJvciA8IHNlbGYuQVZHX0NPREVfRVJST1IpIHtcclxuICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2guc3RhcnQgPSBpIC0gc3VtO1xyXG4gICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lbmQgPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb3JyZWN0aW9uLmJhciA9IGNhbGN1bGF0ZUNvcnJlY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQ09ERV9QQVRURVJOW2Jlc3RNYXRjaC5jb2RlXSwgY291bnRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5NT0RVTEVfSU5ESUNFUy5iYXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5jb3JyZWN0aW9uLnNwYWNlID0gY2FsY3VsYXRlQ29ycmVjdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5DT0RFX1BBVFRFUk5bYmVzdE1hdGNoLmNvZGVdLCBjb3VudGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk1PRFVMRV9JTkRJQ0VTLnNwYWNlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmVzdE1hdGNoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgNDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRlcltqXSA9IGNvdW50ZXJbaiArIDJdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY291bnRlcls0XSA9IDA7XHJcbiAgICAgICAgICAgICAgICBjb3VudGVyWzVdID0gMDtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MtLTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuQ29kZTEyOFJlYWRlci5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHN0YXJ0SW5mbyA9IHNlbGYuX2ZpbmRTdGFydCgpLFxyXG4gICAgICAgIGNvZGUgPSBudWxsLFxyXG4gICAgICAgIGRvbmUgPSBmYWxzZSxcclxuICAgICAgICByZXN1bHQgPSBbXSxcclxuICAgICAgICBtdWx0aXBsaWVyID0gMCxcclxuICAgICAgICBjaGVja3N1bSA9IDAsXHJcbiAgICAgICAgY29kZXNldCxcclxuICAgICAgICByYXdSZXN1bHQgPSBbXSxcclxuICAgICAgICBkZWNvZGVkQ29kZXMgPSBbXSxcclxuICAgICAgICBzaGlmdE5leHQgPSBmYWxzZSxcclxuICAgICAgICB1bnNoaWZ0LFxyXG4gICAgICAgIHJlbW92ZUxhc3RDaGFyYWN0ZXIgPSB0cnVlO1xyXG5cclxuICAgIGlmIChzdGFydEluZm8gPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvZGUgPSB7XHJcbiAgICAgICAgY29kZTogc3RhcnRJbmZvLmNvZGUsXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0SW5mby5zdGFydCxcclxuICAgICAgICBlbmQ6IHN0YXJ0SW5mby5lbmQsXHJcbiAgICAgICAgY29ycmVjdGlvbjoge1xyXG4gICAgICAgICAgICBiYXI6IHN0YXJ0SW5mby5jb3JyZWN0aW9uLmJhcixcclxuICAgICAgICAgICAgc3BhY2U6IHN0YXJ0SW5mby5jb3JyZWN0aW9uLnNwYWNlXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGRlY29kZWRDb2Rlcy5wdXNoKGNvZGUpO1xyXG4gICAgY2hlY2tzdW0gPSBjb2RlLmNvZGU7XHJcbiAgICBzd2l0Y2ggKGNvZGUuY29kZSkge1xyXG4gICAgY2FzZSBzZWxmLlNUQVJUX0NPREVfQTpcclxuICAgICAgICBjb2Rlc2V0ID0gc2VsZi5DT0RFX0E7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIHNlbGYuU1RBUlRfQ09ERV9COlxyXG4gICAgICAgIGNvZGVzZXQgPSBzZWxmLkNPREVfQjtcclxuICAgICAgICBicmVhaztcclxuICAgIGNhc2Ugc2VsZi5TVEFSVF9DT0RFX0M6XHJcbiAgICAgICAgY29kZXNldCA9IHNlbGYuQ09ERV9DO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB3aGlsZSAoIWRvbmUpIHtcclxuICAgICAgICB1bnNoaWZ0ID0gc2hpZnROZXh0O1xyXG4gICAgICAgIHNoaWZ0TmV4dCA9IGZhbHNlO1xyXG4gICAgICAgIGNvZGUgPSBzZWxmLl9kZWNvZGVDb2RlKGNvZGUuZW5kLCBjb2RlLmNvcnJlY3Rpb24pO1xyXG4gICAgICAgIGlmIChjb2RlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2RlLmNvZGUgIT09IHNlbGYuU1RPUF9DT0RFKSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVMYXN0Q2hhcmFjdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvZGUuY29kZSAhPT0gc2VsZi5TVE9QX0NPREUpIHtcclxuICAgICAgICAgICAgICAgIHJhd1Jlc3VsdC5wdXNoKGNvZGUuY29kZSk7XHJcbiAgICAgICAgICAgICAgICBtdWx0aXBsaWVyKys7XHJcbiAgICAgICAgICAgICAgICBjaGVja3N1bSArPSBtdWx0aXBsaWVyICogY29kZS5jb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlY29kZWRDb2Rlcy5wdXNoKGNvZGUpO1xyXG5cclxuICAgICAgICAgICAgc3dpdGNoIChjb2Rlc2V0KSB7XHJcbiAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX0E6XHJcbiAgICAgICAgICAgICAgICBpZiAoY29kZS5jb2RlIDwgNjQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDMyICsgY29kZS5jb2RlKSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUuY29kZSA8IDk2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlLmNvZGUgLSA2NCkpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZS5jb2RlICE9PSBzZWxmLlNUT1BfQ09ERSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMYXN0Q2hhcmFjdGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29kZS5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLkNPREVfU0hJRlQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0TmV4dCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzZXQgPSBzZWxmLkNPREVfQjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLkNPREVfQjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNldCA9IHNlbGYuQ09ERV9CO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYuQ09ERV9DOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc2V0ID0gc2VsZi5DT0RFX0M7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5TVE9QX0NPREU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBzZWxmLkNPREVfQjpcclxuICAgICAgICAgICAgICAgIGlmIChjb2RlLmNvZGUgPCA5Nikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMzIgKyBjb2RlLmNvZGUpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUuY29kZSAhPT0gc2VsZi5TVE9QX0NPREUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTGFzdENoYXJhY3RlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX1NISUZUOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaGlmdE5leHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc2V0ID0gc2VsZi5DT0RFX0E7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX0E6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzZXQgPSBzZWxmLkNPREVfQTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLkNPREVfQzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNldCA9IHNlbGYuQ09ERV9DO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYuU1RPUF9DT0RFOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX0M6XHJcbiAgICAgICAgICAgICAgICBpZiAoY29kZS5jb2RlIDwgMTAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY29kZS5jb2RlIDwgMTAgPyBcIjBcIiArIGNvZGUuY29kZSA6IGNvZGUuY29kZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlLmNvZGUgIT09IHNlbGYuU1RPUF9DT0RFKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUxhc3RDaGFyYWN0ZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIHNlbGYuQ09ERV9BOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc2V0ID0gc2VsZi5DT0RFX0E7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2Ugc2VsZi5DT0RFX0I6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzZXQgPSBzZWxmLkNPREVfQjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBzZWxmLlNUT1BfQ09ERTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZG9uZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh1bnNoaWZ0KSB7XHJcbiAgICAgICAgICAgIGNvZGVzZXQgPSBjb2Rlc2V0ID09PSBzZWxmLkNPREVfQSA/IHNlbGYuQ09ERV9CIDogc2VsZi5DT0RFX0E7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb2RlID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29kZS5lbmQgPSBzZWxmLl9uZXh0VW5zZXQoc2VsZi5fcm93LCBjb2RlLmVuZCk7XHJcbiAgICBpZiAoIXNlbGYuX3ZlcmlmeVRyYWlsaW5nV2hpdGVzcGFjZShjb2RlKSl7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tzdW0gLT0gbXVsdGlwbGllciAqIHJhd1Jlc3VsdFtyYXdSZXN1bHQubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoY2hlY2tzdW0gJSAxMDMgIT09IHJhd1Jlc3VsdFtyYXdSZXN1bHQubGVuZ3RoIC0gMV0pIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXJlc3VsdC5sZW5ndGgpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZW1vdmUgbGFzdCBjb2RlIGZyb20gcmVzdWx0IChjaGVja3N1bSlcclxuICAgIGlmIChyZW1vdmVMYXN0Q2hhcmFjdGVyKSB7XHJcbiAgICAgICAgcmVzdWx0LnNwbGljZShyZXN1bHQubGVuZ3RoIC0gMSwgMSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogcmVzdWx0LmpvaW4oXCJcIiksXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0SW5mby5zdGFydCxcclxuICAgICAgICBlbmQ6IGNvZGUuZW5kLFxyXG4gICAgICAgIGNvZGVzZXQ6IGNvZGVzZXQsXHJcbiAgICAgICAgc3RhcnRJbmZvOiBzdGFydEluZm8sXHJcbiAgICAgICAgZGVjb2RlZENvZGVzOiBkZWNvZGVkQ29kZXMsXHJcbiAgICAgICAgZW5kSW5mbzogY29kZVxyXG4gICAgfTtcclxufTtcclxuXHJcblxyXG5CYXJjb2RlUmVhZGVyLnByb3RvdHlwZS5fdmVyaWZ5VHJhaWxpbmdXaGl0ZXNwYWNlID0gZnVuY3Rpb24oZW5kSW5mbykge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHRyYWlsaW5nV2hpdGVzcGFjZUVuZDtcclxuXHJcbiAgICB0cmFpbGluZ1doaXRlc3BhY2VFbmQgPSBlbmRJbmZvLmVuZCArICgoZW5kSW5mby5lbmQgLSBlbmRJbmZvLnN0YXJ0KSAvIDIpO1xyXG4gICAgaWYgKHRyYWlsaW5nV2hpdGVzcGFjZUVuZCA8IHNlbGYuX3Jvdy5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoc2VsZi5fbWF0Y2hSYW5nZShlbmRJbmZvLmVuZCwgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kLCAwKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZW5kSW5mbztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZUNvcnJlY3Rpb24oZXhwZWN0ZWQsIG5vcm1hbGl6ZWQsIGluZGljZXMpIHtcclxuICAgIHZhciBsZW5ndGggPSBpbmRpY2VzLmxlbmd0aCxcclxuICAgICAgICBzdW1Ob3JtYWxpemVkID0gMCxcclxuICAgICAgICBzdW1FeHBlY3RlZCA9IDA7XHJcblxyXG4gICAgd2hpbGUobGVuZ3RoLS0pIHtcclxuICAgICAgICBzdW1FeHBlY3RlZCArPSBleHBlY3RlZFtpbmRpY2VzW2xlbmd0aF1dO1xyXG4gICAgICAgIHN1bU5vcm1hbGl6ZWQgKz0gbm9ybWFsaXplZFtpbmRpY2VzW2xlbmd0aF1dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1bUV4cGVjdGVkL3N1bU5vcm1hbGl6ZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IENvZGUxMjhSZWFkZXI7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL3JlYWRlci9jb2RlXzEyOF9yZWFkZXIuanNcbiAqKi8iLCJpbXBvcnQgQ29kZTM5UmVhZGVyIGZyb20gJy4vY29kZV8zOV9yZWFkZXInO1xyXG5cclxuZnVuY3Rpb24gQ29kZTM5VklOUmVhZGVyKCkge1xyXG4gICAgQ29kZTM5UmVhZGVyLmNhbGwodGhpcyk7XHJcbn1cclxuXHJcbnZhciBwYXR0ZXJucyA9IHtcclxuICAgIElPUTogL1tJT1FdL2csXHJcbiAgICBBWjA5OiAvW0EtWjAtOV17MTd9L1xyXG59O1xyXG5cclxuQ29kZTM5VklOUmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQ29kZTM5UmVhZGVyLnByb3RvdHlwZSk7XHJcbkNvZGUzOVZJTlJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDb2RlMzlWSU5SZWFkZXI7XHJcblxyXG4vLyBDcmliYmVkIGZyb206XHJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96eGluZy96eGluZy9ibG9iL21hc3Rlci9jb3JlL3NyYy9tYWluL2phdmEvY29tL2dvb2dsZS96eGluZy9jbGllbnQvcmVzdWx0L1ZJTlJlc3VsdFBhcnNlci5qYXZhXHJcbkNvZGUzOVZJTlJlYWRlci5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHJlc3VsdCA9IENvZGUzOVJlYWRlci5wcm90b3R5cGUuX2RlY29kZS5hcHBseSh0aGlzKTtcclxuICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGNvZGUgPSByZXN1bHQuY29kZTtcclxuXHJcbiAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb2RlID0gY29kZS5yZXBsYWNlKHBhdHRlcm5zLklPUSwgJycpO1xyXG5cclxuICAgIGlmICghY29kZS5tYXRjaChwYXR0ZXJucy5BWjA5KSkge1xyXG4gICAgICAgIGlmIChFTlYuZGV2ZWxvcG1lbnQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZhaWxlZCBBWjA5IHBhdHRlcm4gY29kZTonLCBjb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLl9jaGVja0NoZWNrc3VtKGNvZGUpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdWx0LmNvZGUgPSBjb2RlO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbkNvZGUzOVZJTlJlYWRlci5wcm90b3R5cGUuX2NoZWNrQ2hlY2tzdW0gPSBmdW5jdGlvbihjb2RlKSB7XHJcbiAgICAvLyBUT0RPXHJcbiAgICByZXR1cm4gISFjb2RlO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQ29kZTM5VklOUmVhZGVyO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWFkZXIvY29kZV8zOV92aW5fcmVhZGVyLmpzXG4gKiovIiwiaW1wb3J0IEVBTlJlYWRlciBmcm9tICcuL2Vhbl9yZWFkZXInO1xyXG5cclxuZnVuY3Rpb24gRUFOMlJlYWRlcigpIHtcclxuICAgIEVBTlJlYWRlci5jYWxsKHRoaXMpO1xyXG59XHJcblxyXG52YXIgcHJvcGVydGllcyA9IHtcclxuICAgIEZPUk1BVDoge3ZhbHVlOiBcImVhbl8yXCIsIHdyaXRlYWJsZTogZmFsc2V9XHJcbn07XHJcblxyXG5FQU4yUmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRUFOUmVhZGVyLnByb3RvdHlwZSwgcHJvcGVydGllcyk7XHJcbkVBTjJSZWFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRUFOMlJlYWRlcjtcclxuXHJcbkVBTjJSZWFkZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHJvdywgc3RhcnQpIHtcclxuICAgIHRoaXMuX3JvdyA9IHJvdztcclxuICAgIHZhciBjb3VudGVycyA9IFswLCAwLCAwLCAwXSxcclxuICAgICAgICBjb2RlRnJlcXVlbmN5ID0gMCxcclxuICAgICAgICBpID0gMCxcclxuICAgICAgICBvZmZzZXQgPSBzdGFydCxcclxuICAgICAgICBlbmQgPSB0aGlzLl9yb3cubGVuZ3RoLFxyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgcmVzdWx0ID0gW10sXHJcbiAgICAgICAgZGVjb2RlZENvZGVzID0gW107XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IDIgJiYgb2Zmc2V0IDwgZW5kOyBpKyspIHtcclxuICAgICAgICBjb2RlID0gdGhpcy5fZGVjb2RlQ29kZShvZmZzZXQpO1xyXG4gICAgICAgIGlmICghY29kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goY29kZS5jb2RlICUgMTApO1xyXG4gICAgICAgIGlmIChjb2RlLmNvZGUgPj0gdGhpcy5DT0RFX0dfU1RBUlQpIHtcclxuICAgICAgICAgICAgY29kZUZyZXF1ZW5jeSB8PSAxIDw8ICgxIC0gaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpICE9IDEpIHtcclxuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5fbmV4dFNldCh0aGlzLl9yb3csIGNvZGUuZW5kKTtcclxuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5fbmV4dFVuc2V0KHRoaXMuX3Jvdywgb2Zmc2V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggIT0gMiB8fCAocGFyc2VJbnQocmVzdWx0LmpvaW4oXCJcIikpICUgNCkgICE9PSBjb2RlRnJlcXVlbmN5KSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGU6IHJlc3VsdC5qb2luKFwiXCIpLFxyXG4gICAgICAgIGRlY29kZWRDb2RlcyxcclxuICAgICAgICBlbmQ6IGNvZGUuZW5kXHJcbiAgICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgRUFOMlJlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL2Vhbl8yX3JlYWRlci5qc1xuICoqLyIsImltcG9ydCBFQU5SZWFkZXIgZnJvbSAnLi9lYW5fcmVhZGVyJztcclxuXHJcbmZ1bmN0aW9uIEVBTjVSZWFkZXIoKSB7XHJcbiAgICBFQU5SZWFkZXIuY2FsbCh0aGlzKTtcclxufVxyXG5cclxudmFyIHByb3BlcnRpZXMgPSB7XHJcbiAgICBGT1JNQVQ6IHt2YWx1ZTogXCJlYW5fNVwiLCB3cml0ZWFibGU6IGZhbHNlfVxyXG59O1xyXG5cclxuY29uc3QgQ0hFQ0tfRElHSVRfRU5DT0RJTkdTID0gWzI0LCAyMCwgMTgsIDE3LCAxMiwgNiwgMywgMTAsIDksIDVdO1xyXG5cclxuRUFONVJlYWRlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVBTlJlYWRlci5wcm90b3R5cGUsIHByb3BlcnRpZXMpO1xyXG5FQU41UmVhZGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEVBTjVSZWFkZXI7XHJcblxyXG5FQU41UmVhZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbihyb3csIHN0YXJ0KSB7XHJcbiAgICB0aGlzLl9yb3cgPSByb3c7XHJcbiAgICB2YXIgY291bnRlcnMgPSBbMCwgMCwgMCwgMF0sXHJcbiAgICAgICAgY29kZUZyZXF1ZW5jeSA9IDAsXHJcbiAgICAgICAgaSA9IDAsXHJcbiAgICAgICAgb2Zmc2V0ID0gc3RhcnQsXHJcbiAgICAgICAgZW5kID0gdGhpcy5fcm93Lmxlbmd0aCxcclxuICAgICAgICBjb2RlLFxyXG4gICAgICAgIHJlc3VsdCA9IFtdLFxyXG4gICAgICAgIGRlY29kZWRDb2RlcyA9IFtdO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCA1ICYmIG9mZnNldCA8IGVuZDsgaSsrKSB7XHJcbiAgICAgICAgY29kZSA9IHRoaXMuX2RlY29kZUNvZGUob2Zmc2V0KTtcclxuICAgICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlY29kZWRDb2Rlcy5wdXNoKGNvZGUpO1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKGNvZGUuY29kZSAlIDEwKTtcclxuICAgICAgICBpZiAoY29kZS5jb2RlID49IHRoaXMuQ09ERV9HX1NUQVJUKSB7XHJcbiAgICAgICAgICAgIGNvZGVGcmVxdWVuY3kgfD0gMSA8PCAoNCAtIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaSAhPSA0KSB7XHJcbiAgICAgICAgICAgIG9mZnNldCA9IHRoaXMuX25leHRTZXQodGhpcy5fcm93LCBjb2RlLmVuZCk7XHJcbiAgICAgICAgICAgIG9mZnNldCA9IHRoaXMuX25leHRVbnNldCh0aGlzLl9yb3csIG9mZnNldCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXN1bHQubGVuZ3RoICE9IDUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXh0ZW5zaW9uQ2hlY2tzdW0ocmVzdWx0KSAhPT0gZGV0ZXJtaW5lQ2hlY2tEaWdpdChjb2RlRnJlcXVlbmN5KSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiByZXN1bHQuam9pbihcIlwiKSxcclxuICAgICAgICBkZWNvZGVkQ29kZXMsXHJcbiAgICAgICAgZW5kOiBjb2RlLmVuZFxyXG4gICAgfTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGRldGVybWluZUNoZWNrRGlnaXQoY29kZUZyZXF1ZW5jeSkge1xyXG4gICAgdmFyIGk7XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykge1xyXG4gICAgICAgIGlmIChjb2RlRnJlcXVlbmN5ID09PSBDSEVDS19ESUdJVF9FTkNPRElOR1NbaV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBleHRlbnNpb25DaGVja3N1bShyZXN1bHQpIHtcclxuICAgIHZhciBsZW5ndGggPSByZXN1bHQubGVuZ3RoLFxyXG4gICAgICAgIHN1bSA9IDAsXHJcbiAgICAgICAgaTtcclxuXHJcbiAgICBmb3IgKGkgPSBsZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikge1xyXG4gICAgICAgIHN1bSArPSByZXN1bHRbaV07XHJcbiAgICB9XHJcbiAgICBzdW0gKj0gMztcclxuICAgIGZvciAoaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAyKSB7XHJcbiAgICAgICAgc3VtICs9IHJlc3VsdFtpXTtcclxuICAgIH1cclxuICAgIHN1bSAqPSAzO1xyXG4gICAgcmV0dXJuIHN1bSAlIDEwO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBFQU41UmVhZGVyO1xyXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWFkZXIvZWFuXzVfcmVhZGVyLmpzXG4gKiovIiwiaW1wb3J0IEVBTlJlYWRlciBmcm9tICcuL2Vhbl9yZWFkZXInO1xyXG5cclxuZnVuY3Rpb24gRUFOOFJlYWRlcihvcHRzLCBzdXBwbGVtZW50cykge1xyXG4gICAgRUFOUmVhZGVyLmNhbGwodGhpcywgb3B0cywgc3VwcGxlbWVudHMpO1xyXG59XHJcblxyXG52YXIgcHJvcGVydGllcyA9IHtcclxuICAgIEZPUk1BVDoge3ZhbHVlOiBcImVhbl84XCIsIHdyaXRlYWJsZTogZmFsc2V9XHJcbn07XHJcblxyXG5FQU44UmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRUFOUmVhZGVyLnByb3RvdHlwZSwgcHJvcGVydGllcyk7XHJcbkVBTjhSZWFkZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRUFOOFJlYWRlcjtcclxuXHJcbkVBTjhSZWFkZXIucHJvdG90eXBlLl9kZWNvZGVQYXlsb2FkID0gZnVuY3Rpb24oY29kZSwgcmVzdWx0LCBkZWNvZGVkQ29kZXMpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIGZvciAoIGkgPSAwOyBpIDwgNDsgaSsrKSB7XHJcbiAgICAgICAgY29kZSA9IHNlbGYuX2RlY29kZUNvZGUoY29kZS5lbmQsIHNlbGYuQ09ERV9HX1NUQVJUKTtcclxuICAgICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGNvZGUuY29kZSk7XHJcbiAgICAgICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29kZSA9IHNlbGYuX2ZpbmRQYXR0ZXJuKHNlbGYuTUlERExFX1BBVFRFUk4sIGNvZGUuZW5kLCB0cnVlLCBmYWxzZSk7XHJcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcblxyXG4gICAgZm9yICggaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICBjb2RlID0gc2VsZi5fZGVjb2RlQ29kZShjb2RlLmVuZCwgc2VsZi5DT0RFX0dfU1RBUlQpO1xyXG4gICAgICAgIGlmICghY29kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVjb2RlZENvZGVzLnB1c2goY29kZSk7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goY29kZS5jb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29kZTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEVBTjhSZWFkZXI7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL3JlYWRlci9lYW5fOF9yZWFkZXIuanNcbiAqKi8iLCJpbXBvcnQgQmFyY29kZVJlYWRlciBmcm9tICcuL2JhcmNvZGVfcmVhZGVyJztcclxuaW1wb3J0IHttZXJnZX0gZnJvbSAnbG9kYXNoJztcclxuXHJcbmZ1bmN0aW9uIEkyb2Y1UmVhZGVyKG9wdHMpIHtcclxuICAgIG9wdHMgPSBtZXJnZShnZXREZWZhdWxDb25maWcoKSwgb3B0cyk7XHJcbiAgICBCYXJjb2RlUmVhZGVyLmNhbGwodGhpcywgb3B0cyk7XHJcbiAgICB0aGlzLmJhclNwYWNlUmF0aW8gPSBbMSwgMV07XHJcbiAgICBpZiAob3B0cy5ub3JtYWxpemVCYXJTcGFjZVdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5TSU5HTEVfQ09ERV9FUlJPUiA9IDAuMzg7XHJcbiAgICAgICAgdGhpcy5BVkdfQ09ERV9FUlJPUiA9IDAuMDk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldERlZmF1bENvbmZpZygpIHtcclxuICAgIHZhciBjb25maWcgPSB7fTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhJMm9mNVJlYWRlci5DT05GSUdfS0VZUykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICBjb25maWdba2V5XSA9IEkyb2Y1UmVhZGVyLkNPTkZJR19LRVlTW2tleV0uZGVmYXVsdDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbmZpZztcclxufVxyXG5cclxudmFyIE4gPSAxLFxyXG4gICAgVyA9IDMsXHJcbiAgICBwcm9wZXJ0aWVzID0ge1xyXG4gICAgICAgIFNUQVJUX1BBVFRFUk46IHt2YWx1ZTogW04sIE4sIE4sIE5dfSxcclxuICAgICAgICBTVE9QX1BBVFRFUk46IHt2YWx1ZTogW04sIE4sIFddfSxcclxuICAgICAgICBDT0RFX1BBVFRFUk46IHt2YWx1ZTogW1xyXG4gICAgICAgICAgICBbTiwgTiwgVywgVywgTl0sXHJcbiAgICAgICAgICAgIFtXLCBOLCBOLCBOLCBXXSxcclxuICAgICAgICAgICAgW04sIFcsIE4sIE4sIFddLFxyXG4gICAgICAgICAgICBbVywgVywgTiwgTiwgTl0sXHJcbiAgICAgICAgICAgIFtOLCBOLCBXLCBOLCBXXSxcclxuICAgICAgICAgICAgW1csIE4sIFcsIE4sIE5dLFxyXG4gICAgICAgICAgICBbTiwgVywgVywgTiwgTl0sXHJcbiAgICAgICAgICAgIFtOLCBOLCBOLCBXLCBXXSxcclxuICAgICAgICAgICAgW1csIE4sIE4sIFcsIE5dLFxyXG4gICAgICAgICAgICBbTiwgVywgTiwgVywgTl1cclxuICAgICAgICBdfSxcclxuICAgICAgICBTSU5HTEVfQ09ERV9FUlJPUjoge3ZhbHVlOiAwLjc4LCB3cml0YWJsZTogdHJ1ZX0sXHJcbiAgICAgICAgQVZHX0NPREVfRVJST1I6IHt2YWx1ZTogMC4zOCwgd3JpdGFibGU6IHRydWV9LFxyXG4gICAgICAgIE1BWF9DT1JSRUNUSU9OX0ZBQ1RPUjoge3ZhbHVlOiA1fSxcclxuICAgICAgICBGT1JNQVQ6IHt2YWx1ZTogXCJpMm9mNVwifVxyXG4gICAgfTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQmFyY29kZVJlYWRlci5wcm90b3R5cGUsIHByb3BlcnRpZXMpO1xyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBJMm9mNVJlYWRlcjtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fbWF0Y2hQYXR0ZXJuID0gZnVuY3Rpb24oY291bnRlciwgY29kZSkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm5vcm1hbGl6ZUJhclNwYWNlV2lkdGgpIHtcclxuICAgICAgICB2YXIgaSxcclxuICAgICAgICAgICAgY291bnRlclN1bSA9IFswLCAwXSxcclxuICAgICAgICAgICAgY29kZVN1bSA9IFswLCAwXSxcclxuICAgICAgICAgICAgY29ycmVjdGlvbiA9IFswLCAwXSxcclxuICAgICAgICAgICAgY29ycmVjdGlvblJhdGlvID0gdGhpcy5NQVhfQ09SUkVDVElPTl9GQUNUT1IsXHJcbiAgICAgICAgICAgIGNvcnJlY3Rpb25SYXRpb0ludmVyc2UgPSAxIC8gY29ycmVjdGlvblJhdGlvO1xyXG5cclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnRlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb3VudGVyU3VtW2kgJSAyXSArPSBjb3VudGVyW2ldO1xyXG4gICAgICAgICAgICBjb2RlU3VtW2kgJSAyXSArPSBjb2RlW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb3JyZWN0aW9uWzBdID0gY29kZVN1bVswXSAvIGNvdW50ZXJTdW1bMF07XHJcbiAgICAgICAgY29ycmVjdGlvblsxXSA9IGNvZGVTdW1bMV0gLyBjb3VudGVyU3VtWzFdO1xyXG5cclxuICAgICAgICBjb3JyZWN0aW9uWzBdID0gTWF0aC5tYXgoTWF0aC5taW4oY29ycmVjdGlvblswXSwgY29ycmVjdGlvblJhdGlvKSwgY29ycmVjdGlvblJhdGlvSW52ZXJzZSk7XHJcbiAgICAgICAgY29ycmVjdGlvblsxXSA9IE1hdGgubWF4KE1hdGgubWluKGNvcnJlY3Rpb25bMV0sIGNvcnJlY3Rpb25SYXRpbyksIGNvcnJlY3Rpb25SYXRpb0ludmVyc2UpO1xyXG4gICAgICAgIHRoaXMuYmFyU3BhY2VSYXRpbyA9IGNvcnJlY3Rpb247XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50ZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY291bnRlcltpXSAqPSB0aGlzLmJhclNwYWNlUmF0aW9baSAlIDJdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBCYXJjb2RlUmVhZGVyLnByb3RvdHlwZS5fbWF0Y2hQYXR0ZXJuLmNhbGwodGhpcywgY291bnRlciwgY29kZSk7XHJcbn07XHJcblxyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuX2ZpbmRQYXR0ZXJuID0gZnVuY3Rpb24ocGF0dGVybiwgb2Zmc2V0LCBpc1doaXRlLCB0cnlIYXJkZXIpIHtcclxuICAgIHZhciBjb3VudGVyID0gW10sXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBjb3VudGVyUG9zID0gMCxcclxuICAgICAgICBiZXN0TWF0Y2ggPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiBOdW1iZXIuTUFYX1ZBTFVFLFxyXG4gICAgICAgICAgICBjb2RlOiAtMSxcclxuICAgICAgICAgICAgc3RhcnQ6IDAsXHJcbiAgICAgICAgICAgIGVuZDogMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgaixcclxuICAgICAgICBzdW0sXHJcbiAgICAgICAgbm9ybWFsaXplZCxcclxuICAgICAgICBlcHNpbG9uID0gc2VsZi5BVkdfQ09ERV9FUlJPUjtcclxuXHJcbiAgICBpc1doaXRlID0gaXNXaGl0ZSB8fCBmYWxzZTtcclxuICAgIHRyeUhhcmRlciA9IHRyeUhhcmRlciB8fCBmYWxzZTtcclxuXHJcbiAgICBpZiAoIW9mZnNldCkge1xyXG4gICAgICAgIG9mZnNldCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IHBhdHRlcm4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb3VudGVyW2ldID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKCBpID0gb2Zmc2V0OyBpIDwgc2VsZi5fcm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX3Jvd1tpXSBeIGlzV2hpdGUpIHtcclxuICAgICAgICAgICAgY291bnRlcltjb3VudGVyUG9zXSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb3VudGVyUG9zID09PSBjb3VudGVyLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIHN1bSA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8IGNvdW50ZXIubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gY291bnRlcltqXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVycm9yID0gc2VsZi5fbWF0Y2hQYXR0ZXJuKGNvdW50ZXIsIHBhdHRlcm4pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yIDwgZXBzaWxvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5lcnJvciA9IGVycm9yO1xyXG4gICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaC5zdGFydCA9IGkgLSBzdW07XHJcbiAgICAgICAgICAgICAgICAgICAgYmVzdE1hdGNoLmVuZCA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJlc3RNYXRjaDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0cnlIYXJkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgY291bnRlci5sZW5ndGggLSAyOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlcltqXSA9IGNvdW50ZXJbaiArIDJdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyW2NvdW50ZXIubGVuZ3RoIC0gMl0gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ZXJbY291bnRlci5sZW5ndGggLSAxXSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnRlclBvcy0tO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXJQb3MrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb3VudGVyW2NvdW50ZXJQb3NdID0gMTtcclxuICAgICAgICAgICAgaXNXaGl0ZSA9ICFpc1doaXRlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuSTJvZjVSZWFkZXIucHJvdG90eXBlLl9maW5kU3RhcnQgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICBsZWFkaW5nV2hpdGVzcGFjZVN0YXJ0LFxyXG4gICAgICAgIG9mZnNldCA9IHNlbGYuX25leHRTZXQoc2VsZi5fcm93KSxcclxuICAgICAgICBzdGFydEluZm8sXHJcbiAgICAgICAgbmFycm93QmFyV2lkdGggPSAxO1xyXG5cclxuICAgIHdoaWxlICghc3RhcnRJbmZvKSB7XHJcbiAgICAgICAgc3RhcnRJbmZvID0gc2VsZi5fZmluZFBhdHRlcm4oc2VsZi5TVEFSVF9QQVRURVJOLCBvZmZzZXQsIGZhbHNlLCB0cnVlKTtcclxuICAgICAgICBpZiAoIXN0YXJ0SW5mbykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbmFycm93QmFyV2lkdGggPSBNYXRoLmZsb29yKChzdGFydEluZm8uZW5kIC0gc3RhcnRJbmZvLnN0YXJ0KSAvIDQpO1xyXG4gICAgICAgIGxlYWRpbmdXaGl0ZXNwYWNlU3RhcnQgPSBzdGFydEluZm8uc3RhcnQgLSBuYXJyb3dCYXJXaWR0aCAqIDEwO1xyXG4gICAgICAgIGlmIChsZWFkaW5nV2hpdGVzcGFjZVN0YXJ0ID49IDApIHtcclxuICAgICAgICAgICAgaWYgKHNlbGYuX21hdGNoUmFuZ2UobGVhZGluZ1doaXRlc3BhY2VTdGFydCwgc3RhcnRJbmZvLnN0YXJ0LCAwKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0SW5mbztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBvZmZzZXQgPSBzdGFydEluZm8uZW5kO1xyXG4gICAgICAgIHN0YXJ0SW5mbyA9IG51bGw7XHJcbiAgICB9XHJcbn07XHJcblxyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuX3ZlcmlmeVRyYWlsaW5nV2hpdGVzcGFjZSA9IGZ1bmN0aW9uKGVuZEluZm8pIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICB0cmFpbGluZ1doaXRlc3BhY2VFbmQ7XHJcblxyXG4gICAgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kID0gZW5kSW5mby5lbmQgKyAoKGVuZEluZm8uZW5kIC0gZW5kSW5mby5zdGFydCkgLyAyKTtcclxuICAgIGlmICh0cmFpbGluZ1doaXRlc3BhY2VFbmQgPCBzZWxmLl9yb3cubGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKHNlbGYuX21hdGNoUmFuZ2UoZW5kSW5mby5lbmQsIHRyYWlsaW5nV2hpdGVzcGFjZUVuZCwgMCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVuZEluZm87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuX2ZpbmRFbmQgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBzZWxmID0gdGhpcyxcclxuICAgICAgICBlbmRJbmZvLFxyXG4gICAgICAgIHRtcDtcclxuXHJcbiAgICBzZWxmLl9yb3cucmV2ZXJzZSgpO1xyXG4gICAgZW5kSW5mbyA9IHNlbGYuX2ZpbmRQYXR0ZXJuKHNlbGYuU1RPUF9QQVRURVJOKTtcclxuICAgIHNlbGYuX3Jvdy5yZXZlcnNlKCk7XHJcblxyXG4gICAgaWYgKGVuZEluZm8gPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZXZlcnNlIG51bWJlcnNcclxuICAgIHRtcCA9IGVuZEluZm8uc3RhcnQ7XHJcbiAgICBlbmRJbmZvLnN0YXJ0ID0gc2VsZi5fcm93Lmxlbmd0aCAtIGVuZEluZm8uZW5kO1xyXG4gICAgZW5kSW5mby5lbmQgPSBzZWxmLl9yb3cubGVuZ3RoIC0gdG1wO1xyXG5cclxuICAgIHJldHVybiBlbmRJbmZvICE9PSBudWxsID8gc2VsZi5fdmVyaWZ5VHJhaWxpbmdXaGl0ZXNwYWNlKGVuZEluZm8pIDogbnVsbDtcclxufTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlUGFpciA9IGZ1bmN0aW9uKGNvdW50ZXJQYWlyKSB7XHJcbiAgICB2YXIgaSxcclxuICAgICAgICBjb2RlLFxyXG4gICAgICAgIGNvZGVzID0gW10sXHJcbiAgICAgICAgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IGNvdW50ZXJQYWlyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29kZSA9IHNlbGYuX2RlY29kZUNvZGUoY291bnRlclBhaXJbaV0pO1xyXG4gICAgICAgIGlmICghY29kZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29kZXMucHVzaChjb2RlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb2RlcztcclxufTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlQ29kZSA9IGZ1bmN0aW9uKGNvdW50ZXIpIHtcclxuICAgIHZhciBqLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHN1bSA9IDAsXHJcbiAgICAgICAgbm9ybWFsaXplZCxcclxuICAgICAgICBlcnJvcixcclxuICAgICAgICBlcHNpbG9uID0gc2VsZi5BVkdfQ09ERV9FUlJPUixcclxuICAgICAgICBjb2RlLFxyXG4gICAgICAgIGJlc3RNYXRjaCA9IHtcclxuICAgICAgICAgICAgZXJyb3I6IE51bWJlci5NQVhfVkFMVUUsXHJcbiAgICAgICAgICAgIGNvZGU6IC0xLFxyXG4gICAgICAgICAgICBzdGFydDogMCxcclxuICAgICAgICAgICAgZW5kOiAwXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICBmb3IgKCBqID0gMDsgaiA8IGNvdW50ZXIubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBzdW0gKz0gY291bnRlcltqXTtcclxuICAgIH1cclxuICAgIGZvciAoY29kZSA9IDA7IGNvZGUgPCBzZWxmLkNPREVfUEFUVEVSTi5sZW5ndGg7IGNvZGUrKykge1xyXG4gICAgICAgIGVycm9yID0gc2VsZi5fbWF0Y2hQYXR0ZXJuKGNvdW50ZXIsIHNlbGYuQ09ERV9QQVRURVJOW2NvZGVdKTtcclxuICAgICAgICBpZiAoZXJyb3IgPCBiZXN0TWF0Y2guZXJyb3IpIHtcclxuICAgICAgICAgICAgYmVzdE1hdGNoLmNvZGUgPSBjb2RlO1xyXG4gICAgICAgICAgICBiZXN0TWF0Y2guZXJyb3IgPSBlcnJvcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYmVzdE1hdGNoLmVycm9yIDwgZXBzaWxvbikge1xyXG4gICAgICAgIHJldHVybiBiZXN0TWF0Y2g7XHJcbiAgICB9XHJcbn07XHJcblxyXG5JMm9mNVJlYWRlci5wcm90b3R5cGUuX2RlY29kZVBheWxvYWQgPSBmdW5jdGlvbihjb3VudGVycywgcmVzdWx0LCBkZWNvZGVkQ29kZXMpIHtcclxuICAgIHZhciBpLFxyXG4gICAgICAgIHNlbGYgPSB0aGlzLFxyXG4gICAgICAgIHBvcyA9IDAsXHJcbiAgICAgICAgY291bnRlckxlbmd0aCA9IGNvdW50ZXJzLmxlbmd0aCxcclxuICAgICAgICBjb3VudGVyUGFpciA9IFtbMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwXV0sXHJcbiAgICAgICAgY29kZXM7XHJcblxyXG4gICAgd2hpbGUgKHBvcyA8IGNvdW50ZXJMZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvdW50ZXJQYWlyWzBdW2ldID0gY291bnRlcnNbcG9zXSAqIHRoaXMuYmFyU3BhY2VSYXRpb1swXTtcclxuICAgICAgICAgICAgY291bnRlclBhaXJbMV1baV0gPSBjb3VudGVyc1twb3MgKyAxXSAqIHRoaXMuYmFyU3BhY2VSYXRpb1sxXTtcclxuICAgICAgICAgICAgcG9zICs9IDI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvZGVzID0gc2VsZi5fZGVjb2RlUGFpcihjb3VudGVyUGFpcik7XHJcbiAgICAgICAgaWYgKCFjb2Rlcykge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvZGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvZGVzW2ldLmNvZGUgKyBcIlwiKTtcclxuICAgICAgICAgICAgZGVjb2RlZENvZGVzLnB1c2goY29kZXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb2RlcztcclxufTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fdmVyaWZ5Q291bnRlckxlbmd0aCA9IGZ1bmN0aW9uKGNvdW50ZXJzKSB7XHJcbiAgICByZXR1cm4gKGNvdW50ZXJzLmxlbmd0aCAlIDEwID09PSAwKTtcclxufTtcclxuXHJcbkkyb2Y1UmVhZGVyLnByb3RvdHlwZS5fZGVjb2RlID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc3RhcnRJbmZvLFxyXG4gICAgICAgIGVuZEluZm8sXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgY29kZSxcclxuICAgICAgICByZXN1bHQgPSBbXSxcclxuICAgICAgICBkZWNvZGVkQ29kZXMgPSBbXSxcclxuICAgICAgICBjb3VudGVycztcclxuXHJcbiAgICBzdGFydEluZm8gPSBzZWxmLl9maW5kU3RhcnQoKTtcclxuICAgIGlmICghc3RhcnRJbmZvKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBkZWNvZGVkQ29kZXMucHVzaChzdGFydEluZm8pO1xyXG5cclxuICAgIGVuZEluZm8gPSBzZWxmLl9maW5kRW5kKCk7XHJcbiAgICBpZiAoIWVuZEluZm8pIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb3VudGVycyA9IHNlbGYuX2ZpbGxDb3VudGVycyhzdGFydEluZm8uZW5kLCBlbmRJbmZvLnN0YXJ0LCBmYWxzZSk7XHJcbiAgICBpZiAoIXNlbGYuX3ZlcmlmeUNvdW50ZXJMZW5ndGgoY291bnRlcnMpKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb2RlID0gc2VsZi5fZGVjb2RlUGF5bG9hZChjb3VudGVycywgcmVzdWx0LCBkZWNvZGVkQ29kZXMpO1xyXG4gICAgaWYgKCFjb2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCAlIDIgIT09IDAgfHxcclxuICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA8IDYpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBkZWNvZGVkQ29kZXMucHVzaChlbmRJbmZvKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogcmVzdWx0LmpvaW4oXCJcIiksXHJcbiAgICAgICAgc3RhcnQ6IHN0YXJ0SW5mby5zdGFydCxcclxuICAgICAgICBlbmQ6IGVuZEluZm8uZW5kLFxyXG4gICAgICAgIHN0YXJ0SW5mbzogc3RhcnRJbmZvLFxyXG4gICAgICAgIGRlY29kZWRDb2RlczogZGVjb2RlZENvZGVzXHJcbiAgICB9O1xyXG59O1xyXG5cclxuSTJvZjVSZWFkZXIuQ09ORklHX0tFWVMgPSB7XHJcbiAgICBub3JtYWxpemVCYXJTcGFjZVdpZHRoOiB7XHJcbiAgICAgICAgJ3R5cGUnOiAnYm9vbGVhbicsXHJcbiAgICAgICAgJ2RlZmF1bHQnOiBmYWxzZSxcclxuICAgICAgICAnZGVzY3JpcHRpb24nOiAnSWYgdHJ1ZSwgdGhlIHJlYWRlciB0cmllcyB0byBub3JtYWxpemUgdGhlJyArXHJcbiAgICAgICAgJ3dpZHRoLWRpZmZlcmVuY2UgYmV0d2VlbiBiYXJzIGFuZCBzcGFjZXMnXHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJMm9mNVJlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL2kyb2Y1X3JlYWRlci5qc1xuICoqLyIsImltcG9ydCBFQU5SZWFkZXIgZnJvbSAnLi9lYW5fcmVhZGVyJztcclxuXHJcbmZ1bmN0aW9uIFVQQ0VSZWFkZXIob3B0cywgc3VwcGxlbWVudHMpIHtcclxuICAgIEVBTlJlYWRlci5jYWxsKHRoaXMsIG9wdHMsIHN1cHBsZW1lbnRzKTtcclxufVxyXG5cclxudmFyIHByb3BlcnRpZXMgPSB7XHJcbiAgICBDT0RFX0ZSRVFVRU5DWToge3ZhbHVlOiBbXHJcbiAgICAgICAgWyA1NiwgNTIsIDUwLCA0OSwgNDQsIDM4LCAzNSwgNDIsIDQxLCAzNyBdLFxyXG4gICAgICAgIFs3LCAxMSwgMTMsIDE0LCAxOSwgMjUsIDI4LCAyMSwgMjIsIDI2XV19LFxyXG4gICAgU1RPUF9QQVRURVJOOiB7IHZhbHVlOiBbMSAvIDYgKiA3LCAxIC8gNiAqIDcsIDEgLyA2ICogNywgMSAvIDYgKiA3LCAxIC8gNiAqIDcsIDEgLyA2ICogN119LFxyXG4gICAgRk9STUFUOiB7dmFsdWU6IFwidXBjX2VcIiwgd3JpdGVhYmxlOiBmYWxzZX1cclxufTtcclxuXHJcblVQQ0VSZWFkZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFQU5SZWFkZXIucHJvdG90eXBlLCBwcm9wZXJ0aWVzKTtcclxuVVBDRVJlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBVUENFUmVhZGVyO1xyXG5cclxuVVBDRVJlYWRlci5wcm90b3R5cGUuX2RlY29kZVBheWxvYWQgPSBmdW5jdGlvbihjb2RlLCByZXN1bHQsIGRlY29kZWRDb2Rlcykge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgY29kZUZyZXF1ZW5jeSA9IDB4MDtcclxuXHJcbiAgICBmb3IgKCBpID0gMDsgaSA8IDY7IGkrKykge1xyXG4gICAgICAgIGNvZGUgPSBzZWxmLl9kZWNvZGVDb2RlKGNvZGUuZW5kKTtcclxuICAgICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2RlLmNvZGUgPj0gc2VsZi5DT0RFX0dfU1RBUlQpIHtcclxuICAgICAgICAgICAgY29kZS5jb2RlID0gY29kZS5jb2RlIC0gc2VsZi5DT0RFX0dfU1RBUlQ7XHJcbiAgICAgICAgICAgIGNvZGVGcmVxdWVuY3kgfD0gMSA8PCAoNSAtIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQucHVzaChjb2RlLmNvZGUpO1xyXG4gICAgICAgIGRlY29kZWRDb2Rlcy5wdXNoKGNvZGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFzZWxmLl9kZXRlcm1pbmVQYXJpdHkoY29kZUZyZXF1ZW5jeSwgcmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb2RlO1xyXG59O1xyXG5cclxuVVBDRVJlYWRlci5wcm90b3R5cGUuX2RldGVybWluZVBhcml0eSA9IGZ1bmN0aW9uKGNvZGVGcmVxdWVuY3ksIHJlc3VsdCkge1xyXG4gICAgdmFyIGksXHJcbiAgICAgICAgbnJTeXN0ZW07XHJcblxyXG4gICAgZm9yIChuclN5c3RlbSA9IDA7IG5yU3lzdGVtIDwgdGhpcy5DT0RFX0ZSRVFVRU5DWS5sZW5ndGg7IG5yU3lzdGVtKyspe1xyXG4gICAgICAgIGZvciAoIGkgPSAwOyBpIDwgdGhpcy5DT0RFX0ZSRVFVRU5DWVtuclN5c3RlbV0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNvZGVGcmVxdWVuY3kgPT09IHRoaXMuQ09ERV9GUkVRVUVOQ1lbbnJTeXN0ZW1dW2ldKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQudW5zaGlmdChuclN5c3RlbSk7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuVVBDRVJlYWRlci5wcm90b3R5cGUuX2NvbnZlcnRUb1VQQ0EgPSBmdW5jdGlvbihyZXN1bHQpIHtcclxuICAgIHZhciB1cGNhID0gW3Jlc3VsdFswXV0sXHJcbiAgICAgICAgbGFzdERpZ2l0ID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAyXTtcclxuXHJcbiAgICBpZiAobGFzdERpZ2l0IDw9IDIpIHtcclxuICAgICAgICB1cGNhID0gdXBjYS5jb25jYXQocmVzdWx0LnNsaWNlKDEsIDMpKVxyXG4gICAgICAgICAgICAuY29uY2F0KFtsYXN0RGlnaXQsIDAsIDAsIDAsIDBdKVxyXG4gICAgICAgICAgICAuY29uY2F0KHJlc3VsdC5zbGljZSgzLCA2KSk7XHJcbiAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gMykge1xyXG4gICAgICAgIHVwY2EgPSB1cGNhLmNvbmNhdChyZXN1bHQuc2xpY2UoMSwgNCkpXHJcbiAgICAgICAgICAgIC5jb25jYXQoWzAsIDAsIDAsIDAsIDBdKVxyXG4gICAgICAgICAgICAuY29uY2F0KHJlc3VsdC5zbGljZSg0LCA2KSk7XHJcbiAgICB9IGVsc2UgaWYgKGxhc3REaWdpdCA9PT0gNCkge1xyXG4gICAgICAgIHVwY2EgPSB1cGNhLmNvbmNhdChyZXN1bHQuc2xpY2UoMSwgNSkpXHJcbiAgICAgICAgICAgIC5jb25jYXQoWzAsIDAsIDAsIDAsIDAsIHJlc3VsdFs1XV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB1cGNhID0gdXBjYS5jb25jYXQocmVzdWx0LnNsaWNlKDEsIDYpKVxyXG4gICAgICAgICAgICAuY29uY2F0KFswLCAwLCAwLCAwLCBsYXN0RGlnaXRdKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGNhLnB1c2gocmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSk7XHJcbiAgICByZXR1cm4gdXBjYTtcclxufTtcclxuXHJcblVQQ0VSZWFkZXIucHJvdG90eXBlLl9jaGVja3N1bSA9IGZ1bmN0aW9uKHJlc3VsdCkge1xyXG4gICAgcmV0dXJuIEVBTlJlYWRlci5wcm90b3R5cGUuX2NoZWNrc3VtLmNhbGwodGhpcywgdGhpcy5fY29udmVydFRvVVBDQShyZXN1bHQpKTtcclxufTtcclxuXHJcblVQQ0VSZWFkZXIucHJvdG90eXBlLl9maW5kRW5kID0gZnVuY3Rpb24ob2Zmc2V0LCBpc1doaXRlKSB7XHJcbiAgICBpc1doaXRlID0gdHJ1ZTtcclxuICAgIHJldHVybiBFQU5SZWFkZXIucHJvdG90eXBlLl9maW5kRW5kLmNhbGwodGhpcywgb2Zmc2V0LCBpc1doaXRlKTtcclxufTtcclxuXHJcblVQQ0VSZWFkZXIucHJvdG90eXBlLl92ZXJpZnlUcmFpbGluZ1doaXRlc3BhY2UgPSBmdW5jdGlvbihlbmRJbmZvKSB7XHJcbiAgICB2YXIgc2VsZiA9IHRoaXMsXHJcbiAgICAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlRW5kO1xyXG5cclxuICAgIHRyYWlsaW5nV2hpdGVzcGFjZUVuZCA9IGVuZEluZm8uZW5kICsgKChlbmRJbmZvLmVuZCAtIGVuZEluZm8uc3RhcnQpIC8gMik7XHJcbiAgICBpZiAodHJhaWxpbmdXaGl0ZXNwYWNlRW5kIDwgc2VsZi5fcm93Lmxlbmd0aCkge1xyXG4gICAgICAgIGlmIChzZWxmLl9tYXRjaFJhbmdlKGVuZEluZm8uZW5kLCB0cmFpbGluZ1doaXRlc3BhY2VFbmQsIDApKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbmRJbmZvO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFVQQ0VSZWFkZXI7XHJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL3JlYWRlci91cGNfZV9yZWFkZXIuanNcbiAqKi8iLCJpbXBvcnQgRUFOUmVhZGVyIGZyb20gJy4vZWFuX3JlYWRlcic7XHJcblxyXG5mdW5jdGlvbiBVUENSZWFkZXIob3B0cywgc3VwcGxlbWVudHMpIHtcclxuICAgIEVBTlJlYWRlci5jYWxsKHRoaXMsIG9wdHMsIHN1cHBsZW1lbnRzKTtcclxufVxyXG5cclxudmFyIHByb3BlcnRpZXMgPSB7XHJcbiAgICBGT1JNQVQ6IHt2YWx1ZTogXCJ1cGNfYVwiLCB3cml0ZWFibGU6IGZhbHNlfVxyXG59O1xyXG5cclxuVVBDUmVhZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRUFOUmVhZGVyLnByb3RvdHlwZSwgcHJvcGVydGllcyk7XHJcblVQQ1JlYWRlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBVUENSZWFkZXI7XHJcblxyXG5VUENSZWFkZXIucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciByZXN1bHQgPSBFQU5SZWFkZXIucHJvdG90eXBlLl9kZWNvZGUuY2FsbCh0aGlzKTtcclxuXHJcbiAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5jb2RlICYmIHJlc3VsdC5jb2RlLmxlbmd0aCA9PT0gMTMgJiYgcmVzdWx0LmNvZGUuY2hhckF0KDApID09PSBcIjBcIikge1xyXG4gICAgICAgIHJlc3VsdC5jb2RlID0gcmVzdWx0LmNvZGUuc3Vic3RyaW5nKDEpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFVQQ1JlYWRlcjtcclxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVhZGVyL3VwY19yZWFkZXIuanNcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IGNvcHlcblxuLyoqXG4gKiBDb3B5IHRoZSB2YWx1ZXMgZnJvbSBvbmUgbWF0MiB0byBhbm90aGVyXG4gKlxuICogQGFsaWFzIG1hdDIuY29weVxuICogQHBhcmFtIHttYXQyfSBvdXQgdGhlIHJlY2VpdmluZyBtYXRyaXhcbiAqIEBwYXJhbSB7bWF0Mn0gYSB0aGUgc291cmNlIG1hdHJpeFxuICogQHJldHVybnMge21hdDJ9IG91dFxuICovXG5mdW5jdGlvbiBjb3B5KG91dCwgYSkge1xuICBvdXRbMF0gPSBhWzBdXG4gIG91dFsxXSA9IGFbMV1cbiAgb3V0WzJdID0gYVsyXVxuICBvdXRbM10gPSBhWzNdXG4gIHJldHVybiBvdXRcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2dsLW1hdDIvY29weS5qc1xuICoqIG1vZHVsZSBpZCA9IDc1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaWRlbnRpdHkgbWF0MlxuICpcbiAqIEBhbGlhcyBtYXQyLmNyZWF0ZVxuICogQHJldHVybnMge21hdDJ9IGEgbmV3IDJ4MiBtYXRyaXhcbiAqL1xuZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSg0KVxuICBvdXRbMF0gPSAxXG4gIG91dFsxXSA9IDBcbiAgb3V0WzJdID0gMFxuICBvdXRbM10gPSAxXG4gIHJldHVybiBvdXRcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2dsLW1hdDIvY3JlYXRlLmpzXG4gKiogbW9kdWxlIGlkID0gNzZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIm1vZHVsZS5leHBvcnRzID0gaW52ZXJ0XG5cbi8qKlxuICogSW52ZXJ0cyBhIG1hdDJcbiAqXG4gKiBAYWxpYXMgbWF0Mi5pbnZlcnRcbiAqIEBwYXJhbSB7bWF0Mn0gb3V0IHRoZSByZWNlaXZpbmcgbWF0cml4XG4gKiBAcGFyYW0ge21hdDJ9IGEgdGhlIHNvdXJjZSBtYXRyaXhcbiAqIEByZXR1cm5zIHttYXQyfSBvdXRcbiAqL1xuZnVuY3Rpb24gaW52ZXJ0KG91dCwgYSkge1xuICB2YXIgYTAgPSBhWzBdXG4gIHZhciBhMSA9IGFbMV1cbiAgdmFyIGEyID0gYVsyXVxuICB2YXIgYTMgPSBhWzNdXG4gIHZhciBkZXQgPSBhMCAqIGEzIC0gYTIgKiBhMVxuXG4gIGlmICghZGV0KSByZXR1cm4gbnVsbFxuICBkZXQgPSAxLjAgLyBkZXRcblxuICBvdXRbMF0gPSAgYTMgKiBkZXRcbiAgb3V0WzFdID0gLWExICogZGV0XG4gIG91dFsyXSA9IC1hMiAqIGRldFxuICBvdXRbM10gPSAgYTAgKiBkZXRcblxuICByZXR1cm4gb3V0XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9nbC1tYXQyL2ludmVydC5qc1xuICoqIG1vZHVsZSBpZCA9IDc3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IHNjYWxlXG5cbi8qKlxuICogU2NhbGVzIGEgdmVjMiBieSBhIHNjYWxhciBudW1iZXJcbiAqXG4gKiBAcGFyYW0ge3ZlYzJ9IG91dCB0aGUgcmVjZWl2aW5nIHZlY3RvclxuICogQHBhcmFtIHt2ZWMyfSBhIHRoZSB2ZWN0b3IgdG8gc2NhbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBiIGFtb3VudCB0byBzY2FsZSB0aGUgdmVjdG9yIGJ5XG4gKiBAcmV0dXJucyB7dmVjMn0gb3V0XG4gKi9cbmZ1bmN0aW9uIHNjYWxlKG91dCwgYSwgYikge1xuICAgIG91dFswXSA9IGFbMF0gKiBiXG4gICAgb3V0WzFdID0gYVsxXSAqIGJcbiAgICByZXR1cm4gb3V0XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZ2wtdmVjMi9zY2FsZS5qc1xuICoqIG1vZHVsZSBpZCA9IDc4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IHRyYW5zZm9ybU1hdDJcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIHRoZSB2ZWMyIHdpdGggYSBtYXQyXG4gKlxuICogQHBhcmFtIHt2ZWMyfSBvdXQgdGhlIHJlY2VpdmluZyB2ZWN0b3JcbiAqIEBwYXJhbSB7dmVjMn0gYSB0aGUgdmVjdG9yIHRvIHRyYW5zZm9ybVxuICogQHBhcmFtIHttYXQyfSBtIG1hdHJpeCB0byB0cmFuc2Zvcm0gd2l0aFxuICogQHJldHVybnMge3ZlYzJ9IG91dFxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm1NYXQyKG91dCwgYSwgbSkge1xuICAgIHZhciB4ID0gYVswXSxcbiAgICAgICAgeSA9IGFbMV1cbiAgICBvdXRbMF0gPSBtWzBdICogeCArIG1bMl0gKiB5XG4gICAgb3V0WzFdID0gbVsxXSAqIHggKyBtWzNdICogeVxuICAgIHJldHVybiBvdXRcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9nbC12ZWMyL3RyYW5zZm9ybU1hdDIuanNcbiAqKiBtb2R1bGUgaWQgPSA3OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwibW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZlYzMgaW5pdGlhbGl6ZWQgd2l0aCB2YWx1ZXMgZnJvbSBhbiBleGlzdGluZyB2ZWN0b3JcbiAqXG4gKiBAcGFyYW0ge3ZlYzN9IGEgdmVjdG9yIHRvIGNsb25lXG4gKiBAcmV0dXJucyB7dmVjM30gYSBuZXcgM0QgdmVjdG9yXG4gKi9cbmZ1bmN0aW9uIGNsb25lKGEpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEZsb2F0MzJBcnJheSgzKVxuICAgIG91dFswXSA9IGFbMF1cbiAgICBvdXRbMV0gPSBhWzFdXG4gICAgb3V0WzJdID0gYVsyXVxuICAgIHJldHVybiBvdXRcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9nbC12ZWMzL2Nsb25lLmpzXG4gKiogbW9kdWxlIGlkID0gODBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBoYXNoIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gSGFzaCgpIHt9XG5cbi8vIEF2b2lkIGluaGVyaXRpbmcgZnJvbSBgT2JqZWN0LnByb3RvdHlwZWAgd2hlbiBwb3NzaWJsZS5cbkhhc2gucHJvdG90eXBlID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDogb2JqZWN0UHJvdG87XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fSGFzaC5qc1xuICoqIG1vZHVsZSBpZCA9IDgxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgbWFwQ2xlYXIgPSByZXF1aXJlKCcuL19tYXBDbGVhcicpLFxuICAgIG1hcERlbGV0ZSA9IHJlcXVpcmUoJy4vX21hcERlbGV0ZScpLFxuICAgIG1hcEdldCA9IHJlcXVpcmUoJy4vX21hcEdldCcpLFxuICAgIG1hcEhhcyA9IHJlcXVpcmUoJy4vX21hcEhhcycpLFxuICAgIG1hcFNldCA9IHJlcXVpcmUoJy4vX21hcFNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPyB2YWx1ZXMubGVuZ3RoIDogMDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gdmFsdWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBmdW5jdGlvbnMgdG8gdGhlIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcEhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX01hcENhY2hlLmpzXG4gKiogbW9kdWxlIGlkID0gODJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBSZWZsZWN0ID0gcm9vdC5SZWZsZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlZmxlY3Q7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX1JlZmxlY3QuanNcbiAqKiBtb2R1bGUgaWQgPSA4M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fU2V0LmpzXG4gKiogbW9kdWxlIGlkID0gODRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX1N5bWJvbC5qc1xuICoqIG1vZHVsZSBpZCA9IDg1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgVWludDhBcnJheSA9IHJvb3QuVWludDhBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBVaW50OEFycmF5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19VaW50OEFycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gODZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX1dlYWtNYXAuanNcbiAqKiBtb2R1bGUgaWQgPSA4N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBBZGRzIHRoZSBrZXktdmFsdWUgYHBhaXJgIHRvIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gcGFpciBUaGUga2V5LXZhbHVlIHBhaXIgdG8gYWRkLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgbWFwYC5cbiAqL1xuZnVuY3Rpb24gYWRkTWFwRW50cnkobWFwLCBwYWlyKSB7XG4gIC8vIERvbid0IHJldHVybiBgTWFwI3NldGAgYmVjYXVzZSBpdCBkb2Vzbid0IHJldHVybiB0aGUgbWFwIGluc3RhbmNlIGluIElFIDExLlxuICBtYXAuc2V0KHBhaXJbMF0sIHBhaXJbMV0pO1xuICByZXR1cm4gbWFwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZE1hcEVudHJ5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hZGRNYXBFbnRyeS5qc1xuICoqIG1vZHVsZSBpZCA9IDg4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIEFkZHMgYHZhbHVlYCB0byBgc2V0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFkZC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYHNldGAuXG4gKi9cbmZ1bmN0aW9uIGFkZFNldEVudHJ5KHNldCwgdmFsdWUpIHtcbiAgc2V0LmFkZCh2YWx1ZSk7XG4gIHJldHVybiBzZXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWRkU2V0RW50cnk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2FkZFNldEVudHJ5LmpzXG4gKiogbW9kdWxlIGlkID0gODlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0gey4uLip9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICB2YXIgbGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hcHBseS5qc1xuICoqIG1vZHVsZSBpZCA9IDkwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19hcnJheVB1c2guanNcbiAqKiBtb2R1bGUgaWQgPSA5MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZUFzc2lnbi5qc1xuICoqIG1vZHVsZSBpZCA9IDkyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbicpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpbml0Q2xvbmVBcnJheSA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZUFycmF5JyksXG4gICAgaW5pdENsb25lQnlUYWcgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVCeVRhZycpLFxuICAgIGluaXRDbG9uZU9iamVjdCA9IHJlcXVpcmUoJy4vX2luaXRDbG9uZU9iamVjdCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSxcbiAgICBpc0hvc3RPYmplY3QgPSByZXF1aXJlKCcuL19pc0hvc3RPYmplY3QnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG52YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbmNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9XG5jbG9uZWFibGVUYWdzW2RhdGVUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MzJUYWddID1cbmNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9IGNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9XG5jbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPSBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tzZXRUYWddID0gY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID1cbmNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbmNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNGdWxsXSBTcGVjaWZ5IGEgY2xvbmUgaW5jbHVkaW5nIHN5bWJvbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGlzRGVlcCwgaXNGdWxsLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzQXJyKSB7XG4gICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgIGlmICghaXNEZWVwKSB7XG4gICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICB9XG4gICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgaWYgKGlzSG9zdE9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBpbml0Q2xvbmVPYmplY3QoaXNGdW5jID8ge30gOiB2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXN1bHQgPSBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gaXNGdWxsID8gY29weVN5bWJvbHModmFsdWUsIHJlc3VsdCkgOiByZXN1bHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAoaXNBcnIgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKSh2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGlzRGVlcCwgaXNGdWxsLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICB9KTtcbiAgcmV0dXJuIChpc0Z1bGwgJiYgIWlzQXJyKSA/IGNvcHlTeW1ib2xzKHZhbHVlLCByZXN1bHQpIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZUNsb25lLmpzXG4gKiogbW9kdWxlIGlkID0gOTNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvdHlwZSBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDcmVhdGUocHJvdG8pIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHByb3RvKSA/IG9iamVjdENyZWF0ZShwcm90bykgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19iYXNlQ3JlYXRlLmpzXG4gKiogbW9kdWxlIGlkID0gOTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhcnJheVB1c2ggPSByZXF1aXJlKCcuL19hcnJheVB1c2gnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgZmxhdHRlbmluZyB0byBhcnJheXMtbGlrZSBvYmplY3RzLlxuICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgJiZcbiAgICAgICAgKGlzU3RyaWN0IHx8IGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19iYXNlRmxhdHRlbi5qc1xuICoqIG1vZHVsZSBpZCA9IDk1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgY3JlYXRlQmFzZUZvciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUJhc2VGb3InKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvckluYCBhbmQgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzXG4gKiBvdmVyIGBvYmplY3RgIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBpbnZva2luZyBgaXRlcmF0ZWVgIGZvclxuICogZWFjaCBwcm9wZXJ0eS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5XG4gKiByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvcjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZUZvci5qc1xuICoqIG1vZHVsZSBpZCA9IDk2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vX2Jhc2VGb3InKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yT3duO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19iYXNlRm9yT3duLmpzXG4gKiogbW9kdWxlIGlkID0gOTdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VIYXMob2JqZWN0LCBrZXkpIHtcbiAgLy8gQXZvaWQgYSBidWcgaW4gSUUgMTAtMTEgd2hlcmUgb2JqZWN0cyB3aXRoIGEgW1tQcm90b3R5cGVdXSBvZiBgbnVsbGAsXG4gIC8vIHRoYXQgYXJlIGNvbXBvc2VkIGVudGlyZWx5IG9mIGluZGV4IHByb3BlcnRpZXMsIHJldHVybiBgZmFsc2VgIGZvclxuICAvLyBgaGFzT3duUHJvcGVydHlgIGNoZWNrcyBvZiB0aGVtLlxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgfHxcbiAgICAodHlwZW9mIG9iamVjdCA9PSAnb2JqZWN0JyAmJiBrZXkgaW4gb2JqZWN0ICYmIGdldFByb3RvdHlwZU9mKG9iamVjdCkgPT09IG51bGwpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VIYXM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VIYXMuanNcbiAqKiBtb2R1bGUgaWQgPSA5OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBPYmplY3Qua2V5cztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHNraXAgdGhlIGNvbnN0cnVjdG9yXG4gKiBwcm9wZXJ0eSBvZiBwcm90b3R5cGVzIG9yIHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICByZXR1cm4gbmF0aXZlS2V5cyhPYmplY3Qob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VLZXlzLmpzXG4gKiogbW9kdWxlIGlkID0gOTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBSZWZsZWN0ID0gcmVxdWlyZSgnLi9fUmVmbGVjdCcpLFxuICAgIGl0ZXJhdG9yVG9BcnJheSA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9yVG9BcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBlbnVtZXJhdGUgPSBSZWZsZWN0ID8gUmVmbGVjdC5lbnVtZXJhdGUgOiB1bmRlZmluZWQsXG4gICAgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3Qgc2tpcCB0aGUgY29uc3RydWN0b3JcbiAqIHByb3BlcnR5IG9mIHByb3RvdHlwZXMgb3IgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgb2JqZWN0ID0gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBJRSA8IDkgd2l0aCBlczYtc2hpbS5cbmlmIChlbnVtZXJhdGUgJiYgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAndmFsdWVPZic6IDEgfSwgJ3ZhbHVlT2YnKSkge1xuICBiYXNlS2V5c0luID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIGl0ZXJhdG9yVG9BcnJheShlbnVtZXJhdGUob2JqZWN0KSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUtleXNJbjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZUtleXNJbi5qc1xuICoqIG1vZHVsZSBpZCA9IDEwMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhcnJheUVhY2ggPSByZXF1aXJlKCcuL19hcnJheUVhY2gnKSxcbiAgICBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZCBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgcHJvcHMgPSAoaXNBcnJheShzb3VyY2UpIHx8IGlzVHlwZWRBcnJheShzb3VyY2UpKVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBrZXlzSW4oc291cmNlKTtcblxuICBhcnJheUVhY2gocHJvcHMgfHwgc291cmNlLCBmdW5jdGlvbihzcmNWYWx1ZSwga2V5KSB7XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBrZXkgPSBzcmNWYWx1ZTtcbiAgICAgIHNyY1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBiYXNlTWVyZ2UsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2U7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VNZXJnZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEwMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksXG4gICAgYmFzZUNsb25lID0gcmVxdWlyZSgnLi9fYmFzZUNsb25lJyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICB0b1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi90b1BsYWluT2JqZWN0Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZCBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIG1lcmdlRnVuYywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICBzcmNWYWx1ZSA9IHNvdXJjZVtrZXldLFxuICAgICAgc3RhY2tlZCA9IHN0YWNrLmdldChzcmNWYWx1ZSk7XG5cbiAgaWYgKHN0YWNrZWQpIHtcbiAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICA6IHVuZGVmaW5lZDtcblxuICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gIGlmIChpc0NvbW1vbikge1xuICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgaWYgKGlzQXJyYXkoc3JjVmFsdWUpIHx8IGlzVHlwZWRBcnJheShzcmNWYWx1ZSkpIHtcbiAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGJhc2VDbG9uZShzcmNWYWx1ZSwgIWN1c3RvbWl6ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHNyY1ZhbHVlKSB8fCBpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpIHtcbiAgICAgIGlmIChpc0FyZ3VtZW50cyhvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgKHNyY0luZGV4ICYmIGlzRnVuY3Rpb24ob2JqVmFsdWUpKSkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGJhc2VDbG9uZShzcmNWYWx1ZSwgIWN1c3RvbWl6ZXIpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG5cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgfVxuICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlRGVlcDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IG5hbWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHByb3BzKSB7XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICByZXR1cm4gYXJyYXlSZWR1Y2UocHJvcHMsIGZ1bmN0aW9uKHJlc3VsdCwga2V5KSB7XG4gICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gb2JqZWN0W2tleV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHt9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUGljaztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fYmFzZVBpY2suanNcbiAqKiBtb2R1bGUgaWQgPSAxMDNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19iYXNlUHJvcGVydHkuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRpbWVzO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19iYXNlVGltZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBnbG9iYWwgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtudWxsfE9iamVjdH0gUmV0dXJucyBgdmFsdWVgIGlmIGl0J3MgYSBnbG9iYWwgb2JqZWN0LCBlbHNlIGBudWxsYC5cbiAqL1xuZnVuY3Rpb24gY2hlY2tHbG9iYWwodmFsdWUpIHtcbiAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZS5PYmplY3QgPT09IE9iamVjdCkgPyB2YWx1ZSA6IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2hlY2tHbG9iYWw7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2NoZWNrR2xvYmFsLmpzXG4gKiogbW9kdWxlIGlkID0gMTA2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciByZXN1bHQgPSBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGJ1ZmZlci5sZW5ndGgpO1xuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQnVmZmVyO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19jbG9uZUJ1ZmZlci5qc1xuICoqIG1vZHVsZSBpZCA9IDEwN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFkZE1hcEVudHJ5ID0gcmVxdWlyZSgnLi9fYWRkTWFwRW50cnknKSxcbiAgICBhcnJheVJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5UmVkdWNlJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYG1hcGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBtYXAuXG4gKi9cbmZ1bmN0aW9uIGNsb25lTWFwKG1hcCkge1xuICByZXR1cm4gYXJyYXlSZWR1Y2UobWFwVG9BcnJheShtYXApLCBhZGRNYXBFbnRyeSwgbmV3IG1hcC5jb25zdHJ1Y3Rvcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVNYXA7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Nsb25lTWFwLmpzXG4gKiogbW9kdWxlIGlkID0gMTA4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUZsYWdzID0gL1xcdyokLztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gKi9cbmZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lUmVnRXhwO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19jbG9uZVJlZ0V4cC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGFkZFNldEVudHJ5ID0gcmVxdWlyZSgnLi9fYWRkU2V0RW50cnknKSxcbiAgICBhcnJheVJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5UmVkdWNlJyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzZXQuXG4gKi9cbmZ1bmN0aW9uIGNsb25lU2V0KHNldCkge1xuICByZXR1cm4gYXJyYXlSZWR1Y2Uoc2V0VG9BcnJheShzZXQpLCBhZGRTZXRFbnRyeSwgbmV3IHNldC5jb25zdHJ1Y3Rvcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVTZXQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Nsb25lU2V0LmpzXG4gKiogbW9kdWxlIGlkID0gMTEwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVN5bWJvbDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY2xvbmVTeW1ib2wuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lVHlwZWRBcnJheTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY2xvbmVUeXBlZEFycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gMTEyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgY29weU9iamVjdGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGZ1bmN0aW9uIHRvXG4gKiBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdFdpdGgoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHNvdXJjZVtrZXldO1xuXG4gICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3RXaXRoO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19jb3B5T2JqZWN0V2l0aC5qc1xuICoqIG1vZHVsZSBpZCA9IDExM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIHN5bWJvbCBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5U3ltYm9scztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY29weVN5bWJvbHMuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyksXG4gICAgcmVzdCA9IHJlcXVpcmUoJy4vcmVzdCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiByZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbidcbiAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH1cbiAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVBc3NpZ25lcjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fY3JlYXRlQXNzaWduZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUsIGtleXNGdW5jKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSxcbiAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF07XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUJhc2VGb3I7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2NyZWF0ZUJhc2VGb3IuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBiYXNlUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHknKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IHZhbHVlIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYXZvaWQgYSBbSklUIGJ1Z10oaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5MilcbiAqIHRoYXQgYWZmZWN0cyBTYWZhcmkgb24gYXQgbGVhc3QgaU9TIDguMS04LjMgQVJNNjQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBcImxlbmd0aFwiIHZhbHVlLlxuICovXG52YXIgZ2V0TGVuZ3RoID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRMZW5ndGg7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2dldExlbmd0aC5qc1xuICoqIG1vZHVsZSBpZCA9IDExN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gc3ltYm9sIHByb3BlcnRpZXMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgfHwgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBbXTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0U3ltYm9scztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fZ2V0U3ltYm9scy5qc1xuICoqIG1vZHVsZSBpZCA9IDExOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIFNldCA9IHJlcXVpcmUoJy4vX1NldCcpLFxuICAgIFdlYWtNYXAgPSByZXF1aXJlKCcuL19XZWFrTWFwJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIG1hcEN0b3JTdHJpbmcgPSBNYXAgPyBmdW5jVG9TdHJpbmcuY2FsbChNYXApIDogJycsXG4gICAgc2V0Q3RvclN0cmluZyA9IFNldCA/IGZ1bmNUb1N0cmluZy5jYWxsKFNldCkgOiAnJyxcbiAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IFdlYWtNYXAgPyBmdW5jVG9TdHJpbmcuY2FsbChXZWFrTWFwKSA6ICcnO1xuXG4vKipcbiAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRUYWcodmFsdWUpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgSUUgMTEgcHJvdmlkaW5nIGB0b1N0cmluZ1RhZ2AgdmFsdWVzIGZvciBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuXG5pZiAoKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogbnVsbCxcbiAgICAgICAgY3RvclN0cmluZyA9IHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgPyBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VGFnO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19nZXRUYWcuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaERlbGV0ZShoYXNoLCBrZXkpIHtcbiAgcmV0dXJuIGhhc2hIYXMoaGFzaCwga2V5KSAmJiBkZWxldGUgaGFzaFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hEZWxldGU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2hhc2hEZWxldGUuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGhhc2gsIGtleSkge1xuICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGhhc2hba2V5XTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgfVxuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChoYXNoLCBrZXkpID8gaGFzaFtrZXldIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hHZXQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2hhc2hHZXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoaGFzaCwga2V5LCB2YWx1ZSkge1xuICBoYXNoW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoU2V0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19oYXNoU2V0LmpzXG4gKiogbW9kdWxlIGlkID0gMTIyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIGFycmF5IGNsb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQXJyYXk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gMTIzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKSxcbiAgICBjbG9uZU1hcCA9IHJlcXVpcmUoJy4vX2Nsb25lTWFwJyksXG4gICAgY2xvbmVSZWdFeHAgPSByZXF1aXJlKCcuL19jbG9uZVJlZ0V4cCcpLFxuICAgIGNsb25lU2V0ID0gcmVxdWlyZSgnLi9fY2xvbmVTZXQnKSxcbiAgICBjbG9uZVN5bWJvbCA9IHJlcXVpcmUoJy4vX2Nsb25lU3ltYm9sJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHJldHVybiBjbG9uZU1hcChvYmplY3QpO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVNldChvYmplY3QpO1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUJ5VGFnO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19pbml0Q2xvbmVCeVRhZy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGVPZihvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KSkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSXRlcmF0ZWVDYWxsO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qc1xuICoqIG1vZHVsZSBpZCA9IDEyNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb252ZXJ0cyBgaXRlcmF0b3JgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gaXRlcmF0b3IgVGhlIGl0ZXJhdG9yIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gaXRlcmF0b3JUb0FycmF5KGl0ZXJhdG9yKSB7XG4gIHZhciBkYXRhLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCEoZGF0YSA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgIHJlc3VsdC5wdXNoKGRhdGEudmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXRlcmF0b3JUb0FycmF5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19pdGVyYXRvclRvQXJyYXkuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBNYXAgPyBuZXcgTWFwIDogW10sXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2xlYXI7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX21hcENsZWFyLmpzXG4gKiogbW9kdWxlIGlkID0gMTI4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgYXNzb2NEZWxldGUgPSByZXF1aXJlKCcuL19hc3NvY0RlbGV0ZScpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaXNLZXlhYmxlID0gcmVxdWlyZSgnLi9faXNLZXlhYmxlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGlzS2V5YWJsZShrZXkpKSB7XG4gICAgcmV0dXJuIGhhc2hEZWxldGUodHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/IGRhdGEuc3RyaW5nIDogZGF0YS5oYXNoLCBrZXkpO1xuICB9XG4gIHJldHVybiBNYXAgPyBkYXRhLm1hcFsnZGVsZXRlJ10oa2V5KSA6IGFzc29jRGVsZXRlKGRhdGEubWFwLCBrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcERlbGV0ZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fbWFwRGVsZXRlLmpzXG4gKiogbW9kdWxlIGlkID0gMTI5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgYXNzb2NHZXQgPSByZXF1aXJlKCcuL19hc3NvY0dldCcpLFxuICAgIGhhc2hHZXQgPSByZXF1aXJlKCcuL19oYXNoR2V0JyksXG4gICAgaXNLZXlhYmxlID0gcmVxdWlyZSgnLi9faXNLZXlhYmxlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGlzS2V5YWJsZShrZXkpKSB7XG4gICAgcmV0dXJuIGhhc2hHZXQodHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/IGRhdGEuc3RyaW5nIDogZGF0YS5oYXNoLCBrZXkpO1xuICB9XG4gIHJldHVybiBNYXAgPyBkYXRhLm1hcC5nZXQoa2V5KSA6IGFzc29jR2V0KGRhdGEubWFwLCBrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcEdldDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fbWFwR2V0LmpzXG4gKiogbW9kdWxlIGlkID0gMTMwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgYXNzb2NIYXMgPSByZXF1aXJlKCcuL19hc3NvY0hhcycpLFxuICAgIGhhc2hIYXMgPSByZXF1aXJlKCcuL19oYXNoSGFzJyksXG4gICAgaXNLZXlhYmxlID0gcmVxdWlyZSgnLi9faXNLZXlhYmxlJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChpc0tleWFibGUoa2V5KSkge1xuICAgIHJldHVybiBoYXNoSGFzKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBkYXRhLnN0cmluZyA6IGRhdGEuaGFzaCwga2V5KTtcbiAgfVxuICByZXR1cm4gTWFwID8gZGF0YS5tYXAuaGFzKGtleSkgOiBhc3NvY0hhcyhkYXRhLm1hcCwga2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBIYXM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX21hcEhhcy5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIGFzc29jU2V0ID0gcmVxdWlyZSgnLi9fYXNzb2NTZXQnKSxcbiAgICBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpLFxuICAgIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBtYXBTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChpc0tleWFibGUoa2V5KSkge1xuICAgIGhhc2hTZXQodHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/IGRhdGEuc3RyaW5nIDogZGF0YS5oYXNoLCBrZXksIHZhbHVlKTtcbiAgfSBlbHNlIGlmIChNYXApIHtcbiAgICBkYXRhLm1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgYXNzb2NTZXQoZGF0YS5tYXAsIGtleSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFNldDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fbWFwU2V0LmpzXG4gKiogbW9kdWxlIGlkID0gMTMyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBUb0FycmF5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19tYXBUb0FycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gMTMzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUb0FycmF5O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19zZXRUb0FycmF5LmpzXG4gKiogbW9kdWxlIGlkID0gMTM0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSB7ICdhcnJheSc6IFtdLCAnbWFwJzogbnVsbCB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX3N0YWNrQ2xlYXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMzVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhc3NvY0RlbGV0ZSA9IHJlcXVpcmUoJy4vX2Fzc29jRGVsZXRlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBhcnJheSA9IGRhdGEuYXJyYXk7XG5cbiAgcmV0dXJuIGFycmF5ID8gYXNzb2NEZWxldGUoYXJyYXksIGtleSkgOiBkYXRhLm1hcFsnZGVsZXRlJ10oa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0RlbGV0ZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fc3RhY2tEZWxldGUuanNcbiAqKiBtb2R1bGUgaWQgPSAxMzZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhc3NvY0dldCA9IHJlcXVpcmUoJy4vX2Fzc29jR2V0Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBhcnJheSA9IGRhdGEuYXJyYXk7XG5cbiAgcmV0dXJuIGFycmF5ID8gYXNzb2NHZXQoYXJyYXksIGtleSkgOiBkYXRhLm1hcC5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0dldDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fc3RhY2tHZXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxMzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBhc3NvY0hhcyA9IHJlcXVpcmUoJy4vX2Fzc29jSGFzJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgYXJyYXkgPSBkYXRhLmFycmF5O1xuXG4gIHJldHVybiBhcnJheSA/IGFzc29jSGFzKGFycmF5LCBrZXkpIDogZGF0YS5tYXAuaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tIYXM7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX3N0YWNrSGFzLmpzXG4gKiogbW9kdWxlIGlkID0gMTM4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpLFxuICAgIGFzc29jU2V0ID0gcmVxdWlyZSgnLi9fYXNzb2NTZXQnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgYXJyYXkgPSBkYXRhLmFycmF5O1xuXG4gIGlmIChhcnJheSkge1xuICAgIGlmIChhcnJheS5sZW5ndGggPCAoTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBhc3NvY1NldChhcnJheSwga2V5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEuYXJyYXkgPSBudWxsO1xuICAgICAgZGF0YS5tYXAgPSBuZXcgTWFwQ2FjaGUoYXJyYXkpO1xuICAgIH1cbiAgfVxuICB2YXIgbWFwID0gZGF0YS5tYXA7XG4gIGlmIChtYXApIHtcbiAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrU2V0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19zdGFja1NldC5qc1xuICoqIG1vZHVsZSBpZCA9IDEzOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICd1c2VyJzogJ2ZyZWQnIH07XG4gKiB2YXIgZ2V0dGVyID0gXy5jb25zdGFudChvYmplY3QpO1xuICpcbiAqIGdldHRlcigpID09PSBvYmplY3Q7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29uc3RhbnQ7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvY29uc3RhbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogVXNlZCB0byBkZXRlcm1pbmUgaWYgdmFsdWVzIGFyZSBvZiB0aGUgbGFuZ3VhZ2UgdHlwZSBgT2JqZWN0YC4gKi9cbnZhciBvYmplY3RUeXBlcyA9IHtcbiAgJ2Z1bmN0aW9uJzogdHJ1ZSxcbiAgJ29iamVjdCc6IHRydWVcbn07XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSAob2JqZWN0VHlwZXNbdHlwZW9mIGV4cG9ydHNdICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUpXG4gID8gZXhwb3J0c1xuICA6IHVuZGVmaW5lZDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSAob2JqZWN0VHlwZXNbdHlwZW9mIG1vZHVsZV0gJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUpXG4gID8gbW9kdWxlXG4gIDogdW5kZWZpbmVkO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSAoZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzKVxuICA/IGZyZWVFeHBvcnRzXG4gIDogdW5kZWZpbmVkO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNCdWZmZXIgPSAhQnVmZmVyID8gY29uc3RhbnQoZmFsc2UpIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgQnVmZmVyO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc0J1ZmZlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE0MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc0hvc3RPYmplY3QgPSByZXF1aXJlKCcuL19pc0hvc3RPYmplY3QnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXBhdHRlcm5zKS4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpID4gNSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05hdGl2ZShBcnJheS5wcm90b3R5cGUucHVzaCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05hdGl2ZShfKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3QoZnVuY1RvU3RyaW5nLmNhbGwodmFsdWUpKTtcbiAgfVxuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIChpc0hvc3RPYmplY3QodmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcikudGVzdCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNOYXRpdmU7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvaXNOYXRpdmUuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc0hvc3RPYmplY3QgPSByZXF1aXJlKCcuL19pc0hvc3RPYmplY3QnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fFxuICAgICAgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgIT0gb2JqZWN0VGFnIHx8IGlzSG9zdE9iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiZcbiAgICBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJiBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2lzUGxhaW5PYmplY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2lzU3RyaW5nLmpzXG4gKiogbW9kdWxlIGlkID0gMTQ0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VQaWNrID0gcmVxdWlyZSgnLi9fYmFzZVBpY2snKSxcbiAgICByZXN0ID0gcmVxdWlyZSgnLi9yZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3Byb3BzXSBUaGUgcHJvcGVydHkgbmFtZXMgdG8gcGljaywgc3BlY2lmaWVkXG4gKiAgaW5kaXZpZHVhbGx5IG9yIGluIGFycmF5cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICpcbiAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gKi9cbnZhciBwaWNrID0gcmVzdChmdW5jdGlvbihvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBiYXNlRmxhdHRlbihwcm9wcywgMSkpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGljaztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9waWNrLmpzXG4gKiogbW9kdWxlIGlkID0gMTQ1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gaXMgbG9vc2VseSBiYXNlZCBvbiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvSW50ZWdlcigzKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgdmFyIHJlbWFpbmRlciA9IHZhbHVlICUgMTtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IChyZW1haW5kZXIgPyB2YWx1ZSAtIHJlbWFpbmRlciA6IHZhbHVlKSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL3RvSW50ZWdlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE0NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTkFOID0gMCAvIDA7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltID0gL15cXHMrfFxccyskL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMnKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IGlzRnVuY3Rpb24odmFsdWUudmFsdWVPZikgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL3RvTnVtYmVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTQ3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZVxuICogcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9QbGFpbk9iamVjdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC90b1BsYWluT2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMTQ4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKlxuICogIENvcHlyaWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZVxuICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZVxuICogIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztcblxuLy8gU2hpbW1pbmcgc3RhcnRzIGhlcmUuXG4oZnVuY3Rpb24oKSB7XG4gIC8vIFV0aWxzLlxuICB2YXIgbG9nZ2luZyA9IHJlcXVpcmUoJy4vdXRpbHMnKS5sb2c7XG4gIHZhciBicm93c2VyRGV0YWlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKS5icm93c2VyRGV0YWlscztcbiAgLy8gRXhwb3J0IHRvIHRoZSBhZGFwdGVyIGdsb2JhbCBvYmplY3QgdmlzaWJsZSBpbiB0aGUgYnJvd3Nlci5cbiAgbW9kdWxlLmV4cG9ydHMuYnJvd3NlckRldGFpbHMgPSBicm93c2VyRGV0YWlscztcbiAgbW9kdWxlLmV4cG9ydHMuZXh0cmFjdFZlcnNpb24gPSByZXF1aXJlKCcuL3V0aWxzJykuZXh0cmFjdFZlcnNpb247XG4gIG1vZHVsZS5leHBvcnRzLmRpc2FibGVMb2cgPSByZXF1aXJlKCcuL3V0aWxzJykuZGlzYWJsZUxvZztcblxuICAvLyBVbmNvbW1lbnQgaWYgeW91IGRvIG5vdCB3YW50IGFueSBsb2dnaW5nIGF0IGFsbCBpbmNsdWRpbmcgdGhlIHN3aXRjaFxuICAvLyBzdGF0ZW1lbnQgYmVsb3cuIENhbiBhbHNvIGJlIHR1cm5lZCBvZmYgaW4gdGhlIGJyb3dzZXIgdmlhXG4gIC8vIGFkYXB0ZXIuZGlzYWJsZUxvZyh0cnVlKSBidXQgdGhlbiBsb2dnaW5nIGZyb20gdGhlIHN3aXRjaCBzdGF0ZW1lbnQgYmVsb3dcbiAgLy8gd2lsbCBzdGlsbCBhcHBlYXIuXG4gIC8vcmVxdWlyZSgnLi91dGlscycpLmRpc2FibGVMb2codHJ1ZSk7XG5cbiAgLy8gQnJvd3NlciBzaGltcy5cbiAgdmFyIGNocm9tZVNoaW0gPSByZXF1aXJlKCcuL2Nocm9tZS9jaHJvbWVfc2hpbScpIHx8IG51bGw7XG4gIHZhciBlZGdlU2hpbSA9IHJlcXVpcmUoJy4vZWRnZS9lZGdlX3NoaW0nKSB8fCBudWxsO1xuICB2YXIgZmlyZWZveFNoaW0gPSByZXF1aXJlKCcuL2ZpcmVmb3gvZmlyZWZveF9zaGltJykgfHwgbnVsbDtcblxuICAvLyBTaGltIGJyb3dzZXIgaWYgZm91bmQuXG4gIHN3aXRjaCAoYnJvd3NlckRldGFpbHMuYnJvd3Nlcikge1xuICAgIGNhc2UgJ2Nocm9tZSc6XG4gICAgICBpZiAoIWNocm9tZVNoaW0gfHwgIWNocm9tZVNoaW0uc2hpbVBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIGxvZ2dpbmcoJ0Nocm9tZSBzaGltIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzIGFkYXB0ZXIgcmVsZWFzZS4nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9nZ2luZygnYWRhcHRlci5qcyBzaGltbWluZyBjaHJvbWUhJyk7XG4gICAgICAvLyBFeHBvcnQgdG8gdGhlIGFkYXB0ZXIgZ2xvYmFsIG9iamVjdCB2aXNpYmxlIGluIHRoZSBicm93c2VyLlxuICAgICAgbW9kdWxlLmV4cG9ydHMuYnJvd3NlclNoaW0gPSBjaHJvbWVTaGltO1xuXG4gICAgICBjaHJvbWVTaGltLnNoaW1HZXRVc2VyTWVkaWEoKTtcbiAgICAgIGNocm9tZVNoaW0uc2hpbVNvdXJjZU9iamVjdCgpO1xuICAgICAgY2hyb21lU2hpbS5zaGltUGVlckNvbm5lY3Rpb24oKTtcbiAgICAgIGNocm9tZVNoaW0uc2hpbU9uVHJhY2soKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VkZ2UnOlxuICAgICAgaWYgKCFlZGdlU2hpbSB8fCAhZWRnZVNoaW0uc2hpbVBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIGxvZ2dpbmcoJ01TIGVkZ2Ugc2hpbSBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcyBhZGFwdGVyIHJlbGVhc2UuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxvZ2dpbmcoJ2FkYXB0ZXIuanMgc2hpbW1pbmcgZWRnZSEnKTtcbiAgICAgIC8vIEV4cG9ydCB0byB0aGUgYWRhcHRlciBnbG9iYWwgb2JqZWN0IHZpc2libGUgaW4gdGhlIGJyb3dzZXIuXG4gICAgICBtb2R1bGUuZXhwb3J0cy5icm93c2VyU2hpbSA9IGVkZ2VTaGltO1xuXG4gICAgICBlZGdlU2hpbS5zaGltUGVlckNvbm5lY3Rpb24oKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZpcmVmb3gnOlxuICAgICAgaWYgKCFmaXJlZm94U2hpbSB8fCAhZmlyZWZveFNoaW0uc2hpbVBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIGxvZ2dpbmcoJ0ZpcmVmb3ggc2hpbSBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcyBhZGFwdGVyIHJlbGVhc2UuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxvZ2dpbmcoJ2FkYXB0ZXIuanMgc2hpbW1pbmcgZmlyZWZveCEnKTtcbiAgICAgIC8vIEV4cG9ydCB0byB0aGUgYWRhcHRlciBnbG9iYWwgb2JqZWN0IHZpc2libGUgaW4gdGhlIGJyb3dzZXIuXG4gICAgICBtb2R1bGUuZXhwb3J0cy5icm93c2VyU2hpbSA9IGZpcmVmb3hTaGltO1xuXG4gICAgICBmaXJlZm94U2hpbS5zaGltR2V0VXNlck1lZGlhKCk7XG4gICAgICBmaXJlZm94U2hpbS5zaGltU291cmNlT2JqZWN0KCk7XG4gICAgICBmaXJlZm94U2hpbS5zaGltUGVlckNvbm5lY3Rpb24oKTtcbiAgICAgIGZpcmVmb3hTaGltLnNoaW1PblRyYWNrKCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbG9nZ2luZygnVW5zdXBwb3J0ZWQgYnJvd3NlciEnKTtcbiAgfVxufSkoKTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9hZGFwdGVyX2NvcmUuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlXG4gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlXG4gKiAgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO1xudmFyIGxvZ2dpbmcgPSByZXF1aXJlKCcuLi91dGlscy5qcycpLmxvZztcbnZhciBicm93c2VyRGV0YWlscyA9IHJlcXVpcmUoJy4uL3V0aWxzLmpzJykuYnJvd3NlckRldGFpbHM7XG5cbnZhciBjaHJvbWVTaGltID0ge1xuICBzaGltT25UcmFjazogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnICYmIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbiAmJiAhKCdvbnRyYWNrJyBpblxuICAgICAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlKSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUsICdvbnRyYWNrJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fb250cmFjazsgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAgIGlmICh0aGlzLl9vbnRyYWNrKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYWNrJywgdGhpcy5fb250cmFjayk7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRoaXMuX29udHJhY2twb2x5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCd0cmFjaycsIHRoaXMuX29udHJhY2sgPSBmKTtcbiAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2FkZHN0cmVhbScsIHRoaXMuX29udHJhY2twb2x5ID0gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgLy8gb25hZGRzdHJlYW0gZG9lcyBub3QgZmlyZSB3aGVuIGEgdHJhY2sgaXMgYWRkZWQgdG8gYW4gZXhpc3Rpbmcgc3RyZWFtLlxuICAgICAgICAgICAgLy8gYnV0IHN0cmVhbS5vbmFkZHRyYWNrIGlzIGltcGxlbWVudGVkIHNvIHdlIHVzZSB0aGF0XG4gICAgICAgICAgICBlLnN0cmVhbS5hZGRFdmVudExpc3RlbmVyKCdhZGR0cmFjaycsIGZ1bmN0aW9uKHRlKSB7XG4gICAgICAgICAgICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgndHJhY2snKTtcbiAgICAgICAgICAgICAgZXZlbnQudHJhY2sgPSB0ZS50cmFjaztcbiAgICAgICAgICAgICAgZXZlbnQucmVjZWl2ZXIgPSB7dHJhY2s6IHRlLnRyYWNrfTtcbiAgICAgICAgICAgICAgZXZlbnQuc3RyZWFtcyA9IFtlLnN0cmVhbV07XG4gICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGUuc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goZnVuY3Rpb24odHJhY2spIHtcbiAgICAgICAgICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KCd0cmFjaycpO1xuICAgICAgICAgICAgICBldmVudC50cmFjayA9IHRyYWNrO1xuICAgICAgICAgICAgICBldmVudC5yZWNlaXZlciA9IHt0cmFjazogdHJhY2t9O1xuICAgICAgICAgICAgICBldmVudC5zdHJlYW1zID0gW2Uuc3RyZWFtXTtcbiAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIHNoaW1Tb3VyY2VPYmplY3Q6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHdpbmRvdy5IVE1MTWVkaWFFbGVtZW50ICYmXG4gICAgICAgICEoJ3NyY09iamVjdCcgaW4gd2luZG93LkhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlKSkge1xuICAgICAgICAvLyBTaGltIHRoZSBzcmNPYmplY3QgcHJvcGVydHksIG9uY2UsIHdoZW4gSFRNTE1lZGlhRWxlbWVudCBpcyBmb3VuZC5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5IVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSwgJ3NyY09iamVjdCcsIHtcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NyY09iamVjdDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldDogZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICAvLyBVc2UgX3NyY09iamVjdCBhcyBhIHByaXZhdGUgcHJvcGVydHkgZm9yIHRoaXMgc2hpbVxuICAgICAgICAgICAgdGhpcy5fc3JjT2JqZWN0ID0gc3RyZWFtO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3JjKSB7XG4gICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5zcmMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgICB0aGlzLnNyYyA9ICcnO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc3RyZWFtKTtcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlIGJsb2IgdXJsIHdoZW4gYSB0cmFjayBpcyBhZGRlZCBvciByZW1vdmVkLlxuICAgICAgICAgICAgLy8gRG9pbmcgaXQgbWFudWFsbHkgc2luY2Ugd2Ugd2FudCB0byBhdm9pZCBhIHJlY3Vyc2lvbi5cbiAgICAgICAgICAgIHN0cmVhbS5hZGRFdmVudExpc3RlbmVyKCdhZGR0cmFjaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICBpZiAoc2VsZi5zcmMpIHtcbiAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHNlbGYuc3JjKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZWxmLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc3RyZWFtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc3RyZWFtLmFkZEV2ZW50TGlzdGVuZXIoJ3JlbW92ZXRyYWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIGlmIChzZWxmLnNyYykge1xuICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoc2VsZi5zcmMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHNlbGYuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzdHJlYW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgc2hpbVBlZXJDb25uZWN0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAvLyBUaGUgUlRDUGVlckNvbm5lY3Rpb24gb2JqZWN0LlxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbiA9IGZ1bmN0aW9uKHBjQ29uZmlnLCBwY0NvbnN0cmFpbnRzKSB7XG4gICAgICAvLyBUcmFuc2xhdGUgaWNlVHJhbnNwb3J0UG9saWN5IHRvIGljZVRyYW5zcG9ydHMsXG4gICAgICAvLyBzZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJydGMvaXNzdWVzL2RldGFpbD9pZD00ODY5XG4gICAgICBsb2dnaW5nKCdQZWVyQ29ubmVjdGlvbicpO1xuICAgICAgaWYgKHBjQ29uZmlnICYmIHBjQ29uZmlnLmljZVRyYW5zcG9ydFBvbGljeSkge1xuICAgICAgICBwY0NvbmZpZy5pY2VUcmFuc3BvcnRzID0gcGNDb25maWcuaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgICAgfVxuXG4gICAgICB2YXIgcGMgPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24ocGNDb25maWcsIHBjQ29uc3RyYWludHMpOyAvLyBqc2NzOmlnbm9yZSByZXF1aXJlQ2FwaXRhbGl6ZWRDb25zdHJ1Y3RvcnNcbiAgICAgIHZhciBvcmlnR2V0U3RhdHMgPSBwYy5nZXRTdGF0cy5iaW5kKHBjKTtcbiAgICAgIHBjLmdldFN0YXRzID0gZnVuY3Rpb24oc2VsZWN0b3IsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgeyAvLyBqc2hpbnQgaWdub3JlOiBsaW5lXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cbiAgICAgICAgLy8gSWYgc2VsZWN0b3IgaXMgYSBmdW5jdGlvbiB0aGVuIHdlIGFyZSBpbiB0aGUgb2xkIHN0eWxlIHN0YXRzIHNvIGp1c3RcbiAgICAgICAgLy8gcGFzcyBiYWNrIHRoZSBvcmlnaW5hbCBnZXRTdGF0cyBmb3JtYXQgdG8gYXZvaWQgYnJlYWtpbmcgb2xkIHVzZXJzLlxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdHlwZW9mIHNlbGVjdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIG9yaWdHZXRTdGF0cyhzZWxlY3Rvciwgc3VjY2Vzc0NhbGxiYWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBmaXhDaHJvbWVTdGF0c18gPSBmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgIHZhciBzdGFuZGFyZFJlcG9ydCA9IHt9O1xuICAgICAgICAgIHZhciByZXBvcnRzID0gcmVzcG9uc2UucmVzdWx0KCk7XG4gICAgICAgICAgcmVwb3J0cy5mb3JFYWNoKGZ1bmN0aW9uKHJlcG9ydCkge1xuICAgICAgICAgICAgdmFyIHN0YW5kYXJkU3RhdHMgPSB7XG4gICAgICAgICAgICAgIGlkOiByZXBvcnQuaWQsXG4gICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgdHlwZTogcmVwb3J0LnR5cGVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXBvcnQubmFtZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgICAgICAgc3RhbmRhcmRTdGF0c1tuYW1lXSA9IHJlcG9ydC5zdGF0KG5hbWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzdGFuZGFyZFJlcG9ydFtzdGFuZGFyZFN0YXRzLmlkXSA9IHN0YW5kYXJkU3RhdHM7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gc3RhbmRhcmRSZXBvcnQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIHZhciBzdWNjZXNzQ2FsbGJhY2tXcmFwcGVyXyA9IGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICBhcmdzWzFdKGZpeENocm9tZVN0YXRzXyhyZXNwb25zZSkpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZXR1cm4gb3JpZ0dldFN0YXRzLmFwcGx5KHRoaXMsIFtzdWNjZXNzQ2FsbGJhY2tXcmFwcGVyXywgYXJndW1lbnRzWzBdXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBwcm9taXNlLXN1cHBvcnRcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMSAmJiBzZWxlY3RvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgb3JpZ0dldFN0YXRzLmFwcGx5KHNlbGYsIFtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZS5hcHBseShudWxsLCBbZml4Q2hyb21lU3RhdHNfKHJlc3BvbnNlKV0pO1xuICAgICAgICAgICAgICAgIH0sIHJlamVjdF0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcmlnR2V0U3RhdHMuYXBwbHkoc2VsZiwgW3Jlc29sdmUsIHJlamVjdF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gcGM7XG4gICAgfTtcbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlID0gd2Via2l0UlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlO1xuXG4gICAgLy8gd3JhcCBzdGF0aWMgbWV0aG9kcy4gQ3VycmVudGx5IGp1c3QgZ2VuZXJhdGVDZXJ0aWZpY2F0ZS5cbiAgICBpZiAod2Via2l0UlRDUGVlckNvbm5lY3Rpb24uZ2VuZXJhdGVDZXJ0aWZpY2F0ZSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbiwgJ2dlbmVyYXRlQ2VydGlmaWNhdGUnLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbi5nZW5lcmF0ZUNlcnRpZmljYXRlLmFwcGx5KG51bGwsXG4gICAgICAgICAgICAgICAgYXJndW1lbnRzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uLmdlbmVyYXRlQ2VydGlmaWNhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhZGQgcHJvbWlzZSBzdXBwb3J0XG4gICAgWydjcmVhdGVPZmZlcicsICdjcmVhdGVBbnN3ZXInXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgdmFyIG5hdGl2ZU1ldGhvZCA9IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZVttZXRob2RdO1xuICAgICAgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEgfHwgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgIHR5cGVvZihhcmd1bWVudHNbMF0pID09PSAnb2JqZWN0JykpIHtcbiAgICAgICAgICB2YXIgb3B0cyA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgbmF0aXZlTWV0aG9kLmFwcGx5KHNlbGYsIFtyZXNvbHZlLCByZWplY3QsIG9wdHNdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbmF0aXZlTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBbJ3NldExvY2FsRGVzY3JpcHRpb24nLCAnc2V0UmVtb3RlRGVzY3JpcHRpb24nLFxuICAgICAgICAnYWRkSWNlQ2FuZGlkYXRlJ10uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHZhciBuYXRpdmVNZXRob2QgPSB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGVbbWV0aG9kXTtcbiAgICAgIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBuYXRpdmVNZXRob2QuYXBwbHkoc2VsZiwgW2FyZ3NbMF0sXG4gICAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgICAgYXJnc1sxXS5hcHBseShudWxsLCBbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPj0gMykge1xuICAgICAgICAgICAgICAgICAgYXJnc1syXS5hcHBseShudWxsLCBbZXJyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuXG4gIC8vIEF0dGFjaCBhIG1lZGlhIHN0cmVhbSB0byBhbiBlbGVtZW50LlxuICBhdHRhY2hNZWRpYVN0cmVhbTogZnVuY3Rpb24oZWxlbWVudCwgc3RyZWFtKSB7XG4gICAgbG9nZ2luZygnREVQUkVDQVRFRCwgYXR0YWNoTWVkaWFTdHJlYW0gd2lsbCBzb29uIGJlIHJlbW92ZWQuJyk7XG4gICAgaWYgKGJyb3dzZXJEZXRhaWxzLnZlcnNpb24gPj0gNDMpIHtcbiAgICAgIGVsZW1lbnQuc3JjT2JqZWN0ID0gc3RyZWFtO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQuc3JjICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZWxlbWVudC5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHN0cmVhbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dpbmcoJ0Vycm9yIGF0dGFjaGluZyBzdHJlYW0gdG8gZWxlbWVudC4nKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVhdHRhY2hNZWRpYVN0cmVhbTogZnVuY3Rpb24odG8sIGZyb20pIHtcbiAgICBsb2dnaW5nKCdERVBSRUNBVEVELCByZWF0dGFjaE1lZGlhU3RyZWFtIHdpbGwgc29vbiBiZSByZW1vdmVkLicpO1xuICAgIGlmIChicm93c2VyRGV0YWlscy52ZXJzaW9uID49IDQzKSB7XG4gICAgICB0by5zcmNPYmplY3QgPSBmcm9tLnNyY09iamVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdG8uc3JjID0gZnJvbS5zcmM7XG4gICAgfVxuICB9XG59XG5cblxuLy8gRXhwb3NlIHB1YmxpYyBtZXRob2RzLlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNoaW1PblRyYWNrOiBjaHJvbWVTaGltLnNoaW1PblRyYWNrLFxuICBzaGltU291cmNlT2JqZWN0OiBjaHJvbWVTaGltLnNoaW1Tb3VyY2VPYmplY3QsXG4gIHNoaW1QZWVyQ29ubmVjdGlvbjogY2hyb21lU2hpbS5zaGltUGVlckNvbm5lY3Rpb24sXG4gIHNoaW1HZXRVc2VyTWVkaWE6IHJlcXVpcmUoJy4vZ2V0dXNlcm1lZGlhJyksXG4gIGF0dGFjaE1lZGlhU3RyZWFtOiBjaHJvbWVTaGltLmF0dGFjaE1lZGlhU3RyZWFtLFxuICByZWF0dGFjaE1lZGlhU3RyZWFtOiBjaHJvbWVTaGltLnJlYXR0YWNoTWVkaWFTdHJlYW1cbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvY2hyb21lL2Nocm9tZV9zaGltLmpzXG4gKiogbW9kdWxlIGlkID0gMTUwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKlxuICogIENvcHlyaWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZVxuICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZVxuICogIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztcbnZhciBsb2dnaW5nID0gcmVxdWlyZSgnLi4vdXRpbHMuanMnKS5sb2c7XG5cbi8vIEV4cG9zZSBwdWJsaWMgbWV0aG9kcy5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBjb25zdHJhaW50c1RvQ2hyb21lXyA9IGZ1bmN0aW9uKGMpIHtcbiAgICBpZiAodHlwZW9mIGMgIT09ICdvYmplY3QnIHx8IGMubWFuZGF0b3J5IHx8IGMub3B0aW9uYWwpIHtcbiAgICAgIHJldHVybiBjO1xuICAgIH1cbiAgICB2YXIgY2MgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgaWYgKGtleSA9PT0gJ3JlcXVpcmUnIHx8IGtleSA9PT0gJ2FkdmFuY2VkJyB8fCBrZXkgPT09ICdtZWRpYVNvdXJjZScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHIgPSAodHlwZW9mIGNba2V5XSA9PT0gJ29iamVjdCcpID8gY1trZXldIDoge2lkZWFsOiBjW2tleV19O1xuICAgICAgaWYgKHIuZXhhY3QgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygci5leGFjdCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgci5taW4gPSByLm1heCA9IHIuZXhhY3Q7XG4gICAgICB9XG4gICAgICB2YXIgb2xkbmFtZV8gPSBmdW5jdGlvbihwcmVmaXgsIG5hbWUpIHtcbiAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgIHJldHVybiBwcmVmaXggKyBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5hbWUgPT09ICdkZXZpY2VJZCcpID8gJ3NvdXJjZUlkJyA6IG5hbWU7XG4gICAgICB9O1xuICAgICAgaWYgKHIuaWRlYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjYy5vcHRpb25hbCA9IGNjLm9wdGlvbmFsIHx8IFtdO1xuICAgICAgICB2YXIgb2MgPSB7fTtcbiAgICAgICAgaWYgKHR5cGVvZiByLmlkZWFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIG9jW29sZG5hbWVfKCdtaW4nLCBrZXkpXSA9IHIuaWRlYWw7XG4gICAgICAgICAgY2Mub3B0aW9uYWwucHVzaChvYyk7XG4gICAgICAgICAgb2MgPSB7fTtcbiAgICAgICAgICBvY1tvbGRuYW1lXygnbWF4Jywga2V5KV0gPSByLmlkZWFsO1xuICAgICAgICAgIGNjLm9wdGlvbmFsLnB1c2gob2MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9jW29sZG5hbWVfKCcnLCBrZXkpXSA9IHIuaWRlYWw7XG4gICAgICAgICAgY2Mub3B0aW9uYWwucHVzaChvYyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyLmV4YWN0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHIuZXhhY3QgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGNjLm1hbmRhdG9yeSA9IGNjLm1hbmRhdG9yeSB8fCB7fTtcbiAgICAgICAgY2MubWFuZGF0b3J5W29sZG5hbWVfKCcnLCBrZXkpXSA9IHIuZXhhY3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbJ21pbicsICdtYXgnXS5mb3JFYWNoKGZ1bmN0aW9uKG1peCkge1xuICAgICAgICAgIGlmIChyW21peF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY2MubWFuZGF0b3J5ID0gY2MubWFuZGF0b3J5IHx8IHt9O1xuICAgICAgICAgICAgY2MubWFuZGF0b3J5W29sZG5hbWVfKG1peCwga2V5KV0gPSByW21peF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoYy5hZHZhbmNlZCkge1xuICAgICAgY2Mub3B0aW9uYWwgPSAoY2Mub3B0aW9uYWwgfHwgW10pLmNvbmNhdChjLmFkdmFuY2VkKTtcbiAgICB9XG4gICAgcmV0dXJuIGNjO1xuICB9O1xuXG4gIHZhciBnZXRVc2VyTWVkaWFfID0gZnVuY3Rpb24oY29uc3RyYWludHMsIG9uU3VjY2Vzcywgb25FcnJvcikge1xuICAgIGlmIChjb25zdHJhaW50cy5hdWRpbykge1xuICAgICAgY29uc3RyYWludHMuYXVkaW8gPSBjb25zdHJhaW50c1RvQ2hyb21lXyhjb25zdHJhaW50cy5hdWRpbyk7XG4gICAgfVxuICAgIGlmIChjb25zdHJhaW50cy52aWRlbykge1xuICAgICAgY29uc3RyYWludHMudmlkZW8gPSBjb25zdHJhaW50c1RvQ2hyb21lXyhjb25zdHJhaW50cy52aWRlbyk7XG4gICAgfVxuICAgIGxvZ2dpbmcoJ2Nocm9tZTogJyArIEpTT04uc3RyaW5naWZ5KGNvbnN0cmFpbnRzKSk7XG4gICAgcmV0dXJuIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIG9uU3VjY2Vzcywgb25FcnJvcik7XG4gIH07XG4gIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgPSBnZXRVc2VyTWVkaWFfO1xuXG4gIC8vIFJldHVybnMgdGhlIHJlc3VsdCBvZiBnZXRVc2VyTWVkaWEgYXMgYSBQcm9taXNlLlxuICB2YXIgZ2V0VXNlck1lZGlhUHJvbWlzZV8gPSBmdW5jdGlvbihjb25zdHJhaW50cykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAoIW5hdmlnYXRvci5tZWRpYURldmljZXMpIHtcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzID0ge2dldFVzZXJNZWRpYTogZ2V0VXNlck1lZGlhUHJvbWlzZV8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0ZURldmljZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgICAgdmFyIGtpbmRzID0ge2F1ZGlvOiAnYXVkaW9pbnB1dCcsIHZpZGVvOiAndmlkZW9pbnB1dCd9O1xuICAgICAgICByZXR1cm4gTWVkaWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKGZ1bmN0aW9uKGRldmljZXMpIHtcbiAgICAgICAgICByZXNvbHZlKGRldmljZXMubWFwKGZ1bmN0aW9uKGRldmljZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtsYWJlbDogZGV2aWNlLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBraW5kOiBraW5kc1tkZXZpY2Uua2luZF0sXG4gICAgICAgICAgICAgICAgICAgIGRldmljZUlkOiBkZXZpY2UuaWQsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwSWQ6ICcnfTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfX07XG4gIH1cblxuICAvLyBBIHNoaW0gZm9yIGdldFVzZXJNZWRpYSBtZXRob2Qgb24gdGhlIG1lZGlhRGV2aWNlcyBvYmplY3QuXG4gIC8vIFRPRE8oS2FwdGVuSmFuc3NvbikgcmVtb3ZlIG9uY2UgaW1wbGVtZW50ZWQgaW4gQ2hyb21lIHN0YWJsZS5cbiAgaWYgKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSkge1xuICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhID0gZnVuY3Rpb24oY29uc3RyYWludHMpIHtcbiAgICAgIHJldHVybiBnZXRVc2VyTWVkaWFQcm9taXNlXyhjb25zdHJhaW50cyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBFdmVuIHRob3VnaCBDaHJvbWUgNDUgaGFzIG5hdmlnYXRvci5tZWRpYURldmljZXMgYW5kIGEgZ2V0VXNlck1lZGlhXG4gICAgLy8gZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhIFByb21pc2UsIGl0IGRvZXMgbm90IGFjY2VwdCBzcGVjLXN0eWxlXG4gICAgLy8gY29uc3RyYWludHMuXG4gICAgdmFyIG9yaWdHZXRVc2VyTWVkaWEgPSBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYS5cbiAgICAgICAgYmluZChuYXZpZ2F0b3IubWVkaWFEZXZpY2VzKTtcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSA9IGZ1bmN0aW9uKGMpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGxvZ2dpbmcoJ3NwZWM6ICAgJyArIEpTT04uc3RyaW5naWZ5KGMpKTsgLy8gd2hpdGVzcGFjZSBmb3IgYWxpZ25tZW50XG4gICAgICAgIGMuYXVkaW8gPSBjb25zdHJhaW50c1RvQ2hyb21lXyhjLmF1ZGlvKTtcbiAgICAgICAgYy52aWRlbyA9IGNvbnN0cmFpbnRzVG9DaHJvbWVfKGMudmlkZW8pO1xuICAgICAgICBsb2dnaW5nKCdjaHJvbWU6ICcgKyBKU09OLnN0cmluZ2lmeShjKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3JpZ0dldFVzZXJNZWRpYShjKTtcbiAgICB9LmJpbmQodGhpcyk7XG4gIH1cblxuICAvLyBEdW1teSBkZXZpY2VjaGFuZ2UgZXZlbnQgbWV0aG9kcy5cbiAgLy8gVE9ETyhLYXB0ZW5KYW5zc29uKSByZW1vdmUgb25jZSBpbXBsZW1lbnRlZCBpbiBDaHJvbWUgc3RhYmxlLlxuICBpZiAodHlwZW9mIG5hdmlnYXRvci5tZWRpYURldmljZXMuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIGxvZ2dpbmcoJ0R1bW15IG1lZGlhRGV2aWNlcy5hZGRFdmVudExpc3RlbmVyIGNhbGxlZC4nKTtcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5yZW1vdmVFdmVudExpc3RlbmVyID09PSAndW5kZWZpbmVkJykge1xuICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKCkge1xuICAgICAgbG9nZ2luZygnRHVtbXkgbWVkaWFEZXZpY2VzLnJlbW92ZUV2ZW50TGlzdGVuZXIgY2FsbGVkLicpO1xuICAgIH07XG4gIH1cbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi93ZWJydGMtYWRhcHRlci9zcmMvanMvY2hyb21lL2dldHVzZXJtZWRpYS5qc1xuICoqIG1vZHVsZSBpZCA9IDE1MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLypcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2VcbiAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2VcbiAqICB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbi8vIFNEUCBoZWxwZXJzLlxudmFyIFNEUFV0aWxzID0ge307XG5cbi8vIEdlbmVyYXRlIGFuIGFscGhhbnVtZXJpYyBpZGVudGlmaWVyIGZvciBjbmFtZSBvciBtaWRzLlxuLy8gVE9ETzogdXNlIFVVSURzIGluc3RlYWQ/IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2plZC85ODI4ODNcblNEUFV0aWxzLmdlbmVyYXRlSWRlbnRpZmllciA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDEwKTtcbn07XG5cbi8vIFRoZSBSVENQIENOQU1FIHVzZWQgYnkgYWxsIHBlZXJjb25uZWN0aW9ucyBmcm9tIHRoZSBzYW1lIEpTLlxuU0RQVXRpbHMubG9jYWxDTmFtZSA9IFNEUFV0aWxzLmdlbmVyYXRlSWRlbnRpZmllcigpO1xuXG5cbi8vIFNwbGl0cyBTRFAgaW50byBsaW5lcywgZGVhbGluZyB3aXRoIGJvdGggQ1JMRiBhbmQgTEYuXG5TRFBVdGlscy5zcGxpdExpbmVzID0gZnVuY3Rpb24oYmxvYikge1xuICByZXR1cm4gYmxvYi50cmltKCkuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgcmV0dXJuIGxpbmUudHJpbSgpO1xuICB9KTtcbn07XG4vLyBTcGxpdHMgU0RQIGludG8gc2Vzc2lvbnBhcnQgYW5kIG1lZGlhc2VjdGlvbnMuIEVuc3VyZXMgQ1JMRi5cblNEUFV0aWxzLnNwbGl0U2VjdGlvbnMgPSBmdW5jdGlvbihibG9iKSB7XG4gIHZhciBwYXJ0cyA9IGJsb2Iuc3BsaXQoJ1xcclxcbm09Jyk7XG4gIHJldHVybiBwYXJ0cy5tYXAoZnVuY3Rpb24ocGFydCwgaW5kZXgpIHtcbiAgICByZXR1cm4gKGluZGV4ID4gMCA/ICdtPScgKyBwYXJ0IDogcGFydCkudHJpbSgpICsgJ1xcclxcbic7XG4gIH0pO1xufTtcblxuLy8gUmV0dXJucyBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggYSBjZXJ0YWluIHByZWZpeC5cblNEUFV0aWxzLm1hdGNoUHJlZml4ID0gZnVuY3Rpb24oYmxvYiwgcHJlZml4KSB7XG4gIHJldHVybiBTRFBVdGlscy5zcGxpdExpbmVzKGJsb2IpLmZpbHRlcihmdW5jdGlvbihsaW5lKSB7XG4gICAgcmV0dXJuIGxpbmUuaW5kZXhPZihwcmVmaXgpID09PSAwO1xuICB9KTtcbn07XG5cbi8vIFBhcnNlcyBhbiBJQ0UgY2FuZGlkYXRlIGxpbmUuIFNhbXBsZSBpbnB1dDpcbi8vIGNhbmRpZGF0ZTo3MDI3ODYzNTAgMiB1ZHAgNDE4MTk5MDIgOC44LjguOCA2MDc2OSB0eXAgcmVsYXkgcmFkZHIgOC44LjguOCBycG9ydCA1NTk5NlwiXG5TRFBVdGlscy5wYXJzZUNhbmRpZGF0ZSA9IGZ1bmN0aW9uKGxpbmUpIHtcbiAgdmFyIHBhcnRzO1xuICAvLyBQYXJzZSBib3RoIHZhcmlhbnRzLlxuICBpZiAobGluZS5pbmRleE9mKCdhPWNhbmRpZGF0ZTonKSA9PT0gMCkge1xuICAgIHBhcnRzID0gbGluZS5zdWJzdHJpbmcoMTIpLnNwbGl0KCcgJyk7XG4gIH0gZWxzZSB7XG4gICAgcGFydHMgPSBsaW5lLnN1YnN0cmluZygxMCkuc3BsaXQoJyAnKTtcbiAgfVxuXG4gIHZhciBjYW5kaWRhdGUgPSB7XG4gICAgZm91bmRhdGlvbjogcGFydHNbMF0sXG4gICAgY29tcG9uZW50OiBwYXJ0c1sxXSxcbiAgICBwcm90b2NvbDogcGFydHNbMl0udG9Mb3dlckNhc2UoKSxcbiAgICBwcmlvcml0eTogcGFyc2VJbnQocGFydHNbM10sIDEwKSxcbiAgICBpcDogcGFydHNbNF0sXG4gICAgcG9ydDogcGFyc2VJbnQocGFydHNbNV0sIDEwKSxcbiAgICAvLyBza2lwIHBhcnRzWzZdID09ICd0eXAnXG4gICAgdHlwZTogcGFydHNbN11cbiAgfTtcblxuICBmb3IgKHZhciBpID0gODsgaSA8IHBhcnRzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgc3dpdGNoIChwYXJ0c1tpXSkge1xuICAgICAgY2FzZSAncmFkZHInOlxuICAgICAgICBjYW5kaWRhdGUucmVsYXRlZEFkZHJlc3MgPSBwYXJ0c1tpICsgMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncnBvcnQnOlxuICAgICAgICBjYW5kaWRhdGUucmVsYXRlZFBvcnQgPSBwYXJzZUludChwYXJ0c1tpICsgMV0sIDEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0Y3B0eXBlJzpcbiAgICAgICAgY2FuZGlkYXRlLnRjcFR5cGUgPSBwYXJ0c1tpICsgMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogLy8gVW5rbm93biBleHRlbnNpb25zIGFyZSBzaWxlbnRseSBpZ25vcmVkLlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZTtcbn07XG5cbi8vIFRyYW5zbGF0ZXMgYSBjYW5kaWRhdGUgb2JqZWN0IGludG8gU0RQIGNhbmRpZGF0ZSBhdHRyaWJ1dGUuXG5TRFBVdGlscy53cml0ZUNhbmRpZGF0ZSA9IGZ1bmN0aW9uKGNhbmRpZGF0ZSkge1xuICB2YXIgc2RwID0gW107XG4gIHNkcC5wdXNoKGNhbmRpZGF0ZS5mb3VuZGF0aW9uKTtcbiAgc2RwLnB1c2goY2FuZGlkYXRlLmNvbXBvbmVudCk7XG4gIHNkcC5wdXNoKGNhbmRpZGF0ZS5wcm90b2NvbC50b1VwcGVyQ2FzZSgpKTtcbiAgc2RwLnB1c2goY2FuZGlkYXRlLnByaW9yaXR5KTtcbiAgc2RwLnB1c2goY2FuZGlkYXRlLmlwKTtcbiAgc2RwLnB1c2goY2FuZGlkYXRlLnBvcnQpO1xuXG4gIHZhciB0eXBlID0gY2FuZGlkYXRlLnR5cGU7XG4gIHNkcC5wdXNoKCd0eXAnKTtcbiAgc2RwLnB1c2godHlwZSk7XG4gIGlmICh0eXBlICE9PSAnaG9zdCcgJiYgY2FuZGlkYXRlLnJlbGF0ZWRBZGRyZXNzICYmXG4gICAgICBjYW5kaWRhdGUucmVsYXRlZFBvcnQpIHtcbiAgICBzZHAucHVzaCgncmFkZHInKTtcbiAgICBzZHAucHVzaChjYW5kaWRhdGUucmVsYXRlZEFkZHJlc3MpOyAvLyB3YXM6IHJlbEFkZHJcbiAgICBzZHAucHVzaCgncnBvcnQnKTtcbiAgICBzZHAucHVzaChjYW5kaWRhdGUucmVsYXRlZFBvcnQpOyAvLyB3YXM6IHJlbFBvcnRcbiAgfVxuICBpZiAoY2FuZGlkYXRlLnRjcFR5cGUgJiYgY2FuZGlkYXRlLnByb3RvY29sLnRvTG93ZXJDYXNlKCkgPT09ICd0Y3AnKSB7XG4gICAgc2RwLnB1c2goJ3RjcHR5cGUnKTtcbiAgICBzZHAucHVzaChjYW5kaWRhdGUudGNwVHlwZSk7XG4gIH1cbiAgcmV0dXJuICdjYW5kaWRhdGU6JyArIHNkcC5qb2luKCcgJyk7XG59O1xuXG4vLyBQYXJzZXMgYW4gcnRwbWFwIGxpbmUsIHJldHVybnMgUlRDUnRwQ29kZGVjUGFyYW1ldGVycy4gU2FtcGxlIGlucHV0OlxuLy8gYT1ydHBtYXA6MTExIG9wdXMvNDgwMDAvMlxuU0RQVXRpbHMucGFyc2VSdHBNYXAgPSBmdW5jdGlvbihsaW5lKSB7XG4gIHZhciBwYXJ0cyA9IGxpbmUuc3Vic3RyKDkpLnNwbGl0KCcgJyk7XG4gIHZhciBwYXJzZWQgPSB7XG4gICAgcGF5bG9hZFR5cGU6IHBhcnNlSW50KHBhcnRzLnNoaWZ0KCksIDEwKSAvLyB3YXM6IGlkXG4gIH07XG5cbiAgcGFydHMgPSBwYXJ0c1swXS5zcGxpdCgnLycpO1xuXG4gIHBhcnNlZC5uYW1lID0gcGFydHNbMF07XG4gIHBhcnNlZC5jbG9ja1JhdGUgPSBwYXJzZUludChwYXJ0c1sxXSwgMTApOyAvLyB3YXM6IGNsb2NrcmF0ZVxuICBwYXJzZWQubnVtQ2hhbm5lbHMgPSBwYXJ0cy5sZW5ndGggPT09IDMgPyBwYXJzZUludChwYXJ0c1syXSwgMTApIDogMTsgLy8gd2FzOiBjaGFubmVsc1xuICByZXR1cm4gcGFyc2VkO1xufTtcblxuLy8gR2VuZXJhdGUgYW4gYT1ydHBtYXAgbGluZSBmcm9tIFJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBvciBSVENSdHBDb2RlY1BhcmFtZXRlcnMuXG5TRFBVdGlscy53cml0ZVJ0cE1hcCA9IGZ1bmN0aW9uKGNvZGVjKSB7XG4gIHZhciBwdCA9IGNvZGVjLnBheWxvYWRUeXBlO1xuICBpZiAoY29kZWMucHJlZmVycmVkUGF5bG9hZFR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHB0ID0gY29kZWMucHJlZmVycmVkUGF5bG9hZFR5cGU7XG4gIH1cbiAgcmV0dXJuICdhPXJ0cG1hcDonICsgcHQgKyAnICcgKyBjb2RlYy5uYW1lICsgJy8nICsgY29kZWMuY2xvY2tSYXRlICtcbiAgICAgIChjb2RlYy5udW1DaGFubmVscyAhPT0gMSA/ICcvJyArIGNvZGVjLm51bUNoYW5uZWxzIDogJycpICsgJ1xcclxcbic7XG59O1xuXG4vLyBQYXJzZXMgYW4gZnRtcCBsaW5lLCByZXR1cm5zIGRpY3Rpb25hcnkuIFNhbXBsZSBpbnB1dDpcbi8vIGE9Zm10cDo5NiB2YnI9b247Y25nPW9uXG4vLyBBbHNvIGRlYWxzIHdpdGggdmJyPW9uOyBjbmc9b25cblNEUFV0aWxzLnBhcnNlRm10cCA9IGZ1bmN0aW9uKGxpbmUpIHtcbiAgdmFyIHBhcnNlZCA9IHt9O1xuICB2YXIga3Y7XG4gIHZhciBwYXJ0cyA9IGxpbmUuc3Vic3RyKGxpbmUuaW5kZXhPZignICcpICsgMSkuc3BsaXQoJzsnKTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBwYXJ0cy5sZW5ndGg7IGorKykge1xuICAgIGt2ID0gcGFydHNbal0udHJpbSgpLnNwbGl0KCc9Jyk7XG4gICAgcGFyc2VkW2t2WzBdLnRyaW0oKV0gPSBrdlsxXTtcbiAgfVxuICByZXR1cm4gcGFyc2VkO1xufTtcblxuLy8gR2VuZXJhdGVzIGFuIGE9ZnRtcCBsaW5lIGZyb20gUlRDUnRwQ29kZWNDYXBhYmlsaXR5IG9yIFJUQ1J0cENvZGVjUGFyYW1ldGVycy5cblNEUFV0aWxzLndyaXRlRnRtcCA9IGZ1bmN0aW9uKGNvZGVjKSB7XG4gIHZhciBsaW5lID0gJyc7XG4gIHZhciBwdCA9IGNvZGVjLnBheWxvYWRUeXBlO1xuICBpZiAoY29kZWMucHJlZmVycmVkUGF5bG9hZFR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHB0ID0gY29kZWMucHJlZmVycmVkUGF5bG9hZFR5cGU7XG4gIH1cbiAgaWYgKGNvZGVjLnBhcmFtZXRlcnMgJiYgY29kZWMucGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICB2YXIgcGFyYW1zID0gW107XG4gICAgT2JqZWN0LmtleXMoY29kZWMucGFyYW1ldGVycykuZm9yRWFjaChmdW5jdGlvbihwYXJhbSkge1xuICAgICAgcGFyYW1zLnB1c2gocGFyYW0gKyAnPScgKyBjb2RlYy5wYXJhbWV0ZXJzW3BhcmFtXSk7XG4gICAgfSk7XG4gICAgbGluZSArPSAnYT1mbXRwOicgKyBwdCArICcgJyArIHBhcmFtcy5qb2luKCc7JykgKyAnXFxyXFxuJztcbiAgfVxuICByZXR1cm4gbGluZTtcbn07XG5cbi8vIFBhcnNlcyBhbiBydGNwLWZiIGxpbmUsIHJldHVybnMgUlRDUFJ0Y3BGZWVkYmFjayBvYmplY3QuIFNhbXBsZSBpbnB1dDpcbi8vIGE9cnRjcC1mYjo5OCBuYWNrIHJwc2lcblNEUFV0aWxzLnBhcnNlUnRjcEZiID0gZnVuY3Rpb24obGluZSkge1xuICB2YXIgcGFydHMgPSBsaW5lLnN1YnN0cihsaW5lLmluZGV4T2YoJyAnKSArIDEpLnNwbGl0KCcgJyk7XG4gIHJldHVybiB7XG4gICAgdHlwZTogcGFydHMuc2hpZnQoKSxcbiAgICBwYXJhbWV0ZXI6IHBhcnRzLmpvaW4oJyAnKVxuICB9O1xufTtcbi8vIEdlbmVyYXRlIGE9cnRjcC1mYiBsaW5lcyBmcm9tIFJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBvciBSVENSdHBDb2RlY1BhcmFtZXRlcnMuXG5TRFBVdGlscy53cml0ZVJ0Y3BGYiA9IGZ1bmN0aW9uKGNvZGVjKSB7XG4gIHZhciBsaW5lcyA9ICcnO1xuICB2YXIgcHQgPSBjb2RlYy5wYXlsb2FkVHlwZTtcbiAgaWYgKGNvZGVjLnByZWZlcnJlZFBheWxvYWRUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICBwdCA9IGNvZGVjLnByZWZlcnJlZFBheWxvYWRUeXBlO1xuICB9XG4gIGlmIChjb2RlYy5ydGNwRmVlZGJhY2sgJiYgY29kZWMucnRjcEZlZWRiYWNrLmxlbmd0aCkge1xuICAgIC8vIEZJWE1FOiBzcGVjaWFsIGhhbmRsaW5nIGZvciB0cnItaW50P1xuICAgIGNvZGVjLnJ0Y3BGZWVkYmFjay5mb3JFYWNoKGZ1bmN0aW9uKGZiKSB7XG4gICAgICBsaW5lcyArPSAnYT1ydGNwLWZiOicgKyBwdCArICcgJyArIGZiLnR5cGUgKyAnICcgKyBmYi5wYXJhbWV0ZXIgK1xuICAgICAgICAgICdcXHJcXG4nO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBsaW5lcztcbn07XG5cbi8vIFBhcnNlcyBhbiBSRkMgNTU3NiBzc3JjIG1lZGlhIGF0dHJpYnV0ZS4gU2FtcGxlIGlucHV0OlxuLy8gYT1zc3JjOjM3MzU5Mjg1NTkgY25hbWU6c29tZXRoaW5nXG5TRFBVdGlscy5wYXJzZVNzcmNNZWRpYSA9IGZ1bmN0aW9uKGxpbmUpIHtcbiAgdmFyIHNwID0gbGluZS5pbmRleE9mKCcgJyk7XG4gIHZhciBwYXJ0cyA9IHtcbiAgICBzc3JjOiBsaW5lLnN1YnN0cig3LCBzcCAtIDcpLFxuICB9O1xuICB2YXIgY29sb24gPSBsaW5lLmluZGV4T2YoJzonLCBzcCk7XG4gIGlmIChjb2xvbiA+IC0xKSB7XG4gICAgcGFydHMuYXR0cmlidXRlID0gbGluZS5zdWJzdHIoc3AgKyAxLCBjb2xvbiAtIHNwIC0gMSk7XG4gICAgcGFydHMudmFsdWUgPSBsaW5lLnN1YnN0cihjb2xvbiArIDEpO1xuICB9IGVsc2Uge1xuICAgIHBhcnRzLmF0dHJpYnV0ZSA9IGxpbmUuc3Vic3RyKHNwICsgMSk7XG4gIH1cbiAgcmV0dXJuIHBhcnRzO1xufTtcblxuLy8gRXh0cmFjdHMgRFRMUyBwYXJhbWV0ZXJzIGZyb20gU0RQIG1lZGlhIHNlY3Rpb24gb3Igc2Vzc2lvbnBhcnQuXG4vLyBGSVhNRTogZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZnVuY3Rpb25zIHRoaXMgc2hvdWxkIG9ubHlcbi8vICAgZ2V0IHRoZSBmaW5nZXJwcmludCBsaW5lIGFzIGlucHV0LiBTZWUgYWxzbyBnZXRJY2VQYXJhbWV0ZXJzLlxuU0RQVXRpbHMuZ2V0RHRsc1BhcmFtZXRlcnMgPSBmdW5jdGlvbihtZWRpYVNlY3Rpb24sIHNlc3Npb25wYXJ0KSB7XG4gIHZhciBsaW5lcyA9IFNEUFV0aWxzLnNwbGl0TGluZXMobWVkaWFTZWN0aW9uKTtcbiAgbGluZXMgPSBsaW5lcy5jb25jYXQoU0RQVXRpbHMuc3BsaXRMaW5lcyhzZXNzaW9ucGFydCkpOyAvLyBTZWFyY2ggaW4gc2Vzc2lvbiBwYXJ0LCB0b28uXG4gIHZhciBmcExpbmUgPSBsaW5lcy5maWx0ZXIoZnVuY3Rpb24obGluZSkge1xuICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9ZmluZ2VycHJpbnQ6JykgPT09IDA7XG4gIH0pWzBdLnN1YnN0cigxNCk7XG4gIC8vIE5vdGU6IGE9c2V0dXAgbGluZSBpcyBpZ25vcmVkIHNpbmNlIHdlIHVzZSB0aGUgJ2F1dG8nIHJvbGUuXG4gIHZhciBkdGxzUGFyYW1ldGVycyA9IHtcbiAgICByb2xlOiAnYXV0bycsXG4gICAgZmluZ2VycHJpbnRzOiBbe1xuICAgICAgYWxnb3JpdGhtOiBmcExpbmUuc3BsaXQoJyAnKVswXSxcbiAgICAgIHZhbHVlOiBmcExpbmUuc3BsaXQoJyAnKVsxXVxuICAgIH1dXG4gIH07XG4gIHJldHVybiBkdGxzUGFyYW1ldGVycztcbn07XG5cbi8vIFNlcmlhbGl6ZXMgRFRMUyBwYXJhbWV0ZXJzIHRvIFNEUC5cblNEUFV0aWxzLndyaXRlRHRsc1BhcmFtZXRlcnMgPSBmdW5jdGlvbihwYXJhbXMsIHNldHVwVHlwZSkge1xuICB2YXIgc2RwID0gJ2E9c2V0dXA6JyArIHNldHVwVHlwZSArICdcXHJcXG4nO1xuICBwYXJhbXMuZmluZ2VycHJpbnRzLmZvckVhY2goZnVuY3Rpb24oZnApIHtcbiAgICBzZHAgKz0gJ2E9ZmluZ2VycHJpbnQ6JyArIGZwLmFsZ29yaXRobSArICcgJyArIGZwLnZhbHVlICsgJ1xcclxcbic7XG4gIH0pO1xuICByZXR1cm4gc2RwO1xufTtcbi8vIFBhcnNlcyBJQ0UgaW5mb3JtYXRpb24gZnJvbSBTRFAgbWVkaWEgc2VjdGlvbiBvciBzZXNzaW9ucGFydC5cbi8vIEZJWE1FOiBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBmdW5jdGlvbnMgdGhpcyBzaG91bGQgb25seVxuLy8gICBnZXQgdGhlIGljZS11ZnJhZyBhbmQgaWNlLXB3ZCBsaW5lcyBhcyBpbnB1dC5cblNEUFV0aWxzLmdldEljZVBhcmFtZXRlcnMgPSBmdW5jdGlvbihtZWRpYVNlY3Rpb24sIHNlc3Npb25wYXJ0KSB7XG4gIHZhciBsaW5lcyA9IFNEUFV0aWxzLnNwbGl0TGluZXMobWVkaWFTZWN0aW9uKTtcbiAgbGluZXMgPSBsaW5lcy5jb25jYXQoU0RQVXRpbHMuc3BsaXRMaW5lcyhzZXNzaW9ucGFydCkpOyAvLyBTZWFyY2ggaW4gc2Vzc2lvbiBwYXJ0LCB0b28uXG4gIHZhciBpY2VQYXJhbWV0ZXJzID0ge1xuICAgIHVzZXJuYW1lRnJhZ21lbnQ6IGxpbmVzLmZpbHRlcihmdW5jdGlvbihsaW5lKSB7XG4gICAgICByZXR1cm4gbGluZS5pbmRleE9mKCdhPWljZS11ZnJhZzonKSA9PT0gMDtcbiAgICB9KVswXS5zdWJzdHIoMTIpLFxuICAgIHBhc3N3b3JkOiBsaW5lcy5maWx0ZXIoZnVuY3Rpb24obGluZSkge1xuICAgICAgcmV0dXJuIGxpbmUuaW5kZXhPZignYT1pY2UtcHdkOicpID09PSAwO1xuICAgIH0pWzBdLnN1YnN0cigxMClcbiAgfTtcbiAgcmV0dXJuIGljZVBhcmFtZXRlcnM7XG59O1xuXG4vLyBTZXJpYWxpemVzIElDRSBwYXJhbWV0ZXJzIHRvIFNEUC5cblNEUFV0aWxzLndyaXRlSWNlUGFyYW1ldGVycyA9IGZ1bmN0aW9uKHBhcmFtcykge1xuICByZXR1cm4gJ2E9aWNlLXVmcmFnOicgKyBwYXJhbXMudXNlcm5hbWVGcmFnbWVudCArICdcXHJcXG4nICtcbiAgICAgICdhPWljZS1wd2Q6JyArIHBhcmFtcy5wYXNzd29yZCArICdcXHJcXG4nO1xufTtcblxuLy8gUGFyc2VzIHRoZSBTRFAgbWVkaWEgc2VjdGlvbiBhbmQgcmV0dXJucyBSVENSdHBQYXJhbWV0ZXJzLlxuU0RQVXRpbHMucGFyc2VSdHBQYXJhbWV0ZXJzID0gZnVuY3Rpb24obWVkaWFTZWN0aW9uKSB7XG4gIHZhciBkZXNjcmlwdGlvbiA9IHtcbiAgICBjb2RlY3M6IFtdLFxuICAgIGhlYWRlckV4dGVuc2lvbnM6IFtdLFxuICAgIGZlY01lY2hhbmlzbXM6IFtdLFxuICAgIHJ0Y3A6IFtdXG4gIH07XG4gIHZhciBsaW5lcyA9IFNEUFV0aWxzLnNwbGl0TGluZXMobWVkaWFTZWN0aW9uKTtcbiAgdmFyIG1saW5lID0gbGluZXNbMF0uc3BsaXQoJyAnKTtcbiAgZm9yICh2YXIgaSA9IDM7IGkgPCBtbGluZS5sZW5ndGg7IGkrKykgeyAvLyBmaW5kIGFsbCBjb2RlY3MgZnJvbSBtbGluZVszLi5dXG4gICAgdmFyIHB0ID0gbWxpbmVbaV07XG4gICAgdmFyIHJ0cG1hcGxpbmUgPSBTRFBVdGlscy5tYXRjaFByZWZpeChcbiAgICAgICAgbWVkaWFTZWN0aW9uLCAnYT1ydHBtYXA6JyArIHB0ICsgJyAnKVswXTtcbiAgICBpZiAocnRwbWFwbGluZSkge1xuICAgICAgdmFyIGNvZGVjID0gU0RQVXRpbHMucGFyc2VSdHBNYXAocnRwbWFwbGluZSk7XG4gICAgICB2YXIgZm10cHMgPSBTRFBVdGlscy5tYXRjaFByZWZpeChcbiAgICAgICAgICBtZWRpYVNlY3Rpb24sICdhPWZtdHA6JyArIHB0ICsgJyAnKTtcbiAgICAgIC8vIE9ubHkgdGhlIGZpcnN0IGE9Zm10cDo8cHQ+IGlzIGNvbnNpZGVyZWQuXG4gICAgICBjb2RlYy5wYXJhbWV0ZXJzID0gZm10cHMubGVuZ3RoID8gU0RQVXRpbHMucGFyc2VGbXRwKGZtdHBzWzBdKSA6IHt9O1xuICAgICAgY29kZWMucnRjcEZlZWRiYWNrID0gU0RQVXRpbHMubWF0Y2hQcmVmaXgoXG4gICAgICAgICAgbWVkaWFTZWN0aW9uLCAnYT1ydGNwLWZiOicgKyBwdCArICcgJylcbiAgICAgICAgLm1hcChTRFBVdGlscy5wYXJzZVJ0Y3BGYik7XG4gICAgICBkZXNjcmlwdGlvbi5jb2RlY3MucHVzaChjb2RlYyk7XG4gICAgfVxuICB9XG4gIC8vIEZJWE1FOiBwYXJzZSBoZWFkZXJFeHRlbnNpb25zLCBmZWNNZWNoYW5pc21zIGFuZCBydGNwLlxuICByZXR1cm4gZGVzY3JpcHRpb247XG59O1xuXG4vLyBHZW5lcmF0ZXMgcGFydHMgb2YgdGhlIFNEUCBtZWRpYSBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlIGNhcGFiaWxpdGllcyAvIHBhcmFtZXRlcnMuXG5TRFBVdGlscy53cml0ZVJ0cERlc2NyaXB0aW9uID0gZnVuY3Rpb24oa2luZCwgY2Fwcykge1xuICB2YXIgc2RwID0gJyc7XG5cbiAgLy8gQnVpbGQgdGhlIG1saW5lLlxuICBzZHAgKz0gJ209JyArIGtpbmQgKyAnICc7XG4gIHNkcCArPSBjYXBzLmNvZGVjcy5sZW5ndGggPiAwID8gJzknIDogJzAnOyAvLyByZWplY3QgaWYgbm8gY29kZWNzLlxuICBzZHAgKz0gJyBVRFAvVExTL1JUUC9TQVZQRiAnO1xuICBzZHAgKz0gY2Fwcy5jb2RlY3MubWFwKGZ1bmN0aW9uKGNvZGVjKSB7XG4gICAgaWYgKGNvZGVjLnByZWZlcnJlZFBheWxvYWRUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb2RlYy5wcmVmZXJyZWRQYXlsb2FkVHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvZGVjLnBheWxvYWRUeXBlO1xuICB9KS5qb2luKCcgJykgKyAnXFxyXFxuJztcblxuICBzZHAgKz0gJ2M9SU4gSVA0IDAuMC4wLjBcXHJcXG4nO1xuICBzZHAgKz0gJ2E9cnRjcDo5IElOIElQNCAwLjAuMC4wXFxyXFxuJztcblxuICAvLyBBZGQgYT1ydHBtYXAgbGluZXMgZm9yIGVhY2ggY29kZWMuIEFsc28gZm10cCBhbmQgcnRjcC1mYi5cbiAgY2Fwcy5jb2RlY3MuZm9yRWFjaChmdW5jdGlvbihjb2RlYykge1xuICAgIHNkcCArPSBTRFBVdGlscy53cml0ZVJ0cE1hcChjb2RlYyk7XG4gICAgc2RwICs9IFNEUFV0aWxzLndyaXRlRnRtcChjb2RlYyk7XG4gICAgc2RwICs9IFNEUFV0aWxzLndyaXRlUnRjcEZiKGNvZGVjKTtcbiAgfSk7XG4gIC8vIEZJWE1FOiBhZGQgaGVhZGVyRXh0ZW5zaW9ucywgZmVjTWVjaGFuaXNtxZ8gYW5kIHJ0Y3AuXG4gIHNkcCArPSAnYT1ydGNwLW11eFxcclxcbic7XG4gIHJldHVybiBzZHA7XG59O1xuXG5TRFBVdGlscy53cml0ZVNlc3Npb25Cb2lsZXJwbGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAvLyBGSVhNRTogc2Vzcy1pZCBzaG91bGQgYmUgYW4gTlRQIHRpbWVzdGFtcC5cbiAgcmV0dXJuICd2PTBcXHJcXG4nICtcbiAgICAgICdvPXRoaXNpc2FkYXB0ZXJvcnRjIDgxNjk2Mzk5MTU2NDY5NDMxMzcgMiBJTiBJUDQgMTI3LjAuMC4xXFxyXFxuJyArXG4gICAgICAncz0tXFxyXFxuJyArXG4gICAgICAndD0wIDBcXHJcXG4nO1xufTtcblxuU0RQVXRpbHMud3JpdGVNZWRpYVNlY3Rpb24gPSBmdW5jdGlvbih0cmFuc2NlaXZlciwgY2FwcywgdHlwZSwgc3RyZWFtKSB7XG4gIHZhciBzZHAgPSBTRFBVdGlscy53cml0ZVJ0cERlc2NyaXB0aW9uKHRyYW5zY2VpdmVyLmtpbmQsIGNhcHMpO1xuXG4gIC8vIE1hcCBJQ0UgcGFyYW1ldGVycyAodWZyYWcsIHB3ZCkgdG8gU0RQLlxuICBzZHAgKz0gU0RQVXRpbHMud3JpdGVJY2VQYXJhbWV0ZXJzKFxuICAgICAgdHJhbnNjZWl2ZXIuaWNlR2F0aGVyZXIuZ2V0TG9jYWxQYXJhbWV0ZXJzKCkpO1xuXG4gIC8vIE1hcCBEVExTIHBhcmFtZXRlcnMgdG8gU0RQLlxuICBzZHAgKz0gU0RQVXRpbHMud3JpdGVEdGxzUGFyYW1ldGVycyhcbiAgICAgIHRyYW5zY2VpdmVyLmR0bHNUcmFuc3BvcnQuZ2V0TG9jYWxQYXJhbWV0ZXJzKCksXG4gICAgICB0eXBlID09PSAnb2ZmZXInID8gJ2FjdHBhc3MnIDogJ2FjdGl2ZScpO1xuXG4gIHNkcCArPSAnYT1taWQ6JyArIHRyYW5zY2VpdmVyLm1pZCArICdcXHJcXG4nO1xuXG4gIGlmICh0cmFuc2NlaXZlci5ydHBTZW5kZXIgJiYgdHJhbnNjZWl2ZXIucnRwUmVjZWl2ZXIpIHtcbiAgICBzZHAgKz0gJ2E9c2VuZHJlY3ZcXHJcXG4nO1xuICB9IGVsc2UgaWYgKHRyYW5zY2VpdmVyLnJ0cFNlbmRlcikge1xuICAgIHNkcCArPSAnYT1zZW5kb25seVxcclxcbic7XG4gIH0gZWxzZSBpZiAodHJhbnNjZWl2ZXIucnRwUmVjZWl2ZXIpIHtcbiAgICBzZHAgKz0gJ2E9cmVjdm9ubHlcXHJcXG4nO1xuICB9IGVsc2Uge1xuICAgIHNkcCArPSAnYT1pbmFjdGl2ZVxcclxcbic7XG4gIH1cblxuICAvLyBGSVhNRTogZm9yIFJUWCB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSBTU1JDcy4gTm90IGltcGxlbWVudGVkIGluIEVkZ2UgeWV0LlxuICBpZiAodHJhbnNjZWl2ZXIucnRwU2VuZGVyKSB7XG4gICAgdmFyIG1zaWQgPSAnbXNpZDonICsgc3RyZWFtLmlkICsgJyAnICtcbiAgICAgICAgdHJhbnNjZWl2ZXIucnRwU2VuZGVyLnRyYWNrLmlkICsgJ1xcclxcbic7XG4gICAgc2RwICs9ICdhPScgKyBtc2lkO1xuICAgIHNkcCArPSAnYT1zc3JjOicgKyB0cmFuc2NlaXZlci5zZW5kU3NyYyArICcgJyArIG1zaWQ7XG4gIH1cbiAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHdyaXR0ZW4gYnkgd3JpdGVSdHBEZXNjcmlwdGlvbi5cbiAgc2RwICs9ICdhPXNzcmM6JyArIHRyYW5zY2VpdmVyLnNlbmRTc3JjICsgJyBjbmFtZTonICtcbiAgICAgIFNEUFV0aWxzLmxvY2FsQ05hbWUgKyAnXFxyXFxuJztcbiAgcmV0dXJuIHNkcDtcbn07XG5cbi8vIEdldHMgdGhlIGRpcmVjdGlvbiBmcm9tIHRoZSBtZWRpYVNlY3Rpb24gb3IgdGhlIHNlc3Npb25wYXJ0LlxuU0RQVXRpbHMuZ2V0RGlyZWN0aW9uID0gZnVuY3Rpb24obWVkaWFTZWN0aW9uLCBzZXNzaW9ucGFydCkge1xuICAvLyBMb29rIGZvciBzZW5kcmVjdiwgc2VuZG9ubHksIHJlY3Zvbmx5LCBpbmFjdGl2ZSwgZGVmYXVsdCB0byBzZW5kcmVjdi5cbiAgdmFyIGxpbmVzID0gU0RQVXRpbHMuc3BsaXRMaW5lcyhtZWRpYVNlY3Rpb24pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgc3dpdGNoIChsaW5lc1tpXSkge1xuICAgICAgY2FzZSAnYT1zZW5kcmVjdic6XG4gICAgICBjYXNlICdhPXNlbmRvbmx5JzpcbiAgICAgIGNhc2UgJ2E9cmVjdm9ubHknOlxuICAgICAgY2FzZSAnYT1pbmFjdGl2ZSc6XG4gICAgICAgIHJldHVybiBsaW5lc1tpXS5zdWJzdHIoMik7XG4gICAgfVxuICB9XG4gIGlmIChzZXNzaW9ucGFydCkge1xuICAgIHJldHVybiBTRFBVdGlscy5nZXREaXJlY3Rpb24oc2Vzc2lvbnBhcnQpO1xuICB9XG4gIHJldHVybiAnc2VuZHJlY3YnO1xufTtcblxuLy8gRXhwb3NlIHB1YmxpYyBtZXRob2RzLlxubW9kdWxlLmV4cG9ydHMgPSBTRFBVdGlscztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9lZGdlL2VkZ2Vfc2RwLmpzXG4gKiogbW9kdWxlIGlkID0gMTUyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKlxuICogIENvcHlyaWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZVxuICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZVxuICogIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIFNEUFV0aWxzID0gcmVxdWlyZSgnLi9lZGdlX3NkcCcpO1xudmFyIGxvZ2dpbmcgPSByZXF1aXJlKCcuLi91dGlscycpLmxvZztcbnZhciBicm93c2VyRGV0YWlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJykuYnJvd3NlckRldGFpbHM7XG5cbnZhciBlZGdlU2hpbSA9IHtcbiAgc2hpbVBlZXJDb25uZWN0aW9uOiBmdW5jdGlvbigpIHtcbiAgICBpZiAod2luZG93LlJUQ0ljZUdhdGhlcmVyKSB7XG4gICAgICAvLyBPUlRDIGRlZmluZXMgYW4gUlRDSWNlQ2FuZGlkYXRlIG9iamVjdCBidXQgbm8gY29uc3RydWN0b3IuXG4gICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgaW4gRWRnZS5cbiAgICAgIGlmICghd2luZG93LlJUQ0ljZUNhbmRpZGF0ZSkge1xuICAgICAgICB3aW5kb3cuUlRDSWNlQ2FuZGlkYXRlID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gT1JUQyBkb2VzIG5vdCBoYXZlIGEgc2Vzc2lvbiBkZXNjcmlwdGlvbiBvYmplY3QgYnV0XG4gICAgICAvLyBvdGhlciBicm93c2VycyAoaS5lLiBDaHJvbWUpIHRoYXQgd2lsbCBzdXBwb3J0IGJvdGggUEMgYW5kIE9SVENcbiAgICAgIC8vIGluIHRoZSBmdXR1cmUgbWlnaHQgaGF2ZSB0aGlzIGRlZmluZWQgYWxyZWFkeS5cbiAgICAgIGlmICghd2luZG93LlJUQ1Nlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgICB3aW5kb3cuUlRDU2Vzc2lvbkRlc2NyaXB0aW9uID0gZnVuY3Rpb24oYXJncykge1xuICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbiA9IGZ1bmN0aW9uKGNvbmZpZykge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICB2YXIgX2V2ZW50VGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgWydhZGRFdmVudExpc3RlbmVyJywgJ3JlbW92ZUV2ZW50TGlzdGVuZXInLCAnZGlzcGF0Y2hFdmVudCddLmZvckVhY2goXG4gICAgICAgICAgZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICAgIHNlbGZbbWV0aG9kXSA9IF9ldmVudFRhcmdldFttZXRob2RdLmJpbmQoX2V2ZW50VGFyZ2V0KTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9uaWNlY2FuZGlkYXRlID0gbnVsbDtcbiAgICAgIHRoaXMub25hZGRzdHJlYW0gPSBudWxsO1xuICAgICAgdGhpcy5vbnRyYWNrID0gbnVsbDtcbiAgICAgIHRoaXMub25yZW1vdmVzdHJlYW0gPSBudWxsO1xuICAgICAgdGhpcy5vbnNpZ25hbGluZ3N0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgIHRoaXMub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBudWxsO1xuICAgICAgdGhpcy5vbm5lZ290aWF0aW9ubmVlZGVkID0gbnVsbDtcbiAgICAgIHRoaXMub25kYXRhY2hhbm5lbCA9IG51bGw7XG5cbiAgICAgIHRoaXMubG9jYWxTdHJlYW1zID0gW107XG4gICAgICB0aGlzLnJlbW90ZVN0cmVhbXMgPSBbXTtcbiAgICAgIHRoaXMuZ2V0TG9jYWxTdHJlYW1zID0gZnVuY3Rpb24oKSB7IHJldHVybiBzZWxmLmxvY2FsU3RyZWFtczsgfTtcbiAgICAgIHRoaXMuZ2V0UmVtb3RlU3RyZWFtcyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gc2VsZi5yZW1vdGVTdHJlYW1zOyB9O1xuXG4gICAgICB0aGlzLmxvY2FsRGVzY3JpcHRpb24gPSBuZXcgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKHtcbiAgICAgICAgdHlwZTogJycsXG4gICAgICAgIHNkcDogJydcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZW1vdGVEZXNjcmlwdGlvbiA9IG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe1xuICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgc2RwOiAnJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNpZ25hbGluZ1N0YXRlID0gJ3N0YWJsZSc7XG4gICAgICB0aGlzLmljZUNvbm5lY3Rpb25TdGF0ZSA9ICduZXcnO1xuICAgICAgdGhpcy5pY2VHYXRoZXJpbmdTdGF0ZSA9ICduZXcnO1xuXG4gICAgICB0aGlzLmljZU9wdGlvbnMgPSB7XG4gICAgICAgIGdhdGhlclBvbGljeTogJ2FsbCcsXG4gICAgICAgIGljZVNlcnZlcnM6IFtdXG4gICAgICB9O1xuICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICAgIHN3aXRjaCAoY29uZmlnLmljZVRyYW5zcG9ydFBvbGljeSkge1xuICAgICAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgICAgY2FzZSAncmVsYXknOlxuICAgICAgICAgICAgdGhpcy5pY2VPcHRpb25zLmdhdGhlclBvbGljeSA9IGNvbmZpZy5pY2VUcmFuc3BvcnRQb2xpY3k7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdub25lJzpcbiAgICAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgb25jZSBpbXBsZW1lbnRhdGlvbiBhbmQgc3BlYyBoYXZlIGFkZGVkIHRoaXMuXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpY2VUcmFuc3BvcnRQb2xpY3kgXCJub25lXCIgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5pY2VTZXJ2ZXJzKSB7XG4gICAgICAgIC8vIEVkZ2UgZG9lcyBub3QgbGlrZVxuICAgICAgICAvLyAxKSBzdHVuOlxuICAgICAgICAvLyAyKSB0dXJuOiB0aGF0IGRvZXMgbm90IGhhdmUgYWxsIG9mIHR1cm46aG9zdDpwb3J0P3RyYW5zcG9ydD11ZHBcbiAgICAgICAgdGhpcy5pY2VPcHRpb25zLmljZVNlcnZlcnMgPSBjb25maWcuaWNlU2VydmVycy5maWx0ZXIoZnVuY3Rpb24oc2VydmVyKSB7XG4gICAgICAgICAgaWYgKHNlcnZlciAmJiBzZXJ2ZXIudXJscykge1xuICAgICAgICAgICAgc2VydmVyLnVybHMgPSBzZXJ2ZXIudXJscy5maWx0ZXIoZnVuY3Rpb24odXJsKSB7XG4gICAgICAgICAgICAgIHJldHVybiB1cmwuaW5kZXhPZigndHJhbnNwb3J0PXVkcCcpICE9PSAtMTtcbiAgICAgICAgICAgIH0pWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIHBlci10cmFjayBpY2VHYXRoZXJzLCBpY2VUcmFuc3BvcnRzLCBkdGxzVHJhbnNwb3J0cywgcnRwU2VuZGVycywgLi4uXG4gICAgICAvLyBldmVyeXRoaW5nIHRoYXQgaXMgbmVlZGVkIHRvIGRlc2NyaWJlIGEgU0RQIG0tbGluZS5cbiAgICAgIHRoaXMudHJhbnNjZWl2ZXJzID0gW107XG5cbiAgICAgIC8vIHNpbmNlIHRoZSBpY2VHYXRoZXJlciBpcyBjdXJyZW50bHkgY3JlYXRlZCBpbiBjcmVhdGVPZmZlciBidXQgd2VcbiAgICAgIC8vIG11c3Qgbm90IGVtaXQgY2FuZGlkYXRlcyB1bnRpbCBhZnRlciBzZXRMb2NhbERlc2NyaXB0aW9uIHdlIGJ1ZmZlclxuICAgICAgLy8gdGhlbSBpbiB0aGlzIGFycmF5LlxuICAgICAgdGhpcy5fbG9jYWxJY2VDYW5kaWRhdGVzQnVmZmVyID0gW107XG4gICAgfTtcblxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuX2VtaXRCdWZmZXJlZENhbmRpZGF0ZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBzZWN0aW9ucyA9IFNEUFV0aWxzLnNwbGl0U2VjdGlvbnMoc2VsZi5sb2NhbERlc2NyaXB0aW9uLnNkcCk7XG4gICAgICAvLyBGSVhNRTogbmVlZCB0byBhcHBseSBpY2UgY2FuZGlkYXRlcyBpbiBhIHdheSB3aGljaCBpcyBhc3luYyBidXQgaW4tb3JkZXJcbiAgICAgIHRoaXMuX2xvY2FsSWNlQ2FuZGlkYXRlc0J1ZmZlci5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgIHZhciBlbmQgPSAhZXZlbnQuY2FuZGlkYXRlIHx8IE9iamVjdC5rZXlzKGV2ZW50LmNhbmRpZGF0ZSkubGVuZ3RoID09IDA7XG4gICAgICAgIGlmIChlbmQpIHtcbiAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHNlY3Rpb25zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBzZWN0aW9uc1tqXSArPSAnYT1lbmQtb2YtY2FuZGlkYXRlc1xcclxcbic7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlY3Rpb25zW2V2ZW50LmNhbmRpZGF0ZS5zZHBNTGluZUluZGV4ICsgMV0gKz1cbiAgICAgICAgICAgICAgJ2E9JyArIGV2ZW50LmNhbmRpZGF0ZS5jYW5kaWRhdGUgKyAnXFxyXFxuJztcbiAgICAgICAgfVxuICAgICAgICBzZWxmLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICBpZiAoc2VsZi5vbmljZWNhbmRpZGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNlbGYub25pY2VjYW5kaWRhdGUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXZlbnQuY2FuZGlkYXRlKSB7XG4gICAgICAgICAgc2VsZi5pY2VHYXRoZXJpbmdTdGF0ZSA9ICdjb21wbGV0ZSc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5fbG9jYWxJY2VDYW5kaWRhdGVzQnVmZmVyID0gW107XG4gICAgICB0aGlzLmxvY2FsRGVzY3JpcHRpb24uc2RwID0gc2VjdGlvbnMuam9pbignJyk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuYWRkU3RyZWFtID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgICAvLyBDbG9uZSBpcyBuZWNlc3NhcnkgZm9yIGxvY2FsIGRlbW9zIG1vc3RseSwgYXR0YWNoaW5nIGRpcmVjdGx5XG4gICAgICAvLyB0byB0d28gZGlmZmVyZW50IHNlbmRlcnMgZG9lcyBub3Qgd29yayAoYnVpbGQgMTA1NDcpLlxuICAgICAgdGhpcy5sb2NhbFN0cmVhbXMucHVzaChzdHJlYW0uY2xvbmUoKSk7XG4gICAgICB0aGlzLl9tYXliZUZpcmVOZWdvdGlhdGlvbk5lZWRlZCgpO1xuICAgIH07XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLnJlbW92ZVN0cmVhbSA9IGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgICAgdmFyIGlkeCA9IHRoaXMubG9jYWxTdHJlYW1zLmluZGV4T2Yoc3RyZWFtKTtcbiAgICAgIGlmIChpZHggPiAtMSkge1xuICAgICAgICB0aGlzLmxvY2FsU3RyZWFtcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgdGhpcy5fbWF5YmVGaXJlTmVnb3RpYXRpb25OZWVkZWQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lcyB0aGUgaW50ZXJzZWN0aW9uIG9mIGxvY2FsIGFuZCByZW1vdGUgY2FwYWJpbGl0aWVzLlxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuX2dldENvbW1vbkNhcGFiaWxpdGllcyA9XG4gICAgICAgIGZ1bmN0aW9uKGxvY2FsQ2FwYWJpbGl0aWVzLCByZW1vdGVDYXBhYmlsaXRpZXMpIHtcbiAgICAgIHZhciBjb21tb25DYXBhYmlsaXRpZXMgPSB7XG4gICAgICAgIGNvZGVjczogW10sXG4gICAgICAgIGhlYWRlckV4dGVuc2lvbnM6IFtdLFxuICAgICAgICBmZWNNZWNoYW5pc21zOiBbXVxuICAgICAgfTtcbiAgICAgIGxvY2FsQ2FwYWJpbGl0aWVzLmNvZGVjcy5mb3JFYWNoKGZ1bmN0aW9uKGxDb2RlYykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlbW90ZUNhcGFiaWxpdGllcy5jb2RlY3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgckNvZGVjID0gcmVtb3RlQ2FwYWJpbGl0aWVzLmNvZGVjc1tpXTtcbiAgICAgICAgICBpZiAobENvZGVjLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gckNvZGVjLm5hbWUudG9Mb3dlckNhc2UoKSAmJlxuICAgICAgICAgICAgICBsQ29kZWMuY2xvY2tSYXRlID09PSByQ29kZWMuY2xvY2tSYXRlICYmXG4gICAgICAgICAgICAgIGxDb2RlYy5udW1DaGFubmVscyA9PT0gckNvZGVjLm51bUNoYW5uZWxzKSB7XG4gICAgICAgICAgICAvLyBwdXNoIHJDb2RlYyBzbyB3ZSByZXBseSB3aXRoIG9mZmVyZXIgcGF5bG9hZCB0eXBlXG4gICAgICAgICAgICBjb21tb25DYXBhYmlsaXRpZXMuY29kZWNzLnB1c2gockNvZGVjKTtcblxuICAgICAgICAgICAgLy8gRklYTUU6IGFsc28gbmVlZCB0byBkZXRlcm1pbmUgaW50ZXJzZWN0aW9uIGJldHdlZW5cbiAgICAgICAgICAgIC8vIC5ydGNwRmVlZGJhY2sgYW5kIC5wYXJhbWV0ZXJzXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBsb2NhbENhcGFiaWxpdGllcy5oZWFkZXJFeHRlbnNpb25zLmZvckVhY2goZnVuY3Rpb24obEhlYWRlckV4dGVuc2lvbikge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlbW90ZUNhcGFiaWxpdGllcy5oZWFkZXJFeHRlbnNpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHJIZWFkZXJFeHRlbnNpb24gPSByZW1vdGVDYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9uc1tpXTtcbiAgICAgICAgICBpZiAobEhlYWRlckV4dGVuc2lvbi51cmkgPT09IHJIZWFkZXJFeHRlbnNpb24udXJpKSB7XG4gICAgICAgICAgICBjb21tb25DYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5wdXNoKHJIZWFkZXJFeHRlbnNpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gRklYTUU6IGZlY01lY2hhbmlzbXNcbiAgICAgIHJldHVybiBjb21tb25DYXBhYmlsaXRpZXM7XG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBJQ0UgZ2F0aGVyZXIsIElDRSB0cmFuc3BvcnQgYW5kIERUTFMgdHJhbnNwb3J0LlxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuX2NyZWF0ZUljZUFuZER0bHNUcmFuc3BvcnRzID1cbiAgICAgICAgZnVuY3Rpb24obWlkLCBzZHBNTGluZUluZGV4KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgaWNlR2F0aGVyZXIgPSBuZXcgUlRDSWNlR2F0aGVyZXIoc2VsZi5pY2VPcHRpb25zKTtcbiAgICAgIHZhciBpY2VUcmFuc3BvcnQgPSBuZXcgUlRDSWNlVHJhbnNwb3J0KGljZUdhdGhlcmVyKTtcbiAgICAgIGljZUdhdGhlcmVyLm9ubG9jYWxjYW5kaWRhdGUgPSBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KCdpY2VjYW5kaWRhdGUnKTtcbiAgICAgICAgZXZlbnQuY2FuZGlkYXRlID0ge3NkcE1pZDogbWlkLCBzZHBNTGluZUluZGV4OiBzZHBNTGluZUluZGV4fTtcblxuICAgICAgICB2YXIgY2FuZCA9IGV2dC5jYW5kaWRhdGU7XG4gICAgICAgIHZhciBlbmQgPSAhY2FuZCB8fCBPYmplY3Qua2V5cyhjYW5kKS5sZW5ndGggPT09IDA7XG4gICAgICAgIC8vIEVkZ2UgZW1pdHMgYW4gZW1wdHkgb2JqZWN0IGZvciBSVENJY2VDYW5kaWRhdGVDb21wbGV0ZeKApVxuICAgICAgICBpZiAoZW5kKSB7XG4gICAgICAgICAgLy8gcG9seWZpbGwgc2luY2UgUlRDSWNlR2F0aGVyZXIuc3RhdGUgaXMgbm90IGltcGxlbWVudGVkIGluIEVkZ2UgMTA1NDcgeWV0LlxuICAgICAgICAgIGlmIChpY2VHYXRoZXJlci5zdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpY2VHYXRoZXJlci5zdGF0ZSA9ICdjb21wbGV0ZWQnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEVtaXQgYSBjYW5kaWRhdGUgd2l0aCB0eXBlIGVuZE9mQ2FuZGlkYXRlcyB0byBtYWtlIHRoZSBzYW1wbGVzIHdvcmsuXG4gICAgICAgICAgLy8gRWRnZSByZXF1aXJlcyBhZGRJY2VDYW5kaWRhdGUgd2l0aCB0aGlzIGVtcHR5IGNhbmRpZGF0ZSB0byBzdGFydCBjaGVja2luZy5cbiAgICAgICAgICAvLyBUaGUgcmVhbCBzb2x1dGlvbiBpcyB0byBzaWduYWwgZW5kLW9mLWNhbmRpZGF0ZXMgdG8gdGhlIG90aGVyIHNpZGUgd2hlblxuICAgICAgICAgIC8vIGdldHRpbmcgdGhlIG51bGwgY2FuZGlkYXRlIGJ1dCBzb21lIGFwcHMgKGxpa2UgdGhlIHNhbXBsZXMpIGRvbid0IGRvIHRoYXQuXG4gICAgICAgICAgZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSA9XG4gICAgICAgICAgICAgICdjYW5kaWRhdGU6MSAxIHVkcCAxIDAuMC4wLjAgOSB0eXAgZW5kT2ZDYW5kaWRhdGVzJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSVENJY2VDYW5kaWRhdGUgZG9lc24ndCBoYXZlIGEgY29tcG9uZW50LCBuZWVkcyB0byBiZSBhZGRlZFxuICAgICAgICAgIGNhbmQuY29tcG9uZW50ID0gaWNlVHJhbnNwb3J0LmNvbXBvbmVudCA9PT0gJ1JUQ1AnID8gMiA6IDE7XG4gICAgICAgICAgZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSA9IFNEUFV0aWxzLndyaXRlQ2FuZGlkYXRlKGNhbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvbXBsZXRlID0gc2VsZi50cmFuc2NlaXZlcnMuZXZlcnkoZnVuY3Rpb24odHJhbnNjZWl2ZXIpIHtcbiAgICAgICAgICByZXR1cm4gdHJhbnNjZWl2ZXIuaWNlR2F0aGVyZXIgJiZcbiAgICAgICAgICAgICAgdHJhbnNjZWl2ZXIuaWNlR2F0aGVyZXIuc3RhdGUgPT09ICdjb21wbGV0ZWQnO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdXBkYXRlIC5sb2NhbERlc2NyaXB0aW9uIHdpdGggY2FuZGlkYXRlIGFuZCAocG90ZW50aWFsbHkpIGVuZC1vZi1jYW5kaWRhdGVzLlxuICAgICAgICAvLyAgICAgVG8gbWFrZSB0aGlzIGhhcmRlciwgdGhlIGdhdGhlcmVyIG1pZ2h0IGVtaXQgY2FuZGlkYXRlcyBiZWZvcmUgbG9jYWxkZXNjcmlwdGlvblxuICAgICAgICAvLyAgICAgaXMgc2V0LiBUbyBtYWtlIHRoaW5ncyB3b3JzZSwgZ2F0aGVyLmdldExvY2FsQ2FuZGlkYXRlcyBzdGlsbCBlcnJvcnMgaW5cbiAgICAgICAgLy8gICAgIEVkZ2UgMTA1NDcgd2hlbiBubyBjYW5kaWRhdGVzIGhhdmUgYmVlbiBnYXRoZXJlZCB5ZXQuXG4gICAgICAgIGlmIChzZWxmLmxvY2FsRGVzY3JpcHRpb24gJiYgc2VsZi5sb2NhbERlc2NyaXB0aW9uLnR5cGUgIT09ICcnKSB7XG4gICAgICAgICAgdmFyIHNlY3Rpb25zID0gU0RQVXRpbHMuc3BsaXRTZWN0aW9ucyhzZWxmLmxvY2FsRGVzY3JpcHRpb24uc2RwKTtcbiAgICAgICAgICBzZWN0aW9uc1tzZHBNTGluZUluZGV4ICsgMV0gKz0gKCFlbmQgPyAnYT0nICsgZXZlbnQuY2FuZGlkYXRlLmNhbmRpZGF0ZSA6XG4gICAgICAgICAgICAgICdhPWVuZC1vZi1jYW5kaWRhdGVzJykgKyAnXFxyXFxuJztcbiAgICAgICAgICBzZWxmLmxvY2FsRGVzY3JpcHRpb24uc2RwID0gc2VjdGlvbnMuam9pbignJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbWl0IGNhbmRpZGF0ZSBpZiBsb2NhbERlc2NyaXB0aW9uIGlzIHNldC5cbiAgICAgICAgLy8gQWxzbyBlbWl0cyBudWxsIGNhbmRpZGF0ZSB3aGVuIGFsbCBnYXRoZXJlcnMgYXJlIGNvbXBsZXRlLlxuICAgICAgICBzd2l0Y2goc2VsZi5pY2VHYXRoZXJpbmdTdGF0ZSkge1xuICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgIHNlbGYuX2xvY2FsSWNlQ2FuZGlkYXRlc0J1ZmZlci5wdXNoKGV2ZW50KTtcbiAgICAgICAgICBpZiAoY29tcGxldGUpIHtcbiAgICAgICAgICAgIHNlbGYuX2xvY2FsSWNlQ2FuZGlkYXRlc0J1ZmZlci5wdXNoKG5ldyBFdmVudCgnaWNlY2FuZGlkYXRlJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZ2F0aGVyaW5nJzpcbiAgICAgICAgICBzZWxmLl9lbWl0QnVmZmVyZWRDYW5kaWRhdGVzKCk7XG4gICAgICAgICAgc2VsZi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICBpZiAoc2VsZi5vbmljZWNhbmRpZGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc2VsZi5vbmljZWNhbmRpZGF0ZShldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb21wbGV0ZSkge1xuICAgICAgICAgICAgc2VsZi5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaWNlY2FuZGlkYXRlJykpO1xuICAgICAgICAgICAgaWYgKHNlbGYub25pY2VjYW5kaWRhdGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgc2VsZi5vbmljZWNhbmRpZGF0ZShuZXcgRXZlbnQoJ2ljZWNhbmRpZGF0ZScpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuaWNlR2F0aGVyaW5nU3RhdGUgPSAnY29tcGxldGUnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgIC8vIHNob3VsZCBub3QgaGFwcGVuLi4uIGN1cnJlbnRseSFcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGljZVRyYW5zcG9ydC5vbmljZXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHNlbGYuX3VwZGF0ZUNvbm5lY3Rpb25TdGF0ZSgpO1xuICAgICAgfTtcblxuICAgICAgdmFyIGR0bHNUcmFuc3BvcnQgPSBuZXcgUlRDRHRsc1RyYW5zcG9ydChpY2VUcmFuc3BvcnQpO1xuICAgICAgZHRsc1RyYW5zcG9ydC5vbmR0bHNzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBzZWxmLl91cGRhdGVDb25uZWN0aW9uU3RhdGUoKTtcbiAgICAgIH07XG4gICAgICBkdGxzVHJhbnNwb3J0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gb25lcnJvciBkb2VzIG5vdCBzZXQgc3RhdGUgdG8gZmFpbGVkIGJ5IGl0c2VsZi5cbiAgICAgICAgZHRsc1RyYW5zcG9ydC5zdGF0ZSA9ICdmYWlsZWQnO1xuICAgICAgICBzZWxmLl91cGRhdGVDb25uZWN0aW9uU3RhdGUoKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGljZUdhdGhlcmVyOiBpY2VHYXRoZXJlcixcbiAgICAgICAgaWNlVHJhbnNwb3J0OiBpY2VUcmFuc3BvcnQsXG4gICAgICAgIGR0bHNUcmFuc3BvcnQ6IGR0bHNUcmFuc3BvcnRcbiAgICAgIH07XG4gICAgfTtcblxuICAgIC8vIFN0YXJ0IHRoZSBSVFAgU2VuZGVyIGFuZCBSZWNlaXZlciBmb3IgYSB0cmFuc2NlaXZlci5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLl90cmFuc2NlaXZlID0gZnVuY3Rpb24odHJhbnNjZWl2ZXIsXG4gICAgICAgIHNlbmQsIHJlY3YpIHtcbiAgICAgIHZhciBwYXJhbXMgPSB0aGlzLl9nZXRDb21tb25DYXBhYmlsaXRpZXModHJhbnNjZWl2ZXIubG9jYWxDYXBhYmlsaXRpZXMsXG4gICAgICAgICAgdHJhbnNjZWl2ZXIucmVtb3RlQ2FwYWJpbGl0aWVzKTtcbiAgICAgIGlmIChzZW5kICYmIHRyYW5zY2VpdmVyLnJ0cFNlbmRlcikge1xuICAgICAgICBwYXJhbXMuZW5jb2RpbmdzID0gW3tcbiAgICAgICAgICBzc3JjOiB0cmFuc2NlaXZlci5zZW5kU3NyY1xuICAgICAgICB9XTtcbiAgICAgICAgcGFyYW1zLnJ0Y3AgPSB7XG4gICAgICAgICAgY25hbWU6IFNEUFV0aWxzLmxvY2FsQ05hbWUsXG4gICAgICAgICAgc3NyYzogdHJhbnNjZWl2ZXIucmVjdlNzcmNcbiAgICAgICAgfTtcbiAgICAgICAgdHJhbnNjZWl2ZXIucnRwU2VuZGVyLnNlbmQocGFyYW1zKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWN2ICYmIHRyYW5zY2VpdmVyLnJ0cFJlY2VpdmVyKSB7XG4gICAgICAgIHBhcmFtcy5lbmNvZGluZ3MgPSBbe1xuICAgICAgICAgIHNzcmM6IHRyYW5zY2VpdmVyLnJlY3ZTc3JjXG4gICAgICAgIH1dO1xuICAgICAgICBwYXJhbXMucnRjcCA9IHtcbiAgICAgICAgICBjbmFtZTogdHJhbnNjZWl2ZXIuY25hbWUsXG4gICAgICAgICAgc3NyYzogdHJhbnNjZWl2ZXIuc2VuZFNzcmNcbiAgICAgICAgfTtcbiAgICAgICAgdHJhbnNjZWl2ZXIucnRwUmVjZWl2ZXIucmVjZWl2ZShwYXJhbXMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLnNldExvY2FsRGVzY3JpcHRpb24gPVxuICAgICAgICBmdW5jdGlvbihkZXNjcmlwdGlvbikge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgaWYgKGRlc2NyaXB0aW9uLnR5cGUgPT09ICdvZmZlcicpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nT2ZmZXIpIHtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRyYW5zY2VpdmVycyA9IHRoaXMuX3BlbmRpbmdPZmZlcjtcbiAgICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ09mZmVyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0aW9uLnR5cGUgPT09ICdhbnN3ZXInKSB7XG4gICAgICAgIHZhciBzZWN0aW9ucyA9IFNEUFV0aWxzLnNwbGl0U2VjdGlvbnMoc2VsZi5yZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgICB2YXIgc2Vzc2lvbnBhcnQgPSBzZWN0aW9ucy5zaGlmdCgpO1xuICAgICAgICBzZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG1lZGlhU2VjdGlvbiwgc2RwTUxpbmVJbmRleCkge1xuICAgICAgICAgIHZhciB0cmFuc2NlaXZlciA9IHNlbGYudHJhbnNjZWl2ZXJzW3NkcE1MaW5lSW5kZXhdO1xuICAgICAgICAgIHZhciBpY2VHYXRoZXJlciA9IHRyYW5zY2VpdmVyLmljZUdhdGhlcmVyO1xuICAgICAgICAgIHZhciBpY2VUcmFuc3BvcnQgPSB0cmFuc2NlaXZlci5pY2VUcmFuc3BvcnQ7XG4gICAgICAgICAgdmFyIGR0bHNUcmFuc3BvcnQgPSB0cmFuc2NlaXZlci5kdGxzVHJhbnNwb3J0O1xuICAgICAgICAgIHZhciBsb2NhbENhcGFiaWxpdGllcyA9IHRyYW5zY2VpdmVyLmxvY2FsQ2FwYWJpbGl0aWVzO1xuICAgICAgICAgIHZhciByZW1vdGVDYXBhYmlsaXRpZXMgPSB0cmFuc2NlaXZlci5yZW1vdGVDYXBhYmlsaXRpZXM7XG4gICAgICAgICAgdmFyIHJlamVjdGVkID0gbWVkaWFTZWN0aW9uLnNwbGl0KCdcXG4nLCAxKVswXVxuICAgICAgICAgICAgICAuc3BsaXQoJyAnLCAyKVsxXSA9PT0gJzAnO1xuXG4gICAgICAgICAgaWYgKCFyZWplY3RlZCkge1xuICAgICAgICAgICAgdmFyIHJlbW90ZUljZVBhcmFtZXRlcnMgPSBTRFBVdGlscy5nZXRJY2VQYXJhbWV0ZXJzKG1lZGlhU2VjdGlvbixcbiAgICAgICAgICAgICAgICBzZXNzaW9ucGFydCk7XG4gICAgICAgICAgICBpY2VUcmFuc3BvcnQuc3RhcnQoaWNlR2F0aGVyZXIsIHJlbW90ZUljZVBhcmFtZXRlcnMsICdjb250cm9sbGVkJyk7XG5cbiAgICAgICAgICAgIHZhciByZW1vdGVEdGxzUGFyYW1ldGVycyA9IFNEUFV0aWxzLmdldER0bHNQYXJhbWV0ZXJzKG1lZGlhU2VjdGlvbixcbiAgICAgICAgICAgICAgc2Vzc2lvbnBhcnQpO1xuICAgICAgICAgICAgZHRsc1RyYW5zcG9ydC5zdGFydChyZW1vdGVEdGxzUGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBpbnRlcnNlY3Rpb24gb2YgY2FwYWJpbGl0aWVzLlxuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IHNlbGYuX2dldENvbW1vbkNhcGFiaWxpdGllcyhsb2NhbENhcGFiaWxpdGllcyxcbiAgICAgICAgICAgICAgICByZW1vdGVDYXBhYmlsaXRpZXMpO1xuXG4gICAgICAgICAgICAvLyBTdGFydCB0aGUgUlRDUnRwU2VuZGVyLiBUaGUgUlRDUnRwUmVjZWl2ZXIgZm9yIHRoaXMgdHJhbnNjZWl2ZXJcbiAgICAgICAgICAgIC8vIGhhcyBhbHJlYWR5IGJlZW4gc3RhcnRlZCBpbiBzZXRSZW1vdGVEZXNjcmlwdGlvbi5cbiAgICAgICAgICAgIHNlbGYuX3RyYW5zY2VpdmUodHJhbnNjZWl2ZXIsXG4gICAgICAgICAgICAgICAgcGFyYW1zLmNvZGVjcy5sZW5ndGggPiAwLFxuICAgICAgICAgICAgICAgIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxvY2FsRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIHR5cGU6IGRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogZGVzY3JpcHRpb24uc2RwXG4gICAgICB9O1xuICAgICAgc3dpdGNoIChkZXNjcmlwdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ29mZmVyJzpcbiAgICAgICAgICB0aGlzLl91cGRhdGVTaWduYWxpbmdTdGF0ZSgnaGF2ZS1sb2NhbC1vZmZlcicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhbnN3ZXInOlxuICAgICAgICAgIHRoaXMuX3VwZGF0ZVNpZ25hbGluZ1N0YXRlKCdzdGFibGUnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCB0eXBlIFwiJyArIGRlc2NyaXB0aW9uLnR5cGUgKyAnXCInKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgYSBzdWNjZXNzIGNhbGxiYWNrIHdhcyBwcm92aWRlZCwgZW1pdCBJQ0UgY2FuZGlkYXRlcyBhZnRlciBpdCBoYXMgYmVlblxuICAgICAgLy8gZXhlY3V0ZWQuIE90aGVyd2lzZSwgZW1pdCBjYWxsYmFjayBhZnRlciB0aGUgUHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgIHZhciBoYXNDYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmXG4gICAgICAgIHR5cGVvZiBhcmd1bWVudHNbMV0gPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoaGFzQ2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGNiID0gYXJndW1lbnRzWzFdO1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICBjYigpO1xuICAgICAgICAgIGlmIChzZWxmLmljZUdhdGhlcmluZ1N0YXRlID09PSAnbmV3Jykge1xuICAgICAgICAgICAgc2VsZi5pY2VHYXRoZXJpbmdTdGF0ZSA9ICdnYXRoZXJpbmcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxmLl9lbWl0QnVmZmVyZWRDYW5kaWRhdGVzKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgICAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIHAudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCFoYXNDYWxsYmFjaykge1xuICAgICAgICAgIGlmIChzZWxmLmljZUdhdGhlcmluZ1N0YXRlID09PSAnbmV3Jykge1xuICAgICAgICAgICAgc2VsZi5pY2VHYXRoZXJpbmdTdGF0ZSA9ICdnYXRoZXJpbmcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBVc3VhbGx5IGNhbmRpZGF0ZXMgd2lsbCBiZSBlbWl0dGVkIGVhcmxpZXIuXG4gICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoc2VsZi5fZW1pdEJ1ZmZlcmVkQ2FuZGlkYXRlcy5iaW5kKHNlbGYpLCA1MDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwO1xuICAgIH07XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLnNldFJlbW90ZURlc2NyaXB0aW9uID1cbiAgICAgICAgZnVuY3Rpb24oZGVzY3JpcHRpb24pIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBzdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICAgIHZhciByZWNlaXZlckxpc3QgPSBbXTtcbiAgICAgIHZhciBzZWN0aW9ucyA9IFNEUFV0aWxzLnNwbGl0U2VjdGlvbnMoZGVzY3JpcHRpb24uc2RwKTtcbiAgICAgIHZhciBzZXNzaW9ucGFydCA9IHNlY3Rpb25zLnNoaWZ0KCk7XG4gICAgICBzZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG1lZGlhU2VjdGlvbiwgc2RwTUxpbmVJbmRleCkge1xuICAgICAgICB2YXIgbGluZXMgPSBTRFBVdGlscy5zcGxpdExpbmVzKG1lZGlhU2VjdGlvbik7XG4gICAgICAgIHZhciBtbGluZSA9IGxpbmVzWzBdLnN1YnN0cigyKS5zcGxpdCgnICcpO1xuICAgICAgICB2YXIga2luZCA9IG1saW5lWzBdO1xuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBtbGluZVsxXSA9PT0gJzAnO1xuICAgICAgICB2YXIgZGlyZWN0aW9uID0gU0RQVXRpbHMuZ2V0RGlyZWN0aW9uKG1lZGlhU2VjdGlvbiwgc2Vzc2lvbnBhcnQpO1xuXG4gICAgICAgIHZhciB0cmFuc2NlaXZlcjtcbiAgICAgICAgdmFyIGljZUdhdGhlcmVyO1xuICAgICAgICB2YXIgaWNlVHJhbnNwb3J0O1xuICAgICAgICB2YXIgZHRsc1RyYW5zcG9ydDtcbiAgICAgICAgdmFyIHJ0cFNlbmRlcjtcbiAgICAgICAgdmFyIHJ0cFJlY2VpdmVyO1xuICAgICAgICB2YXIgc2VuZFNzcmM7XG4gICAgICAgIHZhciByZWN2U3NyYztcbiAgICAgICAgdmFyIGxvY2FsQ2FwYWJpbGl0aWVzO1xuXG4gICAgICAgIHZhciB0cmFjaztcbiAgICAgICAgLy8gRklYTUU6IGVuc3VyZSB0aGUgbWVkaWFTZWN0aW9uIGhhcyBydGNwLW11eCBzZXQuXG4gICAgICAgIHZhciByZW1vdGVDYXBhYmlsaXRpZXMgPSBTRFBVdGlscy5wYXJzZVJ0cFBhcmFtZXRlcnMobWVkaWFTZWN0aW9uKTtcbiAgICAgICAgdmFyIHJlbW90ZUljZVBhcmFtZXRlcnM7XG4gICAgICAgIHZhciByZW1vdGVEdGxzUGFyYW1ldGVycztcbiAgICAgICAgaWYgKCFyZWplY3RlZCkge1xuICAgICAgICAgIHJlbW90ZUljZVBhcmFtZXRlcnMgPSBTRFBVdGlscy5nZXRJY2VQYXJhbWV0ZXJzKG1lZGlhU2VjdGlvbixcbiAgICAgICAgICAgICAgc2Vzc2lvbnBhcnQpO1xuICAgICAgICAgIHJlbW90ZUR0bHNQYXJhbWV0ZXJzID0gU0RQVXRpbHMuZ2V0RHRsc1BhcmFtZXRlcnMobWVkaWFTZWN0aW9uLFxuICAgICAgICAgICAgICBzZXNzaW9ucGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1pZCA9IFNEUFV0aWxzLm1hdGNoUHJlZml4KG1lZGlhU2VjdGlvbiwgJ2E9bWlkOicpWzBdLnN1YnN0cig2KTtcblxuICAgICAgICB2YXIgY25hbWU7XG4gICAgICAgIC8vIEdldHMgdGhlIGZpcnN0IFNTUkMuIE5vdGUgdGhhdCB3aXRoIFJUWCB0aGVyZSBtaWdodCBiZSBtdWx0aXBsZSBTU1JDcy5cbiAgICAgICAgdmFyIHJlbW90ZVNzcmMgPSBTRFBVdGlscy5tYXRjaFByZWZpeChtZWRpYVNlY3Rpb24sICdhPXNzcmM6JylcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgICByZXR1cm4gU0RQVXRpbHMucGFyc2VTc3JjTWVkaWEobGluZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihvYmopIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9iai5hdHRyaWJ1dGUgPT09ICdjbmFtZSc7XG4gICAgICAgICAgICB9KVswXTtcbiAgICAgICAgaWYgKHJlbW90ZVNzcmMpIHtcbiAgICAgICAgICByZWN2U3NyYyA9IHBhcnNlSW50KHJlbW90ZVNzcmMuc3NyYywgMTApO1xuICAgICAgICAgIGNuYW1lID0gcmVtb3RlU3NyYy52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAnb2ZmZXInKSB7XG4gICAgICAgICAgdmFyIHRyYW5zcG9ydHMgPSBzZWxmLl9jcmVhdGVJY2VBbmREdGxzVHJhbnNwb3J0cyhtaWQsIHNkcE1MaW5lSW5kZXgpO1xuXG4gICAgICAgICAgbG9jYWxDYXBhYmlsaXRpZXMgPSBSVENSdHBSZWNlaXZlci5nZXRDYXBhYmlsaXRpZXMoa2luZCk7XG4gICAgICAgICAgc2VuZFNzcmMgPSAoMiAqIHNkcE1MaW5lSW5kZXggKyAyKSAqIDEwMDE7XG5cbiAgICAgICAgICBydHBSZWNlaXZlciA9IG5ldyBSVENSdHBSZWNlaXZlcih0cmFuc3BvcnRzLmR0bHNUcmFuc3BvcnQsIGtpbmQpO1xuXG4gICAgICAgICAgdHJhY2sgPSBydHBSZWNlaXZlci50cmFjaztcbiAgICAgICAgICByZWNlaXZlckxpc3QucHVzaChbdHJhY2ssIHJ0cFJlY2VpdmVyXSk7XG4gICAgICAgICAgLy8gRklYTUU6IG5vdCBjb3JyZWN0IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIHN0cmVhbXMgYnV0IHRoYXQgaXNcbiAgICAgICAgICAvLyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBpbiB0aGlzIHNoaW0uXG4gICAgICAgICAgc3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcblxuICAgICAgICAgIC8vIEZJWE1FOiBsb29rIGF0IGRpcmVjdGlvbi5cbiAgICAgICAgICBpZiAoc2VsZi5sb2NhbFN0cmVhbXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICBzZWxmLmxvY2FsU3RyZWFtc1swXS5nZXRUcmFja3MoKS5sZW5ndGggPj0gc2RwTUxpbmVJbmRleCkge1xuICAgICAgICAgICAgLy8gRklYTUU6IGFjdHVhbGx5IG1vcmUgY29tcGxpY2F0ZWQsIG5lZWRzIHRvIG1hdGNoIHR5cGVzIGV0Y1xuICAgICAgICAgICAgdmFyIGxvY2FsdHJhY2sgPSBzZWxmLmxvY2FsU3RyZWFtc1swXS5nZXRUcmFja3MoKVtzZHBNTGluZUluZGV4XTtcbiAgICAgICAgICAgIHJ0cFNlbmRlciA9IG5ldyBSVENSdHBTZW5kZXIobG9jYWx0cmFjaywgdHJhbnNwb3J0cy5kdGxzVHJhbnNwb3J0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzZWxmLnRyYW5zY2VpdmVyc1tzZHBNTGluZUluZGV4XSA9IHtcbiAgICAgICAgICAgIGljZUdhdGhlcmVyOiB0cmFuc3BvcnRzLmljZUdhdGhlcmVyLFxuICAgICAgICAgICAgaWNlVHJhbnNwb3J0OiB0cmFuc3BvcnRzLmljZVRyYW5zcG9ydCxcbiAgICAgICAgICAgIGR0bHNUcmFuc3BvcnQ6IHRyYW5zcG9ydHMuZHRsc1RyYW5zcG9ydCxcbiAgICAgICAgICAgIGxvY2FsQ2FwYWJpbGl0aWVzOiBsb2NhbENhcGFiaWxpdGllcyxcbiAgICAgICAgICAgIHJlbW90ZUNhcGFiaWxpdGllczogcmVtb3RlQ2FwYWJpbGl0aWVzLFxuICAgICAgICAgICAgcnRwU2VuZGVyOiBydHBTZW5kZXIsXG4gICAgICAgICAgICBydHBSZWNlaXZlcjogcnRwUmVjZWl2ZXIsXG4gICAgICAgICAgICBraW5kOiBraW5kLFxuICAgICAgICAgICAgbWlkOiBtaWQsXG4gICAgICAgICAgICBjbmFtZTogY25hbWUsXG4gICAgICAgICAgICBzZW5kU3NyYzogc2VuZFNzcmMsXG4gICAgICAgICAgICByZWN2U3NyYzogcmVjdlNzcmNcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIFN0YXJ0IHRoZSBSVENSdHBSZWNlaXZlciBub3cuIFRoZSBSVFBTZW5kZXIgaXMgc3RhcnRlZCBpbiBzZXRMb2NhbERlc2NyaXB0aW9uLlxuICAgICAgICAgIHNlbGYuX3RyYW5zY2VpdmUoc2VsZi50cmFuc2NlaXZlcnNbc2RwTUxpbmVJbmRleF0sXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09ICdzZW5kcmVjdicgfHwgZGlyZWN0aW9uID09PSAnc2VuZG9ubHknKTtcbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAnYW5zd2VyJyAmJiAhcmVqZWN0ZWQpIHtcbiAgICAgICAgICB0cmFuc2NlaXZlciA9IHNlbGYudHJhbnNjZWl2ZXJzW3NkcE1MaW5lSW5kZXhdO1xuICAgICAgICAgIGljZUdhdGhlcmVyID0gdHJhbnNjZWl2ZXIuaWNlR2F0aGVyZXI7XG4gICAgICAgICAgaWNlVHJhbnNwb3J0ID0gdHJhbnNjZWl2ZXIuaWNlVHJhbnNwb3J0O1xuICAgICAgICAgIGR0bHNUcmFuc3BvcnQgPSB0cmFuc2NlaXZlci5kdGxzVHJhbnNwb3J0O1xuICAgICAgICAgIHJ0cFNlbmRlciA9IHRyYW5zY2VpdmVyLnJ0cFNlbmRlcjtcbiAgICAgICAgICBydHBSZWNlaXZlciA9IHRyYW5zY2VpdmVyLnJ0cFJlY2VpdmVyO1xuICAgICAgICAgIHNlbmRTc3JjID0gdHJhbnNjZWl2ZXIuc2VuZFNzcmM7XG4gICAgICAgICAgLy9yZWN2U3NyYyA9IHRyYW5zY2VpdmVyLnJlY3ZTc3JjO1xuICAgICAgICAgIGxvY2FsQ2FwYWJpbGl0aWVzID0gdHJhbnNjZWl2ZXIubG9jYWxDYXBhYmlsaXRpZXM7XG5cbiAgICAgICAgICBzZWxmLnRyYW5zY2VpdmVyc1tzZHBNTGluZUluZGV4XS5yZWN2U3NyYyA9IHJlY3ZTc3JjO1xuICAgICAgICAgIHNlbGYudHJhbnNjZWl2ZXJzW3NkcE1MaW5lSW5kZXhdLnJlbW90ZUNhcGFiaWxpdGllcyA9XG4gICAgICAgICAgICAgIHJlbW90ZUNhcGFiaWxpdGllcztcbiAgICAgICAgICBzZWxmLnRyYW5zY2VpdmVyc1tzZHBNTGluZUluZGV4XS5jbmFtZSA9IGNuYW1lO1xuXG4gICAgICAgICAgaWNlVHJhbnNwb3J0LnN0YXJ0KGljZUdhdGhlcmVyLCByZW1vdGVJY2VQYXJhbWV0ZXJzLCAnY29udHJvbGxpbmcnKTtcbiAgICAgICAgICBkdGxzVHJhbnNwb3J0LnN0YXJ0KHJlbW90ZUR0bHNQYXJhbWV0ZXJzKTtcblxuICAgICAgICAgIHNlbGYuX3RyYW5zY2VpdmUodHJhbnNjZWl2ZXIsXG4gICAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ3NlbmRyZWN2JyB8fCBkaXJlY3Rpb24gPT09ICdyZWN2b25seScsXG4gICAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ3NlbmRyZWN2JyB8fCBkaXJlY3Rpb24gPT09ICdzZW5kb25seScpO1xuXG4gICAgICAgICAgaWYgKHJ0cFJlY2VpdmVyICYmXG4gICAgICAgICAgICAgIChkaXJlY3Rpb24gPT09ICdzZW5kcmVjdicgfHwgZGlyZWN0aW9uID09PSAnc2VuZG9ubHknKSkge1xuICAgICAgICAgICAgdHJhY2sgPSBydHBSZWNlaXZlci50cmFjaztcbiAgICAgICAgICAgIHJlY2VpdmVyTGlzdC5wdXNoKFt0cmFjaywgcnRwUmVjZWl2ZXJdKTtcbiAgICAgICAgICAgIHN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZJWE1FOiBhY3R1YWxseSB0aGUgcmVjZWl2ZXIgc2hvdWxkIGJlIGNyZWF0ZWQgbGF0ZXIuXG4gICAgICAgICAgICBkZWxldGUgdHJhbnNjZWl2ZXIucnRwUmVjZWl2ZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZW1vdGVEZXNjcmlwdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiBkZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgIHNkcDogZGVzY3JpcHRpb24uc2RwXG4gICAgICB9O1xuICAgICAgc3dpdGNoIChkZXNjcmlwdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ29mZmVyJzpcbiAgICAgICAgICB0aGlzLl91cGRhdGVTaWduYWxpbmdTdGF0ZSgnaGF2ZS1yZW1vdGUtb2ZmZXInKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYW5zd2VyJzpcbiAgICAgICAgICB0aGlzLl91cGRhdGVTaWduYWxpbmdTdGF0ZSgnc3RhYmxlJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW5zdXBwb3J0ZWQgdHlwZSBcIicgKyBkZXNjcmlwdGlvbi50eXBlICsgJ1wiJyk7XG4gICAgICB9XG4gICAgICBpZiAoc3RyZWFtLmdldFRyYWNrcygpLmxlbmd0aCkge1xuICAgICAgICBzZWxmLnJlbW90ZVN0cmVhbXMucHVzaChzdHJlYW0pO1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ2FkZHN0cmVhbScpO1xuICAgICAgICAgIGV2ZW50LnN0cmVhbSA9IHN0cmVhbTtcbiAgICAgICAgICBzZWxmLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICAgIGlmIChzZWxmLm9uYWRkc3RyZWFtICE9PSBudWxsKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgc2VsZi5vbmFkZHN0cmVhbShldmVudCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWNlaXZlckxpc3QuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICB2YXIgdHJhY2sgPSBpdGVtWzBdO1xuICAgICAgICAgICAgdmFyIHJlY2VpdmVyID0gaXRlbVsxXTtcbiAgICAgICAgICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgndHJhY2snKTtcbiAgICAgICAgICAgIGV2ZW50LnRyYWNrID0gdHJhY2s7XG4gICAgICAgICAgICBldmVudC5yZWNlaXZlciA9IHJlY2VpdmVyO1xuICAgICAgICAgICAgZXZlbnQuc3RyZWFtcyA9IFtzdHJlYW1dO1xuICAgICAgICAgICAgc2VsZi5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIGlmIChzZWxmLm9udHJhY2sgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgIHNlbGYub250cmFjayhldmVudCk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVvZiBhcmd1bWVudHNbMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoYXJndW1lbnRzWzFdLCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9O1xuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy50cmFuc2NlaXZlcnMuZm9yRWFjaChmdW5jdGlvbih0cmFuc2NlaXZlcikge1xuICAgICAgICAvKiBub3QgeWV0XG4gICAgICAgIGlmICh0cmFuc2NlaXZlci5pY2VHYXRoZXJlcikge1xuICAgICAgICAgIHRyYW5zY2VpdmVyLmljZUdhdGhlcmVyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgKi9cbiAgICAgICAgaWYgKHRyYW5zY2VpdmVyLmljZVRyYW5zcG9ydCkge1xuICAgICAgICAgIHRyYW5zY2VpdmVyLmljZVRyYW5zcG9ydC5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyYW5zY2VpdmVyLmR0bHNUcmFuc3BvcnQpIHtcbiAgICAgICAgICB0cmFuc2NlaXZlci5kdGxzVHJhbnNwb3J0LnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHJhbnNjZWl2ZXIucnRwU2VuZGVyKSB7XG4gICAgICAgICAgdHJhbnNjZWl2ZXIucnRwU2VuZGVyLnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHJhbnNjZWl2ZXIucnRwUmVjZWl2ZXIpIHtcbiAgICAgICAgICB0cmFuc2NlaXZlci5ydHBSZWNlaXZlci5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gRklYTUU6IGNsZWFuIHVwIHRyYWNrcywgbG9jYWwgc3RyZWFtcywgcmVtb3RlIHN0cmVhbXMsIGV0Y1xuICAgICAgdGhpcy5fdXBkYXRlU2lnbmFsaW5nU3RhdGUoJ2Nsb3NlZCcpO1xuICAgIH07XG5cbiAgICAvLyBVcGRhdGUgdGhlIHNpZ25hbGluZyBzdGF0ZS5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLl91cGRhdGVTaWduYWxpbmdTdGF0ZSA9XG4gICAgICAgIGZ1bmN0aW9uKG5ld1N0YXRlKSB7XG4gICAgICB0aGlzLnNpZ25hbGluZ1N0YXRlID0gbmV3U3RhdGU7XG4gICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ3NpZ25hbGluZ3N0YXRlY2hhbmdlJyk7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgaWYgKHRoaXMub25zaWduYWxpbmdzdGF0ZWNoYW5nZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9uc2lnbmFsaW5nc3RhdGVjaGFuZ2UoZXZlbnQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hldGhlciB0byBmaXJlIHRoZSBuZWdvdGlhdGlvbm5lZWRlZCBldmVudC5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLl9tYXliZUZpcmVOZWdvdGlhdGlvbk5lZWRlZCA9XG4gICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRmlyZSBhd2F5IChmb3Igbm93KS5cbiAgICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgnbmVnb3RpYXRpb25uZWVkZWQnKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICBpZiAodGhpcy5vbm5lZ290aWF0aW9ubmVlZGVkICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub25uZWdvdGlhdGlvbm5lZWRlZChldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBzdGF0ZS5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLl91cGRhdGVDb25uZWN0aW9uU3RhdGUgPVxuICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciBuZXdTdGF0ZTtcbiAgICAgIHZhciBzdGF0ZXMgPSB7XG4gICAgICAgICduZXcnOiAwLFxuICAgICAgICBjbG9zZWQ6IDAsXG4gICAgICAgIGNvbm5lY3Rpbmc6IDAsXG4gICAgICAgIGNoZWNraW5nOiAwLFxuICAgICAgICBjb25uZWN0ZWQ6IDAsXG4gICAgICAgIGNvbXBsZXRlZDogMCxcbiAgICAgICAgZmFpbGVkOiAwXG4gICAgICB9O1xuICAgICAgdGhpcy50cmFuc2NlaXZlcnMuZm9yRWFjaChmdW5jdGlvbih0cmFuc2NlaXZlcikge1xuICAgICAgICBzdGF0ZXNbdHJhbnNjZWl2ZXIuaWNlVHJhbnNwb3J0LnN0YXRlXSsrO1xuICAgICAgICBzdGF0ZXNbdHJhbnNjZWl2ZXIuZHRsc1RyYW5zcG9ydC5zdGF0ZV0rKztcbiAgICAgIH0pO1xuICAgICAgLy8gSUNFVHJhbnNwb3J0LmNvbXBsZXRlZCBhbmQgY29ubmVjdGVkIGFyZSB0aGUgc2FtZSBmb3IgdGhpcyBwdXJwb3NlLlxuICAgICAgc3RhdGVzWydjb25uZWN0ZWQnXSArPSBzdGF0ZXNbJ2NvbXBsZXRlZCddO1xuXG4gICAgICBuZXdTdGF0ZSA9ICduZXcnO1xuICAgICAgaWYgKHN0YXRlc1snZmFpbGVkJ10gPiAwKSB7XG4gICAgICAgIG5ld1N0YXRlID0gJ2ZhaWxlZCc7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlc1snY29ubmVjdGluZyddID4gMCB8fCBzdGF0ZXNbJ2NoZWNraW5nJ10gPiAwKSB7XG4gICAgICAgIG5ld1N0YXRlID0gJ2Nvbm5lY3RpbmcnO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZXNbJ2Rpc2Nvbm5lY3RlZCddID4gMCkge1xuICAgICAgICBuZXdTdGF0ZSA9ICdkaXNjb25uZWN0ZWQnO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZXNbJ25ldyddID4gMCkge1xuICAgICAgICBuZXdTdGF0ZSA9ICduZXcnO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZXNbJ2Nvbm5lY3RpbmcnXSA+IDAgfHwgc3RhdGVzWydjb21wbGV0ZWQnXSA+IDApIHtcbiAgICAgICAgbmV3U3RhdGUgPSAnY29ubmVjdGVkJztcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1N0YXRlICE9PSBzZWxmLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICBzZWxmLmljZUNvbm5lY3Rpb25TdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZlbnQoJ2ljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZScpO1xuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuY3JlYXRlT2ZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nT2ZmZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmVhdGVPZmZlciBjYWxsZWQgd2hpbGUgdGhlcmUgaXMgYSBwZW5kaW5nIG9mZmVyLicpO1xuICAgICAgfVxuICAgICAgdmFyIG9mZmVyT3B0aW9ucztcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhcmd1bWVudHNbMF0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb2ZmZXJPcHRpb25zID0gYXJndW1lbnRzWzBdO1xuICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIG9mZmVyT3B0aW9ucyA9IGFyZ3VtZW50c1syXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRyYWNrcyA9IFtdO1xuICAgICAgdmFyIG51bUF1ZGlvVHJhY2tzID0gMDtcbiAgICAgIHZhciBudW1WaWRlb1RyYWNrcyA9IDA7XG4gICAgICAvLyBEZWZhdWx0IHRvIHNlbmRyZWN2LlxuICAgICAgaWYgKHRoaXMubG9jYWxTdHJlYW1zLmxlbmd0aCkge1xuICAgICAgICBudW1BdWRpb1RyYWNrcyA9IHRoaXMubG9jYWxTdHJlYW1zWzBdLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoO1xuICAgICAgICBudW1WaWRlb1RyYWNrcyA9IHRoaXMubG9jYWxTdHJlYW1zWzBdLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoO1xuICAgICAgfVxuICAgICAgLy8gRGV0ZXJtaW5lIG51bWJlciBvZiBhdWRpbyBhbmQgdmlkZW8gdHJhY2tzIHdlIG5lZWQgdG8gc2VuZC9yZWN2LlxuICAgICAgaWYgKG9mZmVyT3B0aW9ucykge1xuICAgICAgICAvLyBSZWplY3QgQ2hyb21lIGxlZ2FjeSBjb25zdHJhaW50cy5cbiAgICAgICAgaWYgKG9mZmVyT3B0aW9ucy5tYW5kYXRvcnkgfHwgb2ZmZXJPcHRpb25zLm9wdGlvbmFsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgJ0xlZ2FjeSBtYW5kYXRvcnkvb3B0aW9uYWwgY29uc3RyYWludHMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2ZmZXJPcHRpb25zLm9mZmVyVG9SZWNlaXZlQXVkaW8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bUF1ZGlvVHJhY2tzID0gb2ZmZXJPcHRpb25zLm9mZmVyVG9SZWNlaXZlQXVkaW87XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9mZmVyT3B0aW9ucy5vZmZlclRvUmVjZWl2ZVZpZGVvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBudW1WaWRlb1RyYWNrcyA9IG9mZmVyT3B0aW9ucy5vZmZlclRvUmVjZWl2ZVZpZGVvO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5sb2NhbFN0cmVhbXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIFB1c2ggbG9jYWwgc3RyZWFtcy5cbiAgICAgICAgdGhpcy5sb2NhbFN0cmVhbXNbMF0uZ2V0VHJhY2tzKCkuZm9yRWFjaChmdW5jdGlvbih0cmFjaykge1xuICAgICAgICAgIHRyYWNrcy5wdXNoKHtcbiAgICAgICAgICAgIGtpbmQ6IHRyYWNrLmtpbmQsXG4gICAgICAgICAgICB0cmFjazogdHJhY2ssXG4gICAgICAgICAgICB3YW50UmVjZWl2ZTogdHJhY2sua2luZCA9PT0gJ2F1ZGlvJyA/XG4gICAgICAgICAgICAgICAgbnVtQXVkaW9UcmFja3MgPiAwIDogbnVtVmlkZW9UcmFja3MgPiAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHRyYWNrLmtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgIG51bUF1ZGlvVHJhY2tzLS07XG4gICAgICAgICAgfSBlbHNlIGlmICh0cmFjay5raW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICBudW1WaWRlb1RyYWNrcy0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBDcmVhdGUgTS1saW5lcyBmb3IgcmVjdm9ubHkgc3RyZWFtcy5cbiAgICAgIHdoaWxlIChudW1BdWRpb1RyYWNrcyA+IDAgfHwgbnVtVmlkZW9UcmFja3MgPiAwKSB7XG4gICAgICAgIGlmIChudW1BdWRpb1RyYWNrcyA+IDApIHtcbiAgICAgICAgICB0cmFja3MucHVzaCh7XG4gICAgICAgICAgICBraW5kOiAnYXVkaW8nLFxuICAgICAgICAgICAgd2FudFJlY2VpdmU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBudW1BdWRpb1RyYWNrcy0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1WaWRlb1RyYWNrcyA+IDApIHtcbiAgICAgICAgICB0cmFja3MucHVzaCh7XG4gICAgICAgICAgICBraW5kOiAndmlkZW8nLFxuICAgICAgICAgICAgd2FudFJlY2VpdmU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBudW1WaWRlb1RyYWNrcy0tO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBzZHAgPSBTRFBVdGlscy53cml0ZVNlc3Npb25Cb2lsZXJwbGF0ZSgpO1xuICAgICAgdmFyIHRyYW5zY2VpdmVycyA9IFtdO1xuICAgICAgdHJhY2tzLmZvckVhY2goZnVuY3Rpb24obWxpbmUsIHNkcE1MaW5lSW5kZXgpIHtcbiAgICAgICAgLy8gRm9yIGVhY2ggdHJhY2ssIGNyZWF0ZSBhbiBpY2UgZ2F0aGVyZXIsIGljZSB0cmFuc3BvcnQsIGR0bHMgdHJhbnNwb3J0LFxuICAgICAgICAvLyBwb3RlbnRpYWxseSBydHBzZW5kZXIgYW5kIHJ0cHJlY2VpdmVyLlxuICAgICAgICB2YXIgdHJhY2sgPSBtbGluZS50cmFjaztcbiAgICAgICAgdmFyIGtpbmQgPSBtbGluZS5raW5kO1xuICAgICAgICB2YXIgbWlkID0gU0RQVXRpbHMuZ2VuZXJhdGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgdmFyIHRyYW5zcG9ydHMgPSBzZWxmLl9jcmVhdGVJY2VBbmREdGxzVHJhbnNwb3J0cyhtaWQsIHNkcE1MaW5lSW5kZXgpO1xuXG4gICAgICAgIHZhciBsb2NhbENhcGFiaWxpdGllcyA9IFJUQ1J0cFNlbmRlci5nZXRDYXBhYmlsaXRpZXMoa2luZCk7XG4gICAgICAgIHZhciBydHBTZW5kZXI7XG4gICAgICAgIHZhciBydHBSZWNlaXZlcjtcblxuICAgICAgICAvLyBnZW5lcmF0ZSBhbiBzc3JjIG5vdywgdG8gYmUgdXNlZCBsYXRlciBpbiBydHBTZW5kZXIuc2VuZFxuICAgICAgICB2YXIgc2VuZFNzcmMgPSAoMiAqIHNkcE1MaW5lSW5kZXggKyAxKSAqIDEwMDE7XG4gICAgICAgIGlmICh0cmFjaykge1xuICAgICAgICAgIHJ0cFNlbmRlciA9IG5ldyBSVENSdHBTZW5kZXIodHJhY2ssIHRyYW5zcG9ydHMuZHRsc1RyYW5zcG9ydCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWxpbmUud2FudFJlY2VpdmUpIHtcbiAgICAgICAgICBydHBSZWNlaXZlciA9IG5ldyBSVENSdHBSZWNlaXZlcih0cmFuc3BvcnRzLmR0bHNUcmFuc3BvcnQsIGtpbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJhbnNjZWl2ZXJzW3NkcE1MaW5lSW5kZXhdID0ge1xuICAgICAgICAgIGljZUdhdGhlcmVyOiB0cmFuc3BvcnRzLmljZUdhdGhlcmVyLFxuICAgICAgICAgIGljZVRyYW5zcG9ydDogdHJhbnNwb3J0cy5pY2VUcmFuc3BvcnQsXG4gICAgICAgICAgZHRsc1RyYW5zcG9ydDogdHJhbnNwb3J0cy5kdGxzVHJhbnNwb3J0LFxuICAgICAgICAgIGxvY2FsQ2FwYWJpbGl0aWVzOiBsb2NhbENhcGFiaWxpdGllcyxcbiAgICAgICAgICByZW1vdGVDYXBhYmlsaXRpZXM6IG51bGwsXG4gICAgICAgICAgcnRwU2VuZGVyOiBydHBTZW5kZXIsXG4gICAgICAgICAgcnRwUmVjZWl2ZXI6IHJ0cFJlY2VpdmVyLFxuICAgICAgICAgIGtpbmQ6IGtpbmQsXG4gICAgICAgICAgbWlkOiBtaWQsXG4gICAgICAgICAgc2VuZFNzcmM6IHNlbmRTc3JjLFxuICAgICAgICAgIHJlY3ZTc3JjOiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIHZhciB0cmFuc2NlaXZlciA9IHRyYW5zY2VpdmVyc1tzZHBNTGluZUluZGV4XTtcbiAgICAgICAgc2RwICs9IFNEUFV0aWxzLndyaXRlTWVkaWFTZWN0aW9uKHRyYW5zY2VpdmVyLFxuICAgICAgICAgICAgdHJhbnNjZWl2ZXIubG9jYWxDYXBhYmlsaXRpZXMsICdvZmZlcicsIHNlbGYubG9jYWxTdHJlYW1zWzBdKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9wZW5kaW5nT2ZmZXIgPSB0cmFuc2NlaXZlcnM7XG4gICAgICB2YXIgZGVzYyA9IG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe1xuICAgICAgICB0eXBlOiAnb2ZmZXInLFxuICAgICAgICBzZHA6IHNkcFxuICAgICAgfSk7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAmJiB0eXBlb2YgYXJndW1lbnRzWzBdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGFyZ3VtZW50c1swXSwgMCwgZGVzYyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRlc2MpO1xuICAgIH07XG5cbiAgICB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLmNyZWF0ZUFuc3dlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIGFuc3dlck9wdGlvbnM7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgYXJndW1lbnRzWzBdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGFuc3dlck9wdGlvbnMgPSBhcmd1bWVudHNbMF07XG4gICAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgYW5zd2VyT3B0aW9ucyA9IGFyZ3VtZW50c1syXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHNkcCA9IFNEUFV0aWxzLndyaXRlU2Vzc2lvbkJvaWxlcnBsYXRlKCk7XG4gICAgICB0aGlzLnRyYW5zY2VpdmVycy5mb3JFYWNoKGZ1bmN0aW9uKHRyYW5zY2VpdmVyKSB7XG4gICAgICAgIC8vIENhbGN1bGF0ZSBpbnRlcnNlY3Rpb24gb2YgY2FwYWJpbGl0aWVzLlxuICAgICAgICB2YXIgY29tbW9uQ2FwYWJpbGl0aWVzID0gc2VsZi5fZ2V0Q29tbW9uQ2FwYWJpbGl0aWVzKFxuICAgICAgICAgICAgdHJhbnNjZWl2ZXIubG9jYWxDYXBhYmlsaXRpZXMsXG4gICAgICAgICAgICB0cmFuc2NlaXZlci5yZW1vdGVDYXBhYmlsaXRpZXMpO1xuXG4gICAgICAgIHNkcCArPSBTRFBVdGlscy53cml0ZU1lZGlhU2VjdGlvbih0cmFuc2NlaXZlciwgY29tbW9uQ2FwYWJpbGl0aWVzLFxuICAgICAgICAgICAgJ2Fuc3dlcicsIHNlbGYubG9jYWxTdHJlYW1zWzBdKTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgZGVzYyA9IG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe1xuICAgICAgICB0eXBlOiAnYW5zd2VyJyxcbiAgICAgICAgc2RwOiBzZHBcbiAgICAgIH0pO1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggJiYgdHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dChhcmd1bWVudHNbMF0sIDAsIGRlc2MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShkZXNjKTtcbiAgICB9O1xuXG4gICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZS5hZGRJY2VDYW5kaWRhdGUgPSBmdW5jdGlvbihjYW5kaWRhdGUpIHtcbiAgICAgIHZhciBtTGluZUluZGV4ID0gY2FuZGlkYXRlLnNkcE1MaW5lSW5kZXg7XG4gICAgICBpZiAoY2FuZGlkYXRlLnNkcE1pZCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudHJhbnNjZWl2ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHRoaXMudHJhbnNjZWl2ZXJzW2ldLm1pZCA9PT0gY2FuZGlkYXRlLnNkcE1pZCkge1xuICAgICAgICAgICAgbUxpbmVJbmRleCA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciB0cmFuc2NlaXZlciA9IHRoaXMudHJhbnNjZWl2ZXJzW21MaW5lSW5kZXhdO1xuICAgICAgaWYgKHRyYW5zY2VpdmVyKSB7XG4gICAgICAgIHZhciBjYW5kID0gT2JqZWN0LmtleXMoY2FuZGlkYXRlLmNhbmRpZGF0ZSkubGVuZ3RoID4gMCA/XG4gICAgICAgICAgICBTRFBVdGlscy5wYXJzZUNhbmRpZGF0ZShjYW5kaWRhdGUuY2FuZGlkYXRlKSA6IHt9O1xuICAgICAgICAvLyBJZ25vcmUgQ2hyb21lJ3MgaW52YWxpZCBjYW5kaWRhdGVzIHNpbmNlIEVkZ2UgZG9lcyBub3QgbGlrZSB0aGVtLlxuICAgICAgICBpZiAoY2FuZC5wcm90b2NvbCA9PT0gJ3RjcCcgJiYgY2FuZC5wb3J0ID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElnbm9yZSBSVENQIGNhbmRpZGF0ZXMsIHdlIGFzc3VtZSBSVENQLU1VWC5cbiAgICAgICAgaWYgKGNhbmQuY29tcG9uZW50ICE9PSAnMScpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQSBkaXJ0eSBoYWNrIHRvIG1ha2Ugc2FtcGxlcyB3b3JrLlxuICAgICAgICBpZiAoY2FuZC50eXBlID09PSAnZW5kT2ZDYW5kaWRhdGVzJykge1xuICAgICAgICAgIGNhbmQgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2NlaXZlci5pY2VUcmFuc3BvcnQuYWRkUmVtb3RlQ2FuZGlkYXRlKGNhbmQpO1xuXG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgcmVtb3RlRGVzY3JpcHRpb24uXG4gICAgICAgIHZhciBzZWN0aW9ucyA9IFNEUFV0aWxzLnNwbGl0U2VjdGlvbnModGhpcy5yZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgICBzZWN0aW9uc1ttTGluZUluZGV4ICsgMV0gKz0gKGNhbmQudHlwZSA/IGNhbmRpZGF0ZS5jYW5kaWRhdGUudHJpbSgpXG4gICAgICAgICAgICA6ICdhPWVuZC1vZi1jYW5kaWRhdGVzJykgKyAnXFxyXFxuJztcbiAgICAgICAgdGhpcy5yZW1vdGVEZXNjcmlwdGlvbi5zZHAgPSBzZWN0aW9ucy5qb2luKCcnKTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBlb2YgYXJndW1lbnRzWzFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGFyZ3VtZW50c1sxXSwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfTtcblxuICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbi5wcm90b3R5cGUuZ2V0U3RhdHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwcm9taXNlcyA9IFtdO1xuICAgICAgdGhpcy50cmFuc2NlaXZlcnMuZm9yRWFjaChmdW5jdGlvbih0cmFuc2NlaXZlcikge1xuICAgICAgICBbJ3J0cFNlbmRlcicsICdydHBSZWNlaXZlcicsICdpY2VHYXRoZXJlcicsICdpY2VUcmFuc3BvcnQnLFxuICAgICAgICAgICAgJ2R0bHNUcmFuc3BvcnQnXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgICAgIGlmICh0cmFuc2NlaXZlclttZXRob2RdKSB7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHRyYW5zY2VpdmVyW21ldGhvZF0uZ2V0U3RhdHMoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGNiID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZW9mIGFyZ3VtZW50c1sxXSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgIGFyZ3VtZW50c1sxXTtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICAgIHZhciByZXN1bHRzID0ge307XG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uKHJlcykge1xuICAgICAgICAgIHJlcy5mb3JFYWNoKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7XG4gICAgICAgICAgICAgIHJlc3VsdHNbaWRdID0gcmVzdWx0W2lkXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChjYikge1xuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2IsIDAsIHJlc3VsdHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKHJlc3VsdHMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH0sXG5cbiAgLy8gQXR0YWNoIGEgbWVkaWEgc3RyZWFtIHRvIGFuIGVsZW1lbnQuXG4gIGF0dGFjaE1lZGlhU3RyZWFtOiBmdW5jdGlvbihlbGVtZW50LCBzdHJlYW0pIHtcbiAgICBsb2dnaW5nKCdERVBSRUNBVEVELCBhdHRhY2hNZWRpYVN0cmVhbSB3aWxsIHNvb24gYmUgcmVtb3ZlZC4nKTtcbiAgICBlbGVtZW50LnNyY09iamVjdCA9IHN0cmVhbTtcbiAgfSxcblxuICByZWF0dGFjaE1lZGlhU3RyZWFtOiBmdW5jdGlvbih0bywgZnJvbSkge1xuICAgIGxvZ2dpbmcoJ0RFUFJFQ0FURUQsIHJlYXR0YWNoTWVkaWFTdHJlYW0gd2lsbCBzb29uIGJlIHJlbW92ZWQuJyk7XG4gICAgdG8uc3JjT2JqZWN0ID0gZnJvbS5zcmNPYmplY3Q7XG4gIH1cbn1cblxuLy8gRXhwb3NlIHB1YmxpYyBtZXRob2RzLlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNoaW1QZWVyQ29ubmVjdGlvbjogZWRnZVNoaW0uc2hpbVBlZXJDb25uZWN0aW9uLFxuICBhdHRhY2hNZWRpYVN0cmVhbTogZWRnZVNoaW0uYXR0YWNoTWVkaWFTdHJlYW0sXG4gIHJlYXR0YWNoTWVkaWFTdHJlYW06IGVkZ2VTaGltLnJlYXR0YWNoTWVkaWFTdHJlYW1cbn1cblxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2VkZ2UvZWRnZV9zaGltLmpzXG4gKiogbW9kdWxlIGlkID0gMTUzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKlxuICogIENvcHlyaWdodCAoYykgMjAxNiBUaGUgV2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZVxuICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZVxuICogIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztcblxudmFyIGxvZ2dpbmcgPSByZXF1aXJlKCcuLi91dGlscycpLmxvZztcbnZhciBicm93c2VyRGV0YWlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJykuYnJvd3NlckRldGFpbHM7XG5cbnZhciBmaXJlZm94U2hpbSA9IHtcbiAgc2hpbU9uVHJhY2s6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JyAmJiB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gJiYgISgnb250cmFjaycgaW5cbiAgICAgICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24ucHJvdG90eXBlLCAnb250cmFjaycsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuX29udHJhY2s7IH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24oZikge1xuICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgICBpZiAodGhpcy5fb250cmFjaykge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFjaycsIHRoaXMuX29udHJhY2spO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0aGlzLl9vbnRyYWNrcG9seSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0aGlzLl9vbnRyYWNrID0gZik7XG4gICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0aGlzLl9vbnRyYWNrcG9seSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGUuc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goZnVuY3Rpb24odHJhY2spIHtcbiAgICAgICAgICAgICAgdmFyIGV2ZW50ID0gbmV3IEV2ZW50KCd0cmFjaycpO1xuICAgICAgICAgICAgICBldmVudC50cmFjayA9IHRyYWNrO1xuICAgICAgICAgICAgICBldmVudC5yZWNlaXZlciA9IHt0cmFjazogdHJhY2t9O1xuICAgICAgICAgICAgICBldmVudC5zdHJlYW1zID0gW2Uuc3RyZWFtXTtcbiAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIHNoaW1Tb3VyY2VPYmplY3Q6IGZ1bmN0aW9uKCkge1xuICAgIC8vIEZpcmVmb3ggaGFzIHN1cHBvcnRlZCBtb3pTcmNPYmplY3Qgc2luY2UgRkYyMiwgdW5wcmVmaXhlZCBpbiA0Mi5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh3aW5kb3cuSFRNTE1lZGlhRWxlbWVudCAmJlxuICAgICAgICAhKCdzcmNPYmplY3QnIGluIHdpbmRvdy5IVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSkpIHtcbiAgICAgICAgLy8gU2hpbSB0aGUgc3JjT2JqZWN0IHByb3BlcnR5LCBvbmNlLCB3aGVuIEhUTUxNZWRpYUVsZW1lbnQgaXMgZm91bmQuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3cuSFRNTE1lZGlhRWxlbWVudC5wcm90b3R5cGUsICdzcmNPYmplY3QnLCB7XG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1velNyY09iamVjdDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldDogZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgICAgICAgICB0aGlzLm1velNyY09iamVjdCA9IHN0cmVhbTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBzaGltUGVlckNvbm5lY3Rpb246IGZ1bmN0aW9uKCkge1xuICAgIC8vIFRoZSBSVENQZWVyQ29ubmVjdGlvbiBvYmplY3QuXG4gICAgaWYgKCF3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbiA9IGZ1bmN0aW9uKHBjQ29uZmlnLCBwY0NvbnN0cmFpbnRzKSB7XG4gICAgICAgIGlmIChicm93c2VyRGV0YWlscy52ZXJzaW9uIDwgMzgpIHtcbiAgICAgICAgICAvLyAudXJscyBpcyBub3Qgc3VwcG9ydGVkIGluIEZGIDwgMzguXG4gICAgICAgICAgLy8gY3JlYXRlIFJUQ0ljZVNlcnZlcnMgd2l0aCBhIHNpbmdsZSB1cmwuXG4gICAgICAgICAgaWYgKHBjQ29uZmlnICYmIHBjQ29uZmlnLmljZVNlcnZlcnMpIHtcbiAgICAgICAgICAgIHZhciBuZXdJY2VTZXJ2ZXJzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBjQ29uZmlnLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFyIHNlcnZlciA9IHBjQ29uZmlnLmljZVNlcnZlcnNbaV07XG4gICAgICAgICAgICAgIGlmIChzZXJ2ZXIuaGFzT3duUHJvcGVydHkoJ3VybHMnKSkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VydmVyLnVybHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgIHZhciBuZXdTZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogc2VydmVyLnVybHNbal1cbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBpZiAoc2VydmVyLnVybHNbal0uaW5kZXhPZigndHVybicpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlcnZlci51c2VybmFtZSA9IHNlcnZlci51c2VybmFtZTtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VydmVyLmNyZWRlbnRpYWwgPSBzZXJ2ZXIuY3JlZGVudGlhbDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG5ld0ljZVNlcnZlcnMucHVzaChuZXdTZXJ2ZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdJY2VTZXJ2ZXJzLnB1c2gocGNDb25maWcuaWNlU2VydmVyc1tpXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBjQ29uZmlnLmljZVNlcnZlcnMgPSBuZXdJY2VTZXJ2ZXJzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IG1velJUQ1BlZXJDb25uZWN0aW9uKHBjQ29uZmlnLCBwY0NvbnN0cmFpbnRzKTsgLy8ganNjczppZ25vcmUgcmVxdWlyZUNhcGl0YWxpemVkQ29uc3RydWN0b3JzXG4gICAgICB9O1xuICAgICAgd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZSA9IG1velJUQ1BlZXJDb25uZWN0aW9uLnByb3RvdHlwZTtcblxuICAgICAgLy8gd3JhcCBzdGF0aWMgbWV0aG9kcy4gQ3VycmVudGx5IGp1c3QgZ2VuZXJhdGVDZXJ0aWZpY2F0ZS5cbiAgICAgIGlmIChtb3pSVENQZWVyQ29ubmVjdGlvbi5nZW5lcmF0ZUNlcnRpZmljYXRlKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24sICdnZW5lcmF0ZUNlcnRpZmljYXRlJywge1xuICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gbW96UlRDUGVlckNvbm5lY3Rpb24uZ2VuZXJhdGVDZXJ0aWZpY2F0ZS5hcHBseShudWxsLFxuICAgICAgICAgICAgICAgICAgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBtb3pSVENQZWVyQ29ubmVjdGlvbi5nZW5lcmF0ZUNlcnRpZmljYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdy5SVENTZXNzaW9uRGVzY3JpcHRpb24gPSBtb3pSVENTZXNzaW9uRGVzY3JpcHRpb247XG4gICAgICB3aW5kb3cuUlRDSWNlQ2FuZGlkYXRlID0gbW96UlRDSWNlQ2FuZGlkYXRlO1xuICAgIH1cbiAgfSxcblxuICBzaGltR2V0VXNlck1lZGlhOiBmdW5jdGlvbigpIHtcbiAgICAvLyBnZXRVc2VyTWVkaWEgY29uc3RyYWludHMgc2hpbS5cbiAgICB2YXIgZ2V0VXNlck1lZGlhXyA9IGZ1bmN0aW9uKGNvbnN0cmFpbnRzLCBvblN1Y2Nlc3MsIG9uRXJyb3IpIHtcbiAgICAgIHZhciBjb25zdHJhaW50c1RvRkYzN18gPSBmdW5jdGlvbihjKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYyAhPT0gJ29iamVjdCcgfHwgYy5yZXF1aXJlKSB7XG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcXVpcmUgPSBbXTtcbiAgICAgICAgT2JqZWN0LmtleXMoYykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICBpZiAoa2V5ID09PSAncmVxdWlyZScgfHwga2V5ID09PSAnYWR2YW5jZWQnIHx8IGtleSA9PT0gJ21lZGlhU291cmNlJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgciA9IGNba2V5XSA9ICh0eXBlb2YgY1trZXldID09PSAnb2JqZWN0JykgP1xuICAgICAgICAgICAgICBjW2tleV0gOiB7aWRlYWw6IGNba2V5XX07XG4gICAgICAgICAgaWYgKHIubWluICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgci5tYXggIT09IHVuZGVmaW5lZCB8fCByLmV4YWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlcXVpcmUucHVzaChrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoci5leGFjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIuZXhhY3QgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHIuIG1pbiA9IHIubWF4ID0gci5leGFjdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNba2V5XSA9IHIuZXhhY3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgci5leGFjdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHIuaWRlYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYy5hZHZhbmNlZCA9IGMuYWR2YW5jZWQgfHwgW107XG4gICAgICAgICAgICB2YXIgb2MgPSB7fTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygci5pZGVhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgb2Nba2V5XSA9IHttaW46IHIuaWRlYWwsIG1heDogci5pZGVhbH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvY1trZXldID0gci5pZGVhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGMuYWR2YW5jZWQucHVzaChvYyk7XG4gICAgICAgICAgICBkZWxldGUgci5pZGVhbDtcbiAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMocikubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGRlbGV0ZSBjW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlcXVpcmUubGVuZ3RoKSB7XG4gICAgICAgICAgYy5yZXF1aXJlID0gcmVxdWlyZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYztcbiAgICAgIH07XG4gICAgICBpZiAoYnJvd3NlckRldGFpbHMudmVyc2lvbiA8IDM4KSB7XG4gICAgICAgIGxvZ2dpbmcoJ3NwZWM6ICcgKyBKU09OLnN0cmluZ2lmeShjb25zdHJhaW50cykpO1xuICAgICAgICBpZiAoY29uc3RyYWludHMuYXVkaW8pIHtcbiAgICAgICAgICBjb25zdHJhaW50cy5hdWRpbyA9IGNvbnN0cmFpbnRzVG9GRjM3Xyhjb25zdHJhaW50cy5hdWRpbyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnN0cmFpbnRzLnZpZGVvKSB7XG4gICAgICAgICAgY29uc3RyYWludHMudmlkZW8gPSBjb25zdHJhaW50c1RvRkYzN18oY29uc3RyYWludHMudmlkZW8pO1xuICAgICAgICB9XG4gICAgICAgIGxvZ2dpbmcoJ2ZmMzc6ICcgKyBKU09OLnN0cmluZ2lmeShjb25zdHJhaW50cykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hdmlnYXRvci5tb3pHZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIG9uU3VjY2Vzcywgb25FcnJvcik7XG4gICAgfTtcblxuICAgIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgPSBnZXRVc2VyTWVkaWFfO1xuXG4gICAgLy8gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGdldFVzZXJNZWRpYSBhcyBhIFByb21pc2UuXG4gICAgdmFyIGdldFVzZXJNZWRpYVByb21pc2VfID0gZnVuY3Rpb24oY29uc3RyYWludHMpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgbmF2aWdhdG9yLmdldFVzZXJNZWRpYShjb25zdHJhaW50cywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFNoaW0gZm9yIG1lZGlhRGV2aWNlcyBvbiBvbGRlciB2ZXJzaW9ucy5cbiAgICBpZiAoIW5hdmlnYXRvci5tZWRpYURldmljZXMpIHtcbiAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMgPSB7Z2V0VXNlck1lZGlhOiBnZXRVc2VyTWVkaWFQcm9taXNlXyxcbiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7IH0sXG4gICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKCkgeyB9XG4gICAgICB9O1xuICAgIH1cbiAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgPVxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgfHwgZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgICB2YXIgaW5mb3MgPSBbXG4gICAgICAgICAge2tpbmQ6ICdhdWRpb2lucHV0JywgZGV2aWNlSWQ6ICdkZWZhdWx0JywgbGFiZWw6ICcnLCBncm91cElkOiAnJ30sXG4gICAgICAgICAge2tpbmQ6ICd2aWRlb2lucHV0JywgZGV2aWNlSWQ6ICdkZWZhdWx0JywgbGFiZWw6ICcnLCBncm91cElkOiAnJ31cbiAgICAgICAgXTtcbiAgICAgICAgcmVzb2x2ZShpbmZvcyk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKGJyb3dzZXJEZXRhaWxzLnZlcnNpb24gPCA0MSkge1xuICAgICAgLy8gV29yayBhcm91bmQgaHR0cDovL2J1Z3ppbC5sYS8xMTY5NjY1XG4gICAgICB2YXIgb3JnRW51bWVyYXRlRGV2aWNlcyA9XG4gICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzLmJpbmQobmF2aWdhdG9yLm1lZGlhRGV2aWNlcyk7XG4gICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG9yZ0VudW1lcmF0ZURldmljZXMoKS50aGVuKHVuZGVmaW5lZCwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdOb3RGb3VuZEVycm9yJykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICB9LFxuXG4gIC8vIEF0dGFjaCBhIG1lZGlhIHN0cmVhbSB0byBhbiBlbGVtZW50LlxuICBhdHRhY2hNZWRpYVN0cmVhbTogZnVuY3Rpb24oZWxlbWVudCwgc3RyZWFtKSB7XG4gICAgbG9nZ2luZygnREVQUkVDQVRFRCwgYXR0YWNoTWVkaWFTdHJlYW0gd2lsbCBzb29uIGJlIHJlbW92ZWQuJyk7XG4gICAgZWxlbWVudC5zcmNPYmplY3QgPSBzdHJlYW07XG4gIH0sXG5cbiAgcmVhdHRhY2hNZWRpYVN0cmVhbTogZnVuY3Rpb24odG8sIGZyb20pIHtcbiAgICBsb2dnaW5nKCdERVBSRUNBVEVELCByZWF0dGFjaE1lZGlhU3RyZWFtIHdpbGwgc29vbiBiZSByZW1vdmVkLicpO1xuICAgIHRvLnNyY09iamVjdCA9IGZyb20uc3JjT2JqZWN0O1xuICB9XG59XG5cbi8vIEV4cG9zZSBwdWJsaWMgbWV0aG9kcy5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzaGltT25UcmFjazogZmlyZWZveFNoaW0uc2hpbU9uVHJhY2ssXG4gIHNoaW1Tb3VyY2VPYmplY3Q6IGZpcmVmb3hTaGltLnNoaW1Tb3VyY2VPYmplY3QsXG4gIHNoaW1QZWVyQ29ubmVjdGlvbjogZmlyZWZveFNoaW0uc2hpbVBlZXJDb25uZWN0aW9uLFxuICBzaGltR2V0VXNlck1lZGlhOiByZXF1aXJlKCcuL2dldHVzZXJtZWRpYScpLFxuICBhdHRhY2hNZWRpYVN0cmVhbTogZmlyZWZveFNoaW0uYXR0YWNoTWVkaWFTdHJlYW0sXG4gIHJlYXR0YWNoTWVkaWFTdHJlYW06IGZpcmVmb3hTaGltLnJlYXR0YWNoTWVkaWFTdHJlYW1cbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3dlYnJ0Yy1hZGFwdGVyL3NyYy9qcy9maXJlZm94L2ZpcmVmb3hfc2hpbS5qc1xuICoqIG1vZHVsZSBpZCA9IDE1NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLypcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2VcbiAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2VcbiAqICB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBsb2dnaW5nID0gcmVxdWlyZSgnLi4vdXRpbHMnKS5sb2c7XG52YXIgYnJvd3NlckRldGFpbHMgPSByZXF1aXJlKCcuLi91dGlscycpLmJyb3dzZXJEZXRhaWxzO1xuXG4vLyBFeHBvc2UgcHVibGljIG1ldGhvZHMuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICAvLyBnZXRVc2VyTWVkaWEgY29uc3RyYWludHMgc2hpbS5cbiAgdmFyIGdldFVzZXJNZWRpYV8gPSBmdW5jdGlvbihjb25zdHJhaW50cywgb25TdWNjZXNzLCBvbkVycm9yKSB7XG4gICAgdmFyIGNvbnN0cmFpbnRzVG9GRjM3XyA9IGZ1bmN0aW9uKGMpIHtcbiAgICAgIGlmICh0eXBlb2YgYyAhPT0gJ29iamVjdCcgfHwgYy5yZXF1aXJlKSB7XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfVxuICAgICAgdmFyIHJlcXVpcmUgPSBbXTtcbiAgICAgIE9iamVjdC5rZXlzKGMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdyZXF1aXJlJyB8fCBrZXkgPT09ICdhZHZhbmNlZCcgfHwga2V5ID09PSAnbWVkaWFTb3VyY2UnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gY1trZXldID0gKHR5cGVvZiBjW2tleV0gPT09ICdvYmplY3QnKSA/XG4gICAgICAgICAgICBjW2tleV0gOiB7aWRlYWw6IGNba2V5XX07XG4gICAgICAgIGlmIChyLm1pbiAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICByLm1heCAhPT0gdW5kZWZpbmVkIHx8IHIuZXhhY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlcXVpcmUucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyLmV4YWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHIuZXhhY3QgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByLiBtaW4gPSByLm1heCA9IHIuZXhhY3Q7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNba2V5XSA9IHIuZXhhY3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSByLmV4YWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyLmlkZWFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjLmFkdmFuY2VkID0gYy5hZHZhbmNlZCB8fCBbXTtcbiAgICAgICAgICB2YXIgb2MgPSB7fTtcbiAgICAgICAgICBpZiAodHlwZW9mIHIuaWRlYWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBvY1trZXldID0ge21pbjogci5pZGVhbCwgbWF4OiByLmlkZWFsfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2Nba2V5XSA9IHIuaWRlYWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGMuYWR2YW5jZWQucHVzaChvYyk7XG4gICAgICAgICAgZGVsZXRlIHIuaWRlYWw7XG4gICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhyKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBjW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChyZXF1aXJlLmxlbmd0aCkge1xuICAgICAgICBjLnJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGM7XG4gICAgfTtcbiAgICBpZiAoYnJvd3NlckRldGFpbHMudmVyc2lvbiA8IDM4KSB7XG4gICAgICBsb2dnaW5nKCdzcGVjOiAnICsgSlNPTi5zdHJpbmdpZnkoY29uc3RyYWludHMpKTtcbiAgICAgIGlmIChjb25zdHJhaW50cy5hdWRpbykge1xuICAgICAgICBjb25zdHJhaW50cy5hdWRpbyA9IGNvbnN0cmFpbnRzVG9GRjM3Xyhjb25zdHJhaW50cy5hdWRpbyk7XG4gICAgICB9XG4gICAgICBpZiAoY29uc3RyYWludHMudmlkZW8pIHtcbiAgICAgICAgY29uc3RyYWludHMudmlkZW8gPSBjb25zdHJhaW50c1RvRkYzN18oY29uc3RyYWludHMudmlkZW8pO1xuICAgICAgfVxuICAgICAgbG9nZ2luZygnZmYzNzogJyArIEpTT04uc3RyaW5naWZ5KGNvbnN0cmFpbnRzKSk7XG4gICAgfVxuICAgIHJldHVybiBuYXZpZ2F0b3IubW96R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBvblN1Y2Nlc3MsIG9uRXJyb3IpO1xuICB9O1xuXG4gIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEgPSBnZXRVc2VyTWVkaWFfO1xuXG4gIC8vIFJldHVybnMgdGhlIHJlc3VsdCBvZiBnZXRVc2VyTWVkaWEgYXMgYSBQcm9taXNlLlxuICB2YXIgZ2V0VXNlck1lZGlhUHJvbWlzZV8gPSBmdW5jdGlvbihjb25zdHJhaW50cykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIG5hdmlnYXRvci5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBTaGltIGZvciBtZWRpYURldmljZXMgb24gb2xkZXIgdmVyc2lvbnMuXG4gIGlmICghbmF2aWdhdG9yLm1lZGlhRGV2aWNlcykge1xuICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMgPSB7Z2V0VXNlck1lZGlhOiBnZXRVc2VyTWVkaWFQcm9taXNlXyxcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKCkgeyB9LFxuICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKSB7IH1cbiAgICB9O1xuICB9XG4gIG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcyA9XG4gICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMgfHwgZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgIHZhciBpbmZvcyA9IFtcbiAgICAgICAge2tpbmQ6ICdhdWRpb2lucHV0JywgZGV2aWNlSWQ6ICdkZWZhdWx0JywgbGFiZWw6ICcnLCBncm91cElkOiAnJ30sXG4gICAgICAgIHtraW5kOiAndmlkZW9pbnB1dCcsIGRldmljZUlkOiAnZGVmYXVsdCcsIGxhYmVsOiAnJywgZ3JvdXBJZDogJyd9XG4gICAgICBdO1xuICAgICAgcmVzb2x2ZShpbmZvcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgaWYgKGJyb3dzZXJEZXRhaWxzLnZlcnNpb24gPCA0MSkge1xuICAgIC8vIFdvcmsgYXJvdW5kIGh0dHA6Ly9idWd6aWwubGEvMTE2OTY2NVxuICAgIHZhciBvcmdFbnVtZXJhdGVEZXZpY2VzID1cbiAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzLmJpbmQobmF2aWdhdG9yLm1lZGlhRGV2aWNlcyk7XG4gICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gb3JnRW51bWVyYXRlRGV2aWNlcygpLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIGlmIChlLm5hbWUgPT09ICdOb3RGb3VuZEVycm9yJykge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vd2VicnRjLWFkYXB0ZXIvc3JjL2pzL2ZpcmVmb3gvZ2V0dXNlcm1lZGlhLmpzXG4gKiogbW9kdWxlIGlkID0gMTU1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/examples/js/quagga.min.js b/examples/js/quagga.min.js index 5f9d758..1c3fed6 100644 --- a/examples/js/quagga.min.js +++ b/examples/js/quagga.min.js @@ -1,3 +1,3 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(t.toString())["default"]:"object"==typeof exports?exports.Quagga=t(t.toString())["default"]:e.Quagga=t(t.toString())["default"]}(this,function(e){return function(e){function t(r){if(n[r])return n[r].e;var o=n[r]={e:{},i:r,l:!1};return e[r].call(o.e,o,o.e,t),o.l=!0,o.e}var n={};return t.m=e,t.c=n,t.p="/",t(t.s=154)}([function(e,t,n){"use strict";var r=!1,o={disableLog:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(r=e,e?"adapter.js logging disabled":"adapter.js logging enabled")},log:function(){if("object"==typeof window){if(r)return;console.log.apply(console,arguments)}},extractVersion:function(e,t,n){var r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)},detectBrowser:function(){var e={};if(e.browser=null,e.version=null,e.minVersion=null,"undefined"==typeof window||!window.navigator)return e.browser="Not a browser.",e;if(navigator.mozGetUserMedia)e.browser="firefox",e.version=this.extractVersion(navigator.userAgent,/Firefox\/([0-9]+)\./,1),e.minVersion=31;else if(navigator.webkitGetUserMedia&&window.webkitRTCPeerConnection)e.browser="chrome",e.version=this.extractVersion(navigator.userAgent,/Chrom(e|ium)\/([0-9]+)\./,2),e.minVersion=38;else{if(!navigator.mediaDevices||!navigator.userAgent.match(/Edge\/(\d+).(\d+)$/))return e.browser="Not a supported browser.",e;e.browser="edge",e.version=this.extractVersion(navigator.userAgent,/Edge\/(\d+).(\d+)$/,2),e.minVersion=10547}return e.versiona)return Number.MAX_VALUE;r+=o}return r/i},r.prototype._nextSet=function(e,t){var n;for(t=t||0,n=t;n1&&(e[n[r]]=o)},r.prototype._matchTrace=function(e,t){var n,r,o=[],i=this,a=i._nextSet(i._row),c=!i._row[a],s=0,u={error:Number.MAX_VALUE,code:-1,start:0};if(e){for(n=0;nr?(u.start=n-a,u.end=n,u.counter=o,u):null;s++,o[s]=1,c=!c}}else for(o.push(0),n=a;ne?0:e,r=e;t>r;r++)if(this._row[r]!==n)return!1;return!0},r.prototype._fillCounters=function(e,t,n){var r,o=this,i=0,a=[];for(n="undefined"!=typeof n?n:!0,e="undefined"!=typeof e?e:o._nextUnset(o._row),t=t||o._row.length,a[i]=0,r=e;t>r;r++)o._row[r]^n?a[i]++:(i++,a[i]=1,n=!n);return a},Object.defineProperty(r.prototype,"FORMAT",{value:"unknown",writeable:!1}),r.DIRECTION={FORWARD:1,REVERSE:-1},r.Exception={StartNotFoundException:"Start-Info was not found!",CodeNotFoundException:"Code could not be found!",PatternNotFoundException:"Pattern could not be found!"},r.CONFIG_KEYS={},t.a=r},function(e,t,n){function r(e){var t=new Float32Array(2);return t[0]=e[0],t[1]=e[1],t}e.e=r},function(e,t,n){function r(e){return!!e&&"object"==typeof e}e.e=r},function(e,t,n){t.a={init:function(e,t){for(var n=e.length;n--;)e[n]=t},shuffle:function(e){var t,n,r=e.length-1;for(r;r>=0;r--)t=Math.floor(Math.random()*r),n=e[r],e[r]=e[t],e[t]=n;return e},toPointList:function(e){var t,n,r=[],o=[];for(t=0;t=t&&o.push(e[r]);return o},maxIndex:function(e){var t,n=0;for(t=0;te[n]&&(n=t);return n},max:function r(e){var t,r=0;for(t=0;tr&&(r=e[t]);return r},sum:function o(e){for(var t=e.length,o=0;t--;)o+=e[t];return o}}},function(e,t,n){t.a={drawRect:function(e,t,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=1,n.beginPath(),n.strokeRect(e.x,e.y,t.x,t.y)},drawPath:function(e,t,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=r.lineWidth,n.beginPath(),n.moveTo(e[0][t.x],e[0][t.y]);for(var o=1;or;r++)o=c._matchPattern(i,c.CODE_PATTERN[r]),oc.AVG_CODE_ERROR?null:d}}else f++;a[f]=1,u=!u}return null},r.prototype._findPattern=function(e,t,n,r,o){var i,a,c,s,u,f=[],d=this,l=0,p={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(t||(t=d._nextSet(d._row)),void 0===n&&(n=!1),void 0===r&&(r=!0),void 0===o&&(o=d.AVG_CODE_ERROR),i=0;ia))return p.error=a,p.start=i-s,p.end=i,p;if(!r)return null;for(c=0;c=0&&n._matchRange(e,t.start,0))return t;r=t.end,t=null}},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start),tr;r++){if(e=i._decodeCode(e.end),!e)return null;e.code>=i.CODE_G_START?(e.code=e.code-i.CODE_G_START,a|=1<<5-r):a|=0<<5-r,t.push(e.code),n.push(e)}if(o=i._calculateFirstDigit(a),null===o)return null;if(t.unshift(o),e=i._findPattern(i.MIDDLE_PATTERN,e.end,!0,!1),null===e)return null;for(n.push(e),r=0;6>r;r++){if(e=i._decodeCode(e.end,i.CODE_G_START),!e)return null;n.push(e),t.push(e.code)}return e},r.prototype._decode=function(){var e,t,n=this,r=[],o=[];return(e=n._findStart())?(t={code:e.code,start:e.start,end:e.end},o.push(t),(t=n._decodePayload(t,r,o))&&(t=n._findEnd(t.end,!1))?(o.push(t),n._checksum(r)?{code:r.join(""),start:e.start,end:t.end,codeset:"",startInfo:e,decodedCodes:o}:null):null):null},r.prototype._checksum=function(e){var t,n=0;for(t=e.length-2;t>=0;t-=2)n+=e[t];for(n*=3,t=e.length-1;t>=0;t-=2)n+=e[t];return n%10===0},t.a=r},function(e,t,n){function r(e,t){for(var n=e.length;n--;)if(o(e[n][0],t))return n;return-1}var o=n(15);e.e=r},function(e,t,n){function r(e,t){var n=e[t];return o(n)?n:void 0}var o=n(140);e.e=r},function(e,t,n){function r(e){var t=typeof e;return"number"==t||"boolean"==t||"string"==t&&"__proto__"!=e||null==e}e.e=r},function(e,t,n){var r=n(12),o=r(Object,"create");e.e=o},function(e,t,n){function r(e,t){return e===t||e!==e&&t!==t}e.e=r},function(e,t,n){function r(e){var t=o(e)?s.call(e):"";return t==i||t==a}var o=n(2),i="[object Function]",a="[object GeneratorFunction]",c=Object.prototype,s=c.toString;e.e=r},function(e,t,n){function r(e,t){var n={x:e,y:t,toVec2:function(){return w.clone([this.x,this.y])},toVec3:function(){return C.clone([this.x,this.y,1])},round:function(){return this.x=this.x>0?Math.floor(this.x+.5):Math.floor(this.x-.5),this.y=this.y>0?Math.floor(this.y+.5):Math.floor(this.y-.5),this}};return n}function o(e,t,n){n||(n=e);for(var r=e.data,o=r.length,i=n.data;o--;)i[o]=r[o]>o]++;return a}function a(e,t){function n(e,t){var n,r=0;for(n=e;t>=n;n++)r+=a[n];return r}function r(e,t){var n,r=0;for(n=e;t>=n;n++)r+=n*a[n];return r}function o(){var o,c,s,u,f,d,l,p=[0],h=(1<u;u++)o=n(0,u),c=n(u+1,h),s=o*c,0===s&&(s=1),f=r(0,u)*c,d=r(u+1,h)*o,l=f-d,p[u]=l*l/s;return _.a.maxIndex(p)}t||(t=8);var a,c,s=8-t;return c=o(),c<r;r++)u[r]={score:0,item:null};for(r=0;rs)for(i=u[c],i.score=o,i.item=e[r],s=Number.MAX_VALUE,a=0;t>a;a++)u[a].scorei;){for(r=0;c>r;r++)n[s]=Math.floor((.299*e[4*o+0]+.587*e[4*o+1]+.114*e[4*o+2]+(.299*e[4*(o+1)+0]+.587*e[4*(o+1)+1]+.114*e[4*(o+1)+2])+(.299*e[4*i+0]+.587*e[4*i+1]+.114*e[4*i+2])+(.299*e[4*(i+1)+0]+.587*e[4*(i+1)+1]+.114*e[4*(i+1)+2]))/4),s++,o+=2,i+=2;o+=u,i+=u}}function d(e,t,n){var r,o=e.length/4|0,i=n&&n.singleChannel===!0;if(i)for(r=0;o>r;r++)t[r]=e[4*r+0];else for(r=0;o>r;r++)t[r]=Math.floor(.299*e[4*r+0]+.587*e[4*r+1]+.114*e[4*r+2])}function l(e,t){for(var n=e.data,r=e.size.x,o=t.data,i=0,a=r,c=n.length,s=r/2,u=0;c>a;){for(var f=0;s>f;f++)o[u]=Math.floor((n[i]+n[i+1]+n[a]+n[a+1])/4),u++,i+=2,a+=2;i+=r,a+=r}}function p(e,t){var n=e[0],r=e[1],o=e[2],i=o*r,a=i*(1-Math.abs(n/60%2-1)),c=o-i,s=0,u=0,f=0;return t=t||[0,0,0],60>n?(s=i,u=a):120>n?(s=a,u=i):180>n?(u=i,f=a):240>n?(u=a,f=i):300>n?(s=a,f=i):360>n&&(s=i,f=a),t[0]=255*(s+c)|0,t[1]=255*(u+c)|0,t[2]=255*(f+c)|0,t}function h(e){var t,n=[],r=[];for(t=1;tt[r]?r++:n++;return o}function g(e,t){function n(e){for(var t=0,n=e[Math.floor(e.length/2)];t0&&(n=Math.abs(e[t]-l)>Math.abs(e[t-1]-l)?e[t-1]:e[t]),l/ns[f-1]/s[f]?{x:n,y:n}:null}var r,o=h(t.x),i=h(t.y),a=Math.max(t.x,t.y),c=v(o,i),s=[8,10,15,20,32,60,80],u={"x-small":5,small:4,medium:3,large:2,"x-large":1},f=u[e]||u.medium,d=s[f],l=Math.floor(a/d);return r=n(c),r||(r=n(h(a)),r||(r=n(h(l*d)))),r}function m(e){var t={value:parseFloat(e),unit:(e.indexOf("%")===e.length-1,"%")};return t}function y(e,t,n){var r={width:e,height:t},o=Object.keys(n).reduce(function(e,t){var o=n[t],i=m(o),a=E[t](i,r);return e[t]=a,e},{});return{sx:o.left,sy:o.top,sw:o.right-o.left,sh:o.bottom-o.top}}var b=n(51),_=n(8);t.f=r,t.c=c,t.d=s,t.e=u,t.i=f,t.j=d,t.g=l,t.a=p,t.b=g,t.h=y;var w={clone:n(6)},C={clone:n(78)},E={top:function(e,t){return"%"===e.unit?Math.floor(t.height*(e.value/100)):void 0},right:function(e,t){return"%"===e.unit?Math.floor(t.width-t.width*(e.value/100)):void 0},bottom:function(e,t){return"%"===e.unit?Math.floor(t.height-t.height*(e.value/100)):void 0},left:function(e,t){return"%"===e.unit?Math.floor(t.width*(e.value/100)):void 0}}},function(e,t,n){function r(e,t,n,r){t?this.data=t:n?(this.data=new n(e.x*e.y),n===Array&&r&&a.a.init(this.data,0)):(this.data=new Uint8Array(e.x*e.y),Uint8Array===Array&&r&&a.a.init(this.data,0)),this.size=e}var o=n(53),i=n(17),a=n(8),c={clone:n(6)};r.prototype.inImageWithBorder=function(e,t){return e.x>=t&&e.y>=t&&e.xn;n++)for(r=0;o>r;r++)e.data[r*i+n]=this.data[(t.y+r)*this.size.x+t.x+n]},r.prototype.copyTo=function(e){for(var t=this.data.length,n=this.data,r=e.data;t--;)r[t]=n[t]},r.prototype.get=function(e,t){return this.data[t*this.size.x+e]},r.prototype.getSafe=function(e,t){var n;if(!this.indexMapping){for(this.indexMapping={x:[],y:[]},n=0;ne;e++)r[e]=r[(n-1)*t+e]=0;for(e=1;n-1>e;e++)r[e*t]=r[e*t+(t-1)]=0},r.prototype.invert=function(){for(var e=this.data,t=e.length;t--;)e[t]=e[t]?0:1},r.prototype.convolve=function(e){var t,n,r,o,i=e.length/2|0,a=0;for(n=0;n=o;o++)for(r=-i;i>=r;r++)a+=e[o+i][r+i]*this.getSafe(t+r,n+o);this.data[n*this.size.x+t]=a}},r.prototype.moments=function(e){var t,n,r,o,i,a,s,u,f,d,l,p,h=this.data,v=this.size.y,g=this.size.x,m=[],y=[],b=Math.PI,_=b/4;if(0>=e)return y;for(i=0;e>i;i++)m[i]={m00:0,m01:0,m10:0,m11:0,m02:0,m20:0,theta:0,rad:0};for(n=0;v>n;n++)for(o=n*n,t=0;g>t;t++)r=h[n*g+t],r>0&&(a=m[r-1],a.m00+=1,a.m01+=n,a.m10+=t,a.m11+=t*n,a.m02+=o,a.m20+=t*t);for(i=0;e>i;i++)a=m[i],isNaN(a.m00)||0===a.m00||(d=a.m10/a.m00,l=a.m01/a.m00,s=a.m11/a.m00-d*l,u=a.m02/a.m00-l*l,f=a.m20/a.m00-d*d,p=(u-f)/(2*s),p=.5*Math.atan(p)+(s>=0?_:-_)+b,a.theta=(180*p/b+90)%180-90,a.theta<0&&(a.theta+=180),a.rad=p>b?p-b:p,a.vec=c.clone([Math.cos(p),Math.sin(p)]),y.push(a));return y},r.prototype.show=function(e,t){var n,r,o,i,a,c,s;for(t||(t=1),n=e.getContext("2d"),e.width=this.size.x,e.height=this.size.y,r=n.getImageData(0,0,e.width,e.height),o=r.data,i=0,s=0;st||t>360)&&(t=360);for(var r=[0,1,1],o=[0,0,0],a=[255,255,255],c=[0,0,0],s=[],u=e.getContext("2d"),f=u.getImageData(n.x,n.y,this.size.x,this.size.y),d=f.data,l=this.data.length;l--;)r[0]=this.data[l]*t,s=r[0]<=0?a:r[0]>=360?c:i.a.bind()(r,o),d[4*l+0]=s[0],d[4*l+1]=s[1],d[4*l+2]=s[2],d[4*l+3]=255;u.putImageData(f,n.x,n.y)},t.a=r},function(e,t,n){function r(e,t,n,r){var o=-1,i=e.length;for(r&&i&&(n=e[++o]);++o-1&&e%1==0&&t>e}var o=9007199254740991,i=/^(?:0|[1-9]\d*)$/;e.e=r},function(e,t,n){function r(e){var t=e&&e.constructor,n="function"==typeof t&&t.prototype||o;return e===n}var o=Object.prototype;e.e=r},function(e,t,n){function r(e){return o(e)&&c.call(e,"callee")&&(!u.call(e,"callee")||s.call(e)==i)}var o=n(26),i="[object Arguments]",a=Object.prototype,c=a.hasOwnProperty,s=a.toString,u=a.propertyIsEnumerable;e.e=r},function(e,t,n){function r(e){return null!=e&&a(o(e))&&!i(e)}var o=n(115),i=n(16),a=n(27);e.e=r},function(e,t,n){function r(e){return i(e)&&o(e)}var o=n(25),i=n(7);e.e=r},function(e,t,n){function r(e){return"number"==typeof e&&e>-1&&e%1==0&&o>=e}var o=9007199254740991;e.e=r},function(e,t,n){var r=n(99),o=n(113),i=o(function(e,t,n){r(e,t,n)});e.e=i},function(e,t,n){var r={searchDirections:[[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1],[-1,0],[-1,1]],create:function(e,t){function n(e,t,n,r){var o,f,d;for(o=0;7>o;o++){if(f=e.cy+s[e.dir][0],d=e.cx+s[e.dir][1],i=f*u+d,a[i]===t&&(0===c[i]||c[i]===n))return c[i]=n,e.cy=f,e.cx=d,!0;0===c[i]&&(c[i]=r),e.dir=(e.dir+1)%8}return!1}function r(e,t,n){return{dir:n,x:e,y:t,next:null,prev:null}}function o(e,t,o,i,a){var c,s,u,f=null,d={cx:t,cy:e,dir:0};if(n(d,i,o,a)){f=r(t,e,d.dir),c=f,u=d.dir,s=r(d.cx,d.cy,0),s.prev=c,c.next=s,s.next=null,c=s;do d.dir=(d.dir+6)%8,n(d,i,o,a),u!==d.dir?(c.dir=d.dir,s=r(d.cx,d.cy,0),s.prev=c,c.next=s,s.next=null,c=s):(c.dir=u,c.x=d.cx,c.y=d.cy),u=d.dir;while(d.cx!==t||d.cy!==e);f.prev=c.prev,c.prev.next=f}return f}var i,a=e.data,c=t.data,s=this.searchDirections,u=e.size.x;return{trace:function(e,t,r,o){return n(e,t,r,o)},contourTracing:function(e,t,n,r,i){return o(e,t,n,r,i)}}}};t.a=r},function(e,t,n){function r(){o.a.call(this)}var o=n(5),i=n(8),a={ALPHABETH_STRING:{value:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,45,46,32,42,36,47,43,37]},CHARACTER_ENCODINGS:{value:[52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,148,168,162,138,42]},ASTERISK:{value:148},FORMAT:{value:"code_39",writeable:!1}};r.prototype=Object.create(o.a.prototype,a),r.prototype.constructor=r,r.prototype._toCounters=function(e,t){var n,r=this,o=t.length,a=r._row.length,c=!r._row[e],s=0;for(i.a.init(t,0),n=e;a>n;n++)if(r._row[n]^c)t[s]++;else{if(s++,s===o)break;t[s]=1,c=!c}return t},r.prototype._decode=function(){var e,t,n,r,o=this,a=[0,0,0,0,0,0,0,0,0],c=[],s=o._findStart();if(!s)return null;r=o._nextSet(o._row,s.end);do{if(a=o._toCounters(r,a),n=o._toPattern(a),0>n)return null;if(e=o._patternToChar(n),0>e)return null;c.push(e),t=r,r+=i.a.sum(a),r=o._nextSet(o._row,r)}while("*"!==e);return c.pop(),c.length&&o._verifyTrailingWhitespace(t,r,a)?{code:c.join(""),start:s.start,end:r,startInfo:s,decodedCodes:c}:null},r.prototype._verifyTrailingWhitespace=function(e,t,n){var r,o=i.a.sum(n);return r=t-e-o,3*r>=o},r.prototype._patternToChar=function(e){var t,n=this;for(t=0;tt&&(r=e[n]);return r},r.prototype._toPattern=function(e){for(var t,n,r=e.length,o=0,i=r,a=0,c=this;i>3;){for(o=c._findNextWidth(e,o),i=0,t=0,n=0;r>n;n++)e[n]>o&&(t|=1<n&&i>0;n++)if(e[n]>o&&(i--,2*e[n]>=a))return-1;return t}}return-1},r.prototype._findStart=function(){var e,t,n,r=this,o=r._nextSet(r._row),i=o,a=[0,0,0,0,0,0,0,0,0],c=0,s=!1;for(e=o;et;t++)a[t]=a[t+2];a[7]=0,a[8]=0,c--}else c++;a[c]=1,s=!s}return null},t.a=r},function(e,t,n){function r(e,t){return e[0]*t[0]+e[1]*t[1]}e.e=r},function(e,t,n){function r(e){var t=-1,n=e?e.length:0;for(this.clear();++tn)return!1;var r=e.length-1;return n==r?e.pop():a.call(e,n,1),!0}var o=n(11),i=Array.prototype,a=i.splice;e.e=r},function(e,t,n){function r(e,t){var n=o(e,t);return 0>n?void 0:e[n][1]}var o=n(11);e.e=r},function(e,t,n){function r(e,t){return o(e,t)>-1}var o=n(11);e.e=r},function(e,t,n){function r(e,t,n){var r=o(e,t);0>r?e.push([t,n]):e[r][1]=n}var o=n(11);e.e=r},function(e,t,n){function r(e){var t=new e.constructor(e.byteLength);return new o(t).set(new o(e)),t}var o=n(84);e.e=r},function(e,t,n){function r(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n0)for(r=0;r0){if(e=J.filter(function(e){return!e.busy})[0],!e)return;j.attachData(e.imageData)}else j.attachData(k.data);j.grab()&&(e?(e.busy=!0,e.worker.postMessage({cmd:"process",imageData:e.imageData},[e.imageData.buffer])):g())}else g()}function y(){var e=null,t=1e3/(ee.frequency||60);I=!1,function n(r){e=e||r,I||(r>=e&&(e+=t,m()),window.requestAnimFrame(n))}(performance.now())}function b(){Z&&"LiveStream"===ee.inputStream.type?y():m()}function _(e){var t,n={worker:void 0,imageData:new Uint8Array(M.getWidth()*M.getHeight()),busy:!0};t=E(),n.worker=new Worker(t),n.worker.onmessage=function(r){return"initialized"===r.data.event?(URL.revokeObjectURL(t),n.busy=!1,n.imageData=new Uint8Array(r.data.imageData),e(n)):void("processed"===r.data.event?(n.imageData=new Uint8Array(r.data.imageData),n.busy=!1,v(r.data.result,n.imageData)):"error"===r.data.event)},n.worker.postMessage({cmd:"init",size:{x:M.getWidth(),y:M.getHeight()},imageData:n.imageData,config:w(ee)},[n.imageData.buffer])}function w(e){return Q({},e,{inputStream:Q({},e.inputStream,{target:null})})}function C(e){function t(e){self.postMessage({event:"processed",imageData:o.data,result:e},[o.data.buffer])}function n(){self.postMessage({event:"initialized",imageData:o.data},[o.data.buffer])}if(e){var r=e()["default"];if(!r)return void self.postMessage({event:"error",message:"Quagga could not be created"})}var o;self.onmessage=function(e){if("init"===e.data.cmd){var i=e.data.config;i.numOfWorkers=0,o=new r.ImageWrapper({x:e.data.size.x,y:e.data.size.y},new Uint8Array(e.data.imageData)),r.init(i,n,o),r.onProcessed(t)}else"process"===e.data.cmd?(o.data=new Uint8Array(e.data.imageData),r.start()):"setReaders"===e.data.cmd&&r.setReaders(e.data.readers)}}function E(){var t,n;return"undefined"!=typeof e&&(n=e),t=new Blob(["("+C.toString()+")("+n+");"],{type:"text/javascript"}),window.URL.createObjectURL(t)}function T(e){z?z.setReaders(e):Z&&J.length>0&&J.forEach(function(t){t.worker.postMessage({cmd:"setReaders",readers:e})})}function R(e,t){var n=e-J.length;if(0===n)return t&&t();if(0>n){var r=J.slice(n);return r.forEach(function(e){e.worker.terminate()}),J=J.slice(0,n),t&&t()}for(var o=function(n){J.push(n),J.length>=e&&t&&t()},i=0;n>i;i++)_(o)}var S=r(28),O=S&&S.__esModule?function(){return S["default"]}:function(){return S};Object.defineProperty(O,"a",{get:O});var x=r(54),D=x&&x.__esModule?function(){return x["default"]}:function(){return x};Object.defineProperty(D,"a",{get:D});var P=r(147),A=P&&P.__esModule?function(){return P["default"]}:function(){return P};Object.defineProperty(A,"a",{get:A});var M,j,I,k,N,z,L,U=r(18),F=r(63),G=r(57),B=r(52),W=r(59),V=r(9),H=r(50),q=r(55),X=r(62),$=r(60),Q=Object.assign||function(e){for(var t=1;tt},getPoints:function(){return a},getCenter:function(){return c}}},createPoint:function(e,t,n){return{rad:e[n],point:e,id:t}}}},function(e,t,n){t.a=function(){function e(e){return o[e]||(o[e]={subscribers:[]}),o[e]}function t(){o={}}function n(e,t){e.async?setTimeout(function(){e.callback(t)},4):e.callback(t)}function r(t,n,r){var o;if("function"==typeof n)o={callback:n,async:r};else if(o=n,!o.callback)throw"Callback was not specified on options";e(t).subscribers.push(o)}var o={};return{subscribe:function(e,t,n){return r(e,t,n)},publish:function(t,r){var o=e(t),i=o.subscribers;o.subscribers=i.filter(function(e){return n(e,r),!e.once})},once:function(e,t,n){r(e,{callback:t,async:n,once:!0})},unsubscribe:function(n,r){var o;n?(o=e(n),o&&r?o.subscribers=o.subscribers.filter(function(e){return e.callback!==r}):o.subscribers=[]):t()}}}()},function(e,t,n){function r(e,t,n){n||(n={data:null,size:t}),this.data=n.data,this.originalSize=n.size,this.I=n,this.from=e,this.size=t}r.prototype.show=function(e,t){var n,r,o,i,a,c,s;for(t||(t=1),n=e.getContext("2d"),e.width=this.size.x,e.height=this.size.y,r=n.getImageData(0,0,e.width,e.height),o=r.data,i=0,a=0;a>>16&65535,r=65535&e,o=t>>>16&65535,i=65535&t;return r*i+(n*i+r*o<<16>>>0)|0}},function(e,t,n){var r=void 0;r=n(56),t.a=r},function(e,t,n){e.e={inputStream:{name:"Live",type:"LiveStream",constraints:{width:640,height:480,facingMode:"environment"},area:{top:"0%",right:"0%",left:"0%",bottom:"0%"},singleChannel:!1},locate:!0,numOfWorkers:4,decoder:{readers:["code_128_reader"]},locator:{halfSample:!0,patchSize:"medium"}}},function(e,t,n){var r=n(58),o=(n(9),n(67)),i=n(10),a=n(30),c=n(68),s=n(66),u=n(72),f=n(69),d=n(71),l=n(70),p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},h={code_128_reader:o.a,ean_reader:i.a,ean_8_reader:f.a,code_39_reader:a.a,code_39_vin_reader:c.a,codabar_reader:s.a,upc_reader:u.a,upc_e_reader:d.a,i2of5_reader:l.a};t.a={create:function(e,t){function n(){}function o(){e.readers.forEach(function(e){var t,n={};"object"===("undefined"==typeof e?"undefined":p(e))?(t=e.format,n=e.config):"string"==typeof e&&(t=e),v.push(new h[t](n))})}function i(){}function a(e,n,r){function o(t){var r={y:t*Math.sin(n),x:t*Math.cos(n)};e[0].y-=r.y,e[0].x-=r.x,e[1].y+=r.y,e[1].x+=r.x}for(o(r);r>1&&(!t.inImageWithBorder(e[0],0)||!t.inImageWithBorder(e[1],0));)r-=Math.ceil(r/2),o(-r);return e}function c(e){return[{x:(e[1][0]-e[0][0])/2+e[0][0],y:(e[1][1]-e[0][1])/2+e[0][1]},{x:(e[3][0]-e[2][0])/2+e[2][0],y:(e[3][1]-e[2][1])/2+e[2][1]}]}function s(e){var n,o=null,i=r.a.getBarcodeLine(t,e[0],e[1]);for(r.a.toBinaryLine(i),n=0;nr&&null===u;r++)o=a/c*r*(r%2===0?-1:1),i={y:o*f,x:o*d},t[0].y+=i.x,t[0].x-=i.y,t[1].y+=i.x,t[1].x-=i.y,u=s(t);return u}function f(e){return Math.sqrt(Math.pow(Math.abs(e[1].y-e[0].y),2)+Math.pow(Math.abs(e[1].x-e[0].x),2))}function d(e){var t,n,r,o;l.ctx.overlay;return t=c(e),o=f(t),n=Math.atan2(t[1].y-t[0].y,t[1].x-t[0].x),t=a(t,n,Math.floor(.1*o)),null===t?null:(r=s(t),null===r&&(r=u(e,t,n)),null===r?null:{codeResult:r.codeResult,line:t,angle:n,pattern:r.barcodeLine.line,threshold:r.barcodeLine.threshold})}var l={ctx:{frequency:null,pattern:null,overlay:null},dom:{frequency:null,pattern:null,overlay:null}},v=[];return n(),o(),i(),{decodeFromBoundingBox:function(e){return d(e)},decodeFromBoundingBoxes:function(t){var n,r,o=[],i=e.multiple;for(n=0;nd?d:w,C=d>C?d:C,m.push(d)}var o,i,a,c,s,u,f,d,l=0|t.x,p=0|t.y,h=0|n.x,v=0|n.y,g=Math.abs(v-p)>Math.abs(h-l),m=[],y=e.data,b=e.size.x,_=0,w=255,C=0;for(g&&(u=l,l=p,p=u,u=h,h=v,v=u),l>h&&(u=l,l=h,h=u,u=p,p=v,v=u),o=h-l,i=Math.abs(v-p),a=o/2|0,s=p,c=v>p?1:-1,f=l;h>f;f++)g?r(s,f):r(f,s),a-=i,0>a&&(s+=c,a+=o);return{line:m,min:w,max:C}},r.toBinaryLine=function(e){var t,n,r,i,a,c,s=e.min,u=e.max,f=e.line,d=s+(u-s)/2,l=[],p=(u-s)/12,h=-p;for(r=f[0]>d?o.DIR.UP:o.DIR.DOWN,l.push({pos:0,val:f[0]}),a=0;at+n&&f[a+1]<1.5*d?o.DIR.DOWN:t+n>p&&f[a+1]>.5*d?o.DIR.UP:r,r!==i&&(l.push({pos:a,val:f[a]}),r=i);for(l.push({pos:f.length,val:f[f.length-1]}),c=l[0].pos;cd?0:1;for(a=1;al[a].val?l[a].val+(l[a+1].val-l[a].val)/3*2|0:l[a+1].val+(l[a].val-l[a+1].val)/3|0,c=l[a].pos;cp?0:1;return{line:f,threshold:p}},r.debug={printFrequency:function(e,t){var n,r=t.getContext("2d");for(t.width=e.length,t.height=256,r.beginPath(),r.strokeStyle="blue",n=0;n0?e.videoWidth>0&&e.videoHeight>0?t():window.setTimeout(r,500):n("Unable to play video stream. Is webcam working?"),o--}var o=10;r()})}function o(e,t){return navigator.mediaDevices.getUserMedia(t).then(function(t){return new Promise(function(n,r){l=t,e.src=window.URL.createObjectURL(t),e.onloadedmetadata=function(t){e.play(),n()}})}).then(r.bind(null,e))}function i(e){var t=u.a.bind()(e,["width","height","facingMode","aspectRatio","deviceId"]);return"undefined"!=typeof e.minAspectRatio&&e.minAspectRatio>0&&(t.aspectRatio=e.minAspectRatio,console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead")),"undefined"!=typeof e.facing&&(t.facingMode=e.facing,console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'")),t}function a(e,t){return"undefined"==typeof t.video.deviceId&&e?"undefined"!=typeof MediaStreamTrack&&"undefined"!=typeof MediaStreamTrack.getSources?new Promise(function(n,r){MediaStreamTrack.getSources(function(r){var o=r.filter(function(t){return"video"===t.kind&&t.facing===e})[0];return n(o?d.a.bind()({},t,{video:{deviceId:o.id}}):t)})}):Promise.resolve(d.a.bind()({},t,{video:{facingMode:e}})):Promise.resolve(t)}function c(e){var t={audio:!1,video:i(e)};return a(t.video.facingMode,t)}var s=n(143),u=s&&s.__esModule?function(){return s["default"]}:function(){return s};Object.defineProperty(u,"a",{get:u});var f=n(28),d=f&&f.__esModule?function(){return f["default"]}:function(){return f};Object.defineProperty(d,"a",{get:d});var l;t.a={request:function(e,t){return c(t).then(o.bind(null,e))},release:function(){var e=l&&l.getVideoTracks();e&&e.length&&e[0].stop(),l=null}}},function(e,t,n){var r=n(17),o={};o.create=function(e,t){var n,o={},i=e.getConfig(),a=(r.f.bind()(e.getRealWidth(),e.getRealHeight()),e.getCanvasSize()),c=r.f.bind()(e.getWidth(),e.getHeight()),s=e.getTopRight(),u=s.x,f=s.y,d=null,l=null;return n=t?t:document.createElement("canvas"),n.width=a.x,n.height=a.y,d=n.getContext("2d"),l=new Uint8Array(c.x*c.y),o.attachData=function(e){l=e},o.getData=function(){return l},o.grab=function(){var t,n=i.halfSample,o=e.getFrame();return o?(d.drawImage(o,0,0,a.x,a.y),t=d.getImageData(u,f,c.x,c.y).data,n?r.i.bind()(t,c,l):r.j.bind()(t,l,i),!0):!1},o.getSize=function(){return c},o},t.a=o},function(e,t,n){function r(e,t){e.onload=function(){t.loaded(this)}}var o={};o.load=function(e,t,n,o,i){var a,c,s,u=new Array(o),f=new Array(u.length);if(i===!1)u[0]=e;else for(a=0;a1?i.size:Math.floor(t/o*i.size):t,r=i.size?t/o>1?Math.floor(o/t*i.size):i.size:o,u.x=n,u.y=r}var n,r,o={},i=null,a=["canrecord","ended"],c={},s={x:0,y:0},u={x:0,y:0};return o.getRealWidth=function(){return e.videoWidth},o.getRealHeight=function(){return e.videoHeight},o.getWidth=function(){return n},o.getHeight=function(){return r},o.setWidth=function(e){n=e},o.setHeight=function(e){r=e},o.setInputStream=function(t){i=t,e.src="undefined"!=typeof t.src?t.src:""},o.ended=function(){return e.ended},o.getConfig=function(){return i},o.setAttribute=function(t,n){e.setAttribute(t,n)},o.pause=function(){e.pause()},o.play=function(){e.play()},o.setCurrentTime=function(t){"LiveStream"!==i.type&&(e.currentTime=t)},o.addEventListener=function(t,n,r){-1!==a.indexOf(t)?(c[t]||(c[t]=[]),c[t].push(n)):e.addEventListener(t,n,r)},o.clearEventHandlers=function(){a.forEach(function(t){var n=c[t];n&&n.length>0&&n.forEach(function(n){e.removeEventListener(t,n)})})},o.trigger=function(e,n){var r,i=c[e];if("canrecord"===e&&t(),i&&i.length>0)for(r=0;r1?a.size:Math.floor(c/s*a.size):c,o=a.size?c/s>1?Math.floor(s/c*a.size):a.size:s,_.x=n,_.y=o,d=!0,u=0,setTimeout(function(){t("canrecord",[])},0)},h,p,a.sequence)}function t(e,t){var n,r=y[e];if(r&&r.length>0)for(n=0;nu?u++:setTimeout(function(){g=!0,t("ended",[])},0)),e):null},i},t.a=o},function(e,t,n){(function(e){function r(){var t;v=h.halfSample?new S.a({x:T.size.x/2|0,y:T.size.y/2|0}):T,E=O.b.bind()(h.patchSize,v.size),k.x=v.size.x/E.x|0,k.y=v.size.y/E.y|0,C=new S.a(v.size,void 0,Uint8Array,!1),y=new S.a(E,void 0,Array,!0),t=new ArrayBuffer(65536),m=new S.a(E,new Uint8Array(t,0,E.x*E.y)),g=new S.a(E,new Uint8Array(t,E.x*E.y*3,E.x*E.y),void 0,!0),R=A.a.bind()("undefined"!=typeof window?window:"undefined"!=typeof self?self:e,{size:E.x},t),w=new S.a({x:v.size.x/m.size.x|0,y:v.size.y/m.size.y|0},void 0,Array,!0),b=new S.a(w.size,void 0,void 0,!0),_=new S.a(w.size,void 0,Int32Array,!0)}function o(){h.useWorker||"undefined"==typeof document||(I.dom.binary=document.createElement("canvas"),I.dom.binary.className="binaryBuffer",I.ctx.binary=I.dom.binary.getContext("2d"),I.dom.binary.width=C.size.x,I.dom.binary.height=C.size.y)}function i(e){var t,n,r,o,i,a,c,s=C.size.x,u=C.size.y,f=-C.size.x,d=-C.size.y;for(t=0,n=0;nt&&(t+=180),t=(180-t)*Math.PI/180,i=j.copy(j.create(),[Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t)]),n=0;nr;r++)M.transformMat2(o.box[r],o.box[r],i);for(n=0;nr;r++)o.box[r][0]f&&(f=o.box[r][0]),o.box[r][1]d&&(d=o.box[r][1]);for(a=[[s,u],[f,u],[f,d],[s,d]],c=h.halfSample?2:1,i=j.invert(i,i),r=0;4>r;r++)M.transformMat2(a[r],a[r],i);for(r=0;4>r;r++)M.scale(a[r],a[r],c);return a}function a(){O.c.bind()(v,C),C.zeroBorder()}function c(){var e,t,n,r,o,i,a,c=[];for(e=0;et;t++)r.push(0);for(n=_.data.length;n--;)_.data[n]>0&&r[_.data[n]-1]++;return r=r.map(function(e,t){return{val:e,label:t+1}}),r.sort(function(e,t){return t.val-e.val}),o=r.filter(function(e){return e.val>=5})}function u(e,t){var n,r,o,a,c=[],s=[];for(n=0;n=2){for(o=0;od&&s.push(e[o]);if(s.length>=2){for(a=f(s),i=0,o=0;o1&&a.length>=s.length/4*3&&a.length>e.length/4&&(i/=a.length,c={index:t[1]*k.x+t[0],pos:{x:n,y:r},box:[M.clone([n,r]),M.clone([n+m.size.x,r]),M.clone([n+m.size.x,r+m.size.y]),M.clone([n,r+m.size.y])],moments:a,rad:i,vec:M.clone([Math.cos(i),Math.sin(i)])},u.push(c))}}return u}function p(e){function t(){var e;for(e=0;e<_.data.length;e++)if(0===_.data[e]&&1===b.data[e])return e;return _.length}function n(e){var t,r,o,c,s,u,f={x:e%_.size.x,y:e/_.size.x|0};if(e<_.data.length)for(o=w.data[e],_.data[e]=i,s=0;sa&&n(c)):_.data[c]=Number.MAX_VALUE}var r,o,i=0,a=.95,c=0;for(x.a.init(b.data,0),x.a.init(_.data,0),x.a.init(w.data,null),r=0;rr?null:(t=s(r),0===t.length?null:n=u(t,r))},checkImageConstraints:function(e,t){var n,r,o,i=e.getWidth(),a=e.getHeight(),c=t.halfSample?.5:1;if(e.getConfig().area&&(o=O.h.bind()(i,a,e.getConfig().area),e.setTopRight({x:o.sx,y:o.sy}),e.setCanvasSize({x:i,y:a}),i=o.sw,a=o.sh),r={x:Math.floor(i*c),y:Math.floor(a*c)},n=O.b.bind()(t.patchSize,r),e.setWidth(Math.floor(Math.floor(r.x/n.x)*(1/c)*n.x)),e.setHeight(Math.floor(Math.floor(r.y/n.y)*(1/c)*n.y)),e.getWidth()%n.x===0&&e.getHeight()%n.y===0)return!0;throw new Error("Image dimensions do not comply with the current settings: Width ("+i+" )and height ("+a+") must a multiple of "+n.x)}}}).call(t,function(){return this}())},function(e,t,n){var r=n(29),o={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(e,t){var n=e.data,i=t.data,a=e.size.x,c=e.size.y,s=r.a.create(e,t);return{rasterize:function(e){var t,r,u,f,d,l,p,h,v,g,m,y,b=[],_=0;for(y=0;400>y;y++)b[y]=0;for(b[0]=n[0],v=null,l=1;c-1>l;l++)for(f=0,r=b[0],d=1;a-1>d;d++)if(m=l*a+d,0===i[m])if(t=n[m],t!==r){if(0===f)u=_+1,b[u]=t,r=t,p=s.contourTracing(l,d,u,t,o.DIR.OUTSIDE_EDGE),null!==p&&(_++,f=u,h=o.createContour2D(),h.dir=o.CONTOUR_DIR.CW_DIR,h.index=f,h.firstVertex=p,h.nextpeer=v,h.insideContours=null,null!==v&&(v.prevpeer=h),v=h);else if(p=s.contourTracing(l,d,o.DIR.INSIDE_EDGE,t,f),null!==p){for(h=o.createContour2D(),h.firstVertex=p,h.insideContours=null,0===e?h.dir=o.CONTOUR_DIR.CCW_DIR:h.dir=o.CONTOUR_DIR.CW_DIR,h.index=e,g=v;null!==g&&g.index!==f;)g=g.nextpeer;null!==g&&(h.nextpeer=g.insideContours,null!==g.insideContours&&(g.insideContours.prevpeer=h),g.insideContours=h)}}else i[m]=f;else i[m]===o.DIR.OUTSIDE_EDGE||i[m]===o.DIR.INSIDE_EDGE?(f=0,r=i[m]===o.DIR.INSIDE_EDGE?n[m]:b[0]):(f=i[m],r=b[f]);for(g=v;null!==g;)g.index=e,g=g.nextpeer;return{cc:v,count:_}},debug:{drawContour:function(e,t){var n,r,i,a=e.getContext("2d"),c=t;for(a.strokeStyle="red",a.fillStyle="red",a.lineWidth=1,n=null!==c?c.insideContours:null;null!==c;){switch(null!==n?(r=n,n=n.nextpeer):(r=c,c=c.nextpeer,n=null!==c?c.insideContours:null),r.dir){case o.CONTOUR_DIR.CW_DIR:a.strokeStyle="red";break;case o.CONTOUR_DIR.CCW_DIR:a.strokeStyle="blue";break;case o.CONTOUR_DIR.UNKNOWN_DIR:a.strokeStyle="green"}i=r.firstVertex,a.beginPath(),a.moveTo(i.x,i.y);do i=i.next,a.lineTo(i.x,i.y);while(i!==r.firstVertex);a.stroke()}}}}}};t.a=o},function(module, exports, __webpack_require__) {function Skeletonizer(stdlib, foreign, buffer) {"use asm";var images=new stdlib.Uint8Array(buffer),size=foreign.size|0,imul=stdlib.Math.imul;function erode(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0) == (5|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function subtract(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=(images[aImagePtr+length|0]|0) - (images[bImagePtr+length|0]|0)|0;}}function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=images[aImagePtr+length|0]|0|(images[bImagePtr+length|0]|0)|0;}}function countNonZero(imagePtr) {imagePtr=imagePtr|0;var sum=0,length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;sum=(sum|0)+(images[imagePtr+length|0]|0)|0;}return sum|0;}function init(imagePtr, value) {imagePtr=imagePtr|0;value=value|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[imagePtr+length|0]=value;}}function dilate(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0)>(0|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function memcpy(srcImagePtr, dstImagePtr) {srcImagePtr=srcImagePtr|0;dstImagePtr=dstImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[dstImagePtr+length|0]=images[srcImagePtr+length|0]|0;}}function zeroBorder(imagePtr) {imagePtr=imagePtr|0;var x=0,y=0;for (x=0; (x|0)<(size - 1|0); x=x+1|0) {images[imagePtr+x|0]=0;images[imagePtr+y|0]=0;y=y+size - 1|0;images[imagePtr+y|0]=0;y=y+1|0;}for (x=0; (x|0)<(size|0); x=x+1|0) {images[imagePtr+y|0]=0;y=y+1|0;}}function skeletonize() {var subImagePtr=0,erodedImagePtr=0,tempImagePtr=0,skelImagePtr=0,sum=0,done=0;erodedImagePtr=imul(size, size)|0;tempImagePtr=erodedImagePtr+erodedImagePtr|0;skelImagePtr=tempImagePtr+erodedImagePtr|0;init(skelImagePtr, 0);zeroBorder(subImagePtr);do {erode(subImagePtr, erodedImagePtr);dilate(erodedImagePtr, tempImagePtr);subtract(subImagePtr, tempImagePtr, tempImagePtr);bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);memcpy(erodedImagePtr, subImagePtr);sum=countNonZero(subImagePtr)|0;done=(sum|0) == 0|0;} while (!done);}return {skeletonize: skeletonize};} exports["a"]=Skeletonizer; },function(e,t,n){function r(){o.a.call(this),this._counters=[]}var o=n(5),i={ALPHABETH_STRING:{value:"0123456789-$:/.+ABCD"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,45,36,58,47,46,43,65,66,67,68]},CHARACTER_ENCODINGS:{value:[3,6,9,96,18,66,33,36,48,72,12,24,69,81,84,21,26,41,11,14]},START_END:{value:[26,41,11,14]},MIN_ENCODED_CHARS:{value:4},MAX_ACCEPTABLE:{value:2},PADDING:{value:1.5},FORMAT:{value:"codabar",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decode=function(){var e,t,n,r,o,i=this,a=[];if(this._counters=i._fillCounters(),e=i._findStart(),!e)return null;r=e.startCounter;do{if(n=i._toPattern(r),0>n)return null;if(t=i._patternToChar(n),0>t)return null;if(a.push(t),r+=8,a.length>1&&i._isStartEnd(n))break}while(ri._counters.length?i._counters.length:r,o=e.start+i._sumCounters(e.startCounter,r-8),{code:a.join(""),start:e.start,end:o,startInfo:e,decodedCodes:a}):null},r.prototype._verifyWhitespace=function(e,t){return(0>=e-1||this._counters[e-1]>=this._calculatePatternLength(e)/2)&&(t+8>=this._counters.length||this._counters[t+7]>=this._calculatePatternLength(t)/2)},r.prototype._calculatePatternLength=function(e){var t,n=0;for(t=e;e+7>t;t++)n+=this._counters[t];return n},r.prototype._thresholdResultPattern=function(e,t){var n,r,o,i,a,c=this,s={space:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}},bar:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}}},u=t;for(o=0;o=0;i--)n=2===(1&i)?s.bar:s.space,r=1===(1&a)?n.wide:n.narrow,r.size+=c._counters[u+i],r.counts++,a>>=1;u+=8}return["space","bar"].forEach(function(e){var t=s[e];t.wide.min=Math.floor((t.narrow.size/t.narrow.counts+t.wide.size/t.wide.counts)/2),t.narrow.max=Math.ceil(t.wide.min),t.wide.max=Math.ceil((t.wide.size*c.MAX_ACCEPTABLE+c.PADDING)/t.wide.counts)}),s},r.prototype._charToPattern=function(e){var t,n=this,r=e.charCodeAt(0);for(t=0;t=0;r--){if(o=0===(1&r)?u.bar:u.space,i=1===(1&c)?o.wide:o.narrow,a=s._counters[f+r],ai.max)return!1;c>>=1}f+=8}return!0},r.prototype._patternToChar=function(e){var t,n=this;for(t=0;tn;n+=2)r=this._counters[n],r>i&&(i=r),o>r&&(o=r);return(o+i)/2|0},r.prototype._toPattern=function(e){var t,n,r,o,i=7,a=e+i,c=1<this._counters.length)return-1;for(t=this._computeAlternatingThreshold(e,a),n=this._computeAlternatingThreshold(e+1,a),r=0;i>r;r++)o=0===(1&r)?t:n,this._counters[e+r]>o&&(s|=c),c>>=1;return s},r.prototype._isStartEnd=function(e){var t;for(t=0;tn;n++)r+=this._counters[n];return r},r.prototype._findStart=function(){var e,t,n,r=this,o=r._nextUnset(r._row);for(e=1;er;r++)c[r]=c[r+2];c[4]=0,c[5]=0,d--}else d++;c[d]=1,f=!f}return null},r.prototype._decode=function(){var e,t,n=this,r=n._findStart(),o=null,i=!1,a=[],c=0,s=0,u=[],f=[],d=!1,l=!0;if(null===r)return null;switch(o={code:r.code,start:r.start,end:r.end,correction:{bar:r.correction.bar,space:r.correction.space}},f.push(o),s=o.code,o.code){case n.START_CODE_A:e=n.CODE_A;break;case n.START_CODE_B:e=n.CODE_B;break;case n.START_CODE_C:e=n.CODE_C;break;default:return null}for(;!i;){if(t=d,d=!1,o=n._decodeCode(o.end,o.correction),null!==o)switch(o.code!==n.STOP_CODE&&(l=!0),o.code!==n.STOP_CODE&&(u.push(o.code),c++,s+=c*o.code),f.push(o),e){case n.CODE_A:if(o.code<64)a.push(String.fromCharCode(32+o.code));else if(o.code<96)a.push(String.fromCharCode(o.code-64));else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_SHIFT:d=!0,e=n.CODE_B;break;case n.CODE_B:e=n.CODE_B;break;case n.CODE_C:e=n.CODE_C;break;case n.STOP_CODE:i=!0}break;case n.CODE_B:if(o.code<96)a.push(String.fromCharCode(32+o.code));else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_SHIFT:d=!0,e=n.CODE_A;break;case n.CODE_A:e=n.CODE_A;break;case n.CODE_C:e=n.CODE_C;break;case n.STOP_CODE:i=!0}break;case n.CODE_C:if(o.code<100)a.push(o.code<10?"0"+o.code:o.code);else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_A:e=n.CODE_A;break;case n.CODE_B:e=n.CODE_B;break;case n.STOP_CODE:i=!0}}else i=!0;t&&(e=e===n.CODE_A?n.CODE_B:n.CODE_A)}return null===o?null:(o.end=n._nextUnset(n._row,o.end),n._verifyTrailingWhitespace(o)?(s-=c*u[u.length-1],s%103!==u[u.length-1]?null:a.length?(l&&a.splice(a.length-1,1),{code:a.join(""),start:r.start,end:o.end,codeset:e,startInfo:r,decodedCodes:f,endInfo:o}):null):null)},i.a.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,tr;r++){if(e=o._decodeCode(e.end,o.CODE_G_START),!e)return null;t.push(e.code),n.push(e)}if(e=o._findPattern(o.MIDDLE_PATTERN,e.end,!0,!1),null===e)return null;for(n.push(e),r=0;4>r;r++){if(e=o._decodeCode(e.end,o.CODE_G_START),!e)return null;n.push(e),t.push(e.code)}return e},t.a=r},function(e,t,n){function r(e){e=a.a.bind()(o(),e),c.a.call(this,e),this.barSpaceRatio=[1,1],e.normalizeBarSpaceWidth&&(this.SINGLE_CODE_ERROR=.38,this.AVG_CODE_ERROR=.09)}function o(){var e={};return Object.keys(r.CONFIG_KEYS).forEach(function(t){e[t]=r.CONFIG_KEYS[t]["default"]}),e}var i=n(28),a=i&&i.__esModule?function(){return i["default"]}:function(){return i};Object.defineProperty(a,"a",{get:a});var c=n(5),s=1,u=3,f={MODULO:{value:10},START_PATTERN:{value:[2.5*s,2.5*s,2.5*s,2.5*s]},STOP_PATTERN:{value:[2*s,2*s,2*u]},CODE_PATTERN:{value:[[s,s,u,u,s],[u,s,s,s,u],[s,u,s,s,u],[u,u,s,s,s],[s,s,u,s,u],[u,s,u,s,s],[s,u,u,s,s],[s,s,s,u,u],[u,s,s,u,s],[s,u,s,u,s]]},SINGLE_CODE_ERROR:{value:.78,writable:!0},AVG_CODE_ERROR:{value:.38,writable:!0},MAX_CORRECTION_FACTOR:{value:5},FORMAT:{value:"i2of5"}};r.prototype=Object.create(c.a.prototype,f),r.prototype.constructor=r,r.prototype._matchPattern=function(e,t){if(this.config.normalizeBarSpaceWidth){var n,r=[0,0],o=[0,0],i=[0,0],a=this.MAX_CORRECTION_FACTOR,s=1/a;for(n=0;ni))return l.error=i,l.start=o-c,l.end=o,l;if(!r)return null;for(a=0;a=0&&n._matchRange(e,t.start,0))return t;r=t.end,t=null}},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,ta;){for(r=0;5>r;r++)s[0][r]=e[a]*this.barSpaceRatio[0],s[1][r]=e[a+1]*this.barSpaceRatio[1],a+=2;if(o=i._decodePair(s),!o)return null;for(r=0;rr;r++){if(e=o._decodeCode(e.end),!e)return null;e.code>=o.CODE_G_START&&(e.code=e.code-o.CODE_G_START,i|=1<<5-r),t.push(e.code),n.push(e)}return o._determineParity(i,t)?e:null},r.prototype._determineParity=function(e,t){var n,r;for(r=0;r=n?t.concat(e.slice(1,3)).concat([n,0,0,0,0]).concat(e.slice(3,6)):3===n?t.concat(e.slice(1,4)).concat([0,0,0,0,0]).concat(e.slice(4,6)):4===n?t.concat(e.slice(1,5)).concat([0,0,0,0,0,e[5]]):t.concat(e.slice(1,6)).concat([0,0,0,0,n]),t.push(e[e.length-1]),t},r.prototype._checksum=function(e){return o.a.prototype._checksum.call(this,this._convertToUPCA(e))},r.prototype._findEnd=function(e,t){return t=!0,o.a.prototype._findEnd.call(this,e,t)},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,t0&&c(d)&&(n||a(d)||i(d))?t>1?r(d,t-1,n,s):o(s,d):n||(s[s.length]=d)}return s}var o=n(89),i=n(24),a=n(4),c=n(26);e.e=r},function(e,t,n){var r=n(114),o=r();e.e=o},function(e,t,n){function r(e,t){return e&&o(e,t,i)}var o=n(94),i=n(45);e.e=r},function(e,t,n){function r(e,t){return i.call(e,t)||"object"==typeof e&&t in e&&null===a(e)}var o=Object.prototype,i=o.hasOwnProperty,a=Object.getPrototypeOf;e.e=r},function(e,t,n){function r(e){return o(Object(e))}var o=Object.keys;e.e=r},function(e,t,n){function r(e){e=null==e?e:Object(e);var t=[];for(var n in e)t.push(n);return t}var o=n(81),i=n(125),a=Object.prototype,c=o?o.enumerate:void 0,s=a.propertyIsEnumerable;c&&!s.call({valueOf:1},"valueOf")&&(r=function(e){return i(c(e))}),e.e=r},function(e,t,n){function r(e,t,n,l,p){if(e!==t){var h=s(t)||f(t)?void 0:d(t);i(h||t,function(i,s){if(h&&(s=i,i=t[s]),u(i))p||(p=new o),c(e,t,s,n,r,l,p);else{var f=l?l(e[s],i,s+"",e,t,p):void 0;void 0===f&&(f=i),a(e,s,f)}})}}var o=n(32),i=n(33),a=n(34),c=n(100),s=n(4),u=n(2),f=n(44),d=n(46);e.e=r},function(e,t,n){function r(e,t,n,r,v,g,m){var y=e[n],b=t[n],_=m.get(b);if(_)return void o(e,n,_);var w=g?g(y,b,n+"",e,t,m):void 0,C=void 0===w;C&&(w=b,s(b)||p(b)?s(y)?w=y:u(y)?w=a(y):(C=!1,w=i(b,!g)):l(b)||c(b)?c(y)?w=h(y):!d(y)||r&&f(y)?(C=!1,w=i(b,!g)):w=y:C=!1),m.set(b,w),C&&v(w,b,r,g,m),m["delete"](b),o(e,n,w)}var o=n(34),i=n(91),a=n(41),c=n(24),s=n(4),u=n(26),f=n(16),d=n(2),l=n(141),p=n(44),h=n(146);e.e=r},function(e,t,n){function r(e,t){return e=Object(e),o(t,function(t,n){return n in e&&(t[n]=e[n]),t},{})}var o=n(19);e.e=r},function(e,t,n){function r(e){return function(t){return null==t?void 0:t[e]}}e.e=r},function(e,t,n){function r(e,t){for(var n=-1,r=Array(e);++n1?n[i-1]:void 0,c=i>2?n[2]:void 0;for(a="function"==typeof a?(i--,a):void 0,c&&o(n[0],n[1],c)&&(a=3>i?void 0:a,i=1),t=Object(t);++re?-1:1;return t*a}var n=e%1;return e===e?n?e-n:e:0}var o=n(145),i=1/0,a=1.7976931348623157e308;e.e=r},function(e,t,n){function r(e){if(i(e)){var t=o(e.valueOf)?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(c,"");var n=u.test(e);return n||f.test(e)?d(e.slice(2),n?2:8):s.test(e)?a:+e}var o=n(16),i=n(2),a=NaN,c=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,f=/^0o[0-7]+$/i,d=parseInt;e.e=r},function(e,t,n){function r(e){return o(e,i(e))}var o=n(20),i=n(46);e.e=r},function(e,t,n){"use strict";!function(){var t=n(0).log,r=n(0).browserDetails;e.e.browserDetails=r,e.e.extractVersion=n(0).extractVersion,e.e.disableLog=n(0).disableLog;var o=n(148)||null,i=n(151)||null,a=n(152)||null;switch(r.browser){case"chrome":if(!o||!o.shimPeerConnection)return void t("Chrome shim is not included in this adapter release.");t("adapter.js shimming chrome!"),e.e.browserShim=o,o.shimGetUserMedia(),o.shimSourceObject(),o.shimPeerConnection(),o.shimOnTrack();break;case"edge":if(!i||!i.shimPeerConnection)return void t("MS edge shim is not included in this adapter release.");t("adapter.js shimming edge!"),e.e.browserShim=i,i.shimPeerConnection();break;case"firefox":if(!a||!a.shimPeerConnection)return void t("Firefox shim is not included in this adapter release.");t("adapter.js shimming firefox!"),e.e.browserShim=a,a.shimGetUserMedia(),a.shimSourceObject(),a.shimPeerConnection(),a.shimOnTrack();break;default:t("Unsupported browser!")}}()},function(e,t,n){"use strict";var r=n(0).log,o=n(0).browserDetails,i={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){var t=this;this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.addEventListener("addtrack",function(n){var r=new Event("track");r.track=n.track,r.receiver={track:n.track},r.streams=[e.stream],t.dispatchEvent(r)}),e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(e){var t=this;return this._srcObject=e,this.src&&URL.revokeObjectURL(this.src),e?(this.src=URL.createObjectURL(e),e.addEventListener("addtrack",function(){t.src&&URL.revokeObjectURL(t.src),t.src=URL.createObjectURL(e)}),void e.addEventListener("removetrack",function(){t.src&&URL.revokeObjectURL(t.src),t.src=URL.createObjectURL(e)})):void(this.src="")}}))},shimPeerConnection:function(){window.RTCPeerConnection=function(e,t){r("PeerConnection"),e&&e.iceTransportPolicy&&(e.iceTransports=e.iceTransportPolicy);var n=new webkitRTCPeerConnection(e,t),o=n.getStats.bind(n);return n.getStats=function(e,t,n){var r=this,i=arguments;if(arguments.length>0&&"function"==typeof e)return o(e,t);var a=function(e){var t={},n=e.result();return n.forEach(function(e){var n={id:e.id,timestamp:e.timestamp,type:e.type};e.names().forEach(function(t){n[t]=e.stat(t)}),t[n.id]=n}),t};if(arguments.length>=2){var c=function(e){i[1](a(e))};return o.apply(this,[c,arguments[0]])}return new Promise(function(t,n){1===i.length&&null===e?o.apply(r,[function(e){t.apply(null,[a(e)])},n]):o.apply(r,[t,n])})},n},window.RTCPeerConnection.prototype=webkitRTCPeerConnection.prototype,webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(window.RTCPeerConnection,"generateCertificate",{get:function(){return arguments.length?webkitRTCPeerConnection.generateCertificate.apply(null,arguments):webkitRTCPeerConnection.generateCertificate}}),["createOffer","createAnswer"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){var e=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var n=1===arguments.length?arguments[0]:void 0;return new Promise(function(r,o){t.apply(e,[r,o,n])})}return t.apply(this,arguments)}}),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){var e=arguments,n=this;return new Promise(function(r,o){t.apply(n,[e[0],function(){r(),e.length>=2&&e[1].apply(null,[])},function(t){o(t),e.length>=3&&e[2].apply(null,[t]); -}])})}})},attachMediaStream:function(e,t){r("DEPRECATED, attachMediaStream will soon be removed."),o.version>=43?e.srcObject=t:"undefined"!=typeof e.src?e.src=URL.createObjectURL(t):r("Error attaching stream to element.")},reattachMediaStream:function(e,t){r("DEPRECATED, reattachMediaStream will soon be removed."),o.version>=43?e.srcObject=t.srcObject:e.src=t.src}};e.e={shimOnTrack:i.shimOnTrack,shimSourceObject:i.shimSourceObject,shimPeerConnection:i.shimPeerConnection,shimGetUserMedia:n(149),attachMediaStream:i.attachMediaStream,reattachMediaStream:i.reattachMediaStream}},function(e,t,n){"use strict";var r=n(0).log;e.e=function(){var e=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach(function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var o=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];var i={};"number"==typeof r.ideal?(i[o("min",n)]=r.ideal,t.optional.push(i),i={},i[o("max",n)]=r.ideal,t.optional.push(i)):(i[o("",n)]=r.ideal,t.optional.push(i))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[o("",n)]=r.exact):["min","max"].forEach(function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[o(e,n)]=r[e])})}}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},t=function(t,n,o){return t.audio&&(t.audio=e(t.audio)),t.video&&(t.video=e(t.video)),r("chrome: "+JSON.stringify(t)),navigator.webkitGetUserMedia(t,n,o)};navigator.getUserMedia=t;var n=function(e){return new Promise(function(t,n){navigator.getUserMedia(e,t,n)})};if(navigator.mediaDevices||(navigator.mediaDevices={getUserMedia:n,enumerateDevices:function(){return new Promise(function(e){var t={audio:"audioinput",video:"videoinput"};return MediaStreamTrack.getSources(function(n){e(n.map(function(e){return{label:e.label,kind:t[e.kind],deviceId:e.id,groupId:""}}))})})}}),navigator.mediaDevices.getUserMedia){var o=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(t){return t&&(r("spec: "+JSON.stringify(t)),t.audio=e(t.audio),t.video=e(t.video),r("chrome: "+JSON.stringify(t))),o(t)}.bind(this)}else navigator.mediaDevices.getUserMedia=function(e){return n(e)};"undefined"==typeof navigator.mediaDevices.addEventListener&&(navigator.mediaDevices.addEventListener=function(){r("Dummy mediaDevices.addEventListener called.")}),"undefined"==typeof navigator.mediaDevices.removeEventListener&&(navigator.mediaDevices.removeEventListener=function(){r("Dummy mediaDevices.removeEventListener called.")})}},function(e,t,n){"use strict";var r={};r.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},r.localCName=r.generateIdentifier(),r.splitLines=function(e){return e.trim().split("\n").map(function(e){return e.trim()})},r.splitSections=function(e){var t=e.split("\r\nm=");return t.map(function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"})},r.matchPrefix=function(e,t){return r.splitLines(e).filter(function(e){return 0===e.indexOf(t)})},r.parseCandidate=function(e){var t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");for(var n={foundation:t[0],component:t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],port:parseInt(t[5],10),type:t[7]},r=8;r-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},r.getDtlsParameters=function(e,t){var n=r.splitLines(e);n=n.concat(r.splitLines(t));var o=n.filter(function(e){return 0===e.indexOf("a=fingerprint:")})[0].substr(14),i={role:"auto",fingerprints:[{algorithm:o.split(" ")[0],value:o.split(" ")[1]}]};return i},r.writeDtlsParameters=function(e,t){var n="a=setup:"+t+"\r\n";return e.fingerprints.forEach(function(e){n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"}),n},r.getIceParameters=function(e,t){var n=r.splitLines(e);n=n.concat(r.splitLines(t));var o={usernameFragment:n.filter(function(e){return 0===e.indexOf("a=ice-ufrag:")})[0].substr(12),password:n.filter(function(e){return 0===e.indexOf("a=ice-pwd:")})[0].substr(10)};return o},r.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},r.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=r.splitLines(e),o=n[0].split(" "),i=3;i0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=t.codecs.map(function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType}).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach(function(e){n+=r.writeRtpMap(e),n+=r.writeFtmp(e),n+=r.writeRtcpFb(e)}),n+="a=rtcp-mux\r\n"},r.writeSessionBoilerplate=function(){return"v=0\r\no=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},r.writeMediaSection=function(e,t,n,o){var i=r.writeRtpDescription(e.kind,t);if(i+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),i+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),i+="a=mid:"+e.mid+"\r\n",i+=e.rtpSender&&e.rtpReceiver?"a=sendrecv\r\n":e.rtpSender?"a=sendonly\r\n":e.rtpReceiver?"a=recvonly\r\n":"a=inactive\r\n",e.rtpSender){var a="msid:"+o.id+" "+e.rtpSender.track.id+"\r\n";i+="a="+a,i+="a=ssrc:"+e.sendSsrc+" "+a}return i+="a=ssrc:"+e.sendSsrc+" cname:"+r.localCName+"\r\n"},r.getDirection=function(e,t){for(var n=r.splitLines(e),o=0;o-1&&(this.localStreams.splice(t,1),this._maybeFireNegotiationNeeded())},window.RTCPeerConnection.prototype._getCommonCapabilities=function(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]};return e.codecs.forEach(function(e){for(var r=0;r0,!1)}})}switch(this.localDescription={type:e.type,sdp:e.sdp},e.type){case"offer":this._updateSignalingState("have-local-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+e.type+'"')}var i=arguments.length>1&&"function"==typeof arguments[1];if(i){var a=arguments[1];window.setTimeout(function(){a(),"new"===t.iceGatheringState&&(t.iceGatheringState="gathering"),t._emitBufferedCandidates()},0)}var c=Promise.resolve();return c.then(function(){i||("new"===t.iceGatheringState&&(t.iceGatheringState="gathering"),window.setTimeout(t._emitBufferedCandidates.bind(t),500))}),c},window.RTCPeerConnection.prototype.setRemoteDescription=function(e){var t=this,n=new MediaStream,o=[],i=r.splitSections(e.sdp),a=i.shift();switch(i.forEach(function(i,c){var s,u,f,d,l,p,h,v,g,m,y,b,_=r.splitLines(i),w=_[0].substr(2).split(" "),C=w[0],E="0"===w[1],T=r.getDirection(i,a),R=r.parseRtpParameters(i);E||(y=r.getIceParameters(i,a),b=r.getDtlsParameters(i,a));var S,O=r.matchPrefix(i,"a=mid:")[0].substr(6),x=r.matchPrefix(i,"a=ssrc:").map(function(e){return r.parseSsrcMedia(e)}).filter(function(e){return"cname"===e.attribute})[0];if(x&&(v=parseInt(x.ssrc,10),S=x.value),"offer"===e.type){var D=t._createIceAndDtlsTransports(O,c);if(g=RTCRtpReceiver.getCapabilities(C),h=1001*(2*c+2),p=new RTCRtpReceiver(D.dtlsTransport,C),m=p.track,o.push([m,p]),n.addTrack(m),t.localStreams.length>0&&t.localStreams[0].getTracks().length>=c){var P=t.localStreams[0].getTracks()[c];l=new RTCRtpSender(P,D.dtlsTransport)}t.transceivers[c]={iceGatherer:D.iceGatherer,iceTransport:D.iceTransport,dtlsTransport:D.dtlsTransport,localCapabilities:g,remoteCapabilities:R,rtpSender:l,rtpReceiver:p,kind:C,mid:O,cname:S,sendSsrc:h,recvSsrc:v},t._transceive(t.transceivers[c],!1,"sendrecv"===T||"sendonly"===T)}else"answer"!==e.type||E||(s=t.transceivers[c],u=s.iceGatherer,f=s.iceTransport,d=s.dtlsTransport,l=s.rtpSender,p=s.rtpReceiver,h=s.sendSsrc,g=s.localCapabilities,t.transceivers[c].recvSsrc=v,t.transceivers[c].remoteCapabilities=R,t.transceivers[c].cname=S,f.start(u,y,"controlling"),d.start(b),t._transceive(s,"sendrecv"===T||"recvonly"===T,"sendrecv"===T||"sendonly"===T),!p||"sendrecv"!==T&&"sendonly"!==T?delete s.rtpReceiver:(m=p.track,o.push([m,p]),n.addTrack(m)))}),this.remoteDescription={type:e.type,sdp:e.sdp},e.type){case"offer":this._updateSignalingState("have-remote-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+e.type+'"')}return n.getTracks().length&&(t.remoteStreams.push(n),window.setTimeout(function(){var e=new Event("addstream");e.stream=n,t.dispatchEvent(e),null!==t.onaddstream&&window.setTimeout(function(){t.onaddstream(e)},0),o.forEach(function(e){var r=e[0],o=e[1],i=new Event("track");i.track=r,i.receiver=o,i.streams=[n],t.dispatchEvent(i),null!==t.ontrack&&window.setTimeout(function(){t.ontrack(i)},0)})},0)),arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.close=function(){this.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()}),this._updateSignalingState("closed")},window.RTCPeerConnection.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this.dispatchEvent(t),null!==this.onsignalingstatechange&&this.onsignalingstatechange(t)},window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded=function(){var e=new Event("negotiationneeded");this.dispatchEvent(e),null!==this.onnegotiationneeded&&this.onnegotiationneeded(e)},window.RTCPeerConnection.prototype._updateConnectionState=function(){var e,t=this,n={"new":0,closed:0,connecting:0,checking:0,connected:0,completed:0,failed:0};if(this.transceivers.forEach(function(e){n[e.iceTransport.state]++,n[e.dtlsTransport.state]++}),n.connected+=n.completed,e="new",n.failed>0?e="failed":n.connecting>0||n.checking>0?e="connecting":n.disconnected>0?e="disconnected":n["new"]>0?e="new":(n.connecting>0||n.completed>0)&&(e="connected"),e!==t.iceConnectionState){t.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this.dispatchEvent(r),null!==this.oniceconnectionstatechange&&this.oniceconnectionstatechange(r)}},window.RTCPeerConnection.prototype.createOffer=function(){var e=this;if(this._pendingOffer)throw new Error("createOffer called while there is a pending offer.");var t;1===arguments.length&&"function"!=typeof arguments[0]?t=arguments[0]:3===arguments.length&&(t=arguments[2]);var n=[],o=0,i=0;if(this.localStreams.length&&(o=this.localStreams[0].getAudioTracks().length,i=this.localStreams[0].getVideoTracks().length),t){if(t.mandatory||t.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==t.offerToReceiveAudio&&(o=t.offerToReceiveAudio),void 0!==t.offerToReceiveVideo&&(i=t.offerToReceiveVideo)}for(this.localStreams.length&&this.localStreams[0].getTracks().forEach(function(e){n.push({kind:e.kind,track:e,wantReceive:"audio"===e.kind?o>0:i>0}),"audio"===e.kind?o--:"video"===e.kind&&i--});o>0||i>0;)o>0&&(n.push({kind:"audio",wantReceive:!0}),o--),i>0&&(n.push({kind:"video",wantReceive:!0}),i--);var a=r.writeSessionBoilerplate(),c=[];n.forEach(function(t,n){var o,i,s=t.track,u=t.kind,f=r.generateIdentifier(),d=e._createIceAndDtlsTransports(f,n),l=RTCRtpSender.getCapabilities(u),p=1001*(2*n+1);s&&(o=new RTCRtpSender(s,d.dtlsTransport)),t.wantReceive&&(i=new RTCRtpReceiver(d.dtlsTransport,u)),c[n]={iceGatherer:d.iceGatherer,iceTransport:d.iceTransport,dtlsTransport:d.dtlsTransport,localCapabilities:l,remoteCapabilities:null,rtpSender:o,rtpReceiver:i,kind:u,mid:f,sendSsrc:p,recvSsrc:null};var h=c[n];a+=r.writeMediaSection(h,h.localCapabilities,"offer",e.localStreams[0])}),this._pendingOffer=c;var s=new RTCSessionDescription({type:"offer",sdp:a});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,s),Promise.resolve(s)},window.RTCPeerConnection.prototype.createAnswer=function(){var e,t=this;1===arguments.length&&"function"!=typeof arguments[0]?e=arguments[0]:3===arguments.length&&(e=arguments[2]);var n=r.writeSessionBoilerplate();this.transceivers.forEach(function(e){var o=t._getCommonCapabilities(e.localCapabilities,e.remoteCapabilities);n+=r.writeMediaSection(e,o,"answer",t.localStreams[0])});var o=new RTCSessionDescription({type:"answer",sdp:n});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,o),Promise.resolve(o)},window.RTCPeerConnection.prototype.addIceCandidate=function(e){var t=e.sdpMLineIndex;if(e.sdpMid)for(var n=0;n0?r.parseCandidate(e.candidate):{};if("tcp"===i.protocol&&0===i.port)return;if("1"!==i.component)return;"endOfCandidates"===i.type&&(i={}),o.iceTransport.addRemoteCandidate(i);var a=r.splitSections(this.remoteDescription.sdp);a[t+1]+=(i.type?e.candidate.trim():"a=end-of-candidates")+"\r\n",this.remoteDescription.sdp=a.join("")}return arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.getStats=function(){var e=[];this.transceivers.forEach(function(t){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(n){t[n]&&e.push(t[n].getStats())})});var t=arguments.length>1&&"function"==typeof arguments[1]&&arguments[1];return new Promise(function(n){var r={};Promise.all(e).then(function(e){e.forEach(function(e){Object.keys(e).forEach(function(t){r[t]=e[t]})}),t&&window.setTimeout(t,0,r),n(r)})})}},attachMediaStream:function(e,t){o("DEPRECATED, attachMediaStream will soon be removed."),e.srcObject=t},reattachMediaStream:function(e,t){o("DEPRECATED, reattachMediaStream will soon be removed."),e.srcObject=t.srcObject}});e.e={shimPeerConnection:i.shimPeerConnection,attachMediaStream:i.attachMediaStream,reattachMediaStream:i.reattachMediaStream}},function(e,t,n){"use strict";var r=n(0).log,o=n(0).browserDetails,i={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}}))},shimPeerConnection:function(){window.RTCPeerConnection||(window.RTCPeerConnection=function(e,t){if(o.version<38&&e&&e.iceServers){for(var n=[],r=0;r=n&&parseInt(r[n],10)},detectBrowser:function(){var e={};if(e.browser=null,e.version=null,e.minVersion=null,"undefined"==typeof window||!window.navigator)return e.browser="Not a browser.",e;if(navigator.mozGetUserMedia)e.browser="firefox",e.version=this.extractVersion(navigator.userAgent,/Firefox\/([0-9]+)\./,1),e.minVersion=31;else if(navigator.webkitGetUserMedia&&window.webkitRTCPeerConnection)e.browser="chrome",e.version=this.extractVersion(navigator.userAgent,/Chrom(e|ium)\/([0-9]+)\./,2),e.minVersion=38;else{if(!navigator.mediaDevices||!navigator.userAgent.match(/Edge\/(\d+).(\d+)$/))return e.browser="Not a supported browser.",e;e.browser="edge",e.version=this.extractVersion(navigator.userAgent,/Edge\/(\d+).(\d+)$/,2),e.minVersion=10547}return e.versionr;r++)o=a._matchPattern(i,a.CODE_PATTERN[r]),oa.AVG_CODE_ERROR?null:d}u++,i[u]=1,s=!s}return null},r.prototype._findPattern=function(e,t,n,r,o){var i,a,c,s,u=[],d=this,f=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(t||(t=d._nextSet(d._row)),void 0===n&&(n=!1),void 0===r&&(r=!0),void 0===o&&(o=d.AVG_CODE_ERROR),i=0;ia)return l.error=a,l.start=i-s,l.end=i,l;if(!r)return null;for(c=0;c=0&&n._matchRange(e,t.start,0))return t;r=t.end,t=null}},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start),tr;r++){if(e=i._decodeCode(e.end),!e)return null;e.code>=i.CODE_G_START?(e.code=e.code-i.CODE_G_START,a|=1<<5-r):a|=0<<5-r,t.push(e.code),n.push(e)}if(o=i._calculateFirstDigit(a),null===o)return null;if(t.unshift(o),e=i._findPattern(i.MIDDLE_PATTERN,e.end,!0,!1),null===e)return null;for(n.push(e),r=0;6>r;r++){if(e=i._decodeCode(e.end,i.CODE_G_START),!e)return null;n.push(e),t.push(e.code)}return e},r.prototype._decode=function(){var e,t,n=this,r=[],o=[],i={};if(e=n._findStart(),!e)return null;if(t={code:e.code,start:e.start,end:e.end},o.push(t),t=n._decodePayload(t,r,o),!t)return null;if(t=n._findEnd(t.end,!1),!t)return null;if(o.push(t),!n._checksum(r))return null;if(this.supplements.length>0){var a=this._decodeExtensions(t.end);if(!a)return null;var c=a.decodedCodes[a.decodedCodes.length-1],u={start:c.start+((c.end-c.start)/2|0),end:c.end};if(!n._verifyTrailingWhitespace(u))return null;i={supplement:a,code:r.join("")+a.code}}return s({code:r.join(""),start:e.start,end:t.end,codeset:"",startInfo:e,decodedCodes:o},i)},r.prototype._decodeExtensions=function(e){var t,n,r=this._nextSet(this._row,e),o=this._findPattern(this.EXTENSION_START_PATTERN,r,!1,!1);if(null===o)return null;for(t=0;t=0;t-=2)n+=e[t];for(n*=3,t=e.length-1;t>=0;t-=2)n+=e[t];return n%10===0},r.CONFIG_KEYS={supplements:{type:"arrayOf(string)","default":[],description:"Allowed extensions to be decoded (2 and/or 5)"}},t.a=r},function(e,t,n){var r=n(12),o=n(1),i=r(o,"Map");e.e=i},function(e,t,n){var r=Array.isArray;e.e=r},function(e,t,n){function r(e,t){return this._row=[],this.config=e||{},this.supplements=t,this}r.prototype._nextUnset=function(e,t){var n;for(void 0===t&&(t=0),n=t;nu)return Number.MAX_VALUE;for(o=u/d,n*=o,r=0;rn)return Number.MAX_VALUE;c+=s}return c/d},r.prototype._nextSet=function(e,t){var n;for(t=t||0,n=t;n1&&(e[n[r]]=o)},r.prototype._matchTrace=function(e,t){var n,r,o=[],i=this,a=i._nextSet(i._row),c=!i._row[a],s=0,u={error:Number.MAX_VALUE,code:-1,start:0};if(e){for(n=0;nr?(u.start=n-a,u.end=n,u.counter=o,u):null;s++,o[s]=1,c=!c}}else for(o.push(0),n=a;ne?0:e,r=e;t>r;r++)if(this._row[r]!==n)return!1;return!0},r.prototype._fillCounters=function(e,t,n){var r,o=this,i=0,a=[];for(n="undefined"!=typeof n?n:!0,e="undefined"!=typeof e?e:o._nextUnset(o._row),t=t||o._row.length,a[i]=0,r=e;t>r;r++)o._row[r]^n?a[i]++:(i++,a[i]=1,n=!n);return a},Object.defineProperty(r.prototype,"FORMAT",{value:"unknown",writeable:!1}),r.DIRECTION={FORWARD:1,REVERSE:-1},r.Exception={StartNotFoundException:"Start-Info was not found!",CodeNotFoundException:"Code could not be found!",PatternNotFoundException:"Pattern could not be found!"},r.CONFIG_KEYS={},t.a=r},function(e,t,n){function r(e){var t=new Float32Array(2);return t[0]=e[0],t[1]=e[1],t}e.e=r},function(e,t,n){function r(e){return!!e&&"object"==typeof e}e.e=r},function(e,t,n){t.a={init:function(e,t){for(var n=e.length;n--;)e[n]=t},shuffle:function(e){var t,n,r=e.length-1;for(r;r>=0;r--)t=Math.floor(Math.random()*r),n=e[r],e[r]=e[t],e[t]=n;return e},toPointList:function(e){var t,n,r=[],o=[];for(t=0;t=t&&o.push(e[r]);return o},maxIndex:function(e){var t,n=0;for(t=0;te[n]&&(n=t);return n},max:function r(e){var t,r=0;for(t=0;tr&&(r=e[t]);return r},sum:function o(e){for(var t=e.length,o=0;t--;)o+=e[t];return o}}},function(e,t,n){t.a={drawRect:function(e,t,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=1,n.beginPath(),n.strokeRect(e.x,e.y,t.x,t.y)},drawPath:function(e,t,n,r){n.strokeStyle=r.color,n.fillStyle=r.color,n.lineWidth=r.lineWidth,n.beginPath(),n.moveTo(e[0][t.x],e[0][t.y]);for(var o=1;o0?Math.floor(this.x+.5):Math.floor(this.x-.5),this.y=this.y>0?Math.floor(this.y+.5):Math.floor(this.y-.5),this}};return n}function o(e,t,n){n||(n=e);for(var r=e.data,o=r.length,i=n.data;o--;)i[o]=r[o]>o]++;return a}function a(e,t){function n(e,t){var n,r=0;for(n=e;t>=n;n++)r+=a[n];return r}function r(e,t){var n,r=0;for(n=e;t>=n;n++)r+=n*a[n];return r}function o(){var o,c,s,u,d,f,l,p=[0],h=(1<u;u++)o=n(0,u),c=n(u+1,h),s=o*c,0===s&&(s=1),d=r(0,u)*c,f=r(u+1,h)*o,l=d-f,p[u]=l*l/s;return _.a.maxIndex(p)}t||(t=8);var a,c,s=8-t;return c=o(),c<r;r++)u[r]={score:0,item:null};for(r=0;rs)for(i=u[c],i.score=o,i.item=e[r],s=Number.MAX_VALUE,a=0;t>a;a++)u[a].scorei;){for(r=0;c>r;r++)n[s]=Math.floor((.299*e[4*o+0]+.587*e[4*o+1]+.114*e[4*o+2]+(.299*e[4*(o+1)+0]+.587*e[4*(o+1)+1]+.114*e[4*(o+1)+2])+(.299*e[4*i+0]+.587*e[4*i+1]+.114*e[4*i+2])+(.299*e[4*(i+1)+0]+.587*e[4*(i+1)+1]+.114*e[4*(i+1)+2]))/4),s++,o+=2,i+=2;o+=u,i+=u}}function f(e,t,n){var r,o=e.length/4|0,i=n&&n.singleChannel===!0;if(i)for(r=0;o>r;r++)t[r]=e[4*r+0];else for(r=0;o>r;r++)t[r]=Math.floor(.299*e[4*r+0]+.587*e[4*r+1]+.114*e[4*r+2])}function l(e,t){for(var n=e.data,r=e.size.x,o=t.data,i=0,a=r,c=n.length,s=r/2,u=0;c>a;){for(var d=0;s>d;d++)o[u]=Math.floor((n[i]+n[i+1]+n[a]+n[a+1])/4),u++,i+=2,a+=2;i+=r,a+=r}}function p(e,t){var n=e[0],r=e[1],o=e[2],i=o*r,a=i*(1-Math.abs(n/60%2-1)),c=o-i,s=0,u=0,d=0;return t=t||[0,0,0],60>n?(s=i,u=a):120>n?(s=a,u=i):180>n?(u=i,d=a):240>n?(u=a,d=i):300>n?(s=a,d=i):360>n&&(s=i,d=a),t[0]=255*(s+c)|0,t[1]=255*(u+c)|0,t[2]=255*(d+c)|0,t}function h(e){var t,n=[],r=[];for(t=1;tt[r]?r++:n++;return o}function g(e,t){function n(e){for(var t=0,n=e[Math.floor(e.length/2)];t0&&(n=Math.abs(e[t]-l)>Math.abs(e[t-1]-l)?e[t-1]:e[t]),l/ns[d-1]/s[d]?{x:n,y:n}:null}var r,o=h(t.x),i=h(t.y),a=Math.max(t.x,t.y),c=v(o,i),s=[8,10,15,20,32,60,80],u={"x-small":5,small:4,medium:3,large:2,"x-large":1},d=u[e]||u.medium,f=s[d],l=Math.floor(a/f);return r=n(c),r||(r=n(h(a)),r||(r=n(h(l*f)))),r}function m(e){var t={value:parseFloat(e),unit:(e.indexOf("%")===e.length-1,"%")};return t}function y(e,t,n){var r={width:e,height:t},o=Object.keys(n).reduce(function(e,t){var o=n[t],i=m(o),a=E[t](i,r);return e[t]=a,e},{});return{sx:o.left,sy:o.top,sw:o.right-o.left,sh:o.bottom-o.top}}var b=n(51),_=n(9);t.f=r,t.c=c,t.d=s,t.e=u,t.i=d,t.j=f,t.g=l,t.a=p,t.b=g,t.h=y;var w={clone:n(7)},C={clone:n(80)},E={top:function(e,t){return"%"===e.unit?Math.floor(t.height*(e.value/100)):void 0},right:function(e,t){return"%"===e.unit?Math.floor(t.width-t.width*(e.value/100)):void 0},bottom:function(e,t){return"%"===e.unit?Math.floor(t.height-t.height*(e.value/100)):void 0},left:function(e,t){return"%"===e.unit?Math.floor(t.width*(e.value/100)):void 0}}},function(e,t,n){function r(e,t,n,r){t?this.data=t:n?(this.data=new n(e.x*e.y),n===Array&&r&&a.a.init(this.data,0)):(this.data=new Uint8Array(e.x*e.y),Uint8Array===Array&&r&&a.a.init(this.data,0)),this.size=e}var o=n(53),i=n(18),a=n(9),c={clone:n(7)};r.prototype.inImageWithBorder=function(e,t){return e.x>=t&&e.y>=t&&e.xn;n++)for(r=0;o>r;r++)e.data[r*i+n]=this.data[(t.y+r)*this.size.x+t.x+n]},r.prototype.copyTo=function(e){for(var t=this.data.length,n=this.data,r=e.data;t--;)r[t]=n[t]},r.prototype.get=function(e,t){return this.data[t*this.size.x+e]},r.prototype.getSafe=function(e,t){var n;if(!this.indexMapping){for(this.indexMapping={x:[],y:[]},n=0;ne;e++)r[e]=r[(n-1)*t+e]=0;for(e=1;n-1>e;e++)r[e*t]=r[e*t+(t-1)]=0},r.prototype.invert=function(){for(var e=this.data,t=e.length;t--;)e[t]=e[t]?0:1},r.prototype.convolve=function(e){var t,n,r,o,i=e.length/2|0,a=0;for(n=0;n=o;o++)for(r=-i;i>=r;r++)a+=e[o+i][r+i]*this.getSafe(t+r,n+o);this.data[n*this.size.x+t]=a}},r.prototype.moments=function(e){var t,n,r,o,i,a,s,u,d,f,l,p,h=this.data,v=this.size.y,g=this.size.x,m=[],y=[],b=Math.PI,_=b/4;if(0>=e)return y;for(i=0;e>i;i++)m[i]={m00:0,m01:0,m10:0,m11:0,m02:0,m20:0,theta:0,rad:0};for(n=0;v>n;n++)for(o=n*n,t=0;g>t;t++)r=h[n*g+t],r>0&&(a=m[r-1],a.m00+=1,a.m01+=n,a.m10+=t,a.m11+=t*n,a.m02+=o,a.m20+=t*t);for(i=0;e>i;i++)a=m[i],isNaN(a.m00)||0===a.m00||(f=a.m10/a.m00,l=a.m01/a.m00,s=a.m11/a.m00-f*l,u=a.m02/a.m00-l*l,d=a.m20/a.m00-f*f,p=(u-d)/(2*s),p=.5*Math.atan(p)+(s>=0?_:-_)+b,a.theta=(180*p/b+90)%180-90,a.theta<0&&(a.theta+=180),a.rad=p>b?p-b:p,a.vec=c.clone([Math.cos(p),Math.sin(p)]),y.push(a));return y},r.prototype.show=function(e,t){var n,r,o,i,a,c,s;for(t||(t=1),n=e.getContext("2d"),e.width=this.size.x,e.height=this.size.y,r=n.getImageData(0,0,e.width,e.height),o=r.data,i=0,s=0;st||t>360)&&(t=360);for(var r=[0,1,1],o=[0,0,0],a=[255,255,255],c=[0,0,0],s=[],u=e.getContext("2d"),d=u.getImageData(n.x,n.y,this.size.x,this.size.y),f=d.data,l=this.data.length;l--;)r[0]=this.data[l]*t,s=r[0]<=0?a:r[0]>=360?c:i.a.bind()(r,o),f[4*l+0]=s[0],f[4*l+1]=s[1],f[4*l+2]=s[2],f[4*l+3]=255;u.putImageData(d,n.x,n.y)},t.a=r},function(e,t,n){function r(e,t,n,r){var o=-1,i=e.length;for(r&&i&&(n=e[++o]);++o-1&&e%1==0&&t>e}var o=9007199254740991,i=/^(?:0|[1-9]\d*)$/;e.e=r},function(e,t,n){function r(e){var t=e&&e.constructor,n="function"==typeof t&&t.prototype||o;return e===n}var o=Object.prototype;e.e=r},function(e,t,n){function r(e){return o(e)&&c.call(e,"callee")&&(!u.call(e,"callee")||s.call(e)==i)}var o=n(27),i="[object Arguments]",a=Object.prototype,c=a.hasOwnProperty,s=a.toString,u=a.propertyIsEnumerable;e.e=r},function(e,t,n){function r(e){return null!=e&&a(o(e))&&!i(e)}var o=n(117),i=n(16),a=n(28);e.e=r},function(e,t,n){function r(e){return i(e)&&o(e)}var o=n(26),i=n(8);e.e=r},function(e,t,n){function r(e){return"number"==typeof e&&e>-1&&e%1==0&&o>=e}var o=9007199254740991;e.e=r},function(e,t,n){var r={searchDirections:[[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1],[-1,0],[-1,1]],create:function(e,t){function n(e,t,n,r){var o,d,f;for(o=0;7>o;o++){if(d=e.cy+s[e.dir][0],f=e.cx+s[e.dir][1],i=d*u+f,a[i]===t&&(0===c[i]||c[i]===n))return c[i]=n,e.cy=d,e.cx=f,!0;0===c[i]&&(c[i]=r),e.dir=(e.dir+1)%8}return!1}function r(e,t,n){return{dir:n,x:e,y:t,next:null,prev:null}}function o(e,t,o,i,a){var c,s,u,d=null,f={cx:t,cy:e,dir:0};if(n(f,i,o,a)){d=r(t,e,f.dir),c=d,u=f.dir,s=r(f.cx,f.cy,0),s.prev=c,c.next=s,s.next=null,c=s;do f.dir=(f.dir+6)%8,n(f,i,o,a),u!==f.dir?(c.dir=f.dir,s=r(f.cx,f.cy,0),s.prev=c,c.next=s,s.next=null,c=s):(c.dir=u,c.x=f.cx,c.y=f.cy),u=f.dir;while(f.cx!==t||f.cy!==e);d.prev=c.prev,c.prev.next=d}return d}var i,a=e.data,c=t.data,s=this.searchDirections,u=e.size.x;return{trace:function(e,t,r,o){return n(e,t,r,o)},contourTracing:function(e,t,n,r,i){return o(e,t,n,r,i)}}}};t.a=r},function(e,t,n){function r(){o.a.call(this)}var o=n(6),i=n(9),a={ALPHABETH_STRING:{value:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,45,46,32,42,36,47,43,37]},CHARACTER_ENCODINGS:{value:[52,289,97,352,49,304,112,37,292,100,265,73,328,25,280,88,13,268,76,28,259,67,322,19,274,82,7,262,70,22,385,193,448,145,400,208,133,388,196,148,168,162,138,42]},ASTERISK:{value:148},FORMAT:{value:"code_39",writeable:!1}};r.prototype=Object.create(o.a.prototype,a),r.prototype.constructor=r,r.prototype._toCounters=function(e,t){var n,r=this,o=t.length,a=r._row.length,c=!r._row[e],s=0;for(i.a.init(t,0),n=e;a>n;n++)if(r._row[n]^c)t[s]++;else{if(s++,s===o)break;t[s]=1,c=!c}return t},r.prototype._decode=function(){var e,t,n,r,o=this,a=[0,0,0,0,0,0,0,0,0],c=[],s=o._findStart();if(!s)return null;r=o._nextSet(o._row,s.end);do{if(a=o._toCounters(r,a),n=o._toPattern(a),0>n)return null;if(e=o._patternToChar(n),0>e)return null;c.push(e),t=r,r+=i.a.sum(a),r=o._nextSet(o._row,r)}while("*"!==e);return c.pop(),c.length&&o._verifyTrailingWhitespace(t,r,a)?{code:c.join(""),start:s.start,end:r,startInfo:s,decodedCodes:c}:null},r.prototype._verifyTrailingWhitespace=function(e,t,n){var r,o=i.a.sum(n);return r=t-e-o,3*r>=o},r.prototype._patternToChar=function(e){var t,n=this;for(t=0;tt&&(r=e[n]);return r},r.prototype._toPattern=function(e){for(var t,n,r=e.length,o=0,i=r,a=0,c=this;i>3;){for(o=c._findNextWidth(e,o),i=0,t=0,n=0;r>n;n++)e[n]>o&&(t|=1<n&&i>0;n++)if(e[n]>o&&(i--,2*e[n]>=a))return-1;return t}}return-1},r.prototype._findStart=function(){var e,t,n,r=this,o=r._nextSet(r._row),i=o,a=[0,0,0,0,0,0,0,0,0],c=0,s=!1;for(e=o;et;t++)a[t]=a[t+2];a[7]=0,a[8]=0,c--}else c++;a[c]=1,s=!s}return null},t.a=r},function(e,t,n){function r(e,t){return e[0]*t[0]+e[1]*t[1]}e.e=r},function(e,t,n){function r(e){var t=-1,n=e?e.length:0;for(this.clear();++tn)return!1;var r=e.length-1;return n==r?e.pop():a.call(e,n,1),!0}var o=n(11),i=Array.prototype,a=i.splice;e.e=r},function(e,t,n){function r(e,t){var n=o(e,t);return 0>n?void 0:e[n][1]}var o=n(11);e.e=r},function(e,t,n){function r(e,t){return o(e,t)>-1}var o=n(11);e.e=r},function(e,t,n){function r(e,t,n){var r=o(e,t);0>r?e.push([t,n]):e[r][1]=n}var o=n(11);e.e=r},function(e,t,n){function r(e){var t=new e.constructor(e.byteLength);return new o(t).set(new o(e)),t}var o=n(86);e.e=r},function(e,t,n){function r(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n0)for(r=0;r0){if(e=J.filter(function(e){return!e.busy})[0],!e)return;j.attachData(e.imageData)}else j.attachData(k.data);j.grab()&&(e?(e.busy=!0,e.worker.postMessage({cmd:"process",imageData:e.imageData},[e.imageData.buffer])):g())}else g()}function y(){var e=null,t=1e3/(ee.frequency||60);I=!1,function n(r){e=e||r,I||(r>=e&&(e+=t,m()),window.requestAnimFrame(n))}(performance.now())}function b(){Z&&"LiveStream"===ee.inputStream.type?y():m()}function _(e){var t,n={worker:void 0,imageData:new Uint8Array(M.getWidth()*M.getHeight()),busy:!0};t=E(),n.worker=new Worker(t),n.worker.onmessage=function(r){return"initialized"===r.data.event?(URL.revokeObjectURL(t),n.busy=!1,n.imageData=new Uint8Array(r.data.imageData),e(n)):void("processed"===r.data.event?(n.imageData=new Uint8Array(r.data.imageData),n.busy=!1,v(r.data.result,n.imageData)):"error"===r.data.event)},n.worker.postMessage({cmd:"init",size:{x:M.getWidth(),y:M.getHeight()},imageData:n.imageData,config:w(ee)},[n.imageData.buffer])}function w(e){return $({},e,{inputStream:$({},e.inputStream,{target:null})})}function C(e){function t(e){self.postMessage({event:"processed",imageData:o.data,result:e},[o.data.buffer])}function n(){self.postMessage({event:"initialized",imageData:o.data},[o.data.buffer])}if(e){var r=e()["default"];if(!r)return void self.postMessage({event:"error",message:"Quagga could not be created"})}var o;self.onmessage=function(e){if("init"===e.data.cmd){var i=e.data.config;i.numOfWorkers=0,o=new r.ImageWrapper({x:e.data.size.x,y:e.data.size.y},new Uint8Array(e.data.imageData)),r.init(i,n,o),r.onProcessed(t)}else"process"===e.data.cmd?(o.data=new Uint8Array(e.data.imageData),r.start()):"setReaders"===e.data.cmd&&r.setReaders(e.data.readers)}}function E(){var t,n;return"undefined"!=typeof e&&(n=e),t=new Blob(["("+C.toString()+")("+n+");"],{type:"text/javascript"}),window.URL.createObjectURL(t)}function T(e){L?L.setReaders(e):Z&&J.length>0&&J.forEach(function(t){t.worker.postMessage({cmd:"setReaders",readers:e})})}function S(e,t){var n=e-J.length;if(0===n)return t&&t();if(0>n){var r=J.slice(n);return r.forEach(function(e){e.worker.terminate()}),J=J.slice(0,n),t&&t()}for(var o=function(n){J.push(n),J.length>=e&&t&&t()},i=0;n>i;i++)_(o)}var R=r(17),O=R&&R.__esModule?function(){return R["default"]}:function(){return R};Object.defineProperty(O,"a",{get:O});var x=r(54),D=x&&x.__esModule?function(){return x["default"]}:function(){return x};Object.defineProperty(D,"a",{get:D});var A=r(149),P=A&&A.__esModule?function(){return A["default"]}:function(){return A};Object.defineProperty(P,"a",{get:P});var M,j,I,k,N,L,z,U=r(19),F=r(63),G=r(57),B=r(52),W=r(59),V=r(10),H=r(50),q=r(55),X=r(62),Y=r(60),$=Object.assign||function(e){for(var t=1;tt},getPoints:function(){return a},getCenter:function(){return c}}},createPoint:function(e,t,n){return{rad:e[n],point:e,id:t}}}},function(e,t,n){t.a=function(){function e(e){return o[e]||(o[e]={subscribers:[]}),o[e]}function t(){o={}}function n(e,t){e.async?setTimeout(function(){e.callback(t)},4):e.callback(t)}function r(t,n,r){var o;if("function"==typeof n)o={callback:n,async:r};else if(o=n,!o.callback)throw"Callback was not specified on options";e(t).subscribers.push(o)}var o={};return{subscribe:function(e,t,n){return r(e,t,n)},publish:function(t,r){var o=e(t),i=o.subscribers;o.subscribers=i.filter(function(e){return n(e,r),!e.once})},once:function(e,t,n){r(e,{callback:t,async:n,once:!0})},unsubscribe:function(n,r){var o;n?(o=e(n),o&&r?o.subscribers=o.subscribers.filter(function(e){return e.callback!==r}):o.subscribers=[]):t()}}}()},function(e,t,n){function r(e,t,n){n||(n={data:null,size:t}),this.data=n.data,this.originalSize=n.size,this.I=n,this.from=e,this.size=t}r.prototype.show=function(e,t){var n,r,o,i,a,c,s;for(t||(t=1),n=e.getContext("2d"),e.width=this.size.x,e.height=this.size.y,r=n.getImageData(0,0,e.width,e.height),o=r.data,i=0,a=0;a>>16&65535,r=65535&e,o=t>>>16&65535,i=65535&t;return r*i+(n*i+r*o<<16>>>0)|0}},function(e,t,n){var r=void 0;r=n(56),t.a=r},function(e,t,n){e.e={inputStream:{name:"Live",type:"LiveStream",constraints:{width:640,height:480,facingMode:"environment"},area:{top:"0%",right:"0%",left:"0%",bottom:"0%"},singleChannel:!1},locate:!0,numOfWorkers:4,decoder:{readers:["code_128_reader"]},locator:{halfSample:!0,patchSize:"medium"}}},function(e,t,n){var r=n(58),o=(n(10),n(67)),i=n(3),a=n(30),c=n(68),s=n(66),u=n(74),d=n(71),f=n(69),l=n(70),p=n(73),h=n(72),v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},g={code_128_reader:o.a,ean_reader:i.a,ean_5_reader:l.a,ean_2_reader:f.a,ean_8_reader:d.a,code_39_reader:a.a,code_39_vin_reader:c.a,codabar_reader:s.a,upc_reader:u.a,upc_e_reader:p.a,i2of5_reader:h.a};t.a={create:function(e,t){function n(){}function o(){e.readers.forEach(function(e){var t,n={},r=[];"object"===("undefined"==typeof e?"undefined":v(e))?(t=e.format,n=e.config):"string"==typeof e&&(t=e),n.supplements&&(r=n.supplements.map(function(e){return new g[e]})),p.push(new g[t](n,r))})}function i(){}function a(e,n,r){function o(t){var r={y:t*Math.sin(n),x:t*Math.cos(n)};e[0].y-=r.y,e[0].x-=r.x,e[1].y+=r.y,e[1].x+=r.x}for(o(r);r>1&&(!t.inImageWithBorder(e[0],0)||!t.inImageWithBorder(e[1],0));)r-=Math.ceil(r/2),o(-r);return e}function c(e){return[{x:(e[1][0]-e[0][0])/2+e[0][0],y:(e[1][1]-e[0][1])/2+e[0][1]},{x:(e[3][0]-e[2][0])/2+e[2][0],y:(e[3][1]-e[2][1])/2+e[2][1]}]}function s(e){var n,o=null,i=r.a.getBarcodeLine(t,e[0],e[1]);for(r.a.toBinaryLine(i),n=0;nr&&null===u;r++)o=a/c*r*(r%2===0?-1:1),i={y:o*d,x:o*f},t[0].y+=i.x,t[0].x-=i.y,t[1].y+=i.x,t[1].x-=i.y,u=s(t);return u}function d(e){return Math.sqrt(Math.pow(Math.abs(e[1].y-e[0].y),2)+Math.pow(Math.abs(e[1].x-e[0].x),2))}function f(e){var t,n,r,o;l.ctx.overlay;return t=c(e),o=d(t),n=Math.atan2(t[1].y-t[0].y,t[1].x-t[0].x),t=a(t,n,Math.floor(.1*o)),null===t?null:(r=s(t),null===r&&(r=u(e,t,n)),null===r?null:{codeResult:r.codeResult,line:t,angle:n,pattern:r.barcodeLine.line,threshold:r.barcodeLine.threshold})}var l={ctx:{frequency:null,pattern:null,overlay:null},dom:{frequency:null,pattern:null,overlay:null}},p=[];return n(),o(),i(),{decodeFromBoundingBox:function(e){return f(e)},decodeFromBoundingBoxes:function(t){var n,r,o=[],i=e.multiple;for(n=0;nf?f:w,C=f>C?f:C,m.push(f)}var o,i,a,c,s,u,d,f,l=0|t.x,p=0|t.y,h=0|n.x,v=0|n.y,g=Math.abs(v-p)>Math.abs(h-l),m=[],y=e.data,b=e.size.x,_=0,w=255,C=0;for(g&&(u=l,l=p,p=u,u=h,h=v,v=u),l>h&&(u=l,l=h,h=u,u=p,p=v,v=u),o=h-l,i=Math.abs(v-p),a=o/2|0,s=p,c=v>p?1:-1,d=l;h>d;d++)g?r(s,d):r(d,s),a-=i,0>a&&(s+=c,a+=o);return{line:m,min:w,max:C}},r.toBinaryLine=function(e){var t,n,r,i,a,c,s=e.min,u=e.max,d=e.line,f=s+(u-s)/2,l=[],p=(u-s)/12,h=-p;for(r=d[0]>f?o.DIR.UP:o.DIR.DOWN,l.push({pos:0,val:d[0]}),a=0;at+n&&d[a+1]<1.5*f?o.DIR.DOWN:t+n>p&&d[a+1]>.5*f?o.DIR.UP:r,r!==i&&(l.push({pos:a,val:d[a]}),r=i);for(l.push({pos:d.length,val:d[d.length-1]}),c=l[0].pos;cf?0:1;for(a=1;al[a].val?l[a].val+(l[a+1].val-l[a].val)/3*2|0:l[a+1].val+(l[a].val-l[a+1].val)/3|0,c=l[a].pos;cp?0:1;return{line:d,threshold:p}},r.debug={printFrequency:function(e,t){var n,r=t.getContext("2d");for(t.width=e.length,t.height=256,r.beginPath(),r.strokeStyle="blue",n=0;n0?e.videoWidth>0&&e.videoHeight>0?t():window.setTimeout(r,500):n("Unable to play video stream. Is webcam working?"),o--}var o=10;r()})}function o(e,t){return navigator.mediaDevices.getUserMedia(t).then(function(t){return new Promise(function(n,r){l=t,e.src=window.URL.createObjectURL(t),e.onloadedmetadata=function(t){e.play(),n()}})}).then(r.bind(null,e))}function i(e){var t=u.a.bind()(e,["width","height","facingMode","aspectRatio","deviceId"]);return"undefined"!=typeof e.minAspectRatio&&e.minAspectRatio>0&&(t.aspectRatio=e.minAspectRatio,console.log("WARNING: Constraint 'minAspectRatio' is deprecated; Use 'aspectRatio' instead")),"undefined"!=typeof e.facing&&(t.facingMode=e.facing,console.log("WARNING: Constraint 'facing' is deprecated. Use 'facingMode' instead'")),t}function a(e,t){return"undefined"==typeof t.video.deviceId&&e?"undefined"!=typeof MediaStreamTrack&&"undefined"!=typeof MediaStreamTrack.getSources?new Promise(function(n,r){MediaStreamTrack.getSources(function(r){var o=r.filter(function(t){return"video"===t.kind&&t.facing===e})[0];return n(o?f.a.bind()({},t,{video:{deviceId:o.id}}):t)})}):Promise.resolve(f.a.bind()({},t,{video:{facingMode:e}})):Promise.resolve(t)}function c(e){var t={audio:!1,video:i(e)};return a(t.video.facingMode,t)}var s=n(145),u=s&&s.__esModule?function(){return s["default"]}:function(){return s};Object.defineProperty(u,"a",{get:u});var d=n(17),f=d&&d.__esModule?function(){return d["default"]}:function(){return d};Object.defineProperty(f,"a",{get:f});var l;t.a={request:function(e,t){return c(t).then(o.bind(null,e))},release:function(){var e=l&&l.getVideoTracks();e&&e.length&&e[0].stop(),l=null}}},function(e,t,n){var r=n(18),o={};o.create=function(e,t){var n,o={},i=e.getConfig(),a=(r.f.bind()(e.getRealWidth(),e.getRealHeight()),e.getCanvasSize()),c=r.f.bind()(e.getWidth(),e.getHeight()),s=e.getTopRight(),u=s.x,d=s.y,f=null,l=null;return n=t?t:document.createElement("canvas"),n.width=a.x,n.height=a.y,f=n.getContext("2d"),l=new Uint8Array(c.x*c.y),o.attachData=function(e){l=e},o.getData=function(){return l},o.grab=function(){var t,n=i.halfSample,o=e.getFrame();return o?(f.drawImage(o,0,0,a.x,a.y),t=f.getImageData(u,d,c.x,c.y).data,n?r.i.bind()(t,c,l):r.j.bind()(t,l,i),!0):!1},o.getSize=function(){return c},o},t.a=o},function(e,t,n){function r(e,t){e.onload=function(){t.loaded(this)}}var o={};o.load=function(e,t,n,o,i){var a,c,s,u=new Array(o),d=new Array(u.length);if(i===!1)u[0]=e;else for(a=0;a1?i.size:Math.floor(t/o*i.size):t,r=i.size?t/o>1?Math.floor(o/t*i.size):i.size:o,u.x=n,u.y=r}var n,r,o={},i=null,a=["canrecord","ended"],c={},s={x:0,y:0},u={x:0,y:0};return o.getRealWidth=function(){return e.videoWidth},o.getRealHeight=function(){return e.videoHeight},o.getWidth=function(){return n},o.getHeight=function(){return r},o.setWidth=function(e){n=e},o.setHeight=function(e){r=e},o.setInputStream=function(t){i=t,e.src="undefined"!=typeof t.src?t.src:""},o.ended=function(){return e.ended},o.getConfig=function(){return i},o.setAttribute=function(t,n){e.setAttribute(t,n)},o.pause=function(){e.pause()},o.play=function(){e.play()},o.setCurrentTime=function(t){"LiveStream"!==i.type&&(e.currentTime=t)},o.addEventListener=function(t,n,r){-1!==a.indexOf(t)?(c[t]||(c[t]=[]),c[t].push(n)):e.addEventListener(t,n,r)},o.clearEventHandlers=function(){a.forEach(function(t){var n=c[t];n&&n.length>0&&n.forEach(function(n){e.removeEventListener(t,n)})})},o.trigger=function(e,n){var r,i=c[e];if("canrecord"===e&&t(),i&&i.length>0)for(r=0;r1?a.size:Math.floor(c/s*a.size):c,o=a.size?c/s>1?Math.floor(s/c*a.size):a.size:s,_.x=n,_.y=o,f=!0,u=0,setTimeout(function(){t("canrecord",[])},0)},h,p,a.sequence)}function t(e,t){var n,r=y[e];if(r&&r.length>0)for(n=0;nu?u++:setTimeout(function(){g=!0,t("ended",[])},0)),e):null},i},t.a=o},function(e,t,n){(function(e){function r(){var t;v=h.halfSample?new R.a({x:T.size.x/2|0,y:T.size.y/2|0}):T,E=O.b.bind()(h.patchSize,v.size),k.x=v.size.x/E.x|0,k.y=v.size.y/E.y|0,C=new R.a(v.size,void 0,Uint8Array,!1),y=new R.a(E,void 0,Array,!0),t=new ArrayBuffer(65536),m=new R.a(E,new Uint8Array(t,0,E.x*E.y)),g=new R.a(E,new Uint8Array(t,E.x*E.y*3,E.x*E.y),void 0,!0),S=P.a.bind()("undefined"!=typeof window?window:"undefined"!=typeof self?self:e,{size:E.x},t),w=new R.a({x:v.size.x/m.size.x|0,y:v.size.y/m.size.y|0},void 0,Array,!0),b=new R.a(w.size,void 0,void 0,!0),_=new R.a(w.size,void 0,Int32Array,!0)}function o(){h.useWorker||"undefined"==typeof document||(I.dom.binary=document.createElement("canvas"),I.dom.binary.className="binaryBuffer",I.ctx.binary=I.dom.binary.getContext("2d"),I.dom.binary.width=C.size.x,I.dom.binary.height=C.size.y)}function i(e){var t,n,r,o,i,a,c,s=C.size.x,u=C.size.y,d=-C.size.x,f=-C.size.y;for(t=0,n=0;nt&&(t+=180),t=(180-t)*Math.PI/180,i=j.copy(j.create(),[Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t)]),n=0;nr;r++)M.transformMat2(o.box[r],o.box[r],i);for(n=0;nr;r++)o.box[r][0]d&&(d=o.box[r][0]),o.box[r][1]f&&(f=o.box[r][1]);for(a=[[s,u],[d,u],[d,f],[s,f]],c=h.halfSample?2:1,i=j.invert(i,i),r=0;4>r;r++)M.transformMat2(a[r],a[r],i);for(r=0;4>r;r++)M.scale(a[r],a[r],c);return a}function a(){O.c.bind()(v,C),C.zeroBorder()}function c(){var e,t,n,r,o,i,a,c=[];for(e=0;et;t++)r.push(0);for(n=_.data.length;n--;)_.data[n]>0&&r[_.data[n]-1]++;return r=r.map(function(e,t){return{val:e,label:t+1}}),r.sort(function(e,t){return t.val-e.val}),o=r.filter(function(e){return e.val>=5})}function u(e,t){var n,r,o,a,c=[],s=[];for(n=0;n=2){for(o=0;of&&s.push(e[o]);if(s.length>=2){for(a=d(s),i=0,o=0;o1&&a.length>=s.length/4*3&&a.length>e.length/4&&(i/=a.length,c={index:t[1]*k.x+t[0],pos:{x:n,y:r},box:[M.clone([n,r]),M.clone([n+m.size.x,r]),M.clone([n+m.size.x,r+m.size.y]),M.clone([n,r+m.size.y])],moments:a,rad:i,vec:M.clone([Math.cos(i),Math.sin(i)])},u.push(c))}}return u}function p(e){function t(){var e;for(e=0;e<_.data.length;e++)if(0===_.data[e]&&1===b.data[e])return e;return _.length}function n(e){var t,r,o,c,s,u,d={x:e%_.size.x,y:e/_.size.x|0};if(e<_.data.length)for(o=w.data[e],_.data[e]=i,s=0;sa&&n(c)):_.data[c]=Number.MAX_VALUE}var r,o,i=0,a=.95,c=0;for(x.a.init(b.data,0),x.a.init(_.data,0),x.a.init(w.data,null),r=0;rr?null:(t=s(r),0===t.length?null:n=u(t,r))},checkImageConstraints:function(e,t){var n,r,o,i=e.getWidth(),a=e.getHeight(),c=t.halfSample?.5:1;if(e.getConfig().area&&(o=O.h.bind()(i,a,e.getConfig().area),e.setTopRight({x:o.sx,y:o.sy}),e.setCanvasSize({x:i,y:a}),i=o.sw,a=o.sh),r={x:Math.floor(i*c),y:Math.floor(a*c)},n=O.b.bind()(t.patchSize,r),e.setWidth(Math.floor(Math.floor(r.x/n.x)*(1/c)*n.x)),e.setHeight(Math.floor(Math.floor(r.y/n.y)*(1/c)*n.y)),e.getWidth()%n.x===0&&e.getHeight()%n.y===0)return!0;throw new Error("Image dimensions do not comply with the current settings: Width ("+i+" )and height ("+a+") must a multiple of "+n.x)}}}).call(t,function(){return this}())},function(e,t,n){var r=n(29),o={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(e,t){var n=e.data,i=t.data,a=e.size.x,c=e.size.y,s=r.a.create(e,t);return{rasterize:function(e){var t,r,u,d,f,l,p,h,v,g,m,y,b=[],_=0;for(y=0;400>y;y++)b[y]=0;for(b[0]=n[0],v=null,l=1;c-1>l;l++)for(d=0,r=b[0],f=1;a-1>f;f++)if(m=l*a+f,0===i[m])if(t=n[m],t!==r){if(0===d)u=_+1,b[u]=t,r=t,p=s.contourTracing(l,f,u,t,o.DIR.OUTSIDE_EDGE),null!==p&&(_++,d=u,h=o.createContour2D(),h.dir=o.CONTOUR_DIR.CW_DIR,h.index=d,h.firstVertex=p,h.nextpeer=v,h.insideContours=null,null!==v&&(v.prevpeer=h),v=h);else if(p=s.contourTracing(l,f,o.DIR.INSIDE_EDGE,t,d),null!==p){for(h=o.createContour2D(),h.firstVertex=p,h.insideContours=null,0===e?h.dir=o.CONTOUR_DIR.CCW_DIR:h.dir=o.CONTOUR_DIR.CW_DIR,h.index=e,g=v;null!==g&&g.index!==d;)g=g.nextpeer;null!==g&&(h.nextpeer=g.insideContours,null!==g.insideContours&&(g.insideContours.prevpeer=h),g.insideContours=h)}}else i[m]=d;else i[m]===o.DIR.OUTSIDE_EDGE||i[m]===o.DIR.INSIDE_EDGE?(d=0,r=i[m]===o.DIR.INSIDE_EDGE?n[m]:b[0]):(d=i[m],r=b[d]);for(g=v;null!==g;)g.index=e,g=g.nextpeer;return{cc:v,count:_}},debug:{drawContour:function(e,t){var n,r,i,a=e.getContext("2d"),c=t;for(a.strokeStyle="red",a.fillStyle="red",a.lineWidth=1,n=null!==c?c.insideContours:null;null!==c;){switch(null!==n?(r=n,n=n.nextpeer):(r=c,c=c.nextpeer,n=null!==c?c.insideContours:null),r.dir){case o.CONTOUR_DIR.CW_DIR:a.strokeStyle="red";break;case o.CONTOUR_DIR.CCW_DIR:a.strokeStyle="blue";break;case o.CONTOUR_DIR.UNKNOWN_DIR:a.strokeStyle="green"}i=r.firstVertex,a.beginPath(),a.moveTo(i.x,i.y);do i=i.next,a.lineTo(i.x,i.y);while(i!==r.firstVertex);a.stroke()}}}}}};t.a=o},function(module, exports, __webpack_require__) {function Skeletonizer(stdlib, foreign, buffer) {"use asm";var images=new stdlib.Uint8Array(buffer),size=foreign.size|0,imul=stdlib.Math.imul;function erode(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0) == (5|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function subtract(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=(images[aImagePtr+length|0]|0) - (images[bImagePtr+length|0]|0)|0;}}function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[outImagePtr+length|0]=images[aImagePtr+length|0]|0|(images[bImagePtr+length|0]|0)|0;}}function countNonZero(imagePtr) {imagePtr=imagePtr|0;var sum=0,length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;sum=(sum|0)+(images[imagePtr+length|0]|0)|0;}return sum|0;}function init(imagePtr, value) {imagePtr=imagePtr|0;value=value|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[imagePtr+length|0]=value;}}function dilate(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for (v=1; (v|0)<(size - 1|0); v=v+1|0) {offset=offset+size|0;for (u=1; (u|0)<(size - 1|0); u=u+1|0) {yStart1=offset - size|0;yStart2=offset+size|0;xStart1=u - 1|0;xStart2=u+1|0;sum=(images[inImagePtr+yStart1+xStart1|0]|0)+(images[inImagePtr+yStart1+xStart2|0]|0)+(images[inImagePtr+offset+u|0]|0)+(images[inImagePtr+yStart2+xStart1|0]|0)+(images[inImagePtr+yStart2+xStart2|0]|0)|0;if ((sum|0)>(0|0)) {images[outImagePtr+offset+u|0]=1;} else {images[outImagePtr+offset+u|0]=0;}}}return;}function memcpy(srcImagePtr, dstImagePtr) {srcImagePtr=srcImagePtr|0;dstImagePtr=dstImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=length - 1|0;images[dstImagePtr+length|0]=images[srcImagePtr+length|0]|0;}}function zeroBorder(imagePtr) {imagePtr=imagePtr|0;var x=0,y=0;for (x=0; (x|0)<(size - 1|0); x=x+1|0) {images[imagePtr+x|0]=0;images[imagePtr+y|0]=0;y=y+size - 1|0;images[imagePtr+y|0]=0;y=y+1|0;}for (x=0; (x|0)<(size|0); x=x+1|0) {images[imagePtr+y|0]=0;y=y+1|0;}}function skeletonize() {var subImagePtr=0,erodedImagePtr=0,tempImagePtr=0,skelImagePtr=0,sum=0,done=0;erodedImagePtr=imul(size, size)|0;tempImagePtr=erodedImagePtr+erodedImagePtr|0;skelImagePtr=tempImagePtr+erodedImagePtr|0;init(skelImagePtr, 0);zeroBorder(subImagePtr);do {erode(subImagePtr, erodedImagePtr);dilate(erodedImagePtr, tempImagePtr);subtract(subImagePtr, tempImagePtr, tempImagePtr);bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);memcpy(erodedImagePtr, subImagePtr);sum=countNonZero(subImagePtr)|0;done=(sum|0) == 0|0;} while (!done);}return {skeletonize: skeletonize};} exports["a"]=Skeletonizer; },function(e,t,n){function r(){o.a.call(this),this._counters=[]}var o=n(6),i={ALPHABETH_STRING:{value:"0123456789-$:/.+ABCD"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,45,36,58,47,46,43,65,66,67,68]},CHARACTER_ENCODINGS:{value:[3,6,9,96,18,66,33,36,48,72,12,24,69,81,84,21,26,41,11,14]},START_END:{value:[26,41,11,14]},MIN_ENCODED_CHARS:{value:4},MAX_ACCEPTABLE:{value:2},PADDING:{value:1.5},FORMAT:{value:"codabar",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decode=function(){var e,t,n,r,o,i=this,a=[];if(this._counters=i._fillCounters(),e=i._findStart(),!e)return null;r=e.startCounter;do{if(n=i._toPattern(r),0>n)return null;if(t=i._patternToChar(n),0>t)return null;if(a.push(t),r+=8,a.length>1&&i._isStartEnd(n))break}while(ri._counters.length?i._counters.length:r,o=e.start+i._sumCounters(e.startCounter,r-8),{code:a.join(""),start:e.start,end:o,startInfo:e,decodedCodes:a}):null},r.prototype._verifyWhitespace=function(e,t){return(0>=e-1||this._counters[e-1]>=this._calculatePatternLength(e)/2)&&(t+8>=this._counters.length||this._counters[t+7]>=this._calculatePatternLength(t)/2)},r.prototype._calculatePatternLength=function(e){var t,n=0;for(t=e;e+7>t;t++)n+=this._counters[t];return n},r.prototype._thresholdResultPattern=function(e,t){var n,r,o,i,a,c=this,s={space:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}},bar:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}}},u=t;for(o=0;o=0;i--)n=2===(1&i)?s.bar:s.space,r=1===(1&a)?n.wide:n.narrow,r.size+=c._counters[u+i],r.counts++,a>>=1;u+=8}return["space","bar"].forEach(function(e){var t=s[e];t.wide.min=Math.floor((t.narrow.size/t.narrow.counts+t.wide.size/t.wide.counts)/2),t.narrow.max=Math.ceil(t.wide.min),t.wide.max=Math.ceil((t.wide.size*c.MAX_ACCEPTABLE+c.PADDING)/t.wide.counts)}),s},r.prototype._charToPattern=function(e){var t,n=this,r=e.charCodeAt(0);for(t=0;t=0;r--){if(o=0===(1&r)?u.bar:u.space,i=1===(1&c)?o.wide:o.narrow,a=s._counters[d+r],ai.max)return!1;c>>=1}d+=8}return!0},r.prototype._patternToChar=function(e){var t,n=this;for(t=0;tn;n+=2)r=this._counters[n],r>i&&(i=r),o>r&&(o=r);return(o+i)/2|0},r.prototype._toPattern=function(e){var t,n,r,o,i=7,a=e+i,c=1<this._counters.length)return-1;for(t=this._computeAlternatingThreshold(e,a),n=this._computeAlternatingThreshold(e+1,a),r=0;i>r;r++)o=0===(1&r)?t:n,this._counters[e+r]>o&&(s|=c),c>>=1;return s},r.prototype._isStartEnd=function(e){var t;for(t=0;tn;n++)r+=this._counters[n];return r},r.prototype._findStart=function(){var e,t,n,r=this,o=r._nextUnset(r._row);for(e=1;ec.AVG_CODE_ERROR?null:(c.CODE_PATTERN[f.code]&&(f.correction.bar=o(c.CODE_PATTERN[f.code],a,this.MODULE_INDICES.bar),f.correction.space=o(c.CODE_PATTERN[f.code],a,this.MODULE_INDICES.space)),f)}d++,a[d]=1,u=!u}return null},r.prototype._correct=function(e,t){this._correctBars(e,t.bar,this.MODULE_INDICES.bar),this._correctBars(e,t.space,this.MODULE_INDICES.space)},r.prototype._findStart=function(){var e,t,n,r,i,a=[0,0,0,0,0,0],c=this,s=c._nextSet(c._row),u=!1,d=0,f={error:Number.MAX_VALUE,code:-1,start:0,end:0,correction:{bar:1,space:1}};for(e=s;er;r++)a[r]=a[r+2];a[4]=0,a[5]=0,d--}else d++;a[d]=1,u=!u}return null},r.prototype._decode=function(){var e,t,n=this,r=n._findStart(),o=null,i=!1,a=[],c=0,s=0,u=[],d=[],f=!1,l=!0;if(null===r)return null;switch(o={code:r.code,start:r.start,end:r.end,correction:{bar:r.correction.bar,space:r.correction.space}},d.push(o),s=o.code,o.code){case n.START_CODE_A:e=n.CODE_A;break;case n.START_CODE_B:e=n.CODE_B;break;case n.START_CODE_C:e=n.CODE_C;break;default:return null}for(;!i;){if(t=f,f=!1,o=n._decodeCode(o.end,o.correction),null!==o)switch(o.code!==n.STOP_CODE&&(l=!0),o.code!==n.STOP_CODE&&(u.push(o.code),c++,s+=c*o.code),d.push(o),e){case n.CODE_A:if(o.code<64)a.push(String.fromCharCode(32+o.code));else if(o.code<96)a.push(String.fromCharCode(o.code-64));else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_SHIFT:f=!0,e=n.CODE_B;break;case n.CODE_B:e=n.CODE_B;break;case n.CODE_C:e=n.CODE_C;break;case n.STOP_CODE:i=!0}break;case n.CODE_B:if(o.code<96)a.push(String.fromCharCode(32+o.code));else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_SHIFT:f=!0,e=n.CODE_A;break;case n.CODE_A:e=n.CODE_A;break;case n.CODE_C:e=n.CODE_C;break;case n.STOP_CODE:i=!0}break;case n.CODE_C:if(o.code<100)a.push(o.code<10?"0"+o.code:o.code);else switch(o.code!==n.STOP_CODE&&(l=!1),o.code){case n.CODE_A:e=n.CODE_A;break;case n.CODE_B:e=n.CODE_B;break;case n.STOP_CODE:i=!0}}else i=!0;t&&(e=e===n.CODE_A?n.CODE_B:n.CODE_A)}return null===o?null:(o.end=n._nextUnset(n._row,o.end),n._verifyTrailingWhitespace(o)?(s-=c*u[u.length-1],s%103!==u[u.length-1]?null:a.length?(l&&a.splice(a.length-1,1),{code:a.join(""),start:r.start,end:o.end,codeset:e,startInfo:r,decodedCodes:d,endInfo:o}):null):null)},i.a.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,to&&a>i;o++){if(n=this._decodeCode(i),!n)return null;s.push(n),c.push(n.code%10),n.code>=this.CODE_G_START&&(r|=1<<1-o),1!=o&&(i=this._nextSet(this._row,n.end),i=this._nextUnset(this._row,i))}return 2!=c.length||parseInt(c.join(""))%4!==r?null:{code:c.join(""),decodedCodes:s,end:n.end}},t.a=r},function(e,t,n){function r(){a.a.call(this)}function o(e){var t;for(t=0;10>t;t++)if(e===s[t])return t;return null}function i(e){var t,n=e.length,r=0;for(t=n-2;t>=0;t-=2)r+=e[t];for(r*=3,t=n-1;t>=0;t-=2)r+=e[t];return r*=3,r%10}var a=n(3),c={FORMAT:{value:"ean_5",writeable:!1}},s=[24,20,18,17,12,6,3,10,9,5];r.prototype=Object.create(a.a.prototype,c),r.prototype.constructor=r,r.prototype.decode=function(e,t){this._row=e;var n,r=0,a=0,c=t,s=this._row.length,u=[],d=[];for(a=0;5>a&&s>c;a++){if(n=this._decodeCode(c),!n)return null;d.push(n),u.push(n.code%10),n.code>=this.CODE_G_START&&(r|=1<<4-a),4!=a&&(c=this._nextSet(this._row,n.end),c=this._nextUnset(this._row,c))}return 5!=u.length?null:i(u)!==o(r)?null:{code:u.join(""),decodedCodes:d,end:n.end}},t.a=r},function(e,t,n){function r(e,t){o.a.call(this,e,t)}var o=n(3),i={FORMAT:{value:"ean_8",writeable:!1}};r.prototype=Object.create(o.a.prototype,i),r.prototype.constructor=r,r.prototype._decodePayload=function(e,t,n){var r,o=this;for(r=0;4>r;r++){if(e=o._decodeCode(e.end,o.CODE_G_START),!e)return null;t.push(e.code),n.push(e)}if(e=o._findPattern(o.MIDDLE_PATTERN,e.end,!0,!1),null===e)return null;for(n.push(e),r=0;4>r;r++){if(e=o._decodeCode(e.end,o.CODE_G_START),!e)return null;n.push(e),t.push(e.code)}return e},t.a=r},function(e,t,n){function r(e){e=a.a.bind()(o(),e),c.a.call(this,e),this.barSpaceRatio=[1,1],e.normalizeBarSpaceWidth&&(this.SINGLE_CODE_ERROR=.38,this.AVG_CODE_ERROR=.09)}function o(){var e={};return Object.keys(r.CONFIG_KEYS).forEach(function(t){e[t]=r.CONFIG_KEYS[t]["default"]}),e}var i=n(17),a=i&&i.__esModule?function(){return i["default"]}:function(){return i};Object.defineProperty(a,"a",{get:a});var c=n(6),s=1,u=3,d={START_PATTERN:{value:[s,s,s,s]},STOP_PATTERN:{value:[s,s,u]},CODE_PATTERN:{value:[[s,s,u,u,s],[u,s,s,s,u],[s,u,s,s,u],[u,u,s,s,s],[s,s,u,s,u],[u,s,u,s,s],[s,u,u,s,s],[s,s,s,u,u],[u,s,s,u,s],[s,u,s,u,s]]},SINGLE_CODE_ERROR:{value:.78,writable:!0},AVG_CODE_ERROR:{value:.38,writable:!0},MAX_CORRECTION_FACTOR:{value:5},FORMAT:{value:"i2of5"}};r.prototype=Object.create(c.a.prototype,d),r.prototype.constructor=r,r.prototype._matchPattern=function(e,t){if(this.config.normalizeBarSpaceWidth){var n,r=[0,0],o=[0,0],i=[0,0],a=this.MAX_CORRECTION_FACTOR,s=1/a;for(n=0;ni)return f.error=i,f.start=o-c,f.end=o,f;if(!r)return null;for(a=0;a=0&&n._matchRange(e,t.start,0))return t;r=t.end,t=null}},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,ta;){for(r=0;5>r;r++)s[0][r]=e[a]*this.barSpaceRatio[0],s[1][r]=e[a+1]*this.barSpaceRatio[1],a+=2;if(o=i._decodePair(s),!o)return null;for(r=0;rr;r++){if(e=o._decodeCode(e.end),!e)return null;e.code>=o.CODE_G_START&&(e.code=e.code-o.CODE_G_START,i|=1<<5-r),t.push(e.code),n.push(e)}return o._determineParity(i,t)?e:null},r.prototype._determineParity=function(e,t){var n,r;for(r=0;r=n?t.concat(e.slice(1,3)).concat([n,0,0,0,0]).concat(e.slice(3,6)):3===n?t.concat(e.slice(1,4)).concat([0,0,0,0,0]).concat(e.slice(4,6)):4===n?t.concat(e.slice(1,5)).concat([0,0,0,0,0,e[5]]):t.concat(e.slice(1,6)).concat([0,0,0,0,n]),t.push(e[e.length-1]),t},r.prototype._checksum=function(e){return o.a.prototype._checksum.call(this,this._convertToUPCA(e))},r.prototype._findEnd=function(e,t){return t=!0,o.a.prototype._findEnd.call(this,e,t)},r.prototype._verifyTrailingWhitespace=function(e){var t,n=this;return t=e.end+(e.end-e.start)/2,t0&&c(f)&&(n||a(f)||i(f))?t>1?r(f,t-1,n,s):o(s,f):n||(s[s.length]=f)}return s}var o=n(91),i=n(25),a=n(5),c=n(27);e.e=r},function(e,t,n){var r=n(116),o=r();e.e=o},function(e,t,n){function r(e,t){return e&&o(e,t,i)}var o=n(96),i=n(45);e.e=r},function(e,t,n){function r(e,t){return i.call(e,t)||"object"==typeof e&&t in e&&null===a(e)}var o=Object.prototype,i=o.hasOwnProperty,a=Object.getPrototypeOf;e.e=r},function(e,t,n){function r(e){return o(Object(e))}var o=Object.keys;e.e=r},function(e,t,n){function r(e){e=null==e?e:Object(e);var t=[];for(var n in e)t.push(n);return t}var o=n(83),i=n(127),a=Object.prototype,c=o?o.enumerate:void 0,s=a.propertyIsEnumerable;c&&!s.call({valueOf:1},"valueOf")&&(r=function(e){return i(c(e))}),e.e=r},function(e,t,n){function r(e,t,n,l,p){if(e!==t){var h=s(t)||d(t)?void 0:f(t);i(h||t,function(i,s){if(h&&(s=i,i=t[s]),u(i))p||(p=new o),c(e,t,s,n,r,l,p);else{var d=l?l(e[s],i,s+"",e,t,p):void 0;void 0===d&&(d=i),a(e,s,d)}})}}var o=n(32),i=n(33),a=n(34),c=n(102),s=n(5),u=n(2),d=n(44),f=n(46);e.e=r},function(e,t,n){function r(e,t,n,r,v,g,m){var y=e[n],b=t[n],_=m.get(b);if(_)return void o(e,n,_);var w=g?g(y,b,n+"",e,t,m):void 0,C=void 0===w;C&&(w=b,s(b)||p(b)?s(y)?w=y:u(y)?w=a(y):(C=!1,w=i(b,!g)):l(b)||c(b)?c(y)?w=h(y):!f(y)||r&&d(y)?(C=!1,w=i(b,!g)):w=y:C=!1),m.set(b,w),C&&v(w,b,r,g,m),m["delete"](b),o(e,n,w)}var o=n(34),i=n(93),a=n(41),c=n(25),s=n(5),u=n(27),d=n(16),f=n(2),l=n(143),p=n(44),h=n(148);e.e=r},function(e,t,n){function r(e,t){return e=Object(e),o(t,function(t,n){return n in e&&(t[n]=e[n]),t},{})}var o=n(20);e.e=r},function(e,t,n){function r(e){return function(t){return null==t?void 0:t[e]}}e.e=r},function(e,t,n){function r(e,t){for(var n=-1,r=Array(e);++n1?n[i-1]:void 0,c=i>2?n[2]:void 0;for(a="function"==typeof a?(i--,a):void 0,c&&o(n[0],n[1],c)&&(a=3>i?void 0:a,i=1),t=Object(t);++re?-1:1;return t*a}var n=e%1;return e===e?n?e-n:e:0}var o=n(147),i=1/0,a=1.7976931348623157e308;e.e=r},function(e,t,n){function r(e){if(i(e)){var t=o(e.valueOf)?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(c,"");var n=u.test(e);return n||d.test(e)?f(e.slice(2),n?2:8):s.test(e)?a:+e}var o=n(16),i=n(2),a=NaN,c=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,d=/^0o[0-7]+$/i,f=parseInt;e.e=r},function(e,t,n){function r(e){return o(e,i(e))}var o=n(21),i=n(46);e.e=r},function(e,t,n){"use strict";!function(){var t=n(0).log,r=n(0).browserDetails;e.e.browserDetails=r,e.e.extractVersion=n(0).extractVersion,e.e.disableLog=n(0).disableLog;var o=n(150)||null,i=n(153)||null,a=n(154)||null;switch(r.browser){case"chrome":if(!o||!o.shimPeerConnection)return void t("Chrome shim is not included in this adapter release.");t("adapter.js shimming chrome!"),e.e.browserShim=o,o.shimGetUserMedia(),o.shimSourceObject(),o.shimPeerConnection(),o.shimOnTrack();break;case"edge":if(!i||!i.shimPeerConnection)return void t("MS edge shim is not included in this adapter release.");t("adapter.js shimming edge!"),e.e.browserShim=i,i.shimPeerConnection();break;case"firefox":if(!a||!a.shimPeerConnection)return void t("Firefox shim is not included in this adapter release.");t("adapter.js shimming firefox!"),e.e.browserShim=a,a.shimGetUserMedia(),a.shimSourceObject(),a.shimPeerConnection(),a.shimOnTrack();break;default:t("Unsupported browser!")}}()},function(e,t,n){"use strict";var r=n(0).log,o=n(0).browserDetails,i={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){var t=this;this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.addEventListener("addtrack",function(n){var r=new Event("track");r.track=n.track,r.receiver={track:n.track},r.streams=[e.stream],t.dispatchEvent(r)}),e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(e){var t=this;return this._srcObject=e,this.src&&URL.revokeObjectURL(this.src),e?(this.src=URL.createObjectURL(e),e.addEventListener("addtrack",function(){t.src&&URL.revokeObjectURL(t.src),t.src=URL.createObjectURL(e)}),void e.addEventListener("removetrack",function(){t.src&&URL.revokeObjectURL(t.src),t.src=URL.createObjectURL(e)})):void(this.src="")}}))},shimPeerConnection:function(){window.RTCPeerConnection=function(e,t){r("PeerConnection"),e&&e.iceTransportPolicy&&(e.iceTransports=e.iceTransportPolicy);var n=new webkitRTCPeerConnection(e,t),o=n.getStats.bind(n);return n.getStats=function(e,t,n){var r=this,i=arguments;if(arguments.length>0&&"function"==typeof e)return o(e,t);var a=function(e){var t={},n=e.result();return n.forEach(function(e){var n={id:e.id,timestamp:e.timestamp,type:e.type};e.names().forEach(function(t){n[t]=e.stat(t)}),t[n.id]=n; +}),t};if(arguments.length>=2){var c=function(e){i[1](a(e))};return o.apply(this,[c,arguments[0]])}return new Promise(function(t,n){1===i.length&&null===e?o.apply(r,[function(e){t.apply(null,[a(e)])},n]):o.apply(r,[t,n])})},n},window.RTCPeerConnection.prototype=webkitRTCPeerConnection.prototype,webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(window.RTCPeerConnection,"generateCertificate",{get:function(){return arguments.length?webkitRTCPeerConnection.generateCertificate.apply(null,arguments):webkitRTCPeerConnection.generateCertificate}}),["createOffer","createAnswer"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){var e=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var n=1===arguments.length?arguments[0]:void 0;return new Promise(function(r,o){t.apply(e,[r,o,n])})}return t.apply(this,arguments)}}),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(e){var t=webkitRTCPeerConnection.prototype[e];webkitRTCPeerConnection.prototype[e]=function(){var e=arguments,n=this;return new Promise(function(r,o){t.apply(n,[e[0],function(){r(),e.length>=2&&e[1].apply(null,[])},function(t){o(t),e.length>=3&&e[2].apply(null,[t])}])})}})},attachMediaStream:function(e,t){r("DEPRECATED, attachMediaStream will soon be removed."),o.version>=43?e.srcObject=t:"undefined"!=typeof e.src?e.src=URL.createObjectURL(t):r("Error attaching stream to element.")},reattachMediaStream:function(e,t){r("DEPRECATED, reattachMediaStream will soon be removed."),o.version>=43?e.srcObject=t.srcObject:e.src=t.src}};e.e={shimOnTrack:i.shimOnTrack,shimSourceObject:i.shimSourceObject,shimPeerConnection:i.shimPeerConnection,shimGetUserMedia:n(151),attachMediaStream:i.attachMediaStream,reattachMediaStream:i.reattachMediaStream}},function(e,t,n){"use strict";var r=n(0).log;e.e=function(){var e=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach(function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var o=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];var i={};"number"==typeof r.ideal?(i[o("min",n)]=r.ideal,t.optional.push(i),i={},i[o("max",n)]=r.ideal,t.optional.push(i)):(i[o("",n)]=r.ideal,t.optional.push(i))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[o("",n)]=r.exact):["min","max"].forEach(function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[o(e,n)]=r[e])})}}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},t=function(t,n,o){return t.audio&&(t.audio=e(t.audio)),t.video&&(t.video=e(t.video)),r("chrome: "+JSON.stringify(t)),navigator.webkitGetUserMedia(t,n,o)};navigator.getUserMedia=t;var n=function(e){return new Promise(function(t,n){navigator.getUserMedia(e,t,n)})};if(navigator.mediaDevices||(navigator.mediaDevices={getUserMedia:n,enumerateDevices:function(){return new Promise(function(e){var t={audio:"audioinput",video:"videoinput"};return MediaStreamTrack.getSources(function(n){e(n.map(function(e){return{label:e.label,kind:t[e.kind],deviceId:e.id,groupId:""}}))})})}}),navigator.mediaDevices.getUserMedia){var o=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(t){return t&&(r("spec: "+JSON.stringify(t)),t.audio=e(t.audio),t.video=e(t.video),r("chrome: "+JSON.stringify(t))),o(t)}.bind(this)}else navigator.mediaDevices.getUserMedia=function(e){return n(e)};"undefined"==typeof navigator.mediaDevices.addEventListener&&(navigator.mediaDevices.addEventListener=function(){r("Dummy mediaDevices.addEventListener called.")}),"undefined"==typeof navigator.mediaDevices.removeEventListener&&(navigator.mediaDevices.removeEventListener=function(){r("Dummy mediaDevices.removeEventListener called.")})}},function(e,t,n){"use strict";var r={};r.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},r.localCName=r.generateIdentifier(),r.splitLines=function(e){return e.trim().split("\n").map(function(e){return e.trim()})},r.splitSections=function(e){var t=e.split("\r\nm=");return t.map(function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"})},r.matchPrefix=function(e,t){return r.splitLines(e).filter(function(e){return 0===e.indexOf(t)})},r.parseCandidate=function(e){var t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");for(var n={foundation:t[0],component:t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],port:parseInt(t[5],10),type:t[7]},r=8;r-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},r.getDtlsParameters=function(e,t){var n=r.splitLines(e);n=n.concat(r.splitLines(t));var o=n.filter(function(e){return 0===e.indexOf("a=fingerprint:")})[0].substr(14),i={role:"auto",fingerprints:[{algorithm:o.split(" ")[0],value:o.split(" ")[1]}]};return i},r.writeDtlsParameters=function(e,t){var n="a=setup:"+t+"\r\n";return e.fingerprints.forEach(function(e){n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"}),n},r.getIceParameters=function(e,t){var n=r.splitLines(e);n=n.concat(r.splitLines(t));var o={usernameFragment:n.filter(function(e){return 0===e.indexOf("a=ice-ufrag:")})[0].substr(12),password:n.filter(function(e){return 0===e.indexOf("a=ice-pwd:")})[0].substr(10)};return o},r.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},r.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=r.splitLines(e),o=n[0].split(" "),i=3;i0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=t.codecs.map(function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType}).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach(function(e){n+=r.writeRtpMap(e),n+=r.writeFtmp(e),n+=r.writeRtcpFb(e)}),n+="a=rtcp-mux\r\n"},r.writeSessionBoilerplate=function(){return"v=0\r\no=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},r.writeMediaSection=function(e,t,n,o){var i=r.writeRtpDescription(e.kind,t);if(i+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),i+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),i+="a=mid:"+e.mid+"\r\n",i+=e.rtpSender&&e.rtpReceiver?"a=sendrecv\r\n":e.rtpSender?"a=sendonly\r\n":e.rtpReceiver?"a=recvonly\r\n":"a=inactive\r\n",e.rtpSender){var a="msid:"+o.id+" "+e.rtpSender.track.id+"\r\n";i+="a="+a,i+="a=ssrc:"+e.sendSsrc+" "+a}return i+="a=ssrc:"+e.sendSsrc+" cname:"+r.localCName+"\r\n"},r.getDirection=function(e,t){for(var n=r.splitLines(e),o=0;o-1&&(this.localStreams.splice(t,1),this._maybeFireNegotiationNeeded())},window.RTCPeerConnection.prototype._getCommonCapabilities=function(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]};return e.codecs.forEach(function(e){for(var r=0;r0,!1)}})}switch(this.localDescription={type:e.type,sdp:e.sdp},e.type){case"offer":this._updateSignalingState("have-local-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+e.type+'"')}var i=arguments.length>1&&"function"==typeof arguments[1];if(i){var a=arguments[1];window.setTimeout(function(){a(),"new"===t.iceGatheringState&&(t.iceGatheringState="gathering"),t._emitBufferedCandidates()},0)}var c=Promise.resolve();return c.then(function(){i||("new"===t.iceGatheringState&&(t.iceGatheringState="gathering"),window.setTimeout(t._emitBufferedCandidates.bind(t),500))}),c},window.RTCPeerConnection.prototype.setRemoteDescription=function(e){var t=this,n=new MediaStream,o=[],i=r.splitSections(e.sdp),a=i.shift();switch(i.forEach(function(i,c){var s,u,d,f,l,p,h,v,g,m,y,b,_=r.splitLines(i),w=_[0].substr(2).split(" "),C=w[0],E="0"===w[1],T=r.getDirection(i,a),S=r.parseRtpParameters(i);E||(y=r.getIceParameters(i,a),b=r.getDtlsParameters(i,a));var R,O=r.matchPrefix(i,"a=mid:")[0].substr(6),x=r.matchPrefix(i,"a=ssrc:").map(function(e){return r.parseSsrcMedia(e)}).filter(function(e){return"cname"===e.attribute})[0];if(x&&(v=parseInt(x.ssrc,10),R=x.value),"offer"===e.type){var D=t._createIceAndDtlsTransports(O,c);if(g=RTCRtpReceiver.getCapabilities(C),h=1001*(2*c+2),p=new RTCRtpReceiver(D.dtlsTransport,C),m=p.track,o.push([m,p]),n.addTrack(m),t.localStreams.length>0&&t.localStreams[0].getTracks().length>=c){var A=t.localStreams[0].getTracks()[c];l=new RTCRtpSender(A,D.dtlsTransport)}t.transceivers[c]={iceGatherer:D.iceGatherer,iceTransport:D.iceTransport,dtlsTransport:D.dtlsTransport,localCapabilities:g,remoteCapabilities:S,rtpSender:l,rtpReceiver:p,kind:C,mid:O,cname:R,sendSsrc:h,recvSsrc:v},t._transceive(t.transceivers[c],!1,"sendrecv"===T||"sendonly"===T)}else"answer"!==e.type||E||(s=t.transceivers[c],u=s.iceGatherer,d=s.iceTransport,f=s.dtlsTransport,l=s.rtpSender,p=s.rtpReceiver,h=s.sendSsrc,g=s.localCapabilities,t.transceivers[c].recvSsrc=v,t.transceivers[c].remoteCapabilities=S,t.transceivers[c].cname=R,d.start(u,y,"controlling"),f.start(b),t._transceive(s,"sendrecv"===T||"recvonly"===T,"sendrecv"===T||"sendonly"===T),!p||"sendrecv"!==T&&"sendonly"!==T?delete s.rtpReceiver:(m=p.track,o.push([m,p]),n.addTrack(m)))}),this.remoteDescription={type:e.type,sdp:e.sdp},e.type){case"offer":this._updateSignalingState("have-remote-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+e.type+'"')}return n.getTracks().length&&(t.remoteStreams.push(n),window.setTimeout(function(){var e=new Event("addstream");e.stream=n,t.dispatchEvent(e),null!==t.onaddstream&&window.setTimeout(function(){t.onaddstream(e)},0),o.forEach(function(e){var r=e[0],o=e[1],i=new Event("track");i.track=r,i.receiver=o,i.streams=[n],t.dispatchEvent(i),null!==t.ontrack&&window.setTimeout(function(){t.ontrack(i)},0)})},0)),arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.close=function(){this.transceivers.forEach(function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()}),this._updateSignalingState("closed")},window.RTCPeerConnection.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this.dispatchEvent(t),null!==this.onsignalingstatechange&&this.onsignalingstatechange(t)},window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded=function(){var e=new Event("negotiationneeded");this.dispatchEvent(e),null!==this.onnegotiationneeded&&this.onnegotiationneeded(e)},window.RTCPeerConnection.prototype._updateConnectionState=function(){var e,t=this,n={"new":0,closed:0,connecting:0,checking:0,connected:0,completed:0,failed:0};if(this.transceivers.forEach(function(e){n[e.iceTransport.state]++,n[e.dtlsTransport.state]++}),n.connected+=n.completed,e="new",n.failed>0?e="failed":n.connecting>0||n.checking>0?e="connecting":n.disconnected>0?e="disconnected":n["new"]>0?e="new":(n.connecting>0||n.completed>0)&&(e="connected"),e!==t.iceConnectionState){t.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this.dispatchEvent(r),null!==this.oniceconnectionstatechange&&this.oniceconnectionstatechange(r)}},window.RTCPeerConnection.prototype.createOffer=function(){var e=this;if(this._pendingOffer)throw new Error("createOffer called while there is a pending offer.");var t;1===arguments.length&&"function"!=typeof arguments[0]?t=arguments[0]:3===arguments.length&&(t=arguments[2]);var n=[],o=0,i=0;if(this.localStreams.length&&(o=this.localStreams[0].getAudioTracks().length,i=this.localStreams[0].getVideoTracks().length),t){if(t.mandatory||t.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==t.offerToReceiveAudio&&(o=t.offerToReceiveAudio),void 0!==t.offerToReceiveVideo&&(i=t.offerToReceiveVideo)}for(this.localStreams.length&&this.localStreams[0].getTracks().forEach(function(e){n.push({kind:e.kind,track:e,wantReceive:"audio"===e.kind?o>0:i>0}),"audio"===e.kind?o--:"video"===e.kind&&i--});o>0||i>0;)o>0&&(n.push({kind:"audio",wantReceive:!0}),o--),i>0&&(n.push({kind:"video",wantReceive:!0}),i--);var a=r.writeSessionBoilerplate(),c=[];n.forEach(function(t,n){var o,i,s=t.track,u=t.kind,d=r.generateIdentifier(),f=e._createIceAndDtlsTransports(d,n),l=RTCRtpSender.getCapabilities(u),p=1001*(2*n+1);s&&(o=new RTCRtpSender(s,f.dtlsTransport)),t.wantReceive&&(i=new RTCRtpReceiver(f.dtlsTransport,u)),c[n]={iceGatherer:f.iceGatherer,iceTransport:f.iceTransport,dtlsTransport:f.dtlsTransport,localCapabilities:l,remoteCapabilities:null,rtpSender:o,rtpReceiver:i,kind:u,mid:d,sendSsrc:p,recvSsrc:null};var h=c[n];a+=r.writeMediaSection(h,h.localCapabilities,"offer",e.localStreams[0])}),this._pendingOffer=c;var s=new RTCSessionDescription({type:"offer",sdp:a});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,s),Promise.resolve(s)},window.RTCPeerConnection.prototype.createAnswer=function(){var e,t=this;1===arguments.length&&"function"!=typeof arguments[0]?e=arguments[0]:3===arguments.length&&(e=arguments[2]);var n=r.writeSessionBoilerplate();this.transceivers.forEach(function(e){var o=t._getCommonCapabilities(e.localCapabilities,e.remoteCapabilities);n+=r.writeMediaSection(e,o,"answer",t.localStreams[0])});var o=new RTCSessionDescription({type:"answer",sdp:n});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,o),Promise.resolve(o)},window.RTCPeerConnection.prototype.addIceCandidate=function(e){var t=e.sdpMLineIndex;if(e.sdpMid)for(var n=0;n0?r.parseCandidate(e.candidate):{};if("tcp"===i.protocol&&0===i.port)return;if("1"!==i.component)return;"endOfCandidates"===i.type&&(i={}),o.iceTransport.addRemoteCandidate(i);var a=r.splitSections(this.remoteDescription.sdp);a[t+1]+=(i.type?e.candidate.trim():"a=end-of-candidates")+"\r\n",this.remoteDescription.sdp=a.join("")}return arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.getStats=function(){var e=[];this.transceivers.forEach(function(t){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(n){t[n]&&e.push(t[n].getStats())})});var t=arguments.length>1&&"function"==typeof arguments[1]&&arguments[1];return new Promise(function(n){var r={};Promise.all(e).then(function(e){e.forEach(function(e){Object.keys(e).forEach(function(t){r[t]=e[t]})}),t&&window.setTimeout(t,0,r),n(r)})})}},attachMediaStream:function(e,t){o("DEPRECATED, attachMediaStream will soon be removed."),e.srcObject=t},reattachMediaStream:function(e,t){o("DEPRECATED, reattachMediaStream will soon be removed."),e.srcObject=t.srcObject}});e.e={shimPeerConnection:i.shimPeerConnection,attachMediaStream:i.attachMediaStream,reattachMediaStream:i.reattachMediaStream}},function(e,t,n){"use strict";var r=n(0).log,o=n(0).browserDetails,i={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}}))},shimPeerConnection:function(){window.RTCPeerConnection||(window.RTCPeerConnection=function(e,t){if(o.version<38&&e&&e.iceServers){for(var n=[],r=0;rCode 39 + diff --git a/examples/live_w_locator.js b/examples/live_w_locator.js index 0854a86..3fd091f 100644 --- a/examples/live_w_locator.js +++ b/examples/live_w_locator.js @@ -79,7 +79,20 @@ $(function() { }, decoder: { readers: function(value) { - return [value + "_reader"]; + if (value === 'ean_extended') { + return [{ + format: "ean_reader", + config: { + supplements: [ + 'ean_5_reader', 'ean_2_reader' + ] + } + }]; + } + return [{ + format: value + "_reader", + config: {} + }]; } } }, @@ -98,7 +111,10 @@ $(function() { }, numOfWorkers: 4, decoder: { - readers : ["code_128_reader"] + readers : [{ + format: "code_128_reader", + config: {} + }] }, locate: true }, diff --git a/examples/static_images.html b/examples/static_images.html index 6477d77..df741ce 100644 --- a/examples/static_images.html +++ b/examples/static_images.html @@ -23,6 +23,7 @@ showInMenu: false + diff --git a/examples/static_images.js b/examples/static_images.js index f07df32..1c2c1b7 100644 --- a/examples/static_images.js +++ b/examples/static_images.js @@ -1,7 +1,7 @@ $(function() { var App = { init: function() { - var config = this.config[this.state.decoder.readers[0]] || this.config.default; + var config = this.config[this.state.decoder.readers[0].format] || this.config.default; config = $.extend(true, {}, config, this.state); Quagga.init(config, function() { App.attachListeners(); @@ -94,7 +94,20 @@ $(function() { inputMapper: { decoder: { readers: function(value) { - return [value + "_reader"]; + if (value === 'ean_extended') { + return [{ + format: "ean_reader", + config: { + supplements: [ + 'ean_5_reader', 'ean_2_reader' + ] + } + }]; + } + return [{ + format: value + "_reader", + config: {} + }]; } }, inputStream: { @@ -108,11 +121,14 @@ $(function() { src: "../test/fixtures/code_128/" }, decoder : { - readers : ["code_128_reader"] + readers : [{ + format: "code_128_reader", + config: {} + }] } } }; - + App.init(); Quagga.onProcessed(function(result) { @@ -149,4 +165,4 @@ $(function() { $node.find("h4.code").html(detectedCode); $("#result_strip ul.thumbnails").prepend($node); }); -}); \ No newline at end of file +}); diff --git a/index.md b/index.md index 4394d01..5e387e8 100644 --- a/index.md +++ b/index.md @@ -7,7 +7,7 @@ showInMenu: true quaggaJS ======== -- [Changelog](#changelog) (2016-04-19) +- [Changelog](#changelog) (2016-04-24) - [Browser Support](#browser-support) - [Installing](#installing) - [Getting Started](#gettingstarted) @@ -436,6 +436,35 @@ individual box. The remaining properties `drawBoundingBox`, `showFrequency`, `drawScanline` and `showPattern` are mostly of interest during debugging and visualization. +#### Enabling extended EAN + +The default setting for `ean_reader` is not capable of reading extensions such +as [EAN-2](https://en.wikipedia.org/wiki/EAN_2) or +[EAN-5](https://en.wikipedia.org/wiki/EAN_5). In order to activate those +supplements you have to provide them in the configuration as followed: + +```javascript +decoder: { + readers: [{ + format: "ean_reader", + config: { + supplements: [ + 'ean_5_reader', 'ean_2_reader' + ] + } + }] +} +``` + +Beware that the order of the `supplements` matters in such that the reader stops +decoding when the first supplement was found. So if you are interested in EAN-2 +and EAN-5 extensions, use the order depicted above. + +It's important to mention that, if supplements are supplied, regular EAN-13 +codes cannot be read any more with the same reader. If you want to read EAN-13 +with and without extensions you have to add another `ean_reader` reader to the +configuration. + ### locator The `locator` config is only relevant if the `locate` flag is set to `true`. @@ -613,6 +642,14 @@ on the ``singleChannel`` flag in the configuration when using ``decodeSingle``. ## Changelog +### 2016-04-24 +- Features + - EAN-13 extended codes can now be decoded (See + [\#71](https://github.com/serratus/quaggaJS/issues/71)) + +Take a look at the release-notes ( + [0.11.0](https://github.com/serratus/quaggaJS/releases/tag/v0.11.0)) + ### 2016-04-19 - Improvements - Reducing false-positives for Code 128 barcodes ( diff --git a/test/fixtures/ean_extended/image-001.jpg b/test/fixtures/ean_extended/image-001.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0bf2ce26f8d04bd1f265058652e98ab6677aef82 GIT binary patch literal 88067 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 R3=)Uyu;L{CDx6lmGK5Bn%W33?dvX-2dM4|E2!+ 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

h3tgz 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 Dn#G-F literal 0 HcmV?d00001 diff --git a/test/fixtures/ean_extended/image-003.jpg b/test/fixtures/ean_extended/image-003.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c04f4e8a05d9838e406d2c9edb221a6a5590102e GIT binary patch literal 95708 zcmb4qg;!MH7w=F~(j_G|fV6ZY-Hr4BBF&Hk42^W>&?$|8^vnPvpma$0kkXB`ls><| zx85J{_PuwnbI;!QtkY}X&u5*#i+?u&#Olgw$^bMp008aZ1^BxRPynE#{U`rv^#24C z<3EjsiHU*v4C~pm|2^2aIM1+gv7bG|!Na@s|E2!+07!7qO)wZS(3k<}Bxo2UXn*?v^#AIKiSb``|DT`(&@eEuo?+wQ{xj2} z0Wkh||3B+Lcl7_6|DpiT|C!KN)%~&xc>>tDS^1tO zzR(;>Ar!ttX5>w<+U{H*}!<(6*DA0hg9ji@VoyD$QG$1iyC5({YAgPe)RH9 zB4yTo`b+0$^`2R5 z#C`9hy)l~kN0v#^%-+%HODXTO6h@$mbQ7+e%B+)0wDVr*5X01Z5%01a`3zBrD5lx6r2q1!=F^DNuL~w zizbp|h|S{)Mfa1Vh6C!;?GA?PwDm$I2O{53GbNhk#;M@s*dm$3adXL1Gq;%CuRBPh}7?OgA>D;}V+=F0yo_h~Kl-ttDBUW3U%wVYgg6@vC z4JB(0iFdfzE{31>@}PhMaXBY7tFw?kBMq4yui>H(4ktu9!Exj=NP{m3Hd-f;UAoh= zbtn?};_g6)RGPR1x7xFvkwnUVSJUV4u+5$4hEH(hCb+&Zf5Ze8@mVw%O3z2}rVP%f zjB@1zr)SCJw)lT!VP6btX!Hcn30}HB*x6^X3m9n8_U06Sl#MKP9H&ejr;rQl1=fLP z1U%tU(ein(`cCyDUoTSHYzm*?=4rzS58Tiv3>ts^yv0Iean2I=~st&)BOkT zLM}yidN!uilGo6*S3OQe%8E&!0IBBIDp=M{+L@_Y)WFbhmH{U@+OC;btAhTh8lNJi z`QI)L8ujAtF85no?z&ra)BP_RZ5gfElhydF)vLJ71ZdBT(svU1XbXD-0<@4P@j=Hn zu~#eb>EB7Ao1kC!Iy4J_qsNKoDVCPIPjB8H3@Vq~I~I{@lK~{k9(b1wM+CC2%`;qEuo#4#R|4x_j{_p9EX|+(?=}*<{r^N z94+GR4CM~e89i4vRL|JKmuTh?OQq=mM)r$Dt~vF{S4S{pCD9B-%nL7pd`+(!@W#K) z&)AT84srL#}r{&82P`9ra6xrXzrQTNJ^_+D}iSqU5bWh}bHfr*<^XvK7 zfsXMSrO#aQad@r`FdUdG%m;agEMtuTqyA{HA-MkbxoblbU6H}?14gT5afHg241H4cLM z!z-bmJ55cjNr3LONSEp9FrmY;WIr~Gs3o9h-b->-jCiBstO5$`W1t>3*+WWfd#Q}(!kE^qV!_7r0)pEQ zPWWO)_mEl%Tv2O&k?uH*2aLtnn~@>{DtR@Z1%=-R?n&IwiMV@SJ}~3w_farufGNgz zIKb15k;GcG5%_~lxXOcugbK+^5pF=QAm)k&{~Om$iQ!GgYDqB@ri^5FPia? zerNcFHAxNlwV8)*Q=|e=(3D$v37SAbL$Z`iI?!lN$1(epuGBVCxr`bzkn_^mSyxQG z#<4Oi_F0zO`Evp@vH0{?YoI1d@!B7*L`nRugMT);Rhhk8aOj*1!j;+W;ir9r9`eAV zTqYs$fmx)*GR!t`U3ekiWHGpVVs%9vq`)Lk6}lvrf?3!P5~^iW(3Id~QCxSxOyTzZ*=< zg6-Pwe)Yo7TPU&Ji!HD{uO#UQ5tKX8Z+Z?h5|?2JwI|mtdw;5PSG7RWyQvs-I<`${ zqkOFG{oTlFdshmprr%qqwT-_og+p@EjBB zromXWY#qa~F(73y@k%q?pCzC6|B8sq@?Ml9E8p;TC&n;Zlw&NPEM3g`R2Y8!Jj!WaoM{`HXQr zxM2eNY9@e4VrqobhRs7D+`gwsIU~hcoI};H(iW%4S)4lZ7&9i7o5GAXREOxmv^T!b zBXLh5`{U22z+8>Kdu*yagd6q7B()G;o%g3DAvaQuS_PojTV6PtkUsJAQa3y23c1kf zgfHGz1}w$235*g^Qlau{G-fw}n?nAzzZohYwvui>(mwI+n5?+g$8G#c7)AY%0ndcy zC1Gm)36 zFsIOFTla5@78vsruBZK!te8;Bs!M=8=Z(QN4UPW_3oR5$o+bV9c1)j(q_`}0QhQoe z`18EB0WrOdgBQk@Oz3g8+-#xFH`fN}*_(s*w(B*GpMSzg zB#r_}Ak zTM*{NdGG0g_nLf8Nl|EG#OPw>1xM*#eTT7YLsj@f)0lNYb7hD@u!`%(kjzfx*znNF z8HkGOidU3_a%q`@QA*#aQ8DKAkQPkHr8fzn>Y2$(-XJtNN=inPF>pLLA39W%Z}wZK zIz?k2GrN}_}q@@;m+V>iQ6tRvX)Tpq}#xRNb0q#l4RQ?wZ2Fh*&%(f9^zPUby zV>IDw7zg$}cLo@Zjvti$*!>?=dhZHW$9~KZmv74Brt8)F{{_quU$1sY*<9Uzd}N>Y z;8xh{*mVdf(L4Z-AEZ~NvxUu&Q5rDJOC~2s2B{pr0YZ{mhnBvx%HI-l8KDrlzaJBx z&LZtBgNuq9+Rm~>`oDBkGbJnke4SFW+P_9C5tsdrs#JV99RL~M5(uP=B~1)9RM#EH zH$Y8`>%3*B@Mr2LjG;b!j9}mA&LU&iwMuhyjswrX7zQ?`E3N#_i_pPrtH994onqsJl){=h%Mf^uVM6>_q^>>AO-AU{ zW(EBRo=NyKE2BIttL^hY$~+eCI>U+{z6Jhn`RY*P8D)X;;EET2ZmC|-2$vUs*N{24 zb8{|3c7R2~o8Kva3;=EnZL#m0X&kTPK~-^c(KWeW???rFtcEuTob=!2J1TFwuqF}oP8*jrbcjv4bg3|Ql9aBqC)GodkZ zAU(p_*F;#pxt~dAThkSjI~kOMNW}Gbx8+#E!ToF-iKD7?#m{=96IovD*wiJvDcDde zF*tUnp8u|$z4a?Q*8!i{;gXCp1CKP5SI*C_?8zsNdD9fB+Ot8iq4J%O;2Wf1`Bliv zkkO$as%ggIt^1u{m&QPbPeHkODSrF|wu_6OvoRw~*Mt)-K}jmDGmggo(Y@c*33?vJ zqw2uRvw6t7sIbq4#|%N$b6-B^vC6dlSMGd2)`K3HmxuX1p}NL-;_$CUh@1#x%ROW3rP z(ouG=##ZxH&KJ7V2L0^#Z1xeX+OE2mfr$vzx$3wh(PUa2Qe2}bW>h2ue!14pyF4V6 z>tsT`;C-}4e9baiCl|I<|EjPi$kiT`O#iu#=xZS+skZ|9$)eC9%~$?_Flly*jG>nm zu{o34IC0t)MnW72|Ep7?H$?SfLAQt8Y*O0h%=Bb&)h|qEfxQawxcb_Izks6End3KP zm!dU~URRDKprg_p~14}uZCRWJwRbhIRrc42hQPt5U1yWj1`1clNB zd-Z`DFO`)W$=4qursr*{3=+A zWK9nLY!OpxWVz-H2IdO7E-5;mu^vTQBHB)^>WU(DSt?8PDz8jVGT1F9{N9V*E&t2A zRJ!uiTwDqAG#pkMyX=zrj_xe}zE@5Cz+d|tCP8IFMixzWWEE5O?5$_l3J{^&y3D=SUeTbl(%&7=;Ppulz=ao~kG>m^i8M zo-$1gZ4QCw*$dR2$hQ-kU_F(K4Qgnz-BiN|Mr!F(d9wDC*}OXa`sbP1n$84+;$6(N z;!)$ll6WEsBN;gsT`79)#ci<8zuw2U(O$UdfB@6h#rM-P{_6okXjI(lgJ7!95-HWsXnHob)3w3 z&3Rc*B|Py&g-_OZBh_Sn+LE7jIjW@rsh$xl5^S(Tg5_5I10}FE=G*ObK3DDpLUSFM zhm1x-S)@)<3&h{rqH(ogvfBRSSR(%JM!xyYYS)6QqyqE%=AXppHmTfNJn7Bv2Wc~4 ztP(>`MJiRj6J2qa(pDes>!88D)5;m5hmi%*+wHdka{)9qfC*9~KZBW_zMvdBkrw3K^%T z^dyQ9*#Jd?!wdAh-oVb*-qmm{tR-shz3Y?>5$nmY?gid&) zR#Z*al{S9;j9x~7!|G2=evDdxy$9FVQ=W^GTXJ$oS;|asd$7A6qSR1m_!8PjVR@tc zPISD3L=nDse*rV!U!30o$N*co=yLDvxS!#8Iyt?0+qeBx6;U^g2r?FISUMN7|9N&T z(~^r06*R)5$P?Xkz#_W|S^JW~JIJav|YJCVNzF zZ?#+T=T5SPPrK z-nytW?)LIEM)b@VuU@Qlm!-rE^T`>fU7q>|>DW$Qpim-(4t724f%e~SS1&rb6if}8 zdaqY*Pp&U%%=7$DvU7>*>< _#6D2KbwH62T+7gnX^F-lR!s}vHJtGRN4V`3#PPi z#aY!{+2x3`n@&pu%W*G0>y0LXU5A6f=Y~I`N}G@ki~bjb{Rds$#wtaCm7E5g9 zo2pjX>Xkv>b@I>6t`h&-B8RDCr;l6>&4-XnDj|!z1>ic=6;DgBM&$>E$ym2S1^i^{ z<)hcOIs5a$w4^JU+=!T(>tve@u0|J2k1NYuhnF0}!$WlV>f`5U;)fft#uHr`E`*;~ zl+}o76ni4Ifg5^z;vi7g5pV9PjAwL3K}z**Ex&!sD-Ed8;h50mSBzxR>s3IyW`;gB z4(^m@94Q+va2Tb=>BOu63>!}RPVQjLOo|PKR=wDLp$@D>7q1?GD3`|zHdaREBR5Yi zP2v^gSeyh?Y_5p1D>6^=9$CJCV+2!bidsG&>R;{GVHaGjxitu`G~H=6aT}hpP(?I^ zUA+Z|Zq6Z>TIMgP%UudqI*GiRQP|s_@ua(}zD_aUO71=^;NqX(dU{vKMW(-6ZT3{7 z#!BLEnLCF*O^okbpJ;sh#62croY)#b{ADcQecYn=9}iXcW2xV?>7m}0Fg8})*cnNt zbVPZ2oCHUS+M&9m{R?qP)ieN&5=j`IyiGNkiW?<+mOx~yy*63ZjK>ixv-N0nt|T|?Z0Cz&jK`)JDWtglJ=g~%g#*}3SIcrefqsueJx=O z`ahw;ZQGuRG>B%`$Ddu1Jz6`R5Hh;DCG=AHB3lmfWO4nVLYb0PZ&RA%j&({wbqnKn zgIv{h!qLXm8MPu#Kznu`3hb)!dFV}u_0mY5+T=3@-S1K!{gRUyuYj<(EST6**b3$P zQ_M{T!)%b(?_uh?lm^1eP2kc~&CMmtL1=B(u{nI$+I^cxkc!tRu)we&GLKV#si?A? z`Z*y*?ZxLp2GR9i?n}>hitU0+7MK&+^GtEtqldx#o71i8E?e=QnYMN@{T<^ErLuPFQI$7=h z8@uDNh$7lf$OqxonLvlBo5q3`s^{r>pI8er6}`rl{Hrptr|!1DewDQLA`ILA!qo%L z@8k6H;_ZeHT2BV8A1c0Udr;*bDU__-I1tgarY+1*jM1s~MFs8KiXQk=6!qG)EY%71 z4HQ-MMW-{rgOCGrurA}s9zF^UMpaZg%8a3DbG%s;Uy5OF$3hNYf zj3FLd@`@Fn@Eds7OkU@Mb1V7w*fd+MPH0-sOe5W_f=zun(J-;UBT@M4SnULXm!N$a znGI)D?3AcG&ozBAF~vvL13=v{RZ2SJVfC0jsJ9!Yddw*c)XfA7w;lm5oI+{ep zo1_g=zAG}Zh{1;qTnH9CMPp1mUM~MTXUA6e5@GN7H_69!N|uw9m(3EtOqW>jt)X16Bql!t^>gdb8w<-czIc z-eQXzn_#ZCPeGz-jGC9=+fh;1_=hkL&CFzsA3 zQ?*pY#`9M@{L=1hGs1Q?;h$VemiWx}JYO$ArzUtSV3uzwMQyk$WZ<0`HTJrHaY%Je zyndLsFhPLuGg6alR0>u*ERM;}uSRV0SLq7NRg=-Iu_+Nn9 zR;Tqzy@m`vTiPOZ`q!FaDN48asK2OObGDiqKsz@@`m;$iF=5IBEDn^r ztgHCfY@4O0^xPRbV>_@Vyg*fsG?tg?69G$UTT~s-Nsuhte(Bs`(+iFt;AgQ40lQoK zQkZ*A*kbh@>((b)n|kjc)rjfw>Jy>YOgKA0y|I@Hah)khTTvPorMC_#ue*`3e7Zr~ z4$T$k`5}P-qH|%tLXDbz39RuYg$7Mt>=RGuUqHPX13Sxw*sJx%`v8A~&o>K|W{#y= zNof&mnZf2vDMCZ6ZSz+e{$wdTnMS^*kP&c#z++J|zRT&IZQq9Xf|!{(J?c!ysj|iX zAGjH}m5Pn2;k^q1$tnuf@k5xXq;OEdglWs^H+>83z3+JA4}$MmVD~!G%E==H9-v^d zas~uq3<8SZRwq=jjiYj77HrKfKE)w5=*ru}>e7htMhw5?Iw7laEM7w*5dA`R8Imem zN~c`r`pd7Xds?U+`R* zqqa(ohw@oQ{^;S~sjHO-?DRP-aa1|6shGM7S~xdz)89DD++y|AB)v77oo71>5o%Ju ztI>J3=Q|Q#^T~OyJcK|02LVNpVcMB$`;a&R4+V-8{r zK)<2w5R@D_7BW3B&-IHH?ia7d5HOM~3T3x2mwy81yj0(3L1EUN&Fp~{1-(FOiU;E3 z>#vP9wzu=ICgq?D%*YMVmNC!mwi{UmS)*?wNb{ycbzG2wdHyckWGFW}udz$G;~%%*5Y z$vcZm7gSOhd4VZLOxW!$QW5th@zL?E&rR&X$0q)e-gt(f@4U2H1TwM8qIKd`H}k_h z29UMC0JF2)$piwIY;)uDzksBBEbfo>)>g*m-eo-w!K}&kXL45LF~<}3;8{>A*`YFj(_Kf!8v#Y%rM&q#jMa5}bg$@2K%~elf*GJx z@$x&tveo{LOsdD)Xg2SwkO8G;oD&6OZr)Za|C~zj3}`xTdK+X;!j&Mu&(`W}B+Vbm z)SN&WtDtd${j3-YPs~FbYGW+W4ViK`J1vcuh&Iq`ju#CX?sfffLTX_6UUc5bfQHjS zL)e!5M^%@;`mU4|edSeqHnvb2otqgg4`e1Ay!{UHJYIQb#$blC+Fx`?UwVNk5pB!y z50`B2z4ru1kJ`&`i_0IkwJPIIy^^wKgy)fGVQ+N})Ks{D-_93i`Wq+NF(1FC@Up<3 zZ^LOK29ch?r_^>H`j;9BNXhFe2JQJ6*@120&J&FC1Df0_zDARc_PPs2EJSk-h@$J9 zN4)Hdg3&w_VX%+rLZe3PdbChqb+%gE!ik0_&=idX(EdwIJ3y z*&23U&aUf6zn#@I`^if}`@Zq1n8sj&B5lnEp$9q@Tsiz1 zchQYL@Mcf}$geq)$h>4=G(@dMso@vBprul17+Dast=C)^L=1+9)|rLsy%_Z70h_W~B?Qi0()riLm&!x!;kSqm$iUw!~SFN7tfA0bQFfjdK37v3+gmy|l*T-eNHlXka)oyND}n_n2q zXz}k{$Pg%Y4VFRX4h1bM-vPG9^(CK_pez*v!B6K82p;5#)i$Ms6y(~kIxTam{#|kp z5sE$5=8pXwlt-*1EhhfD<3rPRNRe3pZN{81g-6eQT%)GLqZZjNKzwKPhKsLL$)&iu zNWHqmIuFE79}bIP|IYHsn9ES9OZk%M`@04o7U3!vrkljL3$`0+$qG&|9Wm*mrl^RLXm&GuQcWf0UQ*U%+2YJyLIhAD%JqSl=a| zRiwV0rIXq`<0vd@Zb<>I5;T}LP~f?5zq1e(m0MDI7qSD`X({gMF5T2_f7TMu$4KR= zuRM~qZGz8bL=`bIvQ^`EJJd9`I*z2_463|i-R!ng4iSBS*9Wf&KhW~9dw5aS(XX=g zrOY!KCcz0ETW4oWRtd0Zd$es2%9BL-+J;7`RCRs^wX=O~_tuq$D3~pRuHsPly!Z5s zp*UD|Wz+O^^r^n(KPT5~0*0%{q_104+|Z8TX2!f+LEoH|sM zU=VbWxDk5vjxP-Zepb?qs6cd`MYu z)E9?TaK4Vi`4LN*yY-~Y-Yb8Xn5yArRSWkV+;KiF=be6BD8?Ooe3`zz z$8)a&L`$A6H(YmuYcK27ALE}!d9Pr2iW)t-b={S89Ux zpmeJ06iE4pRY!qP4}d4>U;>N{JH;GT(DSNGq5EbNrJzAC>5cZeK#ro8qoU0)jwJvL zjoqYjBsI28RZwG6DHS4%#Tha(O&a#2Fj9}F`tl~}Myd-r`#`9NHQX$xVKU-OQxdw8W&pGTemeyQ8Xe%;D2HfiRztY2p0bw;jn*3E3@ zntTzOBV~9)KA6pSugu1G=PTG3G6d%xK{3=|JB^=IX@DzOt|F7!OVS4NFFV1N^$XKWk23Q&$ZF@xN+Bxbc&V2q(YhrPnd6<1*A9^yau?{D zJP<1-3n|CU%C3XXAQnNrg}(i+tq%Gd(0kL8WKLx&Se`f!ck;E4V@Z=)tw2IW*PM!5 z%+Og$d^*w4!Tu{pNQbM}68p%!5W-7;5URvCShijlaj=MD`>nSl+Qd^(V96vr9_BkRH0paNn)4-D9E6XQe5Ff%4F z?A;{O%L!5h@<8(JetPZcLrC<<^uGb_L=1hDBZX3-T%u}L1A^G{zTjoGNA4fmBt?Cu(L-M>Ct$tyaRKJazW)un=H`V-bt6%|O?a=9rj2F5z65A0pbHdzo ze{_=C=jEg=l&O*vEVxr#xJOR;hTQ!++m?B&La&(X^cj;mBT@B{m7&eO6yTl0WK$7yeBki z35?S>MwWE)nt_nrl}Qa{Y%BSF_1Pmd-3K01{I}4~_Q$?~ z?V|4%KGgHDmrqsn9k&TfC=HM6OeaMZ!`eMS37r6uX|f6HC-I;!%-Rap!KJcRj`a(6 zP^y1xChPX7I8I?7tCI|MH2*~Sgl^2znc3VTZY%+~DGO4*!&SR0~l|)@bB|Qd!!TU)@cEOVSN_C@^ z%_juq1a`mT78FZCaA>d4c8=(Qan z_E^L@W_hR_pi3+WP6@njW$J_)U$5ODjfStE9KW#Lc)%#FTE34Qd`oWcTrO`+(sHl$prxAC-^;5shQb{Fz?FG~ww!o=cIY3D7 zxt23~JBK+-K5Cre}^_E*~LFhtbyLuyX(oxNfdDthX&QflKeOEAe#xP z5OB7}!`ZJtBWF_zfs%@a=(;D+jz=`fYqT`5IPxKi9>SL&Z61hRs)YlgyjK#fOD0;+NyQ?R!`80US*9LK^ zM9NEOK@KH$n<@3mCWPyhZZDvJMB!v(vODkMVS#7lebwvX27)SJ%hofcU|w@=+}h3q ziZPc5R%qCDGg2M@9Z$+zU+M!3g@E{C2y0Nj(zwORo~#(aqFE>+o)4@il@|7OMU^Cm z-8*NH++P?1Ec|psmK+ZxX>Plq)~36UPlWD;M0YTDBIjHhQHPM)3VM2Jf;XwWLUpC* zD-_%%e*w_qC`^5b<(cf)4Jep0BJ*?gaGr2mhgm@38x1;B;fV-1; zq>&+cG==>xPURUP6OLHt;R!Sb)uq^cEvu&sf%GsgJFNLGNms`BTAprQT{$I{d?h6c zD60t%1@u1F`R5|;GK3`_jB2|%odK|^T)N?o7c>{(g2orI-ruxJIGY>r-)9euIDA zYhOQbN@iR&w5~DNf_>{*#WL`X9t2~1*=&o|;1|N&@=CORhzUXh3GF3|eZhJzTXsp+ zm$EKJOx|=C-FIT`{dHrf2xFR+Hw^J(Dln_+w9<+^@$zJ<=nYj+jV?v1R2LY$F@nSLo?fEusw zpx`qT1_l(8TVao=yuH*on{?DPlP!N*`5Rk#tZ$x^_p&g_ZAYgF%3$lCqzU_ZfTWed~LtIt0wTlEb-P}0L{IBB(iqzHcMP)oM9miVdQO1_}( zoH^kr*@WVf8~zIjn4~r17@IyJfr~p8SHaVP?x_OI^ZP>B*zA%jDXje^K`VuQRh=EuTwsyQE;^hj;$%w{{=8@KG5H694DYPAgkX6xml_H%OeOlnle9{|3+}~!JO6m z1K)n7@PydOX9IZ&9UD+Z)OTr=CM{8l(^PZ`S5IOLGv1lowt=O**JxTQ!qcTT^c}&n zhWCpA-{S=IlfnJYzkt@^^Dsuw>claMBbv75BTwh$OrIA3;WGl$N(~;{MK?~KNxR!Y zQzzFKJA>?oe%D8|Vo2SiJX$RXYu|;3QkiVzCQahR+S(57dKFaM(;S5*1!pHVC@@eb zK+UJe08zTL^Tai5#LZ`(u$8yYP8(>t?(fAHYge(`td&mM{x>&8Px)+>{H9W48s<~*#mbNM%DQwpmhIgTGbK1^M2y+qesV5-IRIVNuY+?6?eP7?u3l!hq6zu zO2UQ)P6q6|>uI(3=>cHS_C5x_{1&2)WttF#RIp`4pS7f#4xC|FPQU{Q5irYAfQ=`wBq8OJm~s93k@ZGPtUyB&Qs;|efH7d7LIG} zxkUVSSbyH9qU)|ollZ_3%XN62`A)3lN6`)7Rckme%4Qka>WEl5tRPVU^ELc%?;aJ& zr_|8{SKG^hT}1u=1&>UK-d}neS`_lXdugw_EGlDoS*4@+KZR4KR0*pLSM5v-kizj? zk_jJllAb-QXCjqrpBKpD9I2Ys=(cj)Pa^#)91y*nu0iKDcFEb4#iEJmFnki_5}Lk#+~D8*$bjrDH*=RpxT>&c}T&nI=m#>ydM6*E zuCT5IC3)>y;$wS7?m5-_gsEdLx%Ol{ucD-50f8z(dR!Ym!Pa+ZzC5EppAn0uXZw$CI5~}h40wrclSP= zEua?hZKmjh>ppD-r3|`8!x);*9Hu<*#kI-VExCLu>jG)6f!4LQVU0z5*e>ma*RG3~NVB^0)>;fIAG zA8h6@9>2`$2`;S}b6P4lLyD`}c$cgxn(DF79yPrNS(dKk%E?jRGNvAcN|S7v9(HqH zwmSt^iKe1`26c+m94c+EMb2n8i=+p^UiiBj#v&>{BW_xQ zJpOibIXm40{!yEpk|J{8E(3aTHRAc-;R@;KYpIHDUqd66>PZk=p&+Y+&MYb~mWCV_ zMi82U;>#?!W@x>gaD^wn7<|nRHX)~BrKh!(Z~7K08QlKn%J7Z?xmFvLPp)rr_T%eJ z=U$Z3NPSRq?)dN4Sp*5vh}3+(V1sIC^$hl9K?KH`7c;BYScsZ3->*ACg9{;%9gm{F zJ*8G;jh{y^ySmxzEYpXt#@#jV`Hx6_j8idiE3dDrWk{Ynpf3(K+qbeXP|zGv56Qa! z6Mr<<^MwY_xuf-Nq=0v(znx&9dzjj8vnCyD@c7EZ+T_}Ba+!n2JF}f)nX`>Q33kSp zN1>qEsG|=y-5(aV?`U5{AE@c+ zZLbVSarXbi;CHFm{ZfSfV7?iKFKpblK|Y%gL2Fjt2=?sTjMe#E2^$?e-5xc!eJT^^ zeu;<|)1FVWsJrLg6s+xQrS2?=mP!TI^Px7iMCnnq+1eRd-9?-+~evlNIo2F z#TfLIc;QNJpyfH*&~7-uEkCn)JbwO&FZ^dAq>@ogyZ~dzPqy>aD{rTXcCAaBAlfRk zj@C+*pp-1H+dg?dA>sWd$XghW=1hbI@nA(g&k$=v=X6>E8Yd7;FIZWRIs)yj)4p^r zLWNv2mMs-K8|5O*KFYZh5zsC!$?bUIz-rij=LU4hRJeX{1P5bos?Sdym#y!?_nswo zk1XE2IxZXkFg_@y5IppA=)+Z=c{%d8HY~h_*IW0|(x+9|{E`n~_lCgXQGW@hZ)+*hv4}F+%?O4Po6P0kkqVc5B3J*@N%Z;u5cQqWaJ_G|k|08e-bwUM zh!Q=@=)HG|J{Un5odh8UBaB|dFnSxKw@9=hdYw^!N}{*uEqDHR-L>wT5A*fB=bYy~ zd%t@>`}xa5YaQ{^Qk!P2X=PndyT7GVPd9jQhi612D{mt8GY zOyzYfCGJTiSYyvOA09dHi?`fEDZJ}*?6lasXsZhU^Y}h7 zuIZ-Q_C}#IaOKGmQ$Wh63}Plw`hsVod_r2QNaB`oKFUet%XNrzOqiMWJU){@C}6o_j8{pmt8V?` zEAk?B*2iXe@%8yqPd5?+SMe=6H{^!#;u>?FxqBk+%D@vgoU|Qbu#oY4y zoEpliso@SZn)(boOS`{}h=`ztn*@w~7sk?kFLZ^O9E*<6UqOt918duCa$w6ROe1!d zK^1-$+|mh#Mh=p}7G9R1L-BTiQ`6=BPc0g1Q_FkZpzP4O7p;pz%R;?!=3h*m%-t(8 zg-%nioOJ>H!>K>5i9+m3;!~#JijFXiEvUeTY{1(S8*r}n8!RbFJOrl&Sqp?3CvpBL zj?Ydk`SNjN$4pJk`tCa4Lyy9@T~|p-_kFyQY{(;RXX($f?uf$Fs#bHfrRW}zR7j`@ z95dU5D|Kru-lK@o`aOT>-}@KXgaFw(r>YU*XU*$%RNifYyL2e*ae<`6Z1ykh$DNwa z-4oL)L5;4Lif6&T$I36HqLPGbrGaoEZJmTK6t>o(ojeSoQSrtafn9z4h_q@HI0<6t+YUYKj>(!w{c%A_HE;& z1@F!W?Q_Sk=!iB0b;3tb3y?&s?ygA7KRiiK2tv?qc-_-3<5}G_`ol@nJC9}~%dHRE zzc2*DegTY-U~Fa|H&`^-8Z-;p*Rx{I{XzF!#cdxHJ}SG`>T4VQ4==Sw&qK+_CI-S7 zJWf&@!UTqu{}&|d#yq#TS&GLpc&IT{z~}hh+}xzw?YybwaL!GrX5yN_FEXh6x0FCq z;>oZnt9-Iel|<75{M90R7eh5&63f+(8Gzf#SY{bg_5gbn?bXfNhL(8bpf8eUN$y`I-*N};9dwI(KQp;s^sx4dxPJ- zPS6(-nR4Mi*dVvU+bTtm`m)vG8n<+i;xL=*(x-q^Z+A!a1BboH*TGeEtdM|>0PL@( zzh;*&pSnITjiqR~{7G9jBz$i&T--Wyxk4UG-{2}OinQ*IGgd5<7)5HTbjlN<48V3;d@IGi>6Li+gr9dnoBQ6sjdcJ!PC6uJ8kFBg&5Z2z-yrRMxu zghzORoQ|c`SCFJdZT_1Mn~nS?&AcJyY6dRnD(s1jKu!Rf2u@}mVk)$pbxBfj*htxw z{UkIo5s8>fP}dKwZdDIzU8<}&iQk;8dk1C$$iCF^9r3IldT%+imY*%iKd0>iM^0*| zuawd(tD+lZ&mJcok5R3Ol$EzGmJ5kPTTM*m*FtP%tB+@%u5&|=&DVaZ$qKb0|FG-QK%nKw+L;;wL68x?q)m zc!hgKGeesxOSjhX-3$Z#8<2eF=3f^6Y2*L!w%S8@#XKSV`75_PG1^Jk?w3tX5A$)2 zn^})x`?U3;C-Nu1U8>Vv>7;wz#M|GEc~EC@n*D?ZReUkAKJcT{2wSS$7MczWOLb}` zG|ryF{OLAArx{t-zd!xr<6(mVtnhZ5I-A@6{N$L~q^O|lhprJB7GaRE0q^K2pjFlv zU4}J%PGW3z)wPwhQy2f?EgU{0c81V3PKyuih8*s$B|)GA*4X} zOPDI~AKp*NUqEp}$dJYEi(e6c|9bFmDgIs77QB4_xhn7qDyh2iy*jONkbk&@i%R6) ztgx7_YV9iE!w&OiGfg$i$2>t#9C*$CY9ogEV>CNrq}=~1D`z9t;t3G9)890w+Cl9{f9@G4TbDx+8r1huF~JD`252&Z@m0V z4mR}t+bLwatv#@nAlu{#(@0LawoxOY5f{v(7RN17V*n;ZSoia{w9N z1W2M-7&bcoj^H1j{Yt;qlvP*MZ_#gS|CL5xd|AWQQ+eve)=j{iD*i+x_C~$fn0}ij z3Co0UNwA-uZS>v1F)ZM)_6^6y;X4JjMq4p!P>o>Juuo-|zE8WxRsLCxh8w#{E}5 z?4gp`o8|%N7AL_*$CYjB`Aw4A049HyfE2L;4yW-oNqdU_^opWhbQwFIk8REvHdzIK zdFSbu!FN*m>xygY!9e-T9O^mC*Ar7VV!Qh`r}^^z@8A`mY<3)f?pY*$%DihwODA`k zJJL?M7S+qo&%hW*Jg)@AiTqxayNJ>%eigyH%iEUzj*xw~R4}vL1U||ZkI$uG(&fyu zd3Xgb{#v;?r_s^saU^Tav=UBW>=1J-XP4<_ZQS&1eAxK~nNij2;#2V6E>*s^ZBxq9`crK( z}KK?Dr(K2asSq7nsR8;KQRqlYO$;AfMw+Lxh9B~PR4t^*EcrQHrKbLDsr64 zw)(VE`hjGPK%%@01!lr9=bmr*_~?3NP&I>FBPLIkkq{Y`k~*5~ z*&U44d>Qa$52F29-5E$zYaiZqho>daSGm3257=Y^lw5T4Z_v>gduJom6*TGa36s5v z5$go9UO|qIrWx5o4TG)VuBnGkA#80b8V|bPNnBf$rU;+&iSBjHBu^DA)x<~=?^&I} zmbdm#!Ixr}TZ%s}M+c0J8gjUbaJpl><^HU!nSV%SW!dGn`yYwKiZJINI^dOf3;vVJ zSzTXRCNFD0=c3rY%z!KRj_lq00slUb-r#}%D@EC^jb^N%R=?ulrg;UEwLs|!nLeR3 z=!a;WZ%Dqe&teA7`BDyPf(=-7Nu?TWpyXd`KCxMxv@ze?z|g%g7ygH5vZnP|BSjCE zixc9KKl1M+YqEfB8jXr*V+QSKn=i@D0pOS!0_wB|L!9IAX#;y`?Bxfob1R&mU~AuZ zGNp#-^PF6r70t!3kq;u4{>x{aX#minQk%7YTD56FcJR9o!$JI&c>qh{mD)Wi=PF$m zoG5%)t5VVp0;drS6|E?6ZGv^mE4C|(^knEnS^tTb4F;P~ArZ?y<207<;kT{1{BIT=Ye z!j&>R#EX>uWs+>N1XRkt{9fGg>mS~C9{Fn1xnO>7r*P|L!^(@VBF(Y-=5iaqw5D>S z@Xk1o`>~6W>1pPhFrCusvNBnPuGz0%cR=xT18cs{!g-a(-p?i21YeP9SH_W=`P=#a z0M|i>t(ZP4mb4#(NWp`<_pR1@s1qaX->Q6V2__+ATxcw)!}{AXn0*Mm=ruA}Lnm|n zEC0~Bu=(;2<5lH6A3LH)^i~)x=Qw1Edr|n@pxh3#zpH+7;{aEtMC4Pe33Go+MWTA# zr!(S(Go_9D+d^81tZCVDW!d(-qNv%X=TCUW>oQ8m#NKV-vFS=ZU}DzB+N~TVYyECm zcfQ``UescZ4bLUVPpef&DNpFS5A3Zzgzk|VIxJuG?&%b41i;&bTrVItCa0@C5Tewg$d7eULc6T0cS1$(>idJGJI91z-C}roT3Io8GFW z;50V zF}^QBvFj0@z4i&q+7#=CFZ*Wup=mrv%e-s9Ts)}br3R~{7XPL-O7zEf!dNOc4OanIc8x(*y z8n09)k+85lOFAC@z%LdL|8qq~n$(r|#bXNkd6=)w#*3P6;jZF9Qk@);I1Kyhwh$gQ zXoEHFU&UHfR5+Ev8f$-|46m1QUW9$1)&8WpK0diYPug;EP0r;e8r7~_!j~F{f?Va< zy(dc#kUz}uxbR(*EZ|VCY@af&Ot%}asHI6$O*vGGaFgm1xMs~kt#yqrCtG3hZZ?c< z3y#xtlE|yjb;NM8kvMSJR2t*UKzIq z*zS#6*T-|xZ?+F&-gVEd&;DLNrQKrt>DkP<3pEdGnle~@y+8CvC_4$~dhcV^2Um@X z6dR{OEOoCt6P^<91|S-yCKma2i$-fw7DRuUMP`q<#%P{&v>k5{TN60vZ+N8wr}usR z80{McM_H()eFzr`q^pTukYRD`1`1H&&Q6bDDt~$l(#tnhW%(5q=mx zfJj44(>dcyZ3(5cn+B~w!uMkR-k)BQZTnS$%@}(A52%AFr6iM{? ze9wt%;jD3xrmM+sYIgQKN#lCX5w`TMk%%F<6}duIVDNjYP%noN=7@D-6XW_uAw(QJ zUue!;l#*q>ac0VGxtTU_*oa-#A{9{i%ffDU<3oTy*}QcgTi94weI6_%qtxe#*mnCk zsS={(zl)mNcEps7_TCVJygE=_(mAFYXkZl`f2bL=L)J_yD;GdNq6Q9uWW4;P|979> z?uo5oz~F(}uA!a#NlxC*rphPBb4J3cml150Gy`k(2Kyiv^M()kf6ckp8ffb$*1$H1 zJIh>qL20Gpu(iBa=b{PE$SJjFZ>y`nwhCra~%b(!KgKx`AdZrQBst*o7C)ccTscK#8|@@?tc zxZ*8NW&FwMcn|FAg4t!C#CmLXyo%iWm|a+&oi{(0?1~VVBDRkH zU^p>THJQ>y9I|n0PM{00_einPngIZRZkD$>TKZ@Iac*8ahcNRGKdSgk(wZW@^m%=f zTE?107_HcA>_kW5RD6tJxo6KoUsYaNRTu1@7LX@fBR%%Lbly`_pW#K~3NLMPorOT& z)+r4J@>OVR6X;A7N_@=2a((y)WCa?n%KDV*ZNtA}&KvKpWy|kMp7osVSQxMHIdwmc zsee_ax-%6rN>i!Q9*R=DRd!=-z7%hi76+e#Kk`1z*04<_A_0D;47($!X%$LyLJNbX zj}v|`g{vfdF)-={y1%G*p3AdX|0$aKd=AkbHZw@O93I9b4P%c zNO$&ya7me;WZvA|x1EyjjT>dR?xREvjTb9zMM-slBx@T5+I_~U3~29(wVcV>@ojJm z+irN{KfHC^zDCeD-1+h21(tvcML3)O$&j#B!;1V(HM~<4tI##)@$S*Y4NDCl)DO2o z#TzSEUsy5a(ol<^RmWr#tJ%3!4%M1a`xqGg&LY{usN)FqY`Y)rkbIu*D>mor9Wml- z8U6&Eu;*RN!VMQ@tjszd1z@;fwE?GriIZVlz5N8)jo5J>CDKFJ1v5oAHj|O#fu7!5H~d*) zB7)<6ZK`#D!IGXm?B%r*5Klhr=8=bXcv9CL*&KEsOcG+HGNpEhhiVtt_N*>#X?fA6 zRBEq%bAt!Me`34+ErqYxH=eRZAwP#EwIb9V!uhtzFxGCn(8viH<#56U5U9T3x6Wk) zKG=OZsQ6>TZa42;@$o3T(0GuPXu1TbNoGLjt&e}m&dG3>%7<^qcTxTGsm)eR&FhQ` zHFLD%J;sJYHu2kF_0Da|04xrp?15{4D@F`BF8=AjTb)gH)FmQ~iI&xOnPYenY7|G< ziNA{a!V6CNpD?{oihuV!B0Tbbk=(XstP{2i0J_~gou8QfWSdr9omOP`xkQ030|TE9Hd< z)$@!3kaa$5=-f)OdO&pvHg^sa5@{?luy=d$Q85O>Bmi)`-X=@l_{inMD-r7D16i;X zE$#IZV|*%^f{zt&@tS-~k_*EKhZ zUB|HO9ft6NO~@61An~U~h!o$o**$UY<~mx))2&9lkN6%Mq~+fzi59n*)ooKl9-(BF zB7(8;s+%c6J_AUVoPXStvWwLYO|5(K@Nl-Nv1I(Qc2U>Fq@wO57;=AOwI7x$ zYh|xNfMv;h5$ULWnR`asRO76hX!fhDp0ZEfIVPLddNq-Vk^D>TCt{}|KQ`qTbolg9 zPm~pwsM6M2QRL<(Z53X;uiPYjlu9JZ2zpb;V}2kvOwHDn{1Gh;hg0jGiOqq_kk}V^ z;$heAHtXLYK?Mef!S>oXqs%ASvu_)WRkRJ#^KPL44-LPpn-?wkj8-2HwYMdPLr#ew zyWTuH3WwxQJ|Wp75czdP>Y3OQP6YyPDvil;R4#u}^Izqli8H zP%VXwtK~dp#VHdh17bkO?|9WBhhe5O$aI0mA6h&4r&5O{jny|;oGXP;z_#%WW~@ZR zDMvRir0b3sJvz>)(1dgJY6um@Y6R>;1R5tXE7;i#H#|e4^T>%u`vJSo;K;SLLU_8P zCe&=S?5O$m)S90tx8VXGjofL?hY)2c>Uqh}3b41zG(R;&2~#=jDL9qESO?rHaDjFqdnGbp6IwnFnR)rP%R)8&SaUTAkV0;-e}zE17iqU_6+yJ+I#GUJ!{0` zUwZ`Qkd_&#Y6@5@(F}LpHJ6+>cB=-@rcb;_dI%;Rf`HjXVvwQYqog0GWy8d|sm-Mgil-UiU zfOR0rEU}y>qtqdz9Gxtk96hSHM9Nf{#()-p2V(F&<&t~$q=`@3u}Hj|au+qb4Y|vB zLTwyTQ#26n5&1|v&gZ|P)S(P`Y5vb$sESZ(=N(r4L}hGuPS+h$Y)xhM9G7a z<9*4O1@zOPeR{_%Gt3wLxDlDX`$3Q|QC^MJoBgoDoe7Y?)41|{rtG7Ad`mQ84W~$* z64o(&0=xAsj_pxBa*_q-Bi#iM6yctPsj$3Xxd}ZLr|We|dU6#G7e5b#N1HfBm)Dw# zmAhBi6$nNn5rk@6E0$8n_cV(|MLepY$@&L%gXi@N%xPlAhF>^5xx{jSshc=bY}_=( zZG@OaOr6ggBobxxN0G<*=#dOEyaKYNX64UPW{|~JS8L#<~mzD3GDqRe{rcu*nGq!Ut z(J#+eeF_yWCMclIz^mkfzQ&x42noJWy=;nhw@^?UV1kE<;H+2a+6hg&CVur|sfejG z7QO{ODxfi6q~`-k&Uu)FJ*B6HDA8Ph6ji&l>A8SB>2jAxiG6Pl>p*W7rH2U!>mk|o z3PI4D)<-Bz5;I3__SM}@*NtyNSVpPrC3p01Pjko9vu9N?MNqG|HA$cyN8%bDBY<6ZShehASqB;L6~0YprBF zbK0x*%RLk7z2bdT9PYPW$Nht@ub7=zl;~@mx3V~WOAX%=|4!M~_TQ%v>ps^3)Zi4m zJ=u6%C?8x)@qc|5kG_$Ud{L@|P9ze3MP*KpM}e7tkPyz%^x&Z?%E~<~{rbWsHJ>Ic zq9jc#&_aFIp!)H?M}++-Gqj$&8}GiKaj@)4bK~^}z$Axma4zNu^qZuBYDxq`!Bl=lYHn9>3$LAG6A%YHKPc|_c!29e9 z9c@}_A9am~)Z2B4-W*B_T*ZHNpeSUds1blXRVrWNA)mc^%q!NuCM*<-Xx6Nrbkx*! z`JNaGtUmlApz)CCNt;sTx()FIAEnO{ZMwQo_OML4cb}fLS?S^nflRHocW7Mr)Y*zq z*4tAYP|5F;T|!^bkFO^Hp3z`Ko8~Q9ja0n}MgaJeHShj#unojxj_gucm{S(|I`vyB-ec4+-=#OJPQb<<)Cra{f zy&PDIZzBZ>g$yLPz1zTj6@|j-@9-QaA8gr9X$mqNpZlfTKoO&{RSt^2MI?cGcH3i$ z>?@ODv!j)w2So6V{|$GecyJ2Wa}9h8WzyX(vh*e#E7VkVG z-tG$jSqT37=9e_p?AhibGc=td*E;bjp6|+l8nSLG+M&rT`ikVv4vyf;1quWL@oJDS zkrH0vbSxtbOm5?O=|?#2o$>TJWeQF%d0jp~%SJn%Ncf_!59r}0g~J_hgo0;hAt7ly z+ce0e7ahZa)i^xmLEH5D+QZl{9^CS{d-mQGy0Nb_0dR_0kN_y`=rI3`1=Y)6o3CJmx2&rDMi@h`Sp;rFH@$!{}YI6PmO&r0+ zk|;hfs7kb^j)3(&k=?64FFrCn?|4OF@@2^|bCX=(2;Bc|Lju+(7VGfJ@k4a=a~XvR zA-@);^x~@MFxW{IMJhZ>oO|wJgwH2aTF$+~`_Htz?e#^61eVIo&w1jNb&gSih8^1r ziLjdqPfJ=Ye=JrgzpDUk$Olj>Ql`5gZ3=Q~-;Y0Br{x_;W}Ef}VCz*bxu=QPed=W_ zg;>@1?x0ZoF@Pf~pD4x6sQx6JYjqKX3V2x#uLzZ`{C0cV!bSI3=g)S{F+T>x47CS= z_24~<&x^J%tnxVveg#riJwvxqvt)Xr*EdYT>h)la`e)6BNiZ&=zVUTf`6&x2_Aiv7 zef#=GdU|5dtIzhx-ZRx(j9)5Q4d$7^arKJQF{rRqHGDc)c<6hI(5sZZIH#NvWnTze zZlWRp*${>l(5U1+TexOG?sCJ24#G_ZB88 z(Fmec`97I~o^B&t3A*_Cbjeeq3Fcu49&@@;N6MdrZJ!-%Bz;*ZvM}Sb_hKbLr;I7$ zONXMLyoL0nha&RwjWpu@EV5a(XfmbuAQX;v0~#jn;+De=K@Ahj>iupz1<%~~y@D-O zJJO%O2T%u#p78*n3i{|Htpb9z=%Wt{>HGjyn{zv0lA$40utfOr4mFRvw*7DTb#rv|xAl zOV=fAbN08+oeEdo+Iq4T9q$dgVWiM$h_l#DumBxqhMCSbLs9+IHt$vGa7gvFWXL}0 zaz=U%QiQ#Mqn<&8Lt20fV{+sBJ~(_OgmGHkWJ@+LH5Zu9d+?GVgnHY~5oj5qwtyaj;~~ z^A5T_GmCAoGbYA=w1hN$rq=T+KR9vlMCa5uZZFYYD)}@+7wj2};P0G)C8GT~&p1uA) znkTH~Lz7@e5+mAYYmz>#ep1e4c9sK9$R>MpGG@CoJIwk`oZ-N&sb};U?w0$V>TBGJ62l>GMK$_ z;$d(W4WhFtp!Ro`jz~iM!^737iSFwzt&@PQ;lYf!y<&Y`?I=+vr%ocv=UmB$kq};; z(ue#QVUNa*O7)+2Z02Lr_7f1{I&XWhx^AQ6q#a>&wV|BG->GagUkRhKACJ2BWxRjA z`>UHGPnnvzvLC0*5m7Z~67^V_+pKbF_pwpi4(C0Huj_qTy3Z}S+1qtg+)N;pQq_6u zK3)`i2?*h6%M^wC}Y#g(iz7gAKfwZ1h{ z@a(jJDD)06_Ar^d%C?nJ>SjqOJvKM1b7DOlXoA#FipB+=-K!!+sriH1wSCU0;XAWq5Ac@>`EMOW*TG zJJL_eXEF(4_GV|Gxy+kCWDxgZ>UMV=o1+#YNHhzBC=fuS_Ke9jk$M79@0=)n`z4oy z?T2PuxeS+`BoGT#=TbFq3ildDBf6}b2fMbdnf@jZBq zw6^Q!-MIFSg*Z+Gx_enn-BdQV?{zSsTgN{Nmgo5<{MrQIBT9P}*Fpu1e3r84DO=fK z@Q3(%ZFbcn$%^DJA{d&rDl_C24}TAVXRt?apOdbvXS-_-`|Vh4oBmMJSOE`|&@|WS zT-tCZI6+c2SCnZAb8Fc3M`7^&PuST<~e|XeteEb08eZN4=X4Hq4DeP9K zW`n)8dBs7;W)IC;`LkRKjdWtPIi^j__w8odZT?NLNOy7+3_7zQ9`bwP5#hA z;gXgsnFxruAH0-Ny?zyy6;rkOq&_}pe{HC1tkKdrvu2t5spXoP*5JzzS*uMaZf?WYhRSld&3Q?opvmx@2ipyc#B8ef zvf!Lui6w_HP$3KNecxx5Am+UILx34c&tAuQ5EI>_Rjmo-LlgEP`E$>k0)hy^mcpSH zwFK9)tpquP_J$(A6P>S_9IKZcy-m5%g$^he}0#A%s0`s zq~Z$y%Q@JoSJ--mgcKa>9r+gfLG-_? zt`hz>dHTtj!vx!@+r@noZEMmyfG1v(!R--S=*hOwi-qV;Mn;42DTBy$ih!^gL$tq0Ia|0pA&j&6ldmY9h;2_CLQoPx@Mj|W?vBLf+jTj%NZ6n zL(}tUJac`Gd7(O%Xxum#2A7z1W2L*Qi5;w1?-3uLAU(4lS>yCSyn)!EsoSjPg-a1W z-_hqTOXu!Gycf<`F&Vk!4eQgeNymxMw6zmGJAGuDSa4Kcz7Fy}HOEyS8(Maypq8_* zTx{y3m8{jpdMneR=dz!Yrd$V`*RhE%hDYa7MvHO$SZ>tU|C`H01h{v*4i zyG^w2p>r#OlEnqmu%Gm88_&iDZTe~j_}b4E&0d;)SMb}BK$cRqwK zIFzZ4KD|mV{J)G5H=Yv57$YTr`ZTDbne$_1$9CbK~_GJqS^E9C~oJJ9&+iXs^$uEQopUFj3`M z{o+`f@81&3$_gu$BPE3`k$gXjkNRR=uxg+{O>Zd6zxL;OjiO3#GjFZe^glNi@8iNu@YCM9LUW zYuv#UK=Y}>j61f+osK{yv`B$oHlyzO8a5YL_nTh*3^)U-hc3!A8Wrn zsgqnqrNk7uHBKET9Dr$RMJ*|T#nQ&}Uk)_>;n~D3>S<{-B{{;}V@r9Gd8m`y@k{T^ zCZ?KO($U$8oMF1Zj1x&Q4r@bAwxXJn8cjo}U_@A%J*TO!i8Kcj6Sb~(Go<))f3G(f;%BmxAgo;%#S{>US3rR<^aRF5>J zAIC_w#%mjCdsq9ab2=F3>xO!5rB-O7oKz~MMwa*Q)lnw!~ zkGU3B@(=k(ZcNb7cRcs;&8?Hx670xuj!$mNY~>=_;a7=@V&j|WiOg)_0#Xb>8eNC# zT!x=NGQ+WZc3wYi2%i}l3t0zeRvLQBW5;i5i4c5$LmB}s<>X>uAJ6x-67;Ph=>aFL zem^nO`kp?&8tI$NV^p*hSJdFj)%LxvcU`0ThuAb3LkcG z4CMT)zKAqQ;h@6JMJWJSWE6(_{%;*qDBL=hykbpB;%O{yZ3|7lmUX1TB&`9Mc!`&F zO1za$gLYGr4p2i&X=O9-Ut*(%)*aGLz9PPq9zTEuR7uZxh~rU$8&HOmTL|`LY(Kt& z+Gs)f%yx;ltI~?N|6~k;KG&uC3G3mHATHd&gFZMsVFJySqS>rYuRg@RH<22`TZ_q& zUk#!uS;sWI7K1)JI|lFwl9m0ipwbAv^pNDh1qI%SK|?Dl&Bud;zwB)JgdvhYu@0iL@u zWN`TOLPgTVZGkU&E0>9&(-pBg#{d^rIN=py=d2BA!>|yt9BX)-PhUPjh#x_)q0K6Z z1i1Fkqs%lb9WRrYf}||n(zSX9>*SIzH&)ylK73t|r#jc>_L``!CM(bng>KGvHCUhe z+luH<1I>yWYVPxP#1DzNlKdKreVlNc}7z&ttrBsbv+xSl)NNs{{wZ-_9EsX`ICO8blvfeVR z8}>Sv z(Ad&lD~8!~u60^1uJbH~=_^}R64vURj!zx$DllHomlxSH=N1`qwe{z$LMa5DnHFwh z8#$;ArT~jNC5~6b5*)1;M5kZxvfEN-^MCXH8K8>zwC{D>P`#fgV$V2jd7C#}cg8~N zP{U>X(v-TY(Gkpn@}t~s`+O;ma)cvN^>8Di=yIGm#}cxhy!Q6k`C&*u6F(H5w0auM zzJ(ekJm6aB>7i+jyVsx434KQL*nC=uRDN%_t@SLp9U92WFm}GIHMmY&q3(BIFus%8 zC==0sR#C+(`^6_ZwUXJh^WVikg(VB=R*de>4VO(X&_($cy%s7`#OMtt1aZh( zCyF;Rd5)&n&-$?lqwalVOHY@ZqE-qs|KVM~-uJr&q3@)yySIP;;q@5IC8})&QflMp ze9d#Rpx#K(wJd+aj(nS#D`v@ArQyN8f$W!pK2v-CaCK;iIcqs2A05Wqy^)5T*mJP> z^TTYQ3`PrIf|Xe!g}g!2QyIP2dX^da|6ye88m)Sv?Tu$)Pw%y#!y0jSRVKSCMEo6# zkbL>u9$?Ck2Ik~u0WN-u;cj*5y=CseZ>Qy9%9Bg2if6sNG9)3Dk|k)A#mZ=u={ zye)v}w9TZ|rMRSAe)7+c4d+FG=0L!T_ zhzF$N2+dUW4txse<+*d6b;ei&%92Lk_dN;qTvE$Tb-*?Bq)+eyesBH5WA-}&mNxfY z6^@E>ao_U2PM$WRN#s3pKGDt=9D03}-sjex%o8Z$&hbeL4P5ws6pyxiEegorGRxe4 zlDHsYBR>15XGu2pw%W>ugxyk7{OWl4IWr5qNxLdQ_%TsO99Q(as+_m+gB`)FMW@ou zgGn3LQJ`cbBho@xOm$XZeBim0Pja|M#Jn%k>ua591Acbo-B*}47he_SRLWpXPPlMp zT76scr!}ry&qMis9E5###}atXHmI&LF;+E)h32Tq%TcqxZNBR^KJr>xGkJeY)>};h zP-JG8X(~@GJ_3QgM_LOv>O+xoLmh$w0)DY4-}4t~OCt?RqX_A@3=4DADtP=4NL2Kl zf}C<-e1V&BPA<@VL=9p-ulZZ7W>H4B%iZe;m#vZ;sln9-|7XU1sIiSR2ZxPwr+bYZ zLk2#!{XGBX5s#`<0f!}%bMkM@ zg>Q(o`1)QTExe6?!)2RfOt~ibUc?};+@0| z$7d%VM*f*xmcOm)h)E2qrSw5sj!)!%MghG{c!6=*w3W}fioSZ&>4G`O^oO(tNhudk z&vgZ1jNa(eOrc8vG3>aN^>eh0;1Xbcpq4?^U&`0B#}0Eyz+2??8F#oSl5RO%tE!-P zM-tU?h7F^Qhsor_jmu{~WFEw)rTGeDXloK{d^K6Ri(|dE!>g`bx~kd|wH>6KRwICZ zzH&5?F~P^-lxPQlhFiPof3^_z9zS1iYorl`Yg(DGz`oS4cY3Di>oL_q&~tS9?nB+x zQ+M}jqW2k(!Mi21yWKsSmy3H5$>G1?4d7E;9uyCbc#}0$1WyhS{`Nu(Lf%LD=fwL3 ziw&bKSs9Y3w-yK1whDdLl2WKG;7r3T*VH_mVKi4VaVol$($lJt{y*JGHy+?X$F=eOOUM?aEaA!=o)AT7H+H z@t$i|k0GcB_6TgAU;tNUW%wjWlah$Q2Z24&^&}ee9ufquhP7R0R_cOA9DD$*jNQ7$ zG)MUp0Tl>Rv^06rEFk|kO1vvK$Pv`A#N_bWWh8yf&o7L#ZNxTNqS5b~g#eC_T1pJ5$6fWK)ZQcnv{J&q~>wU${h)*!9Z#tCbiE@jL|pu9Im3TjXKS`$*Qb6WBqNV zVN}c$O3%VN%&NosS>sC5$&!Cey0ewcdGawl5Z27O9h;)oUM_f#k>&lk<4RPt~|94@xnHB z!)a}6bH6wl2j@blnXH(XgO@f8!`uI!=a%m;rTKHB2Gr?u)4MSJMwS4}v(3hLA|$-w zj2ik6#~^61K*RQPy(EZJDa&gNi<`m|txNGWhu9L&n2bW;TkPkknJ>r_YvvSn-`#xF z`9QRkBf^%Sxz0<-;)1DzJ1$(C>ReaF(qzOA>LI|3+1iqon)!#vU5oY4v!T3}v0-bM zCrM%*bKXy5jjprh=dC5RlK8JI|5^DNN8{JH(o(HK+^^TU&v~Bb zIqE3f{l|5F=yY11M9^ZtSaO*#@EcuwE@{oG$#wD{Z(YgBsXD&FkoIJ>qR%W4xAtIxx1uxc|qk@19(+- z-vn5@aPL=zLEfp?7%P@j)mb{nmly&pM*0pCicKw&b(b?v?tEcp6uA%u1Ig(6J@oPRkCTx;J7u7?OvQ;~9ZayYcA z?5zU>+PF%17k}HW@tl_GKz4VPPa*Gh4A$q(?O5i5ubz|iVSAZfL zt9M>}djArsGKS(reD=mi3F^+nne=M8bUDBcF1wWG4{gk_4tm6F_-kl}q&)ub$ydfygk z%WYHd_kYf#6gYgOdIeWo^5c2e^ zq3EpD7?&m^h%OgAqM=-B_Pm^?0VSpvo`92n;8w=e`hyGmi-2aM&ehqW&@!?R@J|(R$roA)gG$-F zu2NJV=$HOLdgDf;;-5s9}Y#Nrh`54 zY{C1*p~_w*9Rm;9Q$GSZS$7Aox;c>T2c3m9ckl* z8_lyYz7=})UZ4A_66}?sShzmtBj+lV+OCrff@nmpdC3L!?UguH_9P|NI~=0M%I?)s zDiUjJ*571F&^bdYXy8c&T1;4Zn9%wvj-G5s1fGviTF-bMP6bP4xO=2y;5}Ao9F3@m z_ALcnD%1vLGacMzT5)4E<@#vS*R;|qL#aY z9pl3_OsKsb)nJu}qfl_@X8%H2PH;WQ z{^U|k9H)t$0v6{|_pRysei!a#`bf;Q&dIWb~{{V+s8i{h?6N zkPH%AQCL|UxTW9fgQG^4z~qn)D=n#sg*VJf!JgH6{TpTP7SdQ>f5d4QM_P2kS&#W| zf`!M;`O0_6D+Q|)-v-FPx!95*i>+1k_~FuVK>|7gMSw9;JfH~fjknmH>o6+ib+H*q z-vDdNO{0Nws1}GG^!1Rlgq22WT4Mo?Glr8Br(BU+1N?h9tslalU6f7sr^G|XoXJU> zB<>D9vx(!YMEk9qS?%v;&ku~MT#S)%%(3PgsDFF^vNu$IDsuPQNLj@31WWoKNU;gT z0t!M0DA>GIrI^hX|cW@ zg~ktJQtA<>HF5XF!IrTsgQ33yE~TKvYP@{6rnHHC5BdT*|1MDh49Wjm)6UEZ$-{K|E)Tw|En zG12lcrh@;V70Fy4o<`;IFE6H!I#~GU0q0Dh){1;yYHZ>3PzU5!4wdK0uAC(rbHqp2 zE$rn1jmwu7x38~2HhBVfEtGpmfs5-Cg3DVZX z`G*&s21k+l&fW-12(alM_VjMzxbPeEz<@Y5yzZ_;7d$N(nH$$mmrhksgM?uv zFM=rpdM*_de;!bQi%sS9H zh3kG6HMo0ZS`T%xUfr>EAKrQvVpVEhDJFTBh{FS6pUD}J^B_O~Uu;jjL@p8B^}%6r zAha?W!9uX8;86=mH;Gr>wjZI*lmg*Ya5!4OJrzdUXh2xifIviCaVv)0zV*j)W#O3j z%QZ&A`CkOM%ww^)iwCp{<8TXCvGfpLquzXbqChWHd+j zh}R)FiADH+9t_pL**}2s;K|df zZ8}x}I9%*^kSuboeS=S~(wd#Z217Hl@a3)DGZU~2x#lG+Cr>VU1(fs*)LR3c84btW zM4rYiFn{S>5e@}{q?YH&$uFWQZ>P9QR`R8S^MvJb)Ds+kt|F#Jwr08IozbRS z{mXIkUXxUQ>_&BD9S{s%%E|DmH`q(Fnz*o11zL0(3r_#T@Oe-5pKO(fzmI@3=<0t- z<{=+(2@T)o>Zq*6333UH>^bAlFabUAXLvUh%EQ=yy)Of#vEaWil!OOmCg=rkPZ%&n zDgwiX*ET0K&3tePlNwxMD{wkiahI$HjC=P3meEO?f`?ei0j|Wi;Sb*zLJ|@^noZ3G zPrV!yNUtj42jOEL7U9ZBRT)-r9DO|BN%LZ>-8^MdPCC$zahJ$Mqx@zV9;ej`6T|qU z2Q82Y+gN{p1~>=!9Ze8+)Tr`2JcRH4?eg5XE)LZ~4+RY`@25ZSJHAc49rrL(xRr2& z6O5Bx8&|y_n)R!3Nk@ucRoda!xM@(MT!EDXqIx87U|_iZl@CQ%F6*uFal|c)BRAn=43n>pm9^W){Em-;eaaQ)pJ_BK^1iztc zYIOS!q_dZVecb@3HXxx~Ir<8JLR1+`NSq)D&+kwg; z1I43V_k;@6a2CHsZNDgI-5B{wCp2I7k?U(`Dg0*tKBAdoWl)^ZIx_t2LzP!ZF4LYQ zVg@QhX!_%T#cBLZ0ilvcp0?%Iq3Y@|X;8Wi|G)xMO#a z5I7bOf%jW2B2{c^`Vki*r=ulhe*w4 zB+`zAqs3f&V45%~hr3XRq)M7V_ysOH*po(Btm9D%X{;me0pf&b5UwRTfMEfhnFN9G z?5E&*stTG6@Z0I<*)@~A%9K|w$fGO|R9K6XeCJ60clwCA`k}2unj$@PihK@Li&lTv7 z3KRMkwglg3hDhv_RL@F0h3=C~VN9yf&6I?U9+bRE4+?#k?|*lH4SB55 zqhB3EWs}T~c5^u5|D^tvcqFC2;)A?^cP{f@4dEd*exfx^o4Tja?eWLlMq~gspurB0 zbE!TBDs$_xR$DX0VM+4NPJgY74Y7$cFcffvV}Q_4!cuD?Vd_*W(*m}wry(UBZcX@|1xC2oi`!Wb zI71rZMX>DXW(1@TlBeJ;uacT4Ylq_gslD^xJW56zL}b@As9duEGFXPqJf(iU7Z36* zlJh8>YoyF?fuLghO!UM27FFp74)?A2Q)`i2W_atVAsz_5H{UbH6(SPb5d+80neyJf zCtc}H#Pz@m+kJ82&gyXh>%tKenld+3`f}i@PxBXeDeWn9g4SV7fz?c^UM|CN?wT<* zofJmWwg1}Uq8Janfg{)RkIlWGYVg040{yo7o(0=+egJ;y#C+gj52V@=mAEfk9D!n- zEGiKD?1)U?nixt;f_;%3$TR=TY`sTjxA{s|WEb>W2$n^c;2EUyRn~X=o2ABR@qgxO zP?%R?$J8)-2DN$S-xQS$P1CbSstPVp1Rzagy+r9xNHvjO4r* zplQO{W0!#QIaQOV4diT4PJ;{tB!Dv6t*hYWzzFyQ5if_m#S$;=rnDMRC?hqOD$*9i zDsc3Kmc&$EHVELvh?U=e;*()XdT@a+7Im5fS2N^V9rBi8cm{~*&zFslK zaMF~%57m|1Kf@ashKSSU?X+w#u_D(U!rERJAQs;#T$Wt}?v*q+g*{WIU-^;@*VWM1 zW$XQGLniL4P5}epy+`qCZnus=`K*gRm$M9BN3!RENNDatyu-*POpVN_8`SRjwlW5H zlC%+Xl{hbLPol99ps;c}ei2rNu!eX`&W&+%U@Ea;Ew!p6r7BLd}n|Hq`)g}*B_Tiw9j?0X{d_5xaFp_G-3bh z2@R$H-2?|tQiBS3@JSLsm3XZnsbQhau)lVP$-5Xjd*N3@e}-obdx-#jtQL8$yg=98 zIe`5#>1inT*goDrm7jR2A&n|&CTr_B_{Tm(uPeFq8So)J*Gsl_sj z;C0)2*fWi}q$jw2|99@f`}W>(LP4dHS^N3IS6ul74x#?B0FG6nW{jeP-@J>PN zYX1_xJ>X&7F|XN=yV(Gz%d*YbL4NrbGw!s_|KO&`c1^`-)8>F@&+-m_SnoA>UJNOZLuvXztZoGtM0$A72CP{N`i==;l-?7nHH*|veOcSv()_V+@>j;X1H$7G(|YDd zf<_QjQ8`fg9NtFtXx1E~aS0@RWsS}lDfoV(J^-aB)Fzhqk8OzCBL7u;Lox?3Oms)u zyLQcII>Vp|VH=kAT5#9lUihxodxx_R)#a0gUTT(i(8sdzROfr4WycJDwpZ07?Hden zS_KrzFt#n@iy zF%=Jo#3T*dU#ra;eX>PJR@cp@?!Em_G$=Lwm zkCERsu>&fQGW#B!gFE`NrHR!*QH-<=X=FD*=Dqmuz(BZIhkJdkm*f*S+ix{<)oqFu z_uc`%VIn87aO?o*$=-QyYtr{fU`>wELT~5k{B|0-M?Z6JJGjBjjYZk_v3op_JwdE|ztF7-CL_Dc48~Qsqa&?Iql-gvha&lxL@7OlZOh+WG*i}og zmcrnHz`($rk+lj-%S3q>cgs=P?3e*q#fKHyuZ#0-@FW}F%(zDv_e%Mac>c0Q;~~G^ zzr=>bo~_6Ya%?~<$AHk9)D=8s5!&p|;}65hn?Ne2CtHiVRSYl2JsL9x^6lvN>n)px z-i?%U1>N=ON!dd>{ge0`c&#||#8)5S1;-fIhGWKXH@%_0oBH^a8OKr4s)(aJ4}B6X zOLN7zI?S_SGxLvhD`Y9|q>@prk~eCz?ki-eg-yI+{KL04J>{e9X^j*+D-I;d{5vOc zrw?;U;rw5^LzOUDED;54bS$Q_Y#S0XAO;_hw)d@$)9mZ4HGR^ni=E`8ZHO^w-~Sb( z3ud7`Y`>dC#X7W0zs<-ZHc1iNWo^^%er|GE`(JBT$mPDzDXd`5LYI6mWmcs>fE3TqRhyvO&5xGu3KwW2vStVmrDGbk#=|)&Hkf{5HS5^$EkzCj-j%>3MpLmv|5^G z{yXFmx4Px*f%0pCvg9D%E+NSls{o)>q%H=IJq)ud8XN*D?k?{RWSD9JtJFRCxJ3IzxOi5>i5994=d`ETe)nZDFfg>^B|V`-!4`L6%WBm4&Jrp5&wH40Yrzo* zcf5p@Di(_`If+!1?Sh3baVwg9DzWwm5>n2ICxl3Kg3fcRQ6)q4x0~gqZOAC)#(7O( zej?dFo9P5P#MT!YBt0}W2M7aS_I@q5Tf5|cY@#qaVgFQ8)Fvxf+*~A{)=20b+7_)Q z1V>FRKEb2n`Ja1f;TVwYT`>K5#CN$`CzDHR$}b;v8vu1;Se>oG$a>%EH#DW$HsJ{O zS^G^KLh|c7PwkfJABO#NM>6u^ucuPnZiq2_d`H7IJ9!c+Q1b;kH8XwJ3ysrxMvtBX z*<~UJ_tSu!-G6MaYX)@lzT7W4UsdswM^mftQ=wjbsf&>&$!4^0?S-~X zyTl^l4+2k%kVM>mSU0e?eBOQ~Rz23`Cp?Z2RU|u9yl6%g0A<|o2Uj)QzW1lq*~zWx zBjwsM8XPm9{7uSuXApZ$?lyORxLEts9Kg>#yw&uO7_;fcna%tj8BJ7MQHB|0H+=lQ zN1n^5dYeQ4#3w)LEJsrc?hpC*^CEoJsTv{%k*TaDM49B(2=UvvC~nSFUjJnFxB}zfl#T zxX;LyS5KKGl3HokUO)Q6EEnyiPYlTLSrRi$QGI)^ntSHf-f6aX4nH9sy2OU#E4~`# zmH75vR1HqPzBhk#?ZuP9>u8tj*SN+BL4}FOZRG#H{}6gV2pXf2sB>H_9&fgBAfVg5 zrf7>ZKKLkd+!a-S@7mt8PupU{jmDkP_e9=R;wuf~XGIy)ZvWV}o)|{2{VC;&))Kk+ zad7ztf1&E4nk)pJz|Vq(PQw1sCIomod^uk6te$&vB=xIo$`^iOy@r?MtV=EJs88b? z?5SgS_jtY$qqk!RNOM3A5*rVs{N*iwZKIi9xL61*l3cN0M(w;~S7=du+4upMBi}jI zw?S-8G6^qz444xG!9zJnEBd8RU)I9{(*mmoIDYg0FSqtBvCcR7$0iH{S`9cEowOr4 zKdU7}<4(QUHHxYS{P7B#n|XJx`&g8Zc*z%U8EkH9`;>dG*CAX>*j~yo`eXwpsqosX znv?yK(S9E9{!?5%|Ga!}?~36`FtJm<&cS$7?08{^FKrWp)+uNb74Ngn5IDZF7L52{ zY*zhADt>yI--9pWN|S^H_^d5Ac1|uuyJWaTOM!lHqtnHym~;VLG1e><0{ce8chVh4 z{d_0(>OaVg`mD(Z%JPjz7w7lzj!v8dTpg|$3q7@=CcXGc0pzN^-g)`bC&9#;^-IWc zyHUrgJ=S7}#t|#sWk>3C@!g~d7G^Df)LYaO9>gLdzsUGq_lRttemW@=XdzzMB$zQA zSCTBZXL+vUuy32Q#jAb*m_z#1zV`CYN-V2< zq&6#?x;68UO?p9C$i;*2AKRD01n2SYoM@aQm&0;GW?<=nhXuuZ^`t!DC;q;BT~{}& z^i#nQSi$#qPKSo*_|SCF1xZYBq6T+PtHaiVaE!W1YBkg|G;;ltqVoF^4ST7CsU);5 zM*0P#Y&i6^lrJLf6?tnmW9I0L^jVd4Pu`$DoTQ1<@DGuAZM!nY zIN;hdjqa8dTgi>3mI}>$stGS}2)0T7xjwS+$f8_W4+op6AFFKljR*=GZ@LWm$7Xa& z{cDIc?`kEDEaUU5H0WcZWjM^OVEEwgIcm>ZWob?%wEgCJ= z0q>c{-%M0c>eV03w^{*B4D8!HRl3v%yljhdF+o?Kxr?tM)Bkm*?#u_CvVurfq7 zqggh%Xgj?kF?{EeS2-v9Bc5Bko*y=7a#ko*N61reF;SfUxhHWxXQ?=pv|9|j(2(m= z6YsIeT$yuC>M1&dz^qPAe!086(rA|=94Ab1y?e`+g3>gh!ie~9XyVItty?K?S&@xt zGlnnrZC_(}X87NSRO>DZB^Eu+Fwp06cyz7ish{q~hvIi&)T(C#^Zi!*jBb)S?#V4d z+Tf~ z)vaXUSAXwAw4UfIEh1dB`r6conC91ewsr#zYlNWO6m=-(RNi)i4|^;8A6wku(e#q? zcM0jZC7qrq z3;@^ncoqpr-}A%Uli_Ghvoc&*-I_aE?Vv4ENCgmm&jHIXj}{v}NIINA9mGOVsr=Li zNKxM2R!)5RzUiCp8Q;hcXPExpDktKv`)DjpNjPWnOq0A@u;tkEsc*zt^oXsN=xzTYl)_KQK*+9OOY6)z;(M@Z^b zUwV*PS<_p6gs8YTBOK2EAU+{rSK4an8=KFF1hw^7_Qf#6y;rQKmNOcqd>z4s|7q!@ z{K~f=Sva{9sl}to-QVgz5t1tG*6#1>fKom)qq{bfqbc#((FB6j-D5V zdMzt8nVGqcS|e!XNh1zv~WKhjh1Rf-7FFK zg9DmH+2qCqX`l&=L!+AQ@Q_k%!Y6Rv{Gy{mf|n`4Ccq9;CgFHpoFxwf}kSgX7DI zdKddcZs#HlyzxN?sNox-ACdc+5LA)ScUzDv?e(7{uxiW}ZP=(V&wQ$$BRr^O^8P6P zAVByVd1OBU<#ze4ZEd+>oQYh{>*>oF4WFi9Rz!?m?d|{4IHg$2Qe!sBLw>Gr;tGz| zyT3fWQMluqt)s%4?djv;YRlGCjt9|{()+zN7LDdq56&_qft%u4hQ(jte0xem* zye)qtND;+0&kiUcWexWs3|hUy(h5v(JO5nD=M#B3}D9g?($% z63gKUUB}t()etETbhV@)BXFE`723A(Sm2y9a46uXxSqU**7&A#w!|d)Zyp$_|Iw1O z=0Ln|PVM|?4(|J)klZYGpbm1d%{$GqE{!W2`(BloAo3tr+~CjS`Zdm9SSFEu~J;?g%kzTW%&=^uEIh^NB^??MEvgM&gz;jBwx1~ zTNVG%nEtCtTm1W9w(&P*x1L^e{#~t#%{cyL?J;t=ea+P&WNPEn?z7+9jiQzod>pK` z`ls99<_?E<$XA8dd1MYrLOypTZqUQoqdVQZ5p$hLo;mZbnT12dtA>|e*%_m{XAf`5 zrjVPmPVL^v+wp$$qWzg=m-VvVMenH50eSU@g!SyF3awN2;Q}x26X4!Mex9Za5W*zV zAV2bRvI@6(-{U5AQKlr&c*9GZAgqACdO3U}T`#>Lu>h%NM-(V2be+jJk)=P~6(Dv0 zU3*{;!abT|n2}yT68&DlR(l8@G{SnQ{88!#l$+xu5!jdovs3+I2fnuE$pq}=k`999 z(QytObmL>qsIm21^Nu{FV5(Ng0#?a}sz5}1r&&D`J<+oyjlr?HKVjV-ip*24-!ZDs zb{-6VWWX?iVjFtKY@ej+%DdBWvU(>HgObZ*#%b4ZZt)oSWu|c)gxodta<5|r;Nifq zjG{9($?6?(*REtkh|H>1-{kYK+trIi>3N{DtN9n`Rq`+7tLS9udpp*(STw2d9H>#37T!KT0?iHVywV6hCql zXz$>(UIx+_=g!a9%92Gb!k-_+F#0LY~#MwQ8cfD^PqmTv4O&-VbFnQU@h#2jW6Q_01~plr?QDZ6=0& zN#a>h*l^1qbmB7K+PyT94_n+ASg^WCk*@{)R(lXgU`$+^CzOLW)k|QMFLR9ZxGXTf zR^Tno*&Z$&T!%HPwDy=A53Y3YiDZp=OPT$x$qfBq*#w(WWh}koRnF~JDny=}iM<(k ze>);IYt-=~6roo6J()-+?UX!}rJbGDIIqgs%{_QAV&yqhv@HBkt8k1*J`hRhcd?*W zc-PPB_Dy9{w#PwKArnBcW}CYWsx^DRP)7r*DMcZ<)GyYtX_uOyBs0e z^i!q}^R6KLO3k7MZZqh3*`|AFH>5eEt8QfEXtZoSSv_8I%c4{*$O+bA*xICg16$)Z zMCO<4XPT7(ma}39ed~)MIzk7YMI@kgKaC5^V_#5>gLxprj#a4=8aLNhXJ~(=CT1_{ zVRaX1!Dt=s-y2M#(5ujYY~xF0{{{%_xm%Izl=boaCmT4$2$ug(&^%vy`13BBYrT#- zS7&4)^p8lI15@Pr=OulJ01w^yLrI-~-?evKylon;$2#0q<09ZoANfQRI-rkizR+fm zT@pGz<=thsU(a;y(~Wai>Mf_f@6*bC4w=@;4p$rIO}BELvFv=r#f=FNPnP+rm$a^I zE(l*0D|i3LR^#SjDBN0?iV^J4Gv@kyBy`aWDYKpRQhfx*oVIZd+(;P>xh65PZtu25 z7P>W-HL81Vx_i&|g?9}8|h|F5f;PSQGnGZuH+XMm} zbJ1}{J68PtHX)|Us(mxfxky>m~jJ{fEky|q;bbG5O;?(F$ z9o6;nd|mp4VClJ$YAJ)aO-^aW%>lRrWdtE*C)K*pXr=5Q8Y&a(-L4mOmWvG zcs;`3yGAc#C#b&Q4j1={kCEFp&GBvR!Hxh#%GzeEAM!OCCAreqvOg&&+W%v_o;!9u znBJjO>$-Q`Tkvm_ZHzOJ9>!+Uvlz$qPX95i8rRAn8P>>rAECOrq8T~;JBwGjIkBBS z9QCB>7|HiXoS(dG-zotb8VoFH|&O2)5}AiJ22b^7X!XRny&ne%-+Y1ZDAt zWLs#qu)PX45^S7ULwtHHQ&Gjhed5Chz_{*-1MhQH$BL=9vn?-NZqftm(dKP_Ln9Fz z)z`ka!+AVj#A|{tNiS^p{v9PwnQ>HXZ_bZuaO>j^HiA8lUt3SPqY>Q2hZG6Jy!U$?G4 zyG$;DQvoN0JQ(O~7r>}!5&A9bCzXHk&bBPEC@DB@Bl}k_4-4`8Cik{&wq{`RrUSp&_Ay_OorkwITSO>uSUvpx zF=t6IqB8=z{y6rdCBX}^|JQQ%2bB^WblOm4w#T~XwZ`JJO#bdWO*e!`vQ3-t|40a;S>~j1iw9dDlT{48u`)sAcD+W$}LTSA)wE0^<1O(N^F# zocjsvGr{(AN9i_AM!;2KoG)(KV#?Rl&GPjlPt~#kraRnKqM{YhRp@jNpsDh~tEy9^ zf78D8N}Rj2)Ddk`kHoNn9u@e*Gwy1XI$NMWrW++z{5q2fG(mQ&%PbGTWRcQQANS`4f z*Y$F7-Q0}3sh3zd=B;36Tyyt*LIq!!#7>aV%JTyYi{&`611Z*2u5;OXqR)1)RxZ+6 z6nI`w+O@xbT6n?Yi~pLK6m$3*SP#QMVnyiTt-OMi>+m`G_jt8<s0S5F{#O{td>1<540wiTvFC7 z`FMhs63<1W;!k>K{;{bL$AMg5_!;@e%g}ohOhw;EvJj@Y+mDq_JOtQa6qE zLvtzACRwufNg~ML_9O9cuY{Hb$7jo1!U!`02sw6S~=?wFfNp;X1l z$O7i5nolG;4Ua@3AQs3qw_)#Mi_bjxA0e)<`Km^}a8aWY+g|nojmxiYHZwTnu9xPk6`~p`Pr_LO+5P-(*5R_z9DytVg(ozu)^o@u+j`o zX4ruQ;-@!r*q5t{+l<*NCWnd{@q*IfatVqN7rL~~)zB_CW^Rqf6MP_~$JCh>zY`~^ zgBIcMD9^Y)!hb8{f11C|eM#U(iox9*LQb7ODtPtEnY>NCC3;aPzb z>pXMPBYNy)@p%N1|EEeZXN@h7U_RUZOk|_$H2X4=(GS^Py+{Xoq4fLpD8C z4Sz3HKgF&L`8_@}Ou%iQIl#ngvjTzb@6KXYGe7pHe>b8ms}3%;r%26inzuTSi6vDm zw|rHPeAv7=)}aNxSsxN&JM#I2lx@jpd%`^g@( zLfoyM^8kb3PV>-OaA2HrdlZu2ArIA!iM=_>vMM#ZBdS2B30%g58cG)BAjN>2$V}nj zCJjXQQM$l6(B3zQNl{bnsyKC&bzpjRc>m1scZEf(XLyzI(qMRI~NO&OY6agN(Ii5|LY%>WQ^nCG#IsjVw>|0t-XZYcLc8F`}Da7v_Ria zx}jU5{3o?hl+-#XC~SpH!uE&a9hOD}7 z(uy?YVAwZIhG%c$_3R|#31ttOa8CY{lhcmH?4|p;_lkTfPzzh4{6O;T1r9IX{CmNb zM9{R^-Um3L5M2Svy1-f0$ik?+S)}MoM*EnPncp$h#dcu9XvISR*%^1fUN_t(T8Lw2 zF(aVm%ARg?H^$6D@xuW)musn2iq~}PRW095n{t#IBKRX0Erv3wV1eE{ZjA>N^ebTq zr0yA{risrDc&Oc1AGcaxrsg;a3nx6|bXA}ccPeJH{{mi+lO!CL8WUCm|C0gL<;LPP z@9Y0C(;rrM{*kZWFS!%F-oydeRA|xI{QF@e?;M8Bt41B% zImL2DCLj4!{nXs&+R@C;3s2f;iG+EOxf6sf6nKG2anSV}_gh^=ws&jpU3rb!j~a|C z5xE^{K4pUlhv$y#O=QHDE>(UwH*J5L)j`*OW|cLXeR9E%oQ zh|G3lO0C#mEHj*={o<`3iw2K5&hj=}gk&dQh+a|$+IgC*GdMUa z0P^{edv@pVHYe|wffm97bcv>GZzQ2h6~{2@ zjK&7Ns!OKA-^%HiI_i9m<(nM*@{(=nj!;#>rHnoZF$Z)3E<=oMHsVM@-!K8EduFZG zZs!;NTLkx??BWL|YY%*|JKp|m+cl=YW|+skz^6F=Nf-YgdXYpwrYY} z(f(TOo6kflq%kb9!-ya_FM$V2}B=F zPU-sqjuNmcua3LBRHH%Ks6|q#r=e;9or0s|Xs(o0(o`x87jY?g4u-eJg65YW}+vDg*R zn3_XenwU$nc+MRVti<+n&X}Y8(@A%8kcsE)`jz&L7Zd$!bsi*}g^G12lXVUwOtOnr z_pEKWSX}n2YgPq6JVeeEnlkXie~F zfL!iLl>B1EdqhvzoJtHjqB5o>I;;YF>WIqD@hl#bG`uRQM#3!qadTf;SR0d?WRPHG z)nUh9PmX%l9;QuJRjrB#{c)hH+lJAYwRV^1a-&xKis>11^A4DIA>mlZxT^dtF;?b|#jO z*SvY-6l>Q6(~;UF@~Xku3TUhdj+)50;P? zYoPoz@tkXc*IBRJU2M%{i6_C$A=dD5&!^=RqT`UmVQq!hv(Gr%gb(aQ{8a7w15%Sk z(&mF9vop=ep0E;usLjmitb&2@6_u8#Fg{$`?mhq8LgL(i{`B+jNC9^4uXoAr?(UYY z7+ZC99O^Nt>K!y^G1KwJ!yqFHrDU)&>K{fPVi`FD!Gy zs!ac{;;itk+&+0*{lC#UBfsfoD>>Fr(G(N_qX_s{;QH<66neBtk`MH$tmBDf6-JfzuE}&0Vcf+V)Rns;l&gU#C zZPdG3v!lk{8Jbqmm|($lwkt!*`=5()#Z}NSY(8 zZ7XGX1L`n!U@(@M5Ta{JkHAqaSq+57Ey%n;pvcIULGiu74a7gTi(c;mcf2X8ZmDGx zxDHfj`x}P}ShghFWWE8gBHcTE|6-5N&sM;AiKE=w;`6!XWNX3#rz^a;$Syan}MNe`eKw3{K+;Cr&1sZQW z64J`#x_%flEPDK@J|#AW-KiD0=w;Fl0B{*0xZ5raX11Sa%EG#k!GDHeMu*HmtIv8y z+w;q;zQ^iAblPjdOHW zg7Mdo`CGeR?5lqiytUgabKP|uJ%o=(zIRLv;jVuuR zm1HKfYn1FgYViGoTLX?UEFqwH(E?KUKPu?Jzf@D+*#?Bi$+KWY5W6B|GPA+HGt_~< zyHDSCmTdj5)Fjo4^x)GVUEeMo`)1|_=B}@>YYeed(>Rs~DCAe)?>cEfYOM=P;mQxz z4ALZHzP-=7JZ8Y)Z@6z2&fP?B!iJof4AVAifi=$Lw=1F4B15XmREmH44 zC7U$#0YOCVn`iCX@+_8hi^XkmYADB%{A*rUj_MyH=_I%A;BX(=6LD7KS&xI-w+;nM z>LLvAwGsh1#V4mfbmuY=)mtJ^MT5nFP`wR;r93{WfAp7a#aiM}3+SIcq5=h3{y4w1 z2~cqL3)VNxT^9N2a9Ia&M~%vlr|yDBoj}b0A>c^rV%RnmcW|yq){Y2#c`XpftD^Xc zJJ*oFj0D+pz)Xby_W{P+AN$`Ne75ud$I@B9HTC~*{A_Hn!GMi!Ho6(0G&;IdVZ-A0WDX%(aer6naCoeC-{rH&L4NdrWAfB0V4_dhs4oO53Byzj>YqlDBwgBg;t z%h1jJub21tu>TK20A0k)4=8Z6640q;A5k}^*);h|4#yO@GeoRq5N(X*Z()N9P;PIn z!A~V<*rU_q++5DsvJ_U&o&n(~nRffv>^sZ1H77kiFsckRTJQ`2_~ zVZ50LI>&UoWtkhH9tG6@@y=b>Aqjz}zwP66Xf$41blFApz^=1Qbux7WFLoHrA@ z*?uvqh5!VXC`ore-xcmhV6RSv&1pV8Opt1Z1C(6A!SnK%>|p55G@q%;t=LIonDBnD z*610=tlHSMt?txgf&A>4oA2N?H^pHwvNI+n2=U;cgYLXlpH7tiBLD`3k@ddxx$Tq< zO3bdxoP-Z-4JU9O0&N*DAXdBd{5(eski#rr37tXXK+aFCOt{ky$PS)S<}}tKBvIQ8 zj!+ggQ(tdyTSL>p;5r!DrYM;7>~Bo6of0kOy8K@HOYPl zUUeavl;avTo;D9qkiz4mrE zQ_DJ0N?A>y&$Le}qTde0TuQV298*$J&>k0CRTYKuz4YUHwP=m<#04hZWzqcNlJPjOz|&JC}lDr2$}1kwSeesI#)?<8<4I zV%x}*xj~aScrxRLH)KNkka%!s0CV zPe^bkehQ5qrkfDY(xtzCVN{+gr;{TXF*wA=75*AN*Is_WuvKwE+*4@CJGwlQqp1VT z_SXP;i(_^x3ujaz5cgJuT(JO=xIKtoIyVYbZR>|{nEiU7u5VoqO0}qHTe&ES`l5{f zm9pa*EN(M9Ud`L$BuL#$_i7oKFQF?}+jE00;Hi0(S76{+pp^b!R=LGObn=qn&&y&d zZ|s_kbDbOBF@kTgZ>(QsTxPuu{2C+_bXv8^yDT-ed=keoucrWGYKDvm>ebyFR-jLV zkR;D`DMkn8Vs%YU{$NsC%P72K!XIIoI)r;3kJoD1*rPk;bx4W{KgnZbHk=$gn|v8h z7v<(un7>dSQxw5T!7x|omx**vWS zR3}(ao5E5)I>$cKoGO#T^)!2<*YrpaN>;8jtvdY$Fh2<2*#|@(PXS3`^hmZmu0O%#%*lrjUER9Wit)ML0W z&+Y=xlO`*@D)HPYKYnkfV5TI%9q*gcs}7P&PS7-nfVGN7wu%u2OM7pZb@67?MQ*P! z@Wu0qFrkPbn{rI&3n>Fd4(I*}P+(XZDdxtBCN-c~FkT@_00)PKOWiV5B`kpA~ znt`>lpQAQ~1lp6-6KK-UQfG3;2hi1^m8ZrA33z7>-0hzV$QM6(z`F;!M3%K0lKofr zlcX3`uH{PkSP@Kor@J&w&b*mQC$S9RY}GhL#b+J4dAiAXx|@g6?qZM$r_=d6HqWo| z`o7(u&v;U@-_O}Z;RK=+ z_W5=88DDm)x<$^m4IiT;9u#Ka+1nlh)q=S+o$=Wm_TbV&Fjg%e9oOpM_8Uw5WlFqo zMIQX-&5#5*2j8DnEWt$a_xA7&9a8ZOmMZg~+KDft${B`hU-AKs*+!Ou4P=*OPYV0Z zy<+kU%}x|u`Vru?zb{K4FrRwsPhWgARRiVRYL$jE97_sj-c{11vU^OomU~adWlt{c-dp1Kf z7Q9l0VtH+1_W^ZZgjmSW-be%Zf+=S8dQx0B>Ahmm>X;JKJ@&C8&%0u7bWx#`CZ-Gk z!%_m0=|Gp?B8!Sm#O~qWz6MlyQ?L%ADr#>C&E0=r4x#?(B8$3_P*82#mNS~+Pnvw7 zf9$<#$mph72Q)}!NSwMvq?CZbQ3M^!QXF%kK^bKfmtTCB{Pc9>#M=u{J1(SD&6wWb z@)fgYfZBRXM_X*+($;x~aGxZs>1PjRYaBe!Bat~MotjDob;lB%VRG(I9#8|ge*IJ7 z$7xijB}7GAdP>Q?O-g(kluCbj1vy1l$DPA;dcum$1(>L$E3@5Kq$ROYEXZzNJzg&R z8r}rbGBaUkeBXwzD7@Mony~J1B3fgK>p_iq_OJ`}9JO0YYo z_+=^i+bO`&&|@l#0Nv*0B+z5{LGDE&oQ5@=P?NafX3Dk~eF*Fs*z(7u+$zzHd#!4? zckYtN^ojW*Cz39HAw=%x6&d-X6*`E{S2VhpK2r^V1J&UvI#iJic}}3iWgh{!eipiF zhULJ(Ub|rKTlPp`1vXZyO?a-0S5VGX?dG!ejaYL{vaG+cxpfyyq^lCo;C-&H>{gma zPWfbN0)&6s!jlm8ls($obWru3Ov>$a+iaz10lZ^7de zwvanvorO_(w=jp^s9g1&R?M~}v5IxsWZ>+)E1@XGjg&j^M3bS(+D$4#it<&4OsPEo z0k6==E<}&~?2q$hVJ)gDFi~7#AhJnSJ;ZG+AySgf6jsjfCnZwA{Jt~*(#`u^M9{#x zzjky*{LvKPFrN_&on46I0Bwm6dxSBQdGws=^yMKnZK5ca{)?Uc z%(U+^R>m8nU*A+G0boeAm)Ndqt936R(WG-J2;g{Z)`L58mdNO#~S z!bOtk9VG3|GRVBn^_C)F0vclH@0VzJk50o0eRtdfVLtwp)?BRH!So~WwsI|GD(_2i z+Ql|v_`sIME1T#?b+~K4={koNTAc*ao2tTHr=v3FR47 zmcB~xbeyRowjl|X zfx4_#dZ8UnZ%ZBXO8n+>(G)}Lj&N#q9RM5QkHw`~t-!#TlCtxAY z^LW5p!WeB7uK}UX%Rrzjy5{0yp7Wd_%?lV7Ra=l9It}{yUSw_X#GGL^*0a#?07IY1 zu_4ulHAHK7PBZ%Kt47c`)Di7m$)Y93NJPhqUAgLnl3RK5V*kCX4?={x%8u2QEw@zl zhpFuiTv3*tCf0y;O9!aKlkt;x$TL$pLvtfC8wW<{*+jmPv>lag&_ugO%`-|*%IiCs zS+9qJr{^glX`%iSU;fwJ{@GFaEn)a1^f_0H7RdFE}&+>1rC_|*RZID@3|-5QxN1yyILnNK%=3ap%AXh|{dUpEv!0 z6j%wt>CLf$VC2@;)pav)dnXlwt!a~)lEl#<+8~vA1rfQVH$;&*71bw%LQH(xOkG;5 z;r48u+;*Opx=VKAVX)kg{*9L~r5lSEq6CF$NYt1(K>}U4WDf0qAfD?(WY*Ph?p)n) z*i1Jm-4hL&vu$HpRl1E9Y5Oij2HIci4dnGRG19Q0GFeec@q|%z`kB8?RT4Z*;Z6Cu zs`G++pu)x}!zB(rg>dmo2Ih;DQe0x#`J7O%Yba}05Qm*OSZ%wATI?WZl(BWQpOI&S z_o2!S+h5XQK-EJ!-($Tue|^2xD_g!gSlM2Y zZN@PY;?T5+-IAIsx@t22Ucx#Ox;SdRJjtiA)JnI5flNXT>?^VuokTsgm(Vyef21al z60s-I0maip}Fm-vwVohVuS<=uLlTyiHG{eA z!E!Pi3Fjn!=gNJYLh)Fz;>dS?yQkVYqyt&!H-3_Vtce}6E zen)F{1KZr4#Aw& z?lRCVbsn47%A6dfT)*=81puZSlPm^mkTR=s4YSy{U7*j%hykAYPWpNsG+e5J#kYn}(qleV+D5OtFh|QNch?Dbza_~760LaQbWk)`!c^M@dY<~7_wX!bb zP`}l^>0xfpYD4|5guye@YjdX+PA&zwF?&E!?8+j^Z~m0?@9+g2z0g`QUNkw=TZO-9 z7XYORukABv=6yi|p%v7(0tQt@$$ z){iL53ab08%fJ>Za{7t$PkK?o;jKYM(-Ma-qDL8c?w(0+kKnhr9}NRQd!>Y z;(tqjoJgDet+fVh7qgXd+!kquKc!G#pi14r2_S$kMZyU5f^9}c%6O{UGf;OMe$Ny( zll!WwYfE+}sr_7pJ|Je(iD${{^aS?5%JHH;_yPDA%KcC7kJZ!a2SBeB3Ed3cNnuR$ zhampkY@b_Z#3;-TdxQhc$YoYdHn%$mqL9=-~ZZTXy;5skZ#|(b`pKCRUgObj5BU z2F=N-;4F2Ibg}iwD7kudn`&dAMU3z^U>Vvq2K@+gB^U%KDz?^U&Q(&owxQ3(r{}hFx4zi$sPW{^ana;Nxn0X zdl>LEAElGKwIs$fBi zum+_@A4mSgK6^Q2Qg{N6HaA{}Ew&zqLQEHR*45QW3Taq~7r=2wPO8Db_QYv?ST3`>OkmfC~s>bV|^M6+v8AX}oWc>EaE1Rw6Z;!Xr2 zW{_8lH-zcC&S#!*;M3jef)j3=J9cakM4wCP(@q-A1POx?7 z6<_d<2IH?@|Fu6nK9|A;oZ&1i9}n8u4FdiX)(&Y!TNosh3^RwhM&}4kFTqj~SqlOK zYRr{tz2{uclltT5E>&7v_tCW51PrN9AvHB2NWIrAFl$C`X$v+X8mg07Jib0!PEo-0 zQuwPB;VFFL8oO3!bx24~A<1OM_$pg{k#V5VTy(n7s`rM;zpAUR{{nYhMdwE7p&0L# zlVWd|tdXDs2k+tjEFQ^Xb);(~KmKLW4oW}?RyjuW(H8Z#fap&E)uP$#W9$=4pd&PY z1_WKokJ%P5*aVN2bKTNM4+}d3X`u6k+=`JkYf^zp{{e*&@9WMd`||oB*hI5n@w2j= z>QnZQJjlGsYw()85DIKYmupODJPuh!RSrZ?o!6UChhsu-A^VwyVFmr8!A_8P9pTtJ z-uAo=(!uc-c5D^wdv!&3u^+1*OV2u+e(-f__nCVB(OgTse?2uJv$d;qOOrh;bEqgL{IaNfcfQPCr;kq<1$;P_+_;Uqn zV_Bv#iL7ZJtw|9DGKYY_a*|cSV>(F#oM>^#Ln6xR-a5s}uj$#C=ulI?g65_1EYZ$+ z%}GQ`)QC>p(~+&do97mU1I;2xWdpz`{uQI|3N8{jJPyDGJ`AHimg4&o=D1k5HqmUH5p0XFA)5_XbIU zU1kH;zZpE&+z!}VV9e_~Gcfi*KrquZl!-VV+e~9b>bV!Iw_Ctst=Q0UUeFs7VfGJf z>mqm=419)lC4NeQG=qL4W~P*`qu&e)cX~?iIS+wEHEtft7>B&Dn7Ux{Ir$OtV|gfy z%yUyw&Wug${^B=C&yx4jUWT@|N@M$7 z#u#E8k2P(xsB?#t)ypeT_4ms!HX8Idww@qjGFiEhJz4J)dY6mEEgC0zzMlJ&Dy(u| z*rX5TsDjuLz!bn#Gv~2ReZWCN3yzKRFM#D0nRtl#3#lB{_Z(i0?f-f|Idi1j%Ls;v zy|RKYH7dHaOhwGd;FP(pw4CykE{02B+?^9&SygkO(pX zk-B4BTD-FZj3l<`b7DNrr<76(S||SOXeJh1L>Xa7NtKGZH#(hdVGf;TVbw0+nRqda z23W#5jnSI43;S`B;s2(aRl5rjTrJa&YN%NvPhTUy-uB560(lB1^QPgllz-W_O1#^6 zgyxp5L6Ak2Ene${+99Pa_QsIM$R9CGmhcSTevYKR$y7$a21pZ@@>FHcGy#H2AX zG{zBq3H$ta#4(>KKg2s>#O>e1&nS$ki%iPW;D(62w1;#e0SsAyR1XXHAdlPXx`cP` z%L^V^@bstqiXs~Q9^M`(`8=`5uSA1F7`^>?=4a*cF#;AZC5Gs-l0%tb!NMUCUv7ChM?QVL_$?P!mATvM3wWnpEH&SwwwTQQE#>Trbl2@{wo)Q<$m zY268QM;Tsrc~R(@vdaBs_hRiE-F3u`-0!sE>qu8;rc@X=y(ryx)d%Ww1AnWQFa_{@ zH1wfj(+Y~9u31iX`#$H8v zrFmch$|0nxMS3m)dBFrn_EsYvs4?oUt{z&^&tgTF-s?*7#7>MGb`<470taw{b-1#APZkN5WY~t{u{M z-lzwHHlEzf(kVXj@O7vREwX^9g9pVY?UY|4c(ZntfASfe>z^Ax)8}5jqo<8*dSKo& zP=fU@gsDpgOB#yf>6-;o{n(lip0%xo2RB)OfEj;wlY32?kCRR4efRXSQ1I#qGuzZr zqK5!*lHts7w;$jN)^fWizZ`Vr))D_F<-uL%34m>Z%PDS1ng3|9=V#%LXxE#_!YmKp zCyrMAU)q0oPm3j4Z=h2M{PMDr^ zNs@JJB9zwq6{PYlZ0w*j-&OS$^e9uIDp?CcS_MU%XAVnYq4j>Qk;UOV;&sZuFS#5g zZ)Opf6`fvEYn{vzKMLElo=skOUq&b5w7gI@SXK`E+J}jjY401vXR!D1HXHbK7;A_L zYibCLuzerP)*K?30rBw-9;v~3n-lxP2eKL5L6|7dcj6#?%)IpVTW z;Pf$3S9Wq%h3?anSv|(Ln$@=n!n$Y%(GUK2+|?(U=%JiHr7PRmC?CAqPqI3 zoCv4-R*mLw>{jRZrC$t@XBzXAb^K_Im*0DSb}E!+{+8E!mwgGxd@I;!(hGQH{cRuW zX0RmvHJd~5r4iv;s~hlMYR6t|IL@>vlz#j^pG2P>v=E&y5b%sn3hlWX?lMe#(k`=V6FfrSCEq!!CA`3NAW4l?-rJ(gl{RvRV& zI}UowPEY==^0PH$t|zLfJ(HCZ<=RymVn~`fK2D)G?8QVugnYaF+$!WyqXC_l%kEw| zNPWSU#()mWd1l27xwiFl!wtPU4r;yxH%n>6Y+8s&>_a#H={;!fG(8)*nHbpD zj~cY}Zv!XuV7adu%s~wsxw3ls#L;{WmQqr{`=8cvEI$(L-~MK1>VJQF5{PPfZ8cRj zQvTRf=DV|D4gI!^4|lmVsI?PxrBOxxUa{Jl0qmT5-AjF)4#;r$O|SG%dq&}N>rQ7S zD!QAtM<2c6qqlSwq@b}qFN3c8fXsIHVcp`2Qojt43TVSAk&K6zA0rb?@-LX^Pbhps z^FQPE)ZVXNG%qeq6HiLh8Y1DGPmIz3mm~`|mF`J#JA%Y&00&7F>1E`v6%CS`($b>` z_x%0>5++T>#$*PL^PgUX;pm+21eVW;r<^L6!~S|Uc`E<xB0JO^al@ltvfsu zoX_1loTD;8nXYN?>$(UVRwpF=jj^WTDzhCVKgs z%|RbYI^TN2I4EC7Nhj$atPmP+7Cx8%2Urgd2@0WYc*Q?dDzz7-0H4Mp&9h@Pa$|UK zBVUcYWt08?`uUP_(yHFRWo9`jXYNff( z3aTLfN~aJocKiR#87*28e_Bml3Vszk>7d0U&uV31bt*mUAvj{~a{L?1cH{WlPd=*~ z`NYJLM&+iy;iCORdQwc7i2iM_HSwjBl9|nDyHbLx+M zwkdR@)9E8p3b(j5IXkaCJ?D%{Jg8^B8|>qj&L7HOZcU#~>$u)GZ{t*CdueqqAk3im zCY~yD+_Uy?Na=PsC}6nN3XxFeLX*{W9tCdSJBuJT3F*~7SU8=d6gA%Rnm#hh*J^pP zpdLpgzs}@z@l3?=$~+g&piz3AI_P6<-{5$|O;5)Yp-v0^elPrTA-^-4 zch`nfG}HzAGr4(3kXtD$bB2<~HcRF+S+b7Mjde-bkQ}OzZC0nu%A@^ z@sCY@#5{73xs*j;tKXEO8_*^r)f0QKMO}Qg;I}p!rKKxm{~;4g4WEYcU8o|Y-oG}X zHdkQ!-G22iZtyY2KO$BS}~A???1#GIG^tuH&EfsA*N=1XWYSBlw-rElmSzUn&^ z%iKZ6a~i*k^r4#TZ@w+3pp5=hKl!i^A=V%M1lc{G*Jkyfh%!oq`I`rEYh6WUbtE>I&ClrktMB8316)kwMU5H?E#U)0X+vlNfpLI%`VllKbhX}a>IxpiR{ z+&}S$O5;+&xBId<(>@3UI(smmx;YlsusA*-3)}XeR-r#T&6ro-$$DU!@%+5osFqAq?y6lbijgO5{x`p zadhwR5e{1_9kCVe6cO}+)^kkbO}w{l7Uj>j6a-_Lb^!2p76gh1is->jVWi5^T&Q3n0xjjWL8}8OMcPek_hW*jEM>J z`_UuqpHZGNEjJym!7 z!<}Lr8i3nWy3G8lM9< zQ-2nTJKy$9@#gZ;gM@cge3$JXcu~0h%pJa;Oj&l^1~v3m5X*9|vBX*_-e5_qw)p$J zApgY4TQY$Z{Qc>ly!fLw;okp%SvS64=-nSgx5n))Y&ob&p8HRtoU%AM_!t{<(=DG{MX1cvpe}7&5K}bKEx7YTv{RrAIs9lSW)0_C>VLyPleg?&@@$GSG zB#ut?$Rg1<(^rb8;!WI&ZZqeUl3?QR0;Y;M0`{K^KgY1?)z;4m?aKn=#eE%%`y3=z ztLV=L9AlH*?eih7-`}>M&Q#lW$;vGJnzX&48gy+oILV~wtUS-w#Bi%NbHT9FaBdp( z!!X?D0&8@7&LD)aEXIfxGZ5Cs3C0V9@fu!&Z@D7nB33TwlWkwiFPm|77TI%+Ip4@l zZ7Ia38JUNE$;}Xe0%#JFk^d&Byg&(suc9^b@b+!ri{!nNPC+s1jf}>X#m0h^e zeG(VG6+R#EVG3ky{BQ4v>ixr8cT3jYxq6d^Ux>ZOcvR%~`6L@l&u|Ch&E~9YxK}__ zN~v-q{JC!U`-hb+)Q@W?KYLB+C$)dQ>M&9sAvFA2%)U(Kxx^Cg{e76j3?4|EuID;M z^Arz-JwGA0Fk-=X;I`*paY!nZ;L!->pEk687!8A;>&Lf+=*3T>8R-K`7I4ft76@2PzpfAF_@gLa=A!1ZfKadeW&Q_WXU_bC&@@vjgu5$E~tnrst?Sg zvzue`vy1F;NrlFwGq^g(Ut_>)6kD840bEq?4Hsj>EFv4A=H_#yU}fXKiSD zwp+G@k@f(r^47(57t+k|fsY#YMa4m|-pTu7XtR}OqU}xt*;ZfR<-q-oO9>IHSa=*Sa7+A*z83nL-8*u2K zT?&j}XPTGiOm^&`a{UL)eT^A(WL#+p*#|w<9O{5-k)v6sC6F(S$TG?h4;zD z_@+eZTy`;Cd~*k2Wl)FEmuR=hS z{lHwG?TT%ptXwHBRpyxd+QZ~jvM%H^-^)@FK+*?@ijO@58}fZ@E;&%S+x5I|AHE~9 zTWf7RiMU%K%NUa@bjAx83kt>k~0*DKbJH$SZp0lc<$e+My1 z1z$QcRiabZpw9jlP5R7Ceb)E(j|IMAYAKm^*D!~NF&P-q-<%(6qm;<65C0lcK1_Z{ zlGa&s7NiPOe2Z#?{l4&{uSE1l*Hh7as`NeIQ*=kYm!N;(F?~My(Y1a$p8g zxO9=#6;tZVSA?4tpfG zqojNEr6#WJ->a%MO~tqOKUhr(LPxL`L-5=GOe~=Oj_YnOl(X0!Ya{<)vVbOP`?}P% zMkBfU-v~r)IV<1yeE7|V-rXN1Gb&b>yw*AD|-Pvuw%Y zV7_>^_v>}fV2N%~y20%)!-RD#{{z@SsbXE+8ya2_=&YNMl8Jhs%XkKF-}Wei{8>T9 zPK8;wEZ%mVvNeCB{4(fH07=H~y5t$fVd!<_az-M~X%Kd1^qqVe*UM zAN`3Cs)l#U<3zHZRP#RMEL}y|1U+%uP4V8#Q@9b-)vTDynw5s^D;G{+ElUD2bEOCH zJkfUi$qVd7xl=kL7H$lEGoEUmzpJHU?!Cc(O3SKiTxAWTNTtkNpk>glBJsVK=zHMq z1Aj-a4TH7IJ9npEa;gM^groGfmFkwX#M367^E6|Z1o9Njri4qVXNdT(hE zXI_v+D+|-XKHop%^T^)NB>D!yPZyt_0I*W}^0piuBQci3FPAB);z69fD{_>aOBtUk zX1`DMHU8u=Qie4M>s$_-h#>xkhO3Zn{e&~vf#qk>SC5*%z2q&HdR1_JQKd<(f$L}o z071epJeoBrwbVYng<%8SYX>I5aXI@4yK8d>XzP3ROfNbmIBTyL6!Z?jgkvCgr@l&c z?7Q28jQjWw`AU@sMyAZ?kkn6GaFJ^UmZKBsrC$PE8Z@ibxFb$%452Pf3%($6?T*Zv zlf|un=Fk6GI2H;o%Q<(=tG>dBXJ9>o%Ll4TC9^020_hsOLp6wJvKKn9B*z7ck@wux zsBhK!Ks$DQdj8<0*Clcg2(G}uf9e}1HFkh%(2Y)IJrB^jZuXv*lfCG*zHLPjB|q?< zOiA%|bo5Zq%e+(Da8!vq0~6eXkF@CvhM#(%gWKx6M`!8y0v(2Td(8}Pwmo#!8eD2l zF!wM_yx=q7zG`qE$6E1Xq#96st@CcThMw-H0CJ*@!HlK(ti@d7<)(UGz@yVWi!;$^ z;zZM3jw5_}rm%VY05;p*1Ocr?zVc)n}!WxDc4+1?Ss-_IK z1QMo!Q4w{tl@^O9NeDL?lkzJg+dL6<3jtIwzH^rW%jGB&;%>7z3YoGHuhRC^%tGn$o4RpkFF4K{%$qc`@o;idG&_$9LxH^ zS^V3lDX9Hh{k^gTVVl!rUr?Y-Pk8Et!=>C_A6lBh#3RhK$lLy()ng!(OgvIjY+7Ss?ah^P$WkgXe8s#49kRA5r1Ge)BH? zomC~%-?&k`JxO4`WMV8;SCQpSpt*Jp~EkbctDQBSwJHg1#1 z@``+p6^Ty|rF5X#r{oGyAoU}x$WiI@!4 zs;|~#M1ecEj`E0$x6nt&WM6Mi#mv`Ag^P7sqeJI$>d;c_*6+1>EC)i(4P^q9Yl_0Z zr0@>6_Foj

eSJ=wD-M6ZPot5+<)hwet*_7DWG9wf?~m!)1YwO%9v~<{bLlv!Xq3 zhz>(iBi~cQyf-cv*(iTfq4#0+-C|bH7_(Uhti0!jtv(r{t5K*Z>y-drOa==O2Gti< zetVl`!=c1ydT&wl5^YT|TbB3%5g7~`&wa=CFB{&KFCbzNq`ZTi7~hVLc!xy!sv66n z%FmrOaegS*I)Lajtzf)AyUQNcNX*#;tXO!LR0hps)JY+iD#;zo@|&&IBm**NTb*c07mu zguQJy7;lfr(i16@HevDVLJkGB;V(WRcsDtg3<9^ zB7zbPEg=W!V5lh_eoG?xyF;IFpH3_-I7EJPvFi$>Zsg_JUywLrwav(SXLobyXw(1# zYQ^n+7%e0N$E{~SW?7cJAi2uR#Ubtg^iT+g^vnW869m6$GkS=qF_^}#{+3;~zX-EU zGHuRLtNRzspt7!wVryn}>{Ry6>>py-@DXMKy&f1ZRGgi9C9T{bWYL%#>J~#u@hT#H zwD^6Bx%3$42GfN961SI(U(8m&NCh4KrNnF|*8=a>-lq?pynj4ZC-#n^Ubrv=wlKO#tF|q3K_1f`@54wzx+z?f2NRCm zkx}-iJXJO85l`BVa@B){jsPZ#3f3OXj(2%=B7O{HP_V5*wH6^wcS8y@&5`nR3t-H`ED)D>Nw{y;!m|g*wm9kKH6zr8c>VwYr zJA3p8c@i<-wj4@(1AYlxoR}&82RtaKk*%+g|FXq{ld7>Yzp$Jp;UDxRc^qPaA?;-imvZ(O8yu(KBhX-f2et?95>bYo>9c_<)}2!- zMp5b*ZXq9bp{!Mw%W#h);%84zoNn#~FCn)ixx|EK>j#s`ZF`rPpTNqIfKE~T5Q&3Y#!SH|x zT`jf*y4)w)lS6_SK~T&gC(gfzJMN!SlNIAxZh)fm(-jY+f7QojTZ z&Bj%X*A14szSK6|aR;s!dVAzlc)j2)Y$>CbG7bq~99%X$!eYoe&J~`7^Dz%}X>c?Q zKPWdI)Y&g*B>j6>usc4tbHG1r+t5P7q(C+r?HSDa2tGb`yXum2QVExDv1NG!&?l}| z6f;dHc0PxrND-dK%c|fZaz5qkYR>YiuJMWv6IWL#%c45b6&$I=3|ld5?(&^#$4O&YS_k(SygDIOmjOzVk65AAIX@oU z1u4R&c_cnlu@pUM57L~+yX+w8dSkvlL8p{6i-tQFhx8I;5#_!D0#dH#528=8ax4pZ zX#dwjo9D?7)1Ghn_ep4bFSWt>c#X~vBd1EgZ;3^*c$n@l{mS{yB&|sFI!SX~($@#b zh5AGxuP<3(wf3u^m?S9|o!2@7PH){5v~eom^_PYh_!W5Gs#@SYa-I7iM z?iE?bg}s(TZD@e_(l^OY|7txG<{R>MtSa4B8Hs9|OIY0fRo1R&?DNv}n_}#yq+p0c zF0s9FRf%P|j3?9eF*SAPfFVn?@*tjDP-!Gb-F~M{V6(7d#gL-u7RqI$JxwH&pAFP~ z20e6c<-Hs(lbTiE^I&H=H*$fHmy;Yv9v2jsNB`)gPdN6v{_)xQPI|xMN*%U6#clnE z7ajx7x0OM^<=o6*n4U3cB z(y4@Lz8s5ifNj=DO@Sw7Omy`mDXkJcJWYdWk*VqkIYm6GQW*`en{6186rJ(G~1SdOq20Dq6?CG!fWjh^H8 zL2XH9%VzoXfZw3Z7{xOyXPNdSaJHRn1DgV5PMr3WNt_~rP1?%CZK$_~j16fS5!4`t zCJ$Yh5pyt$hmt!PjB65xmw3o-ORexF&HBKROK-3Fk_HRQ(a4`xME^Iaon<-p0XVU4i4k{i)VyClo*&H zVqKUfOh?e?MmQzZfS5#TBY-NtCF#v*&dYZSa0S^VhqO2efqBY#kWgO`NW=6-A*IEQ zA;vS7Xkvm{5c5+6F_<_d2=mc3IWUkG*@CiORwz)OT#K)Sk!=_@l4n5-LHb1>(Kayb zG-PF%SqqpI#A88-9f)#+9wxyQBP4f{RL5usyfP2gfAlB*Wd8t&mY{ghsz6A_05?<%sH-WMTaAsd=R4vY; zT0-fMiusT?1W*RdBtR5Y+(~y0kjQsMg~R&jxug}*{00Ca4bZIc!-$=+E?1@EU6(Ju zLa|&j<46!5$sdx=mP{f?mjDq^q*DnckEG2ZG6^%0WCamxm_|`Tf_cFl!%-gifl&`+ zLwSwTU?cY=2RD25QV{0_nuMcP&N60$Buq z*gzgYP-BHkH%F1gR|xkm_D=5QyMKTJgxc}^02+vwR@`EtP|)E7f_9i}oK0b{hM;I* zQ3e)Q2$z;51C~A#!2&H7Vvw+OfKf0`A9D_P4)F-`b3+OO3CqhMR10E&7GC^EZenGa zI?Ir3@RmZaa)<;c%Ya>&cp8=)wZO_D-xc42kCY*dirIsSh#&!>RdGo_ZZyn*8-}n5 z0HMO35Csm=(boeN2y}ypV7#QQ7p>f1XfSK993YUO=3>HOk8D2C>TnF+A%0+-04Bt+ z0-KC{rsos29+(ANoyGX!D+|h0V{T@F7OT-|ybUkb8LE0r@{Xayz`@|*Vgm0_z6kB- z{O7_@kH(aMT`G|PUej>u#KO~?TzR1~yMi#UsD>C@i#!pKj>Jp^4~bJgL<>tHLRX(ElgQ3%2mf152CBmk33uZW|nN8)YL9lOw{r=GpKP)tpA z4OnC=D7EVKTP{LRI0#bf6%Ag)c%%?WpkFEr!{Nx-tq<1bkV9-h{wlH`pEUdcDu^~f z-D&jMScuWu!wuf3=;nfdLJUYqp^x!AwSS2D8UX+?OVi~Z)jm$g_(0BM60D&*AZDkf zyN)~xdK9!V4d-$Zgi1p6uk}ab`^Piyq>ZHN@q>sz6svI($X!RzH>?77qC6NF04X*H zp9z~!(Ke#!-8UFys4kGdo_iTLlp)fM! zIv(;lxh2?3)|kyF1{57l*ZFw{-N;%)d+ zA`YEp+~5=|iEmq>@hm)6Yg<3=;9m0Fo>TbYWr;|*J*T?57$emXH^;$FH{GS9I)3jC zk!EeJkqEnzmdrlnS)q2HLi})`l{w+aAR zye`zjo>4r#{4T?gX50LQ9q<;^P$#EFC1+RHQs0jAkCLt+1H^hDGU8O2_Nt9J@Qdtf zGF1EwwZ`2)D&#>c3lW6L)t}l)Y~EO2?<`@!f=~yH(N6DD;#e=Yfzhj*>bj55J=@vP z9)cQRfDsOd=!0I}W)sGpfR68)K^W{5$17=ph>1r30N=wS1^G==z(PV{*!XC%EACY_ z;7hWCdK_ZZuO(&cKQt(#gz;Za;FGd-mpP9)@V#%!=}9i-wdg7?fgnz_-Fn0vx=L!U zGZIHnVY#h?B#+R4Y-^F1DM4c_XX|w6fDrTgE#P6k_a?EaecfJ=$pM|_hc}DM7UO2Y z9-Vzd@8w$(Er@6Bad;CT!_$_Iuhj|GRn_=Px}pFp2ac0)HugZiOYCtjvGa611c8+1 zE_>4TCAcdR*US=~uRM?O{{U;%p&sd21UBvU&1P)xC_zqY%^5+)Kl;O+}`TFI@ufai4k`C-VSCSdO$HorpxyORAgf$>ZEF((| zO{XC%6!RZKXyrQ{w#2k7500f9>TgYejc8p59os~GObd}}5NN=af z%766PlVl)f_~n7M^6XC)s`o>LNalbaxV@qqqh`zeB8Fm|H0Q%Me~w>!p;<|pY^<$? zpU;fApZ@?KH81Yb2)=3~_sA9r^>IhBKR~Ei0h@d9yxl>4x~D~aR}xYMCQ;XId=ttedM>7+xK=n zxRiNgtF|z-OY@6A%E_;HJnAVGzU}q$;oZ?U_*dGKg9}fk%^dsqHnfr0h1u7`;DB=F zxvD6PvZW-<%<+@(n6cRz# zHcbBj2|lA@z1nd2gDG*0HC**^J$s-@9_Wtj@vA<%=ws?#?jCC3EIfFZ~u04<#_aX9C zZ#(Z6^Gv!9=3s7v-HE5TjPS^o4C({b(Ak}NAK0-(qgJSATO5RI{7AoxE)3`lKog|vc?48GR(VAQZfyQ~te|90pN05eC-t2Q>rw(BbeYdo@A>&?bVh(N- z7@&tzfjghe%x|NYeRl)3@5x(Bp0Nh?81CknLmj|54CTu_#Gq4~nY@EK*4`dL7-kX! zo44#dv5P~2c#_OPl_!&!#-xw_t|8J<9RC2RAfI2hF_&#~u4EmZ9I-90xaMmuZLXF% zJRo=pn%NmU_&i(52I>>!4`uM1CMN~dCp7l}X*dbbO_`?8)TuqBF5H_xPlgvR$oB49fj@(FjXw@wNvABeU#Ya!oPoucKQinRnT3(mb2=LbNCe%3UAuEQ=gBxP z77aEhIh?)(9o;+TGmj(R?D)X?>ezxXo$^(SW^uQY4|iS2UD#K9N9=8_XZ)W8^0z-M zspt1J?g#iqz(K>8>}HXm^YBP<0(rQGk%%L$q-!Qy;haYu`~dTA@JDS9F?jd(4eCUp z<;dQUu1&p=fnR-*j=$Z&*;wn*b9NYS;!QF!ayapJZ^Jr!dTrsphc|7o&Dkz2gJj#n zUwPif52y?rTx|V(w3F+0?Xo&L^E-5N|H+_twBQ=6W@NHEoRc z-?Gx-cHVZ_QpV{&mffzIaoLGwZX%1G6SbmsJ~Y~ ztn$JP9W5dI4;k~(bM*(M$F{t!IeRJU6DXECC3;{UU0Wk>E-d8Sfz`>Y3Gcz*ZS8-7 zXBxncd2ZVLLdfNk8^rSU$HTg0NV%fZY~~X`~>rXl90}};N8d? z4XE#z7yJf3kOKKXQoJ55JAu@Po;JhW>jVznT1@@J%^2?TurTfrxJWi&>I+iiRuzs6 zx#?~&EXe_KVRp#b3vtO33;MTvkSh%H%aP~bAN^dDq&}W!mfJsNeZ9Q3kQ-T-(y`tS zES<7O98SG+aZTzjGVVIvS{Nbs8e=40Ah|;PE^xg>o(AnA*i{1FcwdQSHT(NrM;5;y`umVZypU)w-#FHB@Rg@)D1H(rtMDjX zLoOZ7z<(oaT6Ti(knp%-$N7!udejB|2{Xs2B>w=w{{ZR}mHV&{uj$OiO%5<|U2Gjn;A01nL5C zcW^>z@gE=a{kNDIa~!z`8QuFBCJwG`gF*w;<2ZG=N6ou>d?jix4X*+X2*c!Y_&Ct| zfiiqy=rdZ7mEIW4z)zHtA#)IyI;b&u+*D{>Bx^=MCtUj-bw#~4Z<@g&oK)jjN=1%4v*z}E_D;zJyW0tql zb1Vmw`XgOGAO*nKg?=#%yvX40;(7}&+t1h_9E*>G=#=2VaW2NUKE|*cCvxa}nntb; z+T*F@bOoQNbk!!(pyGEk5S**+h1~RH6Yl}OmM$D6SZ;B1?CkMm!L`SK>?pDp2Van8nFGUR#~W$R zc+{L{Wt~4!<vPR_uH9uZt_}p z@PKIMAJS7-Qn^UIh-1)Pxxqe<)Lpz5zX-=>T?jWt{M@^dKCsc_*TOaMKBPF1{UJP% zJcb!($!XplzBfC#Wzeoc<;IJ8YzI#_mJV@X^8Wx5A6H{!2Umz5xPgGd`ONfMCPbqs z@zTY!AJRC!pcw5KiGsfuFB)?cpJx`v0(RdA-s=0SZEvV z_u>4RHN<1t=Gg-MndRtEzMyjBCy3!A#>H+O!2WFdlqE@Q+(=2h$gJHm&<1evD!T%k zD#PyYj&5YqZoEdCvOEV7AB<~JQic)&)DXN5lD>ZZUyDhDE&`( zvEIY79pb^_OYhO_`EI&x!ue~J_VOwZ20@cYzW|2(U~otl4lLJjjEn3G&7ldQXS;aE z7CSUXUW=Y!`XT0p({SE!Mf(1heXEr&Fun7bgsk zmJd+%>Tvc%?UpU#_Ej_BgU%pZI4ph2aXX-3=IGR6!q0pkplm_U?ZG`<3#sUL=j>|w zg&u-%%by-fb=-e%McD`2>;XJlj}8;!M`@l-dm}n(v$5vPA9oQ0pN92b8E#>nW69q9 zkq|g^k;)GVG_&^v_QdWTfVH?hb8`M;9Oa{i-+YX;Fn@N~8P^c3ulE<_z)Q z1oh;W_K9d5dYi|H4M~47(8IPoF6Eougo;L8PmHH_@Ec=(zx!HeSTPjh`9vTdFIu9`W_r&$9GyS44G zd_{F89Wkj7T;6Woh(b6|+WK!6yo{$tB7ddgmFCt^#h*($$%VHYpLHxLU z;zCD8%^%Cz9eMj%^|0>_-z-cK#p)rY%JMrIE(Ni*ARB2liPc8bTcTe*nLC-RgAvE$F!l zxH1dRg3k7i0!ZY^)1;ab?pgF;I2c<~w(kAcZH`0Ko7@rCB@*dBxF-pX97;Jz?VN&n z8%;gAwqY~-j#4Jq(r&5q3B{9kSFGX<#Gi5y=?>XrauVt+_;nN%L7%9!i=s$QXNHBn zkuT)#NWF`0lHG9!kN51keg^Vfqu<#Ld4Hq=mRm@tD|nZb|FRIvW5GJ62Q=6ydGEhU6J(07J8;i;FEPnq6xhxf;A0|@!+f?YA12Q z=i8+HfW9S zgK7AUB*gim?uMnk7RnOB1&Twx{D}D85h_m&6$Z3VAj=C!NQ{B5_$StAFdGW=CrrJ5 z4j{sgVEP^m^uMzB36XvuM)Yovd_zstBf-Py71^5O!8;FvOdBJh#E##L!H8rlqm`3> zl@oj_+8u=m{Tv7X0EAHrCkF~_J(wtuOM0>O@TxN%!l}e;`X{y}T+{i3(1(#C0ique znvhSZ_rNxq*BHAYAxm5s)eLww<lX-IjTes! z9lJX0L#!6V6w~1n5g5{M`TR2}4l3yBBYI1(@@YlB;P`(=Rf9eUW-v7(`~&QIG`eZ= z4ngvzP(^ALYD4%0T6_~&JR#F#@qgKFtzw!q)~uz%zdagiJ`17{k8?-*HLHb&W%gfK zcrh#CZk{%a!G45CYh|}r5s1*@Ad;haXDd&*ckpM7d(qEk2!ZJzTG2xI2w@6>K}0ez z_(#w~O+OFRgVCt;T_y_&=)5s6IC_L_fg=5h5vSnhh1g`Zbj`L+bWcqlmQmk)6HqLH zRbRsi4Cqkzqx=s7V#bZg)_dNG5^b$QP18l94X4}_sDfsz1~v4cN2?o(8laQf@IIzn z!AlBUXuTMug?@=7QNk9rgNm3Wx+O`AN2W3+4Z#xA!mnS0aK_EU!xJpEf7l_kSLdVs z2htCx@HBdFs7_GaqRPk|LBL8ce*XXfruE?1t`LTwqjgYe(i_-`)6z*S73rSDA)f~G zh*fQ*Y<(1B5jcZLhIMw8t_`STO#)z3>Jz3vo{c|{Wj-QSz6{iOHBfEQ!8&{#LrS_% z%@JHp4c2MtSed0CgcE%dGs2`7is6D)8MK0!gJk~zVnEq$k?z6}#5Hh_piSxUZp#j1 zSp+|zk$UuBApkdiNa3SwG8ckU8XqH6K8x5x(w>b}#HlhpL?!Z5(X#YR)9A0XXSlx% zv?6Fe*`K0ye!UrM!PEANFA107S;Y`)7~V)+3`!;opNI9aD~}HLCcT$RE(~=;ZU|@8 zik=XXD?JlXlzg0mNqr1ZnY@HZ((q4f;KIHQryU}C*yHs668u5n^jG(M5NS2}4Iu*D z32rg0A{^+OBtDN<@=!H?B%0F=?}t<=)chZ3q;8>dCUPSp+I#A9{QS48QJEE{}a-N!{lzKYQ9qgHfu(95+^(!T({m_?*nkvtkk zB(6RQCM1^!MMT+SD+*EXzIt>~Th+qHP@PbFo(W&ncHkwV7a!no3Z*?1QEkjfl=tV+ zm3$MAS2!rI#4a*Fv6>nafpBOUIB-bjlF^fd{{RtJ{fHW2bh~tAmV4pu2AT;fSUpjW z+#!;#jGhpmvKKfc`81+n(9JKwkexmQZd5u^p&RtiT6rOQV_ySDf;X^L*yA38!J6 zeSxo$mtn4o=KK_9ViTBz^fP@1bi|sBnj}va4|uRjIO{srhVw?Mbg9!uHW~N`LL|&e z`S?jV86(b`5BnO;Ji|f$7hDX&(ZR?Y;ZdGok|~iS&+{5ir}jS*EtEa4$o88^!H#9g z>F!16!K@3%;}aSBiT?nN6~2`_(J!KkkJuVWN|4sD%TT(jVv1}e$`VXv5eqeohfs5* zTcejsa5R(o2;Zd``YSL_1o*3Ljh58bX!V>Un zYvfcRcNvHBX;{amyrtIyi-ZwVNcPeohd(QxpJcbpZmES7pA zD3PDBd}|V#Fq&UNQa*`whDe)e?i>-XN4}A@Z5ZFcb*Pv+sJC4ZJjyXoC+vi5%hK!{sgjtH`3KthXhf-~f;Ku5urv6a63!$4Q*oddE5BM70Wzl^yT`Tn#s>GvP zaR{nwqOnJV=wc#Z;M*(yK8}cjKggHrGVJZvOxm z**_uH*xrJ=QLLI z50LDlH*idZ-sr1p=|pRRWO`SB$fsCc4H{R`9Vftc?IDOsXh{2otD+2oCz8L(EpWvB zBa7fXgMY3O+e+Vm4NAAEf4`D`t;ohM@c#e-B1GZM6VVNzsH@KX49Cc~IwMtavNX2> zf3we_v@6pQobXi`aO;H1#S~^9@M<_hf5`Qs15<;RNgfYL>5NaYz)(j>eta*#h)4~0OW@Ocf5AIOqS9bl?KHi^)qs937hH{(M1tQ+c_ z;9%w|ijG$q7a=yL4Hv)IjF^$5zsSCui4pL({F`61>~|)u`c1h`8ymld#&2KHhv5k% zq8wB&oMlE;G^xA~Q5Qyuf1xTQ^^tlLR{B1MmC)QcHO$V7Ni^ChO9!1gyHJ_O;hP(xGErA~~TC>z(Glc;~8FM#nNwI#o0=+Kz5p9H>N z=K)i3B%>U304@J0};cp~c%g@a_4nb*^){u%Lf*f%XYG42U{ zHryxKa$+e?5ZivoU9@wdMd}KgksH*oQB=W`R8xQUXQ-Axp9MJ*FU#;;62FC4aC3?L zvA0Zm;EUdkmjg2HkE9ZYuW(K%gxwPr2S;#nTpGz})v9p~$Agn=E6|9S1y+|gwT;63ogPJEn3P}S z*1Z}D5_o)Qsq}FX?H@*dH0io;lk~w<9QA35=fsL$hcD{U$-I(j$g+8IF#)mwFxb%qWk~W7sUPKzT6W0Z} zqZ)bf;a5`9v!d_eqxK(UC+!{tI_fPapMoEu>@eFxO5|e72964fwWmY>07Bi;I|H-{ zDBzF$A+=A52{Nos4H7j&m^vCFtQfKMv7f+s_;AejmL&H~1TT z5N7J4bQ^s!ESZMPZLiniUTlSrBTn>p;G3_|gjuekjQt0qNqvX%V)S(vK{J16*cRL2 z4!H38@UKFz&{A6c`Ws-&r-diU_Hi!3A*_A`{xL2cG#^CJH3ZHM?j2_Zjy)mjqbvxJ zk;EeXm>XK~YW@b(jK3nD2`0CO%qaLQgK2d2^p6b)pi6_VO5jT33pzBM4J0S(FW_b=a7^$X zlF6`A)W=o7hWi^203`qZ+&TwF(zh;7h3VnMX_i0DtdB%@WX~<};9Gtp5N3+LuPZhD%%@ zq0pM=$kR@^YDn+czYsQRf1xyejO-Zov!neV$tTGVAqDnOP?X9x@q!vr*YGBd3Xa3l z{s|MJhYD{IXm~En`*c9jbg(=bAo>flAmT+`1nd4pCe+PFSZ!MuJ4@`IoAli}G7H6t~e52^h|lX!pUZtE2;IXQpIdY|K%+Jr;^8&j+7a zolw>e4I8Np6ze#WC3JDKO2mZhN>ox-A*{qY8XY&>9bZwg(XIr>onHn4&w~@H=+y6A zUW}~PFzdwFN%Vw!_AmA?t+vln>`@hthofX8?)wscp8(QWLth1n=%sy&!|0p|2>$?y zOHw{lki?`8_`eZrf`K#qZjS`-s7!=C8cj%PK=;s58No!$)9ggsRBrR4_7jo3DCkgk z@6z~3DA%GOG{_#ap2lrAQBMVNN!VfO(8GfsjB|~B0PxIF&+?! z;(8^&M6L9l`ZLTf#!NO)){cDN!1AsipfDiYQX2$1fhM|8lu}2(A?+PFth=L28Cs8K zA>WLR-icf85;n5UOUoS591C7(lT#ff!2t?C11|=2(VHrhfrXQ0nhTovCsUYH z>{#7Qc&Lb9eJzYu@Kh$@!btvCOcV48tSBl`5WOeFFOjCGYbnMmoNkG?6ltQ~0Ywz} zx=!6CaS0``S?J1^8x$yw4r;j#1H)0l6i7z_q?G4NOlHc#-`zr}xsH0bi$`aL5t56Fo5g|zvC z;QR^6g0kTq=@=361pfeVg_C0JI0hK6u>SAEhF;G`!O?5vJr!*K!~iJ}00II50|WyA z0s{d700000009vpF%UsfVR3UJW;7RHCc=*g+@W>CY-HbaT^k%-@sM*{*In911b81a(gBi0B03oa(! z^Om~)`n_=9sL%4fJqsT!aKZGm^^zwxnYth+)ul!H9aQ7F-yRQkV1YYAToU>aJ)cBb ztr2_EE$ztF#6Ibbh(~|P^ssnYV1qH1Lhi)qq)K8rLqPoLSzBycP}s+Dmp;@tBw&Sv z8omXGv!&lbMc0!eG{Sq4afdh&L=j!fkTMk`GE5GEwveZ$Bd6CTm4y!u!CIX_QWznb zRFTDkk@mtU{_(N_c+PqX^o9B{(>1wnWmTgd>3seba4bGeK6Q7AZ6Wt>?`6{_rZg#( zmsR#EG+R6nZgZgM^KtAB8Ox_rpv9z5nCSG=knGu2+fkFJQEu9a7l8!**L)c-r;XnI zN>T@hO36y6vr9OiIVV7ktjh%Z<62Hp_LmhH7Q<>Xc!&u-sFdVbR>K^uY-P`A+JJgomiXnD2l{!OX@&}*6(7f6IXH1izRS1go)G;B_O3su(wkp)(S=6z7M14 z*GVFh@^LRlE{b;8U-?HlcOA{XgQV$K6-Luz5?%#hbm6*+YrzHu z#91yDP^B^mLEb}6!WL?%d-{tOW53zCwleVOcX>2XMu{0`xuQlKAB*vU$36=n%_LJY z7QPEK^u~iINcf*d3Nb&e@CSF?16^9{KwYHzh?`w4=2J43OyM1xIi=nM_~016pACAE zOgN*sI~#$I6Z10QRE22pvOi8*BrZWZalqNm$6gYXn4K4}rY|;mcQ_W*TokOPA z**7S>duh^27G281IU?fHDX`#!`sgZUGG(?T??=5DwqtNam{z}_(y3s+N8 zNTvHE(!_X0W$YHsL^PO|opyff8Ea(+BCoeNFcB&KW05t6Ey%IZN#DuCH`7^8;$D*P zJ!Nmr(T0kF!XNun~8aA&nBR;ed26_j4`|Z|Uf6+L?5WF-esJp-VX}85k)n zspu)>yoDb`-}Kdh%Aqbbxh?h^MLfut`9sN!jMnHzmvScYk$UIsQ3B%cB%6PQR4B5L z$psYKz}?h@F3b;EeI#rflZ0F8r&4UXg{yr>Hp<_Wlj#zHO_zAk=5GQw=qzWf5`Kcw z3S#m7$4QFGEQz@m$$!YZ9;8`|ZX#uOu=1CZHhz*{>R_A}I@##A;uCj*(^TB;azv(h z)de!??8q+14yrne!+wQ@*9r?qz7u!8bcSy_)+%H7&)(KjaYlabU&6w3{Zm_G8Gmwh z=z2@t7^ME5bP~_2Ow7pLp-O?hCybX7brk3r17bwOHO#6Gh5eId^gYf7=M>z)c(MLMZiY zv-WNUE9vNr9#tXHc`NV{P};}Y>>&lToiRL17n=4$6c53lzQTWvu?=~W^xHN@p#K1G z@m7UOod784nN56*smXW4#iCZ?Vluuss$#IP?v(JPde~ z^?}mhg}(}oG=u)lpi3%NYReYBaLcoiuY zMn*g(=?t&1B?!bE9JLu4nC?B|GnpI2AKJMG0g6y?m!etAic!3uN+w(}gdFGJgKPeRK4bnH zk2Ks1f7wPY&%Yyq-^oucNkgOQBv*{Gf7Zs~bs2YK5A%kH8b|0?&_wI&_!b}fIss3& zp-B(N5|eEn7COmE$MgJtWhcM3fTyf;WEv&81t|#X49$G-S3r8-L7w+RO{^Z)c>HTq+;ja6F1) zL%1Z()2T}cE{=*SLKXrtk_4>v5UYZZtAEIeRZ4;KeDoF3=V?!P(DHcK^MGrAn{^f} zgdqAF{xXR&wKOJ=u%2;8)@fszY}u5FlP)`aE8p6ZW5-3B2N*S|gzBVw{SegAQJwQ) zm6~*uiOb%oXv!h&*Ol8(_VZhfX=pm`{rs&p^A~#X4m53r;8gSAg_eqNbnhc81`FPU zG3rE>0SJqPm5x#ol}*dE?wnT2>P(~0a=^~yZR8_j8~1Szb11*1m8S(T$~NFxv_%5^=wWLxH(E>N* zt&@WOZ3K=_xW^9UjBrnsX+AwJKA?K;ol>nT4DQ77CrrLxgL}kcSu(&&f(Bt&47XEc zHKqtuo-;eTpK|2!lV|bs$|`{ds(s8(+JQ>+itjo8AAI*QD!2Z){{TWXx!wm_&##-O z!<>jk@bTZNk#*x40=+)TJ62JaM2K~>_F*Z+Cv^$#JAd>VN0pY}LVKG|HX^C>>L<1- zx4apQ!=$>#Q@Et3Nsf{q}dkGV$j=lI&fO#WsxQ}xUuty*=$Um;|AG0 zB#?Uy6a_67lZn1tZZpPR7q3ypH~Q1F^!xpq@iq99{{R_KqUGTG#6!x#V~h&>=w>{V zPpJ}68R6W_HBH=l!L&CF(_K4P{MpcARTvZ!HNbV9S=_U4!+A1{eqz3mrxygZX0%CZ z6zx2-p58?}x)t_=t3baJK5|C%P}OaRzd-nY^jP1Bm5|fGb5>L^X;I_I@|V_zcu!2* z3&5+1@}7jakv#YzyjbrRdzWFV88a=Tq>YI?of_r0XhewamYH^t&_<_|4hJdTKGuk7 z*%Us3X*kYVq+Uvl(gw6FpRnBKD4qgnF0oN#V>jA;*v2W6y^&E28c)3>h~^2gr~Z{K z{(h}q32=DRtZyA3=p(Y+?mCX(+=I1K{c#@QXM`Ibf>AjXrcM+ltHFFVCtoAFPHpqt zZ5I+%k2<`cQ7fy#E0(S9hCbA6S2E1Pzm~^(MIA>g?mN9>B;_wgUd%?^K~99U1*k#Ow`{da`AAsb9SQ$QHl#(q zEB4F4hoWj@u$q8TK`>Z`{0b`tfo9*5m?6D+iTpV*!@QD&lyYJHw2Y?q`w&XJqQ()_ zrRS)Kl;N1Q%42pPYs-Q%C8>`>#Z`%U!Vp_0tc2Ssnc+^TPZR3VCrT6$r)g*vMffA{C5|*9dym?7%&#AyQc5xW^%F{n z!e_|@@)aH|N)bg)OfPxNM0r< zFOkgQd@pfp*y%@Uog$T+i$K1`vndz6b($wh`ypv}f=2->zM&Gwp~#elXk6Di+Y7Fj zs*+RHk9`M5Hgc06(lShhlLv8tVu2&5h6V0I%}pVcRKWK+0`y`NK^u_-Dx+|dvG1eK z+&1V(UXbeM!uZ5m&nkbTescZ#0nk+bWs>xC1awl%c)6U3M;o4({`eUuk@hh=r*vdv zYEhWiLtn$Lm((B2M27S8P-C-ITGkmPLBgC5`w71ogcv>uSm+n}Vg!?Vtf6$upTdVp zLZ9bJ{1%A`_K9m1jmd^~C<|LLgNF4DR*d+wW9m{STi_;1V;RX`mojkZ4JTdX*rjsJ zrtX<*k5SOYWXIAwX+^vi*q*_<18rSZXr-X0ti2rGkjmrryvmmIUG#}Wp9m8jqj(DowksC0=Ep-&3Jq#!^Zn*~D z^h=*+K_@IB4vptQ9n{j7)S~+ops8hOLq^fZLIVd~#l`d#EmRmHa<_wtplk>t6V$%b z+A0v$<3Z>+Vr|EK@*7*IRt zo6)6jX_w;-b)jhqv-$~5J?zNlf`~m=ZaLTJkE=gb&(rI;{{ZGQ+Ir zW@z+GXh)ABAIU2P_vB><)-d*c*5X=HLjM4Ug*}7|Z8!_DFzjy3yY@kfp29_&1=`?9 zc$nVkJW%B|&?md(m7>9&$)?vM&`CL{sO`w&Q`lPplrkn-j_8~MG!?R|nUlEkXE>r% zilUJ5ihE+Hww9B+Efe}6rW+A=4+M6{d6OW(JCU03&G1iMsQZrS?l{PWHQZekmO%w` z_eRU(-GT(vF)!IMZLvrB6?(#V;4}`HncNjdTUpNg2Bnh9Q?iQUAbXp7GL)gH62L*@ z(Lil`hRxzE%X{Ai&+$pr7V%5xCEp`VpFD&okf8o3?gZxpMlHGcFjKPLMrq=|_C~W& zsYH=>vKvyh^qbxJF0{nqz8V>^;Fs zlQHYBFMC*Mr>G;TPTA@O9-T>*qBqm)sa2ch4LveIDGCW z8M!vO9p)K%_Y3rFVpGUsInpJhBu36ORp2&ktDCWgPZKI_ZY4AFZ~d(|F;=$K=KIx} z%aYw?y*=^g{{Y2CQgrht)cQn2KCX`@1rstpZz9W-uR20MM#)!jl*L%mh`KS>bJ`{r z+(@7>0bumV!7}4b@0FNQUspXXaG@?s)Q_qPshM<@k%9d}33K)&M_f?uBM6G9ZxMe~ zWYv^gD_zNbSd!2#iZd18jn6bwMHr=?q~H9;Xu*2Sia1 zAF{m~+g!)aOd3bi&}K?PUzm3G8CktdK%XVo4(3U5c%{jfsv>Mub&UprWO0BIoWl(eseX zfephCc+JI&TssYKWKOZ#gt6ZPrf6V%PANUGN~uMaz=0Byso}*j%(CESZe&PHjMyxp zK$`}{4Tu8jSQ*Bw$zV1mVjZc?lLup=Br=$@2hfc)aEwihOTmng{SRc=T3Ijd2W?JT zH3(8B=Q303*lnGQ4?({$j@m+H1s{qn0Y=BC(%1 zq5}Yk8+9i`_MG8c80n@{qp}v`!`M~#-Iz%jQXCv_`Cu0ZQc1Qajds)N(p*2#erkms zh?%nm^AX-$1IgSgXQ7pjcDs_G*3a@RGH4~y5b32#Wsc1^kre_MxXKA zhVv?_-5C{rgd~D+{0Egpi7zB0_!j>F2!tEY{mK65sTLg}4bBH`>!WBidfCr;JnG-P zip#L(AkycX%&D=B?71xf?sF3BEmgBn8&n(k&Up|dscSy<{#Q)c908wuO7xbQAgQ{l3S zTNegqB6G@RU5BTIQacKWFd5KW0i(G80HGpOdZgcHaw!b=CsHi0_D2uctGJXDk=V%f z9x~)kCc(KIP?C`~*zy_U0xGxU=rg6E0FHxIFtnU{9A{|T4em?2(Ht~BGZl+>cha}r z{)}P(t#)x04R|9TWm`4C_M^KN(+$Ph5=%^ssLqbdN3S)&wSR+8Xr%rCpB2A+{-w>8 zFM@OP@E1=tC3Q=nmDlJbx2PxK{6)m(i)Q*8r0yKs559NDu1W}-Qn*a&~z zN{MriQWP>0lnPR_`YF4<2Xn`()is0v0BqavBPc?H;Tqe2CQ%omL?Ddnm`;&P2{Dm# z+1{e>5@a{~p~zmttdMt(gi2LI81@(+{+tG^DSHNxB|DloNqdVHv_VlTu9`Bc`hn(vY<0;F_ldIV;3jw`7!- zTcIy7EM|6oP0Hky=6QK6#jOQaLT-K|7E8G>FMf;;$gLi{J2+jQeeEK5ThJQ#K;yp< zGeb&HTS|AZ$XD!_!{8+ek`#mJ8?1i?0fzF0vobS6i&J&nu1T{OBaI4W3GdIxdj9~~ zFX#6@d{qAc{{S#Cpi$m;5>?n#}MT;6#MY85SA^!l}LvoM72^YmtF2P)eS)CrUg2Y9kwN4m% zCx2{u02xVRfPo2$q?D31HqqI3Ao=}icWIue8oat!c5MnF; z08%PT@|MkvlEyL)8_&EAL0FZ8{=p>4(JQr^XF9YB5X$lDQW)3vXbxj^#b0nWiwI5R zGAwPWr>2W1R66?PQ!En#3Ti!!IK-2)?Z(sHjd`zWd7-*Zf(gkyU5HdYZiN<El17yF`NQI4N~{{s$C92DEwwuXVxy0I4eMF}a{=XBWINWGsne0>apdA(P-{wGn&H zpXiKa3ir^R#bCAD4juw?Z|+Iz3S-Z@c((FA`~(lTjR=xE=h+eT29{Y>632Gtv5b_^ zDqj-JNs&%!9bajjrY_-N$XM@JJSe$CLCDR{^7pkzArCp3L%XlHlD3CT7Rp8tdpp`Vt%O z#|wle9Lt$==$J(ykq|xVKYxd-IKS`7{XhHhieL1fWq>L9`Rh*n0+o#OTFN2A_S3p# z{>k}9^OmUICIyX2MJ&*z2H2)0A6Ps@1`;qRK9tQM+#BL-{0WmA6py#fCMc5hL`%Ac z_1qjQccqk;hQVt}K`W?6b4I|L7tQQq{{W@TbsB%q87~C@T|^o_npFft;V)s?J_0z< z{{SiNj~#pvsGr!O^~fV=+4Z(2%6t>WiMM6|Uy>L0FTG@C3{xh{-9EOr)Pp{Sr4`1gZ|%#dEh(s=l!fJ2{uV>N)JyWu{SZvx?E&BZ#;xHd3D=zW z^XSKIk#RLQ7}7aoR%@$w5RiXdN!)q}oz&@S$`Ne2cbxD@yKnz3)o5Bv7+kJR_I30wXO64PaVhmPag z6$%{YZJ+cECX!kD8VfU_jC9fjuh?_hqSn5Ga;Eqta-#WVGRA_SXgM4PiiD)D((%5F{lSNy%;`gDCgQ zLyB!s1ZLXE@DgT2`W}|qCDE=L>`|ffukOuV(33mq@a+JxTe135ao8=Uen-to>M5bO z@DjG&4)myvv4xg;@K*si5Nha zhLm?Dt8$Av!iymXeR1f~Q)|K|Y4f3e;E8qXF#iCv>T)7UNc(AC2i+OuoPURLMPB(D zDJ#j$IwQSK;*4iX7c0qLzy10=zK>5xP7pBojLrBI+?S``%eI6t$o|4AnEgeO)K1&` z$vt-IpuKR01AJl$Hn1f%ew`GD`8qO_v2fA3p9@U<3WG6|@1*io$cxk?6jC4lKZ2n@ z_)W+0yW_qMkbfMIzwk1RgH<0$(}VjPDB0vsa$`|L@=1;0pvC6K3TdZyUlGT=HpD(Y z#`kPRe}tWP=Gj^N{{Z)Ya;1O$EBpQa>Gi+zY!&|i*sJyW<9~-qp(|bEu`uy`2@$>h zG8yQ}N#rK)c|2k=zWamNEA%UnoA=|S-sAA@4pA~WZMj3Sp}g;;rll__)V=d;Q=J#O zn3F%)Fpksdx5ACmCBf10&GNz*7#V6!eY@#^eRj5kN4OKgKS{~LY$H}BEFrF{o`*~A zP68+u%gMdPZ^^uo%)T(}I}Z6=$?%WlOz2>f?$NOGStF}8tZhF(VVONgyMeymgRYH+ zp^CGCgX}9LiL>mMO!hbfW{@uVY9?$-yk+H=k=&qWgqd$cYd5TuMp2P}p2PnDpMSG< zmwicFABY9-{#HAD?V;p~?t9)_?LGWZihte4$rNL$#ga}je9Ez48S8cqN1uE)Oj({W z1_5Sc(ivkAlgY|NN(Hc_PtQhJzgCKEa2T4=exN;ZkcaI=R=Jo~;`==Bn;3up0LtA^ z1z&vs0Pd8R70a~|mVlp^Jo@F-3$i!x%=$u#F=;J{)k&KW`Y+mzqlGcpOL-g#9JKQt zsHZlK^_~oIlkRo2b+l{8iEL#1j1*1(01&&IlWl$Q)!F!p{{X-*&l29x>nS~PiQoNG zo)AzGVjuaDD*^2y$Hk~7zG`E)LOVw6ZgVbJh*L$)9C7|^>(BoHs&RksPo7`=k^R+o zqxcSi`>6xJ&(&}JLs7r_{`>o5?Edsc{{a2zciG5m0iD*;Q&39=S|U>Zu1Ugmg+oL= zc@u;)NQ{&46z139tW$3B=!*_ZC7p%W)}*fX71c;Wiw0zrzH|+2Umy})SDj?0eG6<8 zk4n|MRm}6=HuG#%tFbo%7$jLqOSz5A%Z-aFU&S*nqcqaVD6u*3*^P(8l1N;Z-z{z@ zTSjP?%hAI=_D=S;)9Bi7_(Lf_`UZe+{+aaTAO8UIhr`o~FhAc%Pk!5ne*JHNs=u9E zaD;~XQJqJ}(4Gudd-5ZebZEzO7?Im$^49o2Bfe%Iq!nyG)`2sX{z#=~`Lk#E_x}Lb zWkb7d{-68g;J^MPoUi#*&;AR4PLDtQc^lv6{&(t7uG{?1^8WyoKm7^m7Nsff5$(RD zNft;>Q?c2RLg`cu#u+sH+17}XG;I%lLtS_a3(O;sN%+Me!Thu|z1)VS;9}I?>&Xe& z_`d!#Y{`K4eX~7D)jR$t^x^Jggt0@`9E#wyXS!G_Ium_;6?=?88DcN?As^ok@O{Yv z4q#0j`HO(yJkO3EU*R0S)+fj4Gk$=~^zCb!A-CRIedIEba{mCr3-N;XfAVsFWJ_P( zn&RKm_;+&F{?+7eM1(J~a-Qv>22e2zXS(!s%=~GS@$Gsp{Qm$o6Ce4Bc>XW^^)Jt+ zf6waD{{Y9$bqD$%?fU2c0N_vTleXXMQT_h_q<$Z?wh#XR#-Bglf|Sj)XV0glfIkYy zF%=BKyiEq#OECWcK8&`|mjq!OTFt}0Ac%LAYW;|ko?Dpd9go>COQ5mlEh^=ZV*L@Q zQf>bLvIJ*CX8|ey03F}sk?F7LlxCmZWl7hi5=9Cunnmo}EoXRIqdsP@;Ur%yEgy3A zXsv%4qMpSxeGiq%iUb!Jo{{Wy2 z-~Pq@f40%S-o6jb{saF2f981e{{X;y{{X)Ev-svNX)rFjq%_FI2CObMM+i% zwR1LOML(7*g$6B;(PqQ*41Z6y`LH=?De!PRhVRh*#a)NOcFYd*^d$>gAFzcQcl^v0 z*95O+Q$%G;?q}Xa+IKN=+>0#>Uss7Mrr&V-OkT>L95X-9gl`?cLstCgM{C<%{{XM< zf3!C>6TzX`sT-FCJgHoB6lfY z?LYqjdA$5zJ|;2;TYJ-2#lGa7LmpZA=#FODxZGpp+>%+7qcu16%8hPgZ@e_9tk0cM zSNCzd{{U$d{H`SsxbAj;)`8#u0H*Z5u(-ed+Oqt4`B|p_0GC?+PzQhi0InzB{{RS| z>0N^Py=U_nzx}~Q{rL~7KgT83>wNzJ@BLRr{{ZAEG?!~~r}z5*0E7;^@1os5*b@H$ z{@v@afs?cs=@zH4P3iUq$n#%ffuL+fySS2lyOrI9h_fVOmWTw42NQx-qWr0F#IO9v)4>zr!o{`ty-b zpD#)Lm(36QE^Pag8Qb1t89#^L2ru8h&0Pggcm2G4`BT5^e4q8Gk$kou{{Z-H(|_F& z<@vC>-`1z=5yXbh91k=}D108h2ztV|Ky1pq#GOJTf;_h4RVjK)6UbtAK{QJkl?KhF zAJW23Gr?6zLb_Wb`!FC<@}t~KY4F!1NSvqT6VZ#je&0^xR1riHWO-gP@?rZ&=B5nS zB7>U7zm}vze!%&e`2PU1bK*_^0MPgSOTje8!CWOGF7kmXuyn=#P8rdD->n z;LAP#06PBXKQ@CX`#<~e{{Skf{ieNLum1d(yeFYY%l`PD&z@MzcaNX{0BvVa^iM@T zhEV?i`C#L(IQaYiw0o8N_we|a-~Q_QpRj%J^(oZvfA}`azx6PuzAtC(&3Am1X1(8g zy5;8o0OnLlaQQ0MgmDoHcI%;|(Bwf+AvvHb+DK>iP3-Jv{ACK$NwVxM1t)1*C?N0v^d(lB-q!Gr8=2c*waFgZ8guf2KG{*fD!w)zH84Fat(cN1}6 zc6pB}RCOioSmsm4;$&5NQeW=Wb!fhMqFwO6T`_ANQ_;)nJ|K**{D))z0F18}_rUi4 zsvN)E>@2_h(V>6j@A(7n{{XY&-t%kc{{U0v{{ZGCcm5#NfA)`Czt7v0{{X-lzkH)B z>uZBPgGc`W{{XfOyZ&J#;|GrT=2#tnyL}e_0Fhe$CeuH@1gK`H%K|os(6tm>;yGD5 z63{r%uLcu3QDTd1EgJH0X-zccNx!(xpIz~Y9cd|+FiSZu5Sy6%5~7X7`A=;mN%$Ej zBc|Mx!zhID@X7bZjcl^0-;u@;Jm~V%d>OvPu701wd6ZR@_Rs*9X?0Ik1=DfePfAkHtztUYY z{{Zte`rpn!@AaJxq5lB?034IQ-|FH208W4LpNanfk0D^&{$88g{{W$U{^~!!eeM4M z@dyK!HhSN5{rPp{rNPO@EBf`KqKYr=msjeGmfEomExo-@olP&@SYdZ=urNo!*92M(KS8Ix~FR zB#9zBja?BWtX^bC$`u+GNj5LJ6X0KGY#H{{Y5I4L0e1 zs@@*ys{to8qi#MzjfIfYZNl8m+@LQYd-zRafz=g0g-x#>9CWB&<%PmG-SHx~&c5hB z?|OZQ%|uJLMm&jb@-(Adlu$~bmxjYAq@kNa7#*zdcP2GFGZ?S*c$arvohP55S=EkbC~V;2fx7WK85mjZ^}gI!3t_fxSj8rg`y0rW#GCi+a9vG$ABW& zubRj9_>@M##i;6j1|(t(p~=b-;xn@%R`6_zIA5T-k!7^Ih++wzB&I3T z;PKn`Trcq7KWoqWZcpl78&L<{Nqm}6{9|%#=LA`rCj~8Rs3dBOHG**(@7EZ{H)-d3ugrZ8a>1s~6 zbQ=Uer7AShG9`zT&wu!lg{{Zu%rsdg;liksk#~%-#w#G4+{hQj}{{R%k*Yn>tKWM)X{R>gwORj$C ze}fzTW-s|aU;h9{-~Rv_ub&#AZ~PBO{C>0bw>C89gZ}wVxMf;$ddI=zMYrev7)-C$ zr?G{EUMQ*FvvmCg@KDya?>YrpGW$0+2^1uqtmFMKERd>YRE_2EXGqziCooyiQbos1 zC6f_8vdq{pxai3VeF53%1YmkY1Q@Z_WIuadv91nTue zm!djIjh_RMX|og8xTQ^bA@|V)qR7uNp>~(kE^FA}Co>cq4Mn6>$%8g1$VS<&Np*52 z{#gymFWB4od0V*W`Y(6K{oH#$?a5#KM6tgmeDOX10N~y4-X;d~ zMY;a~#Xaw7Ca{P6C#A1BRQ~|;ljCRoql^CliC_HsTlY7*UlVH9pAWZe=B8qr3I704 zq+k9;Dc5(8t54Wp*G;NSt_+?K^WJrB=WDiWAVf{#$R>Y?$kf=N?_@h1N3>sqA#@!@ z@ShQ=LYe)xa1(v*QU3rqtUXB!_bj&Fh6-5{QZusnQ}sM3y-!?nTU{|WaylZgMuK`O zdYeG!rOSdg$MGUGD44Qkswt=EMLD!mbQWK6t*3L7L1fo*Dpn(Sqp5tyx*vxE8A}p< zX_t}gu`zO8bQFJIa9c>s@b?-Y{62QIUc7F3`Ym?gIwv0sy?^BgeQ?s={wnbh>DxHlDkn@pc0V!D;Et({ZJ4n_x@TxV~J}Gx5*GVQ^eu>bnJW0qgRE=DS zGbd1+t_SgnvDZX3%n`zRvQ;FPLMO9~-_+?=G-&x-ra7muNJxIH# zbZD@eEzsjcZ_`!Nvv`ENZ8-7qg;%{Yv;P3>;^%++Cd^M>?LI!_4*28$0QQgH6YckB z3V-__d;b6+z9jcu6=t2+=lv#S64z7rfALJQ`*QquFG#m{@W5iffWJ@SY*xlM7=NPD z$JpizscpzDYFj$He?2iz8XnSP1XPUoWOoZpG-O3jVt#Ww2vlWS#zb)o6E(BQy8N9}AgOsNQ;#A}Q=Af*8AkXgEwOp9#Lhg1raq04 zkCCX{#oXMUalF*~BBlG)9T}!oD(;fo#I2 zJj^(&*&37YY6%7PBc*TPym{5CejmBI+cxYUmX)Uv`tsBZx_$sW10TkEtGRg}r4Zbmd&1u`gj%kmzHPd$GY-khvYCYrQ>4 z0k-N(DUWW$8U6`+ zK87c8FB2MH{TihZy$k-6_cZ&7c_!+j9Sg8+iLxihfwh}91cc1NXXZ>2MJ5QyoM{WB z?vv#`+(AzE3kj$|a{V_Oon61n+=F!g0QD384N_oio4>#vIp6o;p2LtA%>Mw&{x9ro z59*!&0N2I-9N_gu{fX>D({&%%W4PX!DI)^m`qBRY@@1GrpRak8C+8X3I)7uEX0%ji zx4iojPUBD$DsjlSa*T&31hRBYOuY9H&I`jMisypCFJ|IezpW(gIN8@b4xSTZ zYb2<^r1>m6f95phxbi%WiP=W1O-Ar7xZm-mDXI24a*(Ru(Z0JnOi<1!h-7t4kaH<2 z?gh%58!@6(2wZ~HlenAl6DZKBxcA1`iYn#^=r>&t@%TPYOn=s=-FoW7=qKq-r=YjH z(>h;azu>Sl`2PR|T9@`SH~#>tQQg``-{0^9&*$Sk{!WoB{l4rw=&3AZ{{YlzObpYo zmJW!tPjIdeoP?JuE_yN4VOJ(Y5)`*f?0J%^UtyztGiuwoCNSj%Q4g?DS1>Cvk7_b= zrOuGGRHVUZyS|KBKLS%on@o=wCYO=#J0hN5%Dka=vu3*i@!`miKZ$w0iQGCH9E^(W zO$jaAmWpYpdc~Ona2~62G=&K_aL@=b5D`~FA5pe-$tRyo)DM=o z{96sz0^Mk=?iF+SeC{d0^+~9#OAaC?r8~Y*0?2QX1Oz1CZPB3vKwZ@FL;N3^4`d*Jk8$#sV zLV4~hML8?O*34U=fC%yLDxdl+&`Ak$RH zYp_9Se|Hj(lDbDGDV(+*uN_%@DJrV&cG1l{MVe2Kk_at~ql~J8@Slhib1NF*Idou- zA5^qfHGB!LH0zZvHg&v@=9R9(^&dgbkIVYK^ZhZ8-ZDeK5KR97pQ*q5c1+Ryl$-3* z{N6{`5R{Hsf{o&jvP}mH6_Rd$v?VU+!zoxPh|dS4Q9&))QqLw&xh%WU)sbb}vHtlM`MniZyOL~K0>2Y9hZ@9!ONI@FB6gm^ zrVKTHyyZSPi}qw)f~~^?{2_+}ASdxz4Yrey>K|8Cy@UD z$&RttVp|)nq`^zL$iSZ{$LX}yj@Y*At>CpYQKcH{9*%c1jj+3qDSt-i-IKW6c&n z*ZDhwi6z7x(&?Aco&6(nSNAgh(BBEun}?E3!}A(deAtn`L@Tix21!ov5{NV{3A|IJ z#Km|Xen_dbuW~6V`y{*WHE7CVX^WMjrL1%*BTkc&jO{F&h-Q8TUW}?58?R!sq6LJl zzk!;gWccVt9XB3Zyp&6RH-q`$st~x%hTG#Negy3BIYmf{tjbssB@{)I)mZ#qdr7gy z`7-|i>G|HYsN}h{OYo7q!yhl1+zXjVX8^co zy$-@Xk%%Ee3}j^`uaf1~U(0hpw)?>jRB^3saGf9ftXBQSbt}f4p_y_$oF0O;MK}r4 zk8w+fdO6Y}A3@WR%24g9S5edZ3X(Kt%Zx5Jaxk*;LkQFUOhU`p;6fy+I~Y&1B7FzJ z@%zkaW4It!o<-cINnM!5+ZyDoioeM#+soLi3H!mt_c60?u_|womPV${ zlvHgxg|?A9o3%P*{{ZNHSZIJ{v6EgOMlDUhp>T!3G@<9`Q*dg*aK)nRY|6t3FJTh+ z7{Brp%i1@dLXsFc2l3FR6ZSszQNL&0u0(VQrB;)7Y?KFel%Bw-`Mv=+{yFu&)vlG+=_Ys07u4l?}{q4QGrPxx`wzOgBaJq z*5TacbYw;ZU_NwDswu{`EBxg55Z+_R%NEH(-_V0_h$)bPKtTyXnHmVQW* z{=`jwq~1j=ryayj#bWWYFW^qYV*dc~M)ncTw%D|2#f=^LE#adNI-lTEzeV3;c@+@( z*v*0R4FvVLUZ9;>=`sDDY=#6l`!`@_0OqXS>^&PjBtXIVEB5j^t^F85(G&?wGYsxe z1}v|VRX^e@iQrtQwlQ6+GK&NM07OQqk`<1llaPy>8CctfFue2{;9c1<#aLWPZ2MBC z^^G$KS>zW2`HKpH~TZgA#K=~_=t>S z;<-F>c$d8|ANmqjXqM?dlc6@UK?jrR6Zd`sR6ghI&Sb*H`7cuGdp-by%RQh`GFZ|w z6XA+xL{j!Fw%17?Od;wRMajRZxV@2)x>Tpr8ILVFpowU1gLt0;@+qV{BPBEGjUc3b z3WvC&pF$E1vfT+Nn|eJCx#!mZXPlIpasVM%DRJik}08$ zt@=f_IOJPZ1JD)4^<4-YKiFK)L>Zi<#>S9jJibWxm_7(y;fSbZB9MinIeXC25=kHy z;DO%gRbZT9DBy}MH%zBx; zo$~t_G@vNrPvHY>B_DR@Fz&=t-d0RfV;YCCGGQ491c{-XVP)^sO1lgUc9HDuHv#fZ z*g39aLt2wptqq{uQfOb@8c8Zd@fR4#sDms}{x6e+i3xKO2bu)N!(lTV(ah1v@GOFA z0hGT{-Ig?LZ@&Yz^AH&l^ctaDLph<`%3p-Dc$A_u*Q2?37n8v+hErE_t33~`h=y)@ z=zAWaSAn&UON(NtB)hg41U2pe#(-HFi)mNN%5EeM;U?tuS^of2oyTI)zJyey{FqjL z2$Fz@+CEmzzo3<2vhub$Qt~_}FvOo>R8!TmFCN4h(sKb$4;^jPQKpdM(4|6x58zsKBgS|h<^;au73zs_he^__R9EIf`4JV<`Vq#>)jbJUir)dMB(LHZ z7d>6nOT7zmTZm-OA_#pDJen$%*^G>OJeKTI6g7DmSe~N5`W-5PJd7(*MD#Sex)Q55 z{)H#NMI!oXXyi0~*_h&%kI=L66Jb|mj;eSNv1CZ!p`Kk~601K0)Z~$OPv(czIQb<8 z7u;ZGXBj`_Vx~Q#ex*HsWWdfb*hY$nQGT$Z>?LtG$VwU~2G7}%r{ntERt_;wkn zcRj@EPD#vG-iy9{3dciFC^5&#TV6uuESq;F4GLw)zfgP>9mP6{6Lss_5U)GdJg1KPR>!xIN4*0q;}D!8)hF z<9a$VQk70SpN zP(eJTi9TX;ICl|rv*(w~hIiC?8{prER3(Jkb|kijo9cvvTH4^6H||bLdp(Jd9VJ7U z3hmT+!5YYw;jW~A_zdvGD0nOd(Y%F@b2uzPnSn6}nCv-~2Ke`rQ{b#4{1`&)KBa{* z@G?Sa(VHvjH}vx8b2fv!C7i+vrQF}FsDr^k8)O>PBvAYKgEI%8 zQRd+{NFh^^PXgd3{%J;urq&0O13$Jp5&Ynji6q!HnbM{lKJ2X>hZMvy8@`2;b2<4S zZ|*p1QItvKbu9qeRzcBl5}Vj@TeqV6=z7UV68-hD>qYghzf*N zXAefSGjB{?L~JBP(nVtIC#$I|$pMP$KdN>1AyQthjFFUyr=XRD{f{p@K{>e|qW-J);W7@1eJ2o^qX@4CD6T$S(0~``~|~U@oDY ztBB8Y7FVMhqsXOlc+#5qxbVM?YAwg?V(=E^$F^fJC_|{dllj<6C*a05#G+5M3*1PZ zFS0z3{YcB17TVLHwYiCq>>wdgd{FAImS&v-*=S05_aLsBg16&FwAC_o{G7l{4{H)g zq=rRGXHL2aag&{D1~OtR>}A`WfJw!MvSk~{fiy0LJ4=~Ikc+gnE_uFQ$NtHDyx6gz zE&9dZ$WlXN69RR9$v$~IZQfcI-$I)R58j|d`TuqFPJ&2^<+CQc-=2J`5nDQDWQohDTF&$=gobG?($xG}_K%$w1 z$UTPpVirk=UczI03szTqFYsc)w%*@OjGcz;A%#N8MF=L#|``umD{k_(x zYo?@8N!2y2*3h_ zcxXKsau_H|05k>^3om2{;f$eW#?-=ec5C{Ro4>>7Gh>4@-y4S*9P zcGF(-U*nS(VvF+~1&*sg777b|#JfrAI2JPOE!NuyApzc)_XI2>Y7H&n+Q<+g%<&;q zd{|&X75cOr1xGYF4|xk%^fNwfxiw4C<>eoO7W5+t>P{lPd#gUuQN*7*r0V#Q zKjfH4VVDRb+&G*d`!YN_oJ+8J2WtZjFmQaCIX1roroR9z>`{7sWs0B-P4b!=?&3KE z)T(JXXe{ePONJ%3@CXw|0m-Eyyz`C@@(TJH%@N}L6y!)|;L$w|Fb}&2m6m3T#csme za6`t4#c+TXBW!u~*HFeSS~>d5P>e`hKyeVey=64<*nUe;BsaxuJj_Vu>^2cnn#%^ic;`~-fJ!lfitdO$cQ`@cUjNy zNrdX&qXG_|+t^w?ZVH22kt(5>+(LF4Dxu0O4HPpb#1T$A&6meO$V95hzVABAGTl^< zG_H=({sTYM6866Nv3K{S=^Ri7Cn%WfC?s%v_q7QvS-|#`mf+=*%=i{7{<{#erp!pq z1ic<$ZVmrRkJo}WhX$mEr^9Xr&23gwUw**fEh#7ILL)fsL4rVw-dP&L^sp(V=~ zHh%uQTqZm7J$3@>NC3qk{ZSNVQDKA~2ZB4TTumq;rvy9<<~$xD!0l`3o%t?hOc{`g zoPy&z%E1%s>^cY*jc=nzb8L+f1Pn}y{*EAkbM#Q=FUwK_gr%$e>+;2uq4G*Ih!8u+Utm7-VCHlNr~fpK$+Bd@=n^o)%WS znh+jW2O}>?%`6TKi>k$eSV6;%>>I%uk426(W_F>CD`&TF#1o(HGe$+#0D&fukO;=G z!CUwy@~79g(IKckUjL}PtL1%tLA9vy!(>Zk&u^$O6H=gU0`)7dxD`%=6piwig`ei^ zH<^~;U1HO!ubw=64xrLzc`HT)JV$aFz=#AVJja-2E}jmB-n>-1?ZF?(yU6`ffaMN9 zf`p6lGFeIWSi^l6PUIQ=o&4HRMlmRYYK~bp!3?Qot?>)KWM&KqNuiCpjFteA1%8jz z&1E``B~&9K&4P=FB3$+LB<(?yj7;;WT;t`W$0nc2dq>^%An7XaxY2!@R8w}r5N?K~ z`8rGGVggNf>kj#6T3?Q8DO(QtSqQJ?JLn;OL`HCeMjg=9h`wAsP6RD(mjz7_w*>v5 z2L_Tb%SNcLbZF@#C;=-J@4Nrp&;Rx}W&cCufvY#!#V8%4Xr}{L8buBPB30pEN^&kG za>3z;)2A>Snjw+5)Q7x3Y<}qDVh{AUMe?*Wq7yVYl7Y#j4wWQzAH8>yoJr|&b9@Ad zoBa5c9s8eV6>FcaQeN0veR9#4-bc-|$;6NU;G@ciw`Rq)ZTVxd#sgk7Lwvu|Ct4uk zH$;ZP_mC&dE#)F~Sl-l5QWWW{F}4#<2dHtEMNNm`!#SWsaBNR2M1fm6C_!`LOLAbX z0tS@^CI@jQ=o&>%ds>W=Fd^(P@Q?r-(G$=9ZBoA#7xAi$++6%y_)%T6|y{)?@6*0^z5mtM>UWy!d*o=*Re|S-E1& zg%QM7_%KX4Ug=SuwP-Jb!fDkJ;ae za81qgexqLNxURbke8^k8)0N`AR$qjm9FY}!btCx^WTB?u6kq1h3M?2+(CD|RWfNaA$JjV(aC-eSxiCd8WBDH>%Q zc`bqIAhRb@n#YED7p@gola3NEo1WcIn|pVoHTP(O{B`P&55XnAVqy+sDTY`CX$ti#X;qY>hi_DI%rZx+Cl^C^KXa&w@h@ znyB95R6s^!Q#>@#!W|=m0Dpn3@O~a6JJhxyl)pR1oRbDzp9f{alj)GqKu*}Hrz8;u z7B75_9N_VlTd_okjH|7PbIYlfJh}Xi` zA8$_B|7GiW?IqNG=*#f*v25Y@Ut1xYK7Di-fcK&MlatC?4Kwn?6e{QjeMd$(I?^G~ z;BZA4GRL^t2s&&#cu(ydK;8&Yq%6Q+wWxqx(VdBMUEWIa{a~X5PEWzY%DXTGfHo2F z%+nKNWK={3FU76!xq=_XQhsnQ&5v7121#tQ6L+(=`>S5BaPaKp38}Z95t@uUzM9Sx zA>4_$lSr-h)KL;%KgZR&t9Z`2yBX|w$Z4#jTGu-_J9fcfyP1ah{(xo-QEaZ@ErElF zS9jq#B!>-5^b~J!!o`JR6)#1XcLG&XhM^}F;qt=7s!jB}kQIj{Z~`D`TzD&Y0bi*_ zEN=e*66EoxJqYM=lHumePk1VUH`6~r1t<9;*FNf>MmVN%5iRfuXDoXMUVMLHag9E- zW2|r9;W_Yrg&bvpd*fG?xr*K5Z2TE!T51wjg!Ybd{2NK|R&IJM#~!?CU!9WrsheW* zsh_9S&~=0eSI{3!KAErS$u~iH^A8?1!?FfW4tvL$O9Dd*yU449ZA1tdC14%Q&|f8H zkobPk^oz-IkS4&-+0qD%V)`Rn&bIF7Wxa0&^NvWw31q^iWAN!ADR)y zJpYp+NzrFNyC;t;Utd=E(3|*`ojh825VCYcbP8{hm6VI|w>bI-;iQ0Z@_P90Y2gDD zVB%mE@e+cCyS_nSunbrZq4zY%SCpRs_qUi-Mk}@!^uV0U0lLBj)`V`&F#+?f(gTJI zH(?k`_n3o|>{Ra5@f;_In?lJDbpx>g2y`Dyc3#}d@EpchINWV%er(uR1|y?Qy4Ac<4a;=^6-H zqJV)_f-sK$m=mtnv)&aQ5{BU%x64>(0M5`_o7ZO$oC*I0$P&A^ zF=KW{l;tBCAbf(kKurqAI<70Nk7H`xb)@q>7IrL(IyRNQJel>|JoPtvIk4O8OkC}F zk~$vCzPRT%O+9y%DO~7wjz};w&F?dN$5rx{HU^ks%XP8X&@AcGsA(II?_FLJM+}#t z$241I93+PDCc`Z-cLw2V%zY+It zDwJuCLqMiJImqgp@kh#yp0B=FNKc&mH#L;T_eaiLkm{>&AIEQ z+j(M;G}tvZF+R=*e}C>5PVo$Y3yUH=KRK#+<>rs5j;j-5VJb5mx$K-Ur9O%6^lj z8qfxnJ(uf}Z1%GFp4K~tivz+u+{QdaoTFaM+!+S+V884WqZW2EKYCyODQbxW7=ReD zjwA8I{P_!jJ54?-*Upp0J}0(XdG7nRiHd*SHmUR%ASC%yweWRkmW26qsPx*VZNi5% zhpN@(de_Re=PsWp@4O5bGhXa&=lm}qemI~aSV}4(K~4@v0-+>D#*%Z%#(WdL2ort% zlcqH5l73A9K0Xr!%*}3A3$xi?11Hz;JqD)IjZ5^}Ui`LU$tuVUQW#F0%;9Jk9uUH! zS5}UGD4afb7b!zIp2n#MYt`TT`$hH|uwo#8u>1bhOhWQ38ad5dlm7$5+hAa)<(H}@ zxAWFRa`+#D<2y;0?FavilZ}<-Gt!@5^vJ(5+|n_0LxvahLUCBE_2wA^c)0tc^qDz< zVDzF>AtV?vjAQmK=2Yk;=r#aG6>)Nqc?PDwl$Ie!#UBLd5r(Kh#sDrtmPoH?oXjTd zafib0q2l*TdwF_xc}Z+uO?@edzuP(K#gWhMZE z8Ox!Y)V@fWfKNesAm~VBSOc>mZIn_;8h_g~{QCtCQ#sz6rquek4|>Ir21REWt@=}- zInCadKE2d$QHQhl6wCsaBwV0Wy7`j|)#Kj$r~cLU)wVo{s%FQjE!@1&C3jxa%)92P zFiTjCKyfJoxs%nJ?184} z%WL=|S(zIKMHs{<#EtT*=Bn1A7A5N9ms{Qfl+FW)SUbeJIYbuRd>Azw`Sx`j7P`g%4$Y;h;1Ig_G z@|>c6mtQApp1L7W1%@PnjH6BWR=63vY z+C!7;PGSn2&w8#>nmDjxgd~>jejbbWhV$>2m$oY~Kc0pZmW1STia$NMAFM109two3 z!y7BGBC|>$R!9=UB)xmD@((Ct0#q=hfm492GDO3ha6p2PNz*I$*KZep0mc7JP@c2g zzw83dgQ@|MrFaev#fKwjCj=#gOxxgoH-olfW}Zy3Rt(=R^|CFfHXyY(vvZixbLK=N zjj6$c?8*dWk*}4(7Lu=G^Mdi1qbx4%Hk5k0WQxyO*I#ZI?|nYlui)(SY+U9G2_(#c zMdyWI0DV-;d*xFn@ zElQlOC{pa`Rm0gbO$i>XEPZY_<7q5OL7i&jUC46avWmBgD>DSO^coxK@8l)D_$%_l z@ma59gjf)a=s?1Xh6LxTQDbp~3~oEcDlGDb4c=6=Z*{+;MYngp33ysw`@CE<5K(K# z6a>x<_A7+42Vs>5F zs68!r93(`ZH9qnM<1nC9O2axo?w8uBTZH_=-td!OdZOP=1$IzDccd33=1WJ?ccm0&3J6(r(LjHxQt(o}Nn{vuXA?l}q&syzJ{1YGpcrGkyJD40-< zafc%u3K$z0wUIbmMMb2B)}FU<9KoH0jiOJFOiCQ_Y!q^1IqRCcK2@{$)W5VYOmIK^3)2ED(eQ6<8%6 z7Sm+}4~weJ{rEV8gf6cZntA*R%gz}<-b82l+do++*j(PcCP26F#M3Qgwe%P$30sne zGVVXjqAzCwH6G1ngKEz`GZaC52U;7d(NRB0@W8ez8gG@rl{HgT$DV`=hDnEs2t=X} z0LzPurb=u<4+7>Ye2Zrjks)gV|BZU;yubAOXQl&~_I+EjHQIU>UhhX39 zCv+9a0h_)9(*{seuoa>BVUoa_*o#*K-w{DDy2zet_&fYx;+QS7_82dtCW0is18akY zeK|Fykg+hNq&g(j(3y!)Z^jvrwV{v|#XBnyP(WHxfJ7}v68V5!fSHbXOE_b6rL}k< zu&_i+91aO4u*L&BfhTEv0PEZYA@U$9(vFT?odp^`6gZT8N_A3nVUz$Hk#DEBp5Rqt zrKZjS`7)Gfzm6ZeOg^c`-UW|R8w7%BqZ+bhH;Pg#7`-M^UQ7BMO~nj}n>;;c_Nj}e~|#Y$f~4yV6gu51xF zP8|bXWu1}YjuJ!qom_6WfRUPrBxX4&1`)GSotY?wgHD3^U(6QLSrEZY-_8z;>%b8R z4+ViWkb_v`&`&Ccz`$EkS63u6D_f@&t?bgue0q1oPDs}`sjQQiYL}uRc=)Lmd@f;4 zQQ~TkY>?0*r%BCth|7sw30;X~6u=3t1*el=BuK~^k24=aK~NZgTLHD;!$6~;b8wZo zg1Cx=GzE1C0t^G9QD{zpJOTvKDQKD8IbkdbBMF-m1R>&EOCm$tm-F4Gl#FE+SCGhr zko^PWEa(6z7~ns24)}Nd4?q8h#4%t%u$Vv!I1Y3yN=^xE99(!jaw;&_KVlC5kE26@ zpg{tKyG{$gdpo4-LB_b#J{#!tA?pakbQ~~?5e&I>7|oz=@_n72kW>1>c^^YCYbunx znoQPxKFFK%cq4Wn_U04Qz0Hay7X9!U7zk(9^1LinBXvzk zXQ^I7pK?`Zj!*CI4)0quhPf}Vnlgy!E)NgTLf`))ei<@5=btM9&H-J)fyhuXbB4b$ z)G1f>E|Jj>CDN38KcnXeQGP{C3PFFIWMNVEN)Pyol;DE~a*Ce6f^6SwcDtb*P#p4y zD({6p4DeKqTV{XXJ8dpvoGRt#Qo-pxb8lYguzZ2TqwZAixQ$M?#!bjM&vs^{vCF~7 zs%nSD3)f$v63Y}NEG$~1@( zBH|ShEE1>gvEYnD!$!d~3;QI~F}ZZ2@S>p0o~W!7JxS4;p9PVG z842&e+S93ZavE}W3603YZbds`pfJZH9268xT}cC83n4DkqF585#f zBXgua0F+t!qCJSA2%+gJ7#%r&~R-T!%nXQjOw>|Y5<%!>`++VjJ=^@|M zCDJcXczeW=a&-2j$f4c#zE1k$>kQyt#&TvVb_QV?BWwzHWYxsTE2WdmgKFt>H5cU( zJt;<<5Z%P3DuWIhH)~4K7Tf~>P_gM+-&x%rRqd5fg3P6o;fLYS5nK%(n(1kHB4=pO z#&_3ibqPO}bRl_bkjr9 zyJYcpK)*je|H7yhN<?l z>KNuj-5wWj1RYe+2SuiyZ41Dlvc9ga5tjhYW7C>dIxGKtUUx6pZIv#lGOy9xHcm#a z+qYtgklyo%Osrs1BU0;d*pH6NR9Y8VC}|(GOWb&DhPbCLLDh{;T9GXvSrqO71vF{E z-cWEgG2wDsEtp0nA&6W29zC>4hbPeSa-nbV9uiUnBnTR1*k2AW3hO48TABlW&y|9X zpb08?NR%DGrEfYywv=aI+FT6>_Wb&p@||{#>3<4KN8jnY|Nc0BH zG_O>i2vXb_7KhkT2s9ciV65Zumper(Kw}5=B%Detv;mXko#@&-$gC2KL2v?*BR`Z- z$x$zOF)AWK;H`3Su51HM1xhc8hVHqL*2YukMU1i2yTu-I>XpJ3FK(env;hWZ9=0D0 zs#^%0puFiCycWVA1{&32paL?&rjr=MvXDJUz?ms`s(f_+&YQK%*zppD_TFSSRtBeD zo5?BARcpAeWol@JFsG~k%qVxdd|=-j;RT1-k*fUL!K+53I#qiA-WL6~uvnZM&dIR1 zD%93bI<7$d;R12e{wv(a=&dEA+YrEOn15~BG(%6iCem|ch+M*>fTV@b^6g581DN9b zRnVAR#jZR;y%yW#atl^v0O7cF4P*8_s*CiXCyi1SkE!$vspFSP{+oJR`MT!~O(oo( zS~P0P7iES?V(irF_sNe(dmy^1nV4j|OY+T@kF0)}fM`J8M)Ux(9n$#I=ZD8y_J!mv zqhI@7E^fq?{Z1UBU{r?2yMt^TMO40<@d3x*w@4%@1`LxQKPu@ddszLGX58?0ko0P` zImxiB9>Z7nAnl*r6y8(hmE7xoxxl|OSI;^5oJBTwD zLjJIx*z&iPTrCp6Bpj`&h$lq>aT)^(DzEd;cy}hN&(@vvvUW9lng_o~nNI|lHw<|6 z^|VOe{hmW4FJu_6Sm&t-F`~1CYuUIgq>(DuNLBv}(3oW{yYbxs@lI57G77}vOrW9$ zQp{575Lx^?hxYK*MPJL>j<(+m2!AyeNWiX??Ta*iAM8A6RlNB86|V_Gl;|}^*VvXg z;%mI9QwxcW9^qj(Zk{SK>1(3!q^4Ipq2&(!9_7~QX(wlZ*R#nz!Kl+1ZI0*ALvKgaW}=Xu<}SbM%!-)&3F0O>Y{Zq_y+A3p+Ykb-P@s7CQ41$ z3Wim4r`*-@Fol;;VUM1}?2IdBJc+i>Q#Oe6bavzM7tD%p@i9qX13N=9w&TNYZbl0? zQj=Xd9cE7SowiVQVQ6PHg^SJi#6o}UZB;1bC#n8u!MgJvtDxIw zux)~|j$p&7$lE*Mk^)oNBiGv56zvU@A{ecl8w+1p*`qyp2n`I3mTAV`5ji`a7gqgs{NLg>kDt*7g1xz=4U1Ua>^;^Zbj1+r_@!v?4gsz%;(eu z6M?i(Y;gReFOe+-YJRF?Ep9^%*_~a_oUxiodL8XEd&2E>ON^RwQh4RGDgRtMqwn&Y zJUodpD@u}_tHb&tumHOf{xNKF!1?I8bNbdukjAg+Uh=G&BAr6>Ey)k{5( zSGu;U1mTDSB3U(I#Pj9P5j6VT_PglbE`tPXOwtMS(eek{7kkaph_-iFry;c@Cn>_J z-^$%@V3o&q4Vo@b2+AF1ew#>M8NH2ag8S%*Mn36e?-NN)_C*8P%Q-bv_e@nR*DIf)AKBJO_YycnMbIxC27EWO8znMZ5BDMx!Fb zP^_x-B*{7GSNIzkL~!0ZZ_^`FkwOw@@*2^FE-X1+O)q|eTXdC7Eu5{U7H$$MCAo?X z%!WJ@+q4~s38CVxNJY)$g&6ErXbt{m^g;l{Q@VCa8jp9bVQjSLAh$jtGh-o_cbrE=~SKb!&mx`Lid1RJ<_`& zRX^m5pY7{o?fc1f@tHI>ox4Y~``!C9m31)2cO8`gO0&x{C0xv_L_lrYAkxyHV=E@H zjb_e%Uj#7aRugNth!}&F5s@`zPP0>VRW7tX!Z8gk=e9l&(s^6E_2V!@F(9p=B*k*K zC~wX{zi@rZy3;WycskM$s0zWZOxag(#d_6{17I7jUJ-8aiFFZ$ZXe^Y8>u=f1Ul`8 zO3=(eat#1fc+J{+Ll57ZlQO`ro451<0NJ#nurzihx!f#vd0wq zD8n&wu2D^6tZ-Fv<}2)OIEk+PFibv;R~k1G#)W@Psg$u0yv#_ERJ#Wxzo?`jghjH2 z!Mqxrx1bsXgv+(Jz~QmYE8D|evatF_TD70{m5kAKm8?{{VUbbd9TqL`4AUW~Iu#5b z0}Y@tF{sP5RnOq+>dQoROUcW_&{smwFrl}Smi>?7K&>rqlZQgh0~KuUKbFMU+;#y* znmg@fzQ1RMC%f|{bEUU>$*>rX_i%kdC&aB=ESEQA$pX4YniJe;T$%BfIngY4<3=h% zx2m`{TN@d9nohP%LfsZiHBXnSyt_Ny458clF>CE>Gf_`|_<5euhbf-~@;C?lC)3kI zCm;U;h>Qh{-Yxzl7&dGeiK3wejkuoNT=_ATi~VVtxpLqF)kU24V)&+nLsfY@tScqm z=2x+5glPeG;?#RzAh_{Q@t zmC95U!6dI*7Qj@LyMT(ckstI&?FuvFNaT_@2g9Ry!qZYA=EL&g1&}-87~q(Lx87;h z3>W!2Iap0aI5uJA_;O^`%+{Lq#Ky425!HHa8`&thRJ~s78FbsQ^B%-={;lE$F5zWW z2rtpO`zzY}Prm6E>&)9OBR}nIo%;Rvcb`%l|K<+jd^-IXoZCynKQsF`r>=IsxEFA2 zvFSh0xyD|elGq-d>WKC9^Pg$ITsMwNkDdfxtek|ScLDYCw!xJOa1KVN%-<|q9$1LcAxPRx zZ|@!0R^(5h?sxPY4`nlmSdg4yDrazu%9Rr$HTLour0S3Rtz-0cdXgqgM(MH^ZYJxe ztO5y%PSmY#N2^Z~$xy2gp2Ho>bz3=zp%iIee*q*jr*7R$sR!KKY1TSf7CZY}wWU*| z0wg^v@f6;0*oQ9NZ#G@Lsqte3lwFn`xpncuhV5HSI<|*`dZFgB?9=?M)u=-QzFKwE zTI1L0!WO?qW*Vk!XkzpoixBT{Wo6znI*ujRu<{m4q>`eQ5-0{W4Tz0~2@&5D_K@nr z`1Xymc3WB1<{|-)k(m34SET)zIq>TB+c>X!J8^aEd~n&Le*vTw@qucrImE*Y;7l3P zmeqZApUuC3pk)AEjRc#mrCDSO8N5I#fUwQZuzKU_qjl^F58cCUO5EO2cbn;jQm3yb zL^E}76C}!$r9F8y&~kI5^jfo+>ffb*MT`|@{G9UbvWZ#Yp934_66EVcHcQv?6FXE= z=%W(u5^ZRD-ej!%cJtLT7MW_?MCN+}PYJ6mQT%j~u&;Gnj&E$DD}OZ8uGRYoEnc!U zFXFo?`F`4E|GoCdoh(_?s@u=Ai?^?VXyaShW9?OON>}dkuJrhZ{A?|=oQF?oRXlw{ zgO3g*YTowttkPvR@at0==#Su!(uq=WCX+`Zojy- z+40t5bZ$BGzUp*+D^1x?a~j++9P|3)r#Y$P*sCS*$h-*>0DFIv4e(kjkT8xOQ)fI4&;~^|w=Vg`%T?y4iBn+xA|161gTkyG$wS97o+gck*S%S+DKTi5z5k_R+JETMKWQY`j$r zHq^qUwQGAPp$)JgO?aMr!#b;ZKm(!W9oAAGlEnT%uaiVj41A-u@nHBxq*MXrG@x{T zPYAtT@z@eNZ<@JZ?bm=^7eH=UfV+xmuWP($iFSj+P%qm>|Qq2^#KYM58cBgC?c{ED4!JgkvHI0pcnMR6tR=I!lygRrn9; zarUKpq3w{hn#C>+kJAEkIJ$B1O1HGRyzAgaMa>6g#_!;&D}v0e*xC1kWlEb;uud(a zi59`ffeTW`CGO&1fJCx-$t3qgsC&7~_rY=I7m|?`!#2{NQzLn6Cv*Ldt4DoPUsVQ` zlV>tmW=!h0m_+v$1~@NeqklAQp1M7I3jG<2J*ZX;v_CXyWFi#+KiM|gwkmEP&~@Gb z9Hqx{hg)1+k)tWc&yBl3A9N3%4d3w89(D@0IxSh3k(Ie5(4gC;_Fgj2*JLBL6u5Z+8wDS;~MQ3DCtEt~?zWZz2e`LMja zDh)SHZ39lvQ-K*%hdCT-+-?Dp(kg58k`6e9ytWiYJPD!u7^RBTKYW`p)xF1?Uosy^ zbc%C~lsT7{UyvYeLOjzxbW#(WgJ~pQQxkl%&cVdJx1acVc0QsuCq}QuP6Tt?68m{R z-|HPYf8(uTy2>W#AbWnVn*NEF&1Gb!*IgHQ*sWL|&t4rBS{!hp+=g>tczaRHWjW63 zsl=5&+p)QtmOb+q5O-kR9{*ZR1lm2sMZ>z|MD?#IUn(2OGI22FEGG~T3!;`Oe*R~| zN2T`KtU}blszU@7G7H;1e1_qnNQPJn7>5431+q~rAB{*FcCc?2?l41W15+a~wCNZr zy+o?KLF5N~S~q)76^*JgXCcQmVlg>6fX$ z#Xg83eTn9aNCNs&^0Rn*EeqZ)qh)KHNYpY@`sn_a*P{^=-k787C2tn)wQl51mCQx7 zH*^itmsPU;)vompY^5Z;I~_ZYew>3fSc_kv*5R}!XX$zDbhqG6O*Dn-n(+@+v-q1w?wKvCea)chQGy2Ih zM!)|TFsJqda>0W9O<=gO=|`JOtvlIXv>04&%7)vlrE|_EPw48V^;dsK=Z%B${pUB* za+`h87DnZ|ILIf0fByw={r30%`CCAMw`P5=2Y%gIiy%a+lfuEEBvdi(JeI|UGiz7E zj2?XLkS^g0E!E+JOy8;g@E%_B1Pw?%6D*W$K7^vXpm#!j&HLFq7#$UxyuNrg=nO`n zsY<8Sx(swvCn|3aSp@_Ko#8d7-)w1~FBfG_SuN0=U#KR@ ziBUUi;So|BOuEA)$L2zprQX#;%e$`YZdaydyXc90N{z>~&dA{GGv72-wuN)huaCzG zrrd-L=P#!adWikgjfhT-V!Xl`FejCUYnHo0uqj44hhRET4@20y5>iv*sPY54Ia#yTjXK*Svf}fE?QBzUN2B zZ-UZBPtfbUW0PqQ^cxg$MIScKya(?LR>PKjgIEL3nC_#aKxTYmgf8vra4y@^mlJMjeV;Ql(d1$I=x@foZVHc zu5FMS;hIP3ewMfUs&R>kk0ku!ZrI*#)5cD2FY4IH^% z>YP9M*`ofqx_|foHhk73FzMt}82kKPxLvpK=+bE6HcxD%a^U2KmDnkL^f^xJbuI5( zlxzKk>FbnuP{TFJkK`-|y2d&Il&m`3)gSFvs11f*I=#3H<#moTcva~}^P?EiWG z)+_&%b*dSM$kED)$VPZS%i`t!3*NP+vKFn}5rLOks{+d;YMQPWUtb}tD9Rkae`)Ww|w<`LPuD|fUhyDemzbobt$JCupr#TfgaMo6~NQ)m2y0WU4fko)F zmo=+4DipPKCfCQgQ(vJKMB8MW5puIhI#q9pNZ1{0luwLyb6*%JI$eZ@sPKV(VrFY&fUgrrJfNN85MttzUBdRLA*CRb;$J zD)r2tV^6c=Q(R#!369EX>XJ86tggVGEB`p#~xpY=UJr- z3gp@MLs}Het>y{~MUAA`91DL>fcCX;=-XkN;h-9%@KHnGLuDK?o8!|TYa5z^-da^eCg{Vtd5a!9zI;Rxz=^%T6}qOu1?(Xj+%-j^o;?ujUWGKL zd#%i9yd*c3-F|P11#f#4y0nU&S5MVpjeIC|8vCK7Z8+TBIsFJWO_m+e2mA{$v9qql~Fm0EIerr~1@HXy7-q_I@3Z5^Pjg`%x zE&a5&)$z=tC?hsJ+5WvCd@Qf7u5Dcq$xO{1&;1nBfgIT$=|0D#hwYG9>0S!jX!xi? zRtsL@O@s4}B{pU#YAuwL#z}#?M&Z4H@Iiwb4(Bzjdn$^vr+@-6wj!iO4#`VmGZ&uK zEvs_bEs-2oMBA(?Uw(HvsS*;EmPlSspjO=O80f^h^2MDPNm?Ovq_4Og*&Efkh3Bwa zn>^pLWDWAWH2K|-&M|kW*k$i8;KvK*!9auP&H>l>w6MUT2@f(1&9L2H!1iHUme%{X zed5=ap`oABBdmDwRK_oiy(bFTW(Bsre>HNzshel3CC&*UcoGs@~)0ibd5Cp9dZ!2K#7T8e|!Z)7}LsE z*_?u+tva%b3@Tx9Mf~HI`T=mk)so{Cw@VudYcxW^)3yWy3Y$Gs;#Us)!SX18;urRU zMN?Nsh1ftBr9-x`K}HnlE5p~IW>K`}ed$|I(B^=L1C+t}?U^vA`)PE$8; zOZr~`g+Q}c!(Prs?C7X)YBb_{Pu_vf(LNjLvC6UePyK$!=evAKu5qgGe*rNp1hBFx z7GEVw?VBL1#8U=S`riA7E`mB$k7SYhsrLtZV~i~Z%LEOoG$?9hmGlu53psM)0Y-$X z;^+#PWjX_7b0`%29njCvx@aw?e*yQbNMARB3Y!PFN0uX;N->ApZd1H`)#-pP`X57{ zOb`%bpT1wm_UN<=3z8?#=cRB4hgi+*N4lV8rG&uC6hp=y$|4*-hhH6~PWzHp=hid2 zy>8BrKXu7(J6Mh7OPMYJ9|)<72}+=;AzqA`arNb?565v2+XH-AA*6ALlH)}Dv2msO zBdMd;dduyqORLxDgU-W#PVf9+!wVhXsG-f>pStY+7K>h%X-%&WhtZw5yG-A`Teh?~ z97QzJlNi^EmC}h~#s{z6H7{bt&|<2#&1YdDTU6brjk`x_jaa^P9L^u}vbTY$Z^|NC zmzbJzRByh~2{hdDt8KXN0t?}dC8^>G4jm)Y3;3fc24+0t%^iGkawvdjn=6MC3lsMa zSNns^oiJ1LCfqQgN*Xxm)^ja70nq7U5b@mM?YWAz%#yLdH=Hv(kE?`r&JqIY!ioEA zv~omZ9K>q+A)Wpr#9Qh0n$iZQ4p(JX7x%Ks&pn2ibCo@_-=b^SS}eo}{QY!4>Vi{W zRD$_Qb%q3T0*;r9{cmuI{EoIc{sL&$z3#o%q?1lOZOr}m?tcFxHrvVvWBRpxV*`G< z`K~X`A2Y(i!8dM-)<$F$4Ti#>$EKWDEPPJp+I4URg|izN!sf=`r28mGq!JtDQVVk82Z|th@C`e(AsUvxIY8`<8EJ(Q79mD zkNBrd7Fy11YCkuYccfUMx=5!7l$D_jgZ9?)-}>XWiCl&pP2O<(AFaizTbTg^kxh9>HIBQr&v_Gwu5+j=}EMI&}^;r?#)K~l_}yJ>yV{H z4&uc~tT|w^sNcZZl43@is~J-OX2sYOq9sa%ymy4Jy9ym_D;Jgs;PK!I3`Odc66U0f z7C*WwIp(-izlyDc)$AZ%ZaO_YhnRZJmWlTCC^{Q>OCHlS=W;Zcnv8N%llH0Vg_8+h zBt;Xb2zBHi4&j^_j)T_9$=i#%x7w9FoK0uUqc0!5b0^sI4R+G~LJ$7JeVC^B_i8j9d)4ZGo@V*FqCMMnV`ubCpq(G+bkca{oXT11eM0pYK)G*{XHA-l z2iUi2Z)VxRs5&Ip^(9Rh+&b?BDNPxA3t<+@V8%>W5f&&DpL8iyzI7vcl$ez zN>E6FqDnn<@t=R~N&<71v}jgfJN+snwrl6_7~r#|gx7p1+I>8IEZ#sPpKcazfNL)< z)K=WcxW(NJ*JRg=j-V_7C??v|mZC4`Z}pA0Pa_)nSC9lbOHvjhE;B9BjZ8g z@`cgF&YeBKrdFl}e>mKD5Dm?+rMfujCVpbGTs&3qH5#5Q#bB6*ILmTyTtfaOv^v5s zt+jS0H((s@&ma}Vy))W^+4Q<5nqI`DpIPgK(q8DbD}d=N3g(}F0P`0U-s^r1r)j!R zLCNT*x~b4II5e4X7?v7%kAAZ#wYpUy@MsA{$Z zFVr@)sgcQ;t4ur@B%JLj{FU4l-ouBwO}c?e1Iu_vMO*TL8_ zcfv0m$aFQ9Ii!yVlb&(=fk@-s`#x1BtF2U|6oBX+*j3P8n-d{Jsi@{&GktwTbLt){ z5@A7s3r6S{kc=w%jsN@45j0jL(|y+O+&5`|Y4kkex$UU8^W_r!LxbH62}1`yAWWsr zGFA@aS;bIVD7r#=i(u_kV<@{is(3=Yqb+SuDS%irYgsc6-Zx)5(|Gwws4FTM1(oU2 zO-+c7AB5syzy5Va%>LN)lb?^$fkvuN*Lu>F<^D;i!MpMX}5jcn#)gK?ITv4>{x?*%D5@o zN}YH%jAOS?%pir-e>>O}?pw=b>B7D-y+DHwFW`Uib=F}`e(~Q&1S!GM-8oW9=@qa~$LkcNSPbc!GyDoEG&+3$It>w5ls{@(fHzOQ?qb3W&N z-tX6m+)0W>Msd3_wY(X@0>$)^RsbyqUR9UQt6k@z+a{hV1=YZ z>VNc*7wEl7Rp{a7T2K%C?DLi8&qQn(NmPtS=vrsbeG!@{H6ufFM9GuF_60&}5TP%I z2!Snx0T5)5Fj>o?v(NWFPkYm7>-pQlqhHUqoY<1nKZ*Kz5LjG8AVeYB@WYcz>~6{T zmuN^CZ=zXQN(~(X{yB6#;VjQ!?P2FY>%s%qn3-27$^CCsu2qRK52xfplx|d|*SC~x z_qn!zWppI|xi=+acbVG&V){+aPY?=5 z(=6hdZQgicc@P1OTqnEb>Hb*nX4Y3Q%Uh{}o2Nf}UrJl3{8@leSzb-Zw{b-~jq5iT zqtFZ?f6p^lE6^RJyMXxI)KxsrRmz0FyaRbf+Hu;Jm%~9p!9mv;9r?(WTO;+5@PjcU z%B?F@b`r1~Qrx;)9cu;Df0NfbjhI$Z{nXwYi>orrW$|Ov2}?Cwhu;*(7kVE_pe}2v*}lP$G{zDo$pdIUfg>N1WtbL2rhm*%GS@vJ1Mc>La-IS zJwDKo4Aphh=9c}7P_7~8rdf9^&0D#Y#=r5ceq)ZhN}7I^YdW@Qpm^fseSgriI(3oe zGWi|CwMCR6nv;Kg->iVGXPc1N!q%ncI|2LD+HNt7%>+K#NIVu>dTJD-RPWX1^6Tig z(qhhU2OJO6oLm`Uaf@%XW>{>pn2P+T+0ISMi*fN;MK_gI4wlmoTbw-WY#EmneR*nY zN1ubn2IX#C_ND7He%%3&&3W@*9IL2;rfkN4RoTd+EgOi2yTmtQShq(9Djhb?_}-9P$vcQU5l0l&2hy#Rxmu{=NyKEUK!4h4iswKcku@KbbTMMQ(E)8gbf( zPZQWi3o-?uI&2HR_E3|obrath9?m$*G{u*ESL;~`VyDOQIFc|6lUdT}(pQ0;iRFmT z=m`X=-rZA5dFpwVL#ov|1Pic^WT$XEXQql={943v;zXVVoY>r8&06!|Yg58u2jxE? z5+Pu^@yYZ^zBo4So+X0A9gEY=9f0zEP9Ik=B=-|5QNz$@jPjS>5-t2xGGi-bxLZw{moIln`_ZGTn z!cPNh!x{1Skjo6c@DMtAr3P`lQ_};LJ zlR!aWBlMuGNdXgt_g>8B2%|n}nO2UsE5Bja_ZGvQ)F>{w4UV_=STilx)pf|G>du8_EZ}4i&>V>ybK&)5!4>9I^b__CsQFzmTZ*XIT z{zQ)6v&l+=uH2|(ptxa_`31wnXUzRB(_$9*HYQ2uyA|guDPsKelKGqD1;Ob*Q_F)3h#BoEB%<|lZEwrt|UVIUndRa49BIV)O|OgsAA55BIr zsjt3ZgYz}L&Ha1hG_>_%;Dd9TVOqyfp-qYbkL6kKr7VIYj*rfX$bg2vuuuMpf#McJ^M3>f28^#}_ute>F#L6Sz6B?t$Q@`s za;)mV`ewHdznt$%?d1|r?u+88MZlnAwR9i-znIG+)RDhIg6cQuz4$Qo?tQIpfNT^i zFzjOyTda^A?@gi0&laI_w7PISnL+6O0hKXnjJ19V2=9;4rLlP!b#LtLAlkpy`$3oE ze+2r@@65GPYT+$XIX$!~G&wpj+zhj)yH3e>Fnv8Z<#W83tT1!>u;n=ca4)|FKmm@@ zmK+&ix~^ZgF}Y$}uHs^RzIA=Osq)V&L@khOIL>Rm+En*FVHsOJSj@x*R}WwDc#RwX-MeWkiwV%R1BZ6YOwc-N8S($hx+H$k5+FVo*9v6}uz zaDPKF5p^lZT%2^NK{vGj^h8TEJM-pZt1B8abK8w62T<<2Qtp%Jkw0BDL zN98hSo(=T-c90WdwMrVC`ktN;s-h{v#L4QZ9>-9D_!Fok>`HU6DN_{o;g3TU?~NjD zOSw(^o@ih7rfpW5FOjV_I102=SF{t}LkfxR?a2AIClQ51WI1#*XblC^Qyvx?*6R;^ zcxv--uoAg@6QFgup=kbin<>xo+WpC%+_|C+t7Qu-*{JAgTPI`#&S~Gec=2(4`%)}% zZs`@H*dTHrGVJw`DuZe+^w1@~{Scz{Y%ugD!1!47!pLiGN502g-9_DF!JBsZCqDW^ zi{<)7SdiEgZX`equ}xX9E)*hDCciaBok34z!+a z`TY#H!YGrrfTZ3fef<-;_b#hmhO9FCPMU5+iEIPD?%q-no22I zW{mUX?^8_L^@NR_4TwZmzApLGS1NolS>USJts$l+9Ut5sqBM^=nEu_SgCH!0h1Xj2 zNAtcC8DxwX{*Rz_L=x(&`-x$+b#9z;&HUx@jb8pbz4Zo_tNGuWCnL|2t86vnsr&ye z`-!VFUEGTQM{tQ^7)i6vK|KAC&-2d%x%*XJl`|!}EF^&-oAt{%=TZMJLZk`sOSu)u z&$)NVN5xt;FLz-auXlItfwTW3t9PjwoSD=3QPgM3sQcWJ-N=CC^9*1=khJEK39( zewYn^lsWn%^DE2Sf)V%g;$@)NE5aM4B9Wjz1?Q z{^RWUg|VkQm;S4bB6q$=!%&I{D`1E5KOqz4Yif@rN`cM-_(KfIt0vwo8>~Uyorb)> zpyr4`t`?e`L&KIs&cNvuA((!+3i(crJ0J43BmCU!H~1?@qgQM;R9zoK+D2$n@Zb*J zvqRzZdlONWeA#^DR+fAzLEj~n&lB}>NGQczI;y92vhdeF3Hbp_SJUF5FSa@yGnpJq zEZ-lHerdd&J}sau9+v{R#k=it#SMRkJ4BeolS^<<36s(RyHd@%-3y%?R_ph*jNDt1 zB1>&S(7Z5f9?Lks$Q~PcI$;y5wkrE=nJlSTE^TW}1vqm)1y@*}JM!W_l|ZK9J7Qgd zHr?t7^CID%ow7UgdGeJBOE@Vwy|mNZT^&F;=H?Lfro!;c*O4#WtyaVp0$lE@lw@oD zQXtfas<~NgX(xS}(s2E0a=^g5;+HtlEMoRM!Jqke5OP>l!=jN?t@(pRmzz5$w^07o zrg^JKt>LbeZRQ^)=__&&zKV;6zrdB6JG~=QHi3oqqq#KEHsXfcEQicLoWPFw+l$gB zX5xMgHnw9rnoJ67v#K2Uz>pg@WqlX10{(~xUGUlW>|D-oP~@_iL3aIcJ8%hR&h79~i@`J&*)Vi4 zGFjoUPBY^Nc>Nm5O$ePAi(C6A?>q9|ZX@WoyI!}nvuYWAy*^P?h3#@m2@XO8rQ(14 zE}Fo|nc{G!r@-^KFPdqx(q#GsCQ~&hWYzkVWo+Zvz%lQu=bgw4lbktH@*r1;6>jlf zG|!OOu2RqHsbP55B$`coz8crO>UQ?Y{-5boNsO8#iG# zS+8reta5V9cQXIXd&R$#ijQ;e8df6;5`elCwF}D%wZm#Rl3&LtW2h+VvL`pDt}EHt zzgvU-{v-HT0W#~qH$lK0&Ndw+ey*Hp{Do`RX4sR;uz*gD;<^4C^64hY{o~DD#qY0$ zF!}Hwi>73ri7EWp)-Nu_j&R1K#|W;;zNZ5B&B{+gdH}@3qrWW){H>}tT-Mdmg9I(4 zFyZlh$7X5!f9`;(PaCuGr(9>Ld_0>CDdD5;uh<7JmD+Q%OD1C?bt|~t$nyrD;bU`h zvY|c-x0oQupuU-3S9Aa?E3GW^224C?OK8pRcRkLU+~ zVB-&t2slA`dtpUK-M*UDu&GLeHw{rxnP-IoSPrR#{e znURZ%1Ds1S4F};Pf((L?vE@sBuci!ns#J0HaVwgV`U*Al97wR>Qp53K?WfZ=@(kf> zX@}zh$Sc?AQHyis9FZ2nO>G7Y>5z?AS9==A69pWmx%_h*8EI}T-%U4ZWBE)->`AP% z;ZFz{#}6R&N}tRz`&m2jI7G-q!bi>Gu4frNksy--<)6BR{_T9D!O<0v!CC)YibVT@ zSQ1-?id6hrGhO>y7EJRO-!m3zYmxI~WydI9gzbyBhemW)J)dEJw!fNcly659BTQyZ zJe8&nmJ{z0PixJfiBHf#V}u~;6D{K6NK2XyO`H+84g^zAaRB-#;&Zp}^29*KT28m& zQkvfSHv>v9`%vw@<(TkYui2R|lqUZm1C`sEu z8M%}E$$_SG{`u|rpREj_;Wp5Nw_!bd`mC;~Z(^J0;{I7X`LluFdLBFwqe@iCJ&HrV zQJ_AiBg4rTR^34iAvr+WdWHRb*~VYpjWFNX92RB7Vd$w}4Kb-7`&;pSL`tjjBB z>jMKXerac<^o>b}$vmZ%`f|P9o*3CFnHBNjeTox8tCKC$O!05rAc?kqWvrx7n zmr|{E1U=*uCe@sw)F>7X_ySC!Dp#(g$eqyq3MBPyHd)fme=P|3QeEgqO}4~!Vda9Y z$yiv9jpgrWq^}naI>V01_Wb-;Yopt|Znj^Xal%$Xv*nws${zJ~?N~f`xdqT+mvb&x zWQbY72Y3xQR=#aEb*qWgh0kziWa^3QyHvV!cmGE~L`+covGP=PrPT zjoFA_d3nTgHoTxs=_^SA)cN9?1rVH}G&V$|%fyX?5~WcI!r&on{2rg4Q=5;h+fzS-|B zanQyDGAH?9votzro z9H!ww;=6T}7&#$Q3{)v9HP}|UIU*xBr|)o?lXhjTk!|AS+%77m_3lB`O}z5;1vL@< zL8f6r+C7(hD6o*!1e6mal^}!>vqg1bS;;mq6sz6F5ee<&k!;+9wFgZ4!U|!8)aMhN zqdnrJG&#GVm+%=VSpb?M7MaH0G?4=va^{*nxRIUw{Pvd%^gL#(S%GOwn|lb&Fd26T z(pJOWK{d?lPrnScm>&3+RbX01J~X_MWhLV8m2KmA%Dln7m|}z~1qAZPPUJ5>)DKWg zX#swz#m$$tqIc(IDu@An;DX6Qh{#C@7yXWbC;38xpJ0ZpWM9F0R|P+FwDj@$t>}mw$p;T{ zW8TAi_ZxUy7nJty57EZ8xTq(apNajl0;15^>V3 z{x?S_?wy)K1`Vudxd6I?bDG3P!p&c!uzmF05K;xY@j(Q9+E$3!3Q83v)x_O7r%4!# z;=U(D^rAdNCo|{Q-)^C^>~-3tk-E&B^_kD5DSLt?vXILFI;K`5`O|$yQhoS!nI1>Z66f?f@%MG2hh#Z)R zoa8_s37czblTDJLDvX2h=2_CS@`-C;*N^f{9?d)>X;a9U(a( zVrq&-FGn&fo^?9hJawH=_hS_w>zjju3VzxtGE-9iiHHBG|oSj0i{GY^;jQlO!~Va6UYF5izhni;sByV*DVjsty(l=P|@Qj(R(Vpl=gG z!78HCmsd2R%}O^=hQI+MsggGhCkeqW5$~+H;tSvQ7x`%p*94_z-7OQSuSEB}wN43& z^@#lO{c($0c!K^!=3Tqc3B-6CDAYD2SN%@kpF1=t_#|1ojV4>&u-#;W-^Hw3wJRA? z%`e}OU7|o9sTM6M2U?`fv&qZUCf;ENWB6TQZT5_%zb*v~axAOUL!OtMAI^#eI-yRp zU*!b-M?n4C7#_D^;!v6Kx2h@hf7r^@{|~zSf7r?e|CQrRH3wnXLvo| zV;QiCefM_;egRocSkYex$F#L0Q?H&$r-k zr`;Bl+G)(vW9T^T6Xgbr?OEKq_TO5?JITYcW;ob%W!>jn&+|pigQ`?F@=TNT&l;W z5^iJqw%xa60j*sX@&=Uy9LY1oIh1^SG0;i=2mD|zlx&h6RUuIIowScuj=JWkUE3eQ zyAAG#)$rX&XT{_K$)~4<8L|uwZJf86^N2}NS%a?-KwDC6X1L)WQloeZrZ6J$0PQrz z_(TvBxH1whnl+AwRIi`t!C(1qs z6ZvNqNWK6!iGAJpSDa(wC8r?c4>{5Jo%_DWD0ToH%TKXv0oQr;2T(#LOF?P!m+qp7 zDGBO*JRIsM+vlC5uD5XNm00u2#7045MrOAG<3Qs8NtxE-v(P0qM6twZXED$ey42W{ zTJw+&ptzBC*uIqd7)eh6i1^O_4yzp|#RZN{z5l{gX1t;)9S17tsYKYC#2ewzpVA~- zb84QjCJy@BPUn>HTv`F|>@U@0XwjR&En~eqC!8ir*HO`iS@|BQOG@!4qG5a<0?+)_ z$;`h(D1~Wx%MCJ@!DL~A$F#ggWbB{;KEJ3)Kx?YNb8sRE_T(bQBAi0MM~t`C zN_tUahWsKkGBa@taJAMYS!IZBNg?|twTsvugsH14xJ+@o*^gmNx)pUQE3oUVU~(Ul z*gs?e@8mHqFiw?cr*(6N(pJn|68k<$Gfch@!iA_U^a0tNHGdYdXh%Aoh8y#P9JSME zKw7ClKoRXn^+Y}%uRR7yo(&1~P#VC&h-n(MP6~(jrIInw@(@Se*>62%z-@3fq%lYm zqy7p%VUnq~Onk#Ttq^tGY~_UPsv^mG75v-2hbZ0ZDubd*y0hQIP4o&Klo=*`Nx}5z zA_h=MNUH9})^8);J|u;@=1O?ZZFekHR|(+Y89vB_+LgjjU^q zR%!`Y^eJo7MHsTH7pTe}nVH7GEdbJu{F-(dJ9D{7vZoeHHG? z{9{mRa&lmePi)B9NLD`XstB$T08?x;Tg|kt%0EtE!YnI80iXppQS&2q`~(H#)wU1A zSkK8U%W5TNyP%Br;J(42M5^LpN4k%)#U)7u>?#NDqqxsM1qTbE`+Tt@C z2CAQXU!lOF0-B@XSSeaUaI7?r4%Dk%7fX#E3VR@+b!p+8D(}XlRfxnUizKQ@znIbI z8VCmswY6 za;5ia&jxa9+FFzHn|2gkJB$8wqS=#KlVkS0%3QswVX(MjuVFozG;Mm1CrWaf z%ZDtL2ON_sC8}YVhSNQsF2on2xI#mHEN+7@GTmA&$K6wrsidUOTT@sDJ865qi5az3 z-0Z5Bw}?6p;|)H?UFtdkm5RVgqZl6*EmQ=J)>8&aPxkIiq50R*ebk zRtm|~gPADW7_gZ&vltEP?!eORR+owSt* zq16HVyuO|u&L8qbFj+ntb`B#_h_UD+4VzAt5`V&ig)l9vg&~nY7$gCr;`T5B&(>v^ zr?fm9Pe+hMe8&kbI4)}bwDVoYQ$L(^r{C!l+PzhgSjMp}%Es~&lPqjZA7Gj<>OF>n z^Q-pnjsAOJ{gUAehSwhls>t4_Z-rZa9#laUQWgJsQf*U$55RqoTdP)fr(qi<{#9nX z;{6T6b`CV$_gXEJXJN?vH)15@!&H}pjeJ$N?8Y_f!!*M~+(!xsP;0FV3&#FSQ`!Pk zBxy@j!t4a$QbmktR@o7sZzVZaDVg|5#i{$=pVUwBc00Z+zy93!yI<== z!r=T5MILYigsO+sm(av$<$UBDggAN9%EKf128|LUDN<0>ys%iqd5ibGcAkuq5A3;E zEF5Rt30ZXC_kdH$#*`u4cEPpj>+9=-=&KA`UZmI9`hr3E55VHNm`(&Eu8(U}Ju`~K zTs!=TaO4G&i2eoPX=Y94RvLfQh}ZMm z$hLp_w~)0uA##+VrmCBS9ygZJaV-B4jC?6PmhkyanTMxPs!?0&E-3G#(3f zj%3G+Y-CsJG8DB`GQ`>MK?1@x=Hr|>q`oNo&4_m4gVm6L)T<9MoFg7)ltwI*3pC*? zJ(ATlp1PfL{}H74k@f-Lv*!``3AWb`$wQRq%T2?jOQ~f`JsnEzKw}TyV`N~Y(Ny{R z*?_Toq1yRY819#PKra_Tw}In$tE0j9wnuvDNx4ODmcktly{F>{onw@K{E`oT95yY6 ziE-W6GM3nbTPYt$;0%Olv?vE3*)NMX&G;{Z@3STqKITi%z3wA>7nc#!XqXL`I=i5V zQo0%jLaepqr)3k{QOirPuUbm~goV+Ak`SX?JBCTl-iz_~ndOCB9Pfphl9KHw$>{WE zem03HvJQ^Ee0!{t*1KHVXAvv-+B)r$s#`Dq;|Kkd88H;T!8bg_SM#6A*}ZAgd5w1W zE$5kgdM}pkqJMdJ9W#C6i$>WTa}T}zz_1or``Ok?x7KxZaPm=yMzZ1YDQX8(vZAuH z{FdFUWk*=)d9AzV?RvNCnpWg@qt@4zRwaI>w-Ycn>ml34$;RbQwVdv%RbeNA>8<|= zBsq?yJK=+-*w1c))7Cn z2i96T`Uy1qbOkIg39^pmyDdvY45Zh*s6Mj6WK*)1g$Lp zBX}KexA=EY;D|h6CnRyB>Udcg)831ep3{RTIlmfAk~;SpoW0luYLj+OJG*-#k=y4DGmIFF{@Gjh}ytOtXDLh$(d^=vk)CJTZ@LBiU^q zAVq4rPnt*G<2sG0;wJ@*2lhjc_M9)pL&Uh2d;L=_q)UCv`lyA@Y5Hv>O<}!zQagjl**?$%+QR$J}+dE^_-zQfj6Pm=fd@ipt;(rY}ECQ zw*6=8ci%e<-eV+%8>oqzmN!s#7Ns121U`=&&t^=ItODP;OgS|Af1&%20Mu{6V;MhU z#K-zJntm;?pN(BZaJ1C8b}J~D@J;$D3BY*wR*d{a`NEg1WL*>p^NADUsdYzfuR|h5 z!sUAPRPy2w$6GBNM9{WK!Gu=J;-%;B-@XamqO3%;2R4fMns?=OBMM8bX$PM=^~&5N zn7n|!I`tl!)C%EVHlXjVWGk&M0x^Z;RtHiFycLiXUUn6P+~jgev-nYt zG2^2`<(VKd#B`vN!MGq&xCF%PGFwb9*90mtl>iPWOS8m4(v4q=K4s+QwIdSc8iF{r zPF1a|4vNHc7|E+MwZXMhrO{d2!5;(M(|-jY?$2wtC8Y+pj3B*6kdxx9y-Vi1f)-(| zC|0Us+(W3Y4^@8H1CQOVfY3&JO@l`m)f0qwYm4&TJ%1ghc1e!K1G zzSDXvG5Gn1-TYB$K7Glx_@qkKji5*6OOaeKr>U$RG(_XmQ3z>dW6&2!Xtu8JM_Q(X z(>Sr6nIW&g<m-56?)UXOgx|J0Jo9*!`Hn)u~y`!Cbs z3a+|hlw4e2yV3MP;}Dpkb6#}+b#H54QBm|Yd8=&)GzQqq&qec`D2=(|Pn>}%ozm6K z%n8luh-t_zZ9j{_T}mfax5!deO&|N4Pcp;fK90q(3yTO{q2KROS?3J4Anu*OHmBFu zME3M`y9@vjIE##xjF*;h3tuE#dy0Yp8Ib*tfUR8{6g8?g4P}YYtyX?` z`zD=rBUrC@e)l^JpL+wDjZ3ze{QgIGb8?nl{Bc_~HruZ6TDhCb{7Iu6UM4LpaiMC7 zxG0=s$W6f|M&)mNc;BU5Ff*ZEb=g7+jSk>J_oj^;-mINJI;DR-JGai>L6l%r`^hA# zD(i+2V)4x~C3m-;Qb*z{+}Xb+a;o48hRssQ?{TEH>Soi=5ij=dMYJIdx>?8k?rT1Fv(9}=Zh`w%mGa5g6|9BCg@ z-Kt1n8V`;-z575fy-imt7yPSa_58lGF#oeyr@Dx-bsdpyj*qdlc&+52+fznb9<8-G zRyoUdZIRIlfDy=J{wfm*&82ce4-2VG8(1HYvvui7N4a&Vo3k5!lQ7)_zFp?W=! zo`=xB^PV<6=un)33DAY!r?9d>?EH}5x9g3)O{=qhMSMhKs_3~g(bc=c`RvMQ?In`v zvUQyQPxcF1CE0{8kxC7_rTyfFh^AOSVv9pgx+Dtj@GX zNTis`S^<&dD-=Mk$~-3DVhaDe8R-G+9lZrGkGJ2l%FkBgTT^k_(&4c1nj4oMr3PZ= z^dl;z>+O5qfncL|({n90jRkw<&;am4&dDX5k^bjJ+>B=2tr<7id9pe0THIOHBNkW8 z6kuD3(D}izKa#;v4VCm{q;Y^z#N;#qPyh#{9dniwz8;c_SYrSR4QVuKtcl00el8@4aL$WQfyjUQ>o1R;8s=#1c@iS6+hF#JOL%`gafriV8| zO^ZCjeqlRGt7&XRrRmrd`J_qMr7tB0dv#YiqxAM4pL$VWIF7PYG63}~pno3k;tiGz zr^1!5;YL}v(3tNRy6k?WrXPm%2lbBxLXqlt9)!Oyrfg?CedW2yj;H+w&|_I3Gq0xR zd1)@iZ?s!UaIZ{j+RX0W1EueUuP->v=|gu3D=72akHyD6 z?A-m0WJq!OWnrQ}zBD!Sk0=roQ;m^$RCgoyZ+SbWb4`2Cv_BchO}Op|b|QQvLMBQ0 zun!w;gcmB)*m>4TqY~8WIxP!a1V!>J3m}_zd=Aja)J;BKAOj;cp=Vnx_q1XU<#X+2 zID{;vW%)TBV~okZ&31YbyS;;uq+RPghj8f?Fj%*9R;Nz{<~Zf|yhI_&OtNR(WNxid z08&}vYHQ(qWC@ZKmBQvaeM3LH4C;;Uw@D!XqWCm^jpTF~ywvlIm-r+z!|rLfTowT7 z7C!5M>AQ()Lhh}15%Y(hosFZIi zvc0WIOf%}c_N7e`0y9SpuISFR^rqM5=*x^zIY#|>Xn%6LjjF(3KeWBEo5u-dS zig+P)AxJz^s)%{7*ucj!!z>yofUDE~mo8cUyG%w#oD5}TnL9NP5mtTE4oQM$3ghXy zoOj~}t-n&-fF+9Wd;T&r!xx+vZk@F6J(>0uE;6kqzl$FM6#5(&vF0=R)M!iw#+Af? z$mivRzPNC!nX^7k7~WmnJ|KNrUD;0m@xZ+xkuxSi;1hMPbCpS1;n^784#yS$eU7OE zJa>~DIw$-2VmL+kk9J;Cx`Dy`hXMs%t@&mI6t zs2daO-7z)xH+|Xu-sp$P%V%|K**HWa%J%sS zdtPdz54WjG!?+eaPONU;#3f`gt_S8BBAD;5Zxtg+1k&xJh)t~o#{x*Bq9TV{(`dK% zyc4zTx6v_@on`=g1F_eDpi7EPAUnteO_qx6G^Y_1$wV>I2xvCQmiJac+fD2fuxOds zR8Q7eb^!rmaSkj;gjt#HXVNg4AAN?PEp{zt!}NTax5mr5sZ4xFbhm*{ z>{6}nkPYk3ze#3=>du(;Cy$C3l(|hgP^}zg4|1#iI&4XIr6T^3Snt%vv)0H|*`O7N zgTHK)r^IoHeqHhgisWL%^CR z%gTLZYq$jQ>PZs`88eJFVePURDr~^1iqS;-j^lubUA=HK2-Kb1`DmIxRR@8N7VAn*)ivUv}h{|e5 zu*TqC;dheU0#6z7GBBB8T^7K;hY!EU)DEXcGodphSmFj`K0?o5mwr%A{mB}}()9YDf`8Lc5Y|wx5|b{k-Fo+7PT8b8m*_sR2+SV7$sW;}27fY~pum z<95Wa5~s3B9f1_o@kQn!(BB~TF0t3DR%Y_GgQbrRWwJM0K-XV3o6{7>li-8t5GWM(QshX(RtF=zxq6@%H44{_$GT>iS-o1tZ9D}O zHXCXQX!RnA3R_c!B_+{W@c{f$DbJRG=W3sNN)|1l=cJ=d`E8G*g{_ce1#d96A*{7E zOy2D&K$c01ZQ)$d$Vm{LnT5lj`3%r3Ij0#HM994%3kSKA{6hV`8Zg{UbALX&%I@K+lMv9WK~m>r|h8OznPmyA*}C_nl#YAd8W^j zQvp{`!!Ock*8)G;p0GVvSTOE9Jhfo=!*UQhFhQI9sP!YFD2F!B%b^3OODwGiNLC1 zd;dgyh$g-mjlG3F6}C;D6deyv?=7E>DuYfswNXt6OJ!wEEwX*Ta5S?EmV2$KlW;sQ z%SLU3*Ds5{PH5g_=K`N+#QmxgZejA|2-Oh_HVqvCN;A@`KE&#h(SRJ`1M5Ac$9psp zm+_g)5WLjZpP&|wyY%6Mq|94bK;ng-+e(VuM9QQs{zEfw@@PBbHS9cdmY9F3!G!@9 z@czD78v8Z(j|ZsMz=~%-JbtMZk}`^}X^E1ZQ=h_yw%BhxePBZw0np8i?4oW{iyvHj za*;pGu!X&XDZe{{@3#svJ<+rGj-Ez|Ux$#>%d$!AQsNN*{L=kj3U{ZG8$m#>cf5^9 zgAXbmYVLb9{j<7+Br;LSP2ujwcFfldO*sU?(GyM&GSXBCj_{c)1WSQ&8N~veYq#b><|(nd=?o*Mq0(mK#GRV~v;C|Sb(wD(5UGiVItafES~ zzwbHVJ4}p4zJA(igHmqx9>mz|M_^79;~(OV?i)WVwS^2l+6{Lp+xw4QkIaj()1fzG z1eOfu#}GoVs9WJu>|~Y_E$64G+a6iYuk;cu9S)?{n^Jhn%~M;;pM(6@8ch|__lC2f3{WBo%pJR=Q;-cGTDbJeD-s zV}>>GxX}?Gk2CcR$%SuEm2?f(ZBMCS3eKz$C{-gL330%pkI<-c>`aAap2u_`2ETVC zG(BdGW#DdY2Y=mTrNS`Hl)IvxUO<%!CPn!y@PFZCk#g`R(996T=NCzlnbU#;r=&jM zivdLq6e(f#J+)NoX#~Nf(7_NekY^oc2ZlC?H5+RnrwfsUq-vAE$6H9G>_KjpGXQf7d84O9TEU%2g)+^onCBxWjC|vXCS0Eb# zjR_RhC_E|koqx+YU?JwlXc)e4yqI1#@6cp7lL&kI1X%*16w%E{jf?sT{r3YYBkW26xepaaw=_8+5Y@LHJzD;aJ; z{3)lN-N$;Iw6fA*V}&}b=_3n6L>tq*3m<-v6Pi+^JaWLWItqi1`5*lgCTM1o6EzLA z0jNWtUu@bDK2j;1SIc9hiqZVTWra{H@Y|g<>a{IV#Wn=84)=?4 zfWL%cGnlWUrc1R|64?8N(YY!h%(>SxTrHdk_3U%sO`rCjnHdeAZmcv5nhy@uJU;N( z=YrQhSkW)iHuVWwTzfPc;Q)7(o;X$(fH50}58_mbkOME#^i(i&2C<)6>W334h2%{9~GBjgi^c z4hTLF1FG+O`goTe)4^p2G7n8@PvbJ!P2l}}*n^^DvY_wV4C!36{~};L&39uUkKYn& zGccgCz%Q)#?>i?CND#dyMdgpYHcM6I1ok&fCZg?5Q&!PEj29{N=3z&b^_Je)^$7Y^ zS5zBubfD%>L1)0LE5G@}hs<}=ghAg|S#FtX347k~)BZ=W#CsN5Zyny$_b}r$PSf)T zPs_sRu6jlK0J z1xi_jU!{`oUcdS`wqDC*S#6--LT)f1%4h|vK+fzvkEbe}v|rcm?*oJhh}-Lkq@>{- zy-)Fb7~GGa`2VR|R6 zDY|RpraukxHcd}Ih5%ESF1(nxCo}dvw&lOw(E}9RBzgjHC~;S2XQKd|dVREc8O+Cc zRuI~$(P(Tp_Ps^HwPGu6ZHZNT)!w5vZD^}T zD6v|!rPbP$s!wUvsJ6fN_ne=9oRgeG@_xVG_jOZ-4LEnxsexA0&2I?3RtZBJD(d&~meO^CVdR=pR#`2?ns5pYP->8x4H{l<}7OGqXg<**Ikm44e z7uFxyf|9sz8165<7}GjBQ+XSlUYzb;OEmZSX1%EOb&G0=kO@+pp+AEj`B9f zYt9*KJ3h7S*mtb{!SC=N$VDh$UEo8#Vq$Zxg+~4TgJR7rz*K3fMb_E3sPS)d_P6Kq zeLDF9dA$#Fxq#^c46jy1O&zM%7B{htQ?s1cm;XxMO=%*>a7(RP{H+FQjxUAV=3O)A zG7vvAA6C}3NI0JHGXbA)O*tGCS7t|4(sua1-~S|K&(N21!h3RGPk<}Ufp5=mp_LIA z^YwQC5ZQEAN~&wyq;Ad@?CxJ(Xhx#a;apch1zI~{<<+HG81+X7)v-V8I@Y8z&8KYB zH6y%!*D&a>3iP3JAshvBZ%aT1dX2KAoXp{pCNvKoIQ=IlPq>LZw$nT}Q5W6o?8k#V z!EWrDN$JH)ZjvB4+J{jX{(ybajlFJe13s-g569}2CpB(Ck5^^KrX!FY^(8Q3XC6NT z2#(dwl~1z=`Prl`FhJij@hfMl%Cxu)5$RgN_4W2ecX*qUeuw@1Ooj93t1W)B?6%^N zlZLs1m%8)iQGur2L05BK`Lm&lb#2c)LBLLJ3k!3){{`OXhJP*n83ifp zgI2S|-g%0;*VU054Rrw_9}4GU9`pfx*eH(IUxX%y<)#~@$D*exA`c>{ZymvxF5QI6 zRREf3`bGfbvLz$fV*QN3s?+md)9g7=GSz;{pUyJUCH}E+uQdPf=NtO1tm_yHRw>3* z+uoLj=uE%=qOhuEwErkhTn?`K2bkpT-rKlLJQ2_u3+v3tUe>$!yZIWd7pKPP ziPge4{uNCo-W)D}7@(&@o92G$mfHAyA-Vd`izFttMzbK6_g@z#NK7_H%|CK}CStnq zHbQeAhoSUbVvsC#GuXuoeYEdCil%#lK{bZ#hO5nYfhfViXhWlBasNjKP1RKfa25*(WU-TA35(M>^!+FZ}!5+-?s;Nu_*aWI;LRQ!A1pxo|8MsNz;@0qvr(qEx9b1!Y_ zWWegv=Pll27s#kzoxU6jiSkNwt9e|0-FV|0Z}^{iTh>+lTI*J$Uuh(R?|GfgTGTz~ zJLvbl^`+f!&l7fXz_m?yvHV9qPtiXm_RR#HW9u{wM#_xBZNExrGJ9x~Dpqe-$q{Or4OL_ntnV^hDsq^Suxff^k5|8*J4=DwN=lL& z={66HlUF}}nf5VJP5;z1H4$=j$fT`bBL4U1@cXvwNqCO1rLXic-)t7;3fHgZ^K5Sr zW4KV?%?#k(m&3NfDOwJ3z#Miip@*Zw$}1Mby;$e>$)>V0|(08Q7Xg z69p{J$lO6HWxNxEup+|1|0!67oweG7={#L166DE@*~QVpll&N6Op-h5s?6>ALcXGM zh2fsw*kp6V|P$hw;G% z;XA3*&KIZSrzorA{^rZvyp(0i+@JTEIeu~*T372>Ia=#+qIX-6UvH1x36?QyoFIqQ z-$0*H-4YscZWj4i>~Ma_mFgZK%OX2-*Z!y-sPZ`^tVMk+4iJMdw1wBztwbBI*&JRO zT?*o;<-FDXE9FB+0K8sgVG+G@PdZicE3(L}u_SgNyL+X(v3AHdp|$lv;ru5_6In6$ zBW<-bDQT>aW_d%aFW(J0p*=^N4YOJkKOWPhN=ccgV9(0r`DEXQi(TzL-Ut5`ZtQ3l z(QX98vqJjm<=Bax#C>5eK_eLh+)RLxiEKtjXiKH@TfuFB_J>0!0^!rX);}i?eL5RE zv~Q%Pv_!mt0bxhRb2GNuNH(7*PXSOjKu}5P*@+w?<3Pe(9ZELZfC4EQ6U#V|y^U8d zgCdNxiE1Yd{IMkC2_%E%M|kJ3N&a1HiSLW~{1|b!Z@NS~I~!6GwBFQeDM4EDs%e`{ zpXhB3Ir|ONUxU1iby=;=X}rUCk98fn1%MM*dEA)ffgik3997zV|k^8da~mkI)~dZ7-0Un|`@f zd*_BG!(UBVF17s?5W-FMTjF36%ZD&tW24;t$<)t7*pQU8&fM_kDE$0hQ9^7atED^F zH~mjri!U}3jvn6jVspRX@s+LmlY~HckY5$h`}E*KxAa^2!|=}x2GVt^|5DLpj*+s9 zA>6`LY_j9U>>`-4F+7@QiB}?CIj|M&ZxqACQ$nWgSqg+FA1|Sc8*cGFFqEoDEjZvr z4}J7ylW8Msyi3Q9E}lI~H`8LdW7Qk%cU|~r$al?q?ESDNfME4xCgmpKEs6iJ)^N{W zF-ZoB%;;3V{J{-o^12-&u=Z#QASQ?MxWRWop5vN{a?Rx!8}_zQkLDMqG8-$lMy?e>ErvykS|50?)8$^AyJz^? z!8eePqt(Di%2KLO{YOvk{xiLGo>4x{KjYq7SNv_h+O*(yF}2onl9L}iD*~dA`2ki! zxgt`b!?F{IFeN8G`s2z37>CG?a{9LD55Dxp$$xsuF9znYbi$w#q7aWZWi#|qoMNN0A zC?s6Bgbc@yZ`!64a)^nHZTAvQ3oQ2g@0IOK$p6}F>1-HmBbyX5Ap5xgxFq;;szh-) ze`~w$WYN0o$@nUY1MmE}QSra^4)RONY&*Gn1jsPt*KT*#>;=<0$A*Sb`aR+H>|D3Q z$H8?EC*kcK&{8*4to-ryA4|A90S~qqYpKVa@7^b!#3o(ck=wW4D7!{bu*k41DVMwL zfUY}*38SsXJ6`vg8LeyD_OkN+xbed-{<<0R$zE`weX`C5Ftd4lWIf+f%W%e}4%_nT zXQ=k1&KtvIhwo|2nkJ;@Cx+;HvptbzF^6lUiV(h$Wt~zQK8s&(0SnYcFAtB-N_*N2 z6p{EJy&~AF-pP+!;nFZZC%fyTq{v)s6($|81QDK6dK#Ainew3W)+GScJej71>28t2 zpac1QUw(h_o}_*Lb|?fu$QQ-Mf(LB-*=1NPv@ADcwVxuZ>Qv;?92=P z;M7ik53_ZL6f{~1IkpzBvMlmj$fta14dWo7-K;+BvAw_J^ad@4e}`Ae;hNjs2gWS4 z@O!*4QD@t*xN2uW4*s^|NyC%0O(X(#-_SYPq~aWpmu>SbAqWvUUsg6Bwv-k7!|SKan#pI8m({)0K^`l>}3*;Da(N(wBzTf{VDga zUqZM*hR}DlFY&7q3QdJFa3l+${EER>1XZ(yEGx%>VVP3z7Gk_!-pz`|8wTxL>Ik5Fno7V~BHnC3QM)SbrZ$58!l1q@B%@`9qlJ0=vSjsuj4DyGQa+pAg!Z@mNxqJpVKsChH1;Q-5GLQQ+jf6E& zd2%T?4*Dgma&P&PQDcBkM+^?!O&ksm_t#7a{#D>zSkG+@hCJXVa^pw7 zzG)t<R+NfaLh-_|k#R!_I81-H~yrf6e5^fidH!t)o1sT*oc;?=M zu}=a}kshZL1pLpI*PnzRo%zLU7#7c(YTKU$=?d*q65=tx_p`n5>eo)~17XH4_AUj;t$SWvw-VALHkD@E6 zZt9rj?fg}PiN%$)fmr0rd`kyJ`F5^*(UtX_wIwq_k($a%>+prTH{0iQ(()patR!9! zE=jn=yAQT)0}cTr>}huOyAy+5^G4-v%ugp{^K@?T$L2$h=xVPA6FqvaZRDLDmv66zPvev~TrU+uNOYK&v3?rT$M=t_KaE+ZIOJ1806?G{o|ANx-4 zA4TH|KesN?OF=Y+D;3D?4Ajpat)f0R$5ydn_RGci1JShI&hEu ziVr6SZ)p--9vV$9rO_S}o5m`gAfj!CL7+hGW)*>^X>=317!VLHYGMHOl%k9XvLrn# zM@)ajUejzF@KMj3XRLQTLO&QpbwN0TK_Q3V8^UD=rUKo z{PH0ND`>=mx3+wT*cotOEdMXtiYrFI0`*|A%l_`>=MXI&wfJ|zkDh)FFSp%y*!K7k z#gWF9Ha}L7VtYsKkA{5N_4G3*8;G-L-(PCs*_xKx+BWOE_GEJT&$9dOEu9G23v}hV zwxQZ(i2N+Hy&Y}y`bnGZz%A?l{(7;yYFU=vm9diyPqkZlSMv7KNRmW5Cnc3uxpg~u z4#SQtbYwA7?iI_S*-4CAr#Z#Mz%7Hbn9@W2gxX9Ct{^X)pX3@30?nXxG4+B2{elax z=q>w-zV3>SzVB19Px!ZSW}`EM&YxmRkI|9y)&Qfa;RkG$)VLs<7oCX;q8mWyF3BZh z9L*oMLtjOqfTavq10$e!thGWWI=5QX*RGv05r{J}f>;*@2v7-4WTVxYU1R!gh zzp3IATdzNY8A~#9VbKd7%s)WDNvQd1V#d?SvTJoG125o`-^cT4Mj7;CyCa_OeTvM_ z#6B^x?Ff!`6jT1i<$65xsu`EGS5Wz6t&AkWFuvPRlYP>-!;t3hRWW(LrXJpXe#peS zaml;5FCr?G;BtS}m-^K`fz3Okt2ot=tg6MzGz|Y>w)*{a{GQdtg-+_!S#*{$((jwpFN-Ak5ryKbrlJ$ME+FUQaeF-?r0YLm*eC( z(x+S;koOCovN3{j#Ome=cjf}U&MrX6IBHc~)-Gb0fy$f03B93%>k{J?<;wWF3#c~b z>Pk%P77GisFaXt=C|YANgvqLwvMPU$vDiYu165G*i_yq!VhM!3AhEr){kA$?tp<@u z;OowTtC8vNsrJ7ye)^5~W|%FpXED%ERCI@JVx;pBw$3MW7e8QLoi~4BwL7@^hp_24 zt=P}MUOaHWW0&flcrc|fkXWa?`@t^TVQ*GBpE}=H?yI!ji;<(kF`A@_-&AP?X4xh< zk*sGzZJv#>-iJCq-~>B``}W%^$Nc67n~bd*Ub8+?4fG4Y&H@+Q z{*q6;2j65TIFS4l0R8eb1`iyqRd{khaL42c{ao36_N-cNpnZRy7|$q7wOiN>0l~+n zfqF;D!`j7*ekJYx&YVRVxW6ht!y*D9hF7)9YxkG1VmaaI4ZjTqX?=SgjJ3TWjEu-p9ja@ zo)3f_@mQ-rO!Pau@$LFN-%Z~?M>LXeM=$jZ)2xa6(d`RF>m>7?N5UclgdNN-}l)pv_3O;3)h)$vC9x;i;(i>lI7Tzd`|wECdI6p z*%Il1SzknC^h#C^wC6Yt6Z@=NTI47GI@a!oGxl3dI|l3riW$-|E_|8^97Nv#CgP4I z73UC(rR`houpfk- z_kUIa=>PTP$AKlDRHs*50?6(?sF?ZFzO&g%{G)KhiJ(Y4#1;Jv|7!{3YMf_YK0eac zQ%lN?LCodt?Tt;i9$7lurbWQ3;>A^*i>bBUN!SU~_JD3@pynv~Nq*Vrg?PD^V_ zd0l<%n$2Rt7o(K@y@Go>>o)i|p?*hK9(}!EKh@?cv~EWdK-T?%;Sp|dDKrCOKXfpX zu6|iGlp=Gka=UXe8kG|QGE!sTUxh8oedh)#7XvbPfX)GM zhFoq1+@PhCi=^vKZU^lV44Z#qWLK-%^aOIJofxV5tP0#Wugo?Yqh6%n5!)fwR+5v1n{hctRFfVBiaOLs1~7W}`erz$wwB>AC)3QH0@y%M{KcQ^wK0^#2dRYdG`4Q(-E;&qoZzrN1pdT zAV~&!D5o#F%{%Ic-xpzOU%wB%hBT_{UiWnv*4;bnpuIbg-^PN2H#ioj}P<*y}I0g(tGr1SP5U-{IxBDv1r2ym$4N6ZA)P=XP5p~Qhb;> zHjM%rDGH$=K>aV~NjCzPfldc1Pvii2IhtPPvDb6>ggn;yE2?h3)@ral&mo@1;roma zpVUcijEbnft*M+A{q^D%6tRm5XbBgCji49;@CYMBCCMxzD1ai{L1<#I=6Ad8^b07> ziEXpMb_7(IQN&ybgvC~SBW&TSeD1COGX@}=B98};uS))Qxg3^zbIPG*aJ8vP$CGUr z`e-vt$Y%2B@#sbRDs_Q@ZR)KT=11YN2?b`Uzl>wKN9N9GH)7S&h3AnaA%(u!n5ujH zdk_l4Xqcx<>{A_YY4xJGipPybmMIIifa=Q{b() zit25Zh!1kX#TMB9hwI(9jNxc;YPOKG8{gP1a%c`lwl#eBh&3K1n~54qg9G;WaaLW~ zmDX&M8C%%o2}ef~K^PYby8eqp1Ie^40>@+~Jz!TVJP#^zzOO&7i3x;1l-~9d6hi7vbpu+=@`+C+KfZY;h?{fqo$E4Yr%W3YoT9eVsSEzB6CPs=n1JwG&6z zixfPzA+%Q3)r8uq2$$%^j6GntpFiGvgDI3iR16+e{@~xmE&F~-l@{9m``^Q6phA}n zV1S?)9~=$TF@Di~NxDN=s|EEEFXexWEu{R`S{Ly7D>iJ^`02}@LV%{h+=?0mq?r*2 z6g&wK{&YOq-2{bU@~Jnl-3F_HZiAa zc+JVV{grv}xSWZd?~zk~y>71KBY({Y%}w?>)4q$PvGZOy+~ni>fW`4yn5B_iN_AKZ z`qMz9vZx#7pv~7qajmOFITnNY888~|+}47Csq?27A8u1OnLOdc4^jjFOP@z{?_D>h zxPDaf5n8km^oaY{iZtW6Z+5TTKs{$E+jL?tmzg9&@r9HqCrfe$)=e6e<3-y#rLK6E zUP;m=62Nf$4VZts7){Q0Y`eH6F`f>nbZwx}KA&gLCHtQN?hr6@Yp*6iPZ6*m&Qk(b z0~;UHlxcA~!44(*KyVx_4&_dt(B^Ge3$iw zc9#)XOZ65vqH>{wqqmxkq`H!NYAX)gV5>!_eNn*tH@^XIO}M+UF$WUKftTUK#z`}iJ%1b1QPRfg3MzT=zps6DMwP<17@cTHxZsN z*<+xd4u>a=TYGuX0d_4`co7f}shNv)VZdA!x1m>f6yf_CQ&!jf+UGCqIc!T9DWmW1 z$6f%eS_RR3iKOfjL46=x3mP;fCzE(nud0bK4hPLe>+e95GL7IQ-4%3`ciF6r?x9+xMGy$BWeh@oL7^9!$*O>1ZcCMH^@Mn&1a5`{QjL?sf znjDcVDWf3 z0*rIelCHQW<}0wzS2s|pToIvQHj2JJFJ7?+8C)I05OQMM;b?m9*-^`~r{JPiACa1fcU%(j}eR)G$31@`Dx6Kz=O(v#Cwr}h)(h$0$m^G z2wSO1plAt`5CMAw7i)}^UKm4AJb|K%=k+&npE&?9DxNlfTg-j033tmfQ6i&mZ0_xf zn=}&vLN?U^!vmpu=`2Y(cm**);ZDjSkZE54?uQbNsLmBEI(=76#*_9Ka5UjhetxSv zR)3%QRJ#Ls7mIF{0F)1%1wK!##gG%g0U1Zk({A@12}y)#KP7LB0E;$yrJG2AfSdpw zm^8QW+luoQY#nUHJw#AFc`}E9A66baFBa(DsFBCj_!;Ir;P6E# zhG|>F#%7~Wpe6j-$?Vl-=u|As*}T{P4=!gC{K6msFb6>SC6s_SXTj`3H#v+6dS8v| z+C(;%g9=Abl3~45P9pot4eo*B(wQV)CLv4U4>Bl`cc9~I?`}e*4$C+%9udeS_z&U} z2SD4oF%FaV5eXTz*M1C`kAR4|3L=|0k@E=vT7UQ%PRj02-=<=c$iayKkqwE;;{zTI zh<3({gmW}2F!aS}C)F{mECATc&2GwBwfRaQiUpmF9JG(baJ2VArm8ZYN?1C-US^lH zp)KeJ{LkR19JpqNE^!GvGF=cw*S}(J4urr}^)JJK+g$pQ$59tC=E^t(ZSa#+q&>&yH35n4|yyq{(#pBh2F)h7*neSEk`FhU8g63*o3X43kL{OD@-v2(zX@ zO+0y;e;}bkCF(3)$R(?~lRyUOvf|ZiW8M1@h1kbxOtI~{gg*2w_sU8c%c5sxgI^BKF~m>(+dNuSb<2G^+p2X>i%>eFyPoh+V&7R zKNLd(CPuVl-6iA^=Hon$@;TtHWAuC!#bw7HDwfrRM5JW3p#lysP_GoW$&Do7oRi(p zbV~!P8(vDP4mzuL)sqDDS9k7MKe|rq6I+)N&XWhYAE8t#v#n7F#=GTHvMB)agEV)^ zBlrb{~zP{LG|T7a+R@L&v)F$QzqDs@;5gpr}&T%gaQs(A3>Y z;7ckd{>K0j?);x;Rra@Ud;0d)nTEt0Ty~ltas2f@RLsY@5P=WQ$-P9tZAeVTez9#K z^IbCpu+ix(dkmBb%CLX(=r-mwglP~4R(POw9S!vFX`&sES0!N_fJSZXcn?@YQ`X7J z&w({UKZVn&D_*=QTQDb00Q{YbI|r?ujI1;)nl+3fxj|lamohvxtvY}{A(fu|>X4Bn zVRKP~{vA?6W=8LZLfA!6$2oAgpH&2?4EN*w^WJv^tPyY)NKD<-_12r3;=v%a`0?R(6qy5Rf7%z-$pnN;b_93jSk@sdGUXXQY- z$`5x{0q}Gb2T@W`0YB8hFTm*$Fn*+@U>8=J4y$sk3Fj)3J!Y%>)1O+2j=q=}cz$JF6-1|~d!Ft;^J0v46Z7u3XJ+Pzq&v|!r8rGec1b#-AQ0UGC^D`H>Md4xrTa+4oPNs~?{>y$V?+^Y zDp(;gT!T&6_DI796!J*Mm~9h+n>%f1(x1mMG25oxisQY~nGA-QGxz$avFD8*f6c<-gcvGD0Z^fQV`1E^~IN1+LwM+4X zSZd;$k;(g{IUC<7 z;S+M6?Z4Fg= zhwZfIot3746wNJ}(W!!sVXu^eC9|?0e)6Oqwh87y^5NsU8CDpEX{d>%Ozb_LkfAUS z(^tkC`isH8o{aA75)`uX7@{nMW>G0Jc(QC$)=G#WrxTB3l2B8H6XMpN zoAPBwNL2@By-Nigx5Xms4dP^wg;J_U$%LFI*sX#pCSvns@E(%MRDhq zW!!0Y;FZ%~7^u0NtWm_vpL7`M=T3r4&U$|E0j~_pr^o-nS9fK&LOE?Hx|RAl4CrH! zx8s_Y*f5<#CG4|vM$Qv++pXZgJW$kPNzcurHWP~2+_+TAkXJcW6eWdFI+7W|H~Y}L zF2MaEoqurF+r)L62#;HqtRpI0C=Qlk>zTBCEhDa^PSs9oD! zGyJ}ji!gPP9Pb!wYRH&;Dm2Qt*@;+x77Kq~G+6QWdwu{ft^qu875~2qT%rEyH4uqZ))v@o$n1iN`6?P~uQ);uh~s$d1Q~EBbz5 zprpUyt&f!_>QfxOYAAs&>Y zWDHYph9^jEv9TM3c8Zec7=G4deK?vXn}Zeny)HVXhu!bQ^8ihiok7l`o;$bKYVVO{`bbZN|u^M z>rt9w_sg!%hQ@vkTGJexWK3JlcFG}0ohiS{GST@aOg}Fc)vW7m`XTnFHw>}0!TOYx`93}%J+1U}(`%ys)e}bF(FyYDg=i#2U%?0YLdC)q zt}BA{dZ;%mcV^L_SnK6LEAKJ=wRNVe(J5T{qkox}&f zuPK4#X_YWEiySHoPYd6xse)JDcfMY)BX+s28Of5yFDDFo)9-^v*Hf!*BMP3Wah4uF zqw(kH)V@~C`x+EPKbk`EDx{J_HD{bc)rccUQS=GpGqVlascY}lwv4EFEMLsT>4>z` zvuzDcw|%hwt^0)Mm60OA^%o3H4bUHuw3Ur78`EqE;OKEvf_R0zac$1AoPEP{ zbG;tUFOcI?r2ZyF*_RM(ytmck1y6LSE!rXnMa>p zUtc?&+4=FstLk~~A5(&f$ICyUjF^`l=jLnF?>A+b%|>B0SQlidm*W8}zQ((@T3RpHcACg(dgU z1nj#oQ_$~EToS@w7~C6&eWF9LUlgbg><>1_r z$jR?OaB_O3ijIIE(LvwTe}1s2?oDdB`}nyt=T;I4rNuB?66TCKSYMhe#|Vah9nPNl zgSGrCpP9=J|6Br^c{E`;2X7Us@X|l&d zG%2FtpgQfsuFiumL^n(%k~OG+&JZs6Y2tX3D>fEcEp8ORzu&KFB-7m=M1h{97ukFD zBWNfVLFsEbvtG#P&2&aX^BXVnCGdj(uh~u{w|c(;jgypc=xSUZ+`T_11<%0O zrLRME1ym_~Ef>5*E}lU5vJ-(Iw^YbXe?VWAJL`v+gg37>=x{!#2EM#^xc@hpk(2!e*gW@Ol_l3&f}9)I~q5lj(A+ZuFIDRIbkjkTkA z%=HyNGg&BeFmA0>truN7I#{YZ^^SV z-8cO3{1~I_-eEycr!{0!+5ZrlPSWUkv+w|9lsxp!FPomj{>s!^#5d+J$KMAc?<}I2 z*QkGV^KK(7@vsM>%EJN;aCL8UlU*l~wrZv2X{^CteMeGUgf<1Ni`6ly>KK)p3M?rl z+ndREK!%}-WQs-HgF{!EF{b)I*dBi^;ZnP6_s*vm*$7|7-M>eyb3L9|55~rML}f5) zDM7i}Y!1d{`etrIpT5#;{%RB5oN`T{XL3bpzWz>5SP($;uXwwR2 z3L4agmAvOsfAmdN;RaGy;5EL z@NITp%zu`tPgyw{Hdl@;PpwP7yh*|O6mfnZBfHuykPL#Ohes_0N%1i7K)`9Jnc%oQ z_d2-z?fl=JI(#Kha~Zx1F~yZUkaVk*beh^mxi1RM`*3hMe)vf-!y)~S5?cqIYEs!( zY58J$)qP=XEurky!dZR$Y1>R5o@9~8VEP5UL_dMmDm7TbBB)f~+AInm7^D@+uT>1o zc+^mIZ^W=uCz&^VS9ab;e1_^=Ng{6SSV$KC&f}C9CJZS$eQdlcpXBtSq5HL$%vOGg zQVHSa+WSAF_<-pN5f6`=`Ar+AXhYt@P5ztOpZ%GMEe$j&t;z1y5h-udZsAl#e;GYx z@MTnR?|XSrpCL-i*1X2VFXY95q-Ju@AHjy0PRNhFnYt9EV|zu3)TIDQ^jrCw|0pa@ z(-QjKqXib2X*qAWQv7vLd^gnFi6PqW-{#8b@BH#k2UZnfl^(IHxytTi2-W<3J$Gp- zqsVEk@|5LaV>@;|^zX*|!w*hzt*^xXOz%$rwrd?{h8!_p(Jjo(UG{#4A!NHTJ?&z& zHf5}S95A>OLLXI55!xdjJerR)zwWQka%b(%Grq6Ia75ZJPk7%9ag_1!g=(4<L1I{&q`3Cnx(1G8z3%KBN$OlWeWZi_aw~3g#ft!z+%#(@ggn>PpZNO8M);Vw(>A zo+{oR0)y_w64PDwHZay&4kNDDPmdew@y^eO=o;OXn$0aj4(Q2vhAs}_*l~${fuz-f zxpNxMv4SEqGPRYwcV}&1%MKrUn@#6+^8QolocBeHf-!n6k}e{Z%5&5*$DyHnU<{aWUn_bEkZ$G%z4 zSs}Fx{aP=&iGt0cWV=6yl2l!pPIDm%svkoCQ80yWvhQL%1C}emiF7lnr@tS+lXiH1 za&3(M!%wZC)mN`^z*%!3DQ=@VvhjBj55GI@Nhnf~RE?*~o$@7R3a1Oaky@x zLfbUo{!W%{27O<>D2B1LGL^o)&y&pPmo8`ibDz%7^mc;f?YSlzJ zmtNg#>}-A?&%``j*@lg755QEH(@xep-J9feiq2ia_h0O-?B-PQV4vS@)3dFRi1oce z+yeExNA+-h8nfh4aEmVI97%6;JG2y%3)4^E<=?l2rd0i8PyI(>Qy@Bji+J_6-}khG zGG*vP7O9UuhxxydfazBd&V>36(eHCcf#Mgwl(*hQ*zF>L+7GaJA(1+YNMVS9(u!1y z&5F3Zkr1*|cXsR|mAW{V3MFq*h98t{NCT{d5bf(2^K zwdO+~XkEol1o75|y#2ulPW|?SvdT~1*WapEiII~gK0HFRWzg|EQ(n%MaE-Pe&zMi; z`U0RaZ~D1i749~;{t2yuLQ$PTy`mSzx{S_$hQc{hp7VdYak@CKldt;b!2MpYZsa0N z%b>w%6JoE@fXm*usa{r_{>28ALbN3QQN-r;b1aJdKn)I!hLxF%Phb!>Rz7wO^nXFA zcU5;p_k{AT5rHf<3a6a64Tju5l6~$qP8ap5$34=3C1*?-!(^t0WSOfvUfBO3(+lDh z=I6B@x__5Zkn*OQU|R7cK5_32xS~<9qoJ)&_g$Wi%bK%?wF)l+fvWKAiSd6hA~}Ct zV!(FO^t@!R?=0!e1yOLnet!K|6a%=jdf*DqqBmH*C{6R{uy*)nrc++hFIgwpX|17RE`fwJ85+&ThM5K|oc%xJ1QOerqj`pm|keo7&VhF%m{27g9JW#6Vw5 zf~Qcf7p%-s`F~5TDl$Vj!i3qZ)3;1NU?&oEKqXs-!5>tWq4=$3{wVe&HR)|Jh+9bM zCR4`zjb+5ILSe^R`kv?0??&VhB4;u-3biAj36rFHe7D;NT-_Mgxp|l(d#$v{_o7@+ zp8KX=H2&+w5Gj8PD;geQe)?#UYc;mnm7dIX!^Xo{+D49fK4Pc%5&_xBxWUVsZKfQc z{*MA$Rn!s@(Q|znwUhZ$_~jN;EA@np9NE=sQX&%*1A zOEf(Y6!FZXkL~%}C;c<~&KT2Mm3N{dB2~mPKdki7Y9tB-bUd!=Jtv3Bjwa+AD)q3h zoaAF+_nHYZhTYVcl%D(Q)-j9A^ zqyPoRr}Ov-`CUp<)o!IdzTI&k&r$vg=O9n`2Fy5$LrmPHSZd{sl(<)KCpax4W+%}| zmcz>gKw#`#Aftsd5eGepBl#{b5#%40uwTkgzcrKqO&G4NgDF<;H3ZJXdWLkPsYi5) zvZjfFmWx#UPDYG+zSN1Rs&O9}yHM@{meb)djP5QQ{Z&j?aH7mB`v2qWy`q}xzHslI z5JG?e2?PibAfX0`5Q-EDm_qMO1Vs#0R9e7-f|`UDI!G@fO^TJK0-^*6Nbf2lDqTfH zuz~gc_Ztg*&kWz6}^-(%>$q8yr}s`qHjuh2Nx`%J>Q<)4^Gm$vp?m5=BYbof}V$o^t3GU z#*G<4{^<{`pL-7|)OC4di|L9LyNl=2r2nnC0#eSX<22ke>c)# zZ~Zqz)n4l-+gK>t6*u(w54!NDl`qe5OE@FF?V1GM} z0gB1Px+p-J^bLYHazD^m4eKdUih?jMrp4Q@;kHS1xET5er@BawNF2nnw)Pm@OuIN+Tt<&v~ObvFmHXsmW(gjCS0S zDwpnpa1yvM{wtIAX!1$z4yG?Z>cOiAg4VP{kB%MpL0I;T+^u({Z-Us)#PBCebbpUF zY*vZJ;9^$8tpw85U7;f2l7VQGvVVb@S#6u1} zNqItit>?`AE7VLL|OcM6(;@ikotckXZubgvIfYaT>LH%NX9H6Q9zh={J z#N4T^-|5-#PE?>A``&#^#-PkMIr|+9W2o>a6>dk8tD|aXc z52lHazdX9JbduiMb!5BaR}vO*`eS1A*A7CWJzVAi=9S+z6}HH7-f5?QyvJTNnPfLY6A2Jhl!(ZBjtz$RLTjq2OEm3YKGl=%f*Itp#4BU zd%0v#k}`U*dcQNcO3E)x*laH%P@n_*w6O0zTNp03Bic>K7}Yu+BJe{s*c0r0>E0*m zE_vdR(30W~NI?Gu#=f*A&Y`e)>#e%*cw9H*rAo<~hd$!%`9L&Q8B#A4WNrSDw-ovg?ev-81^IOX{oF%}1vLy>c2Hw_})p^;#}Jx6ANM zZ(@MdF_)VJQ{QwNWn73GDx9|#+oyUAI(lW&wS^iB3mh^qRE(579<~=T zr#nE~hfKY10=@+Eo5UYn10@qvr*x7QBGns!X%1ILI+{^M4=L*SOGc(WEP^_UFNe%- zi=MPLwuhM}+#d9D9pRj|o)27eZg^a)J11#%0-(QWaDyJqt?i?hp@SdtFJL?DR_H}v zFY5dUsEr2>&i~+a+b4*+ZX3#$!vffl?(jpxV&50W6tWBUM>NMR7%yl=jP@k%V;;Ei z<5Tg0zTsmp?PbWof|dsj*ROmko&F?zEOs^i^4;5&+SN&m;{7iVbx^EdX?V3&%61I> zG%iq$&@Tx_;4n@RP0!gYD#`g7N&-(+rm+|1B4TyGIO%P3r;eBYgHx zC5V{*)_-A7TfJIb3Z>Yy5Bs>-SERowNyl2Pmxy4;k4&YjzH|KDp)1ZnQ@02*=cL~$ z=U<#;wn$l-^P|2%;Ac8J@2{gq+E8e?m)f(@=9Pro z2y5$erR~oRhk;AJmrq9~4H4xo*_T|d*Pg3AQktJrL^XK%cDcQ%JH1Bw7HBWqY6kW^ zcdgs-9o{3TN!0bI?9m3tPo4cZ)%$l2cQnv?!sEdLoM5RsZpwpNzlYuOMQSqJpmSfG ztnssSd$~5Mzhyr@$^xSRthjC|#XF3@1W$xV%7)b4T~&g`gTXe#=r zLX(3uk+iC%EwQJkKK(<0wa|~x9r<(~o^;|LXXTQ<+;;Jo?w(3RW(w`d8t8FS?sHX; zh|!D$<5MTYq4snA%Uc-EotHku(>7AY8xaEM`iKuc1c5sH>9Fp@Yfmo3m&0Dqy~$xL z!5;KU9i4F2_ZK(`Oh;JQglrneV{6tgxQ=&W4{=1=W~@(@zL3iwZMnwiP`nojmWytF z9me+pfsVP%lK}EtkAJt#R~ED7Dm(hiDJppkMok1xH*{2U>$E3WXa_k0{$xJluH7r- ztyherR+7038t!cfj*mGN4T0(!>LtZmDe+)31y&NR{@G1|bbfbJxsXnW6?R8f<1UEc zu(H*PTYwG6a}75U+<&gos_b#w30$oHY#rT^TlANx)rHi2YLbK28odN+-<=KUU z@%&rY*d$<6fwsiY6at;+_}yIPYBeh;*U(@_OnQnq1jZYq(qHD?v*F z!}~j0Hcxr-zQXC_Xtcm%`cTft`@J$ z+%UcU7IDoiR=6frvc|*3s>?|2+oO)471l zF_2J|wj|*cT35n3tB(<0>79+5wd#v{GHqYLuAx|2l^?u$KAnozGf3wTLKsV|_>+_x z>vi)Fwk%Mn&_+Q#sIZOPiOX4~b}fZv#e;_k6?J2O}OTX!A!FfBR~Wuli_JP*5iYP`c_O~LyF z20=brpB|5WEpS`<5$sq;NZSA z%M)C8W&y{GSgc$eU%_WRuEbEiNH>kDO2N*+D;ooKXf*n$m1A6T4UYeWJDt0TnXLI8_d^ zqP8Nd#>1MR9&tilOURSo_iC8MRNR!al{(SKjyjQJBEPGJ!Fhbdh1A}+U#5vq zwsrs1bl0!6_@ULe{<)E4`%6PRP^q}Apjpf#ne@GA1oU}n2Z^T6krRR*7V~I`-Y7tu zmYLCHKvE7io0>icihL01%^6GTfvom=i4ZV{j*13Pqjk8#ymnAS*De57({_vZ$F9Wj zeIp~9X6F|!7fENw@7aUinCC%Ke<%$(MOvJ5BOs!^s^Cf0mU`BSMCez1q}dqITUKQZ zHb`jR@WI^};cRN0Aw)r3R<_Jj4!MnZxzG%o?4_^#G~FW~8rx%3--He&s`LPNxJ4+FSk}Wwt9~5y1gIoC_LIe7U=oW^YFZ>e3RHa ziJ$uw^e)(K{s)x%-BEkcdPZAprGX{P|KQNWE(vm(CwRg9y_ zhTt#DCuGv27dnHL!uYPY)oS1Me0Ak^WtHo9ZMl)t*6#XIb^=Vn!1f~$G=!cU>+{<^ zS3)0hMEbnND~PVH7wi>zD}K@dCsr<8k+~BCzH9$0?gJ5R(ih(5>#hzx3z_u9`lP%? z3fL@i?n=fc8sNSH&J&3%_vd7>5A^^FM;f)-Nr8mZz)wag@^y3)Z9+{eGf?cujU>ef z`k@p+VgjdfTdJ}NG$0eT6mJ`{{NT&gu0k*e+P_V$pQ=40Hg*t@PP7h4)F z1Zz$QYWMKV-_1YsP7bXs)U7uw5yAH;8j;g}4b2v2tA!(SFlgFINW1?0NRQC)@6qeJ*!SLHz&;Js8}RX5p({Wpj1y#wIosJ5CUkR|Joag;$m);n zp06bC+?F!QNeHuRRE76I$8CH?Vhc7&4cT+BR^p!Zxo(GmwuO$8SN(RQ|9&;4b;!u9 zpuZIN#R(n^CtLJJpyuFDJ*-&+H*5>6LO&g?YT3I#ZwJq}2X1zam`(n7->CUO+TB}| zL+dSWn?qxBCPB0-#sC2><9*|U_$H!pi`>wi7%|6_PF@IlPpACfJK{MBB%VedaV2O zRAMuGc+EqQTlT2#rq7zgWMfvmgmFN>TlB|%;r@0QZB=hj8N`^_TmB7st*PpB{R9_qEh>@!v1$j)V^CW0Fg}Qw0X?a1~MxW!@c~x`!W#NWF=5!AKxdt&dX!^h zS<3F&)=h+PI~kem%Qtq9uvdlN)&un!fW6`Po*HunmRBQt{80Cpi}C3=D~nC$DKkUu zYuPmdY%~4Obqq(yt-J3J73NCorVo7^3u(xer@`8Pg?ai*9yKki*m^Nz96V{G9Q*p; z=tyrpgRpd6BEv$; z`xeUAU@s-5(J;7~ge$hNZ#I!~5^Q*{PUkoY+EsB}SdR}!NL@}IqsTK0D; zgA!SA$Wrc6-Nko3w5;EhV?j$!k&X+)hvMf4kU0=rv$aj<;KkUAWmUP(9 zd421)$wJ0tYma~OCm4l`vCwY=4Gek2PzSEVgr(W4@2x>O0>(mvI|Lm2SGSdSG82rg z#K7_a=&9Hd;r6RGveP<8@Pi~|+srT5+N|>qyc{kIG2@RA& zNPV}XzF{v{l&W;@Z4rm&t)%PT>driWF{;Z987$$Xjq{aFP=*w8(#8Qiryjopq79 zUEoe@9CYtcLtqyBuLaQqcngepfo~HR#S!C z(!!I&atcM9JO=1_#sSk#^fDH@=15s?*)RtCiYK*26Ot({;!C+?OQ|f7!3`CkX47Z; z5e;-fZauExHwla_r9ixl^^fzPcAe3smdWAF^R?~w6iB||7vXiyfqZMG-F$CGU#Jq&gl7JhvX*ZlqjRN2pAGCGMpfA)FEhW4-2+h^HPgG~a%mTYr5YCBL7_emr^q zPbtT&gD1R-=jX(I(Z0Pdx z4~jDc6jeFYP`j>YG`M6e+4ljNzFO?98LWYWO5U$eM9n>k1DR}z=(^8i_qHtEUInmz z;0W3OmS)zA6y|9D$vr=;m*9{;ev;5@ojW7MP}7OUdm~{KkVsJIifqZI1b6m$(;4tC-ck8^~|lg=o0<63;@eJmOn!D3Gmu0cm7?-8zXq9HEQ-Bqy}Rud_W zI^z83ZxQ%=Ta>6o@U5%FAYE-p``Of3BvYxqJ@(%gG$2_U(on*tA7UJ~(NhofNnmz? z&ZUVeb3SS;wi+MELp$G=>Icn6({xXxA@}8rlKdWbL^^jPMrJ9$f~xpRy>}qMZ}!)c zWG06(6LhqM-e;MnETuO@&F^kHoH6&6FFVysuh{Rvg;b#o5Xf>A=ZPMUDs_498T_HN zbWF+mJIo-#@4lfV?;AH7QBZp#ko(7pYAs}BMw1_ASm3=K9*kTb{E{2uS!6A+i*$6| zkXXVV7QMS>6B=0lPFDCQ6;L3{lfyxncrJuMfx?p!sijOXzV-Ty-;4hTkIxP}C_XLNQm+rX$&&`rb5dBU+ z=_T)v6tI(DUmlxftu&3?2w684I&$OTOQXW|NDZFn^;hGF?ue&Fo!{1vUY6|WbQEte zeE7Ej4Z2lmaQqMVxnsdK-Io-vq@0W!w@%zTQltwX5Ci$9X1<*bM&hby+2FU}zg8gZ z{+s1$W_>`_^IL5ckQV{l1AGF%u`P;mGEm?(HU+42q!%pSTL#LVO9DOdLk4^+Wc(t# z$;GMOcAVMPM*bk-1XQ#N(&hB>%LOi%llK#R$V%_X_Ql?MF#-mej@&eJvQT!?pfnfs z!-`?Ku`K}D!Q&|QHUM&~(!sl$i}n1j7lUYMBHYd-dlz@7Pr`r$Zu5WNmLj<9+Mrhr z&qiGz-POYBWc3I`Zi-$KzVvqHj?U3Mg&x$|Uilo!4^JE~2<|Z<{{zC0e-?kjJ$CO7 z;Yv-U%Ap4ZhU#(u`mp?4Z4b|;UZ%!OO!oOE*7$SNKD=z>m$$m5%M`nI`p~b<=sc&~ zBmKwM=(H$9RDNw~@-D(_i%6)gT%sKCxR#1@*;Q$d-}7vzPy6NNf&&mwnU?ttns zfKc+JFuSfvchZH*LK=r&;N*9Qs1v^|*F1r*Epwtq3=c`g;}xW{XuGd1(K*LwA)tqI zbp>6&OK!-U6Mr;|R_f9RAHeJeE$|fzhTd4;)1g=e$JiqW#PgSp z9+brJ<1#7H6}p_0gK~80;gL`7v&tp=)cLhN9ww34GUTDv6EMm92^V?rv;^%QkGXgB z(F*o@1lM_>oT&;Z-!FU|A;FM3rL3R|v?=wV;qQ=qf#%i;`Z4_PPyT}e;PVh{6_J+L z7MTDDe66pM2+GLLgUlV^lWg{4rnH{(p{&`DSoSw~|10J_Fs==0GAuQC9xSWpQ+ZU& zW0{lqR^pgO!rLbSh(z!B{eH2x4-+j_9tRf`0NcQ06NB8I-q`+o}by?Xrv4&)K}K-*|^_k#8tvIG=9 z*L$33_tcbDWV{W{0@kKgTEVmu-0O-!pKl6ecsXn;iK=#H>Igz=Q|9akSbhtvx5E0& zh)FyT#3zCl>_B0W4W%9NQ}uId3I(`$lL* zD=|r=IA;N5na}z2)m=}@SXo?HZ{1Ag1OuD*1uY?f)^uNu8IIYdRyettCx4_Obf4+3)4fM zznEn1O`{99U#!Cb{kGBa1{~!n5^MAbW{#rw1%I18-L+EeiL_{7{R?MDfn2;LkJ z6c^#-!yc;q-{WzRYU~4YMQ^x2AZZY4N%8iH3v}RKoWMtEh$MZ+{D<) zQr%{(k}%6ELCrfY!~m2gWkGn#KIJHFMKCG`+!XRkO7oydOtGiM514YEnHUhfDuYhQ zE0juDxa~8B)!o{*5hk5_r|}!D^pNx*I|AMspVnmqtbZur-g_7JCca)p{YQmb=pgtsz%m{1fbqM(I$r!}v85_OTCJqEOq3>%fBGfOsoC zT|BUCF0%sR=l<^6Z-V*wa_G7#mADjWxv<(HII(0 ze>n7eDIifhDn{gs-RjcJ$b;2DyK~q61GGK#4ykpUu?^1)R9vg%*MLlOeON0aBQ3=e z@2&l^z%JKAGSG%|sT1wVP&{pdYOSOOfe{F^2-b#MGF!l71$i#T=A{lY@IB06E0-f7 zz-nU!i~24zp*|nvDXzD;*3AVZs2T6vR*@+iBN5_m!3el)`QVh#n#$g%hiwN?B0*Kt22ZLH63P6@dt{}o6VeMFqQb>Z_K^@obE1TBmOuYRxb2E z^Y~vkTD-qd!#C0nFq|;z6qEjmQf;yY*V~UCpZ6C@t^86?@~e^rpRC_g`nk_g5_e*c zYl{JyJ%~ETy9WGQ%3lz|X@8xny10NgH{XOL zpz8?voo-m0FdkU~%9kxtUb+C18ICRx?BK^_XS#z2siNf4AE`N;$*=lBDKXvminvnm zbrIdJ@<{oss}d?`R@j1F3DJ@Nu;Yu)Y;C6#6X{^=bA92hTD7qi=xtp{9 zo}STGQPjlt={8=ft<~n2J#*w1I)srH+Z*E>09*GRjMo-FgcMMaN|$N@tGcNfcYYp_ zxBOD6;;ZZBxpgX{NV~!^fS|xIxD3BkUcLb7phbYIKXct zSkBrTW@>?V(z9cn-@po4}M8fh59j_ML3=6fj`LS z{{g=w8mR+{cXN(~MEhdBMhI&Q$7JjcQn=Rm_L-(3odjASaUxCBb;i1f!?##9(X}yM zxf=O)G+Kn}`bVyb6a24foro|BGbCyMktic)`}v(q%o1!smWYy*I3c+BJmpHo4GFp; zazi3T^)#{)mZ({(VKEr0-bflic>9P`2E~wi;g!&-Z(e?)(rrqV`f7Ey<}IEq*1^HF z^;gbKp4TgLu*?0jT~$$={y8$T*u&&A%>OtLL*2A)1o&&n?2PXxq5 zXmVGLCa(Xxbb&b-sPGkE-LxoZOtC^fTIa(zCOQLzh|c+1&$?DF5R2kTikHMssaRS6 z2ORNHN*Voc$99R~~t8Dge{a0YFituak9HXGFC()OfLrL$DI>s9&s*}Q_uzL1*ME$Je=bWx1gz@&`fZVm!ZDEQcykzJO@ISDhz6(gG)x7U+EAB{?jJay zHU1h(#)&PdBXVarZ5fu%HHlBZVU?1i*#1;ha(_D#gIOw}4&YVlp82_&>k~qRkZiWO?xF50SgfUqvV* zb!wbaf?7p|Vsquc=0!2zR}tTn6BHOcQ}HEQAy1|U7=9#}R>*P9BgBACR|QUR;yP_p zo?HVh@qxu6i%e-fN|dV5T~&yD79P}QWWF*_+xN3&fdsOaz$NrCf(ebt$Zi2|k{v@FYz*VNC&5;M}0=w4g@KX-vk<&lc;0!n>Y@b0^Ku&1qN?v)9s7#fkO5SDXo09pydPAQbpj|Rp?m0oSO_Lh zyIxaD>8X;LkXI@~xj}?bNCNo@)VqPmdFuR^5lm^T%X$mO{wrJB3wf9Ef3H;to@o>F z4!W79O-*B;5P9HCPmhRd)d;6IcTxtxM9(Tml$+ z-QE{QrZ``E?pkQ>_6y8QZ2bP)Y429tSo{a*=) zqz!G7x=kh+Q6)n!riu-9dem3vEP4*vEp#Iwk?MZVkwtfkkMUesRh#Y~43Pv&Li39m z?HCYKeKyJE!4_B~Tkn3;Hw7?wZB?GLB-LbhzC|Lj-WbNOCY5}TAIb9?ipBAN?6K(t zjSl}*%e|@qdao#BL8?gdb*n@Xm3*?vAg@i0(i&<1F!hGC7G%Q^zxk4<-`VpfR)VK0 z2T1h|{0GQ&A=HjUEfwU`MC5{!seR@e6%t%b%fTyUOLwKj2(B)$Ee$A_s>`I7PGmHB z5Y8n^R5RW>vF%qSB__2|3_lwh7o}T}atb1BglW3#e+?_I zChCg0TS1_54ZS4t#WpqN6IK?DyrD)ky|dDI3bT8GiG02<=3S8Wl2eZlWru`(t>GVv z=#KU`_%?z#WvT8pC39kAEV`YdkrxmNyM%y9D?bPlRduNTq1J0$pXI1%(ZIh>1vyge zHF%B5_&{F;;9C*tMsaQ^tWa9Z>YSadlBV{-16u9ALjC?viO}G1*spvITi>EH!}57VqjhV z!SgG27igf8f<)miEcBGucXO~3)g;D2hE^uN6l4rm8ob9wq)MlvwhJqqm(B>rjCrw_ zco3iy>ov<-Mq2IR3p{~!no=$k#F2Q60g1)<0)P=G7x>EgCD+9indT~t`U zEXGLV`iy<^e!){Ej=yF7vU_R-x(U@5gEg!1v&9WX`mlJR^*z;yupX{utYn*DMjlj%%thW><~WY*xr)OUNEb5KkZi z2*Q0;Y7J~X9h0?$ig8zlXJeHFjI?9K&3LOWvLo2b(s_u`bYB<=MYKe>_RaatUhDDN zlDcgnmE~4cHef+NHhRBqwc{;o_3<-VInc4W{obK%4ub z5nD{1t0!mtSX+E<+koA~Ad8uRz1O7ckW(T{jX=Lp}ZfJvm_=YwHkvJh+6xOaMe{B8E2RFRFZT3 zseJr%p`;W=+`iGeN-NnY`)+G|sJ?oGzZSS$wOB23OI#R8Jx#on5@V7_GIY2=HfBpN zBEx{@#LKvN#rDD^{&EPH=m*+rfX~+ofbsV6>XF}I2~F2w+CJLV$zouSco79$r{y?| zjChhoEaGqH-9q143bbrZPfjY3mq2ZSU->M+VY6HOw{NOx8mCI~q5;>N>q)n-n=~vP zpYM@M721|QlT!SF0{5c-$z4$WF5cgxm!v`*Np6t-AbTEK$*;HeB|~)2@t~i2xax*Y zGu>H*sNtnJ6`Rmp!RAy_%zAq^k)Pmz{$5zy2DY#zP25e^7Npe-3ao7Ly;tTRSfJ&Z z^wSu}>{l1`A#E@?3h`Q0uvHEz+=Ei6&89~gU*k+d&`iI@7*|85y(-w*oX>gntU8Tj z9G{VQrYQmPQFgg;oVoMYH`<|to=x8n&0+(ECsYXZ$0Gw5fJ}sc*rT7H|5~HnUKDqH zub+e)%M>XP+eKe!_((TtCo(G%#FsCr^3OQ!qhFWqGqOr7+NZsIQO#A9){qIqh`|&V zi!m^Ab9Utvu10PT{K7Xy^NxuVWD^#wxe9`X2CSna{1CR1H%5u4XD?^2yKsEqM5A@) zpL!7W1A@jrr%SwJ^ip$4RxdFR5s%*#=jkG(lCB0TKtfl1M$;THq%>Lez3B%>L^=l? zJ&d-15F^6zNrxZi=#}?)qzke=0wS1UbLe1JSYF>pKk;8NeAsv#vVkg-&$d=t4m8+7 zd{S`i-~Xrx9b*PhpK_}uw!?Sz&V^=vN3LqW{;lf7e?&O#`bHq#h@;E}D;6=aFmh0gX;7^EFVF}eRp(#L^qS;f&~w*ERUY1Fmy?LO(NUm` z9jR}6;x}hX65+jkZNf&J*TeaBfufFyB6bCB;R>L-Xom_p{Qx1eT}c6)d{31});a=G zqYK!e{LU~C=h1z>57s0%WAnl&dqA&?G50MW5f9>tY;oF44 zS$J&sTsJ~y``4328b}LwLI*KOsB~T6hqu(@_Baq+Y?}J-LQ@^y+80DG(Zxt$p7Y%> zK3b;N*VYZr=emQ$?o$N1RHQb4+R1@YQtZT>9%Lb>yUF~BZ?ZX#?c%K$X;+RMNT}`t zb=kJN={AUkNHIwp;cMVM!sBZ!RijY82fS#%0Np3oJKscSL!L_5jMy`0mG_Wj@c%)} z0KPqD8DiQ>C7z4e28;t7F+Eu@L<*ie2%oaXBAf`5BCsVZ<6J(p-ndFrp9+~uXh}jb zoH4F@WT1WwE7cgAfoV(x7D1?Keh3&$Xmm1QKE<>QVS1>LWlO|z0+t3MVKcG08xX@QR)N3e#_xdNn~euD`PB0vn13kRzB;Vd>Rk`LoIX3&&D)DuK0voYD@Fl7$B z+aB)bgkjj@s~sWJ!S3{+8xOabF*A$U=XCp}|SSfC0kPfWdMGx`hctq$9|}##Cnm-4x&jDCgzQ&?pSM#5TQS~&P7Cp^2?c!^5n>%lDYuv76W2q$cXHN1Bi-fM}S z>IJ?g0y$X_We_@Q0G5+tylsne;oJ}sP4g*!ABnc6MzaxTT ztrE{iB#)t{DF!V(g9)}uPlADN23~m-7T<$e;zKpV;a@CK-~nQ!7|M^0oq`f4VDRoF z^a7bk9l?Kv;hB6Y73nG!qmTtMyom|XO+-(_@NBk+Iy#{&~upB`ZmNR;(+qfwcLZcF+1_>2U@widUQV+)8(SV$e|LO?i z>mw;~uv8Aw4Fn*VC|wqc%p!cT!Y|ta>`Xj&6tB<2OlF~##^CNuK!QoUY6Eu{#VZM7 zzd*5zTvR+)rP&q{Ac)CHz(-qQTrBbQF?`e@y1EDEmktCt80+>KyTZ^5d@3z8ylx*1 zJPzoI5cSE3oPP9{EhOF&i03n)i>fRRV7bC*1VjbNh3Hvesp-3^&MTl9ani{^LX(55lwrmWPPqLIfZUO}7LX zDX{4Q7@0=Q9X6)339bV8Ndcn!C|21TqwH*qa7F`yaK2IFMF*_JQvzjgrC8vVA($oy zEZ-OrEQ*aZsgk5Cs+@i92J#T*$H`Kp6(2`1d9Rf`y=_G9fN@1_(!jU!p;?6}lOMVzMD1 zVJsJd`jQ19jzK7JjB*cltDgu08zVDGuD$SSVT|rm2nB#3p=dXIOfGkB1S6T%x`xc50lY?*NN_is*HM=O)0E_6(#gA?~86X-C+X1W1l8K!Xvohm5QD z{$U_Me-8^q6e^SfV3rmje-Ge7&iJT_A3_v#ITV7c5m%R!hlEsvxk;MA^(Sy z{J&ep|Id-!!%QATgkArC^Z@^#9(cqaof5 zTP>Dgbh+x3Q(0pH+oqrOl&hY(D{JpGa_>JN7RL9wGNZ>s>_)S>W9`=SQ>t%!x5nSa z{+qad{rAX&gZxGvPLo+RMz$NxA762TLK|g_6~ zQ+IuTzxQ6W(D{Tf{S={zO-g|6oZ+^3pxF!CUTzCJjjQ!;R z8<~+%^wyb2A~%mg-_izk4}#W}&rU7*buOmO6pzS8c*P)4l>dOsx#4pj@BZd7#0PzQ zLQle5${ie@G^?LuspnglYGnxJ?}>%G|A=c_f(8qM!1 z{yp^gx8ts3P1f6NTTp{Nf23qZXI8A;VaH*7eveD?U>Z>2xIX<%+&4dQ-TsGY1kzlA|LnkQM;y1RAf%!XAI|sFu-(&Ih z9Tx>#in}HO4cQBLXksRoRo8AXvU+#3)Q(- zMn+Oy=Ic+{`zIqam9S#z*rTiTS`(?)uc92@Y1E|GN`3cDwmM@wVUfM>7tJF?;_~dX zMU-q?c1R-W5oxmx5ytPmMZTQckA^wg-H$j8VvmKJ4d!}HUGe{gvWH9dM_ z)T&~Jau7TBw3e|nrz(W_-+qG;UB*0(R|YJk}xtS{)Zs-@>2Vrr2IOf?%yCpZ(G{tO#H?#UnIz7 zhan~KR`SGdG(slvy3QZ&w|Y{;gQF!%0oy6EF*WBz%hJc9=(1LKYGLHx)%#NbIHG}7 zYcx;qioPu6_(COnkI|9+TE%l&MdZgs#NDu?J1#%7Twp^o)#un7E`=89I+bz<8;emt z53!3oB}%nt2sC*#Q_;Thq{IIJ-dZ<&oQ~Ngr-9pkN<5%_dM7^u`2$t~oRndp7=IElHmnlK zG3-#QET)ek#!TLVQ|HtmHsB|xWp{(U6`u3E5CmY*R0`5whr*e_nU$6Wer2D!3n6{I939=IkdSb0F8Pdno z{-d8`(srIsFoZIc^)7X==Xy%~zxPOJ?EWIRz0w!v!OO!%olR)`l@`v#u^~mPfpuX* z4i8wM2S9g5aj#lB68E-(X-KE?#HL_v1NO(E2XFc#dPhw@O}<MWDvkb0y||U3v62jMI`k~Ff+`qA{TL6xy?AqpR>PK!w;gxHTUzQc{YbC7 z_(G@P4VuEgHbO+=xoS+Hov9LhT3|l}vbfo5vc?_jjSg+`g2u=H0QhqEI+14$NpZ$> zotB)i&3k|03mN|au@5n{>A!v1lyqC^NYBHa6#Cic2asUxdKcN z+)cD>%?|vEp*jZ7m{t87&fsikrSHK}tAtT~$q#e2Bi*|Nk65J8cq%BURS^-Pco|S6 zZaSlMsMR0-@om_40;mC_#-v0EwEB>LAU=vDwr#V~#jSfG3FJ(Szz7KMn7fAS0qHoR z1e9PpCq#&Z@SwsBxljo*Nz&J8C=ehpMiU13Lm1u#QusmOwqycqG4>WXDTtc^=S#8* z7#n~>o7SGu4shVp%jL&(dM7((kJ8EA3M;FyL}f%@Ie0XA~a*=cFn%Iqdee}k}Ah8|VMnU7?hbryiES|{j3TT(Eb1hv_Zb~DXKX%|*C zDU0L8X(D@)6#a{L&h(UgpI@0YD`0b=QTU+K-Blu5NzlApv9Av$$#%~X?Ipezl}J~9 zv5ubbAr9nR9W*3d25}{#Q|U_R{{ZiPPfuYXU<>feu#3OEVME6o zA?X%*OW79+Y|!O7cryFYFMa?;A&i(y?@0D8>7v(uAIfFz@LFtO$s?$izd|uwomFUA z9zKMB$X)p;-b_Ohx@md87=bU;)7(wh`%~ssehEY5ex@IRvE0XMeg&@cf;53HqJY%K zFjh1wOda=vN$gvB7evrEfemqf0y2K#V5ihbIE)G4$v;BLk0VXd^P@IT*5kwCi_cLC z?=3TK5O#HfB$*?PGIBfY?@6sNbf0ZbMd=%1e{{YG^&+8qu7ff~JO&jWU4rXyed~J%dg|MnWLXLqZ zzQK8?V-XzO7Z8hU4O?8}mniIV(gxN3gv{UQ-+YhR0mV!aYlxR-|+J#`*6h;Lyv2}(hkYK&}*M_ zNB&;a{Qm$~UphZs z?{oI&gPec<@8QaXFaH4cRgZhcue*6%=hIAqx8>8p-i3vY94x*rZmm%1HmkZ8p!A=j{~ld z1oprDtL`QMu#ezWeGvY$BhhO5JWtu7;tBW$5DO6;1GN-bwJ#!T4yj;@)) zN|Ahn0x*%EaKxI-beEGCYDsj7)Z}ri48}@^D6T$H$Vr>0ofl%>YAa4q5+ zL$>}23hI7wXoG#!=!l{fEt>e)%ZmR1@Un{^{{XBw8`u8;_iNo@4#$1|G6V7M)Zl48 z7+|&H`yZPB0DIF%e~y%$rNaLJl-Jn%`(Skc0F5RFng0NJ68Gir{^SzpXnkw%{Mvn; zDZ@$c?Z4nJ->)}Q(1JoulHUE3L@V1MI5|{1$my;!^k&%w-_+Oz=fQ~1^2)OY#CxPE znWR{kLc=*xLnmmw&yc{|>n$qeJ|K^h zCMq#iOi{aa21aRaE-!L)KLe32bQ~St!ezg);TS=fHVL8b5)SKrLF|`%Kgxupks^XH zlu1fg$Yufm0L>wfwwULS=_lTVCy@UD0ITG9z z;oJ9$swe*d{tQPw&+Gisb#TF`&PXpH`c@=!`MbRIsM05DZrV&NncN$cqLt5#xBK-}Sfn~Qr4iK+shV~T(ZuPjO z?;M2#aeNDjP4*-E2F&~mEtXh0!+JXv5i&I@M+KP)Om{&$o&k?J4a_fxy0e~4cCpNf z`6JDc_7al^{UEelpi&>|1z5Ks{oaI&7*U*bnla`m=z9)~1?_8fM1*=C4bXrk+c%Z#g2hW8K|*Bn-*$%ls)? zvewaxhW%G>JE|WC~oW-8d43|OxYajL}r^W$>@NXxH%sJ_t0bd(orKXO~{uK zBWL^GbZDJKcGn~1l4)LR+!hQvbSKSCjhtS?d0bbOXMeS%w8Y)=(QL3 z^WbuMw+Cy#7RJ8!(Lr6_{+=a26Tf=GW-frgrkS(Ve7D*P_pYh0^barERo=V?j;FkB z3P_y30HjyOWuh(!5XC0Q{V22mFF4{JNxZ6>BAPolaSAGZ*BxhL%{{R4{IEfIKXhhCF%U84R z1~GJVDvX8_q-W{0FJx*zL3|$sI*98?;t_&mRpbh2Es~-L;mahJg}faO3W%Si(s};c zQjwuv)R>3T$J`|Y0xG@fJNIyD5ixNnVFV(6*b=M8hDieT(QfPi0KSaQ5x>RTJ%9b? zgAe=P&PB4?iO4T*uP}o9{fe4f`}zuXy*3u9$Z_B0iBM3l9%n!nt zx{s*B$=HXYW+YEhgNH+2aC&i(Q#4V6OXM*4j`l2NGzbj*AuK_Kh@}w}rz+&XNc3kY zZY)Av-QdZT=V2YEcaUY@eZvvkTplE>#25rjkrAlHyu`Ffte~K9c7<}D*fO7DnIwkc z9t&K;Q9*xWX1M5TP;SulG4K?3!J&p&$p;)S(h^IHmUf?*VDdH6797cMg51AQshkL< zlATrn$^)M7;Q@9xryt-98$m6pHbx>#MFBP|C`&5jdizqEWh$Nl!J zLuud5Cd1$FZNZoJOx}$F`P~BhPM_OqDQ|s*>){ne2VX+3zL&pTo@Mm^0P2OiQ-@-A zPj#`H@B5tKudu0QPDujLMb!Odbe*HvkppO%Vj9i{btq3}O^3-r5TU{v2gNqoCqw!m zV=sXi4s9(=okGA%2jMd`uE-Z)WBCR+ZvbLK`gK__{{YwL`$F-($Ub3%04@ok=_V`c9>r@sR!eQH|*T0O5QgQ~i8B5BIyQI-{AHj!Z$46Z#@9 z3r{dnm(*LrM+i#F_`{?UHe2Y~3=@JkVG(r_1@}!g{XnW@en=k(WgSW(Un_uIwJ9+!k_pjga z?B8Y2)ON&crgwAKjDHNFaqst?Mg9D=z1`a8+uX*ktu&|n3VO#K=?TiG?|7e9{68_o zeBTY%``-H$3*Lj*{{Z~_Ug7uu0PlZy*YC8aQt+vw_oXGR`pL@8evR#Y zw4?j~09WMZ{qe^gk7f7=BCAY&RBAr^wBYe)N2eG+A0Pa&L58#5pZ@@>_48`GOY^@p zBHGKJ?td3|9!Nj%i;I81#%0U@0IohS{BP`R=1W97{(@;+&hi^XnsoOH-{11HCP9$_ zwha9Cx?>(@z2ZqL%QWfsYq-0_a%M$eLun=F>>A^sFL4n9i$S|($S&Ah#%A{HDH+tf zgr>+k08}ts9CI1~4oQgaQ(_GZnn|WJp)NuI-@I&^U;u@EW9WnGF2jf%0;#1za=>cpO zPb7I6og`S{_bWT;%3zQhUOwdo{{VrhB?mFxL7uBs>YwdIpF8_|{>g{ux4u!nr1;aM z-V-WTt@X8=xr)D!h@M~Z_bI-??dU%>gBJJRS)FFz=v4mu8MKam^6E7AzvAEf=WeS1 z072~4>-YW!ao>G4=$rShpzcT|^P+0muC;QatNJs1W z_|(7P+5H!PWq0`0#z(8KjXb;W-_zrEY3KVyw@mc2QP1x<3|>Q*^zlj?Z0%mr+PVFE z+ksX7{{TV1KRy!yhx}mpD@xz4eFkx0HXniY2@ARxGX4juKojDe^xh_wZI=8WKM`U>^gkWj#q{k2BJ?TqEHWO?D0Z zLk)`&d+5^oWuoXL+=!E3A3%o)$(H9ZBOv#-SllPnb;Is7C7}vEW72KX?&o7HT6Ue) zJYwZA$H%m)){Kno>;yI5#p@+9Kb=m(SosV_3%t3}Qs)GZREO*bQA^3xu1gM@&^e>{ zWoTJenq%lZ%f$Zx)$#^7r{qCDVqz$yw#AMKg6BBYe+vDNhbVK-hu81l$Co|d%{#5> z=k?@I+&;Qn(HZwo{CLne$mY{;q5b|l5i{%m0K-ev!n5C^v$NmvM45gb^^I+>%b))M zOk+&J!x9O#PYNMveF(!r$wE(=8P zbRU5K01qS+MnZ-iKmBB$2{pE$54nAOMI)i|MqAj2dA^6)cbp26`pjH~vi*$skE=hr z0_9u^y<1-Oi9PrJsr9`mZ}{aVv+(Ku^1jcWK-C_++>`$P8e8eC&hdkSl>2=BlMvq? z`yc#ae$8+75WydR?wfue#C_jMEFzGVQ4aLzTpwC8Qp+O;)A_2ue&PF)m8+(L65h!XHWGA~{vVws;NYTAf~CjrcJ6bfSR zLZ@tq;)enR;|{t2#dDOLYve&&tZd4Go`|8bqQMPq)@M18HPcnR1z4vzc{{ZW+7(Pk= z0R0Awu)q3OYX1Pm-TqKG`T`8jh4Z7PZ}}Cl&i??vml%s!{{T3wOzfCXPh7`SfA7{C zoc{8C0w;v@HOVct8>3%!4S)TTb&PAmWzZcUPO`E{x}e0DLm7e`kp9GVv+gp?AmwC+ zcNti3vSUCgDSO=Pm>`t&~hn8!>1zoyI zkuy~Qq3=UC=ii+$UE=#33{e-7r~R5Kf2+=wkK~a&CDUh`Ez&lJqQ}nAj&w9)lh-Yx zy+X&Hf4Yr-f4KhuzO(-TN@%s}yu5E$^2`nI?JdRs00*Ck(>nKm-}+huv%UOh3hRFq z8vg+5kEh%*4?gz#b5;j?es?I}4tgj50CU~#S6_KXkNW9FP^y$peQ_CETx^6thDO|W zF9A+FR0gz0>*;{mi~3Ipmb^(D4wB$Xv{{V^C$~$78_@ZO~0P9tJXHC}s0DI>5RsR6%C3ttwbyG}V>HG03 zwa5PeX_NFtBt$Rm&_KQll>^q;-@aXIy|U8wKl_DpUOGAv#+Cm7zxD#mq`nCx!~X!E zzwBk5uQ;4Dzy6U!oTFj1kaayCo0q2Vu6hI)za_v#Tsnn!Qa9Ry&7*b5oCj#Anth1K z%4*i|@BaY)h$;Q?5d~jT*$Zdj*xI<>3{5>B5T`m|szNG873M_d>^3C~(3-DBYt0gc zrmdWH?_t#~n|)R@TmJxU=aonn5ej#8IgyUcuE$-06HvyoJ9H%Ed-x{r^{1P16Ic7t zS13vPIHn-#{P6T2&E3m&^#1^KLiqZ7>PG8tockI8_w`EI zzmKq+e6{JXoq_|zMY-~RxI*lDR>l;2MKkG8<{BidJ9f9TP#&-$5%_CuF< z$$4o(dLqxwe=d{Rw6FjcsdYxO0M$pp~1akXtg zA;^oo*d{rS_=`mq^T9!1NzCg;&P`IGk_`;WFG8dzxh7piVHYxV`FvudTa9}jojDdi z(m~CjmmxypCa{bG8SLj$rPBA`)=|Nt%5R0kgWs}nw43@zZGZ2Tq3{=M@Pj3){{Z=x zb_wOig}Hnz^`}2)*1!GyEdpMD`~Lv^VA03=a1B`T4L@Cg(m{mLR#YqHM=b;CPGG+HZEPFq|WV;zSg{bU;B~;x8;YOPrjCv2I3HDFQ~$w zvS=;k^o-d|EzZ3cFFiagn8}`=%Q4WL3C~hZe)1v#P;5jooM2Q1ce|vwV0T1;Z14s5 z1X*zrln_>oq3OxlV5J9vD{063g=C6^0|8}WQ%Yr<`hvW^AWXOVN2RX+0P=DW_5PFh zx6|s#e=T30M#Q(%{{Zz*e?RVrkKcM+#-INHJ>BvBkSrb|<-IN&^L~HJ3x?K63^zXg zcCFL(Dv@p)`fE-_^jZG^k0t)+`*>A?Onv}EHmqCw4pGpBZ8KnbBBJ^bB+!Av8)i)H zGuZL#8G>EVyt9GpyoNvxk)yeiu8Au1q>j&{G^*D5fqpdq0H7bwf}>j6q|}Xpwj^Us zBun4^?T21OF}{}>)3O;$TP7YETMEgKVj4RPyb74E5Od49^~Ha=M+)z8w!m~DK~K`N z>pW?uWRPmz9o8Y0lPJl#jF)y@MdoX!xGVctU|0~y3J5C0Y|{!r^&Ld6+DS>D(N!9K zX&+6IR}K6p!*=^mN6B;br}HcS06s|SGxpxGdLQ)Z4Eayn4H0kC_>DHNZ|$BZ_-6kA zKML2S?DacNA2+CSw0VB3G27vr8Bd#k##oa*x7O8LIIwMc{skYwb$4g-?y|yyo5%I+@8^5+kYdnyTMt3OVj5M z;Sdh4ld~OwM^yJ61Ggm#cM?9KUcTv4x@>!iW7IdB9M~d?;8Qr@zoOe%^od;Wjtl;^y!F0P5r+i~j)Jgk&%8_2t$_FPlBZ&%JF{g3Id4 z`o6E)KW|+B01L}LpC4jHC(if(0Oy-nkJ8Qx^si6nZ$*Z!bigAi7l*h@G z4J|WXhpwgbz}%zWMomI^EXqTu)FV){y`w3*lLE^g`TbB}yp0DPZqNuuNKCNnJ7OP) zz7GV?K7)U2+IGDE0NRnkI4j*sAH1;7?mBc2Nr)%+BU5rWd`R#b3*Cm}(ZPO!ZUTFU zg1gkg5gmM|Sg}022-4EtPed?fboe;KjXP@p04SBPrS$Qp($~P+56Fy&bp&_U8Z~=n zH3}A$l2NlU6~8kg%n~t6ygj7w=a;tEpZI(E)Sun{%DDU4zCZr}=&ad3OZJcL4d#En zk%c$sT0zqMQ8rIWwz(6KdMf5=To z{YTV69vCeaxLfo7T9}w0QpkVYRE;i%Qwqej@C!wwwv{BLOM&zlvib-&3gG$o&{pb# z?vzZbO4H^>V)mMj<$_>C7{_VWVD1CToIp_C8)5K6@FX>U5mo*0y|??M^fGaCJBdzR z!TB&`ss8{=M^r z2v?#y;jX=NqzeW6>Hh$5KlXRQ&QdK$`2Ihiz4^cY05EcQyPO|i;A|E7zC+ZmQ9R|Q zIR3Zt+F{mcVE+Ksa`lduleR0+KKH?iWBcqB9K+3x`aAysv%UR+fPd%XHjYR=D97(n zXi7iYAMJ(4v$(-x7{k)g^u6eNFY5rd{{a60l@nyka+Oa8Vlp2;p-69+cD5B~fQKI| zA|}?sG+DOMp+LETw}K{Q_aul1Q7mJ8FB7>WLZ_aCRF)6fehL>I3u5Hh5<->APogFb ziMqa3J?KPFbY7zf#&oO6nj*$2$l-^P{cQf7uUBA|{7#WagK4`W+@E01yyUhX!vWa) z0AH%LNaCXIny7+F#R_>8dk!~|`A=gK1>y4kQbP~F8Xx|z`mK)#y!%sezyAPWZ(sia zgV%45eOPjW{r#Ht^2`4KKCN}A-wHc3bN>MI@aTWJNBO*2>)YuP?4QF#yt}bKiFR52 zIBYvENJUwq4StmACL&%mQa~q9dJ|msNj(plh`pyr_sdoSGl=WI^_&n~Bstv6v6G2{ zWCQ6gc^dx!_Lk{sy92-Ih%C;&h7Mseog15ickn{znBoRwrkj+uBY1|KDoJOK;`)e$ zz9dHAdL=8a^dj0qa5qGYotSfFN$I$%#48w~nP3z^+k0Qvv_3p$0t!osjfvf!)=a&JMcf1hO(+CE0Xibh1uLjuu&)L<7lhz zaPQhvwO+gaFuvPJZ7*Au$=3cyDET&P$mBtW{{TX$3PwAFarGYzsP>51wNwBGF!F5wm^-;B{7tVHLP0jKCwC_@^RRMQx!a>fg+IA~Ed! z*K#z{{*}ixdh_WxBm9E-&||>=0Oo(hP0pEA)WI6>KunE->~VY`@gPk{bSm1 z{1u_EANx>8zdz}2h-vCIx^be$GJo@sFh_IV!Hs*xw++p4cm*^$cW~!Jmx%lyc_c~s z=W*Y5e@02r9EE$E4@Zgt+h~jF9sN>Qn0j_}8fBX?Durahg;=xih!}2!&-D8UrbNh3GXc`XWeYieR?py~yOz=qyS|>2!&rKc%f- z(qYpLpXf4WMD6Cdq54{`(l0Lg6s0IatvJn&t_#P0Q?(eKx1inR|5z*CPHO%=;~%Inv{JUas|WbLwGdF^Aby8v5PQv z>%N7Jf7)+*eCVx3r{=lehdmClk$-yX^u4)!mwvhd@NZrJ0OQ51A9m57p0X_lkAJQ` zV25vqyps6z-&g+ttuu`O0QRk!qwlF}1o&gxOZE+!!#mrL$iMP4W}J-2`$;bc{QDL0 zq`g4ej>4lHu08{nS;IP{pbdVSAI5I-nL%%5N*LhgiY+#;xRPEagZu{1r*=r@g!ew9 z()lM2_I;dWf}y1#mBY{R!v_S>WWM!-n+1w+Ffr$nYxMiED>9>dBRd9ZGVu{uYj!M*Cgnefk?(jHp*KsQ4Uek@m8V_mD#ch{ z*KzlhjJ+jinQP^L_b`PyYb?=rYCL zfsgt5{{X2`@AUK}7X$nKKb5ooD0^)7+ADgjlVbk>`cQe_{w>WZ@A+5%0K@+P4BdQP zH?#N!OYerNPk#saLS)JB{{R6!4{vVaRCUnd4gxH)F=u~GU*IOzU`MD?D8s#kI26C~acLvvRqa&3$3 zs#ICovr}(912PPRjBoE-g_)A>W?rYe179OtpAtu*-ugka5U5>~t%jz3C{O8Vf}y4& zv}oEzS^ogX*(ItFu>@I>bS08du1ZwKk*n8@9N=u)I(nTYyPO~w~PM(U`4Q>(W}FD@4)+4 z=MzrChea~5B4dByAGH*dT6P=K@JOi;Z*?4UG{D;WW)pEJOJR5_%e0pR9#=qLY2bEJ z^p7#3Js@JRIy;YoQ*1+#Fe+^tUX*+-eE`AMNUx5%B2I#_LA62P5$qEizrg8u+U5i0y+@-Yjr+_a!@ z^#Gmg?XIQ(OS;o>n%tFY-6(P6EGw_usKim$Q)n0P04rThDWO z(TCYJ{{W<>>MJdKm90C^v=aFPf22(&I3*5lb~|m1>8mD$^z|a+q*DCL@JnZlGB@!< zdC#f%F^_{S-YtU9GA`v*^Sq6kkI15>?#YhEJq{rUZf7|6Bd;==o$u~wo!4k;I%`#KyZJz~&xK0(7OkIueg58j__4-q{{ZleN%Nx> zA&?GMhg#arz#q6p(29-6q@r&4v9vN1#6kf#Z3DeMi7j$kWW&Xomc{!BFAN&_7#v;K zA{tZSVn0+e0tGWWV}S_~%jz`&f7B$XGmey)wl5yiuu~NQQ6lE#_5lPlT?J2!)qFy1 zU_k!$7*9?JwFi9Y0ija@X)_o8*@KZ<_0dQLRlxCl$cuhR!xe&V(zzL7bZtu+=)H0C z%J&}F`y=Qck?$X}Mk8eJ&PCLv_(pY?{PmO-E56_GD&{Aj{?dajyYpt>{{X?ghyMJ= z{T#pZ-RIh}o!`A%Q+Ds+Ru=EZqI=Kx4ctRYw)jXbKm7}g+s@iW>^HE+b@C=LeoDWn2)M4(iMA51o&8-o`? zIIkT9jWliICs~g+zW)IG@`wKb#sgZjMSuSQKCkQl0PEyWose6fwIwtB?=qcdKe%uI z0QP@H$M;z83R2ns0Kz;z$X~+y*u4A!8m7YhtTSW#{{Sfyw9Eeh?5ZNEJI;9$kt?^6 zOYa;wtM&8HB%MQv<^KRjk0<2C-`XXI>7@OmutX+mW)o#eHtssB8)(_=1gNc##F&w}z5mqD&bB2_>+-hRp6eB%x_9>*1)I?W|65(l_D*ZVe}sBDoyaQCvZO zWtk&5XB7KryMY{}Aqqf39h`JOV)T$}E(O>+!G37Po2LGsukC>;PQosK8mZLF z#*uT|B&J?8emJ~BI@04m1%^3q=v_lU^Ug+(f70jw0O7x%oCP2M0DmhxjrSC(d)_dH zd;4=5YX1P_srW0KcCbBs4tmx90RI3st6BSgkVF|@_U)VMTR_vah#G1JqZkQs=|A*9G{qokaO!YCUP#R5@0Wtv@NZZD}qbfGWab;kqot`ZCHnFC7&bJa+WYit{nGPZ1C zFOs#Pd@~h4ZXV_60<&7+0pg8rj++nt5v|6C;5E`m18S)?qSkM)3aEez@oNqZ#R8V` z_YkToNSx$qa=MB z_w*QCy~Nr|k?lt%MZiyC#a)XmG#MLdHoKjM0%rEnTU*&09;`Fn0hXcF0!hz;I5-?c zOa%4OgC6Mvx<@o zuOnxyRXB0*LJGQ@UJ*T?%3U76Jl+w1I`2puS9BDt%-)n&RR{{Z?NX|J^Y#1%L~A!RxzyX+;mm8C-wBRXw2p?bXsHFqEUfRruW zi_FqjA4_};iD))^4{8WsI%U6MioXM`4dQGqgqJ(^JaLwR;%Hibx&Ht{F00hY)(C_j z{fStQk-!j-dlJ;TqvV|b0PV)ZxAJNd1Q<4)axdPxO=DJPMiLf{drzrGnWLVKL~Zm* zUAu>6x3VZ{IlJl}h$1$oZDxh+C0FQ1dKe`q4sul9H%Ar8-Kp%O1gMa&Jye&N0F_83 zu@JGi{t=uppQslx#MryO#x7}tX=AmTZ-$<7YfltVF0zv;{NcP;np(e|_xv$;KZv-0 z)}*0*)jS{X$_Xv`*X@Q5zx}XuyZ-<$8a;E3)c#<7(YXpyGDyX;-EzjcS@bd+v=aAf zLtXXo{{ZIB91U)w+@-oD5dqSC5%!U4{4qW?K2+ar&;HY+ONl)C1a{zkgf}i3V&qR} z0+T+VBu3;K#4I4H^4 zA%shgi8+_9$2k^{^s7!p??8ig$(r5fD7v?zLn5>*>e@3`oqx4Pb>oQ2DncRxrtiTwOzkGp$cz@6>&lr1C&{pAr)0X2)dx4bGBBOk`vduH z$8ruleo#p-yD_u<$rJX{lhsM8#}IU&sv|bz`|*`Q2I|7NAopx2qt_&vX&_r)9LIb1 zMNOB_?Xd24vOM`lbPR4-9bx=cF74<$gY`&e{{ZbS-pI(l^>w3{q@}O>qRBi6>Pum> z9Wtyvkv8fntf1^DI-d-Z-6XzD{{X0?p6R1+jlI9rFy7jJa*c`r>P$zwk;;F9jT#x* zZ7^CaP?32^M$VC3XaXUB&n0HHx1e~fFpKU)l7(yi8z+&rqtP_{=g^PVNkLL~F)d3LhAL-k%mGO=l#wH5BPn+R zlx(SP;S$6sdhyjy7XJWm_<65`ESPN#H8wW|OYCh+P`QzkCjAcWE~595lb$_VFu#QE zPJ=x$;*#xsLB~D-zrU`Y!CgK93pJAwD%W%#XZ=NNf(q_SE^o3d7^_LNA&Fr2OF7af`vO5M&w@gYpFG%4(30*Uu>Npl#E>FL z3bof7r!lD@PlK1Z@+v7EgV7jF)^3L+t~-+1EAIkO`53-0lMTnPK*g zcCtn_6uft}_x}LFj#?k2Z`g|3ljlK}5hStjHQv$=T#26dIEb<^d`ZwDfCMwF6*rd3 znAY(Pgds?Yu*cbSxOy%@ ze;UXjDLaVEqYeY4%?e)cc>FWb{&XZy%7A5{IGN!au4ShetFs9~I;91WJcKA_+$Z^Y z6|ImC5^<3gOS#(+$_xREKT5PEvY{9kjeHiz}?ue5~5bn|7% z?gzi_k;Lbu6KN5S)ouEg8=iuA#XmbEfXdDZA{hgue}PxrY01B5AV#aF+)RZ$6ay|? zbRn7hm>+>W#$Wc)m%I4WN&a&Ix7di=Y0}eho9gH^wd8PFW9LYJi6R)ul=|fjtM(Ci zcq?&F*c2q>c4ZgnjlMmEnGBL}D8frtk|rtgq-5x=F4KX^Z6{F^oKimm(i`_#V9kw! z+FnEb6fOdj{KMM38Nha*kp74g%U{Nn0Ni?KqNic zodbbh2mRU#!k5vT#f(fN2(njGBa;+l zggUutzz+8!nQ|%*C~hn=K(WMWQc4$Rfqejrgy7i2D2JFXOa95iwDLBecobTg;`7qq zNu+$?P5K91m`Cqum-9^U#!V}F-NR^zg|xVCMW48sy8)Noj+M^I)(mijrNH8gk}pe0 zZ`p_mWw@OLc7Te+Sz{m)O4kKeXSkUj;$~*V)juOsOBvqV!Vdi^Z?u=@LxvIXNx0lp zMFlvCHu4<=xSg8zp-_6rsJIY`0k8Ro8BAR0qi=Coo7{(yu?9lw)*i-%?k1z(Jr-TFh&qEck?QOS-MnIoYpYtsbeaVOA% zixAl~4~K7(2Cx#D&^(zJK&<5iw2+j>_u*Ev*vv*@G_S>zq2Z^Usyvx@U|307mcOQFEWtx4@H@@;a&FM8cDhdD<

2~i7t$~6ckHquahO83`W5JsH!d2SzS7)D#$7bL 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 W%nbf{8D8VLI4(2$5+_LYfB)IajlFjO literal 0 HcmV?d00001 diff --git a/test/fixtures/ean_extended/image-005.jpg b/test/fixtures/ean_extended/image-005.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5cf81a7e41a35e32e1ab40e971c400cd771b4d67 GIT binary patch literal 143483 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Μ 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%0A@xmcW8@JeW&O3bLbR zsmxw>guvP6UpF@oX+Wr#=dN1#f?>-?S3SUi0Q)Sfb*CD=OUQfpyRS7>;-bL>SuHn> z{{S8%a{dgnK0D`7NA^9M-al?NY%1A%&N=pnC^(*6?-7D170a&IFI+-&Q^dF%W15Hw zKra*kD`BhDyoAx&b5tQj%0F2zHlNJgp#?Yw=-=z80Z``q{{H|hLm+voZ|9%lP;dnt zZ}$>{fXgcUoImagh+`vqi?@A140Z{pxcY4ssZ@St;2q>Ci|8h!Ky|EvmX@-9NMNuW zH7i(_fO*&^s`0n2&67%RlFq;#JN!=ruk@Fc3M&kQe%J9B;k<$uoe_Wz_$Y!}s<~z- zBz*@FnUp9caE^u|2bZ9(NmjNF>`QEu-HW`!SP;A6vJC!!jF~Y2mA>X08iK|H%p3yy z$Nq;v6J*Dn5xrljTgpZJe+xYhsRMI&}xQ%8a&>Jp4uxX5<#v z7g!xkJq1zS-E_sMEl^B`6<}b3)WYV>o{_4=K!dCj8=9y|jD!f-jv$tz*eMuKbRo5b zQsL>Rd~2V1u^x2a6`QXahJvi(ps>e(5MW9bSwge?LWi2;QpaFztRi%J7T0Rbc2PXP4@Bts+~ zmkTEsAyj4upOLFvz03n zjE15hA`HWbS!svd7YJw+j!>^q1(BOFL{xAHwnNfTYc|{iSY6f8ZE981dY4C!;u;0o z#`nht+m0e_bi=^jshDho25#ur*Bvr~5T=pmt>>QMOpf&#f8Sh3AZVdG{(Nx|7!+L& zKRNuzCvuvT$V*E&twgldmgYMO>GK>Y)e04k+~<*qBBx^TVDcM?Qi#B$&6nXS10(Fu z?afR$8#KSUlmhOn3bBcR9@33|;tjNA0xf&_jw{aVBHNs#00FFM_F^ncSvIf*SXs^O znA99cz0vc(5x^UruL`?QVzC|qrR*k4rTU7%Wp!`vY=wsd7grpVw_X9>p<)=O{k%(U z6;+Ild5KI^<;sP*)?f^)isS=+-_-k=O~0%%gc0}V{=EZDv0i7OWF&+P5jStuVI1E; zOs?fMjZF7f?-5`VVlntj93rpfFl^LzOP_XHMHI{nS$!i`9L{x#Tmm5E91O;T%urZy z)VaXj=$SYh3?WH&^!u5Ffn5WAt=3!jB?2~PHkSEcLPkbSu^qT2uB@n!?^6CDz9%o z(V+vFTG!VRw#M8RfoF@kSFuKpn~$nko?mCcc*{_NrQOPl-ClL5L>QYPD(uCQ_d%wt z_5T33^SNTdeq=M_&3|&iVp^)Z-~FCK3u681Tma*FR<-{CI)M42^43L<%JM@O8iv@s zE<2V116*fWCy+<#g9p4w?ew2>14i#WYv0U3HXZ0(mCv-%Ki}k$ueeGW5ca# zT?oa!4ADPg*$Tx92nrv@tH*OC4uglO!uM`kmeXUrneO{MR@?=U7d)m79$ zTAh2dh~A0fOG9$(g|1~39vfr=wQ2c`19pqsIxY_YO+ZSdF>!=0zVSB&3&}O#&peo$ z5HhT#X!!mkfEmmISM#6DD1wF!W?$9k1a~j`XvcmzIgLUET_6IQHO66(&K2tU_J$;p zlzLr-#}I)Q3hu1~jv?s#smYXAjtO-xlm_dzg4WxW0#7X(%;s2^ar^qmLB>*={{R;n z0B1OP^ZQehBYnsB^DuzX>q_GBls=`5QFm&XqK;z_+gMgdF@yzY5BLFcDjtAxO9Xic zc#$-o82Dx!%=a@pAV3s$go->%An~4_B;-q!qcV(WL%sD58QgM0QZi4G2qZ}3X}ByP zg@$Lmdrb==$;_}4qHQ0NRBQV7n=2IwUd5}k!m_Jy1m_o133*TInbTp;dLy7?5OFim zY9R5^9zf(oE9I05fy6N}QH8(?+{pqK2FJ&sv4Ug*brSk4+!*=*J`yn!zz_kicM^j_ zp=+Re{{YEZj@OIcX*jND8JzhL>Z-8bZW~9+2mb(lqKXb*t>XIMa1@SGoB2PPngPWI zeEs?%h&p$DZ(I790u!`1*<71%Fj+BIZ&ZbcWcNiKV+Up5)XzgV0WVcN87D|g!%XdD@!7-#^^c2Niy5)$v0)P#F=3}4@MPGXTsFr4`tIt2X zhC+juYPX-~q5y0S77@k0)aVs(%b}{ryK_JS^+m1BY0b(*p={NPGG)8gB||PsI~28J zT|;|VqA$(Nad?P9wWb?)-&ZhEbE=fpR(#``cIztfYRrD-UUH8_s2eSTs_3k{bazeEEdrxRZB`*NlMr(E8<2m~T8p?5J!LCz)M4xihWH4qis z1BrPB`cRRIM=~t!^XeuCQ09ff+Ik8IDWY2u5t=-&K)_->!YH^rdIfYn5Kvmo0Ad6= z0ZTy)I}-cQDjGX^gt>y5d_!oI4vfQ*3zQ+dLxXYbb&00)JvrsAAw zT02K0M^V~q)mAvo+P@Nzz5r!zlEV`bHa));ub9Lz5m_z0kWoVy$@brwU@d0W7T#~) zGm#*ylH8ciprBOwdgJrNtgKrn(IKFe?gzxxP<*?IZ&ybg~D z#~2vACgSfETJrz^CDzSe{@&SO5qYxt{ptW#XWkFngg|f>(~W-}L;;;aZYtrlGd*te zdHz!=!(mZs6!lGYQ#gn%HyrDtV~XM*EXfS;W&#J1Kfq7Fsv)%bK9S7EfPEp148!5p zek0l=3y2_k1ghmXH=r0JVGDwcxUn{lgdiYSIeJGuAya#gpavJzw#k-ZOpmxg5urDQ zZ!v=e^DvhXUAmbz=5~4k=bJu<;(#NNSDe za=VJol&a3p62n2<(ack$h5js!}}JbcUm6xS`& z%~$ft2<(ctIp5bg#Hoix7%{6|zZJQ4rWCJ_8itUatF%&386ToUT<-d1Idrh+#R zj#xRle+3X-=t00nftvz8fH)`KdQ(S)?JrDWb|=sUVjH`Igp~yh7{2c@UB%#o+Yzfx z$1M=ZgqU#z%r?weG)k*!!(EE?;?)`41G%x2VO1a@42C z-Z+9R(i*&P-*BRVLEDc%Kh*7t>|P9O;$kNZ?|Ia)1(96suiWZTAj7I>dv}g`lz=L> zY2fC97A)>gLbd+@I%Y#ODsWVJOlS>nrNs%cJ_Mvp*?4yw`a5U|R$ zFVj8du?+_KMt4lzwAUc>E!ay4-H~j$%CIs|duW)m1w{qZ5ZQVz^b69_n z*0b-+<1nO+En0khb=0MdmK0m|)&0yY6n1Mu1ztVop$>QV-Y~40L7-WeJqHJ%!!$Wc z`hYH4EM5@pZ|R8a`ciWGru0EC447XC2X!@tLwPHAKE$ zt@CCsR=Cq{W;Z*|F}(c30%|-0(q@*adYJ)Kx;f03m3^}>DVb<7$C?Yhkpv41ac)3u zP~BC*a1+%wYNy6!w;Yd7OZU0XHg2I7|>iGXSlj-D@hE=H}Uy zva$}DKWwaxe{{R30f&_Y9q|QA9ycCxhH^W)(su>Fsf>h_-+fbP5IK3}# z3{3!GV;i^}Dy3<3Q-9pD0Bg4z{riYu=ZxQQObT8fK40c$MjEqv@u&dOSmp6>~xq>p$1b_W)N-ujdei4viyrE&JYlN>EAjI~m=n)+hG3 z&Yzgz1?yX<7nAb1nh`D7=fu=DVMiC^_^u01gf2j^a@p>A+pP>z<(y z4bM?1RUP$`R6^|4XO9@;sZ|wOT2KA-ED%)8-eU)-D`?RQA+$cAT|dAe2cSm$B`vhI z!`8+-*9kaUaiZ#P?-ub4LA}ylR!7BSs*PbAb;=_^mz><$spm)&4pWbeb8{sDv2@-* zzb(s6sE+y~wBN@WCL}@6wx;u18IESa17g8>-EM7C%+*b>TSY4lYVo`ioT?-nX)%8} z2?cI5uZxwv7`Uk;YKy5&Uya5jN_x%{hGP9`;vD#h=az79bjZ+7UBe`d7cgG&71ZVe zZ$v?A8HLPy#13;C)y>9xhi9TC&T4Ck1c zAg&HYU;T>m(DZSv-#-)H3`HpZ{$@i(bK1YJ&xv7>nQt|Q>G7J=0suC=y4JrP!(>$s z{{Vk8A{N6oAz;0(9dd2HJjzH0_Z{|c z9C(@tnM6hBfg`2e8ft!L1RJ<>kKc{YXvrSl{{VZL7-7`&m;U&d5*=KBKeo?!19vU7 zZAC;n>2;d8@-rTZkHOF9QqvFBuTs|dVXJXe7zQN5f&ZYn?F5ASRS8{Po%NUIniD2o7SaH>N7((+eA98GQ zHHIV%2En176~(tnl2k*)!t9#0%~mYpF^4Pp5e)4V<;1k1Td%XXF|K8VR8*m0qe(ZX z#KuF*Ko)IbvrckGxD$M(Q_$qHjHnswPF8$LRgMbva!y4jktOH5NdW?MS;ny!8C zT?k!RbDn7|-1tu%%W4{;^33a3h=c}3!sUG1EIa~p zN0~t5d=nmqA4Kd2&!IZ?0q%d10Is(-P;g+!0x$KskV4_Xvm95se8x5c zTf0Hw)GW=^&Hvj6dcUFpZfR3s15m;$ zZcw9y!)1(B^lrP100Q+1WcSf-^K~sim!DEQCnXasz{d<|&3QFm_f@HRjE}e$i(8p= zS-i&uTgvYOngsWbCTUnJCt!np!~j~sI}9!85wcqRLdj6)%=Qr8(YtY~j_sMOFA`~p5D*=0!MV9iQb={iIZH~F)#Jez#gIV_R3Mmha z>JR{Ypq4RHBh z>4+>MWMJz|dsO8DGhWqqy%T6CKlwHJnE2m$ifLL>UwE2;YJj;{dLa#dX4)F{DrSXmG^}Zk|QeMx+ zrk*dmF(H7OzESh5^QZug?-V`-)iupa2~k)Kv`TnZ+pcC}T9toWTHl+j?>NOolu`xyi2u%pwHsh~%QI zT-@T+X2hv#7lPa?6~s~~GZylJ0j8U_!y}Bi$;rx zz|MkOR4aJP8Hht1Z}#OwU}J#XU>G=|W;WIhOVC$r&~q<5UZ$W@1-6^n4BqMtpf%Vh zHXZolq5?Zc$(p|z#1jdVEpu)^ooW~m3*GtoskCMxOTXMkfKa|JtU?g$4;AJR(kYeu z%vco)jvN^H$K2#Wxvx2eh#bv^dAC^ShyoD>l;bkdV7S&;&Y#3B&5Og{O<$eOhl*yZ z^OoEBmogZ&cYOSDsX-@3-*UP3m1H+wNr=X&bz=LU`!E3wcbD$7?NtRm#&)ZLk;Hy^Kz&6*k(oIBWuKxgH8@=AK6iE8Umq#VE35qX_&upF? zKOfHb41tl%G5~C@$Fbq_2?)OhYk76tLhy*7NM^5g!-aqmMQtqV_^l@UHB!MWHx2-{ zt<`6ad6o=IY0G+P1e^}H0t7b;tXCG>GNFbuvLi}o*_E8*%Q#R(nmQSU-f)&cA%_e> z5ep?%lw-_L1n6&X&EZA3dWI|;cAzby6?DZ&4dPExfG{lXJOVLFZ86&%qLVv@HpH;> zJc>O7CcP6QuR-+?0Z!mGlr4<5VVO5^K?jCqD;M#Y%E#;`+9l?}aZYjj)VQdwJzl?9!;!1t82$Q~pcny<%nQ(cM<2V_z6>tf75(_FH!xv=*?tEF%Q>2jMbhm+-kcT|L=Y+{w-|Wgd7FXOx<+f-vu`9| zi0N54KLEae#flMBgDnsjp1K0&{2axQFD!QJkuyjd-R>ZTX{)Nb7}J5y7Z3;u!H&Mv zw=)?fKmz<4fVkH@-9i8kna?mwaBW9prV0h!RFR2tz|uB}b-nd{~6 zJ1ZM8Dj?5}Z{{Tp;sK7Y>g^d?VSv)LRq8y5_GWiPR2zC(De7eVml*SUd2Sw}Is~z1 z;msPoOCwC)WtgD_!Z1IS6oI}jcQ67i$o>BSP)tFmP8E^y$C#v52HvU0MBjYI39nTK z_bO=fETOBBShk9LL{N(TO|;-~TFi16zAG8ibh$g*3mC&R*X!Jz)K$r!_3efb*sH^h z>+g=?27y&oHx*bt%`Sa|w@zg+4C3osBbDW`y z`L`0$RB@?{QU$eI?yWV|5kwpqJT__GJV!VmKW%Pq6y5~pQsz~+9uXQd=o@+q0nk7y z$l(r2RT%JW#L?q?GN7(GTfdLDPE4-CcV1#Th=1hC2KCFWca0`hIBrfUuP z#z-#?E5C+v`(kzx8ecq_PioOIFv-I;Z+zA6d6@tosfVv^G*?X6VQUy_I4!~lH!=l> z85`Ms@p#V?<^rzx{ht^_%xVO&fH><^w%g6Hh#;!P*Tw0(O5ZgALKcr5F-9rAbqN0e zmDzvbi>Zx*0B2m|BZm=y14`|uHV!(b`IUekbz5z}298HR6eLb=7;$E;#|-p-YC)ED)sLqJa6=3SSsBwv~P*q)ivg zW~rT43cAc;H@1WX5~*Jct-%O{8nG;ju9C(#1GWXh^bM0Fu&+>d^#gENE$+P&Gqd6= zq{IT(hF{E0KvyyBltNJm07pO6pc~Ji>!_&~zIR#TP!We1_?XBm$!Nvoj^CprOb_{9(BYK&W?)W4M1`p4u1EXMi6elf}%LQ zqmbi%^2-ku$*m2xklA{{R342MAK$sC@vXYI;9MqVJqS z%O$MKVlyyACK0QkD#T7PhT<*8nN8}t=M9$b5mZMC7;yz~Cb^X?I@Mui8m%A~Pcw2> zFMU2D71rSdYu#3ctQD-e#HbCw<4U+9)^8~oX?oO93*P##7`qJ`T&NZRr-L!mjQPgFEH}Uxnf5vie1H15axY6rIOY! zJDSThlK4gpF!D1g3@NmoGQt2@1VR-G%kwMYo|?I(-ns7*f*)_xqU)Eky{3i|+oF-i zorzG4z_RVQV@2aUOkivp@yIajoum)qv+T4DR3VD(b-q8Yu`&l#>Wu#LxlkQ#HJZ%v z3E*GifUXxy1dxNG7W6rjk|;rK!$ej;nL(~0G6g|y*g-k z6lD++5Pm?u@mv8`^yB{ke&G%VgLTe7dYLUo9o)^N!oK7DbV7hIDC)Mw#}9I&EjvqS ztKi3Esp~>&?_am#asirh@enaM0E^@NK#(lSBZp}3&?gPU&_ytrnj;xe2AWJ_fJ;2W zhGA$+Z^yYWb$3}YiQKTf!`);lJ{`l5H-wy~Ju2?Zh+GW7i&mAYRz35$&#J*yYA9(|IL@2@8hHG*!F2&4^7d=MfxtiH5T+IQYmG0zAa` z{{TEOuK*LFbM!N79rwJKvCguva#W((~Ym@W-{5l1L{rx0E!%FjgA#Q zqXI5+&f|A%#2~KahVI9F)IcLqES~2cf-^~kA27-wi>TFJ9n&ZPI{r*`%~p4UXB4+X ze-(R!!I<|l18cggn5EsZ&(tAcO{wbLY{`^!ix|)vd#`EBieq=&3<^!BcyVeRUT;#s zNHeQq!KGQtby$}Wyd@~`>y1h%dx~ify%9tT?NagL5UmdUT~I?7r#i-Ch#Gt>6-^oD zT)_&UdZ-I-QlP>7qTKr>yPoj#nB_=;#Dy+X;71i}L?e)h~j zZD05K>Qh30V_nS%9sc`FPf()m$=-XTdvhGwx3nvYC z5HAwUrOiPbv^MUA3#Q(ZpoKIY)SzBj<5!%<00a|mwLy;BytLh7Ay|7@WhLCX;M70? z#jIt}ZBJl?9Djm|qzt!k!EDXOxHl;XQH@YH<6H&A1?2$yNx_$xuQ5P6n`K`<&D(8+T0wHcH-f4Z{$0#Qh;yW_bSPB?J~JSb+Qoo4 z@~ca@zyvH9M7PIiYkRM70Ah(my5`dFO%(HqU@u`CRy0mURn$NQadBEQ+Oa-Pw=#qs z6Vlzl#u|%IK~_0A>0hr^lQ2Lp{{UD!wAlPcstYABJ^42>Dj|eKaygH^%Fg9ya=Df+ z4VzTfQGzl;u_=R;K;}MC_gu@*pf&~>W2h5l^C_S=DL#jBm=NjsT6Y>8F@+S+w=qYU zrwEj=2&>Xi^dHQj{saKP^ZrBuN|}e4o1p4ndAZ>LaPKc%w`Oc*Kq?!zpMALBh*1Hz zaphUXntHEys5n3}^aGY!sFvXaThC810|MFKryxMP7{7!u`#WbB)pK$g*XjMICs#^k8;YvjJ9)`ClC7P?i|0 zFGf@ZQUXN|D~ARr!hj;;M+qbFOLNJc7?%3L)WT_>RcPXY?JYl4%8cD9y<7r;dZBvv zmh3NLJC||X$ip!LCec3aMG(@NHdcsEXs9F)Z!c^C-W<7eD*%R}nw0yq$B94(4`&7e zy{8y4!vL%t!_wauO&6!RP#ZQBa$F7_-7r)j0yNTZCp*)V1__j}Z?4u>K5H9hg7rQ_ zm~-r}2+0-fCKcFPFS^v*V3L~nls z+|e%e8t>EjhoIb9YEqCD69w9(!A*QYnp3zqjrS6MfO1ra)+`TE*kicNI6!$K#xZAb zoq&W0^9Y5N5D32YDj12+xU28=ZAwZLezsb#<7sD#U4p?eyOyeqCUG*5u5y%X80&Vu z<5=Z82@I}BuQ_oW)my^zbSoQDx^b{-M&aK{ZD^GjCWII^JYVfX=!?{_@FkqmlOew0S`Z4-DZss^t$ToEtt9lm46 zA_j;Nk1vAn$@Wip*8H$q)zVgTLL2qRjtyyBn;NqJeDtwxsS zUl53lFr`+3%V~iz$qe~HA1Y(Ojb8a9fDwLNrQ)UOdhbyXrCfy@uSICXydfp*uF@N| zK%6-xL)%Z%2|+H$oy15D3Q0kfmibLQ%{xW&8mpf14p@buCC{2SzUB+WSEwA4Nkx{+ z9JA>Sp}G?!Hb^~_1w98?%=8_-JdaQ_ct$<}IuZna(*yGwX>URAF*_of^vf?UjnuiL z9(i3VvDI_LK+QHO0n*i`YN$S-TL{3~uu_YHsmNw#WI#vRkoir-O*7D;Mkn0kKmD+ANqa+uC%WY3pWjwB2`XBP5#fGhuF@LQ}L~MgP9BTWF zz!NySuk9j()ruvX;@MOA7;g#3&(t6CO>YU;fS4xQabhEPo{E7(Rdk=(;Uw6&87tw< z6CKji{kemI4RKH5qKwC;&fY2%OUx(@ek%SWV35uZm!HJ|rd~X=DbmkR>%YXcV9Qpz z_|2NBbwrm}p)R1$D42&eNvnc39P8c|-cIACi8w(b6tT=)(XX}w_LW@EXoWgf0r**n z(C5k|ZR(&SO4RmviVN1YZb?{e*|QSx7N#U64Q7Vc;frbR=a0Z|2Uaivkz7ZG8oY7E z%oH4cye(??a{1IE1@-LpZSI@3;KU*jc?S-MR&hmL+@OIJ;(s*VH=Bs0fs7zBa1O27 z_{_#f*40%w)$^s>j7mfeqhootYb?~}0cXE5qb0_yBS_84%;V5ywtWK6iF0S57E6#> zj-MWd0ub+%yhuKFQd)$a{&A(mtrhE;{rTj0wm;zyd5bxns~nl+I&&C5Syy zS=~=C&Gc001Am6OE3G!-VqseqV%YxpyP3#v%iwRl7v3O(#(Kj%Vi$J(KoHO~aZH7v z7mZXh6^S(|!fNv6%Pvq2dR`ZjR$A=pT|gCT_JNNW_?d(rt@xA;jvke!WvUjh#-A`ct|uTL zS*n>TTV0j5{#jf}mS%Uf5XI7bi#D$KIf;N_Tvb^7P{hI|Ih~souQw95J9b22CYi=2w zkE`*zx0>V71QkXK#r`6O0V?+m%hE8Cw;y-XAcL}AUxeg<(n?BsJC`Z{00bdq^PmFK zE^<4MWNc&HA?3O3JpiKEg9O3aZRsyV$oc`A2PB*U?qirsvbVo<@6Bda0|&`h=8iF! z%tIQ;OJ17{{X>XPv(*AXK<_U&CIQy@8++G^8f?i(q(E0m9e|N za}jSOjJ)}a-UjwR4MaBseo9Q6+YUlif}5A>J7Tz|F89scGCu(0_!PvNi3pC{ZXY?K zo*=i8J)q8 z*uSO`kat*Fx~0X?L7ll9QsvJTOwbnY-MLKLaS4>DOBvmS9T3@I3{E*~xkCn5!@Db- zw($+1ae41WDygnz;s;!<6MC`ZOtJ#C=i0*o(crp7hNr$d^kN6dR02%tC2KiV;hMZg zVElu<%B8HCVFiVTRX{(RR^D7kwunN^rIx#R6hQMn^tG?C6OB4Vsa%k54>WOg{TBSdJ zI&*%aK>fZ_w^m=enXE)H3+q&8$>2ELwpaEgumvr1QM}C|T+3y#CPTy{3)9gyHLpcL zsasy0<9(u*K$uqDtlAY3-rw-!w48!~t(;1(3U!Q>$B>T4nJP!|p2J3VqWiIwMY+mv zmtan^nS`MFxEQJ(Qf@SPr7gI)CHMIWK@DshxpU$>Tw0rz^Qo;88^Buz7EADQV zssLvGmXG@kTZSmDw)IX-aVj#OBUBVN&bfp@s08gcdqa?Yq3U-sHXU&Wh1KC#J?)m5 z!B4Q;MsPZ<5JWRMy%|ueXmA+kD#)K)u9FvGZNT*i0INSQX4(;}XLm9H<>WizYm~-L zZ9)iGHqnHDDN_{VmLLSvaLB4<#@leP3192l&<615$OIQazbK~4zBIfWjwk@>IOBS= zSRsIJx?J51KMV(P8C8XPgUFUS!V8AJPf$rtUYkcL;XV|x%hI&h~RibK=dpqV*{tvfX8eCn=<6hFo-J;QB3$ z4hw~AsDUgfX$gMJE&{2mduw%M8S>@P3fff505(4I_WjDnQ<&+OTsrcA zEwhVnn5-!;V7M*lm@>^4q&Imocz_8;+B9PzeXb(%uzB*=!=9rO+6W>;FSS^Q`EdZN zMkR|4v_AQ0PJ4m_wy3F{mF>9#z&9xdm29+3>4Z00G9{>WI6x05Hha*4td-8VNeZ7Ta--dzL5`rDC=+ z4>eb(IN!NOA~#ZE{$8dsf*`)U#T9`{y%e6ja~I{J$F>`|Hadtc4?_Ey>%?}0%0*wi zCazFtQHcKlcqvS|u5Y~A90BKwwuQ-7dWuVeu*zE5a5(O9rW1?X4UpOP^1wU>{2nuN ziA-DmwM*)Rc!s=H!kK<+dmNlE`-j;`6kQzID#;FGV8`Hi?p9+~tSj?O&Rp^`j&B&L z&$=LO>y#DLq*mYnQ!4E+L$uIsRpb!xyw%cly!KY0sB?~w$nd2@A^BKw;s8+j>Azg^ zhT5VzzeiaPIF$+KDL0K9OeMH4J7eeZl@u>3;N~&s4gzB>2T%tvow)@W#oVBkcOb3p zScWwj0dV|zk01sITLE!5SbbpEy1axQ;fxrx9Vx^;LsFC=7I^pFCDWM9%-MwM_i0JZ z;hRA{Qu{U{?$bLok|uGro7Id3Tb!uNVDEKZZ(tY1BLcG-7OU>v3?U4;xveZNxotO$ zC|F4H zP)KIPXCwR)-NQKf^b2xJuFDUkZRs*Y_C_Izh&g%#vMMu&DVUdYvVzkh-8N5;%(w-m zyv_YYYz0)eCnh-JxtbEKRob;!>pRT4jiXW*CpGZ^Ftl1JuPC1ztIRMAqtIDrxEbyO zR4GuOm!}Adqw92)@eRQY-WIrm9@2o%vQ2}36|ks;8*T%!iW1lg6;({&$_^Cu8ogrL zxnsltwA$h07^o(^ttgn}fCJ;`RL_=ow!#9(@IxI_h5miGj^i7G-h;DW!V>f|Jso{B$Lm!W zmb1;`54|SPZ_go8nliR2c3X@N9cu}=cM9SW^7+0~GEskxcXhX{Z(?D~plYX>X*WV(z|Ok)>dGEY-Mh_Bfem+?8BDbOWzhu043zU zf5gJ7tF}jI)v8qar*-+18oM}^O1lFVmiv^PFO_?_f{VM}xY*81mHdcQMNFa3iY zZQ6B{sX;>7ArfdB=ut!5XaLk8m3!Wt?B-?(JiTu7Rpxh*+S&HDd7*V{TtrB?qUEjC zTGvHx8CU(l)z@K~$u}YI2IUzY!a}zfXH(n$6&Umpk3tjhJptTkdMj*%19HcpZJCo% z&4gDQJ(~EQBo}DT{{Xq72hDfiFn|+GRHvPDE+8IFXKp{5*)xF1uYWT59XDbQCv@j` z{u;gBmR!yiTa!~f02hvf=$`3sK?EZ79kI=EGv#lvH7?5s&%yb+o8>HXt>MjMa7Z-H zUKzJFdgA3pFNve;TAM)CsdQYwXbxnD;THqLtL6g8h;w6$8|DaaMVpG%`SUY^YXP?{ z=Y-A$Y@q7G_Ub!j#i4P0xAz=Hi$(BT;-@OZKrOc05w=lU6c{S+39)f?9xkfF-NCWp zZA-?RC=RzTD_A&CZ&(uSXPSpVR?x1QKdKptz%_|DL@Vu6>Au!D!E!KV_n@;vS3PC z(aow4{F=_qm{(!vN5l=#AHWS;cHS`_>+M-i=*z^rNV5#qjfKB3zz1sp)m5df{{Zj~ zK)kE+M*z+L0B#LnZFQI=C04NH7vat3R$x|Gy2e&3bBuUH8f`(Ie>7QHW?QhmtgU77 zyu=WStBTc^?aP>=xyMj3MzOo)qF@7IZg&lByk|C;ib01yu`aB)7F{@$AasWjpc&e7 z6>}*a2(sS^)_$W9E~5h!Z55hMf_NT|o}dDsKz+nf9#2ZB9|UGIqPa!OiEyFNuY@on za-9DC#B?59Z?`YZBamJr?}O(O>;oF@em>zj2X1XWX1djwV2N+JatfN~wxu_`Q)lrQ#1bDS(fN-#!6myFo!lopW78G$ z!f@QqQdBT|15uJVi3x!_{)h&FZ&A#`t)M^JlQBH#Si1&8o+J6UV4OW|rT30(VyYbn zeKQ%YSC$$niut*V)$zUoC}pmo%@ufAe7D{?+)TNLgJCvyl~n=TKrR4=0<}A(270cPx_G*rA@}^mpgHbY0+l-fyXmZD zseuchwADdvwZog@F$Z&EyqsfP);MNy32;wJ7i!JtoXp^($h6X0{{TU_vjT0jvbp!_ zZea?HGo+BRm}2sepd|Sbq6~XOBu;$;yde#h=q5>x5T`Ym6eeh4tV{rMoCaf%SMa*? z+3_+F@i@Zc+Uih5O}+mB*_ogyIO^)-7}pWjM-FMORydRb`VaNrqGo-z4^$`q%mOm0 z^qVyL9{J>tpvjv6e0l}F|_)7KsGzus{a53ic1g_Sl-7KVr3AH%U|Zk5{k;PPm*babR6La ziQ4ffG2*&<`M;<%&*;1^Ibse2^56E$UMi?-%F)GT`<93xZ5gWu6L7h4wc@#fZkYvh z;l*ha5REYMsk?K@Qp=6%flN71Tb^(yw>xh5`it$rI_rCj|O9&0Lry>Jm#K)?Qt>!`PY7V1`2Vz}7_?wt?1orcz+bscqGTt2|;QO@?CG zoZ5lV{KF`^zj>{0^8g@k2X!CN28PF=P|53UE=ZO%7Y)dUG($ts7CBFHAfOzgLj@NU z;-)PR&YbncxPZW|ZlYahQC@ie0Fj6o!Ax}XF)+*bd)a?;0;F9+SL6ANAgJ4I&Lu?+ z(%PEU{_Kq7_DcJ*zqx`sD@6uw^J&Z6ybzTaj8$$ZoNrmO=KZ^k071}i(O>Ws7%w(S zSgf4ulImp&W2(4KejZ?uvujDBDy_}FVM-bngIRIX%@*h1CkpxEWFT!Col4GRLS4*y z)&+0Vl5)%5h7`2{o$)O(18c`PVX*5}dI050`G<3OUBQC)=e$X zHF$zoyNQtAv1^E$c0XWvCmOSuP?{Hk_0Whf#IV4ISTs{^DURZh&mp?Am55+z%cKt? z(|toIuNrBwEW)HJULx~3ObfTEX@>f*zOqxDZXgT$K)Gn>mar!sRmPgND-0|2W_>5E zl7V`O_Qbg=9%w~~wPRUO*_YJF?P}pq7XDF7vv$BJ#=b3SfS-U{|A)l%5 zTyH$3e-R{ko}Dxu8m&zkb8?$$hH5i=MS*(+saZ#`4x_-Z*7VnF;h}2hIaeExj+E5%2+lpT*q9unh8xFMHVTJ(q1#87rQtRWB>w^lcpPy(yxgaLU){{Wx; zg@6_{&od!2RC{$xcrJYE)>`8 z4K{hta`b{A?S_hcx`#lqkf~KkcXy}_4?yLp5l1F-2m+$|`9Hu0-h=3K&?~6yQP(+V_Gh`GhjCihXBU!yx@@cH+t=_0gCe`ArJI$ z<~#tv)BsR@Mc$9W5XXA%^$`3T;HH<2X5XpQ32T(LcQ3GLdJTHMi!Vkzz56Ty0zEYV zz1jJtt_WFq-@`D#D_k>meW;h1_OXPQBifuDmmeEnE_=5wmX&c z_)JFtQm${bWWQ!0dXz7{ZScD8Id*Jid#idmnXFf}bHxa-55fw&-S+N?XWmeTuuyFU z6P)5W4U>VldNW3=-g7bVwSu^~OXD(^3CCPoNDtvG`JB0&4dB?{ER&N_7Ei zUU&D1?m?G1e0kYM@Q z4s(_OFDeH^K;T`zC(cxO@}&BWG6s7mvTYkf(&XHv0wp}hRyXD`Qmy5Q8ypaq0u8m} zIwF?F%wa(7)adlXaTiqzGafpL5K~6hXQxqVW>+yo@T^HeFliu8GmkOaB{H>t<=;}6 z4>>&4LcV)U%b9V2 zmn(Damd${@&6w30VBIY|TF=eQq19Bf=dEWcjOG5sP8$l>hR1F>4mUA-6N*N-ZigJs z04k7fAx9fGLtb`sV(1v|%*p=%L@rKYDq`MmF}j0FY$~t#o;BRbAX4B`=zWa_d5U74tQ4| zK{+FpV1ZX$LlfR{a^+rqZ<3g#k6PQ-*Epac9)mMB!4aWqS&O|`33ve#fhk6|lbvUC z$cgC;mUD+4LjX5ro$SQkVK0^R6sV0EU!W4lhyKkJEL`S-;xxz*#AP)(_w9j{o;@D& zjuSnqg@zqN#^Fb~!&8W^$6*<;=vr0l;NN7pb9fl@`TWLY1aioj({HDF%(w%Tx6Wn2 zOT|tme|nZXnL~X40CJRbP+UPqC#S0yR%-tMG00etUGv}1h`|D@D8?-x{E0y_8Vv`$YUEqI%Z3{$-(LvVR0aMWE?0U3B^k_;B$zgmt9 zI=2oX?=RBL0@vE__XMMlqIT~!BZLSV8(X~T{KOFW%Fj)fPD2fy8*4?s%wkVxpg`Lv zUeKbcoV=O6eL*?fmQf!60Mytxw40r%j(E5rHh(W^ga*5uvK8QRUDDemTQY;A%cN&&nVMPVj1sliirUo4co*_+}bOB^voWOuMtBuilzrG*@ zHm(s+PENYpzZ!r5J5#S8%UGEK7^a6j@9PqVv}sManLvBnh;{Fi{B(a1h6Re!a0fi^ zfREV6 zZoR)Lpaf%F{v;@s_K24p0#kmr`aI{F_rR_TX5t7Nz;Zp+=NCaJa68Qi3)jmOwKU^i zx_HXgBGmGG{{Zp0vuN%o`Y{veP_UGm>qh%62ECFMaJ|jh~jOG+Ha6#BD@lh~|TPEP> zO^BF_3nLr}k}9#n_c8(JaOcHe6Cf=ZYuaP%92<&D@bl+C>Na5LuusJ>QdM>R1CZ)!ycY0Hb6f$u)nj2Bg%M-W{e=JdaaQo{4;c_rhK89fXt z39WtFV_3JQ%RI^pc~Np{xY`xW$OP2Ms?`^2!3c>vr=2?`%;zf7&n>3D;0Px4GN;^h z4Qw-}%_xo~U+#e^QMWh=#Q1fOa?|aC$(+I$g`)tl-r!_TJF>Wz?K5#4L08t5p6tp- zKU(hohtG1d02(uqLBHZsW4x8>u1yqyP#|~of$}eP?>Zw#VGv06P?zvu?I#T*qH{4G<9>3C=CMp_B4G9@e@t; zbTNK`I39p*oY!_#V0VL~`1M=1Sn@*!w!kgdH9|F;Ev6139E5m^D~L6F#(0OINUNmc z*<87f0?OpU{{WM5oO)!1yBgc5LfX6I?p-4Dlp=xu028Pv=tMfEBoCXn+)*yRq0||r zyj8K{pSW-p2r8S50M=rrh4D7#0JTim$P;Cuk_PB!bD?Q?X#jH)j5%1`WkbiH_>Fl0 zt8p|Z?HSm2>nwo@xa>545!eAhbk_b?h=v5Tl>NrdMx_;_Gnm18XPI^cUpf%B2F~g8 zE3I73yG zM{yjSrocuAK(ERvKs`^A1n3Vk(;zxIlsYfo8fYX1oRaOC7?eu<{QSlgF0T_JDCXR; z4*CVcA$n@-_<|$}Va{t6xszjJ!fwBp?lK?&kBk=k5u^%z6z~`aaKxa$N}YzZ>Z!c! z_<*ZH#hmk>;t^dqa0_}Ep>n!^d`c)R(e2gi{^lA0ZT;|?zka2P(i}XD7|+df3J8Nt zILqUIWZXcn6?olVJ@pJU1(9DSJ^P2Kkx(&qux|RtIJ;-%~N1>P3 zCOvyn_A?2u{c5vna^S7{8@LtuHLr%pyA&jEHn3znIf%g`z84v)FPo`&fup5$d1I*` z;LLEM`(79T6GJIM^c#=HIp_l1rx+Jp%ob8L4HaD1qlh9jzzTl{qu(6i?$z0n8V^w{ zhJ&GYMc{8IAzed`kVNSIGdMNpdYDM_IC1;7UqfYX=d*RFqnDGAF5a;5QB;X)v@ARG zj^*JE!c_`-?K^^Gm9rxsfqe~2^|XNKcxX-5Z;T9}#25;Jdd^q_&kzGEj?KLWab4qb zhhDh1GWny~xNp(!mmU8AfcZyp(tuBO2lFxsceJnU!>;B?aK%A?Ey5~YD$scKk5!3F zgXjUz7YCAz#t_Wm4osinGzH}st{!c;|H%(1ZKW9}h9 z1YeuPxWOD+Vr*y}M!*!qxrmieDSE`FjhxfAX`b9})lBk#qZjQ;==Ap~8$^WXJ|c2|J* zzw=kQK?qN%#})kF5`ifn7-j46xj>M;Id>IBW;EE@8l`wyF>#0rQ|2w%Q!P!b7xeAh zC5KVq3@sGuRtL|b#RN5ACzx1vuXA^hYnTKtRv9_0QQSw68PubImq$mV1EJa6Vud4M zm&3HbFlEd21tPLS_dW%`f(j}fjr1LCLv{5`-rpPU00qzPo7-vMd_YnL!pqpm3WjHgzfTOrMu3VR{>YuK!AB+q;FruE}EV z&t1&Uz`JoeD@(enm=|Z391O4@+@Z3^q9Cwu+90#`sb}0bsbIllOyAs~MZz8TGT=5V ziO3=LO@I`$Qp$`o-(G)-dM8w-Xt!)E0!`bXU->ivW&6}4V5Qu~C^$nnIJklVta|y3 zat7To+Yw2wQ0Fr8YvLKXZia8uP(T7RRln5m3i=FwOOK6v<|0CZY4;3@XMZjK05H*% zyS@X6qVMJSriq$it*lC1B!j0OkiJ&OkB0iFD<%FCkaZRA^4E2}IctH`vU?Ec!7t zXiEUd;6;rEZ*^sT$18xNsH=bb7$dpk8*KieXC&OGo_~9QT;r_=%)}B{Z*cB*0awj` z8G8YrB3xjz4Q~GC2o;T5Z&b=2VtSZnB?^u(62^xqxpBtFUGoaiHn^1pYW$h3hpCxf zywv9`+V|3b!!gj-U25`FEq4?P0hq!GYLjOi&meru#^DA&N2@jH7d#WUGkaLnsSNAa zmG~pLYW)h$37|Uk1Xrjr_f4Pz?DnXmmrZ-{0)<<1fp415 zD>a-lWv#9<&9|B`UUQBq(hV7}IIe8K!yq$e;bR5>1<%5T%kXrCOS|qqJx=`?+6{MW zba^oAeukR)KM>V=hpkaSw>&^FGU)W4q3ra%pYqIwn7{(Iz)He6+NUoOv!YNhgj{Ty zt!KC`1LZganL@?GU<0V=%p1XQ;+Nqw8CDCO5r%{>Ib+}#l;}HzTf~Z^`|l9hsGiqs>&I}2J#(C0JK_+QU3stl!`Cu z*7x(&#I?S9#rMGo(7U%nhP+ofW*}WH)K>A$`P94tspnF*CF=RI8%Sb6&DL7dhb z&rBmh6y>*E${X})0R*t|6`F>eR^4+DrfK$wEQk==dfkB7lNy$#vPLj9_xcX|^;;!!BCGTu%zW-!DBKhT91Z;_at67PCjl^LDRq0m4AMP-t7hdHiK^l-p;W08iRI+mkzXR$C05loT7?=z@ad^q+F%=50 zTC_Lg-%;9zrn4=*=WpC2MSa>OW&F%UG+1J>t=2!ei5#Nom+v(UKya(h?l5dm60^JU zGYRcW6~4^#<}gHSX%Ofu&*vY#MFa*p`(=OMa)^pu>EO?#_Bt}`Xob6cPpSC8V&XsfE-gBn0N8Tz z?Fgb_N{%yEeDjRWAW2;a6K2p}_oAi3EyYc(+|GOAVKE(I%Hv)$FETc}+Ed4}u{^|J z%RxigolgNo{u|~9F@sQVaMV2s=p07Fpq8Gi=JNGv*Eo~~GHzZK!se~sbuJ`rrlQvM zc)iwYR1yAHi};MfE}{@2>j6*VREm8{1{%`h{rg$-PxCT&E+LBJ@BDQx72ibVag~|4 zdR*^xr0Pkvn%75gg3vZ!xfOs}$p+=4B0liY2b1|6iJl`s$>T;k-dw=yc5b56jpr`T%HN{#uS9t#bQpYTntd^(-x7+Uk zAS?}m3;-7PtAqErWP&mK_b>qJ_)3~B-M(P13R9rJ;sW$|?>>%6vIQE3%vc`sSMR*$ zK+YT-{yrtb4tC7QE&V1k4IGqwmyt4kKW1lI;`P027*hQS9N(oWvrg-euA~$2K*xIL)tk z-T7X^d|I1!WCJOPK^Xi6}1AHpEG z$0(yn@IgA2X~!`LR4JQhKo*5W4UTxs1?@mJjH0UWreHyKQiA1SyMBB_GXl8(0H|~c zn2d|tH84^)T=wApq2z1kH_YRsUB>?am_(*Yt@rtU=V%MO@w(&QUB8vBi_hizg+Zga zsL`>SuqwQDFklaTa-T5JJ!o4oi){%(P`7Nc4<}sb`!WgM@t^T={urN2EI{rU6 zmkFx5tEA0mvK1#Z&T~$q$reW+Mxm_Z&>cx316@+_sCK zLi1e~(A_8l>KF~79VDRfms0o@r`Nj4^%x@HkKg_ylp-jnQG=676?YZ2kD|R$s=Fmc zxP??-Nq7S%ghB?LxRl~0t%Sy4^$JYY=wRtCBCcdo$VmG=0eV7gDse8O%w`+4?G3UM zp&pAb5~cyIA_l``efbR!Y}=V&27eQ{se-J5`2rbCnBhY|NprA+BUQ3HS})-+GR(UY z*_3W21PWD{u8pqd2ox5RpgjBbg#b|LQTh3p9GsPo*$jE3fdI7vAjlb8g(NP!I{eET z1jkgd*e_aO`2)Z~I0y85Tm!^uqZ2ppbFhkB(Cva@qPVi=&z#2q6FW@s7PZ^r1r`H> zT;LBwZDI%wy+1$wlpqONwA{oHVWXZg{8uqu1S!hZqbBfI5QqTV_SNuUH4+K~WONJf zxoHN@gtR>?G{stH@Om;%NN+_j|M#+2Hgr{KWPQYM1aW2m< z40f-ac!~f8QNZzQeX`UJQ!hndznF|py)1+qmGccm2vD|Y zARKKf)G=Ee&J0jG@Hb`XRKC!{ASy5W>Q%_X(rdRfsAN_IB;A>|_v`!{hW!A;z}(1@ z<1;7{6aWlrznIr3E|*MRLIJ2{@L-f55AG>!fH*m4a>aq>Hf)?|e{uE`*v`#1#woQ( z-E?X^Fd=oHgkLj9lSe2#1Nl!fp_(W;iZ~Ah%yw!pcoW3?06CUe2^SuRLUsUWWYV%Lgrce( z+nAuzd1JrmdF15OG*Me{1u+Kh(zzX@r-}Sfr);!eE#zc0DtD?%#5>fdfaLO-6D;D7sjC+ zl5=>+$HwMEYc+EzzsM=zA5ZS}*`bW^lVI2Ia2oNZ0QCIl{!R#OAb}lvc-YZdveC0|7c2$Hn zbU04u5vB5LL2tY@5@?CWy3JOlY7AE7rur$ngMp~bi+6fugb28ebkCuSm;*bm(O>{+ z_DvvRuCD9_2a;wd$Jb`#nUkbI)2scX8f69xsge^e@G}i)wVODW76_?;LvRoU70k_n z!FC~$hE!}o23d!x4OULk6!ZvL4@nP5c3dPX!ssH50-A^cYtRgGWrqXY6*kYY+F{yb zyBC<ClWdqyfm!16xElv%=`2Z!CAAbfTii2{`^WlsUCO#0AXB(uiqD6 zwL457SbO0x^aJo~s8F{&5RHokAH=W+viEk8$OkFCmUxKWyFPr`1mYr%#>sT)f!{gw zxMlXHyg*kL{{RK)c(nN=pgcl?#WXR)cwoE3;;}#xZj*Yh@#nqEOAQB8nFTV+=>%FcOF%lDy9#mV*!_4r4NG zE;b1~OO`yL1S9z-cL}j*qXm}NK8*-sip8*L+!Bj!;q8iUTEHd-(SZRQrRCIcU8#q> zbHi|1!#S4l%+EEMVUk6So2zYm?{NgctkapJNBNb7??Nm80O^-*1FEe?9D|NOnaZ_^ znFzx?s{l&(8i;Jagl!;ilFJQ?he&=QWxWHHJt4uv6fRgb z4vf|BCZdpJx~LT7@y?}-I2xxh6iHrN&1O^p3q`-TGEqaMPp~qU&oUmKxrj=>3v;o> za+UNKs0`3d*UF(L3C$%-OzpI=zt$_N)ALsmw94O@DPK)X9@C(vpmALhf~B zwm|q85Uux%;y5sE7YF7VMgIVRsX7qHJ}$+yF^HrbSJts$6XIbgRkYh-D&Pt2SE}NAPpx5j7%Y4k@E@n`=4vCnUjKH{FDN34~Ey)B`ZY8Zu^viyr z5UZGQ6$+*!hyt&IAd`HiqYfWrAmF2@Wj{u1R7)$E<%kz?UFp}E?XXp(XsjO4cMze6`-!vy?7NK*Kns9e zwcO>{EVm;9xcf&lIsC%354=%wjL2x^sbfJs!=~cTw^0P z1jMMnpz2uWtMeE`ibR3_;~GHEoI;5>Y?QmF;Q zAb<0T9f%`!p|1x#)M#8E+wpg@q>99AbrXrz5CmM8itxtzJ8dJI^Ph zID}niPn0I0hTo7)SG=qXnvt^#JZ>Q+SQNS<+?$v=^evUU_7$+!hzKHA8$9a_2M3U- zG^8&BmKlrB#mj#Z@tJznO~8vsNaPCH2$L$JZ|4vJ8HNbAW;m97A?7I5Lu7CiJ+#bF zu;U?xtPl!}+#;}&rYbT<83D{uWmv!h7?rSqt-TQ&NFN}1jadv-TFIhG9Zm_j>=r86qG^gGng`LjP9b6ztuU4DKTAYB3XTrUr4gw4Y4+p{)&7Se+@is)h z2Uw3Koqz{afwHbR4ABy#}thyw@2xW-6A*zlDJ#Y8y)8UuQ< z^BScDENuYkF^RqpM1tmmDYOrij4*F5H7j~V7!Xt?;E&vALkvJe5n&BLm@;yR_90Q| zV7R!$K7)|KQpZVSFiF6}{!=4F%tA93oMK|-g-jorQX64dK4cWH?&g<4iweSGpwH8I*ZA{!qmhVFDp~sc}%^Py}31k)AC20WFDP)L9#7N=*fih~N?K5kYcBb4Rq? z4?#7=$;m7RE=Fj~qg-VZnXv>D$v7~YE+5pW@>E$` zAT)|mA8->U@TRRKMfF6k9^Fi;J>C(r%LZ$!ZEZK zx4;|u&3tXGH^J$c1y6#_1r_OiO%MT=fP1lk9a$qzY=~eM>P%?vZnN$F5`H4M1)3IC zH_?Zwdxg~GbNis+n?(TM+_(gYZd@PT~`$xz`bQ`_g848lTkz*yU5cih*QzG zqwe%=3h0f15k?MRMlVV@m`h9&yfzn<0ibb6hPATsFAJ1V95Et_v{Hh@Gb$;*VOO$n z0$5BzHU!ZFNoXLsjZqkRh5!jsj56SkPecS5%@*k}BEh0yaKZ??!2<*zi9iY7(`7BO zHIo}Q^kB$X<{;3##LC1=#3KubDF)_fWw&^JE0=M>;-K?9((Nd+m1tTVrTa%_&mNgT z$zW{JhN9Qve2+6iUxI1{O1uC{Y@c!qx5N4MR#ZxrFZCNCs4%4(?&_(vn}h=!L54^G zUsB-#CW&i6-G&#K>?OYoH@7h0YezPX+z>=E^BWu^oeA9#Qpf}XG6X`!;7f`hcmV+bHV6_S>_>741w%2K zgctlJ;vZg_=SM6*69CB>k)@}ZmeS5)_?I2Zio8fd8-R|&y)x$0GLll|nVfvZ6`9e`0((Z-|p^c5dM@IbVL&Lnc@RV%SttO$5`}D zY!7LG5TqC6#2F5{OpJ`7lQ6Q#j726wjO6U8xgJr9FvP4hKA00Lg%}}QDmIXrHfB&* zW?@AbUl4>4`UQ%B%rVJ!#JvwdUBghyA?O4aUI9@;o*+~q37S9z^DIi11T!fQ#iA9w zMzEQPB4}W~fegzK5x~VS6XI1aDeOWZ6NY3Z46xeI0!EC>6gn7ftCf|G;F~MNwuiUj zW3`xheFEaQ5sqG_T5~XzKV|4G4j76waJ$y>n(tAdOS+uZm$`7PokqtN`}vpv0!hU@hMMCSm7ZZ|gcb+^3`uOil4>N8TM%z}yND;v zLD8klnaGXa*Ur_Hh&0oF=;BO9(5j(`$q;=23quVoHut61VRVg0nh?-&+Hof3Bo0vk zt+cU)aSGV9bq7cU3S-RDiy6TdB1&lZOTbdaCTDj7gV;wgCEU&8SY)xx9H&`}m}6}t z2nUIf2%_aEeE_gx7DrnQx-W1A(set4J1DNI&quvLk0oyS+ zgF6n8%{YKiOdxoPXbb5a+ltkZ1&gPIVP^%!!7+i5si<=qLxv^!xf1_1n^YG0HfyW0P+V(#`uq(;_J;!-vgn%?)CEqajn9vGTB4XZvX#oHYF*JyaU84gG zn}DQi&B_a6DcHpr8OUQ2#f^+KOdvg=Ss>&|mynrO5|R;aRX#&@sAwT_W6ZmEgCfGE z$e0ik#8^8+AXXquC%8|02n(_+O(v8%00{Xco-q1E%FE z-Ua%VjPa^L8}eOx3q2wzeE`$e9l;U7G8uXTr)gnJfN~E|3I(n;BEi%xg-VRKE|4&6 zgcJ%IhKN2Q7+WCKm#vckU`9VM)|r5G!2rN`h-gqjplpO7B8KsW2oZt|xv@0z2?zrK z45%o>P$$r`xq2`+fsI8<@VSk|d=+L=KBr<7W_Ki1ss{=LbXKec$$ZcEh%-pG4?qTl zp`@b}?Hs`KI8%Dezz`iqQBIP8ju=$YGB5$gUB3hpxl6u)(x(kDl`ph%>zhbYp=z2^y(BFWFhuhe=r}l2glsX|-J9p>CBzg=zH{e%#Wl0z zz|K3)E}_(p6K_yh^@-3B8Z7?+zodf%fiyry;ubLs!NST6Y8Vu~rQBO@QAjD+kpY{y zLe30fKgLUh2TWlF7*s|euEL!x+ZLeq{(rp$#2XrAnF=tG)Ea=v2s7u8ko16*1^i0I14E#0wqXhk zDW}S8!0{{jy8@5}=R=&wFgA)tFnS4xu@vXfF)zPKN6^`<6xJWhL2P0{7YTTeGolGFCved|+g9Gl2EEn9$KnS1f z42G6P;xicrnezGtAfl31pjwB0qXo(!!-O{)02*TBWDA6#v3;XU5tJK3iLVX!=mHCI z07Zuj(8qVEv&OBEf{r1~0o-?Iv|u1Tq16GWn1bNl&I&RqF=UxQV-QO_i>^G&U`8hf z46uiwKy4?1QvwPx*hC*;H&`4D6fd6T6}+iOdxwZc3P6Ig94h-x@b{b{ivSy@7juHc zobPC%W&n|FLsk)cc!h**zckYH%g7qkUD&2>T1lIaV^ftGz#DTYAd%yiLMt87ub)^I zZex^82?8{*7-#fq++67gyYwj>$$ZQ$XEY&!EfBDXF&-d-yD^SfY6__LcL;(CffiLN zA`Te1EOd#_xdCtNEpG%j&fGmVPJ7K07N!VAQN#K;uRr*VA~9AnnIKj znUEWt%#)BTW^(-{LxGeEgjtYgTiGo10EOp`v)shJgrQ|_ywYO3g}aAwW5G{3`1j|bZ`)5fO?qEwIQc^#pK^7@-RfKnz;3wa#&J)HNm)LFrd9>wqB2UWdLA zBpb*ci0UYO#5@>1q6rHJQHl^XvgRe1GXQg!q!|uGu-jUh(a01a%P~+8^%!_d!R9V5 zJQBcz*qo!~G6HFGA22|H8%-q4CUg~OwI{^ELWt_O#6DuFN3mFdI0D_ zMALXq17ko9z%`T`cPudG4FZ-tN+5D_j5RPDASwtnhtMR&DnJ_m^-O+Yx;Bnn!uV82 zIJ2^r4NS5?(eEe`F#tl+Ke{$kXEU%(&;ZdHzY?|O7LSoCLbZ0OdKe`#gfp`oz>b(e zhzFY`L^C;wl!H(Z8R;4oXEhMe;!Hv+;xGaP@?Cj^EFM`>8R61W0eM8Yg4n@SgEGd` zbQ7D@2nSGL${zFmp(zpXafKHQ2`T_j2#^fSTmTRv$Hbt8c1=J>P+(C=`Vmv3mCH;3 zRbLS)MS4IIu=0*5T8L1EXa+sl7`QNydWKLnK2;9vMnCKsK?v2$yaIv=0RI3&O~r*5 zYDOSz4>BlTB3hVj6t8N$+`v%u0fS*u?qaRMWGZWHya&p5Vd;YiVF_VSMI&FJu#5F7Mht=oQ%RBL5#svQJ#|!2+gSW zl?n+2AYou4lL#z0M-UtKO01I+04`-L0c({yxRwzF8HHx5BTOcw3h5C*b8v4VgV6{( z76HIn#NIHX#OM4HafkweH-o}f6&|Rd4CDp~1PFqdV*zn!pbP{_L+B=~0xjqh0?a@d zYB=CjWq<-#6LFFy$YlkF6r!^Q1$Qq{s8oKzlmIb(pHYAp8T()JFaQ-7meL|5_5T1e zbKIZ`*cg6DLqjkS6$CvK-zi24RK z8m%+ypYjJT0i>E-?Ov>l;J{VW)GMTz*rP(6>y@|4yfHMSbEi$?9ecypa?LO2w`b5= z268`81&PUQ+kNUQRe1;fy*}-flGUGyfYe@5T3$7&EkiF1X;BXgfewYe>X5{b3FmCRzGoeL_SYq z!Q^*H2E#S{m|h&FD`P?h(M1RTerg_J@Kx9xE#_+DEco-V-lY@0m`S53T3y%qO~8XC z0S%(T4=#f1eM1jIVytw-jz!2XTWXv51Y~!BqIzdYZN%nDhdl|BfNhTK#L{gdUON^@kBpR;) z3XgZy=eXfTj@!D(Tr$-Qb%&VKNd6SC54oKiZv?J$V9*iHJf0tgK9|mp-kVIV>}~b+ zH{;Uj#hQQ2eKwJy4K8nh0VpXzodAR7WYwG~w-v!yph$pC`iDr|Q43XAeRkbo@Jy(@nKIOC> ziC9%kgoCLsYkC`T5_wxLD!Kmk2Op+UHi7VfZ=Z-n23D2?*q?U#!o*EW6&HYqv*JS? zQvL|veZ=af6REu`0u6W0B3;PV-2SA( zb1ofvSPwoFEP)+Q*Nvszc}11-|7f2FK3z6oavaWU$cMV`=vw3j}1S zg`6Udx-bnYpo7JzaDWdo^E^Y=fd|LqD0I_m$sj=KjF6k?2+&Yrh#X~W5%3fk8bgH> zz=q{3v2eoK7)DDQd zcq3j4OrgSnol+_veG%7`B!Ek$OIPK5jL#j&PqH(Z2Z)A<7vQbYE+j*ANEiYb@`lc% zi@3j*-)za9N}dpfwXscTI8o$tS$U92F_?=`pulSe0;v{5Xsk7Qp_xUF!2_Em#npK< zP=x;gRodlDfCkSSqLJ7gNH&xTTEVcH_ng2Ws~Fw)2*yWVun~v8fQUv;Qr70>m>$&d zFd+3gPk1n9^>#$<9>e`XDag-!Sd0`ttBd2sXV{*#f#Mj*_PY@V5Y*PM8~58$P;sSy zC(~v-Pi}no#Sir$WQF3_erYHr{_~sGK?1MAk9c$qWm22NUFw8{Kv&-Bmr*XR^u76r zebmU=E%-nMuvwyA!3KB97z0YwO@6s6^maK`za1NEOY6NJpuOV~90AJjQmR-V0*|w% zu6*msq$E9^WHFCip9GvRAxoM9(l0){n)87)va&hRWDdPrGR_?ny&3wcx@uUOdO0Cn z-8h9kav#l5fz-E?Rg|Yt9c?-gQjH`6`)F;e&YO*r-xn*KuU~7_`=}y>U*YlrO~qn< z1HDLpZ*jG$91Kk=$rNR6QuLD@8nNG|V>M*%m${zwtf>sYbz4x`lMSpDw1j~0PWaPT z0q*HPz=AATK}XVN<&y?)Nig}MBnBz}0Ovd*{m7y(8F;?{ayPz$51#Zdp#}GW4nJS^ zH+_ld-~Ryr0E2WWg7_yL_#lAr7@q&c04EUv00II60R#dA0RaI30000101+WEK~Z54 zaeaU$tIM^-xb?-Zsdp~oZdDzC_k1+xoL||fC&@nAR9!r2& zH!nPzOd-Ab{lv|2Gr3?U$pYtHD-jiEgLezW)U#NZq(o4H_HGq24IkPIAx;@s+&1`@ ziZDcNSFd=guoOj^TjD9s6#|xGDdG!l_?+8|vBXml-IBY4Z4ngV?;Nn7IEb~LOiex* z@T|)B1yrD#Mi5mjcp$Vk9s53UJljZ%mlB1OKIqoA#BEuH*>jpHQ5rJ@Rb4H?VIsZ} z$b?qg!VMU`TN;%lFKUPlk&q#NCOn=W`2~Z!4jfIot;^VP0^rKE`@|ru?FWa^b3!cJ zF)$c|b4|b~+{mY0#@7+BwkIS+tC(Ax{Y*=<^BYU0?rE#WqpSyvG1;~6@%=>A`@ilG zIKQqxxK&_S72r?hjMxRBm}RM(h{X~uDTNx!SkBWGV~D&tX4jXPCAcnNjZ`+h7_;wj zyPfE<>S~5CmWEZL`ZUIA7veJH6*)MRGE)SgjkWOzaFI$ONsX=W*SedVZy-FT_k4tz__@kXO;JB_Vz1$dXzEEYu* z2m{2G5yTcrGB0qjFqBLOCQrnygK7TyfXaO1gO4j?6*GcAEJbi`YS8dYX89I?u~nvBa**Wz7m zKkdw>tGkxgmDCkYzytHHE(8wwgV2mYc3?kHInuQO?x*9w0~ zSU`oc%L-!n{{VFsm_9$!7Jmni7(nkh2Ri^4?=sve23=3@x;ndQx zE`Xbg+bzV2Io$9-nuQf__frab`}*9uXur&EDYnnuLXU61KXXw2yvo2Ty64_pdGY-} z@?+p|Z}XqbBL}eK?{Ql5c;nx%G26Bem^&rB5}6CP5zui7R?D+cA1o`xCI$i2s@&bj z@GutKuV=#&-Zb;Sz09_k*#iW9y(YA|OR1eO!rB4MLAd5k%F1My#|%010irsUG7;E` zn=(OL%tWdIrNa$Mjvxd0f9zTz*0?@yB;#IDcuD@}KO#3Su z`}T_iz0{*xD(|1f73t<#$b#!KjK)Mao_z-TV{GtNWt+!U0PK{_#^qB1p&3;Vi072^ zxYdOGletASs3Q#&MkD4|UP2Zuv6oc?*wwp1iq0kA`R&=$u1XDK)JXR$r_@*uWV4RV*^wKa2rvCuDg^wM^{hVu6`G5gPQ(kvo-h@!6MINT|YV1#gjnt=9& zGb2J9p)JZ3Z6jo{Y2)_)05B#@{`34rrN;Wl6}Te{0B$S{JR)fDN(r>TaESF5=q&#L zpHOb@2Z$;PhXt`4Rwd?Ph64WpQCCIs?^W&im$snQS^hw)2Y+|YH|AHdcujTfHYj|= zvsjc-+_23{I*2!d5mQ>1i-oq21nlMr7f`*L^O>Jep}UB2C`Fx08$eb#Dbxdo1_DrA zNqrGaBKPr7Ev>}h(dU0s?A8AOKT+$RJN+e0+#)gBqvL;34d9pPuD)Pl?OQ8Xqx442 z=aw-Yfc7FE69Q%ioS0@rzR*2m+9@w%dH2311=c^_{iW)Qs=m0sJ|)9+4?F&0xU%bC zUuIx|-`~_7VpGck!bDm!-Lg+6AxrTt+ktP#+)mInrZB@v1XOMfQ4O9V>`aO`Gup-* znE}k8Zt)XbnVIPkq7|Kly>C%&RwWCRRQNsL>L$Z6raO#}1rgji0qjJh)GvsQPV%5V z)MN1Yn75Zwv#$^C6$aQBrX{^a8jjnUiqTcy^K!%-RxwyBh{B+y%g7x2!)n$y$8G!T z%%%b_ILG<@kuJo-%(0ZKg%+AZ2yB;1iI^lD+yeo?+XF)B{U2GETH%sXuWd@(N=ySxL+mtfpqmO$u@LA z3^vg=4ke2|nl?8BKfTISKaYQY;!AF;hlZf6TzzwV#8>z~@+{J?#C_$PfN=!0quVfQ zte2-uZZ7U4k(lprLfoz(us0~hhEf+taBAYZM;AnCzeS*-U;7(U8G%ji7rJuGYHaa{ z?RYwrcVF-Ca^3SPuQ6m3QPi^T1-@fa&VPT2oU8;D3;zHFS-*ZD0z^6orj4Q+h({Tm{rEr<3;E!)ofJ-UX zIa9T>_r$uUwGfNUTJ+3Talbz>DHra|<|*k#`dJA-hGemC*YPTYd4GMN#;9!+Q<$V) zV%CUovCD8qZYVNl0|P&p(`+JFO6CWUff=W7J|z`EwVsL6 zHBH9$)TF(#%rKZ&5OEzXLW){Bm@IApwZDn7$J8kCVK0#?w^aMbaE)Pc6u&W41OCm9 zW5mtOp~Um%QV2Vk2(CQO;#tF(+ElT8!AMLL;%2;&WEvu0qYW^8!s^mJkNx zroQ2!I^3=oQ4B1U%8DRG!pm~1z?M#GaBxP?9R^Q6fR=@p(riuvxCEyxXere}V85U8 zcE71XPvTs@Jj<|g{?v0D{cFEy@x-7}Gu)ykp0p`@+Z!lR&zX$`=B&#-Dx8UVDDwab zM73WN3Fre`W5D83zI`h71fxi=DCP<&0Bw1eACjI2_ET9`I5NxR->z9z4W$B44G8Y*f9v^(%&hxB+s$ z`lzCu9YVp7gU2x9bu$A&G{&Md+;>LeTHA^@7X9FGhIetKzo-<|#P2BM?34v=7+FM# zjia_#R7Qb!8zh^MFBZ&{K^j7LUWKs)IEMvndd6mrE^>zDidU0;hr)S-EJb%ti!TJjA0pgL#`xcUg;i5W-PurkG$MZW!8J=c|`->H$o`I*eZiLwJd5eqZJz<@Fkr?q*TmU&k&-yi01o= zely8SFeNrrSy7RhZe}cPxzYfp`kWbj${_$ci%^!a0oI}!U}VI84ekMhC`&)lg)Pi9 zvwMZ)n2lB}z8P&1kvW}e5*@J#+^Lf4J|rVHBh)xyl`(eW4-FZ`p>bpzwLuh1<_zvw zs>Y?hA&p8X!JCDEs7~TJcPq2n7DO6b0_zNmsY0uRVVBe@0$q1B20asYIERJW#31nq zvzYGEByl=!Cn$#7fCEMk5?ZbUrkRr&moJDn+C7U-Wu+Px`JA7WQl+S3C|Xo#YBx|SV9;cr_J~(5=9LF$D1u%ae&!1kjl)m>f{Mnk7IgWkTS~wW4#u z5~OAZAwuyxxSIwUvTdd!mO*7wn6j$5iaDdqLT2*<LJ3VFO2^GlGdqn5yJ)*%q;s71JHU zdkCH!%;;t-OE?hDAaG2Ql{=XM9K{eXv`{Xg&4J9^WlT-f`7lZ&mMwvj)J2CROeCt& zS#DWw*5@5inB>%Hq>L#eWpgraAkhRGsj{;QYj7^Gz%E%$T&D=4UYx-Zs-g|e#yaye zjmrVdv1>49cP`B!YOWz*YF%J~lx{FJl5!cA8S{3nO?`x+p5l%d{Zi71SSe2dX>ijs&Z9=wNd$6AWqJMYlX!1Yw>@69;U_AYqN} z1fyv}3`V3CH!})AGPK%=V8j9nl%i;cWex*7%BB+uSmK@JnSYWl;ba0N>i>^4i?Cj|4<6{T3GmGL)_&oXd9r z?l`3>wfb+5*DxKG3iQ`-j;D1Jl`l3&NVYFERaJ--+rN*z2m1aYy92m@6b>CtO8EZ( zv+TKYnX^>^I$C#_U^t6I%YI-Jj4-VxN=ln17AHa@A*SW3>ID_ChGA7IqH0%GZ{}++ z&-*OY5OfgV4R=t22359KHT9VYG;|Vz{{X1gdW$lbFIRbhws#i0C)*qD3T=qHfDT!H zgs<9^+Q*qp8~RFGg3sR&#wK~TQ-+$wG1NLl!XC=QJJia z#@>?>eC|FUx9JB6J!^`&K@XM{oZJ)y}!M~U+Kh&|Wrgw{lo9uYGNM!knn}--;wqj>v5fd`nV4h~j zb0Uq#RHipIMJ*6gzGG^v#S}wgWFvb+5G8|T!Mlk{ZZwi3vBWJun5fjZga-s~Zej~j zr20s(5aS>O>T+&XqcI~W>Q|6UZ9x%@=2#X!XGVD=o0=nU2DW3M`#zC!f1d6k**&7KG-%vH*(~Zd_&_bhYF?2F^%bHk7Z8epznBy+ zTmJxea7YW_;r=9c)Ou-Xy;E0=mSlm)TD%>g3U$X`7QL_`I zR~ZVuXplQHh?1uSXs7*xt7;oGzTk4kT-;j%NM?$EwJR6Lostb!nC-zES#8A0t9eta*pnwY<+u%S2tg#;J1)#o9ElOP(w_xe2#7_ zGhe)WO5|(L>-2+m{{H})uiQl}Odn3aGfk|^jtoJzW_E5}rW=qIWDA3irF2SgsYF3@ zxMt-Eb1}+KYntWzHSr2951mFSe_zxfsFICe?{h?5c|26__n$&4WT!$xC~Nj4B%zSC zkZrPO9oZS&kZf7AW|w<=^`zhe!UKbve&URVr_IH7(coln?bfO5cfI)VmRa+OvF1NmJRk{6SgVmx9=D}h-Xeq?s)aK!74Y+TkF;R`p6A+*cW;YyEL@TqRwO( z*sfm4sZ6C1Lep1060kJTt>fX&>A+xhdsG7l1sXL&S7cOLmZmjkxy^3gDUXvbi@%2NN9m-0^rnteW z_A6tY)Q`*IO&iy+nJV?1Mw=`*8$1cU0}gi@t8>_dY<(FrH3C0&iQ^x#srlXH?!4qW zApHP?LfAXLv>GJ2aM6$LV0V5>CfYsQ9BBNRQUhpPnyNPv8^eek5#CTv|DKdS0@(XT z`V1yV=+x~QVZkK$yr3sjoh!b2ATYV?m2`Xj^X-`q*Su@1^kclRUX?;GSe7lvoxMUe zizCHeM1IL#rpc&L`Z%BPA=rwpQ=xTAHru@s>Z+d1CT1@_VI{`rW7?dEsz2gI>f`;S zv>?e8wA|i;VV76WO-xs8Z;KzTYsR54S+$e)wTp-rhEJBa=6IwMpScrO;6Av%uK1(m z0yuo*yvWW)7kflbhbh&QNs+uJ75an)rd`Oe!(4(kzG>)O{7 zd6JJ4m)gJF>HGPYY)lbQuoUsNB@kWjGM3aK?D^w#;}*pta%1kJcq^4vQjV_wGYyma z0gP_5Iu+NYtkH5Fb%XF?Wii9+-gg(ng)7aRX29N}oxs^Kfh&dro(Cnop^mto{X2qz zzC^-9xvoa%n0#K#CdvAxw=Oqje3PI5R2R}^t%>VDiA|IBjbuVFQwl$nY-Mh0&7|{9 z4B(==y<*GIcQSoRnQ9CYqj13X-qtt=?(tV0h0uiO9;F{k^mS#h9OzvoUyHg`$aWpP`tpT->yrC2YE6Jr988|Xl%3`UG^yHFe0IEgifd| zoC6ye7&otBl`44koSiU{3$_5`j||8Q>vrOzp&(kE->XmjVX&Zgq%rmDU7n4x1C#X} z2^n26NGI$Yu5NC_YT6+hIp9BDQ$$aZ>Aos6fYp_}2OIQ3gbxj9PPLf+ENt6;bErsH zbGeZ&<lwM!V4!$x_Rqy_B#i2y@qDtOC zsxlLVX=l-i;KKO?Ys=t5=eSKxwJme3j=AfiJHIUF_A1 z$IiUk5^hW*GgiojqDSQPdG!xLY{Sl7Bg19C{VVFRu^SIsQIJ$C$>xd-cKQAuSwi0R ziX(>OIF{&j@)4s=hIwm=;vVM_`}}ho|b-*-O8-GH>Pf-qhlupF@AA=wJwGXW0@!qSBr#D?L89t^4~~ zmyYE2Tc_4ODUryRPgCD6oX6{M@6pGxc2cj9tminz9-*X9e)0HC+OuzNPtsg(-e1KP zMt9Clvn6}i7eC}XPBGqp(}QFy{chUPNat1J6PbU|VSwKufqd$n9P`bK!Jf<<{pVszVu4TIVBHU}17 zg-z`f^phjJt8#5uIv3;L(COWC*(1NiyAW2N~s&{26efx%+u)7v56(=ZE*p|1OB;lNoe8HF{4KaGBL# z9n_*^-@70D)VY_U7oL5&7EA9jV=nq;$%WYJZn%6L>983~peqXvs`sudxT|DHK9MML zTclSiRn5sa-2RJO)U<|!wKy~GI90ITTl*g~%Z{}0!RtgP%U9~=wnA8v9?^+zrC>+t-ewi}$+*+`9n&m|k5zn$Ty-F(D23$n|W$z3??b@jPR2D*o~(%cpn(QPd%s+P&!icUH zIk%mD-YfOFb}#%UO`OHooF&*)EcA~?wak-&`T8r}sZ=t4MTQKTp1-}hnZJAU^C=qW zvgf=Bu0gM4OJ`KyZ5j&H4`8dltfWOT#y%EIN}49CWaFAv&SS1vwAR-+*~n+@c0^$Z zJqttJ%CF{DQ8^vFk!V-Q75>S3hxKhQbqbw0XWFQUhzv_w%!TKe{kxRbH2Tc7^v^K8 z%GtyXy&Wr;5C0ZeHvgPkxu|!$>Rg&dnE0lqiRHXV{%*&|@VNNO^}^cPyf{-Luj9f& zV{XfWZB)!0heiN%VV*j}5wkenCb3KRnvUnS^vypd%Jl0j$pLc*RyD(ST^2a>{uyvz z*rQMj=z^W9W{J+a_x3n)2cqfKyg&3N$9EJ&L~I?HHpl6i8i%-tH@GbPX^45aVSdw7 zN_3CdW47<&hKP1&nX)N2pyE_Jx6wSbACYSJr@cn!>!suYRg392HH?fEytDoD)ehIv zQ_0h4Ry^v|?wUAA57tnJoA7V0lVAQt+CNuo$ns~ranP|n&yL!p6n!Gzu%Lgww~0xE z+qH1YH*NX7ofx@j6v6w=#Zgv6(&Lg>l10s2A2Ob|yHJXx6Exge6IEUcj@-T;yj(77 z-2k@3OXa_-#v^8QZAj+BRz?G@g$HUOJmW1ma zSLQi&6{*0RQ-kOmDbp2RNp3Psj$)4;ntr~d_>pLI@G_mT*`~y1%kQ9wmF`o<#hcaX zK}D7w?!r~s#S9%+N##;3JWs3JubbY=aTeE$V@Pu9{rNfdRU`7TV2I!X8|8|zqfhCP z3x!5#u2p#62bCw=0pimF>FMI~Rd*kR`9I5HyM7>$qEF-UGP&?QC!>QD!=&uUcCQD$ zc{Up(OzlDYl#Y?Wf{9L_*<(4B(q$wd7R0`D8bu)A8pu#wb*JmDfAr1llJUp@-=gb# z*%g>@ae41mlTL%u#eFi3YXl9~h)LPRYH`(-0tsX)Q^Sg)!Pm&-zuVC*4cFhXgiwm= zJo}OIaY$W);=5+r&-GNU8i^-zYE--tIyL2&xu=;&RqDEh0k)sWH)*1J#WK;iPB=%*kvV$f$xv5 zQ?!w{J4B1wB{3C#%;K{hiaGLTc0-5HJatpE{OWX7cDhGBxR!21I{aIx%sJ!vn$H6B z;}>hb=`rMZ^>SHZnY4USseBUjHgfl)IUReS_Xt}rrAE{z>w>*=BK7q}Q5rAkoh@Tx zm6YIUpXqX|M;VH*t#n|c>9w_KD2wT8UQ?QKD)tR{7dqnU?a=RO5x41P3&iu4CeVy= zX*CiI%&d{%RH^A~4MDE2|I{~V$*v3BYoT&~vt(;SZzq1dU~csDa$P(V#k9RcWL&l~ zr}#LH=4C^cd=}YpY@?yPhRvOy?WU!@pTXJ8lKoF7P1xI6y6=cjKQg5&`aI(M{$)(A zbn8osvDCcLg#^yd zRV#{5LfcEUR+Lk(*0tv6#r*w58J^jq-QHu@$@OfcHo7OGde7+X()b5@C#M)bvRBU^ z)~jN)FB)pF_s^j(4Ma3I`+SPXz&qX3rmsJ?^O+t}A&>$?-6vZj8oT z5GftA#X;daQY`hMZ;}qqE8maEcqlC%64A0|lVfL^ zfbz-8bm#vF=X7$jeU`B8Rpocn>RIdD4u!D_yZ;+W9hqnqbf8Z19?ZHfnD=4gyC1~M zTpwg4HzPxb&$)8FaNUrlcD@&?ljtp6=Es@QX$RgA@c&(96ffWRPzGjW+r3Q3NXd;$~@m0EXMzVYlgE=g*Om{r@l<;OOY- z{x{Bc^S^O6(EQjPoZtK3INLcG;OML>%6)nGj_TjcjTGsNU>;9L9U7j#a%jNm84Aju z@OzW=dd^_adr-6Ys+68Kf7M_y@1QNTI*6Ga87SuS)4N$=E0LkSs>HNQpNeeG33X#b zld-9l#O&Y{R|RV~^nd+atO*v*$rK)B2)YVS$1~U(b@A#+j%fol!0d?M2D{dMZ^5ib`kuiE!ru}58QS}2us-6AC@}1& z7O+nbq0eB2M)0L1_+%Z_)vXse=}WTyB6D1SlDJ>gJ5Y&O+ykxP(=F_#=Naq-zK6rJ zm6CqI_p%N*M`)2ENgSTJrQ=9P0DxQ{x&sD+g{3EcHU3GfZ-HI;GZN(|;`&sdS+C9h z`lrcB+E=^Xyf^O_AT9~iXDB;!3{L1TjmRjwA3As;^JYa((*0O6&S2G-USe9TlSzvF zI1Z5$*Q#EznP$m^GuUKo6Q?*-aX8ca^jF-2A8jC_eo>HR##V^po^4149fERky0zj_M+ox*#65FMc;9)z&Y`BmE3U z+(Wz(YzC$IFqI;h&|inNKA|=t;whj-hGR&^kQwRnfCh;wRu>GiY!J1<=|INsJP|>q zqi3)W!#lc3#CZa;Qyj-SnLV?jx}?($OR z#;@U>HVz^dQ4$)CgcmU<&+c4-V}tt~s3^+@#%*yzqh>vXEW-e4+|Ru1Ah{a8 zCXSB1pDE_#&7>z0J_S}t87m0`k%B-CE(fhU5wbbHJhgwmJW09Cnn?&61dZ>9Y7n$e zUk|l2s%=SYZT9sH?B0`S!Y%}YK~W`dU|OdypjGw2KpFz^Pvxt?H3@!_DuUQzCyL7> zRnGInfhJ46NsDOcm;?H6w3K&zDgJ1Kdomyyh4)iiy-QdPAe+7aJ`Xo?2D37MO}93vL6?L<<09tK3s%BKqBwsB-0@fcN~aJs5;^<)J+bXKtAWG?qYTG1DmBW$ zpuQM8zL|BXMZeWDPNdrCIn9gvQD8}Aui;kwjKEO|Sl{MD4D`-+8_|9r$js^&>-1~D z`MX63>ZOO7L`xxaEm0*ebaQSv1g!rVELl`Dw#qs{RgAyW@2etX*N5-S|88f$3A!kR zyE*^*^<(L@E*>sXi@KM$FRTX$rb&z+P6w1L`9jZM0OqIUlRx_80uJZewXIEXgx&-V z;JXLFS&5{@K<$sHaaVc+_u16-*^`_c97$RL3fid*Waf3tB3&#x)LdDGZ9JDwsORjV$bd$p54no%^Ay9Acg zutxhwZ@lkxSjt)5`f?}wkIRUp;s%ET^D8o$k}JkyV@>p#b}Lx(GuTR%@;<55I2!7* z7{n5ie*+76_N{+VHR}xap8OW+%X_rHsbA2?tsN|~@I`476Cs|_I+ z?^(UR-hMCMHb#b~8+P}tN>VfBO1nn*-6s(ntk6mZdM*XRVkZ;Q{Rt#0)Qr>-MDpNK zlm#1Xsm5+jR^wcv`kM9~%3cql+-N-v&tTL-r)IV7o`lkG0z*ImAcV0%-)YG}*pv+f zHF?k~o<_brgK^i(#t#&{2WQ4)V(16o$_{|fr57h)r_pxe@+<8T zncvb=F&g%~+&MB^afq0^uRC42SVgh=*}vr5rIMMOe%1TfMl>50M)Z|0E}2g9u{ibF z2|Tu7MXzKjTN_=<=AF3j^wiQSb*fyRytJ)kv#Ubt8D%WmdmN83A)gHZ7)`&A1s@(+ zhiqA!9Y;jHNKfQfoWk{M8-9Tf;>Hz|mO{$;mo*SfId*IZ^ZKB*^vY!{=0!I$em2T& z@pDvcVv6kWbdQX}Lro0ScC`~=wiTw3egSxzv9vjh;D3gr)O-dL28j9(d$>{Nf!+J& z_#8WV8U8slDU}Ln4JCw@JA)k{%mzs9oX}1?4gAnE@eLrQz0P2G9t7a#w%ftF9@x3! zYvGE1&xoAIV#YFOux*OAtKeguV&wEMHvn3P)Pc~^-_0}FXh1N0;U?n| z{q2W>X) zxHPQ3OS|mzQ36AL-p={co9GD6f2-khhh}40Gd8YCvm5A)>G0 z6KqzVs;egV)@TOVSxA?1dkZD<-i|AdRpvP6j)f(%Rk_4cc)BQ^r^)=f_O7EmDD>$f z!wPZts4V4}dx#=!zJ-siDg6TW7Y8GSf8BXr8d<6LhT1GeOEud-r93Xkc^5_CER3No6{m_kfZ@p3K+5_JSIrhYiWk79W?dfS9%x+V!)(GvWb| zSw$oJ?y(F$vt{xSbBZ{I{9*r~_di+pl3ZemZ6fF;cJ>?BMo0o`ijdhKhc7tnh2&h! zKebQt-h`+o5@V|387vk9c3~RRB>fSv1ONw&7JG6Bdb=Omy5n^M+=2!|>`?}kLZ^fP z*0yaq7VWz;9$8$;5sKxCqi~`Vze`c)_#sp5>vFPx4~^sP$aNlugekP<_SZ0{VbsTF zHF6m$Pr@5cKV@A0bwl;0vF>OIkH9Cr2P+&GWRPESmM%>FdOvM2R_Jiv%)m4ZKNLV` z-8y9DZiJX?hQJyDE8vh^=ELDNuW&MzNN3TX~$G1PPz>;j0AJ&3^w(aalkuCvGmlMbWG8l(hCM} zKQ{-ycF-!_9sCPFwrgLPtt=dKsEY|KU zlF7C@?mZEGe6-A7gq$Qt%DjpDis66L{V%m}DJwDakL1(s>fm1J_%OBR9T8sNm9@|q zm#>c^A9RTjmHYO&Vq<-q|Mvq~5%8MX3B%G4i{oj|zJ%YO9;LZc9(+d#HGI1%Ygmve z^YtCe@)^uXU(n~6d%}g%y2b1DdXfC4Q5Ej`Y1N;$TT^_;b!j5@*X4?X9|kb;79jE! z_%ZXR&?3<~tAS_8Euz8X|NZ&5vV9z35l~-(OaUYWFeC@7WZ@iUtUTknA1vNyU)bM>_gT4PLNSVK>>x$O}d;Kwq z|3!Loc_aOg3_wu=RmvF**=z<9$65@*_TWR;->JIvl%3$%HFI|Bvd8hQ`xJHclz*%9 zmQ3BQo?qDGQI1W<^2zM76fu$LQ$L5;(>e)k#2xyQT{bsdOiWQ?;L{3qG_iJHPA|EL z^PPsHW;o08NkJ3#}MZ`)x)N z;WN6dlV5vkp4u29kgd<&&uAw8ff*j2oaQ2k#0md%tIZ+DUj;!tJcEVf6gx3mkt2H@ zwXCFmvp}!`+8_!)mJ2o7VDnV(1-3n@JdD3FP6BpDJcC8VoRH=Y*hx>vo4QRBy6>UJ z#9T;ity__bPs$rJWDH{U+2g8}xIvUiaLQ=!2@EOEz)Sw+R)+{#dG5gIJ-~1mIKk8% zbxIM3ffl(rQKYvI(R!?OGbel0pNtgpXHH^fGP}t~lB@?G3~tL>o1w0;bqT!*7j=C4 zS~BAgnoF3f#x5h~Yg%>hZNcX)bL_uc;~2gw>LNY~o7mW0V^g5Is2kN^l202X%CxE(B}PK+k<-fY659!`O;w)9Akrr;=o|^xQS|)RD$iL(F9~Ph`mV zv&HU{a!f8xjPoblz4v94sS_;zs~;iAvif(q7v9jBI$gQU7V!C)yvK=fkQY` z_TPZ)2&E7nDsO>r?X|CA0>-UkXKk8GNOl9n7ZlKMPZU6{OP(6&*`}Xa6=eSvO={YY zo{8b`kH$$C6lph~X#uDDs$z<6KHot4O{O?|Bi`CdLUe#Tre7syVx&&u@Z@{TgYzuh zS}U?Q?|$jw*_>{-5~pQC$`Ene1yW}C-u)blA?x{lRrIW%^G6Q7k*EjTI(7R#|hB4{UhKYelV7 zxo2-%PTbXIiE20$Hc!MgqC{=cLja@>JgA#dyXDZXIGP~4aRVNzK|+^vqi6UqJIl{! z0Hl0wAQg_be&>Kks+6Jd%V|v-$|G+@(Es^s+DcXB8BBA4pK$dDW55}#44t`H?3)|= zxyPMAQ((9hhNuB|IN7>N6^l&^a(1xsS{re@!y6LFH0`J0`soo9?~m}mB{jxvmJNP6 zO;oZP?ahUeMipF_?aq_ZfQO$pJAX!Fj-CnT0)q8%fb2LvO|`}vL$Y}rA)d&T~S zy{H1YzgT*ToGQ;h#%2rOlsXQ-^K(5z_0IX!r`Fq&m#o!gO=uGRsXF_q$l{%>#a?TX zPS=Et?pWch|XCEF(u*H)Ks^4P?$&=BunfIA&1&O!F-+(01pPlK~b)_8fnmY^V{?wZv zy}cj0jnNJ$ko`!)^?3}0@tXZ>1=H9^0H$UKL5@J*7YJ>e(3OiAvr{Z=`F|83D{v(L z)K_ts8JgK{$kv=6CH`ow%GSaVmkTZ;hC zhs!(C-j-NFTa!=cl zk#1KekJ4y$4Au<@Ys8cgb`Be{trrZ>D1&KgLLXk#49ZuS|h>4B1OOUU9u%>Lk2JEdSz;-PVv zBo1=wyP<(MFCH|XSxt$@O?pR@ma6gQnG}0e8<{<_#B-vJ_g}94w;r@-FlA-%rmo=T zv;x{we1;N)=CI2+eAR#q`qCccK$+Ddf_v@&;xJ*XZ4#Tq3$n{2)^$k>N`{9{e=&g? z&&`F0L|>1kR)&ck2rt}rw${sFuTGt4x*qh_CV6Si5L12O8z4oFFecCpp5RIPWcea+ zHgsWGdu6S26liO%tu+{ekKx&HE4;&pNQ`P8D3C!Gs;x~mv0{%wg<@0sRA1|*ua7wktQ7XS^(!=gw_EIZ7wW~mto=Uvt$AH(lE+~4T+~i2d%k1X; z17E;1Jy_g>5JOODI|V*EscTSh_yu7Q9?AsAu=JcnaQ^VuSjDxoHPz0o5|8ePM(8yM z@NqwaK6lEgfrHeNCU!L+O!Z3k1dZ@s67Q0+t{LZ&FFxXK*WxUvI)nLe5#B3?^ZtJ3 z@JRgxB4o4bph@Rhp_9vdwhJhn4APzS zl2{97*KnDh-d|i$e z2=ft;4Y+LqqiiL)ybc*T{OoyKW+HcaBZrL#D9lA*!kl}BzIzC2=gE@^NG?R<`{N2koV zKoy^j(LiafqD|;i@`E`Ofb8bOfd9oek&9mYkC|vBVUGJ}yfCDJQ5!U|)B8W0!g1Lg zy!=)m#>;XBGd~R}#mt#WLg-RhG8zY*35g+*28^4Dq-<4f%sod1XTtC+b>L}-Bk|7Q zzt;pQdSNppQUDZedJKdnB{W38W~#iD7?2X?R3UO}L?vtWVd+|X_a`UbFOIp2=UXq@ znhmtv-@RD&>;f>i^rsE?B2I$S`dYa{=L`O5K$Ife=CCFL+rKVoOEhhZn6U}Gb>LA7 z;W#=)@t58;oCDVW*bzi{e!GdxP1e7gt7CtF#&^#t))F?fLOvb&`=MtdL=;p|t+w{| z%C2L$9EC20Un`YEn(w}B>seY@S{5~PKViZiu|0V6bzpLcWN&+Ay%&u>(iOy!+$<@f zy*v7Sdpp$q@y$yQ#)0jOP}s40A8k4SJ*E(EfPV=4J=+H&4Bs?A@c4$S3Zs=TH2T)U zveyn>GR)SVLJ%p*e;JOywOs%QMP`oJ5JVazf%i+^-YA~MHX)1w>iqY|;fDi+WEfyA z1*p}O_TRs>gmjVavA5HXi;g_aZ{!)iz%h|}3&&xKr|WK@%h_LviRS$n#Hq`3-c^M) zh^p*q81HZM+e4-n|QV~S_feM>Pv?l{g@Vg1Xipy0YlV+{=xXXPo7HV%lsWRtYA*va%Gz?{!4mxoz8MC zEPiJC0j;{$npTcFW9C6_hQi}Zjj!DcAE|vV1tv0)CVvA9V2te)BDFjm0%4Filx-Vz z)J?+*7O#%-919AZQ;`s>Q2^2lcAOgeRM_|d1X6dIV$AL*rjE_?$={kc<&vCa^hsZu z7h3G>=D94;YXA&M6Ca7h6B%YvY`2_0_Ne$SOSYvJHF`PuJflT#j@fAFXD-bh^u*Q{G= z=a$)9q>FQwaD;)nsLlA`=H$`gqg=4`fcD19BMJD*-H~yFBUq|J6Z&oJV@1C+n2m@E z>9{4ZpdlkA9sv!RR#LB#HQr88l;M(h@dCcUtSf)D6|Xa>JHlqO=XjwJUg_uSGu5jfe;)= zqzfuZGuaZ0U8l%fyQ7?TOsO~7#d&gEpS6nH0mfGb-_n7)0>CSABAoS zb@abV?pV{9esE03?`E5wrl7LCE&QsxkpJObjNTNx%Wog$5nVr>s{HnAjpacEdi0$7TTPQEP98_s zH)k^eF&m8y(ENwk#C`I3>E5h(paO~374-BNOH|FS1LG-@HH|(w(9h!R>O$E|b-S!5 zm-dVVVn|8K-%_M3FbrHKj`W`fAJqly$erQ_n6cjN z-hx1bfNAM$V(OpB{^5-6KA)m90I%jNU&)vcCMn3r<`vK9K1bq;j8c z4rc7?e$Zm1(bsc(q7a@&E4K1}rO1ur7TB&ET^^G2hVRk?SHFAxfG<2zpKNwvRXz&D z-r}<_z@T{gzCel#ch+5i)nJf@jQf~G7k)(q=mgveMj{u??FRrnZT)@`yJ-jejF4bz zO`EwgD*oZn<>l05*%JzO64@4>Bm#QH=p61mosf=D->EZLN3P6l`57#)sBc}Fq>ag) znI2p}X{3LFAsr@fb5OW>pXTJ8?0!R|N$Xh%OtUwYBb<~|v5U#VMXLNS<(CzB6A(z8 zlcz-^HYmN2=%(f5sr1!AmN~wUhjJbIrITMwVNr^bhFo=T$|h2JwbpfnK7>~Bb<-6p zs5D5rT!Maaeg5#Fvq9He?1@KCCuPoOIDVWHBkzfq1JC1{N8FpN{RXrZA%S8wKy%k}y2yg|#;>GW{{7z-^S9q{*^^ zk`cZvUq9@o20*grpK(=0e_PQUgRoaxtZN=*SMA(Grs-MrAg>%{}QCbmI8|7j*WvP2OY+A=9=v=s7_(CyKz@3P{P=+2R(qEav zc@?&lVzK7?DER5S*8~W9rv`i++Pr1lk~uw)6WKfttyqMialJw-G9IJH90WuawrtI2Ul$IPCdr zT$CGZHZW?e|JS)t;yy`qw6cOEIGSGloL5w7>bN!a{B9G*-QL+ySaC0puLguHj3~-% z44{W4hQT?7$F*dj$}ylcSM0iZGy%B-%)9Zxw;J@?MV{F~paA52e-Z6H@R+Kkp~08I z?LWZ@*@p!)MCAKoMTAhbq9Xc0x-2TQDL|ky4|@jt<5RWc%S*T=>O3u%Gi%LyaR|%x z%H@3G%2JAUYc!Lg+r6a+I#D}@_Y(zIW1-+n{EktMwPYlsX3x}FbgrR(SBh4%hv7)n_>*)@+!YM+6>579o{1oZ zLRz4wW#;uCd8G3I={-B?bOa~NEWP8AOt-JI^s4$bbSmY-2Wll=B2tDXZTbmwwt^3Tj6;Mkv0rGs!wLf6_oyO?j} zZzVD4X)4raLASg2>K8Ub!%-~B3*KDT&<-a6)5KGPYzBCZOc(?ehHcK|M;ISq2n%A{ z@1!Wl_t;(4PY~EI#oHGY>*5uHk^X}`A-gwEi0L!lI01t-U>m(qkDR`>5cUFC)5=#4?OA+6V?z4jSZUk`P}2oz7dv`mH<{UpX0feC9@a8d%uR2? zV`yr5XWdycqQBjtmIMB?xsy#*z~B`$rEe)27;l;{Ty?@Ur~C1Jo4tsUiy*%QWE^TG6YM1vP*kM4`8F5UO72n$u37bD;9=amHYT-@qO<6_fOtMyz&MLdX*@EMe>R z>(E((((RK`k_Wq8Y+e`SO~D-;ab-$_MeX+1b$+c=kgI?)jlI9t1nX8!#2n>;o(AS9 zC#O9-1AeuoO0Jm0JLxj&;ywl2LCr!WBcVV1|L!7xjko-rJPEg>_%dJK^$K{QE%&dJ61^C5yh^}#n!#}+NtkNns2GGGhKP7W zEuXk!fi+CCcS$|Gcm)N}P{HAPEAA952KLC}$CKF!E+35FqJg^fr*@`mLThq0qX@elH|+;3 zo)uw-V(fDQF=bCrS1>I!Xi>O>-G$jB`D$nc_f_UcU!05W1dWYkqtg#%%_RZlEGi%$<6|zLgK*6H}kIDArkYy-vkLVMu+eD4i2l+ z90=5lHMQ}?oWX)%R;8z>y3eqshoYYy(71oXy|YSAl0Y#dq(7zhf#nT;im<_X*?WLk2HCtFSHUlSXP;j83AlF+NJu*73J{72PHe zlDV*(R<~3~MgK71pvupetPrh*-w4ygO~hkeAl%XUnE!cSx9Fkh87z2^Bh6)q$MnVc z7l~>NQH=+I#vddVH@yjAv&9R8DTYgCIL`OY1^DkVCSPf6Z#F~y#*Rv8XreBe zpY~QtMdBCik%Ao3r2WkoQYCl2>%qY4%Y5&FnO}-qlU4-0h2!QakJkBs(?f`~ju|QY z`5ABr~tKUH_qR&+4alozst7> zHj0Ok~Xa$%0czKA=dQfSHc52014|DY6Sc zO?(0dcaEnm6*0$f9s(%4FC}6~*@h4p%+RHQ4oTfF6bY51EN3tTs=P6ZKp>5Uj#qzO zc%9b(;y4aY+Jv4A3`xI7ieKo&YQB$`W?f{XF(hN^D7?$w`HJt?4u6h;>ahAukDJS) zmhI0TM~AHX&lLiQEH<58Q~f8Jvv*Y+RRBmmIo^c**er9DMz83`jV%Kq4i`^*1Vk@p-x-6I*z3DxM}}cj z{Y{1IQnEGausefEixU06lqVfl1?wNWesC;Cf#4^#yh_sIy^col<5?dF{4oL}jZIk8 z-j@c9f^4tWLhDK-D#g%D7WZveF(?oz=y^Obx{AHg0@6@}ABZe$U2LqehmQx~ObZp8 z0aKvFZ*#@cGmn-uRa%Q%6rckQjZ040EbPVy!@1crSO%R20^6jUjzMhRH{QPD_fcz& z)ITh^ISEE+Oyvj%X(&?gn%jbMJUqn^!F0|qSnh%;y}-rUE@?)3JfB3loTZ&-Foe&~ zzQF4saWvR(J)O9PI*FBi==-#3dWrT?zlWWL^E|3&K=wcDxkTrVAw&%F6`wx+Z_cRg zzxLR^!#$3a3Na5x{iwaMR~zd13x5$%d??!~>24Mr>nqTN8UM{udx#o3QGg=To%8BP z#~W&lNY8M7Sz~ZuNU^@BArx7_tK0m%PI)A!2%kw=Cb(Yp*G*Fx)^f$AiP0oNUMLh1 z@AtZNXC|gn!ck`|P-_aa{ij1${SW0De(PX^71@wZXRkQ$&W-b#h^SeUK*U0S3#? z9JR7~BQ1cz7$SPTv&W6MN0$bEPuzwyvhR>)j9l&dAJ1&>H*La+$j+>tT4Fio$#_lP z3qi0}yTN`_IO4V}_UKPmbT^?5HOz+b`aD)Eioj%-U~xI4!?AxJvwHs>PIITpirU|` zS4=%_g(&`f%TT>Ap!Fy=9II}71EHx$7gm6Bvr|Zv%-(6weS-l*6yHRe8pwsawGo6M zO2xx)$7nA;BgKIui$XS~Jgaj>>*U^-GP4Di&#_`F-lMvFxqq04JHP1?P{>%bZMMT_ z)Ex~)<9riS6{2BoI4ab3XAh|mtC#%OfpZnW!1ZJcTSoM&GD}Nz?*nBUOz(>s= z+EPOJ0Q)vZ!242EquKJqE%TVQyFG?e+WhC^6TuZPHahcq4TIS*%~^3AzUGbhrm+?4 zW4iwW;~du-(BCZSP@s56TxAnzB29Jt(qPp>`x=U2Jn=t^C4xPFsL)tbVs!&OfrnRW z4X76kl}R>QUjw@Dq2a`xe9Ngns)AH(Nko>AED%3#Z3C(Ku^<+Q-;OsP2bH0%B7mbM zdu>I`LD3iNHvJJd!Kiw`5^{HZB+bXc6Cg~722S5 z=?*RR8qxNw-W(MUhwmN%0&{9w>q4cZP>BycQD(H*h5#~2pJ2RV%U*$*r|u32X}lW zzjD^>3Db(;54+buVgOGE2#&n4_m9DOPg2X6vN^vjj_d022nS()^!Qu&Nf9NG+h}h5 z<=U|u5_#HTyB6SV?^OnJqN;(9)3bN{^uM3qCfS#}TYWbi0-gTq+fA5}B5Wn@kM$HN zrY*1T2Lfg_Z}fkWi*kpA>EL}%B>eG90a>d+E9f>sak8Y;FeVZ0$QN$@4m&j9(&Jcf$^eWgI7h|x|5CN$;H@pq1lYF;jjv)Nh%a}%?I%X-!R1bBEJq%@UmDP>D$Z7W51fy z3FQdl<>{#7&KGVFgur}k%qExb|3mc#VbF13aw~X7ss{yBP#?90r3n5d8W6Bg;o&eN0fUk zMEp1iI-9l#o7)k4NQAu^@;pPMq)`dlqGryFTETKE%Df$23@WlBGvJl z9f7>RBK$W0I0IOPW(9f?7zF5pTRYhDD>|tL`P$lg6hbS8&gE| z>P`me_SU*4h09&ad{-26pVFWoFeQ)20cYt7KosLG1Veawlf=8nC`% z3U;%;p+V@>d*oHuiY7oG7F;kF{X3@3=>n<2vUi$AR zKdo4c#+jrx&tU9Pinx7kbVH!;r}Y7|lZGkiR7Cj>n8Nns@k+dIXHvFIh`nNT4M~&C zcOK5Y*N}skjr)+#4!NoDA8rTtkAb3hqsG--$)9}w!6MX(Ksr#mi%$tVz_)_ zqV}Sr3Srd=T#lQ0xdZiyEjBhA7FK7z1qpF%@$B&|O)NzEXsBba=vd*Ph+S2kgo~56 zY2WxaS<Hyg@HUm7q>~XA~PIxL(FWtZ(n`KVK6-kQ_O-C(Su! zRtjwXucE6Ai>m9QB1nidNP~o=bms_2NS8=RgGhHt4BbddcOxJz%}7g^NHcW9&;v}o z-~ImZ@bH7@-gEZeYwfkyJ;#Lb8340#FQdAWQa|WI(7#D;;b<_J2WW(#4PrG6VN$Z; z{sF4|t6xxcsz>HfnE@QsUFhV0PqZMmQfSwBGy?3_DS}nbFI+q`PPsUIZQ>G-bf}Vx zI#^F%hlhVMh&Q{D3g^nY?PLH$jGA00(u^OUf|2f$1%0KN!QnCaP?ZmXC?Nj+de1?S zQD33xbQl_*tPBhZz-^HFW9-t0q2J@fl;+H8hS64_l4`~OqZ8xn^`6mS_w8li+2v_r zd>b0I&^^?c2)MAbOs8BAM>?l>C4RzSfJrSprV=z8BVVua{z8 zN<$vS?X`et+2g9*d8m^1!R)E{OxAtmo1bQ852U*-FK~ar;MXSD?RSl6bzM3@QB(%q zvl`#|Pk$yo&;D2+c#TY1PFY^i6rQ|qp{_Tzd&s!H{_hEH6_De$IgHRp6p+d24**d@ zWd431QOhIvLOZ5+OT23e(?;oo7WfBkj#`!&lQndXLP1poH25LyjsO+f7kvnBaexe1 zB0C;YJd)o5PqT*Ka0G0C1_Wbx0p0+)&K1cGfnaEa#hw}n-SdGRq9=nIjj${;%7N%k zTnTs?m@JEKH$S<9rHqXrZasR#0l9Ws>r+8P<3C`%E{(z0DpV}Aq@_m>cnJnRPh5n#UqK{+4W%}D80h_Lvl)nJIm`y$3CP7Mcl191 zguwpgT*2S1ktX#wety}Pw-uIH16)7h%w{t?!Rmep7k)cv(Dm6|%IIyIC!y?SVf={4wcWBPXY(-mPVWMXQ7>K^wOA0lRcL1y_`4Zj@b$j z;%8>0(gBqjX2mj6<&HKbGB-zU*YfJBmLvU0MHUFiu0DIXy=Rb3ztmGb}# zsr#DOW`6q&8w`&S(=k%nFD$H{SRnyE2PCbmZ8M?vo{UVTL=;=E0AuB#AD+HI9h~X+ zHJ5=M5;C6twkv3uTGS-vCfjpn><0mRYp(^YZaeWuS7Zfxr?gq%D!66o-+|S^+yiOO zodyjKqdQ*Y`(H^x#DZ!lJ-05T5#VWAmuRX`&d23HZ@Xu0EmY4iA^ZDQ{ed*^nji6u z-sdeOx2sX#t#~+N7){wj5QO4Ip=gi%nD~CY16LTJqYXwu*G&UgnE;b9aUkwND@xoj zd95wpcmWR*n)3&BC)k7mXs;EMC!VUV^&9;5|Fn6lBVa=B^wl3ID5)H;&>&bIEpV>! z#YZth@E@)=-;2ojAn+qgx^vHjNILjCeOduhr`o@De-a^G?jmko0Q|fxZ-ku4IKzRWVhH?*Zbt|0td{l=W)f}t@SZti zb}asDIq=dsN@9{%S2akoY~?$A*(B`PpmM~H`EKZgmLT(=xhETIDyFRQrb9IE78nGz7d|fZH)x>HKmv@ z=$uX92>4aJw(v1*DE-@XDK$5c%5UfEpoQma_E7YRJov>r}9=s%j+Y$@*yl)2&z9r3(2RnePVt}7;5vgEktSkcEDaqq|e^M{@_@pTqEN&_SI}$UX zhMZ?%rpTY04%dCr_Q*8Qwm>Qh12Gh*leNoAi#S>K9Jay|5tm`w8n3x+-j%bGl2qqD zs&MT^5%*n>KLSYCHSy8>Kq{zvFMCaNZgiz ziepek$la{!WZhzqbKcp8K!^~mhyC6h{`wEO7C` z2O1+-7<_nd{{rIv#MK2jvOgP|06Iep%pY?I(Ncr+Q4e}mCH!rsaauK9GL8&-bV%wWQiucC$7so(zm#>6qGEm}kG1A6ekTqehok{k zTl2uDjt`(sPb{Ea@xq_|P6F<5=FNju)ssGJ-L02-O&9)=p z4&z9%Dvn60%2?SN5wGmQmHMNVlGpL!bj-S=;y`T|$Aj`PQOR?%yK>4Eg*1MKMjf65 z3F9UKq>V~(9#pRbR8FsD0S>Q+ocg@KJ)@QSmD+G7aQ~aubrV|xCRyJb2%eoS4ToCh zx<0-`ZUe-9gAr;EV=^0Jo0gg{j`au-4K?p)*8Zu3{~`=Pei z5+D4EWcFE-P-hSGC|Frg0f2GaA!hEl)`f7!;G|N%>zBP}wAM(-xJSpe&5#0z(wG~~ zG#bKZK(tv6#5wGn)#GiGy=Dx$&DV5|92llK#T3J?Axh3uN@)Wgq=uwoS7ZT7HKwGH zEd4rmFRYF?@A<7(AdiEI2#+`J%pr_D>Bi?v)+O!@YYp}pWcb+`4Sxrm`*eH@crZo{ zc;Ne~%*O5{_C*tk>F?bc>%K6KW^|awDhereWvt&V*JB{&NBF(iO3VuEHVMI4d?;cE zAat~#j|*%&02%=z(+%`$!~7xRB+z2|I^`7j8`RJ07DWJmj9G>M9$bQl^&WFDM6ZW^ zh4{ShM#GnZsjq*+#HE!~!WrmkA!mO@2eA~dTzf773#Yn()nA)hmGvS(#Yk`j0|ZTx zhz~gNZT$nRzO1wFj0YUJvtGKo;0go8rD-;ZaKFLj0iXW~dP5C}Bh4g-=pIjG`=!RY zkJ#YxYKFu#=tEH!!5TVqjUfZv4 zIWP0~$nnR-Yi2KOfciv~86h(ve;em$F zCc?M#nj@8QjniS=_lTq$&Oi4O*}M9X;=&yM3k5=}gm%R2xj#fd;O|2ZLoKTPCSF_! zfR%v9XB*DLWd`40nmXT_PuEsDX2gC(otvXWOdJ^+OCiK2D8%nk_;R;UAY``|SO`8! zxM8dyYU#{SqW8U@6Sq~FFVSDS1M9hcGd!ff?8g5qQlz&QkW5-A`(A}llZ3^VnRn_g z(>W6CY-TG^&GQ7Gpr^tjpA?NC_XiyT<-THx8b>3cQ+&q{{6qMT|2+v5%tV*w+8WO9C(&|fy?;TJ1vXlfYX$`-#QC28i*yPr|}yF|8J6q}3p-ZbKJ(@=$P zE;^8jBGI05gEBy_G<1KCk2!dclf9=b(bz*<=|r||y_tTb%A}$bKoRM^H-=gm^OEH= z%|~6=t<|bQpY8s&P_O9SqGJB8Zi2U2pg-_d(G^ck+Bhj}TZs@j?8pHSGw!MZmxvFp z9YlR&x|?7D{nJr7IGAnvlN~=Hz%^evMgoQGlR>%=^l%|+_f8G7s8@r18*A-&zppS< zpD_y1nTW?nfby2f4Te`6#p@P65+${5Qg6}SZ9MvZBZ|9)l<+}==j@?f`*o{zuwZz5 z)`O7ZE4r>==n7`iOVla%{LEQYq1~jI*m+*r;0+-}PS#u+OaHA4RKEb=2B_(cLY4Ij z5^QSm*6zUQV)DX}9+h)Pk5A)Y+~$SFxtU<1SfQ5!!Vtm7xl|JBV%r%GQtXTtZ0-KD z6r&wF81oIY8-7n|*y|cy@XH_y=9<+;JKXl$l!gbGbsv`);j}Up~?QSc@43wD-2*8&S-Pi{^%uJ*lTO# z6m5Q_k_MgeVsZxH9&!YN9my6>-)aRTPz;ytB%fEFcg<=D05VlGK!lLbVc_R$Qb4tW zZ28==c%xs9rGlF|PR_tH^(G@h+qd7mT4$G&S!>^fM&7Xcz`STl{wc8on*g8rTR)-z z_*6R4;4PDW*bf3dsO(`l5%{_sZYX)y~o@56HQyB|sHOT5$_A5|t<>l$f9 z-GSvQ&No$@@`KH`>o?mH7jxCW0yCe_d{iHEkF%y+zjWPnyuQ6tOPon{%9c6wC-PsKzEEIBv!p`=_zfW;dKsf^Li@Vo)i5z$(jQF zrST{6(1n@WRVy30v^T4bzwEM9wO@MXx-4Rxlavw5`{WFo(thB-J1=vx1wDp|}u-jx+?7W%8X#h}*nDP;%0&yahlk5RgnLs}T^%DNI=4G%> zef`eq*Tw^!Y@f+g)BI5c`U3U9Ss#STSGKLJ=d};?9U%P9(-;6`HD)}}S?GQZGV4Xd zzRx$)VU9={h)h=e?7n853Gew-US+v)qJSbec}iAWX0*wkTg{0j>W6FEcyUL`r0<~# z?n@a-nNys%kbFO`z$aeyCuokSi?xQT=~~NW*Zg=)2VyL`9fxT+)FRqHKu@MztD!o} z!(iqqndBL||GJAaARtC%BB+CYoNBN#)&AG1bL(lx__;S315=nxQ+;`s2pIMPK+T}; zU?x+C1ujoGa-_1bPZnf9u5m`D>Vf0vi(;<6-Lj)ZuPDZEth! zRUbLXT=0L$_m6vh+_Idx-82q-pP{<|fMh=L{?}a^z*vU#dFOdMXLq?vrenU9*$&ur zPK4Vok{1&5UmyJ&<&=kyNt(k{{ROb9#!6R{_4j#1i zeB1A!A!YJsQ#Z#7axFevp!4)uy{vi*kMVUMeTq2Cl?c>PN!~K|5FKWNhjV)NY zeiN5>i`}o75iD;7oE36i2|LN&C`2!3gS-2(M%%!>^Lk~bCp(2mhZw!faX#?A7Ig-V zDgn?lYL=u|djYj?H`v(sHsYY+du$i1Y%d>=?xT3J&oG_Z4y(3dsMCR%)hPGiDU5BT z%J{6E>Q_*<3*p{QZqh$Y<-3<-5#cy+Y<@r~Q*M!OPUM^MYT9c#wa%i73My*JC@%0d zGv!UmNFkfSKP>zL7Vs;KsN^4)#am23ZwUP(qk+A?us5pLjFS^X)2uky%L zps;4i<-aGD9@S=^mBH~4{CUU$$C-JNZI{%>z;BYT%5943utmEubWoh@!(|e8804PS zf$(LRZxG+S0PhfDGa69AT)JRqIRaCGmEd>h7gsWe8<4BFn@=-*ClwP-f^Xp9xbR*n z*+Nhk)V;HJ(i(Qh`JomH!}6z)qo)c#V92Q=I#_a$pDy-udYnH3BW~!IDn^$s5BieC znBF8jw&Idg!qh1$e-@YYBbeXN>zgE%Sw6BIkzqJ>hqtm4Eu;>12-r;U4z{^#ZOw$f zzu8Hy6OhO2a#DF~rsSC>pQ5x85?KhRu2`j|7NVyxQ@!kSlcvF{q%Z%wN{4tm*(Hoi zqN?&3S`Wi{r*Dsjsb6WI^{Vtie!JW9Gy^8U%lUZq@{Ie5rvIKu9NAv3RyoZd*t-M; z#!KLns!<;b^L5yrB?r+FJ;e^nXB#Ga~ z*q-)fc62xezdI4x6lhOZ`yOg&RYStQBtN*(Cm3nnVz=pjfd`ipX%hRuepzy{>-1ey zJ$##ln5}3k#7x*V!R=3HXC9HxBDh3WbjIY-s~8mO6VoK)t=%c9}u!0`?A*gyZ}m$Cx_Ks`igzd={C5Y?+-C%^b@TF}kJ z;eq50FpM3I4Mu6FHAD8JOh0`~G&=L*f)useFYAi-v;uVDP9z^->*ZLQXL1Lm*N3sv zZEV+{L247?;#(7>lYi4?pg3FGk**l&BOcu`+0T5$_bsaWt>Dy5M|r!im^V;SxqUrE!$ zNl&?h4)>)Wk@{cW^@=j3bb7sN3r)O~uxC3n)nElgDjJhWYbW|uE7jPF?9TOI0qcT( zEO_CO>@NBY>g>tQroemoHBIQdmm%5XPWLAFs`ZlbTgY-m<>6 z#e(gIyQTcR>~jX3H3i(IZqag!DM-j+^uVd*(+V$6c9FaTEA=T(_ zX(!&U?ZY&M(BA^e-N>cPRp_Z@QEs`#hL&|CiIE%`dkjsz;C@#Exgk0GQ~CQD>1QJB zi@)O^7rafD3k{)f4fuacAsF^wOhO{cA_Z>g-k(xBF2-xMo9kukQ&?2DNY7}pO!X?- z=&}gOvBaWgpRHlWV@=ejO7RIe7!rFP&g>nFK9%NuHq}QHM+;f91~iOgL$#)ccxXzU zM?mr9IB6sK&b<`SK)&;A1O=z@wn5<7-+RFqHJ}F&tRa_cEidCRp>wSeHsb?Bk|JQ8 zufBgo!SoCmm(KvLnu>uNl}S_$Sx5yU!RwE$xShxI=Dc|-gG}&{P-2(~XS3|vncrk0 zv2{K)>9w~9pKV^z5asd}H!*%(Y`?G{Y`n!4{7N!u_e)L2uh!ngNivUP)10htRk{RUwo@{^zIUdpy}5ntWPf9xdIZnq zVY0(3GbV9!Ny0QEcT`p~^g1K?$%mrp)$lpg%@^)B(qEZ;#j%SI8cAl&0C&u%fNLzZ0V|;3SYv zXryvaR0OsEiE(V0ko*>03wluItb-hz`rhtSo}uaB(~jQxvmPuvWpYv6g~D-3-)1xG zz6znxJMtp`_$X!3$qGrz{|AaV3Wj?X*h7pf{=A_=#zE%A+L#D+DH*ZKMNe#-+IeD} zr^U!PxAOiq;XcpY$#6!q!26=uEp}zk=Wt4YPj$dFLu_F3kKiYX)!QabY33j)Nu8Op zC40if4W-1O$bbY55fu-2F$UEeBN*>@w(wuHqVqkSy|S7HY&|4zw`tRDB(kaQ^II}J zvI*24lTtMw;%Q zFW2SOA5bE!m1e(PFV=q+ENqVrLr7ryVYTAsS9C|4A3wv;J4N68JG2uKS{EGC1cq%$ z-8w*z|Kn3Pt5#(E<$k)pm#XkJg^>cZna5bk{l!;(65jcZMz9{af8fI0`|gH>`H!vY zXnAgx2MXtE?5BFTaTxK>JX#S)uD>RyDbC4yc>+IuPW+)eUP9qXK`i!cbiOmswvK8x zfB1lh#Y`$>zpI02LWyuUL`rEm{EZ95>A7$YskB#rV6kFG@=%n1n|arM(mB>%QwV5>_q^FuvR5 z%p~7}k}Yh6S7b zB31=+69SDcW>N8X%vhzK1xW{ktxpN|-ms2)KQIhQKl`3hk=?Dx63Rr*?R~i7*b$r( z#@OIvRD-p#g^VStqV`tDqM7|RPgzwP*~LZwA}qLOfpuh9Op!KrLhdQyk+heU?7d}z z_GE<*xk*}>Y(WyeyWyJ6+B1uS7=P`VJ$Vef&rJsE=&mvDh~2dq7R}Y)LqlB&=-D@T z-0zipKE1o7MfjFS{^sK(d^GBp!{|LCxqK-cW13#KdNER5aiw6vBuUs~3cbBF za%}NKygswD1VjJ&jrA?vtHdo^@MulEdG$m0I#jBg~Y1(g8?TX4)%KX(wmRkjJ1hm)4u zFIG1*ES&MbnFU?BotxuQxV_BgzVQXDY3F=;!N?4VPQPQDZF^zjU57Bj`QhMJZEXi#_{Ko`z02VLXsV>phQsGaeL~gds-+os@m+Vh2zT|9G(dPoLbyZ8<}5m19ZeJ>hhGG2Uyet(XIc9_ck|I%qCdcM zr@={>+Fxg+E7ZR}j= z!&!HboeJKX!m|`LMuA^y8~B(X^OB2mXQmNUTg66@RB;ja5y`nC4j zEw^7nKV3l44!t60&Axl2H0zjBP(&w}E zXl@K#@KY+R!hplzQ!kwO4p&ClYUse!?V?}o_!QPxehnX^Io4)naKHQDSZH-BHQex| z@|j~da#>Gm4;5E8QzV;ShX&}(11_}bhPT&FMG7&XSg#Ft5Z!%taLKCX*EWwtJSi*BU(=V4Kh&s4PAqPzj(vtx?%D8`c@}#^=i@7T zB^Y%du+W1!I-9Dx>7^1#62<8pe^qiRn4gRSf%mjGzWZs>dGQ4UXhDU5Y6@f4nv7B> z-_^pVxj{CSEXlvtx44E|2fOQOh-i$NOGR3E^1DOedLiH99$r>{`cm~oBieMNU=20q zhsQWaH{H}2E~DpZm9o#-n_eSqSKbU=T{5)EiDGiUqmmz zzhJ94$UM8c$#iRs5^w*&#f@|QVxLeO4Oj;34MUHgwsR@XCA*rOe3zs|&Zz;69aM0e z&-asKxdni@=$@**BxPe9xeiD1~0I}Llt%9-Jkl;sJQPj#_SWhbgNZI zD%t|>sIu_|8`dAIcwBE~tT*fk<`wkX0D-h*sF|b9+q`>XgGI!e$-1a&XVMw`@=CE| zBIct9&m5VpGIm%7PJUdVrw6fU)loFEiV3^To$}^Zn^NA+a@W~Us#1qE8?_cTld#EN z?wM~Oq~e#;>$J%^^W8PDX|%j+#!bf@AiMd)VucS#71tUppivWfcE&C@QLlff#+gH- lRF)bOz~k}iHK2KFol5hwm{GXJy$pUP_9rn^6ga49`G3utMe6_n literal 0 HcmV?d00001 diff --git a/test/fixtures/ean_extended/image-006.jpg b/test/fixtures/ean_extended/image-006.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92f7cfdee620ecac4c391604542b75212834462c GIT binary patch literal 114039 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


p4>)g1u=nmqTYja(OtrZlJ>``X= z2C9^K>2}hMFaH2`qB)cNLZX4f%SljtGM~7(RQ$ucDwKXfvmBOQXfuPKaC@Yzt?pG0ZuZXtR|IX3leTvrjS4v{ll$*8-xYwbQ(U(Jmy% z{{T$SV(QNmEI;h^a{f;la&a?#MJCQx8eia3aNNvNN(P(@24bF0>TMSn7a0;?0Jd>l zX)35A<)vVaYM+LIbo)I>#RDA|8J$0fI=af2A9JgZD=~=@K`0{B8|qig#|<&^5@`^E z95t6)kcwnUo|hRM*RA(TOi3tl6rn3nk~#1P?irQ3R*=<0hES8df+mcw;3UKBuI0p; z_ya$o1!iX1yg{(}mU+;KEu>}TGn)gbQTvE?1zuHRfK?65t&G+UVf+uuCLsal@hU_a|K@d}@ZhfOMc!`0a=Mf_> z&>h9hYrc0$@44=Tkmel15<+u)H(zwma^m~vxg#scBT3mrWHEd+oOGSpoJZ{}EU(PQ zV^WDe&QXMIw#iVN)h|YThkTwh>@pa87``OQ<2XDx;%Vx0Eh7ur3?~>oEqIGgDf;%4 z=TwBpB2VHO*(^h9s7wDH0)2%O&B1aMBl2Tnv z;AWtrRv_o>Ih6(eA<2rnK-5P9f#X4Z!Mf_q)U8x!a}k_Le8ePNfheM6aJ+iRCAs6& zWo(nDfKePw16FRfgBji;%{mS`%_LC;0vkE@jbh?U@E1Xl;u(#85+yhBfy#*Z3m3>i z{De=)WIW#S`Y^I0f}J376FL|^A~~~l3US04UeZH@C#jjp&Z7jBvzb$B~&_{g435qf_=G2WrFTQh}?obf3UpG;mh`+EKM4NOoAub@kLo;_JbPH`HW`3|W zsN&&FAyzZE&*P|q5=HV7p)f3=%%K|mMT@%!y5p3FWf+wXLa>wX>$*(E`;sJP5-;K) zVB1v7f0LK{{B)7iZ@Fc z3QEP+I>l82&2$xvA2W0R0Ki%+F?yUrqK^tUYN~2J^0H;q*cvLg9Ac)OS*dFnK6Zlf zhK>5F_mP$A+NVuQ_;fA$j^B=AEz`F!Tt#XZPqG+Ws$Z*BRzykt(1XWur97Ga93?3) zkV_n1mLBoUVrQVX?2V#F719&o&_Rx4=q|5-&jKVFB*d7%%ss_K(W6sY54+qpP21Umt6$w?g^@S1Xk)Hw+T6w122jAgp-

QXr=%jhZ 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

21dENftvd(2c5$lsLK_#L zKubD)P9U1Kt8L2iH!kiRTbs>VU&~mR#Ehn0Hb-i6CnqIOU-`?rcj@!BU#2t8*<_bC zc6hmqdinxkD=GrKiWOuly8Z?tpsCnBuxFn6B&ua94iw@gJ=p16K}S>EDp|gfwlOu) z`V?kV8Y;_}0pCdQSKz%E9#9s79i8l)@kzC#m|!t~M_kQ@Zf5Z@P$HS~v15V-;PhSV zls{p;QvgtV*WZ11eApd3!r}9DC;E36j~3}9{+?vkvfnH?Y8KIm;qniZ?5-SI<>36cHtF6yCEbLI)Y!{$->} zOO#N6wlrs`^XUM0RaMn5Ug+5@~bW?0o4?1&I$S*l z-(2@U#>>w8{qz(A3{XFac{zSgLeP8sqWvRHj+seT%>YG5Pwg=8=A%jL(&|*(A zWwCZBCxo2fCk`Y^!};crnXEhYtew(W)QS+$@i12O+jfhXj--}#fRx=;4M@r=CLpNP zr2Xs7LV%;#D?N~MDgpp^Eob&mKYJP(>jSo^soR0PC-JBMa_gvx&KSC#%B1O!H(Z63 zE+}2ZZtP}gj=&s!U)Q6u(sN=|n*Ym3<-K?vz$|^-;xAguNg#Cv3#+~H={HqE7tL>1 z|GK4n190c3=|kB_4K#?X$@u zM35LWvgezG??|9C7MR27*cxLHjI`O^ZZwmZDdi<4`JDP3U`Yj3K~LgmsvtEXZ;L;2 zb5HRKTVQeyIN(7TTl>UahnqP$cN}Opo@@ENS`(9QdH-#Q*X==z^FCDIrggkIa z+nmrb96i7KT@`?V`?xl3gP zU;p`)PDcL^a_FvW(1v%~M8xXn%h{lhbWV(u>BzDt*Ya)dTTi}TOnCVG*~1o{huLsV z<1d6rbfpnAyJowVJH zmhN1tU+!Yjm~s21Fh0XL<)NASn9ipk5TPbm2 zHz!paBK=kJ+F@u3q6}Q4G4LZ7KE3ZQivoU$iVy|Hv-w#mW}GSkerNuc8D)hpH&0a( zo1`{OS^S~<<$Sn$l9DL)BhMnx*@O2jnKehoBG#{U0ZQ09qwU5|%coU_E3i5u)5(S{Gq`)22M$Zr+5r7GeY%Esx0286A=g6#D^) zTojqpY;&k+p-Qb>gLM!q?4?d$^=w0!{UnccjO_-*OgwcIg3S$DO-p4#9A&!bul1OSnw{ z0Igtd^K26b+kyApZXqm%+sr%(!fRTY+Yb0``5_MF3$4EnreC{}9DP^9i*94cDckIB z$Ykm$Z)clBM?I{A+nqqHXz5E0h?nBM{7YoaCw0CuMt5p->J7=y-wyozB+no!1XNb5 z_1EF&=3kMyWCjnJV5XN=(GI4Y*ISfzNdBHGLC4#O`{BJup*E1SWES&Omc{My zM%BGo7Tw`$`{EV=GR=1>d@C|*K&T6B5b${_9q`4`VHXIY#w`f4Nf+t!3_preC>%7& z(`Y|@QN;`OdV^xIWf!MNBX0@cq-7k~-)n-^Fs#4o-loZW#x_$1+Y;+e@sjPxDU!nNper`F%hT12&HO$%0UPU+b1L!9nCw3}SxK$FL+ zrS6f|3mKN2r;#bOjVlSf=7j>@ENTCmgEB`C9#r>h1jh8hkB&a&ZB+7t9SYGk zvkeP+fIgIzl;wIlV!@j=+fxO5$CO!^k0FLB{41r+ogfQtClg+KdGxh#B+m+Mj!0L_ z{%C7M9MDDwhIMIAooL4Ls6Z1}X;Za>C%Vjg7^S%+3>*9lsvhQx_=IF7dHbp{ugJ$8 zyg7U@f~fxL8;Y@w3Q_{*%yc}!I&UnEF>oB;8i?zBz8BX`QM?-lcK9T}F;^<)d@gU` zorefi^{Yk7sGL_n|GPp!z?O!qlr3cy{;1MUm!!au=0JXWoApqr3 zmG;WXuAe6}G4KU{l2LpN@PYf9XnD#aj`u99gEr8Oae0+Dta6VNvZ2KtCgW zEwJ6eX-o=4d_k84o_u!8ls*vg38CW=a{@5keq(jJyZ;)PE~bbD!|D;8WxsTEfu4xJ zEv0Gk18VKbbkA(L&oEi3v-YfecxCYlpXd(qef~l~@~RKz%EL3EQ~On|ncj_j1YVL> z8h$FoOWWeO&aY`2vZio07|c8%S-kMr%f!f;C4|lVrIfqPe|-}F1`Ca@sdBMfn5Jpt zYI|SPp?OQwzr%#M))!`2I*}&CAN*_oT|Qf5m#Nt$O?lxD z7_1rJ@Tb{|$z`@_jaYQze@O!#qR0sepRc%T!=foZaBam_mW{&DCLsCwPYln{+W5kaJL%-yfjq0mo6@mMv zOan4lno@;PwZa_gVV+Cv zQB31EQxq|PMmtQYLn%g`N6$<8)?l{qv(` zEWuT{^woKo*3DoUfvmcXdb>t-iE&Gs=++2a(hcxjGS18c6u{+A3aUkB%isul46yg^ z>^M4)@y{7oY05-~wGxt+oxsc;GBrilNJ$$J0Q1nK&25FUJZ|SoPS?TplHFR;5v4p{ zw}Yf}m4hcyzz56m?~r9E8Z1H|X5Tln^8rN1ay;9`{iX)uEq4+i01nUW9Kxa%i>m$c zsrO3!BG}-%17W9)t!(o@aRXwz6ulkvn z>J#rNJ?GzifL!5AoARH*iQb^!%RZVm{k4Z=_a4gDet=>ona%^-yEMW0xo@_t%0rZK zjaE|#M~dE@dCp$KRKt2yQK;1a(Riz>L*)+7JApS;HaE;YR^D^#OUkT{WU>221w4sC z+n!3J*?05EsYBzl($+~b0{P<7aAGi-8CxDwuwn-gV1w5l^TvSI7e};N3ld#frm;m+ zEGE0@+EcXZtg&e3U$JWCc2g{YuhE>cYvng!d3RytszUT^J?A{}1rirYxs{;b*s&e3{*IVSlq}DtewTZY7Dw zNxMG`p8?FP1?LMafK&H7)JTkl=B0*#r^de-#tSub#U+-WH!3)T4P*S_59S9HZS3LS z>k6kZbu{{g$Ejt}KY#a>STmzN&9+AslSvUQb&|SmyBqfu@`vv)&FrAGtJ0faDywTB zG0;67y)yn>_zA%~yl-O@mBQLR-@Qd4kIyOlKd@Wni2EM-TgGqGcM%@vrLX%xoaM%n zgY%l!>s#J^0DGlD zw+JZ$`fThyNRLakoZNN42#c<*ZUHR>F8YrtRfQZlm_AZRNcMiaBcETw)zsK63~97%11Av6L4Hw8sn5&c$y_g%{ubndlQmhiG|bLDi-Bhjt6doxc-Z7n#oVct|Z;W!0*dEq7E z!Z42sdgMn=<^FBErj&Oo9N@2)@hyduJYv9e>#TWam4$|PjowDD2e!;7ldFTlIa(0Fy`}q2eX9EX2!7&mb!< zU(oEZ`aD|WJI3@j-;M{-I6{t=h8fs+%&Pm?y6$?=*g)HqabR?5>gVJ)*+UrGugc|^ z7TszqcU^RN=d)LmrNOxsEW6EoTtgBg3tT%ak9?9{fNjB0&xGP8BAEC@< zx{#l~YCWGYHdtz$kjdzAF;A*A41EVH|eIj3s2C#i$U)4-vbT9!zV`doKD3F!4H*xUEj?wHU|Xk)87 zoaD+hrPF1;ayq|bva*e!%n)ur7M$k<$}8!e=|Q4(okduYWWZZqDz}Y2no>;Qlc_0P2j2RP@Vf6$FG0((GB+{=cl@LO zpM`U{y(lkJCSj9cCr*yN>**8njUFuub7JiNQ4d4U4gMJhZ6@*-Djg_yH<%NZ9q~q{ zH$Iu!EE`O)8yKkhe*3CSwyK`~A7CrH4AXw|SNJlt3~816F=T>oiyP+D)EORBN6BBN z9B%y0>LLQc5%=w9+-1^0JmbFluISm_So%pretR&j)BYSA#m}M4_)B2&Slsq8qSYG~ z7_-cLL^C4DURz1~b|yeJvFq9*zd$J}*SU%sFJK^D#h$DKv30UP!8&}1!@g8b#DBdM z5QO(@R1u9Dek#Uxf1&)6b%MSZ@1y!305Kq=2TiQZuYax&fGOj7x!}s>%qz+K#$To| z&S!ZoV5@H16*r9$-3L`fJJy+PM2V&d7vEqeUEx!=8j-?Hr4!SxOa?YBmzGqsKJGB} zM7k*ezBA{8fWEtvlPXqmd^hd2^J8@Bpea|ez2$GXeOVFwKGs$wxt;vi`{9Uk@;bKj zs}<+558&~>MfX<*%>-4s<9MirbdG8MqwuCssjE5IdeCF8YJ2_lohprm^;(DP(=0X) z;>sk?eu}DL{mWs+>$8n2?&Tea%^?=Qo6+ozVna7*Xx}c$>z})zxU3@c{3w2K(uO`4SAD^qH(qP}#g6KOZ|uy4i|!D!@qof^=0%q{k- zX#KYXFQ7kFL7@P3W1Zpu06EHF#(5)Vqpy1i5xVI3vZ+q(lM+n~NuxovsuI0!n{4tV zf>N%w>3oaK4?tL(2o;>ABkG({yLZBdehlWwY^sOm9{X%d%43d_dfB?6g9@Is!SdImx9`3j)~&9qi${bH-O&it?XLq43k{-Cc?u44zukFb3V_a zApcD<^Co51jSCG#<@J~5W{;)4s~i%eH}w(@2*OQk3+vvm^oT*r50AYz-y?CdmrM6e ze%ENtJ;gi2U$mUNePXS>_?32r@{Epcu8G(`F2~Wmw#*A`)kh|?a2X#1{Pn?HH4mF| z2po?x>0@k;0z0`<@uKrk*!_Hkwd={Iaf3{#%CZ9hpppwyzw?x*u(Y>uCa_ zzs1oHHJATQ8e%j*P73>Q&P4^Z0@RRBAu~##uZg>oou{h&*XrJ?sk(4M zS&Twr*qCio7t!L>J$dc>=v89;Y&SY0?uZ;Rb*r6&)lQQSi~7dPw=$ZDFYlBdW(k~DkgBPOz17w!cTk;z_#amHW zFd3MKyZ5jh$+6dGE!lw|ix!1T_j;^BI8>lu>2F!g<%iI2znI+IlXlNww(XL{2`FR? z3FiNg6e5cq7tJDnyXzw%&1OD@E3M9?F)T^&F_CB5bI*a!fNhb^T}EW zmFE&3;P_D}0IEFB@*$B*PrTX)`X6I8F6N@04)|lz+TM51N#WLUBUWbe*AyWr(+!<| zI8Au}U!J&ecOO)QKxa@D&vNq4eu_WPf;y~R^U4zLOg|A*?!Loj-i<#s)~2zl(ML|r zDfcsJp|%rgkSVY=vo$q%TItAlG44s>0*pj&oFMb4Qjw4>bJ?0J`6;Ngd3k)o*8cSk z^G@|e65eIU%W^Tp$F+3o61u$=r>IkeO@y6)?;CkZx>Sf1Lc=Kpz$qk=pb`trkz)ML zV%M=nyK4qpCQTM$E_lTf1cre3mWC4Dj1pXGJz{qoev7JV!}xFw*fjH9XIj6>x+Kyz z)ZEnjaA4OAt=;z=2e?oUNbKBXHexxdEdxddzov7YN*TS_gIc-pzy>pDkJ)&jm*BHZx_qwdLrSPc$8)z+vcDbv%}T)J zIWgzWwn)pPx2*G%SctB>C1X-X7p!<*#4$^ur^Ytl>@HPr(z{~#WK1-ifFsl7;7}V7tV2$8bS`-8d36t zU^ML~0Uf-6_N9PJ0Sy_u(U~f{hA&)kRz2z`9G8EKh$HKiL3~EIw#+toyGn=ybS}z& zcHM)KX_JEI`WO%EUgX~5yZwBzsl?) zaI<^2?WpaOOela^kHMIVZVCjhyn|9%p@;+Z&rSLG58<9=SkAkrG##?KYe)GTZX_;0 ztYf@drOPkUQ<`6KPq&slvY6e!nNH?d)069-30ri(&3P4gV$E!EUW}M2EJ@83j z_@D~9%{V64om*>O3alNFTVHx#tEa^Tb;4O5k`qs9Zc6pU$Nc8bd{xc^!*j;m8NihC zM!O!#D=#qG%B6*I-1}kAjOY<(eV&q1JTCKtHT)zj<)fT}*mY6Wx;Eoy_lHa{o=T6p zbJZuGTb8$6;N)5fB4!Wze@kGf7mfl4YwOBnU1ZJz=~9$S zY;Z(3ikG-doNeD3T`@JP05UYvtcb8;czH2($l8!VnN0nPc;|<8AUTW?00;sx=#?%= zl0&~Zwd{@mh&qIu%@o7v&N4~S#P2ebs4j9->Y=ogrPEiBd(Xzw8(CcjkOMT{lxGa{{}S~KjvauLloAzjizJeU14`C?A@ljJFPnbxDb;k$gWa`)K0Z4>N>r|%m-B{vBKJi zYS&PW?IeJAO@dWqQt$N_5$A5($vi{OlGx|ltf3lURs;+NTNrW&}a z=QDVrFbO32mOz}4Vlc<*WIS)GC^s3PgM&=0ZKS+NP`_Fzn^5Ix0APVP zulSP(vIf2GIF=?9&f2-ET&(1BPeK2lks>V!tWxm;5!h|q>N*c~s%28P8(~vrHNyv> zKI!~5_zqkeWzS`Zq?ViRK4JJ1E49&8G14IqYl+zf?WU?cY9PjXqm+&p?p@7CW&~Ir z!*x`?FYY5nFPEmuK=_PblEU-deh8OAwi_zoZ&(-XtsH)zjj3U%2HTKkdGqmocskor zzQ~jVeg-$3^-Mrq8s;5OFe4Z}6#R~=()8lA2|ASlIk`?G8g#tb)U$emd+;$G=WrUw zRwy7t=iEjD9#pyB?UBQVincaxbhD$&zAIB7#s(ImUxY0%Xdj3WPHf8JSOnO*oAv_) zk@_?Li4F|-B4Dm|0t2%hqRYlsH|%WGJq=`J*3XMRbHY}9Kf$n3-#5SnnWbl|SNt{2 z0B)}*5$8H2O_lE?O8-S1eY{8QF}RZ7_>_Nq_1PGj$GGD0~-a!J+Lt+-+b!>biTCy^lZy1%gBFlpRfwEg4;rm`XEGCdltl zT1H!HqurwK>kwe5x#7OyrB4^y2-yr%4wg?=#{L?BM?VaCl?nU8$UV6xfw7|?Pp~Qw zcl8k-;v!f^S{P-ChlrVr*0T*H&MFGIbQSp=8w`tJw zo71_xOOHwrI>07lfLpbB5_9j+E#cx(l?Z5eu~CnftZ?OSkOFN0IIKtwKEOGCKX5>})1PFey{G5Fjomv?Zhge14|H@L zg6tgtoU5BeKrF<=q0^ttt&;w`HU!H}6oh_Li;&Z6@72oXrBNYCWgkerJf+T*sTAw0 zM@7bke1|v@Y*|UwLD2pHCz1g=PMT0gqK}am*s}6QG&=yng${R9c9ci6AlNVB7{hGa zH-7~cSo?*V2SLF2Ha`9CltpI~QmfFdX)UoffCzO5KK;Wy><}_laUGqmg)jxQ7*gKv zJ5VPQrbogwM^}>2^)?VFpFGST1D~oO8>R2Swwb>K5bLXR9@pSp+;W9O-MTSE=Lb_` zw<+Va$pcbPl8j3kbkI~!L|yn~#+hln#KrBrDl!M{vAbX6UDV0&YqFD(V`Tjk>LqKC+YL@^t`9 zAVW-POWPp?kJx);nNP8^7EcczAsEh+3TgT3kj`I}sosRZQHTMReK}*A;KF16Oh3s2$LgJ zA(T62@mw&YGK8UWy0gMm%XjJ+ki{NoqXJHeie}yQdK$&~~vCQHxYSsD<@j$ig zYUFhdm;Bc*CDc#%=$Sf%5)D%HV3oFMSYRPhZzNpnXZ#VDQH6OSgy)sC<#{fLqxxd4 zW?*59ro*zhIF@n#7zN#7soD}0fMM2S%RZ)JwSr^6LUv&(i(eNQD77aADE`-<#&T$~ z*BtI&Ou)ROgRo`(msD^b)wix`H9}c(Swr_Vc(ZXfk6d;!84uzWoZkxBM2s#Ts_u4n zOL&Sxc!x95@AiycDoX*WcJXKAYVBAMY3Kn(GA}{+E*%3KpyJ+J%%H693#MOfy=D** zpQQ4=^xv(qMiYtk8+!8&DV;`;lzbz8(DDy7l&MF@I#QQ~)F$h&ha6C(eRd?yjBol= zSo*g($3=9y4BOVf3u~cPbofwuD+faprp;B@LF~K;MJ0y3qq@`KfR=jXYl8Mn?rDU0 z6mM!uaWB39!ic~zw0$}gT$&XMI)oBliuz zo-v+>+*7e|vaK}I^2<~$6j{FVg^w}=8(@_T+%?zij~z=nwgav16K1A}W)3hnO%OYp z#(Dky4-`oMy);N`Q0h8z0Dj%03gW=G(2Zl6X>zifZT42f=?q#%9MF+*Byex}J)>M@ zO`-y(#B|lA1Yj_rHjtS*ukGrjLn^d5ILtuQvaS|jUzXHT^BU=Y=Tb3#_45N;i&sXX zG`nu`tBG;==JNjlL94omm=5b`)APrUWv-<{M6irMdjc2y}mvMprM`&0*bZn zjS=Z*!M^+Pb7xpS2&e?dEiiH?DGn#C%OtI7I0!=C-wn`EPDQVMGBQ1|TMHn;;=Rn~ znne|337#U&$Y0AcZ9rEUflO3SCffxX zcJpzHM4r-n+y$uhrDqZW8jCK z|I42HS4DH*uG^W_1wU1$KjZ}I3I{~UhZ4M3J>EdQ3{g~Dc6pz^Dxs21lazhC`2#?25vDZ&fpdrOu9&?{ z8cSLs#?lcE?qLeqA+;Y&jt4s|v{t65z08bJ5i&$(q7@579NlZ6FbKO46H`iC^SX!j z-7+rWn4}4lQ(_^9b7*`Sb#-BxVQ0GC6BfN1cS*!$6lNThyQpbZsaeqQKY;H& zXQxEt2eN2*CD|;1{%&AtBR(kIX7m6Xd}H~aS{tZER$Ll^!EbBX-qZXSW<;xRHkJyQ z#BLnILm^ZRCZ7s|JTD9=k*)QokIty6x*+nkEe+})uc51IEFmNnm4u6-Wg=o^N9x%Q zwxrMO1p1okZ|b#J5_p*3(){dn8%Pag5ogNG$9!&tlRhH`LFn|+9)HblR^xmg9*D3t zd)yB%yCeGga>WN`!ZO{4$m(&U7?$nhqlz4}$J_o!@9-ARyYH*3=%il&T<={F)!O&1 z=2LLi)ChhfwZg0IJ&O(}drzO1U(b<|cILw%cy$c!(I|wL&TpISm1yXXPRY4>vn3siW6QkHP%p+cpTx{wFXW@2O$Il!xcITN3NmOAL}F} zK>|jihF}k`0Vw=m*)H6~+1^UrersOKL+Ktc9I|?laZrGbRCAAo3byjrK)p+V#v78n z@tP^0VBP+>R1l(dib86BzZj5F(5;kWSDZ&KKLOb`hONtIra4)hfYpTp40VIBK&w5- z97D^*z>7$=AJJJ^?(?6meX?bQyVU_qwMhiJUUdQNLg{941f0bT7npT!FzfE}Z+cS`7 z{1b>%djcr|R?qF*=B*FDmcsXO^4XraFRfePjP-9mYEwb#fl|#81$S2CQwcPEZ^6eC z-u=W|e!>dD+weE_2kUC*Nk+n<&qV0iz}_kn?>sJ(oEZ}T`&{?bS@i3V=_#3Lqc={7 ztBN9|tHRZe-WfK29?L!$I@5tml<%0WrnCP2xFR#NGwDk+8D_upb`Ypa!lYQWot_}VRQUE`lU)RXdde9%Avh9}iXBHT^G}#t^i}Sfw`~OwpN5pi;xZX)= z2DE)&bw7a^=qj38dp4-?Yyp1W6p=M za#+IDArp(13MYPUWKJWHM}Ls(G0-4VGP2T01>|rW3CJJJHqJ}0Q8_ zkon}o+s*LCe`&H$%7O$26<}>~?u_qczsNRWKqsF@R`%cg7X{^>kzw1+ZA2157#_N6 zli`~ru;F7jXQdZ7^!wT&I$6hL*6uW?s83O%W+MWKKyE$ulmYdba=3UfHZGszL2T1XAIp)i(`Sff+;1+z zttI=8os47QGN* z7^(2-f7rcEe#rgi5|&F@IujW5kIY^PY>6+GuZhvu{>8*rmxP=_k{&y=ev#m>a(1>a z3Saq?_(LX{9>cr$s4CS-n(;}snx!~2+bXOkoDVQLu9MjA2LSXG2wi!ynuCI#3WBKk z0+^y17t$vV zn!$*Hal7wu(L_J}OcKhu<+|qnKnTA^S81eR@D&&gAbjPo{IdZK5COI14FN6qXvI-c_xX3jJ5WdwF z7yt~|kGdv~CUXzHJIEIY5J0w1X=;3v1DQWU1@I=R5iBzpdzj2v@0+v^RtaLD%o3C- zMKq>y>>bs z1PF36{{T5*VN40x09Zjo3SZ?ikP}OoC?mYusKTItJ4PAGf~X<70^qgO&Cy5PLT@O` zrcn#2xDnd+j=Ojw0tWG|syut2H{u4uij2*~&ZchO1apO-v?TZ|QQl)yQk#chI8`vz zUku_pa+o1c#ab8cTfylj+@1j7ia>iZ(Xq60{XhyBSYi%Heu?xY=LE@lB0V{p!{r0C zaTlWeVTtX4MfG``AoUlg27+!~&rO?K<-`1cS5NIVu?YWL977W1S zFT^qrdrh+kxQsvV?B~PGu!C^A$(YiC=w8TxCi&d3Sed{#b^WEoAW2F800==*01hNu za&h~N7_F6x?h};MK^)jdf?~p;IT?g(Z|Y zb0R}AhCHdAQe(L76PyUZ0zC?JHcqvf%pWs*0&q%q2Q|dvS8$WmGPHao20|kT$ej3w z2r+_SF>*2kc;hnCpqBy$YEciF`)~6YExS953|EM{RkxRgKT{-+@{K>@3PtA8phna; zCM~j=o+2C)kzz*dRBr3X3atiM73{nR>6wfGuAZS2bNy6hK)tu>TmiJi0V`}H zXfc$X-$&2f00!-qJ?K_o`sVp;FgG7j02(3HSi8K+SS#_bOsugI#uyAS%Y;#c$-H>Ev)iWR{mT9Cu@iI~t*We<=+8m0=AGX~eAZ~o7-+%-|Yy1&DZvqI(50J)RBusKHwl9zI zEFg6=5y5$QRzCoV>6vmHFOn&PR32_0XL>+dM~Npj}R*WFjzSyLI&*dol>_lh~)nOTI0Grkf9NG3hbF&V(}Mk^Zt-a zBL+JlZb;mN4Wo!)q8UKN-qH$Y>d{LE(KKh!OJOH0dp?o~a0v~jj&EsUV1rJO6&VgC zo(KcL9*jm|nBd(gAOT^CXvYAUq3|K##299R>_p88rr`xkbTP~$EchcYk_oXZX+AONYk?d$peCJ2dhsw!IRj zYMcPakYH30jA*%=Wp5a!T9USZF!Y4p06P%N`jiL<(OITI{#07$Q(}tvcy*83X8@Mb zX%6590gesM$OB_9krJ)pMT}5L0IJd$jLp~*z+!R&WaLZM7>t8$$8UhoG%%utENK_n zEpaXRl-WK~F=NKJQ!oU<$c2ukN!gDFPbv6#g(#0=jRRW6d_@*Ko&x4FcmO>-^YbRc z3Gg2wHb&7|yM`fEVMf2)&H`IBjwybU46aj$ZvkAx;!A*6a)Tlug>8$Md4_0PYB@=X zGBT48yES<%Y0Ic)7h|gSi#t*L?>{!={{X%v7Gb{!gAA$!1HNs9*k~UB58G*7u^|n4`U;!M z-&w{VvtXs+A15uRS$eXrR#Z{0e?)zy7b3*$S>U!KDV4E%9`<2OzmeC2IvN1q;p@lL zL4@BxC5EL=vBJIr0uuyOP+Ns^Rs-Nz&32(v?Wo8DC17SG14>3?A!$L1Y^Yyolf+zw$^d{30@ht?h#(Kjc+rFi&A}Sk1=r!Be%26+I7Le!zXB9e z+-4NHZNjuncfL@xWSFXdXkSp(B-?;B(OM7?6l9DvFvd86AQT2fMJ>((BY;6|Jp0Nd zgcBL?k+z@$#OCaj-~l8Q33xzZs4>85vgL4>2y9v6vKz4CUJty?f<2zYaB5Ns=GA9d^&55VVHbmXpbh zMQJI@1@UEmiO@NX4l%~v8G~V`F8%aZk1C9fTNCLrVK^Z=mdBGaK3W!@2K9Fc@-57H zAMsz3Op1H78{l{w6Dpxy+MHAVC_!TDMk`>gR*H6s4y`4UN1jEWMF8yUF~LCFF=2d! zk@uM|oC_yeXsRhl$zH=Pu0Lk`Ypelc1uSkm=Oo!d`tbn}izZovRRCn#xAv2qm?0)2 z(8LwwQEU2b;j~`+Xvy^Al&C}`sZK13%2&c*p3eUOt2t{9F8vagU<8j<7hA3us zxP%8qku~U2ja$QA1zS*xf$ba?a4XD3Vs%wB$rw-}0~IzpL4p8>u%PjPQ0|`%e$o#s zvSFk}7}Ya!ISTu_=CK%1NaMdI683EJn@B~e1sep%kSL_Y1tru;94on$mw=T-{{Sxq zb|Bvf)Yw|G3->jFs)u!|gm zW>{3dTo5m+qeYEwgAp&mqHUNW5(I^bGj;wAOfsMl$Jn2Dd5nlqMI|W?!i5&jG%KeA zYL(D5fD#cIcy|J=LFnZ@BO$m}dW;lV3cZ#}hasnY;S_@x#pe{e6RZHuVQAZEO|9nM zCP&SlaFZRh6um{8G7Y5FEE2n&@j;*u-4wv_{ zH&mI?6n8{yvecpF0APbX-)F<)NPkLxtDZb=V>vYX;g=CG9pk#GOJxfDGy@q-28(we z0Jpsg&e#4Md{E{C=$m9094vM9R9>t1{E?DB zXub>AT!X+Li^rXED17)h{{VVF-U--W`S3sRFJt-FVFCAFa5o?S!~iD|0RRF600RI4 z1OfvA000000RRypF+mVfVR0aVk)hG>vBBZ-|Jncu0RsU6KM>2i@5xOx!=C1OxnrG5 zh2o=aT#*~6aD0?d)Bv+Gi6N#Xe3?RNYz?N z4ic8&iB$lhh*hRGH*(OS5}wNCA$4^wVrw#%pUh4in{FkeCS&wRVV3ZxNliss!xrP~{Z1)S$dY({nta zc8x5zGTu<)*eHA;H1CZTp^8RzsJf-D^ohnM<|Q$BwB2&Vq|qtrW}!JjQrI_W;f3H< z`xfT(LBnjdyMj{;g5aZzcw3Zs#0!<=;#YF7CP-5#S^zazfCY?NB?FDhYVH+eaR{+S za=+y$gLZKXXhZg<^(&(>oPmw;haqeTwp$AUOWQNpDJlSOQ5=Bj$x5+^3YZlZH_2gJ zW|stSEK}ic7XFc%vCK?Geh8iJ0I2?;lvV)KsH@p3l^*6H(!{-7=z+ujVhu#CkSZ*j zSY?+)5{R_a5tV8&6=Dm8qEx2rg1gjdm+}Md4fYMS$PHOFO|wseUCWkSOO!;sn(&tp z8i7y-SukMfR6$mqN^#T^v8VDoS`a>NdGEJmp6U2Y{b%NFg~y^ytqyE=^& z97H19!8J18qVbrbGUh4xnb*RNF)zThF5N)uDf5pKnfdsE*cVAz_(iV^VMI#sQ&Ac- z9e`cw5p{DVPwriPAt*7Xkf>7}3x)v^U?ryW5PF5Rf?5>YBc8-uzzt4Td>saFdW9XA zqXM@8Y9lqwv0He>kt$=?fpvz=7y|2Lzn&kT1Rf>1OF~(cs?tgd{^SmHi<2toTgrog`T1^$P555M#bXeSx7&KSZ#2|QWwVMonoDp4T>tIw|s>e zGZ1I6mva9AFjWQ?fTE=l6L6GJ54oRT3v;k8Q7v@>*C|lMUXXi(UqAi-01?1*GHjQ; z>SJw2$@$DbNq(ZSarPmoHAf^+1!^d^KwZOZz*s@Y=kpCnq4}0L>|unfxayh2mHVZa zN+VfZ52R+sX>df^cg3DC5}Lb~TV^HORj9p6^qLkTkN8cCh5^FH$sK<&pNOsFiDYTd zG~;uMp`4W}w!*q@TTaCZ-YvnohTwb>o!OQQ#d`4m@_aKo3nh_7nq!eQAa@!MfGK7u z@oX@*4V6-wzYRH=B6U85$om{`D4S>^_LQoYMdA2)0Dm&vFbEqMHx)S~4Of0OGS03SmZ<6cKj7Z_;5;1*u}7w!!jZ1agdC>0f3*TMlGJQA;i$rpt~) za5AWOL zjUk8yb!sF~ViEBLEx2W3&C9mD!6#hYtU>9_2;IcNUFd{+OSH;uQJ|rXRAwg%{{S#K zK>iT~vm+5IS+wifn~2lCYFl>iP#(cUT{{Vge01*p)k8Q=^d7c*r+J~uMZ~KU( zu&Z|O?Lc+OX(awp4Ak(8dp^yvnBm)%*&>P}vak-p+*46oL`shsCuu;rGgGl()B=SY zE-+jK)}4KU{{W}RmoDPq(zE{G^D@~k!?0>Jp%k}%4iH7CWaS3YQ7?!IZzw%)!h#$o+D&n+J#@mg`9Ehz! z6X6fuV3aCdXT~M6x!K8d*f0<@y6ggoI%Jq`2E$Mn6M{H#GHujpeLNNiz55g;tIJ6l zEip8axxU;>7Ea^_+_1Qj%Dlod4t#$*Oh#|FA#Hvjy zTO7liokyV8=3+OI3>k{QXiE%0IjPxV<@j_E2&;*u1){5n#Gy15A7)`@E70vr8~)>@;_$P`hL|b)6*At~RmG%5^kyXM9Q@8#iX|`x=3a8dEW4PfEhQ+y z?gI;H4UQ8d5qy;b19$wwn>b)-Zut?zh&^!;qz7SBn1Jjaj1ry8T4r_`itJN9YEX2Q zIgT>8zA!~B8kNN9DT!V$#v)wQXF*r5ki4$*j1+lVB9zknaOf%n==TgkL+?IB9Hx|< zYnV-O?`gOo^MxQ&e;|Q&CsoS{hz?ZkHy*#3QcTPDaKs>n!X9KddQOUHgb4 zp$~?*b~Tk5y3BZPCPW08CF4TGg}7BmY^pDYCQdefJxg4b>&!ZCm^?Tp;hMjbcd4R8 zSvVn-5VchJb1A4(a=pAQmP$WGo&Z{wEKS3aX(os$Q3a%R%t0z^lFqeo^k#H!DjR$| z0ULeFDVAtOiMf4Z0V=aAINW5l2IXPDXiMTUKdMk2k8mjLiZW(fAq4HOZ~<&W#^qzL zsbF9guBLTzFH{w;Oz8$y@4&M!72#!9j`%Rwg_m)#9(Zbmp{H=_{^#KtqAFzuL9x`x zQo|5LGRBE{K`ShK35rGBHGynwTE0LVGNS%3uoW`sh3`gYuaIm*?aL}_F&9P~jZvOV zg~^+u%n;%zXv}g4HeZ^LXf-PL0VX0=W$pR_EkSm`Xl56oh)Zjzg_%fN$HfSW2)Le* zw@QUHe=*H6M%b6`X#ww&?d&Db);A*V<^1K;F>1ZU4Ti1<c!N{m~G~_g5 z012oBZ7UTGe#$MgS-C|W%p_1pW6OVEP!6zldw?1sE9|m{rT{qz-yh6i$1#`_7sgJp z^yZp_hXMeH<;cQ~TX0KdFbW9?Y+aPyOQf#_kPgT5r(P1tIX6)d1*j4B zHw<(SQ95`EKE-;N)Xd8gp2>2meC%rOiA_0;FNPw|`9}fBMDLqxqB=O0rNpbbZwrIV zkSEB_Bb74b%E0`gX7-RzPdNisXXG<0IoRw~EQ&U?C4&;}O-wy(a|Rz3YVaFwC6_HM znDyd*DNq%N02C_EW-4C!)HWPMEh`rkO5Ep;db0UIm1&Cy9A3(`!HBTKO)Jtk0|dJ4 zFtvi3D@lXkmzKJW`%8`O8{=}++?8ErDgwLN)sQ-5fwg0iVNDr!j8UMs$5pAx3{o^> zj|w{@p9(Mm7$^S#2E}LC6O$;^1IT79$_)-7Z6CND>o6Zg2Bubx>LlMF8QG4yPjLOn zeV8K;-Z%y#rf|$!UfU#3qKmpiHtUG%Mr#;*sCd3uu0Xs+R-+)OOgd3kbL5HrAt+ zYaw@PlCzbZ3StkDEq`y5 zLvb_G3iOm5i9-o`h~tV`Jr4w^H%Pn^H+F_nsu@n;S|mqUs#~uDws8P$5T9YPw@}gG zmwp0;n0y3Ai~Uezz$^+GlTrN%@P*XeHAP70&Vi%;Q)D6C&1<>^eSjw+p0R3${lEJDXDg~7O&(;rS| zg9@{7ls7w6DP{vlu@k`y#1Dme8*E`1|c{XkhO%xsEp`og@?j1 zvvb>!2eDz=Ex@hDi+D-n+=k%MECd@FjW$FZ zxmz_Z+hLi8;#TEi<4mSqxr|a^;(f$W2=tdKZ*sD=pXvhiYUVa7hoE9w_#!6C_mKwY zc@nM_#^C#?9jI<#hN9en;)Pbq>6n%hzh+s%8|6B;1}~Gn%dN7FH(Q06Wkn=tqPko# zKju@TGdgM(hu4=eiDaS_%Y!4b+}P$wk10aHf_lfd*%4Iqja>*PSJ zei)3}R3IREp*;x_`yLz;jcz|96B*bA;t{S@rVUY9Wi#Z6%Tb=l^dcnI1jBITQFyM=7 zfrGN1L9K-lO+={$VJxT*kIXIM)y=|@Q;;MnXlestxEigXeW`1uGp90&N=nPs#I}ui z%&}C>NG$KRI{nd{{R6>g_y;~P)f9;3(N*x%XooV ztU!A(kn_yXG z(Hx?#C^s++Or2XfJ_-`wghIqh@KQgDRuzWgCA)>CkQg%+2^ABq z1yvH$iFGd$mAaNXxp*8vw+oyq2`q;Uq!F1ymYGBwh_bSX)%iFydzNIjVC1a1PjL?* zav_4TLvue6T$i-P{GSjSoy8JlCAf~XLIpTOiWmmw6j%nXq9%HQ7Rq6w4Bd@{xVWQm zZ5N&`yDDk$*N7xEFc)(}l7`7^Mr3dxR1?})!dwOs92kNkfHy5Sh@S+6H;y(y3 zKppT)a!_l*_lUkk0{a!oh8TdDb3F|El<=t11KI7|2T6K%0NIx7G8G-OGX;DB*pqNp z7=>)$x!}{n_VGjo%ZS^s9P{i8{{RBq)d|7^#-mDdUzujwh**ly#07~9uq7f(G30^K zoJbTB?V*wz+!uA?ak-Z75TcO+?5bu0`al|7JVdtV2&L3}I3rf(aJ+teE-J*Pr!}$) zJuxY-7Dm$Ju`6B|)}u&S6}K}7P`NNnGctNZ)h||vh`YFDNf+0GP^24Z%AM>~}DFkDf&cc>k13DI+XiJ03o9&`M7Xo1lzmO$YJ zt^$MHqF!nm#-bQ>BHYJ3_k$x4DNXK@Xnudykw1k}VzgkBk=KoPVv97KF3beIkPB{JA{7-wH+!4ZdL(Merq zEffp&1?a?Rr@(4Z>Sr$lYV+dLn+4TB@jo&Xh%GCBJ_=ONl)p?wS-ie803VOB3=vSf zf!gjn5~biJ4%91@wnRS$JXcnDR0fFAYnm%eaHiKANa`E(h5RBNaWK$jLr4wwU20I* zhYTQE;NODTEWl=Cqx+S=+nH3j+BC-0!ye7isw50y{lOR|WF>hL$6}V|G6}H2?RoG7 zzQLoZgeAHQiSSRnz!JsjQ%$nnn1w(0{@3mXoPu5Pfk-yOv75MqbC;xYSs313N+(K{ z(qu)r;%{4)!lyh}uzkn-pP7;+5#m7WYW1WvoKaNm6GBkK{Z9dmcfXYK15mx>zS=e^h#wMsjHdE$L0XX{{VmN#ai5RZo#@` zEw&8BR=WbjxB`p<{z|*9LSd;|MG=nfbLWf1X>ywfvwy8Xu%~Yz64ieH0JxgfuX%#j zx#Bx?H*9zSD@HTBPAwRF_C|uc?`CiZ*j`2orr3bi0gH$%@&co9+D^Fo>I__37Wz`FemshInxu3z0+`NKlf-_y-$SlR$Rln3B6za<- z@yS`Je?-qMN)049C0@4x8qBrbM+M4TWs1pyT2V5tU>;F%lxgg;VjEhG2wXdxk2N}j zF0?Aco=uL#vce0)aiWg95EO;tN>$B^Odn!okEu_DAa$6e>~oVnG_mU?mqP<9Rc2_X zzhaFILd}7^OK7&-F=&WY8iCXt27~*8kA7UELHAHFWhmPdM523kA*8B-HQO>uiTN)E z&n}TrwsDt@eb`mFWy+se9;wgsc%CNF{nha(+>#!43hq{Te-_ zQL;fHP1HM`!ODst09>#X9LyfknB~Oc;3$m21%ymF6Ip`B<+%YFZWyOf1%GHwvxcNs z3(f++c$R{klR?WuPK~Ecvb}^t=B+2$;T$0CHg;yxs<6yD%{{VW8 zF_<#DxE6pT%4m$*hN0OQ!xxdcT5q?>gKjTuYU9<7ZZ)_~24YB_2)a1}q{U4|g(tYN zDfT5b42q&lHYa(1%(9H3bZ#QF`kNCf+*{5v(!@|T+@@0F z?HQ*1$0g3{GB~etlB!xm+Ft-Fo;M6%$=Q@?mocax&R(T9IN-z;1G1cBpJj>$#IAA= z{Ev~y(gUj0O;GymYHhlKpK}GX4A7!$qfS6HsPOR$fnVTWB^jRsn~5*mQMWt6{G5m$ zhALUV{r>>WLA{U#{g&4ai05;u5&r<{G!PYRX`Ouz)Cchhu>7VlWpS@)eSiwbenZO2 zS%vl~cARDLjJ0a5hg|{(hY@X3{{RyNP(ff;gL3}>L=|@)fQ4ns_jW}YYp5#Fwgvpe z4Mg|jYn1t|yjcxbq$vF~KaM~%-h7seoj|be{=&VBq`Z#naCVJ~F|DjJmK{VQ{!ozG z+`Es@$%`=u#|h|#)KuD7UC|)JIkW7y6<2!^#<>xZ(S&e|elh${!hGZu<~(ecN<32)d@Wzd7$9!ZsDpzsFL6Wh2Q4ETvkWHs z`50kg>VGI{r=+Qb9v1B=nj%`j8!W34{@=N2A80{a{in^c0%=aZ{{T^1cL436mg_;- zBKGOrrKVQQa~NNY8~0(IsxxO751^IVhOuO63jYAyvv8##EE6b{8t}COyj$Y1`(hq8 zlI0j8kTOg+6g77!ZxZNxea3}uCuJl z^prN8dO!`VA;+x2BbN_yktLw(4T~+^$^mn=>l(Sgv0AQjAfLqQ%mrykw>_^BOc#7v z{#435b0Xa>Lt&eW^qcuDUKuoq2I9xv&-x^e4s?y!3UNZrCcvz z*W4pDEy~AE&tVZEwOqDIU=L5RQ2_Nbm-3h!*vbxX)I4PzzRCif!iCh#MuLmn5dya_ z)a}ph0hUoy8F+EwZeNu_l?8&!H#Ufl#vmKMz+LOI+Q97>{?e*2iMBDP1VXSIf{Ms{ zM71jYIWM%Di89va?g@u%S!Dz(mPbwd@?>LCpRkahn}$!e-bCV%B7h#|Fgmy9Il4J7 z0wKGU-TZxtbx!z;)qq>@FW{&ARn~vG!?L_MhT=Yz%SG4=E)E3x7y~8(frBxLRV9QV-Uv{cW(>nAz>anf!ad6-2Bod0 zUb{2@0HfRbjp02d;R8n^0yjE|cUaYGHiXzAMWoSc32|rA<(E-Z5D964?9k`9pe7<_Lti8FM9#zSl7(WWpR-Arva02F0SUnydQ630{ly#~q8?ja5vb|N z>ZP{}Oo?LQ#{?XhuyVC4Vi}>t5tWL>EE2PLM3-BZ&rb#+kb459#0zm6u{;4ECO5d) z)3F~yaF9uCDI12(rddT0Pi7Gm%G&F{V2)GV6tgUP8(?}c?vz;>mX4c>Q2O}}%C5|} zl)=lt-xF8FI)MNT0l(~&5}}J=R_ZnghFrvQAVKcAM)Li$0HcIP`QQ|7;Lnw^gtXLX zw6YNjoiCIPJTe8aXDs^pFSw>qmxLCXkxPW}FQUIQF>C4#(fizXnkCyX2KgZBxB{wF z)@3=V@(?P_#x;!wQUEZJS!z^9kl4)MGaFXn7GdkLmD)FQy%P+PUCS8)1{X9v45C``h(T3Tmte4gYj+&Aa9t%inkRlEn~W22nKC+W;BgFF%ArTIv3))x zzb})s>`f7d_z`qU6LR)o-=J*5HBZ>vx6x45q!Pf7SP+n(!yf#JiKxid=;3^#XHL)5 zPg0bo)*A9RpzY+JKSY}?9k9ttYAuN_`7ePiPsoyaF%1Gc3*`R=pv@YaDFIklP z{0*3%>?N?1#&{~`@briN<`g@`EQ<&JV%f59t*p#!(d-l6EP2rjl-y6r4W8pzNYaX7 zrzlC363N)@7e?iZV}{7c#k`F@yB+SI29|PRxRTI+iV*7zNp5`!UwBD-l*FyIcA;mQ%kwZ#S8eD8dQdN&y1PLzrVn=dB(92|)_%J<0 zRAXm8hrtuweU!>$+>fqjBz^(vY>lz9HAcOYOXkFc{>dhLY2QN{5u5NB?lIrsk=s-@ z;V3qzB55&zwL2VW6|hmEEmNo>`4HfX+=Pa3q?1w|w21nW)f_^5@JwUut4{qP$X0)` zEt1_Ej#)0pvfug0o&rgyk)-g41vMmwFwP*lL|@ZK95iTdAy0b1%2qZTaYeaG-RGsO z^%1C^;Rww)6sTvVQ*@$R${lKn;A@ZMgsZLUkj4|G862e&k^O~zqCdQac)?5-IrPI0l+_K$)94p1*tJ!WH;wvK>u|z)ADfVYvcq>sBKFBNZJ0z~* zImA&(ZHaC-IdL{ZC3qRkZ3Cxo1>i_%A-4=C+_db3)616G3Ap762JyF}gPsX#%zTr{ zf8gD>(ZaUeM7aw`nkyPH2w~iF1z)U0%jX>dCi9**_*7>O{ZDc`q6LckNFGl6pQ$Uv z%Wk_DC074kmjJv(wnDR3NOX zCZI)8l01bLQjdRuP7MuO)Sh3FwF@k=J>eE_+#4mf(F)a=#4-*`xgyG}{LFxV;UU++ zlC5}={{WsO<#|Mo!B}3TiasKy{sA_2y^j9DUGgieD^U%tpI@NN~=?C2)4}ruI~IG~7C*dS3_64ui?Z z`@(mtf zqqX+r#N2Vm)Og;e^Es1c@%lX9CFIO4s$*#`i1a7qYNKHO$v6?aj*F1^+_>iA;}ESL z#m)@ogdC}4#(N{pldNQE7Z{TYe%YVVB3fw@t)zF6Hci0x6pJ(PU3VG@LsFTyxQdu{ z_FrQ9VYseN5Go{X$c39*?mOq)UGz!hZ?*;7921tAE1Zhqn@UWghO9;QN}=o6{)vZ^ z83b>pESO`VzR!GMs`?G*`N4iRvFDOS_TCCK2{mL)5rZDe@)}LYbH$DMVr36nO9pKt z`8TDy(28#w6RRY~pvK}x?SZCNG8RybDltEq+{B4NGuUmXd6>cY8as#*YuZIr^BGpQ zAe#9hDw)_t_}Mh?1AhMip{3a(8e$C|iA}iC_(|z+I~>Q!Vw+kF&*X8ShXi@@MMZ;Z zvzf7(@e7!_87D78P0p>oyo`&H-3!3hdVZm{W+|E_Z9_ZuE-8t15^dH00MRIG?-GZR zo)<@F&6LgrnlFYY4kJ$8B(1VMy&zl;x-ZiWeg6O{Ej=$S&3;76$5)D^Dg$A2jF%A$ zS=W(G+>n@esS_vkEWrN&Vw-?Uxr};07@9O6aO0s$DnF!?*V#RO$DT>TN9Evhp@)eP z<1!|{+?GdhGT9uaP|z#DLZLVuY(~ZNDw2ob9eJWl%&wTxUr90cPEpb2Ea*elQp@N{ zi9`^vFU6xVy5NEr=y}b_Z=VOb2PfQ+K*d{Wa)TRvnIXD?vR1wgx#*cW&Nm*DLT>DKtqCZ_lB*Uf zWPR@(5qRt-lYENQ==V^v3R}O8E*ED=CobzxeY@XufAO-vK9nGgRG^Pd3A{u0L?ukwxENLoK_PVp|u9)|w$EE?Ip%k`C1tcsz z2)*2DfdWQ|GYHd-^hN5Tk|6q-J6&!)?n2L2P7)4ld2CX3w5V|OKq{*u6c&hWNnoa! zx5JIf_#L~+{{SIFWw4dS3D~|;SN@38g|zXLxjjJqW`1OrmWrg6Ar?hMrAEyoX&5Cg z%LVK;>{d!8CY_zqh53}E_b!^ocp!c`RJxK98mh>*t2RsGXNcKSZ`nKFgZ+0m^C8P3 zW_jyMfA-N+7MzMs$!yq+sA@fg=P$t@>m%>Uj3Wo+YN2j@45Ok$6niU1&l_W|>}CG1 z3Hv1UtV)SRBu+jeQhvr_dasz#M|efY*+(3XV~? zC?PPGWeJZPZ(xmW!0`o4dyUC|N=<_)QjtTiANbqkq1F<`%S*83Z8G)Bk~@vZ&;FB0+JqstkE{UiPA{lCO3TnyBHD!PELl{S^5XJ{S$NNZ0w0=Mfa;o zUqM2JuGpnKgtZDBVG@ekIozJ-*rkwB;cY}yN8>`%_b}4Hbe+bIzCKD~e> z*&Cy0K?gK{><3rm_5T1mq7n1{+DXHIbuuF#yZd3%kGoI*02pyPzk7~$f**zj@T=I7 ztT&~QAKoaFOj|{;O`^L=xa8N zD{E%>{OPqt#X2wu6)&4RA`^cCdB33XX4WcOgasrfZ^kjx{T8?2ro@t#zRc(%jdSwL zA}cP&?Ee5zUNdP^s){B=C9-i+;E_OkKttI*g* z!u0pS$3Z9QDl02VWYyo%G;8J2ICu)&{{X>#fqVw%W$*qlgR*Z!yec{C$%w zF>fnFMiXgkZZS(C87Z;~I6D(df0Ax#d8|wQ2Jk4VAYvog9wAWxl4#Mj3HC&CM4+IV zT}J|zhUc*q;P2d*{{SQN?-TZai8o&ynY19!?Ee6EFy*gC{wh>7E^;*&srrcN2q_97YTQ{p|-xv3GiudA1 zMI?6?#B0x4{pr_92`D}$3;7Rv5t8&6CwI{6bo<9kU#Htc_{;VG0KfkLo=TnT_=joV zy%S}Bum1oS{r>>}0Qiza`XPt+{OBL<`~Lv3;IhZQ81%pWXa4|Uo-O9}c*5sV4u@*> z*4>N?7j7tRBuzTxWjkzAi6)JwjW!fU!vikbb_T4s9^6)_q1d-tGxSSrmni&(Z9e3YC4=-inO&@`coHFp z0?9f{tn5v^P8)tw5}6F2Fe%sIK)*(2vg-O%zd>XF0Ps5BMEw4dqKyEACy5l{@H0s} zbhG4b$~K?j9L|3)?G?;#zjG?CuWKjYKJ~hU9{xXi=v$6={{S{=?wh;NvcFGPUwVIg z$^QVpQ@FbC{!kRHTR(PrCx`w2067WN4hKToxSjqf`fnb)CQLv70QM2(ig)@DL>7TV zUnp&DC2`(7nKUNNFQM(x+y*N{aMLu$at#?qJW7!>G4M|k=S)sTDPBa?p|CwRA0?17 z>1buj64(?AxWfkaFx}l}wJjCQj^B+unkj%*EIBTBvt=dn$?%Iq8WEqNrATcDOcul| z7fD``JZ!i}*1k7P{{X6Ozanu@?Yh@@9}>FzxAJ=!-D7hr{De5x3PRI{Qm$Z8E>rR(eM8N z3Jx^-{p)hC{{Z@;A3y$gmT9`bu9N!xOSHe=^@Hwz>Lwc9UU$oC9$4%q!>J0gJ;m5m z3YL`0D=EmUS7wTed1+m6{SYqex{}@?R{^^qKr?{{RTluH^irxw#zEPH!e5pLk-%N_#lm zm!=6`7v>^wxUTQa#e-%TH><>pSIB=_`>!jJ-l+F}@9_`U-@vI`JHOs{_R_z2^x&`eb}4!7*L*gM z{{a4Hg(A=VxjygAYb*W!WqjY={{U0l^uK>$q<*pbAFYc->{zSlb_nDUjW250AHI)li7eldS>$+$bF{9^g!tz|d$c~`w_|u7owH@|MzqAn7^S3Uoc$9Nx*yIy zo7Oyj&ViHIyX=U{WNt+jWvJnFvEw!k>N>q4eE$HSzRth$A(nH={{TKAqPUO@N;Rv1 z7 zCEdMrcPy~Qd*5&T;KQ=_J~MO9ne)u(wEKf#D&ZjX4^H<%F!b}y=_QQs1L4H?ZvBYY z({-WN@=4Uwn!PL|W2v>{nWnMCg=NK{?W=_|%U0?lNa_PldxjUD?ST``(78pDUK&dI z?yD&NC3ivy<6*p&M%tte{g!>2!dfDmnhLAEe67P~wfV%5(+S^4(@wTs|>#4wbQR;q)@F5gT1sLQT5_0o$9fObv1oo`<2pWlaGEX+7Yomg*6MW7+! z<83z-DR<+G2Q3SzFAM*cyD1Cy4_EHxm?5@h10~vMt40t2`yN!!ASj)d<5qO95pm!X z3*ZJUMHqj&@-u}s*p59>^j8aQOeMKP4k!*WmWKk8u5;|&Q^Vs7FHo3p@!P2~_qV~5 zwmat{wBupQgvD&nWtU{5(_y*lBc75&!&b zjtqwJe^->87_Lq>+^0!YklYF~$KGGC8hqv2f6riG4Z*+fxGVN=T22dA9BN>{Bw5>T zWK)}L$W@sOn|7tPC6(=%K(qUG>!P^c)S%tsjjtd-Z+G?iZrfa-n(W;c{bVLgccU0g zh;fHN_&K}^mQ@}BRLdtU;W|s`awarrmp{x+w$}#L*#uNXVGZDx0C=nwt~ARRax2e% z3Rpg#9Y3=_gj)#&R@Tm3MjS=0Tt7_2H6HmOw|lgwRDV!r`G0C0loo`!Bt{flWL~}G z{v>#v1E=~6e9C#Hm)HG*0l(r6Yu?VQTtnxaiiVn2t}es#GaH)~@EcZ)+>1jhX|D5y!eNH$~57HC`CAz_wckeW6acBw@{ z{}C8;G1Yc*z{ilp1U!>Q`&wLV&2R~%2t|`B`z6WLN1^cZ0lv;;6{)JCM zr#B7Zfr9ziqzk}7aSxU01UXigAVBr&Vxyb7h@~;#`hDVW`(g&@YJ(R**|{YOL8CWG z*FN5%TUK`^i(@MNY>$BJvsXI=V3e;9MY~?ZkAO*<=leig-1#X`E=KveveiBeWQl2% zjd!-X-?t5c;)~)RF|O|`Pzk?IKChKvAug2N4+Nf70%;&+o<5<+kD|dp=HQ}GGoRBz zQhe*#7j6!y73sc%Xep`CU=IO$InN6*b!e`&+x{XY7=$hKDLWJf!ro&E4|dF8`o0q6 zCxH9xLN5WD|1==oeHOK20*t(^&pCc&Q5!DOJqTI_2v+eo^A>hen#R9oufn@IF&F0Ukcn0zJvVb{1$Tc*8&FU!kC_&EbQo0IXj_Ru^qn;AsxQ|7ZQVj4#j3G{&%f$W+Gu4 zzvWF@Vv0v8zDlp8bL_lx_y=dDaDT+Wa(pJ#>Yp^4Z@#7H3930B(R|T(S!3kO2zqaB z3I*rA>a%*v(x(`&_~~FgV zI*J{4sXb!csXSsF-;bFDNWzu^ZQ-vD?k0R=c4t8G&BsK3pzhzMOnNzx?e(_ep&akP zc@@YyVm$4gD)gU;({~STGxL0=l-=?7gX-tyfed^LPMLLks7tYTw$i&=Yc5<-xGrT% znfFzY-jiC+x8k%Nzn6O2tL&9@#$gS%mpiao&ThL+*bN$Rox$gt%*g;`tR7?2SF$spqm@M|QD? z$6);6iOXaFRBlf)@U-P855IP=I`w-LzIw$q=ReW!>RL&h1FK}=fnHapZY+RE8w)Jv z$+KZ8(tn6vva`)i-xIzs(7G72Ln;X;hCQcW;|X#s(LLMuImp{zVQ6cu!lW4c3>q}@ z0}7bMxcLMfWOFc4eF+)(?#C(SzJt>vhUQuE!?AJU!Z`F^CuwfI^0)=aIh#v#b~kH= zdPsV)rY$;S(C$T)we8uH??I>yDHRavMq|PzqKmrAZnrZ>>A--5k&Ol`_QpH!R1_CLA z+0NCxg2)HK%ja@HNdx41N=cKA9$bD+-t0@308XC41OYb?WlWCbj00ZUT#s z^WXW0mp)1gg#2vGeRMB>B#fG5mvs%Pw7%`%8Zp4S_OSjrD;}*WI`paIdE4OhgX~_v zbwWW4oC>)YOsH^nfdxI=SqG1BWX_wrq3I=<#rubA4OUeM2E4j^Y>A5P`~o|J@5<)7fSmv1 zbkXhOdKCa$ARwy&kM=)eKvV0P56=AhvCM%~_MoZEApO7x0)004+g5qUQ0oOo>aKvG z)5Ub)dy+ZmAk@oof_qtk;+7^H4*oC#get6e@OJ9nGQ$EiG2h4@Xi?s99=#4)+2YX# zwd=Nnu7#w%1&u`bB2VOdW2eFGVZghG*^81tVwludU1$x7`wlq&(#Yu>zX?DGkAa*y zKHu!Muokbnym4XDx)BIiT#k@Rwz$;mbT%m{1?H)|PEh`w3*nkPDHaL&`Z`PX?iU?- zU&KwmqEMhw^fcgLGat;W_=;prVp=6&ON9v%iJ#i2F3f-o=Q^~eAC|Z26NB=}Mov9vV z@raQ&#tm+pTaX-_A|^(kQ|B7kuC*V308k#9XZaB$G%LpfswzXqC(YP=XO?xuOKfmw z{Sl^vHeuk8ZaqmjgP1$>0&^%n+`1eP?^0~vJz}gqfujokf&;(~ZjNTCCxrSi?cIo? z=cDKy23gRv=QSu$^Vl$z^pd6PoyAd)9|K}uytVX@|1_)Dhvud5${0T~iWSFPnxUYYoh=`7aB#gs9iFu{z|pX3OAR2I=~6qn z&ihBze(^%wM?iC{=%E+zb3Zq!Kv}Ve0M8N-uEfpqZ_;=O{XXJh0-_tkzWUbi6A;ML zAZPHkeLZh&Rh40k6dG{&)lgMXT~L((C$8(u9B{~i(pijdR=J1V)V9Hxn5GQ$Y-{89 z%z)oE%R~)&E}(7{YD~4K)^5k1PADz^v<_&XNY^;>gglTmt(~S-wY7r%-`}0piKG@F zDwh2NiE-MVf-Q_&8=eH{Kam_<0mZ66Vnk3o;icOZvWki=5NBP?Ad2H!85>gRxATq3 zO1G09G5V+`21XivsCN3+UPirqCqtSOX0bZZpADOe(wTDWFn?fE%R*O)TZ~Yw=Fn`E z7*FoO4=j$OGS#RaG3qXt@3M`oqtO2i8BT~+mW3TdZ-f#p7T(jEgHW;3$aQ*lAeI5I zmUb%mKGv~qp|Qe@r`-RUI7G^Q$`a_G1)MrV>dhGL5OEOHF2ukEPK4qCAQSYDg}-EX z7Wx65Jig7+;Z;|9w~e0nJq2CA@ugai`efkx`{G+ifMd2vNFZc`-v+@c!Emk&A^5FzN5lUrKLfID=Es7u2ZN>SHa7NJ}b%o%$wu z7Wmr2tjmCV0Na208DO^`cQiR^FK1nwa4c_l(hB|+>8ps|bEZ8tc#Gg>oV&q}D7yWD zh$w>i<0+|+aD6dHW_7q}cUpZz_X>Sxw-H`$MHn~&7mxQb^RD+tn%tqyl{~5tZduN| zTIA8#tjUatMM=O56^Uz6W_>6ccffD2k%8vSgZt>}GQ=9c<3@Z?_ihb2J$PSrA;`Vb zHpVHilIn6PprIEB6yuKptZ$S-j_9qpCfP@fe(b6yG|Jr1_mgbeRyIq4OtRrlMp4NNMX%;vX*@kx?Jr?=?fYryftrr&(#e$m~1b!Yk* zEII2C{mdJF*#B#QNmF{?^x3ZDYnsIAnNlC!TlRYGcA~Wrmm9AcUZZ9Dv?P8)@@c}n zHX7N4BJ{4tb|5ubm0UKvK38JucX|Im-7UBk7o4QFaLTln$OS{nQR1q5tugJuwr6uT z+lc)p#i{)R!u81q2;qT+7*Ygf>wkY$x4t<|I@s*@9dadv%dqBeGYMK#TwQ>p+(~kv zxv?S;Bn{S~MPvD>k69(w&5FQHiUtrTic<+*Mn8YW6adu8 z={X-PA!ra{;MaN}`US?m`@={FR*hyNqz^Crs3A4IM}#hV=2?GPo2DmE4ojJ2SMdB zT-!Tj`D%I&R^-U(?j>w)&ZW@<2XKSNlJR&o6?|h!m7XU+Lynqr&x3GcV$K+Eff_vmzkR?DK%x@~dlA3;7H4lqq)b{`;$}40rC^;F zWxg$0(7+enWk4}jn%_nshns93F&1gJ0r14HCw8`!qyIHh5W4}l(}<>lZRxz#^AvZP1@lLRc*Wz_LF`d2L z_3@(eBagDI_fiaX7LMbsv{bH1mw-gPIaq!#xY4M%&%`$OD5n}btZxE3z;w;^Gg)VPA>?OT}}gi z#E1nR5{hJUFanTp8O$s6j(0KTbIvhZFIT?WseC7yrX^_A9+9b&9SHD8SEl*foTg+^ zUdr-Dlx`$0p`22ruH%miEW*R&?^F?T%BfYBq=76vn=+CDYI@bN1lrfU%0a>$2*KeP zN84UrLI`8+q;6^okB)ej^$nIYn-N8F=2zvqJ~xHl2I+9w{+URZE4D?YcUc~Ie>jsu z&UKz#-(+d*iS27)Q>iIth`g2zHRYk^C>gG1h?VWRo+6HwzLp^EGfofiQvZCzZ`h=(Z0=ZMOd zYxlc%KaGzIK-&Yd`-lp-!*8IzCZKEsU9u6YQkOk#Ct%@?`ST@g{3B3qquK=s7@5SY zV{ua^8h*Tj38F<8#2Ut%O)fEOkK>g-w+{{zi)UwKb7CfBJF*m_g zWA-|Did?I%o{TA!PD4Cu*`$p$N{P!eKd*oL%E&E{^TY(fK(ywguQ@howV#_~L6AOT z{W)t70A+3rLA6q^`E|+U7@P%Jd!mlnfCm>Z)#2a8E^2;B%w+6N(RzpSFZ+x}D2is> z7Goyd&C%P92V7*h?15B*$6e6&*4k^P**M~5tA~_>$F~mb7?OyyEWJE_prglK07l<@ zk7utN8G***@J(ikOCm15Ft(hzw$B4vQJ^%Rc*ppa9D22FUYgM4`^4$DaX>8k|50_2 z78uYpzd6vhF)5L}9Vl`Q1u*DJZjt4SL|kaCeL;j*%oKSfyMS)U0t&eUXz1#wwpNFb&*Cf!^OlW4-buyNMUz z@R-cSCpwZY8JST`5|KqIU0OzbOfq$d!gZK@Ln(}zZc2zWaLeQmjShx9*9 zLQG<&K!8J|GLU^9$ZjA74`l6nxD^$+IS+bwA`iN0nR@H%ba=Of1+a<@KJGlt?sASg zdk|D)79Dc#SGuoDw9q7# zt)-;-`GOG}2%YQeRZ^tJZn?CD!@@BeUfg^XO(8%OQvoU^K9 z8Q8J~1zJ_L%_z#;5ikethScMMcVu$*ID>eq9kD)wD1Ws3T!U2DtAOs4j!z}vFj+dzs0WfH zF@Ac7#1pLQk~;SaKUBWO48WLQX)F!Y;6Zyz+#t^X^UCBL z?4Ozp%1YPTwJ5B(PXRlHVVm{)G~3VNYDeYf>g_fnlx%h$YR~mrmDesllWyD!A`^Ma zTXY{WdNn32|s8n*4k)^PvPQd45>nO?X(5IC-@AloVL8sFJTX4x4=?mdiEKw zkD+eovs8P_R7&qtMLFdi>!x8T16EnnH?Q~%tdBJJ9PLn>0pY&q{O!KU#GPnn<$V}p zcoZcBUcC_xjO1uVG>S0=@Ijr@%T~`5)cPfb3jUTH`0ba3pch}PS|B(kUST${$D+QA zDhK#=1}fL})Hb#cGmPQ-V%4+tJW%dIV; z_uF<_U_#7UJDpV{AX~l2)3PI*b zjtztIjj7E4f6`8?KtY=CWWB1c@d+O>!s0!=Vk@q$ZYM0p4^biesJkj3a#41Rpkb@& z&n^t(-eiKNo~jb(gv&lpVQ!4>N)|9_cY0ty7`21~yKlmOyxh@NY!%@v{#pw`-QJ`_ zL~i*UJi{ZZ`3AXo8$QGfl=7^wuTmkNrVe)bQm7Q+_`SZYC|N^pPY0YZL6}$g9vW*P z@DYPc;55H8c?WhKy6KL%_>{B`G$faG;ecL&W7!U!bG=brONL+w3 zxZ<_l{ZoOSiU3g`A`6gDqt%mwx)%W}-)sh*KTsC03;kwNPFd;qWh-}rMdU~q;wR$d zn={o~(hhOlFyy17pP4Dkeb?ywrNplz_o_GQZ`ox0WmDTJUGEBk-IB~j^uK99cgAnH z=h&W0mTvQVXtk-VDTqnF+wrhif^7dvjKhH9a#V9Nx()|~CD(a#r;5@BDo7Ttr@OiVwsJ2dq3R7VW;nTz@?7)q-MDg$ql|j=*ZOC>Av)+Le^+ks2BIb~6jB z@^lv}B1FCM_+-(FPK<8cn!;jSJ5C1vni{pk%Zg0f^fjc0(QCs2eHNtq?ms!aa^hYo zE=JFnF@);mIS;+Qk7{ua6m*2L95XygI152VAH>k=tRffz7X65E;I1>_Nh^)C7z9tu z=U3cKi>k8dCC`b@b|AXOaM$-n5EoD1oma%axW`};4K8mtA}%7Ck_beN(OxO3eGA~4 zRqMYr_AKM|rgsj}3cNS9xZmAF_b`xR?XYoaZxYWwVkEuIQF!jc9(c(+@cYvp+>t=C z!0LR*evLdMkR7qkOn3847PRos``KF6mWfs@j{1Mv2J?JpxK3u5@%u4JKL?u99x(u? zAjL%AAW~a?3*U-Tp7*waIXjirUgHC1e*Og|aZSu;xgYD3HaBctC{=yFv;N@=vVJ4{ z=9YOD)2g}Nj;Ni0w!nnTr-98YO}>lcMV*xER1c6i7f-)*wND|$aLSIH(-~8U`^oVg zJ%Ih35YRy;$SQM4PBw{mWHUHBQk^R4AKN|K#jr*1N_r-z4P#{E?o_lTRlSVb#~Ucl z^;%JW)x7}t$yfR6v1(BjWO6t!cW z{;hcipFu89H3>a5fvOHwBRp1bK10IKBLP8o*7 zK_R88worFJu7fYVd8{m~Tcn9R&!LrB?|<;cey>?lCo{Awyd!^!=K6^0lzfUb+o;6G@Cj#}!p&rN??-mAIqS=0Or>Cls7{7B*XQo6a zOLgX_#*)6T5BX%dlj>rP-71QOtrv5wm%gNRQK5PqY?QU9Rx z+sjRi`fZ%a#W|=X21)C^JgZr@fGCVQ^aF?-b3(|b;3LLKL6MF2jg`vY8@f+k8i%L` z#fHzwlCIQKQg`lKK*rTrgdqRG!9KNyHkkYW$~h;!zC`x8{=Le!eLHRuSr3|YHY%2v zXTs)wA*$Pu)c&gEt39#!!>b)DRlisLJUA}h_?V}o!QdMc`L}Ei?IHn=lMwkCgQGaV zARVLn%l^c=KOFAe^(!#8y0HVtk_E^WD@c6UqUuD4WSML@^opZbu;xU|10HoI!R8sZ zOgd?rR%=^t#q=~v-_B%1-2-QjL<&hDFmqV>5FiZU9w+J%D92y+u8Rr1cv>(@T04rL z2G0mlkx-McU+>N{C{u)#?bA(!cVKUg=gj2y6Zuao7NL5D*P7(-w%VpneTwQVo?oNm zC$%N1xEQBmFF1RHLlMob>Q8TJ__vI-zuehT`L{EVZW|{S&`0}=gqvI1P>?8ccHpr! zzsg|7TeH*6ZjTFgA&LZ6bLZl{xSl%LOReUK^83Z!4((o|q70vAnq=GCI#c9>+P%(C zr5V&oM_Q<_n!yiIYOPbVbXwC@eat3#w%AL_BQD3M< z2CCuw*ZMV;ls;QFH1_9#6lV&e?#QpWUTggftj>IdoyUz#*?nZLuS<5t@GV?3QC z^3oh+vS&0R%O?NawBy)s>Ykg!q~}z#>#E6-Vm?<0YoIFyU64T8BNSdo*y|FOo6T5u zoIO#^q8Df4-`d}L`_?u@zBo)~EWu5#?c#an#erPJF1=aw`IRz`jsh2~_POoi_ZOu< z0a?U9Kj8(ikNuluv<%3M_Vrgnw~)wK{ZU1j&FWD5P3TaF*slhpW|ukQp1%SDGVf+x zQ{^8}fXK>YoYlUR|D*YNqe=8sh^|Rkgd`+@Xmx3W>lZ8d#;+Gh2NOUW$lAK%E}Me>JF2vK*EDBj|6OHu6@J~x8!iNDreo3+^H z3J(W(UK5)H|9L+kmz+K?(bp`sEC&?hW5>;hY8!Wrih4MC*Vg$V!x~f^zngKoky_5j zg#*)#kXEJwZazX$Jy!vY#!96iXxeo>`uF8Y(44jwjOF8&8pASKCrKIz!IcLplBEbcENJPy+6EEGy6{!2nX@r^}tHie&` zR!HO3!;l{wFLrj2Y0@`LGkyoKtv~vZ5dy>!HHWeV3UNnAUu2>K(@5dkx-aiYnR2zV z^3!!Gss5umu$hOik;nGxvZlDVx@qX@WcX}nx`iQ#K87_4>G<({Me-9TrhJI+w+gCCeze+B#%jYy{R+r|{a<UHuvu$;aLqT37mdIq`Zgva@fb*RE7{A4;%iXj?k)Rp3Ptl2P^q%khSp z;nMtfH!n>l$+%+M#J-AAaK~#2HTdf=66YEE&ovNExQ)rD1PjyiDZ1YtDOIiUU@fWC zI`4KT8IR~ARM`c%iv z|5BB^>BWB*?X<<8dwXn`zfK@CSpJ-aCiN$GJB=((JG9{?f zJ|pawBI0ACJAk4YZHVh-4MS|Cnv;Ekh7)gcqz2UQE>$FXc9(x7U^X#wS^uY$!t2Yj z;B-fJnGzh#-b`sn>H; zslR!?DJ%hD$mnphiewF#H!k;Afbz8&kO3r+oPnFE6qSO|z zrG=}rP34G$^|({#9Kqt0BIvnOpC!0Tys=gQdG+tM0je{6mKYb)@7Xzo|AM4uEt2`| zSrj^t8)BFykJGG%Nl$5Kt7d)-Z{^>=F>ad`?~A{j3iu@A0c+|+MckE^u{nFp6>K%{2r zC=WhmV!S#Ya?QuozvW61IvVU;4f`6|%2m-u8{YYPptn@{s6}zBlcmn{){;TXkj_LK z6+higFGS3-pmOWtG@C6sPZ#`=I{-_xbh44s#;|xYzR-@BgP$4U{>b*7w-4 z@N46uY`$iJ&>dO91zzT?9i8BAoMx!>s*)LzEj6`0& zEJ4J+pBy!X{giE)+=bu$d&HP{C`dPI2iMd)i&Au?q2AL1*LWX1zbB5QB(*hWvWsFX zJXk4en63KyTWO6I$kKZc$hjse_kK&M9>cN-AU~jACXTe^Fr4Y5F-R!o%$uV&?{~0< z4CV`%LY$wHs$Bn9ku*EqQ7X@d6U(KfCO)?nKw;BuJ!zA}ah-Zp39;1kd2*jN8jO1O z=5Qw4Sm%0@UM2OvgA!l#^I%J$o9fsg0&!a zIL5X!n$DZ~zk2(K3_6<;)$Uz1A6U_49sJ8b`7rC+)(@z9IixNU`;*Hnp`_8Tfk!OqWe z+IM{4qC$~ZI$pCMz+(cfTDb3nglB0MQt$x&dw2u=51-kK`?i;8I8C=e+~)t}{vL`dTn1wUV(;DL+%umj|qgKs<&*VsURY!%YMNiHjQrddtQ z4UMKDlA=;Hl9w3O;*Wn8r+j~l65iHX{y?)QMf2VMfo=KsSMuiXk%rC^?^N%l`^&}2 z=yz8~C7%{_j!wvPbU&<;qp)bpKVOh*)4t{O{v-x=s2}*rAFzjcpuvDk5LM&A20DRb zh47q&EwG5e;-%P75s$n@Z?Kzr@0j!Is3BEP@ zHaky$B4F7h+XJETVgB4kJM^zgFnkC+l46Tp6%d7f#PDaXZFLYn|Is_eD-tPx zn*{8u*M9FI+fVE4F5)Q8sEd#fiJ7%Mo3LfMP-9zEUwMj<=8^TJPtNwk5Bt9kkq4wIM zuT?iG2A9%b;QqELJ?>f!NM1l4k${r9BW-lm-6SVA%v!Z{mVt!>iCG3$GJF(;D)WI@ zo-DEYKi5ZBA2C!(YHn?;Cx#LaA@Xdc$9$4I2`it|BpC>Y;7- zQ)$bCu|Me)&wpSGB-?Du>*{)KZ9FCPO7d2PF0X*E%EZx<;hAMpim#^v_ciqvUv8Hn zPaoZBhF)LK#dBsXru#}Up2dO1FT=`QKefck-nC;753)Dmq^TAUVkRrWGTA>NlC_Kj zM`@&L4c)%OcCsC%vXT>fltUpk1XP7X9rI$6i^%0wK{{v`^w3^DZe6M<=xwqwAWy53 zNKl0wm7BJO9tjHbe6ga-(td+;_WpxmHW>>Up0^ASGZDew%Ty27U(32$O?FeoPH{}} z-XMZ+c|ukFDfLVCE>)#YDJ3~NKSZy8 z$R^#8B3>=yJhO8)m-_KM=Zn41^0Tl#;@>EV@&Qlb9*2qG`vNZ2(Cv_IeKih+-bw{^ z-W0tP50~(m=S5qTt5zoK1F@C?+e(AUd>4JBi@J92F{YX9c4{S`Z7-^$3-#*rWM4Nj zSbgwF8I8Cjm>*Cz8uZ?a-Ed_H8M>RI`zB&oo@scMaS?q`Q$1i;;i$d_1w30H;(PDX ztxvz&3Ag+n)>36kW+k^y7>S@*wO*Iz@af=^%(rWFj0@orpLhH1;1}h9wLORUGCOx; z>@1dDzIOwm1I(UtCzdUiY~F!CCnQVEW zfF-KA0gPR8V-Xo+Gre8sJZlsFSuGT8>`VAyTxUvg?DQ{ZjeGd5&&#-p`pUDtTx4um zLavIqU&=^M`t17*63472%9AZ|hQ+sAp{hQGzAjm>CXR_UdA#@n_HC?9Z1tQuz14Sq z&G|-%OTYZM-Z*knD-$<#F)H_h7jOTfW{jwYH?r_w>i1HUEx^#-Cm_}Y~LEGf2Ju;}80=rf|Y&C{2W>jy;~Tl58j zfNSm(>3*S0U?{O!RKXh~);psaj2=-=r-EygOXJp@dsCj{8#u_#^^yav#8z)K^5&<_ zxv=x8NTikA=ZYcD+saDoSw)ZM4&+dd7W13;EzW~I)gKVXU`*UH720Y0`OP!(nBAbEU%JbmA}~^@y3#)bnZfFzU#s_Iaka!Kj*`8znr# zr*Bv%xaU$@M)vn+h?JGO*WzYljcypnG$L$nQmeRHNK{OB{u{5SalaHo97J^e`$x(l zzBpr~cU6%%Ni$U4hO4wc={ojZAY)pYnPbtHhtnZQ&t&vmgF5B9dr4BzpDeUsWLN;rnsKq`VMNI@_#@Y{sWqVI;DT)=SO zWmf3fFgA7ebESBHxnJ=(137Wmi|(>=|72_Zxni$s3QLIAzC77~aiu1VY5Yu=2%J!x z{Y8p~i`z4j?do;JDCt5_qmlUd;#lf-P#)uLdby`#hks0AZVLnQBY~xmCpK?F@+&?6 zQgZLO!D-c4Q7ssz)nu{v&A&ZV574G}kxc+3WL=WR#PE?&%=pA;05` zSQu){k_Xbv*FBwb5TwZ?!tnpQRQJ)X&ydmyMN+qEOoCe*3&3@4JEG7GOLfRF%q2Mc z;!RdfBUZz+M-2QI1+UVUxq_2-H1Ohz7T>T4`{mEdvt6i4_p*&L_-sVc6f^v1;22c( zGQ)LqoUpKS=gZ3X_cj7}iwuiP4(mJq3jVZ2cT3n@mjdBFU;B)y5|(a$xB>38$S=To zw11l>7_^0+m4XNvS+^uIg0Tjk*?ZG^kEr~@cNX$%V*2PM&qf`a@-=z}l;@MqD?*ue zq>V`7!%vb8wKf)QQ1Xmykfx+NhlQzd;89uIi9%k%D`TIgtxLo_bkm$8F;8gSzx)`S z1MGJ{h~ZIQO}jIFP5UYc%%4g&;VT)U3H2hUk} z-H&^1bRlYe16K9n^r?dNRuE^WoDF-;wJALnsUgaN%fMyPjv;WeK?H*px+X1KevLh- z8-+Q#`eCypbn7ZmNmM#APy_Kd248eCu2zvRg({x<@+NeTMt|XhmiC6;2ysb#34Z(z zl1rslUZ07zgnd06jhC2V^4%#|9k)9>RY6XSm8hj&%F+MV?UB4p&%x6__$HOg2(;K9 zH;3p|;__29v+@nyQFpa#yJ=w~IoEbz8p>tR?^>oujGO%V1(?rU$m}c)@VX;7I@kUv z_Fc|Y$eeX1p*@;Fi!ST3^(M!Nn!^0F^dR2cbH>qFDszc_ATx9a2b>2@@Q#={3n5r=cL@Zy;7$^3kwp^R3GSXifZ*;9K^EOzd8hDCJ<~ni^*r@3|L_Mus;R1>3c$bs05Bd4;9&uv1i-}jPyW-G z{|PqMe;NlH8w(p32N(B$cf2R~xOh+SaB=Yo@t+Xi|GNBtsfQncXZV=LSWH+LEC9@B7+B9R9{K?E001T?*5i`_{;yzQ0m{{02xDO}*5f%mjlN5{eu?h|K%O`K7?2jAMV6};%_W4AmM%suu zr-H^0mTf!RUp~9)#F%Z1Dr&2n71Nh&bAm=;q#2853c@nKd40?xabjQtUG|Ti9T13)Li=`^`wWSGFbN zH}ft;dPd}KnBb^JYbfvga4n^i=04rDUjbRwi@5DvAq)ERgiND~4`lxv81SJfw5H^ zCB`sceNHX(rL~AsjnhUCNU$I<7-dn&%rSZf$;B`$DcUi&AGqQEolN|4*zTHH=#-KmpYewo6j zz`Y9pR+|98sh-eS;M*~m;}GtoKQ@0MUt#CYWg%t9jB{*ePOx++Q8XTV=Bx6TX+-=# zuxktB37QPj$ZG_8hBSxF|8)0nC|{!bH>YS+)lvwpa#>l`f2fX@O>=12V7UEA(x-u` z^qMnmt-eet=Oa)_7x5(H#rTTz0W;c2xo$n^K#bD|)#k41{&w%#fcbmq*TSUu>OuF* z+v~t010pSF&{Hv9`h*=+h@ibZLd>Dmu=*8iEzQ60?~iYr&O)Q?sjlPkeyV&6i5-%< zY^ak`RbQl3WsO$v#hp}Sdf7ZoItKcpL9IKbWx46ueg9RhLcqY;ErhfUQjsF|-m#jW z>60EGjLj;ym=44HgJ}YL8`<=7Vs_xZ12wIms&>X#7;uK~L$lO?-1C>m?OI|p`gJ$1 zXv1Yj+_$Yu-#ZrywAA+lN#}~KJ-O$LpVjT&QJL1PFAdViy!8^6v~AF5KIQQ=SISRE8MzDlocg=EQOcF234vQk{fQ5gJ>{hVgtg|ydnHmDHthI06SEzu zl{KM81v+dkB9b)fPt^GH+?D1oib(Seeu|QLpq?Wun^;YKzugN$9f~xc_v;BRJM(oZ zU;4(3+{tg@z18e_GY6w(KU0rZ7MCV{%%L#VL-q;i-AUdI{Y}ETyr+zCckQpkx|uFo z%5cm1j`5M>;HXpIx9ew?hPHBU*J|o^MxTi6)KglW7WoxS#M*rO^m5dDpUtv+zAKpx z|1JzTo}!IL2QSlTT90v{z$@CU}KnIYt5J3XfU!V9|1=1uRewHJG|-2Zn(c%GTxooyR)cq?x}0<2V~m>*eV zDG)-MgHx%s-cuc*-n#TwVV6oON&6~l7yDN3vc~qC3OyeWukvV=LYzU7{PGOqFht3? zK-9STZ(QRio+u($YrZxE$PXSO3RVTcS|5k$Pp+?Z>@Q8IsqOHZaB9-zT|gL`{SLw- zAZz^yTdPma2Dm2d^@OhU%GOLEllQ5TuN2Wx-?K%#nK(Nt+XYVt21^S*gOjBm{q{xC zB*ynKb*^whXI}^wQ)j8SGo4Hp%y?bgXT)(*~r?9eXfuogQ3J-wO zQW(YYSZdh|iah*FZ8Mv~8~I*9P(BgSNKv{I}aM|7<+JqV2ZZMluHaI3**04Z>xAMZ~; z{v2?ovuckfA0&Ar0EFYB@woBx)VuV3gAS*c{qPd7Jz zn9SecooI6mmFSfudF7X6JmnB~`f>xh8k(TSYD%#>pzQT*i3-Lv>?*YC< z{?i>PDQ7X(o&9Vsj%BT~@E*p4u}0OxFh3hS+8DeID(vsD_H6MEbjEm7&^hxoTc^kz zq4}v)!VqIcBvGavSk6~pVf^A*cUF=ja88R&u+1%H2~;1F68os-e_jY(e+m2E|YO ze%I`ae6HjfRt0!`df%kUENKwv=M8sI=NOlMi^kf3=S+p#@ou>h7A$`rys4r-ikW#{ zV}^gK<8Q z7T;znBN~^C_u;j~+Up~WpS73_ZB1CZY4=0737R)%{oN)Ehg#?fwT!xLA?_-w=;JEC zh0?QIDuHd{_kk2W&wy1Tq(rK9qF@_hJHZu%;98;{TAl~e6II!)WJ=|9NQCgW5Z z48f#|OhVzJjzXmaBeiXf>|=%|ZS}Y;ujiN@zXBNGc zZW+B_%MGw&fyH(_o%Nj1`mmC*)sd}}QQP#v$m&tfcTM!l?I0zq&n_kr{FwDax;SzA z)!cl|W+h*%t@(B8nuxK8`Xl|c$PyD5MSG1$aXtVIsnxh>YO^X)n$Xl0-3an$4$Z2V zy_KoGG~L^cZnM`m((AO?GfyZqVmF$d=sU*gc0!0xvJ|WTzSatmGtB)5@>R-@88&C# zW&D!iR|q}2`0#D%l?ib)0StrVOSHy@n@r)@$Te=-*3s$P%=?9UgdS!*!cASC6V zeSTsmT=v{N5n{sYP4(&BH?A@&W`2A!tw?8E9fGLvF*4;Db>)6HXz2FFLJJh~rNT6T z+WgmjCC_D+^Tq=}tfk?wq2|ge=&jZjZAJU~1K_P2BSTr!!S!HHk;E1Jdt-q15q>JZ zRqNmBTVvwq6+7N8m!z@&3EY%1R{_+|-whYHlss z7x|tBk6sv&Um>y(rfMI4{M>v1nBF#3LmN-uOw>gOy&@9A*Jkx}=)oh(bZpw``dRI5 z+kKLlFz&mC3RSx9TwB~O3<{jXvvHSpjc>h07p|js84^xnls4;&SS}75`CVD14JI^& zE4poeGYsr#^*-SzE?vfKv3jBuO<|R-m4PW0HD^tpYFvWBU(L5h3Ig#qu~Tvxz5kS~ z0~lmis$ou0q}2N)E(#2VN0DFD+FRAO2dI@F-$m3Lu3W#`JU#z9#|MSGj>9Kc^-bbJ zJ+4(6vgCUDgZn0$P7fF-S*C-S98#nC0W#N&Nt@os+f&;v?0(X3HCDUDLoEu%TJN3F zn|o-U5Z7Zrapf~>_Zc^y?^oB9dcOu8t{wo~V^e2y>Q_RNFYuipe`@3|F*D-%;BC*|+;~Qx(avgM^D{k8I64eGdqkJ?lOXxi?kx@PZspwD{7I)w!L2) zvWqmP;n^V*j_tEod7qL>`AG<1TqabOJ4}pO?Vc6?yI~Z7*f}_|PUQ~P;!%a-BjWN`~R2+ZTkvbW@eBGKY zI3bY-r~xZU#$9!Vfo?Y~ok%!GgL+0tVEfWu1G=YKc)#!CvnH-dqGGl7Lj=?Ao^Vp{ z!MAYCS>}zB=zD|%MFzp4(Va#y-`z}`>k{Q)x~acz&d$w?1}?GcgG4M!PQ$qC79#e{ zWFG)HMg_eAOSfNoX^{tmH;D!DysE5OsFBqsy^Nu+OE(Vysnd;+XNY@)9hrM~pX}g? zusm$n7Lp3l+*oYih~7s(`M~|9xzbqd zcc5<@az{A=d~|o6Y1>}v%hJxsd~KB8vGQ6sc%k~apVIa7RfUa^&LnZ(jt229;l?oF z^|2#x-%M2PQ0GeG$u#lws@t}JT*Pergh7?T;D!wMZ%;UjCj+gE;m&~!VRzs%N7_8p zlB=ES`Hl2yy}&(}&8XMTao6(H!FSjBn+_LtrWspzOScTL9dv2+XJ*cpc~Im=)5^i1 z#eDZuF>3GR`g(HVa;r=keg02G;on{vtW)Y`q&Dd~eZiT{O=VgHf2lJ~P~d$o^-5JP zK)N-fQwkg7s!h=OY7e}C9)P#GhcEp*jv06W_-+?5Chd~gp5oRsvWJZQ@P8hZWw=)) zf)nOER`X$vbft*T(TLc>to4VBKi~QKzqv>YJ_lM?swB|jR5we($dyO~aL%Do7G!+x zKJi=9-Vkx!wREt``0XWKcTwJ#-OR)2x2&BGL2nrT2~HID@+aPu+H(YkWeJX0XO&vX zno5GQS}hS4-9?SJDKkeuw~lIEL+;hTqE=1kb+uuwyf!8<<2ts++QbS)f_EC~kz_&K zb`mD~{MGB^;q64E-lJxgllrq6KiJxs8R=#_iwMeUY$P^Aj83ZZ+CA)=LAWV2W=)U%`4+irLP8rfnl8YW(Gn{bDO<9i|)tNlNhMCS3IABe=QgG&lv-+1$i zeiv!9C@-6tDpGirO{2x`b!Mf4@3oN7I^VY^6x7!9eD5}=^1iQmowmwqdH!xXtvU0b zmvWc+_Wa)o@W9g`SI!>)#Js9GIBh22wx=pFw#(1I))Q3E1;b74d}f+Lm!)b@vn9kv zo+>l^%s^P^>pMq4tZ_z)tPW`E+sG)UIxI@r?)=(rRddnJ*w6MvFXZXT1At_yXSh!~ zF8I~hsrbZSDSN?$+u@5h{jk(u90p2y-@JmW#&h=9j&uvQ5k;~l72+RmUr?T)R2RTy z20cUMXV+IDZ$d1%w%0ovs754r^2ZmS)o(+O`F|zc6rUXUUY-}~PRSY$Uh%LE)(cB& z?H?_}mVzlZ+PlYq%;g7S^I#(+Ld@)VrOoYZSOB^)gbpd>yO5vpT1R&jNe-M`^{AVS zcTkmWT4Fh8Xm|?O?3-X!V>V(Aq%&jcva2ygHsL!Ku;h`Mjs_CbVw)tZvrW#rJ^-Gd z%XQn6?!M+aqme6c`!Fp&G;6cbQ*^|rc~}v`Xni#YewyxfXZYDQj@<;?P?XVf{HQ0b z@BF}Y@TR4L=kwo3pS?~R|IVD8$^xLM zmo%Atg_}sYz%}mU93{RUS8ZKOU7C@% z>z3F)CNnmAHrEU`Yv2X%$c&WJW2TFkHM&|0(mrR79RzC6P5ryvO9qJZ9vM5De3i>r& zls(((y6i>2`z8QICZCp#Qyv6b>azazX>w*KsZ%vh0?vK2YdM1vJNr(1{o`x0tnK*t zri9wfjBz`ukOnC=Hy&b51wE`k>lFzS)LscGrFz}FE=t^a&1ipR?>~{Y_hRU}$8v1R zJRZg+@QqjSNxiBLhDe4*yBikqiwu@`Epu?M9>u~|QE-~{@om*v53N=3LfSPuBF3F+ zPvP_7{(R&0Ta`JF=@3lRa$njLTDE7gOjU9BPYMg^)lI6j0-ZZ5zMV&VhT+Lic_Cu$ zRK`J)c1qgE)I>$euXfkZ+J&2*{=OG?o}(l##{59|Qsx0rzxynZvOiK0?x_vqx!V22 zjmb;P8+$QmuQ~&JD#!2-P=_~v)@cX-vf4(I3G^-uL)vT4VJ^2Xi7$&t_}U-Fp8H^zYt?*K4D2^EmA!wF*UM~N<`+Z zqhEzgjc*MEckf?+Fp}KPe*kRtwXZKc0A3Kic3LrS42UG~99c^+TOGNj8|I$@288>x z1UBVpzCmqN2zqXY{tBG_S1=J+J7I)6TfCCchBL|)67qxpXf1xEmT`dXdjBX=8S=bq z2k)PbRZo<%IRVKhux2<@(e}%wdO^R(}5(6Y7^|IWH(&i#O)E;^9ad~X&M6NF_)PtcjvQ&L&WL_SR)YxTOs=nNaLB<*4X%_G$xJ!;GTC(QRC_dNeC ztUDO5eeQL){LaQF%FIp*rlve4040Zt4{+3Agsz$n3H7a*tJ_>a7;YO+-%8>azkg;2 zn;HCiWf}0j`|z?z?x^YW>1MhJ{UCPtV_s)QfnPqK?@+)d0*7oc9jm;Hpyj!dU`POAS>kzV<3#IPvDI`zg8Xw9B@j_}3) z#Zox-4`uP1bC;e~ZDVdjC+yqt{nw0Itv6qbg|i#XQ)HHQa= z*W*(k)s%n0lH3mzoom?Wd@I+^@T}cAXyCK6#*RQe&G~cxDOR1bnR?RJ(E{X?DKBK# z%fBZs+8c5%{|H3TUMSp?fB-7wC$+NPoS!^LyLlG4g8lDJWXr}}QxHg<^s}JFC0Eco z^*`jl5xU7?lcPeNQ%;J{UQ^HV5 zdvO4yL4WvP4n1%1+Z^4=_OOE8wLOHGOzT`XgLw&MYwn>>-!Atl>qbcfusZMOn~u4h zA8FkVIpUz@=j`hqyWefP^qQ%Y!ZLvDUdv2jAY8h-a7M`7%EAAdGzO9k*I$0vGp1;Ee}DXU=|xD3`hugg#e{`U zH$g#}sjBtsvUM!po&Gh`!|SGYZi6E68pm$xyVOnkp8am}%|pA4UpZ0OOtHoG7W{aD z{i|W3TOs25;#Wo!&CYo?@--VdHfZA@znAygVZe;nkkJ~4z#$fY(8q3ly3bMQagAqPI($XIxZ;I1-*XP zASW)~*Zr0wiI5R;>C_*uYaaT^XrpS%z|qKg1^&1I`hDFw8jF&%-)Zv`zh;cMx^Ip5 zM!>$zP4Rqcuj7}YxgU*wJDLibxwr(IXeXt4MR!(tTS@d7E&dA#2;nmuB;rzFD$9Ij zunl?^o~-t>Q*G!G%As2S!>Ij{B;;yy46PUZ0B~2*!o31kn2lmSvjJpu)ve(v87wZRGKN%yQv~|)_G$=-|WTF>=?b1Sq z$rR-&I6vC9OY>HIuuO8W3 z{6{+m4rb4C!jGCc5L@`uQ$lr|V!S5a5Qpby4jBb%-G~-=&Uv3utRHe&wPg}waTF8_ zK~o=@7vQY%jVGkWBzonJheqiARm)=-TdfVLIRi5uZ)}s|)8I!R0=PudakDCS4TGqW zeqY~m+Qb`}_&xw0=Q>?mUi11w{(SH5jt2nGddi~x8~E6-x|c`!xhDeWbB`Y62vLUF zk#6Hm6fobno?a8K5&|)C)TS(bo>v;i{I&)~G-ffJ^R*NHA{F$~GI&QBp z#R6q4`{eMRBBbo2!^`?7&c9R+QnP71|&+Hl_GBb8i|<;A;X5q-G6m9 zZ_;$DpEWsG-L8kbI$|pBRenA^rP>ml)0%sK-h$GrvHIe40t-M^)=v}oQ#%QRRs%tn z{;0EE=t3Nld(1~g`x-Zklmsz>RgW*@995d+h7JR^?GrNrZ|3paM;*??J<+Y$t^um3 ztIH|8P?^!!M>h#lW3_L8iLg8XBsA6bdzsX4qAZ&SKG=o-^f%Pu?SmS;j_#!|&(C1Bo#f}rZ1+1$hI4Q4aCG{H@Zx~AaMj9^W+b)v1SDR4}06W0?&2C7;d;e+V zAB^sT5c$(-#RtIIl*ORM8d;#Nj^Ib&C05cT((>8W;hhe4=`3n$Q=M2KU;e-*y1k$H zK$!*B;EOMQ89+(w+dStTSn}>OOK0P2#@_<&S0LZJ{3p`#Q3H>-TJr-yN6kLmEOz=7 znfGNRUT)oSq#62;&SGQ6Wj7z>tz9eN?J)l$LpTc#`p{~Bo746ZO>pmA77Bth$F|T_oH#gvNN|Z9#HLvXTKl<4i zAc72GZlKimok{dc*X)vyiq~mcM8aW zNh;0`UXU4x83A^w0{`BPBVLKVV-h}TfV6U|C={uT**U!jX6gw#2kqWD>?XZWjHAVO z4dD$I?WBj&f5PyX5|Cx;Bs4z^jfCy{elewWZ!$by%-r@E^i;Jl0=573aS5Q6WtcXS zx6RTjC`3DSf)1tx&UU2*TWtnzTw7NIC^oJEZ@hq7Aqj~Kwl*dz61qGOfK?Ay>c<~a z{v;H+kJ+;a=ZmLrU7Or`XDdZDs%*(Pa`cZ-kgGjHQx+duV=t%WQ28VJ2MOvU?}zVH z?vN)7+0*_9g(K{)&JO!{M7Gv0JASpS zv7p*wE!Xg`<=BkU8rq{G(CzZ&gYc6HIZz1v?U3D_cY-4L2et#+OqmsqlD(Qt8{K=Z z1b*srsykv$Z@b!M8}@Klzu8YjTG_+j`b_x`;`^kEK`{2xpIUYo>?R`SmY<%<3cA5s zTaH5hkR^n0bfrrXz9Cc#Db_?>0ur%&24_muw_N+ZVZb5zL|Mud)cZh0#2!SF6jL_A zmAF3gI#>0a015K2r2Mh}llhgSiN`PTrya&&SwTPD$UaycjV`~!JmY0Pn`Ya;;PSS2 zwY!iMs}*fVr(8~xJF~;~Js3moba`1}Xxo;nOrrBys~(kh{jxWooI)~62F5q9fZJ}P zu2~M^{$c(EW)3GSzYoV1EJ9zcO4G*`3v#OTZ8KVRYtsJN15?a#+PVi5?>p>5mgh`C zGB=VEn5Gvvdwz|b<_)!`AT&MyzPq&pfBO0!5cXwSTFLo?FRT@jLZSph%AW!}_KC}& z%hBJ_YU)`O*N6${s%Vvr)$LS)%=q<~foY!MKG3vN&$5*^T~Z+4NBz51x{(|#m7NuqB!d_ zbZZ~fWRqE!h|hHje>Q#2C5cIsc>WYLwNIR`4w~O97V8Nn@mp_(K!#+>i5AJ_Q21kt%VU3fdF~)|2oqj1>2C`( z`XN+J56fOjdTTS-CaKbK(aBWn_pI2an1LrZ4s^-mf%xGpYf9%&0&{0y1+tu z|8AnF@+FUJuXvNS#e48TYjk~mY+79rIc!~*XL>l;F{od7A=D7}GXl-w$wdMYA!T=A z3ZlXLGtU)*$sR@y0#H87-e9q2o}iu~qq2tXLg{k4zEn3iOq{fcH<-kTJz zHTxA=Pv!C1h-T2ym=(gG;c1f#n>TRyJ0Ha8*S;v2Ni9)L&)i&ZxT_oyVGkaO$r9Eo zsDB#Y<)sMa)gs|vE7nje32p`n8ym%osjYSn#xkSrY_rxp*tRBSVeZd}iz&wa|Wh-2rgwsV@CWz??h>KKfY0I$( z8H5SbBtbJ)?EQh|O#|vD*#s8j0TvYwRo#%B2f(SBoNfezh;ddhL9c&Krs>}NQU}%= zA_h87%rBpXxnJ{k;ANG`H#1MOsQcP-DU;8zswA%eI^ul0!}-3? zAdO~h89xX9*y3m0hETT6VVQLXR{F-Dw?e16tD=jI98PtaBBt+J<;h_1LXlm?AhSyRx-GM29$qIKsx7xI*+A*d<-tY0kaZtXui`mfoL z;8$#sh=%GuY+mTWh)0mGp?eF8Y5s4ph1sCac<)LbLPp($_G29 zRsMvzTqKg<40X2Wn>6Mcth)+V`lIBc>1J&qAXb_`_;SzVM#`Lda9P?sT}p+qVDFpJQ;{H34DSd}0pAHF zsZKNSX+qKKR#-Y8Xh?UzokR9H-BDioY+u-@!Eh7!RFEnfxj%QC2sB>QeBWs;4w4-t zXh>W~+!n$j&ro{=zZX~vnm1n&9ji4F9*c?&@4NcihO)a1Gd=)#f3YEc9#Q+})29u< zAaCjUlOqVNL0mWF(gxX1aI{+$W$rb!$qUk4T&+GM*PU_dDv{ALKBdD2&S)Bq{yr^( zEx}H_3z3p$cP~SpD@;^$cbj^AEjH)2o8mStx^)m&6)h$Xtj+lh6nN#<`Iu$)#+T@pV3(j?opz5!F#$LG zAUajo=|nVrvfDzYHpPPbiN&MS)8U>IVTE}FBGLhMrkqTBF~65=G&9fnn;+1vp>u&* zKs6UqiM$2kpr$~U%Db*oD`1-R!q$rJ;?3u0ScA?B&gZd~lE~E+oTqvnXl&9>5RNz1 zHNG#jJdi1)IA+YFUV+y^BK_I6Z_KrM{SYzlY=}h{DFGh1thB*DpRhM8+Q!JqfE)ib zl)J?NRAz2t`LEenMPa!P<5L4azlG>Y6o7y4R{qm; zEU#8bQXcOLc6}x+Nv%0t>LW8AHf1CVeeL*1+Fpf<9P?D#bi=Gh$f0G(7&>fOs@JxX ztuvKHXVvS~miNc6^c=NdbeEK7r`>6HaJXK3Xnt5%hTRZ(MZ+OKnyxjG;Mu8`E|izS z$Z3}%ECrWr0XA8=Uiwe*t~hdSmF)SSOF8b&Q#4pRz#K7(d&~t{SDS>jEeEopn^a@B zK39!j+n!hOuyYgVx!2M~RPJisHOw_5@qIQty_51vgN%|dY?k}H+;w^ zag)J9G6~o^I;HH0`}qK!x!1hk{zfucX&CHg%h@t~FXviqMdcr=Hn?$VN?T-gL|=$x z3d`IB^9z0xN!hKa*e{!x=MNW$IzfY&MDI8knHL<)ymmLZ)B95xTxmCGY0lCk4LM&s zbu*i1(K?nEz`zahAKcx}&G#twH1W)w!@rm+3rrAW{8R~H!znA)kSE78MZd=K)}{I5 zb%fas>0op5IK$b6(};L0UPEA%j{&%Pp|20ely`sC(kou_T}q5M=5$&K=_Hfewi3V1 znr9Nx2cZ&OCJnH>Q;laV6J@KY*}8ibtXYSW@B2Zio!BmE&A!pGXmjTsC@75E8Vm0^ zhe~T-lpOnrm|7CZvsP(W=cl=%?Lj{U*eK6+hjVsbVL?SU!LtoD^u`fCHE|J6e{mKp zVCZzVJ4w5$WUu0|#X_|#2K)C^>y84cP$4>wpPb};Ut6*F8+e-AL3lq{ft14Vez%VU zW`cFHE|%$QeHcAE3kE581G9F(FrqlHL!|^QNNQ3UkFV+}WL?*d`rLXI`StkTcxYL0 z;2)Jt5)_3KBF|6Jtm`{t@ocWqS>7ud*y)&=^LEn92d2;s+UaCE{Q4_t2)L{IT5QRA zm|x#esOs`^<#D+2!Khqt;6qQoQ+$L8jnxe5gLWHX5f;Pc>Q#R23wuZO(Ch15 zkuNxoLG+0TSU6ioBURJ#FbMnEg60`&-=~?>oVBv3cIB?s!GWLu2qK%T1ecA&r{_;3 zV8l0%XpWu3TJb!1e>iD$h3^99LFCyQ!SamJUl<@_Vox1h{h-AVO(cLm-V9HxS~JR_ zB?_v=S8F+Bu>vO)*;sds%u+sAvvtow zoNMS=!{Z@}ypCtFuLMqou8n9R@xMy-JLMaSy_4>GKwPKMGZEZlgdlnB$Z^0-e_?sR#QI`md@4& zK1OzPewsz@rQ2kpkiSsWrRoSR*E#%oEA9=p0+R3)bDKD0A9@zV5`m^axo?}h-s>zx z3=&I83%uSAER}W-b`ZF{>Ghb$z$*7&&VpTD!n~&``!Q%T<^KX-Ajyimocr`QE zw~6*jeMi!E&)g1Y1;-0AL7+^V41rS@Bks8^qZ^=ZQa~XIe}TEjZnXZVp^Vq0W2b!5@5Rz-JDj9yHAP=%V|Oa@Rom!d2}ia!0SaQT2A z!!I!N)&>V$O6tJ=95FKGdFS2vq|AAT1a%GnNb^j^(Hk(04R}5M(R8HxiZeSqV-3EB8TpBob(s9mB+EtLe z+R7u$vdF3m3wS;-XU2)&w(yuyDqT=`uqH@pdg5>a5?y`KZqd55I85O?GT9J?hy%glO_=xnY#T73y1vkEM{X9IKVy0`K`p<9&<@#)ahA~}$G1cO{ zOw)%0EHJ6e?*dT6(-@<36d_lgQJjI~Klkk5?)p+@~5?;$3{eAQYmQu^&~jCd(Jk*(vXLv1?-FHw?Zu=5L#kY z3AeT0P!r)!RaxM{%HDJ__;TOEWVG?N)P~P*i29axe{=Bpt6;LRf`#K-)!kUL!?!$2 z-ZY{Ig$!xF&GW%g_RZ@?!N9)-m&>F1lLLD%J>u0)Q%oQ)syuUD}9+Vy;H8Kp0=9^I|wu>XGCm}al*eTI{88t3|t8=v=5Y&yTzIu8}# zhNAZ3w!Vg$m#CQALPCO5cHE3Dk8CTtKXfhKZax9b%P!hI%#<>pP8DwJRZ3` z0D&od^7P2UvvOtUC)hf3(K81oWs$1G;qz=0BEOI~ZC;2?jiS<`ENtFzjruD3>V zM*)LbUuA|h*KRVJ7lLB4{Ty3zpawWi0AaEq+^IuSF3>deqqNB zqIbS%HY%1Ui{y&zMB9edlgwS4`d(Y=>tcjn3?xZ=V!JLCY`Hr(dv_~7=>w<6Xf4>Z zF$M0AYE|54LRuTCoYl#C_5$&lo9hs*9c8b--;DjEy6w&){^bUjfm-Yas1iHlesF?Y zAuU`}jBPgMgrVl(`EjkF9}U!R{E`BArUWL!4)?ld24Rb-ORG0hiV zAgrQd5Az%)&3ggShgNO@Nd0J)$vQ2!-4k|`y?gd@rXV1qGMxzUb%b(T?dKo-^$dpD zYn0rucxWDHMAm#W-yr)*f=t|$+tEeZKYxCsUT|!F5&qz9l4C5#RovpO*Lsk6GV_{o z!tUT4QQFhS0I7x52_B1=vB~xe2QOW-am5{ajxHj-Tk@A+hZngG4%#0GNq1z8p8ow4 z_~Do@Tqy7#M+HYQq9NYaq(RSh7M!I?#Uo}G@tZ;%x-X?Ll-RKlVNu~2qEaE@jmfG8 zQYOcpE3wEm-wT;CwS}+$*SSfmPR#%7vIf~ z&H~F0v1(PCrqP=5+@hF|i!aJ((L(J}_ZDX5c9k}ipaoOLtx5K%fQjs`(13>w?B`nT z>x^3kR!U#OLd%b|X-slVsshw(OcpiIx#k#cSj$`Kv9V+#6feuWhJ?gFYTE7pa?sE^WoqM+TfRj?nSs$e> zzmYoq3YMr#cxzrC-n!&^;UrqE+n|{h_t9?grAa$KbDTA)N4&}n?XZlOceR`CR2Tzg zaL)rkdPL`E*JsI=u75 z3Imr8Lt_+_3z&{tK5|75*^IoYFv1V6VaXu@zPfc8xlH!d!Qd7vg%O$~gou(FL3+iBx9f5n9?|Hi_OaQfl$Eu%kNva;uHWH(|% zWUz)3hAe&n^&^*rVmH{HvI$k9*TseZK9%-;mA7=b+nRc-g!j_cR9wb)J!(Ksqwyu~ zQ$z}gmt&Z9p2@s^x_&w=Pi4m%iwETV&ibDx*O0fDY=TGKPIkd`hAAXp!QaK~9x7zY zexCHF4U_VEd2;iBbYnIK_%lVX=*?(wEoQl+x6O98w>NDHR+P{W%P0yPgp;W$|#VSpnV}GmwNStNzaxQR|M{(iXrh)9<-igq>7qMtV2SU-l7M+x9sW z+D23`Bkw%7`IQCLfYq+j{FI2{;|+eFEsw~luY%?i|hhz z-XTQY3QhwH+`nd9wVRv##D!!or>_b1FGq(qn1^yJm+Qo%NO6gZXSl+0Jv<6CLlKl= zD*OVd;{O2XgN{|a(9U2{;!ph+Ctgin%j-kny=}S+>lB!L%ouPz`du{)3y_+-T@Vcn zOW4PEsh?3`(`Oe;R>;$iH7%`hW*6pj;=R}W~>S%~A=YwzFk z>&P?E!sM_8oZc0-PMrwrOA9!{aSjAXV*|qyy{#ek-!59UrMMXhKL|&DQUlKHv9~(%*`zm;!+gtRGR7a;k%% zHAt!Gpy~er7D4I0UsquSJ4JWK$xZet$Ph?GE$9uc?GdB0R*KPEIwcM5jV?A@QDWDs z*+*+E$s%HwLwNGcSlDKBXw0F>!t$IB{{Twaai4qh<*zHPa`A7Mu9zI0zX`>>vtzeh zGd~XG`5qmO`8vyjc^XbEbFUpX(9aZkrk%)nSHl$NGs1WLmZbXyhS`n4MQswNT`tCz0A8Smy;}zZRQq&a5X|u9R+6eRhKa8Vjdz zTe5zATGAi((O(w!zOUKkqkwz)$9n{9IFa=oZ(BP}=@)FC!VB4Y>>Y)@Ci^*AtzVQi zx(j+<`d(1R?iofgBq#%h!*t zHw#7~=4@VM4A;YXRJ%?&=DS80o!&fiam_q)Zjo#7f0OT0r9-q^VAs}{=^oVDqMbae zE&l+Lk*%OMn#9&7v>?z&@Mss^AN-fHjZ0hRT%*Z}W{Dm_yTXq|K)e3{9y}83l)F*< zk#F|j`AZ*;?qWr|$u=+fn3)mIxyWaMI+Vob7Tk5`> zTE_2*l4(MT9&eC*g0L+9=RWb8c-ocnWW0Ml%^l`!BKwe7G5n7EgI_Sr;~esRj;*@$ z;dvfG@oZa!95Xb(`2Ot@;e~mx7RoUUr^MMc8u;g(ZMY-z+$T53aeGaH{{R=>3au`a z25XkOSdL98YzPe?&{v>Z$SnGsp(`H^R^yAVNy0l@!wbh+Q%My>}{{V`q7H&OX zrZ5%iaa_!PIdQYBdcBhG+Sv9pB@5rB2^Qm3=66jC#>( zHnVeEFZ`9O3B0oFYVw9R{{Sg%C~(u=2PF|xmxcc>VyHOPZt zmHC(PtI)XIE@CZPUCN~sV!hJ2F&>cVeOfzs2b}+^qQ8FqwZx)R zhaDB8u*GY)zFX)}WfpIZm9nz@lHS|BzVmnST>P&eZdnH=vP`~NKRj%u?wDUv$(3Hb zZFBNZimkcqO4P5omFLAiUWb}T$#DDT33bWvd~?dSiw#_h9?5Jky2`VL>3;sNs-;gx z=Gm}|Hea-gR@$3a80Mu5TmJwh5YV)~odx^kc616H0J~|&=LfUZwV218Gc9#GQ=|UY z(ECKIMQ>N$sOr9uR$Bi6icG0qmg%=@vn#`uN=>j!bQyp7I4qfPt1_jk?N%G@mtCs{ zLr#4?doNY>d_zxNFI}E{*k9=%>Gf~=4nII`4WqsNI@;L?5)HZ?Np+&eWO{pFdDhkT z#cs&0wJOT->!8=T_?ErC;R@>yF~cnRy}G1|&Tr?Fi8kMMyZDB_cY#r+Z(UJz%+7(IB z=%!w1RjkkUD)mlH>Qx%UC6o*thO~;*-|WOHu#i^ttY>@Ek)aOX1*EqcKvK6-HS|jaOZ)K0yG#LouH1;ThjPTmbQk1a)lA|9}XKL)8l-#2CJQ>-*<^7 zEz8CADZb<5s#TojR@eSY7fL>_h~ZY0wwUvpOR3!_OQ%)!>eMi+8geK~ zrTA*ki|aY;t0T2$08FD=nWrYRX;3#gOsxwgdsIuE31Npv9=SEmW{SvQRmQIi>ivY$ zsJluz{zNLkvFB(LziyL${{T&^b;7htmdl{1vCNE1VC)TVKo6_bt#(1=E%&mwrP3h; z-g@Ke`nF2?J}sU8wo{68?Z<@WGUPaRB&9&~H1uI=L4e}-Nt z+-E1W<(9kMlGl-2YuA_J>a}RxJW!g;hmO@a`0jUV9Uj*Bd;L~ZlGC%rxX6)ksQ~^u z^=W=uR(Cy*xKkA)$Go;PB~@(5mioVvJ^r00qowhGGE;};tXB4P6CCPBmD*($QvF`F z7ZBn$<&DHUA7e=|t6L_vT?x@C&x%&J!P40(iB@XFtEDqeM)tmdwYBKtX+x1&HpMWt z^xaL!0!w4pR$6jDJrh=f$FfGsO?h(n;O!Reb{4k3YwGm@Z+z)|TjN}BpNO5JqSC1% zrK;W{Q(NO|bptje&-};4Sz8+)EOr%}!OG|{;W^35r6$&8?;O5(-sEFb_rvoGUSV#X z0wvBX;oZD9Uk1Y=+2^sLgJ^fba>?(sEb(qP2^R@EQX1&fDGz4I{{Z5+TrWnT_AgLw zAID+3)?-~(rA4#=L7fT@a{e`BX*?p*7PP-W5}E%1Yc$eJft6eo9@G6B=A?cnF6G#Qf;zh3snZzkn3Dp zQQ+5Y8>YkA{Gmd&JCpu(P3@>Q4+NA(*Q=4>{W~j5MG}Z85?ASVhL-u+Uc{g{Y4 z*11Ns%aEeuPb!W-5uuj2ZC~-R7yM*LDwa5P6pUexQYHL9>7}Lr0AcFjy?Xe*fJ*G2^}*+B zwfBzq!&>K?J+tu+K5>*}l(Cz2)s+Ppjq#S?_bW8(6|T{q$<~*}zHaxJ_KFwl?5pIpq|wxdgF@3F2hM1%8brTV z5=zl3oJ!RNp4A!D*+QK#5OCyj=7%XZnAMfS%~~^y3lL~q3ZCj41S+v=odvSAj{|$4 z?W;X+$x7i!(vrJg&I;8d@kzE;{!ARw5eC&g@oU>=Q=b~^YW0&@r}%TW+1R|VdN&w! zqh#>^ z0Ff2I(|$F1bqcKfGbzqzq-%*k%*Le}b)YYd}CL)&BsG zMrC)`s&r8cuxyr(!I?<=({M3vOm_I*kZ}p5lsf*-S365&vb_gUewC)@{A3a7 zc8|`{+NN}2RP?DeqE)|L{Xmr6g@#Qnt2&Ua9`QiNnMSFk>|XF{GUKxvKnd#u+6L+k-_4S#vIyi#L`ac;+4J2E`rZ z+@R6NGFwhlZr=F_ud8KLs42HE%T49u>K!1O-rpUSg~r6sTCFtS(NN$%K*!$Z(z{Xi zk8G?eQM^(r9be5zqC-%4a&>0WRHQPh-q3Ofd;*Er7n^tF4;m@JwDz`&+WLY208!kn zt`Z_jr0P|HT3gbv&HgN}{DKIJkj#%ZMJjHn>|)a;ue&@_i#g%)slU)va?*tLeVgdHl=j*4L5zcLy?u zj^vpyi*NT^Rx9Pqche{FZc9h;K&`IP*A)RRy25oDq$`|b z9zrX1hA%{Gg} z*m2C3v^P+dPE8yN3>jxc1uG-#Z}}Aem6L)|@?F`p1_5_y} zgwU>&9M@avmQruBzes&56faV#DVHjf4#7}qygn6A%R==_@m7le0L@BET^@U09?H%9 z5-L`!3PhWni7QL$9?d_M}f9t=Va`KbEEmFym}nEAZ266?G?2} z-P@{`RlU;u(LNTf_B!X-ug_OoB?5T*biVM~6&|U;dZ$8_B@XLOk;d|8L40W}mrT3A zf!(3~LOmn3pa@4uud8IC-vRDwv|b8p!@&fs(+RcaP<&^AWq9^Wnp!W{TTTU^Q^{Cv zF0TOSSuEnq$-oj-}gcG}Ect`nI-Ld<~VZyI)XaoS71>MNZh@zZ6<2^Jy_YYuvru z^Z5f6zVz7V7t2fo65|$qB2!#<^&XHV-1dslThiED()L5XKYQV%gJ`?{G{=Xx>ei9% zXBZ6LV=k#;KR$-X33m)?IR(yEj*Y+xR_O)Cmne{Bue++hlh$LMtGGtY+ zYmpdj%8PxS3W#kAB*vcc`69azS)(`#Kq+!O7wD~WJw zMlBjm_69R+%Q0G6PkUP^yGiZ};?S?LMQHQrnle`V?|-z@+-EBVQ1y6@XiGgUar@z^ zw5q*Qw%4ecX=4Zf02KvN^*6MC@y8MQpCoB?NcCBpX%X)Qvigs5Z8XcAEwpWUcY_IOt}%V=T}r zUMK$mBDL$;jH4!XN;VghUcvq?=fOF_op&nN(Sv;aWVn36H06k0OuZdbUXvD$$!pvDjY6MyAuh z(w+fq>Os`CJY z$r9+t zRA*6;>5!?{q6?wPg-jC#uZkE>2 zy-K545~=Il6aN4oXK3H*Q$wiQ-dkSjugnUf-^o%W5k!xK^HMcgZji!8Z4YcKeQfNW z_r)i74zI0A4E}ATvBc50%Bra2^%G#jjGu9XKv%ugDy-VoQGU^^#;45zK5N{aS;cIU zISWW{fbQ*gT9F-(WF|dJRoXSuitCp?RVAE|IgX%iGH$I(cw9QI)$^w*|D~XR# z`%}3$)=51ARlWL=K)A900O_$_XiTl^T9Ya6q|04eEI)sC+TyHsRDHg)E>ufq+!|YM zqUvm&Q}R{%s5|jgjWM-G(00(-P~pj+S02Xb+u0$jD2OV*5O?~D{i_U$ zH7L}LX^QICsFYQE?Ru)Ls`XKNbcQF)Pn7bFN4a)*`~6$J_n^Dsq=Rj`R)tp|$!bTb zXTDLrQrh-ilt$3#5=wAhr)PX@h3rv!J*}co0R!LUR;#^8=8bk&Y6UsU`FW3Ni+Q`q zyUOhaRiBcbM!Gzx2Az6R?TwK5mSIY($&AVJKb2n6`a+Mk#pr+Z=#&9eT;@IvU&%+| zpSo44KiQKT_$AyYQhgWpeyGwN9n7yDTR(!rgjn>{xy>VFl?pp*i18Uf_7EjoEi!I( ztX2s2+5w;`bd5LND2lXi(G3aZ1KH6|0HO~O9;wNzMO3d^sx<<9kkt8vr`K^s&MSOv zcfi^oI31zJ`P$jlw&7YGTzdZiQj@J0DA$Pk8#~v0XcO@h{(A%wvNku?`}n@EsO=N9 z(Y5fk!CNkGium#wA%v;(Sr(R0HdNU?lHT|V>j1n)omv~BU8ogW>p`Y{+0s;NZFwuw zR1*g1DybIcPI#3p?XC5)w!W|50R^sFHim*7@D`V3Anxt=7sP#wB5Jk%yN#|u+QZDjJ;9ys;u(O8jW|mU!vHq{8i+)@=}E2+Luqv z_A(>thtjCSq7z2em+UmCO{QD;+6^|oqQ`Mb6I})cD0KSgGlV@WwCgd3YeaJU!ROeZ zc8_6f>#{pM0lq%3qy#w#ZGA(Apbq;yAG=WI)r(Ue$cr6gzDB#p{{Tq5rjerM*1o#}@$5MKto56hd(VknS79E){{Tv~X;l9J(AYz@c$DW0Ofb>r;JsHDnaWmO9-t@=`A)NgswwAMDv4)Mftwm#`nfTD2OrtA8K1({rkS$GcJK zfmiS~?W05S2=VI5emRHwsPXC0Z}iDx{&;elX}X?`L5+6c*F8y|>2o#=u+OA6E3X ziuPG0(nWW+8Edi0wBJsb`d4@il}1d~MNuxUt69}F%2bTWET+~o`830}uGL*mlv!^T z>ATsoI8n?SAx7bIm?M`55bvHHbtikyy$8Pq8 z8eq3!TWwPAPq1Rq?ail6twVeIzg$nH`DouFnDZu6_ikei(dQkWGW7@M|=~t``JL17E|NC$A0%V9EOzYdppr`)|b?Gv^`G_2$k96VSe@k zdcI^d=_>ack2NGzda~SVLzQfp*;GA!+nHHkO<9>w-QJZ28Z4xyz2b}H)NN?Dc78jB zz)5I%X^nR@#OdZiwN-enBABg7_Uf;#{{Rv{9eOXO^>3f}(W)ylEBz`~)7udKH6VL3 zg;DDy2ev!?o3zF{qw)Mkywh&AM}bIn!0m5KeAI5+nZ+!vU4)G4543Z~-hTf8PrQwl z`a@-Ff745Q;B&n#>~@LcT!$#qYEXTS_*`-Pl051@$f33SJ6@}6Xbq4G8z_#>_UC9{ z@4v=XYC5aP+AUqQ;rEqD`!?eVlOtW=$h1t2HcRR;?Rcr`Y1|sYSQHBUZXuxWdoZgS z4`k|3Ywj%-X}nc!(u*|amGHxuT8(X02W|fV{&mUrWi#th{{ZQ+i3Z(inLXJ48$v3h z9h6(~4t4zs%c6d0(i%a@A-23Z6wMmNAHS|Yf3AOF1VS6oTmFOS(j4gp-oF0;LBmK< zq*S8&E#=Qx{zBV=KFPc1w0(-xkS;6t*j~;+lCRf~;j+8mS=!_3(t{=OE92KT&5Y5t zl~}~uG~==}D$l6ej=NQJ9`{rtn~IMHrDV%{e+%s|MipS4{{XEAI4TrhSzXuck}rN2^`dEFIDvZ?r{$O^x*d4WZau3+mrAD*kF$dIGdt zl^?+(<4f|=$l{pS1@wJg?4nRSe*UkV?~SdG>H2RCUr`HOZ?&bOn%5OhGs>p{}U6Mi^ z?S8+exzY)%>Kttz(Aw;gP3}yGQR*qASVRvCRBAd;n(3Iw8$!aI&$e>V;Bmz`gJxJ zIx7Phwu81dr%?QX&Gam&>S~1AfftH`tVX!BF^#DDWd}H_ab(DKrwE-m+3@Rix}7N0 zsRi{82M-Q#XG45!t?}bbzP0tlZMmF1(yY~&LHy8P{{U@pK`UK@-uAY>kQZEc{rg?; zHi9U9Z5oeMp}onF6C*LHtpN%|rbK&_VKt~2^pmA0NT}uPT$oEtIgV<@@=y5%>80p{ z7tmSk3w>0}rMlN`xZG;Zt*xyEptQ8K5d&vQ!%Eq3sRB+vbZy2XbVgHU6XVH_V^)Ud z2h%Mmln=7sWQAC{t#t~u9LQ<3=+a-4YySXqkdF5#wpmh*rv$52K*nv*n#vUEt$%L# z9B*hL&IjZAxXo{)AdUIrOlPG_wI9tw^BBdS#@5hVS|t&rHi=sw)AzsV2EZFYCQzv5 zP79o=z++P=wWv2~v?{$*x4fo9p-mdpX{XL9)!yZ@f1ue+8c^%GhZV_LCBDAN)U=+$ zi%z6Yr){Tpxz@PIKzF62M|$9mpf;Wn-tjy0?b2=X*(!+v?acAr7ctCq8pXqVK=xdX zR)lMUzxFsbjYk$kbIfZE!a{+AORQjFP^c<4`ZP!50ceCt3+nA@Yn`q0v_9;GHuY?` zi1MjQraZlJxJt+88-=b_F;bR67w}A(PuZEIKgBPCQ9*w9rM<0`c-r>h{{Tj@?o{Jd zDxJG&kmM?eif1Q%B*;o5}dkHunJPD z4<6U1YGKo zlWMWcYW0^{>}KKSt8`;v^F@;FFUz($GHu=!%^fO@pB%+(?#F9~M}KY1p@zOd+jCf7 znlVK1QD3kB06(O5R*KR9@+rB>lqb1Uw=^b2ro_>t%1@|iTBKAgwK9_b0O5|GbZAv4 z)p|7?<+ZiFt*x!~+Vv$gCba;X)W8!uQDix$)sR-CB;V*dmCEf>Q}?nof!ZCO3M3=J z?2*w<3LMIi>f+f0C(vb0rZ@vl&3Y_pLYo((0`zJPXhV(hzBY@ry|#;%``Y&J*==u+ zDrT1pB~KUE$!pSS>&^DJ(>^N4alD$xCwTNF_hWCLczj6vFC49ezbb}$fZ_B-v>D>0>F}z zqt#V(I3qD*SScK%*P^d)T-ocAgs^(iB-S|s*rCdgU9eI3+1Au>Drdyx$xoBw#xJq>6{4+| zoR)A}i!ux@TqNOX67VnWC*1MSZqU z?o-;!vXK75!P!|bQXGX$u{@T`-8w2Ql6l(qR6UkN>O)Gc7hlL}*%IE;M`tLUmYi~8 zuzO=`z_2t~V#*Q0%O2J8J2GTkZHg%mC_~w@?`1_D75knBu2<6+#Jp6vAH$voyZ-=x ze*S7Lw`LJS6`$F7EJg%8I~us) zPO>=X*$e*w0(JRCdgX9c@GY>2w>jH9*w0r^qB|27){EJ2R(DRz&d=~KZLL_@>{-tC zV7;@l8A3wA(OsYXqH!<4*RRSs7CuoaO?yOG;7+oHws=-Kxf)zv+S)el95U;A6SB5g z$%b*g(QM%A%fQYuVDD~@1j{|KwQRD_R8i4?aW7O|{{Ti|o`%251Yh|?l}nANinCt5 zDD|k3sKj?>o~zuv;!Wf<)B z$eX|S{{RD3@`#*SnC3hZYFXVYWN8}siK{x&Bl3XdnmaW0Y11`y6qm9+Tv5?Q7)8;O z{D$&f7WSgWOm}4?v0%Do4;wX{4Kms4G*FO`oUFq?CMJ*K#}wV8+wIAN0!@)v+sSpM zWc3r#JZ7Z<#@UUu^?h*7T_vck5>z%m1$!lu*=Kt`4))0Gp^5E%7C+f#Es?_)$zVtO z{{BzT`~LtU`SZzcEbnNiCUAy0;?FH!h6rlLT5?B$FMzJhm5bX;RmIV(q^BE1m#eM2 zGARoq+p~iwBD)^gJ-=$nUvrZ;wk&)L>?&UpLVYv+{{Zx7A`-SJsG`|)OYUob+mbXN z{=17jPmG$|BsAqd4L=dSNO-YNf?7$$*YWI>T68QGvcfB5S?#t8SGPjR-q_o+-qo|h zKMdgy3Yq+H#)Wa@dsbpOic+cfRY6$msCQ2%6Cz0c! z!`0+_^RiTSQBQ8hbY9jh?MPc9@_shTW_dsQKa2cqxfWSbQKK7MGtXnnv+RDWqw`ZV zZNV{cS)~1EWIj+ZT8g$qS`3`wD3jAuMBw8p9ixJ%T#Xsqi0t=ni`nm6bars;rjE+2 zomtq9MITaJi56I-;>)Cr&EHgh?qQ$?>~2A?U`jwHIXz2xGmgWHO4*$qc-RTXZ#bvLObt z#L{Q+l?o(N;H+e-9Ic$PF`{(1H6ia3I6EsQgsNix0zIPzY<^ZSXzR(pko6<mfd=*$Vw0@aLY=5^lJ~mlG!TCbU!TB*(QIjPQjq|r= z3$!tRDk7>>M;wkLOZGwZdZuLHqr{)Ainx%&9DUUqJ}=XsvplyiT1SJT;g)J>LtBy> zanp~iO6c=EB`n0&(3YDo1#I~_M`e#ALlMKlSMo+)*t`g)LN+InD`Q8l2+=>V`LV2y z7#irL)eTZ9c6zP3*`1m%*HDMb1W>RcB-pn2mnM2h^Snqn*{h@I?Hvzf&RJO6=@zJ5 zmbUgTH-T*w+bN`awmd32p;V(s0#++%Tpbr&q0x67oHL!362P`rj|P6w**uGq$d%bG zZ5=i8X0PhH5dJ2o>e{p5p1!81ER3%V)Y0_L&mzG`^|j|@Au|G{wH#p*#tf!^B86y| z1ZfHUsD!#QbSp*XiBTK88BAQ0ui5%^`aM(0@ja3sm7@+>srs~6@kXcW9!94Gr#U>m zlFrwXGsQDoO1?;TVE(qZzk6cHu?r$pE=S1U*oQeg9vR9JSuf?c5~B&3yo^{c*CeN8 za}n~+w(+$-o~57lS}4^0LGX$BI@9Hix4np4Q`!@(Gh0bj#OOywoQ>_#(UL6x0H|Kn zb$eT(QzZIA9gmA0-5pTBh_H)&iIKZI9Fip4+6@xs_FwxHP?-M!qP``v@?gXo$Zy=uh+lH|Y)F5C_Euf&=*uuY zZ8&nz`uN449ccT&<80Q{eyjSFJZO4Dk?P7)wtE_SwJSVbWvLU!pG@q^EaXFZKPGH` zr&fEVz}%$Fy{jeB$nfls7E6-0tO&__Bau2H_H9`|Cr$+X+u)wQq`5yV!KLNPLRb`` z=1r^*S5jS00_EdYs`iIp%qhrX5+L>oU zRy0uX$Vu{YuWF<6EU}9_N=+*@HMJ;mlaWGXnJ1CIkcP=%)RVGrCxx%8qpfjfr|HJ?) z5dZ=K1Oos81Oov90RaI30003I0uUiF0}??5AR;nR6Jc=$LNhR8|Jncu0RjO5KLJ!D zqD<G|95ebhj)|Qh>WD{Es%+~b{!2An8iU z+xB%wL1CR;L?O{h1SECz>WEb6RL(}JXHn4yMX}OC(iJ%|0;PB+#k;zi6-EVD?3p_c zB|9EO+#RxHPdPFY)A4YFDj7Oe#MVntOco}HNC5`UtTucNZq*$`+$(Ir&5#hMu(P7k*yA)Rn_EV*%OinW`x}&&P2U7?3K4? z`y8|-2*e7>e#MI`yxvDkPHm!cKjTkk5+IXm*gYmuf!deU*u@UnBO{M(gkiHnvvF-6 zktg_gM3kAEW=Gn|$?1_&-Yp8r6Hbg&pit0{Oj+A(ZVbC9lBbCihJCdWi!%&RH7-#Y zk$tG`Ec8yBdxJvJ`4E_y_cku82ZyJ&aeb2qmT_b`k~^tF#t6-oUK5;+;FN8UJRT7A zKhgNPMK!9=2yGq}MVq!{h{*}82ylorAwdM-^68r-%Vb|2L}0`lC82DFJ7C?a9uZQS zMEqy?QaD2<8BJ=T>~$qc@%Z00U(mOctW-~e(Ux|Fn>CXsf=US&?87tZn>)*!#2(*5 zNNe<9z=#o)ROF1EMfi;#%0E49k}R;~Rn8cxb-(DQDWmNat9UFK6O>LzFe-|>9utBf zWJ&Fr<+3|8o$0~UNsRvhP3Wg%QD>84QjIawIw`6CERWdoC)@oSi+WKpiBt#n^>yh8F z1YoK7cx+fUWNMoK0MRzFQ4MTQtA}h!md+|6li81F$LUQuXUO31ns#w=b#YNkk?f?I zc7h61k|1A1sJ=~oGA9CwBLkCUF+o$hm?s$;O$r)@IwNChtUZhE!x@pxi9$I3;+j|T z9E+_-7s0QRp2(A*p) zG&~I|v?`+vXr9ECRK&WPJ~!RSe;jh7ocot7>=hX(tAX_~nCS-8Oi=sU~=bJz1SraEPK=4ydQ!Gf^ z!L)HSt4!wq0OQ#oBQ&3lyFltHt`1sPA;-&K6N-h%nX`XGMB>r!*8)O|r-E$Fnm^J< zm;I9?SUXA}lA32WhbEn=!NTd}_~#~65%*fGA9JYahKi_F?4r83o<&tIkvJnJbV==z zj|ciNe}yD7se%kEdSwmg>BF-ck+IB!v!R2a~NzJmP+kxSXn5cb* z*P^bHw@pZyw^h{Jh+#&KL ziYt|pe$l?jrf71GE=64=eF=I$qedA6c9B_fxPqmbv|yZBv3>YD!ZwI)5-j9IA{-GG z!WDTbsUF_6si^R2RG{RetC6ns6ud(?e+E(ZRyX{0%_ko(@*+hh1|mh9G76p2HYW7! z-fh^((VFmzY3gL3(do0TqtbJD85klj$|&kMMQTySRH!)=GleFZT81iC%Bg&HcBJCx z{z1zUyAmXMA;gI!L% z6}EBH)eTD*RCrfIq0J{3GOr$rM8#===jg*@T})L>9_HR)^EPrn(5ZtqcsG;(03y)b zS$R*SRuwrWw;aYf#Vm0+s;S*9CE6UqPl-Z)Uh{i##s+Srmqf?&*MpvgOiQ! zot!+qu~y8o5;1&{i6x)ys-hg<(Y!%LANpcmm_Hj-#fB)6%41zm2mM*3gxWSO4y2Hw zRU^G((@xNIZ3~O`Q%a@%7=lsD!`b#*IC*mw8e`b;vt%hG*#c(Dsq1FklvC*SXtO5* zp4M#=nW9GEdC9R8Xj>?9uJkHuXYq=Zk&mH{V8XIZqnCzMqmP-#<@ z!(Dsw9E+_o`$MWeDJ1k{jCwNXn-sVDyc$r9xM07tViWO8wLM;|X&)rpc~ zPi-llpYy-w_g(okE*?5`kDc+?UdZI3RECi_%D-V@51_4D1+HMJ8b^|ng0Mi^HjMi(fn$a2y~p3O3CtgKaR7WmVcs1 zfti!TBM{(8&(~cl3S+6o_?Wb3>1U+EB-ss=a8}BGC+w$-j)YAq;ELqs_>}W6xT>1| zJ$))9nYaAk`SpChPSt)Wql%g+>W;aQtQAuy%=pyu(#q-T;I5vmgE1F{B}?>pLn6=W zbj3L-e{>vg?~5W&43V40MNLejf~tysJtZ_yn3H-s)XI3sNLdv#QOWS=`4q!P$l>Mq zb;Vj8bf5G77bnc*{{Zqv+iD$!jh{SS-(0Hjw;qOIMd{WW}jU11e9N|EF3 z8vD^7ay=$3>EN=;@T8=tj-8aHC!$hB30(;kB+60qK0g;P7u=3NiNjaOgW>S;@$vPg z3s#mjm1fH6RVaR+DwR(oNag$_ZWW!I_RYa0l2rPY)Yb&>%5x{@#|;0(080=600jaB z0|W;J1_c5I1Oov80RjUN1R(_w5-}4ZK?WdEVH6`WaeQWX|3VzKZSG(&RH z!Qn(xf|Bt-qO#H@HDh!C+5iXv0RRR+0^t$zbg+{=^G8ey<@4 z3Z|$=q%5IC6^QW-NJ6z!rgryZQZhm< z=W`YkFP7p2iONid!*K>S7t3zt#f8Pj`EwV{fmY#~8eGDgByZ*sM8XSHdc~1@MkuQ- zI*kT!Ig}~ZZc3X+4Mu0+6m+O1E;(ewpSKNukv!Z$m)cw@2dN^P6ISa_F;7w!%H$w! zFO`JIgBKPtxT-o=47q)2BXdVkl~YmEp*#*+lvzkW9YUR~R<*xMoe;G_ugqA2R_PI% z50KBGv5SXXV7bYo(nLV2tIt8GxYa5$=AST(TC$kb`_{rJB6QFCs`?Bg6jfTCuX?+M zS5YyqQ5}VdL8wSxC0MD_T&$7vEK~OT2jbLI)zXryFx5Fck_4El#9YOMAJ4hATaCmRk+_jDlnpQ@M8LQ3Bv@=O z-IMOY36Ul*k*%c4n0TBMBhf0{`@Kqtlz*hbIMbwLt&Jj*r3LGjh%+w%aiMADL+2M4 z6P%ct7Zx#LKS5z7;3+T+5wv<`Y0GXpe5gryg;aK)g__Dm*=I+(1GtA}Dqd`!NvnXD z4@vw2ooS>rOf$a9Lda0oR;pcF1uFesVm^6%a#cN3M6@f~AybRuH3@O|lyK?)0HoJM zkY#P9E5oqE)Rmw5k9iAauyYdagMOu{ZjPBA$$vSD%3Ag5EFJe-S^oekNAIo-mzi#@ zlhnc6QTXZj1>zJ4btyx-44yLOtlusk50OSp5Mv9%WH%TSXWh!CUt2Qf@R?F}|p2*fFm zk;0M^E?HkIWj)K~BYd|Tjl?L#kiU8|xZFsw4q-W1PIo-6B#${TXjyWratft1nYN=Y2;`EhgRZZ9*5UOqL@DXrOeuPnq@TP=kiW+-jk4c6h{`@fpS2i!M!Kv$ zT8XdLkInr;D`_7kq|?kr`FxBc9AU#M96`MxM=+N?D^M3~aiLV6^!xrblJ zkBf%Xx$0^VU*)`y$Q45llF*{EhNzz)-EJV;l8uO*wi!|__08sjZBthdrW0m^zeoON%x#C_M#nP-%078d!KJSPN7Dk}*6X0K%c zs!{1KBc}}XBr6qn(ppLjQq)xhVX7=rw}^(0QZU}m;R-jXiC=kn)N>i1LJ3lOkhp^u zA#)HWa)EOb8Q4LXzHnl~<|cdB7cstDi7|Y)7ZNuY8;!@ZBS_pyn7NI@sjCoDWoILq zAyG=>jZL0P1ZY2y;kL=2xPoy^W}QeuLYr-9_Qi{!oVUw-_7G>4gdc$4pjIo{dhbSB z&r|fqUajK{;n=$j(^InXJf)>twdv{g5@U$siVMWS*3~|gG>z7!K@Zuu7p}xAQ|b`k zHlOAUmMYmewKu}6X@9J&q3TlgUJ$i%posNT{{Yx3hYqhp=7efBHmM;wzuES22WY79 z^O}=n&Rw00=n`0NBUeb|{wf|Yj>vYP%}*J6iq4M^nCaAn{Ri|huq-l?f%@9LI*yu{ zrAbeiRux>vhvI!6ptQV?GU^Mln3JwNPk;S&VJA_fznkbBex<}cSn-*^P?Scyi4&w; zNH*C205MofZIhp4`G@ZwJdPzi`lPs1#y=2hJ{t`nr2haaNGAZmxW0~snhS)#$1vU& z+KJk-yX#No{!vR$iP5EeLQ-4eepNt{F>xYA`;sI{3*}*R8;glE%H||oZaKTV4f2s9 z;!Im9G7>H>LgHi|P%a_{;Lx&?GPxNEcL_w!9~$Z3!#K|ix6SDmLeYXbComm74)>O z>ZPlS%3m#B&@wcUk?$eI;dF%G6yJf4seOePGSlQ8#;}(3E~`(a$=_F) zlKP4)U4;GVn)DMYFFu2up!$&0^%o4eT58h!#M)rG`HWY$n597~nyG{#f^XWJTj)Q; zELx>MwG~*8MrjA^w11cCVcyX=Yg5lOf+AAAjJFa(`5_YxQ?Ugn`h_h8GD|`jD1ffZ z;6|3qxctH>KjPP|3*{wMxP1ooe_2}-HgtAN(7Wh!?tk3cOtDiEZ{Nd$gZfg)sB zv#{SN@7zXrF>zxNmAjh>Bg*30&T?YMm9m2tJhl_uktR0E<8fgEPdJgdkp^8d_JoRx ze#+pDR5M1iL(aavI*-cXbT77S*057iOl9nRL6VE!Df>^^NSM?mi z-T@ef5r_I#mwkFB=|_n4{5Ab;&Y23T`#-1SR5C~VRkZSUA`*hi{KzmQhxy>Vd(X(p0Y1g;&(xWu=V*M%r2#FaVu1FMAqph z{{T__NAE5=m6bU;#VJ3=SNslR($Wj$L8l!qM{0E*li3Lo9dg^`B07mP7A&qVCNrO& zbDW=Ydy*yv%t+i^ZQa~SppLPxIu^_8-q%LoqLO{!s=INlyasF`YXsU9PAxwq@8cpQBwOZ{{S&ZQ5aj_dNMCg zGe23cuAtsGOrxi$N&3@f+;8^@G4USIP6gU}Vx)Nv@u=Kc@;UA>>EiV*p{2B`O4l0f zG^vFXOMSy&m-;n?SGQV^K;UUx23ObOE}cb5T<3O z)1?G%kwF8%`#y&Wz9+1xN~4MVq(5z96#6P&E>s$B+I7T?X6<9c5829Yi%)NZ=pp?tWcCtTZP!8_SQG=ACT)xa($ogbIyH#?sKjb z6GB7~v6t8eMEc>oJQnj!X~j6Y5r{Y4fyHrNZJwF|H28u#TS5;o&P$z%j1z8XjHTR! zu(Bhn-jiBo$3?7G_KO>Wy<6Krl9M~FR1x6Ie)Y1|`ks>f!_o2R;x{R)V#8IX)d0Bf zw!CjW66{|}<@D=vl-gq|cll*Mva-+Ad+}^sv#szM3h4ad04x+9xt(?yX>0_(Hf9Q+ zHXh;OclCHzRJQ-#iSLrh?za)F<~n4Vt$&2O>Z`0(Ru#QT!(kI9_|Yild0oDH9xKHu z0);w%@^-1cj4zV$n+!vDLjP9sR`~ayKX-A(#5`JaC-pL0;F$wSyi%n0J6|nzBSAd<$mE8FBw`uXLCeN>MMUd^2ZVtjIG~02T z$;*o|@{Z8cIAKIOyY!C))Su0+*Td3X`vxa(~0|Q89=Yr@{^*X6c zz3js}q%+n&UnUL0c@f~duI+USrNfe~(yC=wGHCxok1O10yK~Fiyhb!}Xlmx>)EKkw z8Ojx^Kkf;GhzQCRKU{-A+Dt~~Q9)nhP$WPO>PqW%32F}QA1!NvX|I-gzckz<%5NS7y_1TB@5%YvXh@)ZnSGFLtOH4&o4^*mV4>o)R7- zXSXkOB+y_*Sr2kG%`JeBd@@y8h}x6a$fV$U+9mtN-cje9@+9!7rdQ9?f`C-!KKRZ= zd#;dK8hD$I@m2+kkLb8XCdKr0aFEMl`GgywHa+iyH)XNGqnlFHOHfWocMulB36UN= zV@zQ6$7n?tl-VSV|G>Thp+%Dl|eLleTGb?xFAd5RP8$<8H$&jMG`EP`u}yeAxX!I)(plUWlXT3 z^tAhxZB?pNr(KyNmeRs8&VoBr!tEB(uebM8;`+ zUc>b($kJgwZBosgBsiS^8SmN@7Y>T|%_*+uyfstd|M#GU;jiy8LrJm2K0CXqBT&Dp zF5}8$za7KWSN$2i5JkY)=fXHSW%a`eg2&b$jaiqZ&K#w75ef*GK&c{A8@jzEr~vPl z5Kz03(2b?Jyc*@4rVdi%4wXYeuXh?9g_4G5PQ&cG#SX0Zb+Qp@w~A0kP8F=gYk0cB zK3_Ic|F^i>FLnmLXYWDa%n#pvo*-#1N=wQ#%c|aZd;NPL^g?SC&c{WY#Fv_AGjA(7 zv7AwZ9BP+$X>zY7v#)$Q%qjHpk+Ohl|=Z}LTCc+u)mThUQMF@5sPMLaj z`4d=-58QpX;^;{y z?8Un>GtK^V$DUtRz3Q-O=`v<*eriLK0HVcQpzux4?52aKD15$oj;p&cBuatlj2C`M z3sgWG>lsVVsm*k%7A{xfhK-;VkNe*EC__d|=$^{A=VkT9I8^9-GBhz3K$abdY5gQK+8Ci?6escLI_m9g+IX7Y2(m+*4Y&JxGOvm^ z9_2)~D};u|PfmR$tgi!vQHK`Yra0N;S9T+z6llhRFyl$>`=fO$AV_TE0aVeduS z&pHpv9sNj*XI;IfMN)4@cyHstf@_JKVO*2(bAZO8#-cmhC=J$!!covxrPA5Ge!|tO zPAKc@OPuWYD2l~bv(}fA7Ym?NrDq1|2A^K za0B2eNkI(Hrqu*nUw#haUnC(Lkk#!k6Xk>eZAtZy2yM9b0BK4aOf}WMY4g;4!deSv zk+q-A%uX3;Hu8T}&oe1mVF7>)V31C@L{`4X__vlX5RD6}5=x9D-T}Www8nV0{(+Qh zr5VVx_EB84Z6ez2mWS|DuUO zD6h8HjMaaMHac4dBOp}ZX19T(H124x2*p^G6I?;^R>pyJq$~olErawwNg+lIiClT~ zkr>)tX+Gm@8U5?zM^a1w9m{t5?M#Hydpury1WMx>#eH1hc=1&u>A+gppC1nN8qiSe z38I4tg(1{TipHoOLmSfRgt?zfj%oCd2pk(JA5c+*XVRyrR+?S9{d+LxmeFs?Eao%G zAMx0u2FSN4r?tA}l~NM>$M`&mp^}Hi`7%+U<@k%^b3vs6vFwyr_e^VxNitb;il3|%f+{6cVXioiDeqHwmt2o)%aQG}*^9oT8gvjAXUunS0eMnB@BgINf zHh++Gl4{*`{Qfw9Iry21KEv^>#a~L|l<4cxE+2`<%%0>)kD>L;vVK`K<+_tLC zh`hZ3A0jGAT#=82Uf63u<#sQLpcH_24UHsmbf^Kg==$fSH^PX-QD9U49Ci3zh$cq3ZphYI%vfn=TJ_f<+qpnI8dA-Ao@EY* z#8x7+V~r&yZ94P$UBbo`znNuhT4QM3i=53Ixb^Jq&d;f|PW`H9ig_+UWUF$e9t0;m z#H*&Kr+U9*>_|X?)bP~!9aI@wfbLh5in>2JMhu#CorJ`FZwei)!iNVIfkq)p3~D8> z%W{kq+?*L-Q-XUCGtD6i2So6S4_Q$eWtwsWjPp_G+IFuiUiD4fjWnj_`n*NxJIGV% zNu&b=@ri!%az)}GsoJ90K$(#e@=cu zCrAf9QLV>74YjY)3w4IIJfLIga*0oB)80?Bspf`-!rWwWm(im>KI06g9fv6)n^)Vy z3{G84SARUzoz#NEDTN24-BuQ;RmyQhxN{t(| zmEG5J0N!P+t8cK40>x|k)p8tR?HZ@?bf>T}%?*%2<|n?_{H03iBC>57gx*Hzqg z36ye^)RecMe>|(=&~M%R$Cj{pQ8vof9YP<#V46dNGqA{!I)(iLFMMq?#azhJvxrW?fb7%MqWIw>yCQeIoe!c+j5(S|m zHU20$UXzxHbLe`&qDBW9rzXQ&MciHB9hrIi1JSD0MQCb)>qHpisO$le1Ljx=9-#jO zkw%AFvw=KkR7O14=t8+b4HxiQlBtO^g^MDdrRdh=c*$ zvR@LiOoW9q;4izhofS!NhPS=myk=*hh}SfF8p2I8^0UnOjbd7qoRA}*(G75La$ngK zVO6X0;@m4yT#(&5z5;~eNFWnnNOPT{6-y4%Al|35owGEi`TAQAQSY>&6SN5=PVvkD;YjK9`XJwy%gNF}z7Lmu+*vU^jh0TQj(xz+9#3QR^I zRGhG7MYe?Uqs7J0x!zgyH{~bF9zPR|OWEosvgaMbD*hs{+G@4b)TQ%;RsH5u;E{O8 zlABzXKaH+0DgA2ML%-$9+w%-OmLz~@>$fIp;~YNa$MY;djlTJA)DPMx#*Um;G71)V z26kmDt)KG`U}#XT_Vp*!bgh3fs#eJ)khQ2_pVb%TsvggiGeCjWAn|M=>FrtNc@ zyji?i_=fJc&^`|hgfeM(VuroQdon`hP;DYMx$$25+3 z{T}D&q>o_$p3;#+h))1p%$08Nm{0nFcHDtS20iZiP{R;lHjk+|yc0_W?rm3uM*%6k z?0ybDxX!$Vt!tHcm+^ubro7`mlO!|M@tC1R9O!nIDTD|f5l&nKnsBLc)GGXU^VyTN z>{{VjY`XJBeAyqGZU5@eQaUuq&xOA1E>>$}_1(G0f~g&bYG`-w^I zm+9PFd_y(=9`tM}1bt=I-@0tyDC`Sh`-{2`Q$c=dKIIqMV%q1iPwjpVpN}R|^=wKl z7(HK_bY2j6ZUpBU3nj)k(}gE0rrmTI+Fd-}e-mC-?aA0zooY3AIX)!RY}zkl-8bv$ z0wJ|P9baGA^Oe+2f~d@MPGOvyynA|7DDopml_A4;qnYtt4@rGuj z#-*V>{!U+Q=}>k8H)*zO5ZjS?MlAC}4wU{d|77u1I(5NSy7Lv$?#!G!K=Px1Xv|cj zde7f&g+AS#7t56ANprZ}-^vAJ9P?e)NUjZLt;BB$QW0tT&uWVImWdM$!poL9C8vr; z!RIM0rk`Zvr!%Mr;{H^eM)|w7KM$0->~wZJ_pG>Skg1|+*R||njJfPS>aBLzG0Pe= z@N(7zkJ|H$_{11pUZF;2p-+i5rfal z&}jHq(fRo>m3mu>h2$#Y=BxC(GvfXRiHUxDRH|lk;RVs&pa(;UHjZ{0Mc14OV?#d? z2Y(LWdtDV+J_b&KL~ngD%h0LNWEj(x8~B4R^F6|U9d*yy#x@0fJ=_t!O?Vgnva9ZF z;L2UDm_rSB3^%jxeh%PnnAgS>w)Tn%al)dD-GuFFsZWgZS`fh2R!jF(I-f4dN^(yl(b}2e{KAL-`=BXGA z{?rv%4BZwv?Q+uv-lL1gBr29!BnUZ#+AH|n|4Q}y5ExJIdk169QD=bd21y;Ez$+rT z_j}LkK(W7jF?z;qt2+ERU0t`m4%*Qw0VuRtVITA>ajj!36e52yK>lhuLnNF(Z~VR4 zsFINjjW08iVWuK3f*bR2T~J)3&E)w3;OnH4w#tS5Nw*0*C&U}otAdr@6OMeZtRZxU_%j4GAS6h6)swgI;o)M5My7yAlZrAV(r zMX&+5RNs6DHzZqL8VzZ}uQkp= z?^#l;%vdx7UtNoN_AR_p}tp(kZt4mDwFu9QJ%_C#MOJN1r>a>?}0ct zZ@WQDw*N?uxk+f}ube1*JuFwFUFW=wzW z+p!NC%PTKDpyeg`<1Rc7Y<(XbH-$mEU~Hs1Vp6ozS24zEg^^E?D)8x0XeF1Kc}saA-+) z#`&=nYqPMoDmR-t-dxA!vOR5#Eqd4}C33qWx8Cb?Px!YbZfkg;_U8}Z$VVa1xD&^- zNrr z)bXN6LtdS7a2-zvy@e(b9s7eS3n9pR=DMI+hcc-i2yxx=j0r9id}m3^GzZiis4t3O zh&2i+t*VaB=9MxMfCgFNBHK4g!ii$jH_}X1C1TmqkJfo|%xq?i_M05Z3HO!gV$W^v zK_67$=?bis>h7|De-Eh1&Qsf_$9_fMNYBTVRIZAh5g5O}TedOv7t+YiHQv&XJg;av zbNvH7?lhUYtzwC9lGuIY-o=$oJaVF&YV8_29>;4o=H{$pQAd}Z;}iX3tAJTYK)pqc zwem;h2iHn)&FJP=ZgPU&MR|CL9-tRj`l%~qm`G!a^_opC*wCsO6da=1FGGBv{g(gJ zH>sWzG-OB%-K#I?-FPkth@^LFGo&92dI&|NQ8_*jP!Gfm;+!OI6(~s@id;4hrQ6l5 z4jcRiSynBzdrF58GuJH1FbvMtXq@1kg7 zewgh^K7JKpS-ti*S3)Xfms5a+JsEA&qK#oL2wrArTexvjn%y>ps1dhe9wV>%MU=Ni_;+O6Q^2|qW1&u58S z*0mAt{q|r1Ots}dH)hb)=L^Zi7rAlqt1$GTKx+C5(G0*NE6Ma9L(lSj0 z1!!eXd~^7$QhY&O=Ekw|t%jB4L*i(c8?>RYK>dC{qDuGvO?+9wtzGKTRjTL(uD*iq z=T4&H=s9n z=SFXClpmX1jk3pZDZHwi^{4cZ1ZSQ7wuu$=2&Kfx@kJM3%akWyYfsceBKjH~O)F~8 zja1emOFn$l5NczNoZ08d^0a-Xq?N6kjSfBc7y7tl5wiJ&w=nfNNh{t>OLULR8B3dd z$V1nyD#nl)r~}}PONDhG|0%;HQ_%5Nlibpr=;Nr>IT1kQ7{vfSJ=X*wz!)!QE{ zxB{_$i;q}g8sW!<9;tj;E|SKOhVAN0M0IpRBPXXXUjJT2po!}32^Mp{!QpXP*#}g+mHyf zZd%|ytq_1)Df&u9Nz07DV;JR&=l6h*-^^8&@lRETl)WhEL5IZ_IwY+9Ig_mJ-O&DK zH}-?M;zqb$u`1vDj&pm%`Z(tA^=DnvNM|H(0YCJNc+kt#imCO7WaUpC^GcqrylGJL z%}<7e%pdpMcPZeq80uY!g`B$I*%a$d_|bFx7Ja*#!sS`tHIoaQ%Co6y!|F`cP9<5{ zd3DWakuF;C98<4+cIV8x2)Q^Ln&qe@Vbm`9f@wgF@mKxs5`Dw8 zGJ%U8r(agZy^B3;hGTr-+EHYz!pCV2o=S_tbzyMqzXxDxqQ8&N=;YVKA&*@UTw>kc zi?Lq(w8M-^_SN)ecyZ9mQSDfEZh)ttlD2mO?g@<;>s6amNgz3;cw-Hu`@inK(!qg| zg)Xf~Ln)mXoi!bT8}aodT-VPg!qO{CYwT!UI_(YjB@5a}`nNtC5Oqe0m6&AXc4E6$ zgpif!kXdPsMsy)=1b@AGjcNI9Q(gzY92{bue>c1P??I4TRy&DhTIue{I||FHz4ZHt zd3PCFLv>2{_++RgTiy71T%>`W0Ohq2Wj0^J$QE77xoT8xPWG%g&Hvv77Q%hXmA7g} zdk8B6>IE{S@in>2v)5IhZKXKx_sEF`7w+=s&0IilVt=#FMf4rXI5h3hqU?ik)+)h` z>;hk8sjh&ye|qK>ujKrp>Xh+9Ad#jl>jj5Mw`;kLiXWdY@B{wz%WemjQsJTEK8U3| zg~P-FVVv?B8pw*`ciF5AZt953tIw61PYF7C7)2>4Xh57+J@|}=Ql29GzK8{ZRhWwIrQ&oyy@Sz(OQCx+J zaJa16u{oGM2jth3ez?Dgp!xBkrl-5~R`Z6VX7%N-kPCvhJrvi&bmo`j%gKW;KS(-P zN>}qznCW2e(-*!E?%irCG{_pNd3$b8whj)Bwy}1yI@1(H#XRf`wc0T zj>{;qZ8J68qhvOmry2IWQV2_Yfkmu*MY`CE`&>m%fh&J9Kc;MMNTUca?LUD+y1m(s z7tQ${9zoi?->h_n-fjW_9(n6J6?JQx!MYv9{Pg(eUz*A*8fdGHLhw*=)|K6#?iW_$ zG0nQV{gB)Z-PDQ!I8{rl!Ey`L#j_+<+Z~|kKvtT!j%?KVdq(^1qd<9325(Wm0vcMG z$ltc&Sg!pt^6ntQgum}%q(L`yY@hV8xE;ULOwS{s0PVQg7h7LWo9c?)M~)pe;5Rbhj45z3SElzg`}2Efv5OT zI}tR`etR~ERaGUq7zyYzG5mY*d3p7K5!($4c<(iI>99d(X}k(|749=d51+AgNhTM? zl~64A8MLz``kO8S!>%eD%v~2W0!nY|m=pLf1af8OKS{JcMKD;NbF7)GbIfThnnva< zD&kbcEMvNn;0n3pl-2#rCPdzPBv#s5j+9%)rN`&Oy74D>DYaLMWe*;s6pE+&(Fgntj>*l)g^f1Gp?R_h@hAJ((N2}~lm^E}k)d)Xyf1Arc* zS;If+*$&?Dw}MsqwSvETgpqzaXWSQntzMouT@XhnEC_|%4qm#PcMglG?|4-m3n8~f z*BaEFZY+1b1S%n78I|RK!}N6$f4A3qC>9U&NC!kV3@aJvsV*5Qqc)ONE~CKU`r3GZ zrVXiB?>{p~rvzEVAa|}~gg8$z{_~M_2Dp1InkJ{L{s>H;)8RX-AZKafe>VwfrME8n zgRY{*I8v!~sO+-~N;FCTrBcru`oFHOq5dAip%4??j0sVlrX7k{I71qNE6^b1K(Kj8l|o)US@oLAzf;>mfHMj5}V+vyGwpE7=tvl`SZ z3tVszSB)1Q9pH71dVZUNp`7h$@jD3fA9(6DKk^+%YvZlCadLLhKSaK$DxAA41)-OG zfVev@=Wc3$n&{76u_M}VAjjZ#(*J~Y_4oWw8veh3zd?G>J6+Q+{b-rv_I(6wXO%s6 zO6w|tzp-aT<>l_Fku+2q)(AhN*OVV<4&=D7^mJI2{S2V8rmO{8%K|rT)h+15B3`6Q2w6LH#0PquDOXCW67vXG)Xn2fHi5KFYVov-BGkor6~d2Cfv)bW~_%Q^fy z`iAuU%b1G-0>d)`yQQ(|M7d5Xm;KZM_fNuZm2MQ0rb2c^~_t<)JtZrI`_s0lq}3n1MB}9TpE9JqoznIytF&1vc&=*n!Ak0ov`0hQ5Oj}La9%rujW~7z91SRw z|71E=&CJDn@C!1+$yZx5LW>7mY-y4+7HY^>dYX;$b!1mIfF%CG?h0O^6Cs{7NAoo! zGa~eZ4Ke6_;ylcRG3+|@4bk_nuge#ZVn3L?<*kqDQvA*G-O4yVM{6HM6nwmSbRM1N zLk3}b%J(G2Fhr0_#kFql>);L_k6|LN_gd#@C#zEaDP<5tiPp^aU8#Dn8T4t}q)M^y zN%Nu`2lS;ZNg+CLeO5`GG?O(a-RO3dk&F(}2Mgs4{j@0Vz~pKB;*LFI*S>f5jaoX+ zOL(7)%C+u72t8rq(g5F7y=v+&=9&5j1-~;NT9;eb7}H-( zBn>ho1#-GGkNPf!oaSE}&f2Xoz?pUaHRySyf>+|R<) zcTIOKelHE1{py7>d;fxCWVPnF4PSW5sZGk&i$$ID(Dho>_4%^2ptG;Sa-K^PR&eKX zW)wByXaL3puh@hD;XW5N9Xd^v2x5c%JLo+_yJk)#=Q@{*6v6SxjW=; zWE(YSVcrpnjY<*0y=WzI)C@PkniuuGibV)Q`24^|`|U1AwGHwc@+{)9(hkiGyGlm8 zS#QFL2N(8jn2TkynTy*SljV`)&J-`fNp!U`!4D~K78{~9!^)O#^EEJh|DZM^WA?f1 zD;Kb4rs&~y%Ch{=nu6Xe1GP-eqQG_?)MI0-OdafP@i)!tT_L@zIi14ra0{0M>TMtw z_m;xZp%MCYzAwsjy=Lz5yfMOR{-?33$eIacHo(u1qERXZmt+qY{iWd)ti zl6=^FfOkWT=VEyc4OjTHc+zHI7rIA+g&=UiIW)LF!wK=JKj0~}0+_mQx3lijY<7pF zOZ;OR;R|NKr2V#d97MOkO)2KH6M}}r7D?c?^Bd#R zQ=_G6ywF30tEx!A7HU40hpLaRcqW^ysWzK6lb~{f1&X|e*0VQPNzrl zIpR9_9#*G1W+M`0MWG`9-_AX9>K{M((kAz1yHP`e`D8n<$7qxjt1*no?VlPT)@fw} z6D}yLUPkwtuO-YyCL<$*3v>U66R)q~M6v)3*6Z4IXPBm zBPN_2XnSYP+=Kf=ceHiAS0kx1X7;cK$Kr+o2*xdk5rE`Dr)4B=!XoL%r zfJ~_LX~|Ew@ypTL5x0G&$^ElpWW(-acMt2VUw=Em&?}gdiZc@BTLhZVYFsCAJriGY zTYiB8F>9FxP`mQq0}&4&s&hxs8dOy$CHe%IK2|eb*^}$M^lZ`BSW7 zs1+3htZ*CDo4VRVjA(>-zx28-2-(Pqvkry+>iwW&%UE7&!VgdSB$Zj0)s$;d#nGwc z#pHWxi#NxmR)U3-`LFD);`dr#?MXQ4e@L}i zGTSeUIN{aNFSi0oa5*3vI&c%NsAC3nG5kd$dJ>7}!W!FR(P8^KPc;S ztty}5)twSiJ6UtHP(gE5t|39#9KjJWab)MnFghyrEDe8XNb;8&<%h z1bEOc%F$fvSs44*)j_?k!2AfIM@)3tWf1fQL!6S+A4y7%UZ<}OEBrZ)30S#>oH&%d zIqwL_@RUI#`fhd@ELFz%uBCRtPvq6#MV)M6tFh@&U}xOvyMrHcrF$bg{V$07UA^;!}3RM|3STQCTmZ_Aizt7pPtn;%7-|095>}7@V5#sY6opel zTIT}Oqxon@vz#_JsI8;G((&i6rMV#Y&0mT4p^8FcyZi5{Jp2>Scm2TiY(?C~6PF6pedTh(i0cg>d4ah6I`FztMMJcro8u3i1p1=}?)HzN z0M3r!`sGv&U8MPkgSzHsGLfBax~ejG2dtAW=M*I>CZLem+XW+HmljNJOoNnV%aB)E z`ZJ|h?cIUKr+B+c9TetLaLQwI`r0b3!p4jJpYlAX_z8c;89s|fa4vDvMcJN4?h4Wl z@i*t!DOKNy8jfg`XyYXN>9fZ&je2BY_#sgmk@8<HG|k{oupU!1d%JHn>=~cy zAiF-56JqAeRhB;^wqZq@n%=bkc+moxa3LrL>sF3!+PEM*kbM(A!3W=-BE8q$zz_G2 zLrWUU*PaQE9Fz1l%7CRZi%u)2xKl(}@}tq6z9++aD)u;98u)*&#)!8Mf(mnqWP&I) z)VwKFM#8UHDtzynj|A6wyX`I(8a!$ibawtmyJrUvUPhg}7;a7fq@$+oWo)OpE>=C+ z;#4#=F6usd)#_8kmsT4oGdYsmTCULxbeRW8gil5SiekT}(cJ8OdxIAgC8vi;zJ-gP ztF1xmxJp- zbcK(dp%FH`3USXSTt(&c`pm{cHpGk7PgvrQugWLuHmRJCOp&=SKW^W z;MMOFEmrPthk;vCuFo?{?%rmu6PLBR6W=0;uLp3((JNV;v0Ub$+8blW5^zr{PJi!I(4KR;jdO}eSjH*l&Lf-He~ zj$us;T&{l!eiba>Q(iu*;Mf6}x=kJ7wU)fb12ngLujNE;Q_Yzw#cDvy|1)xp@|C~q z{jBf+R@pUYfuxMgi_B%kG8qUKrRWK|eLsz!n!zmp=fs-hg%0_z%q~`q$CS^t|0dB* z6H5RX#n~4p1?zE~RJO98v+8WO1hTHAzR9IQFuK)>1si-*^8|zoA$Q^#BSLR0j#E~2 zo2O0}1LH{0T4Xpfk&vuvlys)CMM=w{sdxfIz_c`b7q?Q%CYFqm8b@<+^+GXhB#) zzRrHe=8)AT>Z+~`JCN2GA!-6R&NAe15+nvo#R>mlNK|dx|~{sd;#13DFqRU37TrHNQy*ZgA$8*PV+1G z&@FBz==6n#@8QH~uM1yZYq6TGUWtNN`p7($J-0|Y96>k_GN-Wv)PzQU!m9OrZddBblum|w22S?2Al(|xKxvNjP_ zkPp9=iGTm=5H!gr+zD`%1TiQiRMMfs>N~1|b=^a@7p?m<~#$rsWgW)gt3}ngTv$>eZ6{_kcjdT0j#_#)#_C zo{qDr)cSzq1WM(NZhHULD4Ud~U%SFbdvJ(f3?iemy3z3WT@_2>Dx;(NZqAY*g+dE? zvlCIa{;qH!wE}XteKhput^fi4&`EySva8_U^+V{eV7g{-95ql~ls{bN?Xk>m29~rCv2vQe? z5qtKrjHlQFH~W(v`FA!bmg{(nNJ%B9F-c1go&IzLCxjd$)+C^m86+3)8I$QRAH6n& zGGwAD;bYlMYDQBy!0mA#`q#ulPS6b=O?Og!Tl;)0^9m+F+6!-VpicdC*6 zvN^d2-xuUG@%jb~o(syccY|gO>K-OIT=5Df*QH;%0vG3BYCyL6B+gkimA;sKM7Ml# zRk{LPS!q7pAAh^@XU!Q{Q_9b!diNc+KgJa$ryeV@93@`0veZ{uEbp(IPVtzzMoghc?Sg981B1y30gr!);&TOP; z1t>x%jF=2jgmZkKa5x>i(oPy!Q!GTgCVxE1rKm7EfN~R}srj_~52T*6zK#}WjYXuR zHuGQuF-AwJI<><}ow<8N0~VZV+xZEyn_;WFoJ@4nQ}DRwE&N*In$n(S0w+N+1ZC}d zDsW4gWU8YNNh&&!4?(lPwM)r<|HhDj7z70V*7l<~SJ-Z>XU$U7tN%T)f^wA!QQS?t zHPM&Ozhrwo2&`}<9NoW}yx9j+_?=)LroU5=+T?z~z$hEbT| zIF-im59#fxoX13AV{307`jn(_x@YdYlOkm$DO!_`vBG{2J&>nI6p_QEYC;7VEu;pI zRv++?GCVlZ!n&)%v||&}=FjeP9jBj6pC3~rr!(-q(0!kNPvZW$6TmL~`u>GDMXI|| zi>hAQ8TtLkn`v5$r}V~|xO_j7jLu1zRSm9mMp?LV{5T4e^jDbsHM8@`!U>yc;8Ki^ zOdQYeE{N9$W2V(zk+TF{Med*t*Dv2C7q4SS6nV`B!eJdTO#j`EbXeuej$C~u0P$7V5U(v8{Ji751TfS;7Ad@cAk*6^Fh(FX>b-Gvr$)z)6JZ6r9FB zr;J3RBbB*y!WDk1nclk7aZCVQ0lvIcO2L|3sSq9c6ZA}B+w=>F~K$Z;Hd zrK@n!sI%gFI#h&wk&PiCjB>0ln?fC`8;fO#?G9imf?&wJCzWG)5ZYpK;>=BJRQ~dN zST8kobXY3~o1z5Q_zqWpiZOc=9q!xdH8gbKTAYU(LB@YyWN-iGlH|l|Gx^EX&x}c@ zvQ>>5#r@+62_#84RD?5nb=J-OUT&m7Z7n|Y9-L}q1j4EblKtm;9ar#iAI+l~_vYZq zFAO1l06s-WLO9;rDY=JVL>k1d@Ee@a5SlRkpV^O06i1DztBWQg7Jq!hHgnOF0@(op z+R2Qh!^xcR%_9mr&zK1YqcvO-S}8ZcVejmPt2mpoK-Ll-$MPCg#SiX0m5wK!sNrE)LB=WMC{&-aj4BK9FsADsr}<9UTk1>zxr*h zOc-T|kcr9sJFbx#jQre5^a|ax1xP6p72OdlQxSZ!R*C2c7dgV`Nwd;?he*Ra%vt@O z*GhNB(lDeceatXZa+%C%jkX3_pW+y8%~XIyL<)s!8FxK1NAHvH*xQFg(U`jt?9T5; zGtWJr|GzwegxyDET!+KU{h!3IOVw86Dk$M+h{gn*(W$ZM+@xTmS>9$86gA}Oju4ixn({LXQnlM{-TNHzPLNJlFKB)WcD0!=j#YfR*O;~=Z++k zV$DF?(5qO+gy%uFSGa*@sP8GdfU_4GN+fOtJ{4Y}s{;pP29i&4bXorRSB|?YDse7F z@h8$G?65pRAnlMMPHLUSLFyuc&qIcV5uZ4Niz4}57>4ci^E*kcl*pxDxSD(v(In!a z2t&JBpHZYylrX8aQwcL2xF2G5oZ!O zM}?HMqGM3-%eoW2H4x?9alzAt%a&fC@UT9kNqpCl-}>f_tw*^wC$j^~-!o!;M%-c6 zmyAwq=(SYUZz*avR<%6cwF51MXvJ*BTEfOlqNj9BfE>*8ZhHyT2Ire#xYDb5I16maG=`DXsjVf|^k&`%q0hBfbd8r%U4%05`>fxrm}hrODP z@kVwyEKJ=6anVBAIL;9WPezKG{W@ktZVe{{6$=8c35B;kD$0<#%WCONMVEF4i9Wn8 z?3K~!RBF=3&7dJ`Z= z-~YkW_WQhnmS?d_npFNDYrW2HD(RH6A6uvm@vsRC3s)-F>sZZTdsk>pX4sSZ69(fj zVK`65N$xTb)W3xi&MLb-uZ#)Xa*3tR7m!vtgKGBbEafE~1lJf2^-hMt z1X$iq+W0T2Gml*G$ZkU9woyLmhvq`|J`O0t$?BgmrPFmx2~3{i6cNvB7t>K2Ptrmg z&ePb|y2;KAckv9$;Vo6b>J~`QCCtH zdxeS+r?t9pCOjX9aA4*vnsP=A&}QErQ)0&lzd|_H476!Qt9M<5MZ^TC{}QD064+a+ zCUkULz}Qu!wUx$q6t={nLI2NJrivA}1{1n|NFqAX5CVhb%Uvim*ga1vdft1rxhCI< zV4!}({#$k!$uZTa{+sk$#)}#y3>e3;p#+tT?QBrW!LXRt&}icS0ii%%zlyB=Wb*lo zq--}A$_y=4Z0c~+>cP0;y4Z|JoUNVmkWVFlAeS|CzDBf_!M47JB}647e4s{BWF=zc zIS58j%Q6XdhF<9$l;u7qB0u^9t8%4gqVX~pK7mOFllX-v$StGs&U23C&-jugh)RT> zTMHyggsjIXf*a*=eC9zOtN4PWtyvQ6lpl!y0D)mJEDoxm%G(fAt5v4O+@9^vA_UTv z%4)oVaR<;sh3zHI+$3 zexOe>OH7fMge)^qv*uG}G7O9vf6yPeapQjUjr+Uz>_X-A5~CY^2H!yhpP;e~ zONt!ELy;sbB+u$Dec3X~`I3m>%VQpiSbCMwYEYYe!c2>&h&4D#`H3|gewh>8+xQxY z`t$`%^7bzgDKKbpJv;%p)7pHr4M=zY0JL(K&_Y>1c)AoWpP=Scf9V|V{E{Wh{{ZO{ znq+_N9E~UBHWohp%wM^45SI(!c^h@LDJA}yA9tkUdFu$GtwB?%X9Q;GEPo4eODTmV z0ezmtYGvdqTGYFl1f3onYh3PTIB91|bjysA>2PEXWLq5PeDC}#5R($2u(CuE34t!F z>MW7!(l-}S-@9=lMf04dN3=L@Id5?0-ZvU`a?QVkImzd(C%1qkDO}l3TMuM=FgE@z z^O?-3Xx=nUSKVT~X#uvqL zl$kDikVYd+aFXUpr@+Vm!~iG|0RRF50s;a80|5a60RaF20RRypF%UsfVR3;Vk)g4{ z(c$p%F#p;B2mt{A0Y4#lDp#|J{Ijsf00w0hzC0POW8p>t0GaeNOfj(vLdqa2HWwO! zC8ic3fByh6+yINV#!wao_;CLKaY(ZV!e9F^LedsUvej2zGbs|-+HkjCAO{270T(aC zpd{61H}kAR_DBi1G~ktDA28g-J9(6iv8Y1L0t|et2uK7gpxV!V1?qZIte)CJWE#MO zu>0z71K!mePtz*l09(s5TBCD*NO>6Z%Ee3-Dyh2T zM^tqVlOv>JDK6?(0Dj(=I%^$jAeMt48A7U?+}t1oHtR*xeNP}tkojg6pxNxVvps@* z*m*`FWXq>!69t%s91ZEr3+5Qy5V)m7a~$v{u4jZHh+y6y8Fw*8$){;h1#T<@q;CL$ zu#6W7>RR@jaSv#>P{V7T!_EssKk@=&69t9e9`hUkj4mC;RI_+$_w_2UN)$bzQ$or) z4K)ic2fEd+s``i^RT@NWkGL~3oj=Ier0;cb9FqwNdtBN4=aOC83id_pTrh24&nUR_R*BdxilT;&qPe ziD0J7xc`-0FGh_3a~L0+ap(c)EBC&-qtV39l@{!54qwnfJ|1;s`v^EQ-|M*VjL zgYuSc{@}g8i+jO7e&Hm|^ia1BWruGJIv5K#f;~$XgHx zq%6@40_-AH{YR)`Gc1Q{A!N!ZGNOpttwIH48r>x~y8dDaxc&$Cmo|=!rS1VQ>U#_V zKm61hSKOey-BG&n5QA~!U~8}!Z(5IfQMf(>?i4$$w8FD;kA~d$;%ga=RyA492tkzM zg{$RGTHJ94!+l-_D=^8X$HdeQ;j$3SRBL(rx_shM2IZiO|q19^=+^ z0RI4d!XSk(0E~m60L;bC|!=U0RXKHSzt?9nytOO;t1&^rQbeaIstkq)^ zCpS{d1|bfQ2!cXmDrtKv-D!+iSOaOE)6BGr9kHB(#X*rxzF#|@QKz2+#RFY;GX}2D zhl+SGX93Z#WIWvNWr1$E1aT$?cpkxVFfic(zS~@(0)#qEo1WR89aM6TaAEs61Js45 z$b!L^#Ip#a(Qp=Z_VTpE@_3tEY%730Rp)&& z&=;L+hi(c!qI)2gl|UDy%gS1zhBQ?p;>h7v^5JsVW)gQwoEOi6R$|;y(6lyV-sWSN z_FF$}lHdeLmQkm?OaM#`r^tg2)8v5FbIi>D0P1AYZl+1u<_f+%B!_SsaRUIf`(6Mp zE=8y{7`B8YJxVVr2p$3|7@Hsh_M1WU5aAa#MvlC|50v6Pgs%V)3M;`PmU%zHGqel3 z{{SqZO9r5My5<4)xrPf7O4|ggaj1C*xk2p96q4tpSUD!ep#utl3@IRGh=xB`^hVJa{T7Ish600DQ6mj3`Ob94qQoj)3gA(J^P$X|KgbtwT7Iu(6* zdx=4def00sEMawh(5JL#FdUg^8_ZU@g%{ny=Q~c;=9qDXDfplQBsZCs1Atp|sQDNI zL>vKWm_G#fM1T7gJs@B>OXYEro&izwJqSQooW*#JV)rbqaPFt5U=F2+P6zCb2FFnB zDirrnT~xFIYX%z-DMNr*oy5f^xR#RVv6)U&?%GWfleplI17y6$0zmF?rCcBx9eEL- zD9U3X2dxIroWT}1V3eIcHbQ07>U-+l3{0T9bV<#B-PGt6vO6uy=3Ep9a*{3@v!nOi ztjtc!l!}NxA|L_EmC6M*@s@y_8{%SznS;tx-!Vk22^sWwo$!vb2{aut;fd#*R1yrb zlgG>B>N*JAD$A;pG-mu9V**~PidFo7F#%Plu3>nAj17buy5Ix=Y@VgACIf6h<8ih1 z0Wy?A+1IF`%LZU3$GL@!E{x+I$qs?|gb~Udy+-PMNsy_uY8NfO2gFQSjFU;S5&<0} z6-*)rLYsI;{{TrqkCP9B!n#+)E*%lw-xT5Q8^KJ?3l|KSP&gv&OwNSdFM{RDDEn1b z9}mSs%zEkocvc0)4FAA7NQO3vkE-0&}9dzp-_cU6b4;$SP& ztf;;0{cr+gJw?qpid1&5;Vi0C<}@rrEF1SV2=vy=ro|Tb3!Nm+8v!urUV-xEUFbzyS&EB zWnj3r+?kWZmJhd$f-c$2v}Kb^2zms0H#T^lhk!PEu~BANCAOU;ByH%RmH@dtI%|2j7}z}dl^Z}M zv~b?Rp6Kb^GQjq*ZDR{i5`(AmgdhyOWoG{XE+y~I2F?DGgd0#)&jY?EGPYnB?WNJX+dJHbO4X0vIf@;+oNM8mK{QWl)(3E+}Bq5>Si;v0_XZF zTZpG4&QJGJhB;(&FU9`=RSW2Qc91LRtX|BcSe4SKM5rEn;ce zW)uyGKGg~=E&$wW{2|*S2R54xHSD|kmoTg8G5biM51U3#&ayGY7W65w{GSr>ABtA@ z8p{6SiVteK$5^Ryd6_&C#0N>PAq;}ttUCE36cpB^);wPqa)=PQxBK1qD{UQ1jA0GK zR=#D%pS%K}o46t}&}w7umLSE6mHz;h{l#EzX%zneWU$eAj|_qVvUqPIW-~(+snK?B znXn~IZdb*6on?+8`ocV(0(OPYLvX-CyaRDV65tXchMmN{n2k7%`4ZRWrg_1cu-2x0 zDtrVo?&S$^DC~+6Sg6}bqZwr!p-Kg)v}Em_!oAE?1_luuaR+xY;#YH4R|~wuC@=(Y z(_+fa$6Cw<@rDW5356Kk;1wbEBYow#ATM!$aIn56XPIoKL_DAeXj9U5nSze4(Yt10 z5DKS6TR>ac_fhB*-xYN&F%#YuoIa(dDWh0ibwk+&8=AWdPumZ2Tn8^`gHy~I_$8>= zc9m!YJD{1WxzNkDJF5s`mSdA_$OZoZOnyz9;#@-=PQhnabxx6+1}o_YkAkdU{Strz z+3uJ8-1x*d4nyX%3LTA9Icmz{J)@5_Jt$9MDPU`| zAT+;vDk)B!cedosyuXfJ+Xs zqeb@*Y6k$o1Z>Obz03f+x*`xH6+vDNB3y`3*%s3?89~|$P29gplWofh(>7GUWE_!_ z<+qrJ--+dMyI4DO6XtB4`s9O%J0;x2#=XqO?kav50IS2eK~-v(>V+=M{Sv-upQ)0} zaXw;ISdH!^9A(U4QiG8iDB-HwI0Z(|AWH|zSqsSd@fh5CpQhd7pg9(-L$T6(scC`_ zhL;;WU2Y%0B=5^RD?+)_(o7hp*r{GjlseU zj$g(%1v2d}-C*!<_b?}2(Cj4_tm+TR!Fdbd4W7|M7sML5X$X9bW|8m-K?4tRA!ULD zGZ)zp+EFRE-3F~on&8g|mOR4&0f)`_mb#P>4Y(P+n2T&WxVGHQ6_eY7$c&E(9+_q< zZg>;YAr8TCF@_X5C+(V5%5)q7f(jTTFy2HNo>5z#3-%@m{{Xant^tXYK4h{mGRU%k zGnV>NRt3AGd>2TFi{2%zKHIQ~T^?ns~>7#Ft_;7kO(x5RAe25y?u0be>MG8}iShT(ux+w43` z1Xam)V=GO2>SxwvkECw4{LP3dc|F27MljeOAs8XRENzHDxD2z*HPi!PU`@z*&r?nY zABO{w%*P5nO}WZ8cHmHGF^m-zsNr&v(xPp6J3_a0Qy6X#VzSFLjI>z?qk+xbDPo6& z6Q==bzy%vhT+zUFm}eEJFy3NbV0+x5(p#~>K1}-%h5*Vpb8tHgP#c5lL21xK4uzP5 z93lSz!Z7U|g!$69s#EW%U~2wO!ExA14WCRXnHd=79otsYymbZ&Wfz2nRNxhxz^^kkDh6#V^;XsImI~ zwJkKd@$-+GUZq4SmMgX`Ya|`BxG`8gLj27jGLvQp0m1e|6HwEmf`|D6GHg>{fCA;l zK8}7!BCTamtu+m1yMzD=u7_cm_)imN85Up0z9EFU*aemDrL4ms2~zt(~btj zWk+o01Vav}VY1N(15sss*UH2@IDh)mc59b5MnS#bZ9_X%?tal*H9?li z=11s@U0hMZ73t5Wa9#(v^%k^;t86oH%< z+^}?P0C&xuhXuhfODa2&9>MI3mO8|y<(;J zQk(G#Aw8x>=r9K$VEzW-xNWSo3x`L|Lm7kXCD+p^Dc7*RKB zi*M>WX>rUG1GF|6;9K_K4q5C%ypyd5OankTcO6m3gzZ^L4>UfL484VDtro=nL;y<& z{q52Zb5k=ZE?n4^&UFZF9}Q{s325ML384HVjiYcQoHC5jAUF-T0>?8aHTA`6JA@r* za7FRBG5n#DKg`u8r{WNTQ{4yI53(2*Rtm|)R!45(0h8)52n2zoIDC*jqj-1;gR}$3 z^(=us;P+ysxo zx96PK&$&TGBNQ0w#UVWzJs_JNoW@XS7xvxLSNq6lGm5+|?vvcqP(&T|HT3@g&&LD- ztP#xzF~uW-U<+n%k2z(YL^%$>=3w9?84`!!Kn*asBTfPMGvGe}0Ww^uaA`I}KM7do zSSkhJFw$MoHe6)o!mO-yvnXa(vo`?M3tv$!_Ck;Rg&J09=4HSSW(!(R7|VZiv0x9T ze#F@I)WhXA-*SW-Hct?a7Be0e%3Ko;+QWg7WV5jZExu+5#At&80oYsslvW0C3D*p9 zG(+z5kBXpxs8Aq3VnPYZBX0&Q!PM`=Rio7snpta}tCvWQ&wl1L3^huYO4XiVfeUN1 zy_D{|m{{%DqfYi~_X`!sGt|N?gea6FTxK}8HUR3;0Tnal`if7V8zPD>Sa(f`<_HWB(@pR`Qp-A@Bxr|@5%Ovf zR3*?G0^kD2fit+q$?PGkTpBBHw16*X^k=t?K_F=D<~>ha6WwYGe z&6FIqL7BwMp>7`s`kulRQ}qVe27d?!Gf{n~sFbeJyFp)Yh{KSxsL9A;gbs7M&BG*#E%Q9#oP%CG*lHx&DpU4nQWMhLPVRp093qM)x9%+UWV`|qK*Imkd zzdQv1z5qgw2*B)>yR1f#t>y$T`!7>yeCfRGtW2?+U5n?X04aiMu97p zGH0NT$BeIVMAA2I50nalH1dpx06SpCtRzqda%v52xsD1DP(qE3gc&aRFyt0H-pP0@ zG>lbf_RWB@{;%~f=&x5RW1!=on*}FA(lK}T8g1n8V%U&>gB})pVKg0P<-*Y z!~<1814-qhxoK8aSw>f+`(~yXJKvA*8JWl&@o~DEca1?Ho8Xk)IL_bPFhsSzWmXO! zTa7#P>L`r7;dE*W&hr}XI+&v231WxpER+PfK7;=NVz2CiV7qUQF<^(fKPMpz2*Dd6 z$R2_SfOr!x401{g93u8}?qgg>4d!k$D7RA7V>0lA1}+87#XkhPA+_}|6?ueY36UL) zc#i}|Bicfe9>h?JV|_u-2y$j=1U`tKcxvd1ULvErmg?~hcHllk3a-Sq@DMDq^Wbp# z_bvfg39<`v3KUuk8|_*_YhSqH8=kHjE>_CB@i7t4gV>wH5y=|cch7epMkr=5Ewmf) zxF8p)7ey`y=I#PU;4~{*`p>9?>}fCG*$wk!Y$#P(@4dy*H|SnLw~VIxhL|bJeCcCp zzTk|(wU#yotqK<)A%kTlVyd-{i?n&w4!ODKxC|OP!D3qLxJEXeYs$}=?l-_42qAzX z&6LW3r}9)W2hY6XH!h~|KIL8_>vE}G!ERWW$wM2MJfZ>>;Z)$?QfkC3=2&lRO9U7o z!vKp=)*Z?nBSzYB{EEe7F%;Bp%r=~lox9pu}>N2Chs`ZDXM&7s`F5%yqj6o+>#77B?dV=BQirkuYlJlY}0VVRcbk@wj zxPTci(mUoLh=bD}8l}y%yiVOpGUmQJ(3o+3 zMFEwYYc6=-b38G?A_P%RsP9|A}9nHVNXiaH69?J|pmg&2!w2yrp&I0iCt0C3N8 zjNQ!fh8dVt;A=CgmFX?4@Uj9r)yGbgw*|yve{{LxvT?Qg_^2>^rH?*^eI?gr zhALpeENztG5M4SYmvi!@oU!D{LEnp?!yj4x_@u^kjHm*N=6F_B* z#9Dtc#0VG=vtcPhq1IE$GQ`TbVPyf)nMsGMm~nZ4Ff@S2n}Iar6(N8!jz};=alsEK zS3J00L5dy-F1*}0_YL6#Vi0|iwvUiP3Al9`c-(Csf*qNeJaP`8^)i@c3^x(6nU0}m zOf95UnI)bRq{MSQMr5&L9Hy)_5Flz`m|HF?#u}-%%!XZgiy$i|l3~tK!!&?{E?syi zL|K#Edj?g_XtgLycVq(vzbfYUtUc3Ek|sWgUV6^)>M4$}R7$t{{X}3`Zsn(t{{Wcm z17V32R?l@TVKymssm)NjI)JS?uTPQJn1LSlsjXtV>-R6Q*QnFnsJ&)629!el6FiPk zNLf$>aY0`m)tzR1$UjL_;uyfEjzc6L?4Dvbfkm`~nrxtA;fgMu7+vLuz9?~+)b$EC zOPVpmWyMwze&fPLQS@-1Y7$F75z_GB2*xH`V?^~#7*$;6@u=_2^Kb)tO&d?O%9fx& zH43#ZM%|;XlTF3UzV!W*^zaK(T+=Cgs5T9aL3?rMYe0Ki;P&NyQ z%wx`d_c{le`=gxCI>-3H5SwG?&F=H(spCQ9{aE2TZ>e_$b9Z^P*L=RAhz&nl{{UG# zh$4@NRd{RGW^)MPpCWge;doVRC`xeeJB-CyLnC>z(eW)YX*Kee!xL59xx=df>7*TJ z3^Nw3L2U)-&kDl(iaL}bcmU(n^+WrMeUKKbU-VBQpXyLIoWHVSa=`vGxC1m&=14et z*6}q!6gpst1jer5#gX9-m83AZx<_DQ86DvV%Zx)c#wOf0sUNa4Bsa2Iso#Mdwv1UZ zUCB2dVp5xlZU%FLQFm~Lfxu6f53(dS`9`?o1TY4Nn}-pVLZsATDU@=VA!`RP;^Ico zPFOsEtsY=ch;~BLr{FVyKLscs+;k?=UpCx^7zq2Otv79H>QX^ebE`SoxF8dnpMFac zsym?w-W=clol{SI1 zFy)A~+%D(nl)ebsCyYiS)J6tnii{0V?k)>J_knX|6o+P1&+{~Jg84`Ee=+)S1VPx* zJlK4Q1KhES6Qq2<1TAm{^oN;efK${vKWJ@GzUB&Hwr=1C;g+DlR$gc)V*yqmxk*V= z6gj+a%rhVF)1t=<<5JQVF*6JBjp8Dy?w6?b+2DMEy@rH2hi%*&PbJ0ZI*rM+>v_+{St+B ze`a$E46yl(7JeHf$QZr(mS$);2qF>WL8<}_;0guQ6qYuHN{HkVi0LX6T}$niWr{K6 z35qfhS8T$B(}-R?kgYfmhXQaB!86|nG9FI{W~ENK2-j%>S~5)tR>TybXFb-tl1ho{pG}9g6Qv$@TH&!{6ic>0YzRMikRxhNYl)2Nd)Z9lMuRAOs zrNc5CngX&GdbR0*@+Td&W$qEsM?$Ip0L^CN0NKy(QWG?ImN54kvfy7XYFqjy$! zd@GtWGJzo>2mQ=UNWQ}a0v9YDm`!Dm`G|Q8e^T)Ze;b2l3%{}>y2dG!4ywaycddf{fe$ z09YcVW~sX2cXthg-&B#miV$FW-5fvjEjk6#yvUT_y<8$L0rxd~uP&n0D)l3l-EJ&$ zFpn0=c7?VgF0Z+m2X>cw*^|t27<5~&{{X7uFvn4trp%3Zf*`9fGuvW(>t@KI?TH;yDm&n6+$8^j4n|q_7d=C;t)Yub|#ZC+D9iM{{Z|T(hv?C zILeMVJBFtq2Sf@*N`-_pdEgJW6>l)sZZJaK!st7Ko2Z$~Gb3>=yM-V#8@Sz6bu9s0 z4Q3Ii#5%<=SDM~_+I1}oo8>5w z)$?-E4Ub#8cf3?P&~n|LF|Eu@D8U=N)NjtAx=so1E?Zw$R=Q#S<*ZE$3^l7$qgBF4Ljv?CRXRlGfAieX^v!zX80;z_JKMe(1EwM&)|Rbs)`Y7t>wdcDS3*K2|z zz6>yM51$JwBo1|&_beq9di4Y;`-pHGL=YJO1w}Rxhb68Vv)SGt7x+yA1RiWAK$9wB z#vg+)-+&!`%>1DjD+G)%!VecNAgX$12nb~e^xU{HC_6=HWjFx+lQqG#3Zc-N#i`K3 zj9+Y#v(gkGUx|V?jS+p@0b7o)TKQ>Lxm&IR4rYWwB8$25Or|5s#XC&gYGt-&frTIj zcr`d1dYVFra7W1e6)Em+gA}cW@AVu+nNW*f_E&HS27zKsVFdW~wT$DLK#Ji`M!v}I z7tm8>>G{Oe#eJ-%+qPC+mmFeO)oRI#cbaCRByxz33y{3o^0BHw;3SeTFB1O-Zldr2>ZGsKP&(2Nk($;lJUk00WglAQRineo2;% zKnQ`#_yZ4_^WYugZE0@SHi{`A(@0tK3l;|MQwAkpN!W@(=454qF;(1H^9IXtE%V7q zk>c_o+A8vm8-1pZ(=-BMN%ls_8N?eyF$bAI=*^(A8D2#JrC0&TjIeQ}u>l)?^UmP6 z)~`6sz%pN8Gk;ORc)xwmoR~sW?uxy>QV%?s>Js`&4?32JbTU(uHGPLrcxI&`5MzfY zd8lYkh8_#48W_H#s8(O2!?+tCyf6YUVme2%Qdej+8$?rG^$_R~k&%~fvApI|knX2r z5vACB#Ryf0YD%}O8|qSEKR|MQrbuD~$6tae04VMmO>Z+93E!p3jzj%*q~+T+(76 z31LBA=+w?&{bLm~MFEUm64@D+xj*9=$at3^c|ocG1_5N(C;%+XGtr4ijkF?$E&5R? zQTA%1{!5Tt>^KhyddC6aIAtlQea*RL&p(NT7NO<{u;7Rupp4M743UBfOS^^oilfml z*HdU*0>X80+cKfxI^}a+acy=@Qjd9L@mI>w6K;5v~5Rt56sQx3jJ_v4b*OM zs5dY{9S4XbK$gd%UNNW2W)r3P;Ii)gkUv`ph+!(el?;IHQs<-M8fGc%T{ovMWHd>X z1gPrO()qZh1$73bss^n7V2deVR;9Gp|^3v={hCD1x&wHn=wpYY65`?U%A4W zJi-uk`%GSZnXaHHttFnlpB&3V9qchJwF&QYsWp}f0WEC9N-FUz^2BAyY-9!0u)zwT zp#6zJ1Z6}^i&QWG6cjxd_i%hpQxMCmS6}%t2vg>oieXatOCD3-Dd&SKidzFLAiEz> z%1m?uEC~5$?17Xd&VU&`;}~sjmKeYe&j4Qofk+@@scO57JHWq5mJdt^yNK>5vKd>7 zDcs&+mxxgvnUjEE>ighQzS!T>ONLO#Mhk%V#p87iy^k!OK|6rm0=%3!Cd0RG_M zTEpW0Yt$42G<#|8ude6ocE?#?U3CBn%(|JwoE<|JozInP9XWvRUGIzar%?y^aqr`F@&2zM`=7YaG*Qqur0dwdq|xvUdSlno`xvZ8W`;7Zq_GMyFTv)I}au(5A|J>RyAm z3|f(U={Fq(v+ixJ@;`mb$U6SV8P%Q4P7*z`{8_B$OvD1$S0bheYy!&ZE&~+X!9Ed} z%3TT};Hk8Xp~xu(1AZc;eIb;?hz7d9Fp*he0N4+QbGQ{N45!*R{zn0D?JCdmErGr@ zOhNd7`T_~^m1CJq%zr7o?qeb#QmQV^LM30^Fb1S}4Nw`+8kV_tso+~NH1Gn~4A$US z&D?hiN6#>t)VNsDA7Xd$4SoYLNfZb;T0ZA7f@F4u*fN0r(7?b#7*YW@!Q1^nNYBXh z-h7XUo-6}cySq!n+{aKp9z*PT?iho)fY9Z}Sx5o8QFdRC9;2Z1qH;g7Dk0g9Rb};) z&gFy)didZeuZs`?O4xIyPA$i%?5yzJ7Xnj_&rFTVoL5?i!%Y@=5%{sK$81%`v{K=* z?}_4Y6ph?!z;k^~&P{(q;VgfHG4~9B)rf=vdrOE_7Fo`XFeG^a7FPltH~#>#!o^xf0Zo+1uNQ$Ri^S#<&=rgnMkVN|2Ln{3Lu6%B10}R8^9LD&moX{r z#@je0TvFz1yvtzX7bB+v+y;i@$sriubqXS+2u4r@zi12r9uA-Z@nxB6{Kg4PXgzFa zX}+fMT&Wle*YKS{x3|nNOI_JR!FhMocL8tdFe{6(@3=?;YFM!ow!Q8k$SSSl#f~Dd zmIe@4YrIw}D~H#eYI19*s*3U?+k%$0Y}I!agzR`Um;EBFEFPN4otr#L&p7zGyM1TA zpeP|>`d#+-_`pEp9^!=n9oc$;D{Rd~x=N#I|8K5 zFQ|&ZV1ZNwW-WM5E+&)nUjf@3Caix62Ab^3?%E#;a!QOz2uKguuWs;!@xNAVNNUJ zW+thi2L7(4ur{tciCqr5n<~_>JB#MJ&BJuK(#klLr#$x=*lON|M^<>vbsYfQ<*xQ_ z2mtynDX(p6yMj^K1vxZJv)1Nz0H9fLC^Y{75Wz2K!(C*(%M5<+()yjQ2Y}ctz#ugg z6Gyy|WJ{gMs(BD>l#x;oY4Fdr2pE9(z#$?E`QpvSCtwfpGX?Pj0E#to4!`yQ0BC+L z$trLnivcFw90)}vfq&v^AUfax=ZyaVa)yWC#x3-QY$S(hAVDnh@d_cNWupciqaDPe zqK(VAi`E?6F>28g;8onkT%b}Dh;y5i)w`EbTrbouS34Yn<%JQ8?6Q)%W&ucjp$7#J zBOdYstbEH5Z0mDX)q2kY1=q?Btn1ttLG8r9saY2Q1sZO(ol1!Sb>>TuH|e=f9vg{S zb%&`5hmNE7$K%v>Kx^pT)z6<1nh?8c!=F;24H9R-xvIXkI=~N%x`kpX<> z?>7*QCi89p$_PC0{l+Y}o>s~zWe56_#Mn$gnMDl8tVb|I78X7%%o!tH31R+{lMUqu zXk1FbE?Yc_pom;-AsmN>2I<7YNA0eF&*2;75GX~f9w7~J5v&0|8GsWGNFC;6vAKTX zxDfyrJ`rIB>LNq{^5p{pb|f^U6b1*tB?)fg48aEwAWw4u?+|FVVYjHB&gH%!k;@UT z<_K#CfHLrYVqr6p<$@$0@yq8g+_B_z0O|QN-?)sj)w#tZWm)67dkyL=yRCo=qD05o zWp_yUZVE|asx~iVa)c`(t*z1zb5WXUhVFS<(T(D!MGo$hrb%`XO>f&B#EfJQnP3?4 z5$;eKNc{jvp=oab2r1l90{AkBF1SI8h6kAuVcbykl?7#0rUV%LrWo5YpC<>Hxr|6` zM$^LXLIdr_$(iqmP{I@yKq3^^<{&C?uMj>%a)!b? z>lg$v)WZuOq`0rrIEplk`mgM96$GT6L?8eF_zlg!6&s<78IIBwj|Ha@uu97uCK!b$ zC{$RLsJcNG0vI9eW>9_Mo?(Vr@y0bqk10zRUo%L>Y^ZUp#_MqNj1CoM*+E#o=HRyv zy!aDs!8TTDqFf`x=N3dp{{VTPg54$aP8$AFg$2=4ks7?6`MAL%D{t(i6+5XaT&A!@pztlmOZ6fA%@V^v?=2R&;j^#IMD=RthQr z&;tneCQ002s4zeatjS}c){lsL6IGBk!fU z5r`*+zyc4(5WtEqs_tk&KkfkRN}3LE7$5)wcnSl+G+pu;n{wSjz!1QL1S}iWs!!a4@P5nC5wE{z} zFT;QG9E79Q3v4MwT+GoW&})v#wfr7Y+)gbr^ir01}9<36`Kxw z%%pIA<5yT~PP>(g0cZ9&VUqaq^Z}wXx_P4{UO;xwj4+k&&|ZjL=`W4IbHZ9Oj|?lX zaD|DuH>CZL@(6;$%m5JS1aTSS!90XN;5mQ^&<_b=Ku$&xw1~1mr??#>lqI+Y_z0i_ zLpzCvZ!7TxYjLxG@hmtiA?pW&%yJ6)Cy|q20VPO3)If4KsDmJ8OJ=A400b^vD~gOs z3r`wni3>(B^psHAH3ksf7VK##|b6rDGcaG&)$zZLe3{(vGglsD-z>n%x9F`0Y z;;8M~Vq-%3p-LS;F5((#DCcDJtGd>>6%PY0Ty_l3GOKjdXF$d57%;)46&{(T4e^{p|sL?;<^Xy#S8+qf&;i= zz;%lAvgS3B1&9P{U<|R@oj`*nrrzsk&cF( z0Qq=bcM#&*pU-m^=PayD19=tyMMx{w1z?D5bS)HhD@WH6Qpp zFH(UW&IxMVc(gZ7QlIi;X`tlL+kGc;u^T-<99APfW}AXEg54FEa#+*^B~&ij)T)re zzYupf91t;>#1@Fn#7!MO@b>s5VtAdnDkD(CQJ%kE!hk$gPFa;t8p)3 z7$JhTgF6hvF%=X}0RzyV>xN2?G!jr~d#_U`8$w|bNpl$T1>AL2Ob8Ss0ui^FsEQ}Z zpY8xoA!K|b7#5B)VWmTOx1e>$kU@vFdL%%0Zp5iduCXQ4)4Dat_I&~lF51qB9aM1znJbhK}8z`uj9A^k6teeUBEvXK~f!` zXte7(5OH3yoEyO1X62+CEsIzy*Zj}WUugdTj4&0Cpw*wRE3M0UTe-7^#tlsj)n|@d zgSRk(<4bd5m@+N9;8_F6N{h77D!7d4EBuI~tI!DwEkVddQ0Gv-;^L){)EV+d0HM^W z0;4A_N|s!fvYqf){0OL@QxiD|+;|%@!5aW3S^>D$Zs7w&hd}iEPngflUx0v&mP*Pp zxCat2L@y9BjZ^8EPXV;N^$^Jq2oy0Cp@e3x9+4u6f@LujY?Dq|you zLY582=>UNX;4zDj@P;0OVX4*d2CfV>nYo04z%5w5;f;`iECH8GQKF*OFO~?H^;k+& zHM4G;$9nzD=s49iH?vv(Vg`X?ucycNEP=0q!-lTwzi~(=lvr|^y{j_J9~)==W>Pir zLt1+O0I^spbW|-QE6MtnPU;${*YgJFc%Lx!;4%O$dJ)Ji-xpf`Wr(&3fh-8jP^f^N zg*LEJh&yGW7GotC#NjI#WCT@D!jP7OQ!62i;v&-`1Y~B=PDlMiItT)Sjw77AK$Jg> zO^_7`2APthsRi_n@}FF(!_bJp@L`Xi1t~|=L7}_mo$hPDa1xA>& znSclZiF-y680g^)ZqE201hT9Wr843rk)Jbi$OcN!nek3*H5MCk^CN9K^#FA!U{BdKh%`%`JHgcP zrg;|Hv%2%#_{=cCSU}XbnP7&Njxkxc`mKG&Fb_GFJYWIbzUR<{Mi-?cB^2f)ScQcL zxbrn74?iQwCikfK8I(mMg`}ZqYkjcNF`Avp*~f1qjJ+Ln^Eoi-^eF zj>bz*GGI0J;={*ic9n4e;0g!#6M!5=-vyJhS0P{AI1vEx12qIDWJ4&@7|VS!;0iif znBy1`?p|{mj%V=V%fKS#grTW)sG=#f%||T^pegX8;#t5eAREzFeQe+EQVZ?aEvmC$ zt-w6JbyOQ~_q`oFxVwhn?(Xi|QmnWacMt9kMM`lfRB(#B26uNY+Tt$1e4g)m-(;=) zJ6SXL+%x-}eXdQ*XbiVepiMvrWP)tqQjI5nmw{YCLJZ&w$Klwh5d^@W{h&9eX2J>$|#@YI}PEDRIWWo{lIo78*whycgwynB9siVwMj=q?MmBMBptkv9* zP}RuHT(y2R%bkwN(hNOiQfbHZI12(GbIl&aE+8wU=`s{sC1qPR01XI7T3FQjGahOPDCArq}q6XBCm? ze%Bn@YNSMiu$NiDfka1RC$Zk1l}a!%``+n}7mj$|ky_@5mPP%Ycr3L$FO0m1<{W#TfNnA@jq?%5A;o*9m>?zu`;6@gCs8## z<5xuw<^+JnRqBS!M5~qiMUn<_t|l?0E@>Otif5=^B?R#okmmGDq%13~qxx=&8J$+2 zGbXJp5};H-2FJl-4E{6!5-)9und`c%x4)2 zg{kl?Y*0uUss-xh5ZOo*0EM^|3n7 z45;&xr-dZ)eKa)cQU2wH@`}nXsjd>nO7JsecQhu(Du`>em_04d@=2C}D-yMu zMw{i_jrO9Pd=kcIS^cy>>f>lRzXj0oQjCtYbV`<{FQi}urU9P4;8?xXium?W1;#71UM+2CV6xxT)T1601@$AF&?9& z*l}@mAF#MA^v#z+V=0%Q>h6!-|55}Z$Xm3c2qx+KfGX7l=VM!{;%h4d{X5hs#Lcu{ zTni!$c~3JGm!i+Q)i1fKiGrkejvVZ{bYb1kKUYZ^NeRneyh znMa{RGq%akO!6r>AKkdqJQ5?eakR{E{YLDNI?d$swR}h!&b3GNd>|lz88Q|^hA{tD zIPU?8Dku3M!SCn^S3RB;{M>J>7)Lm;AmUO|q>LkYZT1`4S>DJd8jn%+@_A}N15IE8 zi)ixO_m+Y!yy4bBr6| zno=)JK3w8rkcm#6(O%^CERh(@)iZ2A}i`062UniCF;~!s8uw2S(wB8Y8r1s~6ht zk5R$hZv8dZ6CzW~4%qX$0`Lm%lAuHa38_i}86ni0sNtJPO*!qdw#Xa-C9`fJR)(_U z$wlZUZfn6{=Ta`3-*?PmKqAHG5J56+8_O|xW_eT88=M}rGDSOcn<})P43RpOPp%>5 zKB)ewTAuGrMPv3=0K@G5^eDYrr|c|kIRw%eF`DF`U0a9neR<|$Rac2p1ij5b(Ocp8 zYkvcx(ug7UZg6mVkj<@$`v;HvG3iWY$wll2A$ZJJfLTr<`zEjbBe+WXbO&oHhAY1i zTIiJHEF^?8_euLuZ*C*P9l z>&ag>`D4W+jJ+F*-f@9ZsEMf>gIlmBl_X@y>I`aba)|#{)&`CU%qKmf2U@yHwc@4k zDH_Ygd}y56yOoN7BK!iZ)3R{NcXMgf_yDJ=UC%7h<5)12HgytAam>^eLtLqNGGJ%) z16+t2Q)Id8H7JPM4uEEGmzsFWP3o9~16szw@)rQ&P9{+TwIgLw_n$#k?hKha?OZkU z!|3f_g5e7Kd54snwrF_5A+cwnlpyW6$iMUcU5M3ON{g;FzdDX3RwBEX?9!fSSI0m7rwicycjd~l}Q z%v_?eT#6pkqEAU%;pd?_%1^Srca*8;&xD1_{zMnFD=oM zzV@lQ2Tqq-0!!8kVX?pY^H%-yc>1txN^$fB8hkTC2n3L~7SxB-C%P4e6s!$e1O{Oo z)nj7fy*JN>1Dy6;sH&COFQKZZfR1pcFuXVlvn@#Z1%ckGKq@SST6~1y@X%W@GJ3_i z6uT?X>>Cd>I+8T5;BUZNL{ODq8g-bZyWBS<7F{XV0iWIW4k&<-6Q6j zqvK$tk5T9xk@tFOuALf_!!ydMW{`&mBEE~4DzPFV;J=BULr-3iuC06gFAf#!11O?dfCQcqYEe3Fe+jFK4x^=b7G-S zS;bEKG@`r4o97D58obY)N}vla{v!1#YlN%(jQYz|3nMxLgDjHkaf8oHu0L|ftJ<7kBq=;rF_>d^AW*_)oK6%018JEwTK0TKScb_EjYP-ADxAKLfwW*S~u(QZi z?<91a#0tXTkAS}9gS%m_+5UGx`e}FW3%0}TMEC;J2N*1L2yXk18E@uCocgiR0A}Q0 z{wrorBfW7}NnRLY3j+ZL;{qT60010K??TqR&n_pcA7US1BnnNd&X;mg2K}Bnz)U$Z zV+kT?{$n~yczALBp2c9T6YVe4gQW*ilcq{DQ>e=YgE{{+{V&JDLPfD8r!Ol=C3jk5 zJ7_LpT=ZD$%XnOV$US|vL4*m@YNP7IuW^3wqsIwCls{nw4J}mA75LgPH+M&LusWCNs1U6d++$CajlLTQFX6_6j7$J#_2$yst!3yarMpC9n58MLDk?btcYWHWzAmSEArP5CP z?!12YKtJz6&i|zT&P8}AUHQABn=70oZ3v5br~@uu)Xj++uFMUm169(DTlC(jb~#St z-{r=GerPu`Tck0UKpfu>gizcZKo5sud~295^*E(N;e-K`oCAL+|EDTQO-!oWsOO%0 z1G3bfjWUpHXD0A(nqs}jtjXU>Q(qya~2q(9AQjZQ)^3}=_RE#=lQZo1A) zKRmQd+Ohf7`%lszhH^^Pi##dVYXkL{&Vq2KWjS#Gx$3NhTmdgf8qFRNq<=iFSpafB zYS(Xkz}%nN>cIl&__?LjC*AS69$1uOn_)Y#y@oTETITerj-UqlTT?bWJ* z1x=3@a0OLADA9WBeh{T5iZmxHFR|voWyS7%emtvZBsp0Y!*Nf(*IiJ&D`S}Zx>)ms z06t${I~yRtnA={?L~rtNQ}5L1*8kWbyhR6~-~ub(FTWt)sWM$H+bWm}^X%({}{cr8NJs>%Mn2k`CN_A>VYKTp#mDX@n6q(W4WN zqdp)X{Q6r`PNw;=YGd7ya~lyRy2KL62-e^tryA}2)f~Cjf8{o{hxEA5S$jw<;#T?| zpFDM{XE1Ys>f#L$e0frkNU+Xobkh^&CCzN5a%hKf5c=m!%XC=v1!F*=Mul-xS3t)b zfY0ScRx~Go)SRCniFZR6BsSB0N!~W#8pRep()MTewS7|J(Ik*(Ts_w}HGiS8 z8E%w4#t-c(WMjLOXpnlm3muggQOrZ=78b5~3yB4QQ*`r!KaYFBg4QkXmE8^BTLGK> zLiO!9<(kjRd?tc#Tnc=JzviqMn)_Wa6Cbu1*(mIu-~DiKCrxteUSLGLP|m|ybqbKh zsYH6W^<61s$<-L1a!mChyjL!kNwv%y%!aocV(VqQubJo7xjLdJJL$4ap(k@i;2*W8 zi%nUGNsHC6+=kfbPXDqBW~uKgZPRxg z$$C30h_BoFa06}0>p9D(lkysF-|0?+uZFEr`Gt=Gvr)t_bS z)>6Ki4sorMQ)`mYkykC<&$z_&xI+W2at!mbCI7S7&e+0n$TWOZ_qvK%;M|mOYth*B zp-DJuAtmwe7Jf3TgSoSg`! zp78Ea7&MU{7q&_N_x&F=5w=|e0B|s9qBPEb&_ozB@jqnZ|A>h&rlKT{ZT%3_Pjy_= z2%7Tt_?g$iAAUsUIT3?Dh`$bhedH?%#QVf#$bo0Js}$8i=B*AUDuXDkT6$P$TCTqV z!qsHE*^)x$WaM8N3!Pjx`#fJIFurFC%HbVRg_glj1vQFUY^f9#*HOf32~4LZID|G{ z_sKe?l!Q#nuuXmLl}P+jqb#V1l|1&>+B)SYr-m4z4lZ}yGtM`%&!N};c;4MVtLgctmrl9aeL z3=WV{|C~;H{pFK|BdMvPJ%ha4Iq*0hi*ZkpXkS~Gx-X}}(M;1%z4VVEKR_!s)Bh>PXnL@iwUeN_< zt1@_#YqTH@D&NtVp^29VWN(?B_1pp)}YIF82|LbArm zJhUT57$7HbXw(K0hn7YtwvJq=B3RcFA*D_=>&4{jhAT7OKW(=n=&7`wJLPsSYMv@h z$)|VcNlR+pdg{~O^ACXi>5=s0B(i(Sf`BTubR$!ZmbR6+W#nw|HoU!7O4LPVm=ckn zOWfoHMr$FUuQ?@lHC5U*ja)6vWdt8yc+a?i-y4aiC+?YxyXQ+g2kfZe4Y-w94+DI8 z^b@78zsa>=)fZkFpPLBC_lbgtFbr_u>6Vt?)5uq1HXK{UE!MgcQba|Iyid0X?ITdY z#HFM+k_5FCQzO*^r}0Nglg1}a9j&;8i&)?iDxreq!%i3 z@fvtfSI~qY+#pYx9})VH)L-vBXK|E|u&1>6=vTPtr|&Jh*S@(Pp<%qB%Ry5;ixUFW zz89A(qx#8@D%uI83|pYCD)BX%%5L%1!=S4x{8~4$k_eI0^lGE0jORs_?GR= zcI#+9+#5I*k1e%wXIsX}`GGF#P0d+kt{dp3TNmU;__rC7Y3b+{j>+*NV&8F|-k+1n zVvSzU@I=`|89wuF9m=;{tlbOpHpw%MjBt5;n#SaJ?N_eeQ|vA(fZka8lO>BXeu$`v z8~Ocv^EHTrXv~mNY0?s21#IS^Lnt+XJa@xo4&UuUtDfwHeRZH*Jxx26k6fe|&P$~< zlA1*IOcly2o~WCm5(@4_7oC<&U5cCS&e9yfCC0e}rUu`e+x)y$+j!TV@sS9Ox1CWR?^QVIQ?KH!)Y~LB!Oy^IyGY| zhsmfW(V5JW*bb_Z=dKtgexUjJq30u$?#8%Obs04K1h2S{1(w&?hMaw~S&-V*KFgu! zR6c#;bQBqF#5fHr;Aq$1puo-f8v_NZW%!jzU6r*_b-OoY*4g5K!$q0Kq>lE#5h{ji z8w>C6iw&9bxYD5lQ|nO-_;wS((~?m5ruuW-`a_PKJa)mKNWLbEwP_l*rMEF({LtHz z6i4&NkgNQyIyls_zFJ<_(S18y4Mt2Dh29e18e)Njay2alyQjPJw9%){ZIM7JUddZ; zfF%K5E7ofUNl@{mO1mX#?Fydc@G*{h#IOvjSz3v9gCLJc2lly_7uGaMi`~K^_0}5K z-MNfD&$V@9s-b7Y*|cpGI%Nd8qo8U+5;EEekt7xEM;_s+H3~~js2cINAs*}0s)UAs z_!YL)ADxLxEzFiSWHO5KHe|~|sR}fnQD2H#>_KTOe`<>bJ3ETL4F*MaxoA6M|4i^I z4_81j!P5~?-)uJ1It|wCF7vc3S}}8|Vpd|4Qy5u(RHPKaAneRe5RXkwbZijVn3@yd zz?%D!h%?9|`%@vDJ8eTuiBL$W&oQ_DKz)2x1D>rQaQG$2Dq zKKBr$LJ6W_IgBtmr%N=iW2k<9sg}1dg(PdfNG7c5LzZ$M|65?QI!j;NW_Iy3P=$84 zB7xdMw!74pWze5k3FV}LKh6~^HBmtL;ygOYXruM#<5E|eD0_XZGH3xjlZf0c#lB<= zR(z?catxQWEqH#^yN3^uEO{NxTfUh|NUfv`BnYU4rRaBeN%#GUN-08~18X72L1>8k z8&0tkVOol*_F_#!p*0?&rQOu5A)b;bNsKB|xP96vbm%0hV>8Ikor0ak3Z=jb!Od;`Hz%i0qh~x@Z_zqiR}C zBVidc2fs{}emg1PygocvSQb{29pUt~b?1a*l`T3a?+QJ@9J8=6jp!91`!YQBfLEfx z*FB0l>@PV;V4lGr*XOOtM)!DZcu!x%#T@_&iuy8g!RQ+0Qj;r<2WllnQ71FH7~4Sk zAP~M6g)cke7m+cnCTn$=OIULPq_O`Wiyd zLSkI@*D6vl*j`Dwb!$pB9J4B6ofhF;30Ws0dN5q$=*@X+{#3vDLI<|1x>;$pr5BEc zE}Mm|fHaYuKrM*z^AoL-0^d}-tU6HLY{0Nb3@<+_?YbBzO~ZRZ)?%lj z2kv`M->I+ngrQsU-S5ds`Nd?u9l1IX3S;O}T+}vhsYvZ{o#A3~^(Tk-V`_rtw!Pn4i9-81T1IvA21(PwDk#D6dq z^(k`uLp3eC3eHV*ku(X{JUuDA7$R=W@iI@f_14r*=!fYN(pG)TZx!PNMd*Anl{p|0 zs8{IML$|d=aX$L&V0maAe@{pL8tc>?(4k~Xb1H{q-dEND7jGgdq=vq)mnU|Ic(2!q zHlv@BDOo(eemPjiu>)%etCS%brJu|gs1hxxmGPk`gO(!_3q;zR7k~;;vbg49NMN)3)a_y8KlLQNC5+6>hhyKRHGawbcE45PCP#EtK(rVlKDCFsDbLGdS zZgq?K?Nk=c*Q^PNtrE47JqQ~&*?sD~8ljk3MU`k8jDwSVNN+(fR@O%-$esBqin|;+ z;XFzRbkECzMfmQsP@7C3^OM-W4?RN*x(ppiYKss(` za=SW)RnO`+flbhsukUbd!1*VF{lt++=7K=(3imFX2v|eZ{5>n7ym|bWU5mLEer@bx zyx-=h{d%a~4v~ood2~9O7K4FU1|U#6Rd;8ofnm(hp+8xy7~x`x4oMQwVGQ*%gS?7( zaM=7&qNiTwvr8RmB7ttVdb^dbEs6?$ZR*X|!#yYwfhV-ca50)X)edyn40h6<;WD4G z5GN={F=Lv&{c!4wV1;UqnlSJ^F;mEp4=*EWhD%j`-qA*GLopmc;Bd=LZcNyISgz*8 zL?+~KcZ*=a5B-U`U(aJ9LE~Aozg4 zlIW~;ytOe@qc^y!MOUDKpc)fFXU#qHh*?C47LitJ$ZMx?H8uMjktpcNFD;wD>!PX^T&0OKh* zW%3OotCNw_+j%^*J6#+03Db7Q$=W9)@67}<|F%#*eE%aD`E$%8n)fvCgofhkn8p0Y|h`O{+!=AJYMYOc9grtWCW2nT+&vn!Kvz# z785qd$dcAi8@&NaQzE;Ar^XiKRw?|cjCr>i<_WmVPdy$#QcIUu$l=Y^1olwNDl>@^ z`tHL!Nab~f$wv5Z4K!R1mKhhNY|UEy5=l^iN;TC&>QkZ%Va`d)eg;gF-RT%h z_>g}dVuUi|p9$+gi8-!=GubUjaXM@w0)M^vDIE`m61RT+kj1m(n~Cbhw|fOC@oAZA zPTeUOTGHqA2J}SeBtUzT*pEBg_1IeV!&fBpju2We(x;zg;=N#R2F64$g}#y zuSV{SzK>F_7)yvT!DWpWk@RV;I z^IPxXDhWA!GW;t~F70w?^(+U~AZ6IRVv%ETME{^wuCG9LG0=hgw~l4cE_2F;LarP* zG?{{ypgdgvM5skTTCYN&nyr4Wwu`l*m54R#ftPPL{gZ`pb!=j2Y&C{VPO5u*u^q!F zFj6&96FbW$1Oa1c|9 z?MnSrWWDXG_zwY~#+Z^n4&}q6R{fNvow;{s%F5%?a4q6wf8l(Uf?PjtZ86fnu41aF z>KyV6@5OH{zH$NtVpF?Ar6Sv%L{Oe2yR6czu-Eu;jrgjn%5y?k(igqN45h| zN|Id8Rmz?T=7t0mJePbFti+NG$G=b>a@Wbx0vpfm!HR-O;AES^o=O8fU%!mv3 zzt8_=4#3Ktfd9n}{C~>%e0saK=Yr;c+8O>o?JOmH*6mWg8nQ~u514lCTtO<}QbM^m z+!E6KSwn@$I1JX<5acu(wd6&`vT2Nh4NxY}MJ@*y26fFX0gv{hL~dZEq&Gmb$3sfj z_zSW)inZ|V2Pi1@4bUO5E3hUcF7?A z*}HGfzLX|?mNzRYY-2TP1Tyd1Qd?3sb~x8eY)1cmkR<%kBrTc-21r zj?4+08RD#Yd6J|yGqgV03xmXhC(}lyp8joZ?|D_%JyknWN?}+3C0JuDm7s_at&8of zE&&|>nFv1J!)|*?BR29rT41sa;v{eKg;EsyP}6^RZx!H|*eluZBke^fS`w2vH=*0} zBMwQQO+a2utzHKBrDs#$-3KQ-Ij8R7Z}ff9JR<$g`vN^Czku$~SnO&()cAY+xgfh+ z_L!&)Uh%MRVh`CesOfOs~qdP4)`)t>t?*go>wrgKQ;2ZW}z^ zubMTT6J*3s5l*Y9K##Lqq{vI=84{46*kZ3v{<29!(UaYn#FpJ=3iMq>a^>X$semKOI_%Mv?8KE`GaFueJ?vn(z<+e{R z9}1+c+h8<)$qDl-JaXFXy?iR`5e7E|l{8>8D}Bjr6k99h-%oM`sB|tP*bL*re!srj z5>+2RSpEe&eGxMS8kWC$V;P->omuc5HJ+(8VT8&LX?w~j572I z0+N_~X!x@vvUjzIo?adyv}D?K;UBJbyG6&T7w)tvp6pIMkR-k7=V>;PrEwFjDLF>A zJS^0LIcdEa@rd7n;>L0xS6`Z-rHIW?I?hm2~SYIA1sCyArkf_sAG4DUcnm}<>Q z-q#Z|^$VIS$1CuP@k^cZA2x_LHod0Ny*I^z=DpRXZhJuRzx&XOPzO(MtWnHQEX1d` z7$Jz85F858;HW>VmTb**(16F*>PBg5U|)5&?y7J}O*yHE0Q*z$YMP(s6|&;e8z4@r z*KI8PEFpzmIQYKq>~swr%D%?aa;f$Di;{V=YLfp_coRgK&g&;eEeRyayL>mlsMnGZ zOaf!QZerKupOO~OKFjW$-YA|1VT%>4OAO;{!~&*M3gCk9qiWhDLnIr*JJR{NlAf|^ z#ga>2_b4=X7TpyK%!7<;d=R2u=}VGp)GRd&r4G79Od3%>`4mq#J>;CYM30)H3bP0Q zY4jOJ2BkeK@S8RI-o1kbAO~YXT&c`8(oU+I z4%-%?M>Y0!mZ(%iU8NRtH_=CVqfg%_zQ|(lTE`o7z-p12I6#b>H#+EejIAnokgyTGOl`Cqeg?(scqZ;?Elyt8PEg28ppW zYGiW)*Q0OH1IQaJXl>)Gsf;#)QYQWNsV?rH&3GrP4|w-4UNrDab{|`j)01zQ`deZ| zpGY7vzL_*picbra^`2zC!|B-?g^Xr*OVg7z^hR*nhHZLr*NUmB;qZ< z)UjTr>o^38-T=8KVoAcJZNw#YdMcFW$l^_6wTF(9{~A5$e4BC^b)+jD_Xo$LF%r3v z61P8H&OWcs?uEWA$+1(Xj#JYa2f>_!xwpwHl{rDMqnY?D{qmvt`5uAO7-Sa6I}aK|gS5(fXCd?nHCq%#zIvOtMENedD$ zc!t3%;?D{w;;3$g2g5fMuu60G+pC6IjNmA6D7TUKENJ z>2aFaNZPb#dZs>eUoLvp*6x9lgm1a|?v9?K1=t~yR{oI9e|IE(lRZHJtcMLvw$n62 z$DF~pwBnBc&{~A+sCrFn-KZhn8vA>zLl>Y0?>_%-$BS_OPM+jONw~iT`IK#dpbQM? zNe$I4^X(JUll8%%w^vsN33OLug##nlQ2J4B8_N0b?xArC;(ZQ1mKF@aTxEA;ApO@h z=B_yBbZv98-@92mxLsQs{L%Z>rJJiy)l)KbPD;&L^}_rqGl26}DH}7zp!&+QHdn+? ze5FOAyE$v&gXR|RlILdMtEx|OQ{cr5^kUZ)W}d7%@b(_!77j`=4_13WVeqJA@blFX zVaYZ6c=AHi=xc|GBm&*nE>r#a*tWn??9Sy^obWw!@O%X5Qn6Rpg*(bK(m;$2U(?p4 zPN=n@+UW>u%s;W`4G`NuIKP-4UiC^m*AZCbpCML%cS?Sm{H)rKm2>;xO=5ZLCrZJ` zc-WS)B1x~E$6ov7XP#{BBJ=oaRmDC$u+#@9fEY47JE8J?ySZ9(%jH%>RaLZK&|eiZ zWaYB$2GZl%%|bXuqa>0nY<7(ZSqs}eC+)&+Oh`1i&kY{FQbneub$nDhf3P4ARJz#D z4s7k?w@eUvWtSyS_4G;?&p-6@IQzMu{Ikb0mao5|D>o&WYT5D}SK}UR>L_{TiLFOY zt%=)Ar3B_>pimO=_Vl3Dc5`_HVE&U>=d)@%Af8CWTyV@>FsWNa4}OV8sz>a?Xqx-? z$k~}yd^QV}IlcY(0;+Cw8s8sJJi4@e8YD5Yztq@KN;3H|d#9-OdvS>&Ua-1R>+(`4 zJna#Or41G zv;=k>+!HJajfT2pb}B`;uGbCSVQoLv9ea;kzVb|;w~0ngcDWn@UMnTx!m(+-Kt2Up zAxyH_Skav4@ltSa)}6SV){jMO*VG|8|CQ3n%DBC!eHI8xcJwuc`+Zpq8PxTR2pa2|aMoPG{~KXEo}3OgcqkVKVmp=8t) zYyPsl{xzr}W%9rYf>7lcz8|h{-^p`M>m7UQ6IuVfMjx}i7oObD!?!2Z3%77HDEu-K z|1kqoJn;#bgN(YsbqHxQf623K-mdlJJxBEFSyITvlHu8SZdwtIdR%tff5b=TQFGkg zn7EHtl}`y+f@C7>iO;A*1OQ#^B9mU0iEWGCVhj8ySr@f~hQ>yIx4g#Tw-+T%GY3Qn zi*-RtU+UX9d7T)1?o(0JlYG5j6{+^o(O!#e2>Hi2YDxVN@~BORy$m=Oy5E z7i*&Ha3VYXCzmNKz4@8t$+ohwZ#8-b+e9OQ#&A{mQlLBy-2ppto|j7%q55Mo*>;3Z1SFs|66>nUXq@C{jroI#%(hQPDj33^zN&pTqWlU<;iIQLK^V2={!7dECmD@ zC8`He)Ad0pp2bkM25#ph##@$akAs2h3hU7MQ{i4R%hTlLVBms;bf>V#INfSo0P<5- zr+$NG8L9Xj^`78ZIaryMC2<_n>p*p2H))}lHjv7wX zl5lgmnJGAVN8U5~4ZViV@q)qhToMvXnA@m2Xru#TzgvBf7U|`)0>3E1rhNN%O|2=! ze`AA&RwHs=Oq;fn@FaTb!fu`k>Mu4g?nTdfhF>I!gUec*#PWw9+oii?vK}p;!WLJ@ zFz7_BLpE#wjJbv+UWyH-Sv;_oqTkC!Utr$$tch0F>;`4s2}g4jjGERbh+3LG!ALxh znMDu2qnM+TGeZKi><^cxyn7|Fhpi8s16Nr?;oe(7D9#sQ%NJ83n4r6ZH}_bWAbkVS zNx6#sCOalUy1ooT{0gQTsqyoc4w)~hC(g|rd4R78UgNA^>R-B4e}{4$Vfwp!^*c8G z=$HCgpFdj@O*Q^_)Wv;?A?U-KA3)-#zCbid*7Xy~f1{TV%T(Fo!GnE~(H9s?&g>HU z?(sklD&9#>vG6;poxLmQyCtM0o6Lg9UL<#F&)=GC?G)`l5tckyhjvZdOtw$3KCvz_ zQbzZ1xM5e|j9Qi*Gfxa;LOz)ZyGp$Q?%^xHJRrL;!|1X#C|8Ft>UoKxN4J?%T6u)c>S18~`SjSv1VIll|hY zkEVTXET1M4Jrc7y$nU~F@1q4!?rG1iI1Q4ms-cX)j(^fc+0UF0UTpV+jq_`~cu&SH zO=R8k7rfl)fvBtCn>*G+cE5dTi5iW_J*5%Bny@e;FKOB9M-`W@?Q45RhHdUmxJ2y( zuVe1u)rWa)Xx~TBh(NU=EX^23L}%EB$fHBkO*aNjWG`kwQZq_<++YZ?y#9#WBgkb*c#-DNdr?D2hxV9Y8hj(j&7rxY@x?47v_8u^X&U4V{z=qzOe<$FVN zTd-AKvq4q(zdA)IH%`DS{?q7_%N}aiYtxlPYW7b>pxq8zr1Qn+f8Zx@3w0!TgC1Jf zwzc!Y0-f0FnP#(l!+b*IfhWM{uU=N+?CeKR1ZXF%h*za#HT8hc%5G3o5nS@<>kZgX zLpDi!^}lj&G+#aPfA6sr{X2z;~p<$^(*`zE>2Wc zAW|hhSBlwa44>gn*%&7iSTKll*EzL<ChHIJy zeswAkJsF<-y@WCq@Z?@&I4?ZMZA=W9(=c#(*7o-&eW9Mn#m@Z3Tkv`iCD@g)?e+37 zHH`hp>$@foml;`Hw+Z9AS!cZg=83yWx*lNl;GK;Ik2e6L_#aKWGoG}^fv#?aD=__s{pQtAHtYg)9ATn}Y|4dXsWUPUe(!T=UcKR$1%^n#!c}rb?u=_^Bn%C>^ zeUcT4#CbqRKULrQT7l>dojI|P+z-sFZ!HXSQIU5l<-&nTU|5{Qqo&HwU~_&@ zC8JnAWL)!$L=>~)CC-O1fjd5Hm_b;l&yeXbdlkd!(_>iSbKdI`{~uErdhVo#HdMI-z4vI z3;sPlA0ucClM7daS>x73*r59%t9L?1?M^Y93hRCc)=U7#B@PRmqPBMO5(lwRnVv28 zlCuS_I?7f*gnRlo;_GC$;Dm&tY=y=t+G+!r;8NOZ0I5Aw_Yu$W9aNm9q#q6YPf3g1Zj5j{|C-*?d|jssEVov|Ld6=cZyFB`AvLrCFrQiaHg~r^Wz!}erkl2JWBB6is@LL6Hyr24_F;IISvk=VobL0uLC%1!< zr6XcSQiU&FYViR14ZvirTx=A^SuK73*9EeI^vC`V4c6_b1k4>=CTG>&txxNUz5 zg;$rwpC+4hh@VV%Ms4ozJxE?cv}#o)7ze%@wqw$?#@mMj-lLg} zuI_-{Um~M|z4%a=ddG$#8^w-%#_BCALL(!LztdFf2>yz_Cn9lKb2#!Gd54F9O-`5b zQP0Km+c{;grFtLC2P9v*tn`9oPDi7~^Ox~jcEGWzJ8eNIjVX3eaQ7n;%Zwf~SRUKCf5iHH_+FmT zm%qEDY&3z5=a#rT#;~m?`ECO(_|*+V+00mG8$uU^Vce_(VGPp_S)f z!lNK;=Uq?!T(FzS>GMiy_6GQ!DKo!O`m-eEr*c=n0jh>}n#PT8m=$iAP19>wBsja6 zov?>*OZ|Z%cELwp9nbuolkBOW*GtSirBzkZf%dl{P2bZ)qqzFqYFmw)E4z1NI`x?K zWahfFw<68ev1Q3w^yUfaALOybW7gRFPGeIuf)H^7v)(r-KYhox^Zm5L*+kXKrK+iarbkC7gnFZjT82{u?9=r5Up&1QQkk-o_`;Kt?QF+ zo6#q!r0AEexC|YNP7yzgyA$3=wAt}R>08^F=pq6lAIn_UCzRE3fye;{Sb1}_a?w4J5bCJ2hui1|Q#O2kod zDQ>3tSFLgESir`wrwp3VS{ygE0#2hG{k_|SAWy|xvSBMrNh?E_o;cRW5smOsOWAE~ zXgsvVXQ`Ur$`0)WS5Xkj-O5il0C`89Sz)d0ku~g(Y(|__g}pSA6n(^j%&!>JIhUV8 zur&LQ(TV$e@d}I=mtozba=I-vQqfS8>CcG_W@l5KNxbB@rp8CurI#oV zt_{e>j9ted75S3Yal+W?q+Bj}8Taz~1_*FVD&73TWRR>w?R}s<)CPOQ;uL!W3_;fK z#?MbnuMO(&qM!DnOnV>>6+`pqUl zqK&tKlc{5jh-ip5)4Ly30;Ftf{>&uJRD`Rj8?3I!r&CQp?IO?5EJXf^y~_=^-Ch1> z>)pBtnw^OiIQ$dY0oWp?VRbL^*bjI8gLXUv$R?_Z*EsvT0F&f2>`5BPwTG;b$dBpt zp7?(0l0WOewcWkBPGA3TjqT{^dGG#(yxKFu^r@EoD0mZHa3jb49&1&bLWc2jn$fHD;-8UUhF%{LjH_?UVb2zF5l8rkdF)>2>c`x>H^2zh z(;Hx4$HpzJ-caLls~FxVigt$~?~!Mm{W@Yc5%pv0i&e^1qoUXg+I(oOz9GXu+<9;m zMzI|997WZLJ+XtLd1s9E-u6$q;P%wwvknQD-Heb7_sbn(`5uBIwoS#%1n=vl2qWTjEbfcRfX^+8Gh- zOI$qO&o4*D`GP?Fgb%y5oo>Ea{`^A~yxBiUXCI7WD%p#72AQsi3Eum*%)v1*$9y>6 ztQE^B;VHHIea{1aWLzx9{V~Bf`gaB!DKY<=!+CT+)?Cz&6wh^8@vAiUExhL<2Kh=D zkz?<}IVi*2P!<>FYQC_$TEWTnJ@KM015fm{3iOi~&ZwOpB{8GWFa&wD$9;xz%&>L) znPn;sDEq>D_Og}M?5oBb>o^za?)&)^bx1ELD)CnT+A2wu+A4__a{d#LNiw>PC&oh5 z*&n-JS^4({5caU#Sgo#`b+%{gx*Gv>z5#x%Xukf*c#pH_ny(Z%@VE6V;cC|#;6h1k z^BE}`CT{4!-_5^1z5GfPJHA{yoQ zfsiOd{^?=fwH2BiI_iUgbeev)GuFIa^fiTds)%K!&L{hcTbiDe{A3mym+q>3pPyoG z5$K`NXeC8%(lnCp49A*yO`h{;Z=whjY{@wnK)tZ=FX0w%Qp7X^_T!J}-jAr3)G}_| z7M|+M?SJ`udE+5A7F$2_Mes^lGqa#ojVZOeYAKm>eBJyLtCR>$HtN#cyha#e{QVt; zG0lw~+Om4fu)?%4?Z3^RKBfsBuZ)b4Td}OiR0G-aZqnNywk$6X?^f4OP7*(~d#xOa zeD^2h4GLF-ou}>+kIv4N`yH&}XKwA|hhb;V%YU|z$Jy>Q8zQwWReW09V#S;5D=PE! z;7mXH13ewz%2F^jL(8fq8C zMaf-Wa=4q4P86v;ef9lG><6*#RES4 zzlyFhtjV{Fqav-Obax{m9nvXCH%LfGce6j;-7T$>1EgVeclVI)(Y^6L@0abvu3g*n zJokOh`Ng?UpT~b;y{baayOy;r`-a$07_v<|dcGy)Y2%W5)i?@cl*D}=uG zmgFN31ade+9;|0U2ttVKQ=$v#{@6B*`Tjq00Ael10dr9Qg8|X6SBUcX0lC}ey2vSj zC$G*UnZpSyqT@dK5O&`k2ov7PxdKL}z90>lCp5?xlmAIPEzz{S1A8X6R~}yFLd}>9 zY}%sI#R{BTQVy{O><+y_oXz*Rmo%fw31!#X8C2P}4LwK${K;g7xYfzvkKzN!@e~D? zpTq+s9HcYP32pk!xG5A?IhZ!cY)SHTC24TOy}9%ezgrBmN86wS*kqR?D%Nd5fDF?_lIsA8z{?KY)6{_0S}{?iQV z>shjk%2F=q?O2!-^z&cTnlPf+r(bFEKmxB_1{oTy2})dnPGP|K&1u)kjfBZ`C)G-5 z`RnwjN__{wOCNj}6xa$)!7wbVp*|ETX(T(vd3Z%K)iTptta?8&?x`{#Bw!k{t2^z;fa_St)5Eps1h;LEeM0qaNM6R&8w3;PiT&Jr(`Q~$U zjZHG~*)yu;8p8+7+z#&V2X4g+Vxi1*>d_rLh7fZ+IZWh@hEsDAClNfu?gzb^0q5=N z{$4qnlRs2{4w!;FQVRLz4t%D+HO0oP9GDlt9{-JoTY-zDE*y!JVmP4{WGW;p6GMAe~|xzbOmRH!L9>b zpgqz+uS~~K)9nfV39T=>3s?%{6TeXW;9C8fM*W^FD{qT)EFoI&I>qN`c2sXmOdHex zs*kJZ5qk)E7W$j5*XxL%gtxci=j5FA_>{98tc{dSNyPj+y_6*qB@xHy<~w@kj)LyA zUkjv7+VlGSdP%EoAtFQdtED-oonIEtkTW0b!h#)pc%57` z2k|~u$8pbW(-bz#q|8(^fAb@=o%Vk1;TK&I_4oFzs=31N8G~RZPM)0_Ry+~qx#j06 z2T-%~s!*GNW%4a$Dcde`+i}&dIY{%3QNgo7h4qseZwqDFm&hN1fd6n~%;fl@> zgG;JVQ)a=kjs2`bbTye;$6-8s#{-%*Y^ELoJnjgxbG^dQS5Lyy^c=*9jt%wEDi-0ZccHuimoHqq@T1B3lj-O-P~z56JSK4b_2l1=!x@ zSm7lt(s`GwPlkraudX2yQ97LV@N`~~{=Mle*Z3kXjF)!gX!{%#f%Aeyf_nv5jVYfH zJKlI(j)0RNp(uIAI)q@eGE)Tb`o1jP4DS$Ri#DOEneF zSj*Be=6;Fk3_EvgotRXU|O7y9vpW>e0<&HtH z!a^9m>-GwJkagB!hTD-~C*c2?CtRAS@wY z!~uYpfwIagh(n=Kx8D2Taz@Qt9=i<`AB&={l0oWXl%w}|h%dh-2YPq!@N$R5Ii~4T ztV((r>rcM+)1-oiN%t48Vs32gb97wQX@8o!3d>O7b{+L|+<6F7Sq7o154^eRH+ClL z+zboTbRLMXT2YLr$OmehdDfbj_9(u2OO4NP@?^Bkh%#xu3K>>~5}9gY4mv zoZ5Gl=^d9BVWt)RD-e0jLMw5Zv(F^|Hc+8TJSy+f#3VMp`jYk6Va!lfgyiw|P@Ty^ zh``kHu+jMdzr{)mr?S*9Xxnn9)bRTg+dp>AS5v~jXe&jJ@64-*?zaY)Uwom?Kjxx`Uz7*E+xBau?C3Ec* zOzUj;{J=2qRwOh2ON^P_j)BJkCT+RZHPR{yi&(RuQDjnQtkB!S?aE$LFps9NNXxt1 zlbzh-a{<9AT&DjlFR zWHk22OYu6x`$KLnWu7r1Mnb;E=L@7wL>Z(nNY}n?UY8<^kjE*a7bF4;f!iEJ$5~RF z4-B@NKM4GLN5CpUTzM~5qzW3rBtu+<$Pu!p8?NB3NQpGBW^#PH=61Mc{N;-lP`i zAoh9npWt|OPMQ&hDVIy|U%W%Mvc{!U{yunv^0F$0JlSJ(GH$5y*xEe0q#+vf!PUI2 zM|Y0E+<($^ZJVlk7_Q0HO0s|SibzCwShDJP7bcW5qrV_!T%@YO z5dIzRkgFOd;4#DLKFq^^KF;2mSrSQj zS8mAYJ`xTb*y2_~0tj}_nFQsK8x?MkRm+=6d6oF*c9EQj;I&ZC^Iq8s&pEYBhb zH$G4uewi5%#C6v9Iuit-La5g*X z3BV5=n4P^9S1{MDFN5RVJ6`aBpcuZ^O-#HHKm7aUJf!_X#M7P^5Z4ePP~f((PXc+P z(<^6)s*MAvpLVd}{~p%??*6Oe9pu)d!vqn^=kB%d1>P?Ehp9aK^>tu#`~6|^#cG#% zQ85cxluc)r5~3Q+<$&xGD4kL(ZjB2Rbo9!?D49d(gZT}C#Wx=fWy6ym2 z0>7xj>jBGp99S*ggEjX&!qCKau^wGEl>z)D99?l#PP#y8D`XumamVVZ{%XE$pECJc z`m};dfp>L_L-Z;?<-L{L^K8(P-Pw-V%LZ6J>X02tDrDzOH*X5w+yQyqcAUTn2xULhm$_IN081F zk~jEx@Kbf*7y~3gc51JiWp5F>;NCy+6*?V0i-PwB`w`=BXZk1EQ~RXV=#p<hIB3SS8ow|fpHpoG{ex;}Nb zTLd=A=1-PP^sH`SwHG7@I`9{&|4zzh^FrcX+QsJvYJEQWRGQ9u0`f~B3HH^Rqg#8_ znvarYR6yn4eP_!4O^jF!BCt@y%J~_LqV)!QUrFeK(v`_{8 zcb)PS@mnU51TNBe9*Iwd&Z+uVY6JbGB15b`6Air1|5_-=KVwMin+)?3NX$=VjVB($sR=g9R-3^Qm#G_q1TcY1CDVHfnK zkXM73pgm!Jr-v{I<#Qzyu>EBO_z|-aR0RldNk0fq?x(wYdFpDnp0J|mICrwLyBKa>LJt|HV`@;Bp5Oxp;0@9KaGa@hF#iRQhuyozd4k* zfLn|3u(sM&@fpomX_g7|Ec|xdmYu*ZXheDV6?3(`9qn`>^ok~vS6}nv$Q=%J3EG0+ z)Jjt``%@pCyr+l&^DoBcV?t2&Sv`4@NIm_L$y)&U;}Ki8Mi`ks(dxlKEU#?*7F4Jj zHb7I3s89szr)L=S1&Ln{un~J>r`|;Re%ktN_KTx>|Nr`R@Dp!OKYDQ;^4tU> zs0%lUA40?1!P;?j6rlCP0VhSiW0FCQ2JxBllk10eSv~hvw~fX#wW7Z5F*t$tN!4JP zIsipJBW}g~*j%bqMI#e@dl^TUl%}wHr5K3UF+#26CeG;pTVmwBl%sib@j;p}BJe_= zIL-810S8)NgbNSF`(iE4p})xO@jl%3>jR8UwXz>Jv@0<2y(t1MZIce*KcfytzD;1y z*^aSC@eZhF5kjbkQ&ou-<+{q)J5?6=ubXU>bbY8UgWa^hSc;GLhR66jJm;!%B7(i( z_gB3hf7ZNODAcm=)(ygeF_=ZH`;d!|EkM-Bk!S%lT)8$-`xk2 z6Ci>>{x|{WXCwo8gC&Shh2z^~GNEmPUtSZb>y8Tdr*MOrSmA7UvW7Pu8;Sds0yb{B zb>w<&5)$}hFfvNyRuYy)7V9GIp5e(8`Z!MTf5pNyTY}o`%uVTPV`m0ySZu|SAKmyP z3-9YR*We1~=Qv!~Jdm>OzpVVPoTi{e!z?O3PjT+ILXrYK)*0!QADAJQ%cMIJ>olLg zfP>iyOYCQ$7e)(aA;6zDF= z>k(1prF1tj{Y4gv*j)mhI)9$IjG`!zmUv?fX5~7BRBl8VnY7Zp7vjK2$qB!g6q07w zLxf&=+K>2+V|wSyT!%$ReNtynM_~#5N=^t#K^7xhyaJhN4mKm1Kwx33uUyAjo62yD##=O?ot5>ss4-XsTSIkr*Z=kZ7I%NZcBuy0esh4b1-jZ<2$C;S;S#v9k`JI5>1 z?oyoa^cr`6_tj+UlX`&?7j!{-2heUv^o^Os-uCuqz0Z(7sk%e^BEI5K&o@BnT*OBb z=H?P}A5Ltn-ij!ETnDifv{M`u*i5{hA}_H24@MgJtO){TAbtJw{MP$Ut>=ctqUY zD5b$pCHe*F;c8{}@aFa=beszM2a6XN=g13G24{J_rhuvr>h*o+A_3TmZwf$x=Tmn# z4T$9@p(Xb#Go(0xG%+fO|AXcA0EaSf$tc@MJSoqf&t zr2nA!fiRAG$S^ecV+}XjYsSZ7*;n7vjh5}{2n_XYgo#<1lQ;OtQzK{%Q{>A1-@OXI z6LMzqaZyZg&YjR3UdW!tOrNwkD>ATdNufYlpeIjxWW zo`81r9{HN)@%SYBt+qbjrPl!Bd($*_u+opjU6I+XwT3kJQ;cGygBeCOHGgfXZSdX%vcFOW(~EuR*h>ka8KQ#Y4fL zVR?|nF=9(To=d;F(?T_aH@;i6UTk=`mN%BMpwhiMmVK-ImWoECH_KYM#cNu$S|uaJ z#VI6Lf-Tpcr3as3@)G09Jz@-czj1dycLK>3bAU|NY~CUM=1D-W;(UPh{#ePh2!e~` zK1s~$f`BL*bJ4mFy4+Z}^Skk)^1Evw^@5y5LN;jbaOR|gy&rMyBtUDQ;Af8Mge5_L z+Hm(Nu18YvBaT6XE~7Lz+93!6C@ll-G4walB*laY@>YP{U$d4`mO@7t5$rPYlS!c| zA?9aJ-Lq3N)K!`4q0BlhlJA@X)~BVO;;8RAm~4Jlh;NqA|>jG|edgT#exi zLS%n@=cAy-?H&46JYiOCNS^Cq{d&wQALVU4XRiOGay~ugo|~l(*ZTJHQ?*xL9Xz6wtlAS zTLyGnONqM|B%ASF*cF4i#8L3s3zF%hVhKzFmbwPr5t{{_yAVMTMKS=ye4sT#Nnv?k ztoKD?)HrZ~j8|{r!_>Z2&C>vfX!(|pjm^g^T$9TE2Tf!1Xo)ugMQ<>^dE@@0llit< z_2$=1{2IQFq`AY`wZz;L#ZNZ+da4N2Z*)g!mI`ybFG!KKC7B}Mi)%Fw?(x!ovr4jL zcMN}&JJ|e~f}2b1P=6)`{Oeb{0wLGLw4oF{ZnskX8k+c`RL=1PW#kWpigXQHdaJ1+ z;Z#khVFt3(N|0cIb0M)?z<6+9lSCKkEId+q62Y(pg2!K|Asn!Y zfN*j6v;nz7x%GQNas%<4fgUPPH=b?tw(oBH#L__JG=g^bm;%4oZ@5#LzSb++p(xe| z_HF5u!>%WKp^53M9@cUs%5$pZtR6&|jdX`&JL_JN?s3ww5UTx#FpI@IVz=@=uir_A z!$6rY*^+DzeanLux22O-Gp0i#7y98wqB_68OKW+{ueEo4IMNgw9c7a?Y|~uvWQYUl zuYBtvVL>wcA=l7)6iIX}^0pE-tsd(T6>?jqbf|v8RFW?b#f3gUuc>F&)jMuqu&9(5 zrAqgQ!&Ja$BPQJVV>epwfnS$?3He@_AODZ(rlVyP5Fk-NcmITTFJlJ1M)hD%{k%?~ zX{J$Nb>!qDoZmZn9Sq)pg4Li-h^^yAAQ|J)t=_?LMa#r{csm16faACz+pT*Dfu*|S zUpqRwSsZg5e&jhmw^x}lab10MI1*nRyV1+uC#CeH&AUQKyu^I7m}BqA{IQZFsE&qw zMRmTN4Y0mV7w;T3Rdm_4mT9#A#13I1f?J0|gIE!o_1QL&hB(bQaw&MB3-V@k4ckAN z@H9HnGiPn#SY;~H(Ve^pQoLMi{6=qC?6K+@UG55Tq;WjCemJe)$Wu?tD(5!o?3(tXad93p7o#MH+`<-k%w*@ z09yg*5MSnn)`bHH3q4tu0M!JX%Sqhl>f+-i5zRR~Dq0JeJk^5sF+DKtS2U3Qv~V82iqkT|jqxwynz{^2lK)9NmXsC%Riw78JF`knRiXQp+;YtDp$ZwAhd2MI#Fw+rZelwHc(EVsS*#o9M-jdIZU6}- zGb8~c2>`*Br68B4Cjs^_UsPcGSFBMYo(TtGFG#wavoA=~4A9P-m3tUGe;WACnpY06 zdls;C0nOmMwwzn$g}XjiqnowB6A?-_(Ja5@o7l8~2W4^VcgoW=@N538Sa>zQ_@y$E z{y&@w<5^W~Hw@Edi%ZiorPBy8$yTf_*kkcI4iO!5eH_t=HH1!|DW@%BhW%?3E(XqrXhZW*! zk)_03_Ga`8lPxgpjjE}+d6t+-p8~s_pT7qacJq3~HtmGyVWn*hq^F0j9nS1_!HMV< z16q;BfY@Z}FeC|kY&r(g={%SSgqY{xy+of=%eg{QE(kazjDo|z7(+$yyn&0?d8Fe! zy?EaSn7~~h2wmSW!a}?^nj#!-sx7X{&8RO^U$e1G{+E(smeX~~Y2eg9lWayc z4)MTHgWz24yk>6(Zb2MuJ#fUE0(z$+!8^YS7YU@=;bVh5)ir?uXWTv;07VS1XD>aZ z+FsMOO4)9D#x#o65ZaX&Alm*mMG-{oijMIzE_akXlEn)mhhpd0UpWlc;|ZG>D5fa- zQm>8kEq*?3df(m_VLG*Hhrc;276O18OT(fO9BvOW^VQ8Al4&+sr%fs<(YSC3rM$qW zchd@Mm%nLPJn7sMTzYUs{%$IkN~Ji;NxPiMTNe(~(}SB@4tF;SLOE0t6R(}9cXeOa zI`#_WoAYO*dlU5-XJ50B#(CFIH)Isa{1sU;_aC|B|2a63aMko>yJyAT!wqCc70-lOi@8Vh?R54fi04~KdwVt zEmfY9bXy7Tt&VwoBO^gU->k}st<|$bDm24&BFu#NU^|$1*PKo>&SCV*bnTPoUO^{H zs4TZvR2v77!rK?5yyBr!n&_WXhY!(3%X5w~*QXK(@!+dc=~Km43)kC8LrGM)LMc9A zg~?`KLE*0vV-YpCBY&1?$EtAQS0BZg*8VUz6ipKW{?8OE0?<)$H+hx1aBF&B&;DXg zNjy>25XwTjyv|B8cjO4CygqTPg_t|KajD1SQt~MS`Vw4WQol=S1R;2ScRm{c#KLAL zDj-I(;vWGX74+q&qbMlk4(HM8&KG}muwPNymAeyY1{*-@J_?NFIV-vGb zdXiYJsH8pdbikIjMYt#gtS0YD6kqmPrDJ$5X_|rdU~Qj$LN>95W^X5-IZQ0uit6!Z zp6(koOr0{SYHN5K*~cu3R+C{<-j%EFaNk&O?j)SE* zJr!!X`;bA^NWXSJ`)zxy5}G)!xdC^*s3={;{1hhPv^0ZrqTsfu3;8|D3+!uk$9r4g zEos@W4A>3(&i~5ckQ1eO$nYf2A_8e18`ezgsJoP zZe#j(=OQAR<%#uOX?3*eB#SZY1E|fhnN>wt3D*rqKcsao1wL9R3l{gK`)y;16eHgj zJiKd4Dp`Lz+}OAKF^Bquz?1-RfqC!*5a}5e$V9O6o{J)$;90E^ptCumN&njODv(_+ zJOu(L0hWb=y#S*3RoP)+ckY6YeqJBnk93R$o)@Ik%Y)BWJnW)TubRYWWg7fCac0` zTJa_6v=j4dN+*oV8On!aFSv%?gmD!$-9uiG zhTN~tOmQ*m-{+Zv8+PooFzopSUad^T5m(|JT?8zBm1;+(@FKN3E%sSr&p9AKs|!xg zK?ZvU49rSUb^Rxn@Pf2i0Vmqd<#>LKxdpZMdi=jQc(%Mc1L*@Z9qpe|n@G`2OE*Aj zFwlc*1o+7qs@(ys2z}`m1TY_P`vu8+;5Z2V-5;WEaruq|@;>{%`96 zdHF-wb$Gl{wXCnBBk#F9Mm7ml=Lgh`Kes4tuKoglJUk&Y;yTD8DRht7J{bQ&Kb@4H zHt1+x-{SAWj&hf#R(K+hYl#ztLHbAkFfCTT^{!v%npubWdgWnCESVC{ORt;E_ zq*)H@nQX_*Z2w&xD`Os~goTON3le6N*VDti9dHx8C?=!c5s4^s!39A7cYg~3uOA8k z^69}{SQ9}Hagaje*G0^^G(zA64fq~H(lHCNxNj^HWar0;DEG&gf>-zg*nSO2%kF#S z6aU=N02yjlwC1qSnWH)Jd`GjDOtYRUS2H%@)ISN)bY}aNNS;=ZCJayob^1 z&99`dr{sghKgG1wEZr$QMaXX|4BymJ{rvak5SSV$i%purO7VsAu!?G%Be%SzMAjHh z!PWbnUMMT^&|9|oUHO-M|cuxL@mr&Ajnm5;G~r9xKGef_NA_8UsUoR8)RrNLw1Vb-~~xNNup&Z=Vc8|ttEixazW`wf;R|1iLU`d;}H&v!9MrgbNvC&*Hn zz99MEbiyg20Y~EK|K9?lx=s5^HtX;oGfbY#z_OBtp0 zHNE^*?!N}a$A6;Nd%}tWznY?0BA+~mmC@FUE=V3qI9xvgie&(9=0X(D@%+5NtPAOX zx-N^nrVrO;Cf5szKV;uo$dRt8j{^_JWYXYP=06`QS1c|EdIui%g*4(4;+DqI%-R9g zt*fPG)e^jhwDP^$y|lrN@H@MO9|Cu-*FA`>bHDSzr+xu(&_OBUTIM6@`MZ}e41S@X z0LP#LU7i32U4&8kT2l!R54*s3Px%0gKu?b!aHn@N@HB0NdkihCkY_)Rfje84h=2fF zSrG$@XT-M3G?Xsix0xK2G@%k`-AXx#m28=6_R5{zkf?)DX)(B(B$q}r=@WZqHM_z# zs#cgAO(6$p$QP~!mc1kJjudba@jP>}~mb|AU-GU8Hx*Pt6SdlXP zF#Ig*P3icdP#s+q{VO5O^ezcOr&BX~RAa|M^9EHh7bKU4Q&K?J6Ud`t9 z{$imW0GttBPReqjUgyZ!I=>;|w}gD=sO>e;zW?$8mtnvI zq*9%0PZtRF`@1Xjd>c`S)nXYgD6tkqdJ-JRCR33)cWB?j#nTX~bHhmwtAFhW#=UJ4 zQy(ab?r|=kp)w|_FS4Ap%iMR}`>$?$C2RI!*$dM7y3p#*s3(E-TKK@;5%=14Za3bDxw0+Zj&)ju53V~rN(e@% zyaO^ro0L3`syZ4B2&b)1U>Zy6p7Vfud$ON%;q9gD zazh&BwZ|XA_#R{&wO4lqfpYc1U=R37pd01F^|79$$HZPubG^c!hS;stg7F6Lt4j^C zDq+iYbE6inepRD@jnMCWb6t`n2Kgx@@6oOdm%CdhVmH{E-z3UToQc00!l*1#aSqNn zabV`6{N-{ZnB2it^#VNQC9Q7LSmW1wlzoTwD()0!ClXKQJ~AF7`i^1L>LVf~f0VyW z@^F5SBr|=@L#(z+Bly6UFgnBNuVLq&hvKz=C|RpoEB+O99_i_jMuSH}%Fq*4Wzt*o z)wsOcn?{z*B)uJ91RrcDfycm~K3k*^V>5kRI51Q!OC$E0x5=yPXZIPR(c#ZX7A0jv zW)~OuX+zPd|I*in^ghLOMK+_gM>J!hV}OWLkYasOeS-}~y>&Ppd9hK|K&ocN5y8mRxwc3AM48@&GuHcW8;CD$CwEb9A=`6R0Ff|Q85 zO>AraVGvL48^0=LrD8-0T851Sk-x2}hq{O=i%%2fVm<4aqEzVIik?WSY8sZ8sGhRu zD{ccBA)J49Sqr@I0&|TJSYeu5Q4LlAUd#(po0Px{62+w{ayP4M@U_v*RI+-~H_d;o z(wd^Jw3AJRJvh)WpVS#*zBYkZ_=EmiYxhu#UvG)0p+kPgKUdFpy?*005pCWT^u-k? z+@EY{i=EKLJh#l4ajB4HK5^CCn=+X$fco`*Sna=pVB4>9VrF}*n%rUNQHkFxrDA{{ zrEfXZ)f~-<)b_2hDSuAs?)2>(K*~WDvxTsKMs2YL9YaPm^(3$Rq)owrG7fHus!5+$ zsQWjiYOrT6d4AE^douK|E7EPRm3vjEEpFR!Gu-&o>r;X6{Jv)&zODwZ{7{6+9#FxV zHLY4L>T^xP67$tXk~50?WOpsO#oW_{2W|doB#Gf?8l?BLf7)XDsx?7VQ(-7SWZE~= zV-gCd(AYa%GUbnrkg+k2Sjyu67q=nhWTgoKze@Szu}wf8;T-t3UDa}Bs2A#|XvQqB zdZ`DOyPye?V#?e5_Z%-q&D=DO7R$0?5{?|wQjoqVp{$5d!K4k(tJxW|y8w(iHF zCV6x9buHi@(sOB}K%A%GU8_0yfue==bx=`@9+)gnjnI3c!KQScY_64X+k@K`)SaTp znl$cNYv{%XE5hdE`*3I&OqkKEM!X*Ov)j~*=@pZH+V zM4MR-HBn4JmA7ymdpb5&;+eqZHgSpJaU|=iEnMD4>v7GuN}MAWI&{N|X8Su;rmFP2 zKybfv)kxz#d4W^tno;mksVu~@3ez4xhLq1ZZ>a8 zo0+^j;r{!IQT&Kd-lf&~1P{!yl^Ef@qf|N2O~p2M$QZRqRYR2e=+@JLr{N=t*J}nG zk|Eduz|y*!XYFSk%P!jwb~6z(BhShQk}4TC9cM)~!vu7Hs%doJ6`>+mMYkQC=3zVU zTorTU_67p&9gZn>vi@k5b>9Q~mYi;=5(*_yi?!VC{*^U1?NRI-+g`DnY>B8{Ck(9? z-VqfA2~nD_K4ZSA(pyHqZ;p$(p?2sPY95L*H0u~Le_FRgNC&*6%=2I7gfkb*y*rbrg>M?W-w7ZeZ?+pvp4yjj@i&v9%@{1ML|K_aIuy8BD#X zvK{D)JrSfHfNAh#I#gMimzSc4p9d(7)%@HO_cYD)kJjl6$Qm;aOS`1otcaa^#{Qm~ zl-hTB8Jp+H=wsnf;6R+=LXu5fJK`mAOOqsci)U~4%_=jF@t-DE%ji-BzX`I@qr2JT~k-?dDPzjIN~W zUHcoh721P@^SeK1ivD4pEeNbm>phaz)o-qP70-1^#tN(X^Ybzee5FfBjdZ0yWz~in zc>GpX(QT4SpXw|~>^>~F{E}i!QCd&p?@rl=|I7LG9pXORIpCSPiP(vR<>OP|c-cvy zC*#KBmnqZb>0@8nDtad5v8&BY^Doc1TJ40SE>>JEpIVvB(26MsM9ZA~WVkb=beZ$j z7)e?LSn20RGN0&}^cNg5xKZK@v^?{$--)1myjD}AvopC6O5O^+=w=V?Kp?wm1gngr z-iBjb@sr2?UFk5CcN|xy4V7#nvGP)PnVI-nWb|KkzDQVsDBY4dtdzZ=iKH(CcFB)! zS@?kQICgsPezHPnz zPmst|#g^L!W!qe{o@S3$)GsMtub=PVoxNw;k!s3L-Xwe|pPfyZ<4@YPggRaFElx4v zcWm};_Vd0et@o*sK3|1WoOiYgRDNWK3-Zh<^yUQ7YPC=zZ%q_Wx3!jXNlV1khO=`Wra6@Tt!V)7p!&H>6k(<;G78;N^d+J+AQuMFWLAOdHNw?JFnx zRE0Kt@ND8uhp^f2xoFoSI)~agAJKn(K9QV!?XaCf9Gh4Yh{SwMTSkzr>oYrx;j$5# zrph03%S~+QY=!R&k+ogtwx2*L8i>ATwEd92Pc=4+^}D+(NNUM-RsKj|nq<^W+I%2_ z-4~PLp5%K`+L@rcu~exoni9{N-AFT@-Z6>$np+ZgIC4E4Qy&;-(fa3mtzImyNb+ez zVH}qV6kqm(v|>MT5owSfQ+N6vp5#t$-n4*i z=HT)0AMLPEfcLP_ZY@+cKS%-Zr7#2)l17MR3w=_f?m>~f`{9sI_#k4do>y#bZTHy< ziO`3HJM@IeJx#2B-Dg!!X_S6ZnD*{4(Zmr3j%dp>jG$qc!r}JcmO+g*IAJz7EvTm< zlpdFH=Y7|d+`=zJP%+J9LTw{I^*e=~l_oK0l?*+!KdIZ3`@=FmmfWqyrhEkMC-z(q zuB3JVD|C%g3i@1U*vERh$=k0&)w*VBhHN@@?ZSTg3xJ@n>d`iZqGc;` zIc=5S0b?r^IA)a3Ik$E5$8OQYkeZ7PgGx!Xc47u|Q{sHl2FiF6HW&SB+e{(DkN6*q zg9G|(lEBOpZ7is!$a}~Nn_}QZ&GJF&E;m0ywkg(LP;HdB>&W7?&FS!*xoh54*F=p6 zizgoa@#!P8+eT#dp8ZgKKx?MTP9DeKlU4DMJ@+Tj7kpvr6|3P}^ydOz`Ra@N$n0xfS5FhxD2n#+`mDSsQLv*>oD2 zz6n5weJ~0AYp~!w(pcR5g5*NhHr+Ap>=+qPg_~uW$^tY{z`#-Ev~h7bi}ns9Vd(Dz z=`JuL`d*NJaqq*lzmtV+D9ECHZ_3{?!bMB zWlS&&rX&Kb9pe(439J2+@;)|hRs6@iY*N>KT`h?cis1HJd+(To?^t}IQ38+EWJ%u> z*i6YhpkLi!z`PbbQ`B?%Agp-kByr0^vm?eOWs_RszjP$Ev%b6j|sH0{YkLrORi({cZ4Gz`FwE#((QxmWGk zR&si0Tt7qY%=EjQUe@9zl|_?xw_g`__IJ(~9Sf2KNwri9erpbN z*UMgZiyM9zj`?!tG*xLO6g8+GIrB)ahQRI@Ub3c*44d6n%=@ETf${qNhtZfO0P)P zJvSbPs{E+!`vdebRjG^B(NwOS;gmSP56w@k6PPk}_8woR1OD)vwAo!;D!-$;d4tKa zcKj|1fs#7xtRwqh^KaJIty8@pw?9jTf~qgD_E<|89R`!{59{JY3K%KxNdqLZMA$I! zzC)OT`PRYWH|EKmqmx{4G8dG%%W@^%_b^I(=Xi-}B~+qT@JKh=O{w2;B3kDe=EZ(CySXij zDdIyUY=D>T44U(0Fsm9;jH)&4&hTGzeKoauyVoFX@kj9E_Z7v@`6pv#;;K$E@7Xuh z+l!*@=mCIj5jR^n4&qt&dl2@&hBK@^-51s){=30{{shX)rKjXi-&J~h7P&AS zPed>>l3GY_VOT-Tbe3 z9ZJ1ruHNRqSK6T2@F81H-V~b_le~?fwwt;(?24hI>MFrG=lKcdt)N|Rl(NBC8;au& zKwYu?j*9H)xOaIY4p(8BWT*lH&+@?x{$Z&lU&gkK|M+%y= zq+EvvaP!Z!|2#Ph8lcue{(?;4qP~ zb6bC$DR>H9*aO|EQk{r5i|oAtr0N-DlFdu#)o7xk#o{O8=}Pnol0q3x{~$iAaDS3W zLbDy9jc2TfM^N;?q{JsNbVH+3NobP&e2sr#&KPL%eJtlc`o zC+zz>_>tzdzdSSAV{Kc4Fn#%pN>4ZI-T8Sv0}QQX8hj%<+~5ew+|ZDyBm}GiEiP~H zY)jyj@UaDQGH>{BQlEo!-OhOV)rOz>$uSmDxcn6Ka^we!P&w_$bL^jG9wH@>n4m*f zQt_5rlUR~9CTns$_a<5q4z___Vo@-2kOp8Uq)EPI%B&^q1YK@OUXKjV4qXWu=Ak4Q zlDGGZrwmg8B9&3a6z%p@9M+&LLU5SdTsXc)205CD+Qa;FNZc#Qq!OH8G*=?_Q}Pi~bxLb0ewi zH^y#FQ0@7>GI^o|8Gv9YUE-(WWU6ws{&etf1F@)dgz{BU4YV9bz*e63?s$Udq5NPqDO8%_9PolYP5B594h!m8iv0XVY? zR`;PMv?zJ+oxl?df+x`(J_6IUOK~rR%Y=YtFg~(cIar#!F{JYKO zEnFCq3Yzrc5+o>4#rOtv5-Mg%18lW=1-M;sn>dCTw4RQP`HPxkLjRZR`&{QCL2K3c zB!xA|T=+tPM|59mi)%f9!B_K3w=9S#D@%$gxX ziq#0J@n8iSbC;q#tj`}1Q_)blKU0J&*T?sV)+zHBF9O*R6&-+dIBc9i%p;xoX&rEo zQp%QIhRIIcpiuo>;dM^_rQBjT*9C<(xYx$ituE-SfiB7L%y&`y5o-l>ltWz;03f|Bz)qqkD!LRv z%;#^*^|cp{b;?m9u9(_X4K5Kr!97J>lSz-fFtjLa+e#tG5RAHPzBiNl?&blqG}E!@ zYJPgrOnh;+o_F2Wb};`=a^H9OtE@?aSfYjln?wX7ANSUxe<8{H1Td*7)O1_sJ*B1C zwj+MZJZ5pA0@fXc8E-C{!Zg;wIX+Hu$ZR6BScLr0??fACp*@_!N)2pY`LGoYTJ!WZ zvQ7VIQ{suPs3Km#STF$`6E^Rj{9YwXY6mP(t6rj7Zg_B}&{HrpHyFsfR7O993LJ?F zOtK+CB4Lu#M~k5%2a-wyaUly7LSyONJI1ie z26tOV$I%(2(-6!Q0ozm>bizsa8hBhE4-%I1`;mU|hUULVKIpNvr$G#qN?{xL$cF=+ zYEXcQhxN?MOZatdwj7)fE_D7*|SH z{yQq;=>x9G^91})gIw^|eC&dODYayhA<0uPtrb2J{as0>Xdym4M-A|M-UFJHKsRb; z>^PMo0N0Oh`8LarchaiJ-|3!d2;?2)HE?R>22%=KozJS0&a>MG9*3bOBKH-v+7VRJ zrO=INYVMTcEL#Orjc*CIBzTon1pTEwcs1H{aRAggLTyoYs7_=YHDmWT}t&`h^?Vs8>9FR^}L)w@>Qcc-9hKXTB=58f9ia z&q^WOu70TX&^(7%1t0IL!lc0H93#Qm1oH<&(fa>T*yaO)+=8e?f$}Y|C^@|WS-xZ^ zy2ZZ66N5kgxPZ}Ke@xt@2CDa=cp(JR{7-*_hi-F9{c3u6?QJ_>O=NC5AT!sm>vEVf z%RT1@DE)^Qz6o+OMbkW?3c#k~q(D!+sX|8FRv@0e2LPrJSd7JNONV~gBURXoPlQwG z-nA#YMwI>u+}mA?V#o(1CyFFN6uk*RQYz`>fqF3m?g8R(DS zogPdkntWdjoM96HIs-JRT1@H8_y;*IXo|mhxVY@x&&)>YwWj4I-xT^13jF#ki z+@6r}T;FpIlP0vLM2!L&f0i*K2K`{}LsR;Nc&0bYO@Z?LGzXa$p$-C|!|2aW{bRd4 z@}qpzda~=swW6cKzRGBJIGOYWXS%hZwIX%L#=Px3hPjoFLo!ma@@`0UeL+)3?0+Ot>wT9D0 zh{)n#E+lCmXkCR|mXc{Zd+3Jy;1EOFdBjGR-6@$Uh4Rj_?L}?*FG_?Mt!khB)98e@EvGsrT&&N zCu-`I+sN?|k}9Q72k+#)P(n+=aArdI6y)-lemYt{J$9tsi9~F2-3WuReI-Y~SFG8i zw0qeNKS(1bP918U@4XvSP%E@-4gBauv)L0f1i4&dHv)8X9f zl-6!0d!$@UNW~|CS}D;Y(T0g{`kD@lAf5Pq)|RJKee@awmx2Yc@^1RVR#M9IKQWc@ zrwukswpIsYqv8evW`MZ#1@dJXRofVPBJ#9=#Y@YkJ7(#E_CgQNmJcy&e?L}G(zcf~ zmo0C4S(d%K_OULs$_OvMB2q(H3=p0tY4FZV?QDy1N!{w!uo4ZovK}23!J`n^e3Edm zyn4l-p33t6`zkX%^v=Kc%q`M@jOcxS`(Tan(aYR%4bWGT>^fz4=bc5EUW0BWPfXu- zbmFI|jQyC`A3>4R@3R{-mS)bZQgDx+o$#CLC{Su1N+Cy2rwt=pck|yP7nyuMS}#Dz zHN<}R@Um*|e^!#vibc7hnW{WPn!71eFnh8*Ayoo{yWI9{#U zPVV1SEPY+J9iFRdJm`D_>~~9&J{j*%VhPnj?g*45rAK4-Xyu(vacbL*s`E#XzgIeE z={95D>#CwIQiBOe1Cjz^9VTt}p|RWZ6b%sc-p5 zjAesU=>k26d#q{2$K1od9pEf1%x4(TK(!<0L zUX+)c_s$R>&KF zL@jf6!nSOTjM*E|-ArsByt26~x>FIx6Y_?q4-`GpY{dE9KlV4#h0QkEM2w!w5OJ;M z*L)EVR0Gh%y$4wBQUQ?D=w&EVX}m~NcB2mT+@p-SH`ekO*xn1g#E>s!xXCLAC)b5B zsvFWJAqH+aLhQp@=?n8ya5E+V?+jpmvgo3v|F?66N4{AI7vG0 z`4+#GUqw=yg~=Z6-}fZ4w@(nRPj+=cNb`J}0qaTGOpT^!+X1OPz9ZMGs>y@HTW+_0 zcMMA-ROTec1)<(1=DjqZll;HY{V;`s5rgn%L;2k-hB`4$Is`8!#UH&6KY#49TQnjt z_KL?d4!eQGStu*e58u32Muu#_t@;?aZEM<0Re}#iE0sx4^W51m~JT5y*9g9QD z^?rdZ>o2H~qkgjJL}rF{GEHA+HwS0gY%ON$yQ8L@8GqYEtK1tPkfSSzz?uqjas2X* z&H+V>P7VWC5Z)gn`y0adPH!w7-~7=H5aCb@^<$qz>3qG=K=EFQG%P01y**c&;tEsg zTl>%s&WX5}2~_BTLnLw(kB{u^ z+Wog1DSe4$n?BB@)ZJ;!lpLqX%(%SyoxtryuNcaxX=tU)1N>v*X<7f1b<9flbMkVm z75#Wq#TU6BQ8?UD|0tHI)LM^xYe}p6F9Q=iI3xqjT7bbggtX(3>7Ew1vDAeS#A+g|t={htKT1sGgO>2~X5g zy(dT%kK>`c@VNw?-??-*zI^&ppjVIeN{%v^aTdwZTb~EnKT}GD_Ylz79I?n(1EPAf z^?d~?w2qCNO=3{3T!(XCplu^te6#?}2IlBr=6ICUeNN2Xzs*EI(!1?=H|0`57Q6(h zptL(h;Ot0!YPbb9*c@9Q`-;Y#K33@Tjx{?wU_=X=8>R5NTxm{Ovv+93*_#cSAZtBY z#Lxj}kf;#dyV6J*B1WYy=^=teF3~%SFhcx81n1r z$|@tB0V6Gsy~`C7{>FZDS5Ugy9y4#9Q<}u3}cjlZWzIUE(nlHeTq_ zlI>)YUx%c7%#m6B^+KyuQ(%>(o<^aO*N|y^JQ-apL5t8ejIOA~e$v;Jfbls<}*? zlX&zuU|9>AYBq8#`nX&w5T3lWwK(~~b#5}TA+%qGwWW0=WlBb>c33WfE+zt*KX0Qf zM1f8kyE;iT;b+TcpSgIiJXkmh_%5Lkf8Z<5QLc^f26q{ekOrF(nGO%d^Hjsh2BiMA zUdgg%O<1vF_Nmrv*-;53N2kFRD=VYAYw^2XAI;oaMVbcFaH4BBVz7QXvSq z*1R!(wkPJL!a|tBk#JV$a^K_-006n+l!K?tfS?s9%SUefy7WRQwm~_5@SLXbz3I?M z*W>=Ys68Z6KkQP5n9X z%5-#kJ(ZbYZ%;my(I2g2=}t8R-i{KvJw=@w4x2$mICFTF|7X=!K=`QPRBtHNKO%+7 zgeW>6o_f3A$&gWGmF7kgr_(w`E?Z^ik(IzNDt2&F(YSu|*=;;KC|lG#=Qxf0<{V~{ zmTv0=&kVzlz zl^|TIh)4=^^ZkKC8P$xw`o7ftFZXREKjC?M3~Z5bv5Zu>XS~!(hq}84t&RvjX(*d$ z&aFv+tNv-Q-ccFkSBh=!e^!*-ND*_)#yS6{K>3=+gO;Xo|6F;y zAtq@W5eF{tXF42WO?#20$lS{Jv|=ld-{UM9e2dPFEzoRTE!bQs;~>$we;2Wx7cO~> zFyq1RA+q$xEMqt1M{LAokbLVjmTs|cfZ=@O>Pj10sPn;2GuA8UgJYkN{>t#HXWr## zDa^0`#=sFyl~o&2N$|H_!cLTMb0rhJWrh;hGG zDivT#(CLsa1jQ z*Kf`zHonowSuaAJilztgJ-Kuue;oOb8X7nNy2Y;D@8wP)F!zD>{1|~O5dlG;zE(p< zwLV6*Ua?M4Z|{!}K+fU7$5m`^lwkn07Vl@Zj=X?^1{yRorqI~aAPcZ>My8^*B|8q3G9leHc0e+qfyE$HF(Y&#( zf;?@B`-HJ}Il0VSFv|~{NWI)2hN44hWe@pE0)j#_7Jm}i?SH$L)4L1I7`aIyDW?^3bTQ8UwRoAb(&Lm8~=ow1!CP^IS*CoaDTjA-fy zn6DX}j@^>zlpbfNh8u{8`hIx0jL9K05b!C0r%v<)TtOjbg>uCDC7Ty3N>)&mMzA?X2W!}pi zyD81K_b0>41#*uikkXZDC4f=kkc~V}ztC^D7A<6qdTD}+NqvcihGj|JGG^1*5e|J+ z7fe2N{Wt*`N@!_d1?e406xt&i2;yU!|BEchZU4 zZgqZ~FYDTj`{(*E**Mz#5L?xkzdJm}2y@Y3?MepFdVTXBBbRf0en*Gz^{t%-R5uCXnv&*x7k zT?;WHOgpd2N7ihAbyasV!;E(BjT0%P1p)%E?@eQik)%6MZRcxqR9Mvyh&wEt7VJ~? z+%r-$%-)q?Kn;O9*fjQygrh*2I189#Hq!lv>M*1O1yTENNPJ>D=HuHB>7KS>%L)^= zbQ_4FzzBe(I-n2m@khA^S`SQOY8ogNM2kQp&=~XK?~r-kQ!t@dbep&iK_2Xbz`Tdu67S@{82{pZ794t z8EglS9+I zJ(!Fs4^XHhxa5-2rB(J%&eH=9M}uX!jFp|2lXaX)#u_6^`2EAnT>dGoT5}V5KZb@< z3k|ea=X8ySU6DKQNl~mtyR*xlCuoc?#n50vePtR;!o~|54u(bteX3KVl)+>7n5U9VbcofZ6jveM1(aJJS+$)m1 zwR^F936*wf#?ge7pCkCHmJNS7bR#jy@{1qM0DHLKyF?=D1vHF!_!72KXwDHkW#*8b z_%p0uPRulyR3#{yYsffHcpY~%<#wS;ilDt?}U%Gon8`;H)k_< z{2wME9Hv80+MngKAs*3L*gOaZVToy6Rmy{dm1$6KQm@e{%W}iAmSEo);BSzNcXnru z9%sQ=i3hpCahYOxr!iV8gv19J*Ea)E;UmP`Hb<8 z`zD>uMSbTAP42D9EYS%C4HXupE(vtt2is6V57xvz`e>_O-{LPHPmIc*9sNfSCvfOL zWuZh5u1=j@y!Y~zN67ocE6P-P=aJaBLlL#-&XUBYt2ojz$^d=OPz2T!S+6ko-XvWy7Q3S#34Z4xaAl3D#~YvAz(4B3QiI`Ynsx6{NjT4N zdzR*U?0QrN_{ITdi-CbOYH{>pfMz*F#vWHwl-QzGgo?2&8w4+zM-2peW@kXsZ(?*Y zVr)h<4Q?u)W>D6~N9*`BxQ2=r7qRJsOWPg~Z>37CXr5Ax=oC{5(9AYE!onk3do6zA z*Wti@_q)s!OwYMRtW#E7fbaKr5P-YDUJu@EE_E|2mfxLRkBxhUwljqvG#zC;ApW0? zfei-$hkytV4~O{A%kUrmSu_5*9FUN4QK)h7I8pIw#0dzgh`2riY3ctN8&LnNfCNu# z1Gn!ZmIDZ_p?hYd|54u==hPfsRfX57W-H#Nf?+3iHDW#c+SI(n@7~-^Mn~vB$VNiO z!k^&d{jtOK_N(5!gQl$`TZrz;@fFDX&-Iht&ts3vA)Zes?a|ACxcB2xGFHRDNAd=~1ttg1@B3PwcJbb~Lf15^v==;sK;x=LQu6 zSo*(ZA}7*t*Dcm|p8?x-FNJTlUaS*W4r>y}hN(&B8R_!dm)Tit62d_Xvn%XLP31n! zN1!N5mQ9dZiQ=lS03^30F71&vH()LD4FLSWrVsV1H>K?bQ0c!LVWZ}=wD+b&@>xjwHyd0(^i1YZcc%HvsnA6MgQj zZUbj{RkHPP2a7p){c|!H!^B-T1BY>z6lP$^cihe@2cN1#U%cQxbj5Sd_E=^}(evXe+T5zt2U)G5)S1CD~5{%(C3WSpfTQu!!9oM$Y{6bxOg zYG+qQq^+-~5O#Q`Gb7!DH4l%8uCRUE2O5&t_wy?(iSX1g?J$1`$h8)jq0F?r-aV!$ z{xupkyTW0Z7zgPi%EQKpHgReD`z5)V6`I30$fk8yaa(>drH?{yIrmV=KR#H!Yl#Kq zhew@CIaE~TTd@z$jcG!63+tQ$fN{t z5ACZGx@3MmkRyRlL+ds5I}@|Hhp2Q*r4`Tihd8!R!Nj{K5u|JL**iE?v@oVB*sWAx z1nd_BDp)!+a=MNZH9hpBu!QQjxKIj4vPxaUHgA z2~7u)M`_P2KN1x%4<2s)xU|d+h7cy`*HIAVn^&$4sm90Gr>9hKj~=x2kp~6g>V;T8 zCi@?)J3?G5!X#Y>>qn6$Qr8!4Ez-z|_#FS7F8B?e9i`hjkF)^Am&Jzdv3=z&LE$@x@8ee~(bmc-7b5sq+9U0nLQbld2*+{$@$! z55D4Wo)Mv2B#oGAzOXpWAIcch0^IOFrLt0O`L4)qg{~yUece}E4njQB(Ydl-9u^nM zJ$t^=(d^Ygyf*%d*CF18e8%y`BKr)u`+yU5z)ho{@lYbdo2{k2*D~DJ&0MxwkPAs0=oBD<66W z8ij12pTgrBg)WJg)~pRn*58F71icdQp2fAgJxsIS$OxCK1sE=yX zttRKjDr~CL;mmzLSI$>E^{a{Rq*6dk&JCi=>ulvt2BR_hf@h3ChspFtdU)Y%d1;!4 zWp)6n$N4y4!vLabXH>o=cj5-M?~YypYip$9((O_z&n(_vWLBycDHlw`8#y3DwC)HUR z%a5Q(BZV?I(y&slcKa$z58*%QVs`36D$u)wTyRsSNE|s90cD}*mYf|2%dUO$kzqzL zM=KbWdZ^YvB{3bIZ0#4-Q)~7xKiHS!t2`1vPN&2YT033KVGV4Gv4bO^Nx=nJaOIR| zK$YAX*a{_91oc&zR}ZlZ`+9>H#=K>!g%M&4>s1r>n}qeN!^)Cpe+(Z~6wQatDP|h) z?1ey z78TcN6bl9!!?crj@%GCT^u#5pL-nbxaJmFBB4&}y#Z)ux0CPem`{!hJ`B1%BQTfS z9+-CT@L`L$S?D~mGN5iM;EXaH3;kU4=0|#Z$pniXOPd^xEB9yBSfEMOgjVIof*i#i z;JV?+i)jndAC0O?sK8ys^{4P!JPk9YT%aWSjE^C|4Cb&j@Hl&7P2p_Fs~iC8v^^I} zUE`ip-lz@(<4DK}ot}YEcG#m70FKV1Eb9Q~tyHzJF;kSQb7OczUJJ*v!DCxQjz@~h zMhZhr?#$DsT)m^llM{u3jA|BDfe7=Xsio+rVdl*c_KwdIyRlm&rwR9Csi54d{!f_- z5T{+kKMB`%e@@+-41LPgRaJ*XA33Ng;uflVuo3eKElx^G(q-jtB$mVqV9?jUy--_y zve!H)yE5ZlQj)d)iq%K)K-MczT;=6Vne0c4C) zE}EN0y2Tp?lQ%H#sa^?|pe{Q_lB7ib z$_r>{1p7qD6j5h>#(0kuG~mw^$(B`~%9vNGJ_nsZSgPN9dO!u|&Lgfq3wX*z=&Qs> zgDl^PWqIoS!anU!Z067`{s_kI%P7P_#8a3_^+oFj_Rz;ddTdMN;D5qy&K(#-c8Ir7 z8WNi})(6N%aMtw-{nR$Ttj_K=kIuFAIt{UTQOJ+LdU_1iu=R!9bmq;qPt}@qQq3GZ z(|rY9k>Fqpu}eTt-9Lw;8>t>AYNzf*Bc~4bGzyPz0Kg4*1nlPWqRl|5)X$1#*Uv7I z%~zUN*0EG6K|sxO9wO!d$W~w%&26lZ=J%ywWql{T-Xl%#>%VAgss3^k; zw5!;$Pa%egvn(qvI*Ipm1fQHHG?4~*jp|3xJp)8i;_t-Ixv&UG|I~b&tDv%MTb8vg zWCM=RLr|0JF;?DlB=S~oZiDuFW#=3Mh9)PYPkpLrIy2i@>Sb+miJIIcP&%oIIza#C z+sWu}NM4&=yz40Yi>2jOKcPFRq;B%5{n{db*99%A(mb=pjFRNVeFzWha{C&qa2xM= zeHj|-)on4P`HIfqu@_&td3?D`@N~`Ge}AWVZNpfu(auK>l(oc;x0=!awYHEChvKO+ z1zTd|PIv=+3Ff}Ms^ti032=SxOjs(gkHInvzA!cz9sFL6dCiR8Ng#l@ z5#`jWgd(i*gt#GSVO0#7KCz>#T8`<1ZgWE5^?JFAG2KQw5Yngbw%wcIh79O`*GB z7>MN)4+Wx6t2m|@Y0(tX`I6^t@7jZ%may{EH9d7OR6hSir#omNcvlWX>t=Ok;7Q+jg#(i}@ts$8A6PKAp|* zO9sNpS4x6i{5Qbl#R8rWtnQ4$&E>@_{B)vq|FP3Aje*(?vAZ|;x6KexDTdZ%(sh~|_ysV40`P9j*Mm%A{?CV5vGyNpJqfmclD`v|&fxm<{FYBM9&0iOTV&rBU#m_ zU0SI~S3gk)7Z{{;3xZsvQmJ!4<8?-efbzjTff#1KIAJ3~EX#9McfMI<7MKz77^@(g zsvY<)91}(=&tDj3pQdGPM zRIC#Ag*uFSvf7x{4FP-hsf8cgAdupvSctAMoBLU5O=ylI@cOSn7IdX%<+}=dW-CzB zoA`(!e$)Rv;hHHA@~BJSI+?onp%IXMIiZUz9`O77#04>0A0dzrQ{~w2yW;!D>pFkT&>KKG+fvu=D8{gdE3)%!CU~cQ zcX7Kx$taa~WFbi1+%Sr5HtEde_Lj0<;%+_qj;wYSV2MqIXYrB&$FfA6iaAnNj3@Dk znCqG8duPJv09wLM6lXvwzAfrdEPlG%&}2R`(^}$zCe7?a2TQLr-2Y_10VFljw3Tij z4zOypYse&*hXRC9$*T_STm3kai;7^U1h}H2#FLp4Ip?bZfHwe{Zbl}bit^^6p7~Zz zF$>*2YbHaXc#XYSw}&|^)A*kz`U!qv*uonqwY7r z$b}=BoukOFQJ{)h+Sf*HFX1-;&wfP{Fyjp{r#bz#`=*JS{;rJ?Okj#u+e*a1O(llC zJY!CF$63>QCb5=S2!oW1-j4Sp)dr%%Ylg*4mo3hb>FA= zUK0Hi*(X}Va!#hNuKy0`3TVqlx=;elw;)3+%VaeKy1px}D>=5`mv`E`Uy;3sXHBkN zM8oaBUx}&@8$_E4GdRXH$MHA2dnUe&&9Lt>^yyTKw^|Eb zPg0p&rZ?@~`v`aAL2^eO0z}oZn5I!Uz`IBK=(p5d}_OvVt3JO8#n(mga`N+nqHk!_*Wgq*=`;9&sl1CEWYj`}t>aI*LIn0z-4t!kEWc zdUz@)WDZ%`sYMF*BtLxX3WYw16OcDvMcf*%jmkoxr-;T9cdjq`;h+zNf5~fJt_C*e z*+m>OCtaQjhtmv~gCJSXFv5VpQ~u}+9LSWroupK)y45Vr>;Wt;HDkl%O!o_JG#3F{j&sORdswRmj_Yrlw2c| zAuQrGt>HtJ@3;8FjVfKP-x=zKhUoY2W1pgy(@n9vuZt|XJ+#*r|M7ZfcdSO`{#((c zb%i_my><;5+kAC3Yj7TVW-sgE|Vrzn+2~#ohTTsm#U;)Y zvD_4>ZH__UcQGm8E*!V!pS>>?r4JYTjRlmWm3mUgbmfGG%LDOU<3lFO?$EV{F~|4y zj@JICS8FX@e@-Gl)#(a--d{OtGE9wctu8gta{^ty0ZQ5uUL-@mse>0&G5y&WbM)MI zKxOqCL=~(aT%+Go&W8-=9}Wz9+_mnoIXbkpVEmsCUFSaBlNG%I9{84D$!aN32bt2M zH;I`et_??~CCQh6x3;}JpHsuiRVkfS*#_8BW+24Kn}#gn_UY?=I_Qk&!c9$04g9+q z@3te0%44G*%1O&d{Gfa$kCdSA+sx&Em1hEmYw&Z%imY}cjqJyHkS6qxP$H9|IA>HH*3=(3;ou=6ajz%+aD(F}9_kI+5N4VV5 zK+(0a*yMQBq5G>vhRA?!b2vJKVq4Lyd;g`%?eB5iW5wE9s}&rNHSamj=6MN7I3Blk|#&{LOoNqbr8G-S$Lh!Ie)a+Zjer1HTsf*tGHaQ}!JT zongE7y3BvK`5|Q&m3ED3ua11kLPI3q$$CT0lKF`#ThA)#Bk8Edw>nkZCmuR-yT zIkUub$g(01SJR*{h)vfDQ}s%Lk)p2a7W(r)R_|x+m_xr~c+!{b%C7BIIsQphG4+X^ zcc3&weVn&NMtbbu=b1VKyI}ZCx?L@A|LrrXzsMJ)WuA(**EORj`-V}ME?s4Ihsjh> zWzy{X-C`EPXp7Wu_Pneokl4!!B*$>d-a0N?*Ek`JvfYfichpuLv9TL&Gvnk+ z#$0X98cRk{At`d3D=n|GvQ)g|!#IaHOh#3k5p!t{n4WQPdDa z%!}7wUvc|#yVlbE+Wj~cI3z!sd0cI=C2eKa*`cfGsns)rqu7rvVr8G^k5-eH%av34 z2ARz)>XfDnwT-ZVe>g(?nw-x6=6dUXs2cm&k(x@^Y?db7Rz7{RFue4c-0HXgF~tb` zol^GesGq+`MbyVp|CxvjL%ZIToeqPf9pTk`vJ;j)PY%bD!s6Z5qn+H1*rHK7k5(k3 z)!DRW4873p1aHiy%MnA~gX5|W3@oLV@1IS^&p+o6g{pAeiUfFFb!8lo*$#3E^+rZM z#C(3prrlbS%WZ^x&T(9uRLrnU@pIz*^`SYvVL8eZlPp&0_Zq?r{c?i}Wxl80$V=tp z)!(lmJ$$ci!Sa{POo>N^yn3BGu=sJGyrc@hGHrfyenWZ(Y@F6mP5(mOar%*(sH9fF zf*{Ar;oJHf0ISA{0;cn!xU0W%iLmKryk7e5bta!$TOX!Xt4MMRuiIAArlXlIJa{T| z%*V4*5@8n9TxO2=w~Zq8!^+NoMjgk(X>^0~=&`3_jvbLSt2IAMLA4fRBK zjbI@u2Ky=|QgtLF#sO{NC|1vu?#1h+%lh21?6f=K=d&*KFr~pj%}r49|B&?6VNL$u z-x#QrfrNB-NjH3m(LHh_lpdqIQ9zXLE~&wQ5o03-1SLjE4j3RPB{2}BL!W(r&%fJs zZM*m0eRj^Pjt%V!wZ!8OSM9<#?y*d$d6^dt0p7Lb(?_a8)H0lkGg+~z%i!2`YO z4se~qihC>cRI-%f>(Opf%mX@ZTWy|VH)j_{^RGAHyYIje~aANQ)!NX;;eC+x!n_ojt%G7!Gs+sfsXi<^QPWAN^JdD z*lZlV1aGqZv!u+h;@0@WArg#IdL+==m__(oN#>D;j9U?tB$%Olm09*qx1FrSpjFvt zf+=xV*mf#QMt;5+y|drzoQBYDEw$tOLDSPjF}Nqw(LXE<;K-$JhF>AMtd%qdUhlS2 zGn*68+CJrto;Rk`Gjpx50#cl7ldbk3dtcLNB$@q@8L@D>E<^fN4bG{=X*i*?eT?lHq#2Px7*T8^cIywxWW3Jx=~+tT1s0pCMd zojO|btn)|VpXU0^E9=N5rkt^srP9+EE}Yl6Cc)6?TAjo$ZHOu&93z7~kkFelMl6lNh?I^gegAoS+G#gAE1B_)z2 z8gD5)Xn5{^Ft{D*xx$A*4<^@`cX)ru97l=Db7?H;`Z<{B@Eg5D3r$@(&y19tC{%)r`(n+~MhrP}e z{&0P5YH$9lhy?A+FvXByWZIrrpmfcG&(4lUvw^0j-{H#mko8(4dB=@fg(&i& z4ym8l;}HQ|_sQ`uVIQR=aU8DEC11C8o}tcy(x>G32*V!z{b0P_L}ka3|z z?Rka>20q`yDkeY$XIYn+^g|w1PRf}VW3&4CO0-{5QG=hTf1}W-r_3C6HOa;s7CO>P zm%8kgG$}smO}IMJ zlB^CF8!0q!pM09TShs~ehW4qcXzKjU3xoK_MiJkV?tF47WfnnC*~s48nJ$1G<=*Pq zZNz;SQg#EM9$vJkK2&)iK3GJo@{b5m^bW^)C&P@i4r7xlzfW=T9h=g{FD0i5;v47c zNM*BFf?Tv@9WUJ$W;XO12VAApoXmEdRUG)W3f;fvg@dq z>0>@wQ9c=cbaaMWu3GBQJ+4nvCj5o(^o@VdccdVB{TbH@5vM1 z0OSsD`{T~lyy_alr9kxDrglHxW>aU*Dc^!bvdc+-VxjP-gTB zqm1>U-Km~^%#vHRIs7>H-uLcwHYo#c&dN@oe}AfAz^v%}fz%O7YwLC+ys&;Qw_XFc zq$J$hqVsKismB7^M1s3LL768^FY=YWLcw%CwL2+KuPgK>FVhgqb~@#ogY##6A2Ru6 zmkPyq&KTA@v=$ijueoZ)Zj%?2USu0{K~pY)0QW=7b? z`RlT>#$xQ=${-G2M`wiXBq7%CXf$+Be>j!P(}Z}6dgc;p+x-{B0iBEFdUQQ++oe)- zrl@*4J#X8|!Zp6H*az@!S9KLHT)B(pDl(HQZ^wt1%xg8wx7nqGSKmnOOXXgijp((;Rfu-~w1jE- zGB&gk6`UupeQI_Zzv$)syvI;E|B!bSlov6>NJ^%Q+ByLlyLlV9g_&!soK+Jr9fMQy zI6mQ~#O{iyHTPPuhZD3Gahhf5{#>z*JTS~Xi02>Cs3qdmbWssDY9$nRec)h>4Xd7! zD$6vP{qGN>A0KP5od-l20PS`U?U3Paen61?WG~qEj1s61)hQ5eU&O>>BNb{Bmy_2Z zIoZ0BZ|l)mwxt*S%zX>$KQ-ygE$;o&Y{snR20B_qFFf}c-jTgG|C)L7ez^_rj8-&wfx^-VACUBEg!cQSqnz1IZUx z6n-4%jq5Z*w&qx_P?dxcrs-dUYt3#8xV`ZwzXd-1Y??H+ZJd9WJS}0oX>KiCE4O6p zU}wEl%vObQmq9cfx;Kotu}2(N^ESZCkekPsBp7KU_fryDd?4u)5-4fmY-NqLzMBM-zGtwCL_W!Om1?_~6 zmSl@F3k(1Q`~ytWt3IAXg`40Sk5s>9e0DdYloKE3&p6rrR>gs)de+R=%~QfW$wgvN z{OgvO#>&Ody@cgr!_;F69NtDdYj`!TLjsmj;p>og6TOe{c(z|O$I8Gao5<64n{RP= z3mmP|7hfybdoCgs;rgre>F`BmmBgZf%x;}In@5w4KJu_|i8!KXDYyZx4KA?ZFArN0 zNaF%~X18MYI~2M4RICnQm5#NcBy2$h6t7I1Aun>uHnvowy;bbF3LsJQ^L>O!Hli^L zgbLd2W~9lj;YE+CBZSy#UEft9%9<)_Yh$N2a`^$Cn+$kaw4Wd+sAb>x*Vy2Zrs5rZ z;G5MV3?i{Uy43~2nPA3x!86A;7jT}(oXo@9i5R*t94P`#-r7oj2VW+I3C->?%pUqXLL^7OWg~`+Zp0edD3&{{)jK(%WZgji7riVt zEEcq`*$v$iy(iuGa?8k6LbG9wHjNf{HIdj{DA<4=3=%+pd?R49^VB^4PowCZ>3{IU zxyc%_AvDktH4|t3DqTbABEs6I_Y$=;*PM1WS!!|)yH@yt{kHFEJoJl$-qRv(Jp{ot zUBS`!%j2YNpFQ`BcZUFZ9xy#9h7&NKS8-r0;H2zM$!#T)Cu*GJQyJA}?! z`U<>I-YwAQb@CUpU09l{P|qTbc2N^L6za6&!x9Ez-AxHLTpI`~{2&1Xc4Zl+I)Jq! z)y(eu#lyMc_h;sDLTo9v4ND293s`J{u}e$JiN<^xvp*W$Fh$g8_N!a_=wqTqUBb!! zyN||?2z>BNuTi(btxlZw52NpUWv0@LE&;lQ*5&0eZdjbwtmXJm4X_XRO~&9wvSUYm+ss!{Y7tK8z%a8sSSQul_H91~WhKOVY|UP zEcW$zp;hWCOia!4m#JZNy#+2N#zvC#R8%5W#If>4+VgHy+#`y!IPAu^Vv`oNePasI6Jg($*9bFKb9pw`xVd z4Sg?SLUO-+rP0uAr#0@hJQZpy(WMgFXo5x~5Y)TY-G<2?kUMC?m6o5fMWBY~N>*;- z;WgPkxJeKHXvsrH<5$bYiN5#zJQW80MxcX=!#8w(sPEn>Hub1u$$8rL_YZ@W1bE?| z5;2~}xgWLkaSmq=JRWj-tT3uOAdmscH~>Cw;5mnj&qmFtUsMu^!eEDP8;0&UF5Brw z35``70uL`JHK!8x$rx0FNP91)lJf=RZZwOb)=-Y9>`@6u^#zto1eim6|1O5U0j`LW z6+&uzOfT@Yp>3o30OEt48(f#Iwt{|}jamie%p9_I1m)BK>^8U3`+OWk=VT{gR`U`b;A zRmE-_x*_Qyv1a^ZI;Y~Z#BS;U{T?Xs71^eeihaVNzGsTp+Llj5-MB(Zf-WHF%#==& zGo`8k3G*dos^#A;;8_wmIpxpjku?KQ0ZAacd@RJ%d|$qhibl!_so!NDx{r-idQ<-S z!~UCaCL!Ue`{hHylk>HTLLz2+C_40R!Q_7s{ny5Q`##soM~jBKb6iq$g8vD&h&2E3 zf6ylQl@5xUXGb4YuU{u0dq0$%)nABn(Gh#D z%sCBwJVU~-?D)-#9#GR%egEuNM{Kn~6&Vy>{h?3f+M(NeruqH6lv-db#vNhDe7CYD zLIRsuthgJajASUT0yjuX;ff-!4I^NFs^5OF_d+S!ZwvAr-0MFX^{m=H<*Od({6{4C zV8zF=IZVxnAHPUjgOmqjr3%?^R8&wst3_Z z3#y8DC}(mKPI<*4Y42X4=(b>0Q_;lwPwaf@wL(Nv;Ianaw1YO3XnJv+10n34$jy{3 z3x-YHj|AgQYrFJUzCMQ1+L^P?))fh_0$v>GJC5L&zzceO)sU0}>HG6|X*7Kz=mSh% zD_D_Ts#`};&fiJ4ON30c^@B5kLa?a~s)elHUle?5D^zGxdMC`oCwpHCV((r*vcEMN z%EV8KadmUI5D#wkC8v1FJWH8ZYE|%Q2nbem9KQQ@+H;aWr2&=$4p{rfXa+W;O3p?C z^$o5BM!A&Tcg8p|&&cqyb(8Jdbi9MAtRnjC)7=(JxRVpxvQRt?Bs8F$=A`!(Wq~}o z-fQC_v`dG+IxkOkori+Xi_Q&q=bhZwIqvV3)~;6y1=s(&A-8WBqP}ttb$HHaF7Z}l zWN<5vt=di%U-xM)SO#X6CNwjTs8qLy7LzqB{%b=ce@++ZKv8)c6PX5Cj@-P#9&@sS(e_V^ipb{%(p2?le4_p00G zKzj}yOC5YUJ2evZX9-;cfH>@)Vq+Q<)T4!eJbC%Z<4GFxIz`7O-3}x++gAtCK>^?| z@8~nae&Dw<^O~;cz=D&R%($RRQ@on!v(};^5l#2O>7+2gJDQ+hDpLZpR902HiFZ#0 z&JiCAsC+!6#9KuHbmqJ9@KWbbYNl*ApB(cB5{28g6(qCQBozWqA8^X9k~oB*XxuZ? z+5-=Vus2}IPQmpQUUBNj9-}gq;Souumb?mg^Ni&5J!2Rv{1RLYUUO*>z6esLWRK8t z5>4%WoZs_;APyQAFHzkMc>)_jh0Lhgb*U=kt^PZ`ScN|NQCSyg6@s4BH&#@ei{A2} zm9J(8USTZ^?PT%ND0#K7J{?;O4ydaF9WzPCncxULAGoK}VBDUS3ebKG?)f;banaOR z%sh{$GG{eS^zd3GqFUm`TRShuuXj&bJK*DFV9vV*liiQ#&+ObQ=-f`YBvbg3_|h}- zU))I|mGS^E&puP&jacx=#jrn}1sKikZbtbJUYa z-E_T>2OQ1sv0|ZN-6U-mhtTcMN;QF9kEpwaGS|bD1$1Oq*{WNHE&lMeo zejQN`%u_wZVRK=rH3E~|8WwPsE`1k0=TQz^f{5w&S#tda(`@97wpw5`qDO2@W1tW$ zv;6@P9^x}BNRtGcVtNqqCDSL)PCN7X>4h>G3iF)tIVTjT1V(~Xy+$9*MqPd=)L4y=_?*iK^sg$AD_JG1nu%x z<^wHPcdxEUse#@#H9p=ZW|~h6*3Q{~{`viu%Om{adp5;L!>X`yK5&^Tpd276&Sje| z;foWqboPNV_be`c;2CJy)$y|^vwcVNrkfTgPZrQVFIi z1Pz8$V#Nv^S;GGv9irGk=QMpww`PZ|G$#eKX( z82B`nCzj_pLc_Fa>%7}1zmZfG_Tli%Q;K+vpYww%FFeA{nwAlNz;!fdQDMBl;>u8S zj3VhLc}IrrONjBBcGEc_ytXl;j@$Mp*#jT2<_7gKdhMh;EyS&9OVWHBBqA~YNIRhn zZOY)(dE|orLks~J~+C{WEWuEy(zC6$iiI~fzAHyYwg(t~@AOTvq;46YS`s0{RO5=}WN zS20isj%}Wvi64=TYj!0vIyHzCXTA%aCPS_AmiiJ5M=X^bk!qkEU|7W2k z0kk%fW_r@^=ulHp@GUoD8z2$z>xyv!I%DCk}5sx5B??*k)oTCMguQoZ5oT=^gyU zQd&xHpbpD25?H9Cak7J&CvI|$aChn-KP1hVyP8G;!NvaJY$ByrLR(9wLHZYe- z_DR5C89+JX>-*#Bbo@$L23!C%OOrAFB`rULq*EAvAz9&poYqH|+EW41mY$wyb3O;$ zH}|cAGMQ$X!@+pXs^5eR#xOFo@GR<%;^)E=uPa}yWmp*5KflrsLRuAD1tJ;)MtC+^H zu=FFuN!wE6nOSO0{DfDFx+iW&W32%AXvx3g)Ym?-g4UUqwuYeS^=q#SWYRTYxaU9* zQoj$XOkHpcd=G+FCEMcDS9o`Kwkz|Y&@k{$On zp|1k^XX~$XR)Shr8O}cV5Z#?rQ|0JI0YTQ?ck~_Z-dns=#^Qj|Z9^kIn#Y4!nX;sw z@kFrV3&LV&>t13?O|QTdKerI!0j9_OK$6vFp?5eTB}@a(p&vSHaAsWcBY6O;V1E=4 zk$dlB8!x;(76O3~+71y@P>Z~pfY5P^jwLqA*`Jy#kQQ2Xr54G@d1ihci`^}J_jl7@ zY1e9DfXi<=vFMOB`2Gc%Q%Ph* z+F&jU6!OW) zbJE>%xI6N>s<2B%V+*~Y_0FZ*R}l(BpQpGwMUrB6!_|+6-n+{M4p!CqWfs|NP!M#m zi}#?5_j*~#T)q1K5izk#p-@Gn0=*QExl5Kf<`e~u>O8i}lfe!8a7SNFBLSgt{-Lzx zqmKIdTJq#d$b$@BA|gr@W8U3YAs~>F6b;U>e^EVqzYWE#dOu4yK%YFD(&Y032eH>s zPmILuBjYT^OjEsJ%T+qZb99OiOgXhzg@9DgCkqJ?TKr1YaSxHkj|F1ug3vS%3Rqnj zS$G)r;eKo4`!_44y&Uw0&3`K8L93~Y@?ZfcifnYRJQ%E`WHGXL^9=nv!ur(EGslcV z(3o|ytTM-x9R{;o7#RYK(P+Wbx7 z9OZBJTqzJc@~B6T($-yL|Dz9D*M)R>yQsUuc-b;wdUhX>y1xh8N9l&_$%%xhS3|UsRLJ)%5ejwZG{%s9dheU9=A{D@`_$^U zx9gjC%_n)&8=bl@SFi63sJZ8uQIi{`nv_-K*t5YZP3GIn&t=Y9&3cZE)%Tos`98y= ztI#xuK29SI7qe$!=oXHo=!eKVl23}$4Ei26BT=e{gV$5MVJuV+m`_Yu zD_M+2A^cBDga*COEd5cPYM+@P6x7G4o^U6Hcga6BG>)ZgYYr9y<-O5A^RvIB0*h#z zAk?#zUsVdkXjyUklE%l6d$FIqBBcn1iC@eZJAnvy#03NRk?cK!5}5!)dYCL#7OQy0 zQSX{k0Sy3LitIJ*ltsED3^v(S*U=%bBHGxY*-YMd-9VwR+k~zF1KDAJG_NdD8kzc; zIJ}tY7x%S@ixB=n_Vk7ANXUA1^w6-K^R_;aNsmwx9hRv)AA@nL$TPVQRQ;C0Y62-s zernK7Z9(tmn|HB;#h5%sw>d(2aGiI(yP4+8EdDCz^{`dAc~=i#@+Y4&wE{ULKJI9) zjeENg-CzCQV{xD-@s#uRI7Ucg-Y31#im8NQpabu(9-dPNbSV`m38UJ7@jdR;e7*adsFgbN+a1@ymX&#`CvRrpHV+ z6Ae#3y`COJs5V3g7k4b7OBZ|NZB=YyA7gVzus0B|&kO(}oeMj}1)E3EdPMN$Q8%Hg z8X1rC!CJpiQcxI~7#fwgnM}8a)md`oXdB-zmqMB667Ih8H|mu1^D1_pX|)1vEq0p3)=>lPpk2|wYSrz^nlnzccYE0_Ms{QiL0k_yMvlBa$`g<-v)xN1 zD|HWaeTH^@l3G{Of$u;1cP(i@VqW?~tNUK;AJI-jp^{hu^wy&!H+t{qr#?esPFY$W zhxSub?13t#5IQWXD`_UeykW($chK&|uq3ux!_Ym26=oR!18Ke?Bk5x;&2Z{5ojO|a zI65z?pzYgfhK~O|3qT8cq~|kLo#7Vqkh+##O9X^mp_BLUGsEv^>Q8&Ydz(RPl<2DN zHy`XOR!ef`p=d)*&fSvb;YlL?P>8cXO)z`_fa8rtixdxdFy~_Ad1Gl3ZbR#ADlR?X z&Hw%Kpe!hm`&EKjriGhIyVY_*dZhpqW?W%V{GHvtoaLkUOCmJ&359sY4`E*F7v$ER zt&4nZT3C^0ch(6XO%BG%_X;{m*R?8!I0Ky6oTbvO0P<4K_8Sar6$lPp%}}+fDUQ<@* zu!d+gT@Oz+^ov?jDT`UqMkkWDj@>Lf{_ z+L367==bUm$GMA#edE60u_KqZNv}J6ZED9u#zYmM*?5|8-Fxf1^bMLFHoLAe-;wJ; z|B>G}QYE0Ge?&5IKk|LrnA!w373%m)pRKz$zARYz;4{zE_Vkn8!Phfbaz+bhYwN0S z{+s%Oi6wMrISG4K>;nRPWTYy3fq;&312 zprK#cM-TmeSPed)8OOwKjv{))Imo8ZG$zAYjO-d-e*ox`RfrA@lOIsR%f=%r_oq?bMqK9L7&Cj4FCBbmY=r zSf^ibMniPz6Z_NHfj()xDlkI$1-7hnmwDx2}VUT~h zBKczF+}3)mk(Pn@IFkdlS3fa(g_C{5cjUf}1#0?u@0YisHXFLs-GlL=#TSIW_Xy3T z(9&5jfrSAW-DHY65En($V&LqC873!OL&ru&^aaR{_1T(0L@R7ta$-dYS^MpEZ5RKT zCvvjjAJNw05pLU>51;ZEb{KxzX5&Tc=N~w73Bpm}(75W3amYXoUtxF~xU%)p7phkT z1wchj*!@WrqZd%TpM7}wCAFk`fM5fBImo@iP1C~04O$WgsJSVbDIg8D?HOdSJ|&KA zG>PAT)&z{?SWs}tE($#vYSj>oj;`H-49djyITt_(Hp$Y0qo|E>GnL_sP1}&cBA3Sw zBUa|l`@ke|z42KY5n7*$v77h#{Wld!7kwRGe4BKMF^LmwUlu*}_G$krKR*(<9!iOH*Zp6%Fs`@MODAWGmoR7WuF)Xlf%N-|^H)*fGfN0rBE>nm2)e0+w|I4^W& zu`@~zNM-RDyaf9MjZ8gCMhH>krd|ING#OG0da(&V+xu=AahNr0GMe;{NSMr~m#V$V z%wo4Ms>jyKr$pP1ADa_zTc{d zXU532(xLu%&KO{vZg8g0u^9w_1Of}XNm*;dZ1k->s3|(kmWz&Q{t+>cJYr(42+U?2 zhnE&GExKXQF? z8O4P+i|Pal7mwvBe(bmK2eeKNF$VG@76XCAUoxALSl7=J!fvx}oXykCv^kw>T}Qsv zZzZg)JyRDRp8lTOdUI#HSIA*g0z0p$X2{5wE(dV^+93Uub4avCnBZ{#dAzL{&V2UY zd=2kiRJS&u>cNS9cJiR79d@~pN$OY+1cEn1+bf*_U8EkOxy{V(`={RsMty?yv6p4Jl(`npil}&DqRsv_HqaVaN$r!aXv2+i|uR zn}i#|E8~`U9LmE|ZoFEMt-X{bHlg>8PL5M_^Ir{mtcMxKlf@x z%c2!BW&}zckkZa2Y2rf|NpHygnc>B*zP|SC8kt)!2XdIsY$A zhLAa7o-$c%0t zKjUe+l*8RXfrgH}TJ^NUGq-EHG%%`x9*wtux3Cl21wbbYQ^>y6$3anY%)_KgTi zx3n%NgS|8%VRa*Qzb!wEEpPJ_S5b2Sr#d6+4x=S)6Q)i75xLpG8mDeG;$9yBA`1~S z%Ev0@KHe@xIZm-@SY1WL-}lMK=M(ci80o%)R)hOP0zc9XhnHOcl51BXHLE02QVoDn zqrXDd&~c8(!kQ>Ju;5&vpyBOIfL%C+MLAqo!r84`U`}E&;edZflFFtQfIvhPzr#Su z?M%KCR89k!#N2R7$1ppN*xY+V96`$QH-S|TP26~=j4tT4fHySYo`E{hY*p*Z?k9kmyYJ&@nq@8)+e?Fr!JPqphM^iCHNJ()m?Sb!=pn+ zG@??#((R_C0j_^4ydYqSiD+zzQoTa-3N~+Sd(KQ>dFAf-WFCuPrwCS0pJSoixux#b zKv_XYxbU!40D&+SZzMD)PNN=v?Y&phOz)6F8H)-<^sYLH0OHL89p#6HFKD#1@y-GI znxn4O#(y9BJ6f=CE1^%M#QU%TWco91h9^1}L92r!BpKD7j~Cf5pI>>jyuZw<32Wbt*LU-zQI5E~ko z52B`1!_qI9ri;R*3y%jQt@v0dCqKET1>LNTva9`NkV zya`-!YE28{1Z6j*$Ox99z1z2z;^@b=<5EviL!EQV(FC!O@!%8v>U3o}=|?H5?%!C3^NeDylRno~Nc<>m=qA+5iIQ8ZHh z+C(9jUbuLn^`xY5{nWDek=uj#KxMLYJt{M>j*LFCZ6?5AGOuNnbd?&{32C0{S#-pu8fEILTX0vss51*r29gT`82ffdiqg;(-Z0 zYeV+22Hy#7%E8Bu>C#CbGEur9K1y_!_U+~|0mMJ<7A}g~|IND`EZ<-jk=`X&6_r14 z3cs`ubUBmCTuBZQDXri->v}m_+!jB$ya8>$@af=}Qewaqb%MSNj~`)LDwW@<3^Ca?Y{ zuk|L0<+1OXV{;o12d`0V_M$X~m!+?S^%p z&}M4%z}!2GqYT@$64iT}#O~6L<)pCUl*Fn_gJOewu9iWv!;9uN2_`Pajeq1uvR||? zrWaM5z+RVVH*)LN(KgcswiudU()$EHcSZ_}>Hh{+?y8!v_Zj34lp{uXA-mzWm!(2F zx+p|tHcvzq%>|=%@JsAtb4{*|-*&%Wp*v_olq)WBZ)nAIL|y&uhcvWyXNoh@u6V46y=qQ8gk_{W=`8)bW*~?#?4glp@~(E) zD6;<@8^l;)MauMjKC^X^hgf9aZNXX3j`$$)Z=gxfc&-dBw|rtV(`vL>7MK6A(O!h6 z;eZD4Gzge5o~&FyTVVFe5}eV`(_e*~-W0gbG*;oAy>Pzu zn3g8=6DSC7c*OB?06K1Xb zV2E4b$dKr5eBJY;Dh75~MtMx81T|YE*3Ew+>3Yoqaa2Zg$)RsPO?6#nfjpDwB-TFH z<*rbn+q%CqkySq>bN(E*mbyQD*8O4GkXzXLpwB+=QQBf#%OLC z8MQBhHl*jzAl&Hj0n`6C!1af2iJHXc;(#(|;dUT$B;1rDojMaP&97O?YT(0)#U zZM(ix;+?wEX)HhYK1gW@GjvA|0a0}g#$SC6>USfSUIh#J_4RjzMbPxQ=MKXRlK7*X zbi}I#_Y)f*SP85`gTMDwrHWF!^d&dJ~O71xdZ&D z7&03oBP@d1uOa468!HSsMcnl7h1*xp^Z%k8({6V<%=AnAmPlK zOwDae!|gp&Z4V)G4GND9toIiqGTe2(77vf2Q-%TsMcVvFQwDYAixk^2Q4`qDy+^yV&cdZ1x_M)(i&c(Ba{X*(mHeJC=EVsUF%xto)uf$7pttGcm^xfDEEP@T?s=vW8wDJ^d3(9qqvcRV6$%- z2)db#Kq@Oxy{l0GON?1<4y>z?O`g3NqRBfIAnA#FpI)Lf`4<|TL9w>3O zQ*m)Bh&|p5=w$y=1m`U4M|NvR#%`5vc!rQ^l#c-%0l8SNY1{_7}>4_YCE>^T^MLW!d%n_KU7SCWr#NaR!E5>u-|f zz_$%=D>3cgJZqj(0#GXN1oS2_UFkr5KS-#-ab}5N_5hHC_qqe5cD{4jSUAdumsf?% z2Dvychh;D>x#;+Wrd~;g+L(74&Ecs6gbVEe2O*mOd$Mnu<;%|GIpwKRTns)d1+lA> zO;C$Z{MIq>>PUACt2#@ogxAeFv82{SpzM`2Zhz8QF_R(Bop=Ft+2DlF7acm!&?Dox zfe&k18OZht&1f|zoy^P@etFdm_O7tDFypERg^{HGYkTx2nDB&MsvTsi;jNY zen|<^zdAjO@=Q{`DQNJB++1j@M5A`-B`- z72*f%#?QrGQ?U{TV8Z;XR`!4MFJbYm@*SLqRJ#3BIHg_;1T8w5+$L24A$`>RV9q3F z=dVu9if3{{!M^=ucRj4M=3I=LUxxufg#rfMHyJkZ&~wWguYCGmKl#IgJCj7A>9Ye? zZ3bZvRYj}h(?5w6QO~9xE&T_N@#EfD&WRW56ZG7|OEbitY^-Y&w$d4yo`0_2H~T`F zphGj~M;iGPku}3>Fi*oX!f;M9yu!PzBRlQyp5>|WQ+-S)TS6*CVSZN}jg8MRY1Y@P zV0c1v(s7#+=&Rj{TS5*OX3|@)p8?RWa2=^m2z>yxL;)ZHfc=zm3u_8XSgA+sJoTeIF4x)@u?rigaURCG z)npsB`#H7GGw~a>6~)g}$lJ2NITiiDjy2YY$5A)atPAWZ#IX~C*KlJ`_|nGU70;;5 zYu7TqE_ZOIiD&e0TT}~n%lHNXh2*tAbB5bHgoPc;5xIJ!A-!Cgkt6#~iY|Fye3I4kmCb{f`x9Ig|2JXq>>=@~s}4`J z=j<@p1p3T?_NPTfh4n!4mGT!o{$BZFX7tU0=N=Ya!+}Z$NmxV z{vA_r7X(PmO7N6(T44PXla{3;IDLPjO0(+Au#ABZ416YPF;H&4beYP`C!+a%-I7Cp^Syu}f{(2$1oi~w5Q%zpUh?bW z3g*V~?-O8giZV|z!diK2pl)GoE~oaHs@n!wBXo%QWldjZoH}EnyA50A4j-f?I@g1i zcryQzGoF3hD6u^6x!Tm+!^)R+w-0CQT0JypoUsCmv~oBt*662`Ihj=%(uVu)r&7xE z#}vY-tt*=Z&g-n4Wl;eZHxV8l2Ma#EC?BOC8b7O{q;t=W8ZjZ1xewz;|K<+v{!R;IDD}TkFtfCH0MW+LJ{k$^uvQn=(=C=1gf- z9Dl0Ga}pWTpJ)LDJO+kg+K`k{L)w_DQZ^0x%a=P#s-WgT%+CzOr;=Ee(-(qb-1YiOGp;X zh*Pu9CRMM{M|w0By!D9b5aOP{_fx&lrTlnFY|g&tACZGAKw@0{ILHh@=4O`+POvP& zIaa@ohgHTiJ-Twny;oyha}Q8eR7p9yNw#~d4WaTjBW_jhv)y+w&s^=Y&RAC=pG&mE@jK9Ta6p`KaN-3`Vz$5uXCU0I1mVB zekgJkMW;Gn(UJhb>;AU0x8n*3v)kB@ZeOc=Yl-Mr!jURXd#0Nzvg>D+>IHkyeFD7A zscm)m8DXsnWd8~o;`uQ8w_^D9)a6U;h)1;x&wWpJvTT00jiI9u^8WK56{0)j?}EN~ zJ6!2XzYCYEBs_fcq>CIFf>`GEJ4q zfy=ISj|Zi6`I5RXTnA6uQU|-0W(c2QMdZdzJMVXouJG*%wb3u{sU5-I`QwCY><7(I zlb>)l9e@)4TdRG2{aZqQoHO_K81 zzZ6QHZupRxGC_EWL8dh^qi}Xns4H=wZkO>JVU?8E+C~S4n9NVX8GO0R&AO!!@7H9lV(K>Wn++S5}#YyaI5H5)?8_sb}Y3C_N`ahAsRTibP7r0U~ZVX61; zk(n}#h5$9t7#n)EkcPxqXYfpT12VHDuqQ zvJsUhk>E(TdJAlFKUL58e6&B3TFX#3a#&`=gDJhkI@q{RKg>!Wl9<_2ew%Tsv88Wa zYCPP`$0ZiAnhlh#Mb zQ&q+aWIewdljQ5HpQI>%KK5s~$;-(ipSPo5Qvz+Yu9C@Uaxwf3%1-7cAw^%tL-_Y@ z3e(#(7T+6O%_-)SKbhWq`Fq~DqRIl(Rc5I_yrreFpnd{0{jjYoHXH;PT4B9JG8Jgbk~CsugVL zidJV4R-^;9GRmAC@^XBJW#2}6Q*5APQx zRqn4f6u23U**#fr{<}-sEt*yr!!X@t(OTYXu}xIUyRbqMn5v^}^o&p46LK>-S-uA2+h@MQwpyX=w@Ldc zLwDa=7cMu!Z4&ZbW^^)ls{M_{iBX#Ox}K4$i+qk-&X6fK{ci;H+)3w4Ri()$ZB=SU z-Hv^&8NhT7F!etEfZ7!6@4@6hh&A z2zw5vVJ5DV=rJwRWt~Ut1s(ilWtE0{I`T8fhX&KO@viV#jx0MQt>#HUwWI57$6PB0 zsvQbeXP@zV{$$O}OzmZJrUeU)^OTV!d)0@1SYcYFmXF>~eS@wQlnIH{0+xvkR;aiS z)MDP2n}t9o;T(;GvG#LOA{t z_mAnE)65BvrW0>$=6GpM*Z)73zB`<){(t{@TBG*fdkeMqt}U@+@7jCBrp8lylZX+s zMi6RLjZmc}R8fi;RV`vwD5a=TKEHgg>-SIoIJvImT<4tkdEc-5b-(Ug>iHSizSQ}v zl9rH?M-vJSbJXScPm#2lErz_yPA835==5UvjLZQJ$WOdns}vh+&0To97gz`PXvOkl zv>}rt0^ms9l}Lh_PMosV>o&%}6jUEgWu?QyIU&Yt`_MqKNXBHjnq+5MI*%82`97*T2Q=e|GpSNsC!vvB! zL!+5kRVq+nQ!;+-_8=qWoxZK29gs8sP=_$hx{XzT*-cjNL~^B!Dg#Cmj%_I^=Mx3!u-R-A?)B5QZv z`;b7a`(7Q4D#>8yD7Fb+P;SeeX`Z`br~Vl}XRPHkzif=EKQPJGdONCG?Sx>Im85V4 z;|ju5@%trH(Xoyo{d}bLTQwe`^k|z&g7_O9dHcfesF|wYlT`4!rJ1^dwqKLnZwM-7 zl!XITu^{cGXu^H(UCC!O)|k`9}FZ+qx2;?03zK-CFgIGlZfYSxixLkEe%SFp6!}6 zq+7p@nXATab(mTX1m8Ja4ga-6sh7b@y<@J0jCn?oF-5#hGn_?K3hXI3^m{+}0k zq!n6yckCGZ+`V1Q_Nb}k!@`6VoR6~k$k$nK@5_3ow>z<+FHvFvky!WLYWvC?A8sbr z0NS>(4F(7}&UE@;Hj_OkzOtr;FWc&+B+=8wcz3bBPjeE=_aJ0{O0Dt!=^a*7-MlI6 zY}KmVj!CTKQA>NP9lDKu$k@H}PRw2;p>qzCm9srA^ zPv!Nxe+fPDjHo}eex#spRoTQmOwk zrmJ+{c3iQ{LEL4fme4hIEpw~F;m`;M0m!h^h2oS^XerKEh2Be|di?CGr2B*GAQ2&< zV1)Luhl%r_j3rBaXE}wMRFLGkYzfyI@Tg3qHk^#5p2iK zZU(y`qxUEy_O>%rDe_3Q^L~I7uI(^LQKtA{n{wc)A(-@{KWiK0V`7b?=BLVpzloX3 zlSF(ftrphR5&a~x-cdBJD3ET)qjy^IqVSy+u0^UtuYCDtbI2r4#*W_?6R5M3CqORy z=0htk3zpbN=6mu9=t$Yq_D(yS&z)XG0z<)?jem#kQke=bW?`8%VyBotoJ6A!fQCm? z@%=0eSSY%x4?hcjEO<6>q0*f?WiDPQ`Thsln*AbA>L*K362-ZMe%iP>+iiDQ zC60amQKEf_J3o!6djAyDFM627Z8sDm>_J4N;ij|L8jAnqS1kZCUS-hDloMG9pmhH| zV_Mo4lNq3#&iPiU8gx5E894$!$g5v-=3V^Z*${O2Oz68~>NGL}h|K6p*;MCtD35Hn(2^9cQVgiWh!ljk4|gxB%K8D%g^I8kuoeajd_| z-ZIYWs19|E7r4%_Z)nq&GQ@tG29Rdia^-qd&m;#xT9N0bozT~R{|yW)-V%O%mN=m_ z<>mYYM(?qw$U-mZ99%NpQh)3EDq_}P8xle9G5rUcf3^-9tn_~1iGrw{RPA~Yp7S}d zR|FZo3y?leo3$&Ig(H_Wg;t4W*oj86qv7{N`N5;jxFrcMLl1@W_`X*?kug6^;9MTn zvOS_zyeBla10?-Xb%uRo&{3_YtuM`PpK66YhRZHDsw4yX)#l6^)a zZ_|C@-x{qYLi&=}Qy^mGE)?b)>P7P6V<{Lmqc%WC+d_ z{K0Ce=*1#vl)zS-Uh?PZ$Mlbt7*v3}4@j=p-B1tRi9|%FjDWkIgclm&<|Dk_r5{Ur z;6}~GcZY3fT0bMZPSyg4_heNtAe&yPoaIb1RIL@NBp| ziYXY}+dc`(YB(XU5_|QDT73&JaKgZ^N1vXC*njY4a>P*&Po5rB$G^P-hwh`-o$Z4Z z6mO<4(=_(g1>?@yHO^GT=1(l(oqJN)RkLTi?g{KO4h-V=>xQ8tRaD}4d7CJdLC1?K({J`Zo{;6cl-Ky zhJyj-#4V}5gjR7@LcDlx%(~j#e+_;m!u1M>TN9n>!5w$|4QloxuXuRI^y?$yvGSi) z+Toh`TOUd7kjSR^xdj;&$(#mS9ox0@mb?#!`q|yDHDG0u!tpTeShhFF^N@7bRbVV} z@yr3g8t1X3WE=osDh%Az)nMbgiO%>q(} z{Df)|!xLufhxRGaEuU>KDYB-*(RPZr6t%Hc4FG0lS`oE< zw)L~_%!+609z53{C8_l)yF}@KQc$~fBzhf z*?VhFir?zAig7NaF(cXjkamS|`Td0wqdqKH1aR?NH~2SUeV;L#s1Z-kXIr3)=^grw z|3tA4TP_Xccdr9?NpB=RR7Nfy$#f!Xxpa-shtDjETLd?}ImwJsTJHH1*C$IgjagNl zrQLSu2yYQM1vP~5BR;$t*G3zn&xbAHS^Uq1J;KrJ;?xR1tfyF-o+_l-JT48YsMG(+ z!skKHfeGM|XQykt_R*D>xODIVX zvNGPYh8uSUmrVnvW9bDY=Dy(VokJdbLfAG?$qU#0aM$-S3eSvmk6ym@dVGQb5?+E0 z)9!LhUnMY;=yfBgC#|qvHv2?9M{aI@H-hlF8}wJN#)Wa+9f|Pk)=Xglg8H0!c5wbfG|=6S5#)1QPpi>r3gFDeJks#-MO&q%(Q>mp>owobI#EcgkDnXl^!XiRLGi(c}f4B@*F&*`AX z(5n5BA1ClAq2`&lVD&BDX-wRi{B0(pMSyeQV>TapU|-O)OguN6flZrr-N04`0^v6p z)vF1UfK#OV{nSrgQa2kjeOdFHi)D3|5@ckOMOTuJDeo$IXnX|AQJVxVa`1+K;OGr!9(Q`1Opk=@kU; zxg4f&`z3ky&i24vVZkS87y*L9_dS`XA*3+ungW~fI8N*|!6SV+652M);y1UfcrU)_hMcZ4z zU5w#@?DGdE+Szi`DG$f?4sB7KK3QjeiDGhaZ7nbz+P%>$sDZR@=>!md9 z&hQ{yU#0eGA0Ftf0=!Q#ArKZB*OPsAcbd38rK#($k~L~BPT4YO^m=H?I3_p$teAyf zI2>LC?JA}>0JK@$Ojc@o(Vdmo+FE!*=$2DBN8@3V9@i19ao+cQ?~12<0aL13o*%@^ z5pzlHGogeU@tTZT{SU{UK1aEKr_H|F-aWveCDBZ%iROg$#b)LY*y|Xovz)Cf-DjxI*r>1RxbrKT zq8u5LJmm_aNd4ULEe5V$ehxPLYoId0H8ZdiG?$XR4j3yAD5gL8rISH3`tuDL64b`c zuY8f*;{I1f->JTYH5@Nqx#0W_{rADIAVcBz1%1bUN8y z5r#L_A21ro&3?{LR1Qt(pSp9ZG5ENa@UNobsmzQ+gs(`|li_E3){9@&viYYWkO#Oi zNWu!3pr%+ZW>5)Hnhxps;&k3Ob!}#F(745Q=f}FIdX`)FKCGH3If>T&Z%98hG`1lLM6}9vY&};Hjsu+6|_qUB1QLfklhlu9L zyOdV+3aZpPgnq;hM64erFs<9U?B{PP_E`Feh4^K#&p5d{O2KGJEQOKN4TA>9J5Ci8 zHXy$)5WMQ?jB{3SNKnok>MRXGWV46{1!M3!(?f%O9Ap9n$Sa638n#p4d@>AvEcsY) zPK6v57na6|C^!CjY3m4!WAL}hX6ednJR<6h7nWXf&<6$7I_4u6!%Y8R`4jl3ZEl{_r6S>7^p-JPuQ`&z4M+d`=S!a0 ze^V^kc7e``HOW5+7f>G5g1S*GTu#2rU=OJc=xODay9?Gnf4SS_A~81~43NSoIrdCT zX!g1t36V&E$;da zy0tE-g+GAm{OU)$cC4hUZC8*FQZr6X9GFb7?1NU2G+0))@UtT17P1Rpg>nx$H1XH5 z!Z8`@7RW8sIhyuXv8K-AMv3UC#%F-6&mp8GXI;f}c44V}PY?IE{ODAiwR3C0iu4|O zEgVgWrSB0mn&rbggyf26n8Pb-JECS(1PjN$R$c#r(#O86Ken4t4we|FbhK%S<7=h^ zZmGfICpb+JZM=Ue)L=9hYjpo_w?cq_S-hrOcZwXR_k$`ASh`rcdJ?+PSsr2T zsl%GSZ{z>_$D*xG(i8QPkj&ok$m8DBqRTbA?!z~WaW*gH1_@Lnqmyl*96-kvu+ z1|sPV9?DDR6iR|%Sl9dyrpMW#clr#1oeHDMq(&nvgl^&AG#tU!b=-5c8;iQ7AK7K% ze3DpU5HD-j?slxak^N26S+#8P;Kf@>h`!!gl%M7B{+qiAivO%^QB7Yu{=TwoHsh3q1T@fs2?{4YeaOOKZ}eU`nLjw`70gk>yCRw$^mNT zt-rm5x!_x4WzIs8OB;UR=v6kT8@(a9a_=IEh<>zlHe$y-zH*Tulh#3bTSk&}JgNB@ zW5$V6YOMzU`PoVw%8V8KWEvo0;0k-2bc#VwPk=%x=MBv@)z>oF?)cS56XxsQT#VZ_An?WCFHf(%^8pr4#r=DUuFYcHyGt z1X;4I$w~h{G_U?pwP1Umd^9cq+(~Bc*h^W6SNY#R|2^YqH%qkxf_=QX2$*(-$+|J$ zdC=xhX@DGShV<(JnYxi>nfDup2Zj~RNSi2swwMFLaL&IIu{YR`GVbw&l(fk^LJs<{ z0QsiD%RI$=F|hGZM6#t#;c_E%L34Y;$8riNN;w?xd&tyzuuLS8LG%7|=ZDf2F~AKo z*897UZti{27ee@sPS}mEQ2ey#UDpzuIo#UaFNC5eM70(#8rE9_YicU_6F*u7u<9*Y z&#+Ub*?NqlE|Db5>>1004Os8L{s6b#>{(S~vW8E<;ct*u|8m+D$nE4;`h!3Fwwb*c zlf<3>2(Ke*a)g|LN;K;P(9XG%o?K9A!3mrviXX#V?E=e!vH{EC`NUu%lR8Z4>$^*bqPA3C_e+^j7jyr1E$5||Hh8LogWro!t183yHRJGr=?#FVK zmv$nW(ms;kPJw1D=B?>OVGVI#v~EwCE?BgGO1?jS$(q<1ll5J@5gTwKjzGyPk!-?h!Q<433wjWz!+G9x=_rbV zrb+f#>(+jgn&sB*s+8ANBc0Na&fB0pis-BDFA0HL6&;JiNuLtc1nZv3_pvtA+*JY; zAXA~sp5|+9&kNuJvbdLA_RjP9f4@u(SGKQE%hpbjWlA@O$l>YihAyi&nou&w2ZH4rp|i` zdcM3|fW?fo2XzQ)?=&<0fTv?o5iNgMcrv0{)Cv4o_S$G%hEbB`b8+y8HE>qu{GUfq(OHC$i=)-Xq$kZ5^PAwdW{3FM@vFk4 zJErQWKK~+^7SPxvPbtOmX6=%7Y{7Mb-=c97?`^DXL(UM|<1awo2#I$cZ|n8f_{2Ff zC4HpwI#Z@U>Sf_k=1^>}UCI|x?eR5A+<;#K(q3@9PcD6m=usV# z)TP=~@qhmq`M}Pd_>IPtK?ujXlqfI#1C)U-&FF&V4pu^mr&~NAz}A((RdYAg?6zs= zNu|3;&Bj)8oMk@xGw+?;2uYG{C`CV`IAeEP7VNy%r+S#?D-}8SWa~S#c9lpvd*N%+ecK4))E*Bmt9HyOt+~T5xZ$bX2Pdmy$aQHG@nDq{=coaF zF0rcOQy9erd_?BCJE@481Yw{kYXaTTWX1(=eYT7w^|L?)z(4DgUV@?H&LJCtjRrgh zN#}$#n9*OqC4GK4E&W`?3gOVjj|09UogXA2cG^k1VR7r-FnX?wCIUo;kO+sPp>n0$ z%?0o6{h$2j@0jB;me8Td;pOH1&AoBDy|n@veDl?rN(0%Gh zLzww--Y@wiJ}(|Z% zOyRSR^JTRD&B9^#kk_WRrJZWw_gg7p2HbAH&W*5emPRC7khCik66{GnmMuxgJtb>? zmJ^}v_lyq2zpw_ygOa4?EnQfYlyJSPLTG7cKGV;tpJT~hCXnN zQ!~&x8W?ZO)#+IG9e`Pnow)_+&E2F&E8`xIvly&3EP!Fkod>gzuYsi>^;e#BpMC+MT>`Qs-h!ow!X!7@~zz)%>yze-F!amwYt@PBTHApnh} zj=a3ZA7!`H0=VXU7e%S;$RI>*o#=gibC#edn~ZC3w+Bz|ld++_ZUB zCW&oq<}b8eQgQvuYfapvcc?D*C7ZW)pXEcl{Iq}T&BX!-Em}rwO2IYWY>2AdYk*ZkSL3_Ytt({!@5mL}PE10>G9DzAE7hilm8*qID9#pXML0a$fv( zPmXL=D~+EJnJBE1qCGgwciXc}5}?Dy_k3(Z_<(Mw94PH_XlqO)OXN)vcWrZbx(5$) z*F%h{8dceKHMi3z>&Mn5^xKf(iP}sP2>-IOZ$J7{@3!e7y>q77sM3+S#;1S(S#xI% z1}Jwf+ui2eq>I9iC9>#2njb`dQOR$FawS)Mf1ZpsPyv@K@Zr;If3neHlm}nznv@yJ z9f&7mJXurBYbQB%-8vfIQ&Zk3MCm0NEW8ry7PutX8sNUm324?bjYD%77aZ#a$bsA1hP7>a@B+RM z#~4gfr268UPnp_<#^fz|o}^Hr>laR7ZJ~X=tnV}n4*n?8A0q$cjoGXDQaq#42N>cb z$i>9M1>fd-2!28EG>F~*yKc%7Nc2L?=PgL3_GYmBwF%?PU;8~}N33Iq&aFC*?x_c% zuRiA7OJFJ%j)iPc2=VhU3+3cT`inXNtqCL34-yk?;CF74Ukt)M!k?q_5FuJ`2&58g zDo3uD-wAE~9h)_HsPXZe$w=klQkQdQbMGgmp!LQyAsydMzV|b*RfmnN?zG(qyaqV% zJI1o2HJ}DWn^FRB8AYC>TU|MI4FX#PGTmfH#@u)Fo5{HQ>cA z|G^2{B|AD?p%(bdAJ=58Op;WhqorXcO4Q+J>lpXV6I3*l(fhu1^Ty8mF^U6kw;JL4 z7k8O09=$U!;WY>edG9}9J!$F(^?D5Q00@TXtK|Ww%scEcU9|*12bdx;@N?}t;3^(I znZKlDqK{t)urThZXK}FafBRX_?Z2%KTECMVj{_xRLiQiI$-O|{)j8JHT>nX)Ce&rE zr{Rj4{6;xW(Lsu?onP(J=5GT71XdlJQttbu4M^_FQxDEw$!?XWI}t0E(H?_aHc*Zh z71#EPF{vBui&Zy7x6ECt7*hOt(;dY+A=x@rFEE^M%&GBiI9>Mx_{`{z2ue^Bk5>z6 zzcFcIyQ}|i4R5vg;{bj(o51TaPnF@%eXFY(qO=Ai%yV^_Dug&Mk?1X%R?!Z(yIzZ-gUihjlUJ!m=Qa@!CbE!(>cBV z6Z{bJkQ+BHJN?qa_FUc+6G$kSrOi}q(&GRv+Xe#y)K<$)WoJnEt|I#Skv1dKiwp^j zeN#0JjDw*45xQxO^YswVlL0RrEQao_|@(a$1lzys@6>( z&|d+ECnfLsJ}~~)+H7}9Y7tsMgWR664=gAM>1;ciM8cOk>~BdS$i2q>36hF@BQ5*a z?X|Bw`&>`gq<%l5`%M)f=?%>OxGqPhjVdcfdKvzE5w^kM;nxKI{L#HY%8?1BM<~!I zT$&xM78R}c&8pQ06Q%6qOUiD9l;<0(3MRL{b0Sf}cyjh}4cC^%m)l2w|Ahs)e3l;K zN=SBaFwMbf-LLxP=qJtbGE7!?JT z^d|mB5VCOGl{qB8BX`jU=HZcfp1DSKQQkZ7)1lg1Qt4gx5^t1k0%Y#l_)S*Xg`$f@NwFJ31HcDhYQ|PU2ROQI1cym5aVP-6l>v2&nqF-~RKh2Yc5>vG)orP$y36r9X zXyoh?nWS5+0Pv(c>&SztObZ=b1}VaVxC2l+E_=V8Bjcynv?-Qa-pWdhvg#)r1~Tk6 z2KtX$CN9psXm2)dK`eAbL+U<1?v;DK#U;p=9NW$_!?X353(Eu<{EGbuvFz0OXyC@@ zkZB#}BRR{PLu}P<+-$B>Chx!08qKQ7df{PlV9n6WxYuGex%^tb43lcF_3xrk>{!9; zYk>UujkDKBJzvcO)_Cb-sg^PEgK~4T-=;`C+&LUyYmaQ1IFt^G-FT);7F<)%cu&T& z#;KMumGgGlywS?M<-DT*`xyIp*vn_r%b9~LMvKvQD6m#fY{|detlK{nzlmrNy~qR| zeC_d3ZevkX8E5?iwPLHSYX=foqvowK^SvSQu{+tEAT#b_!jZTrNdgokkyu0+Hi+I^ zW_wciYZ{HxeyPoAzM_`fzAyU7Xzf>rv_6Wr)cSAq$GSly@AB{A9oBaM7Rg z@Y3Hgnyu0$&(JAmH>q_QGm#d<0%)Fe-(S89;IW#HRJTQBjxuMO2V@4^#+FmmfUa`Ho3@ZSWwVV#ij=7#M&*<$iB|61c&C8PUZYeY;)GzBL1 z70~DT5ud~sjn+k?lwetZkFsk+rmJrGM{CYva)H0!nN%CTb79$^?=wW})JB5hy3rAuGzSW65q%q#V zURKKOK;dp-BR>e#rQ7;-T7eesdvQ;4v7bg_PfmhRja})KJ&^4t1eC6!a@MbJIHy@p zw8h*xrM%q6Qr}Dh054E{{Pj|SF%OaW`m+zg{9P7o547s%?)>wp4mh^N>gWhGIE>Q5 zKGiZbWzmoWfTu^mBexIV**nmG7yiQk2cAco33H9e692mF7H)i%=gAnXRq1|i)X*#| z1s0LtI%%8P#FE@*ZoV$Wi7U@G=H1A-><^8TkZc6>Ua;LV@L<9|kg)TOW8+*vp7RoJ zGs+DGwB9IlCLuss`bfD4C(y!he`v20Y&4!suUW}Q5jHHSk99020qzR$v+#AL98Xa? zp=c#=9L@a417_Cetg~VnT&-HNC3Ne~gobjTEekoY1h-6*UiJpn|3gHxI@3Bmv5}Jq z?D3P}rFkuM`(8C2X=LZ^uf}c1`H|j^k3`qqgCqY8Zr%B%MK@IZ(ymdkwmnLJ6W^QF zTJLw~*Rr4>*;%JWO7o}iQ`;9pSV{1L`cxt3sDB%~!0V{Tux*_BYvQdn$C!FmFNII1 ztakJstZ9o|;HDN+ltB18!Aw-xqm80LOCxLeldQnAc3B>eZ1vSp8kB@#4jZF=sYupJ z`;np3M3cB}N{H<GLwE&^gbTbSsGx+5Vylyqb7}&(b%CAQc~tol*j3ggeP1zqoRb zE$-ZJS&dqAdh7gjnr+9#>4P|28%*f*ZZfGhB`hQsP!kEA>@B_suEtuWnWvoWYYA%s zLml;s3$ViPGOF;$H-_1d`$;e1+B3lm60G_FEay$`4f(JthEH-u^8y6#d|(L+J!Xug zuB!I->HTQ_ol|O*aeQyKzbPU2Na=;GcPw;p9j)zI0{DGZe5{Vk8@`?}ILst7mnjgq(RO!UMY_QjYrjc4CBr2LmjCX$ zI8-6xrFE&cnnJ8g$o%!}&U2FgE$}>kb3II#AzV{qUgiLcX0;;`9Qx_IPZN90pr>EA z64o7>DAI03?Rgkl(e4A2lf-EqR8+fU<%Wd-?6l~DI?q_99*yTYe>kCM_ZIs8SWHHV zU7>v+FHpGW9W%H2EKYy8^cir`-sKTMUhYMdM8t z11c#=7r64~Pyl2t?-3;A+OrzbzML4szrnX)X;ZhcWb5_Kip+t&m$|+&Qxsphy!fet z%X|%Z%#@PIbK1_ONQ*dgj9&{5v6}tWa>@h!!AUSD%*QvwlkKGHm#D z79>=lNsF*HZpS4Vr`#V)1M^;~o@shCI9l@fO^szY)KDtv~aPh?AU|atMHLc(J%v>_SSG?L#-Ha2F+L`{%3oDtiT;eM{qrUC1At&r@9!il0BHa|*qpI?)S>QLey(Kp zNxisc;A%Hw>e}4)-+qmEpGP>G&qs!w1Arffgz_BkX&Oi9I)ZV6GePpo2*Acr+G3lf z5rOR6G0C1H5QSC9UIdjv58?_zbA|lS4%YqM2UrQ7gr^cOYWA5gXa6O#@Q_eB(rk~R zveue!dR47D`9?(6?LR|OkyKV-eI;SIKrGHt{zpESV8Aa{Zu+U^T@7mGue}|&QB%Xh zVp@XB@)uDa@v0w3j(0T(%g8xEyzl&4og& zw7?bt&;kez-6E2S+|XbYw)MEsn&pI(X-uM~lehV7YQyr3wW>>!iQt~U1Cc);*Gw@L zIP+FjkOTRN#|i(%o=_bQ$FnEy=y3YkdtF;@-fg| zuUyMwtjpHkC0Zul$ItOwplOG@y2ghp={+jz)1;69+eQ^Ubhr27kv|b+K^gL!0iL_7 zGGWIeZ38gP>kMhXDQ-jYn`l!#@|#;%Sk`#aFvJdE7vdyDtm}4X@A+L?U{imr+&@^l zqB_}>Lc=(V(qpN_%pI@o%}+Q8J%2860^gG=Q&8cu2l-%~W=Dk{lI^@Uqg^=x1oPC16gs%|II@qD)MDRNtq8B^)e zhj>e~IOJSnbSvzUf3M(C3d^N=))WFmd`c9k9_`Oaf*qg$OlIw|F3+ZZn>-#H%%dhw_JYPgR*w zd-4pxRn=1rkKd6_HLf1e>Si6YHxVk$7SxjtAvO;fZbL>1T{0w}7YKf^u2nF?`=OG3 zZKKf8R?D$ikGwf_Y4V)`VEm#*u5BF&m3v_>_}NHb7>XnI~_=I5g8)$ zUD{QU zze?I#xU9Y1$`SsBPul_p!TaZh*H$zLdp~i>V3&vfSy2<#F4r0G`rKUY;-yqcMk!1+ z;15Wh)bPpdw_jA|D!*pn>DpICKOo48pG4P8(`&RiJAgxYOPZ*?e`I4ukC^cr(L3CB z0!}XVaU)@G(xb>X3Y%W_0JSFDXO!Zr^)GdrPl;@7^g8b*wtvxIzLgo|ohZcv#cHOG zgcEn6a=Gq5t?7cy>UI19_8@j`ZADlL6WNUht^x!iFN-%9eA&G6x#iZ;OkL-|;(F-z z_`KJK{M&c|_ZS&>Ak~WX0V3w?!=~Vvx?`xaO(ZtQyRaKki{q@1e^C>MPanEPNzNm7 znybE$VLh{y3+hhP3Oy){ecU|EuX5sh1!is91Lf`-7|{+cee|X$mrTV_RQce${}}FPix!FL=A5$7h}_&#wa=Tpuu(Gr$qMf>K*Ug`={m z0`yW_@Z7(8g6SVFIP!ruf4y|LVYe6s-cMS$zW<6QPLu_nw@4echMKpN^1@~ba|hXa z{_LOI_1C@Oe~B(wfELaLBA_gbO&~^0bZu<^h4AM78tbTk+!Uf(wB|JHw4ZsibCFBU zOc^07E2s5zYepP+UVbUQ+Y7iI%udFW>McacnfP4^0a!!Htq|<+4Ws(YRuZoC#)i83 zV3D7T2x*X(D#V*=(##I;FB3tl8@7GA%G46O~^ zcJ2Pdxyrrk`qCKAft3F`Razax#A$L<^#YTfZ0jT><8}M5yR+TAr3ZzYFik_`+qYwc z*#lpK65WngKrUE6wo4IPP8eE%O@FlYMkeujoh|z-fGFqGE-oy)dkxl%m?V`zKWCRn z2MvwB9yn?)m?WK|y02&zYkcj#%dQ3lmS_6zsHvFQO2vNNQ>53Tpt}7_dd^JmTYJL7 zaLAF6F$SL*@e8++O3d3~F|d-H&v7y_&qPc6rbSgZ9^T##x=obydm38}@+@$==D%FyuYrO8FijOy~S%stDY6@iZgHhbl>0*VKyKuqUHCXeR6A0b<{__+a*Qoi;KE zS_SiYFc_VLpOm6<9AMr{-`G^(v;0Zh`QM;kU(#uVp41NS^jCQ8;Mk3~-0^cF#p^=6 zATZZkD{EsVJjspS%fcX~A$GOJ4p{x)UdV z4PKKwPE<7n8e62p9YO1#KIyL=v#MYQJ5tmo+x`s! z#SeG=IJ7oguP3z28<~7$GM3(gdLu(y%ijJ4%wp^%wfks&$m;+8@vV3`q>#OJ*xa_(K>hOktv|;jS%&I46eRr88xq!3w)ND{ z!8!e=Y*s&|g%F6Vvzi+(f(@volhnWGBX52IH>->nu&tCLcqOEkC+Y=yhefYvLSJq* zGWO|zC+lBYGb{N3NpI?|1o8i&t|UKNoe|FZNbILT=geQp;@UKYIf@Vzy5te+d&c&N zua%^v>Dw5X+Q`{$$T<_IQgW0+@5bjr>-i0*anC=Nw8fts`*j2$^Y9PFZvULdcp5ZY zB#9Sp8FH6t5CwLnhNp;4DK0%bcOJUH5=ztksgj-^si)EEo*~n}^G; zYm5^lyS>8StlE^sel?fu1!(ARs<)Q5f9Jtnf?S{G0;R4>zin|Uosa9-E6Ubhae|7r z#HG0G3QqZVOL5!o9(d;v-eCvr+DRr5McFXLxvGf}miq%AYq6*#RHKEj&kOfVzxTb+ z7{JNV_Sp}MGdUEfG#{!yC7mOzkDeXcP*9@l3 zvlM?+Yh{FENAMtsUWa&2yvi3McRc;+#T@oYL9cI{otQaV&S|ttr&YC8Nfqp)5|D&@ zzBL3|KpSTxtebj8<}1IChvO@W!sZszrS$KaRbd&Nl0RKZ7;Hc{&cWUi=(R?;f{g-U z>f$0cUq$!h-HRHg8`t;7jCF2Hr({ZAvGhZl8aM--SBRv?C=Tak@9YN1gD*^@0lhIi zKSTsxgzZw8O|Y2N_wANs8L7)$u+_h~)&M=4D2jdt9lgjR&bT(On6Donh!R1~dsI|Q z?rR994QDF!wdbW3X%JBj!tqiDU#X!D8|avum%@}!?izW*F{czHH4zt46d{pszLCR;dg zd{H>XDo)_^vF^A`r^_N2szAYQW69{HSJ`s2f&?i%1!2Cz8Av;9M{K?J%%$x(orv~%SQ&KC%!rB0HLYQ&sHXR9*sZcxNNtkPOA>iGH`~}JZD3As-LWk* z|JL)@b5SmSuzb6q0WSgkMCPaOW0e@RWP}CN(|GdJ->%Si(#d^)ETXnc;<3l;Z0~H6 ze+Er>F>wvdHy!joq7(E4LC=Vqn?vZ! za#lL81ue5>i{Eo$5{-YHF2$ZO)5e*Blj(%6a?964v8&GGDQmLBwf_X6ExZyPruIuw zQ!NSmgQOLQW;3H;pv~~io(=P@* z;jbsnk7;?e1>Jse?DFd&yyed56M+Qr=A2c~PTG?LxSeJ2gGa+p27M;)40P11O~uE1 zNyWnQT-H*xf#4shb~AA#O5n&t-~l8DworeSVnb}(tud3u#ib~2Hdt^IIczX;mb)+L z5wLa^-*{(}sG{3KSQ894PVb7dEn0>)=!&BaQLa4Pr!5nsPo14#569s3C@2ag43VBA zKc3DAVYw!c*vAn+6%parZh*=1WMeB?*N{2ifw=ih`1LQhM{ zFYC?n>l9*htHuivOLp@xY^~q<5%2VyA^XkGFTOSp*SMqV_q0E~7cEKJrjl?i_9Byb z+jyHbk%OrHSCoDJjA#s%{zn`QB-4t*+zgS*WEI^1?Ps~7dNY1EdS`n7fbwk$=Kld2 zLFK+Lm4@PHD~k}=MthBfkb%-IJgM46h)I`tBMN!P2`E8oQjfTT(}L734>qGCrl~C} zIPWh|G~)CnVj9h zWp{>nN9j_RqO5Ub-8Lx6d76&tKLMzeM{8fGx*FCA#+F>|sH}NFwpSJ#=difGQZ6>g z+E6q&S0lgZBx;c68u`jzC?X4|i+5!MaEv~^<)tbkjUD5lq+pUnUhyreZ+I~Js2ou^ zlGO?C395-y>gFNK33(;w8Y0*(k>cE}egO@>h|uX7ABffJ4>ul|I#(6S?!EID3cP>xl^zzTI1H-c8s}*bj&%exVes1cU)>o4KARRp6LYR3ZED~hd1I5 z-S!e?e-a^Ykmm3kjmF~QBi$k+yD2duXXG!Gi-{u^@De1v1@f@C+)hN(W$g)X)HWMr zhB$+UDk^Y#l$t8)nmOqG+lKhd=&uxW5THS8Cz^1&R#oZ+f_)+MZD`WlHO;oG_j$le zE{*zkir$h|6^nfz>sj`fM78r5>X=v2{{Ygi8RZlN-;*u#N1bQU=J5%}K8&irv>Z71 z{G+S$jQZ2JtRkT;Ed;dc(&2L!ax7zUa~-UwC>seP7Z)21#E2mRnqUjjH5!g9xhCb1q_$ z<&?`&Ex)oM=hUnBs7_kx-coOJoyRiz7bCpvV?{;0B*dXb?i$)zr`AKGs3f6ZYDA>{ zkYay$k=YjUu|`($7Zx$F*mizG2!*}yAd9~_AsO$M*=!_kBjh?~3z+;!Y&IJP>oMBH zX)im`pwrs*tK1yo90sM%HQ~yo8kI|{q+1ie+S=p$ZS)t!eHvT;0E^*sK2@LU&A0Fi zr|4SYo+M<C*z)p#lxug15=df zrLDf2)|$DW-uptSiu_IFVQe+Xge%QdsN>P@>dcFnnG!BH6Cz|p9n@__27Zx$NDu&!LG@OxyVid*7vfI`?sU5mmS$jLi zpqi>@bg3gz6gq+~l!b#Y{id{-usRo4%CfO~!J%bt@U~-?c|C#zXVKOXtsTZ&kSAGo zQaASwRDwgP)`C9Cja2jOGPu9uAwC;Ozlewuem%q_{6)mi$ZeGMFO-Ytu#tYJOt$$W ze6||}RMfbXAqA;xS8%4U!tp&XwAq~!^~+11;|@?$ymapW0D8)cQ!f|1D<1kSu2&85 zJ4w4QpPPH#axm8k{U~8d!uXn;w9#UX9){d_y)>D6eSJMOyYMSPPgO07t zD*<2kr>(j128ET6at_gp}3}~xDP^q*Pj7)EG8+^q2ymHV) zbKpgl#7D?UAIN_3{4&4HTv%Mhkhp^(e4xd|jlKYySrMRWWx_uaEb6#_39TkwdrgmJ z-?AN`T^~o%E6-8XUAJTGnGeV{NYwU?Z&12W<6g9=9xcP}yH`TdYVw5rV=A8jo(lS1 zp>66kq?%(AX&!Z+=}>I&*8c#soE*NxhtBgU{p43Ig1E!~0Mq_3oI;4z`Q{5#v8&bD zg9pY9@c#giVpx?r6E|*>W(GhFvY; zY0Jsz(<<*N4bdr5qPl}r1iSW(h{fzT7Z(>2Hyowz8lF7`-XWxssBSb=DBMr1?m(AJ z@>WrDBiLVYBwrz=(>GDvl^(;SVdS5RXPAcF-Q*5^_ZJdH?Kl@B_zQ~{w!`{m?h<4+ z79n!Ve{h2@c(~YXE?G~ZcQ&mqk zsG>@e^FOVmGsFCPl=E`_Rn^P;X$Qny9aT?C^3taWm_aF;uZF=?FEsiZD>;YN>gXK( zUf|EtM+Ny#3`{KBuEOcdOHVF0KI83tvPFFjdzfY>+45pE#R@;VsO}$-@vo!D@t4w2 z&MQK`RsOdqe!ml3*Wzz^O>Zw{M}0o&&c-ezNQf69u#wG_kdd(4D`gpMJhZk^!Syu9 zzo~Jg{lK1K$TCo;#u`q@=P?2W&np;K9Yt1XLc9nYkGg77w=+DNtdr7}^O1NB7+pH& z?K(kKH4d7TuJI+*xPl?lJgp_`8d^k{l`Gwq#5QBfY2P%QgwxcYMDMS%V?(9y8jw0x zRi$1e6Hi^rW__Y72ttz{p|pwp;@^m$SAdmHR`1^{d`xZc5@I7M7RutqmcwBq+u%7j zn*v2isYM#)Q45ZqlcRFSErs_CD+uW%)$Qb%%8ca8eCF}S#}xPvjiSI#3VK8ls2_gi8Ep1KGecr*Tr$1-Be?bJF ziHI_v84({LvG3kFgpYW?%zsR#1eps76FtLmzi^R1AViV}ftuf}^Pi?Q&6SN9pCLI*a)yh9y7z5^*o1ux{b2? zBZyUm)w*;}A-9=r!i@^$C0nav7cmF%78{5$+7>@%V7gjz5+->vao~s2Psx@sUdXkr0HvX8Zjd#9QJaUh5L+aZ{8DCPG*%P>||h=#ko)XLMslD zrAbEcKcMdQNU;y%ApSBn7}!9WF$6ak8~g>!<}dCOq)7{S2|tOL?)V9T1KcGhIy#St z)`fLuLRzI!^bIHCq1yKt++6-*#y1f;U)(kjLc}%_EI*)w5=K1RC+&gK)vs5HKyw7m1`6#{o)Ky7Uxtp7$L6J{@l$Xe9H7#ua0EA`;=-rjaGhUKM^b)Uxj$`==+#j$(r{$H) zxNYqz9^oWrE;+sS7a??e;6V>~nHzk@nD&c_A-K7YQ?&MEcC?>_jq;J?%&VPy!R$08 zGC51)HxOn!LI}ia6C-hPB!29m&$x35k7im~MW*Isq^&(?+(cueZ3IQ?%$;D1Q%cny zBbdE{z_C;(mBZ3y>lYA|;N>1pO=Kg{NgC z$3cxYXmI}kzDjw0;FN=%MJ1Hw5<^mt&IXEssU{ax@!17(3#nSqnCwy^vc6ZJXp=EvzjoPJNvql<#-TnN3z(n4 z7m~4W6&NK|sMdcW2uymqw=Zy2G7QZMElD*Ccm>hF-c~TCY7q)a!i%W}Uh#1`Nr?~O zHIa0Avkos6e41e!D37!{91*^id&_{AQs&zccMVcILI_FaY_HaVex=63Okb%vTyzR9 zm7P*#dywfUDs@3~r1v4EMkWS=M@q+}+Rtxb*M~iF<~EPCk*Yo-2)&R()4ymWGI}L=3n9`fyVfj9nn@PgRyhf(!R(>&Is=3aO z*>U^Cz|=+TETmuJHu(?SB1C*gD2C}4ghicNc}BXm^y{AV*l2CCBJLvn0oEa}I?m8S zNQJ>-OtlDELy`8fw_9PP!YY_PWEh%?l|=SP>@H&J5RuG%Y0mvfBI?ZNzg(WCeMnU9 zMhcq{Pe#7yXK@NSBNBn-G&Kupe{HjXnmlQwFsT0kiPZ@|XeS#oQFj>_jRNvNsNdQw zuW0^*wcW6>7ra3ic(=ewm%vFF+)4fdOkeO95R`a-vG)S4!>P0Y|CEs^6s$d3RFai8vx6a}X({%JA{%_i^cN8WSFA~iA`-8ei~L2$;x_k<#81m8 zF&`nfun{D??lh5gB1D<)egl7KlQF-t1PzaH)6UWzJv!jc=M1|(z?z*asCd06j^6=p zz52xaN#R&k%Ib3g?{*DNSrIZU7#8^(B zc$F?sz)MFS1EZ`sQ5B4cb1F;3YCug@GmApfc2Z0e96*#Z?DD$WPfER@oM_2KxebP+ zFMNqt$WP*9aldw3{0K>xuwN*!u(65C!u}&#`^ZmI_YPz4u^A2WCRr(2pJa+hlvSkY zn(kBWU*Hq@qH0|u`uc=Ph$6~*x5`G@bZe?jMOXK9bjPX1ABBUJ_|^ycKAA=NyDqEF zd-60atYj9!5$Nq8%!j*h?J1V%IG*9rx>qB-msbA(q0&MO_7X3Z^0DP{zv%ZCA*ojO zkg`M)egkiKmlQ@~8Z9O25@(z!%}Je%#-^P8nGmusc+`Z1w&ALxl&q?CpLgBx9VQg< zYmRm&nF0&&5gpdJvPH%H!oozEi5C(lDI@ubGs{}LvfNCI3y2}NxL@4@$KEONj5iNS z)h!9~hgNcW#GhVroccUMp>Do=Q&SeDk12Yw7$z2dw10e}{lR!w0^lyn1Kl)FC3qQjV$tzl^onWMO1hDL_V0pWZdM3PF566v7LY85})s&hgfb6b5f z^)D-sTN-&!nG!ugbdH|qBxT|h(#x2R;(tLo++RJ!$dT*H;&R+>Cq44mNu+Au)?x@k z5$_u67k>fKu$Un#KBmIr!sI6?o>{pVCAQ`J$U^L5QeEC4snT67GL_ES&$IfYUK>z) zlXn`9WQh1kv6rw|N&Aij#CVJNi+r-?7EQcGvizG&<)U0T6FuXgcb$*3;0mUOpq7~% ziwKbhe&`b;v@h@t)VJC~$whF^B8NQWX>~fJ=QnWbj?2i>V!H|YM4+bf$~uG4x|H)c zfYvQR!c<)wyK1K%M}*L|PSn}9QKW>Kk0qpg@`YL1G*l|qsrAOg%W;fT`!PZO87>|7 zs=%=S0Hb~sJZiA_t|F2n^|=8!mmKjct8CS%u&Q%1Z9jDHanY^nDioH?x1^L|SWgCF z4m70|ok{9&{e(mEw-@4%(j{EcP)4^E@z^ErC#7i1wOduBl&^V@$=nryyI()^%H?Gq z@Q)}W*QcI5a`J}SBXP5_$8du9PXKxA{{R7U%1A+;M^LWT z$RKVla((hP7XKN*CGHYu?13T#ko=uizcEl+eTos2wEQ=S zrk1Tm=H5|E3M^X?#oDb}Ue#UG%rDppigwb3B)L*s5d4~iyIooT0OL`XqYA6yY+;-u z36D8U$@#^5R2PDM7I3=jE6nt}TDzxLiKxsSPttBXo&Z%tf^A2Gg1BI@w@;Fsn zr3|1IU(z-#c$1rzJ4d0Ed>|DYwp4k#N>s{>J70+59!pBNIz+7e=e%wWDhq7Sm1b%{ z+q^kSX(=@F&u~)?c93vl<8g60Un_MxLIuTz{{TlMpNQ17h#?3^c(^LXvYN3X2g|mx!*j zD=R3G1|YlzzIhVTckzIVx0YQiXQ9F@t|U81`Eokhp=4eL4}`vrxHG4!X70aHWWnFH z-?&CC^oNZ*ROuJ|8waJ54JQ$O6pd-p!$@zp0a!l;(4`Hlvc8PX#Sh9HYf!pImVa!G z(+jAjLK;aFxm8kfpmcvmxHsh`_tex8p`!S}MlZ*Bv$e0J?Mm6h1?~yMo~cS*h+>YN z8kByk1L+$^35B0AJ3f6uZ1BhaBVRXp>;C}q4B~ZFB-$z8C83tAoy9&f+GD40QItjU zI>edkWQ@u?#mIi}oJq9V^FEW*c~4ezzIPHN^S@pRKJlqzN=RsJKLOKX4(ats=%|oe zZZ){EIYj4tt}Y;gP4pU2eeya=MIXc}l+V8K4w;kIzXKZIPLf}6=@?wv`P^$k!H$jo z;@osk9HjffsijSURM9wXtve|r$oPo}Vd>>{7D9n32g+q6ayJrro|3re8~Vq~n1-qE z%VD-x5qLUAN54LPk3u?jSVx>VG3x(k}Jr%5Sav}5vj0&wHClW)ona7`K}o2EluiQXvrXzjny@b;y#5kP)agi>fA1;5#hqaDB>xZS;D>< z8XQcQfOV9&3EdVGA;uJ$Ju-uhj2liS6qC6|Qh85OXY|~OKWNtJizI1nvsZvBj6v>< zw}TYXnHQ|Hlqmgo8XQb3)?!om4u+#uRX=-9tFii{r=h7yt~r@A z=193^%;XMJlMFuF#i|UJl03G{aVM79@06d!NRUcGyTTe#nY~Daq0=(oE9KMUHN>C& zG~Gd1UkhO6NkY3hRak(!M=>Q-I`Jo@Gwjc(JBslWuGY4%sia$np&tO6Hw#k#0J@^1 zOsL0{w^ED~3Q=?GFFdq<>jfhVpHlcMhNu8b$S-OJI1B5Mt(9C=MYOlTH?cOwMfwE2_ha*Lr|ud z_L5`BxQx%GJ)TMm0X&M7ttWDW8o{?lKCZwPg40a6;n{*HrfhQrEEcL;mp)k zA+v`bX_aXo_zpPhC|bFkX39^h;dI<0&zIMc-N&Tw`ob&fNv5ZjmMlRo;n-oKomE1Gv_X6Oo4;gZ$)u`Q8zH9qpJF<@urW9M~w=*7bcJLR3X5YcHb0?IPqE&Z}C326mEQ0%=-Tk72+XCgY zrtrs2TAXjBHcojpl!_E#wAB3((j%lar8niip^jmg8-#dyQtF0J&82*R)x(UTsw$Lp zj=dIXcaTfQD;mbJDdeXll9jK+O~#sZ{{UsM{^_%k@_=c>T5B4_H}Z!TOIP`>6h~g| zI~R&}9WqP{$(j7eO;b*+KAZe{mcP;pnud)y{wpyJqgshyJtNDwqa6OvVg1yIb4tDH zu<{NK!CI(aeO9mDDY0sGlsw5O$d9sq8F^|8os{k34*vigytTIZ9WLV7^O?%xM%i!H zgrsVB;5kr3kv;vxrFpYqvfXYZX=ssD_u3y^q$jy4I|Hn|%+t3ar*rdh2mQR66;du5$5{@d{=9QBBj$ zm~4q6#AoUv39IOlM@zZARV8mx1S7~@#qn5(XP^2II<6+hnZhur=B8}nW?s;|KZ0XQ)va(1MH0&+asO*#!hgsqjB@8*GRIM5FCnHMAN-jnnV^1u~ z3`vF4dR?R#QXJfl4my_*C#zuuH7{Yvkpo)@Cei*Qy9so>q4F-}18KK3H{6mTDluUv zmifU1n}~u@+C@Gii!ClR;cP}0yd|Y{BwhhkD{|z0klq-}P~(0ANO>yHnF!JshT;-! zmevV6CQnfpY(ky)2|TwOi9#W1JIFPscFIPR@f&1xN>$s~Yc$*~DO@z$uxNnYb6Y68 z!&reP=1^huxWRPDG{KmYG9|XHL}p=rNbGCeplhk9QQy2uk16U&4Gkd2O1QY8(bv2pj|`%!~iD{0RRF50s;a80s{d7000000RRypF+oufVR3b^HxUpw;8H56%PkARNH(4t7XkPMRmEMv zTbXQttws;U7(Ad%m2rwK!VcWVGt$pS%RZQ8rLJYNI zOooBi=2L+#&1N02e@ht~2b%7=-^&%ZIy2m?5tneAK#^?9V|RAx>elr%n3lQ!0P-OO zrKFfD%aoyHV_kK*HFp=71q;a-LXfXh?MOsmS`?ECII#o`kdHxk@_-aRrE(LD zsaU_Lz$Y^E(Va&B0I67-1(8gtSeJAC_VbSowZXBV*0%ous3C>Z$}?}vGZ39byVT?( zdS^1%)M2Gz?~>)u4SmukcK}g!bS7wzN&B6kRQ~{^L(>9l#9Ya7LP#~sS~CQ;S>gL5 z1y)hu;pP`g5CVRtJbUfkt2^JTYMoWNNPAj|lq`*dFGxz%M_dUYd*w zufo}CDjM;3zW_D~mNQnPj3~vj48mZx)#8_a5Wj#QETGh|w5YoQh+w;IjW~qJ!GMHR zf!P?&;gpy{Q3uf|OI~ArQ6HHI2z7FR7QLl_jO}93$HWoG@zOmbtlNJZ4}a_JWV~DI>V3 zhJ!~KARw_hmS7*iKk_(h`mAff-%ZR013P~RDgr=RVFEp=vqS+bk%Eas+_vcuDVSA7 zz-XX?Uu^gh5(gPflZ?ipakYo)KRJVz{0n-Pxs8N59s<}13HHQ6S1%>i!?r449wPx* z2TuU9n~hBr1%cT^o5v#M<%Xs&b3mCHo|aJXHLr++!?&14;mBc(J_0CkMu~A3A_&MF z7iEatTn3~n=Svj85m{Yriae$S3rm`qfDmAD%1ep;%E)DYRe#J{Kj#AT8+29V+7ddPwG};=v!3Ju3><9O}Aw*n74oq z30OT|{{ZL2Pr;6MtLgUu!zWGLb~|S0nOAz5Fpq!-kQReg$`Le;`C&L>B)%cIz_Mj55}}ccnPb8_}(%9jI?G%B^kcnEtK5q#A3F;BR z9gdf!)Bpt-icn!^+(BE1walc|pHIJvKXac3UcUq+Ln+vMKTuE`TCk1OU}bLt_m5^+J({K*MRQ4nr;6~25{qjY;~<1z zn_9toE(sK41{s)oS+rly+7Xx~OqUKjVCo|V2oy8fskdl1%yuilF7}&IWaapg3 zhQK(UK4XYgtnJ6@QbOmz-}f&ODq~HH-XjGy@+ROPen5w@W(CLGLNprm$PMqaP6ry71@WdX&>0%h$FAdKO-a!CZZ0rpV@0bP~~ zP+Wo-u*TuxZ-)pbs&)jbDhMGEVYD{|AqG*>OoJUJBzQ(B#JFsP4Xz!LnL^KqICuv) z;1JCS+IW#Xgcf*tp&upTF7ZDL#P)%^gtg7J427(KXUSgYKo-itBAoUQ^T80#9@_r^ zQlm+ob73tYW%iZ+p;)ToDj((m4#f9=Y;i){P7A~qDGA(4-A&>jniu+r00G%RFY4wH zt+;tB_c;iGu~8&VM4)&BKZOP{b8&cm1hjcj#pY2IMaqgzgCD;jo%lVA%3YHE(>Bp~ z6Ch2L@dQ+PI)5?3g7T6flJFx80Ua@p0%Vzu!rO+|9SV&VD#R|tY1~A~F?NcIk95b- zfO0~GrH;HrGcrs*6xt|c&x8Ik6D)mceFj;=e`5J)Es7rTT3vD{2hu*+Q-C;NqBruMrSff{ln zffMmty34>+t#8wO)B27blbBOj4~Wp7bQ<7$AWv>E~+)r~6GZk|Y!0g%kj8b|l z5W?HkpPPcHyvPriWNo9tw}dx_Z1E9=;LCnO&jAzO37-gVjM$2hO4`Z+jm)UF(PuwS0<2XEJn{DW0qRRWE_CN7!Zh2CPNsYYac(EtfBR##C1j7$OBTAy|XKz zEdwp_ND2^4Am97Uj#DlJ2e64;M3tpuKFR>VO zOspjfIV1ImK4L6CmOKf>co7^LpOnaCVMBy0XUG-AcNHL&%{+zNFD5Z=QD)%5Of9m^ z;+6RW+DiWQnfY;kh~39CECa*>_ql9L3}*ea;=E9&gCyE) znKecR>l21P1R}+9cR8*cpP7*kaGY){+^*Oaoy$3oG5vpV{h9XMd{BAE{8Vs8{{ZyT zmyXSvA(W`Z6oJba;fuRi6xAoLclxT2ORh~+BkuUM2>#<%`{ zZ-M}!TbrWXpvMyu2Is&Gitj=aG-37s0NLzKX(frT_<;deDQ-)SF@!Bg@h{9u_$(E7 zHMer@WH8M6O(i*IBeq#>%%vR`Zx)zBJtz2Fmt0iX}^1eNh&L#+*5A_bnh_!r;;Sf)M*l zXO}R<7v~gQsfMo`f3G(P^8&kwmM^RPYDM z@C{YOj{s{cCj8{b8fPBG{8j*Nr4kT*yoD@qzW`OFx!{-g;(QEOfoWlh#&YMY;vmBT zZp|)VQxq6H2?E67)&gM+ix&8~D0&H*gaqV@2T?DM8c_|uP{lx|BSMPNi;v~IW^=Bd z>Q+VArD<2|n4m1*R$czJKF@*A2ZH&e0Y6O0+|K3Sq$+L1u(VY81JDyDa|J#pw21VN z$eFO86grUX=3IccB=&PGtiVY_GbQmd+%pC_%(~px?=b~)4;1can}ijp6=U2PiF*jg zihE(WL1#z#rt&-sIE2s-s)$Sj00)6h6;i>AUH-Q`gpxylpu(9*;Kbg zv;^^Pst#j;R}9*Lalvqif`LFM&P>JS1M;0@EzdDmDijwi^n%tQl1pz1rwfoSyc?`6 z!!qxpV7lD3>JkWN&gEda$c>_=NXb$7p#WKXh$&9YFiO0bW*}uPHw5Yc$rXbwlH`)I zfe?C(Fb>4Ms&md%tKZSw}w}Kp!6V_xEFd^bJv-lc>X$();o}v)}ljwjJ z@fRU3cND-z=M)J6O7KCO6uiaFVVo8adMAMv-+_Yg@DV}?@^crkH=M7;{{YZMw%Ef0 zdk-O!b}>c(vo#F=0F2bi?lo#@GBG^(Hkk1DNiTODNoCGnC_SeH9n#>ZqEdB{qc1Sb zxtm8bD|ql4os4^8$&JGcN$&gxmkYQHoI-}+S1ij@Gd;lwV`WN`ZfgGkxk#?rVunXy zCMX6mrG}~W38#c^QxF5R(ku+oN^S5Oc;_MG7I;jrfHn-pUIBw51d4#LU@v%N_z;l& z4-x9J!W&h>h(nTnX_}%yNuC#sG)U+zaLN(F&AX`2BCgvR)Z*yh#;Har0S-|Jy+refRiA+Pmn|-$RmOxk0YHu zLIn7O$eQ>rV1@;Rf;vJ&pO*y$9}T_&dID+6eoqR7mp(E1Cd1$r4MMee1ZRk%V1qWs zge><6tVzg35REhyER7&8+n3BmcPx#rS(K|_cb7(B>>?%$h+}|`$!*V+aP9-?0CHx0 ziNfK5&Bn;IrYcUOiFwSrCSHfCg#h%3119joWSGS2ay6GG-(^8}lL zpdY)lKfqu+E6f1vJPsiU%`}g*;52y54|0;91^Jko4*(V>^kqg+V8cN2VxaN@k_GUk zq$gBNq_Kb?DQ5^*F{0%GSn4KJzA+LaFUlOch-%|O74%J^-4%!-av5_hW$MX`ree$q z62~TGRQrX}TDnW+PUmgL7s@tyMnmA1@o^crD9raaf>$iKGMvj?w{gzl(U<#|0GM5f z2(A&t`Y`)LM9eZz)_;TGJ^;E;2*x1WuLI&H(A67Uen^nAfL$R}8W>8j%nnl`EIg40 zghN9Or5&Ge!>5OLz{D^j5&4u+oPGe@XU0%o%yuRS!ySy6x8h~A2HC6%eghGqEbd*D zXmm>{8s+0e zSQV1&EnE?tEE#rz?Xbc@UMBCNU~@Ns5I)gc>M#vL79;pYc}1%%(riTzwv7!!`<7ex z0I)g4yphw~X~Q~Aa+onJvjmGKO-AGbha_;Fg-=qW=|)61xK?)ne-jh{rJ|!B%w=M9 z+$(>yv&WUk*7ihDxHhayGpKe};g+UpV~0~K8gOnYeN+H|UUft=-g=sd9#s09P)CCb z?L9(!MD}JV7!~42*&BQeP;XvBVs|nm8nsM72py5wITe|9Z7ywmum^w$Yi}B|diN;^qr$z2I>9?1-Ecrn`Uy(kIM#v5?myf~ z1^Gn~ymv1MBCP1I+_}czjh2bi0AX2TE`(OG+G&u*oL^7~uR1wmc|jAI)P?RudUybc zY!3h=7PY92o(DQ+@XxU^c|=y=jLQ*d&4hZUAU}m7J6%f=$g=jwBRQIdbPUm(VBkis z?=u7gY{AkHC_>K=8X1|d+|XA8CvxLy*f9B2{19)_1iONPPHtJ!d*5?_p=&h+>o8ew z_dBMLp?ga!s*ZB9sd2tjOO5e4R$RC}#mJ%N<|Qf=`-^LU84O9L7TK93_NAYzy>Xm* z`1zQGOTbtBMp294MUGO85re@3 zj$w5F08#LUsDQB6$HGhSAjk^bT;k?qs9A!!O#|k91lzetJ3|^gCZeSA`Y*LN-;Vh`#pue3HaHHe~7`$+okZ?mme&7!1r$LjYL1R>= zJKT-I zWm0Jt2x)`NKA#{G-_ZafC(~r+MBXXn2mo01Mg*%o6PGK}G6v0vSZ*IF~MK!0cIyAWhsuxlU!KNOGI%4|1aOn6D=8Q!_PMlq^r-S^oeN zQ7a>#9C&pw5TE)s*k?2z-uqbm%_axADWVOOKb4aEnE4Uh|gL{uOI zH*xSV4Z*=Ocm^c=QJ;m6kRxIPLDdYRmItA5g%}-PLq8x>8%^5lD}zOgj~csc2I}WinIIT zVhBuHQ*U!A1(vS}9^sfMp^XXSBP<94Dl0%fOfX8w;GJ(>2w1|3mi8VM+34MttX8(5~|VHprCGyo2kA|I5%Ze&2D z7CB$>0RoBcOB5U>pSI&>7?(ey3BO2(Gdr2JD8L}H`bcP-3D>Z=0>-ju^vHk}MSt2r zBu54xs8tBZOKzec z6WtV9Zdz1xol)S|@CGnj@P*FXhOIBw2Bpjjyy5<~QU_}dF8z`4<+n<)#l=DxHL?Ey zTtIPem<@bzg&<}2KiW);4_OB~_ZNf!P-mlF)^%D1st;w}8F2?JT`$imfX1QL{qZ}% z9SOhXmKYi+6tDLHGQgCrwZ!E-8KcC#Z5k~AY;$yLhx{{T_A#F~x}H1F*>nz@h} z!hs>e<tI5tJe3q4;b- zME?Mws)kWB8{>eF0cDI*p@!~qlxm}=aP6p+-eL)BcRHJl`PaHp>LiXx`bNB;n*$~EEHS)7uUal|_@+#?%yQvU!%u>qm% z1NU$M5c(WP>2(|i7HDyFd&6Zw=7AID#-`E?0)e&9w2YAO{pa}*4FQ_A_xgYXByDT{ zCIBCCm?PVUrABbdO#blH5-2k6oBLy?4Y*q=-zd!vHiZT|qOWB|A0_v6|r2S|ibaDjkQzSWmf z$0sp@hY8Ol!IC*DyhjfOZ|Zu6Axh2pL&z9ve((V@7;xX22-*-{V1Q9LTth)06u8{^ zJYC_`xR0{`08qdcuKw%*g~fsMkqpsBzp*JYzxc@Y69I7EqK#2v*h1Rb+g`wM^}W5(O)(-Nf-*1RXHn}i9gH9EMkh&@E$&zz3LsqONg>_`n;tE-v6uvLbmtN{p}>@O0-Jm4as`irLA0?&HsdJ%oD?0^{m6?3Fg~qml-x zkb)})3-P*4!Lxq?4%zAuT(>b{aIm2l66-NApigyV^jK`7FFebhbO_uUNcBsmd3Rt2RUBjI1B?BpMeb2gnlW=8a1y}NZ^ZW)N0czkNh}LOx zVdrSVA<`%P@@`rHzqACgVZ~od`ie>5jb6V}#whKK{{S>40|r;f?bo&f#1xXKZm~Qo z62J&maVQ{mu|?hQmgUL^*`u~PQvjBpRySEOju2c^wpt(hhXGL4?R{!15`J)g_F0;d zZB{QaXa^Bx8u-l8W&*HLr|k>~=d}Lu#3Kz!jf?By3?TD7ZEByUVIzzxLf@&MAcrVFv_pZy z+f@At@EkC|*9ND`Fn|IU)*=D>5j)E6}a)41)e;A!$ zGi7o3sEV7!x=;3s#SPl2elkZjyonsYxcNxxRLja?zOP^I2wc!oFYZj_N7B0Q(;V*7 zxBmc|nN*|?zWZftG#vKhq)TL78=?IYo$0m(DrmG`tE!E+uVpKPLOFr41Xm}^k{h)x&u&t@_4dlCK zUhCn+9Dq*|CY~I!@NIm>ocux~%nn}Y$rQuUu`~0XNM-<(X0zbNA*sz{FvwMwuS&C= zh#&@_8aoKiC_zIy(F~Vzn$%raTHIk3tVIt7%mA!FQ@_Q5NNsy3Qj;r6tYdu3VhWUm z;?pxBY@&yh?-0`U5DuOSyFEGB@Ut&*0u=W$clGttZ_1n1t;E!!u~p&C89iWZ`;WOg+*?7K~m z<~gJAGnPk%i(mKP$4igj)B@h>1% zbs@74{FzE$KrJ9+BQrn?^n&F!ZE(7u6d;t#c=*-xmg7!1@Iz8)W%`z*Zs&OFBxsF--O1(sTs;($YFZQ z{{V8iC7#j87&@2r%GG~=7=pprAA4ypV?@VQ^TuR$cu)g1aC`nGN)6O9ef2IOtZ>zL zHWK}o`qsE+<{4B(Kd3?m7FuyQIF^tYsQOa@6)2v(Ob&>lyW&9rjOAaEg(0A% z{zl~#j!i#OD#gVQ_f<87Fx|zsCx!-ri?{&&33voXvv5*s zJ655%^r`f(=MbUa6|fb;&&<{V1aBPL-OHPTL2{qWrp0A85#PDnjni_J9sQ`^qNCzV zf?10!X~mY{+@!LNQ5{jU=`k29xwl-x2ppi>^0=-ckUgm_xxQs$J8_1eM)M%33&o(n zrYNl0@bgjLNm>?7DmK36G`ZbP@9tPZ&@z7%%E1me1b^I8XN3&j{lN%OtyoqgnC5+! zo;gln1GFFd#X2X?SAS8J3@4b9^D5K}zBaE_gscEr zq^JC)Xe*PK-|lDm93V zkGbd{5u2EBPlGTxl`^DXIEacJrGPEu%x(fS={E4p9N&e#dCP2DgImvlUE&ZTKc}PY zlz`a2kFWW-00Qri(-nd{LfCZHrOkVSHW5Dr=OYAdF2$zmDNFLyFcz}!@=X9f3-_1+ ziSIuNC<7M@{3Rx1Kj@guGVl&6eU-!Pju)^hof`&V@yyuPChE^fjmpL$RJ}2#+*}5M zh90Nc0G_HTam?d!1SnhlYo&SSF@lb|D_Of@*rj~h57EmIST?vQj_II3CR|37osiip z>n*CGghau)Yae!r_UaVH@Cijm#`9;eMS)~brs9k+PS{%dxp{@Ui>7#D;1T*$ZrBmn zImXLZ>k|NtqZ*cVxDJLmR{UJNi=|Vpz_^zOQqRKs%TB@RN^|D{8BhSLz-42QGhHa{ zvG~T1PiC}7l6cVnZAbaQqmWw!(43M$WAdHf`0QWF_Xhze?Ckinu6+B zL2ZwjhK$)SkzNm^hhUjGCSu~FyEciMZyx8uh(iO?txnpgBP2D%TGcLEHw8eg>p58J z2zq#*RT&r#{A=<&CB$n8txoE59~K#A4a;tJi|%ike6sQGGjKKIFt#rvmn1iu>G+p` zty+6KBd|ka<`Y*Pfc>xlr0|##@FA2w=Ys?ktYR68-I0h>?fD@Z9u57M2_tH=->pi_ zmT13|U{Ft5{v|KpfMM}E9VfT|k(~yQ*s(;Tt&Yu=E~UK7nDe^MX<6bl)uEUtxD z@xl0ta+JeJ@{d3y+h68q1HfJ)^{uF(K{S|;sjTGo`3zhu586MkX^dYmBOyiW zTJqgu30-Pb8m92MCJ_l_$9!B687?cw^EBGDRy*EC=3`I4Oy8-2!jP7Pz@Qg3^*$CEhxu@+ zh7zjV&*#b!0(0qq#Nz4@z@sgY8^ml?+-{Xoa?B3^o4B2UKO~Ka0ZBUfmK+zrDTsnH zU^t^~S6(G6JB))g_^^gvo+5KU6cngqA_q!<1twlT9v6F;iwm|P)MRpq z3PzHN3_)*;s?h$TF!6e~3~lGYlA zK)s*I5cG;{SHl2QZTn%UfY-eKOv(qUU&Bv|=4Phiu-IiK{{SKt(Tf%LOWwPbjAV+{ zHZ?kgSd!B5pck6dyhZy;JmT*0bt^-11}igv9|Qn~6G2R|~ne4sVUgK@8m2M%Nk<=Kz;#_9qlfa6j)L_80^a-XpJ%tQ7!5MW>P5aPewxX@u>e&xaMTx_BCq&un4BY22`ux7HuxG1vO~tdnL^jECly@ z5e++*FuocXh$9zijq|^2<~V-qpT1KrC8H1xoe5?>%%?bXm~KBe85l$YZL)B zg#;Y1w8JVH>m!J6fPaJ~{%~0@5IwJXn+4YfBZQpV+JjuU)V-=9B|S=vT(E;X7gsQK zx$y~fXA-d(9Kj{jZmI^H_<}gF_yX7y7s-W9gsB^DJ^`dJ_yJ=nj013#QW!$YfQ^O& zv5n!VBgO<<+nJssKnBF5nTRN}uBBhhGKab1Lj)%g$1Wpb8}dtlBg-eub7#tU29*uI zVq+BpV2BdyQ7XgSPSp{481o5W!n&2ZKsYkuqgW;|6@Zuk8KXam0t>p|=0avQYkx6K z7T#cm2GdUY3pK}0=Ej3u1$B==_%bU4*jzODr8T4aOz$By%@TTJX20vD-u-{$f z6^wxe-hN>i>T2~x&HygUT>V8ZIUs| zV{7~H;Tn@v^wuJPDzE{?PmqHMW$86_hzsU(exP#hb`x|X6f?SJo`Vro_0rqAFBWl* z0AntK8P3b*qL5lS53YIr!r6+{u6qkCcYLv460k&b;wIh(MJxzL!agDb(FCvp@4R>5 zUDSSMy-%4|TqDoF326z>NrZ;w@#9BFv?dp0J;4=ZhvOmaz#5yS$ z>{WClNk-j$mr)D`hQDJN75c;LaL_hA`yrqv&7KPuZ21AY`Y7KQJ1c1naNmy-DTOK{T~tIhjing=Xc=jvEt^;-O8Dgf|{4d3QFLZ7rBVBEEE za)p<;--$;Ad1&wq+!(^Z^WEG9L$(I%vpVJsa0$h2qMiAe$a>MKH(P7-4DiO#1Y+A@ zJC=da%%$C|cyPQP0ib9t8R68wz#u8?h%Q#l*dfx}sKkNE;qbh848_K!z?2Ap4Jzg{ zgQ`mP43@OVF;+nOoA~m=?x8eUr)%ykgudzMZ)e;f0a)qx)B~pA%8#|7)IS4!e zF_!g60>PF40PQdcAM?n9z}{!+836H#`k==EJXiaa0QO_`IdkF6d^jV~8x!I=NYR4T zkK${nMiuYoDlT}H7P~qPN`0`3p!@`3)U*)bxoc+*JPW6Xb4{}{YYBUbvDMvSAJ)F#&Gc6V|V?%!e5(j9Q1P_WCkjVH(4j!H-FkBtPQRWTg zKg_#fGv_|j`goS8s4!bU3G8?T(1=Cl7|piXZi1P-rJi@Q%erQQ`N@IXE0Y}g}m0=tpllfBKGgwJyLgrSf@#}NVCX3LNM3_~Gf0A}MFoVh_Q%iR=QO`k4t9vt)2x?mH2Pp+@O|F~;Tx`j#b#>Z(^H2J>cnhHQPq zEZZ7f{v(nO1Yzw29Rxn{Mo8t#7Gn7XQLo%s#TKet0@nlo0EoZ80;P&pQ`Ok#$eR3- zkp{&6<^ltqd?a{);)mx@jCYA+x|z0kEI1~vnCxI!9QYqW3jl^0wp3UwEi|-wC}K5- zUbWM8lr>kK%`DFHVAlmz@f7&dv~8VJrDf!VBZ9@kCK;3mXX0vo*zV7RAxo2j|( z7d5UE;vz5?E78QI4J*nqRu>JJ!;)?Zy9~x-cn&irJwtJ-DVlh9GlaxhP)N~pfBlG2 z{1MR~_D!Ml5WoQc0Nb0J5RQ>B{t3@cWu*q-Zn~?hi)o01iNJY*HMqBwnwn=8xb<~IRwnirrB4-_)1N~9;fdGDl8#w1pbh$#s#fv z8KP!U>f%g@N)|(CSW~2agtP*SLx1iRg#;6K$@7$i%0R2Gr+@tQg}s$t1~79nK`iba1Yu!?NNr?KaZ5Ae5pzwF#|cja1IknZI@>jf z&M2GyJjL8MQ3!m>IO3(O^P1I102gYZE+~sGlIxjRUTemMj4#-|KZ$t-f9?Ik7J!nz zcn;;Iohd?ElV^gTQ*s(8KwLd>E;~?o{ob=148c`$e9R_aONtaKuEbZTv%+O3XQI z%&VdbRvUmgc#mdgXki8FJIu4%X%5oj06)9BI zjgCAj<_LJN5{}7+;_*2_7zBG&<34w}?3p8c%n)rfqM{t~n4;_P93JJorX9*{HW6H5Gf)u zTu=qmnG53iFC4-E4Uu6x7@tZskTOI-N%tQ(KR$ zXy_*J6+Kx52vB3!Pf!>tIc)hjoWRO5vL##$a)+ry7~xCxU^fop#Wq=HXpT%745+;$ zX2uf<6ggugOG3?FQAhm`0cz%LPuva0eS}cya>dquX4uH(DM9iP?;+5JN9W)s&h0+z z!fio+37kz5-em?;Arvz`vB>d8P_(BIQB!ZfjO zE-%NZ1g++sTb3swvf;k8g>tsn%oR|^OjNYecQl5h9n^~YF+gk1V(wUk*KFIg7HKL# ze2*BNMsh5ZjgeOkxB`)(S{K~h+xP?RHDH&-xL^YS(@jG#Hf>5q-iBsl^PO9WXAX&_ z0%d&Ir8%dujQ5y=z)T)x!7H>y*VV%!d9GoHYcvtHyW8$Xn}(_67_b5QYUu7$3-k9N*mg5YK+*Jg#PLBW}>LxXx$7ctYWMivp<4 zlpCWDTy=uwfocQ7;lkxa(cua(b?7H61?}#|Rj%o1%}iRBPC*j2u1a?>QmEkC;pt1O zt|22O(3B!r7fy@>!Q8o;!r}{(@!S*JD-6o0*R~mfM+w(pOMDdxL)5w+$|VFZWp%h? zfe{BC^Au`^fU8)lv{ zNCn)m>W2!>ck?#omjm}Vgd-rNagdoW;FbU+^*bUc5_cFs+R9~df(z|p3?r^1SeXbe zeAzggjSvmM$PX;w`Xzu8tTJDSp$gH-22ga^{Kp{pGJHxfGJ({vfZ7+4^H=_u(cqs1 zDM|Pd0bOT^P;;B^AgPz31jWKC-CO}|q0~Mihh%%yU@5wqk;xE z{A_k0H!rGjG5~aC%1H<;9kqRREn+wRNz_q<2S!-P>IMxe_S~eQ0O-Xs2hx9W%w@q3 zl^cy^_##baH3N0VrGxfa>>m?C%>JNxnF~R*P7S{>JMu6FQ#2}{(E}u}!w}JZ>*Fve z3}u2Pb*V7SiNB}{CK4M!ma)BR0TxM;m4S{@uK6Mm7&4cIgI=$4*7JidY&hA-b2rTV zd#;}h*BE!qa=~v7lO$J;cp&SwDb|sL%bD#VLe6e;5b*abkllxgX45tVZIOgmiS!;| zJ1r65MI9#th!r-IB0!A>o85oOS(V@|La?40!{GxdgdN7PTya)W`ZFA$br-ZP?o_HL z000#qN@8RPm&*^-!nX6<;SObWZj+`2?H6(0L;K(8iytiobl+s#J{1VAFT7fA9;gZ2CyU{%b`CdDOT z&2W@F2(U^}RO3@Aie1mNA{S)m2}U-RK=MMq(TKo&JTVw1xQsJ^9Eq@F!1oz$CcXw` zNTvXW-6DSDz|qdlkM0^KU_Hwd7q)jZ1DH4{M~?s=z7Qx@f&pgs$flewFxwnY*_i}b z6bP2Y80ntifpZ(d^urO2IUDvxph3kG00M8BKvg!xIpm&&n8wk(gEY`WnhHxLhKQxB zONyVCSoW{tJOqu3qmaGk9`DSuQS$~^sONyVFu{R}$K@^A@RT$q0RJ+XFQ$f;++Jv#`1`Aj>VVEieV?qszblDFADT;RBmqPIBI)%@HNozO! zLz)P4ONbHKDk_tBpZYS!h{v=C`DbE)c}B2w8KM}}%MQ}yGbJL$OTrl%E(d%4_;bG& zZH;vo9Fu2*GHs4R>75-!Kr}s}oWBVN=58});h*7vg_66QL!)s|K$j>;nmK&JC@ON1 z3Y7XDA)X{&V0_1kS$+YO8)jb+?t(iNgYt6~GH)F(M@#^~cDsUNd4fm=4qqP;0GNKw z)?fk~kWuzLk>D3+DCi%Fzmh*e!enf?HV`YeEfikSIOT+Y+Bg?GiWpbWnYJAzj5(yJ_2eK7z}Z?x$(R#f z#9n-0xuh061K|ikmVV&}wfl%bEOkyN;vE4$3@o;%piN*9<`5D=jucgSj#I-c{KxV> znw5aZWO0Er1uGt7f@v)cMM!u-fXeD4Tt70h6Z7&ku?Sm zWda3D!#txPxK3Fiw(e1mht#E_{xjM{w8jq@hSG zPO;x}tmupWFwLX}+00x=pQiYhgnU_7SJX%*$U-RFRrHzqJhGMuBAk9xq&`M=K-EJb zgd(XGg3IPt89=tPE_REZjm8BoE;a`4;e!LD3Nq9mH5zhDEMimvpzMYkID;TYe~0i* znik5gxtn4(8v7vNSGl1g{)u7`ZI~E9h63&GpcpqS876MiB_$64aS>x-;!s+9Yx5~A zZ>KnjwF-=57u99rUK>CFiF+k*pK**TH6lh4`~V$z079|O7z(m;<2d@bh7;@;hJH-B z4`E-p5sR8`Fv?n@{&f_q-n`bM)s33S+65rEI8hHFFqPmpD3$Ixcl<`4L$Txl<{&FK zZ}F}EAPfZN`V+taz4{Oa(iLDF*HY07YP23nkmdTz3sS)j2<9X8IDvz^xFtm&2vL8W zz^l<2uG`>D{XoqW{{V3a+ckt>WG?jvFjvViQ7>+NnV&>*g^%b@ffyJarcFO^#!Q+9 z8NqqT*?tW!DFa>#W#n6#Lnp*mtfme`;f2HiA9Dxjlr~Rr?f}Z7QDlb>=eR{j1}GcI zL_UHMz%VRP-^?f>r6=FYfs9?a>R4v)B_NOY zI1wBQ>I=}pUQy4}98fFFe%2un{0Nibf*K)4N0PI@7V1*O#kQ41da?z-fiMsZ*JkHoeB2~#6`yI79Z{L6*jrG<{o!YX1i zAYzBZFvzk2%l4YA^&6n&1V@B(0luJCD4PL_tRBeWwEGj_CmB&8jF1ludx&oZsAo1e z0N5FrMSCLBjD@I{fW?K{z!a^-4Xh_}z(8G6;jo;DVbFPnh*v3?VgPhb%VQ}NmrxJ5 zWj{73`f#R(j94SAv^9u6nq@%<;GO2H$` z+;GGIMOiKG=AbgrCKv-H^^?C6@GAVJeUgU3&d`mB2>S+;=1j^hj$D3Y4iEs~jvydC z8O$k-sc__jP=jv(7$9YnFgyUv!sSO8ZM5J{rEMXGP$bHHV}J)r58R{!T4MhIQ!4ZF zn}PRn0TuL45uYh7aKs?QEKVYTzi3;o2;|>WU!`sO3!xb^J>G_UPcE$W+AWjBx3G)=l{Ib2u z#ozFc5S5uGUJtv#l%Si8Qs>22oIRhw7<^jMTEZhDcnfo5lsh87JD3$v_=*u4<=+xX7ca=x_3VaV{7-TWY ziMMF~0AU6wgFwQ4fgBD!!{*6HBF~tMz;RK_O2Vr51qOO5P)nLHm0y|qi7GWtOsxYo z_MII5pbfMjz^c3&__#o@x1ya8P-v(R1gTFx68v6103;(sP0ZvEvFZdS5LqgeTO3LV zH|0Ex0?{xr_?a)jgA@*x3+RrK5VhmxAkTs0^YI2y3W0%pg7|uTYwN?|ixJ!T0h$Id zPz*4p;ej5q3_+`hFd>K%rKP=LD0{ggfWYb9O+e^c8AkOeEC|+M5taTX7=SjfN`f*L z&4BlCzQgQ|ju1t>y~d2Gg7okOKITA(X;JP3SX%!81TZ7Oco`vgjACH|^m2%Fi?A+g zu?+-UG>E!wS%e6#+mhF*OG8y3sUSprp;zPSIiB7NcNZ4S{00I1e?QdX0$_uP9s5fB z+}@So282`!#o;xoE5<7$1V1SD8}N7)X;3O*{sMf22htE*s2=5|E4P7j1&nONw~Dq` zK0qTOnLr_iN5ZfrP(%sPg8~5H5tRxTguE9t6K6jk6IkR z@(Le@TtMxE$JD@T1VZn{-mu16ivc1>2w^J|h@}TU;Vdm{~#`bG?b84C}Dy|7kb;8ZhuhF$|SjaP)_`~VP-+#86e zyT&gNx?i52&C}PJhKgNSz0qpm;fEo`0O>HiU+2sna0$;cWELO}jJ^~%gP--`r&77_ z4|C#IJ}I8knS#0SA`Si%@Snv8w0Gh5PG8^w9^lMGP?11@uFmih0N`IU0H6efErFGb z@Dith1R~K`qv0W&19u2$Y=|14S^ogC@)gZ7?_-Xk0LcL?90$2hD~!qb2lA;v(g_I)Fg2uNVTpl3dV^92VBD9LRcmuU zDMZ#-P>-NKV#q_2{{RyN-(d^U(=O@tZU@)Uit$QJ2W%d~atnP}1zO4_(w zp@>R00->_`yuI-Vfob652G{4g^#Ee%ynZI654O?MgTawxxPbDuGJ?X8IGL`datu8r zp=hfCxbj2Dhdvukyu*LUmO1S-@a+Bp9~oML50X|OJ7p$H1_(J~pnQQUsL`pI#v{*) zsAUWv0hhoGP{O82NxsS>0^ngscqb4s`INLDXwstT zR7UO@1lrXqTk~E;;$1^!n~!5(?INgiyNe`OUeC!6gjic2L_pvfWk4wr#|-<+I!xVO zDVo`A`@kRmZyDUIjFrw+*T%bR=(j&zWlf0P~$PH+k3=m$5-?@_ntwx~k!~M^(D?d`RkPLU>{-O#- zw5M9mekDRUdJ-_;VwNv0lxk84F`>OyX0-7#37n2V?Q?DjK17^Q@#S9!DQ2oT#*#TU5l8ifS=c-8uXK-s)D+0lyU zz^nvzLZN2*U4G^yhVc(|ecnDM(GSW-0pe7O@a+_Yig_n-b11(cF?j~#xY{^)8AN~t z1wm#2fSBPi(CwIPdP}M=hLLS2L-?QvNMSAm%OcB;TP38SPn5EYA(5Eou?(AGmIYVs z0AP91FR0dFSO$eIj#KM}tw$geOwC9~xTCInoZ*%(4dON^e!6!hh6`-g0K7Im3D58|tPJZHnF+@A+OW5WD z4^VwnrE>Qj3}}{<1sln};y4O1TKF^S1IR_6^|1SupiNSZ-F)bkkz8%*Mc$ck5|SPU zmeRb;<|b({RJD{dF|hEoYdJ$}uA$)P*ka+j9dRsij!+hy=TS5RTcN{;*&0v*_Xj8H zTx^?p#5gDM{=Ye!k&*KAp3egVQ|bOOnDrnt^NWVjV_s8fVi8q99IOPug%G=p08HY{ z!cz;Gh#-G26R?JAE)U{Dlrk)=K&={=flTBv01eKKMgW+5V~Q8y#Hj+~`I}9>%fLhf zaDt15px-)@fFGnvk!z>n^&O*Bugcv!^&0>p9fWzfE>|6c;z;uu)3^fR_i$JJj@vFO zdyp!69N03^pR0Xs@T*<3clCIX91-{^s2u8F&s2)ABxpNPv@JHk{ zQo+15y=pp$G$eKVj_QPafL${5@3`kHC~dWZ$(kyXQ`=AH=411j`sX-&Xoxs9NBctJ z+yk5g$%}Nw@Yar8m0;I!qDH(v%)oKXb_bisHy&OH@CO$)-ZRWYUI??9h{E;o?LC>d_1Qor6H${N#ngoRGRU}NL=2tZwYWX1^5 z=4GF92|#jQ5P%Og1nd;;ams*2jmlJ`Gk`@IP$*`rFk20Gt#hoyAa`oHQ%ek7a1`#5 zAgbKW%baN-ntkOs*`A#Tp*sAr+ZR!2%qj-b{Kj;#WDKb*RdLt5jX*IhO>j0JUR+z>IFOYy8Xk2Hu)*B*Z zGm&=B?7hxR;rlI9Bc?ChCl(c6;fI^CZ09F^Fm}S*QAOwAu zdyZ%=b<}=H{{R92uLoo{%Z3|JAiQod8Vtqdnc&d=vbGeq`w?-My_%Vf5Whe6U<%Xs zxFRxJn8k)+@C>eI?E>XV1ux93K|XflmJ7aM8xh$ih`pJlj2XuF_Y~83;BmHc5Dt&A zCTWq7gD{LFC(KoGWAY*=WVD7?CQ=-jPoNUG#1IyD4-(^(E@php0I`e;N_9}oRj)g+ z*Q*Gr6LNx?`ChH&ZZX|@J|TeZeWq^rxI`zE*;Qige{$gm8_MY3j<+k|b@*}9p5jOi z&o^4EZ@6d%o-Q`|zj44fKAsw@#Qy*y7yaNok7^XHimZo%3UaZdd;LHFZ0gKa-tAOp zfzu_rbXOkZ6xzPfzY)tEKx=tFagC8d%M73`w3+#t5I*W*@&ke5yPqOwzZA2$i7DIw zh4_wYJs^kZL<<){UBwhNr?ax^6bIW+`!oUDlW?+sfC79;l?UxCKxN{brpRHKQgmvW zCI&M5{l}qYwe{R#b5h(f@8V|yfm6QarVs*`5eHy9=775&YY48hLq~yDNnwKLe6sLG z&Z@XV09sX>OK{^H$Hx=6K`o=&{Z7DD#w3ECbY>wBS4_C#wW}9gVkGF{F97yUo)^TH z9m>!8L^2KCFxXCK3@|w2T789vCs0jBl@zHL2F*ZYV8o?uz95Rs4Jk=xVKfbwBqdrL zp+adAP$USuJ<}Mc!NGa&tYn<@?C&?IE+wE=R=!L}0J}Gxc=ypMAqg>#!rid2vg|7^ zP*v{tt3Pm!kgRvTU3%hZU>-hmOlRK^{3nN_O;yVkWNAzufRvac>1JdA)+X;5*~{Po z8jxZm>&)CHhCnNXl$CGTHxp^bW8e?T2p-{knS6jFV*tQ>rwDk%4TG4hDx%nIudArz z4`7Bkwrw&nBwQW%Kq?^%K+H-E%0th^{v(KX_;YgzZ@O1;SOP1cC;fv$d_Y4Zw<%Od z1zkdy7y-R0{^i6ZQFsI}YAK}?n^PGs2*YGvjbW$!VD z4QyM%p54H%r)$*VD38D6TA--J7Oe|g zK@q{pGyzL(Kwr?)g z8}~s7fc_=Kh9}kGO-5He0`oOHs~7y70%Lw5uX*$H2g6m`bFDt9fc2yXD!^tOl+E}u zq~t+18&h#n@LVNt57$@naL|xN+rsOo@XrB3#bC;H1_X>;&%Xn_wOK0`9NUpl2~_%; z$<7OoG%2*OwL1gF5$SVgiUb}~nw(JdSmjl|7G4+jdXn1~AL+H-Xp7$W_CAP!_oK`s zMcELFm(vQZ<@O!R$H*Osing<5)QkTB%J&p9D@Oj!IyZzl*oxolGTTG@KTQwaIkm{v zA8T8fN_SxqObx%Eh`Ju!~3j0tkm+iNlwR z8-ejXYns0W=5}P^_HEAE)hnq{d4r6oUZJFn9nv4Ksf0AG#A;qFOOs?bJpdZ^5g9cz zTA%=WZFn^|*(5+B1=ZohG3@VhCD}a%@ZGe+EF?ycodA`IXMPXNH`frc`;pp7+=L3L z*a({RL+ikj2m~2l`^|=UEE^%qlMsS57Z++Md*W@Z$oZ@cnK>>^yy7nxEzF?em|`!S z=7UAN5cEXT2z5-R=s^Df#@;;PLiGlFq3Q*Sjdba2DFgzFTk0LaZ|Re+Dd%Sbg;h^! z`&?oS?Ank~uUSgxCZxv%86fgV4hYhq@Kf{xZT!Y`w2>Cq9b`GPDqrWxfbATm)bs-t zW)ZCb7&t%(86S*5gn%r!`;B|J4H|>C(?7j_tMF$B&bdN!N_^wgW9qR41qm|X>2crN znajs80MIiCkgwK^%nbhkNMY-(S-vt=3V~2f2Y~q2lciQ8%%FHzH=i4j%-M_g4PPb306r6VOdbzTarL+zIR5~PGF9;jSn z%2*jpH$Od8!>cLUq8mFFuOs*x+q}IL=FC=;7nK3bq~i;yz-|OBz5HnUt|Q%|3%p9JaNi6Y*|2jd zYYj}z4%9gn)zBiOL=h?BDEe0O#pmJ-T{rRrt#_OwKq5|5@7jpj6F3M{V3ohsgWj%E zoRh&Y8pW{S$p9RmVM*$VVQKjOT1P$5?2AfG5yIj9Q=e!A(uGXwfkMer->TK#!nG~6 zk56xWH(NzVhVhlXPv1g9oiAEEqN{B&bSw)hfYV87D<{43A+h-KmtTUq@uhNM@TUvkjx%xbn2u@2<#+yZ8EuKMBtalKp(vc{Rkd7>ap!7|7 zJB0-iEB^qM#$&c213Q4F%4O)>a{!leoz^8g;!+!ryzj(AiS~(xkDnID1(NoUXwy;S zE>nMkAUgD4}4 znC=j}mKtSA55o#q-mxnT3Tk60k#Wq@Ta^S-P+T`G zRy@^z5%$#lpK`JNbp6V}j_FClj8r_6;w97>k4Z>Vf(65tC_y@izGI3IE)+ye@hz%= zwz%cEVYng0Y}_$hIXHqX2dD~kmN`JT(qLTX$3t#;oRDlIY$<@uLZanCqN5+cqERyi ze8EvgrN}DMg^yAUx6XPg`j*Rlvj)8MVf{)6;4vtb0LVokD=|}2Ak?MQ5zMl$nMt^} z&;I~7r!d4yZ;4R#2Bwz*GBW0(2!}AsQ5`WLkfQ*gHwaLc0F*MQOgl3bm_Sv=_<>&$ zD7Ay+g_LS$(FHXUEt3i|thrJF?701i_F^Sy^vAGXvp+o`#7Kn-<0ppAqO^(TP$`t2 zES1c=ZdugNi%TNkfst)4D{T?n8xSp06kHW+LCaQ30Y?xnu;-5Xt~IIyVt+I4WjS6!e0ES5pKyfR@doP~dHekuqh7X%pe# zjld1cG)gmY9K|x!#CMs47xf0n22iNV7N*dAlGO?8`euAjP8gnQ>@512;AIln=WI)E zu`P*h!xWf^>IFwF60d#*5VqM|AxJw)t!608mM}R^0tDh+927xYF%%e;%+MwZxV8Z; zYkmvGlES5~nMNlt7jmyL5v$ZoVg;%u$%=@nq0AvdIwdsGU&OcrxsD>8zAl$;e50vs zwq^{x=3W*`CTO2L&uNV&VBJRnOSWYd`@A}3%IXvD=`hslthtSri9Y_ zjO%_ag%Xrhtxd5mt?CY`Tp}e)CE17z%&1v{lcY;iOCq*05=BgN5m&^nc=raAmHkAN zLh~Uzmw1jyYXLzU7`()#V{sAN5rPp;r6EHyCB+7!ijJYXW#ZOcO0`4{$~l(9A@vN# zk#1Tw942mfKi|$E0B}J4ra*wLLBo5L`7`2L7Ag%s<<~3_<1k&NI+baEl-6ZNP$&4@ zvc{qmB2>8WD5rAFVi*d3{{Wd#H0un-GWU`fYW#!xb2D5-M9_gnN^v=)$bb^dl>pqO z%PO}K37gyzIuGhy*hn670oP!Q5e6E{N0O?pbuv+$C$6X!I-jf*wc#JE>jk zGa5?|+`(*doHo}J6xTN_ksAVFO?mi;4Wif>VN*41D20tnEm@f^AS%XWJc_?D+1mi+ z1vy5pn6nI}`-lj&vJ%Zcu_>wfv+hxTllYE`Z&@V(k)dF1}Cq^)a7S^$d9tC}CA^`xh<&bub5U!1WcKAQg2T9bhZn#0tDhM4}Xe zrF>bXjj>dIBun*`6;Q!|a_#Y#7y{UUsY>1;D1;Q^Afu86Hv-<^l)S{!cJmnhvmbFf zKF0p4U&q{(QhHi`;5d`JgOQTF6)lufDwL~$?EFTB0B&gW z5q>?zqMSmPOF_#MLAZvcmpg>6nfi*qdWDMge{~ZB48F~%o!Rb{u~2XfU67eyfs=Wc zTHFChwgo7OREta+mes^O%FCq76jCd_z;gcMOl<8bU!04~YZZ$F#wB-;4hRhAak{r~ z`LQiBg(+~q-*qiujz#7M9kI)!i77eJY`44p{{WekC5hZethr$fElOIP5VavFQkMCY zP_4!P0H{M;L2N`_QPgilOOy91n!;fvvWvM{rU2Gp7)oT9Exlr5ApFHeUzlxi8f+z# zvN>Ew^op9v4hR^P90w6JVQsjfp)tR>UBOqFG|>x6VkIp8r#6s5&LWOHMa3&b7T<;d z+kbN9&a3KBC(RjqMCICH2SSNy$VR}*YL$<1d1|B7v8V|gkxi#c<+k>hmF`?1TM#MC zLSeom8GyL07~<5g7<-qSPt>#tc0^FJ0kesPf_s&s9m5eAwFCbEvTz8Lv78(WNiEE} zR20ny<#Im}TOK2uVBBo$8K?Qr{Eh8pR0NrMU|-8E$1lbw1DUZ)zkOiw0e`0y>29#-NA+@bgd{K3E6O(tfH%Mf!HKp{TL*$A%B?rri* zTvj56;2q*sYEiOW3{p{n0ZoWAG6v;ZY24{9JwRuPlCDvr;D9zVRy0MxSP0HonY^SNE3jlZ~# zIEdU_l8-FB%|_h+0I(~{BSp(nfl<#A$#Z&(ltI*zj89b^91#BiXYN&hPiJr-xf|SD zjX`ITgBAsRK!Lr-CnPD{$mjDvyTnT?C`9MqslZ|PEp6ASV8xHD8>lvQoYTcbJVod$c*WIJi-ZFSs?9S-E4oA{jv#ld%ukK6IsoA8}3<17R!70ADaxQfqvJ&Z1T7Af?BGP^7E0 zDT~apt&xqzX*Nu3va2jZJjRyh7HNqUQZVl2!*D=wpl-S9X5b(++qq&d@ey?eP!2{S zN{W>!cMA!3IpGB^7LyEWueyBU&>RN8HfV19P`fttCgVa1qua z7(}A0FtaFwrUG5c8icv<=3z}sdZVQ?9k2s;m}@9`bsSp=LoE}VUGW^XEA;>rL^@+- z#9Kka+#qH)_~N({l9*hxrV({ef|{Q<0JkXQM{@(U{^d1JBbO;t*Dw>ZZg(6rP*>~5 zRy%4`p_#Q$nPlRnGfZPqRoadEos}GjMX*BGB)mATlReBmCux>Qix`W{GVc%!GXu2T z1HX)v(oEL;%l%K(b8VBAAhVaEV-(A58nwdL8{w6h9gf#@Z#Bp6F#lwaQ%GEtlr-^S64e!HgrTLa+aKQRj|6k-X7^DgM0sfgApiDMkgu;A`EEU8+ZN>LS{$v7(!6(x{&{$jOP-+&vJ zz)GBvMHnJxqopi(C7xzq5p;0ld`CO^q007{lTiZOlO#x|q9p?}wCXM_fRT}rqt0p^l0>i`_mRSi?qchbkgzi$JS)5C+xMSuRwNa|g z?}=u+*AN#ODH!-IhHxd8{?LX^FAxnmbU1+Ia9^{^c!fQo ze@N1mF@&y{4U%jbc0?td6Ovhma^lzsMu|q*ZOx`yhJay$r)}H;wy7Nu0Of3WiPLh$ z6m!I=F=gzIzeiG&JINK$jkSnwX=UFL4W#QaK||gpv9=_$Lo;Zda~vr|p*iL$^Hj)Vg=vzP=%lPnV1wx%!`J<8#zv1~06>QYke z)TRw{5kQt|jZp~tOKoD}e&eVuu#DMPPjGB-ZXU4y4VNU~WK8Y6Rt z<8ge)F*Q~JOnPOI3cW_oXTlh?FDFsTmSI4EIfGGOfovFvX)fb!Vj;5@p_yK#3lh_F z9n6xzP0R_HKn4h)g{2Du?l*eeX0?9hR^=SjV~Feq8KVSgQNSf2shm`084CVtXDbme zQ0l=L2~PM%5Q1*^`z=4%$u$-9;r?n@3Hy|niXalSfY8hDnU{VovY40=yb+!ti`oUw zkj#xW2Wfs$SjsN(Vu)(2!QZ(;9iamOm}im*I4-VcV?+`A@pD`bxpu@3bv_az)*|h+ zLu?N8#9TU@-1U;-7h$C1e;>5zMwxS1_akS>cSQmOLqh8kZGu zG0dXqiI~H|9PSo~X)Vx~dVyIBW0ubERgwt{5>hS-ujIAg*ZtP1#r1_;{39im>a zyE7KSH(HK@S$?Bp;9MAsl0GJD`Z<_j_F_rcL~0ebc6n_w+$l0{H5ZCy zD*g%L$dpSWSPBF7X1akM(AJ2}TmI#$>$qaOfC%Q`3fS1Vv|!wF^RiQgW;d~l!*jMO zHj%w1IZQCz-namw4VQNcH+Y7$OCFIP5;0|ZV&Ess{{VlPkC$iu%yw?D{&oDrLPwpBmWirBI>G55TgN~ za~P84Sw`S5sZ}>P7>3A)Qp~W+06B%RiYvH-Vk4AP9EsTqT@#qhTo88BC0K-3e!~U* zm*i=2v_!X2+Z~Y_Ucj;L2E7gNT|& z?9}%IM;_%W9LIIb{L3!}Qno?)AglfN1UJmLXy7cYXHiEjO@jlx+8jdji1JH$*QmLr zi~5vduLkA~OW>H`%oVRH9_m=4wA`;qc1DWWl)|Nz6+{_zh6>EA%WxP|#MGPADorMj z5LroD<+JV?CL5)Je_|5HGR0OSeD^7lgpAy|!-%VrWqXLNd4O5WRc^mxMWWaO&BdA+ zV|LaiP9mvbt@U#2!OcX2)4|)JYy>zj`M>H4>~-@Rj*UUJyOcYX*ofjai!D;dT|pQJ znBpb#95C7;9I3gDVafe|XTU2ph%B{Z5|kt`I5+BH56EUdQr+rTf&ORoMSs+B#W6Ji zo}@+#gfDI&XUw zd7ltHOGLr96P#Q3DoImwrwa2d--uEO^QmtUGt2Ff4lDJQvHvDi}?v|kq}r|@F{0nJ$)M!2IY*ZDwhkhOw|fVh>rrdt9uTuabH ztEC0^fBaBSsd*p~(O;KeVhU+4v^DY%*ll3&ZVGA!SGeRn>Itn-d=nVmZvOzjW;rw~ z_W+m7NN?i{Q=-^s37U+`BGEQ48kBY7${3Y_jlLvS93Sp`M}e;brbtvX^iY0$Fm60i z4eB?-7OA;r|{{G^*)NWjcz&_iESc@}RLz8mLW=n3knOYzM>TNHG>2}4 za9IxS#0S)^qh{FBv6SW^0k}r{W!rz;NI|4xt>N6_bTI*en3uSgR1PM4j5$|>idJ~J z?G!e}hcP=5i`fz4V6F;WvK#QqWK^R*rP%H}d4ZN__Y~UZIe}i4Qj=W6w`Pc`=?%UM z`7`vpmg~R`Q?3MI@YTHGm0f>kl4rHe;_O`&~ayGyq^ za%jFFvssN;mXI45*}`E>5N+HOyeBCHb8{shaRvK=)TL7pgO_o|qf8mjU>vfoeIUO= zD%vK{s%P$I%(2wla`a9wiX&&lR8AsHqT^=tZDSsm=O^gQ3F*YRlnNpz})Nc)v_)k(;+NIv015(Er zJDDNhgjlMAb1YK^z!`i7Sji6O5(v|Yg8u-y!ZR)vq#2vUw&-y$X5)K)MNs6F-C}7U z+04x75ZZY#RAuHA^>5&)69DT|9cFQ*09utJK*VZ^*BGm`eB!OdwuYjlU>13il{{6gEa)=Zp;-D&WM5HT0b2&#LDhxn~+yi4QJO~H6 zJ8^{M!ybX5)GRM4Oa?WgTxo5RjmI%wd5%yHA`UoWk4V9Fh^==TESA>`ct^R0NQtfg z0KVmROW?&x+Ui#*4u}_8idtdB2;2|YJ60w+hfGk8Nky(KTQUcoM7Efe)ZDQodTI>< zd$AJg33UT2b=(64Ld;ET{h01$B?fkaHJCf%?g7>&ml<^2ve9^t=fIYDi+2lg3rrLT z6Ppmj2F>*^5x8i7V@*Vc>j~K)3m*oHAT>@QNlbbgnYT$|rAi>PP_-Ai^6Fj=jHhU} zQwpeSm;@IYxJ+_EMgIVv0@WrWg!@l~mF9iN?22gAX{e42D@FvMi%=K1S|Y3^VTmw4 zp>3FpF5^7^0PIB*m!AeI#Y`qz?y0~*sd$){oyvo#ONm!%y3}JFMM_}gOZff3@50XU z5v$@kgjyU*MZs+@DqSvtDICF^OgvoV{LHB`Dq7+^#MFZvxF)_UuLYYIMm~1@ zcQ;?o{{TEnR?IRawL>lvo5ZHAfTfT#F;y!y1mbE6I3fn%Fp4(H9B05#1m7lv&#CE& zqJTtP0J4`@{wEGS%cNyvaq7i1O5ntO7@Hx8yrdlMEAXra&?AI+m5b&&HJ({%v?r*w z81pc9{{WkV4IbUY5x;EMM}w(mHJnNoVpe&MT)~;2q~lrfi?$0?tOrc7xCy8>Vpv?J z1iH##+w~pdv#NcjXi+ljR3859rj@h-E`nSKL%^wo#TkSQ<`X@z?Aq zV%&2KZ<&giT4gg;Z*unu;oI@t0IXUsFaoluD>AmJ;oJr!%G*Q=-xB<&?ThPn)aKv4 zen5CYQMi*)Du6H!A`3C`2T>i42VDHbZ;rTua}u!$0qmK)`bP>*$%kYF;>}w#N>dtP z_=CedRqm!>&wRqUw*?atl~?V{H!{)=%uudd2c)kykR2mt{A0Y4DBXqg<1>ADMIeG`)d8cZA2XK6IGOywk90@_Cb(dS68MKaw6- zMtk4u>DoX&+5Z6V^9C@DR?;p105_5@u={s+y;*X|*G4M!Y-DkvNPamb8cKpsD@3=9 z=iG-4GthP!#Ef5q5?)HSdLHD@fekwrf?XL!wi|4s-bTA?8YZwyYo6jT;?}p%wKq~X3dFAx*CMThW?}{%v{y)FtiHv)a$Qr}ZMfU+iXV}AJ+sit# zX1V#@?f(E{27cRoDEa5-!$PC#Agfl& zIa)zwZniz>Otwic5pLntAgSQ1;hk5%xkJG}kNZpy4 zJs<4nNMARRhughrC2d#lzm`n+%U{fri8YGuf9Y3tlqNs2FL%h>u=DA>RmU&a&$8w` zgOd;V;9v83FgxlU{Te8C(<}&{;{&qH znal}}EzqsvhI99Mjxu3Ok(z^!L(n{GO0&nK_~U@!W(_ zITTc0#ze;ZnmC?g&#FQ?X?M0fNrsHQ|&g7R+t z$9P+G5#;5y1xftcOC@s;`z1@@-Xj$33A`I_IhnvLkoqFhH*kw-uTyl5Y4L9lg&gny z0RI3&(C^_3-S&1gl!``wMw1>r;3Ko=CSBffAMq0VghTm{=6zz`>3OS-^sD%0{sy?a zs|Sz9q`&pZ0d>w+RX^01*1Yv<3_0czTlmxFP@x31DSB`@qOWO`N2Zf4`;h=2_@n7$ zYZ~rhx^!og$gUEhK(y?Pj0apNU=V|7=uA)SrWC%WCb|O?6qn?hy_x|<~o2y^B$PxXHC)OL`e;%^OdHzk>{AX%u=t>1xTKv*Q`EUF( zI=*{Ik-6Hx+*%jErhEIk1PWgWW43k(-@ogz##DD7?4o0_5+g8o5{nm2cMx_rc$i+H ztd=H%c_zFLQ4=3`%zf))q+&od9Rl-2FkgBoY;h@{J(imkF+FK>?vC0;sNr8y(qHFk zO^(CbN8#Z})!g(WKAjoh8scL%FPqsSK_kOsa&NP|74Gh%llqhA_B1iho`=aq;B~&u zffL0-DQt~nf%xJW^BsaV5!Dj@Vji;=r8#7oI5X7{i4xG$DCQKCIW~~}FqNT9kB@CP z{{Xrt5Aqd1*iik*-`9WSKSsblAE>&&;J42j0a(~f)`5Os$DQ&%Qdsjw;h%eVufYU$ z{{W#E&;DV2ec&~}a&lI)2)8(_goYoL*n~1W19%+{c8uNbBMBX#jZa}xxgCCnr*TNU z4PaEHkuqTv<{%lF1uhjF9UPW;L?6gI)lt*n5%o!dOeS!COxQlCYF10+uE^66f%`8_ zwDL%@(eXin_$>g7Efg8l{s@tbVnZI5H@kJVauk* z*pi$27m|7z2W6C_M7O;n$$D)qFR{h7K4}x6hzwus1`}=|e z{;w`T9p9#*>-BH%m@hw!Jr}AzedJ5X)c*ho=CGA-nk_f~0Lz>2v5#hNvrggKWu)_$ z5+=c%@+lz>oQqfJb4VGWHF%R%34SmpF7=GFzUB5y zSujYIB*Q?Vs^Upprcj7@ z%6o>Vc^Uhnn!d8iz2aMAV|Y1v(HP^4%%hf7D!8+Ky2(-LM)ElBO9&HjpoJ`_p`0IN zJ#ICRwDO-&aszepY<>G}R;3dv3;iQ)ztn16?IObU&@$0wv zH;s8(e?!4}OG`(96k^3+66FWKIAEfoCm-45?BDsF88w~GvbITowvw7d?IXZ-gQ7TC z$(WFi7~iAfcz)r_CTmjWnnB|<<;Hc2dq6*~wq$F2i`XKBEys37j@;!rj@rPWf$aQg zIdnM|EAlXbHu4^Kn~fK?*OvbPfTt936tsA~(g?tHEXa~4XSn6Ve}UP<&PZg_Cf}i0 zZIOyI5j2Yxdl1;aBRdSfKA+iv-9#7;ZXnIYlGNy9R{MxCAM8lAe#~x2dXX}97Uze& z^=`%D$nXWhOq>o?LP@#qN}$yl$r|<7(-RB|Qb6sUr)&P6or74t8|m>mqOoWiL%WVP z*DFOysX?2H`yiy-Z$ATFz8|}5i5k>tH>*=;-BRn<@(^Qa2OVkm)eo zqlU%K0b9w9j6}*8mtj%W5z_7HMYl#LB)A#UXl2}JAIRyYGNLs_IVlHJ1+$ah%3wI?RVQ7BU& zdNWv4dl1ivi9|FV-^i9sa(zm7jXNm33FiyB1$&rWZ&2Cw8=`{kT!{_52t+T#1=yP+ zgmI#Ctb;i!8`I_nmRb<`@9f>(^{;8VvArMBP5u7>G_2eCu9kW+`H|x5kUaBwu79YV z4(@3AUv-Y0KmP#nUB~D}bOT%e07N-UE_cF`UB6>zpHjG*6~e>bq>)V*0o^&I?$IdE z?Xmn+uzzwF_XNRtSm2uhSp}6Z9F^yf#EEfOsEbskR^h4|7@|B|)s1ian?K!o(X9t~ zi|NN=7H&qrzZ@Dt#X1ys+@tc4w#YtluC1`Dgb_-2bxBPbRMi%ku zE0X)VFpMiVm{Hk{q+7wLCc54%!K)^}(>R!|^vNFd$8ZhH{~Avuo$ z7PBHDu|`_D4L%$ynCs)zX~YJUlt!hHL#23;GILDWN}K(dSA6IedWQJeSk-#HFC3bs zJHU=KpkBmG-3J`6Vz&Wnzmq#bvagf(60fkx!b=3mI>Cu&i!F=M9#(M~=v5e0T#Mod z&L%YDE`USxj@~)$Co_WEJa9ONVcKH~#OV_@32;VbMg+7Im@z;2KRC$sMi>i&}-OVufe;!CWc^=LF`nakACz|SKOdLpUjEW(RVON zL**ZF5!s8B*d=O>Jd-^A2t19J4K#0|G#yEw7rY&&7KxVH+Y9eB-}b^9I3?=@9^jqh zWwD|S(2ce2pN7QRozdi+r%_5QOPwWtyosWZvFvXmjkv)QUgN9##zY!2Ya%D1PHeI! zuqAWUc|RdrrzSBy#=^*pP}Znf^{hhBkHM^-{{Ul=VZfIriHd&$^9YR1dk!VU+t^xk zHta=0rdx`_ejdfYpL_nRp8o*<0ObP@QPcT&d-hQGx6=mkMy5neXstLio}WM8BhcqW zh{J6ktl4uSdnl*~wqlxWZj-pn!&C`q2q;qMHW_Lz;VYSQ?kQw$q{!@b5S}6llVH-t zmQaJs5AdxXOE5+L>{-M_D|@liWIrDICziRz)*Ws_VK2i8z&J1nXL2*hO5S{6kYy+I ziVr~IuEx;x(eF5rtqzzKEg8+zA)W+dP{m9!5$qGG5jB(k?OpcIHso3KkkWEAit*$pBXpmoE+o{Qy|V zt7)TR&YVutyE*`m zM(BET+*VWCE<41ZSV7S~Oq&+Rfrx8n&m#ST1!1k4665V9!$~(#@VX@TjH0`_ zwyGWG8Fa4cg=AGrc&ZHa*35U~hv0NuP2lZGhFZ5~1vz46ioLPm}0{{WAFe_PjYtI_fl zd{faIOc!D6v)D4MPlG%RL@mt83TM$Jw(BTHWdEsux zxWKN2_C&Ma1ZnInEG*XI2`StPnnO8av%HI^h!Z}IHrfS>?gY4j~u28qck*UXssU>OI0VL~-ug7Wl2r)+}}#Ak>;N(UCpY!-ujPUeGd*p6ob~ z)@~GLnM+wf7u`Um9*~VoGXp^)0%fVtjI2pPI-#6OSI9n4 znCgSMH(>@Wtu7(Isw&5~W3z%MWr^^Scd?`)&H=4ik11hgsr;M0k7}2LB)phvi72{= znv9EpfrH$_3McR}))U!X2dv*h@kWTE$q03Vo9vh)hA7YIltuD)8Vjm&Iw(kyh@!dP zx|30Y91-Wh(Vhf7m|fp zIkKgNWDp)_9=uPl&fVVS`dvp$|mu5@Z&FSX+}j75@NZ@)(Qr8*(jzC>T>q zk=c{jM4_j`KS29U8B)?2hwLnqM|ei|e?!|tj8xr(*r6N1^bd>7w=9z$%M{mSZW+mJ zo=9PmnmGo>r!5prz@u$wgaHQTFCv$l5*;i?ay^xW93_UcF{W|OgvtTUOC|6pr4hPQ zh9|k98%qck26D)rjT}Q{6iQ^|5bqlq6Wk(da0!GXow=u$(2{CeL@p7;Q3WsQ8?1iO zWa*ExZ!vGjE^!;5<_Hg64l;d2*#7`gD_zH8v(TGmv&^@F$*f2)+}L&{=CDjGj%WPi zG!_m`8Du`a3@gD+ccSgTWLm+&-%Pf9FD2g+K$0Z=k)-3fx08q2ptNdSpti|}jdBHc zP0r-oMwXwAW(9aZ?ULwen<@(GK@{DuFLX9Bs1tO$sgkx9?zJVGglC--qCk-pc#hrN zphR7R1d_P};H>l*Y{saD;7Ni6TR|x@co?2^*zp-N+#ymS=IP&Zd=#0Ee-czdA}Osq zsQluNZJA6+)(y0aOlJsFZ-Hj}70=KA0PlV~`S0<*4G>O9bWDlpR+J@{?m`{bi1hm# z%Q$)xP8%Fe_$1EYNf4lIj$BBKVi$IFl-_3j!S(eVu{{pjF4WgAauL*sVotI%cz%@j z{{W=_J9Qy)4qctuNN`-XAgs$jQexu=@8a$u zaumdO3Fng&F6`8BVrAfGB_6}ubk4P%iQV(a_wO<zTOPhZi-s>H;B7t@dUL!57ZQu|T^T0(1l%&Kz#rMPf-udJ<~HX( z;iHgMJO-+4j4SRTCU3eJEYE|$c?<3?IIJr{Ckh`hDO(cYm`S)FkTUSwBcL`+hEory zR{BC=Y?T2N!s-2|iWZD|asL3nF9s-Q?kFg)vLEO&grs(TI@mVo?q<0?r8#xg{_cEU zw}1EexD|d6m|4Hy0?xbe29i(wiB&rP0Kcfp$KrZ#KZ8$W9RAB`M_~)FXC6+8e1&)19tz}k%|B+H@BLtu@X!6o+$Rz7oFn_h5tT3g_k8u?7k>IIM^sxJ1=F^PtnA-eH62{-TMX`1)XR>i0{LP^scjA{Y8822xoi%G-Jaz`lS7pY0F6g_f9 zj@mN6dpOWR0&)D1v=oTFir6Lq$O=LfeS=g@g&5O_(FV)d8)y-!L`hm1EXH`KbGi+? z5>+xXf_Mz{oX$&~H?Rz*`;F%G3|c8TXg@{u$&xu8q7uRv4ZeEq@7yDk@5oqId{d#1 zaFd|=X<6^~bEGf-0Gm5M>bXsPv-M!)e-*Y~`Sjw3^2q!Iq(;(l3ttU|ERtW*P7Tok6 zmwv!d8j=C$Phd)qWLLOJ@fv`2*_8|R*&-NfjL*JoYGpP3e03=zyhSwL+P5y-KFJu-TDB^}e z_#$qEa*8rRK7@gL_Agr#qwJ7iOR}&#E`eL(yj-vknK1m*zQd_+xIX~ty z5;kY+rYFGaGkk4KuBN{MZ@>JkXWBRa0N5%&UXeHRuX#Y{#ZCK5@5gkL*#5j!{{a5{ za9j4D_V{f3j{Ke%pBcULBDg;P0GtIc_x%3=`aVF%zP`t^+O+L>2qFGbBJgKQ(Va;P z#_BPLvBkgKlk*#6d!n=S9I@W+u5WQcm7RR&+gM(eZSn;Z}U4d@P|KX zE#we6`9(!P{0ifv{{Yxi_kOKV>I)BV-~EQ1zLJl?hF^fIXF9JW{dqC-ZBB3AbHBgg zoJs20_GyR5+irIFo#g5N0QA8Fzv(8e3fvURyAVg*-5r9KM*_S=n;eLPZpjNh?@zi+ zJFW=T8C9DlPwczTU%9$^kTOc+0@heuA_d|A-nQ>MQfUS9D9D@;xf_q$1PwpnqTk&8 zH;KFcs~dgIf2vXRIM3aadPsVj?1@muQzVt>R68tWg^5e(C0I0)DWX(Ek(gn!$?@^S#A8WVoo}VUfllH1F zTffB=zIsO1@Z)ra{)+-R=l}|qb|f+B{{W6@W1reaXxsc~@cey!t5tvh0AMbGc;kt# za}LUm1welP0QwaE2Wm~Cb3Fe5lTEv=?>^py-bYMYl=Gb|^Ct!0?IE1*y0p+w`q$XZ zOL=;7XWr#ar(ZAB`-qDlQDUMh1ycaa*@GQ9Fn-x51H7(>!rO`&NipsecT5}KcKFku zRy$W1L-Ypxq1}Y7h%!}zV#krXEuOGz)+)kRqfVICFNX((b3uAb_eYz@#dMymJJg1f zn>r5eea5$RP@tugB9dquv|!7y(!XItUF8%v{lzCj1y`WU_Znp*%@aAkD2MMqq7Z^d z;0V92k3WiZ)!{rku74(1-l3RJpAwuPrEuM>yd2(m}56Bj*EHK8(L3&Bknt(P0(NtBB5jGPFT zu<;ft{l8CtM-WEGvq4t}zl3J)bXo5&)7$?5Gni6Z2QQ_*S_WC!Wsqha7V?NU*@7&K znM~6!$WBxebqk^pf?Yq8v9o^yj{g9NYP-Dc^p7ei-5J@WdN$o;N4`nB@5X0GYe*P}_5M>*4cz{so2Kka76`0MNGjJ;Y|# zlKa55_oY&sYwx&D$noZ$HhxgD>EE$uK3&aooj>*fIWNoNe!l+zi{aXSq8|RE$#o@S ze8oVjJx{}&h`y8Ws9jO!>OT7J+DYuSf7}(P&VzDPQppOUHzg+b{{Tu{XFe>IhFK*k zBA4oNMAPLQd*_}!GCVP3zhu9gGVl=h^ z0PN@*<=)zN zU*x-)F8=@!Lha9u=8Bi5G?KiMUA^2?>g3G1e*{>$^D3w>C+Ve=nQ+oddOPzw@H?e6 z8KrWhS#e0Bkwg@>R+8HIlP_qJ`vgkY5{c4?4hmTF5_HH=$Hs|yr|D+;+o|=3DKlxO zcJ5%v_Y_|a{)zWPxl4Li<)0hiNSOr575)Wfe4VsE`A12){{YwQHvMUsz5H!o+21yQ z`Fqj;-3Ed{{SNM-|Ca+yQ((~i*MsO-`|$L_}_ZKdl$ha{(r^h=k3H^YwGb# zYxgyOfAsV4YlGk+%s>69gNb>~0pst(PezJbClXHcCq*IFXSmHi8Tv zVI@FfQkeK}LJqUgZ61gRu5se3q_WV^QCi*BsT^a8lcg!z=sb=4_DdtT<>JUxm`lOC zuJ@}Cj|2YzDZo*O@b(2>fByihqqyE^)To~S0QIKSX4Sp*ulKYYeyMr}jp*%*zc%}O z(J0L>FBHZ_`t_d56}{#l=RUvZOFhkRte^ew--p@yf9?c%UcLpR{{UW5qIhp-@BQao z7uTlVtLRx@_D4AKI#c-*p#Hkw2d0|Vk#oj8{nVY0yW)TNE!jxs{{W@#!w`V`eP?w- z{rv^_qa3+=N;bInPUiw;5}(h=yV3XTlPx>d(`|<*ntg^(xa{s9q+A_@r(a`m%P_E- zey~ESkHndSnmGL;3p}Qe5bf|}<4r+z{{VmdwSth@e@!S5(tCTHh;9W5@?yVPOKJ_H z&)A>*Vwgt=$Ig_RKoYP!2WHe=+u@56NAK5g&-4kknq%ukp0Xx8d+Qc-{fRS$=0VTH z7x(eOb$^jxP)ho9z=hwe8g3`2L>vDAw-e@fV|{#%7va+5M9bp5!W}IXDKcAq(>ip{ zzu9ut{{T+fZ`ptNPUz!(vfxgyfAA!H{{ZlM{{Rkn?d(LA{l9ZsdauS5Pup9+{ZV`V z323`}ZU;H+RBwTw<8Jad{7>(OU6p@O`}+R?+1Jm?&3g0FP@ZM^F662nz8*Fo>)|K+ zVB++Q>S^Cvo2pl}=(A1_!-tDSspyg3(~)r?${H=dtzmclNakgaP}p})d5-A^F}CYW z#57;*J@MQR#CBXq_Cz_d%aHNP1r={cwwQZHeLh2Z4p|)0Ew1{1(`qb-5jN9}d5Lr2dg4{ouaFE>s{NkCizk>$y!nM`Po|k=u^< zl-c6{0O4d4?cX_TfBOd?&A-IxW_9-dGdl+xG?s{HkQ030dB8oxzx^Sb`|OX-+gcl) z{{Yx^TmJz60PMr(Y;MS>4}aO=53lQ`Ty1?crawQmPlTgn{={s5^n*XY0?jFO6|T15 z&VlLoOw^pelkcJi@BG9h{vU7gM9-cf?0$C@_8tBHT0i%G5Zf#E6h=NG-qlEz*v1+m zWN->DbaSr5lKXS%2$}3J8xXS3pG9B#f5U?Q9CzZtTb%y@{3`zdzLYefJxEOf2L_xW z@{$A%tGLT>L4y?(Etr@804*d@@fl1=AtXbBmNBB~`A&y$(6ksO^3O52CikxAy1#@x ze~r*wHnX=0RI3tWn=OwF3W8K5q3hG&6*DVy$^@t^XbSJ+7TOaB4_dEurWPO zet7<##p$Q-BZvP0TM5ZCi?<*&bM-x?>GdU}=S3SQf>U*Kq7dcwfvwA-f=Kv?FJ3#v zSopbqX_mfNoA1XV~rFduJU}2R?#GqWi4&W){~v!7TqEKoe35cjuAKG z5!v=MBZcmNyi*o7mUWdh3%l3hlKv|{J)5`oZ|qZ)Y#QE+lbiSr_t8PXADb!ImhK^{{UQ>8~f^@QTP7;C}qH526^TXKPDmY$s}pK?R>k;!~cc{I`)Kw1T~ zJP>xf#%-R2**qox0FVCw3B}I#1rKrm05u6W@&#!B0Qna&rcDvqyqm)JbsR|)a_^Dp z4g}8`V5rNe#UxnQVs8sf#JLi%q8CP*d}b(^`4aL>&IB@E1r6Xwi7+m|%U`zc>RpfD z{{WbFzN+t#O~dz?!f`j1y)Gn{jgpZ@ueW-W4di$<*tin#hT)%Z!yunO0K7iW;qTEy z-~Rv%`=`AO>&F?dV@?WvpJNZ7!q>*_SroOhu!jeHNpJK^h@_* z_Ob62(=XjmNr&Gu9RC3Rs6@`gPB%Jh{RoXq)$hUgtFDW^pMhiB?o%r-wEmaR(!1cS zQTb~B02o3s#cVa{y9^_{M&MPgEwQsnlrp$=-?xz$!)Ct=4eEK8{{XhkJahcVR5sq( zvf14Pf#ZT?&KV+hqj4UE3_GAF1feIu^P8gZb)rUoi68Pd1FC(VLgFzu+rh&#>)f^^DHXiyS&Od@PIpX5Kx^w-A_;;!eyv^%2?@{?J{V z3MBO8BU%}LcnZ-Oiu>5UqWLrh@pE!bXm~ku+q7P#>oGb(#Et9Z+^u}kAHQD8YOeZ& zdY}7(wQcmKrx{3pWr{CxbttA7!4bN8H|X*|Dfwk3Xa_IuM);yIy2YLtreR5b=;yJB3{{XX>q`UpX-lusqUH*T* z*q5nPLCGfEx%nGU)QLd<0A@T<-om#psISKuV$M)S!DgrN>1=w@{{YDweNCXmN_4Zq zBRXpFYs$#*rssxc31&1F(J0Swv(!(G;uXI4zKgckIuspF0o5Za-08AayVOdwwRX#6 zd95z^NbKS@CPR z_lACSZJz10cA^`90#4&_WD|SYg!0wj{G1{i@w)FdAqH#w9k)96_a84!XmdFIROQbx zS*Mm{n8^w>D#S_q1Dfw9FGlBo^GSc?HkWV1-(TJ3P5SBS(#f!4DeiJK?A8y^MUD2-w&gVFrLp5zKw+H`SW6 zm+17slP*xHrgCz79xagLZ@n^o#H*i$;w^uijsE~xTf2exqB;{veVW>XKXx+kEsfx; z3$`bH^pIa<9>FW$WYpp%8x&bZXrYj8`{;wlr6kM`b}^65gpNB$Ohn{<;utO5l9aNe zG;{m=uThujx<+^Q>2qBm!uq`{^)d7E&U=5>_Y?R1iwM8;akuOEh0{AWjXj_JV?iw% zo?~~*yhvyL(M2!rAo2##Yc8Y62=>`zE``JS$#?p}67~6tKl~kf{GIXF>3;tJwJT5l z?<7!SeMzD!Zg>>8)`&)mvxd{5I&c4Ls(8_x#H5Y;;d>aChNqdDl!rq~teDLsed zQsM85@3z~HwDjy>H!;lrl`Ii z**_>G6z9GbWP0DfTo*YeYTEPLDvbbr6TjBZZv{{SsA*lJEpk~|DN z4-9l6R}SU&RQ(0s^$rmtgvR|#f)n;us%<40`PD{>P2*~eO4Mxs0OV(Y%LLfVVqYux zh4=V>vq%2`ho(H@u;Y3M=s)+^ue}8L`cSKX$pf+FhTl*rqrOB9xw3@eF*F~bXLk5~ zkb?|dhnMCT=cY*w;PIzD|!Lp?<)d`O6jB05zig*!MDd9-!G6@}d2&nBT z25?fmo{mcjMdJSehW^?A03u}e*{z?{BmQ&Ih|Q|Qul&WX2)MEXE6*T{zaaQdkpP{$ zB~)DO71#JWB%jbj_rGJjw>^A1KHL$eH#hVe*uU?)xej)>-8Az}Db$@vv*=k#=sm-+ z3RC1rO-QJO%zPB79wVMyq^5laY?eOUHQ~ZSylJssg8u+1kCHfuNQ;{gfk!jw=YN?L z5s6bv+fZ0-?)-11vCopf_;0_j!_GZse)x90PO|cK?iy2|#{Pe6m*ltIHZ*-rDqFOA z%AVvuohLZR5)=$v@gYgDs9c@1I!}Hi>n@8i+rcKvDpeS+q)9g;xOY1!dJ2f!4pj7s z3K@B1{1!}xUI~fTdzY0nM4*zq?Ckzr`9IZJTcuax&3}R(=i~k)iZKe@$NsXJ2PNT< zl}O^JcAdjjb*z}`eC1a6Y3P>(+L53 zl@7Fu{{VhcA3p1I?lnh&4|!g+=d;LMze;4$H`jCaO2=yOO<2r|;W_S6MH#;H-85{R$J=a;KsbQmr8s z+O~%IW;uHiTvS! zt?`wBxj_0j;dvJc7@zmx_mPT4PMWV@Tl>X)KI@(R+dEs|d$o`G`}$B4x3 zLVQH*I_zV_t+(8YQzI0gL(kq|LBqAIvWMzA(nqz`A4~jrvwWg@h17qHDLk+Rg`yI| z`2PSo-Suh{+y3B3KkC@p@yyqM_Cq|rv}DwR8MkPaTy<%zx26)OrkXPnuDLwxQrB=^ zVVrqNfIsnmA>NuHWEMl5BMCU(NP*nK`d*3N{`MW@TS5?y4>~7enwdxX_uId)i$)!O zv(vx5`~K>UMrF_+?I+j$#GeDANDP$=Y-a1>1+Gy_iA})ddN_?n?VW*Q;VX6yLi_Sa zI+6IE-5b|(lC7hvHb+&V#}b`0i~}LW8E_opf$J!;0!00RCUZ!IN3MeVWi8@YF_MGh z9XkwrIRaF7G0coujGgdrzt=ah^n369H~1~~^%z9UJkUm<7voxqPQLTs z(;WNvD0IKyX81P3vwkyo{{Y|pCI$YR{l=~Rl2F*L+z_PkrK8Z_(Mno#X*p-eXiRv( zDuUVEBGYbcks+*`SMWB+;9bA5k+JE(L$nY}!gYHdJtoq`hjBtm6HglKaxgeelS17) z_xyeS)nm$uw$*_)U;Il?_RwQNBwcUu61bm~rFcF+jQua9veVjEJ=ra%(k~ohwCfSS zPoj@E=>z?DZg8of?esl%t{M5bsA~e4d{1_p1^(K9BEg!w`yoy=*kT&M?ZCh~H z#Cjtht&R#83A*Wy6zS0KXI?KiLwnxyLR*-m^^{`)&dW>(R?b8GG&FsACPciJcp$`} zWBn7Jdku}z3L=2CF!45eiy7iC!s0&Xp%@E9H?NxtZSVH#{7`Z~d;CxU>$m>^0H}BW z0M&CJKYIo+iQn~7t-oIg#QcFdp*>7N&#_#XP~(=f%F)#OC?m*eoUZtX3Asab)3)bg z*OW(M(ioPWqsr4iRrk#{Zv_z-w35?F6|ct*BQ9EMk8_O5LPJW-M=NNnIE{_`XV2q zZBW8@qbJk8gDrC=Ixv2OJACH@!@m&_a_9bCqMzU6ew#q+H(H;P@)()Poi3FQ_<{MS>j`Mdp~fsobQ-f`?TC2&RcYe4@1 z#{TzgM((^uqJrIafI5ld^uM(zQtR}{yk(6|naH8{6F@^ilM&CzgF;hl-HoNfFy0CE z2*^tL3F!lTTxtBIh3ef8O;$%@tYnos8Y_3)n+B6w%hG;(j`Z*N78P&5`h}gi{{YLq zZD0QY(HMqL{_E~*{{YQz5KO)?zxMf)p7%0OBiHUXO#c91{>Q5yf5*u5Cz{0~)e)r$ zm1Gk~$U4U?E#L}5C?kh6*hIt_rSHirT@i9*#|+nf5uv|>JU9f(4aC#q7gi^6K$VvdJr*z?oyM?Su^S+8Y-^Zto}YeTYYB)$BB zJnQP(3pxI0{i0I}2+^z%M3A&YUHjrtqsZ;i{{Vh(PJ5GbJ+yx9bpt75x<4KwPHT=y z9MU7_j6QJiqi$zki8Wg$C@a$*$mk}D_YJ`Ki$>(`>RRS5EEjAJ2$TeQz>&qwYd;1Y zq0Y1wE=D;gZF=o>HmH360D}hKf6!8j{{a60Nq0{_{LSDG-TU1=KfkA85=^_4J3a;m zi@$s6dDH&>vYpp_eCWKa7~M6D;DUj$hbZK#|GnOb@Q<$#5JN0yir+xj>^Ft2GQSi^nWV1#Xzcu|Ze+hw zskj!;i-G&*K26T;$kR`RGb_l=AaQCTiece2E(73W%;0hDOi5TOn(;>uqPV_fLCY?aL6R zKH?T^g=2i_LEb00(IGt1LEipj&-X@0Opvug9^+ETUk=T_Clp0UnB4?@7nB>0-4sQu zV!-{1`2~i1r;59Z)Q76=`!q;nlo{{SNzbs!YtL@tZNDbDH@rbA#UH36$7ixj1snTg|bgUHGs-*lhAxSR~=+kZW3 zjC%OmlN?tli3IyAGQ%76XUOeGs6s*PNf(t3r*N$b&OJ&A9-joxoMtsb;>mJO#O{cp zoepmC#>F=T`b>q-Zb<#v6&KP=jRKb1 z7KqftFtPgxaY#$YrGk+l61_7SwXq2ex{sZH3EwuwANc^O#(FfHEoRVeXuFVJ{{ZSu z1XQsVP)B5KKcy1dITxLPL-s;VwTz0Lq`m{{WA>(NJ4KzTr?s<%8S{Jy1IHC#v zGALf`&YqO&`P(PbdMb%nDyFs&NQyDZy9#Cc88BPDh^WWdoW4Z-Sb5U!#2(TVu1$#( zX4(gU=i>b0;fToMhwQiLqXJQUZbo^bUS0@Xjsh0x6&&@G$b z?_6AvCEfcPsgNoCDJ+kP(pFQ~32AkofUoW^qXX-Mkf@2fgKHKg3g6iT?LTGGjJdXp zu=XR*T`hmZ-kHxJN6jWrR`a)gZ~hyr{{UaX1eej=fF-oh7S7}3K!_?*7=uH#Y_7x} zU1GO7QFEFyL+_}g$o~Kx5A|t|rJvF$OjQyik+wl@kn&b6OXN_K9()saIg=k<%j#sA zxOFJLFqnq}W2mb8kO)MjDaF&6b|xd1(Vr4Qo}q_ma^xl@==7S~d6D0RbidX-?xGiI zzM$XVgkT_$nA#$R1UWZ%9!lZtYBtDfMIFPz5vKnDs9Qe@?>RCp33<(vSEJXZe@G#X zr{&-8=tSQUdUf<8CVS3`_9rIj=p(u8n%W^594AyXw?f?)XoXVpL;b=`jY=1QzVxJy zLG~&%eekT-rC*Qx{dfNT$u?AroQ;VBc&CusK1*$t91Oy0bQq6 zm{kTATREB!H`yZ-HxMatU~^m17f~)&g`-;w?VqM0+6U5i2h=J;V6#xVNn2tnf?=|l z`#g+;(3y2_A|=I=KlDR4^vWn5emb96yyxTXFGH3&sd>;3y}#(2F&}bhDAK+Xw31v9 zVkAwg6Kx=|42a&kGDnPjAi#f>{{H~O9ZA(U5$JFK0OPCi{{SQ{ANKx~!reX&RRn4$ zV@Fgh1tT|MzvxgQDvH3r{n91gMB8XpvG_kYnOZz7T&WQ2+f!^W_R~l5vdj1YjsF1V z+atY>8rl&g{)iJ}EIe$7%ut(b37|Rp<=lELELoYmr8`_h+&dG_c48VL^xuS>u943d zn9?)WeuJjl&vt7Pq!H|ZI-V?AlwGfi#gIxeQeNBi4_4%OI)47MPbmPm97r~CbmeNbyAAM69LcaW9^)RL!l4LA)go=v3a zIEZb9k#TkYNzLz#fByg(>HWNyK=#d)ubhyw&BK|tVW+kT6~)?28E%(>&tGRfP~?{ez$88{4Ams?7!yL-<^NGsMBa zA9?l7#``pyU85oR62fCKQ|Cs~`u;~7$y{A+0YB~j-3X2+RlzA3CzCuKNmGwyYkqzi z1B^I)YuIT5C_M zzsi}={>f@xudmJ<{05Bf=uc`14J%pu_5gho@ zmfjs0#DyX_#Cv#{%K7CWb^j<@zkzLD{5@wR`W$1(aDi#%&VKPVDNlcOy#XbBYbfw@I zm7MWgkiJ@Ci&Cd0L^5$>r>?u6jAmOL0vZ6jOdWg$C99A_r~EIqE>z2^AV#zCoDc&Somss1F9_CUp7u1im33`l#iONl) z3^qreHaetYB=ZzP?HsId*8`&nPmzw(x*Jd%q37G@-?c^j{{UNZ)38NHh2}+Uc+Sx> z@~py>n2RMF373JiyUb?p=@gX&v=>Gs(w}(A+4Urub`m5~a*rIH-$wL{0;JKf3U5?) z+4j^B&;I}_(ckCkIuGI=`-MjbC`R=r6bamsD(~ExMLVKJC*FjcnBa`$U7DFkc`x0$ z{{Vgnli#+xl=+gA{_ALfV{cMIN85Va8fheDBax};VU|(uWS=N<$qI|Ckn39xa)p$2 z7`hpw&OOLOBo$cu7j(ye$Ti^mvL>S3Y|_NoDeI>AYxD$dA~1JXaP=>i75K{QT_lr_ z#<3W&8{C~v&xTisl-FUKKj4`vqe}k(R3L4peMu>0*$-%0OdM`P*2;c5CF@Z7h?Ozx zqjBY~2KGnb)mo5a2M7eUp2JOItPChsRGc79GrI71U;g9^VFPg4S)^ zlTtUxz;DUWWR`Grhl9(4bpHUn{T2^nDJaT?&w)B-i86-KwlXY7ro%JN<$u`R38>3N z%Ke}Ei4>OXL(@aRWicN(5Fq91dW?2>{-l8!P_&`)GZ#pZV7dex-bm%Z{^?Fk>VcUz z>97Xf%u8T&#A$*#YjUE#F<80LX^ut0<9T-jbg%4SSYtsg`w1)<9;BSVmbg{%l5h58 zl{MUEXEJ42S*o>5TM)&@{{YB)g157*vfX$t$+TSFu9+vl=$ifrg2yWV0LL$H?|YNE zzHaQdO!x9FySIPJRF~+mFi-X;d7TH6K4VsS)g+v}0sf{$jqS+P60r;kG54o&!dR-) zls$&;N7RnQ{14%Ki7W7q6{op`xbP&p%(>WFV$RVG&U}zg;zyR}alyy5nLLY#C@Vmp zobV-Vd+PxneLI8tSBxbRgg3htC4maek2xzxlbJU`qR|7C?GjDFWLlAnLHlT5UrACk z8-_xv++>DAQyv5}{NB@9^H3Us?0 z2yG8!BQV@&Ig64VcM%W6vSQg|CS*S*Xs4NoCMD=n!R(NBX@fWCRx?(hJKDqJfao6X z-~zv=o*CbAgPi_{*cuTmpr}f1VN~yg+-y~JH;+uP`+C>z>@@Y1p!S$|>!^3+5&r<3 zy{M|9Zlsjb66Getr!z%i(&(G?o6Ftub`gE)rSk8CopsJf-~GiG`TqbXsrH}X{{TE! z@%8mx1do5P_d~s5;`x8pa{;eP;EVh1^YuSHp{{YnDH}9McQ|)4%y%iqDestA5wxf+p zi~j(DZnlm454snnqahc@uYKluLjBoKVLt<=lbBi37E5=;_Wt_AJ=KPP!k^b*$p0G82{^3K!0{{W{D{dM5qpZ@?tSWOZ~E6H@caLsWuNJVKhwVj*r0 z)*}gZ;oZ&r6VuaM(hL6pxtZ~X`S(xW{{Y5)WB&le3xAvXp9a?PC%@b8{N2wx=SKc^ zS|5x?ucE8>-{1BAeqc`D_-CK}ol<5$AGFxUew|xaUu!rkT65YR0%hab5xc)-#Ibp$$w0E{EHT1v2AMk zK`)$-xyk_93d5sN(^)#1aPQmW$sh5q#T)3K_2<+d;uurUBe^UE5Y0lO&P&XO+?80&jivnWLDH(~yL zDlcphWMrSDNms>LwTu470*$g47L z0?5cL^3h2>fsO?VMg`FYz8{q|Ut2r;YFj zmiX@Z1+l_2Jiw%K%LMV%xcxV2KH!CloY0>*z`GanVUv5=;&Bu|k_owwJJy){O&6M0 zPOXundzeQNTwrC4Tk0m0gB6&oR~#uUU6NwQ*npSYQ;e7XAs>8yi6RsK0Nj{&`NRD; z6@C8zC13vlu6iH0yFSss^ya(&0N|J}3{k{%l@0_FMd^fZ}$z+r`NXP zNpaFjlc92BOWS=PKG-fHKCK42IbnMim!qH~yc5e}%cz8psO+qCXGG1EDVc+}rZs+o zi@C?Zc1d&O@f*{=Ecy3jqvIe?Xp-e|k-r}zp54@v&&*v$W|Id8o@`6volqF{9vE?_FhRn?TVnx@7tP0NXPyJ32-36O|tF`rpIT^U&kF zDf)>S9mwrY^#1Y=ua>kHZ{LnLbLY6< z4ql0!{{a4Z*{{ZSy&=t-lZe*1l2z*Hol;gB^47ue#NTBld)-lY}->7f@ z09VDnyq~fDM^X0Bl~SYh^mAvIrEJ>Az*syDqR9SN#E375_Bt)rzkSuIgEf5O{{V9y zT!B9R;G<3Pe&>44FAWT0yHQ3Ltt`?Y$7>=kGBYK8J<~L{<|3xhx|=?Ha4m#RZ#rhc z$`z3Z1w5xQ%*zL{AN-pWrv8igX%~b40O2)%_tyPwV03ZxO%oUMj(%+~aB9#00LLE6 z{M%<2Wb8H3HPb?4Hz9Bty&j zVtfApe^2z|e?!Z4jq~o^FO2N#`Y*fTOg=;lgUC)<5`j}@Lx1qJ7d?U~oan;c z?em}Ec_%-p{{XyQ?0O>l_J-sD@5tlzMzD27#-gFGY{3 NrM1+Vo&)~?|JgV-Ry+Uz literal 0 HcmV?d00001 diff --git a/test/fixtures/ean_extended/image-009.jpg b/test/fixtures/ean_extended/image-009.jpg new file mode 100644 index 0000000000000000000000000000000000000000..17fe6c2b45838e21027c18e6eb986c2f83bade58 GIT binary patch literal 111748 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%0D==V?`;_-dD=&RjN?4abhI6$%0MGeTm4G;)!_ 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%0D7Ujw(eUj&=0$UJAt=MV7K3%m`dr0BZxvI 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%0D|?b0;2=Uar*IUVGC-(Cq- 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