11697 lines
2.6 MiB
11697 lines
2.6 MiB
/*
|
||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||
if you want to view the source, please visit the github repository of this plugin
|
||
*/
|
||
|
||
"use strict";
|
||
var __create = Object.create;
|
||
var __defProp = Object.defineProperty;
|
||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||
var __getProtoOf = Object.getPrototypeOf;
|
||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
||
var __commonJS = (cb, mod) => function __require() {
|
||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||
};
|
||
var __export = (target, all) => {
|
||
for (var name in all)
|
||
__defProp(target, name, { get: all[name], enumerable: true });
|
||
};
|
||
var __copyProps = (to, from, except, desc) => {
|
||
if (from && typeof from === "object" || typeof from === "function") {
|
||
for (let key of __getOwnPropNames(from))
|
||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||
}
|
||
return to;
|
||
};
|
||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||
// If the importer is in node compatibility mode or this is not an ESM
|
||
// file that has been converted to a CommonJS file using a Babel-
|
||
// compatible transform (i.e. "__esModule" has not been set), then set
|
||
// "default" to the CommonJS "module.exports" for node compatibility.
|
||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||
mod
|
||
));
|
||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||
var __publicField = (obj, key, value) => {
|
||
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
||
return value;
|
||
};
|
||
|
||
// node_modules/obsidian-dataview/lib/index.js
|
||
var require_lib = __commonJS({
|
||
"node_modules/obsidian-dataview/lib/index.js"(exports) {
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
require("obsidian");
|
||
var LuxonError = class extends Error {
|
||
};
|
||
var InvalidDateTimeError = class extends LuxonError {
|
||
constructor(reason) {
|
||
super(`Invalid DateTime: ${reason.toMessage()}`);
|
||
}
|
||
};
|
||
var InvalidIntervalError = class extends LuxonError {
|
||
constructor(reason) {
|
||
super(`Invalid Interval: ${reason.toMessage()}`);
|
||
}
|
||
};
|
||
var InvalidDurationError = class extends LuxonError {
|
||
constructor(reason) {
|
||
super(`Invalid Duration: ${reason.toMessage()}`);
|
||
}
|
||
};
|
||
var ConflictingSpecificationError = class extends LuxonError {
|
||
};
|
||
var InvalidUnitError = class extends LuxonError {
|
||
constructor(unit) {
|
||
super(`Invalid unit ${unit}`);
|
||
}
|
||
};
|
||
var InvalidArgumentError = class extends LuxonError {
|
||
};
|
||
var ZoneIsAbstractError = class extends LuxonError {
|
||
constructor() {
|
||
super("Zone is an abstract class");
|
||
}
|
||
};
|
||
var n = "numeric";
|
||
var s = "short";
|
||
var l = "long";
|
||
var DATE_SHORT = {
|
||
year: n,
|
||
month: n,
|
||
day: n
|
||
};
|
||
var DATE_MED = {
|
||
year: n,
|
||
month: s,
|
||
day: n
|
||
};
|
||
var DATE_MED_WITH_WEEKDAY = {
|
||
year: n,
|
||
month: s,
|
||
day: n,
|
||
weekday: s
|
||
};
|
||
var DATE_FULL = {
|
||
year: n,
|
||
month: l,
|
||
day: n
|
||
};
|
||
var DATE_HUGE = {
|
||
year: n,
|
||
month: l,
|
||
day: n,
|
||
weekday: l
|
||
};
|
||
var TIME_SIMPLE = {
|
||
hour: n,
|
||
minute: n
|
||
};
|
||
var TIME_WITH_SECONDS = {
|
||
hour: n,
|
||
minute: n,
|
||
second: n
|
||
};
|
||
var TIME_WITH_SHORT_OFFSET = {
|
||
hour: n,
|
||
minute: n,
|
||
second: n,
|
||
timeZoneName: s
|
||
};
|
||
var TIME_WITH_LONG_OFFSET = {
|
||
hour: n,
|
||
minute: n,
|
||
second: n,
|
||
timeZoneName: l
|
||
};
|
||
var TIME_24_SIMPLE = {
|
||
hour: n,
|
||
minute: n,
|
||
hourCycle: "h23"
|
||
};
|
||
var TIME_24_WITH_SECONDS = {
|
||
hour: n,
|
||
minute: n,
|
||
second: n,
|
||
hourCycle: "h23"
|
||
};
|
||
var TIME_24_WITH_SHORT_OFFSET = {
|
||
hour: n,
|
||
minute: n,
|
||
second: n,
|
||
hourCycle: "h23",
|
||
timeZoneName: s
|
||
};
|
||
var TIME_24_WITH_LONG_OFFSET = {
|
||
hour: n,
|
||
minute: n,
|
||
second: n,
|
||
hourCycle: "h23",
|
||
timeZoneName: l
|
||
};
|
||
var DATETIME_SHORT = {
|
||
year: n,
|
||
month: n,
|
||
day: n,
|
||
hour: n,
|
||
minute: n
|
||
};
|
||
var DATETIME_SHORT_WITH_SECONDS = {
|
||
year: n,
|
||
month: n,
|
||
day: n,
|
||
hour: n,
|
||
minute: n,
|
||
second: n
|
||
};
|
||
var DATETIME_MED = {
|
||
year: n,
|
||
month: s,
|
||
day: n,
|
||
hour: n,
|
||
minute: n
|
||
};
|
||
var DATETIME_MED_WITH_SECONDS = {
|
||
year: n,
|
||
month: s,
|
||
day: n,
|
||
hour: n,
|
||
minute: n,
|
||
second: n
|
||
};
|
||
var DATETIME_MED_WITH_WEEKDAY = {
|
||
year: n,
|
||
month: s,
|
||
day: n,
|
||
weekday: s,
|
||
hour: n,
|
||
minute: n
|
||
};
|
||
var DATETIME_FULL = {
|
||
year: n,
|
||
month: l,
|
||
day: n,
|
||
hour: n,
|
||
minute: n,
|
||
timeZoneName: s
|
||
};
|
||
var DATETIME_FULL_WITH_SECONDS = {
|
||
year: n,
|
||
month: l,
|
||
day: n,
|
||
hour: n,
|
||
minute: n,
|
||
second: n,
|
||
timeZoneName: s
|
||
};
|
||
var DATETIME_HUGE = {
|
||
year: n,
|
||
month: l,
|
||
day: n,
|
||
weekday: l,
|
||
hour: n,
|
||
minute: n,
|
||
timeZoneName: l
|
||
};
|
||
var DATETIME_HUGE_WITH_SECONDS = {
|
||
year: n,
|
||
month: l,
|
||
day: n,
|
||
weekday: l,
|
||
hour: n,
|
||
minute: n,
|
||
second: n,
|
||
timeZoneName: l
|
||
};
|
||
var Zone = class {
|
||
/**
|
||
* The type of zone
|
||
* @abstract
|
||
* @type {string}
|
||
*/
|
||
get type() {
|
||
throw new ZoneIsAbstractError();
|
||
}
|
||
/**
|
||
* The name of this zone.
|
||
* @abstract
|
||
* @type {string}
|
||
*/
|
||
get name() {
|
||
throw new ZoneIsAbstractError();
|
||
}
|
||
get ianaName() {
|
||
return this.name;
|
||
}
|
||
/**
|
||
* Returns whether the offset is known to be fixed for the whole year.
|
||
* @abstract
|
||
* @type {boolean}
|
||
*/
|
||
get isUniversal() {
|
||
throw new ZoneIsAbstractError();
|
||
}
|
||
/**
|
||
* Returns the offset's common name (such as EST) at the specified timestamp
|
||
* @abstract
|
||
* @param {number} ts - Epoch milliseconds for which to get the name
|
||
* @param {Object} opts - Options to affect the format
|
||
* @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.
|
||
* @param {string} opts.locale - What locale to return the offset name in.
|
||
* @return {string}
|
||
*/
|
||
offsetName(ts, opts) {
|
||
throw new ZoneIsAbstractError();
|
||
}
|
||
/**
|
||
* Returns the offset's value as a string
|
||
* @abstract
|
||
* @param {number} ts - Epoch milliseconds for which to get the offset
|
||
* @param {string} format - What style of offset to return.
|
||
* Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively
|
||
* @return {string}
|
||
*/
|
||
formatOffset(ts, format) {
|
||
throw new ZoneIsAbstractError();
|
||
}
|
||
/**
|
||
* Return the offset in minutes for this zone at the specified timestamp.
|
||
* @abstract
|
||
* @param {number} ts - Epoch milliseconds for which to compute the offset
|
||
* @return {number}
|
||
*/
|
||
offset(ts) {
|
||
throw new ZoneIsAbstractError();
|
||
}
|
||
/**
|
||
* Return whether this Zone is equal to another zone
|
||
* @abstract
|
||
* @param {Zone} otherZone - the zone to compare
|
||
* @return {boolean}
|
||
*/
|
||
equals(otherZone) {
|
||
throw new ZoneIsAbstractError();
|
||
}
|
||
/**
|
||
* Return whether this Zone is valid.
|
||
* @abstract
|
||
* @type {boolean}
|
||
*/
|
||
get isValid() {
|
||
throw new ZoneIsAbstractError();
|
||
}
|
||
};
|
||
var singleton$1 = null;
|
||
var SystemZone = class extends Zone {
|
||
/**
|
||
* Get a singleton instance of the local zone
|
||
* @return {SystemZone}
|
||
*/
|
||
static get instance() {
|
||
if (singleton$1 === null) {
|
||
singleton$1 = new SystemZone();
|
||
}
|
||
return singleton$1;
|
||
}
|
||
/** @override **/
|
||
get type() {
|
||
return "system";
|
||
}
|
||
/** @override **/
|
||
get name() {
|
||
return new Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||
}
|
||
/** @override **/
|
||
get isUniversal() {
|
||
return false;
|
||
}
|
||
/** @override **/
|
||
offsetName(ts, { format, locale }) {
|
||
return parseZoneInfo(ts, format, locale);
|
||
}
|
||
/** @override **/
|
||
formatOffset(ts, format) {
|
||
return formatOffset(this.offset(ts), format);
|
||
}
|
||
/** @override **/
|
||
offset(ts) {
|
||
return -new Date(ts).getTimezoneOffset();
|
||
}
|
||
/** @override **/
|
||
equals(otherZone) {
|
||
return otherZone.type === "system";
|
||
}
|
||
/** @override **/
|
||
get isValid() {
|
||
return true;
|
||
}
|
||
};
|
||
var dtfCache = {};
|
||
function makeDTF(zone) {
|
||
if (!dtfCache[zone]) {
|
||
dtfCache[zone] = new Intl.DateTimeFormat("en-US", {
|
||
hour12: false,
|
||
timeZone: zone,
|
||
year: "numeric",
|
||
month: "2-digit",
|
||
day: "2-digit",
|
||
hour: "2-digit",
|
||
minute: "2-digit",
|
||
second: "2-digit",
|
||
era: "short"
|
||
});
|
||
}
|
||
return dtfCache[zone];
|
||
}
|
||
var typeToPos = {
|
||
year: 0,
|
||
month: 1,
|
||
day: 2,
|
||
era: 3,
|
||
hour: 4,
|
||
minute: 5,
|
||
second: 6
|
||
};
|
||
function hackyOffset(dtf, date) {
|
||
const formatted = dtf.format(date).replace(/\u200E/g, ""), parsed = /(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(formatted), [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;
|
||
return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];
|
||
}
|
||
function partsOffset(dtf, date) {
|
||
const formatted = dtf.formatToParts(date);
|
||
const filled = [];
|
||
for (let i = 0; i < formatted.length; i++) {
|
||
const { type, value } = formatted[i];
|
||
const pos = typeToPos[type];
|
||
if (type === "era") {
|
||
filled[pos] = value;
|
||
} else if (!isUndefined(pos)) {
|
||
filled[pos] = parseInt(value, 10);
|
||
}
|
||
}
|
||
return filled;
|
||
}
|
||
var ianaZoneCache = {};
|
||
var IANAZone = class extends Zone {
|
||
/**
|
||
* @param {string} name - Zone name
|
||
* @return {IANAZone}
|
||
*/
|
||
static create(name) {
|
||
if (!ianaZoneCache[name]) {
|
||
ianaZoneCache[name] = new IANAZone(name);
|
||
}
|
||
return ianaZoneCache[name];
|
||
}
|
||
/**
|
||
* Reset local caches. Should only be necessary in testing scenarios.
|
||
* @return {void}
|
||
*/
|
||
static resetCache() {
|
||
ianaZoneCache = {};
|
||
dtfCache = {};
|
||
}
|
||
/**
|
||
* Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.
|
||
* @param {string} s - The string to check validity on
|
||
* @example IANAZone.isValidSpecifier("America/New_York") //=> true
|
||
* @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false
|
||
* @deprecated This method returns false for some valid IANA names. Use isValidZone instead.
|
||
* @return {boolean}
|
||
*/
|
||
static isValidSpecifier(s2) {
|
||
return this.isValidZone(s2);
|
||
}
|
||
/**
|
||
* Returns whether the provided string identifies a real zone
|
||
* @param {string} zone - The string to check
|
||
* @example IANAZone.isValidZone("America/New_York") //=> true
|
||
* @example IANAZone.isValidZone("Fantasia/Castle") //=> false
|
||
* @example IANAZone.isValidZone("Sport~~blorp") //=> false
|
||
* @return {boolean}
|
||
*/
|
||
static isValidZone(zone) {
|
||
if (!zone) {
|
||
return false;
|
||
}
|
||
try {
|
||
new Intl.DateTimeFormat("en-US", { timeZone: zone }).format();
|
||
return true;
|
||
} catch (e) {
|
||
return false;
|
||
}
|
||
}
|
||
constructor(name) {
|
||
super();
|
||
this.zoneName = name;
|
||
this.valid = IANAZone.isValidZone(name);
|
||
}
|
||
/** @override **/
|
||
get type() {
|
||
return "iana";
|
||
}
|
||
/** @override **/
|
||
get name() {
|
||
return this.zoneName;
|
||
}
|
||
/** @override **/
|
||
get isUniversal() {
|
||
return false;
|
||
}
|
||
/** @override **/
|
||
offsetName(ts, { format, locale }) {
|
||
return parseZoneInfo(ts, format, locale, this.name);
|
||
}
|
||
/** @override **/
|
||
formatOffset(ts, format) {
|
||
return formatOffset(this.offset(ts), format);
|
||
}
|
||
/** @override **/
|
||
offset(ts) {
|
||
const date = new Date(ts);
|
||
if (isNaN(date))
|
||
return NaN;
|
||
const dtf = makeDTF(this.name);
|
||
let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date);
|
||
if (adOrBc === "BC") {
|
||
year = -Math.abs(year) + 1;
|
||
}
|
||
const adjustedHour = hour === 24 ? 0 : hour;
|
||
const asUTC = objToLocalTS({
|
||
year,
|
||
month,
|
||
day,
|
||
hour: adjustedHour,
|
||
minute,
|
||
second,
|
||
millisecond: 0
|
||
});
|
||
let asTS = +date;
|
||
const over = asTS % 1e3;
|
||
asTS -= over >= 0 ? over : 1e3 + over;
|
||
return (asUTC - asTS) / (60 * 1e3);
|
||
}
|
||
/** @override **/
|
||
equals(otherZone) {
|
||
return otherZone.type === "iana" && otherZone.name === this.name;
|
||
}
|
||
/** @override **/
|
||
get isValid() {
|
||
return this.valid;
|
||
}
|
||
};
|
||
var intlLFCache = {};
|
||
function getCachedLF(locString, opts = {}) {
|
||
const key = JSON.stringify([locString, opts]);
|
||
let dtf = intlLFCache[key];
|
||
if (!dtf) {
|
||
dtf = new Intl.ListFormat(locString, opts);
|
||
intlLFCache[key] = dtf;
|
||
}
|
||
return dtf;
|
||
}
|
||
var intlDTCache = {};
|
||
function getCachedDTF(locString, opts = {}) {
|
||
const key = JSON.stringify([locString, opts]);
|
||
let dtf = intlDTCache[key];
|
||
if (!dtf) {
|
||
dtf = new Intl.DateTimeFormat(locString, opts);
|
||
intlDTCache[key] = dtf;
|
||
}
|
||
return dtf;
|
||
}
|
||
var intlNumCache = {};
|
||
function getCachedINF(locString, opts = {}) {
|
||
const key = JSON.stringify([locString, opts]);
|
||
let inf = intlNumCache[key];
|
||
if (!inf) {
|
||
inf = new Intl.NumberFormat(locString, opts);
|
||
intlNumCache[key] = inf;
|
||
}
|
||
return inf;
|
||
}
|
||
var intlRelCache = {};
|
||
function getCachedRTF(locString, opts = {}) {
|
||
const { base, ...cacheKeyOpts } = opts;
|
||
const key = JSON.stringify([locString, cacheKeyOpts]);
|
||
let inf = intlRelCache[key];
|
||
if (!inf) {
|
||
inf = new Intl.RelativeTimeFormat(locString, opts);
|
||
intlRelCache[key] = inf;
|
||
}
|
||
return inf;
|
||
}
|
||
var sysLocaleCache = null;
|
||
function systemLocale() {
|
||
if (sysLocaleCache) {
|
||
return sysLocaleCache;
|
||
} else {
|
||
sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;
|
||
return sysLocaleCache;
|
||
}
|
||
}
|
||
function parseLocaleString(localeStr) {
|
||
const xIndex = localeStr.indexOf("-x-");
|
||
if (xIndex !== -1) {
|
||
localeStr = localeStr.substring(0, xIndex);
|
||
}
|
||
const uIndex = localeStr.indexOf("-u-");
|
||
if (uIndex === -1) {
|
||
return [localeStr];
|
||
} else {
|
||
let options;
|
||
let selectedStr;
|
||
try {
|
||
options = getCachedDTF(localeStr).resolvedOptions();
|
||
selectedStr = localeStr;
|
||
} catch (e) {
|
||
const smaller = localeStr.substring(0, uIndex);
|
||
options = getCachedDTF(smaller).resolvedOptions();
|
||
selectedStr = smaller;
|
||
}
|
||
const { numberingSystem, calendar } = options;
|
||
return [selectedStr, numberingSystem, calendar];
|
||
}
|
||
}
|
||
function intlConfigString(localeStr, numberingSystem, outputCalendar) {
|
||
if (outputCalendar || numberingSystem) {
|
||
if (!localeStr.includes("-u-")) {
|
||
localeStr += "-u";
|
||
}
|
||
if (outputCalendar) {
|
||
localeStr += `-ca-${outputCalendar}`;
|
||
}
|
||
if (numberingSystem) {
|
||
localeStr += `-nu-${numberingSystem}`;
|
||
}
|
||
return localeStr;
|
||
} else {
|
||
return localeStr;
|
||
}
|
||
}
|
||
function mapMonths(f) {
|
||
const ms = [];
|
||
for (let i = 1; i <= 12; i++) {
|
||
const dt = DateTime.utc(2016, i, 1);
|
||
ms.push(f(dt));
|
||
}
|
||
return ms;
|
||
}
|
||
function mapWeekdays(f) {
|
||
const ms = [];
|
||
for (let i = 1; i <= 7; i++) {
|
||
const dt = DateTime.utc(2016, 11, 13 + i);
|
||
ms.push(f(dt));
|
||
}
|
||
return ms;
|
||
}
|
||
function listStuff(loc, length, defaultOK, englishFn, intlFn) {
|
||
const mode = loc.listingMode(defaultOK);
|
||
if (mode === "error") {
|
||
return null;
|
||
} else if (mode === "en") {
|
||
return englishFn(length);
|
||
} else {
|
||
return intlFn(length);
|
||
}
|
||
}
|
||
function supportsFastNumbers(loc) {
|
||
if (loc.numberingSystem && loc.numberingSystem !== "latn") {
|
||
return false;
|
||
} else {
|
||
return loc.numberingSystem === "latn" || !loc.locale || loc.locale.startsWith("en") || new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn";
|
||
}
|
||
}
|
||
var PolyNumberFormatter = class {
|
||
constructor(intl, forceSimple, opts) {
|
||
this.padTo = opts.padTo || 0;
|
||
this.floor = opts.floor || false;
|
||
const { padTo, floor, ...otherOpts } = opts;
|
||
if (!forceSimple || Object.keys(otherOpts).length > 0) {
|
||
const intlOpts = { useGrouping: false, ...opts };
|
||
if (opts.padTo > 0)
|
||
intlOpts.minimumIntegerDigits = opts.padTo;
|
||
this.inf = getCachedINF(intl, intlOpts);
|
||
}
|
||
}
|
||
format(i) {
|
||
if (this.inf) {
|
||
const fixed = this.floor ? Math.floor(i) : i;
|
||
return this.inf.format(fixed);
|
||
} else {
|
||
const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);
|
||
return padStart(fixed, this.padTo);
|
||
}
|
||
}
|
||
};
|
||
var PolyDateFormatter = class {
|
||
constructor(dt, intl, opts) {
|
||
this.opts = opts;
|
||
let z = void 0;
|
||
if (dt.zone.isUniversal) {
|
||
const gmtOffset = -1 * (dt.offset / 60);
|
||
const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;
|
||
if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {
|
||
z = offsetZ;
|
||
this.dt = dt;
|
||
} else {
|
||
z = "UTC";
|
||
if (opts.timeZoneName) {
|
||
this.dt = dt;
|
||
} else {
|
||
this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1e3);
|
||
}
|
||
}
|
||
} else if (dt.zone.type === "system") {
|
||
this.dt = dt;
|
||
} else {
|
||
this.dt = dt;
|
||
z = dt.zone.name;
|
||
}
|
||
const intlOpts = { ...this.opts };
|
||
intlOpts.timeZone = intlOpts.timeZone || z;
|
||
this.dtf = getCachedDTF(intl, intlOpts);
|
||
}
|
||
format() {
|
||
return this.dtf.format(this.dt.toJSDate());
|
||
}
|
||
formatToParts() {
|
||
return this.dtf.formatToParts(this.dt.toJSDate());
|
||
}
|
||
resolvedOptions() {
|
||
return this.dtf.resolvedOptions();
|
||
}
|
||
};
|
||
var PolyRelFormatter = class {
|
||
constructor(intl, isEnglish, opts) {
|
||
this.opts = { style: "long", ...opts };
|
||
if (!isEnglish && hasRelative()) {
|
||
this.rtf = getCachedRTF(intl, opts);
|
||
}
|
||
}
|
||
format(count, unit) {
|
||
if (this.rtf) {
|
||
return this.rtf.format(count, unit);
|
||
} else {
|
||
return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long");
|
||
}
|
||
}
|
||
formatToParts(count, unit) {
|
||
if (this.rtf) {
|
||
return this.rtf.formatToParts(count, unit);
|
||
} else {
|
||
return [];
|
||
}
|
||
}
|
||
};
|
||
var Locale = class {
|
||
static fromOpts(opts) {
|
||
return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);
|
||
}
|
||
static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {
|
||
const specifiedLocale = locale || Settings2.defaultLocale;
|
||
const localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale());
|
||
const numberingSystemR = numberingSystem || Settings2.defaultNumberingSystem;
|
||
const outputCalendarR = outputCalendar || Settings2.defaultOutputCalendar;
|
||
return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);
|
||
}
|
||
static resetCache() {
|
||
sysLocaleCache = null;
|
||
intlDTCache = {};
|
||
intlNumCache = {};
|
||
intlRelCache = {};
|
||
}
|
||
static fromObject({ locale, numberingSystem, outputCalendar } = {}) {
|
||
return Locale.create(locale, numberingSystem, outputCalendar);
|
||
}
|
||
constructor(locale, numbering, outputCalendar, specifiedLocale) {
|
||
const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);
|
||
this.locale = parsedLocale;
|
||
this.numberingSystem = numbering || parsedNumberingSystem || null;
|
||
this.outputCalendar = outputCalendar || parsedOutputCalendar || null;
|
||
this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);
|
||
this.weekdaysCache = { format: {}, standalone: {} };
|
||
this.monthsCache = { format: {}, standalone: {} };
|
||
this.meridiemCache = null;
|
||
this.eraCache = {};
|
||
this.specifiedLocale = specifiedLocale;
|
||
this.fastNumbersCached = null;
|
||
}
|
||
get fastNumbers() {
|
||
if (this.fastNumbersCached == null) {
|
||
this.fastNumbersCached = supportsFastNumbers(this);
|
||
}
|
||
return this.fastNumbersCached;
|
||
}
|
||
listingMode() {
|
||
const isActuallyEn = this.isEnglish();
|
||
const hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === "latn") && (this.outputCalendar === null || this.outputCalendar === "gregory");
|
||
return isActuallyEn && hasNoWeirdness ? "en" : "intl";
|
||
}
|
||
clone(alts) {
|
||
if (!alts || Object.getOwnPropertyNames(alts).length === 0) {
|
||
return this;
|
||
} else {
|
||
return Locale.create(
|
||
alts.locale || this.specifiedLocale,
|
||
alts.numberingSystem || this.numberingSystem,
|
||
alts.outputCalendar || this.outputCalendar,
|
||
alts.defaultToEN || false
|
||
);
|
||
}
|
||
}
|
||
redefaultToEN(alts = {}) {
|
||
return this.clone({ ...alts, defaultToEN: true });
|
||
}
|
||
redefaultToSystem(alts = {}) {
|
||
return this.clone({ ...alts, defaultToEN: false });
|
||
}
|
||
months(length, format = false, defaultOK = true) {
|
||
return listStuff(this, length, defaultOK, months, () => {
|
||
const intl = format ? { month: length, day: "numeric" } : { month: length }, formatStr = format ? "format" : "standalone";
|
||
if (!this.monthsCache[formatStr][length]) {
|
||
this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, "month"));
|
||
}
|
||
return this.monthsCache[formatStr][length];
|
||
});
|
||
}
|
||
weekdays(length, format = false, defaultOK = true) {
|
||
return listStuff(this, length, defaultOK, weekdays, () => {
|
||
const intl = format ? { weekday: length, year: "numeric", month: "long", day: "numeric" } : { weekday: length }, formatStr = format ? "format" : "standalone";
|
||
if (!this.weekdaysCache[formatStr][length]) {
|
||
this.weekdaysCache[formatStr][length] = mapWeekdays(
|
||
(dt) => this.extract(dt, intl, "weekday")
|
||
);
|
||
}
|
||
return this.weekdaysCache[formatStr][length];
|
||
});
|
||
}
|
||
meridiems(defaultOK = true) {
|
||
return listStuff(
|
||
this,
|
||
void 0,
|
||
defaultOK,
|
||
() => meridiems,
|
||
() => {
|
||
if (!this.meridiemCache) {
|
||
const intl = { hour: "numeric", hourCycle: "h12" };
|
||
this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(
|
||
(dt) => this.extract(dt, intl, "dayperiod")
|
||
);
|
||
}
|
||
return this.meridiemCache;
|
||
}
|
||
);
|
||
}
|
||
eras(length, defaultOK = true) {
|
||
return listStuff(this, length, defaultOK, eras, () => {
|
||
const intl = { era: length };
|
||
if (!this.eraCache[length]) {
|
||
this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(
|
||
(dt) => this.extract(dt, intl, "era")
|
||
);
|
||
}
|
||
return this.eraCache[length];
|
||
});
|
||
}
|
||
extract(dt, intlOpts, field) {
|
||
const df = this.dtFormatter(dt, intlOpts), results = df.formatToParts(), matching = results.find((m) => m.type.toLowerCase() === field);
|
||
return matching ? matching.value : null;
|
||
}
|
||
numberFormatter(opts = {}) {
|
||
return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);
|
||
}
|
||
dtFormatter(dt, intlOpts = {}) {
|
||
return new PolyDateFormatter(dt, this.intl, intlOpts);
|
||
}
|
||
relFormatter(opts = {}) {
|
||
return new PolyRelFormatter(this.intl, this.isEnglish(), opts);
|
||
}
|
||
listFormatter(opts = {}) {
|
||
return getCachedLF(this.intl, opts);
|
||
}
|
||
isEnglish() {
|
||
return this.locale === "en" || this.locale.toLowerCase() === "en-us" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us");
|
||
}
|
||
equals(other) {
|
||
return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar;
|
||
}
|
||
};
|
||
var singleton = null;
|
||
var FixedOffsetZone = class extends Zone {
|
||
/**
|
||
* Get a singleton instance of UTC
|
||
* @return {FixedOffsetZone}
|
||
*/
|
||
static get utcInstance() {
|
||
if (singleton === null) {
|
||
singleton = new FixedOffsetZone(0);
|
||
}
|
||
return singleton;
|
||
}
|
||
/**
|
||
* Get an instance with a specified offset
|
||
* @param {number} offset - The offset in minutes
|
||
* @return {FixedOffsetZone}
|
||
*/
|
||
static instance(offset2) {
|
||
return offset2 === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset2);
|
||
}
|
||
/**
|
||
* Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6"
|
||
* @param {string} s - The offset string to parse
|
||
* @example FixedOffsetZone.parseSpecifier("UTC+6")
|
||
* @example FixedOffsetZone.parseSpecifier("UTC+06")
|
||
* @example FixedOffsetZone.parseSpecifier("UTC-6:00")
|
||
* @return {FixedOffsetZone}
|
||
*/
|
||
static parseSpecifier(s2) {
|
||
if (s2) {
|
||
const r = s2.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);
|
||
if (r) {
|
||
return new FixedOffsetZone(signedOffset(r[1], r[2]));
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
constructor(offset2) {
|
||
super();
|
||
this.fixed = offset2;
|
||
}
|
||
/** @override **/
|
||
get type() {
|
||
return "fixed";
|
||
}
|
||
/** @override **/
|
||
get name() {
|
||
return this.fixed === 0 ? "UTC" : `UTC${formatOffset(this.fixed, "narrow")}`;
|
||
}
|
||
get ianaName() {
|
||
if (this.fixed === 0) {
|
||
return "Etc/UTC";
|
||
} else {
|
||
return `Etc/GMT${formatOffset(-this.fixed, "narrow")}`;
|
||
}
|
||
}
|
||
/** @override **/
|
||
offsetName() {
|
||
return this.name;
|
||
}
|
||
/** @override **/
|
||
formatOffset(ts, format) {
|
||
return formatOffset(this.fixed, format);
|
||
}
|
||
/** @override **/
|
||
get isUniversal() {
|
||
return true;
|
||
}
|
||
/** @override **/
|
||
offset() {
|
||
return this.fixed;
|
||
}
|
||
/** @override **/
|
||
equals(otherZone) {
|
||
return otherZone.type === "fixed" && otherZone.fixed === this.fixed;
|
||
}
|
||
/** @override **/
|
||
get isValid() {
|
||
return true;
|
||
}
|
||
};
|
||
var InvalidZone = class extends Zone {
|
||
constructor(zoneName) {
|
||
super();
|
||
this.zoneName = zoneName;
|
||
}
|
||
/** @override **/
|
||
get type() {
|
||
return "invalid";
|
||
}
|
||
/** @override **/
|
||
get name() {
|
||
return this.zoneName;
|
||
}
|
||
/** @override **/
|
||
get isUniversal() {
|
||
return false;
|
||
}
|
||
/** @override **/
|
||
offsetName() {
|
||
return null;
|
||
}
|
||
/** @override **/
|
||
formatOffset() {
|
||
return "";
|
||
}
|
||
/** @override **/
|
||
offset() {
|
||
return NaN;
|
||
}
|
||
/** @override **/
|
||
equals() {
|
||
return false;
|
||
}
|
||
/** @override **/
|
||
get isValid() {
|
||
return false;
|
||
}
|
||
};
|
||
function normalizeZone(input, defaultZone2) {
|
||
if (isUndefined(input) || input === null) {
|
||
return defaultZone2;
|
||
} else if (input instanceof Zone) {
|
||
return input;
|
||
} else if (isString(input)) {
|
||
const lowered = input.toLowerCase();
|
||
if (lowered === "default")
|
||
return defaultZone2;
|
||
else if (lowered === "local" || lowered === "system")
|
||
return SystemZone.instance;
|
||
else if (lowered === "utc" || lowered === "gmt")
|
||
return FixedOffsetZone.utcInstance;
|
||
else
|
||
return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);
|
||
} else if (isNumber(input)) {
|
||
return FixedOffsetZone.instance(input);
|
||
} else if (typeof input === "object" && input.offset && typeof input.offset === "number") {
|
||
return input;
|
||
} else {
|
||
return new InvalidZone(input);
|
||
}
|
||
}
|
||
var now2 = () => Date.now();
|
||
var defaultZone = "system";
|
||
var defaultLocale = null;
|
||
var defaultNumberingSystem = null;
|
||
var defaultOutputCalendar = null;
|
||
var twoDigitCutoffYear = 60;
|
||
var throwOnInvalid;
|
||
var Settings2 = class {
|
||
/**
|
||
* Get the callback for returning the current timestamp.
|
||
* @type {function}
|
||
*/
|
||
static get now() {
|
||
return now2;
|
||
}
|
||
/**
|
||
* Set the callback for returning the current timestamp.
|
||
* The function should return a number, which will be interpreted as an Epoch millisecond count
|
||
* @type {function}
|
||
* @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future
|
||
* @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time
|
||
*/
|
||
static set now(n2) {
|
||
now2 = n2;
|
||
}
|
||
/**
|
||
* Set the default time zone to create DateTimes in. Does not affect existing instances.
|
||
* Use the value "system" to reset this value to the system's time zone.
|
||
* @type {string}
|
||
*/
|
||
static set defaultZone(zone) {
|
||
defaultZone = zone;
|
||
}
|
||
/**
|
||
* Get the default time zone object currently used to create DateTimes. Does not affect existing instances.
|
||
* The default value is the system's time zone (the one set on the machine that runs this code).
|
||
* @type {Zone}
|
||
*/
|
||
static get defaultZone() {
|
||
return normalizeZone(defaultZone, SystemZone.instance);
|
||
}
|
||
/**
|
||
* Get the default locale to create DateTimes with. Does not affect existing instances.
|
||
* @type {string}
|
||
*/
|
||
static get defaultLocale() {
|
||
return defaultLocale;
|
||
}
|
||
/**
|
||
* Set the default locale to create DateTimes with. Does not affect existing instances.
|
||
* @type {string}
|
||
*/
|
||
static set defaultLocale(locale) {
|
||
defaultLocale = locale;
|
||
}
|
||
/**
|
||
* Get the default numbering system to create DateTimes with. Does not affect existing instances.
|
||
* @type {string}
|
||
*/
|
||
static get defaultNumberingSystem() {
|
||
return defaultNumberingSystem;
|
||
}
|
||
/**
|
||
* Set the default numbering system to create DateTimes with. Does not affect existing instances.
|
||
* @type {string}
|
||
*/
|
||
static set defaultNumberingSystem(numberingSystem) {
|
||
defaultNumberingSystem = numberingSystem;
|
||
}
|
||
/**
|
||
* Get the default output calendar to create DateTimes with. Does not affect existing instances.
|
||
* @type {string}
|
||
*/
|
||
static get defaultOutputCalendar() {
|
||
return defaultOutputCalendar;
|
||
}
|
||
/**
|
||
* Set the default output calendar to create DateTimes with. Does not affect existing instances.
|
||
* @type {string}
|
||
*/
|
||
static set defaultOutputCalendar(outputCalendar) {
|
||
defaultOutputCalendar = outputCalendar;
|
||
}
|
||
/**
|
||
* Get the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.
|
||
* @type {number}
|
||
*/
|
||
static get twoDigitCutoffYear() {
|
||
return twoDigitCutoffYear;
|
||
}
|
||
/**
|
||
* Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century.
|
||
* @type {number}
|
||
* @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpretted as current century
|
||
* @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050
|
||
* @example Settings.twoDigitCutoffYear = 1950 // interpretted as 50
|
||
* @example Settings.twoDigitCutoffYear = 2050 // ALSO interpretted as 50
|
||
*/
|
||
static set twoDigitCutoffYear(cutoffYear) {
|
||
twoDigitCutoffYear = cutoffYear % 100;
|
||
}
|
||
/**
|
||
* Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
|
||
* @type {boolean}
|
||
*/
|
||
static get throwOnInvalid() {
|
||
return throwOnInvalid;
|
||
}
|
||
/**
|
||
* Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals
|
||
* @type {boolean}
|
||
*/
|
||
static set throwOnInvalid(t) {
|
||
throwOnInvalid = t;
|
||
}
|
||
/**
|
||
* Reset Luxon's global caches. Should only be necessary in testing scenarios.
|
||
* @return {void}
|
||
*/
|
||
static resetCaches() {
|
||
Locale.resetCache();
|
||
IANAZone.resetCache();
|
||
}
|
||
};
|
||
function isUndefined(o) {
|
||
return typeof o === "undefined";
|
||
}
|
||
function isNumber(o) {
|
||
return typeof o === "number";
|
||
}
|
||
function isInteger(o) {
|
||
return typeof o === "number" && o % 1 === 0;
|
||
}
|
||
function isString(o) {
|
||
return typeof o === "string";
|
||
}
|
||
function isDate(o) {
|
||
return Object.prototype.toString.call(o) === "[object Date]";
|
||
}
|
||
function hasRelative() {
|
||
try {
|
||
return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat;
|
||
} catch (e) {
|
||
return false;
|
||
}
|
||
}
|
||
function maybeArray(thing) {
|
||
return Array.isArray(thing) ? thing : [thing];
|
||
}
|
||
function bestBy(arr, by, compare) {
|
||
if (arr.length === 0) {
|
||
return void 0;
|
||
}
|
||
return arr.reduce((best, next) => {
|
||
const pair = [by(next), next];
|
||
if (!best) {
|
||
return pair;
|
||
} else if (compare(best[0], pair[0]) === best[0]) {
|
||
return best;
|
||
} else {
|
||
return pair;
|
||
}
|
||
}, null)[1];
|
||
}
|
||
function pick(obj, keys) {
|
||
return keys.reduce((a, k) => {
|
||
a[k] = obj[k];
|
||
return a;
|
||
}, {});
|
||
}
|
||
function hasOwnProperty(obj, prop) {
|
||
return Object.prototype.hasOwnProperty.call(obj, prop);
|
||
}
|
||
function integerBetween(thing, bottom, top) {
|
||
return isInteger(thing) && thing >= bottom && thing <= top;
|
||
}
|
||
function floorMod(x, n2) {
|
||
return x - n2 * Math.floor(x / n2);
|
||
}
|
||
function padStart(input, n2 = 2) {
|
||
const isNeg = input < 0;
|
||
let padded;
|
||
if (isNeg) {
|
||
padded = "-" + ("" + -input).padStart(n2, "0");
|
||
} else {
|
||
padded = ("" + input).padStart(n2, "0");
|
||
}
|
||
return padded;
|
||
}
|
||
function parseInteger(string) {
|
||
if (isUndefined(string) || string === null || string === "") {
|
||
return void 0;
|
||
} else {
|
||
return parseInt(string, 10);
|
||
}
|
||
}
|
||
function parseFloating(string) {
|
||
if (isUndefined(string) || string === null || string === "") {
|
||
return void 0;
|
||
} else {
|
||
return parseFloat(string);
|
||
}
|
||
}
|
||
function parseMillis(fraction) {
|
||
if (isUndefined(fraction) || fraction === null || fraction === "") {
|
||
return void 0;
|
||
} else {
|
||
const f = parseFloat("0." + fraction) * 1e3;
|
||
return Math.floor(f);
|
||
}
|
||
}
|
||
function roundTo(number, digits, towardZero = false) {
|
||
const factor = 10 ** digits, rounder = towardZero ? Math.trunc : Math.round;
|
||
return rounder(number * factor) / factor;
|
||
}
|
||
function isLeapYear(year) {
|
||
return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
|
||
}
|
||
function daysInYear(year) {
|
||
return isLeapYear(year) ? 366 : 365;
|
||
}
|
||
function daysInMonth(year, month) {
|
||
const modMonth = floorMod(month - 1, 12) + 1, modYear = year + (month - modMonth) / 12;
|
||
if (modMonth === 2) {
|
||
return isLeapYear(modYear) ? 29 : 28;
|
||
} else {
|
||
return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];
|
||
}
|
||
}
|
||
function objToLocalTS(obj) {
|
||
let d = Date.UTC(
|
||
obj.year,
|
||
obj.month - 1,
|
||
obj.day,
|
||
obj.hour,
|
||
obj.minute,
|
||
obj.second,
|
||
obj.millisecond
|
||
);
|
||
if (obj.year < 100 && obj.year >= 0) {
|
||
d = new Date(d);
|
||
d.setUTCFullYear(d.getUTCFullYear() - 1900);
|
||
}
|
||
return +d;
|
||
}
|
||
function weeksInWeekYear(weekYear) {
|
||
const p1 = (weekYear + Math.floor(weekYear / 4) - Math.floor(weekYear / 100) + Math.floor(weekYear / 400)) % 7, last = weekYear - 1, p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;
|
||
return p1 === 4 || p2 === 3 ? 53 : 52;
|
||
}
|
||
function untruncateYear(year) {
|
||
if (year > 99) {
|
||
return year;
|
||
} else
|
||
return year > Settings2.twoDigitCutoffYear ? 1900 + year : 2e3 + year;
|
||
}
|
||
function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {
|
||
const date = new Date(ts), intlOpts = {
|
||
hourCycle: "h23",
|
||
year: "numeric",
|
||
month: "2-digit",
|
||
day: "2-digit",
|
||
hour: "2-digit",
|
||
minute: "2-digit"
|
||
};
|
||
if (timeZone) {
|
||
intlOpts.timeZone = timeZone;
|
||
}
|
||
const modified = { timeZoneName: offsetFormat, ...intlOpts };
|
||
const parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find((m) => m.type.toLowerCase() === "timezonename");
|
||
return parsed ? parsed.value : null;
|
||
}
|
||
function signedOffset(offHourStr, offMinuteStr) {
|
||
let offHour = parseInt(offHourStr, 10);
|
||
if (Number.isNaN(offHour)) {
|
||
offHour = 0;
|
||
}
|
||
const offMin = parseInt(offMinuteStr, 10) || 0, offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;
|
||
return offHour * 60 + offMinSigned;
|
||
}
|
||
function asNumber(value) {
|
||
const numericValue = Number(value);
|
||
if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue))
|
||
throw new InvalidArgumentError(`Invalid unit value ${value}`);
|
||
return numericValue;
|
||
}
|
||
function normalizeObject(obj, normalizer) {
|
||
const normalized = {};
|
||
for (const u in obj) {
|
||
if (hasOwnProperty(obj, u)) {
|
||
const v = obj[u];
|
||
if (v === void 0 || v === null)
|
||
continue;
|
||
normalized[normalizer(u)] = asNumber(v);
|
||
}
|
||
}
|
||
return normalized;
|
||
}
|
||
function formatOffset(offset2, format) {
|
||
const hours = Math.trunc(Math.abs(offset2 / 60)), minutes = Math.trunc(Math.abs(offset2 % 60)), sign = offset2 >= 0 ? "+" : "-";
|
||
switch (format) {
|
||
case "short":
|
||
return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;
|
||
case "narrow":
|
||
return `${sign}${hours}${minutes > 0 ? `:${minutes}` : ""}`;
|
||
case "techie":
|
||
return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;
|
||
default:
|
||
throw new RangeError(`Value format ${format} is out of range for property format`);
|
||
}
|
||
}
|
||
function timeObject(obj) {
|
||
return pick(obj, ["hour", "minute", "second", "millisecond"]);
|
||
}
|
||
var monthsLong = [
|
||
"January",
|
||
"February",
|
||
"March",
|
||
"April",
|
||
"May",
|
||
"June",
|
||
"July",
|
||
"August",
|
||
"September",
|
||
"October",
|
||
"November",
|
||
"December"
|
||
];
|
||
var monthsShort = [
|
||
"Jan",
|
||
"Feb",
|
||
"Mar",
|
||
"Apr",
|
||
"May",
|
||
"Jun",
|
||
"Jul",
|
||
"Aug",
|
||
"Sep",
|
||
"Oct",
|
||
"Nov",
|
||
"Dec"
|
||
];
|
||
var monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];
|
||
function months(length) {
|
||
switch (length) {
|
||
case "narrow":
|
||
return [...monthsNarrow];
|
||
case "short":
|
||
return [...monthsShort];
|
||
case "long":
|
||
return [...monthsLong];
|
||
case "numeric":
|
||
return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"];
|
||
case "2-digit":
|
||
return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
|
||
default:
|
||
return null;
|
||
}
|
||
}
|
||
var weekdaysLong = [
|
||
"Monday",
|
||
"Tuesday",
|
||
"Wednesday",
|
||
"Thursday",
|
||
"Friday",
|
||
"Saturday",
|
||
"Sunday"
|
||
];
|
||
var weekdaysShort = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
|
||
var weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"];
|
||
function weekdays(length) {
|
||
switch (length) {
|
||
case "narrow":
|
||
return [...weekdaysNarrow];
|
||
case "short":
|
||
return [...weekdaysShort];
|
||
case "long":
|
||
return [...weekdaysLong];
|
||
case "numeric":
|
||
return ["1", "2", "3", "4", "5", "6", "7"];
|
||
default:
|
||
return null;
|
||
}
|
||
}
|
||
var meridiems = ["AM", "PM"];
|
||
var erasLong = ["Before Christ", "Anno Domini"];
|
||
var erasShort = ["BC", "AD"];
|
||
var erasNarrow = ["B", "A"];
|
||
function eras(length) {
|
||
switch (length) {
|
||
case "narrow":
|
||
return [...erasNarrow];
|
||
case "short":
|
||
return [...erasShort];
|
||
case "long":
|
||
return [...erasLong];
|
||
default:
|
||
return null;
|
||
}
|
||
}
|
||
function meridiemForDateTime(dt) {
|
||
return meridiems[dt.hour < 12 ? 0 : 1];
|
||
}
|
||
function weekdayForDateTime(dt, length) {
|
||
return weekdays(length)[dt.weekday - 1];
|
||
}
|
||
function monthForDateTime(dt, length) {
|
||
return months(length)[dt.month - 1];
|
||
}
|
||
function eraForDateTime(dt, length) {
|
||
return eras(length)[dt.year < 0 ? 0 : 1];
|
||
}
|
||
function formatRelativeTime(unit, count, numeric = "always", narrow = false) {
|
||
const units = {
|
||
years: ["year", "yr."],
|
||
quarters: ["quarter", "qtr."],
|
||
months: ["month", "mo."],
|
||
weeks: ["week", "wk."],
|
||
days: ["day", "day", "days"],
|
||
hours: ["hour", "hr."],
|
||
minutes: ["minute", "min."],
|
||
seconds: ["second", "sec."]
|
||
};
|
||
const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1;
|
||
if (numeric === "auto" && lastable) {
|
||
const isDay = unit === "days";
|
||
switch (count) {
|
||
case 1:
|
||
return isDay ? "tomorrow" : `next ${units[unit][0]}`;
|
||
case -1:
|
||
return isDay ? "yesterday" : `last ${units[unit][0]}`;
|
||
case 0:
|
||
return isDay ? "today" : `this ${units[unit][0]}`;
|
||
}
|
||
}
|
||
const isInPast = Object.is(count, -0) || count < 0, fmtValue = Math.abs(count), singular = fmtValue === 1, lilUnits = units[unit], fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit;
|
||
return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;
|
||
}
|
||
function stringifyTokens(splits, tokenToString) {
|
||
let s2 = "";
|
||
for (const token of splits) {
|
||
if (token.literal) {
|
||
s2 += token.val;
|
||
} else {
|
||
s2 += tokenToString(token.val);
|
||
}
|
||
}
|
||
return s2;
|
||
}
|
||
var macroTokenToFormatOpts = {
|
||
D: DATE_SHORT,
|
||
DD: DATE_MED,
|
||
DDD: DATE_FULL,
|
||
DDDD: DATE_HUGE,
|
||
t: TIME_SIMPLE,
|
||
tt: TIME_WITH_SECONDS,
|
||
ttt: TIME_WITH_SHORT_OFFSET,
|
||
tttt: TIME_WITH_LONG_OFFSET,
|
||
T: TIME_24_SIMPLE,
|
||
TT: TIME_24_WITH_SECONDS,
|
||
TTT: TIME_24_WITH_SHORT_OFFSET,
|
||
TTTT: TIME_24_WITH_LONG_OFFSET,
|
||
f: DATETIME_SHORT,
|
||
ff: DATETIME_MED,
|
||
fff: DATETIME_FULL,
|
||
ffff: DATETIME_HUGE,
|
||
F: DATETIME_SHORT_WITH_SECONDS,
|
||
FF: DATETIME_MED_WITH_SECONDS,
|
||
FFF: DATETIME_FULL_WITH_SECONDS,
|
||
FFFF: DATETIME_HUGE_WITH_SECONDS
|
||
};
|
||
var Formatter = class {
|
||
static create(locale, opts = {}) {
|
||
return new Formatter(locale, opts);
|
||
}
|
||
static parseFormat(fmt) {
|
||
let current = null, currentFull = "", bracketed = false;
|
||
const splits = [];
|
||
for (let i = 0; i < fmt.length; i++) {
|
||
const c = fmt.charAt(i);
|
||
if (c === "'") {
|
||
if (currentFull.length > 0) {
|
||
splits.push({ literal: bracketed, val: currentFull });
|
||
}
|
||
current = null;
|
||
currentFull = "";
|
||
bracketed = !bracketed;
|
||
} else if (bracketed) {
|
||
currentFull += c;
|
||
} else if (c === current) {
|
||
currentFull += c;
|
||
} else {
|
||
if (currentFull.length > 0) {
|
||
splits.push({ literal: false, val: currentFull });
|
||
}
|
||
currentFull = c;
|
||
current = c;
|
||
}
|
||
}
|
||
if (currentFull.length > 0) {
|
||
splits.push({ literal: bracketed, val: currentFull });
|
||
}
|
||
return splits;
|
||
}
|
||
static macroTokenToFormatOpts(token) {
|
||
return macroTokenToFormatOpts[token];
|
||
}
|
||
constructor(locale, formatOpts) {
|
||
this.opts = formatOpts;
|
||
this.loc = locale;
|
||
this.systemLoc = null;
|
||
}
|
||
formatWithSystemDefault(dt, opts) {
|
||
if (this.systemLoc === null) {
|
||
this.systemLoc = this.loc.redefaultToSystem();
|
||
}
|
||
const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });
|
||
return df.format();
|
||
}
|
||
formatDateTime(dt, opts = {}) {
|
||
const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });
|
||
return df.format();
|
||
}
|
||
formatDateTimeParts(dt, opts = {}) {
|
||
const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });
|
||
return df.formatToParts();
|
||
}
|
||
formatInterval(interval, opts = {}) {
|
||
const df = this.loc.dtFormatter(interval.start, { ...this.opts, ...opts });
|
||
return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());
|
||
}
|
||
resolvedOptions(dt, opts = {}) {
|
||
const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });
|
||
return df.resolvedOptions();
|
||
}
|
||
num(n2, p = 0) {
|
||
if (this.opts.forceSimple) {
|
||
return padStart(n2, p);
|
||
}
|
||
const opts = { ...this.opts };
|
||
if (p > 0) {
|
||
opts.padTo = p;
|
||
}
|
||
return this.loc.numberFormatter(opts).format(n2);
|
||
}
|
||
formatDateTimeFromString(dt, fmt) {
|
||
const knownEnglish = this.loc.listingMode() === "en", useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== "gregory", string = (opts, extract) => this.loc.extract(dt, opts, extract), formatOffset2 = (opts) => {
|
||
if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {
|
||
return "Z";
|
||
}
|
||
return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : "";
|
||
}, meridiem = () => knownEnglish ? meridiemForDateTime(dt) : string({ hour: "numeric", hourCycle: "h12" }, "dayperiod"), month = (length, standalone) => knownEnglish ? monthForDateTime(dt, length) : string(standalone ? { month: length } : { month: length, day: "numeric" }, "month"), weekday = (length, standalone) => knownEnglish ? weekdayForDateTime(dt, length) : string(
|
||
standalone ? { weekday: length } : { weekday: length, month: "long", day: "numeric" },
|
||
"weekday"
|
||
), maybeMacro = (token) => {
|
||
const formatOpts = Formatter.macroTokenToFormatOpts(token);
|
||
if (formatOpts) {
|
||
return this.formatWithSystemDefault(dt, formatOpts);
|
||
} else {
|
||
return token;
|
||
}
|
||
}, era = (length) => knownEnglish ? eraForDateTime(dt, length) : string({ era: length }, "era"), tokenToString = (token) => {
|
||
switch (token) {
|
||
case "S":
|
||
return this.num(dt.millisecond);
|
||
case "u":
|
||
case "SSS":
|
||
return this.num(dt.millisecond, 3);
|
||
case "s":
|
||
return this.num(dt.second);
|
||
case "ss":
|
||
return this.num(dt.second, 2);
|
||
case "uu":
|
||
return this.num(Math.floor(dt.millisecond / 10), 2);
|
||
case "uuu":
|
||
return this.num(Math.floor(dt.millisecond / 100));
|
||
case "m":
|
||
return this.num(dt.minute);
|
||
case "mm":
|
||
return this.num(dt.minute, 2);
|
||
case "h":
|
||
return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);
|
||
case "hh":
|
||
return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);
|
||
case "H":
|
||
return this.num(dt.hour);
|
||
case "HH":
|
||
return this.num(dt.hour, 2);
|
||
case "Z":
|
||
return formatOffset2({ format: "narrow", allowZ: this.opts.allowZ });
|
||
case "ZZ":
|
||
return formatOffset2({ format: "short", allowZ: this.opts.allowZ });
|
||
case "ZZZ":
|
||
return formatOffset2({ format: "techie", allowZ: this.opts.allowZ });
|
||
case "ZZZZ":
|
||
return dt.zone.offsetName(dt.ts, { format: "short", locale: this.loc.locale });
|
||
case "ZZZZZ":
|
||
return dt.zone.offsetName(dt.ts, { format: "long", locale: this.loc.locale });
|
||
case "z":
|
||
return dt.zoneName;
|
||
case "a":
|
||
return meridiem();
|
||
case "d":
|
||
return useDateTimeFormatter ? string({ day: "numeric" }, "day") : this.num(dt.day);
|
||
case "dd":
|
||
return useDateTimeFormatter ? string({ day: "2-digit" }, "day") : this.num(dt.day, 2);
|
||
case "c":
|
||
return this.num(dt.weekday);
|
||
case "ccc":
|
||
return weekday("short", true);
|
||
case "cccc":
|
||
return weekday("long", true);
|
||
case "ccccc":
|
||
return weekday("narrow", true);
|
||
case "E":
|
||
return this.num(dt.weekday);
|
||
case "EEE":
|
||
return weekday("short", false);
|
||
case "EEEE":
|
||
return weekday("long", false);
|
||
case "EEEEE":
|
||
return weekday("narrow", false);
|
||
case "L":
|
||
return useDateTimeFormatter ? string({ month: "numeric", day: "numeric" }, "month") : this.num(dt.month);
|
||
case "LL":
|
||
return useDateTimeFormatter ? string({ month: "2-digit", day: "numeric" }, "month") : this.num(dt.month, 2);
|
||
case "LLL":
|
||
return month("short", true);
|
||
case "LLLL":
|
||
return month("long", true);
|
||
case "LLLLL":
|
||
return month("narrow", true);
|
||
case "M":
|
||
return useDateTimeFormatter ? string({ month: "numeric" }, "month") : this.num(dt.month);
|
||
case "MM":
|
||
return useDateTimeFormatter ? string({ month: "2-digit" }, "month") : this.num(dt.month, 2);
|
||
case "MMM":
|
||
return month("short", false);
|
||
case "MMMM":
|
||
return month("long", false);
|
||
case "MMMMM":
|
||
return month("narrow", false);
|
||
case "y":
|
||
return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year);
|
||
case "yy":
|
||
return useDateTimeFormatter ? string({ year: "2-digit" }, "year") : this.num(dt.year.toString().slice(-2), 2);
|
||
case "yyyy":
|
||
return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year, 4);
|
||
case "yyyyyy":
|
||
return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year, 6);
|
||
case "G":
|
||
return era("short");
|
||
case "GG":
|
||
return era("long");
|
||
case "GGGGG":
|
||
return era("narrow");
|
||
case "kk":
|
||
return this.num(dt.weekYear.toString().slice(-2), 2);
|
||
case "kkkk":
|
||
return this.num(dt.weekYear, 4);
|
||
case "W":
|
||
return this.num(dt.weekNumber);
|
||
case "WW":
|
||
return this.num(dt.weekNumber, 2);
|
||
case "o":
|
||
return this.num(dt.ordinal);
|
||
case "ooo":
|
||
return this.num(dt.ordinal, 3);
|
||
case "q":
|
||
return this.num(dt.quarter);
|
||
case "qq":
|
||
return this.num(dt.quarter, 2);
|
||
case "X":
|
||
return this.num(Math.floor(dt.ts / 1e3));
|
||
case "x":
|
||
return this.num(dt.ts);
|
||
default:
|
||
return maybeMacro(token);
|
||
}
|
||
};
|
||
return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);
|
||
}
|
||
formatDurationFromString(dur, fmt) {
|
||
const tokenToField = (token) => {
|
||
switch (token[0]) {
|
||
case "S":
|
||
return "millisecond";
|
||
case "s":
|
||
return "second";
|
||
case "m":
|
||
return "minute";
|
||
case "h":
|
||
return "hour";
|
||
case "d":
|
||
return "day";
|
||
case "w":
|
||
return "week";
|
||
case "M":
|
||
return "month";
|
||
case "y":
|
||
return "year";
|
||
default:
|
||
return null;
|
||
}
|
||
}, tokenToString = (lildur) => (token) => {
|
||
const mapped = tokenToField(token);
|
||
if (mapped) {
|
||
return this.num(lildur.get(mapped), token.length);
|
||
} else {
|
||
return token;
|
||
}
|
||
}, tokens = Formatter.parseFormat(fmt), realTokens = tokens.reduce(
|
||
(found, { literal, val }) => literal ? found : found.concat(val),
|
||
[]
|
||
), collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));
|
||
return stringifyTokens(tokens, tokenToString(collapsed));
|
||
}
|
||
};
|
||
var Invalid = class {
|
||
constructor(reason, explanation) {
|
||
this.reason = reason;
|
||
this.explanation = explanation;
|
||
}
|
||
toMessage() {
|
||
if (this.explanation) {
|
||
return `${this.reason}: ${this.explanation}`;
|
||
} else {
|
||
return this.reason;
|
||
}
|
||
}
|
||
};
|
||
var ianaRegex = /[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;
|
||
function combineRegexes(...regexes) {
|
||
const full = regexes.reduce((f, r) => f + r.source, "");
|
||
return RegExp(`^${full}$`);
|
||
}
|
||
function combineExtractors(...extractors) {
|
||
return (m) => extractors.reduce(
|
||
([mergedVals, mergedZone, cursor], ex) => {
|
||
const [val, zone, next] = ex(m, cursor);
|
||
return [{ ...mergedVals, ...val }, zone || mergedZone, next];
|
||
},
|
||
[{}, null, 1]
|
||
).slice(0, 2);
|
||
}
|
||
function parse(s2, ...patterns) {
|
||
if (s2 == null) {
|
||
return [null, null];
|
||
}
|
||
for (const [regex, extractor] of patterns) {
|
||
const m = regex.exec(s2);
|
||
if (m) {
|
||
return extractor(m);
|
||
}
|
||
}
|
||
return [null, null];
|
||
}
|
||
function simpleParse(...keys) {
|
||
return (match2, cursor) => {
|
||
const ret = {};
|
||
let i;
|
||
for (i = 0; i < keys.length; i++) {
|
||
ret[keys[i]] = parseInteger(match2[cursor + i]);
|
||
}
|
||
return [ret, null, cursor + i];
|
||
};
|
||
}
|
||
var offsetRegex = /(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/;
|
||
var isoExtendedZone = `(?:${offsetRegex.source}?(?:\\[(${ianaRegex.source})\\])?)?`;
|
||
var isoTimeBaseRegex = /(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/;
|
||
var isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);
|
||
var isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);
|
||
var isoYmdRegex = /([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/;
|
||
var isoWeekRegex = /(\d{4})-?W(\d\d)(?:-?(\d))?/;
|
||
var isoOrdinalRegex = /(\d{4})-?(\d{3})/;
|
||
var extractISOWeekData = simpleParse("weekYear", "weekNumber", "weekDay");
|
||
var extractISOOrdinalData = simpleParse("year", "ordinal");
|
||
var sqlYmdRegex = /(\d{4})-(\d\d)-(\d\d)/;
|
||
var sqlTimeRegex = RegExp(
|
||
`${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`
|
||
);
|
||
var sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);
|
||
function int(match2, pos, fallback) {
|
||
const m = match2[pos];
|
||
return isUndefined(m) ? fallback : parseInteger(m);
|
||
}
|
||
function extractISOYmd(match2, cursor) {
|
||
const item = {
|
||
year: int(match2, cursor),
|
||
month: int(match2, cursor + 1, 1),
|
||
day: int(match2, cursor + 2, 1)
|
||
};
|
||
return [item, null, cursor + 3];
|
||
}
|
||
function extractISOTime(match2, cursor) {
|
||
const item = {
|
||
hours: int(match2, cursor, 0),
|
||
minutes: int(match2, cursor + 1, 0),
|
||
seconds: int(match2, cursor + 2, 0),
|
||
milliseconds: parseMillis(match2[cursor + 3])
|
||
};
|
||
return [item, null, cursor + 4];
|
||
}
|
||
function extractISOOffset(match2, cursor) {
|
||
const local = !match2[cursor] && !match2[cursor + 1], fullOffset = signedOffset(match2[cursor + 1], match2[cursor + 2]), zone = local ? null : FixedOffsetZone.instance(fullOffset);
|
||
return [{}, zone, cursor + 3];
|
||
}
|
||
function extractIANAZone(match2, cursor) {
|
||
const zone = match2[cursor] ? IANAZone.create(match2[cursor]) : null;
|
||
return [{}, zone, cursor + 1];
|
||
}
|
||
var isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);
|
||
var isoDuration = /^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;
|
||
function extractISODuration(match2) {
|
||
const [s2, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] = match2;
|
||
const hasNegativePrefix = s2[0] === "-";
|
||
const negativeSeconds = secondStr && secondStr[0] === "-";
|
||
const maybeNegate = (num, force = false) => num !== void 0 && (force || num && hasNegativePrefix) ? -num : num;
|
||
return [
|
||
{
|
||
years: maybeNegate(parseFloating(yearStr)),
|
||
months: maybeNegate(parseFloating(monthStr)),
|
||
weeks: maybeNegate(parseFloating(weekStr)),
|
||
days: maybeNegate(parseFloating(dayStr)),
|
||
hours: maybeNegate(parseFloating(hourStr)),
|
||
minutes: maybeNegate(parseFloating(minuteStr)),
|
||
seconds: maybeNegate(parseFloating(secondStr), secondStr === "-0"),
|
||
milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds)
|
||
}
|
||
];
|
||
}
|
||
var obsOffsets = {
|
||
GMT: 0,
|
||
EDT: -4 * 60,
|
||
EST: -5 * 60,
|
||
CDT: -5 * 60,
|
||
CST: -6 * 60,
|
||
MDT: -6 * 60,
|
||
MST: -7 * 60,
|
||
PDT: -7 * 60,
|
||
PST: -8 * 60
|
||
};
|
||
function fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
|
||
const result = {
|
||
year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),
|
||
month: monthsShort.indexOf(monthStr) + 1,
|
||
day: parseInteger(dayStr),
|
||
hour: parseInteger(hourStr),
|
||
minute: parseInteger(minuteStr)
|
||
};
|
||
if (secondStr)
|
||
result.second = parseInteger(secondStr);
|
||
if (weekdayStr) {
|
||
result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1;
|
||
}
|
||
return result;
|
||
}
|
||
var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;
|
||
function extractRFC2822(match2) {
|
||
const [
|
||
,
|
||
weekdayStr,
|
||
dayStr,
|
||
monthStr,
|
||
yearStr,
|
||
hourStr,
|
||
minuteStr,
|
||
secondStr,
|
||
obsOffset,
|
||
milOffset,
|
||
offHourStr,
|
||
offMinuteStr
|
||
] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
|
||
let offset2;
|
||
if (obsOffset) {
|
||
offset2 = obsOffsets[obsOffset];
|
||
} else if (milOffset) {
|
||
offset2 = 0;
|
||
} else {
|
||
offset2 = signedOffset(offHourStr, offMinuteStr);
|
||
}
|
||
return [result, new FixedOffsetZone(offset2)];
|
||
}
|
||
function preprocessRFC2822(s2) {
|
||
return s2.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim();
|
||
}
|
||
var rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/;
|
||
var rfc850 = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/;
|
||
var ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;
|
||
function extractRFC1123Or850(match2) {
|
||
const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
|
||
return [result, FixedOffsetZone.utcInstance];
|
||
}
|
||
function extractASCII(match2) {
|
||
const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);
|
||
return [result, FixedOffsetZone.utcInstance];
|
||
}
|
||
var isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);
|
||
var isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);
|
||
var isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);
|
||
var isoTimeCombinedRegex = combineRegexes(isoTimeRegex);
|
||
var extractISOYmdTimeAndOffset = combineExtractors(
|
||
extractISOYmd,
|
||
extractISOTime,
|
||
extractISOOffset,
|
||
extractIANAZone
|
||
);
|
||
var extractISOWeekTimeAndOffset = combineExtractors(
|
||
extractISOWeekData,
|
||
extractISOTime,
|
||
extractISOOffset,
|
||
extractIANAZone
|
||
);
|
||
var extractISOOrdinalDateAndTime = combineExtractors(
|
||
extractISOOrdinalData,
|
||
extractISOTime,
|
||
extractISOOffset,
|
||
extractIANAZone
|
||
);
|
||
var extractISOTimeAndOffset = combineExtractors(
|
||
extractISOTime,
|
||
extractISOOffset,
|
||
extractIANAZone
|
||
);
|
||
function parseISODate(s2) {
|
||
return parse(
|
||
s2,
|
||
[isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],
|
||
[isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],
|
||
[isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],
|
||
[isoTimeCombinedRegex, extractISOTimeAndOffset]
|
||
);
|
||
}
|
||
function parseRFC2822Date(s2) {
|
||
return parse(preprocessRFC2822(s2), [rfc2822, extractRFC2822]);
|
||
}
|
||
function parseHTTPDate(s2) {
|
||
return parse(
|
||
s2,
|
||
[rfc1123, extractRFC1123Or850],
|
||
[rfc850, extractRFC1123Or850],
|
||
[ascii, extractASCII]
|
||
);
|
||
}
|
||
function parseISODuration(s2) {
|
||
return parse(s2, [isoDuration, extractISODuration]);
|
||
}
|
||
var extractISOTimeOnly = combineExtractors(extractISOTime);
|
||
function parseISOTimeOnly(s2) {
|
||
return parse(s2, [isoTimeOnly, extractISOTimeOnly]);
|
||
}
|
||
var sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);
|
||
var sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);
|
||
var extractISOTimeOffsetAndIANAZone = combineExtractors(
|
||
extractISOTime,
|
||
extractISOOffset,
|
||
extractIANAZone
|
||
);
|
||
function parseSQL(s2) {
|
||
return parse(
|
||
s2,
|
||
[sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],
|
||
[sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]
|
||
);
|
||
}
|
||
var INVALID$2 = "Invalid Duration";
|
||
var lowOrderMatrix = {
|
||
weeks: {
|
||
days: 7,
|
||
hours: 7 * 24,
|
||
minutes: 7 * 24 * 60,
|
||
seconds: 7 * 24 * 60 * 60,
|
||
milliseconds: 7 * 24 * 60 * 60 * 1e3
|
||
},
|
||
days: {
|
||
hours: 24,
|
||
minutes: 24 * 60,
|
||
seconds: 24 * 60 * 60,
|
||
milliseconds: 24 * 60 * 60 * 1e3
|
||
},
|
||
hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1e3 },
|
||
minutes: { seconds: 60, milliseconds: 60 * 1e3 },
|
||
seconds: { milliseconds: 1e3 }
|
||
};
|
||
var casualMatrix = {
|
||
years: {
|
||
quarters: 4,
|
||
months: 12,
|
||
weeks: 52,
|
||
days: 365,
|
||
hours: 365 * 24,
|
||
minutes: 365 * 24 * 60,
|
||
seconds: 365 * 24 * 60 * 60,
|
||
milliseconds: 365 * 24 * 60 * 60 * 1e3
|
||
},
|
||
quarters: {
|
||
months: 3,
|
||
weeks: 13,
|
||
days: 91,
|
||
hours: 91 * 24,
|
||
minutes: 91 * 24 * 60,
|
||
seconds: 91 * 24 * 60 * 60,
|
||
milliseconds: 91 * 24 * 60 * 60 * 1e3
|
||
},
|
||
months: {
|
||
weeks: 4,
|
||
days: 30,
|
||
hours: 30 * 24,
|
||
minutes: 30 * 24 * 60,
|
||
seconds: 30 * 24 * 60 * 60,
|
||
milliseconds: 30 * 24 * 60 * 60 * 1e3
|
||
},
|
||
...lowOrderMatrix
|
||
};
|
||
var daysInYearAccurate = 146097 / 400;
|
||
var daysInMonthAccurate = 146097 / 4800;
|
||
var accurateMatrix = {
|
||
years: {
|
||
quarters: 4,
|
||
months: 12,
|
||
weeks: daysInYearAccurate / 7,
|
||
days: daysInYearAccurate,
|
||
hours: daysInYearAccurate * 24,
|
||
minutes: daysInYearAccurate * 24 * 60,
|
||
seconds: daysInYearAccurate * 24 * 60 * 60,
|
||
milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1e3
|
||
},
|
||
quarters: {
|
||
months: 3,
|
||
weeks: daysInYearAccurate / 28,
|
||
days: daysInYearAccurate / 4,
|
||
hours: daysInYearAccurate * 24 / 4,
|
||
minutes: daysInYearAccurate * 24 * 60 / 4,
|
||
seconds: daysInYearAccurate * 24 * 60 * 60 / 4,
|
||
milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1e3 / 4
|
||
},
|
||
months: {
|
||
weeks: daysInMonthAccurate / 7,
|
||
days: daysInMonthAccurate,
|
||
hours: daysInMonthAccurate * 24,
|
||
minutes: daysInMonthAccurate * 24 * 60,
|
||
seconds: daysInMonthAccurate * 24 * 60 * 60,
|
||
milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1e3
|
||
},
|
||
...lowOrderMatrix
|
||
};
|
||
var orderedUnits$1 = [
|
||
"years",
|
||
"quarters",
|
||
"months",
|
||
"weeks",
|
||
"days",
|
||
"hours",
|
||
"minutes",
|
||
"seconds",
|
||
"milliseconds"
|
||
];
|
||
var reverseUnits = orderedUnits$1.slice(0).reverse();
|
||
function clone$1(dur, alts, clear = false) {
|
||
const conf = {
|
||
values: clear ? alts.values : { ...dur.values, ...alts.values || {} },
|
||
loc: dur.loc.clone(alts.loc),
|
||
conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,
|
||
matrix: alts.matrix || dur.matrix
|
||
};
|
||
return new Duration(conf);
|
||
}
|
||
function antiTrunc(n2) {
|
||
return n2 < 0 ? Math.floor(n2) : Math.ceil(n2);
|
||
}
|
||
function convert(matrix, fromMap, fromUnit, toMap, toUnit) {
|
||
const conv = matrix[toUnit][fromUnit], raw = fromMap[fromUnit] / conv, sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]), added = !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);
|
||
toMap[toUnit] += added;
|
||
fromMap[fromUnit] -= added * conv;
|
||
}
|
||
function normalizeValues(matrix, vals) {
|
||
reverseUnits.reduce((previous, current) => {
|
||
if (!isUndefined(vals[current])) {
|
||
if (previous) {
|
||
convert(matrix, vals, previous, vals, current);
|
||
}
|
||
return current;
|
||
} else {
|
||
return previous;
|
||
}
|
||
}, null);
|
||
}
|
||
function removeZeroes(vals) {
|
||
const newVals = {};
|
||
for (const [key, value] of Object.entries(vals)) {
|
||
if (value !== 0) {
|
||
newVals[key] = value;
|
||
}
|
||
}
|
||
return newVals;
|
||
}
|
||
var Duration = class {
|
||
/**
|
||
* @private
|
||
*/
|
||
constructor(config) {
|
||
const accurate = config.conversionAccuracy === "longterm" || false;
|
||
let matrix = accurate ? accurateMatrix : casualMatrix;
|
||
if (config.matrix) {
|
||
matrix = config.matrix;
|
||
}
|
||
this.values = config.values;
|
||
this.loc = config.loc || Locale.create();
|
||
this.conversionAccuracy = accurate ? "longterm" : "casual";
|
||
this.invalid = config.invalid || null;
|
||
this.matrix = matrix;
|
||
this.isLuxonDuration = true;
|
||
}
|
||
/**
|
||
* Create Duration from a number of milliseconds.
|
||
* @param {number} count of milliseconds
|
||
* @param {Object} opts - options for parsing
|
||
* @param {string} [opts.locale='en-US'] - the locale to use
|
||
* @param {string} opts.numberingSystem - the numbering system to use
|
||
* @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
|
||
* @return {Duration}
|
||
*/
|
||
static fromMillis(count, opts) {
|
||
return Duration.fromObject({ milliseconds: count }, opts);
|
||
}
|
||
/**
|
||
* Create a Duration from a JavaScript object with keys like 'years' and 'hours'.
|
||
* If this object is empty then a zero milliseconds duration is returned.
|
||
* @param {Object} obj - the object to create the DateTime from
|
||
* @param {number} obj.years
|
||
* @param {number} obj.quarters
|
||
* @param {number} obj.months
|
||
* @param {number} obj.weeks
|
||
* @param {number} obj.days
|
||
* @param {number} obj.hours
|
||
* @param {number} obj.minutes
|
||
* @param {number} obj.seconds
|
||
* @param {number} obj.milliseconds
|
||
* @param {Object} [opts=[]] - options for creating this Duration
|
||
* @param {string} [opts.locale='en-US'] - the locale to use
|
||
* @param {string} opts.numberingSystem - the numbering system to use
|
||
* @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
|
||
* @param {string} [opts.matrix=Object] - the custom conversion system to use
|
||
* @return {Duration}
|
||
*/
|
||
static fromObject(obj, opts = {}) {
|
||
if (obj == null || typeof obj !== "object") {
|
||
throw new InvalidArgumentError(
|
||
`Duration.fromObject: argument expected to be an object, got ${obj === null ? "null" : typeof obj}`
|
||
);
|
||
}
|
||
return new Duration({
|
||
values: normalizeObject(obj, Duration.normalizeUnit),
|
||
loc: Locale.fromObject(opts),
|
||
conversionAccuracy: opts.conversionAccuracy,
|
||
matrix: opts.matrix
|
||
});
|
||
}
|
||
/**
|
||
* Create a Duration from DurationLike.
|
||
*
|
||
* @param {Object | number | Duration} durationLike
|
||
* One of:
|
||
* - object with keys like 'years' and 'hours'.
|
||
* - number representing milliseconds
|
||
* - Duration instance
|
||
* @return {Duration}
|
||
*/
|
||
static fromDurationLike(durationLike) {
|
||
if (isNumber(durationLike)) {
|
||
return Duration.fromMillis(durationLike);
|
||
} else if (Duration.isDuration(durationLike)) {
|
||
return durationLike;
|
||
} else if (typeof durationLike === "object") {
|
||
return Duration.fromObject(durationLike);
|
||
} else {
|
||
throw new InvalidArgumentError(
|
||
`Unknown duration argument ${durationLike} of type ${typeof durationLike}`
|
||
);
|
||
}
|
||
}
|
||
/**
|
||
* Create a Duration from an ISO 8601 duration string.
|
||
* @param {string} text - text to parse
|
||
* @param {Object} opts - options for parsing
|
||
* @param {string} [opts.locale='en-US'] - the locale to use
|
||
* @param {string} opts.numberingSystem - the numbering system to use
|
||
* @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
|
||
* @param {string} [opts.matrix=Object] - the preset conversion system to use
|
||
* @see https://en.wikipedia.org/wiki/ISO_8601#Durations
|
||
* @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }
|
||
* @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }
|
||
* @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }
|
||
* @return {Duration}
|
||
*/
|
||
static fromISO(text2, opts) {
|
||
const [parsed] = parseISODuration(text2);
|
||
if (parsed) {
|
||
return Duration.fromObject(parsed, opts);
|
||
} else {
|
||
return Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`);
|
||
}
|
||
}
|
||
/**
|
||
* Create a Duration from an ISO 8601 time string.
|
||
* @param {string} text - text to parse
|
||
* @param {Object} opts - options for parsing
|
||
* @param {string} [opts.locale='en-US'] - the locale to use
|
||
* @param {string} opts.numberingSystem - the numbering system to use
|
||
* @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use
|
||
* @param {string} [opts.matrix=Object] - the conversion system to use
|
||
* @see https://en.wikipedia.org/wiki/ISO_8601#Times
|
||
* @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }
|
||
* @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
|
||
* @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
|
||
* @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
|
||
* @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }
|
||
* @return {Duration}
|
||
*/
|
||
static fromISOTime(text2, opts) {
|
||
const [parsed] = parseISOTimeOnly(text2);
|
||
if (parsed) {
|
||
return Duration.fromObject(parsed, opts);
|
||
} else {
|
||
return Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`);
|
||
}
|
||
}
|
||
/**
|
||
* Create an invalid Duration.
|
||
* @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent
|
||
* @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information
|
||
* @return {Duration}
|
||
*/
|
||
static invalid(reason, explanation = null) {
|
||
if (!reason) {
|
||
throw new InvalidArgumentError("need to specify a reason the Duration is invalid");
|
||
}
|
||
const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);
|
||
if (Settings2.throwOnInvalid) {
|
||
throw new InvalidDurationError(invalid);
|
||
} else {
|
||
return new Duration({ invalid });
|
||
}
|
||
}
|
||
/**
|
||
* @private
|
||
*/
|
||
static normalizeUnit(unit) {
|
||
const normalized = {
|
||
year: "years",
|
||
years: "years",
|
||
quarter: "quarters",
|
||
quarters: "quarters",
|
||
month: "months",
|
||
months: "months",
|
||
week: "weeks",
|
||
weeks: "weeks",
|
||
day: "days",
|
||
days: "days",
|
||
hour: "hours",
|
||
hours: "hours",
|
||
minute: "minutes",
|
||
minutes: "minutes",
|
||
second: "seconds",
|
||
seconds: "seconds",
|
||
millisecond: "milliseconds",
|
||
milliseconds: "milliseconds"
|
||
}[unit ? unit.toLowerCase() : unit];
|
||
if (!normalized)
|
||
throw new InvalidUnitError(unit);
|
||
return normalized;
|
||
}
|
||
/**
|
||
* Check if an object is a Duration. Works across context boundaries
|
||
* @param {object} o
|
||
* @return {boolean}
|
||
*/
|
||
static isDuration(o) {
|
||
return o && o.isLuxonDuration || false;
|
||
}
|
||
/**
|
||
* Get the locale of a Duration, such 'en-GB'
|
||
* @type {string}
|
||
*/
|
||
get locale() {
|
||
return this.isValid ? this.loc.locale : null;
|
||
}
|
||
/**
|
||
* Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration
|
||
*
|
||
* @type {string}
|
||
*/
|
||
get numberingSystem() {
|
||
return this.isValid ? this.loc.numberingSystem : null;
|
||
}
|
||
/**
|
||
* Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:
|
||
* * `S` for milliseconds
|
||
* * `s` for seconds
|
||
* * `m` for minutes
|
||
* * `h` for hours
|
||
* * `d` for days
|
||
* * `w` for weeks
|
||
* * `M` for months
|
||
* * `y` for years
|
||
* Notes:
|
||
* * Add padding by repeating the token, e.g. "yy" pads the years to two digits, "hhhh" pads the hours out to four digits
|
||
* * Tokens can be escaped by wrapping with single quotes.
|
||
* * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.
|
||
* @param {string} fmt - the format string
|
||
* @param {Object} opts - options
|
||
* @param {boolean} [opts.floor=true] - floor numerical values
|
||
* @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("y d s") //=> "1 6 2"
|
||
* @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("yy dd sss") //=> "01 06 002"
|
||
* @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("M S") //=> "12 518402000"
|
||
* @return {string}
|
||
*/
|
||
toFormat(fmt, opts = {}) {
|
||
const fmtOpts = {
|
||
...opts,
|
||
floor: opts.round !== false && opts.floor !== false
|
||
};
|
||
return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID$2;
|
||
}
|
||
/**
|
||
* Returns a string representation of a Duration with all units included.
|
||
* To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.
|
||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
|
||
* @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`.
|
||
* @example
|
||
* ```js
|
||
* var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })
|
||
* dur.toHuman() //=> '1 day, 5 hours, 6 minutes'
|
||
* dur.toHuman({ listStyle: "long" }) //=> '1 day, 5 hours, and 6 minutes'
|
||
* dur.toHuman({ unitDisplay: "short" }) //=> '1 day, 5 hr, 6 min'
|
||
* ```
|
||
*/
|
||
toHuman(opts = {}) {
|
||
const l2 = orderedUnits$1.map((unit) => {
|
||
const val = this.values[unit];
|
||
if (isUndefined(val)) {
|
||
return null;
|
||
}
|
||
return this.loc.numberFormatter({ style: "unit", unitDisplay: "long", ...opts, unit: unit.slice(0, -1) }).format(val);
|
||
}).filter((n2) => n2);
|
||
return this.loc.listFormatter({ type: "conjunction", style: opts.listStyle || "narrow", ...opts }).format(l2);
|
||
}
|
||
/**
|
||
* Returns a JavaScript object with this Duration's values.
|
||
* @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }
|
||
* @return {Object}
|
||
*/
|
||
toObject() {
|
||
if (!this.isValid)
|
||
return {};
|
||
return { ...this.values };
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of this Duration.
|
||
* @see https://en.wikipedia.org/wiki/ISO_8601#Durations
|
||
* @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'
|
||
* @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'
|
||
* @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'
|
||
* @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'
|
||
* @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'
|
||
* @return {string}
|
||
*/
|
||
toISO() {
|
||
if (!this.isValid)
|
||
return null;
|
||
let s2 = "P";
|
||
if (this.years !== 0)
|
||
s2 += this.years + "Y";
|
||
if (this.months !== 0 || this.quarters !== 0)
|
||
s2 += this.months + this.quarters * 3 + "M";
|
||
if (this.weeks !== 0)
|
||
s2 += this.weeks + "W";
|
||
if (this.days !== 0)
|
||
s2 += this.days + "D";
|
||
if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)
|
||
s2 += "T";
|
||
if (this.hours !== 0)
|
||
s2 += this.hours + "H";
|
||
if (this.minutes !== 0)
|
||
s2 += this.minutes + "M";
|
||
if (this.seconds !== 0 || this.milliseconds !== 0)
|
||
s2 += roundTo(this.seconds + this.milliseconds / 1e3, 3) + "S";
|
||
if (s2 === "P")
|
||
s2 += "T0S";
|
||
return s2;
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.
|
||
* Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.
|
||
* @see https://en.wikipedia.org/wiki/ISO_8601#Times
|
||
* @param {Object} opts - options
|
||
* @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0
|
||
* @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0
|
||
* @param {boolean} [opts.includePrefix=false] - include the `T` prefix
|
||
* @param {string} [opts.format='extended'] - choose between the basic and extended format
|
||
* @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'
|
||
* @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'
|
||
* @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'
|
||
* @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'
|
||
* @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'
|
||
* @return {string}
|
||
*/
|
||
toISOTime(opts = {}) {
|
||
if (!this.isValid)
|
||
return null;
|
||
const millis = this.toMillis();
|
||
if (millis < 0 || millis >= 864e5)
|
||
return null;
|
||
opts = {
|
||
suppressMilliseconds: false,
|
||
suppressSeconds: false,
|
||
includePrefix: false,
|
||
format: "extended",
|
||
...opts
|
||
};
|
||
const value = this.shiftTo("hours", "minutes", "seconds", "milliseconds");
|
||
let fmt = opts.format === "basic" ? "hhmm" : "hh:mm";
|
||
if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {
|
||
fmt += opts.format === "basic" ? "ss" : ":ss";
|
||
if (!opts.suppressMilliseconds || value.milliseconds !== 0) {
|
||
fmt += ".SSS";
|
||
}
|
||
}
|
||
let str = value.toFormat(fmt);
|
||
if (opts.includePrefix) {
|
||
str = "T" + str;
|
||
}
|
||
return str;
|
||
}
|
||
/**
|
||
* Returns an ISO 8601 representation of this Duration appropriate for use in JSON.
|
||
* @return {string}
|
||
*/
|
||
toJSON() {
|
||
return this.toISO();
|
||
}
|
||
/**
|
||
* Returns an ISO 8601 representation of this Duration appropriate for use in debugging.
|
||
* @return {string}
|
||
*/
|
||
toString() {
|
||
return this.toISO();
|
||
}
|
||
/**
|
||
* Returns an milliseconds value of this Duration.
|
||
* @return {number}
|
||
*/
|
||
toMillis() {
|
||
return this.as("milliseconds");
|
||
}
|
||
/**
|
||
* Returns an milliseconds value of this Duration. Alias of {@link toMillis}
|
||
* @return {number}
|
||
*/
|
||
valueOf() {
|
||
return this.toMillis();
|
||
}
|
||
/**
|
||
* Make this Duration longer by the specified amount. Return a newly-constructed Duration.
|
||
* @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()
|
||
* @return {Duration}
|
||
*/
|
||
plus(duration) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const dur = Duration.fromDurationLike(duration), result = {};
|
||
for (const k of orderedUnits$1) {
|
||
if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {
|
||
result[k] = dur.get(k) + this.get(k);
|
||
}
|
||
}
|
||
return clone$1(this, { values: result }, true);
|
||
}
|
||
/**
|
||
* Make this Duration shorter by the specified amount. Return a newly-constructed Duration.
|
||
* @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()
|
||
* @return {Duration}
|
||
*/
|
||
minus(duration) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const dur = Duration.fromDurationLike(duration);
|
||
return this.plus(dur.negate());
|
||
}
|
||
/**
|
||
* Scale this Duration by the specified amount. Return a newly-constructed Duration.
|
||
* @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.
|
||
* @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }
|
||
* @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === "hours" ? x * 2 : x) //=> { hours: 2, minutes: 30 }
|
||
* @return {Duration}
|
||
*/
|
||
mapUnits(fn) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const result = {};
|
||
for (const k of Object.keys(this.values)) {
|
||
result[k] = asNumber(fn(this.values[k], k));
|
||
}
|
||
return clone$1(this, { values: result }, true);
|
||
}
|
||
/**
|
||
* Get the value of unit.
|
||
* @param {string} unit - a unit such as 'minute' or 'day'
|
||
* @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2
|
||
* @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0
|
||
* @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3
|
||
* @return {number}
|
||
*/
|
||
get(unit) {
|
||
return this[Duration.normalizeUnit(unit)];
|
||
}
|
||
/**
|
||
* "Set" the values of specified units. Return a newly-constructed Duration.
|
||
* @param {Object} values - a mapping of units to numbers
|
||
* @example dur.set({ years: 2017 })
|
||
* @example dur.set({ hours: 8, minutes: 30 })
|
||
* @return {Duration}
|
||
*/
|
||
set(values) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };
|
||
return clone$1(this, { values: mixed });
|
||
}
|
||
/**
|
||
* "Set" the locale and/or numberingSystem. Returns a newly-constructed Duration.
|
||
* @example dur.reconfigure({ locale: 'en-GB' })
|
||
* @return {Duration}
|
||
*/
|
||
reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {
|
||
const loc = this.loc.clone({ locale, numberingSystem });
|
||
const opts = { loc, matrix, conversionAccuracy };
|
||
return clone$1(this, opts);
|
||
}
|
||
/**
|
||
* Return the length of the duration in the specified unit.
|
||
* @param {string} unit - a unit such as 'minutes' or 'days'
|
||
* @example Duration.fromObject({years: 1}).as('days') //=> 365
|
||
* @example Duration.fromObject({years: 1}).as('months') //=> 12
|
||
* @example Duration.fromObject({hours: 60}).as('days') //=> 2.5
|
||
* @return {number}
|
||
*/
|
||
as(unit) {
|
||
return this.isValid ? this.shiftTo(unit).get(unit) : NaN;
|
||
}
|
||
/**
|
||
* Reduce this Duration to its canonical representation in its current units.
|
||
* @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }
|
||
* @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }
|
||
* @return {Duration}
|
||
*/
|
||
normalize() {
|
||
if (!this.isValid)
|
||
return this;
|
||
const vals = this.toObject();
|
||
normalizeValues(this.matrix, vals);
|
||
return clone$1(this, { values: vals }, true);
|
||
}
|
||
/**
|
||
* Rescale units to its largest representation
|
||
* @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }
|
||
* @return {Duration}
|
||
*/
|
||
rescale() {
|
||
if (!this.isValid)
|
||
return this;
|
||
const vals = removeZeroes(this.normalize().shiftToAll().toObject());
|
||
return clone$1(this, { values: vals }, true);
|
||
}
|
||
/**
|
||
* Convert this Duration into its representation in a different set of units.
|
||
* @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }
|
||
* @return {Duration}
|
||
*/
|
||
shiftTo(...units) {
|
||
if (!this.isValid)
|
||
return this;
|
||
if (units.length === 0) {
|
||
return this;
|
||
}
|
||
units = units.map((u) => Duration.normalizeUnit(u));
|
||
const built = {}, accumulated = {}, vals = this.toObject();
|
||
let lastUnit;
|
||
for (const k of orderedUnits$1) {
|
||
if (units.indexOf(k) >= 0) {
|
||
lastUnit = k;
|
||
let own = 0;
|
||
for (const ak in accumulated) {
|
||
own += this.matrix[ak][k] * accumulated[ak];
|
||
accumulated[ak] = 0;
|
||
}
|
||
if (isNumber(vals[k])) {
|
||
own += vals[k];
|
||
}
|
||
const i = Math.trunc(own);
|
||
built[k] = i;
|
||
accumulated[k] = (own * 1e3 - i * 1e3) / 1e3;
|
||
for (const down in vals) {
|
||
if (orderedUnits$1.indexOf(down) > orderedUnits$1.indexOf(k)) {
|
||
convert(this.matrix, vals, down, built, k);
|
||
}
|
||
}
|
||
} else if (isNumber(vals[k])) {
|
||
accumulated[k] = vals[k];
|
||
}
|
||
}
|
||
for (const key in accumulated) {
|
||
if (accumulated[key] !== 0) {
|
||
built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];
|
||
}
|
||
}
|
||
return clone$1(this, { values: built }, true).normalize();
|
||
}
|
||
/**
|
||
* Shift this Duration to all available units.
|
||
* Same as shiftTo("years", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds")
|
||
* @return {Duration}
|
||
*/
|
||
shiftToAll() {
|
||
if (!this.isValid)
|
||
return this;
|
||
return this.shiftTo(
|
||
"years",
|
||
"months",
|
||
"weeks",
|
||
"days",
|
||
"hours",
|
||
"minutes",
|
||
"seconds",
|
||
"milliseconds"
|
||
);
|
||
}
|
||
/**
|
||
* Return the negative of this Duration.
|
||
* @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }
|
||
* @return {Duration}
|
||
*/
|
||
negate() {
|
||
if (!this.isValid)
|
||
return this;
|
||
const negated = {};
|
||
for (const k of Object.keys(this.values)) {
|
||
negated[k] = this.values[k] === 0 ? 0 : -this.values[k];
|
||
}
|
||
return clone$1(this, { values: negated }, true);
|
||
}
|
||
/**
|
||
* Get the years.
|
||
* @type {number}
|
||
*/
|
||
get years() {
|
||
return this.isValid ? this.values.years || 0 : NaN;
|
||
}
|
||
/**
|
||
* Get the quarters.
|
||
* @type {number}
|
||
*/
|
||
get quarters() {
|
||
return this.isValid ? this.values.quarters || 0 : NaN;
|
||
}
|
||
/**
|
||
* Get the months.
|
||
* @type {number}
|
||
*/
|
||
get months() {
|
||
return this.isValid ? this.values.months || 0 : NaN;
|
||
}
|
||
/**
|
||
* Get the weeks
|
||
* @type {number}
|
||
*/
|
||
get weeks() {
|
||
return this.isValid ? this.values.weeks || 0 : NaN;
|
||
}
|
||
/**
|
||
* Get the days.
|
||
* @type {number}
|
||
*/
|
||
get days() {
|
||
return this.isValid ? this.values.days || 0 : NaN;
|
||
}
|
||
/**
|
||
* Get the hours.
|
||
* @type {number}
|
||
*/
|
||
get hours() {
|
||
return this.isValid ? this.values.hours || 0 : NaN;
|
||
}
|
||
/**
|
||
* Get the minutes.
|
||
* @type {number}
|
||
*/
|
||
get minutes() {
|
||
return this.isValid ? this.values.minutes || 0 : NaN;
|
||
}
|
||
/**
|
||
* Get the seconds.
|
||
* @return {number}
|
||
*/
|
||
get seconds() {
|
||
return this.isValid ? this.values.seconds || 0 : NaN;
|
||
}
|
||
/**
|
||
* Get the milliseconds.
|
||
* @return {number}
|
||
*/
|
||
get milliseconds() {
|
||
return this.isValid ? this.values.milliseconds || 0 : NaN;
|
||
}
|
||
/**
|
||
* Returns whether the Duration is invalid. Invalid durations are returned by diff operations
|
||
* on invalid DateTimes or Intervals.
|
||
* @return {boolean}
|
||
*/
|
||
get isValid() {
|
||
return this.invalid === null;
|
||
}
|
||
/**
|
||
* Returns an error code if this Duration became invalid, or null if the Duration is valid
|
||
* @return {string}
|
||
*/
|
||
get invalidReason() {
|
||
return this.invalid ? this.invalid.reason : null;
|
||
}
|
||
/**
|
||
* Returns an explanation of why this Duration became invalid, or null if the Duration is valid
|
||
* @type {string}
|
||
*/
|
||
get invalidExplanation() {
|
||
return this.invalid ? this.invalid.explanation : null;
|
||
}
|
||
/**
|
||
* Equality check
|
||
* Two Durations are equal iff they have the same units and the same values for each unit.
|
||
* @param {Duration} other
|
||
* @return {boolean}
|
||
*/
|
||
equals(other) {
|
||
if (!this.isValid || !other.isValid) {
|
||
return false;
|
||
}
|
||
if (!this.loc.equals(other.loc)) {
|
||
return false;
|
||
}
|
||
function eq(v1, v2) {
|
||
if (v1 === void 0 || v1 === 0)
|
||
return v2 === void 0 || v2 === 0;
|
||
return v1 === v2;
|
||
}
|
||
for (const u of orderedUnits$1) {
|
||
if (!eq(this.values[u], other.values[u])) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
};
|
||
var INVALID$1 = "Invalid Interval";
|
||
function validateStartEnd(start, end) {
|
||
if (!start || !start.isValid) {
|
||
return Interval.invalid("missing or invalid start");
|
||
} else if (!end || !end.isValid) {
|
||
return Interval.invalid("missing or invalid end");
|
||
} else if (end < start) {
|
||
return Interval.invalid(
|
||
"end before start",
|
||
`The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`
|
||
);
|
||
} else {
|
||
return null;
|
||
}
|
||
}
|
||
var Interval = class {
|
||
/**
|
||
* @private
|
||
*/
|
||
constructor(config) {
|
||
this.s = config.start;
|
||
this.e = config.end;
|
||
this.invalid = config.invalid || null;
|
||
this.isLuxonInterval = true;
|
||
}
|
||
/**
|
||
* Create an invalid Interval.
|
||
* @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent
|
||
* @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information
|
||
* @return {Interval}
|
||
*/
|
||
static invalid(reason, explanation = null) {
|
||
if (!reason) {
|
||
throw new InvalidArgumentError("need to specify a reason the Interval is invalid");
|
||
}
|
||
const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);
|
||
if (Settings2.throwOnInvalid) {
|
||
throw new InvalidIntervalError(invalid);
|
||
} else {
|
||
return new Interval({ invalid });
|
||
}
|
||
}
|
||
/**
|
||
* Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.
|
||
* @param {DateTime|Date|Object} start
|
||
* @param {DateTime|Date|Object} end
|
||
* @return {Interval}
|
||
*/
|
||
static fromDateTimes(start, end) {
|
||
const builtStart = friendlyDateTime(start), builtEnd = friendlyDateTime(end);
|
||
const validateError = validateStartEnd(builtStart, builtEnd);
|
||
if (validateError == null) {
|
||
return new Interval({
|
||
start: builtStart,
|
||
end: builtEnd
|
||
});
|
||
} else {
|
||
return validateError;
|
||
}
|
||
}
|
||
/**
|
||
* Create an Interval from a start DateTime and a Duration to extend to.
|
||
* @param {DateTime|Date|Object} start
|
||
* @param {Duration|Object|number} duration - the length of the Interval.
|
||
* @return {Interval}
|
||
*/
|
||
static after(start, duration) {
|
||
const dur = Duration.fromDurationLike(duration), dt = friendlyDateTime(start);
|
||
return Interval.fromDateTimes(dt, dt.plus(dur));
|
||
}
|
||
/**
|
||
* Create an Interval from an end DateTime and a Duration to extend backwards to.
|
||
* @param {DateTime|Date|Object} end
|
||
* @param {Duration|Object|number} duration - the length of the Interval.
|
||
* @return {Interval}
|
||
*/
|
||
static before(end, duration) {
|
||
const dur = Duration.fromDurationLike(duration), dt = friendlyDateTime(end);
|
||
return Interval.fromDateTimes(dt.minus(dur), dt);
|
||
}
|
||
/**
|
||
* Create an Interval from an ISO 8601 string.
|
||
* Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.
|
||
* @param {string} text - the ISO string to parse
|
||
* @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}
|
||
* @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
|
||
* @return {Interval}
|
||
*/
|
||
static fromISO(text2, opts) {
|
||
const [s2, e] = (text2 || "").split("/", 2);
|
||
if (s2 && e) {
|
||
let start, startIsValid;
|
||
try {
|
||
start = DateTime.fromISO(s2, opts);
|
||
startIsValid = start.isValid;
|
||
} catch (e2) {
|
||
startIsValid = false;
|
||
}
|
||
let end, endIsValid;
|
||
try {
|
||
end = DateTime.fromISO(e, opts);
|
||
endIsValid = end.isValid;
|
||
} catch (e2) {
|
||
endIsValid = false;
|
||
}
|
||
if (startIsValid && endIsValid) {
|
||
return Interval.fromDateTimes(start, end);
|
||
}
|
||
if (startIsValid) {
|
||
const dur = Duration.fromISO(e, opts);
|
||
if (dur.isValid) {
|
||
return Interval.after(start, dur);
|
||
}
|
||
} else if (endIsValid) {
|
||
const dur = Duration.fromISO(s2, opts);
|
||
if (dur.isValid) {
|
||
return Interval.before(end, dur);
|
||
}
|
||
}
|
||
}
|
||
return Interval.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`);
|
||
}
|
||
/**
|
||
* Check if an object is an Interval. Works across context boundaries
|
||
* @param {object} o
|
||
* @return {boolean}
|
||
*/
|
||
static isInterval(o) {
|
||
return o && o.isLuxonInterval || false;
|
||
}
|
||
/**
|
||
* Returns the start of the Interval
|
||
* @type {DateTime}
|
||
*/
|
||
get start() {
|
||
return this.isValid ? this.s : null;
|
||
}
|
||
/**
|
||
* Returns the end of the Interval
|
||
* @type {DateTime}
|
||
*/
|
||
get end() {
|
||
return this.isValid ? this.e : null;
|
||
}
|
||
/**
|
||
* Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.
|
||
* @type {boolean}
|
||
*/
|
||
get isValid() {
|
||
return this.invalidReason === null;
|
||
}
|
||
/**
|
||
* Returns an error code if this Interval is invalid, or null if the Interval is valid
|
||
* @type {string}
|
||
*/
|
||
get invalidReason() {
|
||
return this.invalid ? this.invalid.reason : null;
|
||
}
|
||
/**
|
||
* Returns an explanation of why this Interval became invalid, or null if the Interval is valid
|
||
* @type {string}
|
||
*/
|
||
get invalidExplanation() {
|
||
return this.invalid ? this.invalid.explanation : null;
|
||
}
|
||
/**
|
||
* Returns the length of the Interval in the specified unit.
|
||
* @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.
|
||
* @return {number}
|
||
*/
|
||
length(unit = "milliseconds") {
|
||
return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;
|
||
}
|
||
/**
|
||
* Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.
|
||
* Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'
|
||
* asks 'what dates are included in this interval?', not 'how many days long is this interval?'
|
||
* @param {string} [unit='milliseconds'] - the unit of time to count.
|
||
* @return {number}
|
||
*/
|
||
count(unit = "milliseconds") {
|
||
if (!this.isValid)
|
||
return NaN;
|
||
const start = this.start.startOf(unit), end = this.end.startOf(unit);
|
||
return Math.floor(end.diff(start, unit).get(unit)) + 1;
|
||
}
|
||
/**
|
||
* Returns whether this Interval's start and end are both in the same unit of time
|
||
* @param {string} unit - the unit of time to check sameness on
|
||
* @return {boolean}
|
||
*/
|
||
hasSame(unit) {
|
||
return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;
|
||
}
|
||
/**
|
||
* Return whether this Interval has the same start and end DateTimes.
|
||
* @return {boolean}
|
||
*/
|
||
isEmpty() {
|
||
return this.s.valueOf() === this.e.valueOf();
|
||
}
|
||
/**
|
||
* Return whether this Interval's start is after the specified DateTime.
|
||
* @param {DateTime} dateTime
|
||
* @return {boolean}
|
||
*/
|
||
isAfter(dateTime) {
|
||
if (!this.isValid)
|
||
return false;
|
||
return this.s > dateTime;
|
||
}
|
||
/**
|
||
* Return whether this Interval's end is before the specified DateTime.
|
||
* @param {DateTime} dateTime
|
||
* @return {boolean}
|
||
*/
|
||
isBefore(dateTime) {
|
||
if (!this.isValid)
|
||
return false;
|
||
return this.e <= dateTime;
|
||
}
|
||
/**
|
||
* Return whether this Interval contains the specified DateTime.
|
||
* @param {DateTime} dateTime
|
||
* @return {boolean}
|
||
*/
|
||
contains(dateTime) {
|
||
if (!this.isValid)
|
||
return false;
|
||
return this.s <= dateTime && this.e > dateTime;
|
||
}
|
||
/**
|
||
* "Sets" the start and/or end dates. Returns a newly-constructed Interval.
|
||
* @param {Object} values - the values to set
|
||
* @param {DateTime} values.start - the starting DateTime
|
||
* @param {DateTime} values.end - the ending DateTime
|
||
* @return {Interval}
|
||
*/
|
||
set({ start, end } = {}) {
|
||
if (!this.isValid)
|
||
return this;
|
||
return Interval.fromDateTimes(start || this.s, end || this.e);
|
||
}
|
||
/**
|
||
* Split this Interval at each of the specified DateTimes
|
||
* @param {...DateTime} dateTimes - the unit of time to count.
|
||
* @return {Array}
|
||
*/
|
||
splitAt(...dateTimes) {
|
||
if (!this.isValid)
|
||
return [];
|
||
const sorted = dateTimes.map(friendlyDateTime).filter((d) => this.contains(d)).sort(), results = [];
|
||
let { s: s2 } = this, i = 0;
|
||
while (s2 < this.e) {
|
||
const added = sorted[i] || this.e, next = +added > +this.e ? this.e : added;
|
||
results.push(Interval.fromDateTimes(s2, next));
|
||
s2 = next;
|
||
i += 1;
|
||
}
|
||
return results;
|
||
}
|
||
/**
|
||
* Split this Interval into smaller Intervals, each of the specified length.
|
||
* Left over time is grouped into a smaller interval
|
||
* @param {Duration|Object|number} duration - The length of each resulting interval.
|
||
* @return {Array}
|
||
*/
|
||
splitBy(duration) {
|
||
const dur = Duration.fromDurationLike(duration);
|
||
if (!this.isValid || !dur.isValid || dur.as("milliseconds") === 0) {
|
||
return [];
|
||
}
|
||
let { s: s2 } = this, idx = 1, next;
|
||
const results = [];
|
||
while (s2 < this.e) {
|
||
const added = this.start.plus(dur.mapUnits((x) => x * idx));
|
||
next = +added > +this.e ? this.e : added;
|
||
results.push(Interval.fromDateTimes(s2, next));
|
||
s2 = next;
|
||
idx += 1;
|
||
}
|
||
return results;
|
||
}
|
||
/**
|
||
* Split this Interval into the specified number of smaller intervals.
|
||
* @param {number} numberOfParts - The number of Intervals to divide the Interval into.
|
||
* @return {Array}
|
||
*/
|
||
divideEqually(numberOfParts) {
|
||
if (!this.isValid)
|
||
return [];
|
||
return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);
|
||
}
|
||
/**
|
||
* Return whether this Interval overlaps with the specified Interval
|
||
* @param {Interval} other
|
||
* @return {boolean}
|
||
*/
|
||
overlaps(other) {
|
||
return this.e > other.s && this.s < other.e;
|
||
}
|
||
/**
|
||
* Return whether this Interval's end is adjacent to the specified Interval's start.
|
||
* @param {Interval} other
|
||
* @return {boolean}
|
||
*/
|
||
abutsStart(other) {
|
||
if (!this.isValid)
|
||
return false;
|
||
return +this.e === +other.s;
|
||
}
|
||
/**
|
||
* Return whether this Interval's start is adjacent to the specified Interval's end.
|
||
* @param {Interval} other
|
||
* @return {boolean}
|
||
*/
|
||
abutsEnd(other) {
|
||
if (!this.isValid)
|
||
return false;
|
||
return +other.e === +this.s;
|
||
}
|
||
/**
|
||
* Return whether this Interval engulfs the start and end of the specified Interval.
|
||
* @param {Interval} other
|
||
* @return {boolean}
|
||
*/
|
||
engulfs(other) {
|
||
if (!this.isValid)
|
||
return false;
|
||
return this.s <= other.s && this.e >= other.e;
|
||
}
|
||
/**
|
||
* Return whether this Interval has the same start and end as the specified Interval.
|
||
* @param {Interval} other
|
||
* @return {boolean}
|
||
*/
|
||
equals(other) {
|
||
if (!this.isValid || !other.isValid) {
|
||
return false;
|
||
}
|
||
return this.s.equals(other.s) && this.e.equals(other.e);
|
||
}
|
||
/**
|
||
* Return an Interval representing the intersection of this Interval and the specified Interval.
|
||
* Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.
|
||
* Returns null if the intersection is empty, meaning, the intervals don't intersect.
|
||
* @param {Interval} other
|
||
* @return {Interval}
|
||
*/
|
||
intersection(other) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const s2 = this.s > other.s ? this.s : other.s, e = this.e < other.e ? this.e : other.e;
|
||
if (s2 >= e) {
|
||
return null;
|
||
} else {
|
||
return Interval.fromDateTimes(s2, e);
|
||
}
|
||
}
|
||
/**
|
||
* Return an Interval representing the union of this Interval and the specified Interval.
|
||
* Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.
|
||
* @param {Interval} other
|
||
* @return {Interval}
|
||
*/
|
||
union(other) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const s2 = this.s < other.s ? this.s : other.s, e = this.e > other.e ? this.e : other.e;
|
||
return Interval.fromDateTimes(s2, e);
|
||
}
|
||
/**
|
||
* Merge an array of Intervals into a equivalent minimal set of Intervals.
|
||
* Combines overlapping and adjacent Intervals.
|
||
* @param {Array} intervals
|
||
* @return {Array}
|
||
*/
|
||
static merge(intervals) {
|
||
const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce(
|
||
([sofar, current], item) => {
|
||
if (!current) {
|
||
return [sofar, item];
|
||
} else if (current.overlaps(item) || current.abutsStart(item)) {
|
||
return [sofar, current.union(item)];
|
||
} else {
|
||
return [sofar.concat([current]), item];
|
||
}
|
||
},
|
||
[[], null]
|
||
);
|
||
if (final) {
|
||
found.push(final);
|
||
}
|
||
return found;
|
||
}
|
||
/**
|
||
* Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.
|
||
* @param {Array} intervals
|
||
* @return {Array}
|
||
*/
|
||
static xor(intervals) {
|
||
let start = null, currentCount = 0;
|
||
const results = [], ends = intervals.map((i) => [
|
||
{ time: i.s, type: "s" },
|
||
{ time: i.e, type: "e" }
|
||
]), flattened = Array.prototype.concat(...ends), arr = flattened.sort((a, b) => a.time - b.time);
|
||
for (const i of arr) {
|
||
currentCount += i.type === "s" ? 1 : -1;
|
||
if (currentCount === 1) {
|
||
start = i.time;
|
||
} else {
|
||
if (start && +start !== +i.time) {
|
||
results.push(Interval.fromDateTimes(start, i.time));
|
||
}
|
||
start = null;
|
||
}
|
||
}
|
||
return Interval.merge(results);
|
||
}
|
||
/**
|
||
* Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.
|
||
* @param {...Interval} intervals
|
||
* @return {Array}
|
||
*/
|
||
difference(...intervals) {
|
||
return Interval.xor([this].concat(intervals)).map((i) => this.intersection(i)).filter((i) => i && !i.isEmpty());
|
||
}
|
||
/**
|
||
* Returns a string representation of this Interval appropriate for debugging.
|
||
* @return {string}
|
||
*/
|
||
toString() {
|
||
if (!this.isValid)
|
||
return INVALID$1;
|
||
return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`;
|
||
}
|
||
/**
|
||
* Returns a localized string representing this Interval. Accepts the same options as the
|
||
* Intl.DateTimeFormat constructor and any presets defined by Luxon, such as
|
||
* {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method
|
||
* is browser-specific, but in general it will return an appropriate representation of the
|
||
* Interval in the assigned locale. Defaults to the system's locale if no locale has been
|
||
* specified.
|
||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
|
||
* @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or
|
||
* Intl.DateTimeFormat constructor options.
|
||
* @param {Object} opts - Options to override the configuration of the start DateTime.
|
||
* @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022
|
||
* @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022
|
||
* @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022
|
||
* @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM
|
||
* @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p
|
||
* @return {string}
|
||
*/
|
||
toLocaleString(formatOpts = DATE_SHORT, opts = {}) {
|
||
return this.isValid ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this) : INVALID$1;
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of this Interval.
|
||
* @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
|
||
* @param {Object} opts - The same options as {@link DateTime#toISO}
|
||
* @return {string}
|
||
*/
|
||
toISO(opts) {
|
||
if (!this.isValid)
|
||
return INVALID$1;
|
||
return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of date of this Interval.
|
||
* The time components are ignored.
|
||
* @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
|
||
* @return {string}
|
||
*/
|
||
toISODate() {
|
||
if (!this.isValid)
|
||
return INVALID$1;
|
||
return `${this.s.toISODate()}/${this.e.toISODate()}`;
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of time of this Interval.
|
||
* The date components are ignored.
|
||
* @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
|
||
* @param {Object} opts - The same options as {@link DateTime#toISO}
|
||
* @return {string}
|
||
*/
|
||
toISOTime(opts) {
|
||
if (!this.isValid)
|
||
return INVALID$1;
|
||
return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;
|
||
}
|
||
/**
|
||
* Returns a string representation of this Interval formatted according to the specified format
|
||
* string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible
|
||
* formatting tool.
|
||
* @param {string} dateFormat - The format string. This string formats the start and end time.
|
||
* See {@link DateTime#toFormat} for details.
|
||
* @param {Object} opts - Options.
|
||
* @param {string} [opts.separator = ' – '] - A separator to place between the start and end
|
||
* representations.
|
||
* @return {string}
|
||
*/
|
||
toFormat(dateFormat, { separator = " \u2013 " } = {}) {
|
||
if (!this.isValid)
|
||
return INVALID$1;
|
||
return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;
|
||
}
|
||
/**
|
||
* Return a Duration representing the time spanned by this interval.
|
||
* @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.
|
||
* @param {Object} opts - options that affect the creation of the Duration
|
||
* @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
|
||
* @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }
|
||
* @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }
|
||
* @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }
|
||
* @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }
|
||
* @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }
|
||
* @return {Duration}
|
||
*/
|
||
toDuration(unit, opts) {
|
||
if (!this.isValid) {
|
||
return Duration.invalid(this.invalidReason);
|
||
}
|
||
return this.e.diff(this.s, unit, opts);
|
||
}
|
||
/**
|
||
* Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes
|
||
* @param {function} mapFn
|
||
* @return {Interval}
|
||
* @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())
|
||
* @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))
|
||
*/
|
||
mapEndpoints(mapFn) {
|
||
return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));
|
||
}
|
||
};
|
||
var Info = class {
|
||
/**
|
||
* Return whether the specified zone contains a DST.
|
||
* @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.
|
||
* @return {boolean}
|
||
*/
|
||
static hasDST(zone = Settings2.defaultZone) {
|
||
const proto = DateTime.now().setZone(zone).set({ month: 12 });
|
||
return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;
|
||
}
|
||
/**
|
||
* Return whether the specified zone is a valid IANA specifier.
|
||
* @param {string} zone - Zone to check
|
||
* @return {boolean}
|
||
*/
|
||
static isValidIANAZone(zone) {
|
||
return IANAZone.isValidZone(zone);
|
||
}
|
||
/**
|
||
* Converts the input into a {@link Zone} instance.
|
||
*
|
||
* * If `input` is already a Zone instance, it is returned unchanged.
|
||
* * If `input` is a string containing a valid time zone name, a Zone instance
|
||
* with that name is returned.
|
||
* * If `input` is a string that doesn't refer to a known time zone, a Zone
|
||
* instance with {@link Zone#isValid} == false is returned.
|
||
* * If `input is a number, a Zone instance with the specified fixed offset
|
||
* in minutes is returned.
|
||
* * If `input` is `null` or `undefined`, the default zone is returned.
|
||
* @param {string|Zone|number} [input] - the value to be converted
|
||
* @return {Zone}
|
||
*/
|
||
static normalizeZone(input) {
|
||
return normalizeZone(input, Settings2.defaultZone);
|
||
}
|
||
/**
|
||
* Return an array of standalone month names.
|
||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
|
||
* @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long"
|
||
* @param {Object} opts - options
|
||
* @param {string} [opts.locale] - the locale code
|
||
* @param {string} [opts.numberingSystem=null] - the numbering system
|
||
* @param {string} [opts.locObj=null] - an existing locale object to use
|
||
* @param {string} [opts.outputCalendar='gregory'] - the calendar
|
||
* @example Info.months()[0] //=> 'January'
|
||
* @example Info.months('short')[0] //=> 'Jan'
|
||
* @example Info.months('numeric')[0] //=> '1'
|
||
* @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'
|
||
* @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'
|
||
* @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'
|
||
* @return {Array}
|
||
*/
|
||
static months(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) {
|
||
return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);
|
||
}
|
||
/**
|
||
* Return an array of format month names.
|
||
* Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that
|
||
* changes the string.
|
||
* See {@link Info#months}
|
||
* @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long"
|
||
* @param {Object} opts - options
|
||
* @param {string} [opts.locale] - the locale code
|
||
* @param {string} [opts.numberingSystem=null] - the numbering system
|
||
* @param {string} [opts.locObj=null] - an existing locale object to use
|
||
* @param {string} [opts.outputCalendar='gregory'] - the calendar
|
||
* @return {Array}
|
||
*/
|
||
static monthsFormat(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) {
|
||
return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);
|
||
}
|
||
/**
|
||
* Return an array of standalone week names.
|
||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
|
||
* @param {string} [length='long'] - the length of the weekday representation, such as "narrow", "short", "long".
|
||
* @param {Object} opts - options
|
||
* @param {string} [opts.locale] - the locale code
|
||
* @param {string} [opts.numberingSystem=null] - the numbering system
|
||
* @param {string} [opts.locObj=null] - an existing locale object to use
|
||
* @example Info.weekdays()[0] //=> 'Monday'
|
||
* @example Info.weekdays('short')[0] //=> 'Mon'
|
||
* @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'
|
||
* @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'
|
||
* @return {Array}
|
||
*/
|
||
static weekdays(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) {
|
||
return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);
|
||
}
|
||
/**
|
||
* Return an array of format week names.
|
||
* Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that
|
||
* changes the string.
|
||
* See {@link Info#weekdays}
|
||
* @param {string} [length='long'] - the length of the month representation, such as "narrow", "short", "long".
|
||
* @param {Object} opts - options
|
||
* @param {string} [opts.locale=null] - the locale code
|
||
* @param {string} [opts.numberingSystem=null] - the numbering system
|
||
* @param {string} [opts.locObj=null] - an existing locale object to use
|
||
* @return {Array}
|
||
*/
|
||
static weekdaysFormat(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) {
|
||
return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);
|
||
}
|
||
/**
|
||
* Return an array of meridiems.
|
||
* @param {Object} opts - options
|
||
* @param {string} [opts.locale] - the locale code
|
||
* @example Info.meridiems() //=> [ 'AM', 'PM' ]
|
||
* @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]
|
||
* @return {Array}
|
||
*/
|
||
static meridiems({ locale = null } = {}) {
|
||
return Locale.create(locale).meridiems();
|
||
}
|
||
/**
|
||
* Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.
|
||
* @param {string} [length='short'] - the length of the era representation, such as "short" or "long".
|
||
* @param {Object} opts - options
|
||
* @param {string} [opts.locale] - the locale code
|
||
* @example Info.eras() //=> [ 'BC', 'AD' ]
|
||
* @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]
|
||
* @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]
|
||
* @return {Array}
|
||
*/
|
||
static eras(length = "short", { locale = null } = {}) {
|
||
return Locale.create(locale, null, "gregory").eras(length);
|
||
}
|
||
/**
|
||
* Return the set of available features in this environment.
|
||
* Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.
|
||
* Keys:
|
||
* * `relative`: whether this environment supports relative time formatting
|
||
* @example Info.features() //=> { relative: false }
|
||
* @return {Object}
|
||
*/
|
||
static features() {
|
||
return { relative: hasRelative() };
|
||
}
|
||
};
|
||
function dayDiff(earlier, later) {
|
||
const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf("day").valueOf(), ms = utcDayStart(later) - utcDayStart(earlier);
|
||
return Math.floor(Duration.fromMillis(ms).as("days"));
|
||
}
|
||
function highOrderDiffs(cursor, later, units) {
|
||
const differs = [
|
||
["years", (a, b) => b.year - a.year],
|
||
["quarters", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],
|
||
["months", (a, b) => b.month - a.month + (b.year - a.year) * 12],
|
||
[
|
||
"weeks",
|
||
(a, b) => {
|
||
const days = dayDiff(a, b);
|
||
return (days - days % 7) / 7;
|
||
}
|
||
],
|
||
["days", dayDiff]
|
||
];
|
||
const results = {};
|
||
const earlier = cursor;
|
||
let lowestOrder, highWater;
|
||
for (const [unit, differ] of differs) {
|
||
if (units.indexOf(unit) >= 0) {
|
||
lowestOrder = unit;
|
||
results[unit] = differ(cursor, later);
|
||
highWater = earlier.plus(results);
|
||
if (highWater > later) {
|
||
results[unit]--;
|
||
cursor = earlier.plus(results);
|
||
} else {
|
||
cursor = highWater;
|
||
}
|
||
}
|
||
}
|
||
return [cursor, results, highWater, lowestOrder];
|
||
}
|
||
function diff(earlier, later, units, opts) {
|
||
let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);
|
||
const remainingMillis = later - cursor;
|
||
const lowerOrderUnits = units.filter(
|
||
(u) => ["hours", "minutes", "seconds", "milliseconds"].indexOf(u) >= 0
|
||
);
|
||
if (lowerOrderUnits.length === 0) {
|
||
if (highWater < later) {
|
||
highWater = cursor.plus({ [lowestOrder]: 1 });
|
||
}
|
||
if (highWater !== cursor) {
|
||
results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);
|
||
}
|
||
}
|
||
const duration = Duration.fromObject(results, opts);
|
||
if (lowerOrderUnits.length > 0) {
|
||
return Duration.fromMillis(remainingMillis, opts).shiftTo(...lowerOrderUnits).plus(duration);
|
||
} else {
|
||
return duration;
|
||
}
|
||
}
|
||
var numberingSystems = {
|
||
arab: "[\u0660-\u0669]",
|
||
arabext: "[\u06F0-\u06F9]",
|
||
bali: "[\u1B50-\u1B59]",
|
||
beng: "[\u09E6-\u09EF]",
|
||
deva: "[\u0966-\u096F]",
|
||
fullwide: "[\uFF10-\uFF19]",
|
||
gujr: "[\u0AE6-\u0AEF]",
|
||
hanidec: "[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",
|
||
khmr: "[\u17E0-\u17E9]",
|
||
knda: "[\u0CE6-\u0CEF]",
|
||
laoo: "[\u0ED0-\u0ED9]",
|
||
limb: "[\u1946-\u194F]",
|
||
mlym: "[\u0D66-\u0D6F]",
|
||
mong: "[\u1810-\u1819]",
|
||
mymr: "[\u1040-\u1049]",
|
||
orya: "[\u0B66-\u0B6F]",
|
||
tamldec: "[\u0BE6-\u0BEF]",
|
||
telu: "[\u0C66-\u0C6F]",
|
||
thai: "[\u0E50-\u0E59]",
|
||
tibt: "[\u0F20-\u0F29]",
|
||
latn: "\\d"
|
||
};
|
||
var numberingSystemsUTF16 = {
|
||
arab: [1632, 1641],
|
||
arabext: [1776, 1785],
|
||
bali: [6992, 7001],
|
||
beng: [2534, 2543],
|
||
deva: [2406, 2415],
|
||
fullwide: [65296, 65303],
|
||
gujr: [2790, 2799],
|
||
khmr: [6112, 6121],
|
||
knda: [3302, 3311],
|
||
laoo: [3792, 3801],
|
||
limb: [6470, 6479],
|
||
mlym: [3430, 3439],
|
||
mong: [6160, 6169],
|
||
mymr: [4160, 4169],
|
||
orya: [2918, 2927],
|
||
tamldec: [3046, 3055],
|
||
telu: [3174, 3183],
|
||
thai: [3664, 3673],
|
||
tibt: [3872, 3881]
|
||
};
|
||
var hanidecChars = numberingSystems.hanidec.replace(/[\[|\]]/g, "").split("");
|
||
function parseDigits(str) {
|
||
let value = parseInt(str, 10);
|
||
if (isNaN(value)) {
|
||
value = "";
|
||
for (let i = 0; i < str.length; i++) {
|
||
const code = str.charCodeAt(i);
|
||
if (str[i].search(numberingSystems.hanidec) !== -1) {
|
||
value += hanidecChars.indexOf(str[i]);
|
||
} else {
|
||
for (const key in numberingSystemsUTF16) {
|
||
const [min, max] = numberingSystemsUTF16[key];
|
||
if (code >= min && code <= max) {
|
||
value += code - min;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return parseInt(value, 10);
|
||
} else {
|
||
return value;
|
||
}
|
||
}
|
||
function digitRegex({ numberingSystem }, append2 = "") {
|
||
return new RegExp(`${numberingSystems[numberingSystem || "latn"]}${append2}`);
|
||
}
|
||
var MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support";
|
||
function intUnit(regex, post = (i) => i) {
|
||
return { regex, deser: ([s2]) => post(parseDigits(s2)) };
|
||
}
|
||
var NBSP = String.fromCharCode(160);
|
||
var spaceOrNBSP = `[ ${NBSP}]`;
|
||
var spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, "g");
|
||
function fixListRegex(s2) {
|
||
return s2.replace(/\./g, "\\.?").replace(spaceOrNBSPRegExp, spaceOrNBSP);
|
||
}
|
||
function stripInsensitivities(s2) {
|
||
return s2.replace(/\./g, "").replace(spaceOrNBSPRegExp, " ").toLowerCase();
|
||
}
|
||
function oneOf(strings, startIndex) {
|
||
if (strings === null) {
|
||
return null;
|
||
} else {
|
||
return {
|
||
regex: RegExp(strings.map(fixListRegex).join("|")),
|
||
deser: ([s2]) => strings.findIndex((i) => stripInsensitivities(s2) === stripInsensitivities(i)) + startIndex
|
||
};
|
||
}
|
||
}
|
||
function offset(regex, groups) {
|
||
return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };
|
||
}
|
||
function simple(regex) {
|
||
return { regex, deser: ([s2]) => s2 };
|
||
}
|
||
function escapeToken(value) {
|
||
return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
|
||
}
|
||
function unitForToken(token, loc) {
|
||
const one = digitRegex(loc), two = digitRegex(loc, "{2}"), three = digitRegex(loc, "{3}"), four = digitRegex(loc, "{4}"), six = digitRegex(loc, "{6}"), oneOrTwo = digitRegex(loc, "{1,2}"), oneToThree = digitRegex(loc, "{1,3}"), oneToSix = digitRegex(loc, "{1,6}"), oneToNine = digitRegex(loc, "{1,9}"), twoToFour = digitRegex(loc, "{2,4}"), fourToSix = digitRegex(loc, "{4,6}"), literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s2]) => s2, literal: true }), unitate = (t) => {
|
||
if (token.literal) {
|
||
return literal(t);
|
||
}
|
||
switch (t.val) {
|
||
case "G":
|
||
return oneOf(loc.eras("short", false), 0);
|
||
case "GG":
|
||
return oneOf(loc.eras("long", false), 0);
|
||
case "y":
|
||
return intUnit(oneToSix);
|
||
case "yy":
|
||
return intUnit(twoToFour, untruncateYear);
|
||
case "yyyy":
|
||
return intUnit(four);
|
||
case "yyyyy":
|
||
return intUnit(fourToSix);
|
||
case "yyyyyy":
|
||
return intUnit(six);
|
||
case "M":
|
||
return intUnit(oneOrTwo);
|
||
case "MM":
|
||
return intUnit(two);
|
||
case "MMM":
|
||
return oneOf(loc.months("short", true, false), 1);
|
||
case "MMMM":
|
||
return oneOf(loc.months("long", true, false), 1);
|
||
case "L":
|
||
return intUnit(oneOrTwo);
|
||
case "LL":
|
||
return intUnit(two);
|
||
case "LLL":
|
||
return oneOf(loc.months("short", false, false), 1);
|
||
case "LLLL":
|
||
return oneOf(loc.months("long", false, false), 1);
|
||
case "d":
|
||
return intUnit(oneOrTwo);
|
||
case "dd":
|
||
return intUnit(two);
|
||
case "o":
|
||
return intUnit(oneToThree);
|
||
case "ooo":
|
||
return intUnit(three);
|
||
case "HH":
|
||
return intUnit(two);
|
||
case "H":
|
||
return intUnit(oneOrTwo);
|
||
case "hh":
|
||
return intUnit(two);
|
||
case "h":
|
||
return intUnit(oneOrTwo);
|
||
case "mm":
|
||
return intUnit(two);
|
||
case "m":
|
||
return intUnit(oneOrTwo);
|
||
case "q":
|
||
return intUnit(oneOrTwo);
|
||
case "qq":
|
||
return intUnit(two);
|
||
case "s":
|
||
return intUnit(oneOrTwo);
|
||
case "ss":
|
||
return intUnit(two);
|
||
case "S":
|
||
return intUnit(oneToThree);
|
||
case "SSS":
|
||
return intUnit(three);
|
||
case "u":
|
||
return simple(oneToNine);
|
||
case "uu":
|
||
return simple(oneOrTwo);
|
||
case "uuu":
|
||
return intUnit(one);
|
||
case "a":
|
||
return oneOf(loc.meridiems(), 0);
|
||
case "kkkk":
|
||
return intUnit(four);
|
||
case "kk":
|
||
return intUnit(twoToFour, untruncateYear);
|
||
case "W":
|
||
return intUnit(oneOrTwo);
|
||
case "WW":
|
||
return intUnit(two);
|
||
case "E":
|
||
case "c":
|
||
return intUnit(one);
|
||
case "EEE":
|
||
return oneOf(loc.weekdays("short", false, false), 1);
|
||
case "EEEE":
|
||
return oneOf(loc.weekdays("long", false, false), 1);
|
||
case "ccc":
|
||
return oneOf(loc.weekdays("short", true, false), 1);
|
||
case "cccc":
|
||
return oneOf(loc.weekdays("long", true, false), 1);
|
||
case "Z":
|
||
case "ZZ":
|
||
return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);
|
||
case "ZZZ":
|
||
return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);
|
||
case "z":
|
||
return simple(/[a-z_+-/]{1,256}?/i);
|
||
default:
|
||
return literal(t);
|
||
}
|
||
};
|
||
const unit = unitate(token) || {
|
||
invalidReason: MISSING_FTP
|
||
};
|
||
unit.token = token;
|
||
return unit;
|
||
}
|
||
var partTypeStyleToTokenVal = {
|
||
year: {
|
||
"2-digit": "yy",
|
||
numeric: "yyyyy"
|
||
},
|
||
month: {
|
||
numeric: "M",
|
||
"2-digit": "MM",
|
||
short: "MMM",
|
||
long: "MMMM"
|
||
},
|
||
day: {
|
||
numeric: "d",
|
||
"2-digit": "dd"
|
||
},
|
||
weekday: {
|
||
short: "EEE",
|
||
long: "EEEE"
|
||
},
|
||
dayperiod: "a",
|
||
dayPeriod: "a",
|
||
hour: {
|
||
numeric: "h",
|
||
"2-digit": "hh"
|
||
},
|
||
minute: {
|
||
numeric: "m",
|
||
"2-digit": "mm"
|
||
},
|
||
second: {
|
||
numeric: "s",
|
||
"2-digit": "ss"
|
||
},
|
||
timeZoneName: {
|
||
long: "ZZZZZ",
|
||
short: "ZZZ"
|
||
}
|
||
};
|
||
function tokenForPart(part, formatOpts) {
|
||
const { type, value } = part;
|
||
if (type === "literal") {
|
||
return {
|
||
literal: true,
|
||
val: value
|
||
};
|
||
}
|
||
const style = formatOpts[type];
|
||
let val = partTypeStyleToTokenVal[type];
|
||
if (typeof val === "object") {
|
||
val = val[style];
|
||
}
|
||
if (val) {
|
||
return {
|
||
literal: false,
|
||
val
|
||
};
|
||
}
|
||
return void 0;
|
||
}
|
||
function buildRegex(units) {
|
||
const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, "");
|
||
return [`^${re}$`, units];
|
||
}
|
||
function match(input, regex, handlers) {
|
||
const matches = input.match(regex);
|
||
if (matches) {
|
||
const all = {};
|
||
let matchIndex = 1;
|
||
for (const i in handlers) {
|
||
if (hasOwnProperty(handlers, i)) {
|
||
const h = handlers[i], groups = h.groups ? h.groups + 1 : 1;
|
||
if (!h.literal && h.token) {
|
||
all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));
|
||
}
|
||
matchIndex += groups;
|
||
}
|
||
}
|
||
return [matches, all];
|
||
} else {
|
||
return [matches, {}];
|
||
}
|
||
}
|
||
function dateTimeFromMatches(matches) {
|
||
const toField = (token) => {
|
||
switch (token) {
|
||
case "S":
|
||
return "millisecond";
|
||
case "s":
|
||
return "second";
|
||
case "m":
|
||
return "minute";
|
||
case "h":
|
||
case "H":
|
||
return "hour";
|
||
case "d":
|
||
return "day";
|
||
case "o":
|
||
return "ordinal";
|
||
case "L":
|
||
case "M":
|
||
return "month";
|
||
case "y":
|
||
return "year";
|
||
case "E":
|
||
case "c":
|
||
return "weekday";
|
||
case "W":
|
||
return "weekNumber";
|
||
case "k":
|
||
return "weekYear";
|
||
case "q":
|
||
return "quarter";
|
||
default:
|
||
return null;
|
||
}
|
||
};
|
||
let zone = null;
|
||
let specificOffset;
|
||
if (!isUndefined(matches.z)) {
|
||
zone = IANAZone.create(matches.z);
|
||
}
|
||
if (!isUndefined(matches.Z)) {
|
||
if (!zone) {
|
||
zone = new FixedOffsetZone(matches.Z);
|
||
}
|
||
specificOffset = matches.Z;
|
||
}
|
||
if (!isUndefined(matches.q)) {
|
||
matches.M = (matches.q - 1) * 3 + 1;
|
||
}
|
||
if (!isUndefined(matches.h)) {
|
||
if (matches.h < 12 && matches.a === 1) {
|
||
matches.h += 12;
|
||
} else if (matches.h === 12 && matches.a === 0) {
|
||
matches.h = 0;
|
||
}
|
||
}
|
||
if (matches.G === 0 && matches.y) {
|
||
matches.y = -matches.y;
|
||
}
|
||
if (!isUndefined(matches.u)) {
|
||
matches.S = parseMillis(matches.u);
|
||
}
|
||
const vals = Object.keys(matches).reduce((r, k) => {
|
||
const f = toField(k);
|
||
if (f) {
|
||
r[f] = matches[k];
|
||
}
|
||
return r;
|
||
}, {});
|
||
return [vals, zone, specificOffset];
|
||
}
|
||
var dummyDateTimeCache = null;
|
||
function getDummyDateTime() {
|
||
if (!dummyDateTimeCache) {
|
||
dummyDateTimeCache = DateTime.fromMillis(1555555555555);
|
||
}
|
||
return dummyDateTimeCache;
|
||
}
|
||
function maybeExpandMacroToken(token, locale) {
|
||
if (token.literal) {
|
||
return token;
|
||
}
|
||
const formatOpts = Formatter.macroTokenToFormatOpts(token.val);
|
||
const tokens = formatOptsToTokens(formatOpts, locale);
|
||
if (tokens == null || tokens.includes(void 0)) {
|
||
return token;
|
||
}
|
||
return tokens;
|
||
}
|
||
function expandMacroTokens(tokens, locale) {
|
||
return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));
|
||
}
|
||
function explainFromTokens(locale, input, format) {
|
||
const tokens = expandMacroTokens(Formatter.parseFormat(format), locale), units = tokens.map((t) => unitForToken(t, locale)), disqualifyingUnit = units.find((t) => t.invalidReason);
|
||
if (disqualifyingUnit) {
|
||
return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };
|
||
} else {
|
||
const [regexString, handlers] = buildRegex(units), regex = RegExp(regexString, "i"), [rawMatches, matches] = match(input, regex, handlers), [result, zone, specificOffset] = matches ? dateTimeFromMatches(matches) : [null, null, void 0];
|
||
if (hasOwnProperty(matches, "a") && hasOwnProperty(matches, "H")) {
|
||
throw new ConflictingSpecificationError(
|
||
"Can't include meridiem when specifying 24-hour format"
|
||
);
|
||
}
|
||
return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };
|
||
}
|
||
}
|
||
function parseFromTokens(locale, input, format) {
|
||
const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);
|
||
return [result, zone, specificOffset, invalidReason];
|
||
}
|
||
function formatOptsToTokens(formatOpts, locale) {
|
||
if (!formatOpts) {
|
||
return null;
|
||
}
|
||
const formatter = Formatter.create(locale, formatOpts);
|
||
const parts = formatter.formatDateTimeParts(getDummyDateTime());
|
||
return parts.map((p) => tokenForPart(p, formatOpts));
|
||
}
|
||
var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
|
||
var leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
|
||
function unitOutOfRange(unit, value) {
|
||
return new Invalid(
|
||
"unit out of range",
|
||
`you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`
|
||
);
|
||
}
|
||
function dayOfWeek(year, month, day) {
|
||
const d = new Date(Date.UTC(year, month - 1, day));
|
||
if (year < 100 && year >= 0) {
|
||
d.setUTCFullYear(d.getUTCFullYear() - 1900);
|
||
}
|
||
const js = d.getUTCDay();
|
||
return js === 0 ? 7 : js;
|
||
}
|
||
function computeOrdinal(year, month, day) {
|
||
return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];
|
||
}
|
||
function uncomputeOrdinal(year, ordinal) {
|
||
const table = isLeapYear(year) ? leapLadder : nonLeapLadder, month0 = table.findIndex((i) => i < ordinal), day = ordinal - table[month0];
|
||
return { month: month0 + 1, day };
|
||
}
|
||
function gregorianToWeek(gregObj) {
|
||
const { year, month, day } = gregObj, ordinal = computeOrdinal(year, month, day), weekday = dayOfWeek(year, month, day);
|
||
let weekNumber = Math.floor((ordinal - weekday + 10) / 7), weekYear;
|
||
if (weekNumber < 1) {
|
||
weekYear = year - 1;
|
||
weekNumber = weeksInWeekYear(weekYear);
|
||
} else if (weekNumber > weeksInWeekYear(year)) {
|
||
weekYear = year + 1;
|
||
weekNumber = 1;
|
||
} else {
|
||
weekYear = year;
|
||
}
|
||
return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };
|
||
}
|
||
function weekToGregorian(weekData) {
|
||
const { weekYear, weekNumber, weekday } = weekData, weekdayOfJan4 = dayOfWeek(weekYear, 1, 4), yearInDays = daysInYear(weekYear);
|
||
let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3, year;
|
||
if (ordinal < 1) {
|
||
year = weekYear - 1;
|
||
ordinal += daysInYear(year);
|
||
} else if (ordinal > yearInDays) {
|
||
year = weekYear + 1;
|
||
ordinal -= daysInYear(weekYear);
|
||
} else {
|
||
year = weekYear;
|
||
}
|
||
const { month, day } = uncomputeOrdinal(year, ordinal);
|
||
return { year, month, day, ...timeObject(weekData) };
|
||
}
|
||
function gregorianToOrdinal(gregData) {
|
||
const { year, month, day } = gregData;
|
||
const ordinal = computeOrdinal(year, month, day);
|
||
return { year, ordinal, ...timeObject(gregData) };
|
||
}
|
||
function ordinalToGregorian(ordinalData) {
|
||
const { year, ordinal } = ordinalData;
|
||
const { month, day } = uncomputeOrdinal(year, ordinal);
|
||
return { year, month, day, ...timeObject(ordinalData) };
|
||
}
|
||
function hasInvalidWeekData(obj) {
|
||
const validYear = isInteger(obj.weekYear), validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)), validWeekday = integerBetween(obj.weekday, 1, 7);
|
||
if (!validYear) {
|
||
return unitOutOfRange("weekYear", obj.weekYear);
|
||
} else if (!validWeek) {
|
||
return unitOutOfRange("week", obj.week);
|
||
} else if (!validWeekday) {
|
||
return unitOutOfRange("weekday", obj.weekday);
|
||
} else
|
||
return false;
|
||
}
|
||
function hasInvalidOrdinalData(obj) {
|
||
const validYear = isInteger(obj.year), validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));
|
||
if (!validYear) {
|
||
return unitOutOfRange("year", obj.year);
|
||
} else if (!validOrdinal) {
|
||
return unitOutOfRange("ordinal", obj.ordinal);
|
||
} else
|
||
return false;
|
||
}
|
||
function hasInvalidGregorianData(obj) {
|
||
const validYear = isInteger(obj.year), validMonth = integerBetween(obj.month, 1, 12), validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));
|
||
if (!validYear) {
|
||
return unitOutOfRange("year", obj.year);
|
||
} else if (!validMonth) {
|
||
return unitOutOfRange("month", obj.month);
|
||
} else if (!validDay) {
|
||
return unitOutOfRange("day", obj.day);
|
||
} else
|
||
return false;
|
||
}
|
||
function hasInvalidTimeData(obj) {
|
||
const { hour, minute, second, millisecond } = obj;
|
||
const validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0, validMinute = integerBetween(minute, 0, 59), validSecond = integerBetween(second, 0, 59), validMillisecond = integerBetween(millisecond, 0, 999);
|
||
if (!validHour) {
|
||
return unitOutOfRange("hour", hour);
|
||
} else if (!validMinute) {
|
||
return unitOutOfRange("minute", minute);
|
||
} else if (!validSecond) {
|
||
return unitOutOfRange("second", second);
|
||
} else if (!validMillisecond) {
|
||
return unitOutOfRange("millisecond", millisecond);
|
||
} else
|
||
return false;
|
||
}
|
||
var INVALID = "Invalid DateTime";
|
||
var MAX_DATE = 864e13;
|
||
function unsupportedZone(zone) {
|
||
return new Invalid("unsupported zone", `the zone "${zone.name}" is not supported`);
|
||
}
|
||
function possiblyCachedWeekData(dt) {
|
||
if (dt.weekData === null) {
|
||
dt.weekData = gregorianToWeek(dt.c);
|
||
}
|
||
return dt.weekData;
|
||
}
|
||
function clone(inst, alts) {
|
||
const current = {
|
||
ts: inst.ts,
|
||
zone: inst.zone,
|
||
c: inst.c,
|
||
o: inst.o,
|
||
loc: inst.loc,
|
||
invalid: inst.invalid
|
||
};
|
||
return new DateTime({ ...current, ...alts, old: current });
|
||
}
|
||
function fixOffset(localTS, o, tz) {
|
||
let utcGuess = localTS - o * 60 * 1e3;
|
||
const o2 = tz.offset(utcGuess);
|
||
if (o === o2) {
|
||
return [utcGuess, o];
|
||
}
|
||
utcGuess -= (o2 - o) * 60 * 1e3;
|
||
const o3 = tz.offset(utcGuess);
|
||
if (o2 === o3) {
|
||
return [utcGuess, o2];
|
||
}
|
||
return [localTS - Math.min(o2, o3) * 60 * 1e3, Math.max(o2, o3)];
|
||
}
|
||
function tsToObj(ts, offset2) {
|
||
ts += offset2 * 60 * 1e3;
|
||
const d = new Date(ts);
|
||
return {
|
||
year: d.getUTCFullYear(),
|
||
month: d.getUTCMonth() + 1,
|
||
day: d.getUTCDate(),
|
||
hour: d.getUTCHours(),
|
||
minute: d.getUTCMinutes(),
|
||
second: d.getUTCSeconds(),
|
||
millisecond: d.getUTCMilliseconds()
|
||
};
|
||
}
|
||
function objToTS(obj, offset2, zone) {
|
||
return fixOffset(objToLocalTS(obj), offset2, zone);
|
||
}
|
||
function adjustTime(inst, dur) {
|
||
const oPre = inst.o, year = inst.c.year + Math.trunc(dur.years), month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3, c = {
|
||
...inst.c,
|
||
year,
|
||
month,
|
||
day: Math.min(inst.c.day, daysInMonth(year, month)) + Math.trunc(dur.days) + Math.trunc(dur.weeks) * 7
|
||
}, millisToAdd = Duration.fromObject({
|
||
years: dur.years - Math.trunc(dur.years),
|
||
quarters: dur.quarters - Math.trunc(dur.quarters),
|
||
months: dur.months - Math.trunc(dur.months),
|
||
weeks: dur.weeks - Math.trunc(dur.weeks),
|
||
days: dur.days - Math.trunc(dur.days),
|
||
hours: dur.hours,
|
||
minutes: dur.minutes,
|
||
seconds: dur.seconds,
|
||
milliseconds: dur.milliseconds
|
||
}).as("milliseconds"), localTS = objToLocalTS(c);
|
||
let [ts, o] = fixOffset(localTS, oPre, inst.zone);
|
||
if (millisToAdd !== 0) {
|
||
ts += millisToAdd;
|
||
o = inst.zone.offset(ts);
|
||
}
|
||
return { ts, o };
|
||
}
|
||
function parseDataToDateTime(parsed, parsedZone, opts, format, text2, specificOffset) {
|
||
const { setZone, zone } = opts;
|
||
if (parsed && Object.keys(parsed).length !== 0) {
|
||
const interpretationZone = parsedZone || zone, inst = DateTime.fromObject(parsed, {
|
||
...opts,
|
||
zone: interpretationZone,
|
||
specificOffset
|
||
});
|
||
return setZone ? inst : inst.setZone(zone);
|
||
} else {
|
||
return DateTime.invalid(
|
||
new Invalid("unparsable", `the input "${text2}" can't be parsed as ${format}`)
|
||
);
|
||
}
|
||
}
|
||
function toTechFormat(dt, format, allowZ = true) {
|
||
return dt.isValid ? Formatter.create(Locale.create("en-US"), {
|
||
allowZ,
|
||
forceSimple: true
|
||
}).formatDateTimeFromString(dt, format) : null;
|
||
}
|
||
function toISODate(o, extended) {
|
||
const longFormat = o.c.year > 9999 || o.c.year < 0;
|
||
let c = "";
|
||
if (longFormat && o.c.year >= 0)
|
||
c += "+";
|
||
c += padStart(o.c.year, longFormat ? 6 : 4);
|
||
if (extended) {
|
||
c += "-";
|
||
c += padStart(o.c.month);
|
||
c += "-";
|
||
c += padStart(o.c.day);
|
||
} else {
|
||
c += padStart(o.c.month);
|
||
c += padStart(o.c.day);
|
||
}
|
||
return c;
|
||
}
|
||
function toISOTime(o, extended, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone) {
|
||
let c = padStart(o.c.hour);
|
||
if (extended) {
|
||
c += ":";
|
||
c += padStart(o.c.minute);
|
||
if (o.c.second !== 0 || !suppressSeconds) {
|
||
c += ":";
|
||
}
|
||
} else {
|
||
c += padStart(o.c.minute);
|
||
}
|
||
if (o.c.second !== 0 || !suppressSeconds) {
|
||
c += padStart(o.c.second);
|
||
if (o.c.millisecond !== 0 || !suppressMilliseconds) {
|
||
c += ".";
|
||
c += padStart(o.c.millisecond, 3);
|
||
}
|
||
}
|
||
if (includeOffset) {
|
||
if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {
|
||
c += "Z";
|
||
} else if (o.o < 0) {
|
||
c += "-";
|
||
c += padStart(Math.trunc(-o.o / 60));
|
||
c += ":";
|
||
c += padStart(Math.trunc(-o.o % 60));
|
||
} else {
|
||
c += "+";
|
||
c += padStart(Math.trunc(o.o / 60));
|
||
c += ":";
|
||
c += padStart(Math.trunc(o.o % 60));
|
||
}
|
||
}
|
||
if (extendedZone) {
|
||
c += "[" + o.zone.ianaName + "]";
|
||
}
|
||
return c;
|
||
}
|
||
var defaultUnitValues = {
|
||
month: 1,
|
||
day: 1,
|
||
hour: 0,
|
||
minute: 0,
|
||
second: 0,
|
||
millisecond: 0
|
||
};
|
||
var defaultWeekUnitValues = {
|
||
weekNumber: 1,
|
||
weekday: 1,
|
||
hour: 0,
|
||
minute: 0,
|
||
second: 0,
|
||
millisecond: 0
|
||
};
|
||
var defaultOrdinalUnitValues = {
|
||
ordinal: 1,
|
||
hour: 0,
|
||
minute: 0,
|
||
second: 0,
|
||
millisecond: 0
|
||
};
|
||
var orderedUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"];
|
||
var orderedWeekUnits = [
|
||
"weekYear",
|
||
"weekNumber",
|
||
"weekday",
|
||
"hour",
|
||
"minute",
|
||
"second",
|
||
"millisecond"
|
||
];
|
||
var orderedOrdinalUnits = ["year", "ordinal", "hour", "minute", "second", "millisecond"];
|
||
function normalizeUnit(unit) {
|
||
const normalized = {
|
||
year: "year",
|
||
years: "year",
|
||
month: "month",
|
||
months: "month",
|
||
day: "day",
|
||
days: "day",
|
||
hour: "hour",
|
||
hours: "hour",
|
||
minute: "minute",
|
||
minutes: "minute",
|
||
quarter: "quarter",
|
||
quarters: "quarter",
|
||
second: "second",
|
||
seconds: "second",
|
||
millisecond: "millisecond",
|
||
milliseconds: "millisecond",
|
||
weekday: "weekday",
|
||
weekdays: "weekday",
|
||
weeknumber: "weekNumber",
|
||
weeksnumber: "weekNumber",
|
||
weeknumbers: "weekNumber",
|
||
weekyear: "weekYear",
|
||
weekyears: "weekYear",
|
||
ordinal: "ordinal"
|
||
}[unit.toLowerCase()];
|
||
if (!normalized)
|
||
throw new InvalidUnitError(unit);
|
||
return normalized;
|
||
}
|
||
function quickDT(obj, opts) {
|
||
const zone = normalizeZone(opts.zone, Settings2.defaultZone), loc = Locale.fromObject(opts), tsNow = Settings2.now();
|
||
let ts, o;
|
||
if (!isUndefined(obj.year)) {
|
||
for (const u of orderedUnits) {
|
||
if (isUndefined(obj[u])) {
|
||
obj[u] = defaultUnitValues[u];
|
||
}
|
||
}
|
||
const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);
|
||
if (invalid) {
|
||
return DateTime.invalid(invalid);
|
||
}
|
||
const offsetProvis = zone.offset(tsNow);
|
||
[ts, o] = objToTS(obj, offsetProvis, zone);
|
||
} else {
|
||
ts = tsNow;
|
||
}
|
||
return new DateTime({ ts, zone, loc, o });
|
||
}
|
||
function diffRelative(start, end, opts) {
|
||
const round = isUndefined(opts.round) ? true : opts.round, format = (c, unit) => {
|
||
c = roundTo(c, round || opts.calendary ? 0 : 2, true);
|
||
const formatter = end.loc.clone(opts).relFormatter(opts);
|
||
return formatter.format(c, unit);
|
||
}, differ = (unit) => {
|
||
if (opts.calendary) {
|
||
if (!end.hasSame(start, unit)) {
|
||
return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);
|
||
} else
|
||
return 0;
|
||
} else {
|
||
return end.diff(start, unit).get(unit);
|
||
}
|
||
};
|
||
if (opts.unit) {
|
||
return format(differ(opts.unit), opts.unit);
|
||
}
|
||
for (const unit of opts.units) {
|
||
const count = differ(unit);
|
||
if (Math.abs(count) >= 1) {
|
||
return format(count, unit);
|
||
}
|
||
}
|
||
return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);
|
||
}
|
||
function lastOpts(argList) {
|
||
let opts = {}, args;
|
||
if (argList.length > 0 && typeof argList[argList.length - 1] === "object") {
|
||
opts = argList[argList.length - 1];
|
||
args = Array.from(argList).slice(0, argList.length - 1);
|
||
} else {
|
||
args = Array.from(argList);
|
||
}
|
||
return [opts, args];
|
||
}
|
||
var DateTime = class {
|
||
/**
|
||
* @access private
|
||
*/
|
||
constructor(config) {
|
||
const zone = config.zone || Settings2.defaultZone;
|
||
let invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid("invalid input") : null) || (!zone.isValid ? unsupportedZone(zone) : null);
|
||
this.ts = isUndefined(config.ts) ? Settings2.now() : config.ts;
|
||
let c = null, o = null;
|
||
if (!invalid) {
|
||
const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);
|
||
if (unchanged) {
|
||
[c, o] = [config.old.c, config.old.o];
|
||
} else {
|
||
const ot = zone.offset(this.ts);
|
||
c = tsToObj(this.ts, ot);
|
||
invalid = Number.isNaN(c.year) ? new Invalid("invalid input") : null;
|
||
c = invalid ? null : c;
|
||
o = invalid ? null : ot;
|
||
}
|
||
}
|
||
this._zone = zone;
|
||
this.loc = config.loc || Locale.create();
|
||
this.invalid = invalid;
|
||
this.weekData = null;
|
||
this.c = c;
|
||
this.o = o;
|
||
this.isLuxonDateTime = true;
|
||
}
|
||
// CONSTRUCT
|
||
/**
|
||
* Create a DateTime for the current instant, in the system's time zone.
|
||
*
|
||
* Use Settings to override these default values if needed.
|
||
* @example DateTime.now().toISO() //~> now in the ISO format
|
||
* @return {DateTime}
|
||
*/
|
||
static now() {
|
||
return new DateTime({});
|
||
}
|
||
/**
|
||
* Create a local DateTime
|
||
* @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used
|
||
* @param {number} [month=1] - The month, 1-indexed
|
||
* @param {number} [day=1] - The day of the month, 1-indexed
|
||
* @param {number} [hour=0] - The hour of the day, in 24-hour time
|
||
* @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59
|
||
* @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59
|
||
* @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999
|
||
* @example DateTime.local() //~> now
|
||
* @example DateTime.local({ zone: "America/New_York" }) //~> now, in US east coast time
|
||
* @example DateTime.local(2017) //~> 2017-01-01T00:00:00
|
||
* @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00
|
||
* @example DateTime.local(2017, 3, 12, { locale: "fr" }) //~> 2017-03-12T00:00:00, with a French locale
|
||
* @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00
|
||
* @example DateTime.local(2017, 3, 12, 5, { zone: "utc" }) //~> 2017-03-12T05:00:00, in UTC
|
||
* @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00
|
||
* @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10
|
||
* @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765
|
||
* @return {DateTime}
|
||
*/
|
||
static local() {
|
||
const [opts, args] = lastOpts(arguments), [year, month, day, hour, minute, second, millisecond] = args;
|
||
return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);
|
||
}
|
||
/**
|
||
* Create a DateTime in UTC
|
||
* @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used
|
||
* @param {number} [month=1] - The month, 1-indexed
|
||
* @param {number} [day=1] - The day of the month
|
||
* @param {number} [hour=0] - The hour of the day, in 24-hour time
|
||
* @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59
|
||
* @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59
|
||
* @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999
|
||
* @param {Object} options - configuration options for the DateTime
|
||
* @param {string} [options.locale] - a locale to set on the resulting DateTime instance
|
||
* @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance
|
||
* @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance
|
||
* @example DateTime.utc() //~> now
|
||
* @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z
|
||
* @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z
|
||
* @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z
|
||
* @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z
|
||
* @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z
|
||
* @example DateTime.utc(2017, 3, 12, 5, 45, { locale: "fr" }) //~> 2017-03-12T05:45:00Z with a French locale
|
||
* @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z
|
||
* @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: "fr" }) //~> 2017-03-12T05:45:10.765Z with a French locale
|
||
* @return {DateTime}
|
||
*/
|
||
static utc() {
|
||
const [opts, args] = lastOpts(arguments), [year, month, day, hour, minute, second, millisecond] = args;
|
||
opts.zone = FixedOffsetZone.utcInstance;
|
||
return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);
|
||
}
|
||
/**
|
||
* Create a DateTime from a JavaScript Date object. Uses the default zone.
|
||
* @param {Date} date - a JavaScript Date object
|
||
* @param {Object} options - configuration options for the DateTime
|
||
* @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into
|
||
* @return {DateTime}
|
||
*/
|
||
static fromJSDate(date, options = {}) {
|
||
const ts = isDate(date) ? date.valueOf() : NaN;
|
||
if (Number.isNaN(ts)) {
|
||
return DateTime.invalid("invalid input");
|
||
}
|
||
const zoneToUse = normalizeZone(options.zone, Settings2.defaultZone);
|
||
if (!zoneToUse.isValid) {
|
||
return DateTime.invalid(unsupportedZone(zoneToUse));
|
||
}
|
||
return new DateTime({
|
||
ts,
|
||
zone: zoneToUse,
|
||
loc: Locale.fromObject(options)
|
||
});
|
||
}
|
||
/**
|
||
* Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.
|
||
* @param {number} milliseconds - a number of milliseconds since 1970 UTC
|
||
* @param {Object} options - configuration options for the DateTime
|
||
* @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into
|
||
* @param {string} [options.locale] - a locale to set on the resulting DateTime instance
|
||
* @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance
|
||
* @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance
|
||
* @return {DateTime}
|
||
*/
|
||
static fromMillis(milliseconds, options = {}) {
|
||
if (!isNumber(milliseconds)) {
|
||
throw new InvalidArgumentError(
|
||
`fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`
|
||
);
|
||
} else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {
|
||
return DateTime.invalid("Timestamp out of range");
|
||
} else {
|
||
return new DateTime({
|
||
ts: milliseconds,
|
||
zone: normalizeZone(options.zone, Settings2.defaultZone),
|
||
loc: Locale.fromObject(options)
|
||
});
|
||
}
|
||
}
|
||
/**
|
||
* Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.
|
||
* @param {number} seconds - a number of seconds since 1970 UTC
|
||
* @param {Object} options - configuration options for the DateTime
|
||
* @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into
|
||
* @param {string} [options.locale] - a locale to set on the resulting DateTime instance
|
||
* @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance
|
||
* @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance
|
||
* @return {DateTime}
|
||
*/
|
||
static fromSeconds(seconds, options = {}) {
|
||
if (!isNumber(seconds)) {
|
||
throw new InvalidArgumentError("fromSeconds requires a numerical input");
|
||
} else {
|
||
return new DateTime({
|
||
ts: seconds * 1e3,
|
||
zone: normalizeZone(options.zone, Settings2.defaultZone),
|
||
loc: Locale.fromObject(options)
|
||
});
|
||
}
|
||
}
|
||
/**
|
||
* Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.
|
||
* @param {Object} obj - the object to create the DateTime from
|
||
* @param {number} obj.year - a year, such as 1987
|
||
* @param {number} obj.month - a month, 1-12
|
||
* @param {number} obj.day - a day of the month, 1-31, depending on the month
|
||
* @param {number} obj.ordinal - day of the year, 1-365 or 366
|
||
* @param {number} obj.weekYear - an ISO week year
|
||
* @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year
|
||
* @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday
|
||
* @param {number} obj.hour - hour of the day, 0-23
|
||
* @param {number} obj.minute - minute of the hour, 0-59
|
||
* @param {number} obj.second - second of the minute, 0-59
|
||
* @param {number} obj.millisecond - millisecond of the second, 0-999
|
||
* @param {Object} opts - options for creating this DateTime
|
||
* @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()
|
||
* @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
|
||
* @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
|
||
* @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance
|
||
* @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'
|
||
* @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'
|
||
* @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06
|
||
* @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),
|
||
* @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })
|
||
* @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })
|
||
* @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'
|
||
* @return {DateTime}
|
||
*/
|
||
static fromObject(obj, opts = {}) {
|
||
obj = obj || {};
|
||
const zoneToUse = normalizeZone(opts.zone, Settings2.defaultZone);
|
||
if (!zoneToUse.isValid) {
|
||
return DateTime.invalid(unsupportedZone(zoneToUse));
|
||
}
|
||
const tsNow = Settings2.now(), offsetProvis = !isUndefined(opts.specificOffset) ? opts.specificOffset : zoneToUse.offset(tsNow), normalized = normalizeObject(obj, normalizeUnit), containsOrdinal = !isUndefined(normalized.ordinal), containsGregorYear = !isUndefined(normalized.year), containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber, loc = Locale.fromObject(opts);
|
||
if ((containsGregor || containsOrdinal) && definiteWeekDef) {
|
||
throw new ConflictingSpecificationError(
|
||
"Can't mix weekYear/weekNumber units with year/month/day or ordinals"
|
||
);
|
||
}
|
||
if (containsGregorMD && containsOrdinal) {
|
||
throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day");
|
||
}
|
||
const useWeekData = definiteWeekDef || normalized.weekday && !containsGregor;
|
||
let units, defaultValues, objNow = tsToObj(tsNow, offsetProvis);
|
||
if (useWeekData) {
|
||
units = orderedWeekUnits;
|
||
defaultValues = defaultWeekUnitValues;
|
||
objNow = gregorianToWeek(objNow);
|
||
} else if (containsOrdinal) {
|
||
units = orderedOrdinalUnits;
|
||
defaultValues = defaultOrdinalUnitValues;
|
||
objNow = gregorianToOrdinal(objNow);
|
||
} else {
|
||
units = orderedUnits;
|
||
defaultValues = defaultUnitValues;
|
||
}
|
||
let foundFirst = false;
|
||
for (const u of units) {
|
||
const v = normalized[u];
|
||
if (!isUndefined(v)) {
|
||
foundFirst = true;
|
||
} else if (foundFirst) {
|
||
normalized[u] = defaultValues[u];
|
||
} else {
|
||
normalized[u] = objNow[u];
|
||
}
|
||
}
|
||
const higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized), invalid = higherOrderInvalid || hasInvalidTimeData(normalized);
|
||
if (invalid) {
|
||
return DateTime.invalid(invalid);
|
||
}
|
||
const gregorian = useWeekData ? weekToGregorian(normalized) : containsOrdinal ? ordinalToGregorian(normalized) : normalized, [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse), inst = new DateTime({
|
||
ts: tsFinal,
|
||
zone: zoneToUse,
|
||
o: offsetFinal,
|
||
loc
|
||
});
|
||
if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {
|
||
return DateTime.invalid(
|
||
"mismatched weekday",
|
||
`you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`
|
||
);
|
||
}
|
||
return inst;
|
||
}
|
||
/**
|
||
* Create a DateTime from an ISO 8601 string
|
||
* @param {string} text - the ISO string
|
||
* @param {Object} opts - options to affect the creation
|
||
* @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone
|
||
* @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one
|
||
* @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
|
||
* @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance
|
||
* @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance
|
||
* @example DateTime.fromISO('2016-05-25T09:08:34.123')
|
||
* @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')
|
||
* @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})
|
||
* @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})
|
||
* @example DateTime.fromISO('2016-W05-4')
|
||
* @return {DateTime}
|
||
*/
|
||
static fromISO(text2, opts = {}) {
|
||
const [vals, parsedZone] = parseISODate(text2);
|
||
return parseDataToDateTime(vals, parsedZone, opts, "ISO 8601", text2);
|
||
}
|
||
/**
|
||
* Create a DateTime from an RFC 2822 string
|
||
* @param {string} text - the RFC 2822 string
|
||
* @param {Object} opts - options to affect the creation
|
||
* @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.
|
||
* @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one
|
||
* @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
|
||
* @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
|
||
* @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance
|
||
* @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')
|
||
* @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')
|
||
* @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')
|
||
* @return {DateTime}
|
||
*/
|
||
static fromRFC2822(text2, opts = {}) {
|
||
const [vals, parsedZone] = parseRFC2822Date(text2);
|
||
return parseDataToDateTime(vals, parsedZone, opts, "RFC 2822", text2);
|
||
}
|
||
/**
|
||
* Create a DateTime from an HTTP header date
|
||
* @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1
|
||
* @param {string} text - the HTTP header date
|
||
* @param {Object} opts - options to affect the creation
|
||
* @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.
|
||
* @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.
|
||
* @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance
|
||
* @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
|
||
* @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance
|
||
* @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')
|
||
* @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')
|
||
* @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')
|
||
* @return {DateTime}
|
||
*/
|
||
static fromHTTP(text2, opts = {}) {
|
||
const [vals, parsedZone] = parseHTTPDate(text2);
|
||
return parseDataToDateTime(vals, parsedZone, opts, "HTTP", opts);
|
||
}
|
||
/**
|
||
* Create a DateTime from an input string and format string.
|
||
* Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).
|
||
* @param {string} text - the string to parse
|
||
* @param {string} fmt - the format the string is expected to be in (see the link below for the formats)
|
||
* @param {Object} opts - options to affect the creation
|
||
* @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone
|
||
* @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one
|
||
* @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale
|
||
* @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system
|
||
* @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
|
||
* @return {DateTime}
|
||
*/
|
||
static fromFormat(text2, fmt, opts = {}) {
|
||
if (isUndefined(text2) || isUndefined(fmt)) {
|
||
throw new InvalidArgumentError("fromFormat requires an input string and a format");
|
||
}
|
||
const { locale = null, numberingSystem = null } = opts, localeToUse = Locale.fromOpts({
|
||
locale,
|
||
numberingSystem,
|
||
defaultToEN: true
|
||
}), [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text2, fmt);
|
||
if (invalid) {
|
||
return DateTime.invalid(invalid);
|
||
} else {
|
||
return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text2, specificOffset);
|
||
}
|
||
}
|
||
/**
|
||
* @deprecated use fromFormat instead
|
||
*/
|
||
static fromString(text2, fmt, opts = {}) {
|
||
return DateTime.fromFormat(text2, fmt, opts);
|
||
}
|
||
/**
|
||
* Create a DateTime from a SQL date, time, or datetime
|
||
* Defaults to en-US if no locale has been specified, regardless of the system's locale
|
||
* @param {string} text - the string to parse
|
||
* @param {Object} opts - options to affect the creation
|
||
* @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone
|
||
* @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one
|
||
* @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale
|
||
* @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system
|
||
* @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance
|
||
* @example DateTime.fromSQL('2017-05-15')
|
||
* @example DateTime.fromSQL('2017-05-15 09:12:34')
|
||
* @example DateTime.fromSQL('2017-05-15 09:12:34.342')
|
||
* @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')
|
||
* @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')
|
||
* @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })
|
||
* @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })
|
||
* @example DateTime.fromSQL('09:12:34.342')
|
||
* @return {DateTime}
|
||
*/
|
||
static fromSQL(text2, opts = {}) {
|
||
const [vals, parsedZone] = parseSQL(text2);
|
||
return parseDataToDateTime(vals, parsedZone, opts, "SQL", text2);
|
||
}
|
||
/**
|
||
* Create an invalid DateTime.
|
||
* @param {DateTime} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent
|
||
* @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information
|
||
* @return {DateTime}
|
||
*/
|
||
static invalid(reason, explanation = null) {
|
||
if (!reason) {
|
||
throw new InvalidArgumentError("need to specify a reason the DateTime is invalid");
|
||
}
|
||
const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);
|
||
if (Settings2.throwOnInvalid) {
|
||
throw new InvalidDateTimeError(invalid);
|
||
} else {
|
||
return new DateTime({ invalid });
|
||
}
|
||
}
|
||
/**
|
||
* Check if an object is an instance of DateTime. Works across context boundaries
|
||
* @param {object} o
|
||
* @return {boolean}
|
||
*/
|
||
static isDateTime(o) {
|
||
return o && o.isLuxonDateTime || false;
|
||
}
|
||
/**
|
||
* Produce the format string for a set of options
|
||
* @param formatOpts
|
||
* @param localeOpts
|
||
* @returns {string}
|
||
*/
|
||
static parseFormatForOpts(formatOpts, localeOpts = {}) {
|
||
const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));
|
||
return !tokenList ? null : tokenList.map((t) => t ? t.val : null).join("");
|
||
}
|
||
/**
|
||
* Produce the the fully expanded format token for the locale
|
||
* Does NOT quote characters, so quoted tokens will not round trip correctly
|
||
* @param fmt
|
||
* @param localeOpts
|
||
* @returns {string}
|
||
*/
|
||
static expandFormat(fmt, localeOpts = {}) {
|
||
const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));
|
||
return expanded.map((t) => t.val).join("");
|
||
}
|
||
// INFO
|
||
/**
|
||
* Get the value of unit.
|
||
* @param {string} unit - a unit such as 'minute' or 'day'
|
||
* @example DateTime.local(2017, 7, 4).get('month'); //=> 7
|
||
* @example DateTime.local(2017, 7, 4).get('day'); //=> 4
|
||
* @return {number}
|
||
*/
|
||
get(unit) {
|
||
return this[unit];
|
||
}
|
||
/**
|
||
* Returns whether the DateTime is valid. Invalid DateTimes occur when:
|
||
* * The DateTime was created from invalid calendar information, such as the 13th month or February 30
|
||
* * The DateTime was created by an operation on another invalid date
|
||
* @type {boolean}
|
||
*/
|
||
get isValid() {
|
||
return this.invalid === null;
|
||
}
|
||
/**
|
||
* Returns an error code if this DateTime is invalid, or null if the DateTime is valid
|
||
* @type {string}
|
||
*/
|
||
get invalidReason() {
|
||
return this.invalid ? this.invalid.reason : null;
|
||
}
|
||
/**
|
||
* Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid
|
||
* @type {string}
|
||
*/
|
||
get invalidExplanation() {
|
||
return this.invalid ? this.invalid.explanation : null;
|
||
}
|
||
/**
|
||
* Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime
|
||
*
|
||
* @type {string}
|
||
*/
|
||
get locale() {
|
||
return this.isValid ? this.loc.locale : null;
|
||
}
|
||
/**
|
||
* Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime
|
||
*
|
||
* @type {string}
|
||
*/
|
||
get numberingSystem() {
|
||
return this.isValid ? this.loc.numberingSystem : null;
|
||
}
|
||
/**
|
||
* Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime
|
||
*
|
||
* @type {string}
|
||
*/
|
||
get outputCalendar() {
|
||
return this.isValid ? this.loc.outputCalendar : null;
|
||
}
|
||
/**
|
||
* Get the time zone associated with this DateTime.
|
||
* @type {Zone}
|
||
*/
|
||
get zone() {
|
||
return this._zone;
|
||
}
|
||
/**
|
||
* Get the name of the time zone.
|
||
* @type {string}
|
||
*/
|
||
get zoneName() {
|
||
return this.isValid ? this.zone.name : null;
|
||
}
|
||
/**
|
||
* Get the year
|
||
* @example DateTime.local(2017, 5, 25).year //=> 2017
|
||
* @type {number}
|
||
*/
|
||
get year() {
|
||
return this.isValid ? this.c.year : NaN;
|
||
}
|
||
/**
|
||
* Get the quarter
|
||
* @example DateTime.local(2017, 5, 25).quarter //=> 2
|
||
* @type {number}
|
||
*/
|
||
get quarter() {
|
||
return this.isValid ? Math.ceil(this.c.month / 3) : NaN;
|
||
}
|
||
/**
|
||
* Get the month (1-12).
|
||
* @example DateTime.local(2017, 5, 25).month //=> 5
|
||
* @type {number}
|
||
*/
|
||
get month() {
|
||
return this.isValid ? this.c.month : NaN;
|
||
}
|
||
/**
|
||
* Get the day of the month (1-30ish).
|
||
* @example DateTime.local(2017, 5, 25).day //=> 25
|
||
* @type {number}
|
||
*/
|
||
get day() {
|
||
return this.isValid ? this.c.day : NaN;
|
||
}
|
||
/**
|
||
* Get the hour of the day (0-23).
|
||
* @example DateTime.local(2017, 5, 25, 9).hour //=> 9
|
||
* @type {number}
|
||
*/
|
||
get hour() {
|
||
return this.isValid ? this.c.hour : NaN;
|
||
}
|
||
/**
|
||
* Get the minute of the hour (0-59).
|
||
* @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30
|
||
* @type {number}
|
||
*/
|
||
get minute() {
|
||
return this.isValid ? this.c.minute : NaN;
|
||
}
|
||
/**
|
||
* Get the second of the minute (0-59).
|
||
* @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52
|
||
* @type {number}
|
||
*/
|
||
get second() {
|
||
return this.isValid ? this.c.second : NaN;
|
||
}
|
||
/**
|
||
* Get the millisecond of the second (0-999).
|
||
* @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654
|
||
* @type {number}
|
||
*/
|
||
get millisecond() {
|
||
return this.isValid ? this.c.millisecond : NaN;
|
||
}
|
||
/**
|
||
* Get the week year
|
||
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
||
* @example DateTime.local(2014, 12, 31).weekYear //=> 2015
|
||
* @type {number}
|
||
*/
|
||
get weekYear() {
|
||
return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;
|
||
}
|
||
/**
|
||
* Get the week number of the week year (1-52ish).
|
||
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
||
* @example DateTime.local(2017, 5, 25).weekNumber //=> 21
|
||
* @type {number}
|
||
*/
|
||
get weekNumber() {
|
||
return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;
|
||
}
|
||
/**
|
||
* Get the day of the week.
|
||
* 1 is Monday and 7 is Sunday
|
||
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
||
* @example DateTime.local(2014, 11, 31).weekday //=> 4
|
||
* @type {number}
|
||
*/
|
||
get weekday() {
|
||
return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;
|
||
}
|
||
/**
|
||
* Get the ordinal (meaning the day of the year)
|
||
* @example DateTime.local(2017, 5, 25).ordinal //=> 145
|
||
* @type {number|DateTime}
|
||
*/
|
||
get ordinal() {
|
||
return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;
|
||
}
|
||
/**
|
||
* Get the human readable short month name, such as 'Oct'.
|
||
* Defaults to the system's locale if no locale has been specified
|
||
* @example DateTime.local(2017, 10, 30).monthShort //=> Oct
|
||
* @type {string}
|
||
*/
|
||
get monthShort() {
|
||
return this.isValid ? Info.months("short", { locObj: this.loc })[this.month - 1] : null;
|
||
}
|
||
/**
|
||
* Get the human readable long month name, such as 'October'.
|
||
* Defaults to the system's locale if no locale has been specified
|
||
* @example DateTime.local(2017, 10, 30).monthLong //=> October
|
||
* @type {string}
|
||
*/
|
||
get monthLong() {
|
||
return this.isValid ? Info.months("long", { locObj: this.loc })[this.month - 1] : null;
|
||
}
|
||
/**
|
||
* Get the human readable short weekday, such as 'Mon'.
|
||
* Defaults to the system's locale if no locale has been specified
|
||
* @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon
|
||
* @type {string}
|
||
*/
|
||
get weekdayShort() {
|
||
return this.isValid ? Info.weekdays("short", { locObj: this.loc })[this.weekday - 1] : null;
|
||
}
|
||
/**
|
||
* Get the human readable long weekday, such as 'Monday'.
|
||
* Defaults to the system's locale if no locale has been specified
|
||
* @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday
|
||
* @type {string}
|
||
*/
|
||
get weekdayLong() {
|
||
return this.isValid ? Info.weekdays("long", { locObj: this.loc })[this.weekday - 1] : null;
|
||
}
|
||
/**
|
||
* Get the UTC offset of this DateTime in minutes
|
||
* @example DateTime.now().offset //=> -240
|
||
* @example DateTime.utc().offset //=> 0
|
||
* @type {number}
|
||
*/
|
||
get offset() {
|
||
return this.isValid ? +this.o : NaN;
|
||
}
|
||
/**
|
||
* Get the short human name for the zone's current offset, for example "EST" or "EDT".
|
||
* Defaults to the system's locale if no locale has been specified
|
||
* @type {string}
|
||
*/
|
||
get offsetNameShort() {
|
||
if (this.isValid) {
|
||
return this.zone.offsetName(this.ts, {
|
||
format: "short",
|
||
locale: this.locale
|
||
});
|
||
} else {
|
||
return null;
|
||
}
|
||
}
|
||
/**
|
||
* Get the long human name for the zone's current offset, for example "Eastern Standard Time" or "Eastern Daylight Time".
|
||
* Defaults to the system's locale if no locale has been specified
|
||
* @type {string}
|
||
*/
|
||
get offsetNameLong() {
|
||
if (this.isValid) {
|
||
return this.zone.offsetName(this.ts, {
|
||
format: "long",
|
||
locale: this.locale
|
||
});
|
||
} else {
|
||
return null;
|
||
}
|
||
}
|
||
/**
|
||
* Get whether this zone's offset ever changes, as in a DST.
|
||
* @type {boolean}
|
||
*/
|
||
get isOffsetFixed() {
|
||
return this.isValid ? this.zone.isUniversal : null;
|
||
}
|
||
/**
|
||
* Get whether the DateTime is in a DST.
|
||
* @type {boolean}
|
||
*/
|
||
get isInDST() {
|
||
if (this.isOffsetFixed) {
|
||
return false;
|
||
} else {
|
||
return this.offset > this.set({ month: 1, day: 1 }).offset || this.offset > this.set({ month: 5 }).offset;
|
||
}
|
||
}
|
||
/**
|
||
* Returns true if this DateTime is in a leap year, false otherwise
|
||
* @example DateTime.local(2016).isInLeapYear //=> true
|
||
* @example DateTime.local(2013).isInLeapYear //=> false
|
||
* @type {boolean}
|
||
*/
|
||
get isInLeapYear() {
|
||
return isLeapYear(this.year);
|
||
}
|
||
/**
|
||
* Returns the number of days in this DateTime's month
|
||
* @example DateTime.local(2016, 2).daysInMonth //=> 29
|
||
* @example DateTime.local(2016, 3).daysInMonth //=> 31
|
||
* @type {number}
|
||
*/
|
||
get daysInMonth() {
|
||
return daysInMonth(this.year, this.month);
|
||
}
|
||
/**
|
||
* Returns the number of days in this DateTime's year
|
||
* @example DateTime.local(2016).daysInYear //=> 366
|
||
* @example DateTime.local(2013).daysInYear //=> 365
|
||
* @type {number}
|
||
*/
|
||
get daysInYear() {
|
||
return this.isValid ? daysInYear(this.year) : NaN;
|
||
}
|
||
/**
|
||
* Returns the number of weeks in this DateTime's year
|
||
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
||
* @example DateTime.local(2004).weeksInWeekYear //=> 53
|
||
* @example DateTime.local(2013).weeksInWeekYear //=> 52
|
||
* @type {number}
|
||
*/
|
||
get weeksInWeekYear() {
|
||
return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;
|
||
}
|
||
/**
|
||
* Returns the resolved Intl options for this DateTime.
|
||
* This is useful in understanding the behavior of formatting methods
|
||
* @param {Object} opts - the same options as toLocaleString
|
||
* @return {Object}
|
||
*/
|
||
resolvedLocaleOptions(opts = {}) {
|
||
const { locale, numberingSystem, calendar } = Formatter.create(
|
||
this.loc.clone(opts),
|
||
opts
|
||
).resolvedOptions(this);
|
||
return { locale, numberingSystem, outputCalendar: calendar };
|
||
}
|
||
// TRANSFORM
|
||
/**
|
||
* "Set" the DateTime's zone to UTC. Returns a newly-constructed DateTime.
|
||
*
|
||
* Equivalent to {@link DateTime#setZone}('utc')
|
||
* @param {number} [offset=0] - optionally, an offset from UTC in minutes
|
||
* @param {Object} [opts={}] - options to pass to `setZone()`
|
||
* @return {DateTime}
|
||
*/
|
||
toUTC(offset2 = 0, opts = {}) {
|
||
return this.setZone(FixedOffsetZone.instance(offset2), opts);
|
||
}
|
||
/**
|
||
* "Set" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.
|
||
*
|
||
* Equivalent to `setZone('local')`
|
||
* @return {DateTime}
|
||
*/
|
||
toLocal() {
|
||
return this.setZone(Settings2.defaultZone);
|
||
}
|
||
/**
|
||
* "Set" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.
|
||
*
|
||
* By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.
|
||
* @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.
|
||
* @param {Object} opts - options
|
||
* @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.
|
||
* @return {DateTime}
|
||
*/
|
||
setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {
|
||
zone = normalizeZone(zone, Settings2.defaultZone);
|
||
if (zone.equals(this.zone)) {
|
||
return this;
|
||
} else if (!zone.isValid) {
|
||
return DateTime.invalid(unsupportedZone(zone));
|
||
} else {
|
||
let newTS = this.ts;
|
||
if (keepLocalTime || keepCalendarTime) {
|
||
const offsetGuess = zone.offset(this.ts);
|
||
const asObj = this.toObject();
|
||
[newTS] = objToTS(asObj, offsetGuess, zone);
|
||
}
|
||
return clone(this, { ts: newTS, zone });
|
||
}
|
||
}
|
||
/**
|
||
* "Set" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.
|
||
* @param {Object} properties - the properties to set
|
||
* @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })
|
||
* @return {DateTime}
|
||
*/
|
||
reconfigure({ locale, numberingSystem, outputCalendar } = {}) {
|
||
const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });
|
||
return clone(this, { loc });
|
||
}
|
||
/**
|
||
* "Set" the locale. Returns a newly-constructed DateTime.
|
||
* Just a convenient alias for reconfigure({ locale })
|
||
* @example DateTime.local(2017, 5, 25).setLocale('en-GB')
|
||
* @return {DateTime}
|
||
*/
|
||
setLocale(locale) {
|
||
return this.reconfigure({ locale });
|
||
}
|
||
/**
|
||
* "Set" the values of specified units. Returns a newly-constructed DateTime.
|
||
* You can only set units with this method; for "setting" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.
|
||
* @param {Object} values - a mapping of units to numbers
|
||
* @example dt.set({ year: 2017 })
|
||
* @example dt.set({ hour: 8, minute: 30 })
|
||
* @example dt.set({ weekday: 5 })
|
||
* @example dt.set({ year: 2005, ordinal: 234 })
|
||
* @return {DateTime}
|
||
*/
|
||
set(values) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const normalized = normalizeObject(values, normalizeUnit), settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday), containsOrdinal = !isUndefined(normalized.ordinal), containsGregorYear = !isUndefined(normalized.year), containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber;
|
||
if ((containsGregor || containsOrdinal) && definiteWeekDef) {
|
||
throw new ConflictingSpecificationError(
|
||
"Can't mix weekYear/weekNumber units with year/month/day or ordinals"
|
||
);
|
||
}
|
||
if (containsGregorMD && containsOrdinal) {
|
||
throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day");
|
||
}
|
||
let mixed;
|
||
if (settingWeekStuff) {
|
||
mixed = weekToGregorian({ ...gregorianToWeek(this.c), ...normalized });
|
||
} else if (!isUndefined(normalized.ordinal)) {
|
||
mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });
|
||
} else {
|
||
mixed = { ...this.toObject(), ...normalized };
|
||
if (isUndefined(normalized.day)) {
|
||
mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);
|
||
}
|
||
}
|
||
const [ts, o] = objToTS(mixed, this.o, this.zone);
|
||
return clone(this, { ts, o });
|
||
}
|
||
/**
|
||
* Add a period of time to this DateTime and return the resulting DateTime
|
||
*
|
||
* Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.
|
||
* @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()
|
||
* @example DateTime.now().plus(123) //~> in 123 milliseconds
|
||
* @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes
|
||
* @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow
|
||
* @example DateTime.now().plus({ days: -1 }) //~> this time yesterday
|
||
* @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min
|
||
* @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min
|
||
* @return {DateTime}
|
||
*/
|
||
plus(duration) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const dur = Duration.fromDurationLike(duration);
|
||
return clone(this, adjustTime(this, dur));
|
||
}
|
||
/**
|
||
* Subtract a period of time to this DateTime and return the resulting DateTime
|
||
* See {@link DateTime#plus}
|
||
* @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()
|
||
@return {DateTime}
|
||
*/
|
||
minus(duration) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const dur = Duration.fromDurationLike(duration).negate();
|
||
return clone(this, adjustTime(this, dur));
|
||
}
|
||
/**
|
||
* "Set" this DateTime to the beginning of a unit of time.
|
||
* @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.
|
||
* @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'
|
||
* @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'
|
||
* @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays
|
||
* @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'
|
||
* @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'
|
||
* @return {DateTime}
|
||
*/
|
||
startOf(unit) {
|
||
if (!this.isValid)
|
||
return this;
|
||
const o = {}, normalizedUnit = Duration.normalizeUnit(unit);
|
||
switch (normalizedUnit) {
|
||
case "years":
|
||
o.month = 1;
|
||
case "quarters":
|
||
case "months":
|
||
o.day = 1;
|
||
case "weeks":
|
||
case "days":
|
||
o.hour = 0;
|
||
case "hours":
|
||
o.minute = 0;
|
||
case "minutes":
|
||
o.second = 0;
|
||
case "seconds":
|
||
o.millisecond = 0;
|
||
break;
|
||
}
|
||
if (normalizedUnit === "weeks") {
|
||
o.weekday = 1;
|
||
}
|
||
if (normalizedUnit === "quarters") {
|
||
const q = Math.ceil(this.month / 3);
|
||
o.month = (q - 1) * 3 + 1;
|
||
}
|
||
return this.set(o);
|
||
}
|
||
/**
|
||
* "Set" this DateTime to the end (meaning the last millisecond) of a unit of time
|
||
* @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.
|
||
* @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'
|
||
* @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'
|
||
* @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays
|
||
* @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'
|
||
* @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'
|
||
* @return {DateTime}
|
||
*/
|
||
endOf(unit) {
|
||
return this.isValid ? this.plus({ [unit]: 1 }).startOf(unit).minus(1) : this;
|
||
}
|
||
// OUTPUT
|
||
/**
|
||
* Returns a string representation of this DateTime formatted according to the specified format string.
|
||
* **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).
|
||
* Defaults to en-US if no locale has been specified, regardless of the system's locale.
|
||
* @param {string} fmt - the format string
|
||
* @param {Object} opts - opts to override the configuration options on this DateTime
|
||
* @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'
|
||
* @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'
|
||
* @example DateTime.now().toFormat('yyyy LLL dd', { locale: "fr" }) //=> '2017 avr. 22'
|
||
* @example DateTime.now().toFormat("HH 'hours and' mm 'minutes'") //=> '20 hours and 55 minutes'
|
||
* @return {string}
|
||
*/
|
||
toFormat(fmt, opts = {}) {
|
||
return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID;
|
||
}
|
||
/**
|
||
* Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.
|
||
* The exact behavior of this method is browser-specific, but in general it will return an appropriate representation
|
||
* of the DateTime in the assigned locale.
|
||
* Defaults to the system's locale if no locale has been specified
|
||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
|
||
* @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options
|
||
* @param {Object} opts - opts to override the configuration options on this DateTime
|
||
* @example DateTime.now().toLocaleString(); //=> 4/20/2017
|
||
* @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'
|
||
* @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'
|
||
* @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'
|
||
* @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'
|
||
* @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'
|
||
* @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'
|
||
* @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'
|
||
* @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'
|
||
* @return {string}
|
||
*/
|
||
toLocaleString(formatOpts = DATE_SHORT, opts = {}) {
|
||
return this.isValid ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this) : INVALID;
|
||
}
|
||
/**
|
||
* Returns an array of format "parts", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.
|
||
* Defaults to the system's locale if no locale has been specified
|
||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts
|
||
* @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.
|
||
* @example DateTime.now().toLocaleParts(); //=> [
|
||
* //=> { type: 'day', value: '25' },
|
||
* //=> { type: 'literal', value: '/' },
|
||
* //=> { type: 'month', value: '05' },
|
||
* //=> { type: 'literal', value: '/' },
|
||
* //=> { type: 'year', value: '1982' }
|
||
* //=> ]
|
||
*/
|
||
toLocaleParts(opts = {}) {
|
||
return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : [];
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of this DateTime
|
||
* @param {Object} opts - options
|
||
* @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0
|
||
* @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0
|
||
* @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
|
||
* @param {boolean} [opts.extendedZone=false] - add the time zone format extension
|
||
* @param {string} [opts.format='extended'] - choose between the basic and extended format
|
||
* @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'
|
||
* @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'
|
||
* @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'
|
||
* @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'
|
||
* @return {string}
|
||
*/
|
||
toISO({
|
||
format = "extended",
|
||
suppressSeconds = false,
|
||
suppressMilliseconds = false,
|
||
includeOffset = true,
|
||
extendedZone = false
|
||
} = {}) {
|
||
if (!this.isValid) {
|
||
return null;
|
||
}
|
||
const ext = format === "extended";
|
||
let c = toISODate(this, ext);
|
||
c += "T";
|
||
c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);
|
||
return c;
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of this DateTime's date component
|
||
* @param {Object} opts - options
|
||
* @param {string} [opts.format='extended'] - choose between the basic and extended format
|
||
* @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'
|
||
* @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'
|
||
* @return {string}
|
||
*/
|
||
toISODate({ format = "extended" } = {}) {
|
||
if (!this.isValid) {
|
||
return null;
|
||
}
|
||
return toISODate(this, format === "extended");
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of this DateTime's week date
|
||
* @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'
|
||
* @return {string}
|
||
*/
|
||
toISOWeekDate() {
|
||
return toTechFormat(this, "kkkk-'W'WW-c");
|
||
}
|
||
/**
|
||
* Returns an ISO 8601-compliant string representation of this DateTime's time component
|
||
* @param {Object} opts - options
|
||
* @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0
|
||
* @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0
|
||
* @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
|
||
* @param {boolean} [opts.extendedZone=true] - add the time zone format extension
|
||
* @param {boolean} [opts.includePrefix=false] - include the `T` prefix
|
||
* @param {string} [opts.format='extended'] - choose between the basic and extended format
|
||
* @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'
|
||
* @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'
|
||
* @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'
|
||
* @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'
|
||
* @return {string}
|
||
*/
|
||
toISOTime({
|
||
suppressMilliseconds = false,
|
||
suppressSeconds = false,
|
||
includeOffset = true,
|
||
includePrefix = false,
|
||
extendedZone = false,
|
||
format = "extended"
|
||
} = {}) {
|
||
if (!this.isValid) {
|
||
return null;
|
||
}
|
||
let c = includePrefix ? "T" : "";
|
||
return c + toISOTime(
|
||
this,
|
||
format === "extended",
|
||
suppressSeconds,
|
||
suppressMilliseconds,
|
||
includeOffset,
|
||
extendedZone
|
||
);
|
||
}
|
||
/**
|
||
* Returns an RFC 2822-compatible string representation of this DateTime
|
||
* @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'
|
||
* @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'
|
||
* @return {string}
|
||
*/
|
||
toRFC2822() {
|
||
return toTechFormat(this, "EEE, dd LLL yyyy HH:mm:ss ZZZ", false);
|
||
}
|
||
/**
|
||
* Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.
|
||
* Specifically, the string conforms to RFC 1123.
|
||
* @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1
|
||
* @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'
|
||
* @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'
|
||
* @return {string}
|
||
*/
|
||
toHTTP() {
|
||
return toTechFormat(this.toUTC(), "EEE, dd LLL yyyy HH:mm:ss 'GMT'");
|
||
}
|
||
/**
|
||
* Returns a string representation of this DateTime appropriate for use in SQL Date
|
||
* @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'
|
||
* @return {string}
|
||
*/
|
||
toSQLDate() {
|
||
if (!this.isValid) {
|
||
return null;
|
||
}
|
||
return toISODate(this, true);
|
||
}
|
||
/**
|
||
* Returns a string representation of this DateTime appropriate for use in SQL Time
|
||
* @param {Object} opts - options
|
||
* @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.
|
||
* @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
|
||
* @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'
|
||
* @example DateTime.utc().toSQL() //=> '05:15:16.345'
|
||
* @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'
|
||
* @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'
|
||
* @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'
|
||
* @return {string}
|
||
*/
|
||
toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {
|
||
let fmt = "HH:mm:ss.SSS";
|
||
if (includeZone || includeOffset) {
|
||
if (includeOffsetSpace) {
|
||
fmt += " ";
|
||
}
|
||
if (includeZone) {
|
||
fmt += "z";
|
||
} else if (includeOffset) {
|
||
fmt += "ZZ";
|
||
}
|
||
}
|
||
return toTechFormat(this, fmt, true);
|
||
}
|
||
/**
|
||
* Returns a string representation of this DateTime appropriate for use in SQL DateTime
|
||
* @param {Object} opts - options
|
||
* @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.
|
||
* @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'
|
||
* @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'
|
||
* @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'
|
||
* @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'
|
||
* @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'
|
||
* @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'
|
||
* @return {string}
|
||
*/
|
||
toSQL(opts = {}) {
|
||
if (!this.isValid) {
|
||
return null;
|
||
}
|
||
return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;
|
||
}
|
||
/**
|
||
* Returns a string representation of this DateTime appropriate for debugging
|
||
* @return {string}
|
||
*/
|
||
toString() {
|
||
return this.isValid ? this.toISO() : INVALID;
|
||
}
|
||
/**
|
||
* Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}
|
||
* @return {number}
|
||
*/
|
||
valueOf() {
|
||
return this.toMillis();
|
||
}
|
||
/**
|
||
* Returns the epoch milliseconds of this DateTime.
|
||
* @return {number}
|
||
*/
|
||
toMillis() {
|
||
return this.isValid ? this.ts : NaN;
|
||
}
|
||
/**
|
||
* Returns the epoch seconds of this DateTime.
|
||
* @return {number}
|
||
*/
|
||
toSeconds() {
|
||
return this.isValid ? this.ts / 1e3 : NaN;
|
||
}
|
||
/**
|
||
* Returns the epoch seconds (as a whole number) of this DateTime.
|
||
* @return {number}
|
||
*/
|
||
toUnixInteger() {
|
||
return this.isValid ? Math.floor(this.ts / 1e3) : NaN;
|
||
}
|
||
/**
|
||
* Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.
|
||
* @return {string}
|
||
*/
|
||
toJSON() {
|
||
return this.toISO();
|
||
}
|
||
/**
|
||
* Returns a BSON serializable equivalent to this DateTime.
|
||
* @return {Date}
|
||
*/
|
||
toBSON() {
|
||
return this.toJSDate();
|
||
}
|
||
/**
|
||
* Returns a JavaScript object with this DateTime's year, month, day, and so on.
|
||
* @param opts - options for generating the object
|
||
* @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output
|
||
* @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }
|
||
* @return {Object}
|
||
*/
|
||
toObject(opts = {}) {
|
||
if (!this.isValid)
|
||
return {};
|
||
const base = { ...this.c };
|
||
if (opts.includeConfig) {
|
||
base.outputCalendar = this.outputCalendar;
|
||
base.numberingSystem = this.loc.numberingSystem;
|
||
base.locale = this.loc.locale;
|
||
}
|
||
return base;
|
||
}
|
||
/**
|
||
* Returns a JavaScript Date equivalent to this DateTime.
|
||
* @return {Date}
|
||
*/
|
||
toJSDate() {
|
||
return new Date(this.isValid ? this.ts : NaN);
|
||
}
|
||
// COMPARE
|
||
/**
|
||
* Return the difference between two DateTimes as a Duration.
|
||
* @param {DateTime} otherDateTime - the DateTime to compare this one to
|
||
* @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.
|
||
* @param {Object} opts - options that affect the creation of the Duration
|
||
* @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
|
||
* @example
|
||
* var i1 = DateTime.fromISO('1982-05-25T09:45'),
|
||
* i2 = DateTime.fromISO('1983-10-14T10:30');
|
||
* i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }
|
||
* i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }
|
||
* i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }
|
||
* i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }
|
||
* @return {Duration}
|
||
*/
|
||
diff(otherDateTime, unit = "milliseconds", opts = {}) {
|
||
if (!this.isValid || !otherDateTime.isValid) {
|
||
return Duration.invalid("created by diffing an invalid DateTime");
|
||
}
|
||
const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };
|
||
const units = maybeArray(unit).map(Duration.normalizeUnit), otherIsLater = otherDateTime.valueOf() > this.valueOf(), earlier = otherIsLater ? this : otherDateTime, later = otherIsLater ? otherDateTime : this, diffed = diff(earlier, later, units, durOpts);
|
||
return otherIsLater ? diffed.negate() : diffed;
|
||
}
|
||
/**
|
||
* Return the difference between this DateTime and right now.
|
||
* See {@link DateTime#diff}
|
||
* @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration
|
||
* @param {Object} opts - options that affect the creation of the Duration
|
||
* @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use
|
||
* @return {Duration}
|
||
*/
|
||
diffNow(unit = "milliseconds", opts = {}) {
|
||
return this.diff(DateTime.now(), unit, opts);
|
||
}
|
||
/**
|
||
* Return an Interval spanning between this DateTime and another DateTime
|
||
* @param {DateTime} otherDateTime - the other end point of the Interval
|
||
* @return {Interval}
|
||
*/
|
||
until(otherDateTime) {
|
||
return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;
|
||
}
|
||
/**
|
||
* Return whether this DateTime is in the same unit of time as another DateTime.
|
||
* Higher-order units must also be identical for this function to return `true`.
|
||
* Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.
|
||
* @param {DateTime} otherDateTime - the other DateTime
|
||
* @param {string} unit - the unit of time to check sameness on
|
||
* @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day
|
||
* @return {boolean}
|
||
*/
|
||
hasSame(otherDateTime, unit) {
|
||
if (!this.isValid)
|
||
return false;
|
||
const inputMs = otherDateTime.valueOf();
|
||
const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });
|
||
return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit);
|
||
}
|
||
/**
|
||
* Equality check
|
||
* Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.
|
||
* To compare just the millisecond values, use `+dt1 === +dt2`.
|
||
* @param {DateTime} other - the other DateTime
|
||
* @return {boolean}
|
||
*/
|
||
equals(other) {
|
||
return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc);
|
||
}
|
||
/**
|
||
* Returns a string representation of a this time relative to now, such as "in two days". Can only internationalize if your
|
||
* platform supports Intl.RelativeTimeFormat. Rounds down by default.
|
||
* @param {Object} options - options that affect the output
|
||
* @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.
|
||
* @param {string} [options.style="long"] - the style of units, must be "long", "short", or "narrow"
|
||
* @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of "years", "quarters", "months", "weeks", "days", "hours", "minutes", or "seconds"
|
||
* @param {boolean} [options.round=true] - whether to round the numbers in the output.
|
||
* @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.
|
||
* @param {string} options.locale - override the locale of this DateTime
|
||
* @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this
|
||
* @example DateTime.now().plus({ days: 1 }).toRelative() //=> "in 1 day"
|
||
* @example DateTime.now().setLocale("es").toRelative({ days: 1 }) //=> "dentro de 1 día"
|
||
* @example DateTime.now().plus({ days: 1 }).toRelative({ locale: "fr" }) //=> "dans 23 heures"
|
||
* @example DateTime.now().minus({ days: 2 }).toRelative() //=> "2 days ago"
|
||
* @example DateTime.now().minus({ days: 2 }).toRelative({ unit: "hours" }) //=> "48 hours ago"
|
||
* @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> "1.5 days ago"
|
||
*/
|
||
toRelative(options = {}) {
|
||
if (!this.isValid)
|
||
return null;
|
||
const base = options.base || DateTime.fromObject({}, { zone: this.zone }), padding = options.padding ? this < base ? -options.padding : options.padding : 0;
|
||
let units = ["years", "months", "days", "hours", "minutes", "seconds"];
|
||
let unit = options.unit;
|
||
if (Array.isArray(options.unit)) {
|
||
units = options.unit;
|
||
unit = void 0;
|
||
}
|
||
return diffRelative(base, this.plus(padding), {
|
||
...options,
|
||
numeric: "always",
|
||
units,
|
||
unit
|
||
});
|
||
}
|
||
/**
|
||
* Returns a string representation of this date relative to today, such as "yesterday" or "next month".
|
||
* Only internationalizes on platforms that supports Intl.RelativeTimeFormat.
|
||
* @param {Object} options - options that affect the output
|
||
* @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.
|
||
* @param {string} options.locale - override the locale of this DateTime
|
||
* @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of "years", "quarters", "months", "weeks", or "days"
|
||
* @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this
|
||
* @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> "tomorrow"
|
||
* @example DateTime.now().setLocale("es").plus({ days: 1 }).toRelative() //=> ""mañana"
|
||
* @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: "fr" }) //=> "demain"
|
||
* @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> "2 days ago"
|
||
*/
|
||
toRelativeCalendar(options = {}) {
|
||
if (!this.isValid)
|
||
return null;
|
||
return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {
|
||
...options,
|
||
numeric: "auto",
|
||
units: ["years", "months", "days"],
|
||
calendary: true
|
||
});
|
||
}
|
||
/**
|
||
* Return the min of several date times
|
||
* @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum
|
||
* @return {DateTime} the min DateTime, or undefined if called with no argument
|
||
*/
|
||
static min(...dateTimes) {
|
||
if (!dateTimes.every(DateTime.isDateTime)) {
|
||
throw new InvalidArgumentError("min requires all arguments be DateTimes");
|
||
}
|
||
return bestBy(dateTimes, (i) => i.valueOf(), Math.min);
|
||
}
|
||
/**
|
||
* Return the max of several date times
|
||
* @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum
|
||
* @return {DateTime} the max DateTime, or undefined if called with no argument
|
||
*/
|
||
static max(...dateTimes) {
|
||
if (!dateTimes.every(DateTime.isDateTime)) {
|
||
throw new InvalidArgumentError("max requires all arguments be DateTimes");
|
||
}
|
||
return bestBy(dateTimes, (i) => i.valueOf(), Math.max);
|
||
}
|
||
// MISC
|
||
/**
|
||
* Explain how a string would be parsed by fromFormat()
|
||
* @param {string} text - the string to parse
|
||
* @param {string} fmt - the format the string is expected to be in (see description)
|
||
* @param {Object} options - options taken by fromFormat()
|
||
* @return {Object}
|
||
*/
|
||
static fromFormatExplain(text2, fmt, options = {}) {
|
||
const { locale = null, numberingSystem = null } = options, localeToUse = Locale.fromOpts({
|
||
locale,
|
||
numberingSystem,
|
||
defaultToEN: true
|
||
});
|
||
return explainFromTokens(localeToUse, text2, fmt);
|
||
}
|
||
/**
|
||
* @deprecated use fromFormatExplain instead
|
||
*/
|
||
static fromStringExplain(text2, fmt, options = {}) {
|
||
return DateTime.fromFormatExplain(text2, fmt, options);
|
||
}
|
||
// FORMAT PRESETS
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 10/14/1983
|
||
* @type {Object}
|
||
*/
|
||
static get DATE_SHORT() {
|
||
return DATE_SHORT;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'Oct 14, 1983'
|
||
* @type {Object}
|
||
*/
|
||
static get DATE_MED() {
|
||
return DATE_MED;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'
|
||
* @type {Object}
|
||
*/
|
||
static get DATE_MED_WITH_WEEKDAY() {
|
||
return DATE_MED_WITH_WEEKDAY;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'October 14, 1983'
|
||
* @type {Object}
|
||
*/
|
||
static get DATE_FULL() {
|
||
return DATE_FULL;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'
|
||
* @type {Object}
|
||
*/
|
||
static get DATE_HUGE() {
|
||
return DATE_HUGE;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get TIME_SIMPLE() {
|
||
return TIME_SIMPLE;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get TIME_WITH_SECONDS() {
|
||
return TIME_WITH_SECONDS;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get TIME_WITH_SHORT_OFFSET() {
|
||
return TIME_WITH_SHORT_OFFSET;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get TIME_WITH_LONG_OFFSET() {
|
||
return TIME_WITH_LONG_OFFSET;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '09:30', always 24-hour.
|
||
* @type {Object}
|
||
*/
|
||
static get TIME_24_SIMPLE() {
|
||
return TIME_24_SIMPLE;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.
|
||
* @type {Object}
|
||
*/
|
||
static get TIME_24_WITH_SECONDS() {
|
||
return TIME_24_WITH_SECONDS;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.
|
||
* @type {Object}
|
||
*/
|
||
static get TIME_24_WITH_SHORT_OFFSET() {
|
||
return TIME_24_WITH_SHORT_OFFSET;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.
|
||
* @type {Object}
|
||
*/
|
||
static get TIME_24_WITH_LONG_OFFSET() {
|
||
return TIME_24_WITH_LONG_OFFSET;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_SHORT() {
|
||
return DATETIME_SHORT;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_SHORT_WITH_SECONDS() {
|
||
return DATETIME_SHORT_WITH_SECONDS;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_MED() {
|
||
return DATETIME_MED;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_MED_WITH_SECONDS() {
|
||
return DATETIME_MED_WITH_SECONDS;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_MED_WITH_WEEKDAY() {
|
||
return DATETIME_MED_WITH_WEEKDAY;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_FULL() {
|
||
return DATETIME_FULL;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_FULL_WITH_SECONDS() {
|
||
return DATETIME_FULL_WITH_SECONDS;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_HUGE() {
|
||
return DATETIME_HUGE;
|
||
}
|
||
/**
|
||
* {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.
|
||
* @type {Object}
|
||
*/
|
||
static get DATETIME_HUGE_WITH_SECONDS() {
|
||
return DATETIME_HUGE_WITH_SECONDS;
|
||
}
|
||
};
|
||
function friendlyDateTime(dateTimeish) {
|
||
if (DateTime.isDateTime(dateTimeish)) {
|
||
return dateTimeish;
|
||
} else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {
|
||
return DateTime.fromJSDate(dateTimeish);
|
||
} else if (dateTimeish && typeof dateTimeish === "object") {
|
||
return DateTime.fromObject(dateTimeish);
|
||
} else {
|
||
throw new InvalidArgumentError(
|
||
`Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`
|
||
);
|
||
}
|
||
}
|
||
var DEFAULT_QUERY_SETTINGS = {
|
||
renderNullAs: "\\-",
|
||
taskCompletionTracking: false,
|
||
taskCompletionUseEmojiShorthand: false,
|
||
taskCompletionText: "completion",
|
||
taskCompletionDateFormat: "yyyy-MM-dd",
|
||
recursiveSubTaskCompletion: false,
|
||
warnOnEmptyResult: true,
|
||
refreshEnabled: true,
|
||
refreshInterval: 2500,
|
||
defaultDateFormat: "MMMM dd, yyyy",
|
||
defaultDateTimeFormat: "h:mm a - MMMM dd, yyyy",
|
||
maxRecursiveRenderDepth: 4,
|
||
tableIdColumnName: "File",
|
||
tableGroupColumnName: "Group",
|
||
showResultCount: true
|
||
};
|
||
var DEFAULT_EXPORT_SETTINGS = {
|
||
allowHtml: true
|
||
};
|
||
({
|
||
...DEFAULT_QUERY_SETTINGS,
|
||
...DEFAULT_EXPORT_SETTINGS,
|
||
...{
|
||
inlineQueryPrefix: "=",
|
||
inlineJsQueryPrefix: "$=",
|
||
inlineQueriesInCodeblocks: true,
|
||
enableInlineDataview: true,
|
||
enableDataviewJs: false,
|
||
enableInlineDataviewJs: false,
|
||
prettyRenderInlineFields: true,
|
||
dataviewJsKeyword: "dataviewjs"
|
||
}
|
||
});
|
||
var Success = class {
|
||
constructor(value) {
|
||
this.value = value;
|
||
this.successful = true;
|
||
}
|
||
map(f) {
|
||
return new Success(f(this.value));
|
||
}
|
||
flatMap(f) {
|
||
return f(this.value);
|
||
}
|
||
mapErr(f) {
|
||
return this;
|
||
}
|
||
bimap(succ, _fail) {
|
||
return this.map(succ);
|
||
}
|
||
orElse(_value) {
|
||
return this.value;
|
||
}
|
||
cast() {
|
||
return this;
|
||
}
|
||
orElseThrow(_message) {
|
||
return this.value;
|
||
}
|
||
};
|
||
var Failure = class {
|
||
constructor(error) {
|
||
this.error = error;
|
||
this.successful = false;
|
||
}
|
||
map(_f) {
|
||
return this;
|
||
}
|
||
flatMap(_f) {
|
||
return this;
|
||
}
|
||
mapErr(f) {
|
||
return new Failure(f(this.error));
|
||
}
|
||
bimap(_succ, fail) {
|
||
return this.mapErr(fail);
|
||
}
|
||
orElse(value) {
|
||
return value;
|
||
}
|
||
cast() {
|
||
return this;
|
||
}
|
||
orElseThrow(message) {
|
||
if (message)
|
||
throw new Error(message(this.error));
|
||
else
|
||
throw new Error("" + this.error);
|
||
}
|
||
};
|
||
var Result;
|
||
(function(Result2) {
|
||
function success(value) {
|
||
return new Success(value);
|
||
}
|
||
Result2.success = success;
|
||
function failure(error) {
|
||
return new Failure(error);
|
||
}
|
||
Result2.failure = failure;
|
||
function flatMap2(first, second, f) {
|
||
if (first.successful) {
|
||
if (second.successful)
|
||
return f(first.value, second.value);
|
||
else
|
||
return failure(second.error);
|
||
} else {
|
||
return failure(first.error);
|
||
}
|
||
}
|
||
Result2.flatMap2 = flatMap2;
|
||
function map2(first, second, f) {
|
||
return flatMap2(first, second, (a, b) => success(f(a, b)));
|
||
}
|
||
Result2.map2 = map2;
|
||
})(Result || (Result = {}));
|
||
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
||
var parsimmon_umd_min = { exports: {} };
|
||
(function(module3, exports2) {
|
||
!function(n2, t) {
|
||
module3.exports = t();
|
||
}("undefined" != typeof self ? self : commonjsGlobal, function() {
|
||
return function(n2) {
|
||
var t = {};
|
||
function r(e) {
|
||
if (t[e])
|
||
return t[e].exports;
|
||
var u = t[e] = { i: e, l: false, exports: {} };
|
||
return n2[e].call(u.exports, u, u.exports, r), u.l = true, u.exports;
|
||
}
|
||
return r.m = n2, r.c = t, r.d = function(n3, t2, e) {
|
||
r.o(n3, t2) || Object.defineProperty(n3, t2, { configurable: false, enumerable: true, get: e });
|
||
}, r.r = function(n3) {
|
||
Object.defineProperty(n3, "__esModule", { value: true });
|
||
}, r.n = function(n3) {
|
||
var t2 = n3 && n3.__esModule ? function() {
|
||
return n3.default;
|
||
} : function() {
|
||
return n3;
|
||
};
|
||
return r.d(t2, "a", t2), t2;
|
||
}, r.o = function(n3, t2) {
|
||
return Object.prototype.hasOwnProperty.call(n3, t2);
|
||
}, r.p = "", r(r.s = 0);
|
||
}([function(n2, t, r) {
|
||
function e(n3) {
|
||
if (!(this instanceof e))
|
||
return new e(n3);
|
||
this._ = n3;
|
||
}
|
||
var u = e.prototype;
|
||
function o(n3, t2) {
|
||
for (var r2 = 0; r2 < n3; r2++)
|
||
t2(r2);
|
||
}
|
||
function i(n3, t2, r2) {
|
||
return function(n4, t3) {
|
||
o(t3.length, function(r3) {
|
||
n4(t3[r3], r3, t3);
|
||
});
|
||
}(function(r3, e2, u2) {
|
||
t2 = n3(t2, r3, e2, u2);
|
||
}, r2), t2;
|
||
}
|
||
function a(n3, t2) {
|
||
return i(function(t3, r2, e2, u2) {
|
||
return t3.concat([n3(r2, e2, u2)]);
|
||
}, [], t2);
|
||
}
|
||
function f(n3, t2) {
|
||
var r2 = { v: 0, buf: t2 };
|
||
return o(n3, function() {
|
||
var n4;
|
||
r2 = { v: r2.v << 1 | (n4 = r2.buf, n4[0] >> 7), buf: function(n5) {
|
||
var t3 = i(function(n6, t4, r3, e2) {
|
||
return n6.concat(r3 === e2.length - 1 ? Buffer.from([t4, 0]).readUInt16BE(0) : e2.readUInt16BE(r3));
|
||
}, [], n5);
|
||
return Buffer.from(a(function(n6) {
|
||
return (n6 << 1 & 65535) >> 8;
|
||
}, t3));
|
||
}(r2.buf) };
|
||
}), r2;
|
||
}
|
||
function c() {
|
||
return "undefined" != typeof Buffer;
|
||
}
|
||
function s2() {
|
||
if (!c())
|
||
throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser.");
|
||
}
|
||
function l2(n3) {
|
||
s2();
|
||
var t2 = i(function(n4, t3) {
|
||
return n4 + t3;
|
||
}, 0, n3);
|
||
if (t2 % 8 != 0)
|
||
throw new Error("The bits [" + n3.join(", ") + "] add up to " + t2 + " which is not an even number of bytes; the total should be divisible by 8");
|
||
var r2, u2 = t2 / 8, o2 = (r2 = function(n4) {
|
||
return n4 > 48;
|
||
}, i(function(n4, t3) {
|
||
return n4 || (r2(t3) ? t3 : n4);
|
||
}, null, n3));
|
||
if (o2)
|
||
throw new Error(o2 + " bit range requested exceeds 48 bit (6 byte) Number max.");
|
||
return new e(function(t3, r3) {
|
||
var e2 = u2 + r3;
|
||
return e2 > t3.length ? x(r3, u2.toString() + " bytes") : b(e2, i(function(n4, t4) {
|
||
var r4 = f(t4, n4.buf);
|
||
return { coll: n4.coll.concat(r4.v), buf: r4.buf };
|
||
}, { coll: [], buf: t3.slice(r3, e2) }, n3).coll);
|
||
});
|
||
}
|
||
function h(n3, t2) {
|
||
return new e(function(r2, e2) {
|
||
return s2(), e2 + t2 > r2.length ? x(e2, t2 + " bytes for " + n3) : b(e2 + t2, r2.slice(e2, e2 + t2));
|
||
});
|
||
}
|
||
function p(n3, t2) {
|
||
if ("number" != typeof (r2 = t2) || Math.floor(r2) !== r2 || t2 < 0 || t2 > 6)
|
||
throw new Error(n3 + " requires integer length in range [0, 6].");
|
||
var r2;
|
||
}
|
||
function d(n3) {
|
||
return p("uintBE", n3), h("uintBE(" + n3 + ")", n3).map(function(t2) {
|
||
return t2.readUIntBE(0, n3);
|
||
});
|
||
}
|
||
function v(n3) {
|
||
return p("uintLE", n3), h("uintLE(" + n3 + ")", n3).map(function(t2) {
|
||
return t2.readUIntLE(0, n3);
|
||
});
|
||
}
|
||
function g(n3) {
|
||
return p("intBE", n3), h("intBE(" + n3 + ")", n3).map(function(t2) {
|
||
return t2.readIntBE(0, n3);
|
||
});
|
||
}
|
||
function m(n3) {
|
||
return p("intLE", n3), h("intLE(" + n3 + ")", n3).map(function(t2) {
|
||
return t2.readIntLE(0, n3);
|
||
});
|
||
}
|
||
function y(n3) {
|
||
return n3 instanceof e;
|
||
}
|
||
function E(n3) {
|
||
return "[object Array]" === {}.toString.call(n3);
|
||
}
|
||
function w(n3) {
|
||
return c() && Buffer.isBuffer(n3);
|
||
}
|
||
function b(n3, t2) {
|
||
return { status: true, index: n3, value: t2, furthest: -1, expected: [] };
|
||
}
|
||
function x(n3, t2) {
|
||
return E(t2) || (t2 = [t2]), { status: false, index: -1, value: null, furthest: n3, expected: t2 };
|
||
}
|
||
function B(n3, t2) {
|
||
if (!t2)
|
||
return n3;
|
||
if (n3.furthest > t2.furthest)
|
||
return n3;
|
||
var r2 = n3.furthest === t2.furthest ? function(n4, t3) {
|
||
if (function() {
|
||
if (void 0 !== e._supportsSet)
|
||
return e._supportsSet;
|
||
var n5 = "undefined" != typeof Set;
|
||
return e._supportsSet = n5, n5;
|
||
}() && Array.from) {
|
||
for (var r3 = new Set(n4), u2 = 0; u2 < t3.length; u2++)
|
||
r3.add(t3[u2]);
|
||
var o2 = Array.from(r3);
|
||
return o2.sort(), o2;
|
||
}
|
||
for (var i2 = {}, a2 = 0; a2 < n4.length; a2++)
|
||
i2[n4[a2]] = true;
|
||
for (var f2 = 0; f2 < t3.length; f2++)
|
||
i2[t3[f2]] = true;
|
||
var c2 = [];
|
||
for (var s3 in i2)
|
||
({}).hasOwnProperty.call(i2, s3) && c2.push(s3);
|
||
return c2.sort(), c2;
|
||
}(n3.expected, t2.expected) : t2.expected;
|
||
return { status: n3.status, index: n3.index, value: n3.value, furthest: t2.furthest, expected: r2 };
|
||
}
|
||
var j = {};
|
||
function S(n3, t2) {
|
||
if (w(n3))
|
||
return { offset: t2, line: -1, column: -1 };
|
||
n3 in j || (j[n3] = {});
|
||
for (var r2 = j[n3], e2 = 0, u2 = 0, o2 = 0, i2 = t2; i2 >= 0; ) {
|
||
if (i2 in r2) {
|
||
e2 = r2[i2].line, 0 === o2 && (o2 = r2[i2].lineStart);
|
||
break;
|
||
}
|
||
("\n" === n3.charAt(i2) || "\r" === n3.charAt(i2) && "\n" !== n3.charAt(i2 + 1)) && (u2++, 0 === o2 && (o2 = i2 + 1)), i2--;
|
||
}
|
||
var a2 = e2 + u2, f2 = t2 - o2;
|
||
return r2[t2] = { line: a2, lineStart: o2 }, { offset: t2, line: a2 + 1, column: f2 + 1 };
|
||
}
|
||
function _(n3) {
|
||
if (!y(n3))
|
||
throw new Error("not a parser: " + n3);
|
||
}
|
||
function L(n3, t2) {
|
||
return "string" == typeof n3 ? n3.charAt(t2) : n3[t2];
|
||
}
|
||
function O(n3) {
|
||
if ("number" != typeof n3)
|
||
throw new Error("not a number: " + n3);
|
||
}
|
||
function k(n3) {
|
||
if ("function" != typeof n3)
|
||
throw new Error("not a function: " + n3);
|
||
}
|
||
function P(n3) {
|
||
if ("string" != typeof n3)
|
||
throw new Error("not a string: " + n3);
|
||
}
|
||
var q = 2, A = 3, I = 8, F = 5 * I, M = 4 * I, z = " ";
|
||
function R(n3, t2) {
|
||
return new Array(t2 + 1).join(n3);
|
||
}
|
||
function U(n3, t2, r2) {
|
||
var e2 = t2 - n3.length;
|
||
return e2 <= 0 ? n3 : R(r2, e2) + n3;
|
||
}
|
||
function W(n3, t2, r2, e2) {
|
||
return { from: n3 - t2 > 0 ? n3 - t2 : 0, to: n3 + r2 > e2 ? e2 : n3 + r2 };
|
||
}
|
||
function D(n3, t2) {
|
||
var r2, e2, u2, o2, f2, c2 = t2.index, s3 = c2.offset, l3 = 1;
|
||
if (s3 === n3.length)
|
||
return "Got the end of the input";
|
||
if (w(n3)) {
|
||
var h2 = s3 - s3 % I, p2 = s3 - h2, d2 = W(h2, F, M + I, n3.length), v2 = a(function(n4) {
|
||
return a(function(n5) {
|
||
return U(n5.toString(16), 2, "0");
|
||
}, n4);
|
||
}, function(n4, t3) {
|
||
var r3 = n4.length, e3 = [], u3 = 0;
|
||
if (r3 <= t3)
|
||
return [n4.slice()];
|
||
for (var o3 = 0; o3 < r3; o3++)
|
||
e3[u3] || e3.push([]), e3[u3].push(n4[o3]), (o3 + 1) % t3 == 0 && u3++;
|
||
return e3;
|
||
}(n3.slice(d2.from, d2.to).toJSON().data, I));
|
||
o2 = function(n4) {
|
||
return 0 === n4.from && 1 === n4.to ? { from: n4.from, to: n4.to } : { from: n4.from / I, to: Math.floor(n4.to / I) };
|
||
}(d2), e2 = h2 / I, r2 = 3 * p2, p2 >= 4 && (r2 += 1), l3 = 2, u2 = a(function(n4) {
|
||
return n4.length <= 4 ? n4.join(" ") : n4.slice(0, 4).join(" ") + " " + n4.slice(4).join(" ");
|
||
}, v2), (f2 = (8 * (o2.to > 0 ? o2.to - 1 : o2.to)).toString(16).length) < 2 && (f2 = 2);
|
||
} else {
|
||
var g2 = n3.split(/\r\n|[\n\r\u2028\u2029]/);
|
||
r2 = c2.column - 1, e2 = c2.line - 1, o2 = W(e2, q, A, g2.length), u2 = g2.slice(o2.from, o2.to), f2 = o2.to.toString().length;
|
||
}
|
||
var m2 = e2 - o2.from;
|
||
return w(n3) && (f2 = (8 * (o2.to > 0 ? o2.to - 1 : o2.to)).toString(16).length) < 2 && (f2 = 2), i(function(t3, e3, u3) {
|
||
var i2, a2 = u3 === m2, c3 = a2 ? "> " : z;
|
||
return i2 = w(n3) ? U((8 * (o2.from + u3)).toString(16), f2, "0") : U((o2.from + u3 + 1).toString(), f2, " "), [].concat(t3, [c3 + i2 + " | " + e3], a2 ? [z + R(" ", f2) + " | " + U("", r2, " ") + R("^", l3)] : []);
|
||
}, [], u2).join("\n");
|
||
}
|
||
function N(n3, t2) {
|
||
return ["\n", "-- PARSING FAILED " + R("-", 50), "\n\n", D(n3, t2), "\n\n", (r2 = t2.expected, 1 === r2.length ? "Expected:\n\n" + r2[0] : "Expected one of the following: \n\n" + r2.join(", ")), "\n"].join("");
|
||
var r2;
|
||
}
|
||
function G(n3) {
|
||
return void 0 !== n3.flags ? n3.flags : [n3.global ? "g" : "", n3.ignoreCase ? "i" : "", n3.multiline ? "m" : "", n3.unicode ? "u" : "", n3.sticky ? "y" : ""].join("");
|
||
}
|
||
function C() {
|
||
for (var n3 = [].slice.call(arguments), t2 = n3.length, r2 = 0; r2 < t2; r2 += 1)
|
||
_(n3[r2]);
|
||
return e(function(r3, e2) {
|
||
for (var u2, o2 = new Array(t2), i2 = 0; i2 < t2; i2 += 1) {
|
||
if (!(u2 = B(n3[i2]._(r3, e2), u2)).status)
|
||
return u2;
|
||
o2[i2] = u2.value, e2 = u2.index;
|
||
}
|
||
return B(b(e2, o2), u2);
|
||
});
|
||
}
|
||
function J() {
|
||
var n3 = [].slice.call(arguments);
|
||
if (0 === n3.length)
|
||
throw new Error("seqMap needs at least one argument");
|
||
var t2 = n3.pop();
|
||
return k(t2), C.apply(null, n3).map(function(n4) {
|
||
return t2.apply(null, n4);
|
||
});
|
||
}
|
||
function T() {
|
||
var n3 = [].slice.call(arguments), t2 = n3.length;
|
||
if (0 === t2)
|
||
return Y("zero alternates");
|
||
for (var r2 = 0; r2 < t2; r2 += 1)
|
||
_(n3[r2]);
|
||
return e(function(t3, r3) {
|
||
for (var e2, u2 = 0; u2 < n3.length; u2 += 1)
|
||
if ((e2 = B(n3[u2]._(t3, r3), e2)).status)
|
||
return e2;
|
||
return e2;
|
||
});
|
||
}
|
||
function V(n3, t2) {
|
||
return H(n3, t2).or(X([]));
|
||
}
|
||
function H(n3, t2) {
|
||
return _(n3), _(t2), J(n3, t2.then(n3).many(), function(n4, t3) {
|
||
return [n4].concat(t3);
|
||
});
|
||
}
|
||
function K(n3) {
|
||
P(n3);
|
||
var t2 = "'" + n3 + "'";
|
||
return e(function(r2, e2) {
|
||
var u2 = e2 + n3.length, o2 = r2.slice(e2, u2);
|
||
return o2 === n3 ? b(u2, o2) : x(e2, t2);
|
||
});
|
||
}
|
||
function Q(n3, t2) {
|
||
!function(n4) {
|
||
if (!(n4 instanceof RegExp))
|
||
throw new Error("not a regexp: " + n4);
|
||
for (var t3 = G(n4), r3 = 0; r3 < t3.length; r3++) {
|
||
var e2 = t3.charAt(r3);
|
||
if ("i" !== e2 && "m" !== e2 && "u" !== e2 && "s" !== e2)
|
||
throw new Error('unsupported regexp flag "' + e2 + '": ' + n4);
|
||
}
|
||
}(n3), arguments.length >= 2 ? O(t2) : t2 = 0;
|
||
var r2 = function(n4) {
|
||
return RegExp("^(?:" + n4.source + ")", G(n4));
|
||
}(n3), u2 = "" + n3;
|
||
return e(function(n4, e2) {
|
||
var o2 = r2.exec(n4.slice(e2));
|
||
if (o2) {
|
||
if (0 <= t2 && t2 <= o2.length) {
|
||
var i2 = o2[0], a2 = o2[t2];
|
||
return b(e2 + i2.length, a2);
|
||
}
|
||
return x(e2, "valid match group (0 to " + o2.length + ") in " + u2);
|
||
}
|
||
return x(e2, u2);
|
||
});
|
||
}
|
||
function X(n3) {
|
||
return e(function(t2, r2) {
|
||
return b(r2, n3);
|
||
});
|
||
}
|
||
function Y(n3) {
|
||
return e(function(t2, r2) {
|
||
return x(r2, n3);
|
||
});
|
||
}
|
||
function Z(n3) {
|
||
if (y(n3))
|
||
return e(function(t2, r2) {
|
||
var e2 = n3._(t2, r2);
|
||
return e2.index = r2, e2.value = "", e2;
|
||
});
|
||
if ("string" == typeof n3)
|
||
return Z(K(n3));
|
||
if (n3 instanceof RegExp)
|
||
return Z(Q(n3));
|
||
throw new Error("not a string, regexp, or parser: " + n3);
|
||
}
|
||
function $(n3) {
|
||
return _(n3), e(function(t2, r2) {
|
||
var e2 = n3._(t2, r2), u2 = t2.slice(r2, e2.index);
|
||
return e2.status ? x(r2, 'not "' + u2 + '"') : b(r2, null);
|
||
});
|
||
}
|
||
function nn(n3) {
|
||
return k(n3), e(function(t2, r2) {
|
||
var e2 = L(t2, r2);
|
||
return r2 < t2.length && n3(e2) ? b(r2 + 1, e2) : x(r2, "a character/byte matching " + n3);
|
||
});
|
||
}
|
||
function tn(n3, t2) {
|
||
arguments.length < 2 && (t2 = n3, n3 = void 0);
|
||
var r2 = e(function(n4, e2) {
|
||
return r2._ = t2()._, r2._(n4, e2);
|
||
});
|
||
return n3 ? r2.desc(n3) : r2;
|
||
}
|
||
function rn() {
|
||
return Y("fantasy-land/empty");
|
||
}
|
||
u.parse = function(n3) {
|
||
if ("string" != typeof n3 && !w(n3))
|
||
throw new Error(".parse must be called with a string or Buffer as its argument");
|
||
var t2, r2 = this.skip(an)._(n3, 0);
|
||
return t2 = r2.status ? { status: true, value: r2.value } : { status: false, index: S(n3, r2.furthest), expected: r2.expected }, delete j[n3], t2;
|
||
}, u.tryParse = function(n3) {
|
||
var t2 = this.parse(n3);
|
||
if (t2.status)
|
||
return t2.value;
|
||
var r2 = N(n3, t2), e2 = new Error(r2);
|
||
throw e2.type = "ParsimmonError", e2.result = t2, e2;
|
||
}, u.assert = function(n3, t2) {
|
||
return this.chain(function(r2) {
|
||
return n3(r2) ? X(r2) : Y(t2);
|
||
});
|
||
}, u.or = function(n3) {
|
||
return T(this, n3);
|
||
}, u.trim = function(n3) {
|
||
return this.wrap(n3, n3);
|
||
}, u.wrap = function(n3, t2) {
|
||
return J(n3, this, t2, function(n4, t3) {
|
||
return t3;
|
||
});
|
||
}, u.thru = function(n3) {
|
||
return n3(this);
|
||
}, u.then = function(n3) {
|
||
return _(n3), C(this, n3).map(function(n4) {
|
||
return n4[1];
|
||
});
|
||
}, u.many = function() {
|
||
var n3 = this;
|
||
return e(function(t2, r2) {
|
||
for (var e2 = [], u2 = void 0; ; ) {
|
||
if (!(u2 = B(n3._(t2, r2), u2)).status)
|
||
return B(b(r2, e2), u2);
|
||
if (r2 === u2.index)
|
||
throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");
|
||
r2 = u2.index, e2.push(u2.value);
|
||
}
|
||
});
|
||
}, u.tieWith = function(n3) {
|
||
return P(n3), this.map(function(t2) {
|
||
if (function(n4) {
|
||
if (!E(n4))
|
||
throw new Error("not an array: " + n4);
|
||
}(t2), t2.length) {
|
||
P(t2[0]);
|
||
for (var r2 = t2[0], e2 = 1; e2 < t2.length; e2++)
|
||
P(t2[e2]), r2 += n3 + t2[e2];
|
||
return r2;
|
||
}
|
||
return "";
|
||
});
|
||
}, u.tie = function() {
|
||
return this.tieWith("");
|
||
}, u.times = function(n3, t2) {
|
||
var r2 = this;
|
||
return arguments.length < 2 && (t2 = n3), O(n3), O(t2), e(function(e2, u2) {
|
||
for (var o2 = [], i2 = void 0, a2 = void 0, f2 = 0; f2 < n3; f2 += 1) {
|
||
if (a2 = B(i2 = r2._(e2, u2), a2), !i2.status)
|
||
return a2;
|
||
u2 = i2.index, o2.push(i2.value);
|
||
}
|
||
for (; f2 < t2 && (a2 = B(i2 = r2._(e2, u2), a2), i2.status); f2 += 1)
|
||
u2 = i2.index, o2.push(i2.value);
|
||
return B(b(u2, o2), a2);
|
||
});
|
||
}, u.result = function(n3) {
|
||
return this.map(function() {
|
||
return n3;
|
||
});
|
||
}, u.atMost = function(n3) {
|
||
return this.times(0, n3);
|
||
}, u.atLeast = function(n3) {
|
||
return J(this.times(n3), this.many(), function(n4, t2) {
|
||
return n4.concat(t2);
|
||
});
|
||
}, u.map = function(n3) {
|
||
k(n3);
|
||
var t2 = this;
|
||
return e(function(r2, e2) {
|
||
var u2 = t2._(r2, e2);
|
||
return u2.status ? B(b(u2.index, n3(u2.value)), u2) : u2;
|
||
});
|
||
}, u.contramap = function(n3) {
|
||
k(n3);
|
||
var t2 = this;
|
||
return e(function(r2, e2) {
|
||
var u2 = t2.parse(n3(r2.slice(e2)));
|
||
return u2.status ? b(e2 + r2.length, u2.value) : u2;
|
||
});
|
||
}, u.promap = function(n3, t2) {
|
||
return k(n3), k(t2), this.contramap(n3).map(t2);
|
||
}, u.skip = function(n3) {
|
||
return C(this, n3).map(function(n4) {
|
||
return n4[0];
|
||
});
|
||
}, u.mark = function() {
|
||
return J(en, this, en, function(n3, t2, r2) {
|
||
return { start: n3, value: t2, end: r2 };
|
||
});
|
||
}, u.node = function(n3) {
|
||
return J(en, this, en, function(t2, r2, e2) {
|
||
return { name: n3, value: r2, start: t2, end: e2 };
|
||
});
|
||
}, u.sepBy = function(n3) {
|
||
return V(this, n3);
|
||
}, u.sepBy1 = function(n3) {
|
||
return H(this, n3);
|
||
}, u.lookahead = function(n3) {
|
||
return this.skip(Z(n3));
|
||
}, u.notFollowedBy = function(n3) {
|
||
return this.skip($(n3));
|
||
}, u.desc = function(n3) {
|
||
E(n3) || (n3 = [n3]);
|
||
var t2 = this;
|
||
return e(function(r2, e2) {
|
||
var u2 = t2._(r2, e2);
|
||
return u2.status || (u2.expected = n3), u2;
|
||
});
|
||
}, u.fallback = function(n3) {
|
||
return this.or(X(n3));
|
||
}, u.ap = function(n3) {
|
||
return J(n3, this, function(n4, t2) {
|
||
return n4(t2);
|
||
});
|
||
}, u.chain = function(n3) {
|
||
var t2 = this;
|
||
return e(function(r2, e2) {
|
||
var u2 = t2._(r2, e2);
|
||
return u2.status ? B(n3(u2.value)._(r2, u2.index), u2) : u2;
|
||
});
|
||
}, u.concat = u.or, u.empty = rn, u.of = X, u["fantasy-land/ap"] = u.ap, u["fantasy-land/chain"] = u.chain, u["fantasy-land/concat"] = u.concat, u["fantasy-land/empty"] = u.empty, u["fantasy-land/of"] = u.of, u["fantasy-land/map"] = u.map;
|
||
var en = e(function(n3, t2) {
|
||
return b(t2, S(n3, t2));
|
||
}), un = e(function(n3, t2) {
|
||
return t2 >= n3.length ? x(t2, "any character/byte") : b(t2 + 1, L(n3, t2));
|
||
}), on = e(function(n3, t2) {
|
||
return b(n3.length, n3.slice(t2));
|
||
}), an = e(function(n3, t2) {
|
||
return t2 < n3.length ? x(t2, "EOF") : b(t2, null);
|
||
}), fn = Q(/[0-9]/).desc("a digit"), cn = Q(/[0-9]*/).desc("optional digits"), sn = Q(/[a-z]/i).desc("a letter"), ln = Q(/[a-z]*/i).desc("optional letters"), hn = Q(/\s*/).desc("optional whitespace"), pn = Q(/\s+/).desc("whitespace"), dn = K("\r"), vn = K("\n"), gn = K("\r\n"), mn = T(gn, vn, dn).desc("newline"), yn = T(mn, an);
|
||
e.all = on, e.alt = T, e.any = un, e.cr = dn, e.createLanguage = function(n3) {
|
||
var t2 = {};
|
||
for (var r2 in n3)
|
||
({}).hasOwnProperty.call(n3, r2) && function(r3) {
|
||
t2[r3] = tn(function() {
|
||
return n3[r3](t2);
|
||
});
|
||
}(r2);
|
||
return t2;
|
||
}, e.crlf = gn, e.custom = function(n3) {
|
||
return e(n3(b, x));
|
||
}, e.digit = fn, e.digits = cn, e.empty = rn, e.end = yn, e.eof = an, e.fail = Y, e.formatError = N, e.index = en, e.isParser = y, e.lazy = tn, e.letter = sn, e.letters = ln, e.lf = vn, e.lookahead = Z, e.makeFailure = x, e.makeSuccess = b, e.newline = mn, e.noneOf = function(n3) {
|
||
return nn(function(t2) {
|
||
return n3.indexOf(t2) < 0;
|
||
}).desc("none of '" + n3 + "'");
|
||
}, e.notFollowedBy = $, e.of = X, e.oneOf = function(n3) {
|
||
for (var t2 = n3.split(""), r2 = 0; r2 < t2.length; r2++)
|
||
t2[r2] = "'" + t2[r2] + "'";
|
||
return nn(function(t3) {
|
||
return n3.indexOf(t3) >= 0;
|
||
}).desc(t2);
|
||
}, e.optWhitespace = hn, e.Parser = e, e.range = function(n3, t2) {
|
||
return nn(function(r2) {
|
||
return n3 <= r2 && r2 <= t2;
|
||
}).desc(n3 + "-" + t2);
|
||
}, e.regex = Q, e.regexp = Q, e.sepBy = V, e.sepBy1 = H, e.seq = C, e.seqMap = J, e.seqObj = function() {
|
||
for (var n3, t2 = {}, r2 = 0, u2 = (n3 = arguments, Array.prototype.slice.call(n3)), o2 = u2.length, i2 = 0; i2 < o2; i2 += 1) {
|
||
var a2 = u2[i2];
|
||
if (!y(a2)) {
|
||
if (E(a2) && 2 === a2.length && "string" == typeof a2[0] && y(a2[1])) {
|
||
var f2 = a2[0];
|
||
if (Object.prototype.hasOwnProperty.call(t2, f2))
|
||
throw new Error("seqObj: duplicate key " + f2);
|
||
t2[f2] = true, r2++;
|
||
continue;
|
||
}
|
||
throw new Error("seqObj arguments must be parsers or [string, parser] array pairs.");
|
||
}
|
||
}
|
||
if (0 === r2)
|
||
throw new Error("seqObj expects at least one named parser, found zero");
|
||
return e(function(n4, t3) {
|
||
for (var r3, e2 = {}, i3 = 0; i3 < o2; i3 += 1) {
|
||
var a3, f3;
|
||
if (E(u2[i3]) ? (a3 = u2[i3][0], f3 = u2[i3][1]) : (a3 = null, f3 = u2[i3]), !(r3 = B(f3._(n4, t3), r3)).status)
|
||
return r3;
|
||
a3 && (e2[a3] = r3.value), t3 = r3.index;
|
||
}
|
||
return B(b(t3, e2), r3);
|
||
});
|
||
}, e.string = K, e.succeed = X, e.takeWhile = function(n3) {
|
||
return k(n3), e(function(t2, r2) {
|
||
for (var e2 = r2; e2 < t2.length && n3(L(t2, e2)); )
|
||
e2++;
|
||
return b(e2, t2.slice(r2, e2));
|
||
});
|
||
}, e.test = nn, e.whitespace = pn, e["fantasy-land/empty"] = rn, e["fantasy-land/of"] = X, e.Binary = { bitSeq: l2, bitSeqObj: function(n3) {
|
||
s2();
|
||
var t2 = {}, r2 = 0, e2 = a(function(n4) {
|
||
if (E(n4)) {
|
||
var e3 = n4;
|
||
if (2 !== e3.length)
|
||
throw new Error("[" + e3.join(", ") + "] should be length 2, got length " + e3.length);
|
||
if (P(e3[0]), O(e3[1]), Object.prototype.hasOwnProperty.call(t2, e3[0]))
|
||
throw new Error("duplicate key in bitSeqObj: " + e3[0]);
|
||
return t2[e3[0]] = true, r2++, e3;
|
||
}
|
||
return O(n4), [null, n4];
|
||
}, n3);
|
||
if (r2 < 1)
|
||
throw new Error("bitSeqObj expects at least one named pair, got [" + n3.join(", ") + "]");
|
||
var u2 = a(function(n4) {
|
||
return n4[0];
|
||
}, e2);
|
||
return l2(a(function(n4) {
|
||
return n4[1];
|
||
}, e2)).map(function(n4) {
|
||
return i(function(n5, t3) {
|
||
return null !== t3[0] && (n5[t3[0]] = t3[1]), n5;
|
||
}, {}, a(function(t3, r3) {
|
||
return [t3, n4[r3]];
|
||
}, u2));
|
||
});
|
||
}, byte: function(n3) {
|
||
if (s2(), O(n3), n3 > 255)
|
||
throw new Error("Value specified to byte constructor (" + n3 + "=0x" + n3.toString(16) + ") is larger in value than a single byte.");
|
||
var t2 = (n3 > 15 ? "0x" : "0x0") + n3.toString(16);
|
||
return e(function(r2, e2) {
|
||
var u2 = L(r2, e2);
|
||
return u2 === n3 ? b(e2 + 1, u2) : x(e2, t2);
|
||
});
|
||
}, buffer: function(n3) {
|
||
return h("buffer", n3).map(function(n4) {
|
||
return Buffer.from(n4);
|
||
});
|
||
}, encodedString: function(n3, t2) {
|
||
return h("string", t2).map(function(t3) {
|
||
return t3.toString(n3);
|
||
});
|
||
}, uintBE: d, uint8BE: d(1), uint16BE: d(2), uint32BE: d(4), uintLE: v, uint8LE: v(1), uint16LE: v(2), uint32LE: v(4), intBE: g, int8BE: g(1), int16BE: g(2), int32BE: g(4), intLE: m, int8LE: m(1), int16LE: m(2), int32LE: m(4), floatBE: h("floatBE", 4).map(function(n3) {
|
||
return n3.readFloatBE(0);
|
||
}), floatLE: h("floatLE", 4).map(function(n3) {
|
||
return n3.readFloatLE(0);
|
||
}), doubleBE: h("doubleBE", 8).map(function(n3) {
|
||
return n3.readDoubleBE(0);
|
||
}), doubleLE: h("doubleLE", 8).map(function(n3) {
|
||
return n3.readDoubleLE(0);
|
||
}) }, n2.exports = e;
|
||
}]);
|
||
});
|
||
})(parsimmon_umd_min);
|
||
var emojiRegex = () => {
|
||
return /(?:[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDD-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF6](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7C\uDE80-\uDE86\uDE90-\uDEAC\uDEB0-\uDEBA\uDEC0-\uDEC2\uDED0-\uDED9\uDEE0-\uDEE7]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?))/g;
|
||
};
|
||
function normalizeDuration(dur) {
|
||
if (dur === void 0 || dur === null)
|
||
return dur;
|
||
return dur.shiftToAll().normalize();
|
||
}
|
||
function getFileTitle(path) {
|
||
if (path.includes("/"))
|
||
path = path.substring(path.lastIndexOf("/") + 1);
|
||
if (path.endsWith(".md"))
|
||
path = path.substring(0, path.length - 3);
|
||
return path;
|
||
}
|
||
parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_min.exports.regex(/[0-9\p{Letter}_-]+/u).map((str) => str.toLocaleLowerCase()), parsimmon_umd_min.exports.whitespace.map((_) => "-"), parsimmon_umd_min.exports.any.map((_) => "")).many().map((result) => result.join(""));
|
||
var HEADER_CANONICALIZER = parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_min.exports.regex(/[0-9\p{Letter}_-]+/u), parsimmon_umd_min.exports.whitespace.map((_) => " "), parsimmon_umd_min.exports.any.map((_) => " ")).many().map((result) => {
|
||
return result.join("").split(/\s+/).join(" ").trim();
|
||
});
|
||
function normalizeHeaderForLink(header) {
|
||
return HEADER_CANONICALIZER.tryParse(header);
|
||
}
|
||
function renderMinimalDuration(dur) {
|
||
dur = normalizeDuration(dur);
|
||
dur = Duration.fromObject(Object.fromEntries(Object.entries(dur.toObject()).filter(([, quantity]) => quantity > 0)));
|
||
return dur.toHuman();
|
||
}
|
||
var Values;
|
||
(function(Values2) {
|
||
function toString(field, setting = DEFAULT_QUERY_SETTINGS, recursive = false) {
|
||
let wrapped = wrapValue(field);
|
||
if (!wrapped)
|
||
return setting.renderNullAs;
|
||
switch (wrapped.type) {
|
||
case "null":
|
||
return setting.renderNullAs;
|
||
case "string":
|
||
return wrapped.value;
|
||
case "number":
|
||
case "boolean":
|
||
return "" + wrapped.value;
|
||
case "html":
|
||
return wrapped.value.outerHTML;
|
||
case "widget":
|
||
return wrapped.value.markdown();
|
||
case "link":
|
||
return wrapped.value.markdown();
|
||
case "function":
|
||
return "<function>";
|
||
case "array":
|
||
let result = "";
|
||
if (recursive)
|
||
result += "[";
|
||
result += wrapped.value.map((f) => toString(f, setting, true)).join(", ");
|
||
if (recursive)
|
||
result += "]";
|
||
return result;
|
||
case "object":
|
||
return "{ " + Object.entries(wrapped.value).map((e) => e[0] + ": " + toString(e[1], setting, true)).join(", ") + " }";
|
||
case "date":
|
||
if (wrapped.value.second == 0 && wrapped.value.hour == 0 && wrapped.value.minute == 0) {
|
||
return wrapped.value.toFormat(setting.defaultDateFormat);
|
||
}
|
||
return wrapped.value.toFormat(setting.defaultDateTimeFormat);
|
||
case "duration":
|
||
return renderMinimalDuration(wrapped.value);
|
||
}
|
||
}
|
||
Values2.toString = toString;
|
||
function wrapValue(val) {
|
||
if (isNull(val))
|
||
return { type: "null", value: val };
|
||
else if (isNumber2(val))
|
||
return { type: "number", value: val };
|
||
else if (isString2(val))
|
||
return { type: "string", value: val };
|
||
else if (isBoolean(val))
|
||
return { type: "boolean", value: val };
|
||
else if (isDuration(val))
|
||
return { type: "duration", value: val };
|
||
else if (isDate2(val))
|
||
return { type: "date", value: val };
|
||
else if (isWidget(val))
|
||
return { type: "widget", value: val };
|
||
else if (isArray(val))
|
||
return { type: "array", value: val };
|
||
else if (isLink(val))
|
||
return { type: "link", value: val };
|
||
else if (isFunction(val))
|
||
return { type: "function", value: val };
|
||
else if (isHtml(val))
|
||
return { type: "html", value: val };
|
||
else if (isObject(val))
|
||
return { type: "object", value: val };
|
||
else
|
||
return void 0;
|
||
}
|
||
Values2.wrapValue = wrapValue;
|
||
function mapLeaves(val, func) {
|
||
if (isObject(val)) {
|
||
let result = {};
|
||
for (let [key, value] of Object.entries(val))
|
||
result[key] = mapLeaves(value, func);
|
||
return result;
|
||
} else if (isArray(val)) {
|
||
let result = [];
|
||
for (let value of val)
|
||
result.push(mapLeaves(value, func));
|
||
return result;
|
||
} else {
|
||
return func(val);
|
||
}
|
||
}
|
||
Values2.mapLeaves = mapLeaves;
|
||
function compareValue(val1, val2, linkNormalizer) {
|
||
var _a, _b;
|
||
if (val1 === void 0)
|
||
val1 = null;
|
||
if (val2 === void 0)
|
||
val2 = null;
|
||
if (val1 === null && val2 === null)
|
||
return 0;
|
||
else if (val1 === null)
|
||
return -1;
|
||
else if (val2 === null)
|
||
return 1;
|
||
let wrap1 = wrapValue(val1);
|
||
let wrap2 = wrapValue(val2);
|
||
if (wrap1 === void 0 && wrap2 === void 0)
|
||
return 0;
|
||
else if (wrap1 === void 0)
|
||
return -1;
|
||
else if (wrap2 === void 0)
|
||
return 1;
|
||
if (wrap1.type != wrap2.type)
|
||
return wrap1.type.localeCompare(wrap2.type);
|
||
if (wrap1.value === wrap2.value)
|
||
return 0;
|
||
switch (wrap1.type) {
|
||
case "string":
|
||
return wrap1.value.localeCompare(wrap2.value);
|
||
case "number":
|
||
if (wrap1.value < wrap2.value)
|
||
return -1;
|
||
else if (wrap1.value == wrap2.value)
|
||
return 0;
|
||
return 1;
|
||
case "null":
|
||
return 0;
|
||
case "boolean":
|
||
if (wrap1.value == wrap2.value)
|
||
return 0;
|
||
else
|
||
return wrap1.value ? 1 : -1;
|
||
case "link":
|
||
let link1 = wrap1.value;
|
||
let link2 = wrap2.value;
|
||
let normalize = linkNormalizer !== null && linkNormalizer !== void 0 ? linkNormalizer : (x) => x;
|
||
let pathCompare = normalize(link1.path).localeCompare(normalize(link2.path));
|
||
if (pathCompare != 0)
|
||
return pathCompare;
|
||
let typeCompare = link1.type.localeCompare(link2.type);
|
||
if (typeCompare != 0)
|
||
return typeCompare;
|
||
if (link1.subpath && !link2.subpath)
|
||
return 1;
|
||
if (!link1.subpath && link2.subpath)
|
||
return -1;
|
||
if (!link1.subpath && !link2.subpath)
|
||
return 0;
|
||
return ((_a = link1.subpath) !== null && _a !== void 0 ? _a : "").localeCompare((_b = link2.subpath) !== null && _b !== void 0 ? _b : "");
|
||
case "date":
|
||
return wrap1.value < wrap2.value ? -1 : wrap1.value.equals(wrap2.value) ? 0 : 1;
|
||
case "duration":
|
||
return wrap1.value < wrap2.value ? -1 : wrap1.value.equals(wrap2.value) ? 0 : 1;
|
||
case "array":
|
||
let f1 = wrap1.value;
|
||
let f2 = wrap2.value;
|
||
for (let index = 0; index < Math.min(f1.length, f2.length); index++) {
|
||
let comp = compareValue(f1[index], f2[index]);
|
||
if (comp != 0)
|
||
return comp;
|
||
}
|
||
return f1.length - f2.length;
|
||
case "object":
|
||
let o1 = wrap1.value;
|
||
let o2 = wrap2.value;
|
||
let k1 = Array.from(Object.keys(o1));
|
||
let k2 = Array.from(Object.keys(o2));
|
||
k1.sort();
|
||
k2.sort();
|
||
let keyCompare = compareValue(k1, k2);
|
||
if (keyCompare != 0)
|
||
return keyCompare;
|
||
for (let key of k1) {
|
||
let comp = compareValue(o1[key], o2[key]);
|
||
if (comp != 0)
|
||
return comp;
|
||
}
|
||
return 0;
|
||
case "widget":
|
||
case "html":
|
||
case "function":
|
||
return 0;
|
||
}
|
||
}
|
||
Values2.compareValue = compareValue;
|
||
function typeOf(val) {
|
||
var _a;
|
||
return (_a = wrapValue(val)) === null || _a === void 0 ? void 0 : _a.type;
|
||
}
|
||
Values2.typeOf = typeOf;
|
||
function isTruthy(field) {
|
||
let wrapped = wrapValue(field);
|
||
if (!wrapped)
|
||
return false;
|
||
switch (wrapped.type) {
|
||
case "number":
|
||
return wrapped.value != 0;
|
||
case "string":
|
||
return wrapped.value.length > 0;
|
||
case "boolean":
|
||
return wrapped.value;
|
||
case "link":
|
||
return !!wrapped.value.path;
|
||
case "date":
|
||
return wrapped.value.toMillis() != 0;
|
||
case "duration":
|
||
return wrapped.value.as("seconds") != 0;
|
||
case "object":
|
||
return Object.keys(wrapped.value).length > 0;
|
||
case "array":
|
||
return wrapped.value.length > 0;
|
||
case "null":
|
||
return false;
|
||
case "html":
|
||
case "widget":
|
||
case "function":
|
||
return true;
|
||
}
|
||
}
|
||
Values2.isTruthy = isTruthy;
|
||
function deepCopy(field) {
|
||
if (field === null || field === void 0)
|
||
return field;
|
||
if (Values2.isArray(field)) {
|
||
return [].concat(field.map((v) => deepCopy(v)));
|
||
} else if (Values2.isObject(field)) {
|
||
let result = {};
|
||
for (let [key, value] of Object.entries(field))
|
||
result[key] = deepCopy(value);
|
||
return result;
|
||
} else {
|
||
return field;
|
||
}
|
||
}
|
||
Values2.deepCopy = deepCopy;
|
||
function isString2(val) {
|
||
return typeof val == "string";
|
||
}
|
||
Values2.isString = isString2;
|
||
function isNumber2(val) {
|
||
return typeof val == "number";
|
||
}
|
||
Values2.isNumber = isNumber2;
|
||
function isDate2(val) {
|
||
return val instanceof DateTime;
|
||
}
|
||
Values2.isDate = isDate2;
|
||
function isDuration(val) {
|
||
return val instanceof Duration;
|
||
}
|
||
Values2.isDuration = isDuration;
|
||
function isNull(val) {
|
||
return val === null || val === void 0;
|
||
}
|
||
Values2.isNull = isNull;
|
||
function isArray(val) {
|
||
return Array.isArray(val);
|
||
}
|
||
Values2.isArray = isArray;
|
||
function isBoolean(val) {
|
||
return typeof val === "boolean";
|
||
}
|
||
Values2.isBoolean = isBoolean;
|
||
function isLink(val) {
|
||
return val instanceof Link;
|
||
}
|
||
Values2.isLink = isLink;
|
||
function isWidget(val) {
|
||
return val instanceof Widget;
|
||
}
|
||
Values2.isWidget = isWidget;
|
||
function isHtml(val) {
|
||
if (typeof HTMLElement !== "undefined") {
|
||
return val instanceof HTMLElement;
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
Values2.isHtml = isHtml;
|
||
function isObject(val) {
|
||
return typeof val == "object" && !isHtml(val) && !isWidget(val) && !isArray(val) && !isDuration(val) && !isDate2(val) && !isLink(val) && val !== void 0 && !isNull(val);
|
||
}
|
||
Values2.isObject = isObject;
|
||
function isFunction(val) {
|
||
return typeof val == "function";
|
||
}
|
||
Values2.isFunction = isFunction;
|
||
})(Values || (Values = {}));
|
||
var Groupings;
|
||
(function(Groupings2) {
|
||
function isElementGroup(entry) {
|
||
return Values.isObject(entry) && Object.keys(entry).length == 2 && "key" in entry && "rows" in entry;
|
||
}
|
||
Groupings2.isElementGroup = isElementGroup;
|
||
function isGrouping(entry) {
|
||
for (let element2 of entry)
|
||
if (!isElementGroup(element2))
|
||
return false;
|
||
return true;
|
||
}
|
||
Groupings2.isGrouping = isGrouping;
|
||
function count(elements) {
|
||
if (isGrouping(elements)) {
|
||
let result = 0;
|
||
for (let subgroup of elements)
|
||
result += count(subgroup.rows);
|
||
return result;
|
||
} else {
|
||
return elements.length;
|
||
}
|
||
}
|
||
Groupings2.count = count;
|
||
})(Groupings || (Groupings = {}));
|
||
var Link = class {
|
||
constructor(fields) {
|
||
Object.assign(this, fields);
|
||
}
|
||
/** Create a link to a specific file. */
|
||
static file(path, embed = false, display) {
|
||
return new Link({
|
||
path,
|
||
embed,
|
||
display,
|
||
subpath: void 0,
|
||
type: "file"
|
||
});
|
||
}
|
||
static infer(linkpath, embed = false, display) {
|
||
if (linkpath.includes("#^")) {
|
||
let split = linkpath.split("#^");
|
||
return Link.block(split[0], split[1], embed, display);
|
||
} else if (linkpath.includes("#")) {
|
||
let split = linkpath.split("#");
|
||
return Link.header(split[0], split[1], embed, display);
|
||
} else
|
||
return Link.file(linkpath, embed, display);
|
||
}
|
||
/** Create a link to a specific file and header in that file. */
|
||
static header(path, header, embed, display) {
|
||
return new Link({
|
||
path,
|
||
embed,
|
||
display,
|
||
subpath: normalizeHeaderForLink(header),
|
||
type: "header"
|
||
});
|
||
}
|
||
/** Create a link to a specific file and block in that file. */
|
||
static block(path, blockId, embed, display) {
|
||
return new Link({
|
||
path,
|
||
embed,
|
||
display,
|
||
subpath: blockId,
|
||
type: "block"
|
||
});
|
||
}
|
||
static fromObject(object) {
|
||
return new Link(object);
|
||
}
|
||
/** Checks for link equality (i.e., that the links are pointing to the same exact location). */
|
||
equals(other) {
|
||
if (other == void 0 || other == null)
|
||
return false;
|
||
return this.path == other.path && this.type == other.type && this.subpath == other.subpath;
|
||
}
|
||
/** Convert this link to it's markdown representation. */
|
||
toString() {
|
||
return this.markdown();
|
||
}
|
||
/** Convert this link to a raw object which is serialization-friendly. */
|
||
toObject() {
|
||
return { path: this.path, type: this.type, subpath: this.subpath, display: this.display, embed: this.embed };
|
||
}
|
||
/** Update this link with a new path. */
|
||
//@ts-ignore; error appeared after updating Obsidian to 0.15.4; it also updated other packages but didn't say which
|
||
withPath(path) {
|
||
return new Link(Object.assign({}, this, { path }));
|
||
}
|
||
/** Return a new link which points to the same location but with a new display value. */
|
||
withDisplay(display) {
|
||
return new Link(Object.assign({}, this, { display }));
|
||
}
|
||
/** Convert a file link into a link to a specific header. */
|
||
withHeader(header) {
|
||
return Link.header(this.path, header, this.embed, this.display);
|
||
}
|
||
/** Convert any link into a link to its file. */
|
||
toFile() {
|
||
return Link.file(this.path, this.embed, this.display);
|
||
}
|
||
/** Convert this link into an embedded link. */
|
||
toEmbed() {
|
||
if (this.embed) {
|
||
return this;
|
||
} else {
|
||
let link = new Link(this);
|
||
link.embed = true;
|
||
return link;
|
||
}
|
||
}
|
||
/** Convert this link into a non-embedded link. */
|
||
fromEmbed() {
|
||
if (!this.embed) {
|
||
return this;
|
||
} else {
|
||
let link = new Link(this);
|
||
link.embed = false;
|
||
return link;
|
||
}
|
||
}
|
||
/** Convert this link to markdown so it can be rendered. */
|
||
markdown() {
|
||
let result = (this.embed ? "!" : "") + "[[" + this.obsidianLink();
|
||
if (this.display) {
|
||
result += "|" + this.display;
|
||
} else {
|
||
result += "|" + getFileTitle(this.path);
|
||
if (this.type == "header" || this.type == "block")
|
||
result += " > " + this.subpath;
|
||
}
|
||
result += "]]";
|
||
return result;
|
||
}
|
||
/** Convert the inner part of the link to something that Obsidian can open / understand. */
|
||
obsidianLink() {
|
||
var _a, _b;
|
||
const escaped = this.path.replace("|", "\\|");
|
||
if (this.type == "header")
|
||
return escaped + "#" + ((_a = this.subpath) === null || _a === void 0 ? void 0 : _a.replace("|", "\\|"));
|
||
if (this.type == "block")
|
||
return escaped + "#^" + ((_b = this.subpath) === null || _b === void 0 ? void 0 : _b.replace("|", "\\|"));
|
||
else
|
||
return escaped;
|
||
}
|
||
/** The stripped name of the file this link points to. */
|
||
fileName() {
|
||
return getFileTitle(this.path).replace(".md", "");
|
||
}
|
||
};
|
||
var Widget = class {
|
||
constructor($widget) {
|
||
this.$widget = $widget;
|
||
}
|
||
};
|
||
var ListPairWidget = class extends Widget {
|
||
constructor(key, value) {
|
||
super("dataview:list-pair");
|
||
this.key = key;
|
||
this.value = value;
|
||
}
|
||
markdown() {
|
||
return `${Values.toString(this.key)}: ${Values.toString(this.value)}`;
|
||
}
|
||
};
|
||
var ExternalLinkWidget = class extends Widget {
|
||
constructor(url, display) {
|
||
super("dataview:external-link");
|
||
this.url = url;
|
||
this.display = display;
|
||
}
|
||
markdown() {
|
||
var _a;
|
||
return `[${(_a = this.display) !== null && _a !== void 0 ? _a : this.url}](${this.url})`;
|
||
}
|
||
};
|
||
var Widgets;
|
||
(function(Widgets2) {
|
||
function listPair(key, value) {
|
||
return new ListPairWidget(key, value);
|
||
}
|
||
Widgets2.listPair = listPair;
|
||
function externalLink(url, display) {
|
||
return new ExternalLinkWidget(url, display);
|
||
}
|
||
Widgets2.externalLink = externalLink;
|
||
function isListPair(widget) {
|
||
return widget.$widget === "dataview:list-pair";
|
||
}
|
||
Widgets2.isListPair = isListPair;
|
||
function isExternalLink(widget) {
|
||
return widget.$widget === "dataview:external-link";
|
||
}
|
||
Widgets2.isExternalLink = isExternalLink;
|
||
function isBuiltin(widget) {
|
||
return isListPair(widget) || isExternalLink(widget);
|
||
}
|
||
Widgets2.isBuiltin = isBuiltin;
|
||
})(Widgets || (Widgets = {}));
|
||
var Fields;
|
||
(function(Fields2) {
|
||
function variable(name) {
|
||
return { type: "variable", name };
|
||
}
|
||
Fields2.variable = variable;
|
||
function literal(value) {
|
||
return { type: "literal", value };
|
||
}
|
||
Fields2.literal = literal;
|
||
function binaryOp(left, op, right) {
|
||
return { type: "binaryop", left, op, right };
|
||
}
|
||
Fields2.binaryOp = binaryOp;
|
||
function index(obj, index2) {
|
||
return { type: "index", object: obj, index: index2 };
|
||
}
|
||
Fields2.index = index;
|
||
function indexVariable(name) {
|
||
let parts = name.split(".");
|
||
let result = Fields2.variable(parts[0]);
|
||
for (let index2 = 1; index2 < parts.length; index2++) {
|
||
result = Fields2.index(result, Fields2.literal(parts[index2]));
|
||
}
|
||
return result;
|
||
}
|
||
Fields2.indexVariable = indexVariable;
|
||
function lambda(args, value) {
|
||
return { type: "lambda", arguments: args, value };
|
||
}
|
||
Fields2.lambda = lambda;
|
||
function func(func2, args) {
|
||
return { type: "function", func: func2, arguments: args };
|
||
}
|
||
Fields2.func = func;
|
||
function list(values) {
|
||
return { type: "list", values };
|
||
}
|
||
Fields2.list = list;
|
||
function object(values) {
|
||
return { type: "object", values };
|
||
}
|
||
Fields2.object = object;
|
||
function negate(child) {
|
||
return { type: "negated", child };
|
||
}
|
||
Fields2.negate = negate;
|
||
function isCompareOp(op) {
|
||
return op == "<=" || op == "<" || op == ">" || op == ">=" || op == "!=" || op == "=";
|
||
}
|
||
Fields2.isCompareOp = isCompareOp;
|
||
Fields2.NULL = Fields2.literal(null);
|
||
})(Fields || (Fields = {}));
|
||
var Sources;
|
||
(function(Sources2) {
|
||
function tag(tag2) {
|
||
return { type: "tag", tag: tag2 };
|
||
}
|
||
Sources2.tag = tag;
|
||
function csv(path) {
|
||
return { type: "csv", path };
|
||
}
|
||
Sources2.csv = csv;
|
||
function folder(prefix) {
|
||
return { type: "folder", folder: prefix };
|
||
}
|
||
Sources2.folder = folder;
|
||
function link(file, incoming) {
|
||
return { type: "link", file, direction: incoming ? "incoming" : "outgoing" };
|
||
}
|
||
Sources2.link = link;
|
||
function binaryOp(left, op, right) {
|
||
return { type: "binaryop", left, op, right };
|
||
}
|
||
Sources2.binaryOp = binaryOp;
|
||
function and(left, right) {
|
||
return { type: "binaryop", left, op: "&", right };
|
||
}
|
||
Sources2.and = and;
|
||
function or(left, right) {
|
||
return { type: "binaryop", left, op: "|", right };
|
||
}
|
||
Sources2.or = or;
|
||
function negate(child) {
|
||
return { type: "negate", child };
|
||
}
|
||
Sources2.negate = negate;
|
||
function empty2() {
|
||
return { type: "empty" };
|
||
}
|
||
Sources2.empty = empty2;
|
||
})(Sources || (Sources = {}));
|
||
var EMOJI_REGEX = new RegExp(emojiRegex(), "");
|
||
var DURATION_TYPES = {
|
||
year: Duration.fromObject({ years: 1 }),
|
||
years: Duration.fromObject({ years: 1 }),
|
||
yr: Duration.fromObject({ years: 1 }),
|
||
yrs: Duration.fromObject({ years: 1 }),
|
||
month: Duration.fromObject({ months: 1 }),
|
||
months: Duration.fromObject({ months: 1 }),
|
||
mo: Duration.fromObject({ months: 1 }),
|
||
mos: Duration.fromObject({ months: 1 }),
|
||
week: Duration.fromObject({ weeks: 1 }),
|
||
weeks: Duration.fromObject({ weeks: 1 }),
|
||
wk: Duration.fromObject({ weeks: 1 }),
|
||
wks: Duration.fromObject({ weeks: 1 }),
|
||
w: Duration.fromObject({ weeks: 1 }),
|
||
day: Duration.fromObject({ days: 1 }),
|
||
days: Duration.fromObject({ days: 1 }),
|
||
d: Duration.fromObject({ days: 1 }),
|
||
hour: Duration.fromObject({ hours: 1 }),
|
||
hours: Duration.fromObject({ hours: 1 }),
|
||
hr: Duration.fromObject({ hours: 1 }),
|
||
hrs: Duration.fromObject({ hours: 1 }),
|
||
h: Duration.fromObject({ hours: 1 }),
|
||
minute: Duration.fromObject({ minutes: 1 }),
|
||
minutes: Duration.fromObject({ minutes: 1 }),
|
||
min: Duration.fromObject({ minutes: 1 }),
|
||
mins: Duration.fromObject({ minutes: 1 }),
|
||
m: Duration.fromObject({ minutes: 1 }),
|
||
second: Duration.fromObject({ seconds: 1 }),
|
||
seconds: Duration.fromObject({ seconds: 1 }),
|
||
sec: Duration.fromObject({ seconds: 1 }),
|
||
secs: Duration.fromObject({ seconds: 1 }),
|
||
s: Duration.fromObject({ seconds: 1 })
|
||
};
|
||
var DATE_SHORTHANDS = {
|
||
now: () => DateTime.local(),
|
||
today: () => DateTime.local().startOf("day"),
|
||
yesterday: () => DateTime.local().startOf("day").minus(Duration.fromObject({ days: 1 })),
|
||
tomorrow: () => DateTime.local().startOf("day").plus(Duration.fromObject({ days: 1 })),
|
||
sow: () => DateTime.local().startOf("week"),
|
||
"start-of-week": () => DateTime.local().startOf("week"),
|
||
eow: () => DateTime.local().endOf("week"),
|
||
"end-of-week": () => DateTime.local().endOf("week"),
|
||
soy: () => DateTime.local().startOf("year"),
|
||
"start-of-year": () => DateTime.local().startOf("year"),
|
||
eoy: () => DateTime.local().endOf("year"),
|
||
"end-of-year": () => DateTime.local().endOf("year"),
|
||
som: () => DateTime.local().startOf("month"),
|
||
"start-of-month": () => DateTime.local().startOf("month"),
|
||
eom: () => DateTime.local().endOf("month"),
|
||
"end-of-month": () => DateTime.local().endOf("month")
|
||
};
|
||
var KEYWORDS = ["FROM", "WHERE", "LIMIT", "GROUP", "FLATTEN"];
|
||
function splitOnUnescapedPipe(link) {
|
||
let pipe = -1;
|
||
while ((pipe = link.indexOf("|", pipe + 1)) >= 0) {
|
||
if (pipe > 0 && link[pipe - 1] == "\\")
|
||
continue;
|
||
return [link.substring(0, pipe).replace(/\\\|/g, "|"), link.substring(pipe + 1)];
|
||
}
|
||
return [link.replace(/\\\|/g, "|"), void 0];
|
||
}
|
||
function parseInnerLink(rawlink) {
|
||
let [link, display] = splitOnUnescapedPipe(rawlink);
|
||
return Link.infer(link, false, display);
|
||
}
|
||
function createBinaryParser(child, sep, combine) {
|
||
return parsimmon_umd_min.exports.seqMap(child, parsimmon_umd_min.exports.seq(parsimmon_umd_min.exports.optWhitespace, sep, parsimmon_umd_min.exports.optWhitespace, child).many(), (first, rest) => {
|
||
if (rest.length == 0)
|
||
return first;
|
||
let node = combine(first, rest[0][1], rest[0][3]);
|
||
for (let index = 1; index < rest.length; index++) {
|
||
node = combine(node, rest[index][1], rest[index][3]);
|
||
}
|
||
return node;
|
||
});
|
||
}
|
||
function chainOpt(base, ...funcs) {
|
||
return parsimmon_umd_min.exports.custom((success, failure) => {
|
||
return (input, i) => {
|
||
let result = base._(input, i);
|
||
if (!result.status)
|
||
return result;
|
||
for (let func of funcs) {
|
||
let next = func(result.value)._(input, result.index);
|
||
if (!next.status)
|
||
return result;
|
||
result = next;
|
||
}
|
||
return result;
|
||
};
|
||
});
|
||
}
|
||
var EXPRESSION = parsimmon_umd_min.exports.createLanguage({
|
||
// A floating point number; the decimal point is optional.
|
||
number: (q) => parsimmon_umd_min.exports.regexp(/-?[0-9]+(\.[0-9]+)?/).map((str) => Number.parseFloat(str)).desc("number"),
|
||
// A quote-surrounded string which supports escape characters ('\').
|
||
string: (q) => parsimmon_umd_min.exports.string('"').then(parsimmon_umd_min.exports.alt(q.escapeCharacter, parsimmon_umd_min.exports.noneOf('"\\')).atLeast(0).map((chars) => chars.join(""))).skip(parsimmon_umd_min.exports.string('"')).desc("string"),
|
||
escapeCharacter: (_) => parsimmon_umd_min.exports.string("\\").then(parsimmon_umd_min.exports.any).map((escaped) => {
|
||
if (escaped === '"')
|
||
return '"';
|
||
if (escaped === "\\")
|
||
return "\\";
|
||
else
|
||
return "\\" + escaped;
|
||
}),
|
||
// A boolean true/false value.
|
||
bool: (_) => parsimmon_umd_min.exports.regexp(/true|false|True|False/).map((str) => str.toLowerCase() == "true").desc("boolean ('true' or 'false')"),
|
||
// A tag of the form '#stuff/hello-there'.
|
||
tag: (_) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("#"), parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]/).desc("text")).many(), (start, rest) => start + rest.join("")).desc("tag ('#hello/stuff')"),
|
||
// A variable identifier, which is alphanumeric and must start with a letter or... emoji.
|
||
identifier: (_) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/\p{Letter}/u), parsimmon_umd_min.exports.regexp(EMOJI_REGEX).desc("text")), parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/[0-9\p{Letter}_-]/u), parsimmon_umd_min.exports.regexp(EMOJI_REGEX).desc("text")).many(), (first, rest) => first + rest.join("")).desc("variable identifier"),
|
||
// An Obsidian link of the form [[<link>]].
|
||
link: (_) => parsimmon_umd_min.exports.regexp(/\[\[([^\[\]]*?)\]\]/u, 1).map((linkInner) => parseInnerLink(linkInner)).desc("file link"),
|
||
// An embeddable link which can start with '!'. This overlaps with the normal negation operator, so it is only
|
||
// provided for metadata parsing.
|
||
embedLink: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("!").atMost(1), q.link, (p, l2) => {
|
||
if (p.length > 0)
|
||
l2.embed = true;
|
||
return l2;
|
||
}).desc("file link"),
|
||
// Binary plus or minus operator.
|
||
binaryPlusMinus: (_) => parsimmon_umd_min.exports.regexp(/\+|-/).map((str) => str).desc("'+' or '-'"),
|
||
// Binary times or divide operator.
|
||
binaryMulDiv: (_) => parsimmon_umd_min.exports.regexp(/\*|\/|%/).map((str) => str).desc("'*' or '/' or '%'"),
|
||
// Binary comparison operator.
|
||
binaryCompareOp: (_) => parsimmon_umd_min.exports.regexp(/>=|<=|!=|>|<|=/).map((str) => str).desc("'>=' or '<=' or '!=' or '=' or '>' or '<'"),
|
||
// Binary boolean combination operator.
|
||
binaryBooleanOp: (_) => parsimmon_umd_min.exports.regexp(/and|or|&|\|/i).map((str) => {
|
||
if (str.toLowerCase() == "and")
|
||
return "&";
|
||
else if (str.toLowerCase() == "or")
|
||
return "|";
|
||
else
|
||
return str;
|
||
}).desc("'and' or 'or'"),
|
||
// A date which can be YYYY-MM[-DDTHH:mm:ss].
|
||
rootDate: (_) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/\d{4}/), parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.regexp(/\d{2}/), (year, _2, month) => {
|
||
return DateTime.fromObject({ year: Number.parseInt(year), month: Number.parseInt(month) });
|
||
}).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"),
|
||
dateShorthand: (_) => parsimmon_umd_min.exports.alt(...Object.keys(DATE_SHORTHANDS).sort((a, b) => b.length - a.length).map(parsimmon_umd_min.exports.string)),
|
||
date: (q) => chainOpt(q.rootDate, (ym) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, day) => ym.set({ day: Number.parseInt(day) })), (ymd) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("T"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, hour) => ymd.set({ hour: Number.parseInt(hour) })), (ymdh) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string(":"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, minute) => ymdh.set({ minute: Number.parseInt(minute) })), (ymdhm) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string(":"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_, second) => ymdhm.set({ second: Number.parseInt(second) })), (ymdhms) => parsimmon_umd_min.exports.alt(
|
||
parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("."), parsimmon_umd_min.exports.regexp(/\d{3}/), (_, millisecond) => ymdhms.set({ millisecond: Number.parseInt(millisecond) })),
|
||
parsimmon_umd_min.exports.succeed(ymdhms)
|
||
// pass
|
||
), (dt) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("+").or(parsimmon_umd_min.exports.string("-")), parsimmon_umd_min.exports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr) => dt.setZone("UTC" + pm + hr, { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("Z"), () => dt.setZone("utc", { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("["), parsimmon_umd_min.exports.regexp(/[0-9A-Za-z+-\/]+/u), parsimmon_umd_min.exports.string("]"), (_a, zone, _b) => dt.setZone(zone, { keepLocalTime: true })))).assert((dt) => dt.isValid, "valid date").desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"),
|
||
// A date, plus various shorthand times of day it could be.
|
||
datePlus: (q) => parsimmon_umd_min.exports.alt(q.dateShorthand.map((d) => DATE_SHORTHANDS[d]()), q.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"),
|
||
// A duration of time.
|
||
durationType: (_) => parsimmon_umd_min.exports.alt(...Object.keys(DURATION_TYPES).sort((a, b) => b.length - a.length).map(parsimmon_umd_min.exports.string)),
|
||
duration: (q) => parsimmon_umd_min.exports.seqMap(q.number, parsimmon_umd_min.exports.optWhitespace, q.durationType, (count, _, t) => DURATION_TYPES[t].mapUnits((x) => x * count)).sepBy1(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace).or(parsimmon_umd_min.exports.optWhitespace)).map((durations) => durations.reduce((p, c) => p.plus(c))).desc("duration like 4hr2min"),
|
||
// A raw null value.
|
||
rawNull: (_) => parsimmon_umd_min.exports.string("null"),
|
||
// Source parsing.
|
||
tagSource: (q) => q.tag.map((tag) => Sources.tag(tag)),
|
||
csvSource: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("csv(").skip(parsimmon_umd_min.exports.optWhitespace), q.string, parsimmon_umd_min.exports.string(")"), (_1, path, _2) => Sources.csv(path)),
|
||
linkIncomingSource: (q) => q.link.map((link) => Sources.link(link.path, true)),
|
||
linkOutgoingSource: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("outgoing(").skip(parsimmon_umd_min.exports.optWhitespace), q.link, parsimmon_umd_min.exports.string(")"), (_1, link, _2) => Sources.link(link.path, false)),
|
||
folderSource: (q) => q.string.map((str) => Sources.folder(str)),
|
||
parensSource: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q.source, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_1, _2, field, _3, _4) => field),
|
||
negateSource: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.string("!")), q.atomSource, (_, source) => Sources.negate(source)),
|
||
atomSource: (q) => parsimmon_umd_min.exports.alt(q.parensSource, q.negateSource, q.linkOutgoingSource, q.linkIncomingSource, q.folderSource, q.tagSource, q.csvSource),
|
||
binaryOpSource: (q) => createBinaryParser(q.atomSource, q.binaryBooleanOp.map((s2) => s2), Sources.binaryOp),
|
||
source: (q) => q.binaryOpSource,
|
||
// Field parsing.
|
||
variableField: (q) => q.identifier.chain((r) => {
|
||
if (KEYWORDS.includes(r.toUpperCase())) {
|
||
return parsimmon_umd_min.exports.fail("Variable fields cannot be a keyword (" + KEYWORDS.join(" or ") + ")");
|
||
} else {
|
||
return parsimmon_umd_min.exports.succeed(Fields.variable(r));
|
||
}
|
||
}).desc("variable"),
|
||
numberField: (q) => q.number.map((val) => Fields.literal(val)).desc("number"),
|
||
stringField: (q) => q.string.map((val) => Fields.literal(val)).desc("string"),
|
||
boolField: (q) => q.bool.map((val) => Fields.literal(val)).desc("boolean"),
|
||
dateField: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("date("), parsimmon_umd_min.exports.optWhitespace, q.datePlus, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (prefix, _1, date, _2, postfix) => Fields.literal(date)).desc("date"),
|
||
durationField: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("dur("), parsimmon_umd_min.exports.optWhitespace, q.duration, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (prefix, _1, dur, _2, postfix) => Fields.literal(dur)).desc("duration"),
|
||
nullField: (q) => q.rawNull.map((_) => Fields.NULL),
|
||
linkField: (q) => q.link.map((f) => Fields.literal(f)),
|
||
listField: (q) => q.field.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)).wrap(parsimmon_umd_min.exports.string("[").skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.optWhitespace.then(parsimmon_umd_min.exports.string("]"))).map((l2) => Fields.list(l2)).desc("list ('[1, 2, 3]')"),
|
||
objectField: (q) => parsimmon_umd_min.exports.seqMap(q.identifier.or(q.string), parsimmon_umd_min.exports.string(":").trim(parsimmon_umd_min.exports.optWhitespace), q.field, (name, _sep, value) => {
|
||
return { name, value };
|
||
}).sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)).wrap(parsimmon_umd_min.exports.string("{").skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.optWhitespace.then(parsimmon_umd_min.exports.string("}"))).map((vals) => {
|
||
let res = {};
|
||
for (let entry of vals)
|
||
res[entry.name] = entry.value;
|
||
return Fields.object(res);
|
||
}).desc("object ('{ a: 1, b: 2 }')"),
|
||
atomInlineField: (q) => parsimmon_umd_min.exports.alt(q.date, q.duration.map((d) => normalizeDuration(d)), q.string, q.tag, q.embedLink, q.bool, q.number, q.rawNull),
|
||
inlineFieldList: (q) => q.atomInlineField.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace).lookahead(q.atomInlineField)),
|
||
inlineField: (q) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(q.atomInlineField, parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace), q.inlineFieldList, (f, _s, l2) => [f].concat(l2)), q.atomInlineField),
|
||
atomField: (q) => parsimmon_umd_min.exports.alt(
|
||
// Place embed links above negated fields as they are the special parser case '![[thing]]' and are generally unambigious.
|
||
q.embedLink.map((l2) => Fields.literal(l2)),
|
||
q.negatedField,
|
||
q.linkField,
|
||
q.listField,
|
||
q.objectField,
|
||
q.lambdaField,
|
||
q.parensField,
|
||
q.boolField,
|
||
q.numberField,
|
||
q.stringField,
|
||
q.dateField,
|
||
q.durationField,
|
||
q.nullField,
|
||
q.variableField
|
||
),
|
||
indexField: (q) => parsimmon_umd_min.exports.seqMap(q.atomField, parsimmon_umd_min.exports.alt(q.dotPostfix, q.indexPostfix, q.functionPostfix).many(), (obj, postfixes) => {
|
||
let result = obj;
|
||
for (let post of postfixes) {
|
||
switch (post.type) {
|
||
case "dot":
|
||
result = Fields.index(result, Fields.literal(post.field));
|
||
break;
|
||
case "index":
|
||
result = Fields.index(result, post.field);
|
||
break;
|
||
case "function":
|
||
result = Fields.func(result, post.fields);
|
||
break;
|
||
}
|
||
}
|
||
return result;
|
||
}),
|
||
negatedField: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("!"), q.indexField, (_, field) => Fields.negate(field)).desc("negated field"),
|
||
parensField: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q.field, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_1, _2, field, _3, _4) => field),
|
||
lambdaField: (q) => parsimmon_umd_min.exports.seqMap(q.identifier.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)).wrap(parsimmon_umd_min.exports.string("(").trim(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.string(")").trim(parsimmon_umd_min.exports.optWhitespace)), parsimmon_umd_min.exports.string("=>").trim(parsimmon_umd_min.exports.optWhitespace), q.field, (ident, _ignore, value) => {
|
||
return { type: "lambda", arguments: ident, value };
|
||
}),
|
||
dotPostfix: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("."), q.identifier, (_, field) => {
|
||
return { type: "dot", field };
|
||
}),
|
||
indexPostfix: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("["), parsimmon_umd_min.exports.optWhitespace, q.field, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string("]"), (_, _2, field, _3, _4) => {
|
||
return { type: "index", field };
|
||
}),
|
||
functionPostfix: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q.field.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_, _1, fields, _2, _3) => {
|
||
return { type: "function", fields };
|
||
}),
|
||
// The precedence hierarchy of operators - multiply/divide, add/subtract, compare, and then boolean operations.
|
||
binaryMulDivField: (q) => createBinaryParser(q.indexField, q.binaryMulDiv, Fields.binaryOp),
|
||
binaryPlusMinusField: (q) => createBinaryParser(q.binaryMulDivField, q.binaryPlusMinus, Fields.binaryOp),
|
||
binaryCompareField: (q) => createBinaryParser(q.binaryPlusMinusField, q.binaryCompareOp, Fields.binaryOp),
|
||
binaryBooleanField: (q) => createBinaryParser(q.binaryCompareField, q.binaryBooleanOp, Fields.binaryOp),
|
||
binaryOpField: (q) => q.binaryBooleanField,
|
||
field: (q) => q.binaryOpField
|
||
});
|
||
function parseField(text2) {
|
||
try {
|
||
return Result.success(EXPRESSION.field.tryParse(text2));
|
||
} catch (error) {
|
||
return Result.failure("" + error);
|
||
}
|
||
}
|
||
var QueryFields;
|
||
(function(QueryFields2) {
|
||
function named(name, field) {
|
||
return { name, field };
|
||
}
|
||
QueryFields2.named = named;
|
||
function sortBy(field, dir) {
|
||
return { field, direction: dir };
|
||
}
|
||
QueryFields2.sortBy = sortBy;
|
||
})(QueryFields || (QueryFields = {}));
|
||
function captureRaw(base) {
|
||
return parsimmon_umd_min.exports.custom((success, failure) => {
|
||
return (input, i) => {
|
||
let result = base._(input, i);
|
||
if (!result.status)
|
||
return result;
|
||
return Object.assign({}, result, { value: [result.value, input.substring(i, result.index)] });
|
||
};
|
||
});
|
||
}
|
||
function stripNewlines(text2) {
|
||
return text2.split(/[\r\n]+/).map((t) => t.trim()).join("");
|
||
}
|
||
var QUERY_LANGUAGE = parsimmon_umd_min.exports.createLanguage({
|
||
// Simple atom parsing, like words, identifiers, numbers.
|
||
queryType: (q) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/TABLE|LIST|TASK|CALENDAR/i)).map((str) => str.toLowerCase()).desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"),
|
||
explicitNamedField: (q) => parsimmon_umd_min.exports.seqMap(EXPRESSION.field.skip(parsimmon_umd_min.exports.whitespace), parsimmon_umd_min.exports.regexp(/AS/i).skip(parsimmon_umd_min.exports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)),
|
||
namedField: (q) => parsimmon_umd_min.exports.alt(q.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text2]) => QueryFields.named(stripNewlines(text2), value))),
|
||
sortField: (q) => parsimmon_umd_min.exports.seqMap(EXPRESSION.field.skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => {
|
||
let direction = dir.length == 0 ? "ascending" : dir[0].toLowerCase();
|
||
if (direction == "desc")
|
||
direction = "descending";
|
||
if (direction == "asc")
|
||
direction = "ascending";
|
||
return {
|
||
field,
|
||
direction
|
||
};
|
||
}),
|
||
headerClause: (q) => q.queryType.skip(parsimmon_umd_min.exports.whitespace).chain((qtype) => {
|
||
switch (qtype) {
|
||
case "table":
|
||
return parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_min.exports.optWhitespace).atMost(1), parsimmon_umd_min.exports.sepBy(q.namedField, parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), (withoutId, fields) => {
|
||
return { type: "table", fields, showId: withoutId.length == 0 };
|
||
});
|
||
case "list":
|
||
return parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_min.exports.optWhitespace).atMost(1), EXPRESSION.field.atMost(1), (withoutId, format) => {
|
||
return {
|
||
type: "list",
|
||
format: format.length == 1 ? format[0] : void 0,
|
||
showId: withoutId.length == 0
|
||
};
|
||
});
|
||
case "task":
|
||
return parsimmon_umd_min.exports.succeed({ type: "task" });
|
||
case "calendar":
|
||
return parsimmon_umd_min.exports.seqMap(q.namedField, (field) => {
|
||
return {
|
||
type: "calendar",
|
||
showId: true,
|
||
field
|
||
};
|
||
});
|
||
default:
|
||
return parsimmon_umd_min.exports.fail(`Unrecognized query type '${qtype}'`);
|
||
}
|
||
}).desc("TABLE or LIST or TASK or CALENDAR"),
|
||
fromClause: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/FROM/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.source, (_1, _2, source) => source),
|
||
whereClause: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WHERE/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.field, (where, _, field) => {
|
||
return { type: "where", clause: field };
|
||
}).desc("WHERE <expression>"),
|
||
sortByClause: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/SORT/i), parsimmon_umd_min.exports.whitespace, q.sortField.sepBy1(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), (sort, _1, fields) => {
|
||
return { type: "sort", fields };
|
||
}).desc("SORT field [ASC/DESC]"),
|
||
limitClause: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/LIMIT/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.field, (limit, _1, field) => {
|
||
return { type: "limit", amount: field };
|
||
}).desc("LIMIT <value>"),
|
||
flattenClause: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/FLATTEN/i).skip(parsimmon_umd_min.exports.whitespace), q.namedField, (_, field) => {
|
||
return { type: "flatten", field };
|
||
}).desc("FLATTEN <value> [AS <name>]"),
|
||
groupByClause: (q) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/GROUP BY/i).skip(parsimmon_umd_min.exports.whitespace), q.namedField, (_, field) => {
|
||
return { type: "group", field };
|
||
}).desc("GROUP BY <value> [AS <name>]"),
|
||
// Full query parsing.
|
||
clause: (q) => parsimmon_umd_min.exports.alt(q.fromClause, q.whereClause, q.sortByClause, q.limitClause, q.groupByClause, q.flattenClause),
|
||
query: (q) => parsimmon_umd_min.exports.seqMap(q.headerClause.trim(parsimmon_umd_min.exports.optWhitespace), q.fromClause.trim(parsimmon_umd_min.exports.optWhitespace).atMost(1), q.clause.trim(parsimmon_umd_min.exports.optWhitespace).many(), (header, from, clauses) => {
|
||
return {
|
||
header,
|
||
source: from.length == 0 ? Sources.folder("") : from[0],
|
||
operations: clauses,
|
||
settings: DEFAULT_QUERY_SETTINGS
|
||
};
|
||
})
|
||
});
|
||
var getAPI2 = (app) => {
|
||
var _a;
|
||
if (app)
|
||
return (_a = app.plugins.plugins.dataview) === null || _a === void 0 ? void 0 : _a.api;
|
||
else
|
||
return window.DataviewAPI;
|
||
};
|
||
var isPluginEnabled = (app) => app.plugins.enabledPlugins.has("dataview");
|
||
exports.DATE_SHORTHANDS = DATE_SHORTHANDS;
|
||
exports.DURATION_TYPES = DURATION_TYPES;
|
||
exports.EXPRESSION = EXPRESSION;
|
||
exports.KEYWORDS = KEYWORDS;
|
||
exports.QUERY_LANGUAGE = QUERY_LANGUAGE;
|
||
exports.getAPI = getAPI2;
|
||
exports.isPluginEnabled = isPluginEnabled;
|
||
exports.parseField = parseField;
|
||
}
|
||
});
|
||
|
||
// src/main.ts
|
||
var main_exports = {};
|
||
__export(main_exports, {
|
||
default: () => AdvancedRandomNote
|
||
});
|
||
module.exports = __toCommonJS(main_exports);
|
||
var import_obsidian6 = require("obsidian");
|
||
|
||
// src/gui/modals/OpenRandomNoteModal/openRandomNoteModal.ts
|
||
var import_obsidian = require("obsidian");
|
||
|
||
// node_modules/svelte/src/runtime/internal/utils.js
|
||
function noop() {
|
||
}
|
||
function assign(tar, src) {
|
||
for (const k in src)
|
||
tar[k] = src[k];
|
||
return (
|
||
/** @type {T & S} */
|
||
tar
|
||
);
|
||
}
|
||
function run(fn) {
|
||
return fn();
|
||
}
|
||
function blank_object() {
|
||
return /* @__PURE__ */ Object.create(null);
|
||
}
|
||
function run_all(fns) {
|
||
fns.forEach(run);
|
||
}
|
||
function is_function(thing) {
|
||
return typeof thing === "function";
|
||
}
|
||
function safe_not_equal(a, b) {
|
||
return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function";
|
||
}
|
||
function is_empty(obj) {
|
||
return Object.keys(obj).length === 0;
|
||
}
|
||
function create_slot(definition, ctx, $$scope, fn) {
|
||
if (definition) {
|
||
const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
|
||
return definition[0](slot_ctx);
|
||
}
|
||
}
|
||
function get_slot_context(definition, ctx, $$scope, fn) {
|
||
return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;
|
||
}
|
||
function get_slot_changes(definition, $$scope, dirty, fn) {
|
||
if (definition[2] && fn) {
|
||
const lets = definition[2](fn(dirty));
|
||
if ($$scope.dirty === void 0) {
|
||
return lets;
|
||
}
|
||
if (typeof lets === "object") {
|
||
const merged = [];
|
||
const len = Math.max($$scope.dirty.length, lets.length);
|
||
for (let i = 0; i < len; i += 1) {
|
||
merged[i] = $$scope.dirty[i] | lets[i];
|
||
}
|
||
return merged;
|
||
}
|
||
return $$scope.dirty | lets;
|
||
}
|
||
return $$scope.dirty;
|
||
}
|
||
function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {
|
||
if (slot_changes) {
|
||
const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
|
||
slot.p(slot_context, slot_changes);
|
||
}
|
||
}
|
||
function get_all_dirty_from_scope($$scope) {
|
||
if ($$scope.ctx.length > 32) {
|
||
const dirty = [];
|
||
const length = $$scope.ctx.length / 32;
|
||
for (let i = 0; i < length; i++) {
|
||
dirty[i] = -1;
|
||
}
|
||
return dirty;
|
||
}
|
||
return -1;
|
||
}
|
||
function exclude_internal_props(props) {
|
||
const result = {};
|
||
for (const k in props)
|
||
if (k[0] !== "$")
|
||
result[k] = props[k];
|
||
return result;
|
||
}
|
||
function compute_rest_props(props, keys) {
|
||
const rest = {};
|
||
keys = new Set(keys);
|
||
for (const k in props)
|
||
if (!keys.has(k) && k[0] !== "$")
|
||
rest[k] = props[k];
|
||
return rest;
|
||
}
|
||
|
||
// node_modules/svelte/src/runtime/internal/globals.js
|
||
var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : (
|
||
// @ts-ignore Node typings have this
|
||
global
|
||
);
|
||
|
||
// node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js
|
||
var ResizeObserverSingleton = class {
|
||
/** @param {ResizeObserverOptions} options */
|
||
constructor(options) {
|
||
/**
|
||
* @private
|
||
* @readonly
|
||
* @type {WeakMap<Element, import('./private.js').Listener>}
|
||
*/
|
||
__publicField(this, "_listeners", "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0);
|
||
/**
|
||
* @private
|
||
* @type {ResizeObserver}
|
||
*/
|
||
__publicField(this, "_observer");
|
||
/** @type {ResizeObserverOptions} */
|
||
__publicField(this, "options");
|
||
this.options = options;
|
||
}
|
||
/**
|
||
* @param {Element} element
|
||
* @param {import('./private.js').Listener} listener
|
||
* @returns {() => void}
|
||
*/
|
||
observe(element2, listener) {
|
||
this._listeners.set(element2, listener);
|
||
this._getObserver().observe(element2, this.options);
|
||
return () => {
|
||
this._listeners.delete(element2);
|
||
this._observer.unobserve(element2);
|
||
};
|
||
}
|
||
/**
|
||
* @private
|
||
*/
|
||
_getObserver() {
|
||
var _a;
|
||
return (_a = this._observer) != null ? _a : this._observer = new ResizeObserver((entries) => {
|
||
var _a2;
|
||
for (const entry of entries) {
|
||
ResizeObserverSingleton.entries.set(entry.target, entry);
|
||
(_a2 = this._listeners.get(entry.target)) == null ? void 0 : _a2(entry);
|
||
}
|
||
});
|
||
}
|
||
};
|
||
ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0;
|
||
|
||
// node_modules/svelte/src/runtime/internal/dom.js
|
||
var is_hydrating = false;
|
||
function start_hydrating() {
|
||
is_hydrating = true;
|
||
}
|
||
function end_hydrating() {
|
||
is_hydrating = false;
|
||
}
|
||
function append(target, node) {
|
||
target.appendChild(node);
|
||
}
|
||
function append_styles(target, style_sheet_id, styles) {
|
||
const append_styles_to = get_root_for_style(target);
|
||
if (!append_styles_to.getElementById(style_sheet_id)) {
|
||
const style = element("style");
|
||
style.id = style_sheet_id;
|
||
style.textContent = styles;
|
||
append_stylesheet(append_styles_to, style);
|
||
}
|
||
}
|
||
function get_root_for_style(node) {
|
||
if (!node)
|
||
return document;
|
||
const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
|
||
if (root && /** @type {ShadowRoot} */
|
||
root.host) {
|
||
return (
|
||
/** @type {ShadowRoot} */
|
||
root
|
||
);
|
||
}
|
||
return node.ownerDocument;
|
||
}
|
||
function append_stylesheet(node, style) {
|
||
append(
|
||
/** @type {Document} */
|
||
node.head || node,
|
||
style
|
||
);
|
||
return style.sheet;
|
||
}
|
||
function insert(target, node, anchor) {
|
||
target.insertBefore(node, anchor || null);
|
||
}
|
||
function detach(node) {
|
||
if (node.parentNode) {
|
||
node.parentNode.removeChild(node);
|
||
}
|
||
}
|
||
function destroy_each(iterations, detaching) {
|
||
for (let i = 0; i < iterations.length; i += 1) {
|
||
if (iterations[i])
|
||
iterations[i].d(detaching);
|
||
}
|
||
}
|
||
function element(name) {
|
||
return document.createElement(name);
|
||
}
|
||
function svg_element(name) {
|
||
return document.createElementNS("http://www.w3.org/2000/svg", name);
|
||
}
|
||
function text(data) {
|
||
return document.createTextNode(data);
|
||
}
|
||
function space() {
|
||
return text(" ");
|
||
}
|
||
function empty() {
|
||
return text("");
|
||
}
|
||
function listen(node, event, handler, options) {
|
||
node.addEventListener(event, handler, options);
|
||
return () => node.removeEventListener(event, handler, options);
|
||
}
|
||
function prevent_default(fn) {
|
||
return function(event) {
|
||
event.preventDefault();
|
||
return fn.call(this, event);
|
||
};
|
||
}
|
||
function attr(node, attribute, value) {
|
||
if (value == null)
|
||
node.removeAttribute(attribute);
|
||
else if (node.getAttribute(attribute) !== value)
|
||
node.setAttribute(attribute, value);
|
||
}
|
||
function set_svg_attributes(node, attributes) {
|
||
for (const key in attributes) {
|
||
attr(node, key, attributes[key]);
|
||
}
|
||
}
|
||
function children(element2) {
|
||
return Array.from(element2.childNodes);
|
||
}
|
||
function set_data(text2, data) {
|
||
data = "" + data;
|
||
if (text2.data === data)
|
||
return;
|
||
text2.data = /** @type {string} */
|
||
data;
|
||
}
|
||
function set_input_value(input, value) {
|
||
input.value = value == null ? "" : value;
|
||
}
|
||
function select_option(select, value, mounting) {
|
||
for (let i = 0; i < select.options.length; i += 1) {
|
||
const option = select.options[i];
|
||
if (option.__value === value) {
|
||
option.selected = true;
|
||
return;
|
||
}
|
||
}
|
||
if (!mounting || value !== void 0) {
|
||
select.selectedIndex = -1;
|
||
}
|
||
}
|
||
function select_value(select) {
|
||
const selected_option = select.querySelector(":checked");
|
||
return selected_option && selected_option.__value;
|
||
}
|
||
function toggle_class(element2, name, toggle) {
|
||
element2.classList.toggle(name, !!toggle);
|
||
}
|
||
function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
|
||
return new CustomEvent(type, { detail, bubbles, cancelable });
|
||
}
|
||
function get_custom_elements_slots(element2) {
|
||
const result = {};
|
||
element2.childNodes.forEach(
|
||
/** @param {Element} node */
|
||
(node) => {
|
||
result[node.slot || "default"] = true;
|
||
}
|
||
);
|
||
return result;
|
||
}
|
||
|
||
// node_modules/svelte/src/runtime/internal/lifecycle.js
|
||
var current_component;
|
||
function set_current_component(component) {
|
||
current_component = component;
|
||
}
|
||
function get_current_component() {
|
||
if (!current_component)
|
||
throw new Error("Function called outside component initialization");
|
||
return current_component;
|
||
}
|
||
function onDestroy(fn) {
|
||
get_current_component().$$.on_destroy.push(fn);
|
||
}
|
||
function createEventDispatcher() {
|
||
const component = get_current_component();
|
||
return (type, detail, { cancelable = false } = {}) => {
|
||
const callbacks = component.$$.callbacks[type];
|
||
if (callbacks) {
|
||
const event = custom_event(
|
||
/** @type {string} */
|
||
type,
|
||
detail,
|
||
{ cancelable }
|
||
);
|
||
callbacks.slice().forEach((fn) => {
|
||
fn.call(component, event);
|
||
});
|
||
return !event.defaultPrevented;
|
||
}
|
||
return true;
|
||
};
|
||
}
|
||
function bubble(component, event) {
|
||
const callbacks = component.$$.callbacks[event.type];
|
||
if (callbacks) {
|
||
callbacks.slice().forEach((fn) => fn.call(this, event));
|
||
}
|
||
}
|
||
|
||
// node_modules/svelte/src/runtime/internal/scheduler.js
|
||
var dirty_components = [];
|
||
var binding_callbacks = [];
|
||
var render_callbacks = [];
|
||
var flush_callbacks = [];
|
||
var resolved_promise = /* @__PURE__ */ Promise.resolve();
|
||
var update_scheduled = false;
|
||
function schedule_update() {
|
||
if (!update_scheduled) {
|
||
update_scheduled = true;
|
||
resolved_promise.then(flush);
|
||
}
|
||
}
|
||
function add_render_callback(fn) {
|
||
render_callbacks.push(fn);
|
||
}
|
||
function add_flush_callback(fn) {
|
||
flush_callbacks.push(fn);
|
||
}
|
||
var seen_callbacks = /* @__PURE__ */ new Set();
|
||
var flushidx = 0;
|
||
function flush() {
|
||
if (flushidx !== 0) {
|
||
return;
|
||
}
|
||
const saved_component = current_component;
|
||
do {
|
||
try {
|
||
while (flushidx < dirty_components.length) {
|
||
const component = dirty_components[flushidx];
|
||
flushidx++;
|
||
set_current_component(component);
|
||
update(component.$$);
|
||
}
|
||
} catch (e) {
|
||
dirty_components.length = 0;
|
||
flushidx = 0;
|
||
throw e;
|
||
}
|
||
set_current_component(null);
|
||
dirty_components.length = 0;
|
||
flushidx = 0;
|
||
while (binding_callbacks.length)
|
||
binding_callbacks.pop()();
|
||
for (let i = 0; i < render_callbacks.length; i += 1) {
|
||
const callback = render_callbacks[i];
|
||
if (!seen_callbacks.has(callback)) {
|
||
seen_callbacks.add(callback);
|
||
callback();
|
||
}
|
||
}
|
||
render_callbacks.length = 0;
|
||
} while (dirty_components.length);
|
||
while (flush_callbacks.length) {
|
||
flush_callbacks.pop()();
|
||
}
|
||
update_scheduled = false;
|
||
seen_callbacks.clear();
|
||
set_current_component(saved_component);
|
||
}
|
||
function update($$) {
|
||
if ($$.fragment !== null) {
|
||
$$.update();
|
||
run_all($$.before_update);
|
||
const dirty = $$.dirty;
|
||
$$.dirty = [-1];
|
||
$$.fragment && $$.fragment.p($$.ctx, dirty);
|
||
$$.after_update.forEach(add_render_callback);
|
||
}
|
||
}
|
||
function flush_render_callbacks(fns) {
|
||
const filtered = [];
|
||
const targets = [];
|
||
render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));
|
||
targets.forEach((c) => c());
|
||
render_callbacks = filtered;
|
||
}
|
||
|
||
// node_modules/svelte/src/runtime/internal/transitions.js
|
||
var outroing = /* @__PURE__ */ new Set();
|
||
var outros;
|
||
function group_outros() {
|
||
outros = {
|
||
r: 0,
|
||
c: [],
|
||
p: outros
|
||
// parent group
|
||
};
|
||
}
|
||
function check_outros() {
|
||
if (!outros.r) {
|
||
run_all(outros.c);
|
||
}
|
||
outros = outros.p;
|
||
}
|
||
function transition_in(block, local) {
|
||
if (block && block.i) {
|
||
outroing.delete(block);
|
||
block.i(local);
|
||
}
|
||
}
|
||
function transition_out(block, local, detach2, callback) {
|
||
if (block && block.o) {
|
||
if (outroing.has(block))
|
||
return;
|
||
outroing.add(block);
|
||
outros.c.push(() => {
|
||
outroing.delete(block);
|
||
if (callback) {
|
||
if (detach2)
|
||
block.d(1);
|
||
callback();
|
||
}
|
||
});
|
||
block.o(local);
|
||
} else if (callback) {
|
||
callback();
|
||
}
|
||
}
|
||
|
||
// node_modules/svelte/src/runtime/internal/each.js
|
||
function ensure_array_like(array_like_or_iterator) {
|
||
return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
|
||
}
|
||
|
||
// node_modules/svelte/src/runtime/internal/spread.js
|
||
function get_spread_update(levels, updates) {
|
||
const update2 = {};
|
||
const to_null_out = {};
|
||
const accounted_for = { $$scope: 1 };
|
||
let i = levels.length;
|
||
while (i--) {
|
||
const o = levels[i];
|
||
const n = updates[i];
|
||
if (n) {
|
||
for (const key in o) {
|
||
if (!(key in n))
|
||
to_null_out[key] = 1;
|
||
}
|
||
for (const key in n) {
|
||
if (!accounted_for[key]) {
|
||
update2[key] = n[key];
|
||
accounted_for[key] = 1;
|
||
}
|
||
}
|
||
levels[i] = n;
|
||
} else {
|
||
for (const key in o) {
|
||
accounted_for[key] = 1;
|
||
}
|
||
}
|
||
}
|
||
for (const key in to_null_out) {
|
||
if (!(key in update2))
|
||
update2[key] = void 0;
|
||
}
|
||
return update2;
|
||
}
|
||
function get_spread_object(spread_props) {
|
||
return typeof spread_props === "object" && spread_props !== null ? spread_props : {};
|
||
}
|
||
|
||
// node_modules/svelte/src/shared/boolean_attributes.js
|
||
var _boolean_attributes = (
|
||
/** @type {const} */
|
||
[
|
||
"allowfullscreen",
|
||
"allowpaymentrequest",
|
||
"async",
|
||
"autofocus",
|
||
"autoplay",
|
||
"checked",
|
||
"controls",
|
||
"default",
|
||
"defer",
|
||
"disabled",
|
||
"formnovalidate",
|
||
"hidden",
|
||
"inert",
|
||
"ismap",
|
||
"loop",
|
||
"multiple",
|
||
"muted",
|
||
"nomodule",
|
||
"novalidate",
|
||
"open",
|
||
"playsinline",
|
||
"readonly",
|
||
"required",
|
||
"reversed",
|
||
"selected"
|
||
]
|
||
);
|
||
var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]);
|
||
|
||
// node_modules/svelte/src/runtime/internal/Component.js
|
||
function bind(component, name, callback) {
|
||
const index = component.$$.props[name];
|
||
if (index !== void 0) {
|
||
component.$$.bound[index] = callback;
|
||
callback(component.$$.ctx[index]);
|
||
}
|
||
}
|
||
function create_component(block) {
|
||
block && block.c();
|
||
}
|
||
function mount_component(component, target, anchor) {
|
||
const { fragment, after_update } = component.$$;
|
||
fragment && fragment.m(target, anchor);
|
||
add_render_callback(() => {
|
||
const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
|
||
if (component.$$.on_destroy) {
|
||
component.$$.on_destroy.push(...new_on_destroy);
|
||
} else {
|
||
run_all(new_on_destroy);
|
||
}
|
||
component.$$.on_mount = [];
|
||
});
|
||
after_update.forEach(add_render_callback);
|
||
}
|
||
function destroy_component(component, detaching) {
|
||
const $$ = component.$$;
|
||
if ($$.fragment !== null) {
|
||
flush_render_callbacks($$.after_update);
|
||
run_all($$.on_destroy);
|
||
$$.fragment && $$.fragment.d(detaching);
|
||
$$.on_destroy = $$.fragment = null;
|
||
$$.ctx = [];
|
||
}
|
||
}
|
||
function make_dirty(component, i) {
|
||
if (component.$$.dirty[0] === -1) {
|
||
dirty_components.push(component);
|
||
schedule_update();
|
||
component.$$.dirty.fill(0);
|
||
}
|
||
component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
|
||
}
|
||
function init(component, options, instance9, create_fragment9, not_equal, props, append_styles2, dirty = [-1]) {
|
||
const parent_component = current_component;
|
||
set_current_component(component);
|
||
const $$ = component.$$ = {
|
||
fragment: null,
|
||
ctx: [],
|
||
// state
|
||
props,
|
||
update: noop,
|
||
not_equal,
|
||
bound: blank_object(),
|
||
// lifecycle
|
||
on_mount: [],
|
||
on_destroy: [],
|
||
on_disconnect: [],
|
||
before_update: [],
|
||
after_update: [],
|
||
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
|
||
// everything else
|
||
callbacks: blank_object(),
|
||
dirty,
|
||
skip_bound: false,
|
||
root: options.target || parent_component.$$.root
|
||
};
|
||
append_styles2 && append_styles2($$.root);
|
||
let ready = false;
|
||
$$.ctx = instance9 ? instance9(component, options.props || {}, (i, ret, ...rest) => {
|
||
const value = rest.length ? rest[0] : ret;
|
||
if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
|
||
if (!$$.skip_bound && $$.bound[i])
|
||
$$.bound[i](value);
|
||
if (ready)
|
||
make_dirty(component, i);
|
||
}
|
||
return ret;
|
||
}) : [];
|
||
$$.update();
|
||
ready = true;
|
||
run_all($$.before_update);
|
||
$$.fragment = create_fragment9 ? create_fragment9($$.ctx) : false;
|
||
if (options.target) {
|
||
if (options.hydrate) {
|
||
start_hydrating();
|
||
const nodes = children(options.target);
|
||
$$.fragment && $$.fragment.l(nodes);
|
||
nodes.forEach(detach);
|
||
} else {
|
||
$$.fragment && $$.fragment.c();
|
||
}
|
||
if (options.intro)
|
||
transition_in(component.$$.fragment);
|
||
mount_component(component, options.target, options.anchor);
|
||
end_hydrating();
|
||
flush();
|
||
}
|
||
set_current_component(parent_component);
|
||
}
|
||
var SvelteElement;
|
||
if (typeof HTMLElement === "function") {
|
||
SvelteElement = class extends HTMLElement {
|
||
constructor($$componentCtor, $$slots, use_shadow_dom) {
|
||
super();
|
||
/** The Svelte component constructor */
|
||
__publicField(this, "$$ctor");
|
||
/** Slots */
|
||
__publicField(this, "$$s");
|
||
/** The Svelte component instance */
|
||
__publicField(this, "$$c");
|
||
/** Whether or not the custom element is connected */
|
||
__publicField(this, "$$cn", false);
|
||
/** Component props data */
|
||
__publicField(this, "$$d", {});
|
||
/** `true` if currently in the process of reflecting component props back to attributes */
|
||
__publicField(this, "$$r", false);
|
||
/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */
|
||
__publicField(this, "$$p_d", {});
|
||
/** @type {Record<string, Function[]>} Event listeners */
|
||
__publicField(this, "$$l", {});
|
||
/** @type {Map<Function, Function>} Event listener unsubscribe functions */
|
||
__publicField(this, "$$l_u", /* @__PURE__ */ new Map());
|
||
this.$$ctor = $$componentCtor;
|
||
this.$$s = $$slots;
|
||
if (use_shadow_dom) {
|
||
this.attachShadow({ mode: "open" });
|
||
}
|
||
}
|
||
addEventListener(type, listener, options) {
|
||
this.$$l[type] = this.$$l[type] || [];
|
||
this.$$l[type].push(listener);
|
||
if (this.$$c) {
|
||
const unsub = this.$$c.$on(type, listener);
|
||
this.$$l_u.set(listener, unsub);
|
||
}
|
||
super.addEventListener(type, listener, options);
|
||
}
|
||
removeEventListener(type, listener, options) {
|
||
super.removeEventListener(type, listener, options);
|
||
if (this.$$c) {
|
||
const unsub = this.$$l_u.get(listener);
|
||
if (unsub) {
|
||
unsub();
|
||
this.$$l_u.delete(listener);
|
||
}
|
||
}
|
||
}
|
||
async connectedCallback() {
|
||
this.$$cn = true;
|
||
if (!this.$$c) {
|
||
let create_slot2 = function(name) {
|
||
return () => {
|
||
let node;
|
||
const obj = {
|
||
c: function create() {
|
||
node = element("slot");
|
||
if (name !== "default") {
|
||
attr(node, "name", name);
|
||
}
|
||
},
|
||
/**
|
||
* @param {HTMLElement} target
|
||
* @param {HTMLElement} [anchor]
|
||
*/
|
||
m: function mount(target, anchor) {
|
||
insert(target, node, anchor);
|
||
},
|
||
d: function destroy(detaching) {
|
||
if (detaching) {
|
||
detach(node);
|
||
}
|
||
}
|
||
};
|
||
return obj;
|
||
};
|
||
};
|
||
await Promise.resolve();
|
||
if (!this.$$cn) {
|
||
return;
|
||
}
|
||
const $$slots = {};
|
||
const existing_slots = get_custom_elements_slots(this);
|
||
for (const name of this.$$s) {
|
||
if (name in existing_slots) {
|
||
$$slots[name] = [create_slot2(name)];
|
||
}
|
||
}
|
||
for (const attribute of this.attributes) {
|
||
const name = this.$$g_p(attribute.name);
|
||
if (!(name in this.$$d)) {
|
||
this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, "toProp");
|
||
}
|
||
}
|
||
this.$$c = new this.$$ctor({
|
||
target: this.shadowRoot || this,
|
||
props: {
|
||
...this.$$d,
|
||
$$slots,
|
||
$$scope: {
|
||
ctx: []
|
||
}
|
||
}
|
||
});
|
||
const reflect_attributes = () => {
|
||
this.$$r = true;
|
||
for (const key in this.$$p_d) {
|
||
this.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]];
|
||
if (this.$$p_d[key].reflect) {
|
||
const attribute_value = get_custom_element_value(
|
||
key,
|
||
this.$$d[key],
|
||
this.$$p_d,
|
||
"toAttribute"
|
||
);
|
||
if (attribute_value == null) {
|
||
this.removeAttribute(key);
|
||
} else {
|
||
this.setAttribute(this.$$p_d[key].attribute || key, attribute_value);
|
||
}
|
||
}
|
||
}
|
||
this.$$r = false;
|
||
};
|
||
this.$$c.$$.after_update.push(reflect_attributes);
|
||
reflect_attributes();
|
||
for (const type in this.$$l) {
|
||
for (const listener of this.$$l[type]) {
|
||
const unsub = this.$$c.$on(type, listener);
|
||
this.$$l_u.set(listener, unsub);
|
||
}
|
||
}
|
||
this.$$l = {};
|
||
}
|
||
}
|
||
// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte
|
||
// and setting attributes through setAttribute etc, this is helpful
|
||
attributeChangedCallback(attr2, _oldValue, newValue) {
|
||
var _a;
|
||
if (this.$$r)
|
||
return;
|
||
attr2 = this.$$g_p(attr2);
|
||
this.$$d[attr2] = get_custom_element_value(attr2, newValue, this.$$p_d, "toProp");
|
||
(_a = this.$$c) == null ? void 0 : _a.$set({ [attr2]: this.$$d[attr2] });
|
||
}
|
||
disconnectedCallback() {
|
||
this.$$cn = false;
|
||
Promise.resolve().then(() => {
|
||
if (!this.$$cn) {
|
||
this.$$c.$destroy();
|
||
this.$$c = void 0;
|
||
}
|
||
});
|
||
}
|
||
$$g_p(attribute_name) {
|
||
return Object.keys(this.$$p_d).find(
|
||
(key) => this.$$p_d[key].attribute === attribute_name || !this.$$p_d[key].attribute && key.toLowerCase() === attribute_name
|
||
) || attribute_name;
|
||
}
|
||
};
|
||
}
|
||
function get_custom_element_value(prop, value, props_definition, transform) {
|
||
var _a;
|
||
const type = (_a = props_definition[prop]) == null ? void 0 : _a.type;
|
||
value = type === "Boolean" && typeof value !== "boolean" ? value != null : value;
|
||
if (!transform || !props_definition[prop]) {
|
||
return value;
|
||
} else if (transform === "toAttribute") {
|
||
switch (type) {
|
||
case "Object":
|
||
case "Array":
|
||
return value == null ? null : JSON.stringify(value);
|
||
case "Boolean":
|
||
return value ? "" : null;
|
||
case "Number":
|
||
return value == null ? null : value;
|
||
default:
|
||
return value;
|
||
}
|
||
} else {
|
||
switch (type) {
|
||
case "Object":
|
||
case "Array":
|
||
return value && JSON.parse(value);
|
||
case "Boolean":
|
||
return value;
|
||
case "Number":
|
||
return value != null ? +value : value;
|
||
default:
|
||
return value;
|
||
}
|
||
}
|
||
}
|
||
var SvelteComponent = class {
|
||
constructor() {
|
||
/**
|
||
* ### PRIVATE API
|
||
*
|
||
* Do not use, may change at any time
|
||
*
|
||
* @type {any}
|
||
*/
|
||
__publicField(this, "$$");
|
||
/**
|
||
* ### PRIVATE API
|
||
*
|
||
* Do not use, may change at any time
|
||
*
|
||
* @type {any}
|
||
*/
|
||
__publicField(this, "$$set");
|
||
}
|
||
/** @returns {void} */
|
||
$destroy() {
|
||
destroy_component(this, 1);
|
||
this.$destroy = noop;
|
||
}
|
||
/**
|
||
* @template {Extract<keyof Events, string>} K
|
||
* @param {K} type
|
||
* @param {((e: Events[K]) => void) | null | undefined} callback
|
||
* @returns {() => void}
|
||
*/
|
||
$on(type, callback) {
|
||
if (!is_function(callback)) {
|
||
return noop;
|
||
}
|
||
const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
|
||
callbacks.push(callback);
|
||
return () => {
|
||
const index = callbacks.indexOf(callback);
|
||
if (index !== -1)
|
||
callbacks.splice(index, 1);
|
||
};
|
||
}
|
||
/**
|
||
* @param {Partial<Props>} props
|
||
* @returns {void}
|
||
*/
|
||
$set(props) {
|
||
if (this.$$set && !is_empty(props)) {
|
||
this.$$.skip_bound = true;
|
||
this.$$set(props);
|
||
this.$$.skip_bound = false;
|
||
}
|
||
}
|
||
};
|
||
|
||
// node_modules/svelte/src/shared/version.js
|
||
var PUBLIC_VERSION = "4";
|
||
|
||
// node_modules/svelte/src/runtime/internal/disclose-version/index.js
|
||
if (typeof window !== "undefined")
|
||
(window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION);
|
||
|
||
// src/types.ts
|
||
var QUERY_TYPES = ["Default", "Dataview", "Regex"];
|
||
var OPEN_TYPES = ["Active Leaf", "New Leaf", "New Window"];
|
||
var QUERY_OPEN_TYPES = ["Default", "Active Leaf", "New Leaf", "New Window"];
|
||
|
||
// src/gui/modals/OpenRandomNoteModal/OpenRandomNoteModal.svelte
|
||
function add_css(target) {
|
||
append_styles(target, "svelte-1wv2i3", "form.svelte-1wv2i3{display:flex;flex-direction:column;gap:1em}button.svelte-1wv2i3{max-width:max-content}");
|
||
}
|
||
function get_each_context(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[5] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function create_else_block(ctx) {
|
||
let p;
|
||
return {
|
||
c() {
|
||
p = element("p");
|
||
p.textContent = "Go to settings tab to make search queries.";
|
||
attr(p, "class", "setting-item-description");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, p, anchor);
|
||
},
|
||
p: noop,
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(p);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_if_block(ctx) {
|
||
let form;
|
||
let select;
|
||
let t0;
|
||
let button;
|
||
let mounted;
|
||
let dispose;
|
||
let each_value = ensure_array_like(
|
||
/*queries*/
|
||
ctx[0]
|
||
);
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
|
||
}
|
||
return {
|
||
c() {
|
||
form = element("form");
|
||
select = element("select");
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
t0 = space();
|
||
button = element("button");
|
||
button.textContent = "Find Random Note";
|
||
attr(select, "class", "dropdown");
|
||
if (
|
||
/*selectedQuery*/
|
||
ctx[1] === void 0
|
||
)
|
||
add_render_callback(() => (
|
||
/*select_change_handler*/
|
||
ctx[4].call(select)
|
||
));
|
||
attr(button, "class", "mod-cta svelte-1wv2i3");
|
||
attr(button, "type", "submit");
|
||
attr(form, "class", "svelte-1wv2i3");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, form, anchor);
|
||
append(form, select);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].m(select, null);
|
||
}
|
||
}
|
||
select_option(
|
||
select,
|
||
/*selectedQuery*/
|
||
ctx[1],
|
||
true
|
||
);
|
||
append(form, t0);
|
||
append(form, button);
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(
|
||
select,
|
||
"change",
|
||
/*select_change_handler*/
|
||
ctx[4]
|
||
),
|
||
listen(form, "submit", prevent_default(
|
||
/*handleFormSubmit*/
|
||
ctx[2]
|
||
))
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (dirty & /*queries*/
|
||
1) {
|
||
each_value = ensure_array_like(
|
||
/*queries*/
|
||
ctx2[0]
|
||
);
|
||
let i;
|
||
for (i = 0; i < each_value.length; i += 1) {
|
||
const child_ctx = get_each_context(ctx2, each_value, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
} else {
|
||
each_blocks[i] = create_each_block(child_ctx);
|
||
each_blocks[i].c();
|
||
each_blocks[i].m(select, null);
|
||
}
|
||
}
|
||
for (; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].d(1);
|
||
}
|
||
each_blocks.length = each_value.length;
|
||
}
|
||
if (dirty & /*selectedQuery, queries*/
|
||
3) {
|
||
select_option(
|
||
select,
|
||
/*selectedQuery*/
|
||
ctx2[1]
|
||
);
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(form);
|
||
}
|
||
destroy_each(each_blocks, detaching);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function create_each_block(ctx) {
|
||
let option;
|
||
let t_value = (
|
||
/*query*/
|
||
ctx[5].name + ""
|
||
);
|
||
let t;
|
||
let option_value_value;
|
||
return {
|
||
c() {
|
||
option = element("option");
|
||
t = text(t_value);
|
||
option.__value = option_value_value = /*query*/
|
||
ctx[5];
|
||
set_input_value(option, option.__value);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, option, anchor);
|
||
append(option, t);
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (dirty & /*queries*/
|
||
1 && t_value !== (t_value = /*query*/
|
||
ctx2[5].name + ""))
|
||
set_data(t, t_value);
|
||
if (dirty & /*queries*/
|
||
1 && option_value_value !== (option_value_value = /*query*/
|
||
ctx2[5])) {
|
||
option.__value = option_value_value;
|
||
set_input_value(option, option.__value);
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(option);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_fragment(ctx) {
|
||
let h3;
|
||
let t1;
|
||
let if_block_anchor;
|
||
function select_block_type(ctx2, dirty) {
|
||
if (
|
||
/*queries*/
|
||
ctx2[0].length > 0
|
||
)
|
||
return create_if_block;
|
||
return create_else_block;
|
||
}
|
||
let current_block_type = select_block_type(ctx, -1);
|
||
let if_block = current_block_type(ctx);
|
||
return {
|
||
c() {
|
||
h3 = element("h3");
|
||
h3.textContent = "Select Random Note Query";
|
||
t1 = space();
|
||
if_block.c();
|
||
if_block_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, h3, anchor);
|
||
insert(target, t1, anchor);
|
||
if_block.m(target, anchor);
|
||
insert(target, if_block_anchor, anchor);
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (current_block_type === (current_block_type = select_block_type(ctx2, dirty)) && if_block) {
|
||
if_block.p(ctx2, dirty);
|
||
} else {
|
||
if_block.d(1);
|
||
if_block = current_block_type(ctx2);
|
||
if (if_block) {
|
||
if_block.c();
|
||
if_block.m(if_block_anchor.parentNode, if_block_anchor);
|
||
}
|
||
}
|
||
},
|
||
i: noop,
|
||
o: noop,
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(h3);
|
||
detach(t1);
|
||
detach(if_block_anchor);
|
||
}
|
||
if_block.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
function instance($$self, $$props, $$invalidate) {
|
||
let { queries } = $$props;
|
||
let { handleSubmit } = $$props;
|
||
let selectedQuery;
|
||
const handleFormSubmit = () => {
|
||
handleSubmit(selectedQuery);
|
||
};
|
||
function select_change_handler() {
|
||
selectedQuery = select_value(this);
|
||
$$invalidate(1, selectedQuery);
|
||
$$invalidate(0, queries);
|
||
}
|
||
$$self.$$set = ($$props2) => {
|
||
if ("queries" in $$props2)
|
||
$$invalidate(0, queries = $$props2.queries);
|
||
if ("handleSubmit" in $$props2)
|
||
$$invalidate(3, handleSubmit = $$props2.handleSubmit);
|
||
};
|
||
return [queries, selectedQuery, handleFormSubmit, handleSubmit, select_change_handler];
|
||
}
|
||
var OpenRandomNoteModal = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance, create_fragment, safe_not_equal, { queries: 0, handleSubmit: 3 }, add_css);
|
||
}
|
||
};
|
||
var OpenRandomNoteModal_default = OpenRandomNoteModal;
|
||
|
||
// src/gui/modals/OpenRandomNoteModal/openRandomNoteModal.ts
|
||
var RandomNoteModal = class extends import_obsidian.Modal {
|
||
constructor(app, queries, submitCallback) {
|
||
super(app);
|
||
this.submitCallback = void 0;
|
||
this.handleSubmit = (query) => {
|
||
if (this.submitCallback) {
|
||
this.submitCallback(query);
|
||
}
|
||
this.close();
|
||
};
|
||
this.queries = queries;
|
||
this.view = new OpenRandomNoteModal_default({
|
||
target: this.contentEl,
|
||
props: { queries, handleSubmit: this.handleSubmit }
|
||
});
|
||
this.submitCallback = submitCallback;
|
||
}
|
||
};
|
||
|
||
// src/search.ts
|
||
var import_obsidian3 = require("obsidian");
|
||
var import_obsidian_dataview = __toESM(require_lib());
|
||
|
||
// src/utilities.ts
|
||
var import_obsidian2 = require("obsidian");
|
||
|
||
// node_modules/uuid/dist/esm-browser/rng.js
|
||
var getRandomValues;
|
||
var rnds8 = new Uint8Array(16);
|
||
function rng() {
|
||
if (!getRandomValues) {
|
||
getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
|
||
if (!getRandomValues) {
|
||
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
||
}
|
||
}
|
||
return getRandomValues(rnds8);
|
||
}
|
||
|
||
// node_modules/uuid/dist/esm-browser/stringify.js
|
||
var byteToHex = [];
|
||
for (let i = 0; i < 256; ++i) {
|
||
byteToHex.push((i + 256).toString(16).slice(1));
|
||
}
|
||
function unsafeStringify(arr, offset = 0) {
|
||
return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
|
||
}
|
||
|
||
// node_modules/uuid/dist/esm-browser/native.js
|
||
var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
||
var native_default = {
|
||
randomUUID
|
||
};
|
||
|
||
// node_modules/uuid/dist/esm-browser/v4.js
|
||
function v4(options, buf, offset) {
|
||
if (native_default.randomUUID && !buf && !options) {
|
||
return native_default.randomUUID();
|
||
}
|
||
options = options || {};
|
||
const rnds = options.random || (options.rng || rng)();
|
||
rnds[6] = rnds[6] & 15 | 64;
|
||
rnds[8] = rnds[8] & 63 | 128;
|
||
if (buf) {
|
||
offset = offset || 0;
|
||
for (let i = 0; i < 16; ++i) {
|
||
buf[offset + i] = rnds[i];
|
||
}
|
||
return buf;
|
||
}
|
||
return unsafeStringify(rnds);
|
||
}
|
||
var v4_default = v4;
|
||
|
||
// src/utilities.ts
|
||
function getRandomElement(arr) {
|
||
if (arr.length === 0)
|
||
return null;
|
||
const index = Math.floor(Math.random() * arr.length);
|
||
return arr[index];
|
||
}
|
||
function addOrRemoveQueryCommand(plugin, query) {
|
||
if (query.createCommand) {
|
||
plugin.addQueryCommand(query);
|
||
} else {
|
||
plugin.removeQueryCommand(query);
|
||
}
|
||
}
|
||
function findObsidianCommand(app, commandId) {
|
||
return app.commands.findCommand(commandId);
|
||
}
|
||
function deleteObsidianCommand(app, commandId) {
|
||
if (findObsidianCommand(app, commandId)) {
|
||
delete app.commands.commands[commandId];
|
||
delete app.commands.editorCommands[commandId];
|
||
}
|
||
}
|
||
function getPluginCommandId(commandId, manifest) {
|
||
return manifest.id + ":" + commandId;
|
||
}
|
||
function getTagString(tag) {
|
||
if (tag.startsWith("!#")) {
|
||
return tag.replace("!", "");
|
||
} else if (tag.startsWith("!")) {
|
||
return tag.replace("!", "#");
|
||
} else if (tag.startsWith("#")) {
|
||
return tag;
|
||
} else {
|
||
return "#" + tag;
|
||
}
|
||
}
|
||
function getTagStrings(tags) {
|
||
return tags.map((tag) => getTagString(tag));
|
||
}
|
||
function getQueryCommandId() {
|
||
return "query:" + v4_default();
|
||
}
|
||
function createQuery(name, query) {
|
||
return {
|
||
id: getQueryCommandId(),
|
||
name,
|
||
query,
|
||
type: "Default",
|
||
createCommand: false,
|
||
useDisabledFolders: true,
|
||
openType: "Default"
|
||
};
|
||
}
|
||
function flattenFiles(abstractFiles) {
|
||
return abstractFiles.map((abstractFile) => flattenFile(abstractFile)).flat();
|
||
}
|
||
function flattenFile(abstractFile) {
|
||
if (abstractFile instanceof import_obsidian2.TFolder) {
|
||
return flattenFiles(abstractFile.children);
|
||
}
|
||
return [abstractFile];
|
||
}
|
||
function toRecord(arr) {
|
||
const recordObject = {};
|
||
arr.forEach((item) => recordObject[item] = item);
|
||
return recordObject;
|
||
}
|
||
function getOpenTypeLabels() {
|
||
return OPEN_TYPES.map((item) => item);
|
||
}
|
||
|
||
// src/search.ts
|
||
var Search = class {
|
||
constructor(plugin) {
|
||
this.searchFiles = async (files, disabledDisabledPaths) => {
|
||
const result = files.filter((file) => !this.isInDisabledFolder(file, disabledDisabledPaths));
|
||
if (result.length <= 0) {
|
||
new import_obsidian3.Notice(
|
||
"Advanced Random Note: Found zero files."
|
||
);
|
||
}
|
||
return result;
|
||
};
|
||
this.plugin = plugin;
|
||
}
|
||
async search(query) {
|
||
let result = [];
|
||
if (query.type === "Dataview") {
|
||
const api = (0, import_obsidian_dataview.getAPI)();
|
||
if (!api) {
|
||
new import_obsidian3.Notice(
|
||
"Advanced Random Note: Dataview API could not be found, is Dataview installed?"
|
||
);
|
||
return [];
|
||
}
|
||
const dataviewResult = await (api == null ? void 0 : api.query(query.query));
|
||
if (!dataviewResult || !(dataviewResult == null ? void 0 : dataviewResult.successful)) {
|
||
new import_obsidian3.Notice(
|
||
"Advanced Random Note: Error running dataview query"
|
||
);
|
||
return [];
|
||
}
|
||
if (dataviewResult.value.type !== "list") {
|
||
new import_obsidian3.Notice(
|
||
"Advanced Random Note: Dataview query is not a list"
|
||
);
|
||
return [];
|
||
}
|
||
result = dataviewResult.value.values.map(
|
||
(value) => this.plugin.app.vault.getAbstractFileByPath(value.path)
|
||
).filter((file) => file !== null && file instanceof import_obsidian3.TFile).map((file) => file);
|
||
} else {
|
||
const files = this.plugin.app.vault.getFiles();
|
||
if (query.type === "Regex") {
|
||
const regex = new RegExp(query.query);
|
||
result = files.filter((file) => regex.test(file.path));
|
||
} else {
|
||
result = files.filter(
|
||
(file) => this.checkFileToMatchQuery(file, query)
|
||
);
|
||
}
|
||
}
|
||
if (query.useDisabledFolders) {
|
||
result = result.filter((file) => !this.isInDisabledFolder(file));
|
||
if (result.length <= 0) {
|
||
new import_obsidian3.Notice(
|
||
"Advanced Random Note: Found zero files matching your query."
|
||
);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
processQuery(query) {
|
||
const regexResult = {
|
||
path: /path:(.*?)(tag:|file:|$)/.exec(query.query),
|
||
file: /file:(.*?)(tag:|path:|$)/.exec(query.query),
|
||
tags: /tag:(.*?)(file:|path:|$)/.exec(query.query)
|
||
};
|
||
const path = regexResult.path ? regexResult.path[1].trim() : "";
|
||
const file = regexResult.file ? regexResult.file[1].trim() : "";
|
||
const tags = (regexResult.tags ? regexResult.tags[1].trim().split(" ") : []).map((tag) => {
|
||
const trimmedTag = tag.trim();
|
||
return {
|
||
included: !trimmedTag.startsWith("!"),
|
||
tag: getTagString(trimmedTag)
|
||
};
|
||
});
|
||
const processedQuery = {
|
||
path,
|
||
file,
|
||
tags
|
||
};
|
||
return processedQuery;
|
||
}
|
||
checkFileToMatchQuery(file, query) {
|
||
const processedQuery = this.processQuery(query);
|
||
return this.checkTagsWithFile(processedQuery.tags, file) && this.checkFilenameWithFile(processedQuery.file, file) && this.checkPathWithFile(processedQuery.path, file);
|
||
}
|
||
checkTagsWithFile(tags, file) {
|
||
var _a, _b, _c, _d;
|
||
if (tags.length <= 0) {
|
||
return true;
|
||
} else if (file.extension !== "md") {
|
||
return false;
|
||
}
|
||
const fileCache = this.plugin.app.metadataCache.getFileCache(file);
|
||
const fileCacheTags = (_a = fileCache == null ? void 0 : fileCache.tags) != null ? _a : [];
|
||
let frontmatterTags = (_c = (_b = fileCache == null ? void 0 : fileCache.frontmatter) == null ? void 0 : _b.tags) != null ? _c : [];
|
||
const frontmatterTag = (_d = fileCache == null ? void 0 : fileCache.frontmatter) == null ? void 0 : _d.tag;
|
||
if (frontmatterTags[0] === null)
|
||
frontmatterTags = [];
|
||
let fileTags = fileCacheTags.map((tagCache) => tagCache.tag);
|
||
fileTags = fileTags.concat(getTagStrings(frontmatterTags));
|
||
if (frontmatterTag) {
|
||
fileTags.push(getTagString(frontmatterTag));
|
||
}
|
||
if (fileTags.length <= 0 && tags.length > 0)
|
||
return false;
|
||
const includedTags = tags.filter((tag) => tag.included);
|
||
const excludedTags = tags.filter((tag) => !tag.included);
|
||
let includesTags = false;
|
||
let excludesTags = false;
|
||
includesTags = includedTags && fileTags && includedTags.every((searchTag) => {
|
||
return fileTags.some(
|
||
(fileTag) => fileTag.includes(searchTag.tag)
|
||
);
|
||
}) || !includedTags;
|
||
excludesTags = excludedTags && fileTags && excludedTags.every((searchTag) => {
|
||
return fileTags.every(
|
||
(fileTag) => !fileTag.includes(searchTag.tag)
|
||
);
|
||
}) || excludedTags && !fileTags || !excludedTags;
|
||
return includesTags && excludesTags;
|
||
}
|
||
checkFilenameWithFile(filename, file) {
|
||
return file.name.includes(filename);
|
||
}
|
||
checkPathWithFile(path, file) {
|
||
return path !== "/" && file.path.includes(path) || path === "/" && !file.path.includes(path);
|
||
}
|
||
isInDisabledFolder(file, disabledDisabledPaths) {
|
||
if (this.plugin.settings.disabledFolders === "")
|
||
return false;
|
||
return this.plugin.settings.disabledFolders.split(/\r?\n/).some((disabledFolder) => {
|
||
const trimmedFolder = disabledFolder.trim();
|
||
if (disabledDisabledPaths && trimmedFolder === disabledDisabledPaths)
|
||
return false;
|
||
return trimmedFolder && file.path.startsWith(trimmedFolder);
|
||
});
|
||
}
|
||
};
|
||
|
||
// src/settings.ts
|
||
var import_obsidian5 = require("obsidian");
|
||
|
||
// node_modules/@fortawesome/free-solid-svg-icons/index.mjs
|
||
var faTrash = {
|
||
prefix: "fas",
|
||
iconName: "trash",
|
||
icon: [448, 512, [], "f1f8", "M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"]
|
||
};
|
||
var faGear = {
|
||
prefix: "fas",
|
||
iconName: "gear",
|
||
icon: [512, 512, [9881, "cog"], "f013", "M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"]
|
||
};
|
||
var faCog = faGear;
|
||
var faBolt = {
|
||
prefix: "fas",
|
||
iconName: "bolt",
|
||
icon: [448, 512, [9889, "zap"], "f0e7", "M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z"]
|
||
};
|
||
var faClone = {
|
||
prefix: "fas",
|
||
iconName: "clone",
|
||
icon: [512, 512, [], "f24d", "M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z"]
|
||
};
|
||
|
||
// node_modules/svelte-awesome/components/svg/Raw.svelte
|
||
function create_fragment2(ctx) {
|
||
let g;
|
||
return {
|
||
c() {
|
||
g = svg_element("g");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, g, anchor);
|
||
g.innerHTML = /*raw*/
|
||
ctx[0];
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (dirty & /*raw*/
|
||
1)
|
||
g.innerHTML = /*raw*/
|
||
ctx2[0];
|
||
;
|
||
},
|
||
i: noop,
|
||
o: noop,
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(g);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function instance2($$self, $$props, $$invalidate) {
|
||
let cursor = 870711;
|
||
function getId() {
|
||
cursor += 1;
|
||
return `fa-${cursor.toString(16)}`;
|
||
}
|
||
let raw = "";
|
||
let { data } = $$props;
|
||
function getRaw(data2) {
|
||
if (!data2 || !data2.raw) {
|
||
return "";
|
||
}
|
||
let rawData = data2.raw;
|
||
const ids = {};
|
||
rawData = rawData.replace(/\s(?:xml:)?id=["']?([^"')\s]+)/g, (match, id) => {
|
||
const uniqueId = getId();
|
||
ids[id] = uniqueId;
|
||
return ` id="${uniqueId}"`;
|
||
});
|
||
rawData = rawData.replace(/#(?:([^'")\s]+)|xpointer\(id\((['"]?)([^')]+)\2\)\))/g, (match, rawId, _, pointerId) => {
|
||
const id = rawId || pointerId;
|
||
if (!id || !ids[id]) {
|
||
return match;
|
||
}
|
||
return `#${ids[id]}`;
|
||
});
|
||
return rawData;
|
||
}
|
||
$$self.$$set = ($$props2) => {
|
||
if ("data" in $$props2)
|
||
$$invalidate(1, data = $$props2.data);
|
||
};
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty & /*data*/
|
||
2) {
|
||
$:
|
||
$$invalidate(0, raw = getRaw(data));
|
||
}
|
||
};
|
||
return [raw, data];
|
||
}
|
||
var Raw = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance2, create_fragment2, safe_not_equal, { data: 1 });
|
||
}
|
||
};
|
||
var Raw_default = Raw;
|
||
|
||
// node_modules/svelte-awesome/components/svg/Svg.svelte
|
||
function add_css2(target) {
|
||
append_styles(target, "svelte-1mc5hvj", ".fa-icon.svelte-1mc5hvj{display:inline-block;fill:currentColor}.fa-flip-horizontal.svelte-1mc5hvj{transform:scale(-1, 1)}.fa-flip-vertical.svelte-1mc5hvj{transform:scale(1, -1)}.fa-spin.svelte-1mc5hvj{animation:svelte-1mc5hvj-fa-spin 1s 0s infinite linear}.fa-inverse.svelte-1mc5hvj{color:#fff}.fa-pulse.svelte-1mc5hvj{animation:svelte-1mc5hvj-fa-spin 1s infinite steps(8)}@keyframes svelte-1mc5hvj-fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}");
|
||
}
|
||
function create_fragment3(ctx) {
|
||
let svg;
|
||
let svg_class_value;
|
||
let svg_role_value;
|
||
let current;
|
||
const default_slot_template = (
|
||
/*#slots*/
|
||
ctx[12].default
|
||
);
|
||
const default_slot = create_slot(
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/
|
||
ctx[11],
|
||
null
|
||
);
|
||
let svg_levels = [
|
||
{ version: "1.1" },
|
||
{
|
||
class: svg_class_value = "fa-icon " + /*className*/
|
||
ctx[0]
|
||
},
|
||
{ width: (
|
||
/*width*/
|
||
ctx[1]
|
||
) },
|
||
{ height: (
|
||
/*height*/
|
||
ctx[2]
|
||
) },
|
||
{ "aria-label": (
|
||
/*label*/
|
||
ctx[9]
|
||
) },
|
||
{
|
||
role: svg_role_value = /*label*/
|
||
ctx[9] ? "img" : "presentation"
|
||
},
|
||
{ viewBox: (
|
||
/*box*/
|
||
ctx[3]
|
||
) },
|
||
{ style: (
|
||
/*style*/
|
||
ctx[8]
|
||
) },
|
||
/*$$restProps*/
|
||
ctx[10]
|
||
];
|
||
let svg_data = {};
|
||
for (let i = 0; i < svg_levels.length; i += 1) {
|
||
svg_data = assign(svg_data, svg_levels[i]);
|
||
}
|
||
return {
|
||
c() {
|
||
svg = svg_element("svg");
|
||
if (default_slot)
|
||
default_slot.c();
|
||
set_svg_attributes(svg, svg_data);
|
||
toggle_class(
|
||
svg,
|
||
"fa-spin",
|
||
/*spin*/
|
||
ctx[4]
|
||
);
|
||
toggle_class(
|
||
svg,
|
||
"fa-pulse",
|
||
/*pulse*/
|
||
ctx[6]
|
||
);
|
||
toggle_class(
|
||
svg,
|
||
"fa-inverse",
|
||
/*inverse*/
|
||
ctx[5]
|
||
);
|
||
toggle_class(
|
||
svg,
|
||
"fa-flip-horizontal",
|
||
/*flip*/
|
||
ctx[7] === "horizontal"
|
||
);
|
||
toggle_class(
|
||
svg,
|
||
"fa-flip-vertical",
|
||
/*flip*/
|
||
ctx[7] === "vertical"
|
||
);
|
||
toggle_class(svg, "svelte-1mc5hvj", true);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, svg, anchor);
|
||
if (default_slot) {
|
||
default_slot.m(svg, null);
|
||
}
|
||
current = true;
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/
|
||
2048)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx2,
|
||
/*$$scope*/
|
||
ctx2[11],
|
||
!current ? get_all_dirty_from_scope(
|
||
/*$$scope*/
|
||
ctx2[11]
|
||
) : get_slot_changes(
|
||
default_slot_template,
|
||
/*$$scope*/
|
||
ctx2[11],
|
||
dirty,
|
||
null
|
||
),
|
||
null
|
||
);
|
||
}
|
||
}
|
||
set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [
|
||
{ version: "1.1" },
|
||
(!current || dirty & /*className*/
|
||
1 && svg_class_value !== (svg_class_value = "fa-icon " + /*className*/
|
||
ctx2[0])) && { class: svg_class_value },
|
||
(!current || dirty & /*width*/
|
||
2) && { width: (
|
||
/*width*/
|
||
ctx2[1]
|
||
) },
|
||
(!current || dirty & /*height*/
|
||
4) && { height: (
|
||
/*height*/
|
||
ctx2[2]
|
||
) },
|
||
(!current || dirty & /*label*/
|
||
512) && { "aria-label": (
|
||
/*label*/
|
||
ctx2[9]
|
||
) },
|
||
(!current || dirty & /*label*/
|
||
512 && svg_role_value !== (svg_role_value = /*label*/
|
||
ctx2[9] ? "img" : "presentation")) && { role: svg_role_value },
|
||
(!current || dirty & /*box*/
|
||
8) && { viewBox: (
|
||
/*box*/
|
||
ctx2[3]
|
||
) },
|
||
(!current || dirty & /*style*/
|
||
256) && { style: (
|
||
/*style*/
|
||
ctx2[8]
|
||
) },
|
||
dirty & /*$$restProps*/
|
||
1024 && /*$$restProps*/
|
||
ctx2[10]
|
||
]));
|
||
toggle_class(
|
||
svg,
|
||
"fa-spin",
|
||
/*spin*/
|
||
ctx2[4]
|
||
);
|
||
toggle_class(
|
||
svg,
|
||
"fa-pulse",
|
||
/*pulse*/
|
||
ctx2[6]
|
||
);
|
||
toggle_class(
|
||
svg,
|
||
"fa-inverse",
|
||
/*inverse*/
|
||
ctx2[5]
|
||
);
|
||
toggle_class(
|
||
svg,
|
||
"fa-flip-horizontal",
|
||
/*flip*/
|
||
ctx2[7] === "horizontal"
|
||
);
|
||
toggle_class(
|
||
svg,
|
||
"fa-flip-vertical",
|
||
/*flip*/
|
||
ctx2[7] === "vertical"
|
||
);
|
||
toggle_class(svg, "svelte-1mc5hvj", true);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(default_slot, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(svg);
|
||
}
|
||
if (default_slot)
|
||
default_slot.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
function instance3($$self, $$props, $$invalidate) {
|
||
const omit_props_names = ["class", "width", "height", "box", "spin", "inverse", "pulse", "flip", "style", "label"];
|
||
let $$restProps = compute_rest_props($$props, omit_props_names);
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
let { class: className = "" } = $$props;
|
||
let { width } = $$props;
|
||
let { height } = $$props;
|
||
let { box = "0 0 0 0" } = $$props;
|
||
let { spin = false } = $$props;
|
||
let { inverse = false } = $$props;
|
||
let { pulse = false } = $$props;
|
||
let { flip = "none" } = $$props;
|
||
let { style = "" } = $$props;
|
||
let { label = "" } = $$props;
|
||
$$self.$$set = ($$new_props) => {
|
||
$$props = assign(assign({}, $$props), exclude_internal_props($$new_props));
|
||
$$invalidate(10, $$restProps = compute_rest_props($$props, omit_props_names));
|
||
if ("class" in $$new_props)
|
||
$$invalidate(0, className = $$new_props.class);
|
||
if ("width" in $$new_props)
|
||
$$invalidate(1, width = $$new_props.width);
|
||
if ("height" in $$new_props)
|
||
$$invalidate(2, height = $$new_props.height);
|
||
if ("box" in $$new_props)
|
||
$$invalidate(3, box = $$new_props.box);
|
||
if ("spin" in $$new_props)
|
||
$$invalidate(4, spin = $$new_props.spin);
|
||
if ("inverse" in $$new_props)
|
||
$$invalidate(5, inverse = $$new_props.inverse);
|
||
if ("pulse" in $$new_props)
|
||
$$invalidate(6, pulse = $$new_props.pulse);
|
||
if ("flip" in $$new_props)
|
||
$$invalidate(7, flip = $$new_props.flip);
|
||
if ("style" in $$new_props)
|
||
$$invalidate(8, style = $$new_props.style);
|
||
if ("label" in $$new_props)
|
||
$$invalidate(9, label = $$new_props.label);
|
||
if ("$$scope" in $$new_props)
|
||
$$invalidate(11, $$scope = $$new_props.$$scope);
|
||
};
|
||
return [
|
||
className,
|
||
width,
|
||
height,
|
||
box,
|
||
spin,
|
||
inverse,
|
||
pulse,
|
||
flip,
|
||
style,
|
||
label,
|
||
$$restProps,
|
||
$$scope,
|
||
slots
|
||
];
|
||
}
|
||
var Svg = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(
|
||
this,
|
||
options,
|
||
instance3,
|
||
create_fragment3,
|
||
safe_not_equal,
|
||
{
|
||
class: 0,
|
||
width: 1,
|
||
height: 2,
|
||
box: 3,
|
||
spin: 4,
|
||
inverse: 5,
|
||
pulse: 6,
|
||
flip: 7,
|
||
style: 8,
|
||
label: 9
|
||
},
|
||
add_css2
|
||
);
|
||
}
|
||
};
|
||
var Svg_default = Svg;
|
||
|
||
// node_modules/svelte-awesome/components/Icon.svelte
|
||
function get_each_context2(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[24] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function get_each_context_1(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[27] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function create_if_block2(ctx) {
|
||
let t0;
|
||
let t1;
|
||
let if_block2_anchor;
|
||
let current;
|
||
let if_block0 = (
|
||
/*iconData*/
|
||
ctx[6].paths && create_if_block_3(ctx)
|
||
);
|
||
let if_block1 = (
|
||
/*iconData*/
|
||
ctx[6].polygons && create_if_block_2(ctx)
|
||
);
|
||
let if_block2 = (
|
||
/*iconData*/
|
||
ctx[6].raw && create_if_block_1(ctx)
|
||
);
|
||
return {
|
||
c() {
|
||
if (if_block0)
|
||
if_block0.c();
|
||
t0 = space();
|
||
if (if_block1)
|
||
if_block1.c();
|
||
t1 = space();
|
||
if (if_block2)
|
||
if_block2.c();
|
||
if_block2_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
if (if_block0)
|
||
if_block0.m(target, anchor);
|
||
insert(target, t0, anchor);
|
||
if (if_block1)
|
||
if_block1.m(target, anchor);
|
||
insert(target, t1, anchor);
|
||
if (if_block2)
|
||
if_block2.m(target, anchor);
|
||
insert(target, if_block2_anchor, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (
|
||
/*iconData*/
|
||
ctx2[6].paths
|
||
) {
|
||
if (if_block0) {
|
||
if_block0.p(ctx2, dirty);
|
||
} else {
|
||
if_block0 = create_if_block_3(ctx2);
|
||
if_block0.c();
|
||
if_block0.m(t0.parentNode, t0);
|
||
}
|
||
} else if (if_block0) {
|
||
if_block0.d(1);
|
||
if_block0 = null;
|
||
}
|
||
if (
|
||
/*iconData*/
|
||
ctx2[6].polygons
|
||
) {
|
||
if (if_block1) {
|
||
if_block1.p(ctx2, dirty);
|
||
} else {
|
||
if_block1 = create_if_block_2(ctx2);
|
||
if_block1.c();
|
||
if_block1.m(t1.parentNode, t1);
|
||
}
|
||
} else if (if_block1) {
|
||
if_block1.d(1);
|
||
if_block1 = null;
|
||
}
|
||
if (
|
||
/*iconData*/
|
||
ctx2[6].raw
|
||
) {
|
||
if (if_block2) {
|
||
if_block2.p(ctx2, dirty);
|
||
if (dirty & /*iconData*/
|
||
64) {
|
||
transition_in(if_block2, 1);
|
||
}
|
||
} else {
|
||
if_block2 = create_if_block_1(ctx2);
|
||
if_block2.c();
|
||
transition_in(if_block2, 1);
|
||
if_block2.m(if_block2_anchor.parentNode, if_block2_anchor);
|
||
}
|
||
} else if (if_block2) {
|
||
group_outros();
|
||
transition_out(if_block2, 1, 1, () => {
|
||
if_block2 = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block2);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block2);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(t0);
|
||
detach(t1);
|
||
detach(if_block2_anchor);
|
||
}
|
||
if (if_block0)
|
||
if_block0.d(detaching);
|
||
if (if_block1)
|
||
if_block1.d(detaching);
|
||
if (if_block2)
|
||
if_block2.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_3(ctx) {
|
||
let each_1_anchor;
|
||
let each_value_1 = ensure_array_like(
|
||
/*iconData*/
|
||
ctx[6].paths
|
||
);
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value_1.length; i += 1) {
|
||
each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
|
||
}
|
||
return {
|
||
c() {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
each_1_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].m(target, anchor);
|
||
}
|
||
}
|
||
insert(target, each_1_anchor, anchor);
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (dirty & /*iconData*/
|
||
64) {
|
||
each_value_1 = ensure_array_like(
|
||
/*iconData*/
|
||
ctx2[6].paths
|
||
);
|
||
let i;
|
||
for (i = 0; i < each_value_1.length; i += 1) {
|
||
const child_ctx = get_each_context_1(ctx2, each_value_1, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
} else {
|
||
each_blocks[i] = create_each_block_1(child_ctx);
|
||
each_blocks[i].c();
|
||
each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
|
||
}
|
||
}
|
||
for (; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].d(1);
|
||
}
|
||
each_blocks.length = each_value_1.length;
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(each_1_anchor);
|
||
}
|
||
destroy_each(each_blocks, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_each_block_1(ctx) {
|
||
let path_1;
|
||
let path_1_levels = [
|
||
/*path*/
|
||
ctx[27]
|
||
];
|
||
let path_data = {};
|
||
for (let i = 0; i < path_1_levels.length; i += 1) {
|
||
path_data = assign(path_data, path_1_levels[i]);
|
||
}
|
||
return {
|
||
c() {
|
||
path_1 = svg_element("path");
|
||
set_svg_attributes(path_1, path_data);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, path_1, anchor);
|
||
},
|
||
p(ctx2, dirty) {
|
||
set_svg_attributes(path_1, path_data = get_spread_update(path_1_levels, [dirty & /*iconData*/
|
||
64 && /*path*/
|
||
ctx2[27]]));
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(path_1);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_2(ctx) {
|
||
let each_1_anchor;
|
||
let each_value = ensure_array_like(
|
||
/*iconData*/
|
||
ctx[6].polygons
|
||
);
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i));
|
||
}
|
||
return {
|
||
c() {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
each_1_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].m(target, anchor);
|
||
}
|
||
}
|
||
insert(target, each_1_anchor, anchor);
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (dirty & /*iconData*/
|
||
64) {
|
||
each_value = ensure_array_like(
|
||
/*iconData*/
|
||
ctx2[6].polygons
|
||
);
|
||
let i;
|
||
for (i = 0; i < each_value.length; i += 1) {
|
||
const child_ctx = get_each_context2(ctx2, each_value, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
} else {
|
||
each_blocks[i] = create_each_block2(child_ctx);
|
||
each_blocks[i].c();
|
||
each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
|
||
}
|
||
}
|
||
for (; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].d(1);
|
||
}
|
||
each_blocks.length = each_value.length;
|
||
}
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(each_1_anchor);
|
||
}
|
||
destroy_each(each_blocks, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_each_block2(ctx) {
|
||
let polygon_1;
|
||
let polygon_1_levels = [
|
||
/*polygon*/
|
||
ctx[24]
|
||
];
|
||
let polygon_data = {};
|
||
for (let i = 0; i < polygon_1_levels.length; i += 1) {
|
||
polygon_data = assign(polygon_data, polygon_1_levels[i]);
|
||
}
|
||
return {
|
||
c() {
|
||
polygon_1 = svg_element("polygon");
|
||
set_svg_attributes(polygon_1, polygon_data);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, polygon_1, anchor);
|
||
},
|
||
p(ctx2, dirty) {
|
||
set_svg_attributes(polygon_1, polygon_data = get_spread_update(polygon_1_levels, [dirty & /*iconData*/
|
||
64 && /*polygon*/
|
||
ctx2[24]]));
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(polygon_1);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_if_block_1(ctx) {
|
||
let raw;
|
||
let updating_data;
|
||
let current;
|
||
function raw_data_binding(value) {
|
||
ctx[16](value);
|
||
}
|
||
let raw_props = {};
|
||
if (
|
||
/*iconData*/
|
||
ctx[6] !== void 0
|
||
) {
|
||
raw_props.data = /*iconData*/
|
||
ctx[6];
|
||
}
|
||
raw = new Raw_default({ props: raw_props });
|
||
binding_callbacks.push(() => bind(raw, "data", raw_data_binding));
|
||
return {
|
||
c() {
|
||
create_component(raw.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(raw, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
const raw_changes = {};
|
||
if (!updating_data && dirty & /*iconData*/
|
||
64) {
|
||
updating_data = true;
|
||
raw_changes.data = /*iconData*/
|
||
ctx2[6];
|
||
add_flush_callback(() => updating_data = false);
|
||
}
|
||
raw.$set(raw_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(raw.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(raw.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(raw, detaching);
|
||
}
|
||
};
|
||
}
|
||
function fallback_block(ctx) {
|
||
let if_block_anchor;
|
||
let current;
|
||
let if_block = (
|
||
/*iconData*/
|
||
ctx[6] && create_if_block2(ctx)
|
||
);
|
||
return {
|
||
c() {
|
||
if (if_block)
|
||
if_block.c();
|
||
if_block_anchor = empty();
|
||
},
|
||
m(target, anchor) {
|
||
if (if_block)
|
||
if_block.m(target, anchor);
|
||
insert(target, if_block_anchor, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (
|
||
/*iconData*/
|
||
ctx2[6]
|
||
) {
|
||
if (if_block) {
|
||
if_block.p(ctx2, dirty);
|
||
if (dirty & /*iconData*/
|
||
64) {
|
||
transition_in(if_block, 1);
|
||
}
|
||
} else {
|
||
if_block = create_if_block2(ctx2);
|
||
if_block.c();
|
||
transition_in(if_block, 1);
|
||
if_block.m(if_block_anchor.parentNode, if_block_anchor);
|
||
}
|
||
} else if (if_block) {
|
||
group_outros();
|
||
transition_out(if_block, 1, 1, () => {
|
||
if_block = null;
|
||
});
|
||
check_outros();
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(if_block);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(if_block);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(if_block_anchor);
|
||
}
|
||
if (if_block)
|
||
if_block.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_default_slot(ctx) {
|
||
let current;
|
||
const default_slot_template = (
|
||
/*#slots*/
|
||
ctx[15].default
|
||
);
|
||
const default_slot = create_slot(
|
||
default_slot_template,
|
||
ctx,
|
||
/*$$scope*/
|
||
ctx[17],
|
||
null
|
||
);
|
||
const default_slot_or_fallback = default_slot || fallback_block(ctx);
|
||
return {
|
||
c() {
|
||
if (default_slot_or_fallback)
|
||
default_slot_or_fallback.c();
|
||
},
|
||
m(target, anchor) {
|
||
if (default_slot_or_fallback) {
|
||
default_slot_or_fallback.m(target, anchor);
|
||
}
|
||
current = true;
|
||
},
|
||
p(ctx2, dirty) {
|
||
if (default_slot) {
|
||
if (default_slot.p && (!current || dirty & /*$$scope*/
|
||
131072)) {
|
||
update_slot_base(
|
||
default_slot,
|
||
default_slot_template,
|
||
ctx2,
|
||
/*$$scope*/
|
||
ctx2[17],
|
||
!current ? get_all_dirty_from_scope(
|
||
/*$$scope*/
|
||
ctx2[17]
|
||
) : get_slot_changes(
|
||
default_slot_template,
|
||
/*$$scope*/
|
||
ctx2[17],
|
||
dirty,
|
||
null
|
||
),
|
||
null
|
||
);
|
||
}
|
||
} else {
|
||
if (default_slot_or_fallback && default_slot_or_fallback.p && (!current || dirty & /*iconData*/
|
||
64)) {
|
||
default_slot_or_fallback.p(ctx2, !current ? -1 : dirty);
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(default_slot_or_fallback, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(default_slot_or_fallback, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (default_slot_or_fallback)
|
||
default_slot_or_fallback.d(detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_fragment4(ctx) {
|
||
let svg;
|
||
let current;
|
||
const svg_spread_levels = [
|
||
{ label: (
|
||
/*label*/
|
||
ctx[5]
|
||
) },
|
||
{ width: (
|
||
/*width*/
|
||
ctx[7]
|
||
) },
|
||
{ height: (
|
||
/*height*/
|
||
ctx[8]
|
||
) },
|
||
{ box: (
|
||
/*box*/
|
||
ctx[10]
|
||
) },
|
||
{ style: (
|
||
/*combinedStyle*/
|
||
ctx[9]
|
||
) },
|
||
{ spin: (
|
||
/*spin*/
|
||
ctx[1]
|
||
) },
|
||
{ flip: (
|
||
/*flip*/
|
||
ctx[4]
|
||
) },
|
||
{ inverse: (
|
||
/*inverse*/
|
||
ctx[2]
|
||
) },
|
||
{ pulse: (
|
||
/*pulse*/
|
||
ctx[3]
|
||
) },
|
||
{ class: (
|
||
/*className*/
|
||
ctx[0]
|
||
) },
|
||
/*$$restProps*/
|
||
ctx[11]
|
||
];
|
||
let svg_props = {
|
||
$$slots: { default: [create_default_slot] },
|
||
$$scope: { ctx }
|
||
};
|
||
for (let i = 0; i < svg_spread_levels.length; i += 1) {
|
||
svg_props = assign(svg_props, svg_spread_levels[i]);
|
||
}
|
||
svg = new Svg_default({ props: svg_props });
|
||
return {
|
||
c() {
|
||
create_component(svg.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(svg, target, anchor);
|
||
current = true;
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
const svg_changes = dirty & /*label, width, height, box, combinedStyle, spin, flip, inverse, pulse, className, $$restProps*/
|
||
4031 ? get_spread_update(svg_spread_levels, [
|
||
dirty & /*label*/
|
||
32 && { label: (
|
||
/*label*/
|
||
ctx2[5]
|
||
) },
|
||
dirty & /*width*/
|
||
128 && { width: (
|
||
/*width*/
|
||
ctx2[7]
|
||
) },
|
||
dirty & /*height*/
|
||
256 && { height: (
|
||
/*height*/
|
||
ctx2[8]
|
||
) },
|
||
dirty & /*box*/
|
||
1024 && { box: (
|
||
/*box*/
|
||
ctx2[10]
|
||
) },
|
||
dirty & /*combinedStyle*/
|
||
512 && { style: (
|
||
/*combinedStyle*/
|
||
ctx2[9]
|
||
) },
|
||
dirty & /*spin*/
|
||
2 && { spin: (
|
||
/*spin*/
|
||
ctx2[1]
|
||
) },
|
||
dirty & /*flip*/
|
||
16 && { flip: (
|
||
/*flip*/
|
||
ctx2[4]
|
||
) },
|
||
dirty & /*inverse*/
|
||
4 && { inverse: (
|
||
/*inverse*/
|
||
ctx2[2]
|
||
) },
|
||
dirty & /*pulse*/
|
||
8 && { pulse: (
|
||
/*pulse*/
|
||
ctx2[3]
|
||
) },
|
||
dirty & /*className*/
|
||
1 && { class: (
|
||
/*className*/
|
||
ctx2[0]
|
||
) },
|
||
dirty & /*$$restProps*/
|
||
2048 && get_spread_object(
|
||
/*$$restProps*/
|
||
ctx2[11]
|
||
)
|
||
]) : {};
|
||
if (dirty & /*$$scope, iconData*/
|
||
131136) {
|
||
svg_changes.$$scope = { dirty, ctx: ctx2 };
|
||
}
|
||
svg.$set(svg_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(svg.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(svg.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(svg, detaching);
|
||
}
|
||
};
|
||
}
|
||
var childrenHeight = 0;
|
||
var childrenWidth = 0;
|
||
var outerScale = 1;
|
||
function normaliseData(data) {
|
||
let name;
|
||
let iconData;
|
||
if (!data) {
|
||
return void 0;
|
||
} else if ("definition" in data) {
|
||
console.error("`import faIconName from '@fortawesome/package-name/faIconName` not supported - Please use `import { faIconName } from '@fortawesome/package-name/faIconName'` instead");
|
||
return void 0;
|
||
} else if ("iconName" in data && "icon" in data) {
|
||
name = data.iconName;
|
||
let paths = [];
|
||
const [width, height, , , path] = data.icon;
|
||
if (Array.isArray(path)) {
|
||
paths = path;
|
||
} else {
|
||
paths = [path];
|
||
}
|
||
iconData = {
|
||
width,
|
||
height,
|
||
paths: paths.map((path2) => {
|
||
return { d: path2 };
|
||
})
|
||
};
|
||
} else {
|
||
name = Object.keys(data)[0];
|
||
iconData = data[name];
|
||
}
|
||
return iconData;
|
||
}
|
||
function instance4($$self, $$props, $$invalidate) {
|
||
const omit_props_names = ["class", "data", "scale", "spin", "inverse", "pulse", "flip", "label", "style"];
|
||
let $$restProps = compute_rest_props($$props, omit_props_names);
|
||
let { $$slots: slots = {}, $$scope } = $$props;
|
||
let { class: className = "" } = $$props;
|
||
let { data } = $$props;
|
||
let iconData;
|
||
let { scale = 1 } = $$props;
|
||
let { spin = false } = $$props;
|
||
let { inverse = false } = $$props;
|
||
let { pulse = false } = $$props;
|
||
let { flip = void 0 } = $$props;
|
||
let { label = "" } = $$props;
|
||
let { style = "" } = $$props;
|
||
let width = 10;
|
||
let height = 10;
|
||
let combinedStyle;
|
||
let box;
|
||
function normalisedScale() {
|
||
let numScale = 1;
|
||
if (typeof scale !== "undefined") {
|
||
numScale = Number(scale);
|
||
}
|
||
if (isNaN(numScale) || numScale <= 0) {
|
||
console.warn('Invalid prop: prop "scale" should be a number over 0.');
|
||
return outerScale;
|
||
}
|
||
return numScale * outerScale;
|
||
}
|
||
function calculateBox() {
|
||
if (iconData) {
|
||
return `0 0 ${iconData.width} ${iconData.height}`;
|
||
}
|
||
return `0 0 ${width} ${height}`;
|
||
}
|
||
function calculateRatio() {
|
||
if (!iconData) {
|
||
return 1;
|
||
}
|
||
return Math.max(iconData.width, iconData.height) / 16;
|
||
}
|
||
function calculateWidth() {
|
||
if (childrenWidth) {
|
||
return childrenWidth;
|
||
}
|
||
if (iconData) {
|
||
return iconData.width / calculateRatio() * normalisedScale();
|
||
}
|
||
return 0;
|
||
}
|
||
function calculateHeight() {
|
||
if (childrenHeight) {
|
||
return childrenHeight;
|
||
}
|
||
if (iconData) {
|
||
return iconData.height / calculateRatio() * normalisedScale();
|
||
}
|
||
return 0;
|
||
}
|
||
function calculateStyle() {
|
||
let combined = "";
|
||
if (style !== null) {
|
||
combined += style;
|
||
}
|
||
let size = normalisedScale();
|
||
if (size === 1) {
|
||
if (combined.length === 0) {
|
||
return "";
|
||
}
|
||
return combined;
|
||
}
|
||
if (combined !== "" && !combined.endsWith(";")) {
|
||
combined += "; ";
|
||
}
|
||
return `${combined}font-size: ${size}em`;
|
||
}
|
||
function raw_data_binding(value) {
|
||
iconData = value;
|
||
$$invalidate(6, iconData), $$invalidate(12, data), $$invalidate(14, style), $$invalidate(13, scale);
|
||
}
|
||
$$self.$$set = ($$new_props) => {
|
||
$$props = assign(assign({}, $$props), exclude_internal_props($$new_props));
|
||
$$invalidate(11, $$restProps = compute_rest_props($$props, omit_props_names));
|
||
if ("class" in $$new_props)
|
||
$$invalidate(0, className = $$new_props.class);
|
||
if ("data" in $$new_props)
|
||
$$invalidate(12, data = $$new_props.data);
|
||
if ("scale" in $$new_props)
|
||
$$invalidate(13, scale = $$new_props.scale);
|
||
if ("spin" in $$new_props)
|
||
$$invalidate(1, spin = $$new_props.spin);
|
||
if ("inverse" in $$new_props)
|
||
$$invalidate(2, inverse = $$new_props.inverse);
|
||
if ("pulse" in $$new_props)
|
||
$$invalidate(3, pulse = $$new_props.pulse);
|
||
if ("flip" in $$new_props)
|
||
$$invalidate(4, flip = $$new_props.flip);
|
||
if ("label" in $$new_props)
|
||
$$invalidate(5, label = $$new_props.label);
|
||
if ("style" in $$new_props)
|
||
$$invalidate(14, style = $$new_props.style);
|
||
if ("$$scope" in $$new_props)
|
||
$$invalidate(17, $$scope = $$new_props.$$scope);
|
||
};
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty & /*data, style, scale*/
|
||
28672) {
|
||
$: {
|
||
$$invalidate(6, iconData = normaliseData(data));
|
||
style;
|
||
scale;
|
||
$$invalidate(7, width = calculateWidth());
|
||
$$invalidate(8, height = calculateHeight());
|
||
$$invalidate(9, combinedStyle = calculateStyle());
|
||
$$invalidate(10, box = calculateBox());
|
||
}
|
||
}
|
||
};
|
||
return [
|
||
className,
|
||
spin,
|
||
inverse,
|
||
pulse,
|
||
flip,
|
||
label,
|
||
iconData,
|
||
width,
|
||
height,
|
||
combinedStyle,
|
||
box,
|
||
$$restProps,
|
||
data,
|
||
scale,
|
||
style,
|
||
slots,
|
||
raw_data_binding,
|
||
$$scope
|
||
];
|
||
}
|
||
var Icon = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance4, create_fragment4, safe_not_equal, {
|
||
class: 0,
|
||
data: 12,
|
||
scale: 13,
|
||
spin: 1,
|
||
inverse: 2,
|
||
pulse: 3,
|
||
flip: 4,
|
||
label: 5,
|
||
style: 14
|
||
});
|
||
}
|
||
};
|
||
var Icon_default = Icon;
|
||
|
||
// src/gui/queryItem/QueryItem.svelte
|
||
function add_css3(target) {
|
||
append_styles(target, "svelte-1gjzzg7", ".query-item.svelte-1gjzzg7{display:flex;justify-content:space-between;align-items:center;height:max-content}.query-item__name.svelte-1gjzzg7{margin:0}.query-item__options.svelte-1gjzzg7{display:flex;gap:0.125rem;align-items:center}.query-item__option.svelte-1gjzzg7{aspect-ratio:1 / 1}button.svelte-1gjzzg7{background:transparent;padding:0;border:none;box-shadow:none}button.svelte-1gjzzg7:hover{cursor:pointer}button.svelte-1gjzzg7:focus-visible{box-shadow:0 0 0 3px var(--background-modifier-border-focus)}.active.svelte-1gjzzg7{color:var(--color-yellow)}");
|
||
}
|
||
function create_fragment5(ctx) {
|
||
let div1;
|
||
let button0;
|
||
let t0_value = (
|
||
/*query*/
|
||
ctx[0].name + ""
|
||
);
|
||
let t0;
|
||
let t1;
|
||
let div0;
|
||
let button1;
|
||
let icon0;
|
||
let t2;
|
||
let button2;
|
||
let icon1;
|
||
let t3;
|
||
let button3;
|
||
let icon2;
|
||
let t4;
|
||
let button4;
|
||
let icon3;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
icon0 = new Icon_default({ props: { data: faBolt } });
|
||
icon1 = new Icon_default({ props: { data: faCog } });
|
||
icon2 = new Icon_default({ props: { data: faClone } });
|
||
icon3 = new Icon_default({ props: { data: faTrash } });
|
||
return {
|
||
c() {
|
||
div1 = element("div");
|
||
button0 = element("button");
|
||
t0 = text(t0_value);
|
||
t1 = space();
|
||
div0 = element("div");
|
||
button1 = element("button");
|
||
create_component(icon0.$$.fragment);
|
||
t2 = space();
|
||
button2 = element("button");
|
||
create_component(icon1.$$.fragment);
|
||
t3 = space();
|
||
button3 = element("button");
|
||
create_component(icon2.$$.fragment);
|
||
t4 = space();
|
||
button4 = element("button");
|
||
create_component(icon3.$$.fragment);
|
||
attr(button0, "class", "query-item__name svelte-1gjzzg7");
|
||
attr(button1, "class", "query-item__option svelte-1gjzzg7");
|
||
toggle_class(
|
||
button1,
|
||
"active",
|
||
/*query*/
|
||
ctx[0].createCommand
|
||
);
|
||
attr(button2, "class", "query-item__option svelte-1gjzzg7");
|
||
attr(button3, "class", "query-item__option svelte-1gjzzg7");
|
||
attr(button4, "class", "query-item__option svelte-1gjzzg7");
|
||
attr(div0, "class", "query-item__options svelte-1gjzzg7");
|
||
attr(div1, "class", "query-item svelte-1gjzzg7");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div1, anchor);
|
||
append(div1, button0);
|
||
append(button0, t0);
|
||
append(div1, t1);
|
||
append(div1, div0);
|
||
append(div0, button1);
|
||
mount_component(icon0, button1, null);
|
||
append(div0, t2);
|
||
append(div0, button2);
|
||
mount_component(icon1, button2, null);
|
||
append(div0, t3);
|
||
append(div0, button3);
|
||
mount_component(icon2, button3, null);
|
||
append(div0, t4);
|
||
append(div0, button4);
|
||
mount_component(icon3, button4, null);
|
||
current = true;
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(
|
||
button0,
|
||
"click",
|
||
/*editQuery*/
|
||
ctx[2]
|
||
),
|
||
listen(
|
||
button1,
|
||
"click",
|
||
/*toggleCommandForQuery*/
|
||
ctx[4]
|
||
),
|
||
listen(
|
||
button2,
|
||
"click",
|
||
/*editQuery*/
|
||
ctx[2]
|
||
),
|
||
listen(
|
||
button3,
|
||
"click",
|
||
/*duplicateQuery*/
|
||
ctx[3]
|
||
),
|
||
listen(
|
||
button4,
|
||
"click",
|
||
/*deleteQuery*/
|
||
ctx[1]
|
||
)
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if ((!current || dirty & /*query*/
|
||
1) && t0_value !== (t0_value = /*query*/
|
||
ctx2[0].name + ""))
|
||
set_data(t0, t0_value);
|
||
if (!current || dirty & /*query*/
|
||
1) {
|
||
toggle_class(
|
||
button1,
|
||
"active",
|
||
/*query*/
|
||
ctx2[0].createCommand
|
||
);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(icon0.$$.fragment, local);
|
||
transition_in(icon1.$$.fragment, local);
|
||
transition_in(icon2.$$.fragment, local);
|
||
transition_in(icon3.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(icon0.$$.fragment, local);
|
||
transition_out(icon1.$$.fragment, local);
|
||
transition_out(icon2.$$.fragment, local);
|
||
transition_out(icon3.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(div1);
|
||
}
|
||
destroy_component(icon0);
|
||
destroy_component(icon1);
|
||
destroy_component(icon2);
|
||
destroy_component(icon3);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function instance5($$self, $$props, $$invalidate) {
|
||
let { query } = $$props;
|
||
const dispatch = createEventDispatcher();
|
||
const deleteQuery = () => {
|
||
dispatch("deleteQuery", { query });
|
||
};
|
||
const editQuery = () => {
|
||
dispatch("editQuery", { query });
|
||
};
|
||
const duplicateQuery = () => {
|
||
dispatch("duplicateQuery", { query });
|
||
};
|
||
const toggleCommandForQuery = () => {
|
||
dispatch("toggleCommandForQuery", { query });
|
||
};
|
||
$$self.$$set = ($$props2) => {
|
||
if ("query" in $$props2)
|
||
$$invalidate(0, query = $$props2.query);
|
||
};
|
||
return [query, deleteQuery, editQuery, duplicateQuery, toggleCommandForQuery];
|
||
}
|
||
var QueryItem = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance5, create_fragment5, safe_not_equal, { query: 0 }, add_css3);
|
||
}
|
||
};
|
||
var QueryItem_default = QueryItem;
|
||
|
||
// src/gui/queryItem/QueryList.svelte
|
||
function add_css4(target) {
|
||
append_styles(target, "svelte-1o6bs82", ".query-list.svelte-1o6bs82{display:flex;flex-direction:column;gap:0.25rem}");
|
||
}
|
||
function get_each_context3(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[7] = list[i];
|
||
child_ctx[8] = list;
|
||
child_ctx[9] = i;
|
||
return child_ctx;
|
||
}
|
||
function create_else_block2(ctx) {
|
||
let p;
|
||
return {
|
||
c() {
|
||
p = element("p");
|
||
p.textContent = "Create a query";
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, p, anchor);
|
||
},
|
||
p: noop,
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(p);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_each_block3(ctx) {
|
||
let queryitem;
|
||
let updating_query;
|
||
let current;
|
||
function queryitem_query_binding(value) {
|
||
ctx[1](
|
||
value,
|
||
/*query*/
|
||
ctx[7],
|
||
/*each_value*/
|
||
ctx[8],
|
||
/*query_index*/
|
||
ctx[9]
|
||
);
|
||
}
|
||
let queryitem_props = {};
|
||
if (
|
||
/*query*/
|
||
ctx[7] !== void 0
|
||
) {
|
||
queryitem_props.query = /*query*/
|
||
ctx[7];
|
||
}
|
||
queryitem = new QueryItem_default({ props: queryitem_props });
|
||
binding_callbacks.push(() => bind(queryitem, "query", queryitem_query_binding));
|
||
queryitem.$on(
|
||
"editQuery",
|
||
/*editQuery_handler*/
|
||
ctx[2]
|
||
);
|
||
queryitem.$on(
|
||
"deleteQuery",
|
||
/*deleteQuery_handler*/
|
||
ctx[3]
|
||
);
|
||
queryitem.$on(
|
||
"duplicateQuery",
|
||
/*duplicateQuery_handler*/
|
||
ctx[4]
|
||
);
|
||
queryitem.$on(
|
||
"toggleCommandForQuery",
|
||
/*toggleCommandForQuery_handler*/
|
||
ctx[5]
|
||
);
|
||
queryitem.$on(
|
||
"saveChanges",
|
||
/*saveChanges_handler*/
|
||
ctx[6]
|
||
);
|
||
return {
|
||
c() {
|
||
create_component(queryitem.$$.fragment);
|
||
},
|
||
m(target, anchor) {
|
||
mount_component(queryitem, target, anchor);
|
||
current = true;
|
||
},
|
||
p(new_ctx, dirty) {
|
||
ctx = new_ctx;
|
||
const queryitem_changes = {};
|
||
if (!updating_query && dirty & /*queries*/
|
||
1) {
|
||
updating_query = true;
|
||
queryitem_changes.query = /*query*/
|
||
ctx[7];
|
||
add_flush_callback(() => updating_query = false);
|
||
}
|
||
queryitem.$set(queryitem_changes);
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(queryitem.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(queryitem.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
destroy_component(queryitem, detaching);
|
||
}
|
||
};
|
||
}
|
||
function create_fragment6(ctx) {
|
||
let div;
|
||
let current;
|
||
let each_value = ensure_array_like(
|
||
/*queries*/
|
||
ctx[0]
|
||
);
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
each_blocks[i] = create_each_block3(get_each_context3(ctx, each_value, i));
|
||
}
|
||
const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
|
||
each_blocks[i] = null;
|
||
});
|
||
let each_1_else = null;
|
||
if (!each_value.length) {
|
||
each_1_else = create_else_block2(ctx);
|
||
}
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
if (each_1_else) {
|
||
each_1_else.c();
|
||
}
|
||
attr(div, "class", "query-list svelte-1o6bs82");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].m(div, null);
|
||
}
|
||
}
|
||
if (each_1_else) {
|
||
each_1_else.m(div, null);
|
||
}
|
||
current = true;
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (dirty & /*queries*/
|
||
1) {
|
||
each_value = ensure_array_like(
|
||
/*queries*/
|
||
ctx2[0]
|
||
);
|
||
let i;
|
||
for (i = 0; i < each_value.length; i += 1) {
|
||
const child_ctx = get_each_context3(ctx2, each_value, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
transition_in(each_blocks[i], 1);
|
||
} else {
|
||
each_blocks[i] = create_each_block3(child_ctx);
|
||
each_blocks[i].c();
|
||
transition_in(each_blocks[i], 1);
|
||
each_blocks[i].m(div, null);
|
||
}
|
||
}
|
||
group_outros();
|
||
for (i = each_value.length; i < each_blocks.length; i += 1) {
|
||
out(i);
|
||
}
|
||
check_outros();
|
||
if (!each_value.length && each_1_else) {
|
||
each_1_else.p(ctx2, dirty);
|
||
} else if (!each_value.length) {
|
||
each_1_else = create_else_block2(ctx2);
|
||
each_1_else.c();
|
||
each_1_else.m(div, null);
|
||
} else if (each_1_else) {
|
||
each_1_else.d(1);
|
||
each_1_else = null;
|
||
}
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
transition_in(each_blocks[i]);
|
||
}
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
each_blocks = each_blocks.filter(Boolean);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
transition_out(each_blocks[i]);
|
||
}
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(div);
|
||
}
|
||
destroy_each(each_blocks, detaching);
|
||
if (each_1_else)
|
||
each_1_else.d();
|
||
}
|
||
};
|
||
}
|
||
function instance6($$self, $$props, $$invalidate) {
|
||
let { queries } = $$props;
|
||
function queryitem_query_binding(value, query, each_value, query_index) {
|
||
each_value[query_index] = value;
|
||
$$invalidate(0, queries);
|
||
}
|
||
function editQuery_handler(event) {
|
||
bubble.call(this, $$self, event);
|
||
}
|
||
function deleteQuery_handler(event) {
|
||
bubble.call(this, $$self, event);
|
||
}
|
||
function duplicateQuery_handler(event) {
|
||
bubble.call(this, $$self, event);
|
||
}
|
||
function toggleCommandForQuery_handler(event) {
|
||
bubble.call(this, $$self, event);
|
||
}
|
||
function saveChanges_handler(event) {
|
||
bubble.call(this, $$self, event);
|
||
}
|
||
$$self.$$set = ($$props2) => {
|
||
if ("queries" in $$props2)
|
||
$$invalidate(0, queries = $$props2.queries);
|
||
};
|
||
return [
|
||
queries,
|
||
queryitem_query_binding,
|
||
editQuery_handler,
|
||
deleteQuery_handler,
|
||
duplicateQuery_handler,
|
||
toggleCommandForQuery_handler,
|
||
saveChanges_handler
|
||
];
|
||
}
|
||
var QueryList = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance6, create_fragment6, safe_not_equal, { queries: 0 }, add_css4);
|
||
}
|
||
};
|
||
var QueryList_default = QueryList;
|
||
|
||
// src/gui/modals/EditQueryModal/editQueryModal.ts
|
||
var import_obsidian4 = require("obsidian");
|
||
|
||
// src/gui/modals/EditQueryModal/EditQueryModal.svelte
|
||
function add_css5(target) {
|
||
append_styles(target, "svelte-1u40o4f", ".title.svelte-1u40o4f{text-align:center}.title__input.svelte-1u40o4f{text-align:center;background:transparent;padding:0;border:none;font-size:var(--h2-size);width:100%}.content.svelte-1u40o4f{display:flex;flex-direction:column;gap:1em}");
|
||
}
|
||
function get_each_context4(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[13] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function get_each_context_12(ctx, list, i) {
|
||
const child_ctx = ctx.slice();
|
||
child_ctx[13] = list[i];
|
||
return child_ctx;
|
||
}
|
||
function create_each_block_12(ctx) {
|
||
let option;
|
||
let t_value = (
|
||
/*type*/
|
||
ctx[13] + ""
|
||
);
|
||
let t;
|
||
let option_value_value;
|
||
return {
|
||
c() {
|
||
option = element("option");
|
||
t = text(t_value);
|
||
option.__value = option_value_value = /*type*/
|
||
ctx[13];
|
||
set_input_value(option, option.__value);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, option, anchor);
|
||
append(option, t);
|
||
},
|
||
p: noop,
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(option);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_each_block4(ctx) {
|
||
let option;
|
||
let t_value = (
|
||
/*type*/
|
||
ctx[13] + ""
|
||
);
|
||
let t;
|
||
let option_value_value;
|
||
return {
|
||
c() {
|
||
option = element("option");
|
||
t = text(t_value);
|
||
option.__value = option_value_value = /*type*/
|
||
ctx[13];
|
||
set_input_value(option, option.__value);
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, option, anchor);
|
||
append(option, t);
|
||
},
|
||
p: noop,
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(option);
|
||
}
|
||
}
|
||
};
|
||
}
|
||
function create_fragment7(ctx) {
|
||
let h2;
|
||
let input0;
|
||
let t0;
|
||
let div26;
|
||
let div5;
|
||
let div2;
|
||
let t4;
|
||
let div4;
|
||
let div3;
|
||
let input1;
|
||
let t5;
|
||
let div11;
|
||
let div8;
|
||
let t9;
|
||
let div10;
|
||
let div9;
|
||
let input2;
|
||
let t10;
|
||
let div16;
|
||
let div14;
|
||
let t14;
|
||
let div15;
|
||
let select0;
|
||
let t15;
|
||
let div21;
|
||
let div19;
|
||
let t19;
|
||
let div20;
|
||
let select1;
|
||
let t20;
|
||
let div25;
|
||
let div24;
|
||
let div22;
|
||
let t22;
|
||
let div23;
|
||
let t23;
|
||
let t24;
|
||
let textarea;
|
||
let textarea_rows_value;
|
||
let mounted;
|
||
let dispose;
|
||
let each_value_1 = ensure_array_like(QUERY_OPEN_TYPES);
|
||
let each_blocks_1 = [];
|
||
for (let i = 0; i < each_value_1.length; i += 1) {
|
||
each_blocks_1[i] = create_each_block_12(get_each_context_12(ctx, each_value_1, i));
|
||
}
|
||
let each_value = ensure_array_like(QUERY_TYPES);
|
||
let each_blocks = [];
|
||
for (let i = 0; i < each_value.length; i += 1) {
|
||
each_blocks[i] = create_each_block4(get_each_context4(ctx, each_value, i));
|
||
}
|
||
return {
|
||
c() {
|
||
h2 = element("h2");
|
||
input0 = element("input");
|
||
t0 = space();
|
||
div26 = element("div");
|
||
div5 = element("div");
|
||
div2 = element("div");
|
||
div2.innerHTML = `<div class="setting-item-name">Create command</div> <div class="setting-item-description">Make the query into an executable command.</div>`;
|
||
t4 = space();
|
||
div4 = element("div");
|
||
div3 = element("div");
|
||
input1 = element("input");
|
||
t5 = space();
|
||
div11 = element("div");
|
||
div8 = element("div");
|
||
div8.innerHTML = `<div class="setting-item-name">Use disabled folders</div> <div class="setting-item-description">Use disabled folders from settings.</div>`;
|
||
t9 = space();
|
||
div10 = element("div");
|
||
div9 = element("div");
|
||
input2 = element("input");
|
||
t10 = space();
|
||
div16 = element("div");
|
||
div14 = element("div");
|
||
div14.innerHTML = `<div class="setting-item-name">Open in</div> <div class="setting-item-description">Where to open the file.</div>`;
|
||
t14 = space();
|
||
div15 = element("div");
|
||
select0 = element("select");
|
||
for (let i = 0; i < each_blocks_1.length; i += 1) {
|
||
each_blocks_1[i].c();
|
||
}
|
||
t15 = space();
|
||
div21 = element("div");
|
||
div19 = element("div");
|
||
div19.innerHTML = `<div class="setting-item-name">Query type</div> <div class="setting-item-description">Use Regex, Dataview, or the default.</div>`;
|
||
t19 = space();
|
||
div20 = element("div");
|
||
select1 = element("select");
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].c();
|
||
}
|
||
t20 = space();
|
||
div25 = element("div");
|
||
div24 = element("div");
|
||
div22 = element("div");
|
||
div22.textContent = "Query";
|
||
t22 = space();
|
||
div23 = element("div");
|
||
t23 = text(
|
||
/*queryDescription*/
|
||
ctx[2]
|
||
);
|
||
t24 = space();
|
||
textarea = element("textarea");
|
||
attr(input0, "class", "title__input svelte-1u40o4f");
|
||
attr(input0, "type", "text");
|
||
attr(input0, "placeholder", "Query name");
|
||
attr(h2, "class", "title svelte-1u40o4f");
|
||
attr(div2, "class", "setting-item-info");
|
||
attr(input1, "type", "checkbox");
|
||
attr(input1, "tabindex", "0");
|
||
attr(div3, "class", "checkbox-container");
|
||
toggle_class(
|
||
div3,
|
||
"is-enabled",
|
||
/*query*/
|
||
ctx[0].createCommand
|
||
);
|
||
attr(div4, "class", "setting-item-control");
|
||
attr(div5, "class", "setting-item mod-toggle");
|
||
attr(div8, "class", "setting-item-info");
|
||
attr(input2, "type", "checkbox");
|
||
attr(input2, "tabindex", "0");
|
||
attr(div9, "class", "checkbox-container");
|
||
toggle_class(
|
||
div9,
|
||
"is-enabled",
|
||
/*query*/
|
||
ctx[0].useDisabledFolders
|
||
);
|
||
attr(div10, "class", "setting-item-control");
|
||
attr(div11, "class", "setting-item mod-toggle");
|
||
attr(div14, "class", "setting-item-info");
|
||
attr(select0, "class", "dropdown");
|
||
if (
|
||
/*query*/
|
||
ctx[0].openType === void 0
|
||
)
|
||
add_render_callback(() => (
|
||
/*select0_change_handler*/
|
||
ctx[10].call(select0)
|
||
));
|
||
attr(div15, "class", "setting-item-control");
|
||
attr(div16, "class", "setting-item");
|
||
attr(div19, "class", "setting-item-info");
|
||
attr(select1, "class", "dropdown");
|
||
if (
|
||
/*query*/
|
||
ctx[0].type === void 0
|
||
)
|
||
add_render_callback(() => (
|
||
/*select1_change_handler*/
|
||
ctx[11].call(select1)
|
||
));
|
||
attr(div20, "class", "setting-item-control");
|
||
attr(div21, "class", "setting-item");
|
||
attr(div22, "class", "setting-item-name");
|
||
attr(div23, "class", "setting-item-description");
|
||
attr(div24, "class", "setting-item-info");
|
||
attr(textarea, "rows", textarea_rows_value = 12);
|
||
attr(
|
||
textarea,
|
||
"placeholder",
|
||
/*queryPlaceholder*/
|
||
ctx[1]
|
||
);
|
||
attr(div25, "class", "content svelte-1u40o4f");
|
||
attr(div26, "class", "content svelte-1u40o4f");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, h2, anchor);
|
||
append(h2, input0);
|
||
set_input_value(
|
||
input0,
|
||
/*query*/
|
||
ctx[0].name
|
||
);
|
||
insert(target, t0, anchor);
|
||
insert(target, div26, anchor);
|
||
append(div26, div5);
|
||
append(div5, div2);
|
||
append(div5, t4);
|
||
append(div5, div4);
|
||
append(div4, div3);
|
||
append(div3, input1);
|
||
input1.checked = /*query*/
|
||
ctx[0].createCommand;
|
||
append(div26, t5);
|
||
append(div26, div11);
|
||
append(div11, div8);
|
||
append(div11, t9);
|
||
append(div11, div10);
|
||
append(div10, div9);
|
||
append(div9, input2);
|
||
input2.checked = /*query*/
|
||
ctx[0].useDisabledFolders;
|
||
append(div26, t10);
|
||
append(div26, div16);
|
||
append(div16, div14);
|
||
append(div16, t14);
|
||
append(div16, div15);
|
||
append(div15, select0);
|
||
for (let i = 0; i < each_blocks_1.length; i += 1) {
|
||
if (each_blocks_1[i]) {
|
||
each_blocks_1[i].m(select0, null);
|
||
}
|
||
}
|
||
select_option(
|
||
select0,
|
||
/*query*/
|
||
ctx[0].openType,
|
||
true
|
||
);
|
||
append(div26, t15);
|
||
append(div26, div21);
|
||
append(div21, div19);
|
||
append(div21, t19);
|
||
append(div21, div20);
|
||
append(div20, select1);
|
||
for (let i = 0; i < each_blocks.length; i += 1) {
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].m(select1, null);
|
||
}
|
||
}
|
||
select_option(
|
||
select1,
|
||
/*query*/
|
||
ctx[0].type,
|
||
true
|
||
);
|
||
append(div26, t20);
|
||
append(div26, div25);
|
||
append(div25, div24);
|
||
append(div24, div22);
|
||
append(div24, t22);
|
||
append(div24, div23);
|
||
append(div23, t23);
|
||
append(div25, t24);
|
||
append(div25, textarea);
|
||
set_input_value(
|
||
textarea,
|
||
/*query*/
|
||
ctx[0].query
|
||
);
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(
|
||
input0,
|
||
"input",
|
||
/*input0_input_handler*/
|
||
ctx[5]
|
||
),
|
||
listen(
|
||
input0,
|
||
"input",
|
||
/*emitHandleChange*/
|
||
ctx[3]
|
||
),
|
||
listen(
|
||
input1,
|
||
"change",
|
||
/*input1_change_handler*/
|
||
ctx[6]
|
||
),
|
||
listen(
|
||
div3,
|
||
"click",
|
||
/*click_handler*/
|
||
ctx[7]
|
||
),
|
||
listen(
|
||
input2,
|
||
"change",
|
||
/*input2_change_handler*/
|
||
ctx[8]
|
||
),
|
||
listen(
|
||
div9,
|
||
"click",
|
||
/*click_handler_1*/
|
||
ctx[9]
|
||
),
|
||
listen(
|
||
select0,
|
||
"change",
|
||
/*select0_change_handler*/
|
||
ctx[10]
|
||
),
|
||
listen(
|
||
select0,
|
||
"change",
|
||
/*emitHandleChange*/
|
||
ctx[3]
|
||
),
|
||
listen(
|
||
select1,
|
||
"change",
|
||
/*select1_change_handler*/
|
||
ctx[11]
|
||
),
|
||
listen(
|
||
select1,
|
||
"change",
|
||
/*emitHandleChange*/
|
||
ctx[3]
|
||
),
|
||
listen(
|
||
textarea,
|
||
"input",
|
||
/*textarea_input_handler*/
|
||
ctx[12]
|
||
),
|
||
listen(
|
||
textarea,
|
||
"input",
|
||
/*emitHandleChange*/
|
||
ctx[3]
|
||
)
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
if (dirty & /*query, QUERY_OPEN_TYPES*/
|
||
1 && input0.value !== /*query*/
|
||
ctx2[0].name) {
|
||
set_input_value(
|
||
input0,
|
||
/*query*/
|
||
ctx2[0].name
|
||
);
|
||
}
|
||
if (dirty & /*query, QUERY_OPEN_TYPES*/
|
||
1) {
|
||
input1.checked = /*query*/
|
||
ctx2[0].createCommand;
|
||
}
|
||
if (dirty & /*query*/
|
||
1) {
|
||
toggle_class(
|
||
div3,
|
||
"is-enabled",
|
||
/*query*/
|
||
ctx2[0].createCommand
|
||
);
|
||
}
|
||
if (dirty & /*query, QUERY_OPEN_TYPES*/
|
||
1) {
|
||
input2.checked = /*query*/
|
||
ctx2[0].useDisabledFolders;
|
||
}
|
||
if (dirty & /*query*/
|
||
1) {
|
||
toggle_class(
|
||
div9,
|
||
"is-enabled",
|
||
/*query*/
|
||
ctx2[0].useDisabledFolders
|
||
);
|
||
}
|
||
if (dirty & /*QUERY_OPEN_TYPES*/
|
||
0) {
|
||
each_value_1 = ensure_array_like(QUERY_OPEN_TYPES);
|
||
let i;
|
||
for (i = 0; i < each_value_1.length; i += 1) {
|
||
const child_ctx = get_each_context_12(ctx2, each_value_1, i);
|
||
if (each_blocks_1[i]) {
|
||
each_blocks_1[i].p(child_ctx, dirty);
|
||
} else {
|
||
each_blocks_1[i] = create_each_block_12(child_ctx);
|
||
each_blocks_1[i].c();
|
||
each_blocks_1[i].m(select0, null);
|
||
}
|
||
}
|
||
for (; i < each_blocks_1.length; i += 1) {
|
||
each_blocks_1[i].d(1);
|
||
}
|
||
each_blocks_1.length = each_value_1.length;
|
||
}
|
||
if (dirty & /*query, QUERY_OPEN_TYPES*/
|
||
1) {
|
||
select_option(
|
||
select0,
|
||
/*query*/
|
||
ctx2[0].openType
|
||
);
|
||
}
|
||
if (dirty & /*QUERY_TYPES*/
|
||
0) {
|
||
each_value = ensure_array_like(QUERY_TYPES);
|
||
let i;
|
||
for (i = 0; i < each_value.length; i += 1) {
|
||
const child_ctx = get_each_context4(ctx2, each_value, i);
|
||
if (each_blocks[i]) {
|
||
each_blocks[i].p(child_ctx, dirty);
|
||
} else {
|
||
each_blocks[i] = create_each_block4(child_ctx);
|
||
each_blocks[i].c();
|
||
each_blocks[i].m(select1, null);
|
||
}
|
||
}
|
||
for (; i < each_blocks.length; i += 1) {
|
||
each_blocks[i].d(1);
|
||
}
|
||
each_blocks.length = each_value.length;
|
||
}
|
||
if (dirty & /*query, QUERY_OPEN_TYPES*/
|
||
1) {
|
||
select_option(
|
||
select1,
|
||
/*query*/
|
||
ctx2[0].type
|
||
);
|
||
}
|
||
if (dirty & /*queryDescription*/
|
||
4)
|
||
set_data(
|
||
t23,
|
||
/*queryDescription*/
|
||
ctx2[2]
|
||
);
|
||
if (dirty & /*queryPlaceholder*/
|
||
2) {
|
||
attr(
|
||
textarea,
|
||
"placeholder",
|
||
/*queryPlaceholder*/
|
||
ctx2[1]
|
||
);
|
||
}
|
||
if (dirty & /*query, QUERY_OPEN_TYPES*/
|
||
1) {
|
||
set_input_value(
|
||
textarea,
|
||
/*query*/
|
||
ctx2[0].query
|
||
);
|
||
}
|
||
},
|
||
i: noop,
|
||
o: noop,
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(h2);
|
||
detach(t0);
|
||
detach(div26);
|
||
}
|
||
destroy_each(each_blocks_1, detaching);
|
||
destroy_each(each_blocks, detaching);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function instance7($$self, $$props, $$invalidate) {
|
||
let { query } = $$props;
|
||
let { handleChange } = $$props;
|
||
let queryPlaceholder = "";
|
||
let queryDescription = "";
|
||
const emitHandleChange = () => {
|
||
handleChange(query);
|
||
};
|
||
onDestroy(() => {
|
||
emitHandleChange();
|
||
});
|
||
function input0_input_handler() {
|
||
query.name = this.value;
|
||
$$invalidate(0, query);
|
||
}
|
||
function input1_change_handler() {
|
||
query.createCommand = this.checked;
|
||
$$invalidate(0, query);
|
||
}
|
||
const click_handler = () => {
|
||
$$invalidate(0, query.createCommand = !query.createCommand, query);
|
||
emitHandleChange();
|
||
};
|
||
function input2_change_handler() {
|
||
query.useDisabledFolders = this.checked;
|
||
$$invalidate(0, query);
|
||
}
|
||
const click_handler_1 = () => {
|
||
$$invalidate(0, query.useDisabledFolders = !query.useDisabledFolders, query);
|
||
emitHandleChange();
|
||
};
|
||
function select0_change_handler() {
|
||
query.openType = select_value(this);
|
||
$$invalidate(0, query);
|
||
}
|
||
function select1_change_handler() {
|
||
query.type = select_value(this);
|
||
$$invalidate(0, query);
|
||
}
|
||
function textarea_input_handler() {
|
||
query.query = this.value;
|
||
$$invalidate(0, query);
|
||
}
|
||
$$self.$$set = ($$props2) => {
|
||
if ("query" in $$props2)
|
||
$$invalidate(0, query = $$props2.query);
|
||
if ("handleChange" in $$props2)
|
||
$$invalidate(4, handleChange = $$props2.handleChange);
|
||
};
|
||
$$self.$$.update = () => {
|
||
if ($$self.$$.dirty & /*query*/
|
||
1) {
|
||
$: {
|
||
switch (query.type) {
|
||
case "Dataview":
|
||
$$invalidate(2, queryDescription = "Only works for list queries.");
|
||
$$invalidate(1, queryPlaceholder = "LIST\n...");
|
||
break;
|
||
case "Regex":
|
||
$$invalidate(2, queryDescription = "");
|
||
$$invalidate(1, queryPlaceholder = "Regular Expression...");
|
||
break;
|
||
default:
|
||
$$invalidate(2, queryDescription = "");
|
||
$$invalidate(1, queryPlaceholder = "path: ... file: ... tag: ...");
|
||
break;
|
||
}
|
||
if (query.type === "Dataview") {
|
||
} else if (query.type === "Default") {
|
||
}
|
||
}
|
||
}
|
||
};
|
||
return [
|
||
query,
|
||
queryPlaceholder,
|
||
queryDescription,
|
||
emitHandleChange,
|
||
handleChange,
|
||
input0_input_handler,
|
||
input1_change_handler,
|
||
click_handler,
|
||
input2_change_handler,
|
||
click_handler_1,
|
||
select0_change_handler,
|
||
select1_change_handler,
|
||
textarea_input_handler
|
||
];
|
||
}
|
||
var EditQueryModal = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance7, create_fragment7, safe_not_equal, { query: 0, handleChange: 4 }, add_css5);
|
||
}
|
||
};
|
||
var EditQueryModal_default = EditQueryModal;
|
||
|
||
// src/gui/modals/EditQueryModal/editQueryModal.ts
|
||
var EditQueryModal2 = class extends import_obsidian4.Modal {
|
||
constructor(app, query, handleChange) {
|
||
super(app);
|
||
this.query = query;
|
||
this.view = new EditQueryModal_default({
|
||
target: this.contentEl,
|
||
props: {
|
||
query,
|
||
handleChange
|
||
}
|
||
});
|
||
}
|
||
};
|
||
|
||
// src/gui/queryItem/QueryView.svelte
|
||
function add_css6(target) {
|
||
append_styles(target, "svelte-1wfaisu", ".query-list-view.svelte-1wfaisu{display:flex;flex-direction:column;gap:1rem}.query-form.svelte-1wfaisu{display:flex;justify-content:right;gap:var(--size-4-2)}");
|
||
}
|
||
function create_fragment8(ctx) {
|
||
let div;
|
||
let querylist;
|
||
let updating_queries;
|
||
let t0;
|
||
let form;
|
||
let input;
|
||
let t1;
|
||
let button;
|
||
let current;
|
||
let mounted;
|
||
let dispose;
|
||
function querylist_queries_binding(value) {
|
||
ctx[10](value);
|
||
}
|
||
let querylist_props = {};
|
||
if (
|
||
/*queries*/
|
||
ctx[0] !== void 0
|
||
) {
|
||
querylist_props.queries = /*queries*/
|
||
ctx[0];
|
||
}
|
||
querylist = new QueryList_default({ props: querylist_props });
|
||
binding_callbacks.push(() => bind(querylist, "queries", querylist_queries_binding));
|
||
querylist.$on(
|
||
"deleteQuery",
|
||
/*deleteQuery*/
|
||
ctx[2]
|
||
);
|
||
querylist.$on(
|
||
"editQuery",
|
||
/*editQuery*/
|
||
ctx[3]
|
||
);
|
||
querylist.$on(
|
||
"toggleCommandForQuery",
|
||
/*toggleCommandForQuery*/
|
||
ctx[4]
|
||
);
|
||
querylist.$on(
|
||
"duplicateQuery",
|
||
/*duplicateQuery*/
|
||
ctx[5]
|
||
);
|
||
querylist.$on(
|
||
"saveChanges",
|
||
/*saveChanges*/
|
||
ctx[7]
|
||
);
|
||
return {
|
||
c() {
|
||
div = element("div");
|
||
create_component(querylist.$$.fragment);
|
||
t0 = space();
|
||
form = element("form");
|
||
input = element("input");
|
||
t1 = space();
|
||
button = element("button");
|
||
button.textContent = "Add Query";
|
||
attr(input, "type", "text");
|
||
attr(input, "placeholder", "Name");
|
||
attr(button, "class", "mod-cta");
|
||
attr(button, "type", "submit");
|
||
attr(form, "class", "query-form svelte-1wfaisu");
|
||
attr(div, "class", "query-list-view svelte-1wfaisu");
|
||
},
|
||
m(target, anchor) {
|
||
insert(target, div, anchor);
|
||
mount_component(querylist, div, null);
|
||
append(div, t0);
|
||
append(div, form);
|
||
append(form, input);
|
||
set_input_value(
|
||
input,
|
||
/*queryFormName*/
|
||
ctx[1]
|
||
);
|
||
append(form, t1);
|
||
append(form, button);
|
||
current = true;
|
||
if (!mounted) {
|
||
dispose = [
|
||
listen(
|
||
input,
|
||
"input",
|
||
/*input_input_handler*/
|
||
ctx[11]
|
||
),
|
||
listen(form, "submit", prevent_default(
|
||
/*handleSubmit*/
|
||
ctx[6]
|
||
))
|
||
];
|
||
mounted = true;
|
||
}
|
||
},
|
||
p(ctx2, [dirty]) {
|
||
const querylist_changes = {};
|
||
if (!updating_queries && dirty & /*queries*/
|
||
1) {
|
||
updating_queries = true;
|
||
querylist_changes.queries = /*queries*/
|
||
ctx2[0];
|
||
add_flush_callback(() => updating_queries = false);
|
||
}
|
||
querylist.$set(querylist_changes);
|
||
if (dirty & /*queryFormName*/
|
||
2 && input.value !== /*queryFormName*/
|
||
ctx2[1]) {
|
||
set_input_value(
|
||
input,
|
||
/*queryFormName*/
|
||
ctx2[1]
|
||
);
|
||
}
|
||
},
|
||
i(local) {
|
||
if (current)
|
||
return;
|
||
transition_in(querylist.$$.fragment, local);
|
||
current = true;
|
||
},
|
||
o(local) {
|
||
transition_out(querylist.$$.fragment, local);
|
||
current = false;
|
||
},
|
||
d(detaching) {
|
||
if (detaching) {
|
||
detach(div);
|
||
}
|
||
destroy_component(querylist);
|
||
mounted = false;
|
||
run_all(dispose);
|
||
}
|
||
};
|
||
}
|
||
function instance8($$self, $$props, $$invalidate) {
|
||
let { plugin } = $$props;
|
||
let { queries } = $$props;
|
||
let { saveQueries } = $$props;
|
||
let queryFormName = "";
|
||
const deleteQuery = (e) => {
|
||
const query = e.detail.query;
|
||
$$invalidate(0, queries = queries.filter((q) => q.id !== query.id));
|
||
plugin.removeQueryCommand(query);
|
||
saveQueries(queries);
|
||
};
|
||
const editQuery = (e) => {
|
||
const query = e.detail.query;
|
||
const modal = new EditQueryModal2(
|
||
plugin.app,
|
||
query,
|
||
(query2) => {
|
||
addOrRemoveQueryCommand(plugin, query2);
|
||
$$invalidate(0, queries);
|
||
saveQueries(queries);
|
||
}
|
||
);
|
||
modal.open();
|
||
$$invalidate(0, queries);
|
||
saveQueries(queries);
|
||
};
|
||
const toggleCommandForQuery = (e) => {
|
||
const query = e.detail.query;
|
||
query.createCommand = !query.createCommand;
|
||
$$invalidate(0, queries);
|
||
addOrRemoveQueryCommand(plugin, query);
|
||
saveQueries(queries);
|
||
};
|
||
const duplicateQuery = (e) => {
|
||
const query = e.detail.query;
|
||
const queryClone = structuredClone(query);
|
||
queryClone.id = getQueryCommandId();
|
||
queryClone.name = queryClone.name + " (Copy)";
|
||
$$invalidate(0, queries = [...queries, queryClone]);
|
||
saveQueries(queries);
|
||
if (query.createCommand) {
|
||
plugin.addQueryCommand(query);
|
||
}
|
||
};
|
||
const handleSubmit = () => {
|
||
if (queryFormName.trim() === "")
|
||
return;
|
||
$$invalidate(0, queries = [...queries, createQuery(queryFormName, "")]);
|
||
$$invalidate(1, queryFormName = "");
|
||
saveQueries(queries);
|
||
};
|
||
const saveChanges = () => {
|
||
$$invalidate(0, queries);
|
||
saveQueries(queries);
|
||
};
|
||
function querylist_queries_binding(value) {
|
||
queries = value;
|
||
$$invalidate(0, queries);
|
||
}
|
||
function input_input_handler() {
|
||
queryFormName = this.value;
|
||
$$invalidate(1, queryFormName);
|
||
}
|
||
$$self.$$set = ($$props2) => {
|
||
if ("plugin" in $$props2)
|
||
$$invalidate(8, plugin = $$props2.plugin);
|
||
if ("queries" in $$props2)
|
||
$$invalidate(0, queries = $$props2.queries);
|
||
if ("saveQueries" in $$props2)
|
||
$$invalidate(9, saveQueries = $$props2.saveQueries);
|
||
};
|
||
return [
|
||
queries,
|
||
queryFormName,
|
||
deleteQuery,
|
||
editQuery,
|
||
toggleCommandForQuery,
|
||
duplicateQuery,
|
||
handleSubmit,
|
||
saveChanges,
|
||
plugin,
|
||
saveQueries,
|
||
querylist_queries_binding,
|
||
input_input_handler
|
||
];
|
||
}
|
||
var QueryView = class extends SvelteComponent {
|
||
constructor(options) {
|
||
super();
|
||
init(this, options, instance8, create_fragment8, safe_not_equal, { plugin: 8, queries: 0, saveQueries: 9 }, add_css6);
|
||
}
|
||
};
|
||
var QueryView_default = QueryView;
|
||
|
||
// src/settings.ts
|
||
var DEFAULT_SETTINGS = {
|
||
queries: [],
|
||
disabledFolders: "",
|
||
debug: false,
|
||
openType: "Active Leaf",
|
||
setActive: true
|
||
};
|
||
var SettingTab = class extends import_obsidian5.PluginSettingTab {
|
||
constructor(app, plugin) {
|
||
super(app, plugin);
|
||
this.plugin = plugin;
|
||
}
|
||
display() {
|
||
this.containerEl.empty();
|
||
this.addSetting();
|
||
this.addQueriesSetting();
|
||
}
|
||
addSetting() {
|
||
new import_obsidian5.Setting(this.containerEl).setName("Open files as active").setDesc("Make files active when they are opened.").addToggle((toggle) => {
|
||
toggle.setValue(this.plugin.settings.setActive).onChange(async (value) => {
|
||
this.plugin.settings.setActive = value;
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
new import_obsidian5.Setting(this.containerEl).setName("Open in").setDesc("Where to open files.").addDropdown(
|
||
(dropdown) => dropdown.addOptions(toRecord(getOpenTypeLabels())).setValue(this.plugin.settings.openType).onChange(async (value) => {
|
||
this.plugin.settings.openType = value;
|
||
await this.plugin.saveSettings();
|
||
})
|
||
);
|
||
new import_obsidian5.Setting(this.containerEl).setName("Disabled folders").setDesc("Skips these folders when searching for files.").addTextArea((text2) => {
|
||
text2.setPlaceholder("templates/").setValue(this.plugin.settings.disabledFolders).onChange(async (value) => {
|
||
this.plugin.settings.disabledFolders = value.trim();
|
||
await this.plugin.saveSettings();
|
||
});
|
||
});
|
||
}
|
||
addQueriesSetting() {
|
||
this.containerEl.createEl("div", {
|
||
text: "Queries",
|
||
cls: "setting-item setting-item-heading"
|
||
});
|
||
const setting = new import_obsidian5.Setting(this.containerEl);
|
||
setting.infoEl.remove();
|
||
setting.settingEl.style.display = "block";
|
||
new QueryView_default({
|
||
target: setting.settingEl,
|
||
props: {
|
||
plugin: this.plugin,
|
||
queries: this.plugin.settings.queries,
|
||
saveQueries: async (queries) => {
|
||
this.plugin.settings.queries = queries;
|
||
await this.plugin.saveSettings();
|
||
}
|
||
}
|
||
});
|
||
}
|
||
};
|
||
|
||
// src/main.ts
|
||
var AdvancedRandomNote = class extends import_obsidian6.Plugin {
|
||
async onload() {
|
||
await this.loadSettings();
|
||
this.addCommand({
|
||
id: "open-query-modal",
|
||
name: "Open query modal",
|
||
callback: () => this.handleOpenRandomFileModal()
|
||
});
|
||
this.addCommand({
|
||
id: "open-random-note",
|
||
name: "Open random note",
|
||
callback: () => {
|
||
this.openRandomMarkdownFile();
|
||
}
|
||
});
|
||
this.addCommand({
|
||
id: "open-random-file",
|
||
name: "Open random file",
|
||
callback: () => {
|
||
this.openRandomVaultFile();
|
||
}
|
||
});
|
||
this.addRibbonIcon("dice", "Open random note modal", () => {
|
||
this.handleOpenRandomFileModal();
|
||
});
|
||
this.registerEvent(
|
||
this.app.workspace.on("file-menu", (menu, file) => {
|
||
if (!(file instanceof import_obsidian6.TFolder) || file.isRoot())
|
||
return;
|
||
menu.addItem((item) => {
|
||
item.setTitle("Open random note").setIcon("dice").onClick(async () => {
|
||
const files = flattenFile(file);
|
||
const foundFiles = await new Search(
|
||
this
|
||
).searchFiles(files, file.path + "/");
|
||
this.openRandomFile(foundFiles);
|
||
});
|
||
});
|
||
})
|
||
);
|
||
this.addQueryCommands();
|
||
this.addSettingTab(new SettingTab(this.app, this));
|
||
if (this.settings.debug) {
|
||
console.log("Loaded " + this.manifest.name);
|
||
}
|
||
}
|
||
async loadSettings() {
|
||
this.settings = Object.assign(
|
||
{},
|
||
DEFAULT_SETTINGS,
|
||
await this.loadData()
|
||
);
|
||
}
|
||
async saveSettings() {
|
||
await this.saveData(this.settings);
|
||
}
|
||
async openFile(file, openType = "Default") {
|
||
if (openType === "Default")
|
||
openType = this.settings.openType;
|
||
switch (openType) {
|
||
case "New Window":
|
||
await this.app.workspace.getLeaf("window").openFile(file, { active: this.settings.setActive });
|
||
return;
|
||
case "New Leaf":
|
||
await this.app.workspace.getLeaf("tab").openFile(file, { active: this.settings.setActive });
|
||
return;
|
||
default:
|
||
await this.app.workspace.openLinkText(file.path, "", false, {
|
||
active: this.settings.setActive
|
||
});
|
||
break;
|
||
}
|
||
}
|
||
async openRandomFile(files, openType = "Default") {
|
||
const file = getRandomElement(files);
|
||
if (!file)
|
||
return;
|
||
if (this.settings.debug) {
|
||
console.log("Found and opened file:");
|
||
console.log(file);
|
||
}
|
||
await this.openFile(file, openType);
|
||
}
|
||
async openRandomMarkdownFile() {
|
||
const foundFiles = await new Search(this).searchFiles(
|
||
this.app.vault.getMarkdownFiles()
|
||
);
|
||
await this.openRandomFile(foundFiles);
|
||
}
|
||
async openRandomVaultFile() {
|
||
const foundFiles = await new Search(this).searchFiles(
|
||
this.app.vault.getFiles()
|
||
);
|
||
await this.openRandomFile(foundFiles);
|
||
}
|
||
handleOpenRandomFileModal() {
|
||
const modal = new RandomNoteModal(
|
||
this.app,
|
||
this.settings.queries,
|
||
async (query) => this.executeQuery(query)
|
||
);
|
||
modal.open();
|
||
}
|
||
async executeQuery(query) {
|
||
const files = await new Search(this).search(query);
|
||
if (files.length <= 0) {
|
||
return;
|
||
}
|
||
await this.openRandomFile(files, query.openType);
|
||
}
|
||
addQueryCommands() {
|
||
this.settings.queries.forEach(
|
||
(query) => query.createCommand && this.addQueryCommand(query)
|
||
);
|
||
}
|
||
addQueryCommand(query) {
|
||
this.addCommand({
|
||
id: query.id,
|
||
name: query.name,
|
||
callback: async () => this.executeQuery(query)
|
||
});
|
||
}
|
||
removeQueryCommand(query) {
|
||
deleteObsidianCommand(
|
||
this.app,
|
||
getPluginCommandId(query.id, this.manifest)
|
||
);
|
||
}
|
||
};
|
||
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZXJyb3JzLmpzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lLmpzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL3N5c3RlbVpvbmUuanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9sb2NhbGUuanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvZml4ZWRPZmZzZXRab25lLmpzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvem9uZVV0aWwuanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvc2V0dGluZ3MuanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZW5nbGlzaC5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2Zvcm1hdHRlci5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9yZWdleFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9kdXJhdGlvbi5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbmZvLmpzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZGlmZi5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3Rva2VuUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvY29udmVyc2lvbnMuanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L3NyYy9zZXR0aW5ncy50cyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvc3JjL2FwaS9yZXN1bHQudHMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9wYXJzaW1tb24vYnVpbGQvcGFyc2ltbW9uLnVtZC5taW4uanMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L25vZGVfbW9kdWxlcy9lbW9qaS1yZWdleC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvc3JjL3V0aWwvbm9ybWFsaXplLnRzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9zcmMvZGF0YS1tb2RlbC92YWx1ZS50cyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvc3JjL2V4cHJlc3Npb24vZmllbGQudHMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L3NyYy9kYXRhLWluZGV4L3NvdXJjZS50cyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvc3JjL2V4cHJlc3Npb24vcGFyc2UudHMiLCAibm9kZV9tb2R1bGVzL29ic2lkaWFuLWRhdGF2aWV3L3NyYy9xdWVyeS9xdWVyeS50cyIsICJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGF0YXZpZXcvc3JjL3F1ZXJ5L3BhcnNlLnRzIiwgIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1kYXRhdmlldy9zcmMvaW5kZXgudHMiLCAic3JjL21haW4udHMiLCAic3JjL2d1aS9tb2RhbHMvT3BlblJhbmRvbU5vdGVNb2RhbC9vcGVuUmFuZG9tTm90ZU1vZGFsLnRzIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3J1bnRpbWUvaW50ZXJuYWwvdXRpbHMuanMiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9nbG9iYWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3J1bnRpbWUvaW50ZXJuYWwvUmVzaXplT2JzZXJ2ZXJTaW5nbGV0b24uanMiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9kb20uanMiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9saWZlY3ljbGUuanMiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9zY2hlZHVsZXIuanMiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC90cmFuc2l0aW9ucy5qcyIsICJub2RlX21vZHVsZXMvc3ZlbHRlL3NyYy9ydW50aW1lL2ludGVybmFsL2VhY2guanMiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9zcHJlYWQuanMiLCAibm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvc2hhcmVkL2Jvb2xlYW5fYXR0cmlidXRlcy5qcyIsICJub2RlX21vZHVsZXMvc3ZlbHRlL3NyYy9ydW50aW1lL2ludGVybmFsL0NvbXBvbmVudC5qcyIsICJub2RlX21vZHVsZXMvc3ZlbHRlL3NyYy9zaGFyZWQvdmVyc2lvbi5qcyIsICJub2RlX21vZHVsZXMvc3ZlbHRlL3NyYy9ydW50aW1lL2ludGVybmFsL2Rpc2Nsb3NlLXZlcnNpb24vaW5kZXguanMiLCAic3JjL3R5cGVzLnRzIiwgInNyYy9ndWkvbW9kYWxzL09wZW5SYW5kb21Ob3RlTW9kYWwvT3BlblJhbmRvbU5vdGVNb2RhbC5zdmVsdGUiLCAic3JjL3NlYXJjaC50cyIsICJzcmMvdXRpbGl0aWVzLnRzIiwgIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcm5nLmpzIiwgIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvc3RyaW5naWZ5LmpzIiwgIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvbmF0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjQuanMiLCAic3JjL3NldHRpbmdzLnRzIiwgIm5vZGVfbW9kdWxlcy9AZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMvaW5kZXgubWpzIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtYXdlc29tZS9jb21wb25lbnRzL3N2Zy9SYXcuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtYXdlc29tZS9jb21wb25lbnRzL3N2Zy9Tdmcuc3ZlbHRlIiwgIm5vZGVfbW9kdWxlcy9zdmVsdGUtYXdlc29tZS9jb21wb25lbnRzL0ljb24uc3ZlbHRlIiwgInNyYy9ndWkvcXVlcnlJdGVtL1F1ZXJ5SXRlbS5zdmVsdGUiLCAic3JjL2d1aS9xdWVyeUl0ZW0vUXVlcnlMaXN0LnN2ZWx0ZSIsICJzcmMvZ3VpL21vZGFscy9FZGl0UXVlcnlNb2RhbC9lZGl0UXVlcnlNb2RhbC50cyIsICJzcmMvZ3VpL21vZGFscy9FZGl0UXVlcnlNb2RhbC9FZGl0UXVlcnlNb2RhbC5zdmVsdGUiLCAic3JjL2d1aS9xdWVyeUl0ZW0vUXVlcnlWaWV3LnN2ZWx0ZSJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnRcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZERhdGVUaW1lRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uKSB7XG4gICAgc3VwZXIoYEludmFsaWQgRGF0ZVRpbWU6ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRJbnRlcnZhbEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlYXNvbikge1xuICAgIHN1cGVyKGBJbnZhbGlkIEludGVydmFsOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkRHVyYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFzb24pIHtcbiAgICBzdXBlcihgSW52YWxpZCBEdXJhdGlvbjogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHt9XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRVbml0RXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IodW5pdCkge1xuICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7fVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiWm9uZSBpcyBhbiBhYnN0cmFjdCBjbGFzc1wiKTtcbiAgfVxufVxuIiwgIi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5jb25zdCBuID0gXCJudW1lcmljXCIsXG4gIHMgPSBcInNob3J0XCIsXG4gIGwgPSBcImxvbmdcIjtcblxuZXhwb3J0IGNvbnN0IERBVEVfU0hPUlQgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBuLFxuICBkYXk6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9NRUQgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBzLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfRlVMTCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX0hVR0UgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IGwsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV9TSU1QTEUgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FX1dJVEhfU0VDT05EUyA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV9XSVRIX1NIT1JUX09GRlNFVCA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FX1dJVEhfTE9OR19PRkZTRVQgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICB0aW1lWm9uZU5hbWU6IGwsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgaG91ckN5Y2xlOiBcImgyM1wiLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfMjRfV0lUSF9TRUNPTkRTID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgaG91ckN5Y2xlOiBcImgyM1wiLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICBob3VyQ3ljbGU6IFwiaDIzXCIsXG4gIHRpbWVab25lTmFtZTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICBob3VyQ3ljbGU6IFwiaDIzXCIsXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IG4sXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IG4sXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfTUVEID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbiAgd2Vla2RheTogcyxcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX0ZVTEwgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgdGltZVpvbmVOYW1lOiBzLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgdGltZVpvbmVOYW1lOiBzLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX0hVR0UgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IGwsXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgdGltZVpvbmVOYW1lOiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBsLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgdGltZVpvbmVOYW1lOiBsLFxufTtcbiIsICJpbXBvcnQgeyBab25lSXNBYnN0cmFjdEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5cbi8qKlxuICogQGludGVyZmFjZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBab25lIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHpvbmVcbiAgICogQGFic3RyYWN0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgdHlwZSgpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgem9uZS5cbiAgICogQGFic3RyYWN0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbmFtZSgpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgZ2V0IGlhbmFOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBvZmZzZXQgaXMga25vd24gdG8gYmUgZml4ZWQgZm9yIHRoZSB3aG9sZSB5ZWFyLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGdldCB0aGUgbmFtZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLiBBY2NlcHRzICdsb25nJyBvciAnc2hvcnQnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5sb2NhbGUgLSBXaGF0IGxvY2FsZSB0byByZXR1cm4gdGhlIG9mZnNldCBuYW1lIGluLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBvZmZzZXROYW1lKHRzLCBvcHRzKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyB2YWx1ZSBhcyBhIHN0cmluZ1xuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBnZXQgdGhlIG9mZnNldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHlcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC5cbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgb2Zmc2V0XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIG9mZnNldCh0cykge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIGVxdWFsIHRvIGFub3RoZXIgem9uZVxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtab25lfSBvdGhlclpvbmUgLSB0aGUgem9uZSB0byBjb21wYXJlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXJab25lKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgdmFsaWQuXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBmb3JtYXRPZmZzZXQsIHBhcnNlWm9uZUluZm8gfSBmcm9tIFwiLi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgWm9uZSBmcm9tIFwiLi4vem9uZS5qc1wiO1xuXG5sZXQgc2luZ2xldG9uID0gbnVsbDtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuXG4gKiBAaW1wbGVtZW50cyB7Wm9uZX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBsb2NhbCB6b25lXG4gICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGluc3RhbmNlKCkge1xuICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHtcbiAgICAgIHNpbmdsZXRvbiA9IG5ldyBTeXN0ZW1ab25lKCk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b247XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gXCJzeXN0ZW1cIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkge1xuICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5vZmZzZXQodHMpLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0KHRzKSB7XG4gICAgcmV0dXJuIC1uZXcgRGF0ZSh0cykuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwic3lzdGVtXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgcGFyc2Vab25lSW5mbywgaXNVbmRlZmluZWQsIG9ialRvTG9jYWxUUyB9IGZyb20gXCIuLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbmxldCBkdGZDYWNoZSA9IHt9O1xuZnVuY3Rpb24gbWFrZURURih6b25lKSB7XG4gIGlmICghZHRmQ2FjaGVbem9uZV0pIHtcbiAgICBkdGZDYWNoZVt6b25lXSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZW4tVVNcIiwge1xuICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgIHRpbWVab25lOiB6b25lLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICAgIGVyYTogXCJzaG9ydFwiLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBkdGZDYWNoZVt6b25lXTtcbn1cblxuY29uc3QgdHlwZVRvUG9zID0ge1xuICB5ZWFyOiAwLFxuICBtb250aDogMSxcbiAgZGF5OiAyLFxuICBlcmE6IDMsXG4gIGhvdXI6IDQsXG4gIG1pbnV0ZTogNSxcbiAgc2Vjb25kOiA2LFxufTtcblxuZnVuY3Rpb24gaGFja3lPZmZzZXQoZHRmLCBkYXRlKSB7XG4gIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvXFx1MjAwRS9nLCBcIlwiKSxcbiAgICBwYXJzZWQgPSAvKFxcZCspXFwvKFxcZCspXFwvKFxcZCspIChBRHxCQyksPyAoXFxkKyk6KFxcZCspOihcXGQrKS8uZXhlYyhmb3JtYXR0ZWQpLFxuICAgIFssIGZNb250aCwgZkRheSwgZlllYXIsIGZhZE9yQmMsIGZIb3VyLCBmTWludXRlLCBmU2Vjb25kXSA9IHBhcnNlZDtcbiAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07XG59XG5cbmZ1bmN0aW9uIHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkge1xuICBjb25zdCBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0VG9QYXJ0cyhkYXRlKTtcbiAgY29uc3QgZmlsbGVkID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0gZm9ybWF0dGVkW2ldO1xuICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTtcblxuICAgIGlmICh0eXBlID09PSBcImVyYVwiKSB7XG4gICAgICBmaWxsZWRbcG9zXSA9IHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHtcbiAgICAgIGZpbGxlZFtwb3NdID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbGxlZDtcbn1cblxubGV0IGlhbmFab25lQ2FjaGUgPSB7fTtcbi8qKlxuICogQSB6b25lIGlkZW50aWZpZWQgYnkgYW4gSUFOQSBpZGVudGlmaWVyLCBsaWtlIEFtZXJpY2EvTmV3X1lvcmtcbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJQU5BWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWVcbiAgICogQHJldHVybiB7SUFOQVpvbmV9XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKG5hbWUpIHtcbiAgICBpZiAoIWlhbmFab25lQ2FjaGVbbmFtZV0pIHtcbiAgICAgIGlhbmFab25lQ2FjaGVbbmFtZV0gPSBuZXcgSUFOQVpvbmUobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBpYW5hWm9uZUNhY2hlW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLlxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7XG4gICAgaWFuYVpvbmVDYWNoZSA9IHt9O1xuICAgIGR0ZkNhY2hlID0ge307XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBzdHJpbmcgaXMgYSB2YWxpZCBzcGVjaWZpZXIuIFRoaXMgb25seSBjaGVja3MgdGhlIHN0cmluZydzIGZvcm1hdCwgbm90IHRoYXQgdGhlIHNwZWNpZmllciBpZGVudGlmaWVzIGEga25vd24gem9uZTsgc2VlIGlzVmFsaWRab25lIGZvciB0aGF0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBzdHJpbmcgdG8gY2hlY2sgdmFsaWRpdHkgb25cbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcihcIkFtZXJpY2EvTmV3X1lvcmtcIikgLy89PiB0cnVlXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoXCJTcG9ydH5+YmxvcnBcIikgLy89PiBmYWxzZVxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCByZXR1cm5zIGZhbHNlIGZvciBzb21lIHZhbGlkIElBTkEgbmFtZXMuIFVzZSBpc1ZhbGlkWm9uZSBpbnN0ZWFkLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWRTcGVjaWZpZXIocykge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRab25lKHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlkZW50aWZpZXMgYSByZWFsIHpvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHpvbmUgLSBUaGUgc3RyaW5nIHRvIGNoZWNrXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKFwiQW1lcmljYS9OZXdfWW9ya1wiKSAvLz0+IHRydWVcbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoXCJGYW50YXNpYS9DYXN0bGVcIikgLy89PiBmYWxzZVxuICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZShcIlNwb3J0fn5ibG9ycFwiKSAvLz0+IGZhbHNlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZFpvbmUoem9uZSkge1xuICAgIGlmICghem9uZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLCB7IHRpbWVab25lOiB6b25lIH0pLmZvcm1hdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICBzdXBlcigpO1xuICAgIC8qKiBAcHJpdmF0ZSAqKi9cbiAgICB0aGlzLnpvbmVOYW1lID0gbmFtZTtcbiAgICAvKiogQHByaXZhdGUgKiovXG4gICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiaWFuYVwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7XG4gICAgcmV0dXJuIHBhcnNlWm9uZUluZm8odHMsIGZvcm1hdCwgbG9jYWxlLCB0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCh0cykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0cyk7XG5cbiAgICBpZiAoaXNOYU4oZGF0ZSkpIHJldHVybiBOYU47XG5cbiAgICBjb25zdCBkdGYgPSBtYWtlRFRGKHRoaXMubmFtZSk7XG4gICAgbGV0IFt5ZWFyLCBtb250aCwgZGF5LCBhZE9yQmMsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kXSA9IGR0Zi5mb3JtYXRUb1BhcnRzXG4gICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSlcbiAgICAgIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKTtcblxuICAgIGlmIChhZE9yQmMgPT09IFwiQkNcIikge1xuICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7XG4gICAgfVxuXG4gICAgLy8gYmVjYXVzZSB3ZSdyZSB1c2luZyBob3VyMTIgYW5kIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEwMjU1NjQmY2FuPTImcT0lMjIyNCUzQTAwJTIyJTIwZGF0ZXRpbWVmb3JtYXRcbiAgICBjb25zdCBhZGp1c3RlZEhvdXIgPSBob3VyID09PSAyNCA/IDAgOiBob3VyO1xuXG4gICAgY29uc3QgYXNVVEMgPSBvYmpUb0xvY2FsVFMoe1xuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF5LFxuICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLFxuICAgICAgbWludXRlLFxuICAgICAgc2Vjb25kLFxuICAgICAgbWlsbGlzZWNvbmQ6IDAsXG4gICAgfSk7XG5cbiAgICBsZXQgYXNUUyA9ICtkYXRlO1xuICAgIGNvbnN0IG92ZXIgPSBhc1RTICUgMTAwMDtcbiAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjtcbiAgICByZXR1cm4gKGFzVVRDIC0gYXNUUykgLyAoNjAgKiAxMDAwKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwiaWFuYVwiICYmIG90aGVyWm9uZS5uYW1lID09PSB0aGlzLm5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZDtcbiAgfVxufVxuIiwgImltcG9ydCB7IHBhZFN0YXJ0LCByb3VuZFRvLCBoYXNSZWxhdGl2ZSB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCAqIGFzIEVuZ2xpc2ggZnJvbSBcIi4vZW5nbGlzaC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuXG4vLyB0b2RvIC0gcmVtYXAgY2FjaGluZ1xuXG5sZXQgaW50bExGQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZExGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGR0ZiA9IGludGxMRkNhY2hlW2tleV07XG4gIGlmICghZHRmKSB7XG4gICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxMRkNhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxEVENhY2hlID0ge307XG5mdW5jdGlvbiBnZXRDYWNoZWREVEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHtcbiAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pO1xuICBsZXQgZHRmID0gaW50bERUQ2FjaGVba2V5XTtcbiAgaWYgKCFkdGYpIHtcbiAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxEVENhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxOdW1DYWNoZSA9IHt9O1xuZnVuY3Rpb24gZ2V0Q2FjaGVkSU5GKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxOdW1DYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxOdW1DYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBpbnRsUmVsQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZFJURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9uc1xuICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShbbG9jU3RyaW5nLCBjYWNoZUtleU9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxSZWxDYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxSZWxDYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBzeXNMb2NhbGVDYWNoZSA9IG51bGw7XG5mdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7XG4gIGlmIChzeXNMb2NhbGVDYWNoZSkge1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfSBlbHNlIHtcbiAgICBzeXNMb2NhbGVDYWNoZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlO1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGVTdHIpIHtcbiAgLy8gSSByZWFsbHkgd2FudCB0byBhdm9pZCB3cml0aW5nIGEgQkNQIDQ3IHBhcnNlclxuICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDdcbiAgLy8gSW5zdGVhZCwgd2UnbGwgZG8gdGhpczpcblxuICAvLyBhKSBpZiB0aGUgc3RyaW5nIGhhcyBubyAtdSBleHRlbnNpb25zLCBqdXN0IGxlYXZlIGl0IGFsb25lXG4gIC8vIGIpIGlmIGl0IGRvZXMsIHVzZSBJbnRsIHRvIHJlc29sdmUgZXZlcnl0aGluZ1xuICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXVcblxuICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cyxcbiAgLy8gYW5kIHdlJ3JlIG5vdCBwcm9wZXJseSBwYXJzaW5nIHRoaXMsIHNvIGp1c3Qgc3RyaXAgb3V0IHRoZVxuICAvLyBwcml2YXRlIG9uZXMgaWYgdGhleSBleGlzdC5cbiAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoXCIteC1cIik7XG4gIGlmICh4SW5kZXggIT09IC0xKSB7XG4gICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpO1xuICB9XG5cbiAgY29uc3QgdUluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoXCItdS1cIik7XG4gIGlmICh1SW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIFtsb2NhbGVTdHJdO1xuICB9IGVsc2Uge1xuICAgIGxldCBvcHRpb25zO1xuICAgIGxldCBzZWxlY3RlZFN0cjtcbiAgICB0cnkge1xuICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpO1xuICAgICAgc2VsZWN0ZWRTdHIgPSBsb2NhbGVTdHI7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTtcbiAgICAgIG9wdGlvbnMgPSBnZXRDYWNoZWREVEYoc21hbGxlcikucmVzb2x2ZWRPcHRpb25zKCk7XG4gICAgICBzZWxlY3RlZFN0ciA9IHNtYWxsZXI7XG4gICAgfVxuXG4gICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zO1xuICAgIHJldHVybiBbc2VsZWN0ZWRTdHIsIG51bWJlcmluZ1N5c3RlbSwgY2FsZW5kYXJdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7XG4gIGlmIChvdXRwdXRDYWxlbmRhciB8fCBudW1iZXJpbmdTeXN0ZW0pIHtcbiAgICBpZiAoIWxvY2FsZVN0ci5pbmNsdWRlcyhcIi11LVwiKSkge1xuICAgICAgbG9jYWxlU3RyICs9IFwiLXVcIjtcbiAgICB9XG5cbiAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHtcbiAgICAgIGxvY2FsZVN0ciArPSBgLWNhLSR7b3V0cHV0Q2FsZW5kYXJ9YDtcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxlU3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb2NhbGVTdHI7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwTW9udGhzKGYpIHtcbiAgY29uc3QgbXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMTI7IGkrKykge1xuICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpO1xuICAgIG1zLnB1c2goZihkdCkpO1xuICB9XG4gIHJldHVybiBtcztcbn1cblxuZnVuY3Rpb24gbWFwV2Vla2RheXMoZikge1xuICBjb25zdCBtcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHtcbiAgICBjb25zdCBkdCA9IERhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMgKyBpKTtcbiAgICBtcy5wdXNoKGYoZHQpKTtcbiAgfVxuICByZXR1cm4gbXM7XG59XG5cbmZ1bmN0aW9uIGxpc3RTdHVmZihsb2MsIGxlbmd0aCwgZGVmYXVsdE9LLCBlbmdsaXNoRm4sIGludGxGbikge1xuICBjb25zdCBtb2RlID0gbG9jLmxpc3RpbmdNb2RlKGRlZmF1bHRPSyk7XG5cbiAgaWYgKG1vZGUgPT09IFwiZXJyb3JcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKG1vZGUgPT09IFwiZW5cIikge1xuICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW50bEZuKGxlbmd0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNGYXN0TnVtYmVycyhsb2MpIHtcbiAgaWYgKGxvYy5udW1iZXJpbmdTeXN0ZW0gJiYgbG9jLm51bWJlcmluZ1N5c3RlbSAhPT0gXCJsYXRuXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGxvYy5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiIHx8XG4gICAgICAhbG9jLmxvY2FsZSB8fFxuICAgICAgbG9jLmxvY2FsZS5zdGFydHNXaXRoKFwiZW5cIikgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGludGwsIGZvcmNlU2ltcGxlLCBvcHRzKSB7XG4gICAgdGhpcy5wYWRUbyA9IG9wdHMucGFkVG8gfHwgMDtcbiAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTtcblxuICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7XG5cbiAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW50bE9wdHMgPSB7IHVzZUdyb3VwaW5nOiBmYWxzZSwgLi4ub3B0cyB9O1xuICAgICAgaWYgKG9wdHMucGFkVG8gPiAwKSBpbnRsT3B0cy5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG9wdHMucGFkVG87XG4gICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0KGkpIHtcbiAgICBpZiAodGhpcy5pbmYpIHtcbiAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiBpO1xuICAgICAgcmV0dXJuIHRoaXMuaW5mLmZvcm1hdChmaXhlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRvIG1hdGNoIHRoZSBicm93c2VyJ3MgbnVtYmVyZm9ybWF0dGVyIGRlZmF1bHRzXG4gICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogcm91bmRUbyhpLCAzKTtcbiAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5jbGFzcyBQb2x5RGF0ZUZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0gb3B0cztcblxuICAgIGxldCB6ID0gdW5kZWZpbmVkO1xuICAgIGlmIChkdC56b25lLmlzVW5pdmVyc2FsKSB7XG4gICAgICAvLyBVVEMtOCBvciBFdGMvVVRDLTggYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YSwgb25seSBFdGMvR01UKzggYW5kIHRoZSBsaWtlLlxuICAgICAgLy8gVGhhdCBpcyB3aHkgZml4ZWQtb2Zmc2V0IFRaIGlzIHNldCB0byB0aGF0IHVubGVzcyBpdCBpczpcbiAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULlxuICAgICAgLy8gMi4gVW5zdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXI6XG4gICAgICAvLyAgICAtIHNvbWUgZG8gbm90IHN1cHBvcnQgRXRjL1xuICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhXG4gICAgICBjb25zdCBnbXRPZmZzZXQgPSAtMSAqIChkdC5vZmZzZXQgLyA2MCk7XG4gICAgICBjb25zdCBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyBgRXRjL0dNVCske2dtdE9mZnNldH1gIDogYEV0Yy9HTVQke2dtdE9mZnNldH1gO1xuICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHtcbiAgICAgICAgeiA9IG9mZnNldFo7XG4gICAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vdCBhbGwgZml4ZWQtb2Zmc2V0IHpvbmVzIGxpa2UgRXRjLys0OjMwIGFyZSBwcmVzZW50IGluIHR6ZGF0YS5cbiAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBtYWtlIGRvLiBUd28gY2FzZXM6XG4gICAgICAgIC8vIDEuIFRoZSBmb3JtYXQgb3B0aW9ucyB0ZWxsIHVzIHRvIHNob3cgdGhlIHpvbmUuIFdlIGNhbid0IGRvIHRoYXQsIHNvIHRoZSBiZXN0XG4gICAgICAgIC8vIHdlIGNhbiBkbyBpcyBmb3JtYXQgdGhlIGRhdGUgaW4gVVRDLlxuICAgICAgICAvLyAyLiBUaGUgZm9ybWF0IG9wdGlvbnMgZG9uJ3QgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBUaGVuIHdlIGNhbiBhZGp1c3QgdGhlbVxuICAgICAgICAvLyB0aGUgdGltZSBhbmQgdGVsbCB0aGUgZm9ybWF0dGVyIHRvIHNob3cgaXQgdG8gdXMgaW4gVVRDLCBzbyB0aGF0IHRoZSB0aW1lIGlzIHJpZ2h0XG4gICAgICAgIC8vIGFuZCB0aGUgYmFkIHpvbmUgZG9lc24ndCBzaG93IHVwLlxuICAgICAgICB6ID0gXCJVVENcIjtcbiAgICAgICAgaWYgKG9wdHMudGltZVpvbmVOYW1lKSB7XG4gICAgICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZHQgPSBkdC5vZmZzZXQgPT09IDAgPyBkdCA6IERhdGVUaW1lLmZyb21NaWxsaXMoZHQudHMgKyBkdC5vZmZzZXQgKiA2MCAqIDEwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09IFwic3lzdGVtXCIpIHtcbiAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgeiA9IGR0LnpvbmUubmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnRsT3B0cyA9IHsgLi4udGhpcy5vcHRzIH07XG4gICAgaW50bE9wdHMudGltZVpvbmUgPSBpbnRsT3B0cy50aW1lWm9uZSB8fCB6O1xuICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTtcbiAgfVxuXG4gIGZvcm1hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5kdGYuZm9ybWF0KHRoaXMuZHQudG9KU0RhdGUoKSk7XG4gIH1cblxuICBmb3JtYXRUb1BhcnRzKCkge1xuICAgIHJldHVybiB0aGlzLmR0Zi5mb3JtYXRUb1BhcnRzKHRoaXMuZHQudG9KU0RhdGUoKSk7XG4gIH1cblxuICByZXNvbHZlZE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHRmLnJlc29sdmVkT3B0aW9ucygpO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgUG9seVJlbEZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGludGwsIGlzRW5nbGlzaCwgb3B0cykge1xuICAgIHRoaXMub3B0cyA9IHsgc3R5bGU6IFwibG9uZ1wiLCAuLi5vcHRzIH07XG4gICAgaWYgKCFpc0VuZ2xpc2ggJiYgaGFzUmVsYXRpdmUoKSkge1xuICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0KGNvdW50LCB1bml0KSB7XG4gICAgaWYgKHRoaXMucnRmKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0KGNvdW50LCB1bml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEVuZ2xpc2guZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCB0aGlzLm9wdHMubnVtZXJpYywgdGhpcy5vcHRzLnN0eWxlICE9PSBcImxvbmdcIik7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCkge1xuICAgIGlmICh0aGlzLnJ0Zikge1xuICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NhbGUge1xuICBzdGF0aWMgZnJvbU9wdHMob3B0cykge1xuICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKG9wdHMubG9jYWxlLCBvcHRzLm51bWJlcmluZ1N5c3RlbSwgb3B0cy5vdXRwdXRDYWxlbmRhciwgb3B0cy5kZWZhdWx0VG9FTik7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciwgZGVmYXVsdFRvRU4gPSBmYWxzZSkge1xuICAgIGNvbnN0IHNwZWNpZmllZExvY2FsZSA9IGxvY2FsZSB8fCBTZXR0aW5ncy5kZWZhdWx0TG9jYWxlO1xuICAgIC8vIHRoZSBzeXN0ZW0gbG9jYWxlIGlzIHVzZWZ1bCBmb3IgaHVtYW4gcmVhZGFibGUgc3RyaW5ncyBidXQgYW5ub3lpbmcgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBrbm93biBmb3JtYXRzXG4gICAgY29uc3QgbG9jYWxlUiA9IHNwZWNpZmllZExvY2FsZSB8fCAoZGVmYXVsdFRvRU4gPyBcImVuLVVTXCIgOiBzeXN0ZW1Mb2NhbGUoKSk7XG4gICAgY29uc3QgbnVtYmVyaW5nU3lzdGVtUiA9IG51bWJlcmluZ1N5c3RlbSB8fCBTZXR0aW5ncy5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtO1xuICAgIGNvbnN0IG91dHB1dENhbGVuZGFyUiA9IG91dHB1dENhbGVuZGFyIHx8IFNldHRpbmdzLmRlZmF1bHRPdXRwdXRDYWxlbmRhcjtcbiAgICByZXR1cm4gbmV3IExvY2FsZShsb2NhbGVSLCBudW1iZXJpbmdTeXN0ZW1SLCBvdXRwdXRDYWxlbmRhclIsIHNwZWNpZmllZExvY2FsZSk7XG4gIH1cblxuICBzdGF0aWMgcmVzZXRDYWNoZSgpIHtcbiAgICBzeXNMb2NhbGVDYWNoZSA9IG51bGw7XG4gICAgaW50bERUQ2FjaGUgPSB7fTtcbiAgICBpbnRsTnVtQ2FjaGUgPSB7fTtcbiAgICBpbnRsUmVsQ2FjaGUgPSB7fTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT2JqZWN0KHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0gPSB7fSkge1xuICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcik7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihsb2NhbGUsIG51bWJlcmluZywgb3V0cHV0Q2FsZW5kYXIsIHNwZWNpZmllZExvY2FsZSkge1xuICAgIGNvbnN0IFtwYXJzZWRMb2NhbGUsIHBhcnNlZE51bWJlcmluZ1N5c3RlbSwgcGFyc2VkT3V0cHV0Q2FsZW5kYXJdID0gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlKTtcblxuICAgIHRoaXMubG9jYWxlID0gcGFyc2VkTG9jYWxlO1xuICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsO1xuICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPSBvdXRwdXRDYWxlbmRhciB8fCBwYXJzZWRPdXRwdXRDYWxlbmRhciB8fCBudWxsO1xuICAgIHRoaXMuaW50bCA9IGludGxDb25maWdTdHJpbmcodGhpcy5sb2NhbGUsIHRoaXMubnVtYmVyaW5nU3lzdGVtLCB0aGlzLm91dHB1dENhbGVuZGFyKTtcblxuICAgIHRoaXMud2Vla2RheXNDYWNoZSA9IHsgZm9ybWF0OiB7fSwgc3RhbmRhbG9uZToge30gfTtcbiAgICB0aGlzLm1vbnRoc0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9O1xuICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IG51bGw7XG4gICAgdGhpcy5lcmFDYWNoZSA9IHt9O1xuXG4gICAgdGhpcy5zcGVjaWZpZWRMb2NhbGUgPSBzcGVjaWZpZWRMb2NhbGU7XG4gICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IG51bGw7XG4gIH1cblxuICBnZXQgZmFzdE51bWJlcnMoKSB7XG4gICAgaWYgKHRoaXMuZmFzdE51bWJlcnNDYWNoZWQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQ7XG4gIH1cblxuICBsaXN0aW5nTW9kZSgpIHtcbiAgICBjb25zdCBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpO1xuICAgIGNvbnN0IGhhc05vV2VpcmRuZXNzID1cbiAgICAgICh0aGlzLm51bWJlcmluZ1N5c3RlbSA9PT0gbnVsbCB8fCB0aGlzLm51bWJlcmluZ1N5c3RlbSA9PT0gXCJsYXRuXCIpICYmXG4gICAgICAodGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gbnVsbCB8fCB0aGlzLm91dHB1dENhbGVuZGFyID09PSBcImdyZWdvcnlcIik7XG4gICAgcmV0dXJuIGlzQWN0dWFsbHlFbiAmJiBoYXNOb1dlaXJkbmVzcyA/IFwiZW5cIiA6IFwiaW50bFwiO1xuICB9XG5cbiAgY2xvbmUoYWx0cykge1xuICAgIGlmICghYWx0cyB8fCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhbHRzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShcbiAgICAgICAgYWx0cy5sb2NhbGUgfHwgdGhpcy5zcGVjaWZpZWRMb2NhbGUsXG4gICAgICAgIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLFxuICAgICAgICBhbHRzLm91dHB1dENhbGVuZGFyIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIsXG4gICAgICAgIGFsdHMuZGVmYXVsdFRvRU4gfHwgZmFsc2VcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmVkZWZhdWx0VG9FTihhbHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiB0cnVlIH0pO1xuICB9XG5cbiAgcmVkZWZhdWx0VG9TeXN0ZW0oYWx0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoeyAuLi5hbHRzLCBkZWZhdWx0VG9FTjogZmFsc2UgfSk7XG4gIH1cblxuICBtb250aHMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSwgZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIEVuZ2xpc2gubW9udGhzLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnRsID0gZm9ybWF0ID8geyBtb250aDogbGVuZ3RoLCBkYXk6IFwibnVtZXJpY1wiIH0gOiB7IG1vbnRoOiBsZW5ndGggfSxcbiAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gXCJmb3JtYXRcIiA6IFwic3RhbmRhbG9uZVwiO1xuICAgICAgaWYgKCF0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkge1xuICAgICAgICB0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcE1vbnRocygoZHQpID0+IHRoaXMuZXh0cmFjdChkdCwgaW50bCwgXCJtb250aFwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF07XG4gICAgfSk7XG4gIH1cblxuICB3ZWVrZGF5cyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlLCBkZWZhdWx0T0sgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgRW5nbGlzaC53ZWVrZGF5cywgKCkgPT4ge1xuICAgICAgY29uc3QgaW50bCA9IGZvcm1hdFxuICAgICAgICAgID8geyB3ZWVrZGF5OiBsZW5ndGgsIHllYXI6IFwibnVtZXJpY1wiLCBtb250aDogXCJsb25nXCIsIGRheTogXCJudW1lcmljXCIgfVxuICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSxcbiAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gXCJmb3JtYXRcIiA6IFwic3RhbmRhbG9uZVwiO1xuICAgICAgaWYgKCF0aGlzLndlZWtkYXlzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdKSB7XG4gICAgICAgIHRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBXZWVrZGF5cygoZHQpID0+XG4gICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcIndlZWtkYXlcIilcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLndlZWtkYXlzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdO1xuICAgIH0pO1xuICB9XG5cbiAgbWVyaWRpZW1zKGRlZmF1bHRPSyA9IHRydWUpIHtcbiAgICByZXR1cm4gbGlzdFN0dWZmKFxuICAgICAgdGhpcyxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGRlZmF1bHRPSyxcbiAgICAgICgpID0+IEVuZ2xpc2gubWVyaWRpZW1zLFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBJbiB0aGVvcnkgdGhlcmUgY291bGQgYmUgYXJpYml0cmFyeSBkYXkgcGVyaW9kcy4gV2UncmUgZ29ubmEgYXNzdW1lIHRoZXJlIGFyZSBleGFjdGx5IHR3b1xuICAgICAgICAvLyBmb3IgQU0gYW5kIFBNLiBUaGlzIGlzIHByb2JhYmx5IHdyb25nLCBidXQgaXQncyBtYWtlcyBwYXJzaW5nIHdheSBlYXNpZXIuXG4gICAgICAgIGlmICghdGhpcy5tZXJpZGllbUNhY2hlKSB7XG4gICAgICAgICAgY29uc3QgaW50bCA9IHsgaG91cjogXCJudW1lcmljXCIsIGhvdXJDeWNsZTogXCJoMTJcIiB9O1xuICAgICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IFtEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCA5KSwgRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgMTkpXS5tYXAoXG4gICAgICAgICAgICAoZHQpID0+IHRoaXMuZXh0cmFjdChkdCwgaW50bCwgXCJkYXlwZXJpb2RcIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVyaWRpZW1DYWNoZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZXJhcyhsZW5ndGgsIGRlZmF1bHRPSyA9IHRydWUpIHtcbiAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCBFbmdsaXNoLmVyYXMsICgpID0+IHtcbiAgICAgIGNvbnN0IGludGwgPSB7IGVyYTogbGVuZ3RoIH07XG5cbiAgICAgIC8vIFRoaXMgaXMgcHJvYmxlbWF0aWMuIERpZmZlcmVudCBjYWxlbmRhcnMgYXJlIGdvaW5nIHRvIGRlZmluZSBlcmFzIHRvdGFsbHkgZGlmZmVyZW50bHkuIFdoYXQgSSBuZWVkIGlzIHRoZSBtaW5pbXVtIHNldCBvZiBkYXRlc1xuICAgICAgLy8gdG8gZGVmaW5pdGVseSBlbnVtZXJhdGUgdGhlbS5cbiAgICAgIGlmICghdGhpcy5lcmFDYWNoZVtsZW5ndGhdKSB7XG4gICAgICAgIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSA9IFtEYXRlVGltZS51dGMoLTQwLCAxLCAxKSwgRGF0ZVRpbWUudXRjKDIwMTcsIDEsIDEpXS5tYXAoKGR0KSA9PlxuICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgXCJlcmFcIilcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4dHJhY3QoZHQsIGludGxPcHRzLCBmaWVsZCkge1xuICAgIGNvbnN0IGRmID0gdGhpcy5kdEZvcm1hdHRlcihkdCwgaW50bE9wdHMpLFxuICAgICAgcmVzdWx0cyA9IGRmLmZvcm1hdFRvUGFydHMoKSxcbiAgICAgIG1hdGNoaW5nID0gcmVzdWx0cy5maW5kKChtKSA9PiBtLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gZmllbGQpO1xuICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDtcbiAgfVxuXG4gIG51bWJlckZvcm1hdHRlcihvcHRzID0ge30pIHtcbiAgICAvLyB0aGlzIGZvcmNlc2ltcGxlIG9wdGlvbiBpcyBuZXZlciB1c2VkICh0aGUgb25seSBjYWxsZXIgc2hvcnQtY2lyY3VpdHMgb24gaXQsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBsZWF2ZSlcbiAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KVxuICAgIHJldHVybiBuZXcgUG9seU51bWJlckZvcm1hdHRlcih0aGlzLmludGwsIG9wdHMuZm9yY2VTaW1wbGUgfHwgdGhpcy5mYXN0TnVtYmVycywgb3B0cyk7XG4gIH1cblxuICBkdEZvcm1hdHRlcihkdCwgaW50bE9wdHMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgUG9seURhdGVGb3JtYXR0ZXIoZHQsIHRoaXMuaW50bCwgaW50bE9wdHMpO1xuICB9XG5cbiAgcmVsRm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgUG9seVJlbEZvcm1hdHRlcih0aGlzLmludGwsIHRoaXMuaXNFbmdsaXNoKCksIG9wdHMpO1xuICB9XG5cbiAgbGlzdEZvcm1hdHRlcihvcHRzID0ge30pIHtcbiAgICByZXR1cm4gZ2V0Q2FjaGVkTEYodGhpcy5pbnRsLCBvcHRzKTtcbiAgfVxuXG4gIGlzRW5nbGlzaCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5sb2NhbGUgPT09IFwiZW5cIiB8fFxuICAgICAgdGhpcy5sb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gXCJlbi11c1wiIHx8XG4gICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmludGwpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZS5zdGFydHNXaXRoKFwiZW4tdXNcIilcbiAgICApO1xuICB9XG5cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubG9jYWxlID09PSBvdGhlci5sb2NhbGUgJiZcbiAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBvdGhlci5udW1iZXJpbmdTeXN0ZW0gJiZcbiAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG90aGVyLm91dHB1dENhbGVuZGFyXG4gICAgKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgc2lnbmVkT2Zmc2V0IH0gZnJvbSBcIi4uL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcblxubGV0IHNpbmdsZXRvbiA9IG51bGw7XG5cbi8qKlxuICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKVxuICogQGltcGxlbWVudHMge1pvbmV9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIFVUQ1xuICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IHV0Y0luc3RhbmNlKCkge1xuICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHtcbiAgICAgIHNpbmdsZXRvbiA9IG5ldyBGaXhlZE9mZnNldFpvbmUoMCk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b247XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIGluc3RhbmNlIHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXNcbiAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfVxuICAgKi9cbiAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkge1xuICAgIHJldHVybiBvZmZzZXQgPT09IDAgPyBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2UgOiBuZXcgRml4ZWRPZmZzZXRab25lKG9mZnNldCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgXCJVVEMrNlwiXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIG9mZnNldCBzdHJpbmcgdG8gcGFyc2VcbiAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKFwiVVRDKzZcIilcbiAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKFwiVVRDKzA2XCIpXG4gICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihcIlVUQy02OjAwXCIpXG4gICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBwYXJzZVNwZWNpZmllcihzKSB7XG4gICAgaWYgKHMpIHtcbiAgICAgIGNvbnN0IHIgPSBzLm1hdGNoKC9edXRjKD86KFsrLV1cXGR7MSwyfSkoPzo6KFxcZHsyfSkpPyk/JC9pKTtcbiAgICAgIGlmIChyKSB7XG4gICAgICAgIHJldHVybiBuZXcgRml4ZWRPZmZzZXRab25lKHNpZ25lZE9mZnNldChyWzFdLCByWzJdKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3Iob2Zmc2V0KSB7XG4gICAgc3VwZXIoKTtcbiAgICAvKiogQHByaXZhdGUgKiovXG4gICAgdGhpcy5maXhlZCA9IG9mZnNldDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImZpeGVkXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/IFwiVVRDXCIgOiBgVVRDJHtmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgXCJuYXJyb3dcIil9YDtcbiAgfVxuXG4gIGdldCBpYW5hTmFtZSgpIHtcbiAgICBpZiAodGhpcy5maXhlZCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwiRXRjL1VUQ1wiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYEV0Yy9HTVQke2Zvcm1hdE9mZnNldCgtdGhpcy5maXhlZCwgXCJuYXJyb3dcIil9YDtcbiAgICB9XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1VuaXZlcnNhbCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwiZml4ZWRcIiAmJiBvdGhlclpvbmUuZml4ZWQgPT09IHRoaXMuZml4ZWQ7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbi8qKlxuICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy5cbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUge1xuICBjb25zdHJ1Y3Rvcih6b25lTmFtZSkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqICBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuem9uZU5hbWUgPSB6b25lTmFtZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnpvbmVOYW1lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXQoKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsICIvKipcbiAqIEBwcml2YXRlXG4gKi9cblxuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IEludmFsaWRab25lIGZyb20gXCIuLi96b25lcy9pbnZhbGlkWm9uZS5qc1wiO1xuXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNTdHJpbmcsIGlzTnVtYmVyIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0IFN5c3RlbVpvbmUgZnJvbSBcIi4uL3pvbmVzL3N5c3RlbVpvbmUuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVpvbmUoaW5wdXQsIGRlZmF1bHRab25lKSB7XG4gIGxldCBvZmZzZXQ7XG4gIGlmIChpc1VuZGVmaW5lZChpbnB1dCkgfHwgaW5wdXQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZGVmYXVsdFpvbmU7XG4gIH0gZWxzZSBpZiAoaW5wdXQgaW5zdGFuY2VvZiBab25lKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlucHV0KSkge1xuICAgIGNvbnN0IGxvd2VyZWQgPSBpbnB1dC50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChsb3dlcmVkID09PSBcImRlZmF1bHRcIikgcmV0dXJuIGRlZmF1bHRab25lO1xuICAgIGVsc2UgaWYgKGxvd2VyZWQgPT09IFwibG9jYWxcIiB8fCBsb3dlcmVkID09PSBcInN5c3RlbVwiKSByZXR1cm4gU3lzdGVtWm9uZS5pbnN0YW5jZTtcbiAgICBlbHNlIGlmIChsb3dlcmVkID09PSBcInV0Y1wiIHx8IGxvd2VyZWQgPT09IFwiZ210XCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7XG4gICAgZWxzZSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKGxvd2VyZWQpIHx8IElBTkFab25lLmNyZWF0ZShpbnB1dCk7XG4gIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSBcIm9iamVjdFwiICYmIGlucHV0Lm9mZnNldCAmJiB0eXBlb2YgaW5wdXQub2Zmc2V0ID09PSBcIm51bWJlclwiKSB7XG4gICAgLy8gVGhpcyBpcyBkdW1iLCBidXQgdGhlIGluc3RhbmNlb2YgY2hlY2sgYWJvdmUgZG9lc24ndCBzZWVtIHRvIHJlYWxseSB3b3JrXG4gICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdFxuICAgIHJldHVybiBpbnB1dDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTtcbiAgfVxufVxuIiwgImltcG9ydCBTeXN0ZW1ab25lIGZyb20gXCIuL3pvbmVzL3N5c3RlbVpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9pbXBsL2xvY2FsZS5qc1wiO1xuXG5pbXBvcnQgeyBub3JtYWxpemVab25lIH0gZnJvbSBcIi4vaW1wbC96b25lVXRpbC5qc1wiO1xuXG5sZXQgbm93ID0gKCkgPT4gRGF0ZS5ub3coKSxcbiAgZGVmYXVsdFpvbmUgPSBcInN5c3RlbVwiLFxuICBkZWZhdWx0TG9jYWxlID0gbnVsbCxcbiAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsXG4gIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG51bGwsXG4gIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDYwLFxuICB0aHJvd09uSW52YWxpZDtcblxuLyoqXG4gKiBTZXR0aW5ncyBjb250YWlucyBzdGF0aWMgZ2V0dGVycyBhbmQgc2V0dGVycyB0aGF0IGNvbnRyb2wgTHV4b24ncyBvdmVyYWxsIGJlaGF2aW9yLiBMdXhvbiBpcyBhIHNpbXBsZSBsaWJyYXJ5IHdpdGggZmV3IG9wdGlvbnMsIGJ1dCB0aGUgb25lcyBpdCBkb2VzIGhhdmUgbGl2ZSBoZXJlLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGNhbGxiYWNrIGZvciByZXR1cm5pbmcgdGhlIGN1cnJlbnQgdGltZXN0YW1wLlxuICAgKiBAdHlwZSB7ZnVuY3Rpb259XG4gICAqL1xuICBzdGF0aWMgZ2V0IG5vdygpIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50XG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICogQGV4YW1wbGUgU2V0dGluZ3Mubm93ID0gKCkgPT4gRGF0ZS5ub3coKSArIDMwMDAgLy8gcHJldGVuZCBpdCBpcyAzIHNlY29uZHMgaW4gdGhlIGZ1dHVyZVxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWVcbiAgICovXG4gIHN0YXRpYyBzZXQgbm93KG4pIHtcbiAgICBub3cgPSBuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgdG8gY3JlYXRlIERhdGVUaW1lcyBpbi4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogVXNlIHRoZSB2YWx1ZSBcInN5c3RlbVwiIHRvIHJlc2V0IHRoaXMgdmFsdWUgdG8gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdFpvbmUoem9uZSkge1xuICAgIGRlZmF1bHRab25lID0gem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgdGltZSB6b25lIG9iamVjdCBjdXJyZW50bHkgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVzLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgc3lzdGVtJ3MgdGltZSB6b25lICh0aGUgb25lIHNldCBvbiB0aGUgbWFjaGluZSB0aGF0IHJ1bnMgdGhpcyBjb2RlKS5cbiAgICogQHR5cGUge1pvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRab25lKCkge1xuICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvY2FsZSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdExvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdExvY2FsZShsb2NhbGUpIHtcbiAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbnVtYmVyaW5nIHN5c3RlbSB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0obnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKCkge1xuICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IG91dHB1dCBjYWxlbmRhciB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHRPdXRwdXRDYWxlbmRhcihvdXRwdXRDYWxlbmRhcikge1xuICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3V0b2ZmIHllYXIgYWZ0ZXIgd2hpY2ggYSBzdHJpbmcgZW5jb2RpbmcgYSB5ZWFyIGFzIHR3byBkaWdpdHMgaXMgaW50ZXJwcmV0ZWQgdG8gb2NjdXIgaW4gdGhlIGN1cnJlbnQgY2VudHVyeS5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIHN0YXRpYyBnZXQgdHdvRGlnaXRDdXRvZmZZZWFyKCkge1xuICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPSAwIC8vIGN1dC1vZmYgeWVhciBpcyAwLCBzbyBhbGwgJ3l5JyBhcmUgaW50ZXJwcmV0dGVkIGFzIGN1cnJlbnQgY2VudHVyeVxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPSA1MCAvLyAnNDknIC0+IDE5NDk7ICc1MCcgLT4gMjA1MFxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPSAxOTUwIC8vIGludGVycHJldHRlZCBhcyA1MFxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPSAyMDUwIC8vIEFMU08gaW50ZXJwcmV0dGVkIGFzIDUwXG4gICAqL1xuICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7XG4gICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gY3V0b2ZmWWVhciAlIDEwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHNcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkge1xuICAgIHJldHVybiB0aHJvd09uSW52YWxpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHNcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHtcbiAgICB0aHJvd09uSW52YWxpZCA9IHQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7XG4gICAgTG9jYWxlLnJlc2V0Q2FjaGUoKTtcbiAgICBJQU5BWm9uZS5yZXNldENhY2hlKCk7XG4gIH1cbn1cbiIsICIvKlxuICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLlxuICBCZWNhdXNlIEx1eG9uIGlzIHNtYWxsKGlzaCksIHRoaXMgc2hvdWxkIHN0YXkgc21hbGwgYW5kIHdlIHdvbid0IHdvcnJ5IGFib3V0IHNwbGl0dGluZ1xuICBpdCB1cCBpbnRvLCBzYXksIHBhcnNpbmdVdGlsLmpzIGFuZCBiYXNpY1V0aWwuanMgYW5kIHNvIG9uLiBCdXQgdGhleSBhcmUgZGl2aWRlZCB1cCBieSBmZWF0dXJlIGFyZWEuXG4qL1xuXG5pbXBvcnQgeyBJbnZhbGlkQXJndW1lbnRFcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi4vc2V0dGluZ3MuanNcIjtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbi8vIFRZUEVTXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJ1bmRlZmluZWRcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcIm51bWJlclwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlZ2VyKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcIm51bWJlclwiICYmIG8gJSAxID09PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwic3RyaW5nXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGUobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSBcIltvYmplY3QgRGF0ZV1cIjtcbn1cblxuLy8gQ0FQQUJJTElUSUVTXG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNSZWxhdGl2ZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdHlwZW9mIEludGwgIT09IFwidW5kZWZpbmVkXCIgJiYgISFJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLyBPQkpFQ1RTIEFORCBBUlJBWVNcblxuZXhwb3J0IGZ1bmN0aW9uIG1heWJlQXJyYXkodGhpbmcpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpbmcpID8gdGhpbmcgOiBbdGhpbmddO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmVzdEJ5KGFyciwgYnksIGNvbXBhcmUpIHtcbiAgaWYgKGFyci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7XG4gICAgY29uc3QgcGFpciA9IFtieShuZXh0KSwgbmV4dF07XG4gICAgaWYgKCFiZXN0KSB7XG4gICAgICByZXR1cm4gcGFpcjtcbiAgICB9IGVsc2UgaWYgKGNvbXBhcmUoYmVzdFswXSwgcGFpclswXSkgPT09IGJlc3RbMF0pIHtcbiAgICAgIHJldHVybiBiZXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFpcjtcbiAgICB9XG4gIH0sIG51bGwpWzFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKChhLCBrKSA9PiB7XG4gICAgYVtrXSA9IG9ialtrXTtcbiAgICByZXR1cm4gYTtcbiAgfSwge30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxuLy8gTlVNQkVSUyBBTkQgU1RSSU5HU1xuXG5leHBvcnQgZnVuY3Rpb24gaW50ZWdlckJldHdlZW4odGhpbmcsIGJvdHRvbSwgdG9wKSB7XG4gIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7XG59XG5cbi8vIHggJSBuIGJ1dCB0YWtlcyB0aGUgc2lnbiBvZiBuIGluc3RlYWQgb2YgeFxuZXhwb3J0IGZ1bmN0aW9uIGZsb29yTW9kKHgsIG4pIHtcbiAgcmV0dXJuIHggLSBuICogTWF0aC5mbG9vcih4IC8gbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWRTdGFydChpbnB1dCwgbiA9IDIpIHtcbiAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7XG4gIGxldCBwYWRkZWQ7XG4gIGlmIChpc05lZykge1xuICAgIHBhZGRlZCA9IFwiLVwiICsgKFwiXCIgKyAtaW5wdXQpLnBhZFN0YXJ0KG4sIFwiMFwiKTtcbiAgfSBlbHNlIHtcbiAgICBwYWRkZWQgPSAoXCJcIiArIGlucHV0KS5wYWRTdGFydChuLCBcIjBcIik7XG4gIH1cbiAgcmV0dXJuIHBhZGRlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gXCJcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KHN0cmluZywgMTApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykge1xuICBpZiAoaXNVbmRlZmluZWQoc3RyaW5nKSB8fCBzdHJpbmcgPT09IG51bGwgfHwgc3RyaW5nID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdChzdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikge1xuICAvLyBSZXR1cm4gdW5kZWZpbmVkIChpbnN0ZWFkIG9mIDApIGluIHRoZXNlIGNhc2VzLCB3aGVyZSBmcmFjdGlvbiBpcyBub3Qgc2V0XG4gIGlmIChpc1VuZGVmaW5lZChmcmFjdGlvbikgfHwgZnJhY3Rpb24gPT09IG51bGwgfHwgZnJhY3Rpb24gPT09IFwiXCIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KFwiMC5cIiArIGZyYWN0aW9uKSAqIDEwMDA7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoZik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkge1xuICBjb25zdCBmYWN0b3IgPSAxMCAqKiBkaWdpdHMsXG4gICAgcm91bmRlciA9IHRvd2FyZFplcm8gPyBNYXRoLnRydW5jIDogTWF0aC5yb3VuZDtcbiAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3Rvcjtcbn1cblxuLy8gREFURSBCQVNJQ1NcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikge1xuICByZXR1cm4geWVhciAlIDQgPT09IDAgJiYgKHllYXIgJSAxMDAgIT09IDAgfHwgeWVhciAlIDQwMCA9PT0gMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXlzSW5ZZWFyKHllYXIpIHtcbiAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAzNjYgOiAzNjU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkge1xuICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSxcbiAgICBtb2RZZWFyID0geWVhciArIChtb250aCAtIG1vZE1vbnRoKSAvIDEyO1xuXG4gIGlmIChtb2RNb250aCA9PT0gMikge1xuICAgIHJldHVybiBpc0xlYXBZZWFyKG1vZFllYXIpID8gMjkgOiAyODtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gWzMxLCBudWxsLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV1bbW9kTW9udGggLSAxXTtcbiAgfVxufVxuXG4vLyBjb3ZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBsb2NhbCB0aW1lc3RhbXAgKGVwb2NoLCBidXQgd2l0aCB0aGUgb2Zmc2V0IGJha2VkIGluKVxuZXhwb3J0IGZ1bmN0aW9uIG9ialRvTG9jYWxUUyhvYmopIHtcbiAgbGV0IGQgPSBEYXRlLlVUQyhcbiAgICBvYmoueWVhcixcbiAgICBvYmoubW9udGggLSAxLFxuICAgIG9iai5kYXksXG4gICAgb2JqLmhvdXIsXG4gICAgb2JqLm1pbnV0ZSxcbiAgICBvYmouc2Vjb25kLFxuICAgIG9iai5taWxsaXNlY29uZFxuICApO1xuXG4gIC8vIGZvciBsZWdhY3kgcmVhc29ucywgeWVhcnMgYmV0d2VlbiAwIGFuZCA5OSBhcmUgaW50ZXJwcmV0ZWQgYXMgMTlYWDsgcmV2ZXJ0IHRoYXRcbiAgaWYgKG9iai55ZWFyIDwgMTAwICYmIG9iai55ZWFyID49IDApIHtcbiAgICBkID0gbmV3IERhdGUoZCk7XG4gICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTtcbiAgfVxuICByZXR1cm4gK2Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3ZWVrc0luV2Vla1llYXIod2Vla1llYXIpIHtcbiAgY29uc3QgcDEgPVxuICAgICAgKHdlZWtZZWFyICtcbiAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQpIC1cbiAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgK1xuICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNDAwKSkgJVxuICAgICAgNyxcbiAgICBsYXN0ID0gd2Vla1llYXIgLSAxLFxuICAgIHAyID0gKGxhc3QgKyBNYXRoLmZsb29yKGxhc3QgLyA0KSAtIE1hdGguZmxvb3IobGFzdCAvIDEwMCkgKyBNYXRoLmZsb29yKGxhc3QgLyA0MDApKSAlIDc7XG4gIHJldHVybiBwMSA9PT0gNCB8fCBwMiA9PT0gMyA/IDUzIDogNTI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnRydW5jYXRlWWVhcih5ZWFyKSB7XG4gIGlmICh5ZWFyID4gOTkpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHJldHVybiB5ZWFyID4gU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID8gMTkwMCArIHllYXIgOiAyMDAwICsgeWVhcjtcbn1cblxuLy8gUEFSU0lOR1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Vab25lSW5mbyh0cywgb2Zmc2V0Rm9ybWF0LCBsb2NhbGUsIHRpbWVab25lID0gbnVsbCkge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLFxuICAgIGludGxPcHRzID0ge1xuICAgICAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgIH07XG5cbiAgaWYgKHRpbWVab25lKSB7XG4gICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTtcbiAgfVxuXG4gIGNvbnN0IG1vZGlmaWVkID0geyB0aW1lWm9uZU5hbWU6IG9mZnNldEZvcm1hdCwgLi4uaW50bE9wdHMgfTtcblxuICBjb25zdCBwYXJzZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG1vZGlmaWVkKVxuICAgIC5mb3JtYXRUb1BhcnRzKGRhdGUpXG4gICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBcInRpbWV6b25lbmFtZVwiKTtcbiAgcmV0dXJuIHBhcnNlZCA/IHBhcnNlZC52YWx1ZSA6IG51bGw7XG59XG5cbi8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwXG5leHBvcnQgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikge1xuICBsZXQgb2ZmSG91ciA9IHBhcnNlSW50KG9mZkhvdXJTdHIsIDEwKTtcblxuICAvLyBkb24ndCB8fCB0aGlzIGJlY2F1c2Ugd2Ugd2FudCB0byBwcmVzZXJ2ZSAtMFxuICBpZiAoTnVtYmVyLmlzTmFOKG9mZkhvdXIpKSB7XG4gICAgb2ZmSG91ciA9IDA7XG4gIH1cblxuICBjb25zdCBvZmZNaW4gPSBwYXJzZUludChvZmZNaW51dGVTdHIsIDEwKSB8fCAwLFxuICAgIG9mZk1pblNpZ25lZCA9IG9mZkhvdXIgPCAwIHx8IE9iamVjdC5pcyhvZmZIb3VyLCAtMCkgPyAtb2ZmTWluIDogb2ZmTWluO1xuICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkO1xufVxuXG4vLyBDT0VSQ0lPTlxuXG5leHBvcnQgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHtcbiAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIgfHwgdmFsdWUgPT09IFwiXCIgfHwgTnVtYmVyLmlzTmFOKG51bWVyaWNWYWx1ZSkpXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJbnZhbGlkIHVuaXQgdmFsdWUgJHt2YWx1ZX1gKTtcbiAgcmV0dXJuIG51bWVyaWNWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHt9O1xuICBmb3IgKGNvbnN0IHUgaW4gb2JqKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHtcbiAgICAgIGNvbnN0IHYgPSBvYmpbdV07XG4gICAgICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkge1xuICBjb25zdCBob3VycyA9IE1hdGgudHJ1bmMoTWF0aC5hYnMob2Zmc2V0IC8gNjApKSxcbiAgICBtaW51dGVzID0gTWF0aC50cnVuYyhNYXRoLmFicyhvZmZzZXQgJSA2MCkpLFxuICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/IFwiK1wiIDogXCItXCI7XG5cbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBgJHtzaWdufSR7cGFkU3RhcnQoaG91cnMsIDIpfToke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIGAke3NpZ259JHtob3Vyc30ke21pbnV0ZXMgPiAwID8gYDoke21pbnV0ZXN9YCA6IFwiXCJ9YDtcbiAgICBjYXNlIFwidGVjaGllXCI6XG4gICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBWYWx1ZSBmb3JtYXQgJHtmb3JtYXR9IGlzIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgZm9ybWF0YCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7XG4gIHJldHVybiBwaWNrKG9iaiwgW1wiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBGb3JtYXRzIGZyb20gXCIuL2Zvcm1hdHMuanNcIjtcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShvYmopIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgT2JqZWN0LmtleXMob2JqKS5zb3J0KCkpO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGNvbnN0IG1vbnRoc0xvbmcgPSBbXG4gIFwiSmFudWFyeVwiLFxuICBcIkZlYnJ1YXJ5XCIsXG4gIFwiTWFyY2hcIixcbiAgXCJBcHJpbFwiLFxuICBcIk1heVwiLFxuICBcIkp1bmVcIixcbiAgXCJKdWx5XCIsXG4gIFwiQXVndXN0XCIsXG4gIFwiU2VwdGVtYmVyXCIsXG4gIFwiT2N0b2JlclwiLFxuICBcIk5vdmVtYmVyXCIsXG4gIFwiRGVjZW1iZXJcIixcbl07XG5cbmV4cG9ydCBjb25zdCBtb250aHNTaG9ydCA9IFtcbiAgXCJKYW5cIixcbiAgXCJGZWJcIixcbiAgXCJNYXJcIixcbiAgXCJBcHJcIixcbiAgXCJNYXlcIixcbiAgXCJKdW5cIixcbiAgXCJKdWxcIixcbiAgXCJBdWdcIixcbiAgXCJTZXBcIixcbiAgXCJPY3RcIixcbiAgXCJOb3ZcIixcbiAgXCJEZWNcIixcbl07XG5cbmV4cG9ydCBjb25zdCBtb250aHNOYXJyb3cgPSBbXCJKXCIsIFwiRlwiLCBcIk1cIiwgXCJBXCIsIFwiTVwiLCBcIkpcIiwgXCJKXCIsIFwiQVwiLCBcIlNcIiwgXCJPXCIsIFwiTlwiLCBcIkRcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb250aHMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi5tb250aHNOYXJyb3ddO1xuICAgIGNhc2UgXCJzaG9ydFwiOlxuICAgICAgcmV0dXJuIFsuLi5tb250aHNTaG9ydF07XG4gICAgY2FzZSBcImxvbmdcIjpcbiAgICAgIHJldHVybiBbLi4ubW9udGhzTG9uZ107XG4gICAgY2FzZSBcIm51bWVyaWNcIjpcbiAgICAgIHJldHVybiBbXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCIxMFwiLCBcIjExXCIsIFwiMTJcIl07XG4gICAgY2FzZSBcIjItZGlnaXRcIjpcbiAgICAgIHJldHVybiBbXCIwMVwiLCBcIjAyXCIsIFwiMDNcIiwgXCIwNFwiLCBcIjA1XCIsIFwiMDZcIiwgXCIwN1wiLCBcIjA4XCIsIFwiMDlcIiwgXCIxMFwiLCBcIjExXCIsIFwiMTJcIl07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB3ZWVrZGF5c0xvbmcgPSBbXG4gIFwiTW9uZGF5XCIsXG4gIFwiVHVlc2RheVwiLFxuICBcIldlZG5lc2RheVwiLFxuICBcIlRodXJzZGF5XCIsXG4gIFwiRnJpZGF5XCIsXG4gIFwiU2F0dXJkYXlcIixcbiAgXCJTdW5kYXlcIixcbl07XG5cbmV4cG9ydCBjb25zdCB3ZWVrZGF5c1Nob3J0ID0gW1wiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCIsIFwiU3VuXCJdO1xuXG5leHBvcnQgY29uc3Qgd2Vla2RheXNOYXJyb3cgPSBbXCJNXCIsIFwiVFwiLCBcIldcIiwgXCJUXCIsIFwiRlwiLCBcIlNcIiwgXCJTXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gd2Vla2RheXMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi53ZWVrZGF5c05hcnJvd107XG4gICAgY2FzZSBcInNob3J0XCI6XG4gICAgICByZXR1cm4gWy4uLndlZWtkYXlzU2hvcnRdO1xuICAgIGNhc2UgXCJsb25nXCI6XG4gICAgICByZXR1cm4gWy4uLndlZWtkYXlzTG9uZ107XG4gICAgY2FzZSBcIm51bWVyaWNcIjpcbiAgICAgIHJldHVybiBbXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCJdO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWVyaWRpZW1zID0gW1wiQU1cIiwgXCJQTVwiXTtcblxuZXhwb3J0IGNvbnN0IGVyYXNMb25nID0gW1wiQmVmb3JlIENocmlzdFwiLCBcIkFubm8gRG9taW5pXCJdO1xuXG5leHBvcnQgY29uc3QgZXJhc1Nob3J0ID0gW1wiQkNcIiwgXCJBRFwiXTtcblxuZXhwb3J0IGNvbnN0IGVyYXNOYXJyb3cgPSBbXCJCXCIsIFwiQVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVyYXMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi5lcmFzTmFycm93XTtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBbLi4uZXJhc1Nob3J0XTtcbiAgICBjYXNlIFwibG9uZ1wiOlxuICAgICAgcmV0dXJuIFsuLi5lcmFzTG9uZ107XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJpZGllbUZvckRhdGVUaW1lKGR0KSB7XG4gIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIHdlZWtkYXlzKGxlbmd0aClbZHQud2Vla2RheSAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7XG4gIHJldHVybiBtb250aHMobGVuZ3RoKVtkdC5tb250aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJhRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkge1xuICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gXCJhbHdheXNcIiwgbmFycm93ID0gZmFsc2UpIHtcbiAgY29uc3QgdW5pdHMgPSB7XG4gICAgeWVhcnM6IFtcInllYXJcIiwgXCJ5ci5cIl0sXG4gICAgcXVhcnRlcnM6IFtcInF1YXJ0ZXJcIiwgXCJxdHIuXCJdLFxuICAgIG1vbnRoczogW1wibW9udGhcIiwgXCJtby5cIl0sXG4gICAgd2Vla3M6IFtcIndlZWtcIiwgXCJ3ay5cIl0sXG4gICAgZGF5czogW1wiZGF5XCIsIFwiZGF5XCIsIFwiZGF5c1wiXSxcbiAgICBob3VyczogW1wiaG91clwiLCBcImhyLlwiXSxcbiAgICBtaW51dGVzOiBbXCJtaW51dGVcIiwgXCJtaW4uXCJdLFxuICAgIHNlY29uZHM6IFtcInNlY29uZFwiLCBcInNlYy5cIl0sXG4gIH07XG5cbiAgY29uc3QgbGFzdGFibGUgPSBbXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCJdLmluZGV4T2YodW5pdCkgPT09IC0xO1xuXG4gIGlmIChudW1lcmljID09PSBcImF1dG9cIiAmJiBsYXN0YWJsZSkge1xuICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gXCJkYXlzXCI7XG4gICAgc3dpdGNoIChjb3VudCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInRvbW9ycm93XCIgOiBgbmV4dCAke3VuaXRzW3VuaXRdWzBdfWA7XG4gICAgICBjYXNlIC0xOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInllc3RlcmRheVwiIDogYGxhc3QgJHt1bml0c1t1bml0XVswXX1gO1xuICAgICAgY2FzZSAwOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInRvZGF5XCIgOiBgdGhpcyAke3VuaXRzW3VuaXRdWzBdfWA7XG4gICAgICBkZWZhdWx0OiAvLyBmYWxsIHRocm91Z2hcbiAgICB9XG4gIH1cblxuICBjb25zdCBpc0luUGFzdCA9IE9iamVjdC5pcyhjb3VudCwgLTApIHx8IGNvdW50IDwgMCxcbiAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSxcbiAgICBzaW5ndWxhciA9IGZtdFZhbHVlID09PSAxLFxuICAgIGxpbFVuaXRzID0gdW5pdHNbdW5pdF0sXG4gICAgZm10VW5pdCA9IG5hcnJvd1xuICAgICAgPyBzaW5ndWxhclxuICAgICAgICA/IGxpbFVuaXRzWzFdXG4gICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV1cbiAgICAgIDogc2luZ3VsYXJcbiAgICAgID8gdW5pdHNbdW5pdF1bMF1cbiAgICAgIDogdW5pdDtcbiAgcmV0dXJuIGlzSW5QYXN0ID8gYCR7Zm10VmFsdWV9ICR7Zm10VW5pdH0gYWdvYCA6IGBpbiAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFN0cmluZyhrbm93bkZvcm1hdCkge1xuICAvLyB0aGVzZSBhbGwgaGF2ZSB0aGUgb2Zmc2V0cyByZW1vdmVkIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlbVxuICAvLyB3aXRob3V0IGFsbCB0aGUgaW50bCBzdHVmZiB0aGlzIGlzIGJhY2tmaWxsaW5nXG4gIGNvbnN0IGZpbHRlcmVkID0gcGljayhrbm93bkZvcm1hdCwgW1xuICAgICAgXCJ3ZWVrZGF5XCIsXG4gICAgICBcImVyYVwiLFxuICAgICAgXCJ5ZWFyXCIsXG4gICAgICBcIm1vbnRoXCIsXG4gICAgICBcImRheVwiLFxuICAgICAgXCJob3VyXCIsXG4gICAgICBcIm1pbnV0ZVwiLFxuICAgICAgXCJzZWNvbmRcIixcbiAgICAgIFwidGltZVpvbmVOYW1lXCIsXG4gICAgICBcImhvdXJDeWNsZVwiLFxuICAgIF0pLFxuICAgIGtleSA9IHN0cmluZ2lmeShmaWx0ZXJlZCksXG4gICAgZGF0ZVRpbWVIdWdlID0gXCJFRUVFLCBMTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9TSE9SVCk6XG4gICAgICByZXR1cm4gXCJNL2QveXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9NRUQpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXlcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWSk6XG4gICAgICByZXR1cm4gXCJFRUUsIExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX0ZVTEwpOlxuICAgICAgcmV0dXJuIFwiTExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX0hVR0UpOlxuICAgICAgcmV0dXJuIFwiRUVFRSwgTExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FX1NJTVBMRSk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcImg6bW06c3MgYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfMjRfU0lNUExFKTpcbiAgICAgIHJldHVybiBcIkhIOm1tXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FXzI0X1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJISDptbTpzc1wiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJISDptbVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKTpcbiAgICAgIHJldHVybiBcIkhIOm1tXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9TSE9SVCk6XG4gICAgICByZXR1cm4gXCJNL2QveXl5eSwgaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9NRUQpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfRlVMTCk6XG4gICAgICByZXR1cm4gXCJMTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfSFVHRSk6XG4gICAgICByZXR1cm4gZGF0ZVRpbWVIdWdlO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIk0vZC95eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXksIGg6bW06c3MgYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSk6XG4gICAgICByZXR1cm4gXCJFRUUsIGQgTExMIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiTExMTCBkLCB5eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIkVFRUUsIExMTEwgZCwgeXl5eSwgaDptbTpzcyBhXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRlVGltZUh1Z2U7XG4gIH1cbn1cbiIsICJpbXBvcnQgKiBhcyBFbmdsaXNoIGZyb20gXCIuL2VuZ2xpc2guanNcIjtcbmltcG9ydCAqIGFzIEZvcm1hdHMgZnJvbSBcIi4vZm9ybWF0cy5qc1wiO1xuaW1wb3J0IHsgcGFkU3RhcnQgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVRva2VucyhzcGxpdHMsIHRva2VuVG9TdHJpbmcpIHtcbiAgbGV0IHMgPSBcIlwiO1xuICBmb3IgKGNvbnN0IHRva2VuIG9mIHNwbGl0cykge1xuICAgIGlmICh0b2tlbi5saXRlcmFsKSB7XG4gICAgICBzICs9IHRva2VuLnZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcyArPSB0b2tlblRvU3RyaW5nKHRva2VuLnZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzO1xufVxuXG5jb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0ge1xuICBEOiBGb3JtYXRzLkRBVEVfU0hPUlQsXG4gIEREOiBGb3JtYXRzLkRBVEVfTUVELFxuICBEREQ6IEZvcm1hdHMuREFURV9GVUxMLFxuICBEREREOiBGb3JtYXRzLkRBVEVfSFVHRSxcbiAgdDogRm9ybWF0cy5USU1FX1NJTVBMRSxcbiAgdHQ6IEZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMsXG4gIHR0dDogRm9ybWF0cy5USU1FX1dJVEhfU0hPUlRfT0ZGU0VULFxuICB0dHR0OiBGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCxcbiAgVDogRm9ybWF0cy5USU1FXzI0X1NJTVBMRSxcbiAgVFQ6IEZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMsXG4gIFRUVDogRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VULFxuICBUVFRUOiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCxcbiAgZjogRm9ybWF0cy5EQVRFVElNRV9TSE9SVCxcbiAgZmY6IEZvcm1hdHMuREFURVRJTUVfTUVELFxuICBmZmY6IEZvcm1hdHMuREFURVRJTUVfRlVMTCxcbiAgZmZmZjogRm9ybWF0cy5EQVRFVElNRV9IVUdFLFxuICBGOiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyxcbiAgRkY6IEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyxcbiAgRkZGOiBGb3JtYXRzLkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTLFxuICBGRkZGOiBGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTLFxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcm1hdHRlciB7XG4gIHN0YXRpYyBjcmVhdGUobG9jYWxlLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlRm9ybWF0KGZtdCkge1xuICAgIGxldCBjdXJyZW50ID0gbnVsbCxcbiAgICAgIGN1cnJlbnRGdWxsID0gXCJcIixcbiAgICAgIGJyYWNrZXRlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHNwbGl0cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm10Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTtcbiAgICAgIGlmIChjID09PSBcIidcIikge1xuICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogYnJhY2tldGVkLCB2YWw6IGN1cnJlbnRGdWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgICBjdXJyZW50RnVsbCA9IFwiXCI7XG4gICAgICAgIGJyYWNrZXRlZCA9ICFicmFja2V0ZWQ7XG4gICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkge1xuICAgICAgICBjdXJyZW50RnVsbCArPSBjO1xuICAgICAgfSBlbHNlIGlmIChjID09PSBjdXJyZW50KSB7XG4gICAgICAgIGN1cnJlbnRGdWxsICs9IGM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogZmFsc2UsIHZhbDogY3VycmVudEZ1bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEZ1bGwgPSBjO1xuICAgICAgICBjdXJyZW50ID0gYztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgc3BsaXRzLnB1c2goeyBsaXRlcmFsOiBicmFja2V0ZWQsIHZhbDogY3VycmVudEZ1bGwgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwbGl0cztcbiAgfVxuXG4gIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7XG4gICAgcmV0dXJuIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHNbdG9rZW5dO1xuICB9XG5cbiAgY29uc3RydWN0b3IobG9jYWxlLCBmb3JtYXRPcHRzKSB7XG4gICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0cztcbiAgICB0aGlzLmxvYyA9IGxvY2FsZTtcbiAgICB0aGlzLnN5c3RlbUxvYyA9IG51bGw7XG4gIH1cblxuICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykge1xuICAgIGlmICh0aGlzLnN5c3RlbUxvYyA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zeXN0ZW1Mb2MgPSB0aGlzLmxvYy5yZWRlZmF1bHRUb1N5c3RlbSgpO1xuICAgIH1cbiAgICBjb25zdCBkZiA9IHRoaXMuc3lzdGVtTG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTtcbiAgICByZXR1cm4gZGYuZm9ybWF0KCk7XG4gIH1cblxuICBmb3JtYXREYXRlVGltZShkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLmZvcm1hdCgpO1xuICB9XG5cbiAgZm9ybWF0RGF0ZVRpbWVQYXJ0cyhkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLmZvcm1hdFRvUGFydHMoKTtcbiAgfVxuXG4gIGZvcm1hdEludGVydmFsKGludGVydmFsLCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGludGVydmFsLnN0YXJ0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTtcbiAgICByZXR1cm4gZGYuZHRmLmZvcm1hdFJhbmdlKGludGVydmFsLnN0YXJ0LnRvSlNEYXRlKCksIGludGVydmFsLmVuZC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIHJlc29sdmVkT3B0aW9ucyhkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLnJlc29sdmVkT3B0aW9ucygpO1xuICB9XG5cbiAgbnVtKG4sIHAgPSAwKSB7XG4gICAgLy8gd2UgZ2V0IHNvbWUgcGVyZiBvdXQgb2YgZG9pbmcgdGhpcyBoZXJlLCBhbm5veWluZ2x5XG4gICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkge1xuICAgICAgcmV0dXJuIHBhZFN0YXJ0KG4sIHApO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdHMgPSB7IC4uLnRoaXMub3B0cyB9O1xuXG4gICAgaWYgKHAgPiAwKSB7XG4gICAgICBvcHRzLnBhZFRvID0gcDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sb2MubnVtYmVyRm9ybWF0dGVyKG9wdHMpLmZvcm1hdChuKTtcbiAgfVxuXG4gIGZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm10KSB7XG4gICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gXCJlblwiLFxuICAgICAgdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPSB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAmJiB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAhPT0gXCJncmVnb3J5XCIsXG4gICAgICBzdHJpbmcgPSAob3B0cywgZXh0cmFjdCkgPT4gdGhpcy5sb2MuZXh0cmFjdChkdCwgb3B0cywgZXh0cmFjdCksXG4gICAgICBmb3JtYXRPZmZzZXQgPSAob3B0cykgPT4ge1xuICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHtcbiAgICAgICAgICByZXR1cm4gXCJaXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiBcIlwiO1xuICAgICAgfSxcbiAgICAgIG1lcmlkaWVtID0gKCkgPT5cbiAgICAgICAga25vd25FbmdsaXNoXG4gICAgICAgICAgPyBFbmdsaXNoLm1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpXG4gICAgICAgICAgOiBzdHJpbmcoeyBob3VyOiBcIm51bWVyaWNcIiwgaG91ckN5Y2xlOiBcImgxMlwiIH0sIFwiZGF5cGVyaW9kXCIpLFxuICAgICAgbW9udGggPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2hcbiAgICAgICAgICA/IEVuZ2xpc2gubW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKVxuICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpLFxuICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+XG4gICAgICAgIGtub3duRW5nbGlzaFxuICAgICAgICAgID8gRW5nbGlzaC53ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aClcbiAgICAgICAgICA6IHN0cmluZyhcbiAgICAgICAgICAgICAgc3RhbmRhbG9uZSA/IHsgd2Vla2RheTogbGVuZ3RoIH0gOiB7IHdlZWtkYXk6IGxlbmd0aCwgbW9udGg6IFwibG9uZ1wiLCBkYXk6IFwibnVtZXJpY1wiIH0sXG4gICAgICAgICAgICAgIFwid2Vla2RheVwiXG4gICAgICAgICAgICApLFxuICAgICAgbWF5YmVNYWNybyA9ICh0b2tlbikgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pO1xuICAgICAgICBpZiAoZm9ybWF0T3B0cykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBmb3JtYXRPcHRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcmEgPSAobGVuZ3RoKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2ggPyBFbmdsaXNoLmVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgXCJlcmFcIiksXG4gICAgICB0b2tlblRvU3RyaW5nID0gKHRva2VuKSA9PiB7XG4gICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwOi8vY2xkci51bmljb2RlLm9yZy90cmFuc2xhdGlvbi9kYXRlLXRpbWUtMS9kYXRlLXRpbWUjVE9DLVN0YW5kYWxvbmUtdnMuLUZvcm1hdC1TdHlsZXNcbiAgICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAgIC8vIG1zXG4gICAgICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7XG4gICAgICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICAgICAgY2FzZSBcIlNTU1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTtcbiAgICAgICAgICAvLyBzZWNvbmRzXG4gICAgICAgICAgY2FzZSBcInNcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQpO1xuICAgICAgICAgIGNhc2UgXCJzc1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnNlY29uZCwgMik7XG4gICAgICAgICAgLy8gZnJhY3Rpb25hbCBzZWNvbmRzXG4gICAgICAgICAgY2FzZSBcInV1XCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwKSwgMik7XG4gICAgICAgICAgY2FzZSBcInV1dVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKE1hdGguZmxvb3IoZHQubWlsbGlzZWNvbmQgLyAxMDApKTtcbiAgICAgICAgICAvLyBtaW51dGVzXG4gICAgICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpO1xuICAgICAgICAgIGNhc2UgXCJtbVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7XG4gICAgICAgICAgLy8gaG91cnNcbiAgICAgICAgICBjYXNlIFwiaFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LmhvdXIgJSAxMiA9PT0gMCA/IDEyIDogZHQuaG91ciAlIDEyKTtcbiAgICAgICAgICBjYXNlIFwiaGhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMiwgMik7XG4gICAgICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyKTtcbiAgICAgICAgICBjYXNlIFwiSEhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyLCAyKTtcbiAgICAgICAgICAvLyBvZmZzZXRcbiAgICAgICAgICBjYXNlIFwiWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSArNlxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogXCJuYXJyb3dcIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSArMDY6MDBcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoeyBmb3JtYXQ6IFwic2hvcnRcIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgKzA2MDBcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoeyBmb3JtYXQ6IFwidGVjaGllXCIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSBFU1RcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiBcInNob3J0XCIsIGxvY2FsZTogdGhpcy5sb2MubG9jYWxlIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlpaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSBFYXN0ZXJuIFN0YW5kYXJkIFRpbWVcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiBcImxvbmdcIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7XG4gICAgICAgICAgLy8gem9uZVxuICAgICAgICAgIGNhc2UgXCJ6XCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFtZXJpY2EvTmV3X1lvcmtcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lTmFtZTtcbiAgICAgICAgICAvLyBtZXJpZGllbXNcbiAgICAgICAgICBjYXNlIFwiYVwiOlxuICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7XG4gICAgICAgICAgLy8gZGF0ZXNcbiAgICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsgZGF5OiBcIm51bWVyaWNcIiB9LCBcImRheVwiKSA6IHRoaXMubnVtKGR0LmRheSk7XG4gICAgICAgICAgY2FzZSBcImRkXCI6XG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6IFwiMi1kaWdpdFwiIH0sIFwiZGF5XCIpIDogdGhpcy5udW0oZHQuZGF5LCAyKTtcbiAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmVcbiAgICAgICAgICBjYXNlIFwiY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7XG4gICAgICAgICAgY2FzZSBcImNjY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlcydcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwic2hvcnRcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcImNjY2NcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcImxvbmdcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcImNjY2NjXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUJ1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJuYXJyb3dcIiwgdHJ1ZSk7XG4gICAgICAgICAgLy8gd2Vla2RheXMgLSBmb3JtYXRcbiAgICAgICAgICBjYXNlIFwiRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7XG4gICAgICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlcydcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwic2hvcnRcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJFRUVFXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUdWVzZGF5J1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJsb25nXCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiRUVFRUVcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1QnXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcIm5hcnJvd1wiLCBmYWxzZSk7XG4gICAgICAgICAgLy8gbW9udGhzIC0gc3RhbmRhbG9uZVxuICAgICAgICAgIGNhc2UgXCJMXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIm51bWVyaWNcIiwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpO1xuICAgICAgICAgIGNhc2UgXCJMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMSwgZG9lc24ndCBzZWVtIHRvIHdvcmtcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIjItZGlnaXRcIiwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgsIDIpO1xuICAgICAgICAgIGNhc2UgXCJMTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSmFuXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJzaG9ydFwiLCB0cnVlKTtcbiAgICAgICAgICBjYXNlIFwiTExMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5XG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJsb25nXCIsIHRydWUpO1xuICAgICAgICAgIGNhc2UgXCJMTExMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJuYXJyb3dcIiwgdHJ1ZSk7XG4gICAgICAgICAgLy8gbW9udGhzIC0gZm9ybWF0XG4gICAgICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgbW9udGg6IFwibnVtZXJpY1wiIH0sIFwibW9udGhcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC5tb250aCk7XG4gICAgICAgICAgY2FzZSBcIk1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAxXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogXCIyLWRpZ2l0XCIgfSwgXCJtb250aFwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTtcbiAgICAgICAgICBjYXNlIFwiTU1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphblxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwic2hvcnRcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJNTU1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphbnVhcnlcbiAgICAgICAgICAgIHJldHVybiBtb250aChcImxvbmdcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJNTU1NTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJuYXJyb3dcIiwgZmFsc2UpO1xuICAgICAgICAgIC8vIHllYXJzXG4gICAgICAgICAgY2FzZSBcInlcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMjAxNFxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsgeWVhcjogXCJudW1lcmljXCIgfSwgXCJ5ZWFyXCIpIDogdGhpcy5udW0oZHQueWVhcik7XG4gICAgICAgICAgY2FzZSBcInl5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDE0XG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiBcIjItZGlnaXRcIiB9LCBcInllYXJcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTtcbiAgICAgICAgICBjYXNlIFwieXl5eVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMDEyXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiBcIm51bWVyaWNcIiB9LCBcInllYXJcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLCA0KTtcbiAgICAgICAgICBjYXNlIFwieXl5eXl5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAwMDAxMlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgeWVhcjogXCJudW1lcmljXCIgfSwgXCJ5ZWFyXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQueWVhciwgNik7XG4gICAgICAgICAgLy8gZXJhc1xuICAgICAgICAgIGNhc2UgXCJHXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFEXG4gICAgICAgICAgICByZXR1cm4gZXJhKFwic2hvcnRcIik7XG4gICAgICAgICAgY2FzZSBcIkdHXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFubm8gRG9taW5pXG4gICAgICAgICAgICByZXR1cm4gZXJhKFwibG9uZ1wiKTtcbiAgICAgICAgICBjYXNlIFwiR0dHR0dcIjpcbiAgICAgICAgICAgIHJldHVybiBlcmEoXCJuYXJyb3dcIik7XG4gICAgICAgICAgY2FzZSBcImtrXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla1llYXIudG9TdHJpbmcoKS5zbGljZSgtMiksIDIpO1xuICAgICAgICAgIGNhc2UgXCJra2trXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla1llYXIsIDQpO1xuICAgICAgICAgIGNhc2UgXCJXXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla051bWJlcik7XG4gICAgICAgICAgY2FzZSBcIldXXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla051bWJlciwgMik7XG4gICAgICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5vcmRpbmFsKTtcbiAgICAgICAgICBjYXNlIFwib29vXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCwgMyk7XG4gICAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIpO1xuICAgICAgICAgIGNhc2UgXCJxcVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpO1xuICAgICAgICAgIGNhc2UgXCJYXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTtcbiAgICAgICAgICBjYXNlIFwieFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG1heWJlTWFjcm8odG9rZW4pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgcmV0dXJuIHN0cmluZ2lmeVRva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgdG9rZW5Ub1N0cmluZyk7XG4gIH1cblxuICBmb3JtYXREdXJhdGlvbkZyb21TdHJpbmcoZHVyLCBmbXQpIHtcbiAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHtcbiAgICAgICAgc3dpdGNoICh0b2tlblswXSkge1xuICAgICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJtaWxsaXNlY29uZFwiO1xuICAgICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJzZWNvbmRcIjtcbiAgICAgICAgICBjYXNlIFwibVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwibWludXRlXCI7XG4gICAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICAgIHJldHVybiBcImhvdXJcIjtcbiAgICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiZGF5XCI7XG4gICAgICAgICAgY2FzZSBcIndcIjpcbiAgICAgICAgICAgIHJldHVybiBcIndlZWtcIjtcbiAgICAgICAgICBjYXNlIFwiTVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwibW9udGhcIjtcbiAgICAgICAgICBjYXNlIFwieVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwieWVhclwiO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRva2VuVG9TdHJpbmcgPSAobGlsZHVyKSA9PiAodG9rZW4pID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTtcbiAgICAgICAgaWYgKG1hcHBlZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm51bShsaWxkdXIuZ2V0KG1hcHBlZCksIHRva2VuLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdG9rZW5zID0gRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksXG4gICAgICByZWFsVG9rZW5zID0gdG9rZW5zLnJlZHVjZShcbiAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLFxuICAgICAgICBbXVxuICAgICAgKSxcbiAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7XG4gICAgcmV0dXJuIHN0cmluZ2lmeVRva2Vucyh0b2tlbnMsIHRva2VuVG9TdHJpbmcoY29sbGFwc2VkKSk7XG4gIH1cbn1cbiIsICJleHBvcnQgZGVmYXVsdCBjbGFzcyBJbnZhbGlkIHtcbiAgY29uc3RydWN0b3IocmVhc29uLCBleHBsYW5hdGlvbikge1xuICAgIHRoaXMucmVhc29uID0gcmVhc29uO1xuICAgIHRoaXMuZXhwbGFuYXRpb24gPSBleHBsYW5hdGlvbjtcbiAgfVxuXG4gIHRvTWVzc2FnZSgpIHtcbiAgICBpZiAodGhpcy5leHBsYW5hdGlvbikge1xuICAgICAgcmV0dXJuIGAke3RoaXMucmVhc29ufTogJHt0aGlzLmV4cGxhbmF0aW9ufWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlYXNvbjtcbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQge1xuICB1bnRydW5jYXRlWWVhcixcbiAgc2lnbmVkT2Zmc2V0LFxuICBwYXJzZUludGVnZXIsXG4gIHBhcnNlTWlsbGlzLFxuICBpc1VuZGVmaW5lZCxcbiAgcGFyc2VGbG9hdGluZyxcbn0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0ICogYXMgRW5nbGlzaCBmcm9tIFwiLi9lbmdsaXNoLmpzXCI7XG5pbXBvcnQgRml4ZWRPZmZzZXRab25lIGZyb20gXCIuLi96b25lcy9maXhlZE9mZnNldFpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcblxuLypcbiAqIFRoaXMgZmlsZSBoYW5kbGVzIHBhcnNpbmcgZm9yIHdlbGwtc3BlY2lmaWVkIGZvcm1hdHMuIEhlcmUncyBob3cgaXQgd29ya3M6XG4gKiBUd28gdGhpbmdzIGdvIGludG8gcGFyc2luZzogYSByZWdleCB0byBtYXRjaCB3aXRoIGFuZCBhbiBleHRyYWN0b3IgdG8gdGFrZSBhcGFydCB0aGUgZ3JvdXBzIGluIHRoZSBtYXRjaC5cbiAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3RcbiAqIHBhcnNlKCkgZG9lcyB0aGUgd29yayBvZiBleGVjdXRpbmcgdGhlIHJlZ2V4IGFuZCBhcHBseWluZyB0aGUgZXh0cmFjdG9yLiBJdCB0YWtlcyBtdWx0aXBsZSByZWdleC9leHRyYWN0b3IgcGFpcnMgdG8gdHJ5IGluIHNlcXVlbmNlLlxuICogRXh0cmFjdG9ycyBjYW4gdGFrZSBhIFwiY3Vyc29yXCIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuXG4gKiBjb21iaW5lRXh0cmFjdG9ycygpIGRvZXMgdGhlIHdvcmsgb2YgY29tYmluaW5nIHRoZW0sIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGN1cnNvciB0aHJvdWdoIG11bHRpcGxlIGV4dHJhY3Rpb25zLlxuICogU29tZSBleHRyYWN0aW9ucyBhcmUgc3VwZXIgZHVtYiBhbmQgc2ltcGxlUGFyc2UgYW5kIGZyb21TdHJpbmdzIGhlbHAgRFJZIHRoZW0uXG4gKi9cblxuY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XFwvW0EtWmEtejAtOV8rLV17MSwyNTZ9KD86XFwvW0EtWmEtejAtOV8rLV17MSwyNTZ9KT8pPy87XG5cbmZ1bmN0aW9uIGNvbWJpbmVSZWdleGVzKC4uLnJlZ2V4ZXMpIHtcbiAgY29uc3QgZnVsbCA9IHJlZ2V4ZXMucmVkdWNlKChmLCByKSA9PiBmICsgci5zb3VyY2UsIFwiXCIpO1xuICByZXR1cm4gUmVnRXhwKGBeJHtmdWxsfSRgKTtcbn1cblxuZnVuY3Rpb24gY29tYmluZUV4dHJhY3RvcnMoLi4uZXh0cmFjdG9ycykge1xuICByZXR1cm4gKG0pID0+XG4gICAgZXh0cmFjdG9yc1xuICAgICAgLnJlZHVjZShcbiAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IFt2YWwsIHpvbmUsIG5leHRdID0gZXgobSwgY3Vyc29yKTtcbiAgICAgICAgICByZXR1cm4gW3sgLi4ubWVyZ2VkVmFscywgLi4udmFsIH0sIHpvbmUgfHwgbWVyZ2VkWm9uZSwgbmV4dF07XG4gICAgICAgIH0sXG4gICAgICAgIFt7fSwgbnVsbCwgMV1cbiAgICAgIClcbiAgICAgIC5zbGljZSgwLCAyKTtcbn1cblxuZnVuY3Rpb24gcGFyc2UocywgLi4ucGF0dGVybnMpIHtcbiAgaWYgKHMgPT0gbnVsbCkge1xuICAgIHJldHVybiBbbnVsbCwgbnVsbF07XG4gIH1cblxuICBmb3IgKGNvbnN0IFtyZWdleCwgZXh0cmFjdG9yXSBvZiBwYXR0ZXJucykge1xuICAgIGNvbnN0IG0gPSByZWdleC5leGVjKHMpO1xuICAgIGlmIChtKSB7XG4gICAgICByZXR1cm4gZXh0cmFjdG9yKG0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW251bGwsIG51bGxdO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVQYXJzZSguLi5rZXlzKSB7XG4gIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4ge1xuICAgIGNvbnN0IHJldCA9IHt9O1xuICAgIGxldCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7XG4gICAgfVxuICAgIHJldHVybiBbcmV0LCBudWxsLCBjdXJzb3IgKyBpXTtcbiAgfTtcbn1cblxuLy8gSVNPIGFuZCBTUUwgcGFyc2luZ1xuY29uc3Qgb2Zmc2V0UmVnZXggPSAvKD86KFopfChbKy1dXFxkXFxkKSg/Ojo/KFxcZFxcZCkpPykvO1xuY29uc3QgaXNvRXh0ZW5kZWRab25lID0gYCg/OiR7b2Zmc2V0UmVnZXguc291cmNlfT8oPzpcXFxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXFxdKT8pP2A7XG5jb25zdCBpc29UaW1lQmFzZVJlZ2V4ID0gLyhcXGRcXGQpKD86Oj8oXFxkXFxkKSg/Ojo/KFxcZFxcZCkoPzpbLixdKFxcZHsxLDMwfSkpPyk/KT8vO1xuY29uc3QgaXNvVGltZVJlZ2V4ID0gUmVnRXhwKGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSR7aXNvRXh0ZW5kZWRab25lfWApO1xuY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7XG5jb25zdCBpc29ZbWRSZWdleCA9IC8oWystXVxcZHs2fXxcXGR7NH0pKD86LT8oXFxkXFxkKSg/Oi0/KFxcZFxcZCkpPyk/LztcbmNvbnN0IGlzb1dlZWtSZWdleCA9IC8oXFxkezR9KS0/VyhcXGRcXGQpKD86LT8oXFxkKSk/LztcbmNvbnN0IGlzb09yZGluYWxSZWdleCA9IC8oXFxkezR9KS0/KFxcZHszfSkvO1xuY29uc3QgZXh0cmFjdElTT1dlZWtEYXRhID0gc2ltcGxlUGFyc2UoXCJ3ZWVrWWVhclwiLCBcIndlZWtOdW1iZXJcIiwgXCJ3ZWVrRGF5XCIpO1xuY29uc3QgZXh0cmFjdElTT09yZGluYWxEYXRhID0gc2ltcGxlUGFyc2UoXCJ5ZWFyXCIsIFwib3JkaW5hbFwiKTtcbmNvbnN0IHNxbFltZFJlZ2V4ID0gLyhcXGR7NH0pLShcXGRcXGQpLShcXGRcXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZVxuY29uc3Qgc3FsVGltZVJlZ2V4ID0gUmVnRXhwKFxuICBgJHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0gPyg/OiR7b2Zmc2V0UmVnZXguc291cmNlfXwoJHtpYW5hUmVnZXguc291cmNlfSkpP2Bcbik7XG5jb25zdCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXggPSBSZWdFeHAoYCg/OiAke3NxbFRpbWVSZWdleC5zb3VyY2V9KT9gKTtcblxuZnVuY3Rpb24gaW50KG1hdGNoLCBwb3MsIGZhbGxiYWNrKSB7XG4gIGNvbnN0IG0gPSBtYXRjaFtwb3NdO1xuICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT1ltZChtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLFxuICAgIG1vbnRoOiBpbnQobWF0Y2gsIGN1cnNvciArIDEsIDEpLFxuICAgIGRheTogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAxKSxcbiAgfTtcblxuICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0SVNPVGltZShtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSxcbiAgICBtaW51dGVzOiBpbnQobWF0Y2gsIGN1cnNvciArIDEsIDApLFxuICAgIHNlY29uZHM6IGludChtYXRjaCwgY3Vyc29yICsgMiwgMCksXG4gICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksXG4gIH07XG5cbiAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyA0XTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT09mZnNldChtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLFxuICAgIGZ1bGxPZmZzZXQgPSBzaWduZWRPZmZzZXQobWF0Y2hbY3Vyc29yICsgMV0sIG1hdGNoW2N1cnNvciArIDJdKSxcbiAgICB6b25lID0gbG9jYWwgPyBudWxsIDogRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKGZ1bGxPZmZzZXQpO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElBTkFab25lKG1hdGNoLCBjdXJzb3IpIHtcbiAgY29uc3Qgem9uZSA9IG1hdGNoW2N1cnNvcl0gPyBJQU5BWm9uZS5jcmVhdGUobWF0Y2hbY3Vyc29yXSkgOiBudWxsO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTtcbn1cblxuLy8gSVNPIHRpbWUgcGFyc2luZ1xuXG5jb25zdCBpc29UaW1lT25seSA9IFJlZ0V4cChgXlQ/JHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0kYCk7XG5cbi8vIElTTyBkdXJhdGlvbiBwYXJzaW5nXG5cbmNvbnN0IGlzb0R1cmF0aW9uID1cbiAgL14tP1AoPzooPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylZKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylNKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylXKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylEKT8oPzpUKD86KC0/XFxkezEsMjB9KD86XFwuXFxkezEsMjB9KT8pSCk/KD86KC0/XFxkezEsMjB9KD86XFwuXFxkezEsMjB9KT8pTSk/KD86KC0/XFxkezEsMjB9KSg/OlsuLF0oLT9cXGR7MSwyMH0pKT9TKT8pPykkLztcblxuZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7XG4gIGNvbnN0IFtzLCB5ZWFyU3RyLCBtb250aFN0ciwgd2Vla1N0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgbWlsbGlzZWNvbmRzU3RyXSA9XG4gICAgbWF0Y2g7XG5cbiAgY29uc3QgaGFzTmVnYXRpdmVQcmVmaXggPSBzWzBdID09PSBcIi1cIjtcbiAgY29uc3QgbmVnYXRpdmVTZWNvbmRzID0gc2Vjb25kU3RyICYmIHNlY29uZFN0clswXSA9PT0gXCItXCI7XG5cbiAgY29uc3QgbWF5YmVOZWdhdGUgPSAobnVtLCBmb3JjZSA9IGZhbHNlKSA9PlxuICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgeWVhcnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoeWVhclN0cikpLFxuICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksXG4gICAgICB3ZWVrczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh3ZWVrU3RyKSksXG4gICAgICBkYXlzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKGRheVN0cikpLFxuICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLFxuICAgICAgbWludXRlczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhtaW51dGVTdHIpKSxcbiAgICAgIHNlY29uZHM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoc2Vjb25kU3RyKSwgc2Vjb25kU3RyID09PSBcIi0wXCIpLFxuICAgICAgbWlsbGlzZWNvbmRzOiBtYXliZU5lZ2F0ZShwYXJzZU1pbGxpcyhtaWxsaXNlY29uZHNTdHIpLCBuZWdhdGl2ZVNlY29uZHMpLFxuICAgIH0sXG4gIF07XG59XG5cbi8vIFRoZXNlIGFyZSBhIGxpdHRsZSBicmFpbmRlYWQuIEVEVCAqc2hvdWxkKiB0ZWxsIHVzIHRoYXQgd2UncmUgaW4sIHNheSwgQW1lcmljYS9OZXdfWW9ya1xuLy8gYW5kIG5vdCBqdXN0IHRoYXQgd2UncmUgaW4gLTI0MCAqcmlnaHQgbm93Ki4gQnV0IHNpbmNlIEkgZG9uJ3QgdGhpbmsgdGhlc2UgYXJlIHVzZWQgdGhhdCBvZnRlblxuLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXRcbmNvbnN0IG9ic09mZnNldHMgPSB7XG4gIEdNVDogMCxcbiAgRURUOiAtNCAqIDYwLFxuICBFU1Q6IC01ICogNjAsXG4gIENEVDogLTUgKiA2MCxcbiAgQ1NUOiAtNiAqIDYwLFxuICBNRFQ6IC02ICogNjAsXG4gIE1TVDogLTcgKiA2MCxcbiAgUERUOiAtNyAqIDYwLFxuICBQU1Q6IC04ICogNjAsXG59O1xuXG5mdW5jdGlvbiBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cikge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgeWVhcjogeWVhclN0ci5sZW5ndGggPT09IDIgPyB1bnRydW5jYXRlWWVhcihwYXJzZUludGVnZXIoeWVhclN0cikpIDogcGFyc2VJbnRlZ2VyKHllYXJTdHIpLFxuICAgIG1vbnRoOiBFbmdsaXNoLm1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSxcbiAgICBkYXk6IHBhcnNlSW50ZWdlcihkYXlTdHIpLFxuICAgIGhvdXI6IHBhcnNlSW50ZWdlcihob3VyU3RyKSxcbiAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLFxuICB9O1xuXG4gIGlmIChzZWNvbmRTdHIpIHJlc3VsdC5zZWNvbmQgPSBwYXJzZUludGVnZXIoc2Vjb25kU3RyKTtcbiAgaWYgKHdlZWtkYXlTdHIpIHtcbiAgICByZXN1bHQud2Vla2RheSA9XG4gICAgICB3ZWVrZGF5U3RyLmxlbmd0aCA+IDNcbiAgICAgICAgPyBFbmdsaXNoLndlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMVxuICAgICAgICA6IEVuZ2xpc2gud2Vla2RheXNTaG9ydC5pbmRleE9mKHdlZWtkYXlTdHIpICsgMTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIFJGQyAyODIyLzUzMjJcbmNvbnN0IHJmYzI4MjIgPVxuICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxccyk/KFxcZHsxLDJ9KVxccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylcXHMoXFxkezIsNH0pXFxzKFxcZFxcZCk6KFxcZFxcZCkoPzo6KFxcZFxcZCkpP1xccyg/OihVVHxHTVR8W0VDTVBdW1NEXVQpfChbWnpdKXwoPzooWystXVxcZFxcZCkoXFxkXFxkKSkpJC87XG5cbmZ1bmN0aW9uIGV4dHJhY3RSRkMyODIyKG1hdGNoKSB7XG4gIGNvbnN0IFtcbiAgICAgICxcbiAgICAgIHdlZWtkYXlTdHIsXG4gICAgICBkYXlTdHIsXG4gICAgICBtb250aFN0cixcbiAgICAgIHllYXJTdHIsXG4gICAgICBob3VyU3RyLFxuICAgICAgbWludXRlU3RyLFxuICAgICAgc2Vjb25kU3RyLFxuICAgICAgb2JzT2Zmc2V0LFxuICAgICAgbWlsT2Zmc2V0LFxuICAgICAgb2ZmSG91clN0cixcbiAgICAgIG9mZk1pbnV0ZVN0cixcbiAgICBdID0gbWF0Y2gsXG4gICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpO1xuXG4gIGxldCBvZmZzZXQ7XG4gIGlmIChvYnNPZmZzZXQpIHtcbiAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gIH0gZWxzZSBpZiAobWlsT2Zmc2V0KSB7XG4gICAgb2Zmc2V0ID0gMDtcbiAgfSBlbHNlIHtcbiAgICBvZmZzZXQgPSBzaWduZWRPZmZzZXQob2ZmSG91clN0ciwgb2ZmTWludXRlU3RyKTtcbiAgfVxuXG4gIHJldHVybiBbcmVzdWx0LCBuZXcgRml4ZWRPZmZzZXRab25lKG9mZnNldCldO1xufVxuXG5mdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7XG4gIC8vIFJlbW92ZSBjb21tZW50cyBhbmQgZm9sZGluZyB3aGl0ZXNwYWNlIGFuZCByZXBsYWNlIG11bHRpcGxlLXNwYWNlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG4gIHJldHVybiBzXG4gICAgLnJlcGxhY2UoL1xcKFteKCldKlxcKXxbXFxuXFx0XS9nLCBcIiBcIilcbiAgICAucmVwbGFjZSgvKFxcc1xccyspL2csIFwiIFwiKVxuICAgIC50cmltKCk7XG59XG5cbi8vIGh0dHAgZGF0ZVxuXG5jb25zdCByZmMxMTIzID1cbiAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXFxkXFxkKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpIChcXGR7NH0pIChcXGRcXGQpOihcXGRcXGQpOihcXGRcXGQpIEdNVCQvLFxuICByZmM4NTAgPVxuICAgIC9eKE1vbmRheXxUdWVzZGF5fFdlZG5lc2RheXxUaHVyc2RheXxGcmlkYXl8U2F0dXJkYXl8U3VuZGF5KSwgKFxcZFxcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXFxkXFxkKSAoXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKSBHTVQkLyxcbiAgYXNjaWkgPVxuICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxcZHxcXGRcXGQpIChcXGRcXGQpOihcXGRcXGQpOihcXGRcXGQpIChcXGR7NH0pJC87XG5cbmZ1bmN0aW9uIGV4dHJhY3RSRkMxMTIzT3I4NTAobWF0Y2gpIHtcbiAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsXG4gICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpO1xuICByZXR1cm4gW3Jlc3VsdCwgRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7XG4gIGNvbnN0IFssIHdlZWtkYXlTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyLCB5ZWFyU3RyXSA9IG1hdGNoLFxuICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTtcbiAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07XG59XG5cbmNvbnN0IGlzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29ZbWRSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTtcbmNvbnN0IGlzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvV2Vla1JlZ2V4LCBpc29UaW1lRXh0ZW5zaW9uUmVnZXgpO1xuY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBpc29UaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1RpbWVSZWdleCk7XG5cbmNvbnN0IGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoXG4gIGV4dHJhY3RJU09ZbWQsXG4gIGV4dHJhY3RJU09UaW1lLFxuICBleHRyYWN0SVNPT2Zmc2V0LFxuICBleHRyYWN0SUFOQVpvbmVcbik7XG5jb25zdCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1dlZWtEYXRhLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuY29uc3QgZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZSA9IGNvbWJpbmVFeHRyYWN0b3JzKFxuICBleHRyYWN0SVNPT3JkaW5hbERhdGEsXG4gIGV4dHJhY3RJU09UaW1lLFxuICBleHRyYWN0SVNPT2Zmc2V0LFxuICBleHRyYWN0SUFOQVpvbmVcbik7XG5jb25zdCBleHRyYWN0SVNPVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuXG4vKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHtcbiAgcmV0dXJuIHBhcnNlKFxuICAgIHMsXG4gICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSxcbiAgICBbaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09XZWVrVGltZUFuZE9mZnNldF0sXG4gICAgW2lzb09yZGluYWxXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPT3JkaW5hbERhdGVBbmRUaW1lXSxcbiAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSRkMyODIyRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShwcmVwcm9jZXNzUkZDMjgyMihzKSwgW3JmYzI4MjIsIGV4dHJhY3RSRkMyODIyXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhUVFBEYXRlKHMpIHtcbiAgcmV0dXJuIHBhcnNlKFxuICAgIHMsXG4gICAgW3JmYzExMjMsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLFxuICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLFxuICAgIFthc2NpaSwgZXh0cmFjdEFTQ0lJXVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJU09EdXJhdGlvbihzKSB7XG4gIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pO1xufVxuXG5jb25zdCBleHRyYWN0SVNPVGltZU9ubHkgPSBjb21iaW5lRXh0cmFjdG9ycyhleHRyYWN0SVNPVGltZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHtcbiAgcmV0dXJuIHBhcnNlKHMsIFtpc29UaW1lT25seSwgZXh0cmFjdElTT1RpbWVPbmx5XSk7XG59XG5cbmNvbnN0IHNxbFltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhzcWxZbWRSZWdleCwgc3FsVGltZUV4dGVuc2lvblJlZ2V4KTtcbmNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTtcblxuY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTUUwocykge1xuICByZXR1cm4gcGFyc2UoXG4gICAgcyxcbiAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLFxuICAgIFtzcWxUaW1lQ29tYmluZWRSZWdleCwgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZV1cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBJbnZhbGlkQXJndW1lbnRFcnJvciwgSW52YWxpZER1cmF0aW9uRXJyb3IsIEludmFsaWRVbml0RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vaW1wbC9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBJbnZhbGlkIGZyb20gXCIuL2ltcGwvaW52YWxpZC5qc1wiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9pbXBsL2xvY2FsZS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VJU09EdXJhdGlvbiwgcGFyc2VJU09UaW1lT25seSB9IGZyb20gXCIuL2ltcGwvcmVnZXhQYXJzZXIuanNcIjtcbmltcG9ydCB7XG4gIGFzTnVtYmVyLFxuICBoYXNPd25Qcm9wZXJ0eSxcbiAgaXNOdW1iZXIsXG4gIGlzVW5kZWZpbmVkLFxuICBub3JtYWxpemVPYmplY3QsXG4gIHJvdW5kVG8sXG59IGZyb20gXCIuL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzLmpzXCI7XG5cbmNvbnN0IElOVkFMSUQgPSBcIkludmFsaWQgRHVyYXRpb25cIjtcblxuLy8gdW5pdCBjb252ZXJzaW9uIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IGxvd09yZGVyTWF0cml4ID0ge1xuICAgIHdlZWtzOiB7XG4gICAgICBkYXlzOiA3LFxuICAgICAgaG91cnM6IDcgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogNyAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogNyAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBkYXlzOiB7XG4gICAgICBob3VyczogMjQsXG4gICAgICBtaW51dGVzOiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgaG91cnM6IHsgbWludXRlczogNjAsIHNlY29uZHM6IDYwICogNjAsIG1pbGxpc2Vjb25kczogNjAgKiA2MCAqIDEwMDAgfSxcbiAgICBtaW51dGVzOiB7IHNlY29uZHM6IDYwLCBtaWxsaXNlY29uZHM6IDYwICogMTAwMCB9LFxuICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sXG4gIH0sXG4gIGNhc3VhbE1hdHJpeCA9IHtcbiAgICB5ZWFyczoge1xuICAgICAgcXVhcnRlcnM6IDQsXG4gICAgICBtb250aHM6IDEyLFxuICAgICAgd2Vla3M6IDUyLFxuICAgICAgZGF5czogMzY1LFxuICAgICAgaG91cnM6IDM2NSAqIDI0LFxuICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDM2NSAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogMzY1ICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIHF1YXJ0ZXJzOiB7XG4gICAgICBtb250aHM6IDMsXG4gICAgICB3ZWVrczogMTMsXG4gICAgICBkYXlzOiA5MSxcbiAgICAgIGhvdXJzOiA5MSAqIDI0LFxuICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIG1vbnRoczoge1xuICAgICAgd2Vla3M6IDQsXG4gICAgICBkYXlzOiAzMCxcbiAgICAgIGhvdXJzOiAzMCAqIDI0LFxuICAgICAgbWludXRlczogMzAgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDMwICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuXG4gICAgLi4ubG93T3JkZXJNYXRyaXgsXG4gIH0sXG4gIGRheXNJblllYXJBY2N1cmF0ZSA9IDE0NjA5Ny4wIC8gNDAwLFxuICBkYXlzSW5Nb250aEFjY3VyYXRlID0gMTQ2MDk3LjAgLyA0ODAwLFxuICBhY2N1cmF0ZU1hdHJpeCA9IHtcbiAgICB5ZWFyczoge1xuICAgICAgcXVhcnRlcnM6IDQsXG4gICAgICBtb250aHM6IDEyLFxuICAgICAgd2Vla3M6IGRheXNJblllYXJBY2N1cmF0ZSAvIDcsXG4gICAgICBkYXlzOiBkYXlzSW5ZZWFyQWNjdXJhdGUsXG4gICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsXG4gICAgICBtaW51dGVzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgcXVhcnRlcnM6IHtcbiAgICAgIG1vbnRoczogMyxcbiAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyAyOCxcbiAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSAvIDQsXG4gICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsXG4gICAgICBtaW51dGVzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCkgLyA0LFxuICAgICAgc2Vjb25kczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCkgLyA0LFxuICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LFxuICAgIH0sXG4gICAgbW9udGhzOiB7XG4gICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsXG4gICAgICBkYXlzOiBkYXlzSW5Nb250aEFjY3VyYXRlLFxuICAgICAgaG91cnM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICAuLi5sb3dPcmRlck1hdHJpeCxcbiAgfTtcblxuLy8gdW5pdHMgb3JkZXJlZCBieSBzaXplXG5jb25zdCBvcmRlcmVkVW5pdHMgPSBbXG4gIFwieWVhcnNcIixcbiAgXCJxdWFydGVyc1wiLFxuICBcIm1vbnRoc1wiLFxuICBcIndlZWtzXCIsXG4gIFwiZGF5c1wiLFxuICBcImhvdXJzXCIsXG4gIFwibWludXRlc1wiLFxuICBcInNlY29uZHNcIixcbiAgXCJtaWxsaXNlY29uZHNcIixcbl07XG5cbmNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cy5zbGljZSgwKS5yZXZlcnNlKCk7XG5cbi8vIGNsb25lIHJlYWxseSBtZWFucyBcImNyZWF0ZSBhbm90aGVyIGluc3RhbmNlIGp1c3QgbGlrZSB0aGlzIG9uZSwgYnV0IHdpdGggdGhlc2UgY2hhbmdlc1wiXG5mdW5jdGlvbiBjbG9uZShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHtcbiAgLy8gZGVlcCBtZXJnZSBmb3IgdmFsc1xuICBjb25zdCBjb25mID0ge1xuICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LFxuICAgIGxvYzogZHVyLmxvYy5jbG9uZShhbHRzLmxvYyksXG4gICAgY29udmVyc2lvbkFjY3VyYWN5OiBhbHRzLmNvbnZlcnNpb25BY2N1cmFjeSB8fCBkdXIuY29udmVyc2lvbkFjY3VyYWN5LFxuICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCxcbiAgfTtcbiAgcmV0dXJuIG5ldyBEdXJhdGlvbihjb25mKTtcbn1cblxuZnVuY3Rpb24gYW50aVRydW5jKG4pIHtcbiAgcmV0dXJuIG4gPCAwID8gTWF0aC5mbG9vcihuKSA6IE1hdGguY2VpbChuKTtcbn1cblxuLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVyc1xuZnVuY3Rpb24gY29udmVydChtYXRyaXgsIGZyb21NYXAsIGZyb21Vbml0LCB0b01hcCwgdG9Vbml0KSB7XG4gIGNvbnN0IGNvbnYgPSBtYXRyaXhbdG9Vbml0XVtmcm9tVW5pdF0sXG4gICAgcmF3ID0gZnJvbU1hcFtmcm9tVW5pdF0gLyBjb252LFxuICAgIHNhbWVTaWduID0gTWF0aC5zaWduKHJhdykgPT09IE1hdGguc2lnbih0b01hcFt0b1VuaXRdKSxcbiAgICAvLyBvaywgc28gdGhpcyBpcyB3aWxkLCBidXQgc2VlIHRoZSBtYXRyaXggaW4gdGhlIHRlc3RzXG4gICAgYWRkZWQgPVxuICAgICAgIXNhbWVTaWduICYmIHRvTWFwW3RvVW5pdF0gIT09IDAgJiYgTWF0aC5hYnMocmF3KSA8PSAxID8gYW50aVRydW5jKHJhdykgOiBNYXRoLnRydW5jKHJhdyk7XG4gIHRvTWFwW3RvVW5pdF0gKz0gYWRkZWQ7XG4gIGZyb21NYXBbZnJvbVVuaXRdIC09IGFkZGVkICogY29udjtcbn1cblxuLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVyc1xuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWVzKG1hdHJpeCwgdmFscykge1xuICByZXZlcnNlVW5pdHMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgIGlmICghaXNVbmRlZmluZWQodmFsc1tjdXJyZW50XSkpIHtcbiAgICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICBjb252ZXJ0KG1hdHJpeCwgdmFscywgcHJldmlvdXMsIHZhbHMsIGN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICB9XG4gIH0sIG51bGwpO1xufVxuXG4vLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3RcbmZ1bmN0aW9uIHJlbW92ZVplcm9lcyh2YWxzKSB7XG4gIGNvbnN0IG5ld1ZhbHMgPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHtcbiAgICBpZiAodmFsdWUgIT09IDApIHtcbiAgICAgIG5ld1ZhbHNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3VmFscztcbn1cblxuLyoqXG4gKiBBIER1cmF0aW9uIG9iamVjdCByZXByZXNlbnRzIGEgcGVyaW9kIG9mIHRpbWUsIGxpa2UgXCIyIG1vbnRoc1wiIG9yIFwiMSBkYXksIDEgaG91clwiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuXG4gKlxuICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBEdXJhdGlvbjpcbiAqXG4gKiAqICoqQ3JlYXRpb24qKiBUbyBjcmVhdGUgYSBEdXJhdGlvbiwgdXNlIHtAbGluayBEdXJhdGlvbi5mcm9tTWlsbGlzfSwge0BsaW5rIER1cmF0aW9uLmZyb21PYmplY3R9LCBvciB7QGxpbmsgRHVyYXRpb24uZnJvbUlTT30uXG4gKiAqICoqVW5pdCB2YWx1ZXMqKiBTZWUgdGhlIHtAbGluayBEdXJhdGlvbiN5ZWFyc30sIHtAbGluayBEdXJhdGlvbiNtb250aHN9LCB7QGxpbmsgRHVyYXRpb24jd2Vla3N9LCB7QGxpbmsgRHVyYXRpb24jZGF5c30sIHtAbGluayBEdXJhdGlvbiNob3Vyc30sIHtAbGluayBEdXJhdGlvbiNtaW51dGVzfSwge0BsaW5rIER1cmF0aW9uI3NlY29uZHN9LCB7QGxpbmsgRHVyYXRpb24jbWlsbGlzZWNvbmRzfSBhY2Nlc3NvcnMuXG4gKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBuZXcgRHVyYXRpb25zIG91dCBvZiBvbGQgb25lcyB1c2Uge0BsaW5rIER1cmF0aW9uI3BsdXN9LCB7QGxpbmsgRHVyYXRpb24jbWludXN9LCB7QGxpbmsgRHVyYXRpb24jbm9ybWFsaXplfSwge0BsaW5rIER1cmF0aW9uI3NldH0sIHtAbGluayBEdXJhdGlvbiNyZWNvbmZpZ3VyZX0sIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSwgYW5kIHtAbGluayBEdXJhdGlvbiNuZWdhdGV9LlxuICogKiAqKk91dHB1dCoqIFRvIGNvbnZlcnQgdGhlIER1cmF0aW9uIGludG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCBzZWUge0BsaW5rIER1cmF0aW9uI2FzfSwge0BsaW5rIER1cmF0aW9uI3RvSVNPfSwge0BsaW5rIER1cmF0aW9uI3RvRm9ybWF0fSwgYW5kIHtAbGluayBEdXJhdGlvbiN0b0pTT059XG4gKlxuICogVGhlcmUncyBhcmUgbW9yZSBtZXRob2RzIGRvY3VtZW50ZWQgYmVsb3cuIEluIGFkZGl0aW9uLCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdWJ0bGVyIHRvcGljcyBsaWtlIGludGVybmF0aW9uYWxpemF0aW9uIGFuZCB2YWxpZGl0eSwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbiB7XG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3QgYWNjdXJhdGUgPSBjb25maWcuY29udmVyc2lvbkFjY3VyYWN5ID09PSBcImxvbmd0ZXJtXCIgfHwgZmFsc2U7XG4gICAgbGV0IG1hdHJpeCA9IGFjY3VyYXRlID8gYWNjdXJhdGVNYXRyaXggOiBjYXN1YWxNYXRyaXg7XG5cbiAgICBpZiAoY29uZmlnLm1hdHJpeCkge1xuICAgICAgbWF0cml4ID0gY29uZmlnLm1hdHJpeDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5sb2MgPSBjb25maWcubG9jIHx8IExvY2FsZS5jcmVhdGUoKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmNvbnZlcnNpb25BY2N1cmFjeSA9IGFjY3VyYXRlID8gXCJsb25ndGVybVwiIDogXCJjYXN1YWxcIjtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMubWF0cml4ID0gbWF0cml4O1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaXNMdXhvbkR1cmF0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCBvZiBtaWxsaXNlY29uZHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21NaWxsaXMoY291bnQsIG9wdHMpIHtcbiAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGgga2V5cyBsaWtlICd5ZWFycycgYW5kICdob3VycycuXG4gICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIHRoZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBEYXRlVGltZSBmcm9tXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhcnNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVyc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5c1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLmhvdXJzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWludXRlc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZHNcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzPVtdXSAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHtcbiAgICBpZiAob2JqID09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgRHVyYXRpb24uZnJvbU9iamVjdDogYXJndW1lbnQgZXhwZWN0ZWQgdG8gYmUgYW4gb2JqZWN0LCBnb3QgJHtcbiAgICAgICAgICBvYmogPT09IG51bGwgPyBcIm51bGxcIiA6IHR5cGVvZiBvYmpcbiAgICAgICAgfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbih7XG4gICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLFxuICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRzKSxcbiAgICAgIGNvbnZlcnNpb25BY2N1cmFjeTogb3B0cy5jb252ZXJzaW9uQWNjdXJhY3ksXG4gICAgICBtYXRyaXg6IG9wdHMubWF0cml4LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdCB8IG51bWJlciB8IER1cmF0aW9ufSBkdXJhdGlvbkxpa2VcbiAgICogT25lIG9mOlxuICAgKiAtIG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcnMnIGFuZCAnaG91cnMnLlxuICAgKiAtIG51bWJlciByZXByZXNlbnRpbmcgbWlsbGlzZWNvbmRzXG4gICAqIC0gRHVyYXRpb24gaW5zdGFuY2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHtcbiAgICBpZiAoaXNOdW1iZXIoZHVyYXRpb25MaWtlKSkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21NaWxsaXMoZHVyYXRpb25MaWtlKTtcbiAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkge1xuICAgICAgcmV0dXJuIGR1cmF0aW9uTGlrZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkdXJhdGlvbkxpa2UgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KGR1cmF0aW9uTGlrZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgYFVua25vd24gZHVyYXRpb24gYXJndW1lbnQgJHtkdXJhdGlvbkxpa2V9IG9mIHR5cGUgJHt0eXBlb2YgZHVyYXRpb25MaWtlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYW4gSVNPIDg2MDEgZHVyYXRpb24gc3RyaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubWF0cml4PU9iamVjdF0gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9uc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPKCdQM1k2TTFXNERUMTJIMzBNNVMnKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMywgbW9udGhzOiA2LCB3ZWVrczogMSwgZGF5czogNCwgaG91cnM6IDEyLCBtaW51dGVzOiAzMCwgc2Vjb25kczogNSB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU08oJ1BUMjNIJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDIzIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7XG4gICAgY29uc3QgW3BhcnNlZF0gPSBwYXJzZUlTT0R1cmF0aW9uKHRleHQpO1xuICAgIGlmIChwYXJzZWQpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKFwidW5wYXJzYWJsZVwiLCBgdGhlIGlucHV0IFwiJHt0ZXh0fVwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGFuIElTTyA4NjAxIHRpbWUgc3RyaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubWF0cml4PU9iamVjdF0gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZXNcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCcxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCdUMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCdUMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21JU09UaW1lKHRleHQsIG9wdHMpIHtcbiAgICBjb25zdCBbcGFyc2VkXSA9IHBhcnNlSVNPVGltZU9ubHkodGV4dCk7XG4gICAgaWYgKHBhcnNlZCkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QocGFyc2VkLCBvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzIElTTyA4NjAxYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbnZhbGlkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkge1xuICAgIGlmICghcmVhc29uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIER1cmF0aW9uIGlzIGludmFsaWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTtcblxuICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsgaW52YWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN0YXRpYyBub3JtYWxpemVVbml0KHVuaXQpIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0ge1xuICAgICAgeWVhcjogXCJ5ZWFyc1wiLFxuICAgICAgeWVhcnM6IFwieWVhcnNcIixcbiAgICAgIHF1YXJ0ZXI6IFwicXVhcnRlcnNcIixcbiAgICAgIHF1YXJ0ZXJzOiBcInF1YXJ0ZXJzXCIsXG4gICAgICBtb250aDogXCJtb250aHNcIixcbiAgICAgIG1vbnRoczogXCJtb250aHNcIixcbiAgICAgIHdlZWs6IFwid2Vla3NcIixcbiAgICAgIHdlZWtzOiBcIndlZWtzXCIsXG4gICAgICBkYXk6IFwiZGF5c1wiLFxuICAgICAgZGF5czogXCJkYXlzXCIsXG4gICAgICBob3VyOiBcImhvdXJzXCIsXG4gICAgICBob3VyczogXCJob3Vyc1wiLFxuICAgICAgbWludXRlOiBcIm1pbnV0ZXNcIixcbiAgICAgIG1pbnV0ZXM6IFwibWludXRlc1wiLFxuICAgICAgc2Vjb25kOiBcInNlY29uZHNcIixcbiAgICAgIHNlY29uZHM6IFwic2Vjb25kc1wiLFxuICAgICAgbWlsbGlzZWNvbmQ6IFwibWlsbGlzZWNvbmRzXCIsXG4gICAgICBtaWxsaXNlY29uZHM6IFwibWlsbGlzZWNvbmRzXCIsXG4gICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07XG5cbiAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpO1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGEgRHVyYXRpb24uIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHtcbiAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRHVyYXRpb24pIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQidcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb25cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLiBZb3UgbWF5IHVzZSB0aGVzZSB0b2tlbnM6XG4gICAqICogYFNgIGZvciBtaWxsaXNlY29uZHNcbiAgICogKiBgc2AgZm9yIHNlY29uZHNcbiAgICogKiBgbWAgZm9yIG1pbnV0ZXNcbiAgICogKiBgaGAgZm9yIGhvdXJzXG4gICAqICogYGRgIGZvciBkYXlzXG4gICAqICogYHdgIGZvciB3ZWVrc1xuICAgKiAqIGBNYCBmb3IgbW9udGhzXG4gICAqICogYHlgIGZvciB5ZWFyc1xuICAgKiBOb3RlczpcbiAgICogKiBBZGQgcGFkZGluZyBieSByZXBlYXRpbmcgdGhlIHRva2VuLCBlLmcuIFwieXlcIiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCBcImhoaGhcIiBwYWRzIHRoZSBob3VycyBvdXQgdG8gZm91ciBkaWdpdHNcbiAgICogKiBUb2tlbnMgY2FuIGJlIGVzY2FwZWQgYnkgd3JhcHBpbmcgd2l0aCBzaW5nbGUgcXVvdGVzLlxuICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoXCJ5IGQgc1wiKSAvLz0+IFwiMSA2IDJcIlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoXCJ5eSBkZCBzc3NcIikgLy89PiBcIjAxIDA2IDAwMlwiXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdChcIk0gU1wiKSAvLz0+IFwiMTIgNTE4NDAyMDAwXCJcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHtcbiAgICAvLyByZXZlcnNlLWNvbXBhdCBzaW5jZSAxLjI7IHdlIGFsd2F5cyByb3VuZCBkb3duIG5vdywgbmV2ZXIgdXAsIGFuZCB3ZSBkbyBpdCBieSBkZWZhdWx0XG4gICAgY29uc3QgZm10T3B0cyA9IHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBmbG9vcjogb3B0cy5yb3VuZCAhPT0gZmFsc2UgJiYgb3B0cy5mbG9vciAhPT0gZmFsc2UsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MsIGZtdE9wdHMpLmZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyh0aGlzLCBmbXQpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLlxuICAgKiBUbyBtb2RpZnkgaXRzIGJlaGF2aW9yIHVzZSB0aGUgYGxpc3RTdHlsZWAgYW5kIGFueSBJbnRsLk51bWJlckZvcm1hdCBvcHRpb24sIHRob3VnaCBgdW5pdERpc3BsYXlgIGlzIGVzcGVjaWFsbHkgcmVsZXZhbnQuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9OdW1iZXJGb3JtYXRcbiAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBqc1xuICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pXG4gICAqIGR1ci50b0h1bWFuKCkgLy89PiAnMSBkYXksIDUgaG91cnMsIDYgbWludXRlcydcbiAgICogZHVyLnRvSHVtYW4oeyBsaXN0U3R5bGU6IFwibG9uZ1wiIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJ1xuICAgKiBkdXIudG9IdW1hbih7IHVuaXREaXNwbGF5OiBcInNob3J0XCIgfSkgLy89PiAnMSBkYXksIDUgaHIsIDYgbWluJ1xuICAgKiBgYGBcbiAgICovXG4gIHRvSHVtYW4ob3B0cyA9IHt9KSB7XG4gICAgY29uc3QgbCA9IG9yZGVyZWRVbml0c1xuICAgICAgLm1hcCgodW5pdCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2NcbiAgICAgICAgICAubnVtYmVyRm9ybWF0dGVyKHsgc3R5bGU6IFwidW5pdFwiLCB1bml0RGlzcGxheTogXCJsb25nXCIsIC4uLm9wdHMsIHVuaXQ6IHVuaXQuc2xpY2UoMCwgLTEpIH0pXG4gICAgICAgICAgLmZvcm1hdCh2YWwpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKG4pID0+IG4pO1xuXG4gICAgcmV0dXJuIHRoaXMubG9jXG4gICAgICAubGlzdEZvcm1hdHRlcih7IHR5cGU6IFwiY29uanVuY3Rpb25cIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8IFwibmFycm93XCIsIC4uLm9wdHMgfSlcbiAgICAgIC5mb3JtYXQobCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEdXJhdGlvbidzIHZhbHVlcy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH1cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgdG9PYmplY3QoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTtcbiAgICByZXR1cm4geyAuLi50aGlzLnZhbHVlcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9uc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDMsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDNZVDQ1UydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiA1IH0pLnRvSVNPKCkgLy89PiAnUDVNJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogNSB9KS50b0lTTygpIC8vPT4gJ1BUNU0nXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08oKSB7XG4gICAgLy8gd2UgY291bGQgdXNlIHRoZSBmb3JtYXR0ZXIsIGJ1dCB0aGlzIGlzIGFuIGVhc2llciB3YXkgdG8gZ2V0IHRoZSBtaW5pbXVtIHN0cmluZ1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBzID0gXCJQXCI7XG4gICAgaWYgKHRoaXMueWVhcnMgIT09IDApIHMgKz0gdGhpcy55ZWFycyArIFwiWVwiO1xuICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyBcIk1cIjtcbiAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgXCJXXCI7XG4gICAgaWYgKHRoaXMuZGF5cyAhPT0gMCkgcyArPSB0aGlzLmRheXMgKyBcIkRcIjtcbiAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKVxuICAgICAgcyArPSBcIlRcIjtcbiAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgXCJIXCI7XG4gICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyBcIk1cIjtcbiAgICBpZiAodGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKVxuICAgICAgLy8gdGhpcyB3aWxsIGhhbmRsZSBcImZsb2F0aW5nIHBvaW50IG1hZG5lc3NcIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlc1xuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTg4MDA0L2lzLWZsb2F0aW5nLXBvaW50LW1hdGgtYnJva2VuXG4gICAgICBzICs9IHJvdW5kVG8odGhpcy5zZWNvbmRzICsgdGhpcy5taWxsaXNlY29uZHMgLyAxMDAwLCAzKSArIFwiU1wiO1xuICAgIGlmIChzID09PSBcIlBcIikgcyArPSBcIlQwU1wiO1xuICAgIHJldHVybiBzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS5cbiAgICogTm90ZSB0aGF0IHRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGUgZHVyYXRpb24gaXMgaW52YWxpZCwgbmVnYXRpdmUsIG9yIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAyNCBob3Vycy5cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSgpIC8vPT4gJzExOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDAnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMTE6MDA6MDAuMDAwJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgbWlsbGlzID0gdGhpcy50b01pbGxpcygpO1xuICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7XG5cbiAgICBvcHRzID0ge1xuICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NTZWNvbmRzOiBmYWxzZSxcbiAgICAgIGluY2x1ZGVQcmVmaXg6IGZhbHNlLFxuICAgICAgZm9ybWF0OiBcImV4dGVuZGVkXCIsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2hpZnRUbyhcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIiwgXCJtaWxsaXNlY29uZHNcIik7XG5cbiAgICBsZXQgZm10ID0gb3B0cy5mb3JtYXQgPT09IFwiYmFzaWNcIiA/IFwiaGhtbVwiIDogXCJoaDptbVwiO1xuXG4gICAgaWYgKCFvcHRzLnN1cHByZXNzU2Vjb25kcyB8fCB2YWx1ZS5zZWNvbmRzICE9PSAwIHx8IHZhbHVlLm1pbGxpc2Vjb25kcyAhPT0gMCkge1xuICAgICAgZm10ICs9IG9wdHMuZm9ybWF0ID09PSBcImJhc2ljXCIgPyBcInNzXCIgOiBcIjpzc1wiO1xuICAgICAgaWYgKCFvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzIHx8IHZhbHVlLm1pbGxpc2Vjb25kcyAhPT0gMCkge1xuICAgICAgICBmbXQgKz0gXCIuU1NTXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHN0ciA9IHZhbHVlLnRvRm9ybWF0KGZtdCk7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlUHJlZml4KSB7XG4gICAgICBzdHIgPSBcIlRcIiArIHN0cjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b0lTTygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIGRlYnVnZ2luZy5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b01pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5hcyhcIm1pbGxpc2Vjb25kc1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHZhbHVlT2YoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHBsdXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkge1xuICAgICAgICByZXN1bHRba10gPSBkdXIuZ2V0KGspICsgdGhpcy5nZXQoayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBtaW51cyhkdXJhdGlvbikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuICAgIHJldHVybiB0aGlzLnBsdXMoZHVyLm5lZ2F0ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKHggPT4geCAqIDIpIC8vPT4geyBob3VyczogMiwgbWludXRlczogNjAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSBcImhvdXJzXCIgPyB4ICogMiA6IHgpIC8vPT4geyBob3VyczogMiwgbWludXRlczogMzAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG1hcFVuaXRzKGZuKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHtcbiAgICAgIHJlc3VsdFtrXSA9IGFzTnVtYmVyKGZuKHRoaXMudmFsdWVzW2tdLCBrKSk7XG4gICAgfVxuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5J1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgneWVhcnMnKSAvLz0+IDJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ21vbnRocycpIC8vPT4gMFxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gM1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQodW5pdCkge1xuICAgIHJldHVybiB0aGlzW0R1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCldO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnNcbiAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pXG4gICAqIEBleGFtcGxlIGR1ci5zZXQoeyBob3VyczogOCwgbWludXRlczogMzAgfSlcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzZXQodmFsdWVzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgbWl4ZWQgPSB7IC4uLnRoaXMudmFsdWVzLCAuLi5ub3JtYWxpemVPYmplY3QodmFsdWVzLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSB9O1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogbWl4ZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgbG9jYWxlIGFuZC9vciBudW1iZXJpbmdTeXN0ZW0uICBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSwgbWF0cml4IH0gPSB7fSkge1xuICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0gfSk7XG4gICAgY29uc3Qgb3B0cyA9IHsgbG9jLCBtYXRyaXgsIGNvbnZlcnNpb25BY2N1cmFjeSB9O1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgZHVyYXRpb24gaW4gdGhlIHNwZWNpZmllZCB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGVzJyBvciAnZGF5cydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ21vbnRocycpIC8vPT4gMTJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7aG91cnM6IDYwfSkuYXMoJ2RheXMnKSAvLz0+IDIuNVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBhcyh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmVkdWNlIHRoaXMgRHVyYXRpb24gdG8gaXRzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBpbiBpdHMgY3VycmVudCB1bml0cy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAyLCBkYXlzOiA1MDAwIH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxNSwgZGF5czogMjU1IH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG5vcm1hbGl6ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgdmFscyA9IHRoaXMudG9PYmplY3QoKTtcbiAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNjYWxlIHVuaXRzIHRvIGl0cyBsYXJnZXN0IHJlcHJlc2VudGF0aW9uXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgcmVzY2FsZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgdmFscyA9IHJlbW92ZVplcm9lcyh0aGlzLm5vcm1hbGl6ZSgpLnNoaWZ0VG9BbGwoKS50b09iamVjdCgpKTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB2YWx1ZXM6IHZhbHMgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIER1cmF0aW9uIGludG8gaXRzIHJlcHJlc2VudGF0aW9uIGluIGEgZGlmZmVyZW50IHNldCBvZiB1bml0cy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5zaGlmdFRvKCdtaW51dGVzJywgJ21pbGxpc2Vjb25kcycpLnRvT2JqZWN0KCkgLy89PiB7IG1pbnV0ZXM6IDYwLCBtaWxsaXNlY29uZHM6IDMwMDAwIH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzaGlmdFRvKC4uLnVuaXRzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdW5pdHMgPSB1bml0cy5tYXAoKHUpID0+IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodSkpO1xuXG4gICAgY29uc3QgYnVpbHQgPSB7fSxcbiAgICAgIGFjY3VtdWxhdGVkID0ge30sXG4gICAgICB2YWxzID0gdGhpcy50b09iamVjdCgpO1xuICAgIGxldCBsYXN0VW5pdDtcblxuICAgIGZvciAoY29uc3QgayBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmICh1bml0cy5pbmRleE9mKGspID49IDApIHtcbiAgICAgICAgbGFzdFVuaXQgPSBrO1xuXG4gICAgICAgIGxldCBvd24gPSAwO1xuXG4gICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdFxuICAgICAgICBmb3IgKGNvbnN0IGFrIGluIGFjY3VtdWxhdGVkKSB7XG4gICAgICAgICAgb3duICs9IHRoaXMubWF0cml4W2FrXVtrXSAqIGFjY3VtdWxhdGVkW2FrXTtcbiAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcGx1cyBhbnl0aGluZyB0aGF0J3MgYWxyZWFkeSBpbiB0aGlzIHVuaXRcbiAgICAgICAgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7XG4gICAgICAgICAgb3duICs9IHZhbHNba107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pO1xuICAgICAgICBidWlsdFtrXSA9IGk7XG4gICAgICAgIGFjY3VtdWxhdGVkW2tdID0gKG93biAqIDEwMDAgLSBpICogMTAwMCkgLyAxMDAwO1xuXG4gICAgICAgIC8vIHBsdXMgYW55dGhpbmcgZnVydGhlciBkb3duIHRoZSBjaGFpbiB0aGF0IHNob3VsZCBiZSByb2xsZWQgdXAgaW4gdG8gdGhpc1xuICAgICAgICBmb3IgKGNvbnN0IGRvd24gaW4gdmFscykge1xuICAgICAgICAgIGlmIChvcmRlcmVkVW5pdHMuaW5kZXhPZihkb3duKSA+IG9yZGVyZWRVbml0cy5pbmRleE9mKGspKSB7XG4gICAgICAgICAgICBjb252ZXJ0KHRoaXMubWF0cml4LCB2YWxzLCBkb3duLCBidWlsdCwgayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIG90aGVyd2lzZSwga2VlcCBpdCBpbiB0aGUgd2luZ3MgdG8gYm9pbCBpdCBsYXRlclxuICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkge1xuICAgICAgICBhY2N1bXVsYXRlZFtrXSA9IHZhbHNba107XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdFxuICAgIC8vIGxhc3RVbml0IG11c3QgYmUgZGVmaW5lZCBzaW5jZSB1bml0cyBpcyBub3QgZW1wdHlcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhY2N1bXVsYXRlZCkge1xuICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHtcbiAgICAgICAgYnVpbHRbbGFzdFVuaXRdICs9XG4gICAgICAgICAga2V5ID09PSBsYXN0VW5pdCA/IGFjY3VtdWxhdGVkW2tleV0gOiBhY2N1bXVsYXRlZFtrZXldIC8gdGhpcy5tYXRyaXhbbGFzdFVuaXRdW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBidWlsdCB9LCB0cnVlKS5ub3JtYWxpemUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaGlmdCB0aGlzIER1cmF0aW9uIHRvIGFsbCBhdmFpbGFibGUgdW5pdHMuXG4gICAqIFNhbWUgYXMgc2hpZnRUbyhcInllYXJzXCIsIFwibW9udGhzXCIsIFwid2Vla3NcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiLCBcIm1pbGxpc2Vjb25kc1wiKVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHNoaWZ0VG9BbGwoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIHJldHVybiB0aGlzLnNoaWZ0VG8oXG4gICAgICBcInllYXJzXCIsXG4gICAgICBcIm1vbnRoc1wiLFxuICAgICAgXCJ3ZWVrc1wiLFxuICAgICAgXCJkYXlzXCIsXG4gICAgICBcImhvdXJzXCIsXG4gICAgICBcIm1pbnV0ZXNcIixcbiAgICAgIFwic2Vjb25kc1wiLFxuICAgICAgXCJtaWxsaXNlY29uZHNcIlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLm5lZ2F0ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAtMSwgc2Vjb25kczogLTMwIH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBuZWdhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IG5lZ2F0ZWQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKSB7XG4gICAgICBuZWdhdGVkW2tdID0gdGhpcy52YWx1ZXNba10gPT09IDAgPyAwIDogLXRoaXMudmFsdWVzW2tdO1xuICAgIH1cbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB2YWx1ZXM6IG5lZ2F0ZWQgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFycy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB5ZWFycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMueWVhcnMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHF1YXJ0ZXJzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHF1YXJ0ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5xdWFydGVycyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbW9udGhzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1vbnRocygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubW9udGhzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3ZWVrc1xuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHdlZWtzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy53ZWVrcyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5cy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBkYXlzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5kYXlzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBob3Vycy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBob3VycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuaG91cnMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbnV0ZXMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbWludXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWludXRlcyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2Vjb25kcy5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHNlY29uZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnNlY29uZHMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbGxpc2Vjb25kcy5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbGxpc2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBEdXJhdGlvbiBpcyBpbnZhbGlkLiBJbnZhbGlkIGR1cmF0aW9ucyBhcmUgcmV0dXJuZWQgYnkgZGlmZiBvcGVyYXRpb25zXG4gICAqIG9uIGludmFsaWQgRGF0ZVRpbWVzIG9yIEludGVydmFscy5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkUmVhc29uKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQucmVhc29uIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFcXVhbGl0eSBjaGVja1xuICAgKiBUd28gRHVyYXRpb25zIGFyZSBlcXVhbCBpZmYgdGhleSBoYXZlIHRoZSBzYW1lIHVuaXRzIGFuZCB0aGUgc2FtZSB2YWx1ZXMgZm9yIGVhY2ggdW5pdC5cbiAgICogQHBhcmFtIHtEdXJhdGlvbn0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGVxdWFscyhvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVxKHYxLCB2Mikge1xuICAgICAgLy8gQ29uc2lkZXIgMCBhbmQgdW5kZWZpbmVkIGFzIGVxdWFsXG4gICAgICBpZiAodjEgPT09IHVuZGVmaW5lZCB8fCB2MSA9PT0gMCkgcmV0dXJuIHYyID09PSB1bmRlZmluZWQgfHwgdjIgPT09IDA7XG4gICAgICByZXR1cm4gdjEgPT09IHYyO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmICghZXEodGhpcy52YWx1ZXNbdV0sIG90aGVyLnZhbHVlc1t1XSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCBEYXRlVGltZSwgeyBmcmllbmRseURhdGVUaW1lIH0gZnJvbSBcIi4vZGF0ZXRpbWUuanNcIjtcbmltcG9ydCBEdXJhdGlvbiBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzLmpzXCI7XG5pbXBvcnQgeyBJbnZhbGlkQXJndW1lbnRFcnJvciwgSW52YWxpZEludGVydmFsRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCBJbnZhbGlkIGZyb20gXCIuL2ltcGwvaW52YWxpZC5qc1wiO1xuaW1wb3J0IEZvcm1hdHRlciBmcm9tIFwiLi9pbXBsL2Zvcm1hdHRlci5qc1wiO1xuaW1wb3J0ICogYXMgRm9ybWF0cyBmcm9tIFwiLi9pbXBsL2Zvcm1hdHMuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBJbnRlcnZhbFwiO1xuXG4vLyBjaGVja3MgaWYgdGhlIHN0YXJ0IGlzIGVxdWFsIHRvIG9yIGJlZm9yZSB0aGUgZW5kXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXJ0RW5kKHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkge1xuICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKFwibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0XCIpO1xuICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXCJtaXNzaW5nIG9yIGludmFsaWQgZW5kXCIpO1xuICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXG4gICAgICBcImVuZCBiZWZvcmUgc3RhcnRcIixcbiAgICAgIGBUaGUgZW5kIG9mIGFuIGludGVydmFsIG11c3QgYmUgYWZ0ZXIgaXRzIHN0YXJ0LCBidXQgeW91IGhhZCBzdGFydD0ke3N0YXJ0LnRvSVNPKCl9IGFuZCBlbmQ9JHtlbmQudG9JU08oKX1gXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIEludGVydmFsIG9iamVjdCByZXByZXNlbnRzIGEgaGFsZi1vcGVuIGludGVydmFsIG9mIHRpbWUsIHdoZXJlIGVhY2ggZW5kcG9pbnQgaXMgYSB7QGxpbmsgRGF0ZVRpbWV9LiBDb25jZXB0dWFsbHksIGl0J3MgYSBjb250YWluZXIgZm9yIHRob3NlIHR3byBlbmRwb2ludHMsIGFjY29tcGFuaWVkIGJ5IG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCBjb21wYXJpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOlxuICpcbiAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhbiBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzfSwge0BsaW5rIEludGVydmFsLmFmdGVyfSwge0BsaW5rIEludGVydmFsLmJlZm9yZX0sIG9yIHtAbGluayBJbnRlcnZhbC5mcm9tSVNPfS5cbiAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLlxuICogKiAqKkludGVycm9nYXRpb24qKiBUbyBhbmFseXplIHRoZSBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbCNjb3VudH0sIHtAbGluayBJbnRlcnZhbCNsZW5ndGh9LCB7QGxpbmsgSW50ZXJ2YWwjaGFzU2FtZX0sIHtAbGluayBJbnRlcnZhbCNjb250YWluc30sIHtAbGluayBJbnRlcnZhbCNpc0FmdGVyfSwgb3Ige0BsaW5rIEludGVydmFsI2lzQmVmb3JlfS5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBvdGhlciBJbnRlcnZhbHMgb3V0IG9mIHRoaXMgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI3NldH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEF0fSwge0BsaW5rIEludGVydmFsI3NwbGl0Qnl9LCB7QGxpbmsgSW50ZXJ2YWwjZGl2aWRlRXF1YWxseX0sIHtAbGluayBJbnRlcnZhbC5tZXJnZX0sIHtAbGluayBJbnRlcnZhbC54b3J9LCB7QGxpbmsgSW50ZXJ2YWwjdW5pb259LCB7QGxpbmsgSW50ZXJ2YWwjaW50ZXJzZWN0aW9ufSwgb3Ige0BsaW5rIEludGVydmFsI2RpZmZlcmVuY2V9LlxuICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc31cbiAqICogKipPdXRwdXQqKiBUbyBjb252ZXJ0IHRoZSBJbnRlcnZhbCBpbnRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgc2VlIHtAbGluayBJbnRlcnZhbCN0b1N0cmluZ30sIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBJbnRlcnZhbCN0b0lTT30sIHtAbGluayBJbnRlcnZhbCN0b0lTT0RhdGV9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09UaW1lfSwge0BsaW5rIEludGVydmFsI3RvRm9ybWF0fSwgYW5kIHtAbGluayBJbnRlcnZhbCN0b0R1cmF0aW9ufS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWwge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMucyA9IGNvbmZpZy5zdGFydDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmUgPSBjb25maWcuZW5kO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5pc0x1eG9uSW50ZXJ2YWwgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbnZhbGlkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkge1xuICAgIGlmICghcmVhc29uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIEludGVydmFsIGlzIGludmFsaWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTtcblxuICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRJbnRlcnZhbEVycm9yKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEludGVydmFsKHsgaW52YWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYW4gZW5kIERhdGVUaW1lLiBJbmNsdXNpdmUgb2YgdGhlIHN0YXJ0IGJ1dCBub3QgdGhlIGVuZC5cbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnRcbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IGJ1aWx0U3RhcnQgPSBmcmllbmRseURhdGVUaW1lKHN0YXJ0KSxcbiAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpO1xuXG4gICAgY29uc3QgdmFsaWRhdGVFcnJvciA9IHZhbGlkYXRlU3RhcnRFbmQoYnVpbHRTdGFydCwgYnVpbHRFbmQpO1xuXG4gICAgaWYgKHZhbGlkYXRlRXJyb3IgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7XG4gICAgICAgIHN0YXJ0OiBidWlsdFN0YXJ0LFxuICAgICAgICBlbmQ6IGJ1aWx0RW5kLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCB0by5cbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnRcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsLlxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBhZnRlcihzdGFydCwgZHVyYXRpb24pIHtcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSxcbiAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQsIGR0LnBsdXMoZHVyKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZFxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGJlZm9yZShlbmQsIGR1cmF0aW9uKSB7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksXG4gICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoZW5kKTtcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdC5taW51cyhkdXIpLCBkdCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gSVNPIDg2MDEgc3RyaW5nLlxuICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gb3B0aW9ucyB0byBwYXNzIHtAbGluayBEYXRlVGltZSNmcm9tSVNPfSBhbmQgb3B0aW9uYWxseSB7QGxpbmsgRHVyYXRpb24jZnJvbUlTT31cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFsc1xuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHtcbiAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCBcIlwiKS5zcGxpdChcIi9cIiwgMik7XG4gICAgaWYgKHMgJiYgZSkge1xuICAgICAgbGV0IHN0YXJ0LCBzdGFydElzVmFsaWQ7XG4gICAgICB0cnkge1xuICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7XG4gICAgICAgIHN0YXJ0SXNWYWxpZCA9IHN0YXJ0LmlzVmFsaWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsZXQgZW5kLCBlbmRJc1ZhbGlkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTtcbiAgICAgICAgZW5kSXNWYWxpZCA9IGVuZC5pc1ZhbGlkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGFydElzVmFsaWQgJiYgZW5kSXNWYWxpZCkge1xuICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCwgZW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkge1xuICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKGUsIG9wdHMpO1xuICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW5kSXNWYWxpZCkge1xuICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpO1xuICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgZHVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gSW50ZXJ2YWwuIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc0ludGVydmFsKG8pIHtcbiAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0YXJ0IG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAdHlwZSB7RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgc3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAdHlwZSB7RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgZW5kKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBsZW5ndGgodW5pdCA9IFwibWlsbGlzZWNvbmRzXCIpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uKC4uLlt1bml0XSkuZ2V0KHVuaXQpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvdW50IG9mIG1pbnV0ZXMsIGhvdXJzLCBkYXlzLCBtb250aHMsIG9yIHllYXJzIGluY2x1ZGVkIGluIHRoZSBJbnRlcnZhbCwgZXZlbiBpbiBwYXJ0LlxuICAgKiBVbmxpa2Uge0BsaW5rIEludGVydmFsI2xlbmd0aH0gdGhpcyBjb3VudHMgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyLCBub3QgcGVyaW9kcyBvZiB0aW1lLCBlLmcuIHNwZWNpZnlpbmcgJ2RheSdcbiAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPydcbiAgICogQHBhcmFtIHtzdHJpbmd9IFt1bml0PSdtaWxsaXNlY29uZHMnXSAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY291bnQuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGNvdW50KHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0LnN0YXJ0T2YodW5pdCksXG4gICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgb2YgdGltZSB0byBjaGVjayBzYW1lbmVzcyBvblxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzU2FtZSh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuaXNFbXB0eSgpIHx8IHRoaXMuZS5taW51cygxKS5oYXNTYW1lKHRoaXMucywgdW5pdCkgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGhhcyB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIERhdGVUaW1lcy5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMucy52YWx1ZU9mKCkgPT09IHRoaXMuZS52YWx1ZU9mKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGlzIGFmdGVyIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc0FmdGVyKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zID4gZGF0ZVRpbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzQmVmb3JlKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgY29udGFpbnMgdGhlIHNwZWNpZmllZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGNvbnRhaW5zKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zIDw9IGRhdGVUaW1lICYmIHRoaXMuZSA+IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0c1wiIHRoZSBzdGFydCBhbmQvb3IgZW5kIGRhdGVzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgSW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldFxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuc3RhcnQgLSB0aGUgc3RhcnRpbmcgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLmVuZCAtIHRoZSBlbmRpbmcgRGF0ZVRpbWVcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzZXQoeyBzdGFydCwgZW5kIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCB8fCB0aGlzLnMsIGVuZCB8fCB0aGlzLmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lc1xuICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHNwbGl0QXQoLi4uZGF0ZVRpbWVzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBbXTtcbiAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXNcbiAgICAgICAgLm1hcChmcmllbmRseURhdGVUaW1lKVxuICAgICAgICAuZmlsdGVyKChkKSA9PiB0aGlzLmNvbnRhaW5zKGQpKVxuICAgICAgICAuc29ydCgpLFxuICAgICAgcmVzdWx0cyA9IFtdO1xuICAgIGxldCB7IHMgfSA9IHRoaXMsXG4gICAgICBpID0gMDtcblxuICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7XG4gICAgICBjb25zdCBhZGRlZCA9IHNvcnRlZFtpXSB8fCB0aGlzLmUsXG4gICAgICAgIG5leHQgPSArYWRkZWQgPiArdGhpcy5lID8gdGhpcy5lIDogYWRkZWQ7XG4gICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7XG4gICAgICBzID0gbmV4dDtcbiAgICAgIGkgKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGludG8gc21hbGxlciBJbnRlcnZhbHMsIGVhY2ggb2YgdGhlIHNwZWNpZmllZCBsZW5ndGguXG4gICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWxcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBsZW5ndGggb2YgZWFjaCByZXN1bHRpbmcgaW50ZXJ2YWwuXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3BsaXRCeShkdXJhdGlvbikge1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIWR1ci5pc1ZhbGlkIHx8IGR1ci5hcyhcIm1pbGxpc2Vjb25kc1wiKSA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCB7IHMgfSA9IHRoaXMsXG4gICAgICBpZHggPSAxLFxuICAgICAgbmV4dDtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICB3aGlsZSAocyA8IHRoaXMuZSkge1xuICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7XG4gICAgICBuZXh0ID0gK2FkZGVkID4gK3RoaXMuZSA/IHRoaXMuZSA6IGFkZGVkO1xuICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMocywgbmV4dCkpO1xuICAgICAgcyA9IG5leHQ7XG4gICAgICBpZHggKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGludG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc21hbGxlciBpbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXJPZlBhcnRzIC0gVGhlIG51bWJlciBvZiBJbnRlcnZhbHMgdG8gZGl2aWRlIHRoZSBJbnRlcnZhbCBpbnRvLlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGRpdmlkZUVxdWFsbHkobnVtYmVyT2ZQYXJ0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuc3BsaXRCeSh0aGlzLmxlbmd0aCgpIC8gbnVtYmVyT2ZQYXJ0cykuc2xpY2UoMCwgbnVtYmVyT2ZQYXJ0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxcbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIG92ZXJsYXBzKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZSA+IG90aGVyLnMgJiYgdGhpcy5zIDwgb3RoZXIuZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGFkamFjZW50IHRvIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwncyBzdGFydC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGFidXRzU3RhcnQob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiArdGhpcy5lID09PSArb3RoZXIucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGFidXRzRW5kKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBlbmd1bGZzIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlbmd1bGZzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zIDw9IG90aGVyLnMgJiYgdGhpcy5lID49IG90aGVyLmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBhcyB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLmVxdWFscyhvdGhlci5zKSAmJiB0aGlzLmUuZXF1YWxzKG90aGVyLmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIGludGVyc2VjdGlvbiBvZiB0aGlzIEludGVydmFsIGFuZCB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtYXhpbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtaW5pbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLlxuICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgaW50ZXJzZWN0aW9uKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucyxcbiAgICAgIGUgPSB0aGlzLmUgPCBvdGhlci5lID8gdGhpcy5lIDogb3RoZXIuZTtcblxuICAgIGlmIChzID49IGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgdW5pb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgcmVzdWx0aW5nIEludGVydmFsIGhhcyB0aGUgbWluaW11bSBzdGFydCB0aW1lIGFuZCB0aGUgbWF4aW11bSBlbmQgdGltZSBvZiB0aGUgdHdvIEludGVydmFscy5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICB1bmlvbihvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBzID0gdGhpcy5zIDwgb3RoZXIucyA/IHRoaXMucyA6IG90aGVyLnMsXG4gICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy5cbiAgICogQ29tYmluZXMgb3ZlcmxhcHBpbmcgYW5kIGFkamFjZW50IEludGVydmFscy5cbiAgICogQHBhcmFtIHtBcnJheX0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1lcmdlKGludGVydmFscykge1xuICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zIC0gYi5zKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGl0ZW1dO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGN1cnJlbnQudW5pb24oaXRlbSldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtbXSwgbnVsbF1cbiAgICAgICk7XG4gICAgaWYgKGZpbmFsKSB7XG4gICAgICBmb3VuZC5wdXNoKGZpbmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBJbnRlcnZhbHMgcmVwcmVzZW50aW5nIHRoZSBzcGFucyBvZiB0aW1lIHRoYXQgb25seSBhcHBlYXIgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHNcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgeG9yKGludGVydmFscykge1xuICAgIGxldCBzdGFydCA9IG51bGwsXG4gICAgICBjdXJyZW50Q291bnQgPSAwO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXSxcbiAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbXG4gICAgICAgIHsgdGltZTogaS5zLCB0eXBlOiBcInNcIiB9LFxuICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogXCJlXCIgfSxcbiAgICAgIF0pLFxuICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSxcbiAgICAgIGFyciA9IGZsYXR0ZW5lZC5zb3J0KChhLCBiKSA9PiBhLnRpbWUgLSBiLnRpbWUpO1xuXG4gICAgZm9yIChjb25zdCBpIG9mIGFycikge1xuICAgICAgY3VycmVudENvdW50ICs9IGkudHlwZSA9PT0gXCJzXCIgPyAxIDogLTE7XG5cbiAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHtcbiAgICAgICAgc3RhcnQgPSBpLnRpbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGkudGltZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBJbnRlcnZhbC5tZXJnZShyZXN1bHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy5cbiAgICogQHBhcmFtIHsuLi5JbnRlcnZhbH0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgZGlmZmVyZW5jZSguLi5pbnRlcnZhbHMpIHtcbiAgICByZXR1cm4gSW50ZXJ2YWwueG9yKFt0aGlzXS5jb25jYXQoaW50ZXJ2YWxzKSlcbiAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKVxuICAgICAgLmZpbHRlcigoaSkgPT4gaSAmJiAhaS5pc0VtcHR5KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1N0cmluZygpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGBbJHt0aGlzLnMudG9JU08oKX0g4oCTICR7dGhpcy5lLnRvSVNPKCl9KWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGVcbiAgICogSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBhbmQgYW55IHByZXNldHMgZGVmaW5lZCBieSBMdXhvbiwgc3VjaCBhc1xuICAgKiB7QGxpbmsgRGF0ZVRpbWUuREFURV9GVUxMfSBvciB7QGxpbmsgRGF0ZVRpbWUuVElNRV9TSU1QTEV9LiBUaGUgZXhhY3QgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2RcbiAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlXG4gICAqIEludGVydmFsIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuXG4gICAqIHNwZWNpZmllZC5cbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2Zvcm1hdE9wdHM9RGF0ZVRpbWUuREFURV9TSE9SVF0gLSBFaXRoZXIgYSBEYXRlVGltZSBwcmVzZXQgb3JcbiAgICogSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLlxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gMTEvNy8yMDIyIOKAkyAxMS84LzIwMjJcbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwpOyAvLz0+IE5vdmVtYmVyIDcg4oCTIDgsIDIwMjJcbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjJcbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QxNzowMFovMjAyMi0xMS0wN1QxOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5USU1FX1NJTVBMRSk7IC8vPT4gNjowMCDigJMgODowMCBQTVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDE3OjAwWi8yMDIyLTExLTA3VDE5OjAwWicpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+IE1vbiwgTm92IDA3LCA2OjAwIOKAkyA4OjAwIHBcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9Mb2NhbGVTdHJpbmcoZm9ybWF0T3B0cyA9IEZvcm1hdHMuREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMucy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdEludGVydmFsKHRoaXMpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT31cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08ob3B0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRDtcbiAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPKG9wdHMpfS8ke3RoaXMuZS50b0lTTyhvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIFRoZSB0aW1lIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09EYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRDtcbiAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aW1lIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT31cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKG9wdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0XG4gICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZVxuICAgKiBmb3JtYXR0aW5nIHRvb2wuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlRm9ybWF0IC0gVGhlIGZvcm1hdCBzdHJpbmcuIFRoaXMgc3RyaW5nIGZvcm1hdHMgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZS5cbiAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLnNlcGFyYXRvciA9ICAnIOKAkyAnXSAtIEEgc2VwYXJhdG9yIHRvIHBsYWNlIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmRcbiAgICogcmVwcmVzZW50YXRpb25zLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9IFwiIOKAkyBcIiB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0Zvcm1hdChkYXRlRm9ybWF0KX0ke3NlcGFyYXRvcn0ke3RoaXMuZS50b0Zvcm1hdChkYXRlRm9ybWF0KX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIER1cmF0aW9uIHJlcHJlc2VudGluZyB0aGUgdGltZSBzcGFubmVkIGJ5IHRoaXMgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDg4NDg5MjU3IH1cbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJ10pLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyNCwgbWludXRlczogMzQuODIwOTUgfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJ10pLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyNCwgbWludXRlczogMzQsIHNlY29uZHM6IDQ5LjI1NyB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHRvRHVyYXRpb24odW5pdCwgb3B0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZCh0aGlzLmludmFsaWRSZWFzb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lLmRpZmYodGhpcy5zLCB1bml0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1hcEZuXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSlcbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikubWFwRW5kcG9pbnRzKGVuZHBvaW50ID0+IGVuZHBvaW50LnBsdXMoeyBob3VyczogMiB9KSlcbiAgICovXG4gIG1hcEVuZHBvaW50cyhtYXBGbikge1xuICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKG1hcEZuKHRoaXMucyksIG1hcEZuKHRoaXMuZSkpO1xuICB9XG59XG4iLCAiaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcblxuaW1wb3J0IHsgaGFzUmVsYXRpdmUgfSBmcm9tIFwiLi9pbXBsL3V0aWwuanNcIjtcblxuLyoqXG4gKiBUaGUgSW5mbyBjbGFzcyBjb250YWlucyBzdGF0aWMgbWV0aG9kcyBmb3IgcmV0cmlldmluZyBnZW5lcmFsIHRpbWUgYW5kIGRhdGUgcmVsYXRlZCBkYXRhLiBGb3IgZXhhbXBsZSwgaXQgaGFzIG1ldGhvZHMgZm9yIGZpbmRpbmcgb3V0IGlmIGEgdGltZSB6b25lIGhhcyBhIERTVCwgZm9yIGxpc3RpbmcgdGhlIG1vbnRocyBpbiBhbnkgc3VwcG9ydGVkIGxvY2FsZSwgYW5kIGZvciBkaXNjb3ZlcmluZyB3aGljaCBvZiBMdXhvbiBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmZvIHtcbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC5cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBab25lIHRvIGNoZWNrLiBEZWZhdWx0cyB0byB0aGUgZW52aXJvbm1lbnQncyBsb2NhbCB6b25lLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGhhc0RTVCh6b25lID0gU2V0dGluZ3MuZGVmYXVsdFpvbmUpIHtcbiAgICBjb25zdCBwcm90byA9IERhdGVUaW1lLm5vdygpLnNldFpvbmUoem9uZSkuc2V0KHsgbW9udGg6IDEyIH0pO1xuXG4gICAgcmV0dXJuICF6b25lLmlzVW5pdmVyc2FsICYmIHByb3RvLm9mZnNldCAhPT0gcHJvdG8uc2V0KHsgbW9udGg6IDYgfSkub2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBpcyBhIHZhbGlkIElBTkEgc3BlY2lmaWVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFpvbmUgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkSUFOQVpvbmUoem9uZSkge1xuICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW5wdXQgaW50byBhIHtAbGluayBab25lfSBpbnN0YW5jZS5cbiAgICpcbiAgICogKiBJZiBgaW5wdXRgIGlzIGFscmVhZHkgYSBab25lIGluc3RhbmNlLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuXG4gICAqICogSWYgYGlucHV0YCBpcyBhIHN0cmluZyBjb250YWluaW5nIGEgdmFsaWQgdGltZSB6b25lIG5hbWUsIGEgWm9uZSBpbnN0YW5jZVxuICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLlxuICAgKiAqIElmIGBpbnB1dGAgaXMgYSBzdHJpbmcgdGhhdCBkb2Vzbid0IHJlZmVyIHRvIGEga25vd24gdGltZSB6b25lLCBhIFpvbmVcbiAgICogICBpbnN0YW5jZSB3aXRoIHtAbGluayBab25lI2lzVmFsaWR9ID09IGZhbHNlIGlzIHJldHVybmVkLlxuICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXRcbiAgICogICBpbiBtaW51dGVzIGlzIHJldHVybmVkLlxuICAgKiAqIElmIGBpbnB1dGAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGUgZGVmYXVsdCB6b25lIGlzIHJldHVybmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHJldHVybiB7Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVpvbmUoaW5wdXQsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy5cbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJudW1lcmljXCIsIFwiMi1kaWdpdFwiLCBcIm5hcnJvd1wiLCBcInNob3J0XCIsIFwibG9uZ1wiXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKClbMF0gLy89PiAnSmFudWFyeSdcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ3Nob3J0JylbMF0gLy89PiAnSmFuJ1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdzaG9ydCcsIHsgbG9jYWxlOiAnZnItQ0EnIH0gKVswXSAvLz0+ICdqYW52LidcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ251bWVyaWMnLCB7IGxvY2FsZTogJ2FyJyB9KVswXSAvLz0+ICfZoSdcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1vbnRocyhcbiAgICBsZW5ndGggPSBcImxvbmdcIixcbiAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gXCJncmVnb3J5XCIgfSA9IHt9XG4gICkge1xuICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIGZvcm1hdCBtb250aCBuYW1lcy5cbiAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0XG4gICAqIGNoYW5nZXMgdGhlIHN0cmluZy5cbiAgICogU2VlIHtAbGluayBJbmZvI21vbnRoc31cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibnVtZXJpY1wiLCBcIjItZGlnaXRcIiwgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhclxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtb250aHNGb3JtYXQoXG4gICAgbGVuZ3RoID0gXCJsb25nXCIsXG4gICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsLCBvdXRwdXRDYWxlbmRhciA9IFwiZ3JlZ29yeVwiIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcikpLm1vbnRocyhsZW5ndGgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIHdlZWtkYXkgcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygpWzBdIC8vPT4gJ01vbmRheSdcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnKVswXSAvLz0+ICdNb24nXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLidcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnLCB7IGxvY2FsZTogJ2FyJyB9KVswXSAvLz0+ICfYp9mE2KfYq9mG2YrZhidcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgd2Vla2RheXMobGVuZ3RoID0gXCJsb25nXCIsIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCB9ID0ge30pIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IHdlZWsgbmFtZXMuXG4gICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0XG4gICAqIGNoYW5nZXMgdGhlIHN0cmluZy5cbiAgICogU2VlIHtAbGluayBJbmZvI3dlZWtkYXlzfVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9bnVsbF0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZVxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyB3ZWVrZGF5c0Zvcm1hdChcbiAgICBsZW5ndGggPSBcImxvbmdcIixcbiAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwgfSA9IHt9XG4gICkge1xuICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBtZXJpZGllbXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAZXhhbXBsZSBJbmZvLm1lcmlkaWVtcygpIC8vPT4gWyAnQU0nLCAnUE0nIF1cbiAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlKS5tZXJpZGllbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J3Nob3J0J10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBlcmEgcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJzaG9ydFwiIG9yIFwibG9uZ1wiLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXVxuICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnKSAvLz0+IFsgJ0JlZm9yZSBDaHJpc3QnLCAnQW5ubyBEb21pbmknIF1cbiAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJywgeyBsb2NhbGU6ICdmcicgfSkgLy89PiBbICdhdmFudCBKw6lzdXMtQ2hyaXN0JywgJ2FwcsOocyBKw6lzdXMtQ2hyaXN0JyBdXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIGVyYXMobGVuZ3RoID0gXCJzaG9ydFwiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudWxsLCBcImdyZWdvcnlcIikuZXJhcyhsZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2V0IG9mIGF2YWlsYWJsZSBmZWF0dXJlcyBpbiB0aGlzIGVudmlyb25tZW50LlxuICAgKiBTb21lIGZlYXR1cmVzIG9mIEx1eG9uIGFyZSBub3QgYXZhaWxhYmxlIGluIGFsbCBlbnZpcm9ubWVudHMuIEZvciBleGFtcGxlLCBvbiBvbGRlciBicm93c2VycywgcmVsYXRpdmUgdGltZSBmb3JtYXR0aW5nIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZS4gVXNlIHRoaXMgZnVuY3Rpb24gdG8gZmlndXJlIG91dCBpZiB0aGF0J3MgdGhlIGNhc2UuXG4gICAqIEtleXM6XG4gICAqICogYHJlbGF0aXZlYDogd2hldGhlciB0aGlzIGVudmlyb25tZW50IHN1cHBvcnRzIHJlbGF0aXZlIHRpbWUgZm9ybWF0dGluZ1xuICAgKiBAZXhhbXBsZSBJbmZvLmZlYXR1cmVzKCkgLy89PiB7IHJlbGF0aXZlOiBmYWxzZSB9XG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBmZWF0dXJlcygpIHtcbiAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9O1xuICB9XG59XG4iLCAiaW1wb3J0IER1cmF0aW9uIGZyb20gXCIuLi9kdXJhdGlvbi5qc1wiO1xuXG5mdW5jdGlvbiBkYXlEaWZmKGVhcmxpZXIsIGxhdGVyKSB7XG4gIGNvbnN0IHV0Y0RheVN0YXJ0ID0gKGR0KSA9PiBkdC50b1VUQygwLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkuc3RhcnRPZihcImRheVwiKS52YWx1ZU9mKCksXG4gICAgbXMgPSB1dGNEYXlTdGFydChsYXRlcikgLSB1dGNEYXlTdGFydChlYXJsaWVyKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoRHVyYXRpb24uZnJvbU1pbGxpcyhtcykuYXMoXCJkYXlzXCIpKTtcbn1cblxuZnVuY3Rpb24gaGlnaE9yZGVyRGlmZnMoY3Vyc29yLCBsYXRlciwgdW5pdHMpIHtcbiAgY29uc3QgZGlmZmVycyA9IFtcbiAgICBbXCJ5ZWFyc1wiLCAoYSwgYikgPT4gYi55ZWFyIC0gYS55ZWFyXSxcbiAgICBbXCJxdWFydGVyc1wiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSxcbiAgICBbXCJtb250aHNcIiwgKGEsIGIpID0+IGIubW9udGggLSBhLm1vbnRoICsgKGIueWVhciAtIGEueWVhcikgKiAxMl0sXG4gICAgW1xuICAgICAgXCJ3ZWVrc1wiLFxuICAgICAgKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgZGF5cyA9IGRheURpZmYoYSwgYik7XG4gICAgICAgIHJldHVybiAoZGF5cyAtIChkYXlzICUgNykpIC8gNztcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXCJkYXlzXCIsIGRheURpZmZdLFxuICBdO1xuXG4gIGNvbnN0IHJlc3VsdHMgPSB7fTtcbiAgY29uc3QgZWFybGllciA9IGN1cnNvcjtcbiAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7XG5cbiAgZm9yIChjb25zdCBbdW5pdCwgZGlmZmVyXSBvZiBkaWZmZXJzKSB7XG4gICAgaWYgKHVuaXRzLmluZGV4T2YodW5pdCkgPj0gMCkge1xuICAgICAgbG93ZXN0T3JkZXIgPSB1bml0O1xuXG4gICAgICByZXN1bHRzW3VuaXRdID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpO1xuICAgICAgaGlnaFdhdGVyID0gZWFybGllci5wbHVzKHJlc3VsdHMpO1xuXG4gICAgICBpZiAoaGlnaFdhdGVyID4gbGF0ZXIpIHtcbiAgICAgICAgcmVzdWx0c1t1bml0XS0tO1xuICAgICAgICBjdXJzb3IgPSBlYXJsaWVyLnBsdXMocmVzdWx0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJzb3IgPSBoaWdoV2F0ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoZWFybGllciwgbGF0ZXIsIHVuaXRzLCBvcHRzKSB7XG4gIGxldCBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXSA9IGhpZ2hPcmRlckRpZmZzKGVhcmxpZXIsIGxhdGVyLCB1bml0cyk7XG5cbiAgY29uc3QgcmVtYWluaW5nTWlsbGlzID0gbGF0ZXIgLSBjdXJzb3I7XG5cbiAgY29uc3QgbG93ZXJPcmRlclVuaXRzID0gdW5pdHMuZmlsdGVyKFxuICAgICh1KSA9PiBbXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCIsIFwibWlsbGlzZWNvbmRzXCJdLmluZGV4T2YodSkgPj0gMFxuICApO1xuXG4gIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7XG4gICAgICBoaWdoV2F0ZXIgPSBjdXJzb3IucGx1cyh7IFtsb3dlc3RPcmRlcl06IDEgfSk7XG4gICAgfVxuXG4gICAgaWYgKGhpZ2hXYXRlciAhPT0gY3Vyc29yKSB7XG4gICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGR1cmF0aW9uID0gRHVyYXRpb24uZnJvbU9iamVjdChyZXN1bHRzLCBvcHRzKTtcblxuICBpZiAobG93ZXJPcmRlclVuaXRzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpXG4gICAgICAuc2hpZnRUbyguLi5sb3dlck9yZGVyVW5pdHMpXG4gICAgICAucGx1cyhkdXJhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGR1cmF0aW9uO1xuICB9XG59XG4iLCAiY29uc3QgbnVtYmVyaW5nU3lzdGVtcyA9IHtcbiAgYXJhYjogXCJbXFx1MDY2MC1cXHUwNjY5XVwiLFxuICBhcmFiZXh0OiBcIltcXHUwNkYwLVxcdTA2RjldXCIsXG4gIGJhbGk6IFwiW1xcdTFCNTAtXFx1MUI1OV1cIixcbiAgYmVuZzogXCJbXFx1MDlFNi1cXHUwOUVGXVwiLFxuICBkZXZhOiBcIltcXHUwOTY2LVxcdTA5NkZdXCIsXG4gIGZ1bGx3aWRlOiBcIltcXHVGRjEwLVxcdUZGMTldXCIsXG4gIGd1anI6IFwiW1xcdTBBRTYtXFx1MEFFRl1cIixcbiAgaGFuaWRlYzogXCJb44CHfOS4gHzkuox85LiJfOWbm3zkupR85YWtfOS4g3zlhat85LmdXVwiLFxuICBraG1yOiBcIltcXHUxN0UwLVxcdTE3RTldXCIsXG4gIGtuZGE6IFwiW1xcdTBDRTYtXFx1MENFRl1cIixcbiAgbGFvbzogXCJbXFx1MEVEMC1cXHUwRUQ5XVwiLFxuICBsaW1iOiBcIltcXHUxOTQ2LVxcdTE5NEZdXCIsXG4gIG1seW06IFwiW1xcdTBENjYtXFx1MEQ2Rl1cIixcbiAgbW9uZzogXCJbXFx1MTgxMC1cXHUxODE5XVwiLFxuICBteW1yOiBcIltcXHUxMDQwLVxcdTEwNDldXCIsXG4gIG9yeWE6IFwiW1xcdTBCNjYtXFx1MEI2Rl1cIixcbiAgdGFtbGRlYzogXCJbXFx1MEJFNi1cXHUwQkVGXVwiLFxuICB0ZWx1OiBcIltcXHUwQzY2LVxcdTBDNkZdXCIsXG4gIHRoYWk6IFwiW1xcdTBFNTAtXFx1MEU1OV1cIixcbiAgdGlidDogXCJbXFx1MEYyMC1cXHUwRjI5XVwiLFxuICBsYXRuOiBcIlxcXFxkXCIsXG59O1xuXG5jb25zdCBudW1iZXJpbmdTeXN0ZW1zVVRGMTYgPSB7XG4gIGFyYWI6IFsxNjMyLCAxNjQxXSxcbiAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLFxuICBiYWxpOiBbNjk5MiwgNzAwMV0sXG4gIGJlbmc6IFsyNTM0LCAyNTQzXSxcbiAgZGV2YTogWzI0MDYsIDI0MTVdLFxuICBmdWxsd2lkZTogWzY1Mjk2LCA2NTMwM10sXG4gIGd1anI6IFsyNzkwLCAyNzk5XSxcbiAga2htcjogWzYxMTIsIDYxMjFdLFxuICBrbmRhOiBbMzMwMiwgMzMxMV0sXG4gIGxhb286IFszNzkyLCAzODAxXSxcbiAgbGltYjogWzY0NzAsIDY0NzldLFxuICBtbHltOiBbMzQzMCwgMzQzOV0sXG4gIG1vbmc6IFs2MTYwLCA2MTY5XSxcbiAgbXltcjogWzQxNjAsIDQxNjldLFxuICBvcnlhOiBbMjkxOCwgMjkyN10sXG4gIHRhbWxkZWM6IFszMDQ2LCAzMDU1XSxcbiAgdGVsdTogWzMxNzQsIDMxODNdLFxuICB0aGFpOiBbMzY2NCwgMzY3M10sXG4gIHRpYnQ6IFszODcyLCAzODgxXSxcbn07XG5cbmNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFxbfFxcXV0vZywgXCJcIikuc3BsaXQoXCJcIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURpZ2l0cyhzdHIpIHtcbiAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7XG4gIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9IFwiXCI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcblxuICAgICAgaWYgKHN0cltpXS5zZWFyY2gobnVtYmVyaW5nU3lzdGVtcy5oYW5pZGVjKSAhPT0gLTEpIHtcbiAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG51bWJlcmluZ1N5c3RlbXNVVEYxNikge1xuICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTtcbiAgICAgICAgICBpZiAoY29kZSA+PSBtaW4gJiYgY29kZSA8PSBtYXgpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IGNvZGUgLSBtaW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlnaXRSZWdleCh7IG51bWJlcmluZ1N5c3RlbSB9LCBhcHBlbmQgPSBcIlwiKSB7XG4gIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8IFwibGF0blwiXX0ke2FwcGVuZH1gKTtcbn1cbiIsICJpbXBvcnQgeyBwYXJzZU1pbGxpcywgaXNVbmRlZmluZWQsIHVudHJ1bmNhdGVZZWFyLCBzaWduZWRPZmZzZXQsIGhhc093blByb3BlcnR5IH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0IEZvcm1hdHRlciBmcm9tIFwiLi9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IHsgZGlnaXRSZWdleCwgcGFyc2VEaWdpdHMgfSBmcm9tIFwiLi9kaWdpdHMuanNcIjtcbmltcG9ydCB7IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy5qc1wiO1xuXG5jb25zdCBNSVNTSU5HX0ZUUCA9IFwibWlzc2luZyBJbnRsLkRhdGVUaW1lRm9ybWF0LmZvcm1hdFRvUGFydHMgc3VwcG9ydFwiO1xuXG5mdW5jdGlvbiBpbnRVbml0KHJlZ2V4LCBwb3N0ID0gKGkpID0+IGkpIHtcbiAgcmV0dXJuIHsgcmVnZXgsIGRlc2VyOiAoW3NdKSA9PiBwb3N0KHBhcnNlRGlnaXRzKHMpKSB9O1xufVxuXG5jb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApO1xuY29uc3Qgc3BhY2VPck5CU1AgPSBgWyAke05CU1B9XWA7XG5jb25zdCBzcGFjZU9yTkJTUFJlZ0V4cCA9IG5ldyBSZWdFeHAoc3BhY2VPck5CU1AsIFwiZ1wiKTtcblxuZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHtcbiAgLy8gbWFrZSBkb3RzIG9wdGlvbmFsIGFuZCBhbHNvIG1ha2UgdGhlbSBsaXRlcmFsXG4gIC8vIG1ha2Ugc3BhY2UgYW5kIG5vbiBicmVha2FibGUgc3BhY2UgY2hhcmFjdGVycyBpbnRlcmNoYW5nZWFibGVcbiAgcmV0dXJuIHMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC4/XCIpLnJlcGxhY2Uoc3BhY2VPck5CU1BSZWdFeHAsIHNwYWNlT3JOQlNQKTtcbn1cblxuZnVuY3Rpb24gc3RyaXBJbnNlbnNpdGl2aXRpZXMocykge1xuICByZXR1cm4gc1xuICAgIC5yZXBsYWNlKC9cXC4vZywgXCJcIikgLy8gaWdub3JlIGRvdHMgdGhhdCB3ZXJlIG1hZGUgb3B0aW9uYWxcbiAgICAucmVwbGFjZShzcGFjZU9yTkJTUFJlZ0V4cCwgXCIgXCIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIG9uZU9mKHN0cmluZ3MsIHN0YXJ0SW5kZXgpIHtcbiAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVnZXg6IFJlZ0V4cChzdHJpbmdzLm1hcChmaXhMaXN0UmVnZXgpLmpvaW4oXCJ8XCIpKSxcbiAgICAgIGRlc2VyOiAoW3NdKSA9PlxuICAgICAgICBzdHJpbmdzLmZpbmRJbmRleCgoaSkgPT4gc3RyaXBJbnNlbnNpdGl2aXRpZXMocykgPT09IHN0cmlwSW5zZW5zaXRpdml0aWVzKGkpKSArIHN0YXJ0SW5kZXgsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvZmZzZXQocmVnZXgsIGdyb3Vwcykge1xuICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbLCBoLCBtXSkgPT4gc2lnbmVkT2Zmc2V0KGgsIG0pLCBncm91cHMgfTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7XG4gIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFtzXSkgPT4gcyB9O1xufVxuXG5mdW5jdGlvbiBlc2NhcGVUb2tlbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1xcLVxcW1xcXXt9KCkqKz8uLFxcXFxcXF4kfCNcXHNdL2csIFwiXFxcXCQmXCIpO1xufVxuXG5mdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykge1xuICBjb25zdCBvbmUgPSBkaWdpdFJlZ2V4KGxvYyksXG4gICAgdHdvID0gZGlnaXRSZWdleChsb2MsIFwiezJ9XCIpLFxuICAgIHRocmVlID0gZGlnaXRSZWdleChsb2MsIFwiezN9XCIpLFxuICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgXCJ7NH1cIiksXG4gICAgc2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezZ9XCIpLFxuICAgIG9uZU9yVHdvID0gZGlnaXRSZWdleChsb2MsIFwiezEsMn1cIiksXG4gICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDN9XCIpLFxuICAgIG9uZVRvU2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezEsNn1cIiksXG4gICAgb25lVG9OaW5lID0gZGlnaXRSZWdleChsb2MsIFwiezEsOX1cIiksXG4gICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsIFwiezIsNH1cIiksXG4gICAgZm91clRvU2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezQsNn1cIiksXG4gICAgbGl0ZXJhbCA9ICh0KSA9PiAoeyByZWdleDogUmVnRXhwKGVzY2FwZVRva2VuKHQudmFsKSksIGRlc2VyOiAoW3NdKSA9PiBzLCBsaXRlcmFsOiB0cnVlIH0pLFxuICAgIHVuaXRhdGUgPSAodCkgPT4ge1xuICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHQudmFsKSB7XG4gICAgICAgIC8vIGVyYVxuICAgICAgICBjYXNlIFwiR1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcyhcInNob3J0XCIsIGZhbHNlKSwgMCk7XG4gICAgICAgIGNhc2UgXCJHR1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcyhcImxvbmdcIiwgZmFsc2UpLCAwKTtcbiAgICAgICAgLy8geWVhcnNcbiAgICAgICAgY2FzZSBcInlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1NpeCk7XG4gICAgICAgIGNhc2UgXCJ5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpO1xuICAgICAgICBjYXNlIFwieXl5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpO1xuICAgICAgICBjYXNlIFwieXl5eXlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyVG9TaXgpO1xuICAgICAgICBjYXNlIFwieXl5eXl5XCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTtcbiAgICAgICAgLy8gbW9udGhzXG4gICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwiTU1cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiTU1NXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoXCJzaG9ydFwiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTU1NTVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwibG9uZ1wiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcIkxMXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcIkxMTFwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwic2hvcnRcIiwgZmFsc2UsIGZhbHNlKSwgMSk7XG4gICAgICAgIGNhc2UgXCJMTExMXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoXCJsb25nXCIsIGZhbHNlLCBmYWxzZSksIDEpO1xuICAgICAgICAvLyBkYXRlc1xuICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcImRkXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgLy8gb3JkaW5hbHNcbiAgICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTtcbiAgICAgICAgY2FzZSBcIm9vb1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTtcbiAgICAgICAgLy8gdGltZVxuICAgICAgICBjYXNlIFwiSEhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiSFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcImhoXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJtbVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInFxXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcInNcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJzc1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7XG4gICAgICAgIGNhc2UgXCJTU1NcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7XG4gICAgICAgIGNhc2UgXCJ1XCI6XG4gICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpO1xuICAgICAgICBjYXNlIFwidXVcIjpcbiAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInV1dVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7XG4gICAgICAgIC8vIG1lcmlkaWVtXG4gICAgICAgIGNhc2UgXCJhXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7XG4gICAgICAgIC8vIHdlZWtZZWFyIChrKVxuICAgICAgICBjYXNlIFwia2tra1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpO1xuICAgICAgICBjYXNlIFwia2tcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d29Ub0ZvdXIsIHVudHJ1bmNhdGVZZWFyKTtcbiAgICAgICAgLy8gd2Vla051bWJlciAoVylcbiAgICAgICAgY2FzZSBcIldcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJXV1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIC8vIHdlZWtkYXlzXG4gICAgICAgIGNhc2UgXCJFXCI6XG4gICAgICAgIGNhc2UgXCJjXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTtcbiAgICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJzaG9ydFwiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcIkVFRUVcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwibG9uZ1wiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcImNjY1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJzaG9ydFwiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiY2NjY1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJsb25nXCIsIHRydWUsIGZhbHNlKSwgMSk7XG4gICAgICAgIC8vIG9mZnNldC96b25lXG4gICAgICAgIGNhc2UgXCJaXCI6XG4gICAgICAgIGNhc2UgXCJaWlwiOlxuICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpO1xuICAgICAgICBjYXNlIFwiWlpaXCI6XG4gICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpO1xuICAgICAgICAvLyB3ZSBkb24ndCBzdXBwb3J0IFpaWlogKFBTVCkgb3IgWlpaWlogKFBhY2lmaWMgU3RhbmRhcmQgVGltZSkgaW4gcGFyc2luZ1xuICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55IHdheSB0byBmaWd1cmUgb3V0IHdoYXQgdGhleSBhcmVcbiAgICAgICAgY2FzZSBcInpcIjpcbiAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bYS16XystL117MSwyNTZ9Py9pKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbGl0ZXJhbCh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGNvbnN0IHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7XG4gICAgaW52YWxpZFJlYXNvbjogTUlTU0lOR19GVFAsXG4gIH07XG5cbiAgdW5pdC50b2tlbiA9IHRva2VuO1xuXG4gIHJldHVybiB1bml0O1xufVxuXG5jb25zdCBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbCA9IHtcbiAgeWVhcjoge1xuICAgIFwiMi1kaWdpdFwiOiBcInl5XCIsXG4gICAgbnVtZXJpYzogXCJ5eXl5eVwiLFxuICB9LFxuICBtb250aDoge1xuICAgIG51bWVyaWM6IFwiTVwiLFxuICAgIFwiMi1kaWdpdFwiOiBcIk1NXCIsXG4gICAgc2hvcnQ6IFwiTU1NXCIsXG4gICAgbG9uZzogXCJNTU1NXCIsXG4gIH0sXG4gIGRheToge1xuICAgIG51bWVyaWM6IFwiZFwiLFxuICAgIFwiMi1kaWdpdFwiOiBcImRkXCIsXG4gIH0sXG4gIHdlZWtkYXk6IHtcbiAgICBzaG9ydDogXCJFRUVcIixcbiAgICBsb25nOiBcIkVFRUVcIixcbiAgfSxcbiAgZGF5cGVyaW9kOiBcImFcIixcbiAgZGF5UGVyaW9kOiBcImFcIixcbiAgaG91cjoge1xuICAgIG51bWVyaWM6IFwiaFwiLFxuICAgIFwiMi1kaWdpdFwiOiBcImhoXCIsXG4gIH0sXG4gIG1pbnV0ZToge1xuICAgIG51bWVyaWM6IFwibVwiLFxuICAgIFwiMi1kaWdpdFwiOiBcIm1tXCIsXG4gIH0sXG4gIHNlY29uZDoge1xuICAgIG51bWVyaWM6IFwic1wiLFxuICAgIFwiMi1kaWdpdFwiOiBcInNzXCIsXG4gIH0sXG4gIHRpbWVab25lTmFtZToge1xuICAgIGxvbmc6IFwiWlpaWlpcIixcbiAgICBzaG9ydDogXCJaWlpcIixcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIHRva2VuRm9yUGFydChwYXJ0LCBmb3JtYXRPcHRzKSB7XG4gIGNvbnN0IHsgdHlwZSwgdmFsdWUgfSA9IHBhcnQ7XG5cbiAgaWYgKHR5cGUgPT09IFwibGl0ZXJhbFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpdGVyYWw6IHRydWUsXG4gICAgICB2YWw6IHZhbHVlLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBzdHlsZSA9IGZvcm1hdE9wdHNbdHlwZV07XG5cbiAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW3R5cGVdO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIikge1xuICAgIHZhbCA9IHZhbFtzdHlsZV07XG4gIH1cblxuICBpZiAodmFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpdGVyYWw6IGZhbHNlLFxuICAgICAgdmFsLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBidWlsZFJlZ2V4KHVuaXRzKSB7XG4gIGNvbnN0IHJlID0gdW5pdHMubWFwKCh1KSA9PiB1LnJlZ2V4KS5yZWR1Y2UoKGYsIHIpID0+IGAke2Z9KCR7ci5zb3VyY2V9KWAsIFwiXCIpO1xuICByZXR1cm4gW2BeJHtyZX0kYCwgdW5pdHNdO1xufVxuXG5mdW5jdGlvbiBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBjb25zdCBhbGwgPSB7fTtcbiAgICBsZXQgbWF0Y2hJbmRleCA9IDE7XG4gICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkoaGFuZGxlcnMsIGkpKSB7XG4gICAgICAgIGNvbnN0IGggPSBoYW5kbGVyc1tpXSxcbiAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7XG4gICAgICAgIGlmICghaC5saXRlcmFsICYmIGgudG9rZW4pIHtcbiAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTtcbiAgICAgICAgfVxuICAgICAgICBtYXRjaEluZGV4ICs9IGdyb3VwcztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFttYXRjaGVzLCBhbGxdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbbWF0Y2hlcywge31dO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykge1xuICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgcmV0dXJuIFwibWlsbGlzZWNvbmRcIjtcbiAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgIHJldHVybiBcInNlY29uZFwiO1xuICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgcmV0dXJuIFwibWludXRlXCI7XG4gICAgICBjYXNlIFwiaFwiOlxuICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgcmV0dXJuIFwiaG91clwiO1xuICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgcmV0dXJuIFwiZGF5XCI7XG4gICAgICBjYXNlIFwib1wiOlxuICAgICAgICByZXR1cm4gXCJvcmRpbmFsXCI7XG4gICAgICBjYXNlIFwiTFwiOlxuICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgcmV0dXJuIFwibW9udGhcIjtcbiAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgIHJldHVybiBcInllYXJcIjtcbiAgICAgIGNhc2UgXCJFXCI6XG4gICAgICBjYXNlIFwiY1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrZGF5XCI7XG4gICAgICBjYXNlIFwiV1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrTnVtYmVyXCI7XG4gICAgICBjYXNlIFwia1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrWWVhclwiO1xuICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgcmV0dXJuIFwicXVhcnRlclwiO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGxldCB6b25lID0gbnVsbDtcbiAgbGV0IHNwZWNpZmljT2Zmc2V0O1xuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMueikpIHtcbiAgICB6b25lID0gSUFOQVpvbmUuY3JlYXRlKG1hdGNoZXMueik7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHtcbiAgICBpZiAoIXpvbmUpIHtcbiAgICAgIHpvbmUgPSBuZXcgRml4ZWRPZmZzZXRab25lKG1hdGNoZXMuWik7XG4gICAgfVxuICAgIHNwZWNpZmljT2Zmc2V0ID0gbWF0Y2hlcy5aO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnEpKSB7XG4gICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuaCkpIHtcbiAgICBpZiAobWF0Y2hlcy5oIDwgMTIgJiYgbWF0Y2hlcy5hID09PSAxKSB7XG4gICAgICBtYXRjaGVzLmggKz0gMTI7XG4gICAgfSBlbHNlIGlmIChtYXRjaGVzLmggPT09IDEyICYmIG1hdGNoZXMuYSA9PT0gMCkge1xuICAgICAgbWF0Y2hlcy5oID0gMDtcbiAgICB9XG4gIH1cblxuICBpZiAobWF0Y2hlcy5HID09PSAwICYmIG1hdGNoZXMueSkge1xuICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHtcbiAgICBtYXRjaGVzLlMgPSBwYXJzZU1pbGxpcyhtYXRjaGVzLnUpO1xuICB9XG5cbiAgY29uc3QgdmFscyA9IE9iamVjdC5rZXlzKG1hdGNoZXMpLnJlZHVjZSgociwgaykgPT4ge1xuICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspO1xuICAgIGlmIChmKSB7XG4gICAgICByW2ZdID0gbWF0Y2hlc1trXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfSwge30pO1xuXG4gIHJldHVybiBbdmFscywgem9uZSwgc3BlY2lmaWNPZmZzZXRdO1xufVxuXG5sZXQgZHVtbXlEYXRlVGltZUNhY2hlID0gbnVsbDtcblxuZnVuY3Rpb24gZ2V0RHVtbXlEYXRlVGltZSgpIHtcbiAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHtcbiAgICBkdW1teURhdGVUaW1lQ2FjaGUgPSBEYXRlVGltZS5mcm9tTWlsbGlzKDE1NTU1NTU1NTU1NTUpO1xuICB9XG5cbiAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTtcbn1cblxuZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHtcbiAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTtcbiAgY29uc3QgdG9rZW5zID0gZm9ybWF0T3B0c1RvVG9rZW5zKGZvcm1hdE9wdHMsIGxvY2FsZSk7XG5cbiAgaWYgKHRva2VucyA9PSBudWxsIHx8IHRva2Vucy5pbmNsdWRlcyh1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGFuZE1hY3JvVG9rZW5zKHRva2VucywgbG9jYWxlKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0KC4uLnRva2Vucy5tYXAoKHQpID0+IG1heWJlRXhwYW5kTWFjcm9Ub2tlbih0LCBsb2NhbGUpKSk7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7XG4gIGNvbnN0IHRva2VucyA9IGV4cGFuZE1hY3JvVG9rZW5zKEZvcm1hdHRlci5wYXJzZUZvcm1hdChmb3JtYXQpLCBsb2NhbGUpLFxuICAgIHVuaXRzID0gdG9rZW5zLm1hcCgodCkgPT4gdW5pdEZvclRva2VuKHQsIGxvY2FsZSkpLFxuICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZCgodCkgPT4gdC5pbnZhbGlkUmVhc29uKTtcblxuICBpZiAoZGlzcXVhbGlmeWluZ1VuaXQpIHtcbiAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCBpbnZhbGlkUmVhc29uOiBkaXNxdWFsaWZ5aW5nVW5pdC5pbnZhbGlkUmVhc29uIH07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgW3JlZ2V4U3RyaW5nLCBoYW5kbGVyc10gPSBidWlsZFJlZ2V4KHVuaXRzKSxcbiAgICAgIHJlZ2V4ID0gUmVnRXhwKHJlZ2V4U3RyaW5nLCBcImlcIiksXG4gICAgICBbcmF3TWF0Y2hlcywgbWF0Y2hlc10gPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSxcbiAgICAgIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XSA9IG1hdGNoZXNcbiAgICAgICAgPyBkYXRlVGltZUZyb21NYXRjaGVzKG1hdGNoZXMpXG4gICAgICAgIDogW251bGwsIG51bGwsIHVuZGVmaW5lZF07XG4gICAgaWYgKGhhc093blByb3BlcnR5KG1hdGNoZXMsIFwiYVwiKSAmJiBoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCBcIkhcIikpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcbiAgICAgICAgXCJDYW4ndCBpbmNsdWRlIG1lcmlkaWVtIHdoZW4gc3BlY2lmeWluZyAyNC1ob3VyIGZvcm1hdFwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCByZWdleCwgcmF3TWF0Y2hlcywgbWF0Y2hlcywgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7XG4gIGNvbnN0IHsgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbiB9ID0gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KTtcbiAgcmV0dXJuIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpIHtcbiAgaWYgKCFmb3JtYXRPcHRzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7XG4gIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdERhdGVUaW1lUGFydHMoZ2V0RHVtbXlEYXRlVGltZSgpKTtcbiAgcmV0dXJuIHBhcnRzLm1hcCgocCkgPT4gdG9rZW5Gb3JQYXJ0KHAsIGZvcm1hdE9wdHMpKTtcbn1cbiIsICJpbXBvcnQge1xuICBpbnRlZ2VyQmV0d2VlbixcbiAgaXNMZWFwWWVhcixcbiAgdGltZU9iamVjdCxcbiAgZGF5c0luWWVhcixcbiAgZGF5c0luTW9udGgsXG4gIHdlZWtzSW5XZWVrWWVhcixcbiAgaXNJbnRlZ2VyLFxufSBmcm9tIFwiLi91dGlsLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbnZhbGlkLmpzXCI7XG5cbmNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLFxuICBsZWFwTGFkZGVyID0gWzAsIDMxLCA2MCwgOTEsIDEyMSwgMTUyLCAxODIsIDIxMywgMjQ0LCAyNzQsIDMwNSwgMzM1XTtcblxuZnVuY3Rpb24gdW5pdE91dE9mUmFuZ2UodW5pdCwgdmFsdWUpIHtcbiAgcmV0dXJuIG5ldyBJbnZhbGlkKFxuICAgIFwidW5pdCBvdXQgb2YgcmFuZ2VcIixcbiAgICBgeW91IHNwZWNpZmllZCAke3ZhbHVlfSAob2YgdHlwZSAke3R5cGVvZiB2YWx1ZX0pIGFzIGEgJHt1bml0fSwgd2hpY2ggaXMgaW52YWxpZGBcbiAgKTtcbn1cblxuZnVuY3Rpb24gZGF5T2ZXZWVrKHllYXIsIG1vbnRoLCBkYXkpIHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoIC0gMSwgZGF5KSk7XG5cbiAgaWYgKHllYXIgPCAxMDAgJiYgeWVhciA+PSAwKSB7XG4gICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTtcbiAgfVxuXG4gIGNvbnN0IGpzID0gZC5nZXRVVENEYXkoKTtcblxuICByZXR1cm4ganMgPT09IDAgPyA3IDoganM7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVPcmRpbmFsKHllYXIsIG1vbnRoLCBkYXkpIHtcbiAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07XG59XG5cbmZ1bmN0aW9uIHVuY29tcHV0ZU9yZGluYWwoeWVhciwgb3JkaW5hbCkge1xuICBjb25zdCB0YWJsZSA9IGlzTGVhcFllYXIoeWVhcikgPyBsZWFwTGFkZGVyIDogbm9uTGVhcExhZGRlcixcbiAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSxcbiAgICBkYXkgPSBvcmRpbmFsIC0gdGFibGVbbW9udGgwXTtcbiAgcmV0dXJuIHsgbW9udGg6IG1vbnRoMCArIDEsIGRheSB9O1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdyZWdvcmlhblRvV2VlayhncmVnT2JqKSB7XG4gIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ09iaixcbiAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksXG4gICAgd2Vla2RheSA9IGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KTtcblxuICBsZXQgd2Vla051bWJlciA9IE1hdGguZmxvb3IoKG9yZGluYWwgLSB3ZWVrZGF5ICsgMTApIC8gNyksXG4gICAgd2Vla1llYXI7XG5cbiAgaWYgKHdlZWtOdW1iZXIgPCAxKSB7XG4gICAgd2Vla1llYXIgPSB5ZWFyIC0gMTtcbiAgICB3ZWVrTnVtYmVyID0gd2Vla3NJbldlZWtZZWFyKHdlZWtZZWFyKTtcbiAgfSBlbHNlIGlmICh3ZWVrTnVtYmVyID4gd2Vla3NJbldlZWtZZWFyKHllYXIpKSB7XG4gICAgd2Vla1llYXIgPSB5ZWFyICsgMTtcbiAgICB3ZWVrTnVtYmVyID0gMTtcbiAgfSBlbHNlIHtcbiAgICB3ZWVrWWVhciA9IHllYXI7XG4gIH1cblxuICByZXR1cm4geyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSwgLi4udGltZU9iamVjdChncmVnT2JqKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla1RvR3JlZ29yaWFuKHdlZWtEYXRhKSB7XG4gIGNvbnN0IHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXkgfSA9IHdlZWtEYXRhLFxuICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLFxuICAgIHllYXJJbkRheXMgPSBkYXlzSW5ZZWFyKHdlZWtZZWFyKTtcblxuICBsZXQgb3JkaW5hbCA9IHdlZWtOdW1iZXIgKiA3ICsgd2Vla2RheSAtIHdlZWtkYXlPZkphbjQgLSAzLFxuICAgIHllYXI7XG5cbiAgaWYgKG9yZGluYWwgPCAxKSB7XG4gICAgeWVhciA9IHdlZWtZZWFyIC0gMTtcbiAgICBvcmRpbmFsICs9IGRheXNJblllYXIoeWVhcik7XG4gIH0gZWxzZSBpZiAob3JkaW5hbCA+IHllYXJJbkRheXMpIHtcbiAgICB5ZWFyID0gd2Vla1llYXIgKyAxO1xuICAgIG9yZGluYWwgLT0gZGF5c0luWWVhcih3ZWVrWWVhcik7XG4gIH0gZWxzZSB7XG4gICAgeWVhciA9IHdlZWtZZWFyO1xuICB9XG5cbiAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpO1xuICByZXR1cm4geyB5ZWFyLCBtb250aCwgZGF5LCAuLi50aW1lT2JqZWN0KHdlZWtEYXRhKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JlZ29yaWFuVG9PcmRpbmFsKGdyZWdEYXRhKSB7XG4gIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7XG4gIGNvbnN0IG9yZGluYWwgPSBjb21wdXRlT3JkaW5hbCh5ZWFyLCBtb250aCwgZGF5KTtcbiAgcmV0dXJuIHsgeWVhciwgb3JkaW5hbCwgLi4udGltZU9iamVjdChncmVnRGF0YSkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9yZGluYWxUb0dyZWdvcmlhbihvcmRpbmFsRGF0YSkge1xuICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhO1xuICBjb25zdCB7IG1vbnRoLCBkYXkgfSA9IHVuY29tcHV0ZU9yZGluYWwoeWVhciwgb3JkaW5hbCk7XG4gIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qob3JkaW5hbERhdGEpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnZhbGlkV2Vla0RhdGEob2JqKSB7XG4gIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLFxuICAgIHZhbGlkV2VlayA9IGludGVnZXJCZXR3ZWVuKG9iai53ZWVrTnVtYmVyLCAxLCB3ZWVrc0luV2Vla1llYXIob2JqLndlZWtZZWFyKSksXG4gICAgdmFsaWRXZWVrZGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLndlZWtkYXksIDEsIDcpO1xuXG4gIGlmICghdmFsaWRZZWFyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwid2Vla1llYXJcIiwgb2JqLndlZWtZZWFyKTtcbiAgfSBlbHNlIGlmICghdmFsaWRXZWVrKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwid2Vla1wiLCBvYmoud2Vlayk7XG4gIH0gZWxzZSBpZiAoIXZhbGlkV2Vla2RheSkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIndlZWtkYXlcIiwgb2JqLndlZWtkYXkpO1xuICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW52YWxpZE9yZGluYWxEYXRhKG9iaikge1xuICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLFxuICAgIHZhbGlkT3JkaW5hbCA9IGludGVnZXJCZXR3ZWVuKG9iai5vcmRpbmFsLCAxLCBkYXlzSW5ZZWFyKG9iai55ZWFyKSk7XG5cbiAgaWYgKCF2YWxpZFllYXIpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ5ZWFyXCIsIG9iai55ZWFyKTtcbiAgfSBlbHNlIGlmICghdmFsaWRPcmRpbmFsKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwib3JkaW5hbFwiLCBvYmoub3JkaW5hbCk7XG4gIH0gZWxzZSByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YShvYmopIHtcbiAgY29uc3QgdmFsaWRZZWFyID0gaXNJbnRlZ2VyKG9iai55ZWFyKSxcbiAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksXG4gICAgdmFsaWREYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmouZGF5LCAxLCBkYXlzSW5Nb250aChvYmoueWVhciwgb2JqLm1vbnRoKSk7XG5cbiAgaWYgKCF2YWxpZFllYXIpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ5ZWFyXCIsIG9iai55ZWFyKTtcbiAgfSBlbHNlIGlmICghdmFsaWRNb250aCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm1vbnRoXCIsIG9iai5tb250aCk7XG4gIH0gZWxzZSBpZiAoIXZhbGlkRGF5KSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwiZGF5XCIsIG9iai5kYXkpO1xuICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW52YWxpZFRpbWVEYXRhKG9iaikge1xuICBjb25zdCB7IGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCB9ID0gb2JqO1xuICBjb25zdCB2YWxpZEhvdXIgPVxuICAgICAgaW50ZWdlckJldHdlZW4oaG91ciwgMCwgMjMpIHx8XG4gICAgICAoaG91ciA9PT0gMjQgJiYgbWludXRlID09PSAwICYmIHNlY29uZCA9PT0gMCAmJiBtaWxsaXNlY29uZCA9PT0gMCksXG4gICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSxcbiAgICB2YWxpZFNlY29uZCA9IGludGVnZXJCZXR3ZWVuKHNlY29uZCwgMCwgNTkpLFxuICAgIHZhbGlkTWlsbGlzZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihtaWxsaXNlY29uZCwgMCwgOTk5KTtcblxuICBpZiAoIXZhbGlkSG91cikge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcImhvdXJcIiwgaG91cik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkTWludXRlKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwibWludXRlXCIsIG1pbnV0ZSk7XG4gIH0gZWxzZSBpZiAoIXZhbGlkU2Vjb25kKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwic2Vjb25kXCIsIHNlY29uZCk7XG4gIH0gZWxzZSBpZiAoIXZhbGlkTWlsbGlzZWNvbmQpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJtaWxsaXNlY29uZFwiLCBtaWxsaXNlY29uZCk7XG4gIH0gZWxzZSByZXR1cm4gZmFsc2U7XG59XG4iLCAiaW1wb3J0IER1cmF0aW9uIGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5pbXBvcnQgSW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IEluZm8gZnJvbSBcIi4vaW5mby5qc1wiO1xuaW1wb3J0IEZvcm1hdHRlciBmcm9tIFwiLi9pbXBsL2Zvcm1hdHRlci5qc1wiO1xuaW1wb3J0IEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIFwiLi96b25lcy9maXhlZE9mZnNldFpvbmUuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcbmltcG9ydCB7XG4gIGlzVW5kZWZpbmVkLFxuICBtYXliZUFycmF5LFxuICBpc0RhdGUsXG4gIGlzTnVtYmVyLFxuICBiZXN0QnksXG4gIGRheXNJbk1vbnRoLFxuICBkYXlzSW5ZZWFyLFxuICBpc0xlYXBZZWFyLFxuICB3ZWVrc0luV2Vla1llYXIsXG4gIG5vcm1hbGl6ZU9iamVjdCxcbiAgcm91bmRUbyxcbiAgb2JqVG9Mb2NhbFRTLFxuICBwYWRTdGFydCxcbn0gZnJvbSBcIi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVab25lIH0gZnJvbSBcIi4vaW1wbC96b25lVXRpbC5qc1wiO1xuaW1wb3J0IGRpZmYgZnJvbSBcIi4vaW1wbC9kaWZmLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVJGQzI4MjJEYXRlLCBwYXJzZUlTT0RhdGUsIHBhcnNlSFRUUERhdGUsIHBhcnNlU1FMIH0gZnJvbSBcIi4vaW1wbC9yZWdleFBhcnNlci5qc1wiO1xuaW1wb3J0IHtcbiAgcGFyc2VGcm9tVG9rZW5zLFxuICBleHBsYWluRnJvbVRva2VucyxcbiAgZm9ybWF0T3B0c1RvVG9rZW5zLFxuICBleHBhbmRNYWNyb1Rva2Vucyxcbn0gZnJvbSBcIi4vaW1wbC90b2tlblBhcnNlci5qc1wiO1xuaW1wb3J0IHtcbiAgZ3JlZ29yaWFuVG9XZWVrLFxuICB3ZWVrVG9HcmVnb3JpYW4sXG4gIGdyZWdvcmlhblRvT3JkaW5hbCxcbiAgb3JkaW5hbFRvR3JlZ29yaWFuLFxuICBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YSxcbiAgaGFzSW52YWxpZFdlZWtEYXRhLFxuICBoYXNJbnZhbGlkT3JkaW5hbERhdGEsXG4gIGhhc0ludmFsaWRUaW1lRGF0YSxcbn0gZnJvbSBcIi4vaW1wbC9jb252ZXJzaW9ucy5qc1wiO1xuaW1wb3J0ICogYXMgRm9ybWF0cyBmcm9tIFwiLi9pbXBsL2Zvcm1hdHMuanNcIjtcbmltcG9ydCB7XG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcixcbiAgSW52YWxpZFVuaXRFcnJvcixcbiAgSW52YWxpZERhdGVUaW1lRXJyb3IsXG59IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0IEludmFsaWQgZnJvbSBcIi4vaW1wbC9pbnZhbGlkLmpzXCI7XG5cbmNvbnN0IElOVkFMSUQgPSBcIkludmFsaWQgRGF0ZVRpbWVcIjtcbmNvbnN0IE1BWF9EQVRFID0gOC42NGUxNTtcblxuZnVuY3Rpb24gdW5zdXBwb3J0ZWRab25lKHpvbmUpIHtcbiAgcmV0dXJuIG5ldyBJbnZhbGlkKFwidW5zdXBwb3J0ZWQgem9uZVwiLCBgdGhlIHpvbmUgXCIke3pvbmUubmFtZX1cIiBpcyBub3Qgc3VwcG9ydGVkYCk7XG59XG5cbi8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlXG5mdW5jdGlvbiBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKGR0KSB7XG4gIGlmIChkdC53ZWVrRGF0YSA9PT0gbnVsbCkge1xuICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpO1xuICB9XG4gIHJldHVybiBkdC53ZWVrRGF0YTtcbn1cblxuLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCBcIm1ha2UgYSBuZXcgb2JqZWN0IHdpdGggdGhlc2UgbW9kaWZpY2F0aW9uc1wiLiBhbGwgXCJzZXR0ZXJzXCIgcmVhbGx5IHVzZSB0aGlzXG4vLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllc1xuZnVuY3Rpb24gY2xvbmUoaW5zdCwgYWx0cykge1xuICBjb25zdCBjdXJyZW50ID0ge1xuICAgIHRzOiBpbnN0LnRzLFxuICAgIHpvbmU6IGluc3Quem9uZSxcbiAgICBjOiBpbnN0LmMsXG4gICAgbzogaW5zdC5vLFxuICAgIGxvYzogaW5zdC5sb2MsXG4gICAgaW52YWxpZDogaW5zdC5pbnZhbGlkLFxuICB9O1xuICByZXR1cm4gbmV3IERhdGVUaW1lKHsgLi4uY3VycmVudCwgLi4uYWx0cywgb2xkOiBjdXJyZW50IH0pO1xufVxuXG4vLyBmaW5kIHRoZSByaWdodCBvZmZzZXQgYSBnaXZlbiBsb2NhbCB0aW1lLiBUaGUgbyBpbnB1dCBpcyBvdXIgZ3Vlc3MsIHdoaWNoIGRldGVybWluZXMgd2hpY2hcbi8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpXG5mdW5jdGlvbiBmaXhPZmZzZXQobG9jYWxUUywgbywgdHopIHtcbiAgLy8gT3VyIFVUQyB0aW1lIGlzIGp1c3QgYSBndWVzcyBiZWNhdXNlIG91ciBvZmZzZXQgaXMganVzdCBhIGd1ZXNzXG4gIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwO1xuXG4gIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHNcbiAgY29uc3QgbzIgPSB0ei5vZmZzZXQodXRjR3Vlc3MpO1xuXG4gIC8vIElmIHNvLCBvZmZzZXQgZGlkbid0IGNoYW5nZSBhbmQgd2UncmUgZG9uZVxuICBpZiAobyA9PT0gbzIpIHtcbiAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTtcbiAgfVxuXG4gIC8vIElmIG5vdCwgY2hhbmdlIHRoZSB0cyBieSB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgb2Zmc2V0XG4gIHV0Y0d1ZXNzIC09IChvMiAtIG8pICogNjAgKiAxMDAwO1xuXG4gIC8vIElmIHRoYXQgZ2l2ZXMgdXMgdGhlIGxvY2FsIHRpbWUgd2Ugd2FudCwgd2UncmUgZG9uZVxuICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7XG4gIGlmIChvMiA9PT0gbzMpIHtcbiAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvMl07XG4gIH1cblxuICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lXG4gIHJldHVybiBbbG9jYWxUUyAtIE1hdGgubWluKG8yLCBvMykgKiA2MCAqIDEwMDAsIE1hdGgubWF4KG8yLCBvMyldO1xufVxuXG4vLyBjb252ZXJ0IGFuIGVwb2NoIHRpbWVzdGFtcCBpbnRvIGEgY2FsZW5kYXIgb2JqZWN0IHdpdGggdGhlIGdpdmVuIG9mZnNldFxuZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7XG4gIHRzICs9IG9mZnNldCAqIDYwICogMTAwMDtcblxuICBjb25zdCBkID0gbmV3IERhdGUodHMpO1xuXG4gIHJldHVybiB7XG4gICAgeWVhcjogZC5nZXRVVENGdWxsWWVhcigpLFxuICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLFxuICAgIGRheTogZC5nZXRVVENEYXRlKCksXG4gICAgaG91cjogZC5nZXRVVENIb3VycygpLFxuICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksXG4gICAgc2Vjb25kOiBkLmdldFVUQ1NlY29uZHMoKSxcbiAgICBtaWxsaXNlY29uZDogZC5nZXRVVENNaWxsaXNlY29uZHMoKSxcbiAgfTtcbn1cblxuLy8gY29udmVydCBhIGNhbGVuZGFyIG9iamVjdCB0byBhIGVwb2NoIHRpbWVzdGFtcFxuZnVuY3Rpb24gb2JqVG9UUyhvYmosIG9mZnNldCwgem9uZSkge1xuICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpO1xufVxuXG4vLyBjcmVhdGUgYSBuZXcgRFQgaW5zdGFuY2UgYnkgYWRkaW5nIGEgZHVyYXRpb24sIGFkanVzdGluZyBmb3IgRFNUc1xuZnVuY3Rpb24gYWRqdXN0VGltZShpbnN0LCBkdXIpIHtcbiAgY29uc3Qgb1ByZSA9IGluc3QubyxcbiAgICB5ZWFyID0gaW5zdC5jLnllYXIgKyBNYXRoLnRydW5jKGR1ci55ZWFycyksXG4gICAgbW9udGggPSBpbnN0LmMubW9udGggKyBNYXRoLnRydW5jKGR1ci5tb250aHMpICsgTWF0aC50cnVuYyhkdXIucXVhcnRlcnMpICogMyxcbiAgICBjID0ge1xuICAgICAgLi4uaW5zdC5jLFxuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF5OlxuICAgICAgICBNYXRoLm1pbihpbnN0LmMuZGF5LCBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkpICtcbiAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgK1xuICAgICAgICBNYXRoLnRydW5jKGR1ci53ZWVrcykgKiA3LFxuICAgIH0sXG4gICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtcbiAgICAgIHllYXJzOiBkdXIueWVhcnMgLSBNYXRoLnRydW5jKGR1ci55ZWFycyksXG4gICAgICBxdWFydGVyczogZHVyLnF1YXJ0ZXJzIC0gTWF0aC50cnVuYyhkdXIucXVhcnRlcnMpLFxuICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSxcbiAgICAgIHdlZWtzOiBkdXIud2Vla3MgLSBNYXRoLnRydW5jKGR1ci53ZWVrcyksXG4gICAgICBkYXlzOiBkdXIuZGF5cyAtIE1hdGgudHJ1bmMoZHVyLmRheXMpLFxuICAgICAgaG91cnM6IGR1ci5ob3VycyxcbiAgICAgIG1pbnV0ZXM6IGR1ci5taW51dGVzLFxuICAgICAgc2Vjb25kczogZHVyLnNlY29uZHMsXG4gICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsXG4gICAgfSkuYXMoXCJtaWxsaXNlY29uZHNcIiksXG4gICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTtcblxuICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpO1xuXG4gIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkge1xuICAgIHRzICs9IG1pbGxpc1RvQWRkO1xuICAgIC8vIHRoYXQgY291bGQgaGF2ZSBjaGFuZ2VkIHRoZSBvZmZzZXQgYnkgZ29pbmcgb3ZlciBhIERTVCwgYnV0IHdlIHdhbnQgdG8ga2VlcCB0aGUgdHMgdGhlIHNhbWVcbiAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7XG4gIH1cblxuICByZXR1cm4geyB0cywgbyB9O1xufVxuXG4vLyBoZWxwZXIgdXNlZnVsIGluIHR1cm5pbmcgdGhlIHJlc3VsdHMgb2YgcGFyc2luZyBpbnRvIHJlYWwgZGF0ZXNcbi8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnNcbmZ1bmN0aW9uIHBhcnNlRGF0YVRvRGF0ZVRpbWUocGFyc2VkLCBwYXJzZWRab25lLCBvcHRzLCBmb3JtYXQsIHRleHQsIHNwZWNpZmljT2Zmc2V0KSB7XG4gIGNvbnN0IHsgc2V0Wm9uZSwgem9uZSB9ID0gb3B0cztcbiAgaWYgKHBhcnNlZCAmJiBPYmplY3Qua2V5cyhwYXJzZWQpLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGludGVycHJldGF0aW9uWm9uZSA9IHBhcnNlZFpvbmUgfHwgem9uZSxcbiAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICB6b25lOiBpbnRlcnByZXRhdGlvblpvbmUsXG4gICAgICAgIHNwZWNpZmljT2Zmc2V0LFxuICAgICAgfSk7XG4gICAgcmV0dXJuIHNldFpvbmUgPyBpbnN0IDogaW5zdC5zZXRab25lKHpvbmUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFxuICAgICAgbmV3IEludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzICR7Zm9ybWF0fWApXG4gICAgKTtcbiAgfVxufVxuXG4vLyBpZiB5b3Ugd2FudCB0byBvdXRwdXQgYSB0ZWNobmljYWwgZm9ybWF0IChlLmcuIFJGQyAyODIyKSwgdGhpcyBoZWxwZXJcbi8vIGhlbHBzIGhhbmRsZSB0aGUgZGV0YWlsc1xuZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHtcbiAgcmV0dXJuIGR0LmlzVmFsaWRcbiAgICA/IEZvcm1hdHRlci5jcmVhdGUoTG9jYWxlLmNyZWF0ZShcImVuLVVTXCIpLCB7XG4gICAgICAgIGFsbG93WixcbiAgICAgICAgZm9yY2VTaW1wbGU6IHRydWUsXG4gICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdClcbiAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHRvSVNPRGF0ZShvLCBleHRlbmRlZCkge1xuICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDtcbiAgbGV0IGMgPSBcIlwiO1xuICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9IFwiK1wiO1xuICBjICs9IHBhZFN0YXJ0KG8uYy55ZWFyLCBsb25nRm9ybWF0ID8gNiA6IDQpO1xuXG4gIGlmIChleHRlbmRlZCkge1xuICAgIGMgKz0gXCItXCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpO1xuICAgIGMgKz0gXCItXCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMuZGF5KTtcbiAgfSBlbHNlIHtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7XG4gICAgYyArPSBwYWRTdGFydChvLmMuZGF5KTtcbiAgfVxuICByZXR1cm4gYztcbn1cblxuZnVuY3Rpb24gdG9JU09UaW1lKFxuICBvLFxuICBleHRlbmRlZCxcbiAgc3VwcHJlc3NTZWNvbmRzLFxuICBzdXBwcmVzc01pbGxpc2Vjb25kcyxcbiAgaW5jbHVkZU9mZnNldCxcbiAgZXh0ZW5kZWRab25lXG4pIHtcbiAgbGV0IGMgPSBwYWRTdGFydChvLmMuaG91cik7XG4gIGlmIChleHRlbmRlZCkge1xuICAgIGMgKz0gXCI6XCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMubWludXRlKTtcbiAgICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7XG4gICAgICBjICs9IFwiOlwiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpO1xuICB9XG5cbiAgaWYgKG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7XG5cbiAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykge1xuICAgICAgYyArPSBcIi5cIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5jbHVkZU9mZnNldCkge1xuICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkge1xuICAgICAgYyArPSBcIlpcIjtcbiAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHtcbiAgICAgIGMgKz0gXCItXCI7XG4gICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7XG4gICAgICBjICs9IFwiOlwiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjICs9IFwiK1wiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKG8ubyAvIDYwKSk7XG4gICAgICBjICs9IFwiOlwiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKG8ubyAlIDYwKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4dGVuZGVkWm9uZSkge1xuICAgIGMgKz0gXCJbXCIgKyBvLnpvbmUuaWFuYU5hbWUgKyBcIl1cIjtcbiAgfVxuICByZXR1cm4gYztcbn1cblxuLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzXG5jb25zdCBkZWZhdWx0VW5pdFZhbHVlcyA9IHtcbiAgICBtb250aDogMSxcbiAgICBkYXk6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9LFxuICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7XG4gICAgd2Vla051bWJlcjogMSxcbiAgICB3ZWVrZGF5OiAxLFxuICAgIGhvdXI6IDAsXG4gICAgbWludXRlOiAwLFxuICAgIHNlY29uZDogMCxcbiAgICBtaWxsaXNlY29uZDogMCxcbiAgfSxcbiAgZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzID0ge1xuICAgIG9yZGluYWw6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9O1xuXG4vLyBVbml0cyBpbiB0aGUgc3VwcG9ydGVkIGNhbGVuZGFycywgc29ydGVkIGJ5IGJpZ25lc3NcbmNvbnN0IG9yZGVyZWRVbml0cyA9IFtcInllYXJcIiwgXCJtb250aFwiLCBcImRheVwiLCBcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIiwgXCJtaWxsaXNlY29uZFwiXSxcbiAgb3JkZXJlZFdlZWtVbml0cyA9IFtcbiAgICBcIndlZWtZZWFyXCIsXG4gICAgXCJ3ZWVrTnVtYmVyXCIsXG4gICAgXCJ3ZWVrZGF5XCIsXG4gICAgXCJob3VyXCIsXG4gICAgXCJtaW51dGVcIixcbiAgICBcInNlY29uZFwiLFxuICAgIFwibWlsbGlzZWNvbmRcIixcbiAgXSxcbiAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFtcInllYXJcIiwgXCJvcmRpbmFsXCIsIFwiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdO1xuXG4vLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXQodW5pdCkge1xuICBjb25zdCBub3JtYWxpemVkID0ge1xuICAgIHllYXI6IFwieWVhclwiLFxuICAgIHllYXJzOiBcInllYXJcIixcbiAgICBtb250aDogXCJtb250aFwiLFxuICAgIG1vbnRoczogXCJtb250aFwiLFxuICAgIGRheTogXCJkYXlcIixcbiAgICBkYXlzOiBcImRheVwiLFxuICAgIGhvdXI6IFwiaG91clwiLFxuICAgIGhvdXJzOiBcImhvdXJcIixcbiAgICBtaW51dGU6IFwibWludXRlXCIsXG4gICAgbWludXRlczogXCJtaW51dGVcIixcbiAgICBxdWFydGVyOiBcInF1YXJ0ZXJcIixcbiAgICBxdWFydGVyczogXCJxdWFydGVyXCIsXG4gICAgc2Vjb25kOiBcInNlY29uZFwiLFxuICAgIHNlY29uZHM6IFwic2Vjb25kXCIsXG4gICAgbWlsbGlzZWNvbmQ6IFwibWlsbGlzZWNvbmRcIixcbiAgICBtaWxsaXNlY29uZHM6IFwibWlsbGlzZWNvbmRcIixcbiAgICB3ZWVrZGF5OiBcIndlZWtkYXlcIixcbiAgICB3ZWVrZGF5czogXCJ3ZWVrZGF5XCIsXG4gICAgd2Vla251bWJlcjogXCJ3ZWVrTnVtYmVyXCIsXG4gICAgd2Vla3NudW1iZXI6IFwid2Vla051bWJlclwiLFxuICAgIHdlZWtudW1iZXJzOiBcIndlZWtOdW1iZXJcIixcbiAgICB3ZWVreWVhcjogXCJ3ZWVrWWVhclwiLFxuICAgIHdlZWt5ZWFyczogXCJ3ZWVrWWVhclwiLFxuICAgIG9yZGluYWw6IFwib3JkaW5hbFwiLFxuICB9W3VuaXQudG9Mb3dlckNhc2UoKV07XG5cbiAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTtcblxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLy8gdGhpcyBpcyBhIGR1bWJlZCBkb3duIHZlcnNpb24gb2YgZnJvbU9iamVjdCgpIHRoYXQgcnVucyBhYm91dCA2MCUgZmFzdGVyXG4vLyBidXQgZG9lc24ndCBkbyBhbnkgdmFsaWRhdGlvbiwgbWFrZXMgYSBidW5jaCBvZiBhc3N1bXB0aW9ucyBhYm91dCB3aGF0IHVuaXRzXG4vLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLlxuZnVuY3Rpb24gcXVpY2tEVChvYmosIG9wdHMpIHtcbiAgY29uc3Qgem9uZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksXG4gICAgdHNOb3cgPSBTZXR0aW5ncy5ub3coKTtcblxuICBsZXQgdHMsIG87XG5cbiAgLy8gYXNzdW1lIHdlIGhhdmUgdGhlIGhpZ2hlci1vcmRlciB1bml0c1xuICBpZiAoIWlzVW5kZWZpbmVkKG9iai55ZWFyKSkge1xuICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmIChpc1VuZGVmaW5lZChvYmpbdV0pKSB7XG4gICAgICAgIG9ialt1XSA9IGRlZmF1bHRVbml0VmFsdWVzW3VdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YShvYmopIHx8IGhhc0ludmFsaWRUaW1lRGF0YShvYmopO1xuICAgIGlmIChpbnZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXRQcm92aXMgPSB6b25lLm9mZnNldCh0c05vdyk7XG4gICAgW3RzLCBvXSA9IG9ialRvVFMob2JqLCBvZmZzZXRQcm92aXMsIHpvbmUpO1xuICB9IGVsc2Uge1xuICAgIHRzID0gdHNOb3c7XG4gIH1cblxuICByZXR1cm4gbmV3IERhdGVUaW1lKHsgdHMsIHpvbmUsIGxvYywgbyB9KTtcbn1cblxuZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHtcbiAgY29uc3Qgcm91bmQgPSBpc1VuZGVmaW5lZChvcHRzLnJvdW5kKSA/IHRydWUgOiBvcHRzLnJvdW5kLFxuICAgIGZvcm1hdCA9IChjLCB1bml0KSA9PiB7XG4gICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlciA9IGVuZC5sb2MuY2xvbmUob3B0cykucmVsRm9ybWF0dGVyKG9wdHMpO1xuICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQoYywgdW5pdCk7XG4gICAgfSxcbiAgICBkaWZmZXIgPSAodW5pdCkgPT4ge1xuICAgICAgaWYgKG9wdHMuY2FsZW5kYXJ5KSB7XG4gICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7XG4gICAgICAgICAgcmV0dXJuIGVuZC5zdGFydE9mKHVuaXQpLmRpZmYoc3RhcnQuc3RhcnRPZih1bml0KSwgdW5pdCkuZ2V0KHVuaXQpO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZW5kLmRpZmYoc3RhcnQsIHVuaXQpLmdldCh1bml0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGlmIChvcHRzLnVuaXQpIHtcbiAgICByZXR1cm4gZm9ybWF0KGRpZmZlcihvcHRzLnVuaXQpLCBvcHRzLnVuaXQpO1xuICB9XG5cbiAgZm9yIChjb25zdCB1bml0IG9mIG9wdHMudW5pdHMpIHtcbiAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTtcbiAgICBpZiAoTWF0aC5hYnMoY291bnQpID49IDEpIHtcbiAgICAgIHJldHVybiBmb3JtYXQoY291bnQsIHVuaXQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybWF0KHN0YXJ0ID4gZW5kID8gLTAgOiAwLCBvcHRzLnVuaXRzW29wdHMudW5pdHMubGVuZ3RoIC0gMV0pO1xufVxuXG5mdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7XG4gIGxldCBvcHRzID0ge30sXG4gICAgYXJncztcbiAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSBcIm9iamVjdFwiKSB7XG4gICAgb3B0cyA9IGFyZ0xpc3RbYXJnTGlzdC5sZW5ndGggLSAxXTtcbiAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3MgPSBBcnJheS5mcm9tKGFyZ0xpc3QpO1xuICB9XG4gIHJldHVybiBbb3B0cywgYXJnc107XG59XG5cbi8qKlxuICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLlxuICpcbiAqIEEgRGF0ZVRpbWUgY29tcHJpc2VzIG9mOlxuICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC5cbiAqICogQSB0aW1lIHpvbmUuIEVhY2ggaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBpbiB0aGUgY29udGV4dCBvZiBhIHNwZWNpZmljIHpvbmUgKGJ5IGRlZmF1bHQgdGhlIGxvY2FsIHN5c3RlbSdzIHpvbmUpLlxuICogKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBlZmZlY3QgaG93IG91dHB1dCBzdHJpbmdzIGFyZSBmb3JtYXR0ZWQsIHN1Y2ggYXMgYGxvY2FsZWAsIGBudW1iZXJpbmdTeXN0ZW1gLCBhbmQgYG91dHB1dENhbGVuZGFyYC5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmdW5jdGlvbmFsaXR5IGl0IHByb3ZpZGVzOlxuICpcbiAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS5cbiAqICogKipHcmVnb3JpYW4gY2FsZW5kYXIgYW5kIHRpbWUqKjogVG8gZXhhbWluZSB0aGUgR3JlZ29yaWFuIHByb3BlcnRpZXMgb2YgYSBEYXRlVGltZSBpbmRpdmlkdWFsbHkgKGkuZSBhcyBvcHBvc2VkIHRvIGNvbGxlY3RpdmVseSB0aHJvdWdoIHtAbGluayBEYXRlVGltZSN0b09iamVjdH0pLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN5ZWFyfSwge0BsaW5rIERhdGVUaW1lI21vbnRofSxcbiAqIHtAbGluayBEYXRlVGltZSNkYXl9LCB7QGxpbmsgRGF0ZVRpbWUjaG91cn0sIHtAbGluayBEYXRlVGltZSNtaW51dGV9LCB7QGxpbmsgRGF0ZVRpbWUjc2Vjb25kfSwge0BsaW5rIERhdGVUaW1lI21pbGxpc2Vjb25kfSBhY2Nlc3NvcnMuXG4gKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLlxuICogKiAqKkNvbmZpZ3VyYXRpb24qKiBTZWUgdGhlIHtAbGluayBEYXRlVGltZSNsb2NhbGV9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjbnVtYmVyaW5nU3lzdGVtfSBhY2Nlc3NvcnMuXG4gKiAqICoqVHJhbnNmb3JtYXRpb24qKjogVG8gdHJhbnNmb3JtIHRoZSBEYXRlVGltZSBpbnRvIG90aGVyIERhdGVUaW1lcywgdXNlIHtAbGluayBEYXRlVGltZSNzZXR9LCB7QGxpbmsgRGF0ZVRpbWUjcmVjb25maWd1cmV9LCB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0sIHtAbGluayBEYXRlVGltZSNzZXRMb2NhbGV9LCB7QGxpbmsgRGF0ZVRpbWUucGx1c30sIHtAbGluayBEYXRlVGltZSNtaW51c30sIHtAbGluayBEYXRlVGltZSNlbmRPZn0sIHtAbGluayBEYXRlVGltZSNzdGFydE9mfSwge0BsaW5rIERhdGVUaW1lI3RvVVRDfSwgYW5kIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfS5cbiAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uXG4gKlxuICogVGhlcmUncyBwbGVudHkgb3RoZXJzIGRvY3VtZW50ZWQgYmVsb3cuIEluIGFkZGl0aW9uLCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdWJ0bGVyIHRvcGljcyBsaWtlIGludGVybmF0aW9uYWxpemF0aW9uLCB0aW1lIHpvbmVzLCBhbHRlcm5hdGl2ZSBjYWxlbmRhcnMsIHZhbGlkaXR5LCBhbmQgc28gb24sIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0ZVRpbWUge1xuICAvKipcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7XG5cbiAgICBsZXQgaW52YWxpZCA9XG4gICAgICBjb25maWcuaW52YWxpZCB8fFxuICAgICAgKE51bWJlci5pc05hTihjb25maWcudHMpID8gbmV3IEludmFsaWQoXCJpbnZhbGlkIGlucHV0XCIpIDogbnVsbCkgfHxcbiAgICAgICghem9uZS5pc1ZhbGlkID8gdW5zdXBwb3J0ZWRab25lKHpvbmUpIDogbnVsbCk7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy50cyA9IGlzVW5kZWZpbmVkKGNvbmZpZy50cykgPyBTZXR0aW5ncy5ub3coKSA6IGNvbmZpZy50cztcblxuICAgIGxldCBjID0gbnVsbCxcbiAgICAgIG8gPSBudWxsO1xuICAgIGlmICghaW52YWxpZCkge1xuICAgICAgY29uc3QgdW5jaGFuZ2VkID0gY29uZmlnLm9sZCAmJiBjb25maWcub2xkLnRzID09PSB0aGlzLnRzICYmIGNvbmZpZy5vbGQuem9uZS5lcXVhbHMoem9uZSk7XG5cbiAgICAgIGlmICh1bmNoYW5nZWQpIHtcbiAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG90ID0gem9uZS5vZmZzZXQodGhpcy50cyk7XG4gICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTtcbiAgICAgICAgaW52YWxpZCA9IE51bWJlci5pc05hTihjLnllYXIpID8gbmV3IEludmFsaWQoXCJpbnZhbGlkIGlucHV0XCIpIDogbnVsbDtcbiAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYztcbiAgICAgICAgbyA9IGludmFsaWQgPyBudWxsIDogb3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5fem9uZSA9IHpvbmU7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5sb2MgPSBjb25maWcubG9jIHx8IExvY2FsZS5jcmVhdGUoKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmludmFsaWQgPSBpbnZhbGlkO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMud2Vla0RhdGEgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuYyA9IGM7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5vID0gbztcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7XG4gIH1cblxuICAvLyBDT05TVFJVQ1RcblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZm9yIHRoZSBjdXJyZW50IGluc3RhbnQsIGluIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuXG4gICAqXG4gICAqIFVzZSBTZXR0aW5ncyB0byBvdmVycmlkZSB0aGVzZSBkZWZhdWx0IHZhbHVlcyBpZiBuZWVkZWQuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKCkgLy9+PiBub3cgaW4gdGhlIElTTyBmb3JtYXRcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgbm93KCkge1xuICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxvY2FsIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF5PTFdIC0gVGhlIGRheSBvZiB0aGUgbW9udGgsIDEtaW5kZXhlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttaW51dGU9MF0gLSBUaGUgbWludXRlIG9mIHRoZSBob3VyLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzZWNvbmQ9MF0gLSBUaGUgc2Vjb25kIG9mIHRoZSBtaW51dGUsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vd1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCh7IHpvbmU6IFwiQW1lcmljYS9OZXdfWW9ya1wiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0wMVQwMDowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6IFwiZnJcIiB9KSAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwLCB3aXRoIGEgRnJlbmNoIGxvY2FsZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSkgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiBcInV0Y1wiIH0pICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwLCBpbiBVVENcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1KSAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MDBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCwgNzY1KSAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAuNzY1XG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGxvY2FsKCkge1xuICAgIGNvbnN0IFtvcHRzLCBhcmdzXSA9IGxhc3RPcHRzKGFyZ3VtZW50cyksXG4gICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7XG4gICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYHV0YygpYCB3aXRoIG5vIGFyZ3VtZW50cyksIHRoZSBjdXJyZW50IHRpbWUgd2lsbCBiZSB1c2VkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbaG91cj0wXSAtIFRoZSBob3VyIG9mIHRoZSBkYXksIGluIDI0LWhvdXIgdGltZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbnV0ZT0wXSAtIFRoZSBtaW51dGUgb2YgdGhlIGhvdXIsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWlsbGlzZWNvbmQ9MF0gLSBUaGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDk5OVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm91dHB1dENhbGVuZGFyXSAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm51bWJlcmluZ1N5c3RlbV0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vd1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0wMVQwMDowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6IFwiZnJcIiB9KSAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MDBaIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6IFwiZnJcIiB9KSAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAuNzY1WiB3aXRoIGEgRnJlbmNoIGxvY2FsZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyB1dGMoKSB7XG4gICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSxcbiAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJncztcblxuICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTtcbiAgICByZXR1cm4gcXVpY2tEVCh7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLlxuICAgKiBAcGFyYW0ge0RhdGV9IGRhdGUgLSBhIEphdmFTY3JpcHQgRGF0ZSBvYmplY3RcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB0cyA9IGlzRGF0ZShkYXRlKSA/IGRhdGUudmFsdWVPZigpIDogTmFOO1xuICAgIGlmIChOdW1iZXIuaXNOYU4odHMpKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcImludmFsaWQgaW5wdXRcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgem9uZVRvVXNlID0gbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICB0czogdHMsXG4gICAgICB6b25lOiB6b25lVG9Vc2UsXG4gICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAobWVhbmluZyBzaW5jZSAxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVENcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbU1pbGxpcyhtaWxsaXNlY29uZHMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgZnJvbU1pbGxpcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCwgYnV0IHJlY2VpdmVkIGEgJHt0eXBlb2YgbWlsbGlzZWNvbmRzfSB3aXRoIHZhbHVlICR7bWlsbGlzZWNvbmRzfWBcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHMgPCAtTUFYX0RBVEUgfHwgbWlsbGlzZWNvbmRzID4gTUFYX0RBVEUpIHtcbiAgICAgIC8vIHRoaXMgaXNuJ3QgcGVyZmVjdCBiZWNhdXNlIGJlY2F1c2Ugd2UgY2FuIHN0aWxsIGVuZCB1cCBvdXQgb2YgcmFuZ2UgYmVjYXVzZSBvZiBhZGRpdGlvbmFsIHNoaWZ0aW5nLCBidXQgaXQncyBhIHN0YXJ0XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcIlRpbWVzdGFtcCBvdXQgb2YgcmFuZ2VcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogbWlsbGlzZWNvbmRzLFxuICAgICAgICB6b25lOiBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpLFxuICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggKG1lYW5pbmcgc2luY2UgMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gc2Vjb25kcyAtIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgMTk3MCBVVENcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVNlY29uZHMoc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc051bWJlcihzZWNvbmRzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwiZnJvbVNlY29uZHMgcmVxdWlyZXMgYSBudW1lcmljYWwgaW5wdXRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogc2Vjb25kcyAqIDEwMDAsXG4gICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGgga2V5cyBsaWtlICd5ZWFyJyBhbmQgJ2hvdXInIHdpdGggcmVhc29uYWJsZSBkZWZhdWx0cy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIHRoZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBEYXRlVGltZSBmcm9tXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubW9udGggLSBhIG1vbnRoLCAxLTEyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5IC0gYSBkYXkgb2YgdGhlIG1vbnRoLCAxLTMxLCBkZXBlbmRpbmcgb24gdGhlIG1vbnRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla1llYXIgLSBhbiBJU08gd2VlayB5ZWFyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla051bWJlciAtIGFuIElTTyB3ZWVrIG51bWJlciwgYmV0d2VlbiAxIGFuZCA1MiBvciA1MywgZGVwZW5kaW5nIG9uIHRoZSB5ZWFyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLmhvdXIgLSBob3VyIG9mIHRoZSBkYXksIDAtMjNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGUgLSBtaW51dGUgb2YgdGhlIGhvdXIsIDAtNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbGxpc2Vjb25kIC0gbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgMC05OTlcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBjcmVhdGluZyB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyOiAxOTgyLCBtb250aDogNSwgZGF5OiAyNX0pLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyOiAxOTgyIH0pLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDEtMDEnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDZcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAndXRjJyB9KSxcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAnbG9jYWwnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB3ZWVrWWVhcjogMjAxNiwgd2Vla051bWJlcjogMiwgd2Vla2RheTogMyB9KS50b0lTT0RhdGUoKSAvLz0+ICcyMDE2LTAxLTEzJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tT2JqZWN0KG9iaiwgb3B0cyA9IHt9KSB7XG4gICAgb2JqID0gb2JqIHx8IHt9O1xuICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7XG4gICAgaWYgKCF6b25lVG9Vc2UuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksXG4gICAgICBvZmZzZXRQcm92aXMgPSAhaXNVbmRlZmluZWQob3B0cy5zcGVjaWZpY09mZnNldClcbiAgICAgICAgPyBvcHRzLnNwZWNpZmljT2Zmc2V0XG4gICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksXG4gICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KG9iaiwgbm9ybWFsaXplVW5pdCksXG4gICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLFxuICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLFxuICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCxcbiAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLFxuICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyk7XG5cbiAgICAvLyBjYXNlczpcbiAgICAvLyBqdXN0IGEgd2Vla2RheSAtPiB0aGlzIHdlZWsncyBpbnN0YW5jZSBvZiB0aGF0IHdlZWtkYXksIG5vIHdvcnJpZXNcbiAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3JcbiAgICAvLyAoZ3JlZ29yaWFuIG1vbnRoIG9yIGRheSkgKyBvcmRpbmFsIC0+IGVycm9yXG4gICAgLy8gb3RoZXJ3aXNlIGp1c3QgdXNlIHdlZWtzIG9yIG9yZGluYWxzIG9yIGdyZWdvcmlhbiwgZGVwZW5kaW5nIG9uIHdoYXQncyBzcGVjaWZpZWRcblxuICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcbiAgICAgICAgXCJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXCJDYW4ndCBtaXggb3JkaW5hbCBkYXRlcyB3aXRoIG1vbnRoL2RheVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VXZWVrRGF0YSA9IGRlZmluaXRlV2Vla0RlZiB8fCAobm9ybWFsaXplZC53ZWVrZGF5ICYmICFjb250YWluc0dyZWdvcik7XG5cbiAgICAvLyBjb25maWd1cmUgb3Vyc2VsdmVzIHRvIGRlYWwgd2l0aCBncmVnb3JpYW4gZGF0ZXMgb3Igd2VlayBzdHVmZlxuICAgIGxldCB1bml0cyxcbiAgICAgIGRlZmF1bHRWYWx1ZXMsXG4gICAgICBvYmpOb3cgPSB0c1RvT2JqKHRzTm93LCBvZmZzZXRQcm92aXMpO1xuICAgIGlmICh1c2VXZWVrRGF0YSkge1xuICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzO1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRXZWVrVW5pdFZhbHVlcztcbiAgICAgIG9iak5vdyA9IGdyZWdvcmlhblRvV2VlayhvYmpOb3cpO1xuICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7XG4gICAgICB1bml0cyA9IG9yZGVyZWRPcmRpbmFsVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzO1xuICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuaXRzID0gb3JkZXJlZFVuaXRzO1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzO1xuICAgIH1cblxuICAgIC8vIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBzdHVmZlxuICAgIGxldCBmb3VuZEZpcnN0ID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7XG4gICAgICBjb25zdCB2ID0gbm9ybWFsaXplZFt1XTtcbiAgICAgIGlmICghaXNVbmRlZmluZWQodikpIHtcbiAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGZvdW5kRmlyc3QpIHtcbiAgICAgICAgbm9ybWFsaXplZFt1XSA9IGRlZmF1bHRWYWx1ZXNbdV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3JtYWxpemVkW3VdID0gb2JqTm93W3VdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlXG4gICAgY29uc3QgaGlnaGVyT3JkZXJJbnZhbGlkID0gdXNlV2Vla0RhdGFcbiAgICAgICAgPyBoYXNJbnZhbGlkV2Vla0RhdGEobm9ybWFsaXplZClcbiAgICAgICAgOiBjb250YWluc09yZGluYWxcbiAgICAgICAgPyBoYXNJbnZhbGlkT3JkaW5hbERhdGEobm9ybWFsaXplZClcbiAgICAgICAgOiBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YShub3JtYWxpemVkKSxcbiAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpO1xuXG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH1cblxuICAgIC8vIGNvbXB1dGUgdGhlIGFjdHVhbCB0aW1lXG4gICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGFcbiAgICAgICAgPyB3ZWVrVG9HcmVnb3JpYW4obm9ybWFsaXplZClcbiAgICAgICAgOiBjb250YWluc09yZGluYWxcbiAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZClcbiAgICAgICAgOiBub3JtYWxpemVkLFxuICAgICAgW3RzRmluYWwsIG9mZnNldEZpbmFsXSA9IG9ialRvVFMoZ3JlZ29yaWFuLCBvZmZzZXRQcm92aXMsIHpvbmVUb1VzZSksXG4gICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHtcbiAgICAgICAgdHM6IHRzRmluYWwsXG4gICAgICAgIHpvbmU6IHpvbmVUb1VzZSxcbiAgICAgICAgbzogb2Zmc2V0RmluYWwsXG4gICAgICAgIGxvYyxcbiAgICAgIH0pO1xuXG4gICAgLy8gZ3JlZ29yaWFuIGRhdGEgKyB3ZWVrZGF5IHNlcnZlcyBvbmx5IHRvIHZhbGlkYXRlXG4gICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcbiAgICAgICAgXCJtaXNtYXRjaGVkIHdlZWtkYXlcIixcbiAgICAgICAgYHlvdSBjYW4ndCBzcGVjaWZ5IGJvdGggYSB3ZWVrZGF5IG9mICR7bm9ybWFsaXplZC53ZWVrZGF5fSBhbmQgYSBkYXRlIG9mICR7aW5zdC50b0lTTygpfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3Q7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBJU08gODYwMSBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmVcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMrMDY6MDAnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMnLCB7em9uZTogJ3V0Yyd9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LVcwNS00JylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7XG4gICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgXCJJU08gODYwMVwiLCB0ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIFJGQyAyODIyIHN0cmluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBSRkMgMjgyMiBzdHJpbmdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSB0aGUgb2Zmc2V0IGlzIGFsd2F5cyBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIHRoaXMgaGFzIG5vIGVmZmVjdCBvbiB0aGUgaW50ZXJwcmV0YXRpb24gb2Ygc3RyaW5nLCBtZXJlbHkgdGhlIHpvbmUgdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpcyBleHByZXNzZWQgaW4uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgZml4ZWQtb2Zmc2V0IHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCBpZiBpdCBzcGVjaWZpZXMgb25lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tUkZDMjgyMignRnJpLCAyNSBOb3YgMjAxNiAxMzoyMzoxMiArMDYwMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMyBaJylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVJGQzI4MjIodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIlJGQyAyODIyXCIsIHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYW4gSFRUUCBoZWFkZXIgZGF0ZVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzMuaHRtbCNzZWMzLjMuMVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgSFRUUCBkYXRlcyBhcmUgYWx3YXlzIGluIFVUQywgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzdHJpbmcsIG1lcmVseSB0aGUgem9uZSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGlzIGV4cHJlc3NlZCBpbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW4sIDA2IE5vdiAxOTk0IDA4OjQ5OjM3IEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW5kYXksIDA2LU5vdi05NCAwODo0OTozNyBHTVQnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VIVFRQRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIkhUVFBcIiwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBpbnB1dCBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmcuXG4gICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIHRoZSBsaW5rIGJlbG93IGZvciB0aGUgZm9ybWF0cylcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCBhIHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCBpZiBpdCBzcGVjaWZpZXMgb25lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUZvcm1hdCh0ZXh0LCBmbXQsIG9wdHMgPSB7fSkge1xuICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLFxuICAgICAgbG9jYWxlVG9Vc2UgPSBMb2NhbGUuZnJvbU9wdHMoe1xuICAgICAgICBsb2NhbGUsXG4gICAgICAgIG51bWJlcmluZ1N5c3RlbSxcbiAgICAgICAgZGVmYXVsdFRvRU46IHRydWUsXG4gICAgICB9KSxcbiAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7XG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBgZm9ybWF0ICR7Zm10fWAsIHRleHQsIHNwZWNpZmljT2Zmc2V0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXQgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdCh0ZXh0LCBmbXQsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWVcbiAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyB6b25lXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgdG8gdGhpcyBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycsIHsgc2V0Wm9uZTogdHJ1ZSB9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzA5OjEyOjM0LjM0MicpXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGZyb21TUUwodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VTUUwodGV4dCk7XG4gICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgXCJTUUxcIiwgdGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IHJlYXNvbiAtIHNpbXBsZSBzdHJpbmcgb2Ygd2h5IHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZC4gU2hvdWxkIG5vdCBjb250YWluIHBhcmFtZXRlcnMgb3IgYW55dGhpbmcgZWxzZSBkYXRhLWRlcGVuZGVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXJlYXNvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEYXRlVGltZSBpcyBpbnZhbGlkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7XG5cbiAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IGludmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlVGltZS4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllc1xuICAgKiBAcGFyYW0ge29iamVjdH0gb1xuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzRGF0ZVRpbWUobykge1xuICAgIHJldHVybiAobyAmJiBvLmlzTHV4b25EYXRlVGltZSkgfHwgZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSBzZXQgb2Ygb3B0aW9uc1xuICAgKiBAcGFyYW0gZm9ybWF0T3B0c1xuICAgKiBAcGFyYW0gbG9jYWxlT3B0c1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIHBhcnNlRm9ybWF0Rm9yT3B0cyhmb3JtYXRPcHRzLCBsb2NhbGVPcHRzID0ge30pIHtcbiAgICBjb25zdCB0b2tlbkxpc3QgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpO1xuICAgIHJldHVybiAhdG9rZW5MaXN0ID8gbnVsbCA6IHRva2VuTGlzdC5tYXAoKHQpID0+ICh0ID8gdC52YWwgOiBudWxsKSkuam9pbihcIlwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSB0aGUgZnVsbHkgZXhwYW5kZWQgZm9ybWF0IHRva2VuIGZvciB0aGUgbG9jYWxlXG4gICAqIERvZXMgTk9UIHF1b3RlIGNoYXJhY3RlcnMsIHNvIHF1b3RlZCB0b2tlbnMgd2lsbCBub3Qgcm91bmQgdHJpcCBjb3JyZWN0bHlcbiAgICogQHBhcmFtIGZtdFxuICAgKiBAcGFyYW0gbG9jYWxlT3B0c1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIGV4cGFuZEZvcm1hdChmbXQsIGxvY2FsZU9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIExvY2FsZS5mcm9tT2JqZWN0KGxvY2FsZU9wdHMpKTtcbiAgICByZXR1cm4gZXhwYW5kZWQubWFwKCh0KSA9PiB0LnZhbCkuam9pbihcIlwiKTtcbiAgfVxuXG4gIC8vIElORk9cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnbW9udGgnKTsgLy89PiA3XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNFxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQodW5pdCkge1xuICAgIHJldHVybiB0aGlzW3VuaXRdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46XG4gICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGZyb20gaW52YWxpZCBjYWxlbmRhciBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgMTN0aCBtb250aCBvciBGZWJydWFyeSAzMFxuICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBieSBhbiBvcGVyYXRpb24gb24gYW5vdGhlciBpbnZhbGlkIGRhdGVcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEYXRlVGltZSBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsb2NhbGUgb2YgYSBEYXRlVGltZSwgc3VjaCAnZW4tR0InLiBUaGUgbG9jYWxlIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGxvY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubG9jYWxlIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG91dHB1dCBjYWxlbmRhciBvZiBhIERhdGVUaW1lLCBzdWNoICdpc2xhbWljJy4gVGhlIG91dHB1dCBjYWxlbmRhciBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWVcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBvdXRwdXRDYWxlbmRhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdGltZSB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIERhdGVUaW1lLlxuICAgKiBAdHlwZSB7Wm9uZX1cbiAgICovXG4gIGdldCB6b25lKCkge1xuICAgIHJldHVybiB0aGlzLl96b25lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmFtZSBvZiB0aGUgdGltZSB6b25lLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHpvbmVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxN1xuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHllYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy55ZWFyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcXVhcnRlclxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkucXVhcnRlciAvLz0+IDJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBxdWFydGVyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmNlaWwodGhpcy5jLm1vbnRoIC8gMykgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCAoMS0xMikuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5tb250aCAvLz0+IDVcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtb250aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCAoMS0zMGlzaCkuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmRheSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5KS5ob3VyIC8vPT4gOVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGhvdXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5ob3VyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWludXRlIG9mIHRoZSBob3VyICgwLTU5KS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwKS5taW51dGUgLy89PiAzMFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbnV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlY29uZCBvZiB0aGUgbWludXRlICgwLTU5KS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBzZWNvbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5zZWNvbmQgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCwgNTIsIDY1NCkubWlsbGlzZWNvbmQgLy89PiA2NTRcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtaWxsaXNlY29uZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbGxpc2Vjb25kIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2VlayB5ZWFyXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHdlZWtZZWFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtZZWFyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkud2Vla051bWJlciAvLz0+IDIxXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla051bWJlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXlcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDExLCAzMSkud2Vla2RheSAvLz0+IDRcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrZGF5KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBvcmRpbmFsIChtZWFuaW5nIHRoZSBkYXkgb2YgdGhlIHllYXIpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1XG4gICAqIEB0eXBlIHtudW1iZXJ8RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgb3JkaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gZ3JlZ29yaWFuVG9PcmRpbmFsKHRoaXMuYykub3JkaW5hbCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoU2hvcnQgLy89PiBPY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBtb250aFNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocyhcInNob3J0XCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLm1vbnRoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhMb25nIC8vPT4gT2N0b2JlclxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG1vbnRoTG9uZygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoXCJsb25nXCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLm1vbnRoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheVNob3J0IC8vPT4gTW9uXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgd2Vla2RheVNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKFwic2hvcnRcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMud2Vla2RheSAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkud2Vla2RheUxvbmcgLy89PiBNb25kYXlcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB3ZWVrZGF5TG9uZygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cyhcImxvbmdcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMud2Vla2RheSAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm9mZnNldCAvLz0+IC0yNDBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkub2Zmc2V0IC8vPT4gMFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG9mZnNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNob3J0IGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlIFwiRVNUXCIgb3IgXCJFRFRcIi5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgb2Zmc2V0TmFtZVNob3J0KCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnpvbmUub2Zmc2V0TmFtZSh0aGlzLnRzLCB7XG4gICAgICAgIGZvcm1hdDogXCJzaG9ydFwiLFxuICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxvbmcgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgXCJFYXN0ZXJuIFN0YW5kYXJkIFRpbWVcIiBvciBcIkVhc3Rlcm4gRGF5bGlnaHQgVGltZVwiLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBvZmZzZXROYW1lTG9uZygpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywge1xuICAgICAgICBmb3JtYXQ6IFwibG9uZ1wiLFxuICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNPZmZzZXRGaXhlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLmlzVW5pdmVyc2FsIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzSW5EU1QoKSB7XG4gICAgaWYgKHRoaXMuaXNPZmZzZXRGaXhlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLm9mZnNldCA+IHRoaXMuc2V0KHsgbW9udGg6IDEsIGRheTogMSB9KS5vZmZzZXQgfHxcbiAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiA1IH0pLm9mZnNldFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW4gYSBsZWFwIHllYXIsIGZhbHNlIG90aGVyd2lzZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5pc0luTGVhcFllYXIgLy89PiB0cnVlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmlzSW5MZWFwWWVhciAvLz0+IGZhbHNlXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzSW5MZWFwWWVhcigpIHtcbiAgICByZXR1cm4gaXNMZWFwWWVhcih0aGlzLnllYXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyBtb250aFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2LCAyKS5kYXlzSW5Nb250aCAvLz0+IDI5XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDMpLmRheXNJbk1vbnRoIC8vPT4gMzFcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBkYXlzSW5Nb250aCgpIHtcbiAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhclxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5kYXlzSW5ZZWFyIC8vPT4gMzY2XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmRheXNJblllYXIgLy89PiAzNjVcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBkYXlzSW5ZZWFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBkYXlzSW5ZZWFyKHRoaXMueWVhcikgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHdlZWtzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDA0KS53ZWVrc0luV2Vla1llYXIgLy89PiA1M1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS53ZWVrc0luV2Vla1llYXIgLy89PiA1MlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHdlZWtzSW5XZWVrWWVhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gd2Vla3NJbldlZWtZZWFyKHRoaXMud2Vla1llYXIpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHJlc29sdmVkIEludGwgb3B0aW9ucyBmb3IgdGhpcyBEYXRlVGltZS5cbiAgICogVGhpcyBpcyB1c2VmdWwgaW4gdW5kZXJzdGFuZGluZyB0aGUgYmVoYXZpb3Igb2YgZm9ybWF0dGluZyBtZXRob2RzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gdGhlIHNhbWUgb3B0aW9ucyBhcyB0b0xvY2FsZVN0cmluZ1xuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICByZXNvbHZlZExvY2FsZU9wdGlvbnMob3B0cyA9IHt9KSB7XG4gICAgY29uc3QgeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgY2FsZW5kYXIgfSA9IEZvcm1hdHRlci5jcmVhdGUoXG4gICAgICB0aGlzLmxvYy5jbG9uZShvcHRzKSxcbiAgICAgIG9wdHNcbiAgICApLnJlc29sdmVkT3B0aW9ucyh0aGlzKTtcbiAgICByZXR1cm4geyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXI6IGNhbGVuZGFyIH07XG4gIH1cblxuICAvLyBUUkFOU0ZPUk1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIFVUQy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKlxuICAgKiBFcXVpdmFsZW50IHRvIHtAbGluayBEYXRlVGltZSNzZXRab25lfSgndXRjJylcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtvZmZzZXQ9MF0gLSBvcHRpb25hbGx5LCBhbiBvZmZzZXQgZnJvbSBVVEMgaW4gbWludXRlc1xuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgdG9VVEMob2Zmc2V0ID0gMCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0Wm9uZShGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2Uob2Zmc2V0KSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIHRoZSBob3N0J3MgbG9jYWwgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKlxuICAgKiBFcXVpdmFsZW50IHRvIGBzZXRab25lKCdsb2NhbCcpYFxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHRvTG9jYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0Wm9uZShTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgRGF0ZVRpbWUncyB6b25lIHRvIHNwZWNpZmllZCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lI3BsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy5cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBhIHpvbmUgaWRlbnRpZmllci4gQXMgYSBzdHJpbmcsIHRoYXQgY2FuIGJlIGFueSBJQU5BIHpvbmUgc3VwcG9ydGVkIGJ5IHRoZSBob3N0IGVudmlyb25tZW50LCBvciBhIGZpeGVkLW9mZnNldCBuYW1lIG9mIHRoZSBmb3JtICdVVEMrMycsIG9yIHRoZSBzdHJpbmdzICdsb2NhbCcgb3IgJ3V0YycuIFlvdSBtYXkgYWxzbyBzdXBwbHkgYW4gaW5zdGFuY2Ugb2YgYSB7QGxpbmsgRGF0ZVRpbWUjWm9uZX0gY2xhc3MuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLlxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lID0gZmFsc2UsIGtlZXBDYWxlbmRhclRpbWUgPSBmYWxzZSB9ID0ge30pIHtcbiAgICB6b25lID0gbm9ybWFsaXplWm9uZSh6b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7XG4gICAgaWYgKHpvbmUuZXF1YWxzKHRoaXMuem9uZSkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gZWxzZSBpZiAoIXpvbmUuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG5ld1RTID0gdGhpcy50cztcbiAgICAgIGlmIChrZWVwTG9jYWxUaW1lIHx8IGtlZXBDYWxlbmRhclRpbWUpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0R3Vlc3MgPSB6b25lLm9mZnNldCh0aGlzLnRzKTtcbiAgICAgICAgY29uc3QgYXNPYmogPSB0aGlzLnRvT2JqZWN0KCk7XG4gICAgICAgIFtuZXdUU10gPSBvYmpUb1RTKGFzT2JqLCBvZmZzZXRHdWVzcywgem9uZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xvbmUodGhpcywgeyB0czogbmV3VFMsIHpvbmUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvciBvdXRwdXRDYWxlbmRhci4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIHRoZSBwcm9wZXJ0aWVzIHRvIHNldFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkucmVjb25maWd1cmUoeyBsb2NhbGU6ICdlbi1HQicgfSlcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICByZWNvbmZpZ3VyZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9ID0ge30pIHtcbiAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9KTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyBsb2MgfSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgbG9jYWxlLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqIEp1c3QgYSBjb252ZW5pZW50IGFsaWFzIGZvciByZWNvbmZpZ3VyZSh7IGxvY2FsZSB9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkuc2V0TG9jYWxlKCdlbi1HQicpXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc2V0TG9jYWxlKGxvY2FsZSkge1xuICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsgbG9jYWxlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICogWW91IGNhbiBvbmx5IHNldCB1bml0cyB3aXRoIHRoaXMgbWV0aG9kOyBmb3IgXCJzZXR0aW5nXCIgbWV0YWRhdGEsIHNlZSB7QGxpbmsgRGF0ZVRpbWUjcmVjb25maWd1cmV9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVyc1xuICAgKiBAZXhhbXBsZSBkdC5zZXQoeyB5ZWFyOiAyMDE3IH0pXG4gICAqIEBleGFtcGxlIGR0LnNldCh7IGhvdXI6IDgsIG1pbnV0ZTogMzAgfSlcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgd2Vla2RheTogNSB9KVxuICAgKiBAZXhhbXBsZSBkdC5zZXQoeyB5ZWFyOiAyMDA1LCBvcmRpbmFsOiAyMzQgfSlcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzZXQodmFsdWVzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIG5vcm1hbGl6ZVVuaXQpLFxuICAgICAgc2V0dGluZ1dlZWtTdHVmZiA9XG4gICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtZZWFyKSB8fFxuICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrTnVtYmVyKSB8fFxuICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrZGF5KSxcbiAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLFxuICAgICAgY29udGFpbnNHcmVnb3JZZWFyID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQueWVhciksXG4gICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksXG4gICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELFxuICAgICAgZGVmaW5pdGVXZWVrRGVmID0gbm9ybWFsaXplZC53ZWVrWWVhciB8fCBub3JtYWxpemVkLndlZWtOdW1iZXI7XG5cbiAgICBpZiAoKGNvbnRhaW5zR3JlZ29yIHx8IGNvbnRhaW5zT3JkaW5hbCkgJiYgZGVmaW5pdGVXZWVrRGVmKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXG4gICAgICAgIFwiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFsc1wiXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFwiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXlcIik7XG4gICAgfVxuXG4gICAgbGV0IG1peGVkO1xuICAgIGlmIChzZXR0aW5nV2Vla1N0dWZmKSB7XG4gICAgICBtaXhlZCA9IHdlZWtUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvV2Vlayh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pO1xuICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCkpIHtcbiAgICAgIG1peGVkID0gb3JkaW5hbFRvR3JlZ29yaWFuKHsgLi4uZ3JlZ29yaWFuVG9PcmRpbmFsKHRoaXMuYyksIC4uLm5vcm1hbGl6ZWQgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1peGVkID0geyAuLi50aGlzLnRvT2JqZWN0KCksIC4uLm5vcm1hbGl6ZWQgfTtcblxuICAgICAgLy8gaWYgd2UgZGlkbid0IHNldCB0aGUgZGF5IGJ1dCB3ZSBlbmRlZCB1cCBvbiBhbiBvdmVyZmxvdyBkYXRlLFxuICAgICAgLy8gdXNlIHRoZSBsYXN0IGRheSBvZiB0aGUgcmlnaHQgbW9udGhcbiAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHtcbiAgICAgICAgbWl4ZWQuZGF5ID0gTWF0aC5taW4oZGF5c0luTW9udGgobWl4ZWQueWVhciwgbWl4ZWQubW9udGgpLCBtaXhlZC5kYXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IFt0cywgb10gPSBvYmpUb1RTKG1peGVkLCB0aGlzLm8sIHRoaXMuem9uZSk7XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHMsIG8gfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVcbiAgICpcbiAgICogQWRkaW5nIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBvciBtaWxsaXNlY29uZHMgaW5jcmVhc2VzIHRoZSB0aW1lc3RhbXAgYnkgdGhlIHJpZ2h0IG51bWJlciBvZiBtaWxsaXNlY29uZHMuIEFkZGluZyBkYXlzLCBtb250aHMsIG9yIHllYXJzIHNoaWZ0cyB0aGUgY2FsZW5kYXIsIGFjY291bnRpbmcgZm9yIERTVHMgYW5kIGxlYXAgeWVhcnMgYWxvbmcgdGhlIHdheS4gVGh1cywgYGR0LnBsdXMoeyBob3VyczogMjQgfSlgIG1heSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdGltZSB0aGFuIGBkdC5wbHVzKHsgZGF5czogMSB9KWAgaWYgdGhlcmUncyBhIERTVCBzaGlmdCBpbiBiZXR3ZWVuLlxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBhZGQuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoMTIzKSAvL34+IGluIDEyMyBtaWxsaXNlY29uZHNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IG1pbnV0ZXM6IDE1IH0pIC8vfj4gaW4gMTUgbWludXRlc1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KSAvL34+IHRoaXMgdGltZSB0b21vcnJvd1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogLTEgfSkgLy9+PiB0aGlzIHRpbWUgeWVzdGVyZGF5XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBob3VyczogMywgbWludXRlczogMTMgfSkgLy9+PiBpbiAzIGhyLCAxMyBtaW5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pKSAvL34+IGluIDMgaHIsIDEzIG1pblxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHBsdXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7XG4gIH1cblxuICAvKipcbiAgICogU3VidHJhY3QgYSBwZXJpb2Qgb2YgdGltZSB0byB0aGlzIERhdGVUaW1lIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBEYXRlVGltZVxuICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI3BsdXN9XG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIHN1YnRyYWN0LiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKVxuICAgQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBtaW51cyhkdXJhdGlvbikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKS5uZWdhdGUoKTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgYWRqdXN0VGltZSh0aGlzLCBkdXIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoaXMgRGF0ZVRpbWUgdG8gdGhlIGJlZ2lubmluZyBvZiBhIHVuaXQgb2YgdGltZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgYmVnaW5uaW5nIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCdtb250aCcpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAxJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCd5ZWFyJykudG9JU09EYXRlKCk7IC8vPT4gJzIwMTQtMDEtMDEnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3dlZWsnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMycsIHdlZWtzIGFsd2F5cyBzdGFydCBvbiBNb25kYXlzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdkYXknKS50b0lTT1RpbWUoKTsgLy89PiAnMDA6MDAuMDAwLTA1OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignaG91cicpLnRvSVNPVGltZSgpOyAvLz0+ICcwNTowMDowMC4wMDAtMDU6MDAnXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhcnRPZih1bml0KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IG8gPSB7fSxcbiAgICAgIG5vcm1hbGl6ZWRVbml0ID0gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1bml0KTtcbiAgICBzd2l0Y2ggKG5vcm1hbGl6ZWRVbml0KSB7XG4gICAgICBjYXNlIFwieWVhcnNcIjpcbiAgICAgICAgby5tb250aCA9IDE7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwicXVhcnRlcnNcIjpcbiAgICAgIGNhc2UgXCJtb250aHNcIjpcbiAgICAgICAgby5kYXkgPSAxO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcIndlZWtzXCI6XG4gICAgICBjYXNlIFwiZGF5c1wiOlxuICAgICAgICBvLmhvdXIgPSAwO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcImhvdXJzXCI6XG4gICAgICAgIG8ubWludXRlID0gMDtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJtaW51dGVzXCI6XG4gICAgICAgIG8uc2Vjb25kID0gMDtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJzZWNvbmRzXCI6XG4gICAgICAgIG8ubWlsbGlzZWNvbmQgPSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJtaWxsaXNlY29uZHNcIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBubyBkZWZhdWx0LCBpbnZhbGlkIHVuaXRzIHRocm93IGluIG5vcm1hbGl6ZVVuaXQoKVxuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkVW5pdCA9PT0gXCJ3ZWVrc1wiKSB7XG4gICAgICBvLndlZWtkYXkgPSAxO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkVW5pdCA9PT0gXCJxdWFydGVyc1wiKSB7XG4gICAgICBjb25zdCBxID0gTWF0aC5jZWlsKHRoaXMubW9udGggLyAzKTtcbiAgICAgIG8ubW9udGggPSAocSAtIDEpICogMyArIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2V0KG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhpcyBEYXRlVGltZSB0byB0aGUgZW5kIChtZWFuaW5nIHRoZSBsYXN0IG1pbGxpc2Vjb25kKSBvZiBhIHVuaXQgb2YgdGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCdtb250aCcpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMzFUMjM6NTk6NTkuOTk5LTA1OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZigneWVhcicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMTItMzFUMjM6NTk6NTkuOTk5LTA1OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdkYXknKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDIzOjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLmVuZE9mKCdob3VyJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QwNTo1OTo1OS45OTktMDU6MDAnXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgZW5kT2YodW5pdCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gdGhpcy5wbHVzKHsgW3VuaXRdOiAxIH0pXG4gICAgICAgICAgLnN0YXJ0T2YodW5pdClcbiAgICAgICAgICAubWludXMoMSlcbiAgICAgIDogdGhpcztcbiAgfVxuXG4gIC8vIE9VVFBVVFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuXG4gICAqICoqWW91IG1heSBub3Qgd2FudCB0aGlzLioqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvciBhIG1vcmUgZmxleGlibGUgZm9ybWF0dGluZyB0b29sLiBGb3IgYSB0YWJsZSBvZiB0b2tlbnMgYW5kIHRoZWlyIGludGVycHJldGF0aW9ucywgc2VlIFtoZXJlXShodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9mb3JtYXR0aW5nP2lkPXRhYmxlLW9mLXRva2VucykuXG4gICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBBcHIgMjInXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZnInKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IGF2ci4gMjInXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KCd5eXl5IExMTCBkZCcsIHsgbG9jYWxlOiBcImZyXCIgfSkgLy89PiAnMjAxNyBhdnIuIDIyJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdChcIkhIICdob3VycyBhbmQnIG1tICdtaW51dGVzJ1wiKSAvLz0+ICcyMCBob3VycyBhbmQgNTUgbWludXRlcydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdClcbiAgICAgIDogSU5WQUxJRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC5cbiAgICogVGhlIGV4YWN0IGJlaGF2aW9yIG9mIHRoaXMgbWV0aG9kIGlzIGJyb3dzZXItc3BlY2lmaWMsIGJ1dCBpbiBnZW5lcmFsIGl0IHdpbGwgcmV0dXJuIGFuIGFwcHJvcHJpYXRlIHJlcHJlc2VudGF0aW9uXG4gICAqIG9mIHRoZSBEYXRlVGltZSBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdFxuICAgKiBAcGFyYW0gZm9ybWF0T3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiA0LzIwLzIwMTdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKCdlbi1nYicpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gJzIwLzA0LzIwMTcnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnInIH0pOyAvLz0+ICcyOCBhb8O7dCAyMDIyJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5USU1FX1NJTVBMRSk7IC8vPT4gJzExOjMyIEFNJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ2xvbmcnLCBtb250aDogJ2xvbmcnLCBkYXk6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1cnNkYXksIEFwcmlsIDIwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdzaG9ydCcsIG1vbnRoOiAnc2hvcnQnLCBkYXk6ICcyLWRpZ2l0JywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1LCBBcHIgMjAsIDExOjI3IEFNJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gRm9ybWF0cy5EQVRFX1NIT1JULCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgXCJwYXJ0c1wiLCBtZWFuaW5nIGluZGl2aWR1YWwgdG9rZW5zIGFsb25nIHdpdGggbWV0YWRhdGEuIFRoaXMgaXMgYWxsb3dzIGNhbGxlcnMgdG8gcG9zdC1wcm9jZXNzIGluZGl2aWR1YWwgc2VjdGlvbnMgb2YgdGhlIGZvcm1hdHRlZCBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHNcbiAgICogQHBhcmFtIG9wdHMge09iamVjdH0gLSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMsIHNhbWUgYXMgYHRvTG9jYWxlU3RyaW5nYC5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVQYXJ0cygpOyAvLz0+IFtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbW9udGgnLCB2YWx1ZTogJzA1JyB9LFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAneWVhcicsIHZhbHVlOiAnMTk4MicgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiBdXG4gICAqL1xuICB0b0xvY2FsZVBhcnRzKG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCdcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5leHRlbmRlZFpvbmU9ZmFsc2VdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODMsIDUsIDI1KS50b0lTTygpIC8vPT4gJzE5ODItMDUtMjVUMDA6MDA6MDAuMDAwWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNS0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMjAxNzA0MjJUMjA0NzA1LjMzNS0wNDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTTyh7XG4gICAgZm9ybWF0ID0gXCJleHRlbmRlZFwiLFxuICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLFxuICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsXG4gICAgaW5jbHVkZU9mZnNldCA9IHRydWUsXG4gICAgZXh0ZW5kZWRab25lID0gZmFsc2UsXG4gIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBleHQgPSBmb3JtYXQgPT09IFwiZXh0ZW5kZWRcIjtcblxuICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7XG4gICAgYyArPSBcIlRcIjtcbiAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQsIGV4dGVuZGVkWm9uZSk7XG4gICAgcmV0dXJuIGM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyBkYXRlIGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT0RhdGUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMTk4MjA1MjUnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPRGF0ZSh7IGZvcm1hdCA9IFwiZXh0ZW5kZWRcIiB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCBmb3JtYXQgPT09IFwiZXh0ZW5kZWRcIik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB3ZWVrIGRhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT1dlZWtEYXRlKCkgLy89PiAnMTk4Mi1XMjEtMidcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09XZWVrRGF0ZSgpIHtcbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIFwia2tray0nVydXVy1jXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3MgdGltZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzU2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIHNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZXh0ZW5kZWRab25lPXRydWVdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvblxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVQcmVmaXg9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgYFRgIHByZWZpeFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0LCBzZWNvbmRzOiAwLCBtaWxsaXNlY29uZHM6IDAgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzA3OjM0WidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMDczNDE5LjM2MVonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWidcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKHtcbiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcyA9IGZhbHNlLFxuICAgIHN1cHByZXNzU2Vjb25kcyA9IGZhbHNlLFxuICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLFxuICAgIGluY2x1ZGVQcmVmaXggPSBmYWxzZSxcbiAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSxcbiAgICBmb3JtYXQgPSBcImV4dGVuZGVkXCIsXG4gIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgYyA9IGluY2x1ZGVQcmVmaXggPyBcIlRcIiA6IFwiXCI7XG4gICAgcmV0dXJuIChcbiAgICAgIGMgK1xuICAgICAgdG9JU09UaW1lKFxuICAgICAgICB0aGlzLFxuICAgICAgICBmb3JtYXQgPT09IFwiZXh0ZW5kZWRcIixcbiAgICAgICAgc3VwcHJlc3NTZWNvbmRzLFxuICAgICAgICBzdXBwcmVzc01pbGxpc2Vjb25kcyxcbiAgICAgICAgaW5jbHVkZU9mZnNldCxcbiAgICAgICAgZXh0ZW5kZWRab25lXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwICswMDAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCAtMDQwMCdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9SRkMyODIyKCkge1xuICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgXCJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzIFpaWlwiLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLiBUaGUgb3V0cHV0IGlzIGFsd2F5cyBleHByZXNzZWQgaW4gR01ULlxuICAgKiBTcGVjaWZpY2FsbHksIHRoZSBzdHJpbmcgY29uZm9ybXMgdG8gUkZDIDExMjMuXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMywgMTkpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMTk6MDA6MDAgR01UJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0hUVFAoKSB7XG4gICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLnRvVVRDKCksIFwiRUVFLCBkZCBMTEwgeXl5eSBISDptbTpzcyAnR01UJ1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgRGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU1FMRGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0b0lTT0RhdGUodGhpcywgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIFRpbWVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldFNwYWNlPXRydWVdIC0gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgdGltZSBhbmQgdGhlIG9mZnNldCwgc3VjaCBhcyAnMDU6MTU6MTYuMzQ1IC0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcwNToxNToxNi4zNDUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSBBbWVyaWNhL05ld19Zb3JrJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1NRTFRpbWUoeyBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSwgaW5jbHVkZVpvbmUgPSBmYWxzZSwgaW5jbHVkZU9mZnNldFNwYWNlID0gdHJ1ZSB9ID0ge30pIHtcbiAgICBsZXQgZm10ID0gXCJISDptbTpzcy5TU1NcIjtcblxuICAgIGlmIChpbmNsdWRlWm9uZSB8fCBpbmNsdWRlT2Zmc2V0KSB7XG4gICAgICBpZiAoaW5jbHVkZU9mZnNldFNwYWNlKSB7XG4gICAgICAgIGZtdCArPSBcIiBcIjtcbiAgICAgIH1cbiAgICAgIGlmIChpbmNsdWRlWm9uZSkge1xuICAgICAgICBmbXQgKz0gXCJ6XCI7XG4gICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHtcbiAgICAgICAgZm10ICs9IFwiWlpcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIGZtdCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCBaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCAtMDQ6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlWm9uZTogdHJ1ZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCBBbWVyaWNhL05ld19Zb3JrJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1NRTChvcHRzID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3RoaXMudG9TUUxEYXRlKCl9ICR7dGhpcy50b1NRTFRpbWUob3B0cyl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIGRlYnVnZ2luZ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0lTTygpIDogSU5WQUxJRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS4gQWxpYXMgb2Yge0BsaW5rIERhdGVUaW1lI3RvTWlsbGlzfVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB2YWx1ZU9mKCkge1xuICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHRvTWlsbGlzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVwb2NoIHNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdG9TZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIC8gMTAwMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIChhcyBhIHdob2xlIG51bWJlcikgb2YgdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdG9Vbml4SW50ZWdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gTWF0aC5mbG9vcih0aGlzLnRzIC8gMTAwMCkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvSVNPKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEJTT04gc2VyaWFsaXphYmxlIGVxdWl2YWxlbnQgdG8gdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7RGF0ZX1cbiAgICovXG4gIHRvQlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b0pTRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRGF0ZVRpbWUncyB5ZWFyLCBtb250aCwgZGF5LCBhbmQgc28gb24uXG4gICAqIEBwYXJhbSBvcHRzIC0gb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvT2JqZWN0KCkgLy89PiB7IHllYXI6IDIwMTcsIG1vbnRoOiA0LCBkYXk6IDIyLCBob3VyOiAyMCwgbWludXRlOiA0OSwgc2Vjb25kOiA0MiwgbWlsbGlzZWNvbmQ6IDI2OCB9XG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHRvT2JqZWN0KG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307XG5cbiAgICBjb25zdCBiYXNlID0geyAuLi50aGlzLmMgfTtcblxuICAgIGlmIChvcHRzLmluY2x1ZGVDb25maWcpIHtcbiAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyO1xuICAgICAgYmFzZS5udW1iZXJpbmdTeXN0ZW0gPSB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW07XG4gICAgICBiYXNlLmxvY2FsZSA9IHRoaXMubG9jLmxvY2FsZTtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge0RhdGV9XG4gICAqL1xuICB0b0pTRGF0ZSgpIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5pc1ZhbGlkID8gdGhpcy50cyA6IE5hTik7XG4gIH1cblxuICAvLyBDT01QQVJFXG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBEYXRlVGltZSB0byBjb21wYXJlIHRoaXMgb25lIHRvXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIGFycmF5IG9mIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBleGFtcGxlXG4gICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSxcbiAgICogICAgIGkyID0gRGF0ZVRpbWUuZnJvbUlTTygnMTk4My0xMC0xNFQxMDozMCcpO1xuICAgKiBpMi5kaWZmKGkxKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDQzODA3NTAwMDAwIH1cbiAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH1cbiAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOS4wMzEyNSB9XG4gICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnLCAnaG91cnMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTksIGhvdXJzOiAwLjc1IH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBkaWZmKG90aGVyRGF0ZVRpbWUsIHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiLCBvcHRzID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXJEYXRlVGltZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZChcImNyZWF0ZWQgYnkgZGlmZmluZyBhbiBpbnZhbGlkIERhdGVUaW1lXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGR1ck9wdHMgPSB7IGxvY2FsZTogdGhpcy5sb2NhbGUsIG51bWJlcmluZ1N5c3RlbTogdGhpcy5udW1iZXJpbmdTeXN0ZW0sIC4uLm9wdHMgfTtcblxuICAgIGNvbnN0IHVuaXRzID0gbWF5YmVBcnJheSh1bml0KS5tYXAoRHVyYXRpb24ubm9ybWFsaXplVW5pdCksXG4gICAgICBvdGhlcklzTGF0ZXIgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKSA+IHRoaXMudmFsdWVPZigpLFxuICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLFxuICAgICAgbGF0ZXIgPSBvdGhlcklzTGF0ZXIgPyBvdGhlckRhdGVUaW1lIDogdGhpcyxcbiAgICAgIGRpZmZlZCA9IGRpZmYoZWFybGllciwgbGF0ZXIsIHVuaXRzLCBkdXJPcHRzKTtcblxuICAgIHJldHVybiBvdGhlcklzTGF0ZXIgPyBkaWZmZWQubmVnYXRlKCkgOiBkaWZmZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBEYXRlVGltZSBhbmQgcmlnaHQgbm93LlxuICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI2RpZmZ9XG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvblxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIHRoZSBEdXJhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBkaWZmTm93KHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5kaWZmKERhdGVUaW1lLm5vdygpLCB1bml0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgb3RoZXIgZW5kIHBvaW50IG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHVudGlsKG90aGVyRGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyh0aGlzLCBvdGhlckRhdGVUaW1lKSA6IHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBEYXRlVGltZSBpcyBpbiB0aGUgc2FtZSB1bml0IG9mIHRpbWUgYXMgYW5vdGhlciBEYXRlVGltZS5cbiAgICogSGlnaGVyLW9yZGVyIHVuaXRzIG11c3QgYWxzbyBiZSBpZGVudGljYWwgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGB0cnVlYC5cbiAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgb3RoZXIgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNoZWNrIHNhbWVuZXNzIG9uXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGlucHV0TXMgPSBvdGhlckRhdGVUaW1lLnZhbHVlT2YoKTtcbiAgICBjb25zdCBhZGp1c3RlZFRvWm9uZSA9IHRoaXMuc2V0Wm9uZShvdGhlckRhdGVUaW1lLnpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KTtcbiAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7XG4gIH1cblxuICAvKipcbiAgICogRXF1YWxpdHkgY2hlY2tcbiAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC5cbiAgICogVG8gY29tcGFyZSBqdXN0IHRoZSBtaWxsaXNlY29uZCB2YWx1ZXMsIHVzZSBgK2R0MSA9PT0gK2R0MmAuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyIC0gdGhlIG90aGVyIERhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc1ZhbGlkICYmXG4gICAgICBvdGhlci5pc1ZhbGlkICYmXG4gICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmXG4gICAgICB0aGlzLnpvbmUuZXF1YWxzKG90aGVyLnpvbmUpICYmXG4gICAgICB0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHRoaXMgdGltZSByZWxhdGl2ZSB0byBub3csIHN1Y2ggYXMgXCJpbiB0d28gZGF5c1wiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXJcbiAgICogcGxhdGZvcm0gc3VwcG9ydHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuIFJvdW5kcyBkb3duIGJ5IGRlZmF1bHQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0XG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zdHlsZT1cImxvbmdcIl0gLSB0aGUgc3R5bGUgb2YgdW5pdHMsIG11c3QgYmUgXCJsb25nXCIsIFwic2hvcnRcIiwgb3IgXCJuYXJyb3dcIlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgXCJ5ZWFyc1wiLCBcInF1YXJ0ZXJzXCIsIFwibW9udGhzXCIsIFwid2Vla3NcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIG9yIFwic2Vjb25kc1wiXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5wYWRkaW5nPTBdIC0gcGFkZGluZyBpbiBtaWxsaXNlY29uZHMuIFRoaXMgYWxsb3dzIHlvdSB0byByb3VuZCB1cCB0aGUgcmVzdWx0IGlmIGl0IGZpdHMgaW5zaWRlIHRoZSB0aHJlc2hvbGQuIERvbid0IHVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIHtyb3VuZDogZmFsc2V9IGJlY2F1c2UgdGhlIGRlY2ltYWwgb3V0cHV0IHdpbGwgaW5jbHVkZSB0aGUgcGFkZGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gXCJpbiAxIGRheVwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZShcImVzXCIpLnRvUmVsYXRpdmUoeyBkYXlzOiAxIH0pIC8vPT4gXCJkZW50cm8gZGUgMSBkw61hXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogXCJmclwiIH0pIC8vPT4gXCJkYW5zIDIzIGhldXJlc1wiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiBcIjIgZGF5cyBhZ29cIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSh7IHVuaXQ6IFwiaG91cnNcIiB9KSAvLz0+IFwiNDggaG91cnMgYWdvXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBob3VyczogMzYgfSkudG9SZWxhdGl2ZSh7IHJvdW5kOiBmYWxzZSB9KSAvLz0+IFwiMS41IGRheXMgYWdvXCJcbiAgICovXG4gIHRvUmVsYXRpdmUob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGJhc2UgPSBvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nID8gKHRoaXMgPCBiYXNlID8gLW9wdGlvbnMucGFkZGluZyA6IG9wdGlvbnMucGFkZGluZykgOiAwO1xuICAgIGxldCB1bml0cyA9IFtcInllYXJzXCIsIFwibW9udGhzXCIsIFwiZGF5c1wiLCBcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIl07XG4gICAgbGV0IHVuaXQgPSBvcHRpb25zLnVuaXQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy51bml0KSkge1xuICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7XG4gICAgICB1bml0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG51bWVyaWM6IFwiYWx3YXlzXCIsXG4gICAgICB1bml0cyxcbiAgICAgIHVuaXQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGRhdGUgcmVsYXRpdmUgdG8gdG9kYXksIHN1Y2ggYXMgXCJ5ZXN0ZXJkYXlcIiBvciBcIm5leHQgbW9udGhcIi5cbiAgICogT25seSBpbnRlcm5hdGlvbmFsaXplcyBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXRcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gW29wdGlvbnMuYmFzZT1EYXRlVGltZS5ub3coKV0gLSB0aGUgRGF0ZVRpbWUgdG8gdXNlIGFzIHRoZSBiYXNpcyB0byB3aGljaCB0aGlzIHRpbWUgaXMgY29tcGFyZWQuIERlZmF1bHRzIHRvIG5vdy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiBcInllYXJzXCIsIFwicXVhcnRlcnNcIiwgXCJtb250aHNcIiwgXCJ3ZWVrc1wiLCBvciBcImRheXNcIlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gXCJ0b21vcnJvd1wiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZShcImVzXCIpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+IFwiXCJtYcOxYW5hXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKHsgbG9jYWxlOiBcImZyXCIgfSkgLy89PiBcImRlbWFpblwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+IFwiMiBkYXlzIGFnb1wiXG4gICAqL1xuICB0b1JlbGF0aXZlQ2FsZW5kYXIob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBudW1lcmljOiBcImF1dG9cIixcbiAgICAgIHVuaXRzOiBbXCJ5ZWFyc1wiLCBcIm1vbnRoc1wiLCBcImRheXNcIl0sXG4gICAgICBjYWxlbmRhcnk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtaW4gb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzXG4gICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW1cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtaW4gRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudFxuICAgKi9cbiAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHtcbiAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibWluIHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1pbik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBtYXggb2Ygc2V2ZXJhbCBkYXRlIHRpbWVzXG4gICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1heGltdW1cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudFxuICAgKi9cbiAgc3RhdGljIG1heCguLi5kYXRlVGltZXMpIHtcbiAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYmVzdEJ5KGRhdGVUaW1lcywgKGkpID0+IGkudmFsdWVPZigpLCBNYXRoLm1heCk7XG4gIH1cblxuICAvLyBNSVNDXG5cbiAgLyoqXG4gICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KClcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHRoZSBzdHJpbmcgaXMgZXhwZWN0ZWQgdG8gYmUgaW4gKHNlZSBkZXNjcmlwdGlvbilcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwgfSA9IG9wdGlvbnMsXG4gICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgbnVtYmVyaW5nU3lzdGVtLFxuICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHJldHVybiBleHBsYWluRnJvbVRva2Vucyhsb2NhbGVUb1VzZSwgdGV4dCwgZm10KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmdFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyBGT1JNQVQgUFJFU0VUU1xuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlIDEwLzE0LzE5ODNcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9TSE9SVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX1NIT1JUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9NRUQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpLCBPY3QgMTQsIDE5ODMnXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVfTUVEX1dJVEhfV0VFS0RBWSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVk7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9GVUxMKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfRlVMTDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJ1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9IVUdFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfU0lNUExFKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfU0lNUExFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9MT05HX09GRlNFVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FX1dJVEhfTE9OR19PRkZTRVQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9TSU1QTEUoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9TSU1QTEU7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgRURUJywgYWx3YXlzIDI0LWhvdXIuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzEwLzE0LzE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX01FRDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgMTQgT2N0IDE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9XRUVLREFZO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0ZVTEwoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfRlVMTDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzAgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0UoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfSFVHRTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmlkYXksIE9jdG9iZXIgMTQsIDE5ODMsIDk6MzA6MzMgQU0gRWFzdGVybiBEYXlsaWdodCBUaW1lJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyaWVuZGx5RGF0ZVRpbWUoZGF0ZVRpbWVpc2gpIHtcbiAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7XG4gICAgcmV0dXJuIGRhdGVUaW1laXNoO1xuICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIGRhdGVUaW1laXNoLnZhbHVlT2YgJiYgaXNOdW1iZXIoZGF0ZVRpbWVpc2gudmFsdWVPZigpKSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTtcbiAgfSBlbHNlIGlmIChkYXRlVGltZWlzaCAmJiB0eXBlb2YgZGF0ZVRpbWVpc2ggPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWBcbiAgICApO1xuICB9XG59XG4iLCAiLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFF1ZXJ5IFNldHRpbmdzIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U2V0dGluZ3Mge1xuICAgIC8qKiBXaGF0IHRvIHJlbmRlciAnbnVsbCcgYXMgaW4gdGFibGVzLiBEZWZhdWx0cyB0byAnLScuICovXG4gICAgcmVuZGVyTnVsbEFzOiBzdHJpbmc7XG4gICAgLyoqIElmIGVuYWJsZWQsIHRhc2tzIGluIERhdGF2aWV3IHZpZXdzIHdpbGwgYXV0b21hdGljYWxseSBoYXZlIHRoZWlyIGNvbXBsZXRpb24gZGF0ZSBhcHBlbmRlZCB3aGVuIHRoZXkgYXJlIGNoZWNrZWQuICovXG4gICAgdGFza0NvbXBsZXRpb25UcmFja2luZzogYm9vbGVhbjtcbiAgICAvKiogSWYgZW5hYmxlZCwgYXV0b21hdGljIGNvbXBsZXRpb25zIHdpbGwgdXNlIGVtb2ppIHNob3J0aGFuZCDinIUgWVlZWS1NTS1ERCBpbnN0ZWFkIG9mIFtjb21wbGV0aW9uOjogZGF0ZV0uICovXG4gICAgdGFza0NvbXBsZXRpb25Vc2VFbW9qaVNob3J0aGFuZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIGlubGluZSBmaWVsZCB0byBiZSBhZGRlZCBhcyBhIHRhc2sncyBjb21wbGV0aW9uIHdoZW4gY2hlY2tlZC4gT25seSB1c2VkIGlmIGNvbXBsZXRpb25UcmFja2luZyBpcyBlbmFibGVkIGFuZCBlbW9qaVNob3J0aGFuZCBpcyBub3QuICovXG4gICAgdGFza0NvbXBsZXRpb25UZXh0OiBzdHJpbmc7XG4gICAgLyoqIERhdGUgZm9ybWF0IG9mIHRoZSB0YXNrJ3MgY29tcGxldGlvbiB0aW1lc3RhbXAuIE9ubHkgdXNlZCBpZiBjb21wbGV0aW9uVHJhY2tpbmcgaXMgZW5hYmxlZCBhbmQgZW1vamlTaG9ydGhhbmQgaXMgbm90LiAqL1xuICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogc3RyaW5nO1xuICAgIC8qKiBXaGV0aGVyIG9yIG5vdCBzdWJ0YXNrcyBzaG91bGQgYmUgcmVjdXJzaXZlbHkgY29tcGxldGVkIGluIGFkZGl0aW9uIHRvIHRoZWlyIHBhcmVudCB0YXNrLiAqL1xuICAgIHJlY3Vyc2l2ZVN1YlRhc2tDb21wbGV0aW9uOiBib29sZWFuO1xuICAgIC8qKiBJZiB0cnVlLCByZW5kZXIgYSBtb2RhbCB3aGljaCBzaG93cyBubyByZXN1bHRzIHdlcmUgcmV0dXJuZWQuICovXG4gICAgd2Fybk9uRW1wdHlSZXN1bHQ6IGJvb2xlYW47XG4gICAgLyoqIFdoZXRoZXIgb3Igbm90IGF1dG9tYXRpYyB2aWV3IHJlZnJlc2hpbmcgaXMgZW5hYmxlZC4gKi9cbiAgICByZWZyZXNoRW5hYmxlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIGludGVydmFsIHRoYXQgdmlld3MgYXJlIHJlZnJlc2hlZCwgYnkgZGVmYXVsdC4gKi9cbiAgICByZWZyZXNoSW50ZXJ2YWw6IG51bWJlcjtcbiAgICAvKiogVGhlIGRlZmF1bHQgZm9ybWF0IHRoYXQgZGF0ZXMgYXJlIHJlbmRlcmVkIGluICh1c2luZyBsdXhvbidzIG1vbWVudC1saWtlIGZvcm1hdHRpbmcpLiAqL1xuICAgIGRlZmF1bHREYXRlRm9ybWF0OiBzdHJpbmc7XG4gICAgLyoqIFRoZSBkZWZhdWx0IGZvcm1hdCB0aGF0IGRhdGUtdGltZXMgYXJlIHJlbmRlcmVkIGluICh1c2luZyBsdXhvbnMgbW9tZW50LWxpa2UgZm9ybWF0dGluZykuICovXG4gICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0OiBzdHJpbmc7XG4gICAgLyoqIE1heGltdW0gZGVwdGggdGhhdCBvYmplY3RzIHdpbGwgYmUgZXhwYW5kZWQgd2hlbiBiZWluZyByZW5kZXJlZCByZWN1cnNpdmVseS4gKi9cbiAgICBtYXhSZWN1cnNpdmVSZW5kZXJEZXB0aDogbnVtYmVyO1xuICAgIC8qKiBUaGUgbmFtZSBvZiB0aGUgZGVmYXVsdCBJRCBmaWVsZCAoJ0ZpbGUnKS4gKi9cbiAgICB0YWJsZUlkQ29sdW1uTmFtZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgbmFtZSBvZiBkZWZhdWx0IElEIGZpZWxkcyBvbiBncm91cGVkIGRhdGEgKCdHcm91cCcpLiAqL1xuICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiBzdHJpbmc7XG4gICAgLyoqIEluY2x1ZGUgdGhlIHJlc3VsdCBjb3VudCBhcyBwYXJ0IG9mIHRoZSBvdXRwdXQuICovXG4gICAgc2hvd1Jlc3VsdENvdW50OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9RVUVSWV9TRVRUSU5HUzogUXVlcnlTZXR0aW5ncyA9IHtcbiAgICByZW5kZXJOdWxsQXM6IFwiXFxcXC1cIixcbiAgICB0YXNrQ29tcGxldGlvblRyYWNraW5nOiBmYWxzZSxcbiAgICB0YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kOiBmYWxzZSxcbiAgICB0YXNrQ29tcGxldGlvblRleHQ6IFwiY29tcGxldGlvblwiLFxuICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogXCJ5eXl5LU1NLWRkXCIsXG4gICAgcmVjdXJzaXZlU3ViVGFza0NvbXBsZXRpb246IGZhbHNlLFxuICAgIHdhcm5PbkVtcHR5UmVzdWx0OiB0cnVlLFxuICAgIHJlZnJlc2hFbmFibGVkOiB0cnVlLFxuICAgIHJlZnJlc2hJbnRlcnZhbDogMjUwMCxcbiAgICBkZWZhdWx0RGF0ZUZvcm1hdDogXCJNTU1NIGRkLCB5eXl5XCIsXG4gICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0OiBcImg6bW0gYSAtIE1NTU0gZGQsIHl5eXlcIixcbiAgICBtYXhSZWN1cnNpdmVSZW5kZXJEZXB0aDogNCxcblxuICAgIHRhYmxlSWRDb2x1bW5OYW1lOiBcIkZpbGVcIixcbiAgICB0YWJsZUdyb3VwQ29sdW1uTmFtZTogXCJHcm91cFwiLFxuICAgIHNob3dSZXN1bHRDb3VudDogdHJ1ZSxcbn07XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRXhwb3J0IFNldHRpbmdzIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IGludGVyZmFjZSBFeHBvcnRTZXR0aW5ncyB7XG4gICAgLyoqIFdoZXRoZXIgb3Igbm90IEhUTUwgc2hvdWxkIGJlIHVzZWQgZm9yIGZvcm1hdHRpbmcgaW4gZXhwb3J0cy4gKi9cbiAgICBhbGxvd0h0bWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUzogRXhwb3J0U2V0dGluZ3MgPSB7XG4gICAgYWxsb3dIdG1sOiB0cnVlLFxufTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBEYXRhdmlldyBTZXR0aW5ncyAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGF2aWV3U2V0dGluZ3MgZXh0ZW5kcyBRdWVyeVNldHRpbmdzLCBFeHBvcnRTZXR0aW5ncyB7XG4gICAgLyoqIFRoZSBwcmVmaXggZm9yIGlubGluZSBxdWVyaWVzIGJ5IGRlZmF1bHQuICovXG4gICAgaW5saW5lUXVlcnlQcmVmaXg6IHN0cmluZztcbiAgICAvKiogVGhlIHByZWZpeCBmb3IgaW5saW5lIEpTIHF1ZXJpZXMgYnkgZGVmYXVsdC4gKi9cbiAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiBzdHJpbmc7XG4gICAgLyoqIElmIHRydWUsIGlubGluZSBxdWVyaWVzIGFyZSBhbHNvIGV2YWx1YXRlZCBpbiBmdWxsIGNvZGVibG9ja3MuICovXG4gICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogYm9vbGVhbjtcbiAgICAvKiogRW5hYmxlIG9yIGRpc2FibGUgZXhlY3V0aW5nIERhdGF2aWV3SlMgcXVlcmllcy4gKi9cbiAgICBlbmFibGVEYXRhdmlld0pzOiBib29sZWFuO1xuICAgIC8qKiBFbmFibGUgb3IgZGlzYWJsZSByZWd1bGFyIGlubGluZSBxdWVyaWVzLiAqL1xuICAgIGVuYWJsZUlubGluZURhdGF2aWV3OiBib29sZWFuO1xuICAgIC8qKiBFbmFibGUgb3IgZGlzYWJsZSBleGVjdXRpbmcgaW5saW5lIERhdGF2aWV3SlMgcXVlcmllcy4gKi9cbiAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBib29sZWFuO1xuICAgIC8qKiBFbmFibGUgb3IgZGlzYWJsZSByZW5kZXJpbmcgaW5saW5lIGZpZWxkcyBwcmV0dGlseS4gKi9cbiAgICBwcmV0dHlSZW5kZXJJbmxpbmVGaWVsZHM6IGJvb2xlYW47XG4gICAgLyoqIFRoZSBrZXl3b3JkIGZvciBEYXRhdmlld0pTIGJsb2Nrcy4gKi9cbiAgICBkYXRhdmlld0pzS2V5d29yZDogc3RyaW5nO1xufVxuXG4vKiogRGVmYXVsdCBzZXR0aW5ncyBmb3IgZGF0YXZpZXcgb24gaW5zdGFsbC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBEYXRhdmlld1NldHRpbmdzID0ge1xuICAgIC4uLkRFRkFVTFRfUVVFUllfU0VUVElOR1MsXG4gICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsXG4gICAgLi4ue1xuICAgICAgICBpbmxpbmVRdWVyeVByZWZpeDogXCI9XCIsXG4gICAgICAgIGlubGluZUpzUXVlcnlQcmVmaXg6IFwiJD1cIixcbiAgICAgICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogdHJ1ZSxcbiAgICAgICAgZW5hYmxlSW5saW5lRGF0YXZpZXc6IHRydWUsXG4gICAgICAgIGVuYWJsZURhdGF2aWV3SnM6IGZhbHNlLFxuICAgICAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBmYWxzZSxcbiAgICAgICAgcHJldHR5UmVuZGVySW5saW5lRmllbGRzOiB0cnVlLFxuICAgICAgICBkYXRhdmlld0pzS2V5d29yZDogXCJkYXRhdmlld2pzXCIsXG4gICAgfSxcbn07XG4iLCAiLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqL1xuZXhwb3J0IGNsYXNzIFN1Y2Nlc3M8VCwgRT4ge1xuICAgIHB1YmxpYyBzdWNjZXNzZnVsOiB0cnVlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogVCkge1xuICAgICAgICB0aGlzLnN1Y2Nlc3NmdWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXA8VT4oZjogKGE6IFQpID0+IFUpOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1Y2Nlc3MoZih0aGlzLnZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZsYXRNYXA8VT4oZjogKGE6IFQpID0+IFJlc3VsdDxVLCBFPik6IFJlc3VsdDxVLCBFPiB7XG4gICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXBFcnI8VT4oZjogKGU6IEUpID0+IFUpOiBSZXN1bHQ8VCwgVT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnkgYXMgUmVzdWx0PFQsIFU+O1xuICAgIH1cblxuICAgIHB1YmxpYyBiaW1hcDxUMiwgRTI+KHN1Y2M6IChhOiBUKSA9PiBUMiwgX2ZhaWw6IChiOiBFKSA9PiBFMik6IFJlc3VsdDxUMiwgRTI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwKHN1Y2MpIGFzIGFueTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3JFbHNlKF92YWx1ZTogVCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FzdDxVPigpOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yRWxzZVRocm93KF9tZXNzYWdlPzogKGU6IEUpID0+IHN0cmluZyk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG59XG5cbi8qKiBGdW5jdGlvbmFsIHJldHVybiB0eXBlIGZvciBlcnJvciBoYW5kbGluZy4gKi9cbmV4cG9ydCBjbGFzcyBGYWlsdXJlPFQsIEU+IHtcbiAgICBwdWJsaWMgc3VjY2Vzc2Z1bDogZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGVycm9yOiBFKSB7XG4gICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXA8VT4oX2Y6IChhOiBUKSA9PiBVKTogUmVzdWx0PFUsIEU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55IGFzIEZhaWx1cmU8VSwgRT47XG4gICAgfVxuXG4gICAgcHVibGljIGZsYXRNYXA8VT4oX2Y6IChhOiBUKSA9PiBSZXN1bHQ8VSwgRT4pOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnkgYXMgRmFpbHVyZTxVLCBFPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwRXJyPFU+KGY6IChlOiBFKSA9PiBVKTogUmVzdWx0PFQsIFU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBiaW1hcDxUMiwgRTI+KF9zdWNjOiAoYTogVCkgPT4gVDIsIGZhaWw6IChiOiBFKSA9PiBFMik6IFJlc3VsdDxUMiwgRTI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRXJyKGZhaWwpIGFzIGFueTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3JFbHNlKHZhbHVlOiBUKTogVCB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FzdDxVPigpOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yRWxzZVRocm93KG1lc3NhZ2U/OiAoZTogRSkgPT4gc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChtZXNzYWdlKSB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSh0aGlzLmVycm9yKSk7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiXCIgKyB0aGlzLmVycm9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFJlc3VsdDxULCBFPiA9IFN1Y2Nlc3M8VCwgRT4gfCBGYWlsdXJlPFQsIEU+O1xuXG4vKiogTW9uYWRpYyAnUmVzdWx0JyB0eXBlIHdoaWNoIGVuY2Fwc3VsYXRlcyB3aGV0aGVyIGEgcHJvY2VkdXJlIHN1Y2NlZWRlZCBvciBmYWlsZWQsIGFzIHdlbGwgYXMgaXQncyByZXR1cm4gdmFsdWUuICovXG5leHBvcnQgbmFtZXNwYWNlIFJlc3VsdCB7XG4gICAgLyoqIENvbnN0cnVjdCBhIG5ldyBzdWNjZXNzIHJlc3VsdCB3cmFwcGluZyB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHN1Y2Nlc3M8VCwgRT4odmFsdWU6IFQpOiBSZXN1bHQ8VCwgRT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1Y2Nlc3ModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZhaWx1cmU8VCwgRT4oZXJyb3I6IEUpOiBSZXN1bHQ8VCwgRT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZhaWx1cmUoZXJyb3IpO1xuICAgIH1cblxuICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gZmxhdE1hcDI8VDEsIFQyLCBPLCBFPihcbiAgICAgICAgZmlyc3Q6IFJlc3VsdDxUMSwgRT4sXG4gICAgICAgIHNlY29uZDogUmVzdWx0PFQyLCBFPixcbiAgICAgICAgZjogKGE6IFQxLCBiOiBUMikgPT4gUmVzdWx0PE8sIEU+XG4gICAgKTogUmVzdWx0PE8sIEU+IHtcbiAgICAgICAgaWYgKGZpcnN0LnN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIGlmIChzZWNvbmQuc3VjY2Vzc2Z1bCkgcmV0dXJuIGYoZmlyc3QudmFsdWUsIHNlY29uZC52YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG1hcDI8VDEsIFQyLCBPLCBFPihcbiAgICAgICAgZmlyc3Q6IFJlc3VsdDxUMSwgRT4sXG4gICAgICAgIHNlY29uZDogUmVzdWx0PFQyLCBFPixcbiAgICAgICAgZjogKGE6IFQxLCBiOiBUMikgPT4gT1xuICAgICk6IFJlc3VsdDxPLCBFPiB7XG4gICAgICAgIHJldHVybiBmbGF0TWFwMihmaXJzdCwgc2Vjb25kLCAoYSwgYikgPT4gc3VjY2VzcyhmKGEsIGIpKSk7XG4gICAgfVxufVxuIiwgIiFmdW5jdGlvbihuLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHQpOlwib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuUGFyc2ltbW9uPXQoKTpuLlBhcnNpbW1vbj10KCl9KFwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD17fTtmdW5jdGlvbiByKGUpe2lmKHRbZV0pcmV0dXJuIHRbZV0uZXhwb3J0czt2YXIgdT10W2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gbltlXS5jYWxsKHUuZXhwb3J0cyx1LHUuZXhwb3J0cyxyKSx1Lmw9ITAsdS5leHBvcnRzfXJldHVybiByLm09bixyLmM9dCxyLmQ9ZnVuY3Rpb24obix0LGUpe3IubyhuLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobix0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pfSxyLnI9ZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LHIubj1mdW5jdGlvbihuKXt2YXIgdD1uJiZuLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBufTtyZXR1cm4gci5kKHQsXCJhXCIsdCksdH0sci5vPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpfSxyLnA9XCJcIixyKHIucz0wKX0oW2Z1bmN0aW9uKG4sdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBlKG4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIGUpKXJldHVybiBuZXcgZShuKTt0aGlzLl89bn12YXIgdT1lLnByb3RvdHlwZTtmdW5jdGlvbiBvKG4sdCl7Zm9yKHZhciByPTA7cjxuO3IrKyl0KHIpfWZ1bmN0aW9uIGkobix0LHIpe3JldHVybiBmdW5jdGlvbihuLHQpe28odC5sZW5ndGgsZnVuY3Rpb24ocil7bih0W3JdLHIsdCl9KX0oZnVuY3Rpb24ocixlLHUpe3Q9bih0LHIsZSx1KX0sciksdH1mdW5jdGlvbiBhKG4sdCl7cmV0dXJuIGkoZnVuY3Rpb24odCxyLGUsdSl7cmV0dXJuIHQuY29uY2F0KFtuKHIsZSx1KV0pfSxbXSx0KX1mdW5jdGlvbiBmKG4sdCl7dmFyIHI9e3Y6MCxidWY6dH07cmV0dXJuIG8obixmdW5jdGlvbigpe3ZhciBuO3I9e3Y6ci52PDwxfChuPXIuYnVmLG5bMF0+PjcpLGJ1ZjpmdW5jdGlvbihuKXt2YXIgdD1pKGZ1bmN0aW9uKG4sdCxyLGUpe3JldHVybiBuLmNvbmNhdChyPT09ZS5sZW5ndGgtMT9CdWZmZXIuZnJvbShbdCwwXSkucmVhZFVJbnQxNkJFKDApOmUucmVhZFVJbnQxNkJFKHIpKX0sW10sbik7cmV0dXJuIEJ1ZmZlci5mcm9tKGEoZnVuY3Rpb24obil7cmV0dXJuKG48PDEmNjU1MzUpPj44fSx0KSl9KHIuYnVmKX19KSxyfWZ1bmN0aW9uIGMoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgQnVmZmVyfWZ1bmN0aW9uIHMoKXtpZighYygpKXRocm93IG5ldyBFcnJvcihcIkJ1ZmZlciBnbG9iYWwgZG9lcyBub3QgZXhpc3Q7IHBsZWFzZSB1c2Ugd2VicGFjayBpZiB5b3UgbmVlZCB0byBwYXJzZSBCdWZmZXJzIGluIHRoZSBicm93c2VyLlwiKX1mdW5jdGlvbiBsKG4pe3MoKTt2YXIgdD1pKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdH0sMCxuKTtpZih0JTghPTApdGhyb3cgbmV3IEVycm9yKFwiVGhlIGJpdHMgW1wiK24uam9pbihcIiwgXCIpK1wiXSBhZGQgdXAgdG8gXCIrdCtcIiB3aGljaCBpcyBub3QgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXM7IHRoZSB0b3RhbCBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IDhcIik7dmFyIHIsdT10Lzgsbz0ocj1mdW5jdGlvbihuKXtyZXR1cm4gbj40OH0saShmdW5jdGlvbihuLHQpe3JldHVybiBufHwocih0KT90Om4pfSxudWxsLG4pKTtpZihvKXRocm93IG5ldyBFcnJvcihvK1wiIGJpdCByYW5nZSByZXF1ZXN0ZWQgZXhjZWVkcyA0OCBiaXQgKDYgYnl0ZSkgTnVtYmVyIG1heC5cIik7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHQscil7dmFyIGU9dStyO3JldHVybiBlPnQubGVuZ3RoP3gocix1LnRvU3RyaW5nKCkrXCIgYnl0ZXNcIik6YihlLGkoZnVuY3Rpb24obix0KXt2YXIgcj1mKHQsbi5idWYpO3JldHVybntjb2xsOm4uY29sbC5jb25jYXQoci52KSxidWY6ci5idWZ9fSx7Y29sbDpbXSxidWY6dC5zbGljZShyLGUpfSxuKS5jb2xsKX0pfWZ1bmN0aW9uIGgobix0KXtyZXR1cm4gbmV3IGUoZnVuY3Rpb24ocixlKXtyZXR1cm4gcygpLGUrdD5yLmxlbmd0aD94KGUsdCtcIiBieXRlcyBmb3IgXCIrbik6YihlK3Qsci5zbGljZShlLGUrdCkpfSl9ZnVuY3Rpb24gcChuLHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZihyPXQpfHxNYXRoLmZsb29yKHIpIT09cnx8dDwwfHx0PjYpdGhyb3cgbmV3IEVycm9yKG4rXCIgcmVxdWlyZXMgaW50ZWdlciBsZW5ndGggaW4gcmFuZ2UgWzAsIDZdLlwiKTt2YXIgcn1mdW5jdGlvbiBkKG4pe3JldHVybiBwKFwidWludEJFXCIsbiksaChcInVpbnRCRShcIituK1wiKVwiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludEJFKDAsbil9KX1mdW5jdGlvbiB2KG4pe3JldHVybiBwKFwidWludExFXCIsbiksaChcInVpbnRMRShcIituK1wiKVwiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkVUludExFKDAsbil9KX1mdW5jdGlvbiBnKG4pe3JldHVybiBwKFwiaW50QkVcIixuKSxoKFwiaW50QkUoXCIrbitcIilcIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludEJFKDAsbil9KX1mdW5jdGlvbiBtKG4pe3JldHVybiBwKFwiaW50TEVcIixuKSxoKFwiaW50TEUoXCIrbitcIilcIixuKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVhZEludExFKDAsbil9KX1mdW5jdGlvbiB5KG4pe3JldHVybiBuIGluc3RhbmNlb2YgZX1mdW5jdGlvbiBFKG4pe3JldHVyblwiW29iamVjdCBBcnJheV1cIj09PXt9LnRvU3RyaW5nLmNhbGwobil9ZnVuY3Rpb24gdyhuKXtyZXR1cm4gYygpJiZCdWZmZXIuaXNCdWZmZXIobil9ZnVuY3Rpb24gYihuLHQpe3JldHVybntzdGF0dXM6ITAsaW5kZXg6bix2YWx1ZTp0LGZ1cnRoZXN0Oi0xLGV4cGVjdGVkOltdfX1mdW5jdGlvbiB4KG4sdCl7cmV0dXJuIEUodCl8fCh0PVt0XSkse3N0YXR1czohMSxpbmRleDotMSx2YWx1ZTpudWxsLGZ1cnRoZXN0Om4sZXhwZWN0ZWQ6dH19ZnVuY3Rpb24gQihuLHQpe2lmKCF0KXJldHVybiBuO2lmKG4uZnVydGhlc3Q+dC5mdXJ0aGVzdClyZXR1cm4gbjt2YXIgcj1uLmZ1cnRoZXN0PT09dC5mdXJ0aGVzdD9mdW5jdGlvbihuLHQpe2lmKGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09ZS5fc3VwcG9ydHNTZXQpcmV0dXJuIGUuX3N1cHBvcnRzU2V0O3ZhciBuPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTZXQ7cmV0dXJuIGUuX3N1cHBvcnRzU2V0PW4sbn0oKSYmQXJyYXkuZnJvbSl7Zm9yKHZhciByPW5ldyBTZXQobiksdT0wO3U8dC5sZW5ndGg7dSsrKXIuYWRkKHRbdV0pO3ZhciBvPUFycmF5LmZyb20ocik7cmV0dXJuIG8uc29ydCgpLG99Zm9yKHZhciBpPXt9LGE9MDthPG4ubGVuZ3RoO2ErKylpW25bYV1dPSEwO2Zvcih2YXIgZj0wO2Y8dC5sZW5ndGg7ZisrKWlbdFtmXV09ITA7dmFyIGM9W107Zm9yKHZhciBzIGluIGkpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJmMucHVzaChzKTtyZXR1cm4gYy5zb3J0KCksY30obi5leHBlY3RlZCx0LmV4cGVjdGVkKTp0LmV4cGVjdGVkO3JldHVybntzdGF0dXM6bi5zdGF0dXMsaW5kZXg6bi5pbmRleCx2YWx1ZTpuLnZhbHVlLGZ1cnRoZXN0OnQuZnVydGhlc3QsZXhwZWN0ZWQ6cn19dmFyIGo9e307ZnVuY3Rpb24gUyhuLHQpe2lmKHcobikpcmV0dXJue29mZnNldDp0LGxpbmU6LTEsY29sdW1uOi0xfTtuIGluIGp8fChqW25dPXt9KTtmb3IodmFyIHI9altuXSxlPTAsdT0wLG89MCxpPXQ7aT49MDspe2lmKGkgaW4gcil7ZT1yW2ldLmxpbmUsMD09PW8mJihvPXJbaV0ubGluZVN0YXJ0KTticmVha30oXCJcXG5cIj09PW4uY2hhckF0KGkpfHxcIlxcclwiPT09bi5jaGFyQXQoaSkmJlwiXFxuXCIhPT1uLmNoYXJBdChpKzEpKSYmKHUrKywwPT09byYmKG89aSsxKSksaS0tfXZhciBhPWUrdSxmPXQtbztyZXR1cm4gclt0XT17bGluZTphLGxpbmVTdGFydDpvfSx7b2Zmc2V0OnQsbGluZTphKzEsY29sdW1uOmYrMX19ZnVuY3Rpb24gXyhuKXtpZigheShuKSl0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBwYXJzZXI6IFwiK24pfWZ1bmN0aW9uIEwobix0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2Ygbj9uLmNoYXJBdCh0KTpuW3RdfWZ1bmN0aW9uIE8obil7aWYoXCJudW1iZXJcIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKFwibm90IGEgbnVtYmVyOiBcIituKX1mdW5jdGlvbiBrKG4pe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKFwibm90IGEgZnVuY3Rpb246IFwiK24pfWZ1bmN0aW9uIFAobil7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKFwibm90IGEgc3RyaW5nOiBcIituKX12YXIgcT0yLEE9MyxJPTgsRj01KkksTT00Kkksej1cIiAgXCI7ZnVuY3Rpb24gUihuLHQpe3JldHVybiBuZXcgQXJyYXkodCsxKS5qb2luKG4pfWZ1bmN0aW9uIFUobix0LHIpe3ZhciBlPXQtbi5sZW5ndGg7cmV0dXJuIGU8PTA/bjpSKHIsZSkrbn1mdW5jdGlvbiBXKG4sdCxyLGUpe3JldHVybntmcm9tOm4tdD4wP24tdDowLHRvOm4rcj5lP2U6bityfX1mdW5jdGlvbiBEKG4sdCl7dmFyIHIsZSx1LG8sZixjPXQuaW5kZXgscz1jLm9mZnNldCxsPTE7aWYocz09PW4ubGVuZ3RoKXJldHVyblwiR290IHRoZSBlbmQgb2YgdGhlIGlucHV0XCI7aWYodyhuKSl7dmFyIGg9cy1zJUkscD1zLWgsZD1XKGgsRixNK0ksbi5sZW5ndGgpLHY9YShmdW5jdGlvbihuKXtyZXR1cm4gYShmdW5jdGlvbihuKXtyZXR1cm4gVShuLnRvU3RyaW5nKDE2KSwyLFwiMFwiKX0sbil9LGZ1bmN0aW9uKG4sdCl7dmFyIHI9bi5sZW5ndGgsZT1bXSx1PTA7aWYocjw9dClyZXR1cm5bbi5zbGljZSgpXTtmb3IodmFyIG89MDtvPHI7bysrKWVbdV18fGUucHVzaChbXSksZVt1XS5wdXNoKG5bb10pLChvKzEpJXQ9PTAmJnUrKztyZXR1cm4gZX0obi5zbGljZShkLmZyb20sZC50bykudG9KU09OKCkuZGF0YSxJKSk7bz1mdW5jdGlvbihuKXtyZXR1cm4gMD09PW4uZnJvbSYmMT09PW4udG8/e2Zyb206bi5mcm9tLHRvOm4udG99Ontmcm9tOm4uZnJvbS9JLHRvOk1hdGguZmxvb3Iobi50by9JKX19KGQpLGU9aC9JLHI9MypwLHA+PTQmJihyKz0xKSxsPTIsdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aDw9ND9uLmpvaW4oXCIgXCIpOm4uc2xpY2UoMCw0KS5qb2luKFwiIFwiKStcIiAgXCIrbi5zbGljZSg0KS5qb2luKFwiIFwiKX0sdiksKGY9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihmPTIpfWVsc2V7dmFyIGc9bi5zcGxpdCgvXFxyXFxufFtcXG5cXHJcXHUyMDI4XFx1MjAyOV0vKTtyPWMuY29sdW1uLTEsZT1jLmxpbmUtMSxvPVcoZSxxLEEsZy5sZW5ndGgpLHU9Zy5zbGljZShvLmZyb20sby50byksZj1vLnRvLnRvU3RyaW5nKCkubGVuZ3RofXZhciBtPWUtby5mcm9tO3JldHVybiB3KG4pJiYoZj0oOCooby50bz4wP28udG8tMTpvLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKGY9MiksaShmdW5jdGlvbih0LGUsdSl7dmFyIGksYT11PT09bSxjPWE/XCI+IFwiOno7cmV0dXJuIGk9dyhuKT9VKCg4KihvLmZyb20rdSkpLnRvU3RyaW5nKDE2KSxmLFwiMFwiKTpVKChvLmZyb20rdSsxKS50b1N0cmluZygpLGYsXCIgXCIpLFtdLmNvbmNhdCh0LFtjK2krXCIgfCBcIitlXSxhP1t6K1IoXCIgXCIsZikrXCIgfCBcIitVKFwiXCIscixcIiBcIikrUihcIl5cIixsKV06W10pfSxbXSx1KS5qb2luKFwiXFxuXCIpfWZ1bmN0aW9uIE4obix0KXtyZXR1cm5bXCJcXG5cIixcIi0tIFBBUlNJTkcgRkFJTEVEIFwiK1IoXCItXCIsNTApLFwiXFxuXFxuXCIsRChuLHQpLFwiXFxuXFxuXCIsKHI9dC5leHBlY3RlZCwxPT09ci5sZW5ndGg/XCJFeHBlY3RlZDpcXG5cXG5cIityWzBdOlwiRXhwZWN0ZWQgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFxcblxcblwiK3Iuam9pbihcIiwgXCIpKSxcIlxcblwiXS5qb2luKFwiXCIpO3ZhciByfWZ1bmN0aW9uIEcobil7cmV0dXJuIHZvaWQgMCE9PW4uZmxhZ3M/bi5mbGFnczpbbi5nbG9iYWw/XCJnXCI6XCJcIixuLmlnbm9yZUNhc2U/XCJpXCI6XCJcIixuLm11bHRpbGluZT9cIm1cIjpcIlwiLG4udW5pY29kZT9cInVcIjpcIlwiLG4uc3RpY2t5P1wieVwiOlwiXCJdLmpvaW4oXCJcIil9ZnVuY3Rpb24gQygpe2Zvcih2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aCxyPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe2Zvcih2YXIgdSxvPW5ldyBBcnJheSh0KSxpPTA7aTx0O2krPTEpe2lmKCEodT1CKG5baV0uXyhyLGUpLHUpKS5zdGF0dXMpcmV0dXJuIHU7b1tpXT11LnZhbHVlLGU9dS5pbmRleH1yZXR1cm4gQihiKGUsbyksdSl9KX1mdW5jdGlvbiBKKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJzZXFNYXAgbmVlZHMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50XCIpO3ZhciB0PW4ucG9wKCk7cmV0dXJuIGsodCksQy5hcHBseShudWxsLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdC5hcHBseShudWxsLG4pfSl9ZnVuY3Rpb24gVCgpe3ZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoO2lmKDA9PT10KXJldHVybiBZKFwiemVybyBhbHRlcm5hdGVzXCIpO2Zvcih2YXIgcj0wO3I8dDtyKz0xKV8obltyXSk7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGUsdT0wO3U8bi5sZW5ndGg7dSs9MSlpZigoZT1CKG5bdV0uXyh0LHIpLGUpKS5zdGF0dXMpcmV0dXJuIGU7cmV0dXJuIGV9KX1mdW5jdGlvbiBWKG4sdCl7cmV0dXJuIEgobix0KS5vcihYKFtdKSl9ZnVuY3Rpb24gSChuLHQpe3JldHVybiBfKG4pLF8odCksSihuLHQudGhlbihuKS5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm5bbl0uY29uY2F0KHQpfSl9ZnVuY3Rpb24gSyhuKXtQKG4pO3ZhciB0PVwiJ1wiK24rXCInXCI7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT1lK24ubGVuZ3RoLG89ci5zbGljZShlLHUpO3JldHVybiBvPT09bj9iKHUsbyk6eChlLHQpfSl9ZnVuY3Rpb24gUShuLHQpeyFmdW5jdGlvbihuKXtpZighKG4gaW5zdGFuY2VvZiBSZWdFeHApKXRocm93IG5ldyBFcnJvcihcIm5vdCBhIHJlZ2V4cDogXCIrbik7Zm9yKHZhciB0PUcobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgZT10LmNoYXJBdChyKTtpZihcImlcIiE9PWUmJlwibVwiIT09ZSYmXCJ1XCIhPT1lJiZcInNcIiE9PWUpdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCByZWdleHAgZmxhZyBcIicrZSsnXCI6ICcrbil9fShuKSxhcmd1bWVudHMubGVuZ3RoPj0yP08odCk6dD0wO3ZhciByPWZ1bmN0aW9uKG4pe3JldHVybiBSZWdFeHAoXCJeKD86XCIrbi5zb3VyY2UrXCIpXCIsRyhuKSl9KG4pLHU9XCJcIituO3JldHVybiBlKGZ1bmN0aW9uKG4sZSl7dmFyIG89ci5leGVjKG4uc2xpY2UoZSkpO2lmKG8pe2lmKDA8PXQmJnQ8PW8ubGVuZ3RoKXt2YXIgaT1vWzBdLGE9b1t0XTtyZXR1cm4gYihlK2kubGVuZ3RoLGEpfXJldHVybiB4KGUsXCJ2YWxpZCBtYXRjaCBncm91cCAoMCB0byBcIitvLmxlbmd0aCtcIikgaW4gXCIrdSl9cmV0dXJuIHgoZSx1KX0pfWZ1bmN0aW9uIFgobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4gYihyLG4pfSl9ZnVuY3Rpb24gWShuKXtyZXR1cm4gZShmdW5jdGlvbih0LHIpe3JldHVybiB4KHIsbil9KX1mdW5jdGlvbiBaKG4pe2lmKHkobikpcmV0dXJuIGUoZnVuY3Rpb24odCxyKXt2YXIgZT1uLl8odCxyKTtyZXR1cm4gZS5pbmRleD1yLGUudmFsdWU9XCJcIixlfSk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIG4pcmV0dXJuIFooSyhuKSk7aWYobiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gWihRKG4pKTt0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBzdHJpbmcsIHJlZ2V4cCwgb3IgcGFyc2VyOiBcIituKX1mdW5jdGlvbiAkKG4pe3JldHVybiBfKG4pLGUoZnVuY3Rpb24odCxyKXt2YXIgZT1uLl8odCxyKSx1PXQuc2xpY2UocixlLmluZGV4KTtyZXR1cm4gZS5zdGF0dXM/eChyLCdub3QgXCInK3UrJ1wiJyk6YihyLG51bGwpfSl9ZnVuY3Rpb24gbm4obil7cmV0dXJuIGsobiksZShmdW5jdGlvbih0LHIpe3ZhciBlPUwodCxyKTtyZXR1cm4gcjx0Lmxlbmd0aCYmbihlKT9iKHIrMSxlKTp4KHIsXCJhIGNoYXJhY3Rlci9ieXRlIG1hdGNoaW5nIFwiK24pfSl9ZnVuY3Rpb24gdG4obix0KXthcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj12b2lkIDApO3ZhciByPWUoZnVuY3Rpb24obixlKXtyZXR1cm4gci5fPXQoKS5fLHIuXyhuLGUpfSk7cmV0dXJuIG4/ci5kZXNjKG4pOnJ9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gWShcImZhbnRhc3ktbGFuZC9lbXB0eVwiKX11LnBhcnNlPWZ1bmN0aW9uKG4pe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBuJiYhdyhuKSl0aHJvdyBuZXcgRXJyb3IoXCIucGFyc2UgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHN0cmluZyBvciBCdWZmZXIgYXMgaXRzIGFyZ3VtZW50XCIpO3ZhciB0LHI9dGhpcy5za2lwKGFuKS5fKG4sMCk7cmV0dXJuIHQ9ci5zdGF0dXM/e3N0YXR1czohMCx2YWx1ZTpyLnZhbHVlfTp7c3RhdHVzOiExLGluZGV4OlMobixyLmZ1cnRoZXN0KSxleHBlY3RlZDpyLmV4cGVjdGVkfSxkZWxldGUgaltuXSx0fSx1LnRyeVBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMucGFyc2Uobik7aWYodC5zdGF0dXMpcmV0dXJuIHQudmFsdWU7dmFyIHI9TihuLHQpLGU9bmV3IEVycm9yKHIpO3Rocm93IGUudHlwZT1cIlBhcnNpbW1vbkVycm9yXCIsZS5yZXN1bHQ9dCxlfSx1LmFzc2VydD1mdW5jdGlvbihuLHQpe3JldHVybiB0aGlzLmNoYWluKGZ1bmN0aW9uKHIpe3JldHVybiBuKHIpP1gocik6WSh0KX0pfSx1Lm9yPWZ1bmN0aW9uKG4pe3JldHVybiBUKHRoaXMsbil9LHUudHJpbT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy53cmFwKG4sbil9LHUud3JhcD1mdW5jdGlvbihuLHQpe3JldHVybiBKKG4sdGhpcyx0LGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHR9KX0sdS50aHJ1PWZ1bmN0aW9uKG4pe3JldHVybiBuKHRoaXMpfSx1LnRoZW49ZnVuY3Rpb24obil7cmV0dXJuIF8obiksQyh0aGlzLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gblsxXX0pfSx1Lm1hbnk9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPVtdLHU9dm9pZCAwOzspe2lmKCEodT1CKG4uXyh0LHIpLHUpKS5zdGF0dXMpcmV0dXJuIEIoYihyLGUpLHUpO2lmKHI9PT11LmluZGV4KXRocm93IG5ldyBFcnJvcihcImluZmluaXRlIGxvb3AgZGV0ZWN0ZWQgaW4gLm1hbnkoKSBwYXJzZXIgLS0tIGNhbGxpbmcgLm1hbnkoKSBvbiBhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZVwiKTtyPXUuaW5kZXgsZS5wdXNoKHUudmFsdWUpfX0pfSx1LnRpZVdpdGg9ZnVuY3Rpb24obil7cmV0dXJuIFAobiksdGhpcy5tYXAoZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24obil7aWYoIUUobikpdGhyb3cgbmV3IEVycm9yKFwibm90IGFuIGFycmF5OiBcIituKX0odCksdC5sZW5ndGgpe1AodFswXSk7Zm9yKHZhciByPXRbMF0sZT0xO2U8dC5sZW5ndGg7ZSsrKVAodFtlXSkscis9bit0W2VdO3JldHVybiByfXJldHVyblwiXCJ9KX0sdS50aWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWVXaXRoKFwiXCIpfSx1LnRpbWVzPWZ1bmN0aW9uKG4sdCl7dmFyIHI9dGhpcztyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD1uKSxPKG4pLE8odCksZShmdW5jdGlvbihlLHUpe2Zvcih2YXIgbz1bXSxpPXZvaWQgMCxhPXZvaWQgMCxmPTA7ZjxuO2YrPTEpe2lmKGE9QihpPXIuXyhlLHUpLGEpLCFpLnN0YXR1cylyZXR1cm4gYTt1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpfWZvcig7Zjx0JiYoYT1CKGk9ci5fKGUsdSksYSksaS5zdGF0dXMpO2YrPTEpdT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTtyZXR1cm4gQihiKHUsbyksYSl9KX0sdS5yZXN1bHQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sdS5hdE1vc3Q9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMudGltZXMoMCxuKX0sdS5hdExlYXN0PWZ1bmN0aW9uKG4pe3JldHVybiBKKHRoaXMudGltZXMobiksdGhpcy5tYW55KCksZnVuY3Rpb24obix0KXtyZXR1cm4gbi5jb25jYXQodCl9KX0sdS5tYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0IoYih1LmluZGV4LG4odS52YWx1ZSkpLHUpOnV9KX0sdS5jb250cmFtYXA9ZnVuY3Rpb24obil7ayhuKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5wYXJzZShuKHIuc2xpY2UoZSkpKTtyZXR1cm4gdS5zdGF0dXM/YihlK3IubGVuZ3RoLHUudmFsdWUpOnV9KX0sdS5wcm9tYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gayhuKSxrKHQpLHRoaXMuY29udHJhbWFwKG4pLm1hcCh0KX0sdS5za2lwPWZ1bmN0aW9uKG4pe3JldHVybiBDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSl9LHUubWFyaz1mdW5jdGlvbigpe3JldHVybiBKKGVuLHRoaXMsZW4sZnVuY3Rpb24obix0LHIpe3JldHVybntzdGFydDpuLHZhbHVlOnQsZW5kOnJ9fSl9LHUubm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKHQscixlKXtyZXR1cm57bmFtZTpuLHZhbHVlOnIsc3RhcnQ6dCxlbmQ6ZX19KX0sdS5zZXBCeT1mdW5jdGlvbihuKXtyZXR1cm4gVih0aGlzLG4pfSx1LnNlcEJ5MT1mdW5jdGlvbihuKXtyZXR1cm4gSCh0aGlzLG4pfSx1Lmxvb2thaGVhZD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5za2lwKFoobikpfSx1Lm5vdEZvbGxvd2VkQnk9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcCgkKG4pKX0sdS5kZXNjPWZ1bmN0aW9uKG4pe0Uobil8fChuPVtuXSk7dmFyIHQ9dGhpcztyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PXQuXyhyLGUpO3JldHVybiB1LnN0YXR1c3x8KHUuZXhwZWN0ZWQ9biksdX0pfSx1LmZhbGxiYWNrPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLm9yKFgobikpfSx1LmFwPWZ1bmN0aW9uKG4pe3JldHVybiBKKG4sdGhpcyxmdW5jdGlvbihuLHQpe3JldHVybiBuKHQpfSl9LHUuY2hhaW49ZnVuY3Rpb24obil7dmFyIHQ9dGhpcztyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PXQuXyhyLGUpO3JldHVybiB1LnN0YXR1cz9CKG4odS52YWx1ZSkuXyhyLHUuaW5kZXgpLHUpOnV9KX0sdS5jb25jYXQ9dS5vcix1LmVtcHR5PXJuLHUub2Y9WCx1W1wiZmFudGFzeS1sYW5kL2FwXCJdPXUuYXAsdVtcImZhbnRhc3ktbGFuZC9jaGFpblwiXT11LmNoYWluLHVbXCJmYW50YXN5LWxhbmQvY29uY2F0XCJdPXUuY29uY2F0LHVbXCJmYW50YXN5LWxhbmQvZW1wdHlcIl09dS5lbXB0eSx1W1wiZmFudGFzeS1sYW5kL29mXCJdPXUub2YsdVtcImZhbnRhc3ktbGFuZC9tYXBcIl09dS5tYXA7dmFyIGVuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gYih0LFMobix0KSl9KSx1bj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ+PW4ubGVuZ3RoP3godCxcImFueSBjaGFyYWN0ZXIvYnl0ZVwiKTpiKHQrMSxMKG4sdCkpfSksb249ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKG4ubGVuZ3RoLG4uc2xpY2UodCkpfSksYW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0PG4ubGVuZ3RoP3godCxcIkVPRlwiKTpiKHQsbnVsbCl9KSxmbj1RKC9bMC05XS8pLmRlc2MoXCJhIGRpZ2l0XCIpLGNuPVEoL1swLTldKi8pLmRlc2MoXCJvcHRpb25hbCBkaWdpdHNcIiksc249USgvW2Etel0vaSkuZGVzYyhcImEgbGV0dGVyXCIpLGxuPVEoL1thLXpdKi9pKS5kZXNjKFwib3B0aW9uYWwgbGV0dGVyc1wiKSxobj1RKC9cXHMqLykuZGVzYyhcIm9wdGlvbmFsIHdoaXRlc3BhY2VcIikscG49USgvXFxzKy8pLmRlc2MoXCJ3aGl0ZXNwYWNlXCIpLGRuPUsoXCJcXHJcIiksdm49SyhcIlxcblwiKSxnbj1LKFwiXFxyXFxuXCIpLG1uPVQoZ24sdm4sZG4pLmRlc2MoXCJuZXdsaW5lXCIpLHluPVQobW4sYW4pO2UuYWxsPW9uLGUuYWx0PVQsZS5hbnk9dW4sZS5jcj1kbixlLmNyZWF0ZUxhbmd1YWdlPWZ1bmN0aW9uKG4pe3ZhciB0PXt9O2Zvcih2YXIgciBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiZmdW5jdGlvbihyKXt0W3JdPXRuKGZ1bmN0aW9uKCl7cmV0dXJuIG5bcl0odCl9KX0ocik7cmV0dXJuIHR9LGUuY3JsZj1nbixlLmN1c3RvbT1mdW5jdGlvbihuKXtyZXR1cm4gZShuKGIseCkpfSxlLmRpZ2l0PWZuLGUuZGlnaXRzPWNuLGUuZW1wdHk9cm4sZS5lbmQ9eW4sZS5lb2Y9YW4sZS5mYWlsPVksZS5mb3JtYXRFcnJvcj1OLGUuaW5kZXg9ZW4sZS5pc1BhcnNlcj15LGUubGF6eT10bixlLmxldHRlcj1zbixlLmxldHRlcnM9bG4sZS5sZj12bixlLmxvb2thaGVhZD1aLGUubWFrZUZhaWx1cmU9eCxlLm1ha2VTdWNjZXNzPWIsZS5uZXdsaW5lPW1uLGUubm9uZU9mPWZ1bmN0aW9uKG4pe3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPDB9KS5kZXNjKFwibm9uZSBvZiAnXCIrbitcIidcIil9LGUubm90Rm9sbG93ZWRCeT0kLGUub2Y9WCxlLm9uZU9mPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1uLnNwbGl0KFwiXCIpLHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPVwiJ1wiK3Rbcl0rXCInXCI7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk+PTB9KS5kZXNjKHQpfSxlLm9wdFdoaXRlc3BhY2U9aG4sZS5QYXJzZXI9ZSxlLnJhbmdlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG5uKGZ1bmN0aW9uKHIpe3JldHVybiBuPD1yJiZyPD10fSkuZGVzYyhuK1wiLVwiK3QpfSxlLnJlZ2V4PVEsZS5yZWdleHA9USxlLnNlcEJ5PVYsZS5zZXBCeTE9SCxlLnNlcT1DLGUuc2VxTWFwPUosZS5zZXFPYmo9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD17fSxyPTAsdT0obj1hcmd1bWVudHMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobikpLG89dS5sZW5ndGgsaT0wO2k8bztpKz0xKXt2YXIgYT11W2ldO2lmKCF5KGEpKXtpZihFKGEpJiYyPT09YS5sZW5ndGgmJlwic3RyaW5nXCI9PXR5cGVvZiBhWzBdJiZ5KGFbMV0pKXt2YXIgZj1hWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGYpKXRocm93IG5ldyBFcnJvcihcInNlcU9iajogZHVwbGljYXRlIGtleSBcIitmKTt0W2ZdPSEwLHIrKztjb250aW51ZX10aHJvdyBuZXcgRXJyb3IoXCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLlwiKX19aWYoMD09PXIpdGhyb3cgbmV3IEVycm9yKFwic2VxT2JqIGV4cGVjdHMgYXQgbGVhc3Qgb25lIG5hbWVkIHBhcnNlciwgZm91bmQgemVyb1wiKTtyZXR1cm4gZShmdW5jdGlvbihuLHQpe2Zvcih2YXIgcixlPXt9LGk9MDtpPG87aSs9MSl7dmFyIGEsZjtpZihFKHVbaV0pPyhhPXVbaV1bMF0sZj11W2ldWzFdKTooYT1udWxsLGY9dVtpXSksIShyPUIoZi5fKG4sdCkscikpLnN0YXR1cylyZXR1cm4gcjthJiYoZVthXT1yLnZhbHVlKSx0PXIuaW5kZXh9cmV0dXJuIEIoYih0LGUpLHIpfSl9LGUuc3RyaW5nPUssZS5zdWNjZWVkPVgsZS50YWtlV2hpbGU9ZnVuY3Rpb24obil7cmV0dXJuIGsobiksZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1yO2U8dC5sZW5ndGgmJm4oTCh0LGUpKTspZSsrO3JldHVybiBiKGUsdC5zbGljZShyLGUpKX0pfSxlLnRlc3Q9bm4sZS53aGl0ZXNwYWNlPXBuLGVbXCJmYW50YXN5LWxhbmQvZW1wdHlcIl09cm4sZVtcImZhbnRhc3ktbGFuZC9vZlwiXT1YLGUuQmluYXJ5PXtiaXRTZXE6bCxiaXRTZXFPYmo6ZnVuY3Rpb24obil7cygpO3ZhciB0PXt9LHI9MCxlPWEoZnVuY3Rpb24obil7aWYoRShuKSl7dmFyIGU9bjtpZigyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiW1wiK2Uuam9pbihcIiwgXCIpK1wiXSBzaG91bGQgYmUgbGVuZ3RoIDIsIGdvdCBsZW5ndGggXCIrZS5sZW5ndGgpO2lmKFAoZVswXSksTyhlWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlWzBdKSl0aHJvdyBuZXcgRXJyb3IoXCJkdXBsaWNhdGUga2V5IGluIGJpdFNlcU9iajogXCIrZVswXSk7cmV0dXJuIHRbZVswXV09ITAscisrLGV9cmV0dXJuIE8obiksW251bGwsbl19LG4pO2lmKHI8MSl0aHJvdyBuZXcgRXJyb3IoXCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFtcIituLmpvaW4oXCIsIFwiKStcIl1cIik7dmFyIHU9YShmdW5jdGlvbihuKXtyZXR1cm4gblswXX0sZSk7cmV0dXJuIGwoYShmdW5jdGlvbihuKXtyZXR1cm4gblsxXX0sZSkpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gaShmdW5jdGlvbihuLHQpe3JldHVybiBudWxsIT09dFswXSYmKG5bdFswXV09dFsxXSksbn0se30sYShmdW5jdGlvbih0LHIpe3JldHVyblt0LG5bcl1dfSx1KSl9KX0sYnl0ZTpmdW5jdGlvbihuKXtpZihzKCksTyhuKSxuPjI1NSl0aHJvdyBuZXcgRXJyb3IoXCJWYWx1ZSBzcGVjaWZpZWQgdG8gYnl0ZSBjb25zdHJ1Y3RvciAoXCIrbitcIj0weFwiK24udG9TdHJpbmcoMTYpK1wiKSBpcyBsYXJnZXIgaW4gdmFsdWUgdGhhbiBhIHNpbmdsZSBieXRlLlwiKTt2YXIgdD0obj4xNT9cIjB4XCI6XCIweDBcIikrbi50b1N0cmluZygxNik7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT1MKHIsZSk7cmV0dXJuIHU9PT1uP2IoZSsxLHUpOngoZSx0KX0pfSxidWZmZXI6ZnVuY3Rpb24obil7cmV0dXJuIGgoXCJidWZmZXJcIixuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEJ1ZmZlci5mcm9tKG4pfSl9LGVuY29kZWRTdHJpbmc6ZnVuY3Rpb24obix0KXtyZXR1cm4gaChcInN0cmluZ1wiLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhuKX0pfSx1aW50QkU6ZCx1aW50OEJFOmQoMSksdWludDE2QkU6ZCgyKSx1aW50MzJCRTpkKDQpLHVpbnRMRTp2LHVpbnQ4TEU6digxKSx1aW50MTZMRTp2KDIpLHVpbnQzMkxFOnYoNCksaW50QkU6ZyxpbnQ4QkU6ZygxKSxpbnQxNkJFOmcoMiksaW50MzJCRTpnKDQpLGludExFOm0saW50OExFOm0oMSksaW50MTZMRTptKDIpLGludDMyTEU6bSg0KSxmbG9hdEJFOmgoXCJmbG9hdEJFXCIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdEJFKDApfSksZmxvYXRMRTpoKFwiZmxvYXRMRVwiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRMRSgwKX0pLGRvdWJsZUJFOmgoXCJkb3VibGVCRVwiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlQkUoMCl9KSxkb3VibGVMRTpoKFwiZG91YmxlTEVcIiw4KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZERvdWJsZUxFKDApfSl9LG4uZXhwb3J0cz1lfV0pfSk7IiwgIm1vZHVsZS5leHBvcnRzID0gKCkgPT4ge1xuXHQvLyBodHRwczovL210aHMuYmUvZW1vamlcblx0cmV0dXJuIC8oPzpbIyowLTldXFx1RkUwRj9cXHUyMEUzfFtcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRUQtXFx1MjNFRlxcdTIzRjFcXHUyM0YyXFx1MjNGOC1cXHUyM0ZBXFx1MjRDMlxcdTI1QUFcXHUyNUFCXFx1MjVCNlxcdTI1QzBcXHUyNUZCXFx1MjVGQ1xcdTI1RkVcXHUyNjAwLVxcdTI2MDRcXHUyNjBFXFx1MjYxMVxcdTI2MTRcXHUyNjE1XFx1MjYxOFxcdTI2MjBcXHUyNjIyXFx1MjYyM1xcdTI2MjZcXHUyNjJBXFx1MjYyRVxcdTI2MkZcXHUyNjM4LVxcdTI2M0FcXHUyNjQwXFx1MjY0MlxcdTI2NDgtXFx1MjY1M1xcdTI2NUZcXHUyNjYwXFx1MjY2M1xcdTI2NjVcXHUyNjY2XFx1MjY2OFxcdTI2N0JcXHUyNjdFXFx1MjY3RlxcdTI2OTJcXHUyNjk0LVxcdTI2OTdcXHUyNjk5XFx1MjY5QlxcdTI2OUNcXHUyNkEwXFx1MjZBN1xcdTI2QUFcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMC1cXHUyNkY1XFx1MjZGN1xcdTI2RjhcXHUyNkZBXFx1MjcwMlxcdTI3MDhcXHUyNzA5XFx1MjcwRlxcdTI3MTJcXHUyNzE0XFx1MjcxNlxcdTI3MURcXHUyNzIxXFx1MjczM1xcdTI3MzRcXHUyNzQ0XFx1Mjc0N1xcdTI3NTdcXHUyNzYzXFx1MjdBMVxcdTI5MzRcXHUyOTM1XFx1MkIwNS1cXHUyQjA3XFx1MkIxQlxcdTJCMUNcXHUyQjU1XFx1MzAzMFxcdTMwM0RcXHUzMjk3XFx1MzI5OV1cXHVGRTBGP3xbXFx1MjYxRFxcdTI3MENcXHUyNzBEXSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdTI3MEFcXHUyNzBCXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNjkzXFx1MjZBMVxcdTI2QUJcXHUyNkM1XFx1MjZDRVxcdTI2RDRcXHUyNkVBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzk1LVxcdTI3OTdcXHUyN0IwXFx1MjdCRlxcdTJCNTBdfFxcdTI2RjkoPzpcXHVGRTBGfFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdTI3NjRcXHVGRTBGPyg/OlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSkpP3xcXHVEODNDKD86W1xcdURDMDRcXHVERDcwXFx1REQ3MVxcdUREN0VcXHVERDdGXFx1REUwMlxcdURFMzdcXHVERjIxXFx1REYyNC1cXHVERjJDXFx1REYzNlxcdURGN0RcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUVcXHVERjlGXFx1REZDRFxcdURGQ0VcXHVERkQ0LVxcdURGREZcXHVERkY1XFx1REZGN11cXHVGRTBGP3xbXFx1REY4NVxcdURGQzJcXHVERkM3XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVERkMzXFx1REZDNFxcdURGQ0FdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdURGQ0JcXHVERkNDXSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdURDQ0ZcXHVERDhFXFx1REQ5MS1cXHVERDlBXFx1REUwMVxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTM2XFx1REUzOC1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjBcXHVERjJELVxcdURGMzVcXHVERjM3LVxcdURGN0NcXHVERjdFLVxcdURGODRcXHVERjg2LVxcdURGOTNcXHVERkEwLVxcdURGQzFcXHVERkM1XFx1REZDNlxcdURGQzhcXHVERkM5XFx1REZDRi1cXHVERkQzXFx1REZFMC1cXHVERkYwXFx1REZGOC1cXHVERkZGXXxcXHVEREU2XFx1RDgzQ1tcXHVEREU4LVxcdURERUNcXHVEREVFXFx1RERGMVxcdURERjJcXHVEREY0XFx1RERGNi1cXHVEREZBXFx1RERGQ1xcdURERkRcXHVEREZGXXxcXHVEREU3XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdfFxcdURERThcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFOVxcdURERUItXFx1RERFRVxcdURERjAtXFx1RERGNVxcdURERjdcXHVEREZBLVxcdURERkZdfFxcdURERTlcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdfFxcdURERUFcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXXxcXHVEREVCXFx1RDgzQ1tcXHVEREVFLVxcdURERjBcXHVEREYyXFx1RERGNFxcdURERjddfFxcdURERUNcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdfFxcdURERURcXHVEODNDW1xcdURERjBcXHVEREYyXFx1RERGM1xcdURERjdcXHVEREY5XFx1RERGQV18XFx1RERFRVxcdUQ4M0NbXFx1RERFOC1cXHVEREVBXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XXxcXHVEREVGXFx1RDgzQ1tcXHVEREVBXFx1RERGMlxcdURERjRcXHVEREY1XXxcXHVEREYwXFx1RDgzQ1tcXHVEREVBXFx1RERFQy1cXHVEREVFXFx1RERGMlxcdURERjNcXHVEREY1XFx1RERGN1xcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERGMVxcdUQ4M0NbXFx1RERFNi1cXHVEREU4XFx1RERFRVxcdURERjBcXHVEREY3LVxcdURERkJcXHVEREZFXXxcXHVEREYyXFx1RDgzQ1tcXHVEREU2XFx1RERFOC1cXHVEREVEXFx1RERGMC1cXHVEREZGXXxcXHVEREYzXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdfFxcdURERjRcXHVEODNDXFx1RERGMnxcXHVEREY1XFx1RDgzQ1tcXHVEREU2XFx1RERFQS1cXHVEREVEXFx1RERGMC1cXHVEREYzXFx1RERGNy1cXHVEREY5XFx1RERGQ1xcdURERkVdfFxcdURERjZcXHVEODNDXFx1RERFNnxcXHVEREY3XFx1RDgzQ1tcXHVEREVBXFx1RERGNFxcdURERjhcXHVEREZBXFx1RERGQ118XFx1RERGOFxcdUQ4M0NbXFx1RERFNi1cXHVEREVBXFx1RERFQy1cXHVEREY0XFx1RERGNy1cXHVEREY5XFx1RERGQlxcdURERkQtXFx1RERGRl18XFx1RERGOVxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVEXFx1RERFRi1cXHVEREY0XFx1RERGN1xcdURERjlcXHVEREZCXFx1RERGQ1xcdURERkZdfFxcdURERkFcXHVEODNDW1xcdURERTZcXHVEREVDXFx1RERGMlxcdURERjNcXHVEREY4XFx1RERGRVxcdURERkZdfFxcdURERkJcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdfFxcdURERkNcXHVEODNDW1xcdURERUJcXHVEREY4XXxcXHVEREZEXFx1RDgzQ1xcdURERjB8XFx1RERGRVxcdUQ4M0NbXFx1RERFQVxcdURERjldfFxcdURERkZcXHVEODNDW1xcdURERTZcXHVEREYyXFx1RERGQ118XFx1REZGM1xcdUZFMEY/KD86XFx1MjAwRCg/OlxcdTI2QTdcXHVGRTBGP3xcXHVEODNDXFx1REYwOCkpP3xcXHVERkY0KD86XFx1MjAwRFxcdTI2MjBcXHVGRTBGP3xcXHVEQjQwXFx1REM2N1xcdURCNDBcXHVEQzYyXFx1REI0MCg/OlxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3fFxcdURDNzNcXHVEQjQwXFx1REM2M1xcdURCNDBcXHVEQzc0fFxcdURDNzdcXHVEQjQwXFx1REM2Q1xcdURCNDBcXHVEQzczKVxcdURCNDBcXHVEQzdGKT8pfFxcdUQ4M0QoPzpbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdXFx1RkUwRj98W1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdURENzRcXHVERDkwXSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURDMDAtXFx1REMwN1xcdURDMDktXFx1REMxNFxcdURDMTYtXFx1REMzQVxcdURDM0MtXFx1REMzRVxcdURDNDBcXHVEQzQ0XFx1REM0NVxcdURDNTEtXFx1REM2NVxcdURDNkFcXHVEQzc5LVxcdURDN0JcXHVEQzdELVxcdURDODBcXHVEQzg0XFx1REM4OC1cXHVEQzhFXFx1REM5MFxcdURDOTItXFx1RENBOVxcdURDQUItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREQTRcXHVEREZCLVxcdURFMkRcXHVERTJGLVxcdURFMzRcXHVERTM3LVxcdURFNDRcXHVERTQ4LVxcdURFNEFcXHVERTgwLVxcdURFQTJcXHVERUE0LVxcdURFQjNcXHVERUI3LVxcdURFQkZcXHVERUMxLVxcdURFQzVcXHVERUQwLVxcdURFRDJcXHVERUQ1LVxcdURFRDdcXHVERURELVxcdURFREZcXHVERUVCXFx1REVFQ1xcdURFRjQtXFx1REVGQ1xcdURGRTAtXFx1REZFQlxcdURGRjBdfFxcdURDMDgoPzpcXHUyMDBEXFx1MkIxQik/fFxcdURDMTUoPzpcXHUyMDBEXFx1RDgzRVxcdUREQkEpP3xcXHVEQzNCKD86XFx1MjAwRFxcdTI3NDRcXHVGRTBGPyk/fFxcdURDNDFcXHVGRTBGPyg/OlxcdTIwMERcXHVEODNEXFx1RERFOFxcdUZFMEY/KT98XFx1REM2OCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4fFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldXFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KXxbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKSkpPykpP3xcXHVEQzY5KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1tcXHVEQzY4XFx1REM2OV18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT98XFx1REM2OVxcdTIwMERcXHVEODNEKD86XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pPykpfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pKSk/fFxcdURGRkQoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKSkpP3xcXHVERkZFKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSkpKT8pKT98XFx1REM2Rig/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xcXHVERDc1KD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xcXHVERTJFKD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0E4KT98XFx1REUzNSg/OlxcdTIwMERcXHVEODNEXFx1RENBQik/fFxcdURFMzYoPzpcXHUyMDBEXFx1RDgzQ1xcdURGMkJcXHVGRTBGPyk/KXxcXHVEODNFKD86W1xcdUREMENcXHVERDBGXFx1REQxOC1cXHVERDFGXFx1REQzMC1cXHVERDM0XFx1REQzNlxcdURENzdcXHVEREI1XFx1RERCNlxcdUREQkJcXHVEREQyXFx1REREM1xcdURERDVcXHVERUMzLVxcdURFQzVcXHVERUYwXFx1REVGMi1cXHVERUY2XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVERERFXFx1RERERl0oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdUREMERcXHVERDBFXFx1REQxMC1cXHVERDE3XFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzgtXFx1RERCNFxcdUREQjdcXHVEREJBXFx1RERCQy1cXHVERENDXFx1REREMFxcdURERTAtXFx1RERGRlxcdURFNzAtXFx1REU3NFxcdURFNzgtXFx1REU3Q1xcdURFODAtXFx1REU4NlxcdURFOTAtXFx1REVBQ1xcdURFQjAtXFx1REVCQVxcdURFQzAtXFx1REVDMlxcdURFRDAtXFx1REVEOVxcdURFRTAtXFx1REVFN118XFx1REQzQyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj98XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98XFx1REREMSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMSkpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkMtXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRV18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpPykpP3xcXHVERUYxKD86XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pP3xcXHVERkZDKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSk/fFxcdURGRkQoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKT98XFx1REZGRSg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pP3xcXHVERkZGKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKT8pKT8pKS9nO1xufTtcbiIsICJpbXBvcnQgeyBEYXRlVGltZSwgRHVyYXRpb24gfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCJhcGkvcmVzdWx0XCI7XG5pbXBvcnQgKiBhcyBQIGZyb20gXCJwYXJzaW1tb25cIjtcbmltcG9ydCBlbW9qaVJlZ2V4IGZyb20gXCJlbW9qaS1yZWdleFwiO1xuaW1wb3J0IHsgUXVlcnlTZXR0aW5ncyB9IGZyb20gXCJzZXR0aW5nc1wiO1xuXG4vKiogTm9ybWFsaXplIGEgZHVyYXRpb24gdG8gYWxsIG9mIHRoZSBwcm9wZXIgdW5pdHMuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRHVyYXRpb24oZHVyOiBEdXJhdGlvbikge1xuICAgIGlmIChkdXIgPT09IHVuZGVmaW5lZCB8fCBkdXIgPT09IG51bGwpIHJldHVybiBkdXI7XG5cbiAgICByZXR1cm4gZHVyLnNoaWZ0VG9BbGwoKS5ub3JtYWxpemUoKTtcbn1cblxuLyoqIFN0cmlwIHRoZSB0aW1lIGNvbXBvbmVudHMgb2YgYSBkYXRlIHRpbWUgb2JqZWN0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwVGltZShkdDogRGF0ZVRpbWUpOiBEYXRlVGltZSB7XG4gICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpIHJldHVybiBkdDtcblxuICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHtcbiAgICAgICAgeWVhcjogZHQueWVhcixcbiAgICAgICAgbW9udGg6IGR0Lm1vbnRoLFxuICAgICAgICBkYXk6IGR0LmRheSxcbiAgICB9KTtcbn1cblxuLyoqIFRyeSB0byBleHRyYWN0IGEgWVlZWU1NREQgZGF0ZSBmcm9tIGEgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REYXRlKHN0cjogc3RyaW5nKTogRGF0ZVRpbWUgfCB1bmRlZmluZWQge1xuICAgIGxldCBkYXRlTWF0Y2ggPSAvKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkvLmV4ZWMoc3RyKTtcbiAgICBpZiAoIWRhdGVNYXRjaCkgZGF0ZU1hdGNoID0gLyhcXGR7NH0pKFxcZHsyfSkoXFxkezJ9KS8uZXhlYyhzdHIpO1xuICAgIGlmIChkYXRlTWF0Y2gpIHtcbiAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTtcbiAgICAgICAgbGV0IG1vbnRoID0gTnVtYmVyLnBhcnNlSW50KGRhdGVNYXRjaFsyXSk7XG4gICAgICAgIGxldCBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzNdKTtcbiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmVudEZvbGRlcihwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KFwiL1wiKS5zbGljZSgwLCAtMSkuam9pbihcIi9cIik7XG59XG5cbi8qKiBHZXQgdGhlIGZpbGUgbmFtZSBmb3IgdGhlIGZpbGUgcmVmZXJlbmNlZCBpbiB0aGUgZ2l2ZW4gcGF0aCwgYnkgc3RyaXBwaW5nIHRoZSBwYXJlbnQgZm9sZGVycy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlTmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmluY2x1ZGVzKFwiL1wiKSA/IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSkgOiBwYXRoO1xufVxuXG4vKiogR2V0IHRoZSBcInRpdGxlXCIgZm9yIGEgZmlsZSwgYnkgc3RyaXBwaW5nIG90aGVyIHBhcnRzIG9mIHRoZSBwYXRoIGFzIHdlbGwgYXMgdGhlIGV4dGVuc2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlVGl0bGUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAocGF0aC5pbmNsdWRlcyhcIi9cIikpIHBhdGggPSBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuICAgIGlmIChwYXRoLmVuZHNXaXRoKFwiLm1kXCIpKSBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAzKTtcbiAgICByZXR1cm4gcGF0aDtcbn1cblxuLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXRoLmluY2x1ZGVzKFwiLlwiKSkgcmV0dXJuIFwiXCI7XG4gICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoXCIuXCIpICsgMSk7XG59XG5cbi8qKiBQYXJzZSBhbGwgc3VidGFncyBvdXQgb2YgdGhlIGdpdmVuIHRhZy4gSS5lLiwgI2hlbGxvL2kvYW0gd291bGQgeWllbGQgWyNoZWxsby9pL2FtLCAjaGVsbG8vaSwgI2hlbGxvXS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U3VidGFncyh0YWc6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzdWx0ID0gW3RhZ107XG4gICAgd2hpbGUgKHRhZy5pbmNsdWRlcyhcIi9cIikpIHtcbiAgICAgICAgdGFnID0gdGFnLnN1YnN0cmluZygwLCB0YWcubGFzdEluZGV4T2YoXCIvXCIpKTtcbiAgICAgICAgcmVzdWx0LnB1c2godGFnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogVHJ5IGNhbGxpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uOyBvbiBmYWlsdXJlLCByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2UuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeU9yUHJvcG9nYXRlPFQ+KGZ1bmM6ICgpID0+IFJlc3VsdDxULCBzdHJpbmc+KTogUmVzdWx0PFQsIHN0cmluZz4ge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmdW5jKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKFwiXCIgKyBlcnJvciArIFwiXFxuXFxuXCIgKyBlcnJvci5zdGFjayk7XG4gICAgfVxufVxuXG4vKiogVHJ5IGFzeW5jaHJvbm91c2x5IGNhbGxpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uOyBvbiBmYWlsdXJlLCByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2UuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNUcnlPclByb3BvZ2F0ZTxUPihmdW5jOiAoKSA9PiBQcm9taXNlPFJlc3VsdDxULCBzdHJpbmc+Pik6IFByb21pc2U8UmVzdWx0PFQsIHN0cmluZz4+IHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZnVuYygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShcIlwiICsgZXJyb3IgKyBcIlxcblxcblwiICsgZXJyb3Iuc3RhY2spO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFc2NhcGUgcmVnZXggY2hhcmFjdGVycyBpbiBhIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdleChzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpO1xufVxuXG4vKiogQSBwYXJzaW1tb24gcGFyc2VyIHdoaWNoIGNhbm9uaWNhbGl6ZXMgdmFyaWFibGUgbmFtZXMgd2hpbGUgcHJvcGVybHkgcmVzcGVjdGluZyBlbW9qaS4gKi9cbmNvbnN0IFZBUl9OQU1FX0NBTk9OSUNBTElaRVI6IFAuUGFyc2VyPHN0cmluZz4gPSBQLmFsdChcbiAgICBQLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCBcIlwiKSksXG4gICAgUC5yZWdleCgvWzAtOVxccHtMZXR0ZXJ9Xy1dKy91KS5tYXAoc3RyID0+IHN0ci50b0xvY2FsZUxvd2VyQ2FzZSgpKSxcbiAgICBQLndoaXRlc3BhY2UubWFwKF8gPT4gXCItXCIpLFxuICAgIFAuYW55Lm1hcChfID0+IFwiXCIpXG4pXG4gICAgLm1hbnkoKVxuICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5qb2luKFwiXCIpKTtcblxuLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplVmFyTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBWQVJfTkFNRV9DQU5PTklDQUxJWkVSLnRyeVBhcnNlKG5hbWUpO1xufVxuXG5jb25zdCBIRUFERVJfQ0FOT05JQ0FMSVpFUjogUC5QYXJzZXI8c3RyaW5nPiA9IFAuYWx0KFxuICAgIFAucmVnZXgobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksIFwiXCIpKSxcbiAgICBQLnJlZ2V4KC9bMC05XFxwe0xldHRlcn1fLV0rL3UpLFxuICAgIFAud2hpdGVzcGFjZS5tYXAoXyA9PiBcIiBcIiksXG4gICAgUC5hbnkubWFwKF8gPT4gXCIgXCIpXG4pXG4gICAgLm1hbnkoKVxuICAgIC5tYXAocmVzdWx0ID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpLnNwbGl0KC9cXHMrLykuam9pbihcIiBcIikudHJpbSgpO1xuICAgIH0pO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgdGhlIHRleHQgaW4gYSBoZWFkZXIgdG8gYmUgc29tZXRoaW5nIHRoYXQgaXMgYWN0dWFsbHkgbGlua2FibGUgdG8uIFRoaXMgbWltaWNzXG4gKiBob3cgT2JzaWRpYW4gZG9lcyBpdCdzIG5vcm1hbGl6YXRpb24sIGNvbGxhcHNpbmcgcmVwZWF0ZWQgc3BhY2VzIGFuZCBzdHJpcHBpbmcgb3V0IGNvbnRyb2wgY2hhcmFjdGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpO1xufVxuXG4vKiogUmVuZGVyIGEgRGF0ZVRpbWUgaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1pbmltYWxEYXRlKHRpbWU6IERhdGVUaW1lLCBzZXR0aW5nczogUXVlcnlTZXR0aW5ncywgbG9jYWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIHJlbGV2YW50IHRpbWUgc3BlY2lmaWVkLCBmYWxsIGJhY2sgdG8ganVzdCByZW5kZXJpbmcgdGhlIGRhdGUuXG4gICAgaWYgKHRpbWUuc2Vjb25kID09IDAgJiYgdGltZS5taW51dGUgPT0gMCAmJiB0aW1lLmhvdXIgPT0gMCkge1xuICAgICAgICByZXR1cm4gdGltZS50b0xvY2FsKCkudG9Gb3JtYXQoc2V0dGluZ3MuZGVmYXVsdERhdGVGb3JtYXQsIHsgbG9jYWxlIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aW1lLnRvTG9jYWwoKS50b0Zvcm1hdChzZXR0aW5ncy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQsIHsgbG9jYWxlIH0pO1xufVxuXG4vKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1pbmltYWxEdXJhdGlvbihkdXI6IER1cmF0aW9uKTogc3RyaW5nIHtcbiAgICBkdXIgPSBub3JtYWxpemVEdXJhdGlvbihkdXIpO1xuXG4gICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuIFwiMCBzZWNvbmRzXCJcbiAgICBkdXIgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KFxuICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZHVyLnRvT2JqZWN0KCkpLmZpbHRlcigoWywgcXVhbnRpdHldKSA9PiBxdWFudGl0eSA+IDApKVxuICAgICk7XG5cbiAgICByZXR1cm4gZHVyLnRvSHVtYW4oKTtcbn1cblxuLyoqIERldGVybWluZSBpZiB0d28gc2V0cyBhcmUgZXF1YWwgaW4gY29udGVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0c0VxdWFsPFQ+KGZpcnN0OiBTZXQ8VD4sIHNlY29uZDogU2V0PFQ+KTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0LnNpemUgIT0gc2Vjb25kLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBlbGVtIG9mIGZpcnN0KSBpZiAoIXNlY29uZC5oYXMoZWxlbSkpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiB0cnVlO1xufVxuIiwgImltcG9ydCB7IERhdGVUaW1lLCBEdXJhdGlvbiB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgREVGQVVMVF9RVUVSWV9TRVRUSU5HUywgUXVlcnlTZXR0aW5ncyB9IGZyb20gXCJzZXR0aW5nc1wiO1xuaW1wb3J0IHsgZ2V0RmlsZVRpdGxlLCBub3JtYWxpemVIZWFkZXJGb3JMaW5rLCByZW5kZXJNaW5pbWFsRHVyYXRpb24gfSBmcm9tIFwidXRpbC9ub3JtYWxpemVcIjtcblxuLyoqIFNob3J0aGFuZCBmb3IgYSBtYXBwaW5nIGZyb20ga2V5cyB0byB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBEYXRhT2JqZWN0ID0geyBba2V5OiBzdHJpbmddOiBMaXRlcmFsIH07XG4vKiogVGhlIGxpdGVyYWwgdHlwZXMgc3VwcG9ydGVkIGJ5IHRoZSBxdWVyeSBlbmdpbmUuICovXG5leHBvcnQgdHlwZSBMaXRlcmFsVHlwZSA9XG4gICAgfCBcImJvb2xlYW5cIlxuICAgIHwgXCJudW1iZXJcIlxuICAgIHwgXCJzdHJpbmdcIlxuICAgIHwgXCJkYXRlXCJcbiAgICB8IFwiZHVyYXRpb25cIlxuICAgIHwgXCJsaW5rXCJcbiAgICB8IFwiYXJyYXlcIlxuICAgIHwgXCJvYmplY3RcIlxuICAgIHwgXCJmdW5jdGlvblwiXG4gICAgfCBcIm51bGxcIlxuICAgIHwgXCJodG1sXCJcbiAgICB8IFwid2lkZ2V0XCI7XG4vKiogVGhlIHJhdyB2YWx1ZXMgdGhhdCBhIGxpdGVyYWwgY2FuIHRha2Ugb24uICovXG5leHBvcnQgdHlwZSBMaXRlcmFsID1cbiAgICB8IGJvb2xlYW5cbiAgICB8IG51bWJlclxuICAgIHwgc3RyaW5nXG4gICAgfCBEYXRlVGltZVxuICAgIHwgRHVyYXRpb25cbiAgICB8IExpbmtcbiAgICB8IEFycmF5PExpdGVyYWw+XG4gICAgfCBEYXRhT2JqZWN0XG4gICAgfCBGdW5jdGlvblxuICAgIHwgbnVsbFxuICAgIHwgSFRNTEVsZW1lbnRcbiAgICB8IFdpZGdldDtcblxuLyoqIEEgZ3JvdXBpbmcgb24gYSB0eXBlIHdoaWNoIHN1cHBvcnRzIHJlY3Vyc2l2ZWx5LW5lc3RlZCBncm91cHMuICovXG5leHBvcnQgdHlwZSBHcm91cEVsZW1lbnQ8VD4gPSB7IGtleTogTGl0ZXJhbDsgcm93czogR3JvdXBpbmc8VD4gfTtcbmV4cG9ydCB0eXBlIEdyb3VwaW5nPFQ+ID0gVFtdIHwgR3JvdXBFbGVtZW50PFQ+W107XG5cbi8qKiBNYXBzIHRoZSBzdHJpbmcgdHlwZSB0byBpdCdzIGV4dGVybmFsLCBBUEktZmFjaW5nIHJlcHJlc2VudGF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTGl0ZXJhbFJlcHI8VCBleHRlbmRzIExpdGVyYWxUeXBlPiA9IFQgZXh0ZW5kcyBcImJvb2xlYW5cIlxuICAgID8gYm9vbGVhblxuICAgIDogVCBleHRlbmRzIFwibnVtYmVyXCJcbiAgICA/IG51bWJlclxuICAgIDogVCBleHRlbmRzIFwic3RyaW5nXCJcbiAgICA/IHN0cmluZ1xuICAgIDogVCBleHRlbmRzIFwiZHVyYXRpb25cIlxuICAgID8gRHVyYXRpb25cbiAgICA6IFQgZXh0ZW5kcyBcImRhdGVcIlxuICAgID8gRGF0ZVRpbWVcbiAgICA6IFQgZXh0ZW5kcyBcIm51bGxcIlxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIFwibGlua1wiXG4gICAgPyBMaW5rXG4gICAgOiBUIGV4dGVuZHMgXCJhcnJheVwiXG4gICAgPyBBcnJheTxMaXRlcmFsPlxuICAgIDogVCBleHRlbmRzIFwib2JqZWN0XCJcbiAgICA/IFJlY29yZDxzdHJpbmcsIExpdGVyYWw+XG4gICAgOiBUIGV4dGVuZHMgXCJmdW5jdGlvblwiXG4gICAgPyBGdW5jdGlvblxuICAgIDogVCBleHRlbmRzIFwiaHRtbFwiXG4gICAgPyBIVE1MRWxlbWVudFxuICAgIDogVCBleHRlbmRzIFwid2lkZ2V0XCJcbiAgICA/IFdpZGdldFxuICAgIDogYW55O1xuXG4vKiogQSB3cmFwcGVkIGxpdGVyYWwgdmFsdWUgd2hpY2ggY2FuIGJlIHN3aXRjaGVkIG9uLiAqL1xuZXhwb3J0IHR5cGUgV3JhcHBlZExpdGVyYWwgPVxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJzdHJpbmdcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwibnVtYmVyXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImJvb2xlYW5cIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwiZGF0ZVwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJkdXJhdGlvblwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJsaW5rXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImFycmF5XCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcIm9iamVjdFwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJodG1sXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcIndpZGdldFwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJmdW5jdGlvblwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJudWxsXCI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIExpdGVyYWxXcmFwcGVyPFQgZXh0ZW5kcyBMaXRlcmFsVHlwZT4ge1xuICAgIHR5cGU6IFQ7XG4gICAgdmFsdWU6IExpdGVyYWxSZXByPFQ+O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFZhbHVlcyB7XG4gICAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhbHVlIGludG8gYSByZWFzb25hYmxlLCBNYXJrZG93bi1mcmllbmRseSBzdHJpbmcgaWYgcG9zc2libGUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKFxuICAgICAgICBmaWVsZDogYW55LFxuICAgICAgICBzZXR0aW5nOiBRdWVyeVNldHRpbmdzID0gREVGQVVMVF9RVUVSWV9TRVRUSU5HUyxcbiAgICAgICAgcmVjdXJzaXZlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7XG4gICAgICAgIGlmICghd3JhcHBlZCkgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzO1xuXG4gICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLnJlbmRlck51bGxBcztcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyB3cmFwcGVkLnZhbHVlO1xuICAgICAgICAgICAgY2FzZSBcImh0bWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5vdXRlckhUTUw7XG4gICAgICAgICAgICBjYXNlIFwid2lkZ2V0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIjxmdW5jdGlvbj5cIjtcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpIHJlc3VsdCArPSBcIltcIjtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gd3JhcHBlZC52YWx1ZS5tYXAoZiA9PiB0b1N0cmluZyhmLCBzZXR0aW5nLCB0cnVlKSkuam9pbihcIiwgXCIpO1xuICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpIHJlc3VsdCArPSBcIl1cIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIFwieyBcIiArXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHdyYXBwZWQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArIFwiOiBcIiArIHRvU3RyaW5nKGVbMV0sIHNldHRpbmcsIHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKSArXG4gICAgICAgICAgICAgICAgICAgIFwiIH1cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIGlmICh3cmFwcGVkLnZhbHVlLnNlY29uZCA9PSAwICYmIHdyYXBwZWQudmFsdWUuaG91ciA9PSAwICYmIHdyYXBwZWQudmFsdWUubWludXRlID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQpO1xuICAgICAgICAgICAgY2FzZSBcImR1cmF0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBXcmFwIGEgbGl0ZXJhbCB2YWx1ZSBzbyB5b3UgY2FuIHN3aXRjaCBvbiBpdCBlYXNpbHkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHdyYXBWYWx1ZSh2YWw6IExpdGVyYWwpOiBXcmFwcGVkTGl0ZXJhbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc051bGwodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJudWxsXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJudW1iZXJcIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc1N0cmluZyh2YWwpKSByZXR1cm4geyB0eXBlOiBcInN0cmluZ1wiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhbih2YWwpKSByZXR1cm4geyB0eXBlOiBcImJvb2xlYW5cIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpIHJldHVybiB7IHR5cGU6IFwiZHVyYXRpb25cIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0RhdGUodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJkYXRlXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNXaWRnZXQodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJ3aWRnZXRcIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHJldHVybiB7IHR5cGU6IFwiYXJyYXlcIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0xpbmsodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJsaW5rXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvbih2YWwpKSByZXR1cm4geyB0eXBlOiBcImZ1bmN0aW9uXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNIdG1sKHZhbCkpIHJldHVybiB7IHR5cGU6IFwiaHRtbFwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHJldHVybiB7IHR5cGU6IFwib2JqZWN0XCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBSZWN1cnNpdmVseSBtYXAgY29tcGxleCBvYmplY3RzIGF0IHRoZSBsZWF2ZXMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG1hcExlYXZlcyh2YWw6IExpdGVyYWwsIGZ1bmM6ICh0OiBMaXRlcmFsKSA9PiBMaXRlcmFsKTogTGl0ZXJhbCB7XG4gICAgICAgIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBEYXRhT2JqZWN0ID0ge307XG4gICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsKSkgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ6IExpdGVyYWxbXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsKSByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuYyh2YWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbXBhcmUgdHdvIGFyYml0cmFyeSBKYXZhU2NyaXB0IHZhbHVlcy4gUHJvZHVjZXMgYSB0b3RhbCBvcmRlcmluZyBvdmVyIEFOWSBwb3NzaWJsZSBkYXRhdmlldyB2YWx1ZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gY29tcGFyZVZhbHVlKHZhbDE6IExpdGVyYWwsIHZhbDI6IExpdGVyYWwsIGxpbmtOb3JtYWxpemVyPzogKGxpbms6IHN0cmluZykgPT4gc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgLy8gSGFuZGxlIHVuZGVmaW5lZC9udWxscyBmaXJzdC5cbiAgICAgICAgaWYgKHZhbDEgPT09IHVuZGVmaW5lZCkgdmFsMSA9IG51bGw7XG4gICAgICAgIGlmICh2YWwyID09PSB1bmRlZmluZWQpIHZhbDIgPSBudWxsO1xuICAgICAgICBpZiAodmFsMSA9PT0gbnVsbCAmJiB2YWwyID09PSBudWxsKSByZXR1cm4gMDtcbiAgICAgICAgZWxzZSBpZiAodmFsMSA9PT0gbnVsbCkgcmV0dXJuIC0xO1xuICAgICAgICBlbHNlIGlmICh2YWwyID09PSBudWxsKSByZXR1cm4gMTtcblxuICAgICAgICAvLyBBIG5vbi1udWxsIHZhbHVlIG5vdyB3aGljaCB3ZSBjYW4gd3JhcCAmIGNvbXBhcmUgb24uXG4gICAgICAgIGxldCB3cmFwMSA9IHdyYXBWYWx1ZSh2YWwxKTtcbiAgICAgICAgbGV0IHdyYXAyID0gd3JhcFZhbHVlKHZhbDIpO1xuXG4gICAgICAgIGlmICh3cmFwMSA9PT0gdW5kZWZpbmVkICYmIHdyYXAyID09PSB1bmRlZmluZWQpIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmICh3cmFwMSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gLTE7XG4gICAgICAgIGVsc2UgaWYgKHdyYXAyID09PSB1bmRlZmluZWQpIHJldHVybiAxO1xuXG4gICAgICAgIC8vIFNob3J0LWNpcmN1aXQgb24gZGlmZmVyZW50IHR5cGVzIG9yIG9uIHJlZmVyZW5jZSBlcXVhbGl0eS5cbiAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkgcmV0dXJuIHdyYXAxLnR5cGUubG9jYWxlQ29tcGFyZSh3cmFwMi50eXBlKTtcbiAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09PSB3cmFwMi52YWx1ZSkgcmV0dXJuIDA7XG5cbiAgICAgICAgc3dpdGNoICh3cmFwMS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlLmxvY2FsZUNvbXBhcmUod3JhcDIudmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPCAod3JhcDIudmFsdWUgYXMgbnVtYmVyKSkgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXAxLnZhbHVlID09ICh3cmFwMi52YWx1ZSBhcyBudW1iZXIpKSByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA9PSB3cmFwMi52YWx1ZSkgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gd3JhcDEudmFsdWUgPyAxIDogLTE7XG4gICAgICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgICAgICAgIGxldCBsaW5rMSA9IHdyYXAxLnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBsaW5rMiA9IHdyYXAyLnZhbHVlIGFzIExpbms7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZSA9IGxpbmtOb3JtYWxpemVyID8/ICgoeDogc3RyaW5nKSA9PiB4KTtcblxuICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGNvbXBhcmUgYnkgZmlsZSBuYW1lIG9yIGRpc3BsYXksIHNpbmNlIHRoYXQgd291bGQgYnJlYWsgbGluayBlcXVhbGl0eS4gQ29tcGFyZSBieSBwYXRoLlxuICAgICAgICAgICAgICAgIGxldCBwYXRoQ29tcGFyZSA9IG5vcm1hbGl6ZShsaW5rMS5wYXRoKS5sb2NhbGVDb21wYXJlKG5vcm1hbGl6ZShsaW5rMi5wYXRoKSk7XG4gICAgICAgICAgICAgICAgaWYgKHBhdGhDb21wYXJlICE9IDApIHJldHVybiBwYXRoQ29tcGFyZTtcblxuICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSB0eXBlLlxuICAgICAgICAgICAgICAgIGxldCB0eXBlQ29tcGFyZSA9IGxpbmsxLnR5cGUubG9jYWxlQ29tcGFyZShsaW5rMi50eXBlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZUNvbXBhcmUgIT0gMCkgcmV0dXJuIHR5cGVDb21wYXJlO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhlbiBjb21wYXJlIGJ5IHN1YnBhdGggZXhpc3RlbmNlLlxuICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKSByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgbGluazIuc3VicGF0aCkgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiAhbGluazIuc3VicGF0aCkgcmV0dXJuIDA7XG5cbiAgICAgICAgICAgICAgICAvLyBTaW5jZSBib3RoIGhhdmUgYSBzdWJwYXRoLCBjb21wYXJlIGJ5IHN1YnBhdGguXG4gICAgICAgICAgICAgICAgcmV0dXJuIChsaW5rMS5zdWJwYXRoID8/IFwiXCIpLmxvY2FsZUNvbXBhcmUobGluazIuc3VicGF0aCA/PyBcIlwiKTtcbiAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlIDwgKHdyYXAyLnZhbHVlIGFzIERhdGVUaW1lKVxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogd3JhcDEudmFsdWUuZXF1YWxzKHdyYXAyLnZhbHVlIGFzIERhdGVUaW1lKVxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiAxO1xuICAgICAgICAgICAgY2FzZSBcImR1cmF0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlIDwgKHdyYXAyLnZhbHVlIGFzIER1cmF0aW9uKVxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogd3JhcDEudmFsdWUuZXF1YWxzKHdyYXAyLnZhbHVlIGFzIER1cmF0aW9uKVxuICAgICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgICAgOiAxO1xuICAgICAgICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgICAgICAgICAgbGV0IGYxID0gd3JhcDEudmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IGYyID0gd3JhcDIudmFsdWUgYXMgYW55W107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE1hdGgubWluKGYxLmxlbmd0aCwgZjIubGVuZ3RoKTsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShmMVtpbmRleF0sIGYyW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApIHJldHVybiBjb21wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZjEubGVuZ3RoIC0gZjIubGVuZ3RoO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGxldCBvMSA9IHdyYXAxLnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgICAgICAgICAgbGV0IGsxID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMSkpO1xuICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTtcbiAgICAgICAgICAgICAgICBrMS5zb3J0KCk7XG4gICAgICAgICAgICAgICAgazIuc29ydCgpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGtleUNvbXBhcmUgPSBjb21wYXJlVmFsdWUoazEsIGsyKTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5Q29tcGFyZSAhPSAwKSByZXR1cm4ga2V5Q29tcGFyZTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBrMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXAgIT0gMCkgcmV0dXJuIGNvbXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICBjYXNlIFwid2lkZ2V0XCI6XG4gICAgICAgICAgICBjYXNlIFwiaHRtbFwiOlxuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRmluZCB0aGUgY29ycmVzcG9uZGluZyBEYXRhdmVpdyB0eXBlIGZvciBhbiBhcmJpdHJhcnkgdmFsdWUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHR5cGVPZih2YWw6IGFueSk6IExpdGVyYWxUeXBlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHdyYXBWYWx1ZSh2YWwpPy50eXBlO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIFwidHJ1dGh5XCIgKGkuZS4sIGlzIG5vbi1udWxsIGFuZCBoYXMgZGF0YSBpbiBpdCkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzVHJ1dGh5KGZpZWxkOiBMaXRlcmFsKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCB3cmFwcGVkID0gd3JhcFZhbHVlKGZpZWxkKTtcbiAgICAgICAgaWYgKCF3cmFwcGVkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZSAhPSAwO1xuICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlO1xuICAgICAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gISF3cmFwcGVkLnZhbHVlLnBhdGg7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvTWlsbGlzKCkgIT0gMDtcbiAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmFzKFwic2Vjb25kc1wiKSAhPSAwO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh3cmFwcGVkLnZhbHVlKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSBcImh0bWxcIjpcbiAgICAgICAgICAgIGNhc2UgXCJ3aWRnZXRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERlZXAgY29weSBhIGZpZWxkLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBkZWVwQ29weTxUIGV4dGVuZHMgTGl0ZXJhbD4oZmllbGQ6IFQpOiBUIHtcbiAgICAgICAgaWYgKGZpZWxkID09PSBudWxsIHx8IGZpZWxkID09PSB1bmRlZmluZWQpIHJldHVybiBmaWVsZDtcblxuICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gKFtdIGFzIExpdGVyYWxbXSkuY29uY2F0KGZpZWxkLm1hcCh2ID0+IGRlZXBDb3B5KHYpKSkgYXMgVDtcbiAgICAgICAgfSBlbHNlIGlmIChWYWx1ZXMuaXNPYmplY3QoZmllbGQpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBMaXRlcmFsPiA9IHt9O1xuICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpZWxkKSkgcmVzdWx0W2tleV0gPSBkZWVwQ29weSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIjtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsOiBhbnkpOiB2YWwgaXMgbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJudW1iZXJcIjtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbDogYW55KTogdmFsIGlzIERhdGVUaW1lIHtcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIERhdGVUaW1lO1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0R1cmF0aW9uKHZhbDogYW55KTogdmFsIGlzIER1cmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc051bGwodmFsOiBhbnkpOiB2YWwgaXMgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkodmFsOiBhbnkpOiB2YWwgaXMgYW55W10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsOiBhbnkpOiB2YWwgaXMgYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSBcImJvb2xlYW5cIjtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNMaW5rKHZhbDogYW55KTogdmFsIGlzIExpbmsge1xuICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgTGluaztcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNXaWRnZXQodmFsOiBhbnkpOiB2YWwgaXMgV2lkZ2V0IHtcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIFdpZGdldDtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNIdG1sKHZhbDogYW55KTogdmFsIGlzIEhUTUxFbGVtZW50IHtcbiAgICAgICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gb2JqZWN0IChhbmQgbm90IGFueSBvdGhlciBkYXRhdmlldy1yZWNvZ25pemVkIG9iamVjdC1saWtlIHR5cGUpLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWw6IGFueSk6IHZhbCBpcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR5cGVvZiB2YWwgPT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgIWlzSHRtbCh2YWwpICYmXG4gICAgICAgICAgICAhaXNXaWRnZXQodmFsKSAmJlxuICAgICAgICAgICAgIWlzQXJyYXkodmFsKSAmJlxuICAgICAgICAgICAgIWlzRHVyYXRpb24odmFsKSAmJlxuICAgICAgICAgICAgIWlzRGF0ZSh2YWwpICYmXG4gICAgICAgICAgICAhaXNMaW5rKHZhbCkgJiZcbiAgICAgICAgICAgIHZhbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAhaXNOdWxsKHZhbClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWw6IGFueSk6IHZhbCBpcyBGdW5jdGlvbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwiZnVuY3Rpb25cIjtcbiAgICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vL1xuLy8gR3JvdXBpbmdzIC8vXG4vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IG5hbWVzcGFjZSBHcm91cGluZ3Mge1xuICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBncm91cCBlbnRyeSBpcyBhIHN0YW5kYWxvbmUgdmFsdWUsIG9yIGEgZ3JvdXBpbmcgb2Ygc3ViLWVudHJpZXMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudEdyb3VwPFQ+KGVudHJ5OiBUIHwgR3JvdXBFbGVtZW50PFQ+KTogZW50cnkgaXMgR3JvdXBFbGVtZW50PFQ+IHtcbiAgICAgICAgcmV0dXJuIFZhbHVlcy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmIFwia2V5XCIgaW4gZW50cnkgJiYgXCJyb3dzXCIgaW4gZW50cnk7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzR3JvdXBpbmc8VD4oZW50cnk6IEdyb3VwaW5nPFQ+KTogZW50cnkgaXMgR3JvdXBFbGVtZW50PFQ+W10ge1xuICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGVudHJ5KSBpZiAoIWlzRWxlbWVudEdyb3VwKGVsZW1lbnQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSByZWN1cnNpdmUgZ3JvdXBpbmcuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGNvdW50PFQ+KGVsZW1lbnRzOiBHcm91cGluZzxUPik6IG51bWJlciB7XG4gICAgICAgIGlmIChpc0dyb3VwaW5nKGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBzdWJncm91cCBvZiBlbGVtZW50cykgcmVzdWx0ICs9IGNvdW50KHN1Ymdyb3VwLnJvd3MpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLy8vLy8vLy9cbi8vIExJTksgLy9cbi8vLy8vLy8vLy9cblxuLyoqIFRoZSBPYnNpZGlhbiAnbGluaycsIHVzZWQgZm9yIHVuaXF1ZWx5IGRlc2NyaWJpbmcgYSBmaWxlLCBoZWFkZXIsIG9yIGJsb2NrLiAqL1xuZXhwb3J0IGNsYXNzIExpbmsge1xuICAgIC8qKiBUaGUgZmlsZSBwYXRoIHRoaXMgbGluayBwb2ludHMgdG8uICovXG4gICAgcHVibGljIHBhdGg6IHN0cmluZztcbiAgICAvKiogVGhlIGRpc3BsYXkgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxpbmsuICovXG4gICAgcHVibGljIGRpc3BsYXk/OiBzdHJpbmc7XG4gICAgLyoqIFRoZSBibG9jayBJRCBvciBoZWFkZXIgdGhpcyBsaW5rIHBvaW50cyB0byB3aXRoaW4gYSBmaWxlLCBpZiByZWxldmFudC4gKi9cbiAgICBwdWJsaWMgc3VicGF0aD86IHN0cmluZztcbiAgICAvKiogSXMgdGhpcyBsaW5rIGFuIGVtYmVkZGVkIGxpbmsgKCEpPyAqL1xuICAgIHB1YmxpYyBlbWJlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhpcyBsaW5rLCB3aGljaCBkZXRlcm1pbmVzIHdoYXQgJ3N1YnBhdGgnIHJlZmVycyB0bywgaWYgYW55dGhpbmcuICovXG4gICAgcHVibGljIHR5cGU6IFwiZmlsZVwiIHwgXCJoZWFkZXJcIiB8IFwiYmxvY2tcIjtcblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZS4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGZpbGUocGF0aDogc3RyaW5nLCBlbWJlZDogYm9vbGVhbiA9IGZhbHNlLCBkaXNwbGF5Pzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgZW1iZWQsXG4gICAgICAgICAgICBkaXNwbGF5LFxuICAgICAgICAgICAgc3VicGF0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5mZXIobGlua3BhdGg6IHN0cmluZywgZW1iZWQ6IGJvb2xlYW4gPSBmYWxzZSwgZGlzcGxheT86IHN0cmluZykge1xuICAgICAgICBpZiAobGlua3BhdGguaW5jbHVkZXMoXCIjXlwiKSkge1xuICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoXCIjXlwiKTtcbiAgICAgICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpO1xuICAgICAgICB9IGVsc2UgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKFwiI1wiKSkge1xuICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoXCIjXCIpO1xuICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIExpbmsuZmlsZShsaW5rcGF0aCwgZW1iZWQsIGRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgaGVhZGVyIGluIHRoYXQgZmlsZS4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGhlYWRlcihwYXRoOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nLCBlbWJlZD86IGJvb2xlYW4sIGRpc3BsYXk/OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gSGVhZGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gYWxwaGEtbnVtZXJpYyAmIHdpdGggZXh0cmEgc3BhY2luZyByZW1vdmVkLlxuICAgICAgICByZXR1cm4gbmV3IExpbmsoe1xuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIGVtYmVkLFxuICAgICAgICAgICAgZGlzcGxheSxcbiAgICAgICAgICAgIHN1YnBhdGg6IG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSxcbiAgICAgICAgICAgIHR5cGU6IFwiaGVhZGVyXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgYmxvY2sgaW4gdGhhdCBmaWxlLiAqL1xuICAgIHB1YmxpYyBzdGF0aWMgYmxvY2socGF0aDogc3RyaW5nLCBibG9ja0lkOiBzdHJpbmcsIGVtYmVkPzogYm9vbGVhbiwgZGlzcGxheT86IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbmV3IExpbmsoe1xuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIGVtYmVkLFxuICAgICAgICAgICAgZGlzcGxheSxcbiAgICAgICAgICAgIHN1YnBhdGg6IGJsb2NrSWQsXG4gICAgICAgICAgICB0eXBlOiBcImJsb2NrXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU9iamVjdChvYmplY3Q6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKG9iamVjdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihmaWVsZHM6IFBhcnRpYWw8TGluaz4pIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpO1xuICAgIH1cblxuICAgIC8qKiBDaGVja3MgZm9yIGxpbmsgZXF1YWxpdHkgKGkuZS4sIHRoYXQgdGhlIGxpbmtzIGFyZSBwb2ludGluZyB0byB0aGUgc2FtZSBleGFjdCBsb2NhdGlvbikuICovXG4gICAgcHVibGljIGVxdWFscyhvdGhlcjogTGluayk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAob3RoZXIgPT0gdW5kZWZpbmVkIHx8IG90aGVyID09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIGl0J3MgbWFya2Rvd24gcmVwcmVzZW50YXRpb24uICovXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcmtkb3duKCk7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIGEgcmF3IG9iamVjdCB3aGljaCBpcyBzZXJpYWxpemF0aW9uLWZyaWVuZGx5LiAqL1xuICAgIHB1YmxpYyB0b09iamVjdCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHsgcGF0aDogdGhpcy5wYXRoLCB0eXBlOiB0aGlzLnR5cGUsIHN1YnBhdGg6IHRoaXMuc3VicGF0aCwgZGlzcGxheTogdGhpcy5kaXNwbGF5LCBlbWJlZDogdGhpcy5lbWJlZCB9O1xuICAgIH1cblxuICAgIC8qKiBVcGRhdGUgdGhpcyBsaW5rIHdpdGggYSBuZXcgcGF0aC4gKi9cbiAgICAvL0B0cy1pZ25vcmU7IGVycm9yIGFwcGVhcmVkIGFmdGVyIHVwZGF0aW5nIE9ic2lkaWFuIHRvIDAuMTUuNDsgaXQgYWxzbyB1cGRhdGVkIG90aGVyIHBhY2thZ2VzIGJ1dCBkaWRuJ3Qgc2F5IHdoaWNoXG4gICAgcHVibGljIHdpdGhQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBwYXRoIH0pKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovXG4gICAgcHVibGljIHdpdGhEaXNwbGF5KGRpc3BsYXk/OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgZGlzcGxheSB9KSk7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgYSBmaWxlIGxpbmsgaW50byBhIGxpbmsgdG8gYSBzcGVjaWZpYyBoZWFkZXIuICovXG4gICAgcHVibGljIHdpdGhIZWFkZXIoaGVhZGVyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqL1xuICAgIHB1YmxpYyB0b0ZpbGUoKSB7XG4gICAgICAgIHJldHVybiBMaW5rLmZpbGUodGhpcy5wYXRoLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayBpbnRvIGFuIGVtYmVkZGVkIGxpbmsuICovXG4gICAgcHVibGljIHRvRW1iZWQoKTogTGluayB7XG4gICAgICAgIGlmICh0aGlzLmVtYmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7XG4gICAgICAgICAgICBsaW5rLmVtYmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBsaW5rO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIGludG8gYSBub24tZW1iZWRkZWQgbGluay4gKi9cbiAgICBwdWJsaWMgZnJvbUVtYmVkKCk6IExpbmsge1xuICAgICAgICBpZiAoIXRoaXMuZW1iZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGxpbmsgPSBuZXcgTGluayh0aGlzKTtcbiAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBsaW5rO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIG1hcmtkb3duIHNvIGl0IGNhbiBiZSByZW5kZXJlZC4gKi9cbiAgICBwdWJsaWMgbWFya2Rvd24oKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICh0aGlzLmVtYmVkID8gXCIhXCIgOiBcIlwiKSArIFwiW1tcIiArIHRoaXMub2JzaWRpYW5MaW5rKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheSkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFwifFwiICsgdGhpcy5kaXNwbGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFwifFwiICsgZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7XG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IFwiaGVhZGVyXCIgfHwgdGhpcy50eXBlID09IFwiYmxvY2tcIikgcmVzdWx0ICs9IFwiID4gXCIgKyB0aGlzLnN1YnBhdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQgKz0gXCJdXVwiO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi9cbiAgICBwdWJsaWMgb2JzaWRpYW5MaW5rKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGVzY2FwZWQgPSB0aGlzLnBhdGgucmVwbGFjZShcInxcIiwgXCJcXFxcfFwiKTtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBcImhlYWRlclwiKSByZXR1cm4gZXNjYXBlZCArIFwiI1wiICsgdGhpcy5zdWJwYXRoPy5yZXBsYWNlKFwifFwiLCBcIlxcXFx8XCIpO1xuICAgICAgICBpZiAodGhpcy50eXBlID09IFwiYmxvY2tcIikgcmV0dXJuIGVzY2FwZWQgKyBcIiNeXCIgKyB0aGlzLnN1YnBhdGg/LnJlcGxhY2UoXCJ8XCIsIFwiXFxcXHxcIik7XG4gICAgICAgIGVsc2UgcmV0dXJuIGVzY2FwZWQ7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovXG4gICAgcHVibGljIGZpbGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKS5yZXBsYWNlKFwiLm1kXCIsIFwiXCIpO1xuICAgIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdJREdFVCBCQVNFIC8vXG4vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKipcbiAqIEEgdHJpdmlhbCBiYXNlIGNsYXNzIHdoaWNoIGp1c3QgZGVmaW5lcyB0aGUgJyR3aWRnZXQnIGlkZW50aWZpZXIgdHlwZS4gU3VidHlwZXMgb2ZcbiAqIHdpZGdldCBhcmUgcmVzcG9uc2libGUgZm9yIGFkZGluZyB3aGF0ZXZlciBtZXRhZGF0YSBpcyByZWxldmFudC4gSWYgeW91IHdhbnQgeW91ciB3aWRnZXRcbiAqIHRvIGhhdmUgcmVuZGVyaW5nIGZ1bmN0aW9uYWxpdHkgKHdoaWNoIHlvdSBwcm9iYWJseSBkbyksIHlvdSBzaG91bGQgZXh0ZW5kIGBSZW5kZXJXaWRnZXRgLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2lkZ2V0IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljICR3aWRnZXQ6IHN0cmluZykge31cblxuICAgIC8qKlxuICAgICAqIEF0dGVtcHQgdG8gcmVuZGVyIHRoaXMgd2lkZ2V0IGluIG1hcmtkb3duLCBpZiBwb3NzaWJsZTsgaWYgbWFya2Rvd24gaXMgbm90IHBvc3NpYmxlLFxuICAgICAqIHRoZW4gdGhpcyB3aWxsIGF0dGVtcHQgdG8gcmVuZGVyIGFzIEhUTUwuIE5vdGUgdGhhdCBtYW55IHdpZGdldHMgaGF2ZSBpbnRlcmFjdGl2ZVxuICAgICAqIGNvbXBvbmVudHMgb3IgZGlmZmljdWx0IGZ1bmN0aW9uYWwgY29tcG9uZW50cyBhbmQgdGhlIGBtYXJrZG93bmAgZnVuY3Rpb24gY2FuIHNpbXBseVxuICAgICAqIHJldHVybiBhIHBsYWNlaG9sZGVyIGluIHRoaXMgY2FzZSAoc3VjaCBhcyBgPGZ1bmN0aW9uPmAgb3IgYDx0YXNrLWxpc3Q+YCkuXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IG1hcmtkb3duKCk6IHN0cmluZztcbn1cblxuLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi9cbmV4cG9ydCBjbGFzcyBMaXN0UGFpcldpZGdldCBleHRlbmRzIFdpZGdldCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IExpdGVyYWwsIHB1YmxpYyB2YWx1ZTogTGl0ZXJhbCkge1xuICAgICAgICBzdXBlcihcImRhdGF2aWV3Omxpc3QtcGFpclwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWFya2Rvd24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke1ZhbHVlcy50b1N0cmluZyh0aGlzLmtleSl9OiAke1ZhbHVlcy50b1N0cmluZyh0aGlzLnZhbHVlKX1gO1xuICAgIH1cbn1cblxuLyoqIEEgc2ltcGxlIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIGxpbmsuICovXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxMaW5rV2lkZ2V0IGV4dGVuZHMgV2lkZ2V0IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHVybDogc3RyaW5nLCBwdWJsaWMgZGlzcGxheT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcImRhdGF2aWV3OmV4dGVybmFsLWxpbmtcIik7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIG1hcmtkb3duKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgWyR7dGhpcy5kaXNwbGF5ID8/IHRoaXMudXJsfV0oJHt0aGlzLnVybH0pYDtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgV2lkZ2V0cyB7XG4gICAgLyoqIENyZWF0ZSBhIGxpc3QgcGFpciB3aWRnZXQgbWF0Y2hpbmcgdGhlIGdpdmVuIGtleSBhbmQgdmFsdWUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGxpc3RQYWlyKGtleTogTGl0ZXJhbCwgdmFsdWU6IExpdGVyYWwpOiBMaXN0UGFpcldpZGdldCB7XG4gICAgICAgIHJldHVybiBuZXcgTGlzdFBhaXJXaWRnZXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhbiBleHRlcm5hbCBsaW5rIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIE9ic2lkaWFuIGxpbmsuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGV4dGVybmFsTGluayh1cmw6IHN0cmluZywgZGlzcGxheT86IHN0cmluZyk6IEV4dGVybmFsTGlua1dpZGdldCB7XG4gICAgICAgIHJldHVybiBuZXcgRXh0ZXJuYWxMaW5rV2lkZ2V0KHVybCwgZGlzcGxheSk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gd2lkZ2V0IGlzIGEgbGlzdCBwYWlyIHdpZGdldC4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNMaXN0UGFpcih3aWRnZXQ6IFdpZGdldCk6IHdpZGdldCBpcyBMaXN0UGFpcldpZGdldCB7XG4gICAgICAgIHJldHVybiB3aWRnZXQuJHdpZGdldCA9PT0gXCJkYXRhdmlldzpsaXN0LXBhaXJcIjtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbExpbmsod2lkZ2V0OiBXaWRnZXQpOiB3aWRnZXQgaXMgRXh0ZXJuYWxMaW5rV2lkZ2V0IHtcbiAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSBcImRhdGF2aWV3OmV4dGVybmFsLWxpbmtcIjtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gd2lkZ2V0IGlzIGFueSBraW5kIG9mIGJ1aWx0LWluIHdpZGdldCB3aXRoIHNwZWNpYWwgcmVuZGVyaW5nIGhhbmRsaW5nLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0aW4od2lkZ2V0OiBXaWRnZXQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpO1xuICAgIH1cbn1cbiIsICIvKiogRGVmaW5lcyB0aGUgQVNUIGZvciBhIGZpZWxkIHdoaWNoIGNhbiBiZSBldmFsdWF0ZWQuICovXG5pbXBvcnQgeyBMaXRlcmFsIH0gZnJvbSBcImRhdGEtbW9kZWwvdmFsdWVcIjtcblxuLyoqIENvbXBhcmlzb24gb3BlcmF0b3JzIHdoaWNoIHlpZWxkIHRydWUvZmFsc2UuICovXG5leHBvcnQgdHlwZSBDb21wYXJlT3AgPSBcIj5cIiB8IFwiPj1cIiB8IFwiPD1cIiB8IFwiPFwiIHwgXCI9XCIgfCBcIiE9XCI7XG4vKiogQXJpdGhtZXRpYyBvcGVyYXRvcnMgd2hpY2ggeWllbGQgbnVtYmVycyBhbmQgb3RoZXIgdmFsdWVzLiAqL1xuZXhwb3J0IHR5cGUgQXJpdGhtZXRpY09wID0gXCIrXCIgfCBcIi1cIiB8IFwiKlwiIHwgXCIvXCIgfCBcIiVcIiB8IFwiJlwiIHwgXCJ8XCI7XG4vKiogQWxsIHZhbGlkIGJpbmFyeSBvcGVyYXRvcnMuICovXG5leHBvcnQgdHlwZSBCaW5hcnlPcCA9IENvbXBhcmVPcCB8IEFyaXRobWV0aWNPcDtcbi8qKiBBIChwb3RlbnRpYWxseSBjb21wdXRlZCkgZmllbGQgdG8gc2VsZWN0IG9yIGNvbXBhcmUgYWdhaW5zdC4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkID1cbiAgICB8IEJpbmFyeU9wRmllbGRcbiAgICB8IFZhcmlhYmxlRmllbGRcbiAgICB8IExpdGVyYWxGaWVsZFxuICAgIHwgRnVuY3Rpb25GaWVsZFxuICAgIHwgSW5kZXhGaWVsZFxuICAgIHwgTmVnYXRlZEZpZWxkXG4gICAgfCBMYW1iZGFGaWVsZFxuICAgIHwgT2JqZWN0RmllbGRcbiAgICB8IExpc3RGaWVsZDtcblxuLyoqIExpdGVyYWwgcmVwcmVzZW50YXRpb24gb2Ygc29tZSBmaWVsZCB0eXBlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXRlcmFsRmllbGQge1xuICAgIHR5cGU6IFwibGl0ZXJhbFwiO1xuICAgIHZhbHVlOiBMaXRlcmFsO1xufVxuXG4vKiogQSB2YXJpYWJsZSBmaWVsZCBmb3IgYSB2YXJpYWJsZSB3aXRoIGEgZ2l2ZW4gbmFtZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVGaWVsZCB7XG4gICAgdHlwZTogXCJ2YXJpYWJsZVwiO1xuICAgIG5hbWU6IHN0cmluZztcbn1cblxuLyoqIEEgbGlzdCwgd2hpY2ggaXMgYW4gb3JkZXJlZCBjb2xsZWN0aW9uIG9mIGZpZWxkcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEZpZWxkIHtcbiAgICB0eXBlOiBcImxpc3RcIjtcbiAgICB2YWx1ZXM6IEZpZWxkW107XG59XG5cbi8qKiBBbiBvYmplY3QsIHdoaWNoIGlzIGEgbWFwcGluZyBvZiBuYW1lIHRvIGZpZWxkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYmplY3RGaWVsZCB7XG4gICAgdHlwZTogXCJvYmplY3RcIjtcbiAgICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZpZWxkPjtcbn1cblxuLyoqIEEgYmluYXJ5IG9wZXJhdG9yIGZpZWxkIHdoaWNoIGNvbWJpbmVzIHR3byBzdWJub2RlcyBzb21laG93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5hcnlPcEZpZWxkIHtcbiAgICB0eXBlOiBcImJpbmFyeW9wXCI7XG4gICAgbGVmdDogRmllbGQ7XG4gICAgcmlnaHQ6IEZpZWxkO1xuICAgIG9wOiBCaW5hcnlPcDtcbn1cblxuLyoqIEEgZnVuY3Rpb24gZmllbGQgd2hpY2ggY2FsbHMgYSBmdW5jdGlvbiBvbiAwIG9yIG1vcmUgYXJndW1lbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkZpZWxkIHtcbiAgICB0eXBlOiBcImZ1bmN0aW9uXCI7XG4gICAgLyoqIEVpdGhlciB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgY2FsbGVkLCBvciBhIEZ1bmN0aW9uIG9iamVjdC4gKi9cbiAgICBmdW5jOiBGaWVsZDtcbiAgICAvKiogVGhlIGFyZ3VtZW50cyBiZWluZyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLiAqL1xuICAgIGFyZ3VtZW50czogRmllbGRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGaWVsZCB7XG4gICAgdHlwZTogXCJsYW1iZGFcIjtcbiAgICAvKiogQW4gb3JkZXJlZCBsaXN0IG9mIG5hbWVkIGFyZ3VtZW50cy4gKi9cbiAgICBhcmd1bWVudHM6IHN0cmluZ1tdO1xuICAgIC8qKiBUaGUgZmllbGQgd2hpY2ggc2hvdWxkIGJlIGV2YWx1YXRlZCB3aXRoIHRoZSBhcmd1bWVudHMgaW4gY29udGV4dC4gKi9cbiAgICB2YWx1ZTogRmllbGQ7XG59XG5cbi8qKiBBIGZpZWxkIHdoaWNoIGluZGV4ZXMgYSB2YXJpYWJsZSBpbnRvIGFub3RoZXIgdmFyaWFibGUuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4RmllbGQge1xuICAgIHR5cGU6IFwiaW5kZXhcIjtcbiAgICAvKiogVGhlIGZpZWxkIHRvIGluZGV4IGludG8uICovXG4gICAgb2JqZWN0OiBGaWVsZDtcbiAgICAvKiogVGhlIGluZGV4LiAqL1xuICAgIGluZGV4OiBGaWVsZDtcbn1cblxuLyoqIEEgZmllbGQgd2hpY2ggbmVnYXRlcyB0aGUgdmFsdWUgb2YgdGhlIG9yaWdpbmFsIGZpZWxkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZWdhdGVkRmllbGQge1xuICAgIHR5cGU6IFwibmVnYXRlZFwiO1xuICAgIC8qKiBUaGUgY2hpbGQgZmllbGQgdG8gbmVnYXRlZC4gKi9cbiAgICBjaGlsZDogRmllbGQ7XG59XG5cbi8qKiBVdGlsaXR5IG1ldGhvZHMgZm9yIGNyZWF0aW5nICYgY29tcGFyaW5nIGZpZWxkcy4gKi9cbmV4cG9ydCBuYW1lc3BhY2UgRmllbGRzIHtcbiAgICBleHBvcnQgZnVuY3Rpb24gdmFyaWFibGUobmFtZTogc3RyaW5nKTogVmFyaWFibGVGaWVsZCB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwidmFyaWFibGVcIiwgbmFtZSB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlOiBMaXRlcmFsKTogTGl0ZXJhbEZpZWxkIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsaXRlcmFsXCIsIHZhbHVlIH07XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQ6IEZpZWxkLCBvcDogQmluYXJ5T3AsIHJpZ2h0OiBGaWVsZCk6IEZpZWxkIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiaW5hcnlvcFwiLCBsZWZ0LCBvcCwgcmlnaHQgfSBhcyBCaW5hcnlPcEZpZWxkO1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBpbmRleChvYmo6IEZpZWxkLCBpbmRleDogRmllbGQpOiBJbmRleEZpZWxkIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJpbmRleFwiLCBvYmplY3Q6IG9iaiwgaW5kZXggfTtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydHMgYSBzdHJpbmcgaW4gZG90LW5vdGF0aW9uLWZvcm1hdCBpbnRvIGEgdmFyaWFibGUgd2hpY2ggaW5kZXhlcy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaW5kZXhWYXJpYWJsZShuYW1lOiBzdHJpbmcpOiBGaWVsZCB7XG4gICAgICAgIGxldCBwYXJ0cyA9IG5hbWUuc3BsaXQoXCIuXCIpO1xuICAgICAgICBsZXQgcmVzdWx0OiBGaWVsZCA9IEZpZWxkcy52YXJpYWJsZShwYXJ0c1swXSk7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBwYXJ0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIEZpZWxkcy5saXRlcmFsKHBhcnRzW2luZGV4XSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbGFtYmRhKGFyZ3M6IHN0cmluZ1tdLCB2YWx1ZTogRmllbGQpOiBMYW1iZGFGaWVsZCB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibGFtYmRhXCIsIGFyZ3VtZW50czogYXJncywgdmFsdWUgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gZnVuYyhmdW5jOiBGaWVsZCwgYXJnczogRmllbGRbXSk6IEZ1bmN0aW9uRmllbGQge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImZ1bmN0aW9uXCIsIGZ1bmMsIGFyZ3VtZW50czogYXJncyB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBsaXN0KHZhbHVlczogRmllbGRbXSk6IExpc3RGaWVsZCB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibGlzdFwiLCB2YWx1ZXMgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gb2JqZWN0KHZhbHVlczogUmVjb3JkPHN0cmluZywgRmllbGQ+KTogT2JqZWN0RmllbGQge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcIm9iamVjdFwiLCB2YWx1ZXMgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbmVnYXRlKGNoaWxkOiBGaWVsZCk6IE5lZ2F0ZWRGaWVsZCB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibmVnYXRlZFwiLCBjaGlsZCB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0NvbXBhcmVPcChvcDogQmluYXJ5T3ApOiBvcCBpcyBDb21wYXJlT3Age1xuICAgICAgICByZXR1cm4gb3AgPT0gXCI8PVwiIHx8IG9wID09IFwiPFwiIHx8IG9wID09IFwiPlwiIHx8IG9wID09IFwiPj1cIiB8fCBvcCA9PSBcIiE9XCIgfHwgb3AgPT0gXCI9XCI7XG4gICAgfVxuXG4gICAgZXhwb3J0IGNvbnN0IE5VTEwgPSBGaWVsZHMubGl0ZXJhbChudWxsKTtcbn1cbiIsICIvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqL1xuXG4vKiogVGhlIHNvdXJjZSBvZiBmaWxlcyBmb3IgYSBxdWVyeS4gKi9cbmV4cG9ydCB0eXBlIFNvdXJjZSA9IFRhZ1NvdXJjZSB8IENzdlNvdXJjZSB8IEZvbGRlclNvdXJjZSB8IExpbmtTb3VyY2UgfCBFbXB0eVNvdXJjZSB8IE5lZ2F0ZWRTb3VyY2UgfCBCaW5hcnlPcFNvdXJjZTtcbi8qKiBWYWxpZCBvcGVyYXRpb25zIGZvciBjb21iaW5pbmcgc291cmNlcy4gKi9cbmV4cG9ydCB0eXBlIFNvdXJjZU9wID0gXCImXCIgfCBcInxcIjtcblxuLyoqIEEgdGFnIGFzIGEgc291cmNlIG9mIGRhdGEuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ1NvdXJjZSB7XG4gICAgdHlwZTogXCJ0YWdcIjtcbiAgICAvKiogVGhlIHRhZyB0byBzb3VyY2UgZnJvbS4gKi9cbiAgICB0YWc6IHN0cmluZztcbn1cblxuLyoqIEEgY3N2IGFzIGEgc291cmNlIG9mIGRhdGEuICovXG5leHBvcnQgaW50ZXJmYWNlIENzdlNvdXJjZSB7XG4gICAgdHlwZTogXCJjc3ZcIjtcbiAgICAvKiogVGhlIHBhdGggdG8gdGhlIENTViBmaWxlLiAqL1xuICAgIHBhdGg6IHN0cmluZztcbn1cblxuLyoqIEEgZm9sZGVyIHByZWZpeCBhcyBhIHNvdXJjZSBvZiBkYXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb2xkZXJTb3VyY2Uge1xuICAgIHR5cGU6IFwiZm9sZGVyXCI7XG4gICAgLyoqIFRoZSBmb2xkZXIgcHJlZml4IHRvIHNvdXJjZSBmcm9tLiAqL1xuICAgIGZvbGRlcjogc3RyaW5nO1xufVxuXG4vKiogRWl0aGVyIGluY29taW5nIG9yIG91dGdvaW5nIGxpbmtzIHRvIGEgZ2l2ZW4gZmlsZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua1NvdXJjZSB7XG4gICAgdHlwZTogXCJsaW5rXCI7XG4gICAgLyoqIFRoZSBmaWxlIHRvIGxvb2sgZm9yIGxpbmtzIHRvL2Zyb20uICAqL1xuICAgIGZpbGU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgZGlyZWN0aW9uIHRvIGxvb2sgLSBpZiBpbmNvbWluZywgdGhlbiBhbGwgZmlsZXMgbGlua2luZyB0byB0aGUgdGFyZ2V0IGZpbGUuIElmIG91dGdvaW5nLCB0aGVuIGFsbCBmaWxlc1xuICAgICAqIHdoaWNoIHRoZSBmaWxlIGxpbmtzIHRvLlxuICAgICAqL1xuICAgIGRpcmVjdGlvbjogXCJpbmNvbWluZ1wiIHwgXCJvdXRnb2luZ1wiO1xufVxuXG4vKiogQSBzb3VyY2Ugd2hpY2ggaXMgZXZlcnl0aGluZyBFWENFUFQgdGhlIGZpbGVzIHJldHVybmVkIGJ5IHRoZSBnaXZlbiBzb3VyY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lZ2F0ZWRTb3VyY2Uge1xuICAgIHR5cGU6IFwibmVnYXRlXCI7XG4gICAgLyoqIFRoZSBzb3VyY2UgdG8gbmVnYXRlLiAqL1xuICAgIGNoaWxkOiBTb3VyY2U7XG59XG5cbi8qKiBBIHNvdXJjZSB3aGljaCB5aWVsZHMgbm90aGluZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlTb3VyY2Uge1xuICAgIHR5cGU6IFwiZW1wdHlcIjtcbn1cblxuLyoqIEEgc291cmNlIG1hZGUgYnkgY29tYmluaW5nIHN1YnNvdXJjZXMgd2l0aCBhIGxvZ2ljYWwgb3BlcmF0b3JzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5hcnlPcFNvdXJjZSB7XG4gICAgdHlwZTogXCJiaW5hcnlvcFwiO1xuICAgIG9wOiBTb3VyY2VPcDtcbiAgICBsZWZ0OiBTb3VyY2U7XG4gICAgcmlnaHQ6IFNvdXJjZTtcbn1cblxuLyoqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBhbmQgbWFuaXB1bGF0aW5nIHNvdXJjZXMuICovXG5leHBvcnQgbmFtZXNwYWNlIFNvdXJjZXMge1xuICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZnJvbSBhIHRhZy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gdGFnKHRhZzogc3RyaW5nKTogVGFnU291cmNlIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0YWdcIiwgdGFnIH07XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gY3N2KHBhdGg6IHN0cmluZyk6IENzdlNvdXJjZSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiY3N2XCIsIHBhdGggfTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZvciBmaWxlcyB1bmRlciBhIGZvbGRlciBwcmVmaXguICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZvbGRlcihwcmVmaXg6IHN0cmluZyk6IEZvbGRlclNvdXJjZSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiZm9sZGVyXCIsIGZvbGRlcjogcHJlZml4IH07XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmb3IgZmlsZXMgd2hpY2ggbGluayB0by9mcm9tIGEgZ2l2ZW4gZmlsZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGluayhmaWxlOiBzdHJpbmcsIGluY29taW5nOiBib29sZWFuKTogTGlua1NvdXJjZSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibGlua1wiLCBmaWxlLCBkaXJlY3Rpb246IGluY29taW5nID8gXCJpbmNvbWluZ1wiIDogXCJvdXRnb2luZ1wiIH07XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQ6IFNvdXJjZSwgb3A6IFNvdXJjZU9wLCByaWdodDogU291cmNlKTogU291cmNlIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiaW5hcnlvcFwiLCBsZWZ0LCBvcCwgcmlnaHQgfTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIHNvdXJjZXMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGFuZChsZWZ0OiBTb3VyY2UsIHJpZ2h0OiBTb3VyY2UpOiBTb3VyY2Uge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImJpbmFyeW9wXCIsIGxlZnQsIG9wOiBcIiZcIiwgcmlnaHQgfTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSB1bmlvbiBvZiB0d28gc291cmNlcy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gb3IobGVmdDogU291cmNlLCByaWdodDogU291cmNlKTogU291cmNlIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiaW5hcnlvcFwiLCBsZWZ0LCBvcDogXCJ8XCIsIHJpZ2h0IH07XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbmVnYXRlKGNoaWxkOiBTb3VyY2UpOiBOZWdhdGVkU291cmNlIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJuZWdhdGVcIiwgY2hpbGQgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gZW1wdHkoKTogRW1wdHlTb3VyY2Uge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImVtcHR5XCIgfTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgRGF0ZVRpbWUsIER1cmF0aW9uIH0gZnJvbSBcImx1eG9uXCI7XG5pbXBvcnQgeyBMaXRlcmFsLCBMaW5rIH0gZnJvbSBcImRhdGEtbW9kZWwvdmFsdWVcIjtcbmltcG9ydCAqIGFzIFAgZnJvbSBcInBhcnNpbW1vblwiO1xuaW1wb3J0IHsgQmluYXJ5T3AsIEZpZWxkLCBGaWVsZHMsIExhbWJkYUZpZWxkLCBMaXN0RmllbGQsIExpdGVyYWxGaWVsZCwgT2JqZWN0RmllbGQsIFZhcmlhYmxlRmllbGQgfSBmcm9tIFwiLi9maWVsZFwiO1xuaW1wb3J0IHsgRm9sZGVyU291cmNlLCBOZWdhdGVkU291cmNlLCBTb3VyY2UsIFNvdXJjZU9wLCBTb3VyY2VzLCBUYWdTb3VyY2UsIENzdlNvdXJjZSB9IGZyb20gXCJkYXRhLWluZGV4L3NvdXJjZVwiO1xuaW1wb3J0IHsgbm9ybWFsaXplRHVyYXRpb24gfSBmcm9tIFwidXRpbC9ub3JtYWxpemVcIjtcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCJhcGkvcmVzdWx0XCI7XG5pbXBvcnQgZW1vamlSZWdleCBmcm9tIFwiZW1vamktcmVnZXhcIjtcblxuLyoqIEVtb2ppIHJlZ2V4IHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgZmxhZ3MuICovXG5jb25zdCBFTU9KSV9SRUdFWCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCBcIlwiKTtcblxuLyoqIFByb3ZpZGVzIGEgbG9va3VwIHRhYmxlIGZvciB1bml0IGR1cmF0aW9ucyBvZiB0aGUgZ2l2ZW4gdHlwZS4gKi9cbmV4cG9ydCBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHtcbiAgICB5ZWFyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksXG4gICAgeWVhcnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSxcbiAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLFxuICAgIHlyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLFxuXG4gICAgbW9udGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksXG4gICAgbW9udGhzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLFxuICAgIG1vOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLFxuICAgIG1vczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSxcblxuICAgIHdlZWs6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSxcbiAgICB3ZWVrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLFxuICAgIHdrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksXG4gICAgd2tzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksXG4gICAgdzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLFxuXG4gICAgZGF5OiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSxcbiAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSxcbiAgICBkOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSxcblxuICAgIGhvdXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSxcbiAgICBob3VyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLFxuICAgIGhyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksXG4gICAgaHJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksXG4gICAgaDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLFxuXG4gICAgbWludXRlOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSxcbiAgICBtaW51dGVzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSxcbiAgICBtaW46IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLFxuICAgIG1pbnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLFxuICAgIG06IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLFxuXG4gICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSxcbiAgICBzZWNvbmRzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSxcbiAgICBzZWM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLFxuICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLFxuICAgIHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLFxufTtcblxuLyoqIFNob3J0aGFuZCBmb3IgY29tbW9uIGRhdGVzIChyZWxhdGl2ZSB0byByaWdodCBub3cpLiAqL1xuZXhwb3J0IGNvbnN0IERBVEVfU0hPUlRIQU5EUyA9IHtcbiAgICBub3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCksXG4gICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcImRheVwiKSxcbiAgICB5ZXN0ZXJkYXk6ICgpID0+XG4gICAgICAgIERhdGVUaW1lLmxvY2FsKClcbiAgICAgICAgICAgIC5zdGFydE9mKFwiZGF5XCIpXG4gICAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLFxuICAgIHRvbW9ycm93OiAoKSA9PlxuICAgICAgICBEYXRlVGltZS5sb2NhbCgpXG4gICAgICAgICAgICAuc3RhcnRPZihcImRheVwiKVxuICAgICAgICAgICAgLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLFxuICAgIHNvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwid2Vla1wiKSxcbiAgICBcInN0YXJ0LW9mLXdlZWtcIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwid2Vla1wiKSxcbiAgICBlb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoXCJ3ZWVrXCIpLFxuICAgIFwiZW5kLW9mLXdlZWtcIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZihcIndlZWtcIiksXG4gICAgc295OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJ5ZWFyXCIpLFxuICAgIFwic3RhcnQtb2YteWVhclwiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJ5ZWFyXCIpLFxuICAgIGVveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZihcInllYXJcIiksXG4gICAgXCJlbmQtb2YteWVhclwiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwieWVhclwiKSxcbiAgICBzb206ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcIm1vbnRoXCIpLFxuICAgIFwic3RhcnQtb2YtbW9udGhcIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwibW9udGhcIiksXG4gICAgZW9tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwibW9udGhcIiksXG4gICAgXCJlbmQtb2YtbW9udGhcIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZihcIm1vbnRoXCIpLFxufTtcblxuLyoqXG4gKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudFxuICogdG8gYWNjZXNzLlxuICovXG5leHBvcnQgY29uc3QgS0VZV09SRFMgPSBbXCJGUk9NXCIsIFwiV0hFUkVcIiwgXCJMSU1JVFwiLCBcIkdST1VQXCIsIFwiRkxBVFRFTlwiXTtcblxuLy8vLy8vLy8vLy8vLy8vXG4vLyBVdGlsaXRpZXMgLy9cbi8vLy8vLy8vLy8vLy8vL1xuXG4vKiogU3BsaXQgb24gdW5lc2NhcGVkIHBpcGVzIGluIGFuIGlubmVyIGxpbmsuICovXG5mdW5jdGlvbiBzcGxpdE9uVW5lc2NhcGVkUGlwZShsaW5rOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWRdIHtcbiAgICBsZXQgcGlwZSA9IC0xO1xuICAgIHdoaWxlICgocGlwZSA9IGxpbmsuaW5kZXhPZihcInxcIiwgcGlwZSArIDEpKSA+PSAwKSB7XG4gICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSBcIlxcXFxcIikgY29udGludWU7XG4gICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcXFxcfC9nLCBcInxcIiksIGxpbmsuc3Vic3RyaW5nKHBpcGUgKyAxKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtsaW5rLnJlcGxhY2UoL1xcXFxcXHwvZywgXCJ8XCIpLCB1bmRlZmluZWRdO1xufVxuXG4vKiogQXR0ZW1wdCB0byBwYXJzZSB0aGUgaW5zaWRlIG9mIGEgbGluayB0byBwdWxsIG91dCBkaXNwbGF5IG5hbWUsIHN1YnBhdGgsIGV0Yy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUlubmVyTGluayhyYXdsaW5rOiBzdHJpbmcpOiBMaW5rIHtcbiAgICBsZXQgW2xpbmssIGRpc3BsYXldID0gc3BsaXRPblVuZXNjYXBlZFBpcGUocmF3bGluayk7XG4gICAgcmV0dXJuIExpbmsuaW5mZXIobGluaywgZmFsc2UsIGRpc3BsYXkpO1xufVxuXG4vKiogQ3JlYXRlIGEgbGVmdC1hc3NvY2lhdGl2ZSBiaW5hcnkgcGFyc2VyIHdoaWNoIHBhcnNlcyB0aGUgZ2l2ZW4gc3ViLWVsZW1lbnQgYW5kIHNlcGFyYXRvci4gSGFuZGxlcyB3aGl0ZXNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJpbmFyeVBhcnNlcjxULCBVPihcbiAgICBjaGlsZDogUC5QYXJzZXI8VD4sXG4gICAgc2VwOiBQLlBhcnNlcjxVPixcbiAgICBjb21iaW5lOiAoYTogVCwgYjogVSwgYzogVCkgPT4gVFxuKTogUC5QYXJzZXI8VD4ge1xuICAgIHJldHVybiBQLnNlcU1hcChjaGlsZCwgUC5zZXEoUC5vcHRXaGl0ZXNwYWNlLCBzZXAsIFAub3B0V2hpdGVzcGFjZSwgY2hpbGQpLm1hbnkoKSwgKGZpcnN0LCByZXN0KSA9PiB7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PSAwKSByZXR1cm4gZmlyc3Q7XG5cbiAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHJlc3QubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBub2RlID0gY29tYmluZShub2RlLCByZXN0W2luZGV4XVsxXSwgcmVzdFtpbmRleF1bM10pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhaW5PcHQ8VD4oYmFzZTogUC5QYXJzZXI8VD4sIC4uLmZ1bmNzOiAoKHI6IFQpID0+IFAuUGFyc2VyPFQ+KVtdKTogUC5QYXJzZXI8VD4ge1xuICAgIHJldHVybiBQLmN1c3RvbSgoc3VjY2VzcywgZmFpbHVyZSkgPT4ge1xuICAgICAgICByZXR1cm4gKGlucHV0LCBpKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gKGJhc2UgYXMgYW55KS5fKGlucHV0LCBpKTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LnN0YXR1cykgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gKGZ1bmMocmVzdWx0LnZhbHVlIGFzIFQpIGFzIGFueSkuXyhpbnB1dCwgcmVzdWx0LmluZGV4KTtcbiAgICAgICAgICAgICAgICBpZiAoIW5leHQuc3RhdHVzKSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFeHByZXNzaW9uIFBhcnNpbmcgLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHBvcnQgdHlwZSBQb3N0Zml4RnJhZ21lbnQgPVxuICAgIHwgeyB0eXBlOiBcImRvdFwiOyBmaWVsZDogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogXCJpbmRleFwiOyBmaWVsZDogRmllbGQgfVxuICAgIHwgeyB0eXBlOiBcImZ1bmN0aW9uXCI7IGZpZWxkczogRmllbGRbXSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4cHJlc3Npb25MYW5ndWFnZSB7XG4gICAgbnVtYmVyOiBudW1iZXI7XG4gICAgc3RyaW5nOiBzdHJpbmc7XG4gICAgZXNjYXBlQ2hhcmFjdGVyOiBzdHJpbmc7XG4gICAgYm9vbDogYm9vbGVhbjtcbiAgICB0YWc6IHN0cmluZztcbiAgICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgbGluazogTGluaztcbiAgICBlbWJlZExpbms6IExpbms7XG4gICAgcm9vdERhdGU6IERhdGVUaW1lO1xuICAgIGRhdGVTaG9ydGhhbmQ6IGtleW9mIHR5cGVvZiBEQVRFX1NIT1JUSEFORFM7XG4gICAgZGF0ZTogRGF0ZVRpbWU7XG4gICAgZGF0ZVBsdXM6IERhdGVUaW1lO1xuICAgIGR1cmF0aW9uVHlwZToga2V5b2YgdHlwZW9mIERVUkFUSU9OX1RZUEVTO1xuICAgIGR1cmF0aW9uOiBEdXJhdGlvbjtcbiAgICByYXdOdWxsOiBzdHJpbmc7XG5cbiAgICBiaW5hcnlQbHVzTWludXM6IEJpbmFyeU9wO1xuICAgIGJpbmFyeU11bERpdjogQmluYXJ5T3A7XG4gICAgYmluYXJ5Q29tcGFyZU9wOiBCaW5hcnlPcDtcbiAgICBiaW5hcnlCb29sZWFuT3A6IEJpbmFyeU9wO1xuXG4gICAgLy8gU291cmNlLXJlbGF0ZWQgcGFyc2Vycy5cbiAgICB0YWdTb3VyY2U6IFRhZ1NvdXJjZTtcbiAgICBjc3ZTb3VyY2U6IENzdlNvdXJjZTtcbiAgICBmb2xkZXJTb3VyY2U6IEZvbGRlclNvdXJjZTtcbiAgICBwYXJlbnNTb3VyY2U6IFNvdXJjZTtcbiAgICBhdG9tU291cmNlOiBTb3VyY2U7XG4gICAgbGlua0luY29taW5nU291cmNlOiBTb3VyY2U7XG4gICAgbGlua091dGdvaW5nU291cmNlOiBTb3VyY2U7XG4gICAgbmVnYXRlU291cmNlOiBOZWdhdGVkU291cmNlO1xuICAgIGJpbmFyeU9wU291cmNlOiBTb3VyY2U7XG4gICAgc291cmNlOiBTb3VyY2U7XG5cbiAgICAvLyBGaWVsZC1yZWxhdGVkIHBhcnNlcnMuXG4gICAgdmFyaWFibGVGaWVsZDogVmFyaWFibGVGaWVsZDtcbiAgICBudW1iZXJGaWVsZDogTGl0ZXJhbEZpZWxkO1xuICAgIGJvb2xGaWVsZDogTGl0ZXJhbEZpZWxkO1xuICAgIHN0cmluZ0ZpZWxkOiBMaXRlcmFsRmllbGQ7XG4gICAgZGF0ZUZpZWxkOiBMaXRlcmFsRmllbGQ7XG4gICAgZHVyYXRpb25GaWVsZDogTGl0ZXJhbEZpZWxkO1xuICAgIGxpbmtGaWVsZDogTGl0ZXJhbEZpZWxkO1xuICAgIG51bGxGaWVsZDogTGl0ZXJhbEZpZWxkO1xuXG4gICAgbGlzdEZpZWxkOiBMaXN0RmllbGQ7XG4gICAgb2JqZWN0RmllbGQ6IE9iamVjdEZpZWxkO1xuXG4gICAgYXRvbUlubGluZUZpZWxkOiBMaXRlcmFsO1xuICAgIGlubGluZUZpZWxkTGlzdDogTGl0ZXJhbFtdO1xuICAgIGlubGluZUZpZWxkOiBMaXRlcmFsO1xuXG4gICAgbmVnYXRlZEZpZWxkOiBGaWVsZDtcbiAgICBhdG9tRmllbGQ6IEZpZWxkO1xuICAgIGluZGV4RmllbGQ6IEZpZWxkO1xuICAgIGxhbWJkYUZpZWxkOiBMYW1iZGFGaWVsZDtcblxuICAgIC8vIFBvc3RmaXggcGFyc2VycyBmb3IgZnVuY3Rpb24gY2FsbHMgJiB0aGUgbGlrZS5cbiAgICBkb3RQb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG4gICAgaW5kZXhQb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG4gICAgZnVuY3Rpb25Qb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG5cbiAgICAvLyBCaW5hcnkgb3AgcGFyc2Vycy5cbiAgICBiaW5hcnlNdWxEaXZGaWVsZDogRmllbGQ7XG4gICAgYmluYXJ5UGx1c01pbnVzRmllbGQ6IEZpZWxkO1xuICAgIGJpbmFyeUNvbXBhcmVGaWVsZDogRmllbGQ7XG4gICAgYmluYXJ5Qm9vbGVhbkZpZWxkOiBGaWVsZDtcbiAgICBiaW5hcnlPcEZpZWxkOiBGaWVsZDtcbiAgICBwYXJlbnNGaWVsZDogRmllbGQ7XG4gICAgZmllbGQ6IEZpZWxkO1xufVxuXG5leHBvcnQgY29uc3QgRVhQUkVTU0lPTiA9IFAuY3JlYXRlTGFuZ3VhZ2U8RXhwcmVzc2lvbkxhbmd1YWdlPih7XG4gICAgLy8gQSBmbG9hdGluZyBwb2ludCBudW1iZXI7IHRoZSBkZWNpbWFsIHBvaW50IGlzIG9wdGlvbmFsLlxuICAgIG51bWJlcjogcSA9PlxuICAgICAgICBQLnJlZ2V4cCgvLT9bMC05XSsoXFwuWzAtOV0rKT8vKVxuICAgICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSlcbiAgICAgICAgICAgIC5kZXNjKFwibnVtYmVyXCIpLFxuXG4gICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1xcJykuXG4gICAgc3RyaW5nOiBxID0+XG4gICAgICAgIFAuc3RyaW5nKCdcIicpXG4gICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICBQLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgUC5ub25lT2YoJ1wiXFxcXCcpKVxuICAgICAgICAgICAgICAgICAgICAuYXRMZWFzdCgwKVxuICAgICAgICAgICAgICAgICAgICAubWFwKGNoYXJzID0+IGNoYXJzLmpvaW4oXCJcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc2tpcChQLnN0cmluZygnXCInKSlcbiAgICAgICAgICAgIC5kZXNjKFwic3RyaW5nXCIpLFxuXG4gICAgZXNjYXBlQ2hhcmFjdGVyOiBfID0+XG4gICAgICAgIFAuc3RyaW5nKFwiXFxcXFwiKVxuICAgICAgICAgICAgLnRoZW4oUC5hbnkpXG4gICAgICAgICAgICAubWFwKGVzY2FwZWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybVxuICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkID09PSAnXCInKSByZXR1cm4gJ1wiJztcbiAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZCA9PT0gXCJcXFxcXCIpIHJldHVybiBcIlxcXFxcIjtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBcIlxcXFxcIiArIGVzY2FwZWQ7XG4gICAgICAgICAgICB9KSxcblxuICAgIC8vIEEgYm9vbGVhbiB0cnVlL2ZhbHNlIHZhbHVlLlxuICAgIGJvb2w6IF8gPT5cbiAgICAgICAgUC5yZWdleHAoL3RydWV8ZmFsc2V8VHJ1ZXxGYWxzZS8pXG4gICAgICAgICAgICAubWFwKHN0ciA9PiBzdHIudG9Mb3dlckNhc2UoKSA9PSBcInRydWVcIilcbiAgICAgICAgICAgIC5kZXNjKFwiYm9vbGVhbiAoJ3RydWUnIG9yICdmYWxzZScpXCIpLFxuXG4gICAgLy8gQSB0YWcgb2YgdGhlIGZvcm0gJyNzdHVmZi9oZWxsby10aGVyZScuXG4gICAgdGFnOiBfID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5zdHJpbmcoXCIjXCIpLFxuICAgICAgICAgICAgUC5hbHQoUC5yZWdleHAoL1teXFx1MjAwMC1cXHUyMDZGXFx1MkUwMC1cXHUyRTdGJyFcIiMkJSYoKSorLC46Ozw9Pj9AXmB7fH1+XFxbXFxdXFxcXFxcc10vKS5kZXNjKFwidGV4dFwiKSkubWFueSgpLFxuICAgICAgICAgICAgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbihcIlwiKVxuICAgICAgICApLmRlc2MoXCJ0YWcgKCcjaGVsbG8vc3R1ZmYnKVwiKSxcblxuICAgIC8vIEEgdmFyaWFibGUgaWRlbnRpZmllciwgd2hpY2ggaXMgYWxwaGFudW1lcmljIGFuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IuLi4gZW1vamkuXG4gICAgaWRlbnRpZmllcjogXyA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFAuYWx0KFAucmVnZXhwKC9cXHB7TGV0dGVyfS91KSwgUC5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoXCJ0ZXh0XCIpKSxcbiAgICAgICAgICAgIFAuYWx0KFAucmVnZXhwKC9bMC05XFxwe0xldHRlcn1fLV0vdSksIFAucmVnZXhwKEVNT0pJX1JFR0VYKS5kZXNjKFwidGV4dFwiKSkubWFueSgpLFxuICAgICAgICAgICAgKGZpcnN0LCByZXN0KSA9PiBmaXJzdCArIHJlc3Quam9pbihcIlwiKVxuICAgICAgICApLmRlc2MoXCJ2YXJpYWJsZSBpZGVudGlmaWVyXCIpLFxuXG4gICAgLy8gQW4gT2JzaWRpYW4gbGluayBvZiB0aGUgZm9ybSBbWzxsaW5rPl1dLlxuICAgIGxpbms6IF8gPT5cbiAgICAgICAgUC5yZWdleHAoL1xcW1xcWyhbXlxcW1xcXV0qPylcXF1cXF0vdSwgMSlcbiAgICAgICAgICAgIC5tYXAobGlua0lubmVyID0+IHBhcnNlSW5uZXJMaW5rKGxpbmtJbm5lcikpXG4gICAgICAgICAgICAuZGVzYyhcImZpbGUgbGlua1wiKSxcblxuICAgIC8vIEFuIGVtYmVkZGFibGUgbGluayB3aGljaCBjYW4gc3RhcnQgd2l0aCAnIScuIFRoaXMgb3ZlcmxhcHMgd2l0aCB0aGUgbm9ybWFsIG5lZ2F0aW9uIG9wZXJhdG9yLCBzbyBpdCBpcyBvbmx5XG4gICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuXG4gICAgZW1iZWRMaW5rOiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiIVwiKS5hdE1vc3QoMSksIHEubGluaywgKHAsIGwpID0+IHtcbiAgICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDApIGwuZW1iZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGw7XG4gICAgICAgIH0pLmRlc2MoXCJmaWxlIGxpbmtcIiksXG5cbiAgICAvLyBCaW5hcnkgcGx1cyBvciBtaW51cyBvcGVyYXRvci5cbiAgICBiaW5hcnlQbHVzTWludXM6IF8gPT5cbiAgICAgICAgUC5yZWdleHAoL1xcK3wtLylcbiAgICAgICAgICAgIC5tYXAoc3RyID0+IHN0ciBhcyBCaW5hcnlPcClcbiAgICAgICAgICAgIC5kZXNjKFwiJysnIG9yICctJ1wiKSxcblxuICAgIC8vIEJpbmFyeSB0aW1lcyBvciBkaXZpZGUgb3BlcmF0b3IuXG4gICAgYmluYXJ5TXVsRGl2OiBfID0+XG4gICAgICAgIFAucmVnZXhwKC9cXCp8XFwvfCUvKVxuICAgICAgICAgICAgLm1hcChzdHIgPT4gc3RyIGFzIEJpbmFyeU9wKVxuICAgICAgICAgICAgLmRlc2MoXCInKicgb3IgJy8nIG9yICclJ1wiKSxcblxuICAgIC8vIEJpbmFyeSBjb21wYXJpc29uIG9wZXJhdG9yLlxuICAgIGJpbmFyeUNvbXBhcmVPcDogXyA9PlxuICAgICAgICBQLnJlZ2V4cCgvPj18PD18IT18Pnw8fD0vKVxuICAgICAgICAgICAgLm1hcChzdHIgPT4gc3RyIGFzIEJpbmFyeU9wKVxuICAgICAgICAgICAgLmRlc2MoXCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8J1wiKSxcblxuICAgIC8vIEJpbmFyeSBib29sZWFuIGNvbWJpbmF0aW9uIG9wZXJhdG9yLlxuICAgIGJpbmFyeUJvb2xlYW5PcDogXyA9PlxuICAgICAgICBQLnJlZ2V4cCgvYW5kfG9yfCZ8XFx8L2kpXG4gICAgICAgICAgICAubWFwKHN0ciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09IFwiYW5kXCIpIHJldHVybiBcIiZcIjtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSBcIm9yXCIpIHJldHVybiBcInxcIjtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBzdHIgYXMgQmluYXJ5T3A7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmRlc2MoXCInYW5kJyBvciAnb3InXCIpLFxuXG4gICAgLy8gQSBkYXRlIHdoaWNoIGNhbiBiZSBZWVlZLU1NWy1ERFRISDptbTpzc10uXG4gICAgcm9vdERhdGU6IF8gPT5cbiAgICAgICAgUC5zZXFNYXAoUC5yZWdleHAoL1xcZHs0fS8pLCBQLnN0cmluZyhcIi1cIiksIFAucmVnZXhwKC9cXGR7Mn0vKSwgKHllYXIsIF8sIG1vbnRoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7XG4gICAgICAgIH0pLmRlc2MoXCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU11cIiksXG4gICAgZGF0ZVNob3J0aGFuZDogXyA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKERBVEVfU0hPUlRIQU5EUylcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aClcbiAgICAgICAgICAgICAgICAubWFwKFAuc3RyaW5nKVxuICAgICAgICApIGFzIFAuUGFyc2VyPGtleW9mIHR5cGVvZiBEQVRFX1NIT1JUSEFORFM+LFxuICAgIGRhdGU6IHEgPT5cbiAgICAgICAgY2hhaW5PcHQ8RGF0ZVRpbWU+KFxuICAgICAgICAgICAgcS5yb290RGF0ZSxcbiAgICAgICAgICAgICh5bTogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCItXCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBkYXkpID0+IHltLnNldCh7IGRheTogTnVtYmVyLnBhcnNlSW50KGRheSkgfSkpLFxuICAgICAgICAgICAgKHltZDogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCJUXCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBob3VyKSA9PiB5bWQuc2V0KHsgaG91cjogTnVtYmVyLnBhcnNlSW50KGhvdXIpIH0pKSxcbiAgICAgICAgICAgICh5bWRoOiBEYXRlVGltZSkgPT5cbiAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIjpcIiksIFAucmVnZXhwKC9cXGR7Mn0vKSwgKF8sIG1pbnV0ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgeW1kaC5zZXQoeyBtaW51dGU6IE51bWJlci5wYXJzZUludChtaW51dGUpIH0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICh5bWRobTogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCI6XCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBzZWNvbmQpID0+XG4gICAgICAgICAgICAgICAgICAgIHltZGhtLnNldCh7IHNlY29uZDogTnVtYmVyLnBhcnNlSW50KHNlY29uZCkgfSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKHltZGhtczogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5hbHQoXG4gICAgICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiLlwiKSwgUC5yZWdleHAoL1xcZHszfS8pLCAoXywgbWlsbGlzZWNvbmQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgUC5zdWNjZWVkKHltZGhtcykgLy8gcGFzc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZHQ6IERhdGVUaW1lKSA9PlxuICAgICAgICAgICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIitcIikub3IoUC5zdHJpbmcoXCItXCIpKSwgUC5yZWdleHAoL1xcZHsxLDJ9KDpcXGR7Mn0pPy8pLCAocG0sIGhyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZHQuc2V0Wm9uZShcIlVUQ1wiICsgcG0gKyBociwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiWlwiKSwgKCkgPT4gZHQuc2V0Wm9uZShcInV0Y1wiLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkpLFxuICAgICAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIltcIiksIFAucmVnZXhwKC9bMC05QS1aYS16Ky1cXC9dKy91KSwgUC5zdHJpbmcoXCJdXCIpLCAoX2EsIHpvbmUsIF9iKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZHQuc2V0Wm9uZSh6b25lLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgLmFzc2VydCgoZHQ6IERhdGVUaW1lKSA9PiBkdC5pc1ZhbGlkLCBcInZhbGlkIGRhdGVcIilcbiAgICAgICAgICAgIC5kZXNjKFwiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdXCIpLFxuXG4gICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS5cbiAgICBkYXRlUGx1czogcSA9PlxuICAgICAgICBQLmFsdDxEYXRlVGltZT4oXG4gICAgICAgICAgICBxLmRhdGVTaG9ydGhhbmQubWFwKGQgPT4gREFURV9TSE9SVEhBTkRTW2RdKCkpLFxuICAgICAgICAgICAgcS5kYXRlXG4gICAgICAgICkuZGVzYyhcImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSBvciBpbiBzaG9ydGhhbmRcIiksXG5cbiAgICAvLyBBIGR1cmF0aW9uIG9mIHRpbWUuXG4gICAgZHVyYXRpb25UeXBlOiBfID0+XG4gICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoRFVSQVRJT05fVFlQRVMpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgLm1hcChQLnN0cmluZylcbiAgICAgICAgKSBhcyBQLlBhcnNlcjxrZXlvZiB0eXBlb2YgRFVSQVRJT05fVFlQRVM+LFxuICAgIGR1cmF0aW9uOiBxID0+XG4gICAgICAgIFAuc2VxTWFwKHEubnVtYmVyLCBQLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb25UeXBlLCAoY291bnQsIF8sIHQpID0+IERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKHggPT4geCAqIGNvdW50KSlcbiAgICAgICAgICAgIC5zZXBCeTEoUC5zdHJpbmcoXCIsXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS5vcihQLm9wdFdoaXRlc3BhY2UpKVxuICAgICAgICAgICAgLm1hcChkdXJhdGlvbnMgPT4gZHVyYXRpb25zLnJlZHVjZSgocCwgYykgPT4gcC5wbHVzKGMpKSlcbiAgICAgICAgICAgIC5kZXNjKFwiZHVyYXRpb24gbGlrZSA0aHIybWluXCIpLFxuXG4gICAgLy8gQSByYXcgbnVsbCB2YWx1ZS5cbiAgICByYXdOdWxsOiBfID0+IFAuc3RyaW5nKFwibnVsbFwiKSxcblxuICAgIC8vIFNvdXJjZSBwYXJzaW5nLlxuICAgIHRhZ1NvdXJjZTogcSA9PiBxLnRhZy5tYXAodGFnID0+IFNvdXJjZXMudGFnKHRhZykpLFxuICAgIGNzdlNvdXJjZTogcSA9PlxuICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcImNzdihcIikuc2tpcChQLm9wdFdoaXRlc3BhY2UpLCBxLnN0cmluZywgUC5zdHJpbmcoXCIpXCIpLCAoXzEsIHBhdGgsIF8yKSA9PiBTb3VyY2VzLmNzdihwYXRoKSksXG4gICAgbGlua0luY29taW5nU291cmNlOiBxID0+IHEubGluay5tYXAobGluayA9PiBTb3VyY2VzLmxpbmsobGluay5wYXRoLCB0cnVlKSksXG4gICAgbGlua091dGdvaW5nU291cmNlOiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwib3V0Z29pbmcoXCIpLnNraXAoUC5vcHRXaGl0ZXNwYWNlKSwgcS5saW5rLCBQLnN0cmluZyhcIilcIiksIChfMSwgbGluaywgXzIpID0+XG4gICAgICAgICAgICBTb3VyY2VzLmxpbmsobGluay5wYXRoLCBmYWxzZSlcbiAgICAgICAgKSxcbiAgICBmb2xkZXJTb3VyY2U6IHEgPT4gcS5zdHJpbmcubWFwKHN0ciA9PiBTb3VyY2VzLmZvbGRlcihzdHIpKSxcbiAgICBwYXJlbnNTb3VyY2U6IHEgPT5cbiAgICAgICAgUC5zZXFNYXAoXG4gICAgICAgICAgICBQLnN0cmluZyhcIihcIiksXG4gICAgICAgICAgICBQLm9wdFdoaXRlc3BhY2UsXG4gICAgICAgICAgICBxLnNvdXJjZSxcbiAgICAgICAgICAgIFAub3B0V2hpdGVzcGFjZSxcbiAgICAgICAgICAgIFAuc3RyaW5nKFwiKVwiKSxcbiAgICAgICAgICAgIChfMSwgXzIsIGZpZWxkLCBfMywgXzQpID0+IGZpZWxkXG4gICAgICAgICksXG4gICAgbmVnYXRlU291cmNlOiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFAuYWx0KFAuc3RyaW5nKFwiLVwiKSwgUC5zdHJpbmcoXCIhXCIpKSwgcS5hdG9tU291cmNlLCAoXywgc291cmNlKSA9PiBTb3VyY2VzLm5lZ2F0ZShzb3VyY2UpKSxcbiAgICBhdG9tU291cmNlOiBxID0+XG4gICAgICAgIFAuYWx0PFNvdXJjZT4oXG4gICAgICAgICAgICBxLnBhcmVuc1NvdXJjZSxcbiAgICAgICAgICAgIHEubmVnYXRlU291cmNlLFxuICAgICAgICAgICAgcS5saW5rT3V0Z29pbmdTb3VyY2UsXG4gICAgICAgICAgICBxLmxpbmtJbmNvbWluZ1NvdXJjZSxcbiAgICAgICAgICAgIHEuZm9sZGVyU291cmNlLFxuICAgICAgICAgICAgcS50YWdTb3VyY2UsXG4gICAgICAgICAgICBxLmNzdlNvdXJjZVxuICAgICAgICApLFxuICAgIGJpbmFyeU9wU291cmNlOiBxID0+XG4gICAgICAgIGNyZWF0ZUJpbmFyeVBhcnNlcihcbiAgICAgICAgICAgIHEuYXRvbVNvdXJjZSxcbiAgICAgICAgICAgIHEuYmluYXJ5Qm9vbGVhbk9wLm1hcChzID0+IHMgYXMgU291cmNlT3ApLFxuICAgICAgICAgICAgU291cmNlcy5iaW5hcnlPcFxuICAgICAgICApLFxuICAgIHNvdXJjZTogcSA9PiBxLmJpbmFyeU9wU291cmNlLFxuXG4gICAgLy8gRmllbGQgcGFyc2luZy5cbiAgICB2YXJpYWJsZUZpZWxkOiBxID0+XG4gICAgICAgIHEuaWRlbnRpZmllclxuICAgICAgICAgICAgLmNoYWluKHIgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChLRVlXT1JEUy5pbmNsdWRlcyhyLnRvVXBwZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQLmZhaWwoXCJWYXJpYWJsZSBmaWVsZHMgY2Fubm90IGJlIGEga2V5d29yZCAoXCIgKyBLRVlXT1JEUy5qb2luKFwiIG9yIFwiKSArIFwiKVwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUC5zdWNjZWVkKEZpZWxkcy52YXJpYWJsZShyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZXNjKFwidmFyaWFibGVcIiksXG4gICAgbnVtYmVyRmllbGQ6IHEgPT4gcS5udW1iZXIubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKFwibnVtYmVyXCIpLFxuICAgIHN0cmluZ0ZpZWxkOiBxID0+IHEuc3RyaW5nLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYyhcInN0cmluZ1wiKSxcbiAgICBib29sRmllbGQ6IHEgPT4gcS5ib29sLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYyhcImJvb2xlYW5cIiksXG4gICAgZGF0ZUZpZWxkOiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5zdHJpbmcoXCJkYXRlKFwiKSxcbiAgICAgICAgICAgIFAub3B0V2hpdGVzcGFjZSxcbiAgICAgICAgICAgIHEuZGF0ZVBsdXMsXG4gICAgICAgICAgICBQLm9wdFdoaXRlc3BhY2UsXG4gICAgICAgICAgICBQLnN0cmluZyhcIilcIiksXG4gICAgICAgICAgICAocHJlZml4LCBfMSwgZGF0ZSwgXzIsIHBvc3RmaXgpID0+IEZpZWxkcy5saXRlcmFsKGRhdGUpXG4gICAgICAgICkuZGVzYyhcImRhdGVcIiksXG4gICAgZHVyYXRpb25GaWVsZDogcSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFAuc3RyaW5nKFwiZHVyKFwiKSxcbiAgICAgICAgICAgIFAub3B0V2hpdGVzcGFjZSxcbiAgICAgICAgICAgIHEuZHVyYXRpb24sXG4gICAgICAgICAgICBQLm9wdFdoaXRlc3BhY2UsXG4gICAgICAgICAgICBQLnN0cmluZyhcIilcIiksXG4gICAgICAgICAgICAocHJlZml4LCBfMSwgZHVyLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZHVyKVxuICAgICAgICApLmRlc2MoXCJkdXJhdGlvblwiKSxcbiAgICBudWxsRmllbGQ6IHEgPT4gcS5yYXdOdWxsLm1hcChfID0+IEZpZWxkcy5OVUxMKSxcbiAgICBsaW5rRmllbGQ6IHEgPT4gcS5saW5rLm1hcChmID0+IEZpZWxkcy5saXRlcmFsKGYpKSxcbiAgICBsaXN0RmllbGQ6IHEgPT5cbiAgICAgICAgcS5maWVsZFxuICAgICAgICAgICAgLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpXG4gICAgICAgICAgICAud3JhcChQLnN0cmluZyhcIltcIikuc2tpcChQLm9wdFdoaXRlc3BhY2UpLCBQLm9wdFdoaXRlc3BhY2UudGhlbihQLnN0cmluZyhcIl1cIikpKVxuICAgICAgICAgICAgLm1hcChsID0+IEZpZWxkcy5saXN0KGwpKVxuICAgICAgICAgICAgLmRlc2MoXCJsaXN0ICgnWzEsIDIsIDNdJylcIiksXG4gICAgb2JqZWN0RmllbGQ6IHEgPT5cbiAgICAgICAgUC5zZXFNYXAocS5pZGVudGlmaWVyLm9yKHEuc3RyaW5nKSwgUC5zdHJpbmcoXCI6XCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKG5hbWUsIF9zZXAsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBuYW1lLCB2YWx1ZSB9O1xuICAgICAgICB9KVxuICAgICAgICAgICAgLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpXG4gICAgICAgICAgICAud3JhcChQLnN0cmluZyhcIntcIikuc2tpcChQLm9wdFdoaXRlc3BhY2UpLCBQLm9wdFdoaXRlc3BhY2UudGhlbihQLnN0cmluZyhcIn1cIikpKVxuICAgICAgICAgICAgLm1hcCh2YWxzID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzOiBSZWNvcmQ8c3RyaW5nLCBGaWVsZD4gPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiB2YWxzKSByZXNbZW50cnkubmFtZV0gPSBlbnRyeS52YWx1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRmllbGRzLm9iamVjdChyZXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZXNjKFwib2JqZWN0ICgneyBhOiAxLCBiOiAyIH0nKVwiKSxcblxuICAgIGF0b21JbmxpbmVGaWVsZDogcSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIHEuZGF0ZSxcbiAgICAgICAgICAgIHEuZHVyYXRpb24ubWFwKGQgPT4gbm9ybWFsaXplRHVyYXRpb24oZCkpLFxuICAgICAgICAgICAgcS5zdHJpbmcsXG4gICAgICAgICAgICBxLnRhZyxcbiAgICAgICAgICAgIHEuZW1iZWRMaW5rLFxuICAgICAgICAgICAgcS5ib29sLFxuICAgICAgICAgICAgcS5udW1iZXIsXG4gICAgICAgICAgICBxLnJhd051bGxcbiAgICAgICAgKSxcbiAgICBpbmxpbmVGaWVsZExpc3Q6IHEgPT4gcS5hdG9tSW5saW5lRmllbGQuc2VwQnkoUC5zdHJpbmcoXCIsXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSxcbiAgICBpbmxpbmVGaWVsZDogcSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIFAuc2VxTWFwKHEuYXRvbUlubGluZUZpZWxkLCBQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpLCBxLmlubGluZUZpZWxkTGlzdCwgKGYsIF9zLCBsKSA9PlxuICAgICAgICAgICAgICAgIFtmXS5jb25jYXQobClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxLmF0b21JbmxpbmVGaWVsZFxuICAgICAgICApLFxuXG4gICAgYXRvbUZpZWxkOiBxID0+XG4gICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgLy8gUGxhY2UgZW1iZWQgbGlua3MgYWJvdmUgbmVnYXRlZCBmaWVsZHMgYXMgdGhleSBhcmUgdGhlIHNwZWNpYWwgcGFyc2VyIGNhc2UgJyFbW3RoaW5nXV0nIGFuZCBhcmUgZ2VuZXJhbGx5IHVuYW1iaWdpb3VzLlxuICAgICAgICAgICAgcS5lbWJlZExpbmsubWFwKGwgPT4gRmllbGRzLmxpdGVyYWwobCkpLFxuICAgICAgICAgICAgcS5uZWdhdGVkRmllbGQsXG4gICAgICAgICAgICBxLmxpbmtGaWVsZCxcbiAgICAgICAgICAgIHEubGlzdEZpZWxkLFxuICAgICAgICAgICAgcS5vYmplY3RGaWVsZCxcbiAgICAgICAgICAgIHEubGFtYmRhRmllbGQsXG4gICAgICAgICAgICBxLnBhcmVuc0ZpZWxkLFxuICAgICAgICAgICAgcS5ib29sRmllbGQsXG4gICAgICAgICAgICBxLm51bWJlckZpZWxkLFxuICAgICAgICAgICAgcS5zdHJpbmdGaWVsZCxcbiAgICAgICAgICAgIHEuZGF0ZUZpZWxkLFxuICAgICAgICAgICAgcS5kdXJhdGlvbkZpZWxkLFxuICAgICAgICAgICAgcS5udWxsRmllbGQsXG4gICAgICAgICAgICBxLnZhcmlhYmxlRmllbGRcbiAgICAgICAgKSxcbiAgICBpbmRleEZpZWxkOiBxID0+XG4gICAgICAgIFAuc2VxTWFwKHEuYXRvbUZpZWxkLCBQLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBvYmo7XG4gICAgICAgICAgICBmb3IgKGxldCBwb3N0IG9mIHBvc3RmaXhlcykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkb3RcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIEZpZWxkcy5saXRlcmFsKHBvc3QuZmllbGQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiaW5kZXhcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIHBvc3QuZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmZ1bmMocmVzdWx0LCBwb3N0LmZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pLFxuICAgIG5lZ2F0ZWRGaWVsZDogcSA9PiBQLnNlcU1hcChQLnN0cmluZyhcIiFcIiksIHEuaW5kZXhGaWVsZCwgKF8sIGZpZWxkKSA9PiBGaWVsZHMubmVnYXRlKGZpZWxkKSkuZGVzYyhcIm5lZ2F0ZWQgZmllbGRcIiksXG4gICAgcGFyZW5zRmllbGQ6IHEgPT5cbiAgICAgICAgUC5zZXFNYXAoXG4gICAgICAgICAgICBQLnN0cmluZyhcIihcIiksXG4gICAgICAgICAgICBQLm9wdFdoaXRlc3BhY2UsXG4gICAgICAgICAgICBxLmZpZWxkLFxuICAgICAgICAgICAgUC5vcHRXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgUC5zdHJpbmcoXCIpXCIpLFxuICAgICAgICAgICAgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGRcbiAgICAgICAgKSxcbiAgICBsYW1iZGFGaWVsZDogcSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIHEuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgIC5zZXBCeShQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpKVxuICAgICAgICAgICAgICAgIC53cmFwKFAuc3RyaW5nKFwiKFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSksIFAuc3RyaW5nKFwiKVwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpLFxuICAgICAgICAgICAgUC5zdHJpbmcoXCI9PlwiKS50cmltKFAub3B0V2hpdGVzcGFjZSksXG4gICAgICAgICAgICBxLmZpZWxkLFxuICAgICAgICAgICAgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwibGFtYmRhXCIsIGFyZ3VtZW50czogaWRlbnQsIHZhbHVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICksXG5cbiAgICBkb3RQb3N0Zml4OiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiLlwiKSwgcS5pZGVudGlmaWVyLCAoXywgZmllbGQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiZG90XCIsIGZpZWxkOiBmaWVsZCB9O1xuICAgICAgICB9KSxcbiAgICBpbmRleFBvc3RmaXg6IHEgPT5cbiAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCJbXCIpLCBQLm9wdFdoaXRlc3BhY2UsIHEuZmllbGQsIFAub3B0V2hpdGVzcGFjZSwgUC5zdHJpbmcoXCJdXCIpLCAoXywgXzIsIGZpZWxkLCBfMywgXzQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiaW5kZXhcIiwgZmllbGQgfTtcbiAgICAgICAgfSksXG4gICAgZnVuY3Rpb25Qb3N0Zml4OiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5zdHJpbmcoXCIoXCIpLFxuICAgICAgICAgICAgUC5vcHRXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgcS5maWVsZC5zZXBCeShQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpKSxcbiAgICAgICAgICAgIFAub3B0V2hpdGVzcGFjZSxcbiAgICAgICAgICAgIFAuc3RyaW5nKFwiKVwiKSxcbiAgICAgICAgICAgIChfLCBfMSwgZmllbGRzLCBfMiwgXzMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcImZ1bmN0aW9uXCIsIGZpZWxkcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApLFxuXG4gICAgLy8gVGhlIHByZWNlZGVuY2UgaGllcmFyY2h5IG9mIG9wZXJhdG9ycyAtIG11bHRpcGx5L2RpdmlkZSwgYWRkL3N1YnRyYWN0LCBjb21wYXJlLCBhbmQgdGhlbiBib29sZWFuIG9wZXJhdGlvbnMuXG4gICAgYmluYXJ5TXVsRGl2RmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuaW5kZXhGaWVsZCwgcS5iaW5hcnlNdWxEaXYsIEZpZWxkcy5iaW5hcnlPcCksXG4gICAgYmluYXJ5UGx1c01pbnVzRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5TXVsRGl2RmllbGQsIHEuYmluYXJ5UGx1c01pbnVzLCBGaWVsZHMuYmluYXJ5T3ApLFxuICAgIGJpbmFyeUNvbXBhcmVGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlQbHVzTWludXNGaWVsZCwgcS5iaW5hcnlDb21wYXJlT3AsIEZpZWxkcy5iaW5hcnlPcCksXG4gICAgYmluYXJ5Qm9vbGVhbkZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeUNvbXBhcmVGaWVsZCwgcS5iaW5hcnlCb29sZWFuT3AsIEZpZWxkcy5iaW5hcnlPcCksXG4gICAgYmluYXJ5T3BGaWVsZDogcSA9PiBxLmJpbmFyeUJvb2xlYW5GaWVsZCxcblxuICAgIGZpZWxkOiBxID0+IHEuYmluYXJ5T3BGaWVsZCxcbn0pO1xuXG4vKipcbiAqIEF0dGVtcHQgdG8gcGFyc2UgYSBmaWVsZCBmcm9tIHRoZSBnaXZlbiB0ZXh0LCByZXR1cm5pbmcgYSBzdHJpbmcgZXJyb3IgaWYgdGhlXG4gKiBwYXJzZSBmYWlsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZpZWxkKHRleHQ6IHN0cmluZyk6IFJlc3VsdDxGaWVsZCwgc3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKEVYUFJFU1NJT04uZmllbGQudHJ5UGFyc2UodGV4dCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShcIlwiICsgZXJyb3IpO1xuICAgIH1cbn1cbiIsICIvKiogUHJvdmlkZXMgYW4gQVNUIGZvciBjb21wbGV4IHF1ZXJpZXMuICovXG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tIFwiZGF0YS1pbmRleC9zb3VyY2VcIjtcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSBcImV4cHJlc3Npb24vZmllbGRcIjtcblxuLyoqIFRoZSBzdXBwb3J0ZWQgcXVlcnkgdHlwZXMgKGNvcnJlc3BvbmRpbmcgdG8gdmlldyB0eXBlcykuICovXG5leHBvcnQgdHlwZSBRdWVyeVR5cGUgPSBcImxpc3RcIiB8IFwidGFibGVcIiB8IFwidGFza1wiIHwgXCJjYWxlbmRhclwiO1xuXG4vKiogRmllbGRzIHVzZWQgaW4gdGhlIHF1ZXJ5IHBvcnRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkRmllbGQge1xuICAgIC8qKiBUaGUgZWZmZWN0aXZlIG5hbWUgb2YgdGhpcyBmaWVsZC4gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGlzIGZpZWxkLiAqL1xuICAgIGZpZWxkOiBGaWVsZDtcbn1cblxuLyoqIEEgcXVlcnkgc29ydCBieSBmaWVsZCwgZm9yIGRldGVybWluaW5nIHNvcnQgb3JkZXIuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U29ydEJ5IHtcbiAgICAvKiogVGhlIGZpZWxkIHRvIHNvcnQgb24uICovXG4gICAgZmllbGQ6IEZpZWxkO1xuICAgIC8qKiBUaGUgZGlyZWN0aW9uIHRvIHNvcnQgaW4uICovXG4gICAgZGlyZWN0aW9uOiBcImFzY2VuZGluZ1wiIHwgXCJkZXNjZW5kaW5nXCI7XG59XG5cbi8qKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgcXVpY2tseSBjcmVhdGluZyBmaWVsZHMuICovXG5leHBvcnQgbmFtZXNwYWNlIFF1ZXJ5RmllbGRzIHtcbiAgICBleHBvcnQgZnVuY3Rpb24gbmFtZWQobmFtZTogc3RyaW5nLCBmaWVsZDogRmllbGQpOiBOYW1lZEZpZWxkIHtcbiAgICAgICAgcmV0dXJuIHsgbmFtZSwgZmllbGQgfSBhcyBOYW1lZEZpZWxkO1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBzb3J0QnkoZmllbGQ6IEZpZWxkLCBkaXI6IFwiYXNjZW5kaW5nXCIgfCBcImRlc2NlbmRpbmdcIik6IFF1ZXJ5U29ydEJ5IHtcbiAgICAgICAgcmV0dXJuIHsgZmllbGQsIGRpcmVjdGlvbjogZGlyIH07XG4gICAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBRdWVyeSBEZWZpbml0aW9uIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8qKiBBIHF1ZXJ5IHdoaWNoIHNob3VsZCByZW5kZXIgYSBsaXN0IG9mIGVsZW1lbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0UXVlcnkge1xuICAgIHR5cGU6IFwibGlzdFwiO1xuICAgIC8qKiBXaGF0IHNob3VsZCBiZSByZW5kZXJlZCBpbiB0aGUgbGlzdC4gKi9cbiAgICBmb3JtYXQ/OiBGaWVsZDtcbiAgICAvKiogSWYgdHJ1ZSwgc2hvdyB0aGUgZGVmYXVsdCBESSBmaWVsZDsgb3RoZXJ3aXNlLCBkb24ndC4gKi9cbiAgICBzaG93SWQ6IGJvb2xlYW47XG59XG5cbi8qKiBBIHF1ZXJ5IHdoaWNoIHJlbmRlcnMgYSB0YWJsZSBvZiBlbGVtZW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVRdWVyeSB7XG4gICAgdHlwZTogXCJ0YWJsZVwiO1xuICAgIC8qKiBUaGUgZmllbGRzIChjb21wdXRlZCBvciBvdGhlcndpc2UpIHRvIHNlbGVjdC4gKi9cbiAgICBmaWVsZHM6IE5hbWVkRmllbGRbXTtcbiAgICAvKiogSWYgdHJ1ZSwgc2hvdyB0aGUgZGVmYXVsdCBJRCBmaWVsZDsgb3RoZXJ3aXNlLCBkb24ndC4gKi9cbiAgICBzaG93SWQ6IGJvb2xlYW47XG59XG5cbi8qKiBBIHF1ZXJ5IHdoaWNoIHJlbmRlcnMgYSBjb2xsZWN0aW9uIG9mIHRhc2tzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrUXVlcnkge1xuICAgIHR5cGU6IFwidGFza1wiO1xufVxuXG4vKiogQSBxdWVyeSB3aGljaCByZW5kZXJzIGEgY29sbGVjdGlvbiBvZiBub3RlcyBpbiBhIGNhbGVuZGFyIHZpZXcuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyUXVlcnkge1xuICAgIHR5cGU6IFwiY2FsZW5kYXJcIjtcbiAgICAvKiogVGhlIGRhdGUgZmllbGQgdGhhdCB3ZSdsbCBiZSBncm91cGluZyBub3RlcyBieSBmb3IgdGhlIGNhbGVuZGFyIHZpZXcgKi9cbiAgICBmaWVsZDogTmFtZWRGaWVsZDtcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlIZWFkZXIgPSBMaXN0UXVlcnkgfCBUYWJsZVF1ZXJ5IHwgVGFza1F1ZXJ5IHwgQ2FsZW5kYXJRdWVyeTtcblxuLyoqIEEgc3RlcCB3aGljaCBvbmx5IHJldGFpbnMgcm93cyB3aG9zZSAnY2xhdXNlJyBmaWVsZCBpcyB0cnV0aHkuICovXG5leHBvcnQgaW50ZXJmYWNlIFdoZXJlU3RlcCB7XG4gICAgdHlwZTogXCJ3aGVyZVwiO1xuICAgIGNsYXVzZTogRmllbGQ7XG59XG5cbi8qKiBBIHN0ZXAgd2hpY2ggc29ydHMgYWxsIGN1cnJlbnQgcm93cyBieSB0aGUgZ2l2ZW4gbGlzdCBvZiBzb3J0cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU29ydEJ5U3RlcCB7XG4gICAgdHlwZTogXCJzb3J0XCI7XG4gICAgZmllbGRzOiBRdWVyeVNvcnRCeVtdO1xufVxuXG4vKiogQSBzdGVwIHdoaWNoIHRydW5jYXRlcyB0aGUgbnVtYmVyIG9mIHJvd3MgdG8gdGhlIGdpdmVuIGFtb3VudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGltaXRTdGVwIHtcbiAgICB0eXBlOiBcImxpbWl0XCI7XG4gICAgYW1vdW50OiBGaWVsZDtcbn1cblxuLyoqIEEgc3RlcCB3aGljaCBmbGF0dGVucyByb3dzIGludG8gbXVsdGlwbGUgY2hpbGQgcm93cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxhdHRlblN0ZXAge1xuICAgIHR5cGU6IFwiZmxhdHRlblwiO1xuICAgIGZpZWxkOiBOYW1lZEZpZWxkO1xufVxuXG4vKiogQSBzdGVwIHdoaWNoIGdyb3VwcyByb3dzIGludG8gZ3JvdXBzIGJ5IHRoZSBnaXZlbiBmaWVsZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBTdGVwIHtcbiAgICB0eXBlOiBcImdyb3VwXCI7XG4gICAgZmllbGQ6IE5hbWVkRmllbGQ7XG59XG5cbi8qKiBBIHZpcnR1YWwgc3RlcCB3aGljaCBleHRyYWN0cyBhbiBhcnJheSBvZiB2YWx1ZXMgZnJvbSBlYWNoIHJvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdFN0ZXAge1xuICAgIHR5cGU6IFwiZXh0cmFjdFwiO1xuICAgIGZpZWxkczogUmVjb3JkPHN0cmluZywgRmllbGQ+O1xufVxuXG5leHBvcnQgdHlwZSBRdWVyeU9wZXJhdGlvbiA9IFdoZXJlU3RlcCB8IFNvcnRCeVN0ZXAgfCBMaW1pdFN0ZXAgfCBGbGF0dGVuU3RlcCB8IEdyb3VwU3RlcCB8IEV4dHJhY3RTdGVwO1xuXG4vKipcbiAqIEEgcXVlcnkgb3ZlciB0aGUgT2JzaWRpYW4gZGF0YWJhc2UuIFF1ZXJpZXMgaGF2ZSBhIHNwZWNpZmljIGFuZCBkZXRlcm1pbmlzdGljIGV4ZWN1dGlvbiBvcmRlcjpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVyeSB7XG4gICAgLyoqIFRoZSB2aWV3IHR5cGUgdG8gcmVuZGVyIHRoaXMgcXVlcnkgaW4uICovXG4gICAgaGVhZGVyOiBRdWVyeUhlYWRlcjtcbiAgICAvKiogVGhlIHNvdXJjZSB0aGF0IGZpbGUgY2FuZGlkYXRlcyB3aWxsIGNvbWUgZnJvbS4gKi9cbiAgICBzb3VyY2U6IFNvdXJjZTtcbiAgICAvKiogVGhlIG9wZXJhdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGRhdGEgdG8gcHJvZHVjZSB0aGUgZmluYWwgcmVzdWx0IHRoYXQgd2lsbCBiZSByZW5kZXJlZC4gKi9cbiAgICBvcGVyYXRpb25zOiBRdWVyeU9wZXJhdGlvbltdO1xufVxuIiwgImltcG9ydCB7IEVYUFJFU1NJT04gfSBmcm9tIFwiZXhwcmVzc2lvbi9wYXJzZVwiO1xuaW1wb3J0ICogYXMgUCBmcm9tIFwicGFyc2ltbW9uXCI7XG5pbXBvcnQge1xuICAgIEZsYXR0ZW5TdGVwLFxuICAgIEdyb3VwU3RlcCxcbiAgICBMaW1pdFN0ZXAsXG4gICAgTmFtZWRGaWVsZCxcbiAgICBRdWVyeSxcbiAgICBRdWVyeUZpZWxkcyxcbiAgICBRdWVyeUhlYWRlcixcbiAgICBRdWVyeU9wZXJhdGlvbixcbiAgICBRdWVyeVNvcnRCeSxcbiAgICBRdWVyeVR5cGUsXG4gICAgU29ydEJ5U3RlcCxcbiAgICBXaGVyZVN0ZXAsXG59IGZyb20gXCIuL3F1ZXJ5XCI7XG5pbXBvcnQgeyBTb3VyY2UsIFNvdXJjZXMgfSBmcm9tIFwiZGF0YS1pbmRleC9zb3VyY2VcIjtcbmltcG9ydCB7IERFRkFVTFRfUVVFUllfU0VUVElOR1MgfSBmcm9tIFwic2V0dGluZ3NcIjtcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCJhcGkvcmVzdWx0XCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFF1ZXJ5IFBhcnNpbmcgLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqIFR5cGluZ3MgZm9yIHRoZSBvdXRwdXRzIG9mIGFsbCBvZiB0aGUgcGFyc2VyIGNvbWJpbmF0b3JzLiAqL1xuaW50ZXJmYWNlIFF1ZXJ5TGFuZ3VhZ2VUeXBlcyB7XG4gICAgcXVlcnlUeXBlOiBRdWVyeVR5cGU7XG5cbiAgICBleHBsaWNpdE5hbWVkRmllbGQ6IE5hbWVkRmllbGQ7XG4gICAgbmFtZWRGaWVsZDogTmFtZWRGaWVsZDtcbiAgICBzb3J0RmllbGQ6IFF1ZXJ5U29ydEJ5O1xuXG4gICAgLy8gRW50aXJlIGNsYXVzZXMgaW4gcXVlcmllcy5cbiAgICBoZWFkZXJDbGF1c2U6IFF1ZXJ5SGVhZGVyO1xuICAgIGZyb21DbGF1c2U6IFNvdXJjZTtcbiAgICB3aGVyZUNsYXVzZTogV2hlcmVTdGVwO1xuICAgIHNvcnRCeUNsYXVzZTogU29ydEJ5U3RlcDtcbiAgICBsaW1pdENsYXVzZTogTGltaXRTdGVwO1xuICAgIGZsYXR0ZW5DbGF1c2U6IEZsYXR0ZW5TdGVwO1xuICAgIGdyb3VwQnlDbGF1c2U6IEdyb3VwU3RlcDtcbiAgICBjbGF1c2U6IFF1ZXJ5T3BlcmF0aW9uO1xuICAgIHF1ZXJ5OiBRdWVyeTtcbn1cblxuLyoqIFJldHVybiBhIG5ldyBwYXJzZXIgd2hpY2ggZXhlY3V0ZXMgdGhlIHVuZGVybHlpbmcgcGFyc2VyIGFuZCByZXR1cm5zIGl0J3MgcmF3IHN0cmluZyByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYXB0dXJlUmF3PFQ+KGJhc2U6IFAuUGFyc2VyPFQ+KTogUC5QYXJzZXI8W1QsIHN0cmluZ10+IHtcbiAgICByZXR1cm4gUC5jdXN0b20oKHN1Y2Nlc3MsIGZhaWx1cmUpID0+IHtcbiAgICAgICAgcmV0dXJuIChpbnB1dCwgaSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IChiYXNlIGFzIGFueSkuXyhpbnB1dCwgaSk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5zdGF0dXMpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZXN1bHQsIHsgdmFsdWU6IFtyZXN1bHQudmFsdWUsIGlucHV0LnN1YnN0cmluZyhpLCByZXN1bHQuaW5kZXgpXSB9KTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cblxuLyoqIFN0cmlwIG5ld2xpbmVzIGFuZCBleGNlc3Mgd2hpdGVzcGFjZSBvdXQgb2YgdGV4dC4gKi9cbmZ1bmN0aW9uIHN0cmlwTmV3bGluZXModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGV4dFxuICAgICAgICAuc3BsaXQoL1tcXHJcXG5dKy8pXG4gICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSlcbiAgICAgICAgLmpvaW4oXCJcIik7XG59XG5cbi8qKiBBIHBhcnNpbW1vbi1wb3dlcmVkIHBhcnNlci1jb21iaW5hdG9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBxdWVyeSBsYW5ndWFnZS4gKi9cbmV4cG9ydCBjb25zdCBRVUVSWV9MQU5HVUFHRSA9IFAuY3JlYXRlTGFuZ3VhZ2U8UXVlcnlMYW5ndWFnZVR5cGVzPih7XG4gICAgLy8gU2ltcGxlIGF0b20gcGFyc2luZywgbGlrZSB3b3JkcywgaWRlbnRpZmllcnMsIG51bWJlcnMuXG4gICAgcXVlcnlUeXBlOiBxID0+XG4gICAgICAgIFAuYWx0PHN0cmluZz4oUC5yZWdleHAoL1RBQkxFfExJU1R8VEFTS3xDQUxFTkRBUi9pKSlcbiAgICAgICAgICAgIC5tYXAoc3RyID0+IHN0ci50b0xvd2VyQ2FzZSgpIGFzIFF1ZXJ5VHlwZSlcbiAgICAgICAgICAgIC5kZXNjKFwicXVlcnkgdHlwZSAoJ1RBQkxFJywgJ0xJU1QnLCAnVEFTSycsIG9yICdDQUxFTkRBUicpXCIpLFxuICAgIGV4cGxpY2l0TmFtZWRGaWVsZDogcSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIEVYUFJFU1NJT04uZmllbGQuc2tpcChQLndoaXRlc3BhY2UpLFxuICAgICAgICAgICAgUC5yZWdleHAoL0FTL2kpLnNraXAoUC53aGl0ZXNwYWNlKSxcbiAgICAgICAgICAgIEVYUFJFU1NJT04uaWRlbnRpZmllci5vcihFWFBSRVNTSU9OLnN0cmluZyksXG4gICAgICAgICAgICAoZmllbGQsIF9hcywgaWRlbnQpID0+IFF1ZXJ5RmllbGRzLm5hbWVkKGlkZW50LCBmaWVsZClcbiAgICAgICAgKSxcbiAgICBuYW1lZEZpZWxkOiBxID0+XG4gICAgICAgIFAuYWx0PE5hbWVkRmllbGQ+KFxuICAgICAgICAgICAgcS5leHBsaWNpdE5hbWVkRmllbGQsXG4gICAgICAgICAgICBjYXB0dXJlUmF3KEVYUFJFU1NJT04uZmllbGQpLm1hcCgoW3ZhbHVlLCB0ZXh0XSkgPT4gUXVlcnlGaWVsZHMubmFtZWQoc3RyaXBOZXdsaW5lcyh0ZXh0KSwgdmFsdWUpKVxuICAgICAgICApLFxuICAgIHNvcnRGaWVsZDogcSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIEVYUFJFU1NJT04uZmllbGQuc2tpcChQLm9wdFdoaXRlc3BhY2UpLFxuICAgICAgICAgICAgUC5yZWdleHAoL0FTQ0VORElOR3xERVNDRU5ESU5HfEFTQ3xERVNDL2kpLmF0TW9zdCgxKSxcbiAgICAgICAgICAgIChmaWVsZCwgZGlyKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGRpcmVjdGlvbiA9IGRpci5sZW5ndGggPT0gMCA/IFwiYXNjZW5kaW5nXCIgOiBkaXJbMF0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IFwiZGVzY1wiKSBkaXJlY3Rpb24gPSBcImRlc2NlbmRpbmdcIjtcbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IFwiYXNjXCIpIGRpcmVjdGlvbiA9IFwiYXNjZW5kaW5nXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvbiBhcyBcImFzY2VuZGluZ1wiIHwgXCJkZXNjZW5kaW5nXCIsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcblxuICAgIGhlYWRlckNsYXVzZTogcSA9PlxuICAgICAgICBxLnF1ZXJ5VHlwZVxuICAgICAgICAgICAgLnNraXAoUC53aGl0ZXNwYWNlKVxuICAgICAgICAgICAgLmNoYWluKHF0eXBlID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHF0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0YWJsZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFAuc2VxTWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAucmVnZXhwKC9XSVRIT1VUXFxzK0lEL2kpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5za2lwKFAub3B0V2hpdGVzcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0TW9zdCgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQLnNlcEJ5KHEubmFtZWRGaWVsZCwgUC5zdHJpbmcoXCIsXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGhvdXRJZCwgZmllbGRzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwidGFibGVcIiwgZmllbGRzLCBzaG93SWQ6IHdpdGhvdXRJZC5sZW5ndGggPT0gMCB9IGFzIFF1ZXJ5SGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaXN0XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUC5zZXFNYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUC5yZWdleHAoL1dJVEhPVVRcXHMrSUQvaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNraXAoUC5vcHRXaGl0ZXNwYWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXRNb3N0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYUFJFU1NJT04uZmllbGQuYXRNb3N0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aXRob3V0SWQsIGZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdC5sZW5ndGggPT0gMSA/IGZvcm1hdFswXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dJZDogd2l0aG91dElkLmxlbmd0aCA9PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIFF1ZXJ5SGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0YXNrXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUC5zdWNjZWVkKHsgdHlwZTogXCJ0YXNrXCIgfSBhcyBRdWVyeUhlYWRlcik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjYWxlbmRhclwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFAuc2VxTWFwKHEubmFtZWRGaWVsZCwgZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY2FsZW5kYXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0lkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIFF1ZXJ5SGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUC5mYWlsKGBVbnJlY29nbml6ZWQgcXVlcnkgdHlwZSAnJHtxdHlwZX0nYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZXNjKFwiVEFCTEUgb3IgTElTVCBvciBUQVNLIG9yIENBTEVOREFSXCIpLFxuICAgIGZyb21DbGF1c2U6IHEgPT4gUC5zZXFNYXAoUC5yZWdleHAoL0ZST00vaSksIFAud2hpdGVzcGFjZSwgRVhQUkVTU0lPTi5zb3VyY2UsIChfMSwgXzIsIHNvdXJjZSkgPT4gc291cmNlKSxcbiAgICB3aGVyZUNsYXVzZTogcSA9PlxuICAgICAgICBQLnNlcU1hcChQLnJlZ2V4cCgvV0hFUkUvaSksIFAud2hpdGVzcGFjZSwgRVhQUkVTU0lPTi5maWVsZCwgKHdoZXJlLCBfLCBmaWVsZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJ3aGVyZVwiLCBjbGF1c2U6IGZpZWxkIH0gYXMgV2hlcmVTdGVwO1xuICAgICAgICB9KS5kZXNjKFwiV0hFUkUgPGV4cHJlc3Npb24+XCIpLFxuICAgIHNvcnRCeUNsYXVzZTogcSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFAucmVnZXhwKC9TT1JUL2kpLFxuICAgICAgICAgICAgUC53aGl0ZXNwYWNlLFxuICAgICAgICAgICAgcS5zb3J0RmllbGQuc2VwQnkxKFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpLFxuICAgICAgICAgICAgKHNvcnQsIF8xLCBmaWVsZHMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcInNvcnRcIiwgZmllbGRzIH0gYXMgU29ydEJ5U3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKS5kZXNjKFwiU09SVCBmaWVsZCBbQVNDL0RFU0NdXCIpLFxuICAgIGxpbWl0Q2xhdXNlOiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFAucmVnZXhwKC9MSU1JVC9pKSwgUC53aGl0ZXNwYWNlLCBFWFBSRVNTSU9OLmZpZWxkLCAobGltaXQsIF8xLCBmaWVsZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsaW1pdFwiLCBhbW91bnQ6IGZpZWxkIH0gYXMgTGltaXRTdGVwO1xuICAgICAgICB9KS5kZXNjKFwiTElNSVQgPHZhbHVlPlwiKSxcbiAgICBmbGF0dGVuQ2xhdXNlOiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFAucmVnZXhwKC9GTEFUVEVOL2kpLnNraXAoUC53aGl0ZXNwYWNlKSwgcS5uYW1lZEZpZWxkLCAoXywgZmllbGQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiZmxhdHRlblwiLCBmaWVsZCB9IGFzIEZsYXR0ZW5TdGVwO1xuICAgICAgICB9KS5kZXNjKFwiRkxBVFRFTiA8dmFsdWU+IFtBUyA8bmFtZT5dXCIpLFxuICAgIGdyb3VwQnlDbGF1c2U6IHEgPT5cbiAgICAgICAgUC5zZXFNYXAoUC5yZWdleHAoL0dST1VQIEJZL2kpLnNraXAoUC53aGl0ZXNwYWNlKSwgcS5uYW1lZEZpZWxkLCAoXywgZmllbGQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiZ3JvdXBcIiwgZmllbGQgfSBhcyBHcm91cFN0ZXA7XG4gICAgICAgIH0pLmRlc2MoXCJHUk9VUCBCWSA8dmFsdWU+IFtBUyA8bmFtZT5dXCIpLFxuICAgIC8vIEZ1bGwgcXVlcnkgcGFyc2luZy5cbiAgICBjbGF1c2U6IHEgPT4gUC5hbHQocS5mcm9tQ2xhdXNlLCBxLndoZXJlQ2xhdXNlLCBxLnNvcnRCeUNsYXVzZSwgcS5saW1pdENsYXVzZSwgcS5ncm91cEJ5Q2xhdXNlLCBxLmZsYXR0ZW5DbGF1c2UpLFxuICAgIHF1ZXJ5OiBxID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgcS5oZWFkZXJDbGF1c2UudHJpbShQLm9wdFdoaXRlc3BhY2UpLFxuICAgICAgICAgICAgcS5mcm9tQ2xhdXNlLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS5hdE1vc3QoMSksXG4gICAgICAgICAgICBxLmNsYXVzZS50cmltKFAub3B0V2hpdGVzcGFjZSkubWFueSgpLFxuICAgICAgICAgICAgKGhlYWRlciwgZnJvbSwgY2xhdXNlcykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBmcm9tLmxlbmd0aCA9PSAwID8gU291cmNlcy5mb2xkZXIoXCJcIikgOiBmcm9tWzBdLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zOiBjbGF1c2VzLFxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczogREVGQVVMVF9RVUVSWV9TRVRUSU5HUyxcbiAgICAgICAgICAgICAgICB9IGFzIFF1ZXJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICApLFxufSk7XG5cbi8qKlxuICogQXR0ZW1wdCB0byBwYXJzZSBhIHF1ZXJ5IGZyb20gdGhlIGdpdmVuIHF1ZXJ5IHRleHQsIHJldHVybmluZyBhIHN0cmluZyBlcnJvclxuICogaWYgdGhlIHBhcnNlIGZhaWxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUXVlcnkodGV4dDogc3RyaW5nKTogUmVzdWx0PFF1ZXJ5LCBzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgICBsZXQgcXVlcnkgPSBRVUVSWV9MQU5HVUFHRS5xdWVyeS50cnlQYXJzZSh0ZXh0KTtcbiAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKHF1ZXJ5KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gUmVzdWx0LmZhaWx1cmUoXCJcIiArIGVycm9yKTtcbiAgICB9XG59XG4iLCAiLy8gQmFzaWMgQVBJIHR5cGUuXG5leHBvcnQgdHlwZSB7IERhdGF2aWV3QXBpIH0gZnJvbSBcImFwaS9wbHVnaW4tYXBpXCI7XG5cbi8vIENvcmUgRGF0YXZpZXcgdHlwZXMuXG5leHBvcnQgdHlwZSB7IERhdGVUaW1lLCBEdXJhdGlvbiB9IGZyb20gXCJsdXhvblwiO1xuZXhwb3J0IHR5cGUge1xuICAgIExpbmssXG4gICAgRGF0YU9iamVjdCxcbiAgICBMaXRlcmFsVHlwZSxcbiAgICBMaXRlcmFsLFxuICAgIExpdGVyYWxSZXByLFxuICAgIFdyYXBwZWRMaXRlcmFsLFxuICAgIExpdGVyYWxXcmFwcGVyLFxuICAgIFdpZGdldCxcbn0gZnJvbSBcImRhdGEtbW9kZWwvdmFsdWVcIjtcblxuZXhwb3J0IHR5cGUgeyBSZXN1bHQsIFN1Y2Nlc3MsIEZhaWx1cmUgfSBmcm9tIFwiYXBpL3Jlc3VsdFwiO1xuZXhwb3J0IHR5cGUgeyBEYXRhQXJyYXkgfSBmcm9tIFwiYXBpL2RhdGEtYXJyYXlcIjtcblxuLy8gRGF0YXZpZXcgSW5kZXguXG5leHBvcnQgdHlwZSB7IExpc3RJdGVtLCBQYWdlTWV0YWRhdGEgfSBmcm9tIFwiZGF0YS1tb2RlbC9tYXJrZG93blwiO1xuZXhwb3J0IHR5cGUgeyBGdWxsSW5kZXgsIFByZWZpeEluZGV4LCBJbmRleE1hcCB9IGZyb20gXCJkYXRhLWluZGV4L2luZGV4XCI7XG5cbi8vIFNlcmlhbGl6ZWQgdHlwZXMgd2hpY2ggZGVzY3JpYmUgYWxsIG91dHB1dHMgb2Ygc2VyaWFsaXphdGlvbi5cbmV4cG9ydCB0eXBlIHsgU01hcmtkb3duUGFnZSwgU0xpc3RFbnRyeSwgU1Rhc2sgfSBmcm9tIFwiZGF0YS1tb2RlbC9zZXJpYWxpemVkL21hcmtkb3duXCI7XG5cbi8vIFVzZWZ1bCB1dGlsaXRpZXMgZm9yIGRpcmVjdGx5IHVzaW5nIGRhdGF2aWV3IHBhcnNlcnMuXG5leHBvcnQge1xuICAgIERVUkFUSU9OX1RZUEVTLFxuICAgIERBVEVfU0hPUlRIQU5EUyxcbiAgICBLRVlXT1JEUyxcbiAgICBFeHByZXNzaW9uTGFuZ3VhZ2UsXG4gICAgRVhQUkVTU0lPTixcbiAgICBwYXJzZUZpZWxkLFxufSBmcm9tIFwiZXhwcmVzc2lvbi9wYXJzZVwiO1xuZXhwb3J0IHsgUVVFUllfTEFOR1VBR0UgfSBmcm9tIFwicXVlcnkvcGFyc2VcIjtcbmV4cG9ydCB7IFF1ZXJ5IH0gZnJvbSBcInF1ZXJ5L3F1ZXJ5XCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBsZW1lbnRhdGlvbiAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuaW1wb3J0IHR5cGUgeyBEYXRhdmlld0FwaSB9IGZyb20gXCJhcGkvcGx1Z2luLWFwaVwiO1xuXG5pbXBvcnQgXCJvYnNpZGlhblwiO1xuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuLy8gVXRpbGl0eSBmdW5jdGlvbnMuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCBEYXRhdmlldyBBUEkgZnJvbSB0aGUgYXBwIGlmIHByb3ZpZGVkOyBpZiBub3QsIGl0IGlzIGluZmVycmVkIGZyb20gdGhlIGdsb2JhbCBBUEkgb2JqZWN0IGluc3RhbGxlZFxuICogb24gdGhlIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFQSSA9IChhcHA/OiBBcHApOiBEYXRhdmlld0FwaSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKGFwcCkgcmV0dXJuIGFwcC5wbHVnaW5zLnBsdWdpbnMuZGF0YXZpZXc/LmFwaTtcbiAgICBlbHNlIHJldHVybiB3aW5kb3cuRGF0YXZpZXdBUEk7XG59O1xuXG4vKiogRGV0ZXJtaW5lIGlmIERhdGF2aWV3IGlzIGVuYWJsZWQgaW4gdGhlIGdpdmVuIGFwcGxpY2F0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IGlzUGx1Z2luRW5hYmxlZCA9IChhcHA6IEFwcCkgPT4gYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKFwiZGF0YXZpZXdcIik7XG4iLCAiaW1wb3J0IHsgUGx1Z2luLCBURmlsZSwgVEZvbGRlciB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgUmFuZG9tTm90ZU1vZGFsIH0gZnJvbSBcInNyYy9ndWkvbW9kYWxzL09wZW5SYW5kb21Ob3RlTW9kYWwvb3BlblJhbmRvbU5vdGVNb2RhbFwiO1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSBcIi4vc2VhcmNoXCI7XG5pbXBvcnQgeyBERUZBVUxUX1NFVFRJTkdTLCBTZXR0aW5nVGFiLCBTZXR0aW5ncyB9IGZyb20gXCIuL3NldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFF1ZXJ5LCBRdWVyeU9wZW5UeXBlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7XG5cdGRlbGV0ZU9ic2lkaWFuQ29tbWFuZCxcblx0ZmxhdHRlbkZpbGUsXG5cdGdldFBsdWdpbkNvbW1hbmRJZCxcblx0Z2V0UmFuZG9tRWxlbWVudCxcbn0gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkdmFuY2VkUmFuZG9tTm90ZSBleHRlbmRzIFBsdWdpbiB7XG5cdHNldHRpbmdzITogU2V0dGluZ3M7XG5cblx0YXN5bmMgb25sb2FkKCkge1xuXHRcdC8vIExvYWQgcGx1Z2luIHNldHRpbmdzXG5cdFx0YXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcblxuXHRcdC8vIEFkZCByYW5kb20gbm90ZSBtb2RhbCBjb21tYW5kXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcIm9wZW4tcXVlcnktbW9kYWxcIixcblx0XHRcdG5hbWU6IFwiT3BlbiBxdWVyeSBtb2RhbFwiLFxuXHRcdFx0Y2FsbGJhY2s6ICgpID0+IHRoaXMuaGFuZGxlT3BlblJhbmRvbUZpbGVNb2RhbCgpLFxuXHRcdH0pO1xuXG5cdFx0Ly8gT3BlbiBnZW5lcmljIHJhbmRvbSBub3RlXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcIm9wZW4tcmFuZG9tLW5vdGVcIixcblx0XHRcdG5hbWU6IFwiT3BlbiByYW5kb20gbm90ZVwiLFxuXHRcdFx0Y2FsbGJhY2s6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5vcGVuUmFuZG9tTWFya2Rvd25GaWxlKCk7XG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0Ly8gT3BlbiBnZW5lcmljIHJhbmRvbSBub3RlXG5cdFx0dGhpcy5hZGRDb21tYW5kKHtcblx0XHRcdGlkOiBcIm9wZW4tcmFuZG9tLWZpbGVcIixcblx0XHRcdG5hbWU6IFwiT3BlbiByYW5kb20gZmlsZVwiLFxuXHRcdFx0Y2FsbGJhY2s6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5vcGVuUmFuZG9tVmF1bHRGaWxlKCk7XG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRSaWJib25JY29uKFwiZGljZVwiLCBcIk9wZW4gcmFuZG9tIG5vdGUgbW9kYWxcIiwgKCkgPT4ge1xuXHRcdFx0dGhpcy5oYW5kbGVPcGVuUmFuZG9tRmlsZU1vZGFsKCk7XG5cdFx0fSk7XG5cblx0XHQvLyBGaWxlIG1lbnVcblx0XHR0aGlzLnJlZ2lzdGVyRXZlbnQoXG5cdFx0XHR0aGlzLmFwcC53b3Jrc3BhY2Uub24oXCJmaWxlLW1lbnVcIiwgKG1lbnUsIGZpbGUpID0+IHtcblx0XHRcdFx0aWYgKCEoZmlsZSBpbnN0YW5jZW9mIFRGb2xkZXIpIHx8IGZpbGUuaXNSb290KCkpIHJldHVybjtcblxuXHRcdFx0XHRtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRpdGVtLnNldFRpdGxlKFwiT3BlbiByYW5kb20gbm90ZVwiKVxuXHRcdFx0XHRcdFx0LnNldEljb24oXCJkaWNlXCIpXG5cdFx0XHRcdFx0XHQub25DbGljayhhc3luYyAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGZpbGVzID0gZmxhdHRlbkZpbGUoZmlsZSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGZvdW5kRmlsZXMgPSBhd2FpdCBuZXcgU2VhcmNoKFxuXHRcdFx0XHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0XHRcdFx0KS5zZWFyY2hGaWxlcyhmaWxlcywgZmlsZS5wYXRoICsgXCIvXCIpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9wZW5SYW5kb21GaWxlKGZvdW5kRmlsZXMpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0Ly8gU2V0dXAgc2F2ZWQgcXVlcmllc1xuXHRcdHRoaXMuYWRkUXVlcnlDb21tYW5kcygpO1xuXG5cdFx0Ly8gQWRkIHNldHRpbmdzIHRhYlxuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgU2V0dGluZ1RhYih0aGlzLmFwcCwgdGhpcykpO1xuXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiTG9hZGVkIFwiICsgdGhpcy5tYW5pZmVzdC5uYW1lKTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG5cdFx0dGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oXG5cdFx0XHR7fSxcblx0XHRcdERFRkFVTFRfU0VUVElOR1MsXG5cdFx0XHRhd2FpdCB0aGlzLmxvYWREYXRhKClcblx0XHQpO1xuXHR9XG5cblx0YXN5bmMgc2F2ZVNldHRpbmdzKCkge1xuXHRcdGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XG5cdH1cblxuXHRhc3luYyBvcGVuRmlsZShmaWxlOiBURmlsZSwgb3BlblR5cGU6IFF1ZXJ5T3BlblR5cGUgPSBcIkRlZmF1bHRcIikge1xuXHRcdGlmIChvcGVuVHlwZSA9PT0gXCJEZWZhdWx0XCIpIG9wZW5UeXBlID0gdGhpcy5zZXR0aW5ncy5vcGVuVHlwZTtcblx0XHRzd2l0Y2ggKG9wZW5UeXBlKSB7XG5cdFx0XHRjYXNlIFwiTmV3IFdpbmRvd1wiOlxuXHRcdFx0XHRhd2FpdCB0aGlzLmFwcC53b3Jrc3BhY2Vcblx0XHRcdFx0XHQuZ2V0TGVhZihcIndpbmRvd1wiKVxuXHRcdFx0XHRcdC5vcGVuRmlsZShmaWxlLCB7IGFjdGl2ZTogdGhpcy5zZXR0aW5ncy5zZXRBY3RpdmUgfSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdGNhc2UgXCJOZXcgTGVhZlwiOlxuXHRcdFx0XHRhd2FpdCB0aGlzLmFwcC53b3Jrc3BhY2Vcblx0XHRcdFx0XHQuZ2V0TGVhZihcInRhYlwiKVxuXHRcdFx0XHRcdC5vcGVuRmlsZShmaWxlLCB7IGFjdGl2ZTogdGhpcy5zZXR0aW5ncy5zZXRBY3RpdmUgfSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGF3YWl0IHRoaXMuYXBwLndvcmtzcGFjZS5vcGVuTGlua1RleHQoZmlsZS5wYXRoLCBcIlwiLCBmYWxzZSwge1xuXHRcdFx0XHRcdGFjdGl2ZTogdGhpcy5zZXR0aW5ncy5zZXRBY3RpdmUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRhc3luYyBvcGVuUmFuZG9tRmlsZShmaWxlczogVEZpbGVbXSwgb3BlblR5cGU6IFF1ZXJ5T3BlblR5cGUgPSBcIkRlZmF1bHRcIikge1xuXHRcdC8vIEdldCByYW5kb20gbm90ZSBmcm9tIGZpbGVzYFxuXHRcdGNvbnN0IGZpbGUgPSBnZXRSYW5kb21FbGVtZW50KGZpbGVzKTtcblxuXHRcdGlmICghZmlsZSkgcmV0dXJuO1xuXG5cdFx0aWYgKHRoaXMuc2V0dGluZ3MuZGVidWcpIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiRm91bmQgYW5kIG9wZW5lZCBmaWxlOlwiKTtcblx0XHRcdGNvbnNvbGUubG9nKGZpbGUpO1xuXHRcdH1cblxuXHRcdC8vIE9wZW4gZmlsZVxuXHRcdGF3YWl0IHRoaXMub3BlbkZpbGUoZmlsZSwgb3BlblR5cGUpO1xuXHR9XG5cblx0YXN5bmMgb3BlblJhbmRvbU1hcmtkb3duRmlsZSgpIHtcblx0XHRjb25zdCBmb3VuZEZpbGVzID0gYXdhaXQgbmV3IFNlYXJjaCh0aGlzKS5zZWFyY2hGaWxlcyhcblx0XHRcdHRoaXMuYXBwLnZhdWx0LmdldE1hcmtkb3duRmlsZXMoKVxuXHRcdCk7XG5cdFx0YXdhaXQgdGhpcy5vcGVuUmFuZG9tRmlsZShmb3VuZEZpbGVzKTtcblx0fVxuXG5cdGFzeW5jIG9wZW5SYW5kb21WYXVsdEZpbGUoKSB7XG5cdFx0Y29uc3QgZm91bmRGaWxlcyA9IGF3YWl0IG5ldyBTZWFyY2godGhpcykuc2VhcmNoRmlsZXMoXG5cdFx0XHR0aGlzLmFwcC52YXVsdC5nZXRGaWxlcygpXG5cdFx0KTtcblx0XHRhd2FpdCB0aGlzLm9wZW5SYW5kb21GaWxlKGZvdW5kRmlsZXMpO1xuXHR9XG5cblx0aGFuZGxlT3BlblJhbmRvbUZpbGVNb2RhbCgpIHtcblx0XHRjb25zdCBtb2RhbCA9IG5ldyBSYW5kb21Ob3RlTW9kYWwoXG5cdFx0XHR0aGlzLmFwcCxcblx0XHRcdHRoaXMuc2V0dGluZ3MucXVlcmllcyxcblx0XHRcdGFzeW5jIChxdWVyeTogUXVlcnkpID0+IHRoaXMuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KVxuXHRcdCk7XG5cdFx0bW9kYWwub3BlbigpO1xuXHR9XG5cblx0YXN5bmMgZXhlY3V0ZVF1ZXJ5KHF1ZXJ5OiBRdWVyeSkge1xuXHRcdGNvbnN0IGZpbGVzID0gYXdhaXQgbmV3IFNlYXJjaCh0aGlzKS5zZWFyY2gocXVlcnkpO1xuXG5cdFx0aWYgKGZpbGVzLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0YXdhaXQgdGhpcy5vcGVuUmFuZG9tRmlsZShmaWxlcywgcXVlcnkub3BlblR5cGUpO1xuXHR9XG5cblx0YWRkUXVlcnlDb21tYW5kcygpIHtcblx0XHR0aGlzLnNldHRpbmdzLnF1ZXJpZXMuZm9yRWFjaChcblx0XHRcdChxdWVyeSkgPT4gcXVlcnkuY3JlYXRlQ29tbWFuZCAmJiB0aGlzLmFkZFF1ZXJ5Q29tbWFuZChxdWVyeSlcblx0XHQpO1xuXHR9XG5cblx0YWRkUXVlcnlDb21tYW5kKHF1ZXJ5OiBRdWVyeSkge1xuXHRcdHRoaXMuYWRkQ29tbWFuZCh7XG5cdFx0XHRpZDogcXVlcnkuaWQsXG5cdFx0XHRuYW1lOiBxdWVyeS5uYW1lLFxuXHRcdFx0Y2FsbGJhY2s6IGFzeW5jICgpID0+IHRoaXMuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KSxcblx0XHR9KTtcblx0fVxuXG5cdHJlbW92ZVF1ZXJ5Q29tbWFuZChxdWVyeTogUXVlcnkpIHtcblx0XHRkZWxldGVPYnNpZGlhbkNvbW1hbmQoXG5cdFx0XHR0aGlzLmFwcCxcblx0XHRcdGdldFBsdWdpbkNvbW1hbmRJZChxdWVyeS5pZCwgdGhpcy5tYW5pZmVzdClcblx0XHQpO1xuXHR9XG59XG4iLCAiaW1wb3J0IHsgQXBwLCBNb2RhbCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwiLi9PcGVuUmFuZG9tTm90ZU1vZGFsLnN2ZWx0ZVwiO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwic3JjL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBSYW5kb21Ob3RlTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XG5cdHZpZXc6IENvbXBvbmVudDtcblx0cXVlcmllczogUXVlcnlbXTtcblx0c3VibWl0Q2FsbGJhY2s6ICgocXVlcnk6IFF1ZXJ5KSA9PiBQcm9taXNlPHZvaWQ+KSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRhcHA6IEFwcCxcblx0XHRxdWVyaWVzOiBRdWVyeVtdLFxuXHRcdHN1Ym1pdENhbGxiYWNrOiAocXVlcnk6IFF1ZXJ5KSA9PiBQcm9taXNlPHZvaWQ+XG5cdCkge1xuXHRcdHN1cGVyKGFwcCk7XG5cdFx0dGhpcy5xdWVyaWVzID0gcXVlcmllcztcblx0XHR0aGlzLnZpZXcgPSBuZXcgQ29tcG9uZW50KHtcblx0XHRcdHRhcmdldDogdGhpcy5jb250ZW50RWwsXG5cdFx0XHRwcm9wczogeyBxdWVyaWVzLCBoYW5kbGVTdWJtaXQ6IHRoaXMuaGFuZGxlU3VibWl0IH0sXG5cdFx0fSk7XG5cdFx0dGhpcy5zdWJtaXRDYWxsYmFjayA9IHN1Ym1pdENhbGxiYWNrO1xuXHR9XG5cblx0aGFuZGxlU3VibWl0ID0gKHF1ZXJ5OiBRdWVyeSk6IHZvaWQgPT4ge1xuXHRcdGlmICh0aGlzLnN1Ym1pdENhbGxiYWNrKSB7XG5cdFx0XHR0aGlzLnN1Ym1pdENhbGxiYWNrKHF1ZXJ5KTtcblx0XHR9XG5cdFx0dGhpcy5jbG9zZSgpO1xuXHR9O1xufVxuIiwgIi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge31cblxuZXhwb3J0IGNvbnN0IGlkZW50aXR5ID0gKHgpID0+IHg7XG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0ZW1wbGF0ZSBTXG4gKiBAcGFyYW0ge1R9IHRhclxuICogQHBhcmFtIHtTfSBzcmNcbiAqIEByZXR1cm5zIHtUICYgU31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbih0YXIsIHNyYykge1xuXHQvLyBAdHMtaWdub3JlXG5cdGZvciAoY29uc3QgayBpbiBzcmMpIHRhcltrXSA9IHNyY1trXTtcblx0cmV0dXJuIC8qKiBAdHlwZSB7VCAmIFN9ICovICh0YXIpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3RoZW4vaXMtcHJvbWlzZS9ibG9iL21hc3Rlci9pbmRleC5qc1xuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIExpY2Vuc2UgaHR0cHM6Ly9naXRodWIuY29tL3RoZW4vaXMtcHJvbWlzZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHJldHVybnMge3ZhbHVlIGlzIFByb21pc2VMaWtlPGFueT59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc19wcm9taXNlKHZhbHVlKSB7XG5cdHJldHVybiAoXG5cdFx0ISF2YWx1ZSAmJlxuXHRcdCh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykgJiZcblx0XHR0eXBlb2YgKC8qKiBAdHlwZSB7YW55fSAqLyAodmFsdWUpLnRoZW4pID09PSAnZnVuY3Rpb24nXG5cdCk7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRfbG9jYXRpb24oZWxlbWVudCwgZmlsZSwgbGluZSwgY29sdW1uLCBjaGFyKSB7XG5cdGVsZW1lbnQuX19zdmVsdGVfbWV0YSA9IHtcblx0XHRsb2M6IHsgZmlsZSwgbGluZSwgY29sdW1uLCBjaGFyIH1cblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bihmbikge1xuXHRyZXR1cm4gZm4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsYW5rX29iamVjdCgpIHtcblx0cmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbltdfSBmbnNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuX2FsbChmbnMpIHtcblx0Zm5zLmZvckVhY2gocnVuKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdGhpbmdcbiAqIEByZXR1cm5zIHt0aGluZyBpcyBGdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzX2Z1bmN0aW9uKHRoaW5nKSB7XG5cdHJldHVybiB0eXBlb2YgdGhpbmcgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYWZlX25vdF9lcXVhbChhLCBiKSB7XG5cdHJldHVybiBhICE9IGEgPyBiID09IGIgOiBhICE9PSBiIHx8IChhICYmIHR5cGVvZiBhID09PSAnb2JqZWN0JykgfHwgdHlwZW9mIGEgPT09ICdmdW5jdGlvbic7XG59XG5cbmxldCBzcmNfdXJsX2VxdWFsX2FuY2hvcjtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZWxlbWVudF9zcmNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3JjX3VybF9lcXVhbChlbGVtZW50X3NyYywgdXJsKSB7XG5cdGlmIChlbGVtZW50X3NyYyA9PT0gdXJsKSByZXR1cm4gdHJ1ZTtcblx0aWYgKCFzcmNfdXJsX2VxdWFsX2FuY2hvcikge1xuXHRcdHNyY191cmxfZXF1YWxfYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHR9XG5cdC8vIFRoaXMgaXMgYWN0dWFsbHkgZmFzdGVyIHRoYW4gZG9pbmcgVVJMKC4uKS5ocmVmXG5cdHNyY191cmxfZXF1YWxfYW5jaG9yLmhyZWYgPSB1cmw7XG5cdHJldHVybiBlbGVtZW50X3NyYyA9PT0gc3JjX3VybF9lcXVhbF9hbmNob3IuaHJlZjtcbn1cblxuLyoqIEBwYXJhbSB7c3RyaW5nfSBzcmNzZXQgKi9cbmZ1bmN0aW9uIHNwbGl0X3NyY3NldChzcmNzZXQpIHtcblx0cmV0dXJuIHNyY3NldC5zcGxpdCgnLCcpLm1hcCgoc3JjKSA9PiBzcmMudHJpbSgpLnNwbGl0KCcgJykuZmlsdGVyKEJvb2xlYW4pKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0hUTUxTb3VyY2VFbGVtZW50IHwgSFRNTEltYWdlRWxlbWVudH0gZWxlbWVudF9zcmNzZXRcbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbH0gc3Jjc2V0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNyY3NldF91cmxfZXF1YWwoZWxlbWVudF9zcmNzZXQsIHNyY3NldCkge1xuXHRjb25zdCBlbGVtZW50X3VybHMgPSBzcGxpdF9zcmNzZXQoZWxlbWVudF9zcmNzZXQuc3Jjc2V0KTtcblx0Y29uc3QgdXJscyA9IHNwbGl0X3NyY3NldChzcmNzZXQgfHwgJycpO1xuXG5cdHJldHVybiAoXG5cdFx0dXJscy5sZW5ndGggPT09IGVsZW1lbnRfdXJscy5sZW5ndGggJiZcblx0XHR1cmxzLmV2ZXJ5KFxuXHRcdFx0KFt1cmwsIHdpZHRoXSwgaSkgPT5cblx0XHRcdFx0d2lkdGggPT09IGVsZW1lbnRfdXJsc1tpXVsxXSAmJlxuXHRcdFx0XHQvLyBXZSBuZWVkIHRvIHRlc3QgYm90aCB3YXlzIGJlY2F1c2UgVml0ZSB3aWxsIGNyZWF0ZSBhbiBhIGZ1bGwgVVJMIHdpdGhcblx0XHRcdFx0Ly8gYG5ldyBVUkwoYXNzZXQsIGltcG9ydC5tZXRhLnVybCkuaHJlZmAgZm9yIHRoZSBjbGllbnQgd2hlbiBgYmFzZTogJy4vJ2AsIGFuZCB0aGVcblx0XHRcdFx0Ly8gcmVsYXRpdmUgVVJMcyBpbnNpZGUgc3Jjc2V0IGFyZSBub3QgYXV0b21hdGljYWxseSByZXNvbHZlZCB0byBhYnNvbHV0ZSBVUkxzIGJ5XG5cdFx0XHRcdC8vIGJyb3dzZXJzIChpbiBjb250cmFzdCB0byBpbWcuc3JjKS4gVGhpcyBtZWFucyBib3RoIFNTUiBhbmQgRE9NIGNvZGUgY291bGRcblx0XHRcdFx0Ly8gY29udGFpbiByZWxhdGl2ZSBvciBhYnNvbHV0ZSBVUkxzLlxuXHRcdFx0XHQoc3JjX3VybF9lcXVhbChlbGVtZW50X3VybHNbaV1bMF0sIHVybCkgfHwgc3JjX3VybF9lcXVhbCh1cmwsIGVsZW1lbnRfdXJsc1tpXVswXSkpXG5cdFx0KVxuXHQpO1xufVxuXG4vKiogQHJldHVybnMge2Jvb2xlYW59ICovXG5leHBvcnQgZnVuY3Rpb24gbm90X2VxdWFsKGEsIGIpIHtcblx0cmV0dXJuIGEgIT0gYSA/IGIgPT0gYiA6IGEgIT09IGI7XG59XG5cbi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc19lbXB0eShvYmopIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVfc3RvcmUoc3RvcmUsIG5hbWUpIHtcblx0aWYgKHN0b3JlICE9IG51bGwgJiYgdHlwZW9mIHN0b3JlLnN1YnNjcmliZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGlzIG5vdCBhIHN0b3JlIHdpdGggYSAnc3Vic2NyaWJlJyBtZXRob2RgKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic2NyaWJlKHN0b3JlLCAuLi5jYWxsYmFja3MpIHtcblx0aWYgKHN0b3JlID09IG51bGwpIHtcblx0XHRmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIGNhbGxiYWNrcykge1xuXHRcdFx0Y2FsbGJhY2sodW5kZWZpbmVkKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5vb3A7XG5cdH1cblx0Y29uc3QgdW5zdWIgPSBzdG9yZS5zdWJzY3JpYmUoLi4uY2FsbGJhY2tzKTtcblx0cmV0dXJuIHVuc3ViLnVuc3Vic2NyaWJlID8gKCkgPT4gdW5zdWIudW5zdWJzY3JpYmUoKSA6IHVuc3ViO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCB2YWx1ZSBmcm9tIGEgc3RvcmUgYnkgc3Vic2NyaWJpbmcgYW5kIGltbWVkaWF0ZWx5IHVuc3Vic2NyaWJpbmcuXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLXN0b3JlI2dldFxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9zdG9yZS9wdWJsaWMuanMnKS5SZWFkYWJsZTxUPn0gc3RvcmVcbiAqIEByZXR1cm5zIHtUfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0X3N0b3JlX3ZhbHVlKHN0b3JlKSB7XG5cdGxldCB2YWx1ZTtcblx0c3Vic2NyaWJlKHN0b3JlLCAoXykgPT4gKHZhbHVlID0gXykpKCk7XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvbmVudF9zdWJzY3JpYmUoY29tcG9uZW50LCBzdG9yZSwgY2FsbGJhY2spIHtcblx0Y29tcG9uZW50LiQkLm9uX2Rlc3Ryb3kucHVzaChzdWJzY3JpYmUoc3RvcmUsIGNhbGxiYWNrKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfc2xvdChkZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGZuKSB7XG5cdGlmIChkZWZpbml0aW9uKSB7XG5cdFx0Y29uc3Qgc2xvdF9jdHggPSBnZXRfc2xvdF9jb250ZXh0KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pO1xuXHRcdHJldHVybiBkZWZpbml0aW9uWzBdKHNsb3RfY3R4KTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRfc2xvdF9jb250ZXh0KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pIHtcblx0cmV0dXJuIGRlZmluaXRpb25bMV0gJiYgZm4gPyBhc3NpZ24oJCRzY29wZS5jdHguc2xpY2UoKSwgZGVmaW5pdGlvblsxXShmbihjdHgpKSkgOiAkJHNjb3BlLmN0eDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldF9zbG90X2NoYW5nZXMoZGVmaW5pdGlvbiwgJCRzY29wZSwgZGlydHksIGZuKSB7XG5cdGlmIChkZWZpbml0aW9uWzJdICYmIGZuKSB7XG5cdFx0Y29uc3QgbGV0cyA9IGRlZmluaXRpb25bMl0oZm4oZGlydHkpKTtcblx0XHRpZiAoJCRzY29wZS5kaXJ0eSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gbGV0cztcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBsZXRzID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Y29uc3QgbWVyZ2VkID0gW107XG5cdFx0XHRjb25zdCBsZW4gPSBNYXRoLm1heCgkJHNjb3BlLmRpcnR5Lmxlbmd0aCwgbGV0cy5sZW5ndGgpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkge1xuXHRcdFx0XHRtZXJnZWRbaV0gPSAkJHNjb3BlLmRpcnR5W2ldIHwgbGV0c1tpXTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtZXJnZWQ7XG5cdFx0fVxuXHRcdHJldHVybiAkJHNjb3BlLmRpcnR5IHwgbGV0cztcblx0fVxuXHRyZXR1cm4gJCRzY29wZS5kaXJ0eTtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZV9zbG90X2Jhc2UoXG5cdHNsb3QsXG5cdHNsb3RfZGVmaW5pdGlvbixcblx0Y3R4LFxuXHQkJHNjb3BlLFxuXHRzbG90X2NoYW5nZXMsXG5cdGdldF9zbG90X2NvbnRleHRfZm5cbikge1xuXHRpZiAoc2xvdF9jaGFuZ2VzKSB7XG5cdFx0Y29uc3Qgc2xvdF9jb250ZXh0ID0gZ2V0X3Nsb3RfY29udGV4dChzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZ2V0X3Nsb3RfY29udGV4dF9mbik7XG5cdFx0c2xvdC5wKHNsb3RfY29udGV4dCwgc2xvdF9jaGFuZ2VzKTtcblx0fVxufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlX3Nsb3QoXG5cdHNsb3QsXG5cdHNsb3RfZGVmaW5pdGlvbixcblx0Y3R4LFxuXHQkJHNjb3BlLFxuXHRkaXJ0eSxcblx0Z2V0X3Nsb3RfY2hhbmdlc19mbixcblx0Z2V0X3Nsb3RfY29udGV4dF9mblxuKSB7XG5cdGNvbnN0IHNsb3RfY2hhbmdlcyA9IGdldF9zbG90X2NoYW5nZXMoc2xvdF9kZWZpbml0aW9uLCAkJHNjb3BlLCBkaXJ0eSwgZ2V0X3Nsb3RfY2hhbmdlc19mbik7XG5cdHVwZGF0ZV9zbG90X2Jhc2Uoc2xvdCwgc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIHNsb3RfY2hhbmdlcywgZ2V0X3Nsb3RfY29udGV4dF9mbik7XG59XG5cbi8qKiBAcmV0dXJucyB7YW55W10gfCAtMX0gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRfYWxsX2RpcnR5X2Zyb21fc2NvcGUoJCRzY29wZSkge1xuXHRpZiAoJCRzY29wZS5jdHgubGVuZ3RoID4gMzIpIHtcblx0XHRjb25zdCBkaXJ0eSA9IFtdO1xuXHRcdGNvbnN0IGxlbmd0aCA9ICQkc2NvcGUuY3R4Lmxlbmd0aCAvIDMyO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblx0XHRcdGRpcnR5W2ldID0gLTE7XG5cdFx0fVxuXHRcdHJldHVybiBkaXJ0eTtcblx0fVxuXHRyZXR1cm4gLTE7XG59XG5cbi8qKiBAcmV0dXJucyB7e319ICovXG5leHBvcnQgZnVuY3Rpb24gZXhjbHVkZV9pbnRlcm5hbF9wcm9wcyhwcm9wcykge1xuXHRjb25zdCByZXN1bHQgPSB7fTtcblx0Zm9yIChjb25zdCBrIGluIHByb3BzKSBpZiAoa1swXSAhPT0gJyQnKSByZXN1bHRba10gPSBwcm9wc1trXTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEByZXR1cm5zIHt7fX0gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlX3Jlc3RfcHJvcHMocHJvcHMsIGtleXMpIHtcblx0Y29uc3QgcmVzdCA9IHt9O1xuXHRrZXlzID0gbmV3IFNldChrZXlzKTtcblx0Zm9yIChjb25zdCBrIGluIHByb3BzKSBpZiAoIWtleXMuaGFzKGspICYmIGtbMF0gIT09ICckJykgcmVzdFtrXSA9IHByb3BzW2tdO1xuXHRyZXR1cm4gcmVzdDtcbn1cblxuLyoqIEByZXR1cm5zIHt7fX0gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlX3Nsb3RzKHNsb3RzKSB7XG5cdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRmb3IgKGNvbnN0IGtleSBpbiBzbG90cykge1xuXHRcdHJlc3VsdFtrZXldID0gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogQHJldHVybnMgeyh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uY2UoZm4pIHtcblx0bGV0IHJhbiA9IGZhbHNlO1xuXHRyZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRpZiAocmFuKSByZXR1cm47XG5cdFx0cmFuID0gdHJ1ZTtcblx0XHRmbi5jYWxsKHRoaXMsIC4uLmFyZ3MpO1xuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVsbF90b19lbXB0eSh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRfc3RvcmVfdmFsdWUoc3RvcmUsIHJldCwgdmFsdWUpIHtcblx0c3RvcmUuc2V0KHZhbHVlKTtcblx0cmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGNvbnN0IGhhc19wcm9wID0gKG9iaiwgcHJvcCkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25fZGVzdHJveWVyKGFjdGlvbl9yZXN1bHQpIHtcblx0cmV0dXJuIGFjdGlvbl9yZXN1bHQgJiYgaXNfZnVuY3Rpb24oYWN0aW9uX3Jlc3VsdC5kZXN0cm95KSA/IGFjdGlvbl9yZXN1bHQuZGVzdHJveSA6IG5vb3A7XG59XG5cbi8qKiBAcGFyYW0ge251bWJlciB8IHN0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtbbnVtYmVyLCBzdHJpbmddfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRfY3NzX3VuaXQodmFsdWUpIHtcblx0Y29uc3Qgc3BsaXQgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLm1hdGNoKC9eXFxzKigtP1tcXGQuXSspKFteXFxzXSopXFxzKiQvKTtcblx0cmV0dXJuIHNwbGl0ID8gW3BhcnNlRmxvYXQoc3BsaXRbMV0pLCBzcGxpdFsyXSB8fCAncHgnXSA6IFsvKiogQHR5cGUge251bWJlcn0gKi8gKHZhbHVlKSwgJ3B4J107XG59XG5cbmV4cG9ydCBjb25zdCBjb250ZW50ZWRpdGFibGVfdHJ1dGh5X3ZhbHVlcyA9IFsnJywgdHJ1ZSwgMSwgJ3RydWUnLCAnY29udGVudGVkaXRhYmxlJ107XG4iLCAiLyoqIEB0eXBlIHt0eXBlb2YgZ2xvYmFsVGhpc30gKi9cbmV4cG9ydCBjb25zdCBnbG9iYWxzID1cblx0dHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCdcblx0XHQ/IHdpbmRvd1xuXHRcdDogdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnXG5cdFx0PyBnbG9iYWxUaGlzXG5cdFx0OiAvLyBAdHMtaWdub3JlIE5vZGUgdHlwaW5ncyBoYXZlIHRoaXNcblx0XHQgIGdsb2JhbDtcbiIsICJpbXBvcnQgeyBnbG9iYWxzIH0gZnJvbSAnLi9nbG9iYWxzLmpzJztcblxuLyoqXG4gKiBSZXNpemUgb2JzZXJ2ZXIgc2luZ2xldG9uLlxuICogT25lIGxpc3RlbmVyIHBlciBlbGVtZW50IG9ubHkhXG4gKiBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2EvY2hyb21pdW0ub3JnL2cvYmxpbmstZGV2L2MvejZpZW5PTlViNUEvbS9GNS1WY1VadEJBQUpcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc2l6ZU9ic2VydmVyU2luZ2xldG9uIHtcblx0LyoqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEByZWFkb25seVxuXHQgKiBAdHlwZSB7V2Vha01hcDxFbGVtZW50LCBpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLkxpc3RlbmVyPn1cblx0ICovXG5cdF9saXN0ZW5lcnMgPSAnV2Vha01hcCcgaW4gZ2xvYmFscyA/IG5ldyBXZWFrTWFwKCkgOiB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEB0eXBlIHtSZXNpemVPYnNlcnZlcn1cblx0ICovXG5cdF9vYnNlcnZlciA9IHVuZGVmaW5lZDtcblxuXHQvKiogQHR5cGUge1Jlc2l6ZU9ic2VydmVyT3B0aW9uc30gKi9cblx0b3B0aW9ucztcblxuXHQvKiogQHBhcmFtIHtSZXNpemVPYnNlcnZlck9wdGlvbnN9IG9wdGlvbnMgKi9cblx0Y29uc3RydWN0b3Iob3B0aW9ucykge1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50XG5cdCAqIEBwYXJhbSB7aW1wb3J0KCcuL3ByaXZhdGUuanMnKS5MaXN0ZW5lcn0gbGlzdGVuZXJcblx0ICogQHJldHVybnMgeygpID0+IHZvaWR9XG5cdCAqL1xuXHRvYnNlcnZlKGVsZW1lbnQsIGxpc3RlbmVyKSB7XG5cdFx0dGhpcy5fbGlzdGVuZXJzLnNldChlbGVtZW50LCBsaXN0ZW5lcik7XG5cdFx0dGhpcy5fZ2V0T2JzZXJ2ZXIoKS5vYnNlcnZlKGVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHRoaXMuX2xpc3RlbmVycy5kZWxldGUoZWxlbWVudCk7XG5cdFx0XHR0aGlzLl9vYnNlcnZlci51bm9ic2VydmUoZWxlbWVudCk7IC8vIHRoaXMgbGluZSBjYW4gcHJvYmFibHkgYmUgcmVtb3ZlZFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQHByaXZhdGVcblx0ICovXG5cdF9nZXRPYnNlcnZlcigpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5fb2JzZXJ2ZXIgPz9cblx0XHRcdCh0aGlzLl9vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcblx0XHRcdFx0XHRSZXNpemVPYnNlcnZlclNpbmdsZXRvbi5lbnRyaWVzLnNldChlbnRyeS50YXJnZXQsIGVudHJ5KTtcblx0XHRcdFx0XHR0aGlzLl9saXN0ZW5lcnMuZ2V0KGVudHJ5LnRhcmdldCk/LihlbnRyeSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pKVxuXHRcdCk7XG5cdH1cbn1cblxuLy8gTmVlZHMgdG8gYmUgd3JpdHRlbiBsaWtlIHRoaXMgdG8gcGFzcyB0aGUgdHJlZS1zaGFrZS10ZXN0XG5SZXNpemVPYnNlcnZlclNpbmdsZXRvbi5lbnRyaWVzID0gJ1dlYWtNYXAnIGluIGdsb2JhbHMgPyBuZXcgV2Vha01hcCgpIDogdW5kZWZpbmVkO1xuIiwgImltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2luZ2xldG9uIH0gZnJvbSAnLi9SZXNpemVPYnNlcnZlclNpbmdsZXRvbi5qcyc7XG5pbXBvcnQgeyBjb250ZW50ZWRpdGFibGVfdHJ1dGh5X3ZhbHVlcywgaGFzX3Byb3AgfSBmcm9tICcuL3V0aWxzLmpzJztcbi8vIFRyYWNrIHdoaWNoIG5vZGVzIGFyZSBjbGFpbWVkIGR1cmluZyBoeWRyYXRpb24uIFVuY2xhaW1lZCBub2RlcyBjYW4gdGhlbiBiZSByZW1vdmVkIGZyb20gdGhlIERPTVxuLy8gYXQgdGhlIGVuZCBvZiBoeWRyYXRpb24gd2l0aG91dCB0b3VjaGluZyB0aGUgcmVtYWluaW5nIG5vZGVzLlxubGV0IGlzX2h5ZHJhdGluZyA9IGZhbHNlO1xuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRfaHlkcmF0aW5nKCkge1xuXHRpc19oeWRyYXRpbmcgPSB0cnVlO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5kX2h5ZHJhdGluZygpIHtcblx0aXNfaHlkcmF0aW5nID0gZmFsc2U7XG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGxvd1xuICogQHBhcmFtIHtudW1iZXJ9IGhpZ2hcbiAqIEBwYXJhbSB7KGluZGV4OiBudW1iZXIpID0+IG51bWJlcn0ga2V5XG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIHVwcGVyX2JvdW5kKGxvdywgaGlnaCwga2V5LCB2YWx1ZSkge1xuXHQvLyBSZXR1cm4gZmlyc3QgaW5kZXggb2YgdmFsdWUgbGFyZ2VyIHRoYW4gaW5wdXQgdmFsdWUgaW4gdGhlIHJhbmdlIFtsb3csIGhpZ2gpXG5cdHdoaWxlIChsb3cgPCBoaWdoKSB7XG5cdFx0Y29uc3QgbWlkID0gbG93ICsgKChoaWdoIC0gbG93KSA+PiAxKTtcblx0XHRpZiAoa2V5KG1pZCkgPD0gdmFsdWUpIHtcblx0XHRcdGxvdyA9IG1pZCArIDE7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhpZ2ggPSBtaWQ7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBsb3c7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlRXh9IHRhcmdldFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGluaXRfaHlkcmF0ZSh0YXJnZXQpIHtcblx0aWYgKHRhcmdldC5oeWRyYXRlX2luaXQpIHJldHVybjtcblx0dGFyZ2V0Lmh5ZHJhdGVfaW5pdCA9IHRydWU7XG5cdC8vIFdlIGtub3cgdGhhdCBhbGwgY2hpbGRyZW4gaGF2ZSBjbGFpbV9vcmRlciB2YWx1ZXMgc2luY2UgdGhlIHVuY2xhaW1lZCBoYXZlIGJlZW4gZGV0YWNoZWQgaWYgdGFyZ2V0IGlzIG5vdCA8aGVhZD5cblxuXHRsZXQgY2hpbGRyZW4gPSAvKiogQHR5cGUge0FycmF5TGlrZTxOb2RlRXgyPn0gKi8gKHRhcmdldC5jaGlsZE5vZGVzKTtcblx0Ly8gSWYgdGFyZ2V0IGlzIDxoZWFkPiwgdGhlcmUgbWF5IGJlIGNoaWxkcmVuIHdpdGhvdXQgY2xhaW1fb3JkZXJcblx0aWYgKHRhcmdldC5ub2RlTmFtZSA9PT0gJ0hFQUQnKSB7XG5cdFx0Y29uc3QgbXlDaGlsZHJlbiA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IG5vZGUgPSBjaGlsZHJlbltpXTtcblx0XHRcdGlmIChub2RlLmNsYWltX29yZGVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0bXlDaGlsZHJlbi5wdXNoKG5vZGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjaGlsZHJlbiA9IG15Q2hpbGRyZW47XG5cdH1cblx0Lypcblx0ICogUmVvcmRlciBjbGFpbWVkIGNoaWxkcmVuIG9wdGltYWxseS5cblx0ICogV2UgY2FuIHJlb3JkZXIgY2xhaW1lZCBjaGlsZHJlbiBvcHRpbWFsbHkgYnkgZmluZGluZyB0aGUgbG9uZ2VzdCBzdWJzZXF1ZW5jZSBvZlxuXHQgKiBub2RlcyB0aGF0IGFyZSBhbHJlYWR5IGNsYWltZWQgaW4gb3JkZXIgYW5kIG9ubHkgbW92aW5nIHRoZSByZXN0LiBUaGUgbG9uZ2VzdFxuXHQgKiBzdWJzZXF1ZW5jZSBvZiBub2RlcyB0aGF0IGFyZSBjbGFpbWVkIGluIG9yZGVyIGNhbiBiZSBmb3VuZCBieVxuXHQgKiBjb21wdXRpbmcgdGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiAuY2xhaW1fb3JkZXIgdmFsdWVzLlxuXHQgKlxuXHQgKiBUaGlzIGFsZ29yaXRobSBpcyBvcHRpbWFsIGluIGdlbmVyYXRpbmcgdGhlIGxlYXN0IGFtb3VudCBvZiByZW9yZGVyIG9wZXJhdGlvbnNcblx0ICogcG9zc2libGUuXG5cdCAqXG5cdCAqIFByb29mOlxuXHQgKiBXZSBrbm93IHRoYXQsIGdpdmVuIGEgc2V0IG9mIHJlb3JkZXJpbmcgb3BlcmF0aW9ucywgdGhlIG5vZGVzIHRoYXQgZG8gbm90IG1vdmVcblx0ICogYWx3YXlzIGZvcm0gYW4gaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSwgc2luY2UgdGhleSBkbyBub3QgbW92ZSBhbW9uZyBlYWNoIG90aGVyXG5cdCAqIG1lYW5pbmcgdGhhdCB0aGV5IG11c3QgYmUgYWxyZWFkeSBvcmRlcmVkIGFtb25nIGVhY2ggb3RoZXIuIFRodXMsIHRoZSBtYXhpbWFsXG5cdCAqIHNldCBvZiBub2RlcyB0aGF0IGRvIG5vdCBtb3ZlIGZvcm0gYSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2UuXG5cdCAqL1xuXHQvLyBDb21wdXRlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZVxuXHQvLyBtOiBzdWJzZXF1ZW5jZSBsZW5ndGggaiA9PiBpbmRleCBrIG9mIHNtYWxsZXN0IHZhbHVlIHRoYXQgZW5kcyBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIGxlbmd0aCBqXG5cdGNvbnN0IG0gPSBuZXcgSW50MzJBcnJheShjaGlsZHJlbi5sZW5ndGggKyAxKTtcblx0Ly8gUHJlZGVjZXNzb3IgaW5kaWNlcyArIDFcblx0Y29uc3QgcCA9IG5ldyBJbnQzMkFycmF5KGNoaWxkcmVuLmxlbmd0aCk7XG5cdG1bMF0gPSAtMTtcblx0bGV0IGxvbmdlc3QgPSAwO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY3VycmVudCA9IGNoaWxkcmVuW2ldLmNsYWltX29yZGVyO1xuXHRcdC8vIEZpbmQgdGhlIGxhcmdlc3Qgc3Vic2VxdWVuY2UgbGVuZ3RoIHN1Y2ggdGhhdCBpdCBlbmRzIGluIGEgdmFsdWUgbGVzcyB0aGFuIG91ciBjdXJyZW50IHZhbHVlXG5cdFx0Ly8gdXBwZXJfYm91bmQgcmV0dXJucyBmaXJzdCBncmVhdGVyIHZhbHVlLCBzbyB3ZSBzdWJ0cmFjdCBvbmVcblx0XHQvLyB3aXRoIGZhc3QgcGF0aCBmb3Igd2hlbiB3ZSBhcmUgb24gdGhlIGN1cnJlbnQgbG9uZ2VzdCBzdWJzZXF1ZW5jZVxuXHRcdGNvbnN0IHNlcUxlbiA9XG5cdFx0XHQobG9uZ2VzdCA+IDAgJiYgY2hpbGRyZW5bbVtsb25nZXN0XV0uY2xhaW1fb3JkZXIgPD0gY3VycmVudFxuXHRcdFx0XHQ/IGxvbmdlc3QgKyAxXG5cdFx0XHRcdDogdXBwZXJfYm91bmQoMSwgbG9uZ2VzdCwgKGlkeCkgPT4gY2hpbGRyZW5bbVtpZHhdXS5jbGFpbV9vcmRlciwgY3VycmVudCkpIC0gMTtcblx0XHRwW2ldID0gbVtzZXFMZW5dICsgMTtcblx0XHRjb25zdCBuZXdMZW4gPSBzZXFMZW4gKyAxO1xuXHRcdC8vIFdlIGNhbiBndWFyYW50ZWUgdGhhdCBjdXJyZW50IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBoYXZlIGdlbmVyYXRlZCBhIGxvbmdlciBzZXF1ZW5jZS5cblx0XHRtW25ld0xlbl0gPSBpO1xuXHRcdGxvbmdlc3QgPSBNYXRoLm1heChuZXdMZW4sIGxvbmdlc3QpO1xuXHR9XG5cdC8vIFRoZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2Ygbm9kZXMgKGluaXRpYWxseSByZXZlcnNlZClcblxuXHQvKipcblx0ICogQHR5cGUge05vZGVFeDJbXX1cblx0ICovXG5cdGNvbnN0IGxpcyA9IFtdO1xuXHQvLyBUaGUgcmVzdCBvZiB0aGUgbm9kZXMsIG5vZGVzIHRoYXQgd2lsbCBiZSBtb3ZlZFxuXG5cdC8qKlxuXHQgKiBAdHlwZSB7Tm9kZUV4MltdfVxuXHQgKi9cblx0Y29uc3QgdG9Nb3ZlID0gW107XG5cdGxldCBsYXN0ID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTtcblx0Zm9yIChsZXQgY3VyID0gbVtsb25nZXN0XSArIDE7IGN1ciAhPSAwOyBjdXIgPSBwW2N1ciAtIDFdKSB7XG5cdFx0bGlzLnB1c2goY2hpbGRyZW5bY3VyIC0gMV0pO1xuXHRcdGZvciAoOyBsYXN0ID49IGN1cjsgbGFzdC0tKSB7XG5cdFx0XHR0b01vdmUucHVzaChjaGlsZHJlbltsYXN0XSk7XG5cdFx0fVxuXHRcdGxhc3QtLTtcblx0fVxuXHRmb3IgKDsgbGFzdCA+PSAwOyBsYXN0LS0pIHtcblx0XHR0b01vdmUucHVzaChjaGlsZHJlbltsYXN0XSk7XG5cdH1cblx0bGlzLnJldmVyc2UoKTtcblx0Ly8gV2Ugc29ydCB0aGUgbm9kZXMgYmVpbmcgbW92ZWQgdG8gZ3VhcmFudGVlIHRoYXQgdGhlaXIgaW5zZXJ0aW9uIG9yZGVyIG1hdGNoZXMgdGhlIGNsYWltIG9yZGVyXG5cdHRvTW92ZS5zb3J0KChhLCBiKSA9PiBhLmNsYWltX29yZGVyIC0gYi5jbGFpbV9vcmRlcik7XG5cdC8vIEZpbmFsbHksIHdlIG1vdmUgdGhlIG5vZGVzXG5cdGZvciAobGV0IGkgPSAwLCBqID0gMDsgaSA8IHRvTW92ZS5sZW5ndGg7IGkrKykge1xuXHRcdHdoaWxlIChqIDwgbGlzLmxlbmd0aCAmJiB0b01vdmVbaV0uY2xhaW1fb3JkZXIgPj0gbGlzW2pdLmNsYWltX29yZGVyKSB7XG5cdFx0XHRqKys7XG5cdFx0fVxuXHRcdGNvbnN0IGFuY2hvciA9IGogPCBsaXMubGVuZ3RoID8gbGlzW2pdIDogbnVsbDtcblx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKHRvTW92ZVtpXSwgYW5jaG9yKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Tm9kZX0gdGFyZ2V0XG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kKHRhcmdldCwgbm9kZSkge1xuXHR0YXJnZXQuYXBwZW5kQ2hpbGQobm9kZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlfSB0YXJnZXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZV9zaGVldF9pZFxuICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRfc3R5bGVzKHRhcmdldCwgc3R5bGVfc2hlZXRfaWQsIHN0eWxlcykge1xuXHRjb25zdCBhcHBlbmRfc3R5bGVzX3RvID0gZ2V0X3Jvb3RfZm9yX3N0eWxlKHRhcmdldCk7XG5cdGlmICghYXBwZW5kX3N0eWxlc190by5nZXRFbGVtZW50QnlJZChzdHlsZV9zaGVldF9pZCkpIHtcblx0XHRjb25zdCBzdHlsZSA9IGVsZW1lbnQoJ3N0eWxlJyk7XG5cdFx0c3R5bGUuaWQgPSBzdHlsZV9zaGVldF9pZDtcblx0XHRzdHlsZS50ZXh0Q29udGVudCA9IHN0eWxlcztcblx0XHRhcHBlbmRfc3R5bGVzaGVldChhcHBlbmRfc3R5bGVzX3RvLCBzdHlsZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqIEByZXR1cm5zIHtTaGFkb3dSb290IHwgRG9jdW1lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRfcm9vdF9mb3Jfc3R5bGUobm9kZSkge1xuXHRpZiAoIW5vZGUpIHJldHVybiBkb2N1bWVudDtcblx0Y29uc3Qgcm9vdCA9IG5vZGUuZ2V0Um9vdE5vZGUgPyBub2RlLmdldFJvb3ROb2RlKCkgOiBub2RlLm93bmVyRG9jdW1lbnQ7XG5cdGlmIChyb290ICYmIC8qKiBAdHlwZSB7U2hhZG93Um9vdH0gKi8gKHJvb3QpLmhvc3QpIHtcblx0XHRyZXR1cm4gLyoqIEB0eXBlIHtTaGFkb3dSb290fSAqLyAocm9vdCk7XG5cdH1cblx0cmV0dXJuIG5vZGUub3duZXJEb2N1bWVudDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqIEByZXR1cm5zIHtDU1NTdHlsZVNoZWV0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQobm9kZSkge1xuXHRjb25zdCBzdHlsZV9lbGVtZW50ID0gZWxlbWVudCgnc3R5bGUnKTtcblx0Ly8gRm9yIHRyYW5zaXRpb25zIHRvIHdvcmsgd2l0aG91dCAnc3R5bGUtc3JjOiB1bnNhZmUtaW5saW5lJyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSxcblx0Ly8gdGhlc2UgZW1wdHkgdGFncyBuZWVkIHRvIGJlIGFsbG93ZWQgd2l0aCBhIGhhc2ggYXMgYSB3b3JrYXJvdW5kIHVudGlsIHdlIG1vdmUgdG8gdGhlIFdlYiBBbmltYXRpb25zIEFQSS5cblx0Ly8gVXNpbmcgdGhlIGhhc2ggZm9yIHRoZSBlbXB0eSBzdHJpbmcgKGZvciBhbiBlbXB0eSB0YWcpIHdvcmtzIGluIGFsbCBicm93c2VycyBleGNlcHQgU2FmYXJpLlxuXHQvLyBTbyBhcyBhIHdvcmthcm91bmQgZm9yIHRoZSB3b3JrYXJvdW5kLCB3aGVuIHdlIGFwcGVuZCBlbXB0eSBzdHlsZSB0YWdzIHdlIHNldCB0aGVpciBjb250ZW50IHRvIC8qIGVtcHR5ICovLlxuXHQvLyBUaGUgaGFzaCAnc2hhMjU2LTlPbE5PMERORWVhVnpITDRSWndDTHNCSEE4V0JROHRvQnAvNEY1WFYybmM9JyB3aWxsIHRoZW4gd29yayBldmVuIGluIFNhZmFyaS5cblx0c3R5bGVfZWxlbWVudC50ZXh0Q29udGVudCA9ICcvKiBlbXB0eSAqLyc7XG5cdGFwcGVuZF9zdHlsZXNoZWV0KGdldF9yb290X2Zvcl9zdHlsZShub2RlKSwgc3R5bGVfZWxlbWVudCk7XG5cdHJldHVybiBzdHlsZV9lbGVtZW50LnNoZWV0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7U2hhZG93Um9vdCB8IERvY3VtZW50fSBub2RlXG4gKiBAcGFyYW0ge0hUTUxTdHlsZUVsZW1lbnR9IHN0eWxlXG4gKiBAcmV0dXJucyB7Q1NTU3R5bGVTaGVldH1cbiAqL1xuZnVuY3Rpb24gYXBwZW5kX3N0eWxlc2hlZXQobm9kZSwgc3R5bGUpIHtcblx0YXBwZW5kKC8qKiBAdHlwZSB7RG9jdW1lbnR9ICovIChub2RlKS5oZWFkIHx8IG5vZGUsIHN0eWxlKTtcblx0cmV0dXJuIHN0eWxlLnNoZWV0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Tm9kZUV4fSB0YXJnZXRcbiAqIEBwYXJhbSB7Tm9kZUV4fSBub2RlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKSB7XG5cdGlmIChpc19oeWRyYXRpbmcpIHtcblx0XHRpbml0X2h5ZHJhdGUodGFyZ2V0KTtcblx0XHRpZiAoXG5cdFx0XHR0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHQodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgIT09IG51bGwgJiYgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQucGFyZW50Tm9kZSAhPT0gdGFyZ2V0KVxuXHRcdCkge1xuXHRcdFx0dGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSB0YXJnZXQuZmlyc3RDaGlsZDtcblx0XHR9XG5cdFx0Ly8gU2tpcCBub2RlcyBvZiB1bmRlZmluZWQgb3JkZXJpbmdcblx0XHR3aGlsZSAodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgIT09IG51bGwgJiYgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQuY2xhaW1fb3JkZXIgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZC5uZXh0U2libGluZztcblx0XHR9XG5cdFx0aWYgKG5vZGUgIT09IHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkKSB7XG5cdFx0XHQvLyBXZSBvbmx5IGluc2VydCBpZiB0aGUgb3JkZXJpbmcgb2YgdGhpcyBub2RlIHNob3VsZCBiZSBtb2RpZmllZCBvciB0aGUgcGFyZW50IG5vZGUgaXMgbm90IHRhcmdldFxuXHRcdFx0aWYgKG5vZGUuY2xhaW1fb3JkZXIgIT09IHVuZGVmaW5lZCB8fCBub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCkge1xuXHRcdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKG5vZGUsIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSBub2RlLm5leHRTaWJsaW5nO1xuXHRcdH1cblx0fSBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCB8fCBub2RlLm5leHRTaWJsaW5nICE9PSBudWxsKSB7XG5cdFx0dGFyZ2V0LmFwcGVuZENoaWxkKG5vZGUpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlfSB0YXJnZXRcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtOb2RlfSBbYW5jaG9yXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnQodGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcblx0dGFyZ2V0Lmluc2VydEJlZm9yZShub2RlLCBhbmNob3IgfHwgbnVsbCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlRXh9IHRhcmdldFxuICogQHBhcmFtIHtOb2RlRXh9IG5vZGVcbiAqIEBwYXJhbSB7Tm9kZUV4fSBbYW5jaG9yXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG5cdGlmIChpc19oeWRyYXRpbmcgJiYgIWFuY2hvcikge1xuXHRcdGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKTtcblx0fSBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCB8fCBub2RlLm5leHRTaWJsaW5nICE9IGFuY2hvcikge1xuXHRcdHRhcmdldC5pbnNlcnRCZWZvcmUobm9kZSwgYW5jaG9yIHx8IG51bGwpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlfSBub2RlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaChub2RlKSB7XG5cdGlmIChub2RlLnBhcmVudE5vZGUpIHtcblx0XHRub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXN0cm95X2VhY2goaXRlcmF0aW9ucywgZGV0YWNoaW5nKSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdGlmIChpdGVyYXRpb25zW2ldKSBpdGVyYXRpb25zW2ldLmQoZGV0YWNoaW5nKTtcblx0fVxufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7a2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwfSBLXG4gKiBAcGFyYW0ge0t9IG5hbWVcbiAqIEByZXR1cm5zIHtIVE1MRWxlbWVudFRhZ05hbWVNYXBbS119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbGVtZW50KG5hbWUpIHtcblx0cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHtrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXB9IEtcbiAqIEBwYXJhbSB7S30gbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IGlzXG4gKiBAcmV0dXJucyB7SFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZWxlbWVudF9pcyhuYW1lLCBpcykge1xuXHRyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lLCB7IGlzIH0pO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdGVtcGxhdGUge2tleW9mIFR9IEtcbiAqIEBwYXJhbSB7VH0gb2JqXG4gKiBAcGFyYW0ge0tbXX0gZXhjbHVkZVxuICogQHJldHVybnMge1BpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzKG9iaiwgZXhjbHVkZSkge1xuXHRjb25zdCB0YXJnZXQgPSAvKiogQHR5cGUge1BpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj59ICovICh7fSk7XG5cdGZvciAoY29uc3QgayBpbiBvYmopIHtcblx0XHRpZiAoXG5cdFx0XHRoYXNfcHJvcChvYmosIGspICYmXG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRleGNsdWRlLmluZGV4T2YoaykgPT09IC0xXG5cdFx0KSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHR0YXJnZXRba10gPSBvYmpba107XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHtrZXlvZiBTVkdFbGVtZW50VGFnTmFtZU1hcH0gS1xuICogQHBhcmFtIHtLfSBuYW1lXG4gKiBAcmV0dXJucyB7U1ZHRWxlbWVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN2Z19lbGVtZW50KG5hbWUpIHtcblx0cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCBuYW1lKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YVxuICogQHJldHVybnMge1RleHR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXh0KGRhdGEpIHtcblx0cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRhdGEpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtUZXh0fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYWNlKCkge1xuXHRyZXR1cm4gdGV4dCgnICcpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtUZXh0fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5KCkge1xuXHRyZXR1cm4gdGV4dCgnJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnRcbiAqIEByZXR1cm5zIHtDb21tZW50fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudChjb250ZW50KSB7XG5cdHJldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KGNvbnRlbnQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RXZlbnRUYXJnZXR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFxuICogQHBhcmFtIHtFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0fSBoYW5kbGVyXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB8IEV2ZW50TGlzdGVuZXJPcHRpb25zfSBbb3B0aW9uc11cbiAqIEByZXR1cm5zIHsoKSA9PiB2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuKG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XG5cdG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG5cdHJldHVybiAoKSA9PiBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHsoZXZlbnQ6IGFueSkgPT4gYW55fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXZlbnRfZGVmYXVsdChmbikge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0cmV0dXJuIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuXHR9O1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHsoZXZlbnQ6IGFueSkgPT4gYW55fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3BfcHJvcGFnYXRpb24oZm4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRyZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG5cdH07XG59XG5cbi8qKlxuICogQHJldHVybnMgeyhldmVudDogYW55KSA9PiBhbnl9ICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24oZm4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuXHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRyZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG5cdH07XG59XG5cbi8qKlxuICogQHJldHVybnMgeyhldmVudDogYW55KSA9PiB2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGYoZm4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzKSBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcblx0fTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7KGV2ZW50OiBhbnkpID0+IHZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RlZChmbikge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGlmIChldmVudC5pc1RydXN0ZWQpIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHtzdHJpbmd9IGF0dHJpYnV0ZVxuICogQHBhcmFtIHtzdHJpbmd9IFt2YWx1ZV1cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG5cdGlmICh2YWx1ZSA9PSBudWxsKSBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuXHRlbHNlIGlmIChub2RlLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpICE9PSB2YWx1ZSkgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSk7XG59XG4vKipcbiAqIExpc3Qgb2YgYXR0cmlidXRlcyB0aGF0IHNob3VsZCBhbHdheXMgYmUgc2V0IHRocm91Z2ggdGhlIGF0dHIgbWV0aG9kLFxuICogYmVjYXVzZSB1cGRhdGluZyB0aGVtIHRocm91Z2ggdGhlIHByb3BlcnR5IHNldHRlciBkb2Vzbid0IHdvcmsgcmVsaWFibHkuXG4gKiBJbiB0aGUgZXhhbXBsZSBvZiBgd2lkdGhgL2BoZWlnaHRgLCB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBzZXR0ZXIgb25seVxuICogYWNjZXB0cyBudW1lcmljIHZhbHVlcywgYnV0IHRoZSBhdHRyaWJ1dGUgY2FuIGFsc28gYmUgc2V0IHRvIGEgc3RyaW5nIGxpa2UgYDUwJWAuXG4gKiBJZiB0aGlzIGxpc3QgYmVjb21lcyB0b28gYmlnLCByZXRoaW5rIHRoaXMgYXBwcm9hY2guXG4gKi9cbmNvbnN0IGFsd2F5c19zZXRfdGhyb3VnaF9zZXRfYXR0cmlidXRlID0gWyd3aWR0aCcsICdoZWlnaHQnXTtcblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnQgJiBFbGVtZW50Q1NTSW5saW5lU3R5bGV9IG5vZGVcbiAqIEBwYXJhbSB7eyBbeDogc3RyaW5nXTogc3RyaW5nIH19IGF0dHJpYnV0ZXNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2F0dHJpYnV0ZXMobm9kZSwgYXR0cmlidXRlcykge1xuXHQvLyBAdHMtaWdub3JlXG5cdGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobm9kZS5fX3Byb3RvX18pO1xuXHRmb3IgKGNvbnN0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG5cdFx0aWYgKGF0dHJpYnV0ZXNba2V5XSA9PSBudWxsKSB7XG5cdFx0XHRub2RlLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuXHRcdH0gZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG5cdFx0XHRub2RlLnN0eWxlLmNzc1RleHQgPSBhdHRyaWJ1dGVzW2tleV07XG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdfX3ZhbHVlJykge1xuXHRcdFx0LyoqIEB0eXBlIHthbnl9ICovIChub2RlKS52YWx1ZSA9IG5vZGVba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0ZGVzY3JpcHRvcnNba2V5XSAmJlxuXHRcdFx0ZGVzY3JpcHRvcnNba2V5XS5zZXQgJiZcblx0XHRcdGFsd2F5c19zZXRfdGhyb3VnaF9zZXRfYXR0cmlidXRlLmluZGV4T2Yoa2V5KSA9PT0gLTFcblx0XHQpIHtcblx0XHRcdG5vZGVba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YXR0cihub2RlLCBrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50ICYgRWxlbWVudENTU0lubGluZVN0eWxlfSBub2RlXG4gKiBAcGFyYW0ge3sgW3g6IHN0cmluZ106IHN0cmluZyB9fSBhdHRyaWJ1dGVzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9zdmdfYXR0cmlidXRlcyhub2RlLCBhdHRyaWJ1dGVzKSB7XG5cdGZvciAoY29uc3Qga2V5IGluIGF0dHJpYnV0ZXMpIHtcblx0XHRhdHRyKG5vZGUsIGtleSwgYXR0cmlidXRlc1trZXldKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IGRhdGFfbWFwXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9jdXN0b21fZWxlbWVudF9kYXRhX21hcChub2RlLCBkYXRhX21hcCkge1xuXHRPYmplY3Qua2V5cyhkYXRhX21hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0c2V0X2N1c3RvbV9lbGVtZW50X2RhdGEobm9kZSwga2V5LCBkYXRhX21hcFtrZXldKTtcblx0fSk7XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2N1c3RvbV9lbGVtZW50X2RhdGEobm9kZSwgcHJvcCwgdmFsdWUpIHtcblx0aWYgKHByb3AgaW4gbm9kZSkge1xuXHRcdG5vZGVbcHJvcF0gPSB0eXBlb2Ygbm9kZVtwcm9wXSA9PT0gJ2Jvb2xlYW4nICYmIHZhbHVlID09PSAnJyA/IHRydWUgOiB2YWx1ZTtcblx0fSBlbHNlIHtcblx0XHRhdHRyKG5vZGUsIHByb3AsIHZhbHVlKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9keW5hbWljX2VsZW1lbnRfZGF0YSh0YWcpIHtcblx0cmV0dXJuIC8tLy50ZXN0KHRhZykgPyBzZXRfY3VzdG9tX2VsZW1lbnRfZGF0YV9tYXAgOiBzZXRfYXR0cmlidXRlcztcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHhsaW5rX2F0dHIobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuXHRub2RlLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywgYXR0cmlidXRlLCB2YWx1ZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldF9zdmVsdGVfZGF0YXNldChub2RlKSB7XG5cdHJldHVybiBub2RlLmRhdGFzZXQuc3ZlbHRlSDtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dW5rbm93bltdfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldF9iaW5kaW5nX2dyb3VwX3ZhbHVlKGdyb3VwLCBfX3ZhbHVlLCBjaGVja2VkKSB7XG5cdGNvbnN0IHZhbHVlID0gbmV3IFNldCgpO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0aWYgKGdyb3VwW2ldLmNoZWNrZWQpIHZhbHVlLmFkZChncm91cFtpXS5fX3ZhbHVlKTtcblx0fVxuXHRpZiAoIWNoZWNrZWQpIHtcblx0XHR2YWx1ZS5kZWxldGUoX192YWx1ZSk7XG5cdH1cblx0cmV0dXJuIEFycmF5LmZyb20odmFsdWUpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudFtdfSBncm91cFxuICogQHJldHVybnMge3sgcCguLi5pbnB1dHM6IEhUTUxJbnB1dEVsZW1lbnRbXSk6IHZvaWQ7IHIoKTogdm9pZDsgfX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRfYmluZGluZ19ncm91cChncm91cCkge1xuXHQvKipcblx0ICogQHR5cGUge0hUTUxJbnB1dEVsZW1lbnRbXX0gKi9cblx0bGV0IF9pbnB1dHM7XG5cdHJldHVybiB7XG5cdFx0LyogcHVzaCAqLyBwKC4uLmlucHV0cykge1xuXHRcdFx0X2lucHV0cyA9IGlucHV0cztcblx0XHRcdF9pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IGdyb3VwLnB1c2goaW5wdXQpKTtcblx0XHR9LFxuXHRcdC8qIHJlbW92ZSAqLyByKCkge1xuXHRcdFx0X2lucHV0cy5mb3JFYWNoKChpbnB1dCkgPT4gZ3JvdXAuc3BsaWNlKGdyb3VwLmluZGV4T2YoaW5wdXQpLCAxKSk7XG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyW119IGluZGV4ZXNcbiAqIEByZXR1cm5zIHt7IHUobmV3X2luZGV4ZXM6IG51bWJlcltdKTogdm9pZDsgcCguLi5pbnB1dHM6IEhUTUxJbnB1dEVsZW1lbnRbXSk6IHZvaWQ7IHI6ICgpID0+IHZvaWQ7IH19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0X2JpbmRpbmdfZ3JvdXBfZHluYW1pYyhncm91cCwgaW5kZXhlcykge1xuXHQvKipcblx0ICogQHR5cGUge0hUTUxJbnB1dEVsZW1lbnRbXX0gKi9cblx0bGV0IF9ncm91cCA9IGdldF9iaW5kaW5nX2dyb3VwKGdyb3VwKTtcblxuXHQvKipcblx0ICogQHR5cGUge0hUTUxJbnB1dEVsZW1lbnRbXX0gKi9cblx0bGV0IF9pbnB1dHM7XG5cblx0ZnVuY3Rpb24gZ2V0X2JpbmRpbmdfZ3JvdXAoZ3JvdXApIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGdyb3VwID0gZ3JvdXBbaW5kZXhlc1tpXV0gPSBncm91cFtpbmRleGVzW2ldXSB8fCBbXTtcblx0XHR9XG5cdFx0cmV0dXJuIGdyb3VwO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRmdW5jdGlvbiBwdXNoKCkge1xuXHRcdF9pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IF9ncm91cC5wdXNoKGlucHV0KSk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3ZvaWR9ICovXG5cdGZ1bmN0aW9uIHJlbW92ZSgpIHtcblx0XHRfaW5wdXRzLmZvckVhY2goKGlucHV0KSA9PiBfZ3JvdXAuc3BsaWNlKF9ncm91cC5pbmRleE9mKGlucHV0KSwgMSkpO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0LyogdXBkYXRlICovIHUobmV3X2luZGV4ZXMpIHtcblx0XHRcdGluZGV4ZXMgPSBuZXdfaW5kZXhlcztcblx0XHRcdGNvbnN0IG5ld19ncm91cCA9IGdldF9iaW5kaW5nX2dyb3VwKGdyb3VwKTtcblx0XHRcdGlmIChuZXdfZ3JvdXAgIT09IF9ncm91cCkge1xuXHRcdFx0XHRyZW1vdmUoKTtcblx0XHRcdFx0X2dyb3VwID0gbmV3X2dyb3VwO1xuXHRcdFx0XHRwdXNoKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvKiBwdXNoICovIHAoLi4uaW5wdXRzKSB7XG5cdFx0XHRfaW5wdXRzID0gaW5wdXRzO1xuXHRcdFx0cHVzaCgpO1xuXHRcdH0sXG5cdFx0LyogcmVtb3ZlICovIHI6IHJlbW92ZVxuXHR9O1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtudW1iZXJ9ICovXG5leHBvcnQgZnVuY3Rpb24gdG9fbnVtYmVyKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZSA9PT0gJycgPyBudWxsIDogK3ZhbHVlO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHthbnlbXX0gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lX3Jhbmdlc190b19hcnJheShyYW5nZXMpIHtcblx0Y29uc3QgYXJyYXkgPSBbXTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRhcnJheS5wdXNoKHsgc3RhcnQ6IHJhbmdlcy5zdGFydChpKSwgZW5kOiByYW5nZXMuZW5kKGkpIH0pO1xuXHR9XG5cdHJldHVybiBhcnJheTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm5zIHtDaGlsZE5vZGVbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkcmVuKGVsZW1lbnQpIHtcblx0cmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5jaGlsZE5vZGVzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NoaWxkTm9kZUFycmF5fSBub2Rlc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGluaXRfY2xhaW1faW5mbyhub2Rlcykge1xuXHRpZiAobm9kZXMuY2xhaW1faW5mbyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0bm9kZXMuY2xhaW1faW5mbyA9IHsgbGFzdF9pbmRleDogMCwgdG90YWxfY2xhaW1lZDogMCB9O1xuXHR9XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHtDaGlsZE5vZGVFeH0gUlxuICogQHBhcmFtIHtDaGlsZE5vZGVBcnJheX0gbm9kZXNcbiAqIEBwYXJhbSB7KG5vZGU6IENoaWxkTm9kZUV4KSA9PiBub2RlIGlzIFJ9IHByZWRpY2F0ZVxuICogQHBhcmFtIHsobm9kZTogQ2hpbGROb2RlRXgpID0+IENoaWxkTm9kZUV4IHwgdW5kZWZpbmVkfSBwcm9jZXNzTm9kZVxuICogQHBhcmFtIHsoKSA9PiBSfSBjcmVhdGVOb2RlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRvbnRVcGRhdGVMYXN0SW5kZXhcbiAqIEByZXR1cm5zIHtSfVxuICovXG5mdW5jdGlvbiBjbGFpbV9ub2RlKG5vZGVzLCBwcmVkaWNhdGUsIHByb2Nlc3NOb2RlLCBjcmVhdGVOb2RlLCBkb250VXBkYXRlTGFzdEluZGV4ID0gZmFsc2UpIHtcblx0Ly8gVHJ5IHRvIGZpbmQgbm9kZXMgaW4gYW4gb3JkZXIgc3VjaCB0aGF0IHdlIGxlbmd0aGVuIHRoZSBsb25nZXN0IGluY3JlYXNpbmcgc3Vic2VxdWVuY2Vcblx0aW5pdF9jbGFpbV9pbmZvKG5vZGVzKTtcblx0Y29uc3QgcmVzdWx0Tm9kZSA9ICgoKSA9PiB7XG5cdFx0Ly8gV2UgZmlyc3QgdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCBhZnRlciB0aGUgcHJldmlvdXMgb25lXG5cdFx0Zm9yIChsZXQgaSA9IG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBub2RlID0gbm9kZXNbaV07XG5cdFx0XHRpZiAocHJlZGljYXRlKG5vZGUpKSB7XG5cdFx0XHRcdGNvbnN0IHJlcGxhY2VtZW50ID0gcHJvY2Vzc05vZGUobm9kZSk7XG5cdFx0XHRcdGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0bm9kZXMuc3BsaWNlKGksIDEpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG5vZGVzW2ldID0gcmVwbGFjZW1lbnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFkb250VXBkYXRlTGFzdEluZGV4KSB7XG5cdFx0XHRcdFx0bm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4ID0gaTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbm9kZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gZmluZCBvbmUgYmVmb3JlXG5cdFx0Ly8gV2UgaXRlcmF0ZSBpbiByZXZlcnNlIHNvIHRoYXQgd2UgZG9uJ3QgZ28gdG9vIGZhciBiYWNrXG5cdFx0Zm9yIChsZXQgaSA9IG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRjb25zdCBub2RlID0gbm9kZXNbaV07XG5cdFx0XHRpZiAocHJlZGljYXRlKG5vZGUpKSB7XG5cdFx0XHRcdGNvbnN0IHJlcGxhY2VtZW50ID0gcHJvY2Vzc05vZGUobm9kZSk7XG5cdFx0XHRcdGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0bm9kZXMuc3BsaWNlKGksIDEpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdG5vZGVzW2ldID0gcmVwbGFjZW1lbnQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFkb250VXBkYXRlTGFzdEluZGV4KSB7XG5cdFx0XHRcdFx0bm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4ID0gaTtcblx0XHRcdFx0fSBlbHNlIGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0Ly8gU2luY2Ugd2Ugc3BsaWNlZCBiZWZvcmUgdGhlIGxhc3RfaW5kZXgsIHdlIGRlY3JlYXNlIGl0XG5cdFx0XHRcdFx0bm9kZXMuY2xhaW1faW5mby5sYXN0X2luZGV4LS07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIElmIHdlIGNhbid0IGZpbmQgYW55IG1hdGNoaW5nIG5vZGUsIHdlIGNyZWF0ZSBhIG5ldyBvbmVcblx0XHRyZXR1cm4gY3JlYXRlTm9kZSgpO1xuXHR9KSgpO1xuXHRyZXN1bHROb2RlLmNsYWltX29yZGVyID0gbm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkO1xuXHRub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQgKz0gMTtcblx0cmV0dXJuIHJlc3VsdE5vZGU7XG59XG5cbi8qKlxuICogQHBhcmFtIHtDaGlsZE5vZGVBcnJheX0gbm9kZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3sgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9fSBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0geyhuYW1lOiBzdHJpbmcpID0+IEVsZW1lbnQgfCBTVkdFbGVtZW50fSBjcmVhdGVfZWxlbWVudFxuICogQHJldHVybnMge0VsZW1lbnQgfCBTVkdFbGVtZW50fVxuICovXG5mdW5jdGlvbiBjbGFpbV9lbGVtZW50X2Jhc2Uobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMsIGNyZWF0ZV9lbGVtZW50KSB7XG5cdHJldHVybiBjbGFpbV9ub2RlKFxuXHRcdG5vZGVzLFxuXHRcdC8qKiBAcmV0dXJucyB7bm9kZSBpcyBFbGVtZW50IHwgU1ZHRWxlbWVudH0gKi9cblx0XHQobm9kZSkgPT4gbm9kZS5ub2RlTmFtZSA9PT0gbmFtZSxcblx0XHQvKiogQHBhcmFtIHtFbGVtZW50fSBub2RlICovXG5cdFx0KG5vZGUpID0+IHtcblx0XHRcdGNvbnN0IHJlbW92ZSA9IFtdO1xuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0Y29uc3QgYXR0cmlidXRlID0gbm9kZS5hdHRyaWJ1dGVzW2pdO1xuXHRcdFx0XHRpZiAoIWF0dHJpYnV0ZXNbYXR0cmlidXRlLm5hbWVdKSB7XG5cdFx0XHRcdFx0cmVtb3ZlLnB1c2goYXR0cmlidXRlLm5hbWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZW1vdmUuZm9yRWFjaCgodikgPT4gbm9kZS5yZW1vdmVBdHRyaWJ1dGUodikpO1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9LFxuXHRcdCgpID0+IGNyZWF0ZV9lbGVtZW50KG5hbWUpXG5cdCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtDaGlsZE5vZGVBcnJheX0gbm9kZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3sgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9fSBhdHRyaWJ1dGVzXG4gKiBAcmV0dXJucyB7RWxlbWVudCB8IFNWR0VsZW1lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFpbV9lbGVtZW50KG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzKSB7XG5cdHJldHVybiBjbGFpbV9lbGVtZW50X2Jhc2Uobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMsIGVsZW1lbnQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Q2hpbGROb2RlQXJyYXl9IG5vZGVzXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHt7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfX0gYXR0cmlidXRlc1xuICogQHJldHVybnMge0VsZW1lbnQgfCBTVkdFbGVtZW50fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhaW1fc3ZnX2VsZW1lbnQobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMpIHtcblx0cmV0dXJuIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgc3ZnX2VsZW1lbnQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Q2hpbGROb2RlQXJyYXl9IG5vZGVzXG4gKiBAcmV0dXJucyB7VGV4dH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYWltX3RleHQobm9kZXMsIGRhdGEpIHtcblx0cmV0dXJuIGNsYWltX25vZGUoXG5cdFx0bm9kZXMsXG5cdFx0LyoqIEByZXR1cm5zIHtub2RlIGlzIFRleHR9ICovXG5cdFx0KG5vZGUpID0+IG5vZGUubm9kZVR5cGUgPT09IDMsXG5cdFx0LyoqIEBwYXJhbSB7VGV4dH0gbm9kZSAqL1xuXHRcdChub2RlKSA9PiB7XG5cdFx0XHRjb25zdCBkYXRhU3RyID0gJycgKyBkYXRhO1xuXHRcdFx0aWYgKG5vZGUuZGF0YS5zdGFydHNXaXRoKGRhdGFTdHIpKSB7XG5cdFx0XHRcdGlmIChub2RlLmRhdGEubGVuZ3RoICE9PSBkYXRhU3RyLmxlbmd0aCkge1xuXHRcdFx0XHRcdHJldHVybiBub2RlLnNwbGl0VGV4dChkYXRhU3RyLmxlbmd0aCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG5vZGUuZGF0YSA9IGRhdGFTdHI7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQoKSA9PiB0ZXh0KGRhdGEpLFxuXHRcdHRydWUgLy8gVGV4dCBub2RlcyBzaG91bGQgbm90IHVwZGF0ZSBsYXN0IGluZGV4IHNpbmNlIGl0IGlzIGxpa2VseSBub3Qgd29ydGggaXQgdG8gZWxpbWluYXRlIGFuIGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2YgYWN0dWFsIGVsZW1lbnRzXG5cdCk7XG59XG5cbi8qKlxuICogQHJldHVybnMge1RleHR9ICovXG5leHBvcnQgZnVuY3Rpb24gY2xhaW1fc3BhY2Uobm9kZXMpIHtcblx0cmV0dXJuIGNsYWltX3RleHQobm9kZXMsICcgJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtDaGlsZE5vZGVBcnJheX0gbm9kZXNcbiAqIEByZXR1cm5zIHtDb21tZW50fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhaW1fY29tbWVudChub2RlcywgZGF0YSkge1xuXHRyZXR1cm4gY2xhaW1fbm9kZShcblx0XHRub2Rlcyxcblx0XHQvKiogQHJldHVybnMge25vZGUgaXMgQ29tbWVudH0gKi9cblx0XHQobm9kZSkgPT4gbm9kZS5ub2RlVHlwZSA9PT0gOCxcblx0XHQvKiogQHBhcmFtIHtDb21tZW50fSBub2RlICovXG5cdFx0KG5vZGUpID0+IHtcblx0XHRcdG5vZGUuZGF0YSA9ICcnICsgZGF0YTtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fSxcblx0XHQoKSA9PiBjb21tZW50KGRhdGEpLFxuXHRcdHRydWVcblx0KTtcbn1cblxuZnVuY3Rpb24gZ2V0X2NvbW1lbnRfaWR4KG5vZGVzLCB0ZXh0LCBzdGFydCkge1xuXHRmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBub2Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcblx0XHRpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAvKiBjb21tZW50IG5vZGUgKi8gJiYgbm9kZS50ZXh0Q29udGVudC50cmltKCkgPT09IHRleHQpIHtcblx0XHRcdHJldHVybiBpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQHBhcmFtIHtib29sZWFufSBpc19zdmdcbiAqIEByZXR1cm5zIHtIdG1sVGFnSHlkcmF0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhaW1faHRtbF90YWcobm9kZXMsIGlzX3N2Zykge1xuXHQvLyBmaW5kIGh0bWwgb3BlbmluZyB0YWdcblx0Y29uc3Qgc3RhcnRfaW5kZXggPSBnZXRfY29tbWVudF9pZHgobm9kZXMsICdIVE1MX1RBR19TVEFSVCcsIDApO1xuXHRjb25zdCBlbmRfaW5kZXggPSBnZXRfY29tbWVudF9pZHgobm9kZXMsICdIVE1MX1RBR19FTkQnLCBzdGFydF9pbmRleCArIDEpO1xuXHRpZiAoc3RhcnRfaW5kZXggPT09IC0xIHx8IGVuZF9pbmRleCA9PT0gLTEpIHtcblx0XHRyZXR1cm4gbmV3IEh0bWxUYWdIeWRyYXRpb24oaXNfc3ZnKTtcblx0fVxuXG5cdGluaXRfY2xhaW1faW5mbyhub2Rlcyk7XG5cdGNvbnN0IGh0bWxfdGFnX25vZGVzID0gbm9kZXMuc3BsaWNlKHN0YXJ0X2luZGV4LCBlbmRfaW5kZXggLSBzdGFydF9pbmRleCArIDEpO1xuXHRkZXRhY2goaHRtbF90YWdfbm9kZXNbMF0pO1xuXHRkZXRhY2goaHRtbF90YWdfbm9kZXNbaHRtbF90YWdfbm9kZXMubGVuZ3RoIC0gMV0pO1xuXHRjb25zdCBjbGFpbWVkX25vZGVzID0gaHRtbF90YWdfbm9kZXMuc2xpY2UoMSwgaHRtbF90YWdfbm9kZXMubGVuZ3RoIC0gMSk7XG5cdGZvciAoY29uc3QgbiBvZiBjbGFpbWVkX25vZGVzKSB7XG5cdFx0bi5jbGFpbV9vcmRlciA9IG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZDtcblx0XHRub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQgKz0gMTtcblx0fVxuXHRyZXR1cm4gbmV3IEh0bWxUYWdIeWRyYXRpb24oaXNfc3ZnLCBjbGFpbWVkX25vZGVzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1RleHR9IHRleHRcbiAqIEBwYXJhbSB7dW5rbm93bn0gZGF0YVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRfZGF0YSh0ZXh0LCBkYXRhKSB7XG5cdGRhdGEgPSAnJyArIGRhdGE7XG5cdGlmICh0ZXh0LmRhdGEgPT09IGRhdGEpIHJldHVybjtcblx0dGV4dC5kYXRhID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChkYXRhKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1RleHR9IHRleHRcbiAqIEBwYXJhbSB7dW5rbm93bn0gZGF0YVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRfZGF0YV9jb250ZW50ZWRpdGFibGUodGV4dCwgZGF0YSkge1xuXHRkYXRhID0gJycgKyBkYXRhO1xuXHRpZiAodGV4dC53aG9sZVRleHQgPT09IGRhdGEpIHJldHVybjtcblx0dGV4dC5kYXRhID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChkYXRhKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1RleHR9IHRleHRcbiAqIEBwYXJhbSB7dW5rbm93bn0gZGF0YVxuICogQHBhcmFtIHtzdHJpbmd9IGF0dHJfdmFsdWVcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2RhdGFfbWF5YmVfY29udGVudGVkaXRhYmxlKHRleHQsIGRhdGEsIGF0dHJfdmFsdWUpIHtcblx0aWYgKH5jb250ZW50ZWRpdGFibGVfdHJ1dGh5X3ZhbHVlcy5pbmRleE9mKGF0dHJfdmFsdWUpKSB7XG5cdFx0c2V0X2RhdGFfY29udGVudGVkaXRhYmxlKHRleHQsIGRhdGEpO1xuXHR9IGVsc2Uge1xuXHRcdHNldF9kYXRhKHRleHQsIGRhdGEpO1xuXHR9XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2lucHV0X3ZhbHVlKGlucHV0LCB2YWx1ZSkge1xuXHRpbnB1dC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9pbnB1dF90eXBlKGlucHV0LCB0eXBlKSB7XG5cdHRyeSB7XG5cdFx0aW5wdXQudHlwZSA9IHR5cGU7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBkbyBub3RoaW5nXG5cdH1cbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRfc3R5bGUobm9kZSwga2V5LCB2YWx1ZSwgaW1wb3J0YW50KSB7XG5cdGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdFx0bm9kZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShrZXkpO1xuXHR9IGVsc2Uge1xuXHRcdG5vZGUuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSwgaW1wb3J0YW50ID8gJ2ltcG9ydGFudCcgOiAnJyk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3Rfb3B0aW9uKHNlbGVjdCwgdmFsdWUsIG1vdW50aW5nKSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRjb25zdCBvcHRpb24gPSBzZWxlY3Qub3B0aW9uc1tpXTtcblx0XHRpZiAob3B0aW9uLl9fdmFsdWUgPT09IHZhbHVlKSB7XG5cdFx0XHRvcHRpb24uc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0fVxuXHRpZiAoIW1vdW50aW5nIHx8IHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IC0xOyAvLyBubyBvcHRpb24gc2hvdWxkIGJlIHNlbGVjdGVkXG5cdH1cbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3Rfb3B0aW9ucyhzZWxlY3QsIHZhbHVlKSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0Lm9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRjb25zdCBvcHRpb24gPSBzZWxlY3Qub3B0aW9uc1tpXTtcblx0XHRvcHRpb24uc2VsZWN0ZWQgPSB+dmFsdWUuaW5kZXhPZihvcHRpb24uX192YWx1ZSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdF92YWx1ZShzZWxlY3QpIHtcblx0Y29uc3Qgc2VsZWN0ZWRfb3B0aW9uID0gc2VsZWN0LnF1ZXJ5U2VsZWN0b3IoJzpjaGVja2VkJyk7XG5cdHJldHVybiBzZWxlY3RlZF9vcHRpb24gJiYgc2VsZWN0ZWRfb3B0aW9uLl9fdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RfbXVsdGlwbGVfdmFsdWUoc2VsZWN0KSB7XG5cdHJldHVybiBbXS5tYXAuY2FsbChzZWxlY3QucXVlcnlTZWxlY3RvckFsbCgnOmNoZWNrZWQnKSwgKG9wdGlvbikgPT4gb3B0aW9uLl9fdmFsdWUpO1xufVxuLy8gdW5mb3J0dW5hdGVseSB0aGlzIGNhbid0IGJlIGEgY29uc3RhbnQgYXMgdGhhdCB3b3VsZG4ndCBiZSB0cmVlLXNoYWtlYWJsZVxuLy8gc28gd2UgY2FjaGUgdGhlIHJlc3VsdCBpbnN0ZWFkXG5cbi8qKlxuICogQHR5cGUge2Jvb2xlYW59ICovXG5sZXQgY3Jvc3NvcmlnaW47XG5cbi8qKlxuICogQHJldHVybnMge2Jvb2xlYW59ICovXG5leHBvcnQgZnVuY3Rpb24gaXNfY3Jvc3NvcmlnaW4oKSB7XG5cdGlmIChjcm9zc29yaWdpbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0Y3Jvc3NvcmlnaW4gPSBmYWxzZTtcblx0XHR0cnkge1xuXHRcdFx0aWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wYXJlbnQpIHtcblx0XHRcdFx0dm9pZCB3aW5kb3cucGFyZW50LmRvY3VtZW50O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjcm9zc29yaWdpbiA9IHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBjcm9zc29yaWdpbjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0geygpID0+IHZvaWR9IGZuXG4gKiBAcmV0dXJucyB7KCkgPT4gdm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZF9pZnJhbWVfcmVzaXplX2xpc3RlbmVyKG5vZGUsIGZuKSB7XG5cdGNvbnN0IGNvbXB1dGVkX3N0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcblx0aWYgKGNvbXB1dGVkX3N0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuXHRcdG5vZGUuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuXHR9XG5cdGNvbnN0IGlmcmFtZSA9IGVsZW1lbnQoJ2lmcmFtZScpO1xuXHRpZnJhbWUuc2V0QXR0cmlidXRlKFxuXHRcdCdzdHlsZScsXG5cdFx0J2Rpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgJyArXG5cdFx0XHQnb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAwOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogLTE7J1xuXHQpO1xuXHRpZnJhbWUuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG5cdGlmcmFtZS50YWJJbmRleCA9IC0xO1xuXHRjb25zdCBjcm9zc29yaWdpbiA9IGlzX2Nyb3Nzb3JpZ2luKCk7XG5cblx0LyoqXG5cdCAqIEB0eXBlIHsoKSA9PiB2b2lkfVxuXHQgKi9cblx0bGV0IHVuc3Vic2NyaWJlO1xuXHRpZiAoY3Jvc3NvcmlnaW4pIHtcblx0XHRpZnJhbWUuc3JjID0gXCJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pm9ucmVzaXplPWZ1bmN0aW9uKCl7cGFyZW50LnBvc3RNZXNzYWdlKDAsJyonKX08L3NjcmlwdD5cIjtcblx0XHR1bnN1YnNjcmliZSA9IGxpc3Rlbihcblx0XHRcdHdpbmRvdyxcblx0XHRcdCdtZXNzYWdlJyxcblx0XHRcdC8qKiBAcGFyYW0ge01lc3NhZ2VFdmVudH0gZXZlbnQgKi8gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudC5zb3VyY2UgPT09IGlmcmFtZS5jb250ZW50V2luZG93KSBmbigpO1xuXHRcdFx0fVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0aWZyYW1lLnNyYyA9ICdhYm91dDpibGFuayc7XG5cdFx0aWZyYW1lLm9ubG9hZCA9ICgpID0+IHtcblx0XHRcdHVuc3Vic2NyaWJlID0gbGlzdGVuKGlmcmFtZS5jb250ZW50V2luZG93LCAncmVzaXplJywgZm4pO1xuXHRcdFx0Ly8gbWFrZSBzdXJlIGFuIGluaXRpYWwgcmVzaXplIGV2ZW50IGlzIGZpcmVkIF9hZnRlcl8gdGhlIGlmcmFtZSBpcyBsb2FkZWQgKHdoaWNoIGlzIGFzeW5jaHJvbm91cylcblx0XHRcdC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc3ZlbHRlanMvc3ZlbHRlL2lzc3Vlcy80MjMzXG5cdFx0XHRmbigpO1xuXHRcdH07XG5cdH1cblx0YXBwZW5kKG5vZGUsIGlmcmFtZSk7XG5cdHJldHVybiAoKSA9PiB7XG5cdFx0aWYgKGNyb3Nzb3JpZ2luKSB7XG5cdFx0XHR1bnN1YnNjcmliZSgpO1xuXHRcdH0gZWxzZSBpZiAodW5zdWJzY3JpYmUgJiYgaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcblx0XHRcdHVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHRcdGRldGFjaChpZnJhbWUpO1xuXHR9O1xufVxuZXhwb3J0IGNvbnN0IHJlc2l6ZV9vYnNlcnZlcl9jb250ZW50X2JveCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgUmVzaXplT2JzZXJ2ZXJTaW5nbGV0b24oe1xuXHRib3g6ICdjb250ZW50LWJveCdcbn0pO1xuZXhwb3J0IGNvbnN0IHJlc2l6ZV9vYnNlcnZlcl9ib3JkZXJfYm94ID0gLyogQF9fUFVSRV9fICovIG5ldyBSZXNpemVPYnNlcnZlclNpbmdsZXRvbih7XG5cdGJveDogJ2JvcmRlci1ib3gnXG59KTtcbmV4cG9ydCBjb25zdCByZXNpemVfb2JzZXJ2ZXJfZGV2aWNlX3BpeGVsX2NvbnRlbnRfYm94ID0gLyogQF9fUFVSRV9fICovIG5ldyBSZXNpemVPYnNlcnZlclNpbmdsZXRvbihcblx0eyBib3g6ICdkZXZpY2UtcGl4ZWwtY29udGVudC1ib3gnIH1cbik7XG5leHBvcnQgeyBSZXNpemVPYnNlcnZlclNpbmdsZXRvbiB9O1xuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZV9jbGFzcyhlbGVtZW50LCBuYW1lLCB0b2dnbGUpIHtcblx0Ly8gVGhlIGAhIWAgaXMgcmVxdWlyZWQgYmVjYXVzZSBhbiBgdW5kZWZpbmVkYCBmbGFnIG1lYW5zIGZsaXBwaW5nIHRoZSBjdXJyZW50IHN0YXRlLlxuXHRlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUobmFtZSwgISF0b2dnbGUpO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtUfSBbZGV0YWlsXVxuICogQHBhcmFtIHt7IGJ1YmJsZXM/OiBib29sZWFuLCBjYW5jZWxhYmxlPzogYm9vbGVhbiB9fSBbb3B0aW9uc11cbiAqIEByZXR1cm5zIHtDdXN0b21FdmVudDxUPn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbV9ldmVudCh0eXBlLCBkZXRhaWwsIHsgYnViYmxlcyA9IGZhbHNlLCBjYW5jZWxhYmxlID0gZmFsc2UgfSA9IHt9KSB7XG5cdHJldHVybiBuZXcgQ3VzdG9tRXZlbnQodHlwZSwgeyBkZXRhaWwsIGJ1YmJsZXMsIGNhbmNlbGFibGUgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwYXJlbnRcbiAqIEByZXR1cm5zIHtDaGlsZE5vZGVBcnJheX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5X3NlbGVjdG9yX2FsbChzZWxlY3RvciwgcGFyZW50ID0gZG9jdW1lbnQuYm9keSkge1xuXHRyZXR1cm4gQXJyYXkuZnJvbShwYXJlbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBub2RlSWRcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGhlYWRcbiAqIEByZXR1cm5zIHthbnlbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhlYWRfc2VsZWN0b3Iobm9kZUlkLCBoZWFkKSB7XG5cdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRsZXQgc3RhcnRlZCA9IDA7XG5cdGZvciAoY29uc3Qgbm9kZSBvZiBoZWFkLmNoaWxkTm9kZXMpIHtcblx0XHRpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAvKiBjb21tZW50IG5vZGUgKi8pIHtcblx0XHRcdGNvbnN0IGNvbW1lbnQgPSBub2RlLnRleHRDb250ZW50LnRyaW0oKTtcblx0XHRcdGlmIChjb21tZW50ID09PSBgSEVBRF8ke25vZGVJZH1fRU5EYCkge1xuXHRcdFx0XHRzdGFydGVkIC09IDE7XG5cdFx0XHRcdHJlc3VsdC5wdXNoKG5vZGUpO1xuXHRcdFx0fSBlbHNlIGlmIChjb21tZW50ID09PSBgSEVBRF8ke25vZGVJZH1fU1RBUlRgKSB7XG5cdFx0XHRcdHN0YXJ0ZWQgKz0gMTtcblx0XHRcdFx0cmVzdWx0LnB1c2gobm9kZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChzdGFydGVkID4gMCkge1xuXHRcdFx0cmVzdWx0LnB1c2gobm9kZSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG4vKiogKi9cbmV4cG9ydCBjbGFzcyBIdG1sVGFnIHtcblx0LyoqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBkZWZhdWx0IGZhbHNlXG5cdCAqL1xuXHRpc19zdmcgPSBmYWxzZTtcblx0LyoqIHBhcmVudCBmb3IgY3JlYXRpbmcgbm9kZSAqL1xuXHRlID0gdW5kZWZpbmVkO1xuXHQvKiogaHRtbCB0YWcgbm9kZXMgKi9cblx0biA9IHVuZGVmaW5lZDtcblx0LyoqIHRhcmdldCAqL1xuXHR0ID0gdW5kZWZpbmVkO1xuXHQvKiogYW5jaG9yICovXG5cdGEgPSB1bmRlZmluZWQ7XG5cdGNvbnN0cnVjdG9yKGlzX3N2ZyA9IGZhbHNlKSB7XG5cdFx0dGhpcy5pc19zdmcgPSBpc19zdmc7XG5cdFx0dGhpcy5lID0gdGhpcy5uID0gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaHRtbFxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdGMoaHRtbCkge1xuXHRcdHRoaXMuaChodG1sKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaHRtbFxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50IHwgU1ZHRWxlbWVudH0gdGFyZ2V0XG5cdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50fSBhbmNob3Jcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRtKGh0bWwsIHRhcmdldCwgYW5jaG9yID0gbnVsbCkge1xuXHRcdGlmICghdGhpcy5lKSB7XG5cdFx0XHRpZiAodGhpcy5pc19zdmcpXG5cdFx0XHRcdHRoaXMuZSA9IHN2Z19lbGVtZW50KC8qKiBAdHlwZSB7a2V5b2YgU1ZHRWxlbWVudFRhZ05hbWVNYXB9ICovICh0YXJnZXQubm9kZU5hbWUpKTtcblx0XHRcdC8qKiAjNzM2NCAgdGFyZ2V0IGZvciA8dGVtcGxhdGU+IG1heSBiZSBwcm92aWRlZCBhcyAjZG9jdW1lbnQtZnJhZ21lbnQoMTEpICovIGVsc2Vcblx0XHRcdFx0dGhpcy5lID0gZWxlbWVudChcblx0XHRcdFx0XHQvKiogQHR5cGUge2tleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcH0gKi8gKFxuXHRcdFx0XHRcdFx0dGFyZ2V0Lm5vZGVUeXBlID09PSAxMSA/ICdURU1QTEFURScgOiB0YXJnZXQubm9kZU5hbWVcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR0aGlzLnQgPVxuXHRcdFx0XHR0YXJnZXQudGFnTmFtZSAhPT0gJ1RFTVBMQVRFJ1xuXHRcdFx0XHRcdD8gdGFyZ2V0XG5cdFx0XHRcdFx0OiAvKiogQHR5cGUge0hUTUxUZW1wbGF0ZUVsZW1lbnR9ICovICh0YXJnZXQpLmNvbnRlbnQ7XG5cdFx0XHR0aGlzLmMoaHRtbCk7XG5cdFx0fVxuXHRcdHRoaXMuaShhbmNob3IpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBodG1sXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0aChodG1sKSB7XG5cdFx0dGhpcy5lLmlubmVySFRNTCA9IGh0bWw7XG5cdFx0dGhpcy5uID0gQXJyYXkuZnJvbShcblx0XHRcdHRoaXMuZS5ub2RlTmFtZSA9PT0gJ1RFTVBMQVRFJyA/IHRoaXMuZS5jb250ZW50LmNoaWxkTm9kZXMgOiB0aGlzLmUuY2hpbGROb2Rlc1xuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3ZvaWR9ICovXG5cdGkoYW5jaG9yKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm4ubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRcdGluc2VydCh0aGlzLnQsIHRoaXMubltpXSwgYW5jaG9yKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IGh0bWxcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRwKGh0bWwpIHtcblx0XHR0aGlzLmQoKTtcblx0XHR0aGlzLmgoaHRtbCk7XG5cdFx0dGhpcy5pKHRoaXMuYSk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3ZvaWR9ICovXG5cdGQoKSB7XG5cdFx0dGhpcy5uLmZvckVhY2goZGV0YWNoKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgSHRtbFRhZ0h5ZHJhdGlvbiBleHRlbmRzIEh0bWxUYWcge1xuXHQvKiogQHR5cGUge0VsZW1lbnRbXX0gaHlkcmF0aW9uIGNsYWltZWQgbm9kZXMgKi9cblx0bCA9IHVuZGVmaW5lZDtcblxuXHRjb25zdHJ1Y3Rvcihpc19zdmcgPSBmYWxzZSwgY2xhaW1lZF9ub2Rlcykge1xuXHRcdHN1cGVyKGlzX3N2Zyk7XG5cdFx0dGhpcy5lID0gdGhpcy5uID0gbnVsbDtcblx0XHR0aGlzLmwgPSBjbGFpbWVkX25vZGVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBodG1sXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0YyhodG1sKSB7XG5cdFx0aWYgKHRoaXMubCkge1xuXHRcdFx0dGhpcy5uID0gdGhpcy5sO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdXBlci5jKGh0bWwpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH0gKi9cblx0aShhbmNob3IpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubi5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdFx0aW5zZXJ0X2h5ZHJhdGlvbih0aGlzLnQsIHRoaXMubltpXSwgYW5jaG9yKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge05hbWVkTm9kZU1hcH0gYXR0cmlidXRlc1xuICogQHJldHVybnMge3t9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlX3RvX29iamVjdChhdHRyaWJ1dGVzKSB7XG5cdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XG5cdFx0cmVzdWx0W2F0dHJpYnV0ZS5uYW1lXSA9IGF0dHJpYnV0ZS52YWx1ZTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm5zIHt7fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldF9jdXN0b21fZWxlbWVudHNfc2xvdHMoZWxlbWVudCkge1xuXHRjb25zdCByZXN1bHQgPSB7fTtcblx0ZWxlbWVudC5jaGlsZE5vZGVzLmZvckVhY2goXG5cdFx0LyoqIEBwYXJhbSB7RWxlbWVudH0gbm9kZSAqLyAobm9kZSkgPT4ge1xuXHRcdFx0cmVzdWx0W25vZGUuc2xvdCB8fCAnZGVmYXVsdCddID0gdHJ1ZTtcblx0XHR9XG5cdCk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3Rfc3ZlbHRlX2NvbXBvbmVudChjb21wb25lbnQsIHByb3BzKSB7XG5cdHJldHVybiBuZXcgY29tcG9uZW50KHByb3BzKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7Tm9kZSAmIHtcbiAqIFx0Y2xhaW1fb3JkZXI/OiBudW1iZXI7XG4gKiBcdGh5ZHJhdGVfaW5pdD86IHRydWU7XG4gKiBcdGFjdHVhbF9lbmRfY2hpbGQ/OiBOb2RlRXg7XG4gKiBcdGNoaWxkTm9kZXM6IE5vZGVMaXN0T2Y8Tm9kZUV4PjtcbiAqIH19IE5vZGVFeFxuICovXG5cbi8qKiBAdHlwZWRlZiB7Q2hpbGROb2RlICYgTm9kZUV4fSBDaGlsZE5vZGVFeCAqL1xuXG4vKiogQHR5cGVkZWYge05vZGVFeCAmIHsgY2xhaW1fb3JkZXI6IG51bWJlciB9fSBOb2RlRXgyICovXG5cbi8qKlxuICogQHR5cGVkZWYge0NoaWxkTm9kZUV4W10gJiB7XG4gKiBcdGNsYWltX2luZm8/OiB7XG4gKiBcdFx0bGFzdF9pbmRleDogbnVtYmVyO1xuICogXHRcdHRvdGFsX2NsYWltZWQ6IG51bWJlcjtcbiAqIFx0fTtcbiAqIH19IENoaWxkTm9kZUFycmF5XG4gKi9cbiIsICJpbXBvcnQgeyBjdXN0b21fZXZlbnQgfSBmcm9tICcuL2RvbS5qcyc7XG5cbmV4cG9ydCBsZXQgY3VycmVudF9jb21wb25lbnQ7XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRfY3VycmVudF9jb21wb25lbnQoY29tcG9uZW50KSB7XG5cdGN1cnJlbnRfY29tcG9uZW50ID0gY29tcG9uZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkge1xuXHRpZiAoIWN1cnJlbnRfY29tcG9uZW50KSB0aHJvdyBuZXcgRXJyb3IoJ0Z1bmN0aW9uIGNhbGxlZCBvdXRzaWRlIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbicpO1xuXHRyZXR1cm4gY3VycmVudF9jb21wb25lbnQ7XG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGEgY2FsbGJhY2sgdG8gcnVuIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIHVwZGF0ZWQgYWZ0ZXIgYW55IHN0YXRlIGNoYW5nZS5cbiAqXG4gKiBUaGUgZmlyc3QgdGltZSB0aGUgY2FsbGJhY2sgcnVucyB3aWxsIGJlIGJlZm9yZSB0aGUgaW5pdGlhbCBgb25Nb3VudGBcbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUjYmVmb3JldXBkYXRlXG4gKiBAcGFyYW0geygpID0+IGFueX0gZm5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmVmb3JlVXBkYXRlKGZuKSB7XG5cdGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmJlZm9yZV91cGRhdGUucHVzaChmbik7XG59XG5cbi8qKlxuICogVGhlIGBvbk1vdW50YCBmdW5jdGlvbiBzY2hlZHVsZXMgYSBjYWxsYmFjayB0byBydW4gYXMgc29vbiBhcyB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgdG8gdGhlIERPTS5cbiAqIEl0IG11c3QgYmUgY2FsbGVkIGR1cmluZyB0aGUgY29tcG9uZW50J3MgaW5pdGlhbGlzYXRpb24gKGJ1dCBkb2Vzbid0IG5lZWQgdG8gbGl2ZSAqaW5zaWRlKiB0aGUgY29tcG9uZW50O1xuICogaXQgY2FuIGJlIGNhbGxlZCBmcm9tIGFuIGV4dGVybmFsIG1vZHVsZSkuXG4gKlxuICogSWYgYSBmdW5jdGlvbiBpcyByZXR1cm5lZCBfc3luY2hyb25vdXNseV8gZnJvbSBgb25Nb3VudGAsIGl0IHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuXG4gKlxuICogYG9uTW91bnRgIGRvZXMgbm90IHJ1biBpbnNpZGUgYSBbc2VydmVyLXNpZGUgY29tcG9uZW50XSgvZG9jcyNydW4tdGltZS1zZXJ2ZXItc2lkZS1jb21wb25lbnQtYXBpKS5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUjb25tb3VudFxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7KCkgPT4gaW1wb3J0KCcuL3ByaXZhdGUuanMnKS5Ob3RGdW5jdGlvbjxUPiB8IFByb21pc2U8aW1wb3J0KCcuL3ByaXZhdGUuanMnKS5Ob3RGdW5jdGlvbjxUPj4gfCAoKCkgPT4gYW55KX0gZm5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gb25Nb3VudChmbikge1xuXHRnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5vbl9tb3VudC5wdXNoKGZuKTtcbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBjYWxsYmFjayB0byBydW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiB1cGRhdGVkLlxuICpcbiAqIFRoZSBmaXJzdCB0aW1lIHRoZSBjYWxsYmFjayBydW5zIHdpbGwgYmUgYWZ0ZXIgdGhlIGluaXRpYWwgYG9uTW91bnRgXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI2FmdGVydXBkYXRlXG4gKiBAcGFyYW0geygpID0+IGFueX0gZm5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWZ0ZXJVcGRhdGUoZm4pIHtcblx0Z2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuYWZ0ZXJfdXBkYXRlLnB1c2goZm4pO1xufVxuXG4vKipcbiAqIFNjaGVkdWxlcyBhIGNhbGxiYWNrIHRvIHJ1biBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuXG4gKlxuICogT3V0IG9mIGBvbk1vdW50YCwgYGJlZm9yZVVwZGF0ZWAsIGBhZnRlclVwZGF0ZWAgYW5kIGBvbkRlc3Ryb3lgLCB0aGlzIGlzIHRoZVxuICogb25seSBvbmUgdGhhdCBydW5zIGluc2lkZSBhIHNlcnZlci1zaWRlIGNvbXBvbmVudC5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUjb25kZXN0cm95XG4gKiBAcGFyYW0geygpID0+IGFueX0gZm5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gb25EZXN0cm95KGZuKSB7XG5cdGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLm9uX2Rlc3Ryb3kucHVzaChmbik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBldmVudCBkaXNwYXRjaGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGlzcGF0Y2ggW2NvbXBvbmVudCBldmVudHNdKC9kb2NzI3RlbXBsYXRlLXN5bnRheC1jb21wb25lbnQtZGlyZWN0aXZlcy1vbi1ldmVudG5hbWUpLlxuICogRXZlbnQgZGlzcGF0Y2hlcnMgYXJlIGZ1bmN0aW9ucyB0aGF0IGNhbiB0YWtlIHR3byBhcmd1bWVudHM6IGBuYW1lYCBhbmQgYGRldGFpbGAuXG4gKlxuICogQ29tcG9uZW50IGV2ZW50cyBjcmVhdGVkIHdpdGggYGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcmAgY3JlYXRlIGFcbiAqIFtDdXN0b21FdmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0N1c3RvbUV2ZW50KS5cbiAqIFRoZXNlIGV2ZW50cyBkbyBub3QgW2J1YmJsZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9MZWFybi9KYXZhU2NyaXB0L0J1aWxkaW5nX2Jsb2Nrcy9FdmVudHMjRXZlbnRfYnViYmxpbmdfYW5kX2NhcHR1cmUpLlxuICogVGhlIGBkZXRhaWxgIGFyZ3VtZW50IGNvcnJlc3BvbmRzIHRvIHRoZSBbQ3VzdG9tRXZlbnQuZGV0YWlsXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3VzdG9tRXZlbnQvZGV0YWlsKVxuICogcHJvcGVydHkgYW5kIGNhbiBjb250YWluIGFueSB0eXBlIG9mIGRhdGEuXG4gKlxuICogVGhlIGV2ZW50IGRpc3BhdGNoZXIgY2FuIGJlIHR5cGVkIHRvIG5hcnJvdyB0aGUgYWxsb3dlZCBldmVudCBuYW1lcyBhbmQgdGhlIHR5cGUgb2YgdGhlIGBkZXRhaWxgIGFyZ3VtZW50OlxuICogYGBgdHNcbiAqIGNvbnN0IGRpc3BhdGNoID0gY3JlYXRlRXZlbnREaXNwYXRjaGVyPHtcbiAqICBsb2FkZWQ6IG5ldmVyOyAvLyBkb2VzIG5vdCB0YWtlIGEgZGV0YWlsIGFyZ3VtZW50XG4gKiAgY2hhbmdlOiBzdHJpbmc7IC8vIHRha2VzIGEgZGV0YWlsIGFyZ3VtZW50IG9mIHR5cGUgc3RyaW5nLCB3aGljaCBpcyByZXF1aXJlZFxuICogIG9wdGlvbmFsOiBudW1iZXIgfCBudWxsOyAvLyB0YWtlcyBhbiBvcHRpb25hbCBkZXRhaWwgYXJndW1lbnQgb2YgdHlwZSBudW1iZXJcbiAqIH0+KCk7XG4gKiBgYGBcbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUjY3JlYXRlZXZlbnRkaXNwYXRjaGVyXG4gKiBAdGVtcGxhdGUge1JlY29yZDxzdHJpbmcsIGFueT59IFtFdmVudE1hcD1hbnldXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL3B1YmxpYy5qcycpLkV2ZW50RGlzcGF0Y2hlcjxFdmVudE1hcD59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFdmVudERpc3BhdGNoZXIoKSB7XG5cdGNvbnN0IGNvbXBvbmVudCA9IGdldF9jdXJyZW50X2NvbXBvbmVudCgpO1xuXHRyZXR1cm4gKHR5cGUsIGRldGFpbCwgeyBjYW5jZWxhYmxlID0gZmFsc2UgfSA9IHt9KSA9PiB7XG5cdFx0Y29uc3QgY2FsbGJhY2tzID0gY29tcG9uZW50LiQkLmNhbGxiYWNrc1t0eXBlXTtcblx0XHRpZiAoY2FsbGJhY2tzKSB7XG5cdFx0XHQvLyBUT0RPIGFyZSB0aGVyZSBzaXR1YXRpb25zIHdoZXJlIGV2ZW50cyBjb3VsZCBiZSBkaXNwYXRjaGVkXG5cdFx0XHQvLyBpbiBhIHNlcnZlciAobm9uLURPTSkgZW52aXJvbm1lbnQ/XG5cdFx0XHRjb25zdCBldmVudCA9IGN1c3RvbV9ldmVudCgvKiogQHR5cGUge3N0cmluZ30gKi8gKHR5cGUpLCBkZXRhaWwsIHsgY2FuY2VsYWJsZSB9KTtcblx0XHRcdGNhbGxiYWNrcy5zbGljZSgpLmZvckVhY2goKGZuKSA9PiB7XG5cdFx0XHRcdGZuLmNhbGwoY29tcG9uZW50LCBldmVudCk7XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZDtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH07XG59XG5cbi8qKlxuICogQXNzb2NpYXRlcyBhbiBhcmJpdHJhcnkgYGNvbnRleHRgIG9iamVjdCB3aXRoIHRoZSBjdXJyZW50IGNvbXBvbmVudCBhbmQgdGhlIHNwZWNpZmllZCBga2V5YFxuICogYW5kIHJldHVybnMgdGhhdCBvYmplY3QuIFRoZSBjb250ZXh0IGlzIHRoZW4gYXZhaWxhYmxlIHRvIGNoaWxkcmVuIG9mIHRoZSBjb21wb25lbnRcbiAqIChpbmNsdWRpbmcgc2xvdHRlZCBjb250ZW50KSB3aXRoIGBnZXRDb250ZXh0YC5cbiAqXG4gKiBMaWtlIGxpZmVjeWNsZSBmdW5jdGlvbnMsIHRoaXMgbXVzdCBiZSBjYWxsZWQgZHVyaW5nIGNvbXBvbmVudCBpbml0aWFsaXNhdGlvbi5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUjc2V0Y29udGV4dFxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7YW55fSBrZXlcbiAqIEBwYXJhbSB7VH0gY29udGV4dFxuICogQHJldHVybnMge1R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb250ZXh0KGtleSwgY29udGV4dCkge1xuXHRnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LnNldChrZXksIGNvbnRleHQpO1xuXHRyZXR1cm4gY29udGV4dDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgdGhhdCBiZWxvbmdzIHRvIHRoZSBjbG9zZXN0IHBhcmVudCBjb21wb25lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGBrZXlgLlxuICogTXVzdCBiZSBjYWxsZWQgZHVyaW5nIGNvbXBvbmVudCBpbml0aWFsaXNhdGlvbi5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUjZ2V0Y29udGV4dFxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7YW55fSBrZXlcbiAqIEByZXR1cm5zIHtUfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udGV4dChrZXkpIHtcblx0cmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuZ2V0KGtleSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB3aG9sZSBjb250ZXh0IG1hcCB0aGF0IGJlbG9uZ3MgdG8gdGhlIGNsb3Nlc3QgcGFyZW50IGNvbXBvbmVudC5cbiAqIE11c3QgYmUgY2FsbGVkIGR1cmluZyBjb21wb25lbnQgaW5pdGlhbGlzYXRpb24uIFVzZWZ1bCwgZm9yIGV4YW1wbGUsIGlmIHlvdVxuICogcHJvZ3JhbW1hdGljYWxseSBjcmVhdGUgYSBjb21wb25lbnQgYW5kIHdhbnQgdG8gcGFzcyB0aGUgZXhpc3RpbmcgY29udGV4dCB0byBpdC5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUjZ2V0YWxsY29udGV4dHNcbiAqIEB0ZW1wbGF0ZSB7TWFwPGFueSwgYW55Pn0gW1Q9TWFwPGFueSwgYW55Pl1cbiAqIEByZXR1cm5zIHtUfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ29udGV4dHMoKSB7XG5cdHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0O1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGtleWAgaGFzIGJlZW4gc2V0IGluIHRoZSBjb250ZXh0IG9mIGEgcGFyZW50IGNvbXBvbmVudC5cbiAqIE11c3QgYmUgY2FsbGVkIGR1cmluZyBjb21wb25lbnQgaW5pdGlhbGlzYXRpb24uXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI2hhc2NvbnRleHRcbiAqIEBwYXJhbSB7YW55fSBrZXlcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQ29udGV4dChrZXkpIHtcblx0cmV0dXJuIGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmNvbnRleHQuaGFzKGtleSk7XG59XG5cbi8vIFRPRE8gZmlndXJlIG91dCBpZiB3ZSBzdGlsbCB3YW50IHRvIHN1cHBvcnRcbi8vIHNob3J0aGFuZCBldmVudHMsIG9yIGlmIHdlIHdhbnQgdG8gaW1wbGVtZW50XG4vLyBhIHJlYWwgYnViYmxpbmcgbWVjaGFuaXNtXG4vKipcbiAqIEBwYXJhbSBjb21wb25lbnRcbiAqIEBwYXJhbSBldmVudFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWJibGUoY29tcG9uZW50LCBldmVudCkge1xuXHRjb25zdCBjYWxsYmFja3MgPSBjb21wb25lbnQuJCQuY2FsbGJhY2tzW2V2ZW50LnR5cGVdO1xuXHRpZiAoY2FsbGJhY2tzKSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNhbGxiYWNrcy5zbGljZSgpLmZvckVhY2goKGZuKSA9PiBmbi5jYWxsKHRoaXMsIGV2ZW50KSk7XG5cdH1cbn1cbiIsICJpbXBvcnQgeyBydW5fYWxsIH0gZnJvbSAnLi91dGlscy5qcyc7XG5pbXBvcnQgeyBjdXJyZW50X2NvbXBvbmVudCwgc2V0X2N1cnJlbnRfY29tcG9uZW50IH0gZnJvbSAnLi9saWZlY3ljbGUuanMnO1xuXG5leHBvcnQgY29uc3QgZGlydHlfY29tcG9uZW50cyA9IFtdO1xuZXhwb3J0IGNvbnN0IGludHJvcyA9IHsgZW5hYmxlZDogZmFsc2UgfTtcbmV4cG9ydCBjb25zdCBiaW5kaW5nX2NhbGxiYWNrcyA9IFtdO1xuXG5sZXQgcmVuZGVyX2NhbGxiYWNrcyA9IFtdO1xuXG5jb25zdCBmbHVzaF9jYWxsYmFja3MgPSBbXTtcblxuY29uc3QgcmVzb2x2ZWRfcHJvbWlzZSA9IC8qIEBfX1BVUkVfXyAqLyBQcm9taXNlLnJlc29sdmUoKTtcblxubGV0IHVwZGF0ZV9zY2hlZHVsZWQgPSBmYWxzZTtcblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjaGVkdWxlX3VwZGF0ZSgpIHtcblx0aWYgKCF1cGRhdGVfc2NoZWR1bGVkKSB7XG5cdFx0dXBkYXRlX3NjaGVkdWxlZCA9IHRydWU7XG5cdFx0cmVzb2x2ZWRfcHJvbWlzZS50aGVuKGZsdXNoKTtcblx0fVxufVxuXG4vKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59ICovXG5leHBvcnQgZnVuY3Rpb24gdGljaygpIHtcblx0c2NoZWR1bGVfdXBkYXRlKCk7XG5cdHJldHVybiByZXNvbHZlZF9wcm9taXNlO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gYWRkX3JlbmRlcl9jYWxsYmFjayhmbikge1xuXHRyZW5kZXJfY2FsbGJhY2tzLnB1c2goZm4pO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gYWRkX2ZsdXNoX2NhbGxiYWNrKGZuKSB7XG5cdGZsdXNoX2NhbGxiYWNrcy5wdXNoKGZuKTtcbn1cblxuLy8gZmx1c2goKSBjYWxscyBjYWxsYmFja3MgaW4gdGhpcyBvcmRlcjpcbi8vIDEuIEFsbCBiZWZvcmVVcGRhdGUgY2FsbGJhY2tzLCBpbiBvcmRlcjogcGFyZW50cyBiZWZvcmUgY2hpbGRyZW5cbi8vIDIuIEFsbCBiaW5kOnRoaXMgY2FsbGJhY2tzLCBpbiByZXZlcnNlIG9yZGVyOiBjaGlsZHJlbiBiZWZvcmUgcGFyZW50cy5cbi8vIDMuIEFsbCBhZnRlclVwZGF0ZSBjYWxsYmFja3MsIGluIG9yZGVyOiBwYXJlbnRzIGJlZm9yZSBjaGlsZHJlbi4gRVhDRVBUXG4vLyAgICBmb3IgYWZ0ZXJVcGRhdGVzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWwgb25Nb3VudCwgd2hpY2ggYXJlIGNhbGxlZCBpblxuLy8gICAgcmV2ZXJzZSBvcmRlcjogY2hpbGRyZW4gYmVmb3JlIHBhcmVudHMuXG4vLyBTaW5jZSBjYWxsYmFja3MgbWlnaHQgdXBkYXRlIGNvbXBvbmVudCB2YWx1ZXMsIHdoaWNoIGNvdWxkIHRyaWdnZXIgYW5vdGhlclxuLy8gY2FsbCB0byBmbHVzaCgpLCB0aGUgZm9sbG93aW5nIHN0ZXBzIGd1YXJkIGFnYWluc3QgdGhpczpcbi8vIDEuIER1cmluZyBiZWZvcmVVcGRhdGUsIGFueSB1cGRhdGVkIGNvbXBvbmVudHMgd2lsbCBiZSBhZGRlZCB0byB0aGVcbi8vICAgIGRpcnR5X2NvbXBvbmVudHMgYXJyYXkgYW5kIHdpbGwgY2F1c2UgYSByZWVudHJhbnQgY2FsbCB0byBmbHVzaCgpLiBCZWNhdXNlXG4vLyAgICB0aGUgZmx1c2ggaW5kZXggaXMga2VwdCBvdXRzaWRlIHRoZSBmdW5jdGlvbiwgdGhlIHJlZW50cmFudCBjYWxsIHdpbGwgcGlja1xuLy8gICAgdXAgd2hlcmUgdGhlIGVhcmxpZXIgY2FsbCBsZWZ0IG9mZiBhbmQgZ28gdGhyb3VnaCBhbGwgZGlydHkgY29tcG9uZW50cy4gVGhlXG4vLyAgICBjdXJyZW50X2NvbXBvbmVudCB2YWx1ZSBpcyBzYXZlZCBhbmQgcmVzdG9yZWQgc28gdGhhdCB0aGUgcmVlbnRyYW50IGNhbGwgd2lsbFxuLy8gICAgbm90IGludGVyZmVyZSB3aXRoIHRoZSBcInBhcmVudFwiIGZsdXNoKCkgY2FsbC5cbi8vIDIuIGJpbmQ6dGhpcyBjYWxsYmFja3MgY2Fubm90IHRyaWdnZXIgbmV3IGZsdXNoKCkgY2FsbHMuXG4vLyAzLiBEdXJpbmcgYWZ0ZXJVcGRhdGUsIGFueSB1cGRhdGVkIGNvbXBvbmVudHMgd2lsbCBOT1QgaGF2ZSB0aGVpciBhZnRlclVwZGF0ZVxuLy8gICAgY2FsbGJhY2sgY2FsbGVkIGEgc2Vjb25kIHRpbWU7IHRoZSBzZWVuX2NhbGxiYWNrcyBzZXQsIG91dHNpZGUgdGhlIGZsdXNoKClcbi8vICAgIGZ1bmN0aW9uLCBndWFyYW50ZWVzIHRoaXMgYmVoYXZpb3IuXG5jb25zdCBzZWVuX2NhbGxiYWNrcyA9IG5ldyBTZXQoKTtcblxubGV0IGZsdXNoaWR4ID0gMDsgLy8gRG8gKm5vdCogbW92ZSB0aGlzIGluc2lkZSB0aGUgZmx1c2goKSBmdW5jdGlvblxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gZmx1c2goKSB7XG5cdC8vIERvIG5vdCByZWVudGVyIGZsdXNoIHdoaWxlIGRpcnR5IGNvbXBvbmVudHMgYXJlIHVwZGF0ZWQsIGFzIHRoaXMgY2FuXG5cdC8vIHJlc3VsdCBpbiBhbiBpbmZpbml0ZSBsb29wLiBJbnN0ZWFkLCBsZXQgdGhlIGlubmVyIGZsdXNoIGhhbmRsZSBpdC5cblx0Ly8gUmVlbnRyYW5jeSBpcyBvayBhZnRlcndhcmRzIGZvciBiaW5kaW5ncyBldGMuXG5cdGlmIChmbHVzaGlkeCAhPT0gMCkge1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBzYXZlZF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcblx0ZG8ge1xuXHRcdC8vIGZpcnN0LCBjYWxsIGJlZm9yZVVwZGF0ZSBmdW5jdGlvbnNcblx0XHQvLyBhbmQgdXBkYXRlIGNvbXBvbmVudHNcblx0XHR0cnkge1xuXHRcdFx0d2hpbGUgKGZsdXNoaWR4IDwgZGlydHlfY29tcG9uZW50cy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgY29tcG9uZW50ID0gZGlydHlfY29tcG9uZW50c1tmbHVzaGlkeF07XG5cdFx0XHRcdGZsdXNoaWR4Kys7XG5cdFx0XHRcdHNldF9jdXJyZW50X2NvbXBvbmVudChjb21wb25lbnQpO1xuXHRcdFx0XHR1cGRhdGUoY29tcG9uZW50LiQkKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyByZXNldCBkaXJ0eSBzdGF0ZSB0byBub3QgZW5kIHVwIGluIGEgZGVhZGxvY2tlZCBzdGF0ZSBhbmQgdGhlbiByZXRocm93XG5cdFx0XHRkaXJ0eV9jb21wb25lbnRzLmxlbmd0aCA9IDA7XG5cdFx0XHRmbHVzaGlkeCA9IDA7XG5cdFx0XHR0aHJvdyBlO1xuXHRcdH1cblx0XHRzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG5cdFx0ZGlydHlfY29tcG9uZW50cy5sZW5ndGggPSAwO1xuXHRcdGZsdXNoaWR4ID0gMDtcblx0XHR3aGlsZSAoYmluZGluZ19jYWxsYmFja3MubGVuZ3RoKSBiaW5kaW5nX2NhbGxiYWNrcy5wb3AoKSgpO1xuXHRcdC8vIHRoZW4sIG9uY2UgY29tcG9uZW50cyBhcmUgdXBkYXRlZCwgY2FsbFxuXHRcdC8vIGFmdGVyVXBkYXRlIGZ1bmN0aW9ucy4gVGhpcyBtYXkgY2F1c2Vcblx0XHQvLyBzdWJzZXF1ZW50IHVwZGF0ZXMuLi5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRcdGNvbnN0IGNhbGxiYWNrID0gcmVuZGVyX2NhbGxiYWNrc1tpXTtcblx0XHRcdGlmICghc2Vlbl9jYWxsYmFja3MuaGFzKGNhbGxiYWNrKSkge1xuXHRcdFx0XHQvLyAuLi5zbyBndWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzXG5cdFx0XHRcdHNlZW5fY2FsbGJhY2tzLmFkZChjYWxsYmFjayk7XG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoID0gMDtcblx0fSB3aGlsZSAoZGlydHlfY29tcG9uZW50cy5sZW5ndGgpO1xuXHR3aGlsZSAoZmx1c2hfY2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdGZsdXNoX2NhbGxiYWNrcy5wb3AoKSgpO1xuXHR9XG5cdHVwZGF0ZV9zY2hlZHVsZWQgPSBmYWxzZTtcblx0c2Vlbl9jYWxsYmFja3MuY2xlYXIoKTtcblx0c2V0X2N1cnJlbnRfY29tcG9uZW50KHNhdmVkX2NvbXBvbmVudCk7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmZ1bmN0aW9uIHVwZGF0ZSgkJCkge1xuXHRpZiAoJCQuZnJhZ21lbnQgIT09IG51bGwpIHtcblx0XHQkJC51cGRhdGUoKTtcblx0XHRydW5fYWxsKCQkLmJlZm9yZV91cGRhdGUpO1xuXHRcdGNvbnN0IGRpcnR5ID0gJCQuZGlydHk7XG5cdFx0JCQuZGlydHkgPSBbLTFdO1xuXHRcdCQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LnAoJCQuY3R4LCBkaXJ0eSk7XG5cdFx0JCQuYWZ0ZXJfdXBkYXRlLmZvckVhY2goYWRkX3JlbmRlcl9jYWxsYmFjayk7XG5cdH1cbn1cblxuLyoqXG4gKiBVc2VmdWwgZm9yIGV4YW1wbGUgdG8gZXhlY3V0ZSByZW1haW5pbmcgYGFmdGVyVXBkYXRlYCBjYWxsYmFja3MgYmVmb3JlIGV4ZWN1dGluZyBgZGVzdHJveWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9uW119IGZuc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbHVzaF9yZW5kZXJfY2FsbGJhY2tzKGZucykge1xuXHRjb25zdCBmaWx0ZXJlZCA9IFtdO1xuXHRjb25zdCB0YXJnZXRzID0gW107XG5cdHJlbmRlcl9jYWxsYmFja3MuZm9yRWFjaCgoYykgPT4gKGZucy5pbmRleE9mKGMpID09PSAtMSA/IGZpbHRlcmVkLnB1c2goYykgOiB0YXJnZXRzLnB1c2goYykpKTtcblx0dGFyZ2V0cy5mb3JFYWNoKChjKSA9PiBjKCkpO1xuXHRyZW5kZXJfY2FsbGJhY2tzID0gZmlsdGVyZWQ7XG59XG4iLCAiaW1wb3J0IHsgaWRlbnRpdHkgYXMgbGluZWFyLCBpc19mdW5jdGlvbiwgbm9vcCwgcnVuX2FsbCB9IGZyb20gJy4vdXRpbHMuanMnO1xuaW1wb3J0IHsgbm93IH0gZnJvbSAnLi9lbnZpcm9ubWVudC5qcyc7XG5pbXBvcnQgeyBsb29wIH0gZnJvbSAnLi9sb29wLmpzJztcbmltcG9ydCB7IGNyZWF0ZV9ydWxlLCBkZWxldGVfcnVsZSB9IGZyb20gJy4vc3R5bGVfbWFuYWdlci5qcyc7XG5pbXBvcnQgeyBjdXN0b21fZXZlbnQgfSBmcm9tICcuL2RvbS5qcyc7XG5pbXBvcnQgeyBhZGRfcmVuZGVyX2NhbGxiYWNrIH0gZnJvbSAnLi9zY2hlZHVsZXIuanMnO1xuXG4vKipcbiAqIEB0eXBlIHtQcm9taXNlPHZvaWQ+IHwgbnVsbH1cbiAqL1xubGV0IHByb21pc2U7XG5cbi8qKlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmZ1bmN0aW9uIHdhaXQoKSB7XG5cdGlmICghcHJvbWlzZSkge1xuXHRcdHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRwcm9taXNlLnRoZW4oKCkgPT4ge1xuXHRcdFx0cHJvbWlzZSA9IG51bGw7XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIHByb21pc2U7XG59XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge0lOVFJPIHwgT1VUUk8gfCBib29sZWFufSBkaXJlY3Rpb25cbiAqIEBwYXJhbSB7J3N0YXJ0JyB8ICdlbmQnfSBraW5kXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gZGlzcGF0Y2gobm9kZSwgZGlyZWN0aW9uLCBraW5kKSB7XG5cdG5vZGUuZGlzcGF0Y2hFdmVudChjdXN0b21fZXZlbnQoYCR7ZGlyZWN0aW9uID8gJ2ludHJvJyA6ICdvdXRybyd9JHtraW5kfWApKTtcbn1cblxuY29uc3Qgb3V0cm9pbmcgPSBuZXcgU2V0KCk7XG5cbi8qKlxuICogQHR5cGUge091dHJvfVxuICovXG5sZXQgb3V0cm9zO1xuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwX291dHJvcygpIHtcblx0b3V0cm9zID0ge1xuXHRcdHI6IDAsXG5cdFx0YzogW10sXG5cdFx0cDogb3V0cm9zIC8vIHBhcmVudCBncm91cFxuXHR9O1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrX291dHJvcygpIHtcblx0aWYgKCFvdXRyb3Mucikge1xuXHRcdHJ1bl9hbGwob3V0cm9zLmMpO1xuXHR9XG5cdG91dHJvcyA9IG91dHJvcy5wO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3ByaXZhdGUuanMnKS5GcmFnbWVudH0gYmxvY2tcbiAqIEBwYXJhbSB7MCB8IDF9IFtsb2NhbF1cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNpdGlvbl9pbihibG9jaywgbG9jYWwpIHtcblx0aWYgKGJsb2NrICYmIGJsb2NrLmkpIHtcblx0XHRvdXRyb2luZy5kZWxldGUoYmxvY2spO1xuXHRcdGJsb2NrLmkobG9jYWwpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLkZyYWdtZW50fSBibG9ja1xuICogQHBhcmFtIHswIHwgMX0gbG9jYWxcbiAqIEBwYXJhbSB7MCB8IDF9IFtkZXRhY2hdXG4gKiBAcGFyYW0geygpID0+IHZvaWR9IFtjYWxsYmFja11cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNpdGlvbl9vdXQoYmxvY2ssIGxvY2FsLCBkZXRhY2gsIGNhbGxiYWNrKSB7XG5cdGlmIChibG9jayAmJiBibG9jay5vKSB7XG5cdFx0aWYgKG91dHJvaW5nLmhhcyhibG9jaykpIHJldHVybjtcblx0XHRvdXRyb2luZy5hZGQoYmxvY2spO1xuXHRcdG91dHJvcy5jLnB1c2goKCkgPT4ge1xuXHRcdFx0b3V0cm9pbmcuZGVsZXRlKGJsb2NrKTtcblx0XHRcdGlmIChjYWxsYmFjaykge1xuXHRcdFx0XHRpZiAoZGV0YWNoKSBibG9jay5kKDEpO1xuXHRcdFx0XHRjYWxsYmFjaygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGJsb2NrLm8obG9jYWwpO1xuXHR9IGVsc2UgaWYgKGNhbGxiYWNrKSB7XG5cdFx0Y2FsbGJhY2soKTtcblx0fVxufVxuXG4vKipcbiAqIEB0eXBlIHtpbXBvcnQoJy4uL3RyYW5zaXRpb24vcHVibGljLmpzJykuVHJhbnNpdGlvbkNvbmZpZ31cbiAqL1xuY29uc3QgbnVsbF90cmFuc2l0aW9uID0geyBkdXJhdGlvbjogMCB9O1xuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudCAmIEVsZW1lbnRDU1NJbmxpbmVTdHlsZX0gbm9kZVxuICogQHBhcmFtIHtUcmFuc2l0aW9uRm59IGZuXG4gKiBAcGFyYW0ge2FueX0gcGFyYW1zXG4gKiBAcmV0dXJucyB7eyBzdGFydCgpOiB2b2lkOyBpbnZhbGlkYXRlKCk6IHZvaWQ7IGVuZCgpOiB2b2lkOyB9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX2luX3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcykge1xuXHQvKipcblx0ICogQHR5cGUge1RyYW5zaXRpb25PcHRpb25zfSAqL1xuXHRjb25zdCBvcHRpb25zID0geyBkaXJlY3Rpb246ICdpbicgfTtcblx0bGV0IGNvbmZpZyA9IGZuKG5vZGUsIHBhcmFtcywgb3B0aW9ucyk7XG5cdGxldCBydW5uaW5nID0gZmFsc2U7XG5cdGxldCBhbmltYXRpb25fbmFtZTtcblx0bGV0IHRhc2s7XG5cdGxldCB1aWQgPSAwO1xuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH0gKi9cblx0ZnVuY3Rpb24gY2xlYW51cCgpIHtcblx0XHRpZiAoYW5pbWF0aW9uX25hbWUpIGRlbGV0ZV9ydWxlKG5vZGUsIGFuaW1hdGlvbl9uYW1lKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH0gKi9cblx0ZnVuY3Rpb24gZ28oKSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0ZGVsYXkgPSAwLFxuXHRcdFx0ZHVyYXRpb24gPSAzMDAsXG5cdFx0XHRlYXNpbmcgPSBsaW5lYXIsXG5cdFx0XHR0aWNrID0gbm9vcCxcblx0XHRcdGNzc1xuXHRcdH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuXHRcdGlmIChjc3MpIGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUobm9kZSwgMCwgMSwgZHVyYXRpb24sIGRlbGF5LCBlYXNpbmcsIGNzcywgdWlkKyspO1xuXHRcdHRpY2soMCwgMSk7XG5cdFx0Y29uc3Qgc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXk7XG5cdFx0Y29uc3QgZW5kX3RpbWUgPSBzdGFydF90aW1lICsgZHVyYXRpb247XG5cdFx0aWYgKHRhc2spIHRhc2suYWJvcnQoKTtcblx0XHRydW5uaW5nID0gdHJ1ZTtcblx0XHRhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIHRydWUsICdzdGFydCcpKTtcblx0XHR0YXNrID0gbG9vcCgobm93KSA9PiB7XG5cdFx0XHRpZiAocnVubmluZykge1xuXHRcdFx0XHRpZiAobm93ID49IGVuZF90aW1lKSB7XG5cdFx0XHRcdFx0dGljaygxLCAwKTtcblx0XHRcdFx0XHRkaXNwYXRjaChub2RlLCB0cnVlLCAnZW5kJyk7XG5cdFx0XHRcdFx0Y2xlYW51cCgpO1xuXHRcdFx0XHRcdHJldHVybiAocnVubmluZyA9IGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobm93ID49IHN0YXJ0X3RpbWUpIHtcblx0XHRcdFx0XHRjb25zdCB0ID0gZWFzaW5nKChub3cgLSBzdGFydF90aW1lKSAvIGR1cmF0aW9uKTtcblx0XHRcdFx0XHR0aWNrKHQsIDEgLSB0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJ1bm5pbmc7XG5cdFx0fSk7XG5cdH1cblx0bGV0IHN0YXJ0ZWQgPSBmYWxzZTtcblx0cmV0dXJuIHtcblx0XHRzdGFydCgpIHtcblx0XHRcdGlmIChzdGFydGVkKSByZXR1cm47XG5cdFx0XHRzdGFydGVkID0gdHJ1ZTtcblx0XHRcdGRlbGV0ZV9ydWxlKG5vZGUpO1xuXHRcdFx0aWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcblx0XHRcdFx0Y29uZmlnID0gY29uZmlnKG9wdGlvbnMpO1xuXHRcdFx0XHR3YWl0KCkudGhlbihnbyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRnbygpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aW52YWxpZGF0ZSgpIHtcblx0XHRcdHN0YXJ0ZWQgPSBmYWxzZTtcblx0XHR9LFxuXHRcdGVuZCgpIHtcblx0XHRcdGlmIChydW5uaW5nKSB7XG5cdFx0XHRcdGNsZWFudXAoKTtcblx0XHRcdFx0cnVubmluZyA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnQgJiBFbGVtZW50Q1NTSW5saW5lU3R5bGV9IG5vZGVcbiAqIEBwYXJhbSB7VHJhbnNpdGlvbkZufSBmblxuICogQHBhcmFtIHthbnl9IHBhcmFtc1xuICogQHJldHVybnMge3sgZW5kKHJlc2V0OiBhbnkpOiB2b2lkOyB9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX291dF90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMpIHtcblx0LyoqIEB0eXBlIHtUcmFuc2l0aW9uT3B0aW9uc30gKi9cblx0Y29uc3Qgb3B0aW9ucyA9IHsgZGlyZWN0aW9uOiAnb3V0JyB9O1xuXHRsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zLCBvcHRpb25zKTtcblx0bGV0IHJ1bm5pbmcgPSB0cnVlO1xuXHRsZXQgYW5pbWF0aW9uX25hbWU7XG5cdGNvbnN0IGdyb3VwID0gb3V0cm9zO1xuXHRncm91cC5yICs9IDE7XG5cdC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cblx0bGV0IG9yaWdpbmFsX2luZXJ0X3ZhbHVlO1xuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH0gKi9cblx0ZnVuY3Rpb24gZ28oKSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0ZGVsYXkgPSAwLFxuXHRcdFx0ZHVyYXRpb24gPSAzMDAsXG5cdFx0XHRlYXNpbmcgPSBsaW5lYXIsXG5cdFx0XHR0aWNrID0gbm9vcCxcblx0XHRcdGNzc1xuXHRcdH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuXG5cdFx0aWYgKGNzcykgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAxLCAwLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcblxuXHRcdGNvbnN0IHN0YXJ0X3RpbWUgPSBub3coKSArIGRlbGF5O1xuXHRcdGNvbnN0IGVuZF90aW1lID0gc3RhcnRfdGltZSArIGR1cmF0aW9uO1xuXHRcdGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4gZGlzcGF0Y2gobm9kZSwgZmFsc2UsICdzdGFydCcpKTtcblxuXHRcdGlmICgnaW5lcnQnIGluIG5vZGUpIHtcblx0XHRcdG9yaWdpbmFsX2luZXJ0X3ZhbHVlID0gLyoqIEB0eXBlIHtIVE1MRWxlbWVudH0gKi8gKG5vZGUpLmluZXJ0O1xuXHRcdFx0bm9kZS5pbmVydCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0bG9vcCgobm93KSA9PiB7XG5cdFx0XHRpZiAocnVubmluZykge1xuXHRcdFx0XHRpZiAobm93ID49IGVuZF90aW1lKSB7XG5cdFx0XHRcdFx0dGljaygwLCAxKTtcblx0XHRcdFx0XHRkaXNwYXRjaChub2RlLCBmYWxzZSwgJ2VuZCcpO1xuXHRcdFx0XHRcdGlmICghLS1ncm91cC5yKSB7XG5cdFx0XHRcdFx0XHQvLyB0aGlzIHdpbGwgcmVzdWx0IGluIGBlbmQoKWAgYmVpbmcgY2FsbGVkLFxuXHRcdFx0XHRcdFx0Ly8gc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhbiB1cCBoZXJlXG5cdFx0XHRcdFx0XHRydW5fYWxsKGdyb3VwLmMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG5vdyA+PSBzdGFydF90aW1lKSB7XG5cdFx0XHRcdFx0Y29uc3QgdCA9IGVhc2luZygobm93IC0gc3RhcnRfdGltZSkgLyBkdXJhdGlvbik7XG5cdFx0XHRcdFx0dGljaygxIC0gdCwgdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBydW5uaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0aWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcblx0XHR3YWl0KCkudGhlbigoKSA9PiB7XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRjb25maWcgPSBjb25maWcob3B0aW9ucyk7XG5cdFx0XHRnbygpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdGdvKCk7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdGVuZChyZXNldCkge1xuXHRcdFx0aWYgKHJlc2V0ICYmICdpbmVydCcgaW4gbm9kZSkge1xuXHRcdFx0XHRub2RlLmluZXJ0ID0gb3JpZ2luYWxfaW5lcnRfdmFsdWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmVzZXQgJiYgY29uZmlnLnRpY2spIHtcblx0XHRcdFx0Y29uZmlnLnRpY2soMSwgMCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAocnVubmluZykge1xuXHRcdFx0XHRpZiAoYW5pbWF0aW9uX25hbWUpIGRlbGV0ZV9ydWxlKG5vZGUsIGFuaW1hdGlvbl9uYW1lKTtcblx0XHRcdFx0cnVubmluZyA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnQgJiBFbGVtZW50Q1NTSW5saW5lU3R5bGV9IG5vZGVcbiAqIEBwYXJhbSB7VHJhbnNpdGlvbkZufSBmblxuICogQHBhcmFtIHthbnl9IHBhcmFtc1xuICogQHBhcmFtIHtib29sZWFufSBpbnRyb1xuICogQHJldHVybnMge3sgcnVuKGI6IDAgfCAxKTogdm9pZDsgZW5kKCk6IHZvaWQ7IH19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfYmlkaXJlY3Rpb25hbF90cmFuc2l0aW9uKG5vZGUsIGZuLCBwYXJhbXMsIGludHJvKSB7XG5cdC8qKlxuXHQgKiBAdHlwZSB7VHJhbnNpdGlvbk9wdGlvbnN9ICovXG5cdGNvbnN0IG9wdGlvbnMgPSB7IGRpcmVjdGlvbjogJ2JvdGgnIH07XG5cdGxldCBjb25maWcgPSBmbihub2RlLCBwYXJhbXMsIG9wdGlvbnMpO1xuXHRsZXQgdCA9IGludHJvID8gMCA6IDE7XG5cblx0LyoqXG5cdCAqIEB0eXBlIHtQcm9ncmFtIHwgbnVsbH0gKi9cblx0bGV0IHJ1bm5pbmdfcHJvZ3JhbSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEB0eXBlIHtQZW5kaW5nUHJvZ3JhbSB8IG51bGx9ICovXG5cdGxldCBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuXHRsZXQgYW5pbWF0aW9uX25hbWUgPSBudWxsO1xuXG5cdC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cblx0bGV0IG9yaWdpbmFsX2luZXJ0X3ZhbHVlO1xuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH0gKi9cblx0ZnVuY3Rpb24gY2xlYXJfYW5pbWF0aW9uKCkge1xuXHRcdGlmIChhbmltYXRpb25fbmFtZSkgZGVsZXRlX3J1bGUobm9kZSwgYW5pbWF0aW9uX25hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7UGVuZGluZ1Byb2dyYW19IHByb2dyYW1cblx0ICogQHBhcmFtIHtudW1iZXJ9IGR1cmF0aW9uXG5cdCAqIEByZXR1cm5zIHtQcm9ncmFtfVxuXHQgKi9cblx0ZnVuY3Rpb24gaW5pdChwcm9ncmFtLCBkdXJhdGlvbikge1xuXHRcdGNvbnN0IGQgPSAvKiogQHR5cGUge1Byb2dyYW1bJ2QnXX0gKi8gKHByb2dyYW0uYiAtIHQpO1xuXHRcdGR1cmF0aW9uICo9IE1hdGguYWJzKGQpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRhOiB0LFxuXHRcdFx0YjogcHJvZ3JhbS5iLFxuXHRcdFx0ZCxcblx0XHRcdGR1cmF0aW9uLFxuXHRcdFx0c3RhcnQ6IHByb2dyYW0uc3RhcnQsXG5cdFx0XHRlbmQ6IHByb2dyYW0uc3RhcnQgKyBkdXJhdGlvbixcblx0XHRcdGdyb3VwOiBwcm9ncmFtLmdyb3VwXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge0lOVFJPIHwgT1VUUk99IGJcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRmdW5jdGlvbiBnbyhiKSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0ZGVsYXkgPSAwLFxuXHRcdFx0ZHVyYXRpb24gPSAzMDAsXG5cdFx0XHRlYXNpbmcgPSBsaW5lYXIsXG5cdFx0XHR0aWNrID0gbm9vcCxcblx0XHRcdGNzc1xuXHRcdH0gPSBjb25maWcgfHwgbnVsbF90cmFuc2l0aW9uO1xuXG5cdFx0LyoqXG5cdFx0ICogQHR5cGUge1BlbmRpbmdQcm9ncmFtfSAqL1xuXHRcdGNvbnN0IHByb2dyYW0gPSB7XG5cdFx0XHRzdGFydDogbm93KCkgKyBkZWxheSxcblx0XHRcdGJcblx0XHR9O1xuXG5cdFx0aWYgKCFiKSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlIHRvZG86IGltcHJvdmUgdHlwaW5nc1xuXHRcdFx0cHJvZ3JhbS5ncm91cCA9IG91dHJvcztcblx0XHRcdG91dHJvcy5yICs9IDE7XG5cdFx0fVxuXG5cdFx0aWYgKCdpbmVydCcgaW4gbm9kZSkge1xuXHRcdFx0aWYgKGIpIHtcblx0XHRcdFx0aWYgKG9yaWdpbmFsX2luZXJ0X3ZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHQvLyBhYm9ydGVkL3JldmVyc2VkIG91dHJvIFx1MjAxNCByZXN0b3JlIHByZXZpb3VzIGluZXJ0IHZhbHVlXG5cdFx0XHRcdFx0bm9kZS5pbmVydCA9IG9yaWdpbmFsX2luZXJ0X3ZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvcmlnaW5hbF9pbmVydF92YWx1ZSA9IC8qKiBAdHlwZSB7SFRNTEVsZW1lbnR9ICovIChub2RlKS5pbmVydDtcblx0XHRcdFx0bm9kZS5pbmVydCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHJ1bm5pbmdfcHJvZ3JhbSB8fCBwZW5kaW5nX3Byb2dyYW0pIHtcblx0XHRcdHBlbmRpbmdfcHJvZ3JhbSA9IHByb2dyYW07XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGlmIHRoaXMgaXMgYW4gaW50cm8sIGFuZCB0aGVyZSdzIGEgZGVsYXksIHdlIG5lZWQgdG8gZG9cblx0XHRcdC8vIGFuIGluaXRpYWwgdGljayBhbmQvb3IgYXBwbHkgQ1NTIGFuaW1hdGlvbiBpbW1lZGlhdGVseVxuXHRcdFx0aWYgKGNzcykge1xuXHRcdFx0XHRjbGVhcl9hbmltYXRpb24oKTtcblx0XHRcdFx0YW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCB0LCBiLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcblx0XHRcdH1cblx0XHRcdGlmIChiKSB0aWNrKDAsIDEpO1xuXHRcdFx0cnVubmluZ19wcm9ncmFtID0gaW5pdChwcm9ncmFtLCBkdXJhdGlvbik7XG5cdFx0XHRhZGRfcmVuZGVyX2NhbGxiYWNrKCgpID0+IGRpc3BhdGNoKG5vZGUsIGIsICdzdGFydCcpKTtcblx0XHRcdGxvb3AoKG5vdykgPT4ge1xuXHRcdFx0XHRpZiAocGVuZGluZ19wcm9ncmFtICYmIG5vdyA+IHBlbmRpbmdfcHJvZ3JhbS5zdGFydCkge1xuXHRcdFx0XHRcdHJ1bm5pbmdfcHJvZ3JhbSA9IGluaXQocGVuZGluZ19wcm9ncmFtLCBkdXJhdGlvbik7XG5cdFx0XHRcdFx0cGVuZGluZ19wcm9ncmFtID0gbnVsbDtcblx0XHRcdFx0XHRkaXNwYXRjaChub2RlLCBydW5uaW5nX3Byb2dyYW0uYiwgJ3N0YXJ0Jyk7XG5cdFx0XHRcdFx0aWYgKGNzcykge1xuXHRcdFx0XHRcdFx0Y2xlYXJfYW5pbWF0aW9uKCk7XG5cdFx0XHRcdFx0XHRhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKFxuXHRcdFx0XHRcdFx0XHRub2RlLFxuXHRcdFx0XHRcdFx0XHR0LFxuXHRcdFx0XHRcdFx0XHRydW5uaW5nX3Byb2dyYW0uYixcblx0XHRcdFx0XHRcdFx0cnVubmluZ19wcm9ncmFtLmR1cmF0aW9uLFxuXHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRlYXNpbmcsXG5cdFx0XHRcdFx0XHRcdGNvbmZpZy5jc3Ncblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChydW5uaW5nX3Byb2dyYW0pIHtcblx0XHRcdFx0XHRpZiAobm93ID49IHJ1bm5pbmdfcHJvZ3JhbS5lbmQpIHtcblx0XHRcdFx0XHRcdHRpY2soKHQgPSBydW5uaW5nX3Byb2dyYW0uYiksIDEgLSB0KTtcblx0XHRcdFx0XHRcdGRpc3BhdGNoKG5vZGUsIHJ1bm5pbmdfcHJvZ3JhbS5iLCAnZW5kJyk7XG5cdFx0XHRcdFx0XHRpZiAoIXBlbmRpbmdfcHJvZ3JhbSkge1xuXHRcdFx0XHRcdFx0XHQvLyB3ZSdyZSBkb25lXG5cdFx0XHRcdFx0XHRcdGlmIChydW5uaW5nX3Byb2dyYW0uYikge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGludHJvIFx1MjAxNCB3ZSBjYW4gdGlkeSB1cCBpbW1lZGlhdGVseVxuXHRcdFx0XHRcdFx0XHRcdGNsZWFyX2FuaW1hdGlvbigpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdC8vIG91dHJvIFx1MjAxNCBuZWVkcyB0byBiZSBjb29yZGluYXRlZFxuXHRcdFx0XHRcdFx0XHRcdGlmICghLS1ydW5uaW5nX3Byb2dyYW0uZ3JvdXAucikgcnVuX2FsbChydW5uaW5nX3Byb2dyYW0uZ3JvdXAuYyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJ1bm5pbmdfcHJvZ3JhbSA9IG51bGw7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChub3cgPj0gcnVubmluZ19wcm9ncmFtLnN0YXJ0KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBwID0gbm93IC0gcnVubmluZ19wcm9ncmFtLnN0YXJ0O1xuXHRcdFx0XHRcdFx0dCA9IHJ1bm5pbmdfcHJvZ3JhbS5hICsgcnVubmluZ19wcm9ncmFtLmQgKiBlYXNpbmcocCAvIHJ1bm5pbmdfcHJvZ3JhbS5kdXJhdGlvbik7XG5cdFx0XHRcdFx0XHR0aWNrKHQsIDEgLSB0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuICEhKHJ1bm5pbmdfcHJvZ3JhbSB8fCBwZW5kaW5nX3Byb2dyYW0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB7XG5cdFx0cnVuKGIpIHtcblx0XHRcdGlmIChpc19mdW5jdGlvbihjb25maWcpKSB7XG5cdFx0XHRcdHdhaXQoKS50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvcHRzID0geyBkaXJlY3Rpb246IGIgPyAnaW4nIDogJ291dCcgfTtcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0Y29uZmlnID0gY29uZmlnKG9wdHMpO1xuXHRcdFx0XHRcdGdvKGIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGdvKGIpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0ZW5kKCkge1xuXHRcdFx0Y2xlYXJfYW5pbWF0aW9uKCk7XG5cdFx0XHRydW5uaW5nX3Byb2dyYW0gPSBwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuXHRcdH1cblx0fTtcbn1cblxuLyoqIEB0eXBlZGVmIHsxfSBJTlRSTyAqL1xuLyoqIEB0eXBlZGVmIHswfSBPVVRSTyAqL1xuLyoqIEB0eXBlZGVmIHt7IGRpcmVjdGlvbjogJ2luJyB8ICdvdXQnIHwgJ2JvdGgnIH19IFRyYW5zaXRpb25PcHRpb25zICovXG4vKiogQHR5cGVkZWYgeyhub2RlOiBFbGVtZW50LCBwYXJhbXM6IGFueSwgb3B0aW9uczogVHJhbnNpdGlvbk9wdGlvbnMpID0+IGltcG9ydCgnLi4vdHJhbnNpdGlvbi9wdWJsaWMuanMnKS5UcmFuc2l0aW9uQ29uZmlnfSBUcmFuc2l0aW9uRm4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBPdXRyb1xuICogQHByb3BlcnR5IHtudW1iZXJ9IHJcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb25bXX0gY1xuICogQHByb3BlcnR5IHtPYmplY3R9IHBcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBlbmRpbmdQcm9ncmFtXG4gKiBAcHJvcGVydHkge251bWJlcn0gc3RhcnRcbiAqIEBwcm9wZXJ0eSB7SU5UUk98T1VUUk99IGJcbiAqIEBwcm9wZXJ0eSB7T3V0cm99IFtncm91cF1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByb2dyYW1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBhXG4gKiBAcHJvcGVydHkge0lOVFJPfE9VVFJPfSBiXG4gKiBAcHJvcGVydHkgezF8LTF9IGRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBkdXJhdGlvblxuICogQHByb3BlcnR5IHtudW1iZXJ9IHN0YXJ0XG4gKiBAcHJvcGVydHkge251bWJlcn0gZW5kXG4gKiBAcHJvcGVydHkge091dHJvfSBbZ3JvdXBdXG4gKi9cbiIsICJpbXBvcnQgeyB0cmFuc2l0aW9uX2luLCB0cmFuc2l0aW9uX291dCB9IGZyb20gJy4vdHJhbnNpdGlvbnMuanMnO1xuaW1wb3J0IHsgcnVuX2FsbCB9IGZyb20gJy4vdXRpbHMuanMnO1xuXG4vLyBnZW5lcmFsIGVhY2ggZnVuY3Rpb25zOlxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlX2FycmF5X2xpa2UoYXJyYXlfbGlrZV9vcl9pdGVyYXRvcikge1xuXHRyZXR1cm4gYXJyYXlfbGlrZV9vcl9pdGVyYXRvcj8ubGVuZ3RoICE9PSB1bmRlZmluZWRcblx0XHQ/IGFycmF5X2xpa2Vfb3JfaXRlcmF0b3Jcblx0XHQ6IEFycmF5LmZyb20oYXJyYXlfbGlrZV9vcl9pdGVyYXRvcik7XG59XG5cbi8vIGtleWVkIGVhY2ggZnVuY3Rpb25zOlxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG5cdGJsb2NrLmQoMSk7XG5cdGxvb2t1cC5kZWxldGUoYmxvY2sua2V5KTtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG91dHJvX2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcblx0dHJhbnNpdGlvbl9vdXQoYmxvY2ssIDEsIDEsICgpID0+IHtcblx0XHRsb29rdXAuZGVsZXRlKGJsb2NrLmtleSk7XG5cdH0pO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gZml4X2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApIHtcblx0YmxvY2suZigpO1xuXHRkZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gZml4X2FuZF9vdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG5cdGJsb2NrLmYoKTtcblx0b3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCk7XG59XG5cbi8qKiBAcmV0dXJucyB7YW55W119ICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlX2tleWVkX2VhY2goXG5cdG9sZF9ibG9ja3MsXG5cdGRpcnR5LFxuXHRnZXRfa2V5LFxuXHRkeW5hbWljLFxuXHRjdHgsXG5cdGxpc3QsXG5cdGxvb2t1cCxcblx0bm9kZSxcblx0ZGVzdHJveSxcblx0Y3JlYXRlX2VhY2hfYmxvY2ssXG5cdG5leHQsXG5cdGdldF9jb250ZXh0XG4pIHtcblx0bGV0IG8gPSBvbGRfYmxvY2tzLmxlbmd0aDtcblx0bGV0IG4gPSBsaXN0Lmxlbmd0aDtcblx0bGV0IGkgPSBvO1xuXHRjb25zdCBvbGRfaW5kZXhlcyA9IHt9O1xuXHR3aGlsZSAoaS0tKSBvbGRfaW5kZXhlc1tvbGRfYmxvY2tzW2ldLmtleV0gPSBpO1xuXHRjb25zdCBuZXdfYmxvY2tzID0gW107XG5cdGNvbnN0IG5ld19sb29rdXAgPSBuZXcgTWFwKCk7XG5cdGNvbnN0IGRlbHRhcyA9IG5ldyBNYXAoKTtcblx0Y29uc3QgdXBkYXRlcyA9IFtdO1xuXHRpID0gbjtcblx0d2hpbGUgKGktLSkge1xuXHRcdGNvbnN0IGNoaWxkX2N0eCA9IGdldF9jb250ZXh0KGN0eCwgbGlzdCwgaSk7XG5cdFx0Y29uc3Qga2V5ID0gZ2V0X2tleShjaGlsZF9jdHgpO1xuXHRcdGxldCBibG9jayA9IGxvb2t1cC5nZXQoa2V5KTtcblx0XHRpZiAoIWJsb2NrKSB7XG5cdFx0XHRibG9jayA9IGNyZWF0ZV9lYWNoX2Jsb2NrKGtleSwgY2hpbGRfY3R4KTtcblx0XHRcdGJsb2NrLmMoKTtcblx0XHR9IGVsc2UgaWYgKGR5bmFtaWMpIHtcblx0XHRcdC8vIGRlZmVyIHVwZGF0ZXMgdW50aWwgYWxsIHRoZSBET00gc2h1ZmZsaW5nIGlzIGRvbmVcblx0XHRcdHVwZGF0ZXMucHVzaCgoKSA9PiBibG9jay5wKGNoaWxkX2N0eCwgZGlydHkpKTtcblx0XHR9XG5cdFx0bmV3X2xvb2t1cC5zZXQoa2V5LCAobmV3X2Jsb2Nrc1tpXSA9IGJsb2NrKSk7XG5cdFx0aWYgKGtleSBpbiBvbGRfaW5kZXhlcykgZGVsdGFzLnNldChrZXksIE1hdGguYWJzKGkgLSBvbGRfaW5kZXhlc1trZXldKSk7XG5cdH1cblx0Y29uc3Qgd2lsbF9tb3ZlID0gbmV3IFNldCgpO1xuXHRjb25zdCBkaWRfbW92ZSA9IG5ldyBTZXQoKTtcblx0LyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRmdW5jdGlvbiBpbnNlcnQoYmxvY2spIHtcblx0XHR0cmFuc2l0aW9uX2luKGJsb2NrLCAxKTtcblx0XHRibG9jay5tKG5vZGUsIG5leHQpO1xuXHRcdGxvb2t1cC5zZXQoYmxvY2sua2V5LCBibG9jayk7XG5cdFx0bmV4dCA9IGJsb2NrLmZpcnN0O1xuXHRcdG4tLTtcblx0fVxuXHR3aGlsZSAobyAmJiBuKSB7XG5cdFx0Y29uc3QgbmV3X2Jsb2NrID0gbmV3X2Jsb2Nrc1tuIC0gMV07XG5cdFx0Y29uc3Qgb2xkX2Jsb2NrID0gb2xkX2Jsb2Nrc1tvIC0gMV07XG5cdFx0Y29uc3QgbmV3X2tleSA9IG5ld19ibG9jay5rZXk7XG5cdFx0Y29uc3Qgb2xkX2tleSA9IG9sZF9ibG9jay5rZXk7XG5cdFx0aWYgKG5ld19ibG9jayA9PT0gb2xkX2Jsb2NrKSB7XG5cdFx0XHQvLyBkbyBub3RoaW5nXG5cdFx0XHRuZXh0ID0gbmV3X2Jsb2NrLmZpcnN0O1xuXHRcdFx0by0tO1xuXHRcdFx0bi0tO1xuXHRcdH0gZWxzZSBpZiAoIW5ld19sb29rdXAuaGFzKG9sZF9rZXkpKSB7XG5cdFx0XHQvLyByZW1vdmUgb2xkIGJsb2NrXG5cdFx0XHRkZXN0cm95KG9sZF9ibG9jaywgbG9va3VwKTtcblx0XHRcdG8tLTtcblx0XHR9IGVsc2UgaWYgKCFsb29rdXAuaGFzKG5ld19rZXkpIHx8IHdpbGxfbW92ZS5oYXMobmV3X2tleSkpIHtcblx0XHRcdGluc2VydChuZXdfYmxvY2spO1xuXHRcdH0gZWxzZSBpZiAoZGlkX21vdmUuaGFzKG9sZF9rZXkpKSB7XG5cdFx0XHRvLS07XG5cdFx0fSBlbHNlIGlmIChkZWx0YXMuZ2V0KG5ld19rZXkpID4gZGVsdGFzLmdldChvbGRfa2V5KSkge1xuXHRcdFx0ZGlkX21vdmUuYWRkKG5ld19rZXkpO1xuXHRcdFx0aW5zZXJ0KG5ld19ibG9jayk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpbGxfbW92ZS5hZGQob2xkX2tleSk7XG5cdFx0XHRvLS07XG5cdFx0fVxuXHR9XG5cdHdoaWxlIChvLS0pIHtcblx0XHRjb25zdCBvbGRfYmxvY2sgPSBvbGRfYmxvY2tzW29dO1xuXHRcdGlmICghbmV3X2xvb2t1cC5oYXMob2xkX2Jsb2NrLmtleSkpIGRlc3Ryb3kob2xkX2Jsb2NrLCBsb29rdXApO1xuXHR9XG5cdHdoaWxlIChuKSBpbnNlcnQobmV3X2Jsb2Nrc1tuIC0gMV0pO1xuXHRydW5fYWxsKHVwZGF0ZXMpO1xuXHRyZXR1cm4gbmV3X2Jsb2Nrcztcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlX2VhY2hfa2V5cyhjdHgsIGxpc3QsIGdldF9jb250ZXh0LCBnZXRfa2V5KSB7XG5cdGNvbnN0IGtleXMgPSBuZXcgTWFwKCk7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IGtleSA9IGdldF9rZXkoZ2V0X2NvbnRleHQoY3R4LCBsaXN0LCBpKSk7XG5cdFx0aWYgKGtleXMuaGFzKGtleSkpIHtcblx0XHRcdGxldCB2YWx1ZSA9ICcnO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dmFsdWUgPSBgd2l0aCB2YWx1ZSAnJHtTdHJpbmcoa2V5KX0nIGA7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdC8vIGNhbid0IHN0cmluZ2lmeVxuXHRcdFx0fVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgQ2Fubm90IGhhdmUgZHVwbGljYXRlIGtleXMgaW4gYSBrZXllZCBlYWNoOiBLZXlzIGF0IGluZGV4ICR7a2V5cy5nZXQoXG5cdFx0XHRcdFx0a2V5XG5cdFx0XHRcdCl9IGFuZCAke2l9ICR7dmFsdWV9YXJlIGR1cGxpY2F0ZXNgXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRrZXlzLnNldChrZXksIGkpO1xuXHR9XG59XG4iLCAiLyoqIEByZXR1cm5zIHt7fX0gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRfc3ByZWFkX3VwZGF0ZShsZXZlbHMsIHVwZGF0ZXMpIHtcblx0Y29uc3QgdXBkYXRlID0ge307XG5cdGNvbnN0IHRvX251bGxfb3V0ID0ge307XG5cdGNvbnN0IGFjY291bnRlZF9mb3IgPSB7ICQkc2NvcGU6IDEgfTtcblx0bGV0IGkgPSBsZXZlbHMubGVuZ3RoO1xuXHR3aGlsZSAoaS0tKSB7XG5cdFx0Y29uc3QgbyA9IGxldmVsc1tpXTtcblx0XHRjb25zdCBuID0gdXBkYXRlc1tpXTtcblx0XHRpZiAobikge1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gbykge1xuXHRcdFx0XHRpZiAoIShrZXkgaW4gbikpIHRvX251bGxfb3V0W2tleV0gPSAxO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gbikge1xuXHRcdFx0XHRpZiAoIWFjY291bnRlZF9mb3Jba2V5XSkge1xuXHRcdFx0XHRcdHVwZGF0ZVtrZXldID0gbltrZXldO1xuXHRcdFx0XHRcdGFjY291bnRlZF9mb3Jba2V5XSA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGxldmVsc1tpXSA9IG47XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIG8pIHtcblx0XHRcdFx0YWNjb3VudGVkX2ZvcltrZXldID0gMTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Zm9yIChjb25zdCBrZXkgaW4gdG9fbnVsbF9vdXQpIHtcblx0XHRpZiAoIShrZXkgaW4gdXBkYXRlKSkgdXBkYXRlW2tleV0gPSB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHVwZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldF9zcHJlYWRfb2JqZWN0KHNwcmVhZF9wcm9wcykge1xuXHRyZXR1cm4gdHlwZW9mIHNwcmVhZF9wcm9wcyA9PT0gJ29iamVjdCcgJiYgc3ByZWFkX3Byb3BzICE9PSBudWxsID8gc3ByZWFkX3Byb3BzIDoge307XG59XG4iLCAiY29uc3QgX2Jvb2xlYW5fYXR0cmlidXRlcyA9IC8qKiBAdHlwZSB7Y29uc3R9ICovIChbXG5cdCdhbGxvd2Z1bGxzY3JlZW4nLFxuXHQnYWxsb3dwYXltZW50cmVxdWVzdCcsXG5cdCdhc3luYycsXG5cdCdhdXRvZm9jdXMnLFxuXHQnYXV0b3BsYXknLFxuXHQnY2hlY2tlZCcsXG5cdCdjb250cm9scycsXG5cdCdkZWZhdWx0Jyxcblx0J2RlZmVyJyxcblx0J2Rpc2FibGVkJyxcblx0J2Zvcm1ub3ZhbGlkYXRlJyxcblx0J2hpZGRlbicsXG5cdCdpbmVydCcsXG5cdCdpc21hcCcsXG5cdCdsb29wJyxcblx0J211bHRpcGxlJyxcblx0J211dGVkJyxcblx0J25vbW9kdWxlJyxcblx0J25vdmFsaWRhdGUnLFxuXHQnb3BlbicsXG5cdCdwbGF5c2lubGluZScsXG5cdCdyZWFkb25seScsXG5cdCdyZXF1aXJlZCcsXG5cdCdyZXZlcnNlZCcsXG5cdCdzZWxlY3RlZCdcbl0pO1xuXG4vKipcbiAqIExpc3Qgb2YgSFRNTCBib29sZWFuIGF0dHJpYnV0ZXMgKGUuZy4gYDxpbnB1dCBkaXNhYmxlZD5gKS5cbiAqIFNvdXJjZTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5kaWNlcy5odG1sXG4gKlxuICogQHR5cGUge1NldDxzdHJpbmc+fVxuICovXG5leHBvcnQgY29uc3QgYm9vbGVhbl9hdHRyaWJ1dGVzID0gbmV3IFNldChbLi4uX2Jvb2xlYW5fYXR0cmlidXRlc10pO1xuXG4vKiogQHR5cGVkZWYge3R5cGVvZiBfYm9vbGVhbl9hdHRyaWJ1dGVzW251bWJlcl19IEJvb2xlYW5BdHRyaWJ1dGVzICovXG4iLCAiaW1wb3J0IHtcblx0YWRkX3JlbmRlcl9jYWxsYmFjayxcblx0Zmx1c2gsXG5cdGZsdXNoX3JlbmRlcl9jYWxsYmFja3MsXG5cdHNjaGVkdWxlX3VwZGF0ZSxcblx0ZGlydHlfY29tcG9uZW50c1xufSBmcm9tICcuL3NjaGVkdWxlci5qcyc7XG5pbXBvcnQgeyBjdXJyZW50X2NvbXBvbmVudCwgc2V0X2N1cnJlbnRfY29tcG9uZW50IH0gZnJvbSAnLi9saWZlY3ljbGUuanMnO1xuaW1wb3J0IHsgYmxhbmtfb2JqZWN0LCBpc19lbXB0eSwgaXNfZnVuY3Rpb24sIHJ1biwgcnVuX2FsbCwgbm9vcCB9IGZyb20gJy4vdXRpbHMuanMnO1xuaW1wb3J0IHtcblx0Y2hpbGRyZW4sXG5cdGRldGFjaCxcblx0c3RhcnRfaHlkcmF0aW5nLFxuXHRlbmRfaHlkcmF0aW5nLFxuXHRnZXRfY3VzdG9tX2VsZW1lbnRzX3Nsb3RzLFxuXHRpbnNlcnQsXG5cdGVsZW1lbnQsXG5cdGF0dHJcbn0gZnJvbSAnLi9kb20uanMnO1xuaW1wb3J0IHsgdHJhbnNpdGlvbl9pbiB9IGZyb20gJy4vdHJhbnNpdGlvbnMuanMnO1xuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gYmluZChjb21wb25lbnQsIG5hbWUsIGNhbGxiYWNrKSB7XG5cdGNvbnN0IGluZGV4ID0gY29tcG9uZW50LiQkLnByb3BzW25hbWVdO1xuXHRpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbXBvbmVudC4kJC5ib3VuZFtpbmRleF0gPSBjYWxsYmFjaztcblx0XHRjYWxsYmFjayhjb21wb25lbnQuJCQuY3R4W2luZGV4XSk7XG5cdH1cbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9jb21wb25lbnQoYmxvY2spIHtcblx0YmxvY2sgJiYgYmxvY2suYygpO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gY2xhaW1fY29tcG9uZW50KGJsb2NrLCBwYXJlbnRfbm9kZXMpIHtcblx0YmxvY2sgJiYgYmxvY2subChwYXJlbnRfbm9kZXMpO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gbW91bnRfY29tcG9uZW50KGNvbXBvbmVudCwgdGFyZ2V0LCBhbmNob3IpIHtcblx0Y29uc3QgeyBmcmFnbWVudCwgYWZ0ZXJfdXBkYXRlIH0gPSBjb21wb25lbnQuJCQ7XG5cdGZyYWdtZW50ICYmIGZyYWdtZW50Lm0odGFyZ2V0LCBhbmNob3IpO1xuXHQvLyBvbk1vdW50IGhhcHBlbnMgYmVmb3JlIHRoZSBpbml0aWFsIGFmdGVyVXBkYXRlXG5cdGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4ge1xuXHRcdGNvbnN0IG5ld19vbl9kZXN0cm95ID0gY29tcG9uZW50LiQkLm9uX21vdW50Lm1hcChydW4pLmZpbHRlcihpc19mdW5jdGlvbik7XG5cdFx0Ly8gaWYgdGhlIGNvbXBvbmVudCB3YXMgZGVzdHJveWVkIGltbWVkaWF0ZWx5XG5cdFx0Ly8gaXQgd2lsbCB1cGRhdGUgdGhlIGAkJC5vbl9kZXN0cm95YCByZWZlcmVuY2UgdG8gYG51bGxgLlxuXHRcdC8vIHRoZSBkZXN0cnVjdHVyZWQgb25fZGVzdHJveSBtYXkgc3RpbGwgcmVmZXJlbmNlIHRvIHRoZSBvbGQgYXJyYXlcblx0XHRpZiAoY29tcG9uZW50LiQkLm9uX2Rlc3Ryb3kpIHtcblx0XHRcdGNvbXBvbmVudC4kJC5vbl9kZXN0cm95LnB1c2goLi4ubmV3X29uX2Rlc3Ryb3kpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBFZGdlIGNhc2UgLSBjb21wb25lbnQgd2FzIGRlc3Ryb3llZCBpbW1lZGlhdGVseSxcblx0XHRcdC8vIG1vc3QgbGlrZWx5IGFzIGEgcmVzdWx0IG9mIGEgYmluZGluZyBpbml0aWFsaXNpbmdcblx0XHRcdHJ1bl9hbGwobmV3X29uX2Rlc3Ryb3kpO1xuXHRcdH1cblx0XHRjb21wb25lbnQuJCQub25fbW91bnQgPSBbXTtcblx0fSk7XG5cdGFmdGVyX3VwZGF0ZS5mb3JFYWNoKGFkZF9yZW5kZXJfY2FsbGJhY2spO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gZGVzdHJveV9jb21wb25lbnQoY29tcG9uZW50LCBkZXRhY2hpbmcpIHtcblx0Y29uc3QgJCQgPSBjb21wb25lbnQuJCQ7XG5cdGlmICgkJC5mcmFnbWVudCAhPT0gbnVsbCkge1xuXHRcdGZsdXNoX3JlbmRlcl9jYWxsYmFja3MoJCQuYWZ0ZXJfdXBkYXRlKTtcblx0XHRydW5fYWxsKCQkLm9uX2Rlc3Ryb3kpO1xuXHRcdCQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LmQoZGV0YWNoaW5nKTtcblx0XHQvLyBUT0RPIG51bGwgb3V0IG90aGVyIHJlZnMsIGluY2x1ZGluZyBjb21wb25lbnQuJCQgKGJ1dCBuZWVkIHRvXG5cdFx0Ly8gcHJlc2VydmUgZmluYWwgc3RhdGU/KVxuXHRcdCQkLm9uX2Rlc3Ryb3kgPSAkJC5mcmFnbWVudCA9IG51bGw7XG5cdFx0JCQuY3R4ID0gW107XG5cdH1cbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZnVuY3Rpb24gbWFrZV9kaXJ0eShjb21wb25lbnQsIGkpIHtcblx0aWYgKGNvbXBvbmVudC4kJC5kaXJ0eVswXSA9PT0gLTEpIHtcblx0XHRkaXJ0eV9jb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcblx0XHRzY2hlZHVsZV91cGRhdGUoKTtcblx0XHRjb21wb25lbnQuJCQuZGlydHkuZmlsbCgwKTtcblx0fVxuXHRjb21wb25lbnQuJCQuZGlydHlbKGkgLyAzMSkgfCAwXSB8PSAxIDw8IGkgJSAzMTtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXQoXG5cdGNvbXBvbmVudCxcblx0b3B0aW9ucyxcblx0aW5zdGFuY2UsXG5cdGNyZWF0ZV9mcmFnbWVudCxcblx0bm90X2VxdWFsLFxuXHRwcm9wcyxcblx0YXBwZW5kX3N0eWxlcyxcblx0ZGlydHkgPSBbLTFdXG4pIHtcblx0Y29uc3QgcGFyZW50X2NvbXBvbmVudCA9IGN1cnJlbnRfY29tcG9uZW50O1xuXHRzZXRfY3VycmVudF9jb21wb25lbnQoY29tcG9uZW50KTtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLlQkJH0gKi9cblx0Y29uc3QgJCQgPSAoY29tcG9uZW50LiQkID0ge1xuXHRcdGZyYWdtZW50OiBudWxsLFxuXHRcdGN0eDogW10sXG5cdFx0Ly8gc3RhdGVcblx0XHRwcm9wcyxcblx0XHR1cGRhdGU6IG5vb3AsXG5cdFx0bm90X2VxdWFsLFxuXHRcdGJvdW5kOiBibGFua19vYmplY3QoKSxcblx0XHQvLyBsaWZlY3ljbGVcblx0XHRvbl9tb3VudDogW10sXG5cdFx0b25fZGVzdHJveTogW10sXG5cdFx0b25fZGlzY29ubmVjdDogW10sXG5cdFx0YmVmb3JlX3VwZGF0ZTogW10sXG5cdFx0YWZ0ZXJfdXBkYXRlOiBbXSxcblx0XHRjb250ZXh0OiBuZXcgTWFwKG9wdGlvbnMuY29udGV4dCB8fCAocGFyZW50X2NvbXBvbmVudCA/IHBhcmVudF9jb21wb25lbnQuJCQuY29udGV4dCA6IFtdKSksXG5cdFx0Ly8gZXZlcnl0aGluZyBlbHNlXG5cdFx0Y2FsbGJhY2tzOiBibGFua19vYmplY3QoKSxcblx0XHRkaXJ0eSxcblx0XHRza2lwX2JvdW5kOiBmYWxzZSxcblx0XHRyb290OiBvcHRpb25zLnRhcmdldCB8fCBwYXJlbnRfY29tcG9uZW50LiQkLnJvb3Rcblx0fSk7XG5cdGFwcGVuZF9zdHlsZXMgJiYgYXBwZW5kX3N0eWxlcygkJC5yb290KTtcblx0bGV0IHJlYWR5ID0gZmFsc2U7XG5cdCQkLmN0eCA9IGluc3RhbmNlXG5cdFx0PyBpbnN0YW5jZShjb21wb25lbnQsIG9wdGlvbnMucHJvcHMgfHwge30sIChpLCByZXQsIC4uLnJlc3QpID0+IHtcblx0XHRcdFx0Y29uc3QgdmFsdWUgPSByZXN0Lmxlbmd0aCA/IHJlc3RbMF0gOiByZXQ7XG5cdFx0XHRcdGlmICgkJC5jdHggJiYgbm90X2VxdWFsKCQkLmN0eFtpXSwgKCQkLmN0eFtpXSA9IHZhbHVlKSkpIHtcblx0XHRcdFx0XHRpZiAoISQkLnNraXBfYm91bmQgJiYgJCQuYm91bmRbaV0pICQkLmJvdW5kW2ldKHZhbHVlKTtcblx0XHRcdFx0XHRpZiAocmVhZHkpIG1ha2VfZGlydHkoY29tcG9uZW50LCBpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdCAgfSlcblx0XHQ6IFtdO1xuXHQkJC51cGRhdGUoKTtcblx0cmVhZHkgPSB0cnVlO1xuXHRydW5fYWxsKCQkLmJlZm9yZV91cGRhdGUpO1xuXHQvLyBgZmFsc2VgIGFzIGEgc3BlY2lhbCBjYXNlIG9mIG5vIERPTSBjb21wb25lbnRcblx0JCQuZnJhZ21lbnQgPSBjcmVhdGVfZnJhZ21lbnQgPyBjcmVhdGVfZnJhZ21lbnQoJCQuY3R4KSA6IGZhbHNlO1xuXHRpZiAob3B0aW9ucy50YXJnZXQpIHtcblx0XHRpZiAob3B0aW9ucy5oeWRyYXRlKSB7XG5cdFx0XHRzdGFydF9oeWRyYXRpbmcoKTtcblx0XHRcdGNvbnN0IG5vZGVzID0gY2hpbGRyZW4ob3B0aW9ucy50YXJnZXQpO1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cblx0XHRcdCQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50Lmwobm9kZXMpO1xuXHRcdFx0bm9kZXMuZm9yRWFjaChkZXRhY2gpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuXHRcdFx0JCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQuYygpO1xuXHRcdH1cblx0XHRpZiAob3B0aW9ucy5pbnRybykgdHJhbnNpdGlvbl9pbihjb21wb25lbnQuJCQuZnJhZ21lbnQpO1xuXHRcdG1vdW50X2NvbXBvbmVudChjb21wb25lbnQsIG9wdGlvbnMudGFyZ2V0LCBvcHRpb25zLmFuY2hvcik7XG5cdFx0ZW5kX2h5ZHJhdGluZygpO1xuXHRcdGZsdXNoKCk7XG5cdH1cblx0c2V0X2N1cnJlbnRfY29tcG9uZW50KHBhcmVudF9jb21wb25lbnQpO1xufVxuXG5leHBvcnQgbGV0IFN2ZWx0ZUVsZW1lbnQ7XG5cbmlmICh0eXBlb2YgSFRNTEVsZW1lbnQgPT09ICdmdW5jdGlvbicpIHtcblx0U3ZlbHRlRWxlbWVudCA9IGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuXHRcdC8qKiBUaGUgU3ZlbHRlIGNvbXBvbmVudCBjb25zdHJ1Y3RvciAqL1xuXHRcdCQkY3Rvcjtcblx0XHQvKiogU2xvdHMgKi9cblx0XHQkJHM7XG5cdFx0LyoqIFRoZSBTdmVsdGUgY29tcG9uZW50IGluc3RhbmNlICovXG5cdFx0JCRjO1xuXHRcdC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3VzdG9tIGVsZW1lbnQgaXMgY29ubmVjdGVkICovXG5cdFx0JCRjbiA9IGZhbHNlO1xuXHRcdC8qKiBDb21wb25lbnQgcHJvcHMgZGF0YSAqL1xuXHRcdCQkZCA9IHt9O1xuXHRcdC8qKiBgdHJ1ZWAgaWYgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHJlZmxlY3RpbmcgY29tcG9uZW50IHByb3BzIGJhY2sgdG8gYXR0cmlidXRlcyAqL1xuXHRcdCQkciA9IGZhbHNlO1xuXHRcdC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgQ3VzdG9tRWxlbWVudFByb3BEZWZpbml0aW9uPn0gUHJvcHMgZGVmaW5pdGlvbiAobmFtZSwgcmVmbGVjdGVkLCB0eXBlIGV0YykgKi9cblx0XHQkJHBfZCA9IHt9O1xuXHRcdC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgRnVuY3Rpb25bXT59IEV2ZW50IGxpc3RlbmVycyAqL1xuXHRcdCQkbCA9IHt9O1xuXHRcdC8qKiBAdHlwZSB7TWFwPEZ1bmN0aW9uLCBGdW5jdGlvbj59IEV2ZW50IGxpc3RlbmVyIHVuc3Vic2NyaWJlIGZ1bmN0aW9ucyAqL1xuXHRcdCQkbF91ID0gbmV3IE1hcCgpO1xuXG5cdFx0Y29uc3RydWN0b3IoJCRjb21wb25lbnRDdG9yLCAkJHNsb3RzLCB1c2Vfc2hhZG93X2RvbSkge1xuXHRcdFx0c3VwZXIoKTtcblx0XHRcdHRoaXMuJCRjdG9yID0gJCRjb21wb25lbnRDdG9yO1xuXHRcdFx0dGhpcy4kJHMgPSAkJHNsb3RzO1xuXHRcdFx0aWYgKHVzZV9zaGFkb3dfZG9tKSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNoU2hhZG93KHsgbW9kZTogJ29wZW4nIH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpIHtcblx0XHRcdC8vIFdlIGNhbid0IGRldGVybWluZSB1cGZyb250IGlmIHRoZSBldmVudCBpcyBhIGN1c3RvbSBldmVudCBvciBub3QsIHNvIHdlIGhhdmUgdG9cblx0XHRcdC8vIGxpc3RlbiB0byBib3RoLiBJZiBzb21lb25lIHVzZXMgYSBjdXN0b20gZXZlbnQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGEgcmVndWxhclxuXHRcdFx0Ly8gYnJvd3NlciBldmVudCwgdGhpcyBmaXJlcyB0d2ljZSAtIHdlIGNhbid0IGF2b2lkIHRoYXQuXG5cdFx0XHR0aGlzLiQkbFt0eXBlXSA9IHRoaXMuJCRsW3R5cGVdIHx8IFtdO1xuXHRcdFx0dGhpcy4kJGxbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG5cdFx0XHRpZiAodGhpcy4kJGMpIHtcblx0XHRcdFx0Y29uc3QgdW5zdWIgPSB0aGlzLiQkYy4kb24odHlwZSwgbGlzdGVuZXIpO1xuXHRcdFx0XHR0aGlzLiQkbF91LnNldChsaXN0ZW5lciwgdW5zdWIpO1xuXHRcdFx0fVxuXHRcdFx0c3VwZXIuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG5cdFx0fVxuXG5cdFx0cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucykge1xuXHRcdFx0c3VwZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG5cdFx0XHRpZiAodGhpcy4kJGMpIHtcblx0XHRcdFx0Y29uc3QgdW5zdWIgPSB0aGlzLiQkbF91LmdldChsaXN0ZW5lcik7XG5cdFx0XHRcdGlmICh1bnN1Yikge1xuXHRcdFx0XHRcdHVuc3ViKCk7XG5cdFx0XHRcdFx0dGhpcy4kJGxfdS5kZWxldGUobGlzdGVuZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0YXN5bmMgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG5cdFx0XHR0aGlzLiQkY24gPSB0cnVlO1xuXHRcdFx0aWYgKCF0aGlzLiQkYykge1xuXHRcdFx0XHQvLyBXZSB3YWl0IG9uZSB0aWNrIHRvIGxldCBwb3NzaWJsZSBjaGlsZCBzbG90IGVsZW1lbnRzIGJlIGNyZWF0ZWQvbW91bnRlZFxuXHRcdFx0XHRhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdFx0aWYgKCF0aGlzLiQkY24pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0ZnVuY3Rpb24gY3JlYXRlX3Nsb3QobmFtZSkge1xuXHRcdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgbm9kZTtcblx0XHRcdFx0XHRcdGNvbnN0IG9iaiA9IHtcblx0XHRcdFx0XHRcdFx0YzogZnVuY3Rpb24gY3JlYXRlKCkge1xuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtZW50KCdzbG90Jyk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG5hbWUgIT09ICdkZWZhdWx0Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cihub2RlLCAnbmFtZScsIG5hbWUpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0XHRcdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHRhcmdldFxuXHRcdFx0XHRcdFx0XHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBbYW5jaG9yXVxuXHRcdFx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRcdFx0bTogZnVuY3Rpb24gbW91bnQodGFyZ2V0LCBhbmNob3IpIHtcblx0XHRcdFx0XHRcdFx0XHRpbnNlcnQodGFyZ2V0LCBub2RlLCBhbmNob3IpO1xuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRkOiBmdW5jdGlvbiBkZXN0cm95KGRldGFjaGluZykge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChkZXRhY2hpbmcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGRldGFjaChub2RlKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gb2JqO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgJCRzbG90cyA9IHt9O1xuXHRcdFx0XHRjb25zdCBleGlzdGluZ19zbG90cyA9IGdldF9jdXN0b21fZWxlbWVudHNfc2xvdHModGhpcyk7XG5cdFx0XHRcdGZvciAoY29uc3QgbmFtZSBvZiB0aGlzLiQkcykge1xuXHRcdFx0XHRcdGlmIChuYW1lIGluIGV4aXN0aW5nX3Nsb3RzKSB7XG5cdFx0XHRcdFx0XHQkJHNsb3RzW25hbWVdID0gW2NyZWF0ZV9zbG90KG5hbWUpXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgdGhpcy5hdHRyaWJ1dGVzKSB7XG5cdFx0XHRcdFx0Ly8gdGhpcy4kJGRhdGEgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoaXMuYXR0cmlidXRlc1xuXHRcdFx0XHRcdGNvbnN0IG5hbWUgPSB0aGlzLiQkZ19wKGF0dHJpYnV0ZS5uYW1lKTtcblx0XHRcdFx0XHRpZiAoIShuYW1lIGluIHRoaXMuJCRkKSkge1xuXHRcdFx0XHRcdFx0dGhpcy4kJGRbbmFtZV0gPSBnZXRfY3VzdG9tX2VsZW1lbnRfdmFsdWUobmFtZSwgYXR0cmlidXRlLnZhbHVlLCB0aGlzLiQkcF9kLCAndG9Qcm9wJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuJCRjID0gbmV3IHRoaXMuJCRjdG9yKHtcblx0XHRcdFx0XHR0YXJnZXQ6IHRoaXMuc2hhZG93Um9vdCB8fCB0aGlzLFxuXHRcdFx0XHRcdHByb3BzOiB7XG5cdFx0XHRcdFx0XHQuLi50aGlzLiQkZCxcblx0XHRcdFx0XHRcdCQkc2xvdHMsXG5cdFx0XHRcdFx0XHQkJHNjb3BlOiB7XG5cdFx0XHRcdFx0XHRcdGN0eDogW11cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdC8vIFJlZmxlY3QgY29tcG9uZW50IHByb3BzIGFzIGF0dHJpYnV0ZXNcblx0XHRcdFx0Y29uc3QgcmVmbGVjdF9hdHRyaWJ1dGVzID0gKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuJCRyID0gdHJ1ZTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGtleSBpbiB0aGlzLiQkcF9kKSB7XG5cdFx0XHRcdFx0XHR0aGlzLiQkZFtrZXldID0gdGhpcy4kJGMuJCQuY3R4W3RoaXMuJCRjLiQkLnByb3BzW2tleV1dO1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuJCRwX2Rba2V5XS5yZWZsZWN0KSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGF0dHJpYnV0ZV92YWx1ZSA9IGdldF9jdXN0b21fZWxlbWVudF92YWx1ZShcblx0XHRcdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kJGRba2V5XSxcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiQkcF9kLFxuXHRcdFx0XHRcdFx0XHRcdCd0b0F0dHJpYnV0ZSdcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0aWYgKGF0dHJpYnV0ZV92YWx1ZSA9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnNldEF0dHJpYnV0ZSh0aGlzLiQkcF9kW2tleV0uYXR0cmlidXRlIHx8IGtleSwgYXR0cmlidXRlX3ZhbHVlKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLiQkciA9IGZhbHNlO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHR0aGlzLiQkYy4kJC5hZnRlcl91cGRhdGUucHVzaChyZWZsZWN0X2F0dHJpYnV0ZXMpO1xuXHRcdFx0XHRyZWZsZWN0X2F0dHJpYnV0ZXMoKTsgLy8gb25jZSBpbml0aWFsbHkgYmVjYXVzZSBhZnRlcl91cGRhdGUgaXMgYWRkZWQgdG9vIGxhdGUgZm9yIGZpcnN0IHJlbmRlclxuXG5cdFx0XHRcdGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLiQkbCkge1xuXHRcdFx0XHRcdGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy4kJGxbdHlwZV0pIHtcblx0XHRcdFx0XHRcdGNvbnN0IHVuc3ViID0gdGhpcy4kJGMuJG9uKHR5cGUsIGxpc3RlbmVyKTtcblx0XHRcdFx0XHRcdHRoaXMuJCRsX3Uuc2V0KGxpc3RlbmVyLCB1bnN1Yik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuJCRsID0ge307XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gV2UgZG9uJ3QgbmVlZCB0aGlzIHdoZW4gd29ya2luZyB3aXRoaW4gU3ZlbHRlIGNvZGUsIGJ1dCBmb3IgY29tcGF0aWJpbGl0eSBvZiBwZW9wbGUgdXNpbmcgdGhpcyBvdXRzaWRlIG9mIFN2ZWx0ZVxuXHRcdC8vIGFuZCBzZXR0aW5nIGF0dHJpYnV0ZXMgdGhyb3VnaCBzZXRBdHRyaWJ1dGUgZXRjLCB0aGlzIGlzIGhlbHBmdWxcblx0XHRhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soYXR0ciwgX29sZFZhbHVlLCBuZXdWYWx1ZSkge1xuXHRcdFx0aWYgKHRoaXMuJCRyKSByZXR1cm47XG5cdFx0XHRhdHRyID0gdGhpcy4kJGdfcChhdHRyKTtcblx0XHRcdHRoaXMuJCRkW2F0dHJdID0gZ2V0X2N1c3RvbV9lbGVtZW50X3ZhbHVlKGF0dHIsIG5ld1ZhbHVlLCB0aGlzLiQkcF9kLCAndG9Qcm9wJyk7XG5cdFx0XHR0aGlzLiQkYz8uJHNldCh7IFthdHRyXTogdGhpcy4kJGRbYXR0cl0gfSk7XG5cdFx0fVxuXG5cdFx0ZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG5cdFx0XHR0aGlzLiQkY24gPSBmYWxzZTtcblx0XHRcdC8vIEluIGEgbWljcm90YXNrLCBiZWNhdXNlIHRoaXMgY291bGQgYmUgYSBtb3ZlIHdpdGhpbiB0aGUgRE9NXG5cdFx0XHRQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLiQkY24pIHtcblx0XHRcdFx0XHR0aGlzLiQkYy4kZGVzdHJveSgpO1xuXHRcdFx0XHRcdHRoaXMuJCRjID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQkJGdfcChhdHRyaWJ1dGVfbmFtZSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0T2JqZWN0LmtleXModGhpcy4kJHBfZCkuZmluZChcblx0XHRcdFx0XHQoa2V5KSA9PlxuXHRcdFx0XHRcdFx0dGhpcy4kJHBfZFtrZXldLmF0dHJpYnV0ZSA9PT0gYXR0cmlidXRlX25hbWUgfHxcblx0XHRcdFx0XHRcdCghdGhpcy4kJHBfZFtrZXldLmF0dHJpYnV0ZSAmJiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gYXR0cmlidXRlX25hbWUpXG5cdFx0XHRcdCkgfHwgYXR0cmlidXRlX25hbWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgQ3VzdG9tRWxlbWVudFByb3BEZWZpbml0aW9uPn0gcHJvcHNfZGVmaW5pdGlvblxuICogQHBhcmFtIHsndG9BdHRyaWJ1dGUnIHwgJ3RvUHJvcCd9IFt0cmFuc2Zvcm1dXG4gKi9cbmZ1bmN0aW9uIGdldF9jdXN0b21fZWxlbWVudF92YWx1ZShwcm9wLCB2YWx1ZSwgcHJvcHNfZGVmaW5pdGlvbiwgdHJhbnNmb3JtKSB7XG5cdGNvbnN0IHR5cGUgPSBwcm9wc19kZWZpbml0aW9uW3Byb3BdPy50eXBlO1xuXHR2YWx1ZSA9IHR5cGUgPT09ICdCb29sZWFuJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJyA/IHZhbHVlICE9IG51bGwgOiB2YWx1ZTtcblx0aWYgKCF0cmFuc2Zvcm0gfHwgIXByb3BzX2RlZmluaXRpb25bcHJvcF0pIHtcblx0XHRyZXR1cm4gdmFsdWU7XG5cdH0gZWxzZSBpZiAodHJhbnNmb3JtID09PSAndG9BdHRyaWJ1dGUnKSB7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlICdPYmplY3QnOlxuXHRcdFx0Y2FzZSAnQXJyYXknOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/IG51bGwgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG5cdFx0XHRjYXNlICdCb29sZWFuJzpcblx0XHRcdFx0cmV0dXJuIHZhbHVlID8gJycgOiBudWxsO1xuXHRcdFx0Y2FzZSAnTnVtYmVyJzpcblx0XHRcdFx0cmV0dXJuIHZhbHVlID09IG51bGwgPyBudWxsIDogdmFsdWU7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0Y2FzZSAnT2JqZWN0Jzpcblx0XHRcdGNhc2UgJ0FycmF5Jzpcblx0XHRcdFx0cmV0dXJuIHZhbHVlICYmIEpTT04ucGFyc2UodmFsdWUpO1xuXHRcdFx0Y2FzZSAnQm9vbGVhbic6XG5cdFx0XHRcdHJldHVybiB2YWx1ZTsgLy8gY29udmVyc2lvbiBhbHJlYWR5IGhhbmRsZWQgYWJvdmVcblx0XHRcdGNhc2UgJ051bWJlcic6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSAhPSBudWxsID8gK3ZhbHVlIDogdmFsdWU7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogVHVybiBhIFN2ZWx0ZSBjb21wb25lbnQgaW50byBhIGN1c3RvbSBlbGVtZW50LlxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHVibGljLmpzJykuQ29tcG9uZW50VHlwZX0gQ29tcG9uZW50ICBBIFN2ZWx0ZSBjb21wb25lbnQgY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgQ3VzdG9tRWxlbWVudFByb3BEZWZpbml0aW9uPn0gcHJvcHNfZGVmaW5pdGlvbiAgVGhlIHByb3BzIHRvIG9ic2VydmVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHNsb3RzICBUaGUgc2xvdHMgdG8gY3JlYXRlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhY2Nlc3NvcnMgIE90aGVyIGFjY2Vzc29ycyBiZXNpZGVzIHRoZSBvbmVzIGZvciBwcm9wcyB0aGUgY29tcG9uZW50IGhhc1xuICogQHBhcmFtIHtib29sZWFufSB1c2Vfc2hhZG93X2RvbSAgV2hldGhlciB0byB1c2Ugc2hhZG93IERPTVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX2N1c3RvbV9lbGVtZW50KFxuXHRDb21wb25lbnQsXG5cdHByb3BzX2RlZmluaXRpb24sXG5cdHNsb3RzLFxuXHRhY2Nlc3NvcnMsXG5cdHVzZV9zaGFkb3dfZG9tXG4pIHtcblx0Y29uc3QgQ2xhc3MgPSBjbGFzcyBleHRlbmRzIFN2ZWx0ZUVsZW1lbnQge1xuXHRcdGNvbnN0cnVjdG9yKCkge1xuXHRcdFx0c3VwZXIoQ29tcG9uZW50LCBzbG90cywgdXNlX3NoYWRvd19kb20pO1xuXHRcdFx0dGhpcy4kJHBfZCA9IHByb3BzX2RlZmluaXRpb247XG5cdFx0fVxuXHRcdHN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCkge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKHByb3BzX2RlZmluaXRpb24pLm1hcCgoa2V5KSA9PlxuXHRcdFx0XHQocHJvcHNfZGVmaW5pdGlvbltrZXldLmF0dHJpYnV0ZSB8fCBrZXkpLnRvTG93ZXJDYXNlKClcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXHRPYmplY3Qua2V5cyhwcm9wc19kZWZpbml0aW9uKS5mb3JFYWNoKChwcm9wKSA9PiB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KENsYXNzLnByb3RvdHlwZSwgcHJvcCwge1xuXHRcdFx0Z2V0KCkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy4kJGMgJiYgcHJvcCBpbiB0aGlzLiQkYyA/IHRoaXMuJCRjW3Byb3BdIDogdGhpcy4kJGRbcHJvcF07XG5cdFx0XHR9LFxuXHRcdFx0c2V0KHZhbHVlKSB7XG5cdFx0XHRcdHZhbHVlID0gZ2V0X2N1c3RvbV9lbGVtZW50X3ZhbHVlKHByb3AsIHZhbHVlLCBwcm9wc19kZWZpbml0aW9uKTtcblx0XHRcdFx0dGhpcy4kJGRbcHJvcF0gPSB2YWx1ZTtcblx0XHRcdFx0dGhpcy4kJGM/LiRzZXQoeyBbcHJvcF06IHZhbHVlIH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblx0YWNjZXNzb3JzLmZvckVhY2goKGFjY2Vzc29yKSA9PiB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KENsYXNzLnByb3RvdHlwZSwgYWNjZXNzb3IsIHtcblx0XHRcdGdldCgpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuJCRjPy5bYWNjZXNzb3JdO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblx0Q29tcG9uZW50LmVsZW1lbnQgPSAvKiogQHR5cGUge2FueX0gKi8gKENsYXNzKTtcblx0cmV0dXJuIENsYXNzO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFN2ZWx0ZSBjb21wb25lbnRzLiBVc2VkIHdoZW4gZGV2PWZhbHNlLlxuICpcbiAqIEB0ZW1wbGF0ZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW1Byb3BzPWFueV1cbiAqIEB0ZW1wbGF0ZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW0V2ZW50cz1hbnldXG4gKi9cbmV4cG9ydCBjbGFzcyBTdmVsdGVDb21wb25lbnQge1xuXHQvKipcblx0ICogIyMjIFBSSVZBVEUgQVBJXG5cdCAqXG5cdCAqIERvIG5vdCB1c2UsIG1heSBjaGFuZ2UgYXQgYW55IHRpbWVcblx0ICpcblx0ICogQHR5cGUge2FueX1cblx0ICovXG5cdCQkID0gdW5kZWZpbmVkO1xuXHQvKipcblx0ICogIyMjIFBSSVZBVEUgQVBJXG5cdCAqXG5cdCAqIERvIG5vdCB1c2UsIG1heSBjaGFuZ2UgYXQgYW55IHRpbWVcblx0ICpcblx0ICogQHR5cGUge2FueX1cblx0ICovXG5cdCQkc2V0ID0gdW5kZWZpbmVkO1xuXG5cdC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cblx0JGRlc3Ryb3koKSB7XG5cdFx0ZGVzdHJveV9jb21wb25lbnQodGhpcywgMSk7XG5cdFx0dGhpcy4kZGVzdHJveSA9IG5vb3A7XG5cdH1cblxuXHQvKipcblx0ICogQHRlbXBsYXRlIHtFeHRyYWN0PGtleW9mIEV2ZW50cywgc3RyaW5nPn0gS1xuXHQgKiBAcGFyYW0ge0t9IHR5cGVcblx0ICogQHBhcmFtIHsoKGU6IEV2ZW50c1tLXSkgPT4gdm9pZCkgfCBudWxsIHwgdW5kZWZpbmVkfSBjYWxsYmFja1xuXHQgKiBAcmV0dXJucyB7KCkgPT4gdm9pZH1cblx0ICovXG5cdCRvbih0eXBlLCBjYWxsYmFjaykge1xuXHRcdGlmICghaXNfZnVuY3Rpb24oY2FsbGJhY2spKSB7XG5cdFx0XHRyZXR1cm4gbm9vcDtcblx0XHR9XG5cdFx0Y29uc3QgY2FsbGJhY2tzID0gdGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gfHwgKHRoaXMuJCQuY2FsbGJhY2tzW3R5cGVdID0gW10pO1xuXHRcdGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0Y29uc3QgaW5kZXggPSBjYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG5cdFx0XHRpZiAoaW5kZXggIT09IC0xKSBjYWxsYmFja3Muc3BsaWNlKGluZGV4LCAxKTtcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7UGFydGlhbDxQcm9wcz59IHByb3BzXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0JHNldChwcm9wcykge1xuXHRcdGlmICh0aGlzLiQkc2V0ICYmICFpc19lbXB0eShwcm9wcykpIHtcblx0XHRcdHRoaXMuJCQuc2tpcF9ib3VuZCA9IHRydWU7XG5cdFx0XHR0aGlzLiQkc2V0KHByb3BzKTtcblx0XHRcdHRoaXMuJCQuc2tpcF9ib3VuZCA9IGZhbHNlO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEN1c3RvbUVsZW1lbnRQcm9wRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthdHRyaWJ1dGVdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtyZWZsZWN0XVxuICogQHByb3BlcnR5IHsnU3RyaW5nJ3wnQm9vbGVhbid8J051bWJlcid8J0FycmF5J3wnT2JqZWN0J30gW3R5cGVdXG4gKi9cbiIsICIvLyBnZW5lcmF0ZWQgZHVyaW5nIHJlbGVhc2UsIGRvIG5vdCBtb2RpZnlcblxuLyoqXG4gKiBUaGUgY3VycmVudCB2ZXJzaW9uLCBhcyBzZXQgaW4gcGFja2FnZS5qc29uLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1jb21waWxlciNzdmVsdGUtdmVyc2lvblxuICogQHR5cGUge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnNC4wLjUnO1xuZXhwb3J0IGNvbnN0IFBVQkxJQ19WRVJTSU9OID0gJzQnO1xuIiwgImltcG9ydCB7IFBVQkxJQ19WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3ZlcnNpb24uanMnO1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpXG5cdC8vIEB0cy1pZ25vcmVcblx0KHdpbmRvdy5fX3N2ZWx0ZSB8fCAod2luZG93Ll9fc3ZlbHRlID0geyB2OiBuZXcgU2V0KCkgfSkpLnYuYWRkKFBVQkxJQ19WRVJTSU9OKTtcbiIsICJpbXBvcnQgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY29uc3QgUVVFUllfVFlQRVMgPSBbXCJEZWZhdWx0XCIsIFwiRGF0YXZpZXdcIiwgXCJSZWdleFwiXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFF1ZXJ5VHlwZSA9ICh0eXBlb2YgUVVFUllfVFlQRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBPUEVOX1RZUEVTID0gW1wiQWN0aXZlIExlYWZcIiwgXCJOZXcgTGVhZlwiLCBcIk5ldyBXaW5kb3dcIl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBPcGVuVHlwZSA9ICh0eXBlb2YgT1BFTl9UWVBFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFFVRVJZX09QRU5fVFlQRVMgPSBbXCJEZWZhdWx0XCIsIFwiQWN0aXZlIExlYWZcIiwgXCJOZXcgTGVhZlwiLCBcIk5ldyBXaW5kb3dcIl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBRdWVyeU9wZW5UeXBlID0gKHR5cGVvZiBRVUVSWV9PUEVOX1RZUEVTKVtudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5IHtcblx0aWQ6IHN0cmluZztcblx0bmFtZTogc3RyaW5nO1xuXHRxdWVyeTogc3RyaW5nO1xuXHR0eXBlOiBRdWVyeVR5cGU7XG5cdGNyZWF0ZUNvbW1hbmQ6IGJvb2xlYW47XG5cdHVzZURpc2FibGVkRm9sZGVyczogYm9vbGVhbjtcblx0b3BlblR5cGU6IFF1ZXJ5T3BlblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkRGVmYXVsdFF1ZXJ5IHtcblx0cGF0aDogc3RyaW5nO1xuXHRmaWxlOiBzdHJpbmc7XG5cdHRhZ3M6IFNlYXJjaFRhZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFRhZyB7XG5cdGluY2x1ZGVkOiBib29sZWFuO1xuXHR0YWc6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUmFuZG9tTm90ZVJlc3VsdCA9IFRGaWxlW107XG4iLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cblx0aW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwic3JjL3R5cGVzXCI7XG5cblx0ZXhwb3J0IGxldCBxdWVyaWVzOiBRdWVyeVtdO1xuXHRleHBvcnQgbGV0IGhhbmRsZVN1Ym1pdDogKHF1ZXJ5OiBRdWVyeSkgPT4gdm9pZDtcblx0bGV0IHNlbGVjdGVkUXVlcnk6IFF1ZXJ5O1xuXG5cdGNvbnN0IGhhbmRsZUZvcm1TdWJtaXQgPSAoKSA9PiB7XG5cdFx0aGFuZGxlU3VibWl0KHNlbGVjdGVkUXVlcnkpO1xuXHR9O1xuPC9zY3JpcHQ+XG5cbjxoMz5TZWxlY3QgUmFuZG9tIE5vdGUgUXVlcnk8L2gzPlxuXG57I2lmIHF1ZXJpZXMubGVuZ3RoID4gMH1cblx0PGZvcm0gb246c3VibWl0fHByZXZlbnREZWZhdWx0PXtoYW5kbGVGb3JtU3VibWl0fT5cblx0XHQ8c2VsZWN0IGNsYXNzPVwiZHJvcGRvd25cIiBiaW5kOnZhbHVlPXtzZWxlY3RlZFF1ZXJ5fT5cblx0XHRcdHsjZWFjaCBxdWVyaWVzIGFzIHF1ZXJ5fVxuXHRcdFx0XHQ8b3B0aW9uIHZhbHVlPXtxdWVyeX0+e3F1ZXJ5Lm5hbWV9PC9vcHRpb24+XG5cdFx0XHR7L2VhY2h9XG5cdFx0PC9zZWxlY3Q+XG5cdFx0PGJ1dHRvbiBjbGFzcz1cIm1vZC1jdGFcIiB0eXBlPVwic3VibWl0XCI+RmluZCBSYW5kb20gTm90ZTwvYnV0dG9uPlxuXHQ8L2Zvcm0+XG57OmVsc2V9XG5cdDxwIGNsYXNzPVwic2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uXCI+XG5cdFx0R28gdG8gc2V0dGluZ3MgdGFiIHRvIG1ha2Ugc2VhcmNoIHF1ZXJpZXMuXG5cdDwvcD5cbnsvaWZ9XG5cbjxzdHlsZT5cblx0Zm9ybSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMWVtO1xuXHR9XG5cblx0YnV0dG9uIHtcblx0XHRtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuXHR9XG48L3N0eWxlPlxuIiwgImltcG9ydCB7IE5vdGljZSwgVEFic3RyYWN0RmlsZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGdldEFQSSB9IGZyb20gXCJvYnNpZGlhbi1kYXRhdmlld1wiO1xuaW1wb3J0IEFkdmFuY2VkUmFuZG9tTm90ZSBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgdHlwZSB7XG5cdFByb2Nlc3NlZERlZmF1bHRRdWVyeSxcblx0UXVlcnksXG5cdFJhbmRvbU5vdGVSZXN1bHQsXG5cdFNlYXJjaFRhZyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldFRhZ1N0cmluZywgZ2V0VGFnU3RyaW5ncyB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VhcmNoIHtcblx0cGx1Z2luOiBBZHZhbmNlZFJhbmRvbU5vdGU7XG5cblx0Y29uc3RydWN0b3IocGx1Z2luOiBBZHZhbmNlZFJhbmRvbU5vdGUpIHtcblx0XHR0aGlzLnBsdWdpbiA9IHBsdWdpbjtcblx0fVxuXG5cdGFzeW5jIHNlYXJjaChxdWVyeTogUXVlcnkpOiBQcm9taXNlPFJhbmRvbU5vdGVSZXN1bHQ+IHtcblx0XHQvLyBGaW5kIGZpbGVzIHRoYXQgbWF0Y2ggcXVlcnlcblx0XHRsZXQgcmVzdWx0OiBURmlsZVtdID0gW107XG5cdFx0aWYgKHF1ZXJ5LnR5cGUgPT09IFwiRGF0YXZpZXdcIikge1xuXHRcdFx0Y29uc3QgYXBpID0gZ2V0QVBJKCk7XG5cdFx0XHRpZiAoIWFwaSkge1xuXHRcdFx0XHRuZXcgTm90aWNlKFxuXHRcdFx0XHRcdFwiQWR2YW5jZWQgUmFuZG9tIE5vdGU6IERhdGF2aWV3IEFQSSBjb3VsZCBub3QgYmUgZm91bmQsIGlzIERhdGF2aWV3IGluc3RhbGxlZD9cIlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gW107XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGRhdGF2aWV3UmVzdWx0ID0gYXdhaXQgYXBpPy5xdWVyeShxdWVyeS5xdWVyeSk7XG5cblx0XHRcdGlmICghZGF0YXZpZXdSZXN1bHQgfHwgIWRhdGF2aWV3UmVzdWx0Py5zdWNjZXNzZnVsKSB7XG5cdFx0XHRcdG5ldyBOb3RpY2UoXG5cdFx0XHRcdFx0XCJBZHZhbmNlZCBSYW5kb20gTm90ZTogRXJyb3IgcnVubmluZyBkYXRhdmlldyBxdWVyeVwiXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRhdGF2aWV3UmVzdWx0LnZhbHVlLnR5cGUgIT09IFwibGlzdFwiKSB7XG5cdFx0XHRcdG5ldyBOb3RpY2UoXG5cdFx0XHRcdFx0XCJBZHZhbmNlZCBSYW5kb20gTm90ZTogRGF0YXZpZXcgcXVlcnkgaXMgbm90IGEgbGlzdFwiXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblxuXHRcdFx0cmVzdWx0ID0gZGF0YXZpZXdSZXN1bHQudmFsdWUudmFsdWVzXG5cdFx0XHRcdC5tYXAoKHZhbHVlKSA9PlxuXHRcdFx0XHRcdHRoaXMucGx1Z2luLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgodmFsdWUucGF0aClcblx0XHRcdFx0KVxuXHRcdFx0XHQuZmlsdGVyKChmaWxlKSA9PiBmaWxlICE9PSBudWxsICYmIGZpbGUgaW5zdGFuY2VvZiBURmlsZSlcblx0XHRcdFx0Lm1hcCgoZmlsZSkgPT4gZmlsZSBhcyBURmlsZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGZpbGVzID0gdGhpcy5wbHVnaW4uYXBwLnZhdWx0LmdldEZpbGVzKCk7XG5cblx0XHRcdGlmIChxdWVyeS50eXBlID09PSBcIlJlZ2V4XCIpIHtcblx0XHRcdFx0Y29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHF1ZXJ5LnF1ZXJ5KTtcblx0XHRcdFx0cmVzdWx0ID0gZmlsZXMuZmlsdGVyKChmaWxlKSA9PiByZWdleC50ZXN0KGZpbGUucGF0aCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVzdWx0ID0gZmlsZXMuZmlsdGVyKChmaWxlKSA9PlxuXHRcdFx0XHRcdHRoaXMuY2hlY2tGaWxlVG9NYXRjaFF1ZXJ5KGZpbGUsIHF1ZXJ5KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEZpbHRlciBkaXNhYmxlZCBmb2xkZXJcblx0XHRpZiAocXVlcnkudXNlRGlzYWJsZWRGb2xkZXJzKSB7XG5cdFx0XHRyZXN1bHQgPSByZXN1bHQuZmlsdGVyKChmaWxlKSA9PiAhdGhpcy5pc0luRGlzYWJsZWRGb2xkZXIoZmlsZSkpO1xuXG5cdFx0XHRpZiAocmVzdWx0Lmxlbmd0aCA8PSAwKSB7XG5cdFx0XHRcdG5ldyBOb3RpY2UoXG5cdFx0XHRcdFx0XCJBZHZhbmNlZCBSYW5kb20gTm90ZTogRm91bmQgemVybyBmaWxlcyBtYXRjaGluZyB5b3VyIHF1ZXJ5LlwiXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHNlYXJjaEZpbGVzID0gYXN5bmMgKGZpbGVzOiBURmlsZVtdLCBkaXNhYmxlZERpc2FibGVkUGF0aHM/OiBzdHJpbmcpOiBQcm9taXNlPFJhbmRvbU5vdGVSZXN1bHQ+ID0+IHtcblx0XHRjb25zdCByZXN1bHQgPSBmaWxlcy5maWx0ZXIoKGZpbGUpID0+ICF0aGlzLmlzSW5EaXNhYmxlZEZvbGRlcihmaWxlLCBkaXNhYmxlZERpc2FibGVkUGF0aHMpKTtcblxuXHRcdGlmIChyZXN1bHQubGVuZ3RoIDw9IDApIHtcblx0XHRcdG5ldyBOb3RpY2UoXG5cdFx0XHRcdFwiQWR2YW5jZWQgUmFuZG9tIE5vdGU6IEZvdW5kIHplcm8gZmlsZXMuXCJcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHRwcm9jZXNzUXVlcnkocXVlcnk6IFF1ZXJ5KTogUHJvY2Vzc2VkRGVmYXVsdFF1ZXJ5IHtcblx0XHRjb25zdCByZWdleFJlc3VsdCA9IHtcblx0XHRcdHBhdGg6IC9wYXRoOiguKj8pKHRhZzp8ZmlsZTp8JCkvLmV4ZWMocXVlcnkucXVlcnkpLFxuXHRcdFx0ZmlsZTogL2ZpbGU6KC4qPykodGFnOnxwYXRoOnwkKS8uZXhlYyhxdWVyeS5xdWVyeSksXG5cdFx0XHR0YWdzOiAvdGFnOiguKj8pKGZpbGU6fHBhdGg6fCQpLy5leGVjKHF1ZXJ5LnF1ZXJ5KSxcblx0XHR9O1xuXG5cdFx0Y29uc3QgcGF0aCA9IHJlZ2V4UmVzdWx0LnBhdGggPyByZWdleFJlc3VsdC5wYXRoWzFdLnRyaW0oKSA6IFwiXCI7XG5cdFx0Y29uc3QgZmlsZSA9IHJlZ2V4UmVzdWx0LmZpbGUgPyByZWdleFJlc3VsdC5maWxlWzFdLnRyaW0oKSA6IFwiXCI7XG5cdFx0Y29uc3QgdGFnczogU2VhcmNoVGFnW10gPSAoXG5cdFx0XHRyZWdleFJlc3VsdC50YWdzID8gcmVnZXhSZXN1bHQudGFnc1sxXS50cmltKCkuc3BsaXQoXCIgXCIpIDogW11cblx0XHQpLm1hcCgodGFnKSA9PiB7XG5cdFx0XHRjb25zdCB0cmltbWVkVGFnID0gdGFnLnRyaW0oKTtcblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aW5jbHVkZWQ6ICF0cmltbWVkVGFnLnN0YXJ0c1dpdGgoXCIhXCIpLFxuXHRcdFx0XHR0YWc6IGdldFRhZ1N0cmluZyh0cmltbWVkVGFnKSxcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0XHRjb25zdCBwcm9jZXNzZWRRdWVyeTogUHJvY2Vzc2VkRGVmYXVsdFF1ZXJ5ID0ge1xuXHRcdFx0cGF0aCxcblx0XHRcdGZpbGUsXG5cdFx0XHR0YWdzLFxuXHRcdH07XG5cblx0XHRyZXR1cm4gcHJvY2Vzc2VkUXVlcnk7XG5cdH1cblxuXHRjaGVja0ZpbGVUb01hdGNoUXVlcnkoZmlsZTogVEZpbGUsIHF1ZXJ5OiBRdWVyeSkge1xuXHRcdC8vIFByb2Nlc3MgcXVlcnlcblx0XHRjb25zdCBwcm9jZXNzZWRRdWVyeSA9IHRoaXMucHJvY2Vzc1F1ZXJ5KHF1ZXJ5KTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5jaGVja1RhZ3NXaXRoRmlsZShwcm9jZXNzZWRRdWVyeS50YWdzLCBmaWxlKSAmJlxuXHRcdFx0dGhpcy5jaGVja0ZpbGVuYW1lV2l0aEZpbGUocHJvY2Vzc2VkUXVlcnkuZmlsZSwgZmlsZSkgJiZcblx0XHRcdHRoaXMuY2hlY2tQYXRoV2l0aEZpbGUocHJvY2Vzc2VkUXVlcnkucGF0aCwgZmlsZSlcblx0XHQpO1xuXHR9XG5cblx0Y2hlY2tUYWdzV2l0aEZpbGUodGFnczogU2VhcmNoVGFnW10sIGZpbGU6IFRGaWxlKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRhZ3MubGVuZ3RoIDw9IDApIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gZWxzZSBpZiAoZmlsZS5leHRlbnNpb24gIT09IFwibWRcIikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZpbGVDYWNoZSA9IHRoaXMucGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcblxuXHRcdC8vIEdldCBmaWxlIHRhZ3Ncblx0XHRjb25zdCBmaWxlQ2FjaGVUYWdzID0gZmlsZUNhY2hlPy50YWdzID8/IFtdO1xuXHRcdGxldCBmcm9udG1hdHRlclRhZ3MgPSBmaWxlQ2FjaGU/LmZyb250bWF0dGVyPy50YWdzID8/IFtdO1xuXHRcdGNvbnN0IGZyb250bWF0dGVyVGFnID0gZmlsZUNhY2hlPy5mcm9udG1hdHRlcj8udGFnO1xuXG5cdFx0aWYgKGZyb250bWF0dGVyVGFnc1swXSA9PT0gbnVsbCkgZnJvbnRtYXR0ZXJUYWdzID0gW107XG5cblx0XHQvLyBDb21iaW5lIHRhZ3Ncblx0XHRsZXQgZmlsZVRhZ3MgPSBmaWxlQ2FjaGVUYWdzLm1hcCgodGFnQ2FjaGUpID0+IHRhZ0NhY2hlLnRhZyk7XG5cdFx0ZmlsZVRhZ3MgPSBmaWxlVGFncy5jb25jYXQoZ2V0VGFnU3RyaW5ncyhmcm9udG1hdHRlclRhZ3MpKTtcblx0XHRpZiAoZnJvbnRtYXR0ZXJUYWcpIHtcblx0XHRcdGZpbGVUYWdzLnB1c2goZ2V0VGFnU3RyaW5nKGZyb250bWF0dGVyVGFnKSk7XG5cdFx0fVxuXG5cdFx0aWYgKGZpbGVUYWdzLmxlbmd0aCA8PSAwICYmIHRhZ3MubGVuZ3RoID4gMCkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0Ly8gR2V0IGV4Y2x1ZGVkIGFuZCBpbmNsdWRlZCB0YWdzXG5cdFx0Y29uc3QgaW5jbHVkZWRUYWdzID0gdGFncy5maWx0ZXIoKHRhZykgPT4gdGFnLmluY2x1ZGVkKTtcblx0XHRjb25zdCBleGNsdWRlZFRhZ3MgPSB0YWdzLmZpbHRlcigodGFnKSA9PiAhdGFnLmluY2x1ZGVkKTtcblx0XHRsZXQgaW5jbHVkZXNUYWdzID0gZmFsc2U7XG5cdFx0bGV0IGV4Y2x1ZGVzVGFncyA9IGZhbHNlO1xuXG5cdFx0Ly8gQ2hlY2sgaW5jbHVkZWQgdGFnc1xuXHRcdGluY2x1ZGVzVGFncyA9XG5cdFx0XHQoaW5jbHVkZWRUYWdzICYmXG5cdFx0XHRcdGZpbGVUYWdzICYmXG5cdFx0XHRcdGluY2x1ZGVkVGFncy5ldmVyeSgoc2VhcmNoVGFnKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGZpbGVUYWdzLnNvbWUoKGZpbGVUYWcpID0+XG5cdFx0XHRcdFx0XHRmaWxlVGFnLmluY2x1ZGVzKHNlYXJjaFRhZy50YWcpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSkpIHx8XG5cdFx0XHQhaW5jbHVkZWRUYWdzO1xuXG5cdFx0Ly8gQ2hlY2sgZXhjbHVkZWQgdGFza3Ncblx0XHRleGNsdWRlc1RhZ3MgPVxuXHRcdFx0KGV4Y2x1ZGVkVGFncyAmJlxuXHRcdFx0XHRmaWxlVGFncyAmJlxuXHRcdFx0XHRleGNsdWRlZFRhZ3MuZXZlcnkoKHNlYXJjaFRhZykgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBmaWxlVGFncy5ldmVyeShcblx0XHRcdFx0XHRcdChmaWxlVGFnKSA9PiAhZmlsZVRhZy5pbmNsdWRlcyhzZWFyY2hUYWcudGFnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pKSB8fFxuXHRcdFx0KGV4Y2x1ZGVkVGFncyAmJiAhZmlsZVRhZ3MpIHx8XG5cdFx0XHQhZXhjbHVkZWRUYWdzO1xuXG5cdFx0cmV0dXJuIGluY2x1ZGVzVGFncyAmJiBleGNsdWRlc1RhZ3M7XG5cdH1cblxuXHRjaGVja0ZpbGVuYW1lV2l0aEZpbGUoZmlsZW5hbWU6IHN0cmluZywgZmlsZTogVEZpbGUpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmlsZS5uYW1lLmluY2x1ZGVzKGZpbGVuYW1lKTtcblx0fVxuXG5cdGNoZWNrUGF0aFdpdGhGaWxlKHBhdGg6IHN0cmluZywgZmlsZTogVEZpbGUpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0KHBhdGggIT09IFwiL1wiICYmIGZpbGUucGF0aC5pbmNsdWRlcyhwYXRoKSkgfHxcblx0XHRcdChwYXRoID09PSBcIi9cIiAmJiAhZmlsZS5wYXRoLmluY2x1ZGVzKHBhdGgpKVxuXHRcdCk7XG5cdH1cblxuXHRpc0luRGlzYWJsZWRGb2xkZXIoZmlsZTogVEFic3RyYWN0RmlsZSwgZGlzYWJsZWREaXNhYmxlZFBhdGhzPzogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLmRpc2FibGVkRm9sZGVycyA9PT0gXCJcIikgcmV0dXJuIGZhbHNlO1xuXG5cdFx0cmV0dXJuIHRoaXMucGx1Z2luLnNldHRpbmdzLmRpc2FibGVkRm9sZGVyc1xuXHRcdFx0LnNwbGl0KC9cXHI/XFxuLylcblx0XHRcdC5zb21lKChkaXNhYmxlZEZvbGRlcikgPT4ge1xuXHRcdFx0XHRjb25zdCB0cmltbWVkRm9sZGVyID0gZGlzYWJsZWRGb2xkZXIudHJpbSgpO1xuXHRcdFx0XHRpZiAoZGlzYWJsZWREaXNhYmxlZFBhdGhzICYmIHRyaW1tZWRGb2xkZXIgPT09IGRpc2FibGVkRGlzYWJsZWRQYXRocykgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRyZXR1cm4gdHJpbW1lZEZvbGRlciAmJiBmaWxlLnBhdGguc3RhcnRzV2l0aCh0cmltbWVkRm9sZGVyKTtcblx0XHRcdH0pO1xuXHR9XG59XG4iLCAiaW1wb3J0IHtcblx0QXBwLFxuXHRUQWJzdHJhY3RGaWxlLFxuXHRURmlsZSxcblx0VEZvbGRlcixcblx0dHlwZSBQbHVnaW5NYW5pZmVzdCxcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IEFkdmFuY2VkUmFuZG9tTm90ZSBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgeyBPUEVOX1RZUEVTLCB0eXBlIFF1ZXJ5IH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVFbGVtZW50SW5BcnJheTxUPihcblx0YXJyOiBUW10sXG5cdGZyb21JbmRleDogbnVtYmVyLFxuXHR0b0luZGV4OiBudW1iZXJcbik6IHZvaWQge1xuXHRpZiAodG9JbmRleCA8IDAgfHwgdG9JbmRleCA9PT0gYXJyLmxlbmd0aCkge1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBlbGVtZW50ID0gYXJyW2Zyb21JbmRleF07XG5cdGFycltmcm9tSW5kZXhdID0gYXJyW3RvSW5kZXhdO1xuXHRhcnJbdG9JbmRleF0gPSBlbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZG9tRWxlbWVudDxUPihhcnI6IFRbXSk6IFQgfCBudWxsIHtcblx0aWYgKGFyci5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG5cdGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyLmxlbmd0aCk7XG5cdHJldHVybiBhcnJbaW5kZXhdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkT3JSZW1vdmVRdWVyeUNvbW1hbmQoXG5cdHBsdWdpbjogQWR2YW5jZWRSYW5kb21Ob3RlLFxuXHRxdWVyeTogUXVlcnlcbikge1xuXHRpZiAocXVlcnkuY3JlYXRlQ29tbWFuZCkge1xuXHRcdHBsdWdpbi5hZGRRdWVyeUNvbW1hbmQocXVlcnkpO1xuXHR9IGVsc2Uge1xuXHRcdHBsdWdpbi5yZW1vdmVRdWVyeUNvbW1hbmQocXVlcnkpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kT2JzaWRpYW5Db21tYW5kKGFwcDogQXBwLCBjb21tYW5kSWQ6IHN0cmluZykge1xuXHQvLyBAdHMtaWdub3JlXG5cdHJldHVybiBhcHAuY29tbWFuZHMuZmluZENvbW1hbmQoY29tbWFuZElkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZU9ic2lkaWFuQ29tbWFuZChhcHA6IEFwcCwgY29tbWFuZElkOiBzdHJpbmcpIHtcblx0aWYgKGZpbmRPYnNpZGlhbkNvbW1hbmQoYXBwLCBjb21tYW5kSWQpKSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGRlbGV0ZSBhcHAuY29tbWFuZHMuY29tbWFuZHNbY29tbWFuZElkXTtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0ZGVsZXRlIGFwcC5jb21tYW5kcy5lZGl0b3JDb21tYW5kc1tjb21tYW5kSWRdO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbHVnaW5Db21tYW5kSWQoXG5cdGNvbW1hbmRJZDogc3RyaW5nLFxuXHRtYW5pZmVzdDogUGx1Z2luTWFuaWZlc3Rcbik6IHN0cmluZyB7XG5cdHJldHVybiBtYW5pZmVzdC5pZCArIFwiOlwiICsgY29tbWFuZElkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnU3RyaW5nKHRhZzogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKHRhZy5zdGFydHNXaXRoKFwiISNcIikpIHtcblx0XHRyZXR1cm4gdGFnLnJlcGxhY2UoXCIhXCIsIFwiXCIpO1xuXHR9IGVsc2UgaWYgKHRhZy5zdGFydHNXaXRoKFwiIVwiKSkge1xuXHRcdHJldHVybiB0YWcucmVwbGFjZShcIiFcIiwgXCIjXCIpO1xuXHR9IGVsc2UgaWYgKHRhZy5zdGFydHNXaXRoKFwiI1wiKSkge1xuXHRcdHJldHVybiB0YWc7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFwiI1wiICsgdGFnO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWdTdHJpbmdzKHRhZ3M6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuXHRyZXR1cm4gdGFncy5tYXAoKHRhZykgPT4gZ2V0VGFnU3RyaW5nKHRhZykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVlcnlDb21tYW5kSWQoKSB7XG5cdHJldHVybiBcInF1ZXJ5OlwiICsgdXVpZHY0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVRdWVyeShuYW1lOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcpOiBRdWVyeSB7XG5cdHJldHVybiB7XG5cdFx0aWQ6IGdldFF1ZXJ5Q29tbWFuZElkKCksXG5cdFx0bmFtZSxcblx0XHRxdWVyeSxcblx0XHR0eXBlOiBcIkRlZmF1bHRcIixcblx0XHRjcmVhdGVDb21tYW5kOiBmYWxzZSxcblx0XHR1c2VEaXNhYmxlZEZvbGRlcnM6IHRydWUsXG5cdFx0b3BlblR5cGU6IFwiRGVmYXVsdFwiXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdWxsUGF0aChmaWxlOiBURmlsZSk6IHN0cmluZyB7XG5cdHJldHVybiBmaWxlLnBhdGggKyBcIi9cIiArIGZpbGUubmFtZSArIFwiLlwiICsgZmlsZS5wYXRoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbkZpbGVzKGFic3RyYWN0RmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6IFRGaWxlW10ge1xuXHRyZXR1cm4gYWJzdHJhY3RGaWxlcy5tYXAoYWJzdHJhY3RGaWxlID0+IGZsYXR0ZW5GaWxlKGFic3RyYWN0RmlsZSkpLmZsYXQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5GaWxlKGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IFRGaWxlW10ge1xuXHRpZiAoYWJzdHJhY3RGaWxlIGluc3RhbmNlb2YgVEZvbGRlcikge1xuXHRcdHJldHVybiBmbGF0dGVuRmlsZXMoYWJzdHJhY3RGaWxlLmNoaWxkcmVuKTtcblx0fVxuXHRcblx0cmV0dXJuIFthYnN0cmFjdEZpbGVdIGFzIFRGaWxlW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1JlY29yZChhcnI6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG5cdGNvbnN0IHJlY29yZE9iamVjdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRhcnIuZm9yRWFjaChpdGVtID0+IHJlY29yZE9iamVjdFtpdGVtXSA9IGl0ZW0pXG5cdHJldHVybiByZWNvcmRPYmplY3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVuVHlwZUxhYmVscygpOiBzdHJpbmdbXSB7XG5cdHJldHVybiBPUEVOX1RZUEVTLm1hcCgoaXRlbSkgPT4gaXRlbSk7XG59IiwgIi8vIFVuaXF1ZSBJRCBjcmVhdGlvbiByZXF1aXJlcyBhIGhpZ2ggcXVhbGl0eSByYW5kb20gIyBnZW5lcmF0b3IuIEluIHRoZSBicm93c2VyIHdlIHRoZXJlZm9yZVxuLy8gcmVxdWlyZSB0aGUgY3J5cHRvIEFQSSBhbmQgZG8gbm90IHN1cHBvcnQgYnVpbHQtaW4gZmFsbGJhY2sgdG8gbG93ZXIgcXVhbGl0eSByYW5kb20gbnVtYmVyXG4vLyBnZW5lcmF0b3JzIChsaWtlIE1hdGgucmFuZG9tKCkpLlxubGV0IGdldFJhbmRvbVZhbHVlcztcbmNvbnN0IHJuZHM4ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcm5nKCkge1xuICAvLyBsYXp5IGxvYWQgc28gdGhhdCBlbnZpcm9ubWVudHMgdGhhdCBuZWVkIHRvIHBvbHlmaWxsIGhhdmUgYSBjaGFuY2UgdG8gZG8gc29cbiAgaWYgKCFnZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBnZXRSYW5kb21WYWx1ZXMgbmVlZHMgdG8gYmUgaW52b2tlZCBpbiBhIGNvbnRleHQgd2hlcmUgXCJ0aGlzXCIgaXMgYSBDcnlwdG8gaW1wbGVtZW50YXRpb24uXG4gICAgZ2V0UmFuZG9tVmFsdWVzID0gdHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKTtcblxuICAgIGlmICghZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoKSBub3Qgc3VwcG9ydGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkI2dldHJhbmRvbXZhbHVlcy1ub3Qtc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59IiwgImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcbi8qKlxuICogQ29udmVydCBhcnJheSBvZiAxNiBieXRlIHZhbHVlcyB0byBVVUlEIHN0cmluZyBmb3JtYXQgb2YgdGhlIGZvcm06XG4gKiBYWFhYWFhYWC1YWFhYLVhYWFgtWFhYWC1YWFhYWFhYWFhYWFhcbiAqL1xuXG5jb25zdCBieXRlVG9IZXggPSBbXTtcblxuZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICBieXRlVG9IZXgucHVzaCgoaSArIDB4MTAwKS50b1N0cmluZygxNikuc2xpY2UoMSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zYWZlU3RyaW5naWZ5KGFyciwgb2Zmc2V0ID0gMCkge1xuICAvLyBOb3RlOiBCZSBjYXJlZnVsIGVkaXRpbmcgdGhpcyBjb2RlISAgSXQncyBiZWVuIHR1bmVkIGZvciBwZXJmb3JtYW5jZVxuICAvLyBhbmQgd29ya3MgaW4gd2F5cyB5b3UgbWF5IG5vdCBleHBlY3QuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQvcHVsbC80MzRcbiAgcmV0dXJuIChieXRlVG9IZXhbYXJyW29mZnNldCArIDBdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMV1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAyXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDNdXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA1XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDZdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgN11dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA4XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDldXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTBdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTFdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTJdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTNdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTRdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTVdXSkudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KGFyciwgb2Zmc2V0ID0gMCkge1xuICBjb25zdCB1dWlkID0gdW5zYWZlU3RyaW5naWZ5KGFyciwgb2Zmc2V0KTsgLy8gQ29uc2lzdGVuY3kgY2hlY2sgZm9yIHZhbGlkIFVVSUQuICBJZiB0aGlzIHRocm93cywgaXQncyBsaWtlbHkgZHVlIHRvIG9uZVxuICAvLyBvZiB0aGUgZm9sbG93aW5nOlxuICAvLyAtIE9uZSBvciBtb3JlIGlucHV0IGFycmF5IHZhbHVlcyBkb24ndCBtYXAgdG8gYSBoZXggb2N0ZXQgKGxlYWRpbmcgdG9cbiAgLy8gXCJ1bmRlZmluZWRcIiBpbiB0aGUgdXVpZClcbiAgLy8gLSBJbnZhbGlkIGlucHV0IHZhbHVlcyBmb3IgdGhlIFJGQyBgdmVyc2lvbmAgb3IgYHZhcmlhbnRgIGZpZWxkc1xuXG4gIGlmICghdmFsaWRhdGUodXVpZCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZ2lmaWVkIFVVSUQgaXMgaW52YWxpZCcpO1xuICB9XG5cbiAgcmV0dXJuIHV1aWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeTsiLCAiY29uc3QgcmFuZG9tVVVJRCA9IHR5cGVvZiBjcnlwdG8gIT09ICd1bmRlZmluZWQnICYmIGNyeXB0by5yYW5kb21VVUlEICYmIGNyeXB0by5yYW5kb21VVUlELmJpbmQoY3J5cHRvKTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcmFuZG9tVVVJRFxufTsiLCAiaW1wb3J0IG5hdGl2ZSBmcm9tICcuL25hdGl2ZS5qcyc7XG5pbXBvcnQgcm5nIGZyb20gJy4vcm5nLmpzJztcbmltcG9ydCB7IHVuc2FmZVN0cmluZ2lmeSB9IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcblxuZnVuY3Rpb24gdjQob3B0aW9ucywgYnVmLCBvZmZzZXQpIHtcbiAgaWYgKG5hdGl2ZS5yYW5kb21VVUlEICYmICFidWYgJiYgIW9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmF0aXZlLnJhbmRvbVVVSUQoKTtcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBybmRzID0gb3B0aW9ucy5yYW5kb20gfHwgKG9wdGlvbnMucm5nIHx8IHJuZykoKTsgLy8gUGVyIDQuNCwgc2V0IGJpdHMgZm9yIHZlcnNpb24gYW5kIGBjbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkYFxuXG4gIHJuZHNbNl0gPSBybmRzWzZdICYgMHgwZiB8IDB4NDA7XG4gIHJuZHNbOF0gPSBybmRzWzhdICYgMHgzZiB8IDB4ODA7IC8vIENvcHkgYnl0ZXMgdG8gYnVmZmVyLCBpZiBwcm92aWRlZFxuXG4gIGlmIChidWYpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7ICsraSkge1xuICAgICAgYnVmW29mZnNldCArIGldID0gcm5kc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmO1xuICB9XG5cbiAgcmV0dXJuIHVuc2FmZVN0cmluZ2lmeShybmRzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdjQ7IiwgImltcG9ydCB7IEFwcCwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IFF1ZXJ5VmlldyBmcm9tIFwic3JjL2d1aS9xdWVyeUl0ZW0vUXVlcnlWaWV3LnN2ZWx0ZVwiO1xuaW1wb3J0IEFkdmFuY2VkUmFuZG9tTm90ZSBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgeyB0eXBlIE9wZW5UeXBlLCB0eXBlIFF1ZXJ5IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldE9wZW5UeXBlTGFiZWxzLCB0b1JlY29yZCB9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzIHtcblx0cXVlcmllczogQXJyYXk8UXVlcnk+O1xuXHRkaXNhYmxlZEZvbGRlcnM6IHN0cmluZztcblx0ZGVidWc6IGJvb2xlYW47XG5cdG9wZW5UeXBlOiBPcGVuVHlwZTtcblx0c2V0QWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogU2V0dGluZ3MgPSB7XG5cdHF1ZXJpZXM6IFtdLFxuXHRkaXNhYmxlZEZvbGRlcnM6IFwiXCIsXG5cdGRlYnVnOiBmYWxzZSxcblx0b3BlblR5cGU6IFwiQWN0aXZlIExlYWZcIixcblx0c2V0QWN0aXZlOiB0cnVlLFxufTtcblxuZXhwb3J0IGNsYXNzIFNldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcblx0cGx1Z2luOiBBZHZhbmNlZFJhbmRvbU5vdGU7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQWR2YW5jZWRSYW5kb21Ob3RlKSB7XG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xuXHRcdHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXHR9XG5cblx0ZGlzcGxheSgpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRhaW5lckVsLmVtcHR5KCk7XG5cdFx0dGhpcy5hZGRTZXR0aW5nKCk7XG5cdFx0dGhpcy5hZGRRdWVyaWVzU2V0dGluZygpO1xuXHR9XG5cblx0YWRkU2V0dGluZygpIHtcblx0XHQvLyBNYWtlIGZpbGVzIGFjdGl2ZVxuXHRcdG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIk9wZW4gZmlsZXMgYXMgYWN0aXZlXCIpXG5cdFx0XHQuc2V0RGVzYyhcIk1ha2UgZmlsZXMgYWN0aXZlIHdoZW4gdGhleSBhcmUgb3BlbmVkLlwiKVxuXHRcdFx0LmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG5cdFx0XHRcdHRvZ2dsZVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZXRBY3RpdmUpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3Muc2V0QWN0aXZlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gT3BlbiB0eXBlXG5cdFx0bmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiT3BlbiBpblwiKVxuXHRcdFx0LnNldERlc2MoXCJXaGVyZSB0byBvcGVuIGZpbGVzLlwiKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT5cblx0XHRcdFx0ZHJvcGRvd25cblx0XHRcdFx0XHQuYWRkT3B0aW9ucyh0b1JlY29yZChnZXRPcGVuVHlwZUxhYmVscygpKSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3Mub3BlblR5cGUpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3Mub3BlblR5cGUgPSB2YWx1ZSBhcyBPcGVuVHlwZTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHQpO1xuXG5cdFx0Ly8gRGlzYWJsZWQgZm9sZGVycyBzZXR0aW5nXG5cdFx0bmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKFwiRGlzYWJsZWQgZm9sZGVyc1wiKVxuXHRcdFx0LnNldERlc2MoXCJTa2lwcyB0aGVzZSBmb2xkZXJzIHdoZW4gc2VhcmNoaW5nIGZvciBmaWxlcy5cIilcblx0XHRcdC5hZGRUZXh0QXJlYSgodGV4dCkgPT4ge1xuXHRcdFx0XHR0ZXh0LnNldFBsYWNlaG9sZGVyKFwidGVtcGxhdGVzL1wiKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kaXNhYmxlZEZvbGRlcnMpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZGlzYWJsZWRGb2xkZXJzID0gdmFsdWUudHJpbSgpO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGFkZFF1ZXJpZXNTZXR0aW5nKCkge1xuXHRcdC8vIFRpdGxlXG5cdFx0dGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImRpdlwiLCB7XG5cdFx0XHR0ZXh0OiBcIlF1ZXJpZXNcIixcblx0XHRcdGNsczogXCJzZXR0aW5nLWl0ZW0gc2V0dGluZy1pdGVtLWhlYWRpbmdcIixcblx0XHR9KTtcblxuXHRcdC8vIEFkZCBxdWVyeSBsaXN0XG5cdFx0Y29uc3Qgc2V0dGluZyA9IG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpO1xuXHRcdHNldHRpbmcuaW5mb0VsLnJlbW92ZSgpO1xuXHRcdHNldHRpbmcuc2V0dGluZ0VsLnN0eWxlLmRpc3BsYXkgPSBcImJsb2NrXCI7XG5cdFx0bmV3IFF1ZXJ5Vmlldyh7XG5cdFx0XHR0YXJnZXQ6IHNldHRpbmcuc2V0dGluZ0VsLFxuXHRcdFx0cHJvcHM6IHtcblx0XHRcdFx0cGx1Z2luOiB0aGlzLnBsdWdpbixcblx0XHRcdFx0cXVlcmllczogdGhpcy5wbHVnaW4uc2V0dGluZ3MucXVlcmllcyxcblx0XHRcdFx0c2F2ZVF1ZXJpZXM6IGFzeW5jIChxdWVyaWVzOiBRdWVyeVtdKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MucXVlcmllcyA9IHF1ZXJpZXM7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdH0pO1xuXHR9XG59XG4iLCAidmFyIHByZWZpeCA9IFwiZmFzXCI7XG52YXIgZmEwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJzAnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcIjMwXCIsIFwiTTAgMTkyQzAgMTAzLjYgNzEuNiAzMiAxNjAgMzJzMTYwIDcxLjYgMTYwIDE2MFYzMjBjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0MDguNCAwIDMyMFYxOTJ6TTE2MCA5NmMtNTMgMC05NiA0My05NiA5NlYzMjBjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NlYxOTJjMC01My00My05Ni05Ni05NnpcIl1cbn07XG52YXIgZmExID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJzEnLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcIjMxXCIsIFwiTTE2MCA2NGMwLTExLjgtNi41LTIyLjYtMTYuOS0yOC4ycy0yMy01LTMyLjggMS42bC05NiA2NEMtLjUgMTExLjItNC40IDEzMSA1LjQgMTQ1LjhzMjkuNyAxOC43IDQ0LjQgOC45TDk2IDEyMy44VjQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NiA5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNjBWNjR6XCJdXG59O1xudmFyIGZhMiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICcyJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCIzMlwiLCBcIk0xNDIuOSA5NmMtMjEuNSAwLTQyLjIgOC41LTU3LjQgMjMuOEw1NC42IDE1MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0w0MC4yIDc0LjVDNjcuNSA0Ny4zIDEwNC40IDMyIDE0Mi45IDMyQzIyMyAzMiAyODggOTcgMjg4IDE3Ny4xYzAgMzguNS0xNS4zIDc1LjQtNDIuNSAxMDIuNkwxMDkuMyA0MTZIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOUwyMDAuMiAyMzQuNWMxNS4yLTE1LjIgMjMuOC0zNS45IDIzLjgtNTcuNGMwLTQ0LjgtMzYuMy04MS4xLTgxLjEtODEuMXpcIl1cbn07XG52YXIgZmEzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJzMnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcIjMzXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIMjcyYzEzLjIgMCAyNSA4LjEgMjkuOCAyMC40czEuNSAyNi4zLTguMiAzNS4yTDE2Mi4zIDIwOEgxODRjNzUuMSAwIDEzNiA2MC45IDEzNiAxMzZzLTYwLjkgMTM2LTEzNiAxMzZIMTA1LjRDNjMgNDgwIDI0LjIgNDU2IDUuMyA0MTguMWwtMS45LTMuOGMtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDEuOSAzLjhjOC4xIDE2LjMgMjQuOCAyNi41IDQyLjkgMjYuNUgxODRjMzkuOCAwIDcyLTMyLjIgNzItNzJzLTMyLjItNzItNzItNzJIODBjLTEzLjIgMC0yNS04LjEtMjkuOC0yMC40cy0xLjUtMjYuMyA4LjItMzUuMkwxODkuNyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwiXVxufTtcbnZhciBmYTQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnNCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiMzRcIiwgXCJNMTg5IDc3LjZjNy41LTE2IC43LTM1LjEtMTUuMy00Mi42cy0zNS4xLS43LTQyLjYgMTUuM0wzIDMyMi40Yy00LjcgOS45LTMuOSAyMS41IDEuOSAzMC44UzIxIDM2OCAzMiAzNjhIMjU2djgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzY4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMFYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzA0SDgyLjRMMTg5IDc3LjZ6XCJdXG59O1xudmFyIGZhNSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICc1JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCIzNVwiLCBcIk0zMi41IDU4LjNDMzUuMyA0My4xIDQ4LjUgMzIgNjQgMzJIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDkwLjdMNzAuMyAyMDhIMTg0Yzc1LjEgMCAxMzYgNjAuOSAxMzYgMTM2cy02MC45IDEzNi0xMzYgMTM2SDEwMC41Yy0zOS40IDAtNzUuNC0yMi4zLTkzLTU3LjVsLTQuMS04LjJjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlzMzUtMS41IDQyLjkgMTQuM2w0LjEgOC4yYzYuOCAxMy42IDIwLjYgMjIuMSAzNS44IDIyLjFIMTg0YzM5LjggMCA3Mi0zMi4yIDcyLTcycy0zMi4yLTcyLTcyLTcySDMyYy05LjUgMC0xOC41LTQuMi0yNC42LTExLjVzLTguNi0xNi45LTYuOS0yNi4ybDMyLTE3NnpcIl1cbn07XG52YXIgZmE2ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJzYnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcIjM2XCIsIFwiTTIzMi40IDg0LjdjMTEuNC0xMy41IDkuNy0zMy43LTMuOC00NS4xcy0zMy43LTkuNy00NS4xIDMuOEwzOC42IDIxNC43QzE0LjcgMjQyLjkgMS4xIDI3OC40IC4xIDMxNS4yYzAgMS40LS4xIDIuOS0uMSA0LjNjMCAuMiAwIC4zIDAgLjVjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBzMTYwLTcxLjYgMTYwLTE2MGMwLTg1LjUtNjcuMS0xNTUuNC0xNTEuNS0xNTkuOGw2My45LTc1LjZ6TTI1NiAzMjBBOTYgOTYgMCAxIDEgNjQgMzIwYTk2IDk2IDAgMSAxIDE5MiAwelwiXVxufTtcbnZhciBmYTcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnNycsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiMzdcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgyODhjMTEuNSAwIDIyIDYuMSAyNy43IDE2LjFzNS43IDIyLjItLjEgMzIuMWwtMjI0IDM4NGMtOC45IDE1LjMtMjguNSAyMC40LTQzLjggMTEuNXMtMjAuNC0yOC41LTExLjUtNDMuOEwyMzIuMyA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0elwiXVxufTtcbnZhciBmYTggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnOCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiMzhcIiwgXCJNMzA0IDE2MGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgxNDRDNzMuMyAzMiAxNiA4OS4zIDE2IDE2MGMwIDM0LjYgMTMuNyA2NiAzNiA4OUMyMC41IDI3Mi4zIDAgMzA5LjggMCAzNTJjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhoNjRjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC00Mi4yLTIwLjUtNzkuNy01Mi0xMDNjMjIuMy0yMyAzNi01NC40IDM2LTg5ek0xNzYuMSAyODhIMTkyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0SDEyOGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGgxNS45YzAgMCAuMSAwIC4xIDBoMzJjMCAwIC4xIDAgLjEgMHptMC02NGMwIDAgMCAwIDAgMEgxNDRjMCAwIDAgMCAwIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMzUuMy0yOC42IDY0LTY0IDY0elwiXVxufTtcbnZhciBmYTkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnOScsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiMzlcIiwgXCJNNjQgMTkyYTk2IDk2IDAgMSAwIDE5MiAwQTk2IDk2IDAgMSAwIDY0IDE5MnptODcuNSAxNTkuOEM2Ny4xIDM0Ny40IDAgMjc3LjUgMCAxOTJDMCAxMDMuNiA3MS42IDMyIDE2MCAzMnMxNjAgNzEuNiAxNjAgMTYwYzAgMi42LS4xIDUuMy0uMiA3LjljLTEuNyAzNS43LTE1LjIgNzAtMzguNCA5Ny40bC0xNDUgMTcxLjRjLTExLjQgMTMuNS0zMS42IDE1LjItNDUuMSAzLjhzLTE1LjItMzEuNi0zLjgtNDUuMWw2My45LTc1LjZ6XCJdXG59O1xudmFyIGZhRmlsbERyaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbC1kcmlwJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTc2XCIsIFwiTTQxLjQgOS40QzUzLjktMy4xIDc0LjEtMy4xIDg2LjYgOS40TDE2OCA5MC43bDUzLjEtNTMuMWMyOC4xLTI4LjEgNzMuNy0yOC4xIDEwMS44IDBMNDc0LjMgMTg5LjFjMjguMSAyOC4xIDI4LjEgNzMuNyAwIDEwMS44TDI4My45IDQ4MS40Yy0zNy41IDM3LjUtOTguMyAzNy41LTEzNS44IDBMMzAuNiAzNjMuOWMtMzcuNS0zNy41LTM3LjUtOTguMyAwLTEzNS44TDEyMi43IDEzNiA0MS40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zem0xNzYgMjIxLjNMMTY4IDE4MS4zIDc1LjkgMjczLjRjLTQuMiA0LjItNyA5LjMtOC40IDE0LjZIMzg2LjdsNDIuMy00Mi4zYzMuMS0zLjEgMy4xLTguMiAwLTExLjNMMjc3LjcgODIuOWMtMy4xLTMuMS04LjItMy4xLTExLjMgMEwyMTMuMyAxMzZsNDkuNCA0OS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwek01MTIgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTI1LjIgMzIuNi03OS42IDUxLjItMTA4LjdjNi05LjQgMTkuNS05LjQgMjUuNSAwQzU0My40IDM2OC40IDU3NiA0MjIuOCA1NzYgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0elwiXVxufTtcbnZhciBmYUFycm93c1RvQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy10by1jaXJjbGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YmRcIiwgXCJNOS40IDkuNEMyMS45LTMuMSA0Mi4xLTMuMSA1NC42IDkuNEwxNjAgMTE0LjdWOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY5NmMwIDQuMy0uOSA4LjUtMi40IDEyLjJjLTEuNiAzLjctMy44IDcuMy02LjkgMTAuM2wtLjEgLjFjLTMuMSAzLTYuNiA1LjMtMTAuMyA2LjljLTMuOCAxLjYtNy45IDIuNC0xMi4yIDIuNEg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxOC43TDkuNCA1NC42Qy0zLjEgNDIuMS0zLjEgMjEuOSA5LjQgOS40ek0yNTYgMjU2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMTE0LjcgMzUySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDk2IDBsLjEgMGM4LjggMCAxNi43IDMuNiAyMi41IDkuM2wuMSAuMWMzIDMuMSA1LjMgNi42IDYuOSAxMC4zYzEuNiAzLjggMi40IDcuOSAyLjQgMTIuMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzOTcuM0w1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wxMTQuNyAzNTJ6TTQxNiA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjE4LjdMNTg1LjQgOS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMNTI1LjMgMTYwSDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NDhjLTguOCAwLTE2LjgtMy42LTIyLjYtOS4zbC0uMS0uMWMtMy0zLjEtNS4zLTYuNi02LjktMTAuM3MtMi40LTcuOC0yLjQtMTIuMmwwLS4xdjBWOTZ6TTUyNS4zIDM1Mkw2MzAuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEw0ODAgMzk3LjNWNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMyMHYwYzAgMCAwLS4xIDAtLjFjMC00LjMgLjktOC40IDIuNC0xMi4yYzEuNi0zLjggMy45LTcuMyA2LjktMTAuNGM1LjgtNS44IDEzLjctOS4zIDIyLjUtOS40YzAgMCAuMSAwIC4xIDBoMCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1MjUuM3pcIl1cbn07XG52YXIgZmFDaXJjbGVDaGV2cm9uUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWNoZXZyb24tcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImNoZXZyb24tY2lyY2xlLXJpZ2h0XCJdLCBcImYxMzhcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yNDEgMzc3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDg3LTg3LTg3LTg3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBMMzQ1IDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDEgMzc3elwiXVxufTtcbnZhciBmYUNoZXZyb25DaXJjbGVSaWdodCA9IGZhQ2lyY2xlQ2hldnJvblJpZ2h0O1xudmFyIGZhQXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MTk0Nl0sIFwiNDBcIiwgXCJNMjU2IDY0QzE1MCA2NCA2NCAxNTAgNjQgMjU2czg2IDE5MiAxOTIgMTkyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2UzExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZ2MzJjMCA1My00MyA5Ni05NiA5NmMtMjkuMyAwLTU1LjYtMTMuMi03My4yLTMzLjlDMzIwIDM3MS4xIDI4OS41IDM4NCAyNTYgMzg0Yy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHM1Ny4zLTEyOCAxMjgtMTI4YzI3LjkgMCA1My43IDguOSA3NC43IDI0LjFjNS43LTUgMTMuMS04LjEgMjEuMy04LjFjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2ODAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNTZjMC0xMDYtODYtMTkyLTE5Mi0xOTJ6bTY0IDE5MmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJdXG59O1xudmFyIGZhVHJhc2hDYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhc2gtY2FuJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbNjE0NjAsIFwidHJhc2gtYWx0XCJdLCBcImYyZWRcIiwgXCJNMTM1LjIgMTcuN0MxNDAuNiA2LjggMTUxLjcgMCAxNjMuOCAwSDI4NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmg5Nmw3LjItMTQuM3pNMzIgMTI4SDQxNlY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHptOTYgNjRjLTguOCAwLTE2IDcuMi0xNiAxNlY0MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZWNDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNnptOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhVHJhc2hBbHQgPSBmYVRyYXNoQ2FuO1xudmFyIGZhVGV4dEhlaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZXh0LWhlaWdodCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAzNFwiLCBcIk02NCAxMjhWOTZoNjRsMCAzMjBIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MmwwLTMyMGg2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDE2MCA0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6TTUwMi42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGgzMlYzNTJINDE2Yy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWw2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEg1MTJWMTYwaDMyYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0elwiXVxufTtcbnZhciBmYVVzZXJYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXhtYXJrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJ1c2VyLXRpbWVzXCJdLCBcImYyMzVcIiwgXCJNOTYgMTI4YTEyOCAxMjggMCAxIDEgMjU2IDBBMTI4IDEyOCAwIDEgMSA5NiAxMjh6TTAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDRoOTEuNEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM3pNNDcxIDE0M2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIl1cbn07XG52YXIgZmFVc2VyVGltZXMgPSBmYVVzZXJYbWFyaztcbnZhciBmYVN0ZXRob3Njb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0ZXRob3Njb3BlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI5NjU4XSwgXCJmMGYxXCIsIFwiTTE0Mi40IDIxLjljNS42IDE2LjgtMy41IDM0LjktMjAuMiA0MC41TDk2IDcxLjFWMTkyYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWNzEuMWwtMjYuMS04LjdjLTE2LjgtNS42LTI1LjgtMjMuNy0yMC4yLTQwLjVzMjMuNy0yNS44IDQwLjUtMjAuMmwyNi4xIDguN0MzMzQuNCAxOS4xIDM1MiA0My41IDM1MiA3MS4xVjE5MmMwIDc3LjItNTQuNiAxNDEuNi0xMjcuMyAxNTYuN0MyMzEgNDA0LjYgMjc4LjQgNDQ4IDMzNiA0NDhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJWMjY1LjNjLTI4LjMtMTIuMy00OC00MC41LTQ4LTczLjNjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zVjMzNmMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtOTIuOSAwLTE2OC45LTcxLjktMTc1LjUtMTYzLjFDODcuMiAzMzQuMiAzMiAyNjkuNiAzMiAxOTJWNzEuMWMwLTI3LjUgMTcuNi01MiA0My44LTYwLjdsMjYuMS04LjdjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4yek00ODAgMjI0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG52YXIgZmFNZXNzYWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21lc3NhZ2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImNvbW1lbnQtYWx0XCJdLCBcImYyN2FcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDk2djgwYzAgNi4xIDMuNCAxMS42IDguOCAxNC4zczExLjkgMi4xIDE2LjgtMS41TDMwOS4zIDQxNkg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJdXG59O1xudmFyIGZhQ29tbWVudEFsdCA9IGZhTWVzc2FnZTtcbnZhciBmYUluZm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW5mbycsXG4gIGljb246IFsxOTIsIDUxMiwgW10sIFwiZjEyOVwiLCBcIk00OCA4MGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDQ4IDgwek0wIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NDhoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINjRWMjU2SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIl1cbn07XG52YXIgZmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3duLWxlZnQtYW5kLXVwLXJpZ2h0LXRvLWNlbnRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY29tcHJlc3MtYWx0XCJdLCBcImY0MjJcIiwgXCJNNDM5IDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0LjhIMjk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY3MmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzlMNDM5IDd6TTcyIDI3MkgyMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDQwYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5TDczIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyA0NzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDg3LTg3TDU1IDMxM2MtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnMxMi41LTE0LjggMjIuMi0xNC44elwiXVxufTtcbnZhciBmYUNvbXByZXNzQWx0ID0gZmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlcjtcbnZhciBmYUV4cGxvc2lvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleHBsb3Npb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0ZTlcIiwgXCJNNDk5LjYgMTEuM2M2LjctMTAuNyAyMC41LTE0LjUgMzEuNy04LjVzMTUuOCAxOS41IDEwLjYgMzFMNDA0LjggMzM4LjZjMi4yIDIuMyA0LjMgNC43IDYuMyA3LjFsOTcuMi01NC43YzEwLjUtNS45IDIzLjYtMy4xIDMwLjkgNi40czYuMyAyMy0yLjIgMzEuNWwtODcgODdIMzc4LjVjLTEzLjItMzcuMy00OC43LTY0LTkwLjUtNjRzLTc3LjQgMjYuNy05MC41IDY0SDExNy44TDQyLjMgMzYzLjdjLTkuNy02LjctMTMuMS0xOS42LTcuOS0zMC4zczE3LjQtMTUuOSAyOC43LTEyLjRsOTcuMiAzMC40YzMtMy45IDYuMS03LjcgOS40LTExLjNMMTA3LjQgMjM2LjNjLTYuMS0xMC4xLTMuOS0yMy4xIDUuMS0zMC43czIyLjItNy41IDMxLjEgLjFMMjQ2IDI5My42YzEuNS0uNCAzLS44IDQuNS0xLjFsMTMuNi0xNDIuN2MxLjItMTIuMyAxMS41LTIxLjcgMjMuOS0yMS43czIyLjcgOS40IDIzLjkgMjEuN2wxMy41IDE0MS45TDQ5OS42IDExLjN6TTY0IDQ0OHYwSDUxMnYwaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDY0ek0yODggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNFY3MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFGaWxlTGluZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1saW5lcycsXG4gIGljb246IFszODQsIDUxMiwgWzEyODQ0MSwgMTI4NDYyLCA2MTY4NiwgXCJmaWxlLWFsdFwiLCBcImZpbGUtdGV4dFwiXSwgXCJmMTVjXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTEyIDI1NkgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG52YXIgZmFGaWxlQWx0ID0gZmFGaWxlTGluZXM7XG52YXIgZmFGaWxlVGV4dCA9IGZhRmlsZUxpbmVzO1xudmFyIGZhV2F2ZVNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YXZlLXNxdWFyZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjgzZVwiLCBcIk0xMjggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQxNmg5NlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJINjA4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDUxMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NkgxOTJWMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDk2VjY0elwiXVxufTtcbnZhciBmYVJpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjcwYlwiLCBcIk02NCAyMDhjMCA3LjggNC40IDE4LjcgMTcuMSAzMC4zQzEyNi41IDIxNC4xIDE4OC45IDIwMCAyNTYgMjAwczEyOS41IDE0LjEgMTc0LjkgMzguM0M0NDMuNiAyMjYuNyA0NDggMjE1LjggNDQ4IDIwOGMwLTEyLjMtMTAuOC0zMi00Ny45LTUwLjZDMzY0LjkgMTM5LjggMzE0IDEyOCAyNTYgMTI4cy0xMDguOSAxMS44LTE0NC4xIDI5LjRDNzQuOCAxNzYgNjQgMTk1LjcgNjQgMjA4em0xOTIgNDBjLTQ3IDAtODkuMyA3LjYtMTIyLjkgMTkuN0MxNjYuMyAyODAuMiAyMDguOCAyODggMjU2IDI4OHM4OS43LTcuOCAxMjIuOS0yMC4zQzM0NS4zIDI1NS42IDMwMyAyNDggMjU2IDI0OHpNMCAyMDhjMC00OS42IDM5LjQtODUuOCA4My4zLTEwNy44QzEyOS4xIDc3LjMgMTkwLjMgNjQgMjU2IDY0czEyNi45IDEzLjMgMTcyLjcgMzYuMmM0My45IDIyIDgzLjMgNTguMiA4My4zIDEwNy44djk2YzAgNDkuNi0zOS40IDg1LjgtODMuMyAxMDcuOEMzODIuOSA0MzQuNyAzMjEuNyA0NDggMjU2IDQ0OHMtMTI2LjktMTMuMy0xNzIuNy0zNi4yQzM5LjQgMzg5LjggMCAzNTMuNiAwIDMwNFYyMDh6XCJdXG59O1xudmFyIGZhQnVpbGRpbmdVbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZy11bicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRkOVwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0yMzcuMyA3MS4xbDM0LjcgNTJWODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40bC0zNC43LTUyVjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY4MGMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTExMiA4MHY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIl1cbn07XG52YXIgZmFEaWNlVGhyZWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS10aHJlZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzk4NThdLCBcImY1MjdcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCA5NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDEyOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xMjggNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYUNhbGVuZGFyRGF5cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci1kYXlzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJjYWxlbmRhci1hbHRcIl0sIFwiZjA3M1wiLCBcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NEgyODhWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlY2NGg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHY0OEgwVjExMkMwIDg1LjUgMjEuNSA2NCA0OCA2NEg5NlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJINDQ4VjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTkyem02NCA4MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIODBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTI4IDB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIMzM2ek02NCA0MDB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlY0MDBjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE0NC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWNDAwYzAtOC44LTcuMi0xNi0xNi0xNkgyMDh6bTExMiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjQwMGMwLTguOC03LjItMTYtMTYtMTZIMzM2Yy04LjggMC0xNiA3LjItMTYgMTZ6XCJdXG59O1xudmFyIGZhQ2FsZW5kYXJBbHQgPSBmYUNhbGVuZGFyRGF5cztcbnZhciBmYUFuY2hvckNpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuY2hvci1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YWFcIiwgXCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJWNDQ4SDIwOGMtNTMgMC05Ni00My05Ni05NnYtNi4xbDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoODAgODBjOC4yIDAgMTYuMy0uNiAyNC4yLTEuOGMtMjIuMi0xNi4yLTQwLjQtMzcuNS01My02Mi4ySDMyMFYzNjggMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwiXVxufTtcbnZhciBmYUJ1aWxkaW5nQ2lyY2xlQXJyb3dSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZy1jaXJjbGUtYXJyb3ctcmlnaHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZDFcIiwgXCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzM2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjIzMi4yYy0zOS4xIDMyLjMtNjQgODEuMS02NCAxMzUuOGMwIDQ5LjUgMjAuNCA5NC4yIDUzLjMgMTI2LjJDMzY0LjUgNTA1LjEgMzUxLjEgNTEyIDMzNiA1MTJIMjQwVjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2em0xMTItMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIMjcyek02NCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZ6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnptOTYgMjU2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0MC43LTY3LjNjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42TDUyMS40IDM1Mkg0MzJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODkuNGwtMjguNyAyOC43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsNTYtNTZjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTU2LTU2Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHpcIl1cbn07XG52YXIgZmFWb2xsZXliYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvbGxleWJhbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc5NTIsIFwidm9sbGV5YmFsbC1iYWxsXCJdLCBcImY0NWZcIiwgXCJNNTExLjggMjY3LjRjLTI2LjEgOC43LTUzLjQgMTMuOC04MSAxNS4xYzkuMi0xMDUuMy0zMS41LTIwNC4yLTEwMy4yLTI3Mi40QzQzNC4xIDQxLjEgNTEyIDEzOS41IDUxMiAyNTZjMCAzLjgtLjEgNy42LS4yIDExLjR6bS0zLjkgMzQuN2MtNS44IDMyLTE3LjYgNjItMzQuMiA4OC43Yy05Ny41IDQ4LjUtMjE3LjcgNDIuNi0zMTEuOS0yNC41YzIzLjctMzYuMiA1NS40LTY3LjcgOTQuNS05MS44Yzc5LjkgNDMuMiAxNzAuMSA1MC44IDI1MS42IDI3LjZ6bS0yMzYtNTUuNWMtMi41LTkwLjktNDEuMS0xNzIuNy0xMDEuOS0yMzEuN0MxOTYuOCA1LjIgMjI1LjggMCAyNTYgMGMyLjcgMCA1LjMgMCA3LjkgLjFjOTAuOCA2MC4yIDE0NS43IDE2Ny4yIDEzNC43IDI4Mi4zYy00My4xLTIuNC04Ni40LTE0LjEtMTI2LjgtMzUuOXpNMTM4IDI4LjhjMjAuNiAxOC4zIDM4LjcgMzkuNCA1My43IDYyLjZDOTUuOSAxMzYuMSAzMC42IDIyMC44IDcuMyAzMTYuOUMyLjUgMjk3LjQgMCAyNzcgMCAyNTZDMCAxNTcuMiA1NiA3MS41IDEzOCAyOC44em02OS42IDkwLjVjMTkuNSAzOC42IDMxIDgxLjkgMzIuMyAxMjcuN0MxNjIuNSAyOTQuNiAxMTAuOSAzNjguOSA5MC4yIDQ1MUM2NiA0MzAuNCA0NS42IDQwNS40IDMwLjQgMzc3LjJjNi43LTEwOC43IDcxLjktMjA5LjkgMTc3LjEtMjU3Ljl6TTI1NiA1MTJjLTUwLjcgMC05OC0xNC43LTEzNy44LTQwLjJjNS42LTI3IDE0LjgtNTMuMSAyNy40LTc3LjdDMjMyLjIgNDU0LjYgMzM4LjEgNDY4LjggNDMzIDQ0MWMtNDYgNDQtMTA4LjMgNzEtMTc3IDcxelwiXVxufTtcbnZhciBmYVZvbGxleWJhbGxCYWxsID0gZmFWb2xsZXliYWxsO1xudmFyIGZhQXJyb3dzVXBUb0xpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLXVwLXRvLWxpbmUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0YzJcIiwgXCJNMzIgOTZsNTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2ek05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMOTYgMjM3LjMgOTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMTAuNyA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NnptMzIwIDQ1LjNjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBMNDE2IDIzNy4zIDQxNiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIxMC43IDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3pcIl1cbn07XG52YXIgZmFTb3J0RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0LWRvd24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcInNvcnQtZGVzY1wiXSwgXCJmMGRkXCIsIFwiTTE4Mi42IDQ3MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOEgyODhjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOHpcIl1cbn07XG52YXIgZmFTb3J0RGVzYyA9IGZhU29ydERvd247XG52YXIgZmFDaXJjbGVNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtbWludXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcIm1pbnVzLWNpcmNsZVwiXSwgXCJmMDU2XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xODQgMjMySDMyOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJdXG59O1xudmFyIGZhTWludXNDaXJjbGUgPSBmYUNpcmNsZU1pbnVzO1xudmFyIGZhRG9vck9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG9vci1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTJiXCIsIFwiTTMyMCAzMmMwLTkuOS00LjUtMTkuMi0xMi4zLTI1LjJTMjg5LjgtMS40IDI4MC4yIDFsLTE3OS45IDQ1Qzc5IDUxLjMgNjQgNzAuNSA2NCA5Mi41VjQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5NiAyODhoMzJWNDgwIDMyek0yNTYgMjU2YzAgMTcuNy0xMC43IDMyLTI0IDMycy0yNC0xNC4zLTI0LTMyczEwLjctMzIgMjQtMzJzMjQgMTQuMyAyNCAzMnptOTYtMTI4aDk2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1MTJWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM1MnY2NHpcIl1cbn07XG52YXIgZmFSaWdodEZyb21CcmFja2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JpZ2h0LWZyb20tYnJhY2tldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wic2lnbi1vdXQtYWx0XCJdLCBcImYyZjVcIiwgXCJNMzc3LjkgMTA1LjlMNTAwLjcgMjI4LjdjNy4yIDcuMiAxMS4zIDE3LjEgMTEuMyAyNy4zcy00LjEgMjAuMS0xMS4zIDI3LjNMMzc3LjkgNDA2LjFjLTYuNCA2LjQtMTUgOS45LTI0IDkuOWMtMTguNyAwLTMzLjktMTUuMi0zMy45LTMzLjlsMC02Mi4xLTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwIDAtNjIuMWMwLTE4LjcgMTUuMi0zMy45IDMzLjktMzMuOWM5IDAgMTcuNiAzLjYgMjQgOS45ek0xNjAgOTZMOTYgOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDBjLTUzIDAtOTYtNDMtOTYtOTZMMCAxMjhDMCA3NSA0MyAzMiA5NiAzMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYVNpZ25PdXRBbHQgPSBmYVJpZ2h0RnJvbUJyYWNrZXQ7XG52YXIgZmFBdG9tID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2F0b20nLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5ODgzXSwgXCJmNWQyXCIsIFwiTTI1NiAzOTguOGMtMTEuOCA1LjEtMjMuNCA5LjctMzQuOSAxMy41YzE2LjcgMzMuOCAzMSAzNS43IDM0LjkgMzUuN3MxOC4xLTEuOSAzNC45LTM1LjdjLTExLjQtMy45LTIzLjEtOC40LTM0LjktMTMuNXpNNDQ2IDI1NmMzMyA0NS4yIDQ0LjMgOTAuOSAyMy42IDEyOGMtMjAuMiAzNi4zLTYyLjUgNDkuMy0xMTUuMiA0My4yYy0yMiA1Mi4xLTU1LjYgODQuOC05OC40IDg0LjhzLTc2LjQtMzIuNy05OC40LTg0LjhjLTUyLjcgNi4xLTk1LTYuOC0xMTUuMi00My4yQzIxLjcgMzQ2LjkgMzMgMzAxLjIgNjYgMjU2Yy0zMy00NS4yLTQ0LjMtOTAuOS0yMy42LTEyOGMyMC4yLTM2LjMgNjIuNS00OS4zIDExNS4yLTQzLjJDMTc5LjYgMzIuNyAyMTMuMiAwIDI1NiAwczc2LjQgMzIuNyA5OC40IDg0LjhjNTIuNy02LjEgOTUgNi44IDExNS4yIDQzLjJjMjAuNyAzNy4xIDkuNCA4Mi44LTIzLjYgMTI4em0tNjUuOCA2Ny40Yy0xLjcgMTQuMi0zLjkgMjgtNi43IDQxLjJjMzEuOCAxLjQgMzguNi04LjcgNDAuMi0xMS43YzIuMy00LjIgNy0xNy45LTExLjktNDguMWMtNi44IDYuMy0xNCAxMi41LTIxLjYgMTguNnptLTYuNy0xNzUuOWMyLjggMTMuMSA1IDI2LjkgNi43IDQxLjJjNy42IDYuMSAxNC44IDEyLjMgMjEuNiAxOC42YzE4LjktMzAuMiAxNC4yLTQ0IDExLjktNDguMWMtMS42LTIuOS04LjQtMTMtNDAuMi0xMS43ek0yOTAuOSA5OS43QzI3NC4xIDY1LjkgMjU5LjkgNjQgMjU2IDY0cy0xOC4xIDEuOS0zNC45IDM1LjdjMTEuNCAzLjkgMjMuMSA4LjQgMzQuOSAxMy41YzExLjgtNS4xIDIzLjQtOS43IDM0LjktMTMuNXptLTE1OSA4OC45YzEuNy0xNC4zIDMuOS0yOCA2LjctNDEuMmMtMzEuOC0xLjQtMzguNiA4LjctNDAuMiAxMS43Yy0yLjMgNC4yLTcgMTcuOSAxMS45IDQ4LjFjNi44LTYuMyAxNC0xMi41IDIxLjYtMTguNnpNMTEwLjIgMzA0LjhDOTEuNCAzMzUgOTYgMzQ4LjcgOTguMyAzNTIuOWMxLjYgMi45IDguNCAxMyA0MC4yIDExLjdjLTIuOC0xMy4xLTUtMjYuOS02LjctNDEuMmMtNy42LTYuMS0xNC44LTEyLjMtMjEuNi0xOC42ek0zMzYgMjU2YTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHptLTgwLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFTb2FwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvYXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjk1MzJdLCBcImUwNmVcIiwgXCJNMjA4IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNNDE2IDMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAgMTYwYzAgMjcuNi0xMS43IDUyLjUtMzAuNCA3MC4xQzQyMi4xIDI3NS43IDQ0OCAzMTAuOCA0NDggMzUyYzAgNTMtNDMgOTYtOTYgOTZIMTYwYy01MyAwLTk2LTQzLTk2LTk2czQzLTk2IDk2LTk2aDg4LjRjLTE1LjItMTctMjQuNC0zOS40LTI0LjQtNjRIOTZjLTUzIDAtOTYgNDMtOTYgOTZWNDE2YzAgNTMgNDMgOTYgOTYgOTZINDE2YzUzIDAgOTYtNDMgOTYtOTZWMjg4YzAtNTMtNDMtOTYtOTYtOTZ6TTE2MCAyODhjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjRIMzUyYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0SDMyMCAxNjB6XCJdXG59O1xudmFyIGZhSWNvbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNvbnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImhlYXJ0LW11c2ljLWNhbWVyYS1ib2x0XCJdLCBcImY4NmRcIiwgXCJNNTAwLjMgNy4zQzUwNy43IDEzLjMgNTEyIDIyLjQgNTEyIDMyVjE3NmMwIDI2LjUtMjguNyA0OC02NCA0OHMtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4VjcxTDM1MiA5MC4yVjIwOGMwIDI2LjUtMjguNyA0OC02NCA0OHMtNjQtMjEuNS02NC00OHMyOC43LTQ4IDY0LTQ4VjY0YzAtMTUuMyAxMC44LTI4LjQgMjUuNy0zMS40bDE2MC0zMmM5LjQtMS45IDE5LjEgLjYgMjYuNiA2LjZ6TTc0LjcgMzA0bDExLjgtMTcuOGM1LjktOC45IDE1LjktMTQuMiAyNi42LTE0LjJoNjEuN2MxMC43IDAgMjAuNyA1LjMgMjYuNiAxNC4yTDIxMy4zIDMwNEgyNDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNTJjMC0yNi41IDIxLjUtNDggNDgtNDhINzQuN3pNMTkyIDQwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00NzguNyAyNzguM0w0NDAuMyAzNjhINDk2YzYuNyAwIDEyLjYgNC4xIDE1IDEwLjRzLjYgMTMuMy00LjQgMTcuN2wtMTI4IDExMmMtNS42IDQuOS0xMy45IDUuMy0xOS45IC45cy04LjItMTIuNC01LjMtMTkuMkwzOTEuNyA0MDBIMzM2Yy02LjcgMC0xMi42LTQuMS0xNS0xMC40cy0uNi0xMy4zIDQuNC0xNy43bDEyOC0xMTJjNS42LTQuOSAxMy45LTUuMyAxOS45LS45czguMiAxMi40IDUuMyAxOS4yem0tMzM5LTU5LjJjLTYuNSA2LjUtMTcgNi41LTIzIDBMMTkuOSAxMTkuMmMtMjgtMjktMjYuNS03Ni45IDUtMTAzLjljMjctMjMuNSA2OC40LTE5IDkzLjQgNi41bDEwIDEwLjUgOS41LTEwLjVjMjUtMjUuNSA2NS45LTMwIDkzLjktNi41YzMxIDI3IDMyLjUgNzQuOSA0LjUgMTAzLjlsLTk2LjQgOTkuOXpcIl1cbn07XG52YXIgZmFIZWFydE11c2ljQ2FtZXJhQm9sdCA9IGZhSWNvbnM7XG52YXIgZmFNaWNyb3Bob25lTGluZXNTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtaWNyb3Bob25lLWxpbmVzLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJtaWNyb3Bob25lLWFsdC1zbGFzaFwiXSwgXCJmNTM5XCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDcyLjEgMzQ0LjdjMTUuMi0yNiAyMy45LTU2LjMgMjMuOS04OC43VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYyNCAxNmMwIDIxLjItNS4xIDQxLjEtMTQuMiA1OC43TDQxNiAzMDAuOFYyNTZIMzU4LjlsLTM0LjUtMjdjMi45LTMuMSA3LTUgMTEuNi01aDgwVjE5MkgzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTI4SDMzNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnY1NC4zTDM4LjggNS4xem0zNjIuNSA0MDdsLTQzLjEtMzMuOUMzNDYuMSAzODIgMzMzLjMgMzg0IDMyMCAzODRjLTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4di04LjdMMTQ0LjcgMjEwYy0uNSAxLjktLjcgMy45LS43IDZ2NDBjMCA4OS4xIDY2LjIgMTYyLjcgMTUyIDE3NC40VjQ2NEgyNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNzIgNzJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzQ0VjQzMC40YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMnpcIl1cbn07XG52YXIgZmFNaWNyb3Bob25lQWx0U2xhc2ggPSBmYU1pY3JvcGhvbmVMaW5lc1NsYXNoO1xudmFyIGZhQnJpZGdlQ2lyY2xlQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJpZGdlLWNpcmNsZS1jaGVjaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRjOVwiLCBcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjRzMTQuMyAzMiAzMiAzMmg0MHY2NEgzMlYyODhjNTMgMCA5NiA0MyA5NiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC01MyA0My05NiA5Ni05NmM2LjMgMCAxMi40IC42IDE4LjMgMS43QzM2Ny4xIDIzMS44IDQyNi45IDE5MiA0OTYgMTkyYzQyLjUgMCA4MS42IDE1LjEgMTEyIDQwLjJWMTYwSDUzNlY5Nmg0MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NHpNNDg4IDk2djY0SDQwOFY5Nmg4MHpNMzYwIDk2djY0SDI4MFY5Nmg4MHpNMjMyIDk2djY0SDE1MlY5Nmg4MHpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIl1cbn07XG52YXIgZmFQdW1wTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwdW1wLW1lZGljYWwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwNmFcIiwgXCJNMTI4IDMydjk2SDI1NlY5Nmg2MC4xYzQuMiAwIDguMyAxLjcgMTEuMyA0LjdsMzMuOSAzMy45YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMzcyLjcgNTUuNGMtMTUtMTUtMzUuNC0yMy40LTU2LjYtMjMuNEgyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMTE3LjQgMTYwYy0zMy4zIDAtNjEgMjUuNS02My44IDU4LjdMMzUgNDQyLjdDMzEuOSA0ODAgNjEuMyA1MTIgOTguOCA1MTJIMjg1LjJjMzcuNCAwIDY2LjktMzIgNjMuOC02OS4zbC0xOC43LTIyNGMtMi44LTMzLjItMzAuNS01OC43LTYzLjgtNTguN0gxMTcuNHpNMjE2IDI4MHYzMmgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZ2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzYwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgzMlYyODBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIl1cbn07XG52YXIgZmFGaW5nZXJwcmludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaW5nZXJwcmludCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU3N1wiLCBcIk00OCAyNTZDNDggMTQxLjEgMTQxLjEgNDggMjU2IDQ4YzYzLjEgMCAxMTkuNiAyOC4xIDE1Ny44IDcyLjVjOC42IDEwLjEgMjMuOCAxMS4yIDMzLjggMi42czExLjItMjMuOCAyLjYtMzMuOEM0MDMuMyAzNC42IDMzMy43IDAgMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2djQwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjU2em00NTguNS01Mi45Yy0yLjctMTMtMTUuNS0yMS4zLTI4LjQtMTguNXMtMjEuMyAxNS41LTE4LjUgMjguNGMyLjkgMTMuOSA0LjUgMjguMyA0LjUgNDMuMXY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NmMwLTE4LjEtMS45LTM1LjgtNS41LTUyLjl6TTI1NiA4MGMtMTkgMC0zNy40IDMtNTQuNSA4LjZjLTE1LjIgNS0xOC43IDIzLjctOC4zIDM1LjljNy4xIDguMyAxOC44IDEwLjggMjkuNCA3LjljMTAuNi0yLjkgMjEuOC00LjQgMzMuNC00LjRjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjh2MjQuOWMwIDI1LjItMS41IDUwLjMtNC40IDc1LjNjLTEuNyAxNC42IDkuNCAyNy44IDI0LjIgMjcuOGMxMS44IDAgMjEuOS04LjYgMjMuMy0yMC4zYzMuMy0yNy40IDUtNTUgNS04Mi43VjI1NmMwLTk3LjItNzguOC0xNzYtMTc2LTE3NnpNMTUwLjcgMTQ4LjdjLTkuMS0xMC42LTI1LjMtMTEuNC0zMy45LS40QzkzLjcgMTc4IDgwIDIxNS40IDgwIDI1NnYyNC45YzAgMjQuMi0yLjYgNDguNC03LjggNzEuOUM2OC44IDM2OC40IDgwLjEgMzg0IDk2LjEgMzg0YzEwLjUgMCAxOS45LTcgMjIuMi0xNy4zYzYuNC0yOC4xIDkuNy01Ni44IDkuNy04NS44VjI1NmMwLTI3LjIgOC41LTUyLjQgMjIuOS03My4xYzcuMi0xMC40IDgtMjQuNi0uMi0zNC4yek0yNTYgMTYwYy01MyAwLTk2IDQzLTk2IDk2djI0LjljMCAzNS45LTQuNiA3MS41LTEzLjggMTA2LjFjLTMuOCAxNC4zIDYuNyAyOSAyMS41IDI5YzkuNSAwIDE3LjktNi4yIDIwLjQtMTUuNGMxMC41LTM5IDE1LjktNzkuMiAxNS45LTExOS43VjI1NmMwLTI4LjcgMjMuMy01MiA1Mi01MnM1MiAyMy4zIDUyIDUydjI0LjljMCAzNi4zLTMuNSA3Mi40LTEwLjQgMTA3LjljLTIuNyAxMy45IDcuNyAyNy4yIDIxLjggMjcuMmMxMC4yIDAgMTktNyAyMS0xN2M3LjctMzguOCAxMS42LTc4LjMgMTEuNi0xMTguMVYyNTZjMC01My00My05Ni05Ni05NnptMjQgOTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MjQuOWMwIDU5LjktMTEgMTE5LjMtMzIuNSAxNzUuMmwtNS45IDE1LjNjLTQuOCAxMi40IDEuNCAyNi4zIDEzLjggMzFzMjYuMy0xLjQgMzEtMTMuOGw1LjktMTUuM0MyNjcuOSA0MTEuOSAyODAgMzQ2LjcgMjgwIDI4MC45VjI1NnpcIl1cbn07XG52YXIgZmFIYW5kUG9pbnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGE0XCIsIFwiTTQ4MCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjA4IDAgMC02NCAyMDggMHpNMzIwIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwem02NC02NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNDggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyek0yODggMzg0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0IDB6bS04OC05NmwuNiAwYy01LjQgOS40LTguNiAyMC4zLTguNiAzMmMwIDEzLjIgNCAyNS40IDEwLjggMzUuNkMxNzcuOSAzNjQuMyAxNjAgMzg4LjEgMTYwIDQxNmMwIDExLjcgMy4xIDIyLjYgOC42IDMybC04LjYgMEM3MS42IDQ0OCAwIDM3Ni40IDAgMjg4bDAtNjEuN2MwLTQyLjQgMTYuOS04My4xIDQ2LjktMTEzLjFsMTEuNi0xMS42QzgyLjUgNzcuNSAxMTUuMSA2NCAxNDkgNjRsMjcgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDg4YzAgMjIuMS0xNy45IDQwLTQwIDQwcy00MC0xNy45LTQwLTQwbDAtNTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCA1NmMwIDM5LjggMzIuMiA3MiA3MiA3MnpcIl1cbn07XG52YXIgZmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYWduaWZ5aW5nLWdsYXNzLWxvY2F0aW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzZWFyY2gtbG9jYXRpb25cIl0sIFwiZjY4OVwiLCBcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0yODggMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgNDguOCA0Ni41IDExMS42IDY4LjYgMTM4LjZjNiA3LjMgMTYuOCA3LjMgMjIuNyAwYzIyLjEtMjcgNjguNi04OS44IDY4LjYtMTM4LjZ6bS0xMTIgMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbnZhciBmYVNlYXJjaExvY2F0aW9uID0gZmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbjtcbnZhciBmYUZvcndhcmRTdGVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvcndhcmQtc3RlcCcsXG4gIGljb246IFszMjAsIDUxMiwgW1wic3RlcC1mb3J3YXJkXCJdLCBcImYwNTFcIiwgXCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2Vjk2QzAgODMuNiA3LjIgNzIuMyAxOC40IDY3czI0LjUtMy42IDM0LjEgNC40bDE5MiAxNjBMMjU2IDI0MVY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNzFsLTExLjUgOS42LTE5MiAxNjB6XCJdXG59O1xudmFyIGZhU3RlcEZvcndhcmQgPSBmYUZvcndhcmRTdGVwO1xudmFyIGZhRmFjZVNtaWxlQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLXNtaWxlLWJlYW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1MjIsIFwic21pbGUtYmVhbVwiXSwgXCJmNWI4XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6bTUzLjUtOTYuN2wwIDAgMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwem0xNjAgMGwwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDAgMCAwelwiXVxufTtcbnZhciBmYVNtaWxlQmVhbSA9IGZhRmFjZVNtaWxlQmVhbTtcbnZhciBmYUZsYWdDaGVja2VyZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmxhZy1jaGVja2VyZWQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc5MzddLCBcImYxMWVcIiwgXCJNMzIgMEM0OS43IDAgNjQgMTQuMyA2NCAzMlY0OGw2OS0xNy4yYzM4LjEtOS41IDc4LjMtNS4xIDExMy41IDEyLjVjNDYuMyAyMy4yIDEwMC44IDIzLjIgMTQ3LjEgMGw5LjYtNC44QzQyMy44IDI4LjEgNDQ4IDQzLjEgNDQ4IDY2LjFWMzQ1LjhjMCAxMy4zLTguMyAyNS4zLTIwLjggMzBsLTM0LjcgMTNjLTQ2LjIgMTcuMy05Ny42IDE0LjYtMTQxLjctNy40Yy0zNy45LTE5LTgxLjMtMjMuNy0xMjIuNS0xMy40TDY0IDM4NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0MDAgMzM0IDY0IDMyQzAgMTQuMyAxNC4zIDAgMzIgMHpNNjQgMTg3LjFsNjQtMTMuOXY2NS41TDY0IDI1Mi42VjMxOGw0OC44LTEyLjJjNS4xLTEuMyAxMC4xLTIuNCAxNS4yLTMuM1YyMzguN2wzOC45LTguNGM4LjMtMS44IDE2LjctMi41IDI1LjEtMi4xbDAtNjRjMTMuNiAuNCAyNy4yIDIuNiA0MC40IDYuNGwyMy42IDYuOXY2Ni43bC00MS43LTEyLjNjLTcuMy0yLjEtMTQuOC0zLjQtMjIuMy0zLjh2NzEuNGMyMS44IDEuOSA0My4zIDYuNyA2NCAxNC40VjI0NC4ybDIyLjcgNi43YzEzLjUgNCAyNy4zIDYuNCA0MS4zIDcuNFYxOTRjLTcuOC0uOC0xNS42LTIuMy0yMy4yLTQuNWwtNDAuOC0xMnYtNjJjLTEzLTMuOC0yNS44LTguOC0zOC4yLTE1Yy04LjItNC4xLTE2LjktNy0yNS44LTguOHY3Mi40Yy0xMy0uNC0yNiAuOC0zOC43IDMuNkwxMjggMTczLjJWOThMNjQgMTE0djczLjF6TTMyMCAzMzUuN2MxNi44IDEuNSAzMy45LS43IDUwLTYuOGwxNC01LjJWMjUxLjlsLTcuOSAxLjhjLTE4LjQgNC4zLTM3LjMgNS43LTU2LjEgNC41djc3LjR6bTY0LTE0OS40VjExNS40Yy0yMC45IDYuMS00Mi40IDkuMS02NCA5LjFWMTk0YzEzLjkgMS40IDI4IC41IDQxLjctMi42bDIyLjMtNS4yelwiXVxufTtcbnZhciBmYUZvb3RiYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zvb3RiYWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTQ0LCBcImZvb3RiYWxsLWJhbGxcIl0sIFwiZjQ0ZVwiLCBcIk0yNDcuNSAyNS40Yy0xMy41IDMuMy0yNi40IDcuMi0zOC42IDExLjdDMTQyLjkgNjEuNiA5Ni43IDEwMy42IDY2IDE1My42Yy0xOC4zIDI5LjgtMzAuOSA2Mi4zLTM5LjIgOTUuNEwyNjQuNSA0ODYuNmMxMy41LTMuMyAyNi40LTcuMiAzOC42LTExLjdjNjYtMjQuNSAxMTIuMi02Ni41IDE0Mi45LTExNi41YzE4LjMtMjkuOCAzMC45LTYyLjMgMzkuMS05NS4zTDI0Ny41IDI1LjR6TTQ5NS4yIDIwNS4zYzYuMS01Ni44IDEuNC0xMTIuMi03LjctMTU2LjRjLTIuNy0xMi45LTEzLTIyLjktMjYuMS0yNS4xYy01OC4yLTkuNy0xMDkuOS0xMi0xNTUuNi03LjlMNDk1LjIgMjA1LjN6TTIwNi4xIDQ5NkwxNi44IDMwNi43Yy02LjEgNTYuOC0xLjQgMTEyLjIgNy43IDE1Ni40YzIuNyAxMi45IDEzIDIyLjkgMjYuMSAyNS4xYzU4LjIgOS43IDEwOS45IDEyIDE1NS42IDcuOXptNTQuNi0zMzEuM2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGw2NCA2NGM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC02NC02NGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6bS00OCA0OGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGw2NCA2NGM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC02NC02NGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6bS00OCA0OGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGw2NCA2NGM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC02NC02NGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6XCJdXG59O1xudmFyIGZhRm9vdGJhbGxCYWxsID0gZmFGb290YmFsbDtcbnZhciBmYVNjaG9vbENpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NjaG9vbC1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NmNcIiwgXCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMjB2MEgyNTZWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0bC4zIDBoLjVjMy40LTM3LjcgMTguNy03Mi4xIDQyLjItOTkuMUMzNTAuMiAyNjAgMzM1LjYgMjY0IDMyMCAyNjRjLTQ4LjYgMC04OC0zOS40LTg4LTg4czM5LjQtODggODgtODhzODggMzkuNCA4OCA4OGMwIDE4LjMtNS42IDM1LjMtMTUuMSA0OS40YzI5LTIxIDY0LjYtMzMuNCAxMDMuMS0zMy40YzU5LjUgMCAxMTIuMSAyOS42IDE0NCA3NC44VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEg0NzMuN0wzMzcuOCA1LjR6TTk2IDE5MmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjA4YzAtOC44IDcuMi0xNiAxNi0xNnptMCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6TTMyMCAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzM2VjE0NGMwLTguOC03LjItMTYtMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhQ3JvcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjcm9wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTI1XCIsIFwiTTQ0OCAxMDkuM2w1NC42LTU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMNDAyLjcgNjQgMTYwIDY0djY0bDE3OC43IDBMMTI4IDMzOC43VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJWNjRIMzJDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDY0VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJWMzg0SDE3My4zTDM4NCAxNzMuMyAzODQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OGwwLTI3NC43elwiXVxufTtcbnZhciBmYUFuZ2xlc0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGVzLWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImFuZ2xlLWRvdWJsZS1kb3duXCJdLCBcImYxMDNcIiwgXCJNMjQ2LjYgNDcwLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC0xNjAtMTYwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwTDIyNCA0MDIuNyAzNjEuNCAyNjUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0xNjAgMTYwem0xNjAtMzUybC0xNjAgMTYwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTYwLTE2MGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwyMjQgMjEwLjcgMzYxLjQgNzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zelwiXVxufTtcbnZhciBmYUFuZ2xlRG91YmxlRG93biA9IGZhQW5nbGVzRG93bjtcbnZhciBmYVVzZXJzUmVjdGFuZ2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzLXJlY3RhbmdsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU5NFwiLCBcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDU0NGM1MyAwIDk2LTQzIDk2LTk2Vjk2YzAtNTMtNDMtOTYtOTYtOTZIOTZ6TTY0IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2em0xNTkuOCA4MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek05NiAzMDkuM2MwIDE0LjcgMTEuOSAyNi43IDI2LjcgMjYuN2g1Ni4xYzgtMzQuMSAzMi44LTYxLjcgNjUuMi03My42Yy03LjUtNC4xLTE2LjItNi40LTI1LjMtNi40SDE0OS4zQzExOS45IDI1NiA5NiAyNzkuOSA5NiAzMDkuM3pNNDYxLjIgMzM2aDU2LjFjMTQuNyAwIDI2LjctMTEuOSAyNi43LTI2LjdjMC0yOS41LTIzLjktNTMuMy01My4zLTUzLjNINDIxLjNjLTkuMiAwLTE3LjggMi4zLTI1LjMgNi40YzMyLjQgMTEuOSA1Ny4yIDM5LjUgNjUuMiA3My42ek0zNzIgMjg5Yy0zLjktLjctNy45LTEtMTItMUgyODBjLTQuMSAwLTguMSAuMy0xMiAxYy0yNiA0LjQtNDcuMyAyMi43LTU1LjkgNDdjLTIuNyA3LjUtNC4xIDE1LjYtNC4xIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQwOGMxMy4zIDAgMjQtMTAuNyAyNC0yNGMwLTguNC0xLjQtMTYuNS00LjEtMjRjLTguNi0yNC4zLTI5LjktNDIuNi01NS45LTQ3ek01MTIgMTc2YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTMyMCAyNTZhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6XCJdXG59O1xudmFyIGZhUGVvcGxlUm9vZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtcm9vZicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUzN1wiLCBcIk0zMzUuNSA0bDI4OCAxNjBjMTUuNCA4LjYgMjEgMjguMSAxMi40IDQzLjVzLTI4LjEgMjEtNDMuNSAxMi40TDMyMCA2OC42IDQ3LjUgMjIwYy0xNS40IDguNi0zNC45IDMtNDMuNS0xMi40cy0zLTM0LjkgMTIuNC00My41TDMwNC41IDRjOS43LTUuNCAyMS40LTUuNCAzMS4xIDB6TTMyMCAxNjBhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwek0xNDQgMjU2YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHptMzEyIDQwYTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTIyNi45IDQ5MS40TDIwMCA0NDEuNVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMTIwYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDEuNUw2MS4xIDQ5MS40Yy02LjMgMTEuNy0yMC44IDE2LTMyLjUgOS44cy0xNi0yMC44LTkuOC0zMi41bDM3LjktNzAuM2MxNS4zLTI4LjUgNDUuMS00Ni4zIDc3LjUtNDYuM2gxOS41YzE2LjMgMCAzMS45IDQuNSA0NS40IDEyLjZsMzMuNi02Mi4zYzE1LjMtMjguNSA0NS4xLTQ2LjMgNzcuNS00Ni4zaDE5LjVjMzIuNCAwIDYyLjEgMTcuOCA3Ny41IDQ2LjNsMzMuNiA2Mi4zYzEzLjUtOC4xIDI5LjEtMTIuNiA0NS40LTEyLjZoMTkuNWMzMi40IDAgNjIuMSAxNy44IDc3LjUgNDYuM2wzNy45IDcwLjNjNi4zIDExLjcgMS45IDI2LjItOS44IDMyLjVzLTI2LjIgMS45LTMyLjUtOS44TDU1MiA0NDEuNVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDcyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDEuNWwtMjYuOSA0OS45Yy02LjMgMTEuNy0yMC44IDE2LTMyLjUgOS44cy0xNi0yMC44LTkuOC0zMi41bDM2LjMtNjcuNWMtMS43LTEuNy0zLjItMy42LTQuMy01LjhMMzc2IDM0NS41VjQwMGMwIDE3LjctMTQuMyAzMi0zMiAzMkgyOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM0NS41bC0yNi45IDQ5LjljLTEuMiAyLjItMi42IDQuMS00LjMgNS44bDM2LjMgNjcuNWM2LjMgMTEuNyAxLjkgMjYuMi05LjggMzIuNXMtMjYuMiAxLjktMzIuNS05Ljh6XCJdXG59O1xudmFyIGZhUGVvcGxlTGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtbGluZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUzNFwiLCBcIk0zNjAgNzJhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHpNMTQ0IDIwOGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6TTQ5NiAyMDhhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek0yMDAgMzEzLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzYuMy02Ny41YzEuNy0xLjcgMy4yLTMuNiA0LjMtNS44TDI2NCAyMTcuNVYyNzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjE3LjVsMjYuOSA0OS45YzEuMiAyLjIgMi42IDQuMSA0LjMgNS44bC0zNi4zIDY3LjVjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDQ0MCAzMTMuNVYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzEzLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzcuOS03MC4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0g0ODYuMmMtMTYuMyAwLTMxLjkgNC41LTQ1LjQgMTIuNmwtMzMuNi02Mi4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0gzMTAuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNsLTMzLjYgNjIuM2MtMTMuNS04LjEtMjkuMS0xMi42LTQ1LjQtMTIuNkgxMzQuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNMMTguOSAzNDAuNmMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMODggMzEzLjVWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMxMy41elwiXVxufTtcbnZhciBmYUJlZXJNdWdFbXB0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiZWVyLW11Zy1lbXB0eScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYmVlclwiXSwgXCJmMGZjXCIsIFwiTTMyIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Nmg1MS4yYzQyLjQgMCA3Ni44IDM0LjQgNzYuOCA3Ni44VjI3NC45YzAgMzAuNC0xNy45IDU3LjktNDUuNiA3MC4yTDM4NCAzODEuN1Y0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRIOTZjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0zODQgMzExLjZsNTYuNC0yNS4xYzQuNi0yLjEgNy42LTYuNiA3LjYtMTEuN1YxNzIuOGMwLTcuMS01LjctMTIuOC0xMi44LTEyLjhIMzg0VjMxMS42ek0xNjAgMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE0NHptNjQgMGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzNjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDR6bTY0IDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTQ0elwiXVxufTtcbnZhciBmYUJlZXIgPSBmYUJlZXJNdWdFbXB0eTtcbnZhciBmYURpYWdyYW1QcmVkZWNlc3NvciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWFncmFtLXByZWRlY2Vzc29yJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNDc3XCIsIFwiTTQ0OCA0MTZsMC02NEw2NCAzNTJsMCA2NCAzODQgMHptMCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NGMwIDM1LjMtMjguNyA2NC02NCA2NHpNMjg4IDE2MGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCAyMjRjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMTQ0IDAgMTYgMCAxNDQgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDE2IDM4LjEgMGMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDQzMyAyMzljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDMyOSAxNjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDFsMzguMSAwIDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC04MCAwIDAgNjR6XCJdXG59O1xudmFyIGZhQXJyb3dVcExvbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtbG9uZycsXG4gIGljb246IFszODQsIDUxMiwgW1wibG9uZy1hcnJvdy11cFwiXSwgXCJmMTc2XCIsIFwiTTIxNC42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTYwIDEwOS4zVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjEwOS4zbDczLjQgNzMuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4elwiXVxufTtcbnZhciBmYUxvbmdBcnJvd1VwID0gZmFBcnJvd1VwTG9uZztcbnZhciBmYUZpcmVGbGFtZVNpbXBsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaXJlLWZsYW1lLXNpbXBsZScsXG4gIGljb246IFszODQsIDUxMiwgW1wiYnVyblwiXSwgXCJmNDZhXCIsIFwiTTM3Mi41IDI1Ni41bC0uNy0xLjlDMzM3LjggMTYwLjggMjgyIDc2LjUgMjA5LjEgOC41bC0zLjMtM0MyMDIuMSAyIDE5Ny4xIDAgMTkyIDBzLTEwLjEgMi0xMy44IDUuNWwtMy4zIDNDMTAyIDc2LjUgNDYuMiAxNjAuOCAxMi4yIDI1NC42bC0uNyAxLjlDMy45IDI3Ny4zIDAgMjk5LjQgMCAzMjEuNkMwIDQyNi43IDg2LjggNTEyIDE5MiA1MTJzMTkyLTg1LjMgMTkyLTE5MC40YzAtMjIuMi0zLjktNDQuMi0xMS41LTY1LjF6bS05MC44IDQ5LjVjNC4xIDkuMyA2LjIgMTkuNCA2LjIgMjkuNWMwIDUzLTQzIDk2LjUtOTYgOTYuNXMtOTYtNDMuNS05Ni05Ni41YzAtMTAuMSAyLjEtMjAuMyA2LjItMjkuNWwxLjktNC4zYzE1LjgtMzUuNCAzNy45LTY3LjcgNjUuMy05NS4xbDguOS04LjljMy42LTMuNiA4LjUtNS42IDEzLjYtNS42czEwIDIgMTMuNiA1LjZsOC45IDguOWMyNy40IDI3LjQgNDkuNiA1OS43IDY1LjMgOTUuMWwxLjkgNC4zelwiXVxufTtcbnZhciBmYUJ1cm4gPSBmYUZpcmVGbGFtZVNpbXBsZTtcbnZhciBmYVBlcnNvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMjk0ODUsIFwibWFsZVwiXSwgXCJmMTgzXCIsIFwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNTguMyA5N2M5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOUwyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6XCJdXG59O1xudmFyIGZhTWFsZSA9IGZhUGVyc29uO1xudmFyIGZhTGFwdG9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhcHRvcCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODE4N10sIFwiZjEwOVwiLCBcIk0xMjggMzJDOTIuNyAzMiA2NCA2MC43IDY0IDk2VjM1Mmg2NFY5Nkg1MTJWMzUyaDY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOHpNMTkuMiAzODRDOC42IDM4NCAwIDM5Mi42IDAgNDAzLjJDMCA0NDUuNiAzNC40IDQ4MCA3Ni44IDQ4MEg1NjMuMmM0Mi40IDAgNzYuOC0zNC40IDc2LjgtNzYuOGMwLTEwLjYtOC42LTE5LjItMTkuMi0xOS4ySDE5LjJ6XCJdXG59O1xudmFyIGZhRmlsZUNzdiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWNzdicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZkZFwiLCBcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYzMDRIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY1MTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjAwIDM1MmgxNmMyMi4xIDAgNDAgMTcuOSA0MCA0MHY4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2di04YzAtNC40LTMuNi04LTgtOEgyMDBjLTQuNCAwLTggMy42LTggOHY4MGMwIDQuNCAzLjYgOCA4IDhoMTZjNC40IDAgOC0zLjYgOC04di04YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OGMwIDIyLjEtMTcuOSA0MC00MCA0MEgyMDBjLTIyLjEgMC00MC0xNy45LTQwLTQwVjM5MmMwLTIyLjEgMTcuOS00MCA0MC00MHptMTMzLjEgMEgzNjhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzMzLjFjLTcuMiAwLTEzLjEgNS45LTEzLjEgMTMuMWMwIDUuMiAzIDkuOSA3LjggMTJsMzcuNCAxNi42YzE2LjMgNy4yIDI2LjggMjMuNCAyNi44IDQxLjJjMCAyNC45LTIwLjIgNDUuMS00NS4xIDQ1LjFIMzA0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDQyLjljNy4yIDAgMTMuMS01LjkgMTMuMS0xMy4xYzAtNS4yLTMtOS45LTcuOC0xMmwtMzcuNC0xNi42Yy0xNi4zLTcuMi0yNi44LTIzLjQtMjYuOC00MS4yYzAtMjQuOSAyMC4yLTQ1LjEgNDUuMS00NS4xem05OC45IDBjOC44IDAgMTYgNy4yIDE2IDE2djMxLjZjMCAyMyA1LjUgNDUuNiAxNiA2NmMxMC41LTIwLjMgMTYtNDIuOSAxNi02NlYzNjhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYzMS42YzAgMzQuNy0xMC4zIDY4LjctMjkuNiA5Ny42bC01LjEgNy43Yy0zIDQuNS04IDcuMS0xMy4zIDcuMXMtMTAuMy0yLjctMTMuMy03LjFsLTUuMS03LjdjLTE5LjMtMjguOS0yOS42LTYyLjktMjkuNi05Ny42VjM2OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhTWVub3JhaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZW5vcmFoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjc2XCIsIFwiTTIwLjggNy40QzIyLjggMi45IDI3LjEgMCAzMiAwczkuMiAyLjkgMTEuMiA3LjRMNjEuMyA0OS43YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMlMwIDgxLjcgMCA2NFY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwyMC44IDcuNHptOTYgMEMxMTguOCAyLjkgMTIzLjEgMCAxMjggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjFMMTE2LjggNy40em03Ny44IDQyLjRMMjEyLjggNy40QzIxNC44IDIuOSAyMTkuMSAwIDIyNCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMXpNMzA4LjggNy40QzMxMC44IDIuOSAzMTUuMSAwIDMyMCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMVY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2Mi44YzAtNC41IC45LTguOSAyLjctMTMuMUwzMDguOCA3LjR6bTc3LjggNDIuNEw0MDQuOCA3LjRDNDA2LjggMi45IDQxMS4xIDAgNDE2IDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xek01MDAuOCA3LjRDNTAyLjggMi45IDUwNy4xIDAgNTEyIDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xVjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjYyLjhjMC00LjUgLjktOC45IDIuNy0xMy4xTDUwMC44IDcuNHptNzcuOCA0Mi40TDU5Ni44IDcuNEM1OTguOCAyLjkgNjAzLjEgMCA2MDggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjIuOGMwLTQuNSAuOS04LjkgMi43LTEzLjF6TTMyIDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjg4VjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjMyMEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjg4YzAgNTMtNDMgOTYtOTYgOTZIMzUydjY0SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjAgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI4OFYzODRIOTZjLTUzIDAtOTYtNDMtOTYtOTZWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDk2VjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTYgMzJIMTkyVjI1NiAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDM4NFYyNTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2IDMySDQ4MFYyNTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYVRydWNrUGxhbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stcGxhbmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OGZcIiwgXCJNMjAwIDBjLTMwLjYgMC01NiA1NC43LTU2IDg2LjFWMTkyLjVMNy44IDI3NC4zQzIuOSAyNzcuMiAwIDI4Mi40IDAgMjg4djY0YzAgNS4xIDIuNCA5LjggNi40IDEyLjhzOS4zIDMuOSAxNC4xIDIuNWwxMjMuNC0zN3Y4MS4ybC01MCA0MGMtMy44IDMtNiA3LjYtNiAxMi41djMyYzAgNS4xIDIuNSAxMCA2LjYgMTNzOS41IDMuOCAxNC40IDIuMkwyMDAgNDgwLjkgMjkwLjQgNTExYy0xLjYtNC43LTIuNC05LjgtMi40LTE1VjQ2My40Yy0xOC4yLTEwLjUtMzAuNy0yOS43LTMxLjktNTEuOGwtLjEtLjFWNDA4IDMyNS41IDE4NGwwLTEuMSAwIDBWODYuMUMyNTYgNTQuNyAyMzEuNSAwIDIwMCAwem04OCAxNzZWNDAwYzAgMjAuOSAxMy40IDM4LjcgMzIgNDUuM1Y0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNDQ4SDU0NHY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDUuM2MxOC42LTYuNiAzMi0yNC40IDMyLTQ1LjNWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMzNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh6bTc5LjggNzguN2MzLjMtOC43IDExLjItMTQuNyAyMC41LTE0LjdINTM5LjdjOS4yIDAgMTcuMiA2IDIwLjUgMTQuN0w1NzYgMzA0SDM1MmwxNS44LTQ5LjN6TTU2OCAzNTJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek0zMzYgMzc2YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJdXG59O1xudmFyIGZhUmVjb3JkVmlueWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVjb3JkLXZpbnlsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmOGQ5XCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMjU2LTk2YTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyem0wIDIyNGExMjggMTI4IDAgMSAwIDAtMjU2IDEyOCAxMjggMCAxIDAgMCAyNTZ6bTAtOTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbnZhciBmYUZhY2VHcmluU3RhcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLXN0YXJzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzIxLCBcImdyaW4tc3RhcnNcIl0sIFwiZjU4N1wiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTQwNy40IDc1LjVjNS0xMS44LTctMjIuNS0xOS4zLTE4LjdjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41ek0xNjAgMTIwYy0zLjEgMC01LjkgMS44LTcuMiA0LjZsLTE2LjYgMzQuNy0zOC4xIDVjLTMuMSAuNC01LjYgMi41LTYuNiA1LjVzLS4xIDYuMiAyLjEgOC4zbDI3LjkgMjYuNS03IDM3LjhjLS42IDMgLjcgNi4xIDMuMiA3LjlzNS44IDIgOC41IC42TDE2MCAyMzIuNWwzMy44IDE4LjNjMi43IDEuNSA2IDEuMyA4LjUtLjZzMy43LTQuOSAzLjItNy45bC03LTM3LjhMMjI2LjQgMTc4YzIuMi0yLjEgMy4xLTUuMyAyLjEtOC4zcy0zLjUtNS4xLTYuNi01LjVsLTM4LjEtNS0xNi42LTM0LjdjLTEuMy0yLjgtNC4xLTQuNi03LjItNC42em0xOTIgMGMtMy4xIDAtNS45IDEuOC03LjIgNC42bC0xNi42IDM0LjctMzguMSA1Yy0zLjEgLjQtNS42IDIuNS02LjYgNS41cy0uMSA2LjIgMi4xIDguM2wyNy45IDI2LjUtNyAzNy44Yy0uNiAzIC43IDYuMSAzLjIgNy45czUuOCAyIDguNSAuNkwzNTIgMjMyLjVsMzMuOCAxOC4zYzIuNyAxLjUgNiAxLjMgOC41LS42czMuNy00LjkgMy4yLTcuOWwtNy0zNy44TDQxOC40IDE3OGMyLjItMi4xIDMuMS01LjMgMi4xLTguM3MtMy41LTUuMS02LjYtNS41bC0zOC4xLTUtMTYuNi0zNC43Yy0xLjMtMi44LTQuMS00LjYtNy4yLTQuNnpcIl1cbn07XG52YXIgZmFHcmluU3RhcnMgPSBmYUZhY2VHcmluU3RhcnM7XG52YXIgZmFCb25nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1NWNcIiwgXCJNMTYwIDIwOC41YzAgMjkuMS0xNS42IDUzLjktMzcuMiA2Ny44Yy0xNy4yIDExLjEtMzEuNSAyNi4xLTQxLjcgNDMuN0gzMDIuOWMtMTAuMi0xNy42LTI0LjUtMzIuNi00MS43LTQzLjdjLTIxLjYtMTMuOS0zNy4yLTM4LjctMzcuMi02Ny44VjY0SDE2MFYyMDguNXpNMjg4IDY0VjIwOC41YzAgNS43IDMuMSAxMC45IDcuOSAxNGMxMS4yIDcuMiAyMS41IDE1LjUgMzAuOSAyNC44TDM2Ni4xIDIwOGwtNy03Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjQgMjQgMjQgMjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNy03LTQzLjMgNDMuM0MzNzQgMzE0LjEgMzg0IDM0Ny45IDM4NCAzODRjMCAzOS40LTExLjkgNzYuMS0zMi4yIDEwNi41Yy05LjYgMTQuNC0yNi41IDIxLjUtNDMuOCAyMS41SDc2LjFjLTE3LjMgMC0zNC4yLTcuMS00My44LTIxLjVDMTEuOSA0NjAuMSAwIDQyMy40IDAgMzg0YzAtNjcuOCAzNS4xLTEyNy4zIDg4LjEtMTYxLjVjNC44LTMuMSA3LjktOC4zIDcuOS0xNFY2NEM3OC4zIDY0IDY0IDQ5LjcgNjQgMzJTNzguMyAwIDk2IDBoMTZIMjcyaDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyelwiXVxufTtcbnZhciBmYVNwYWdoZXR0aU1vbnN0ZXJGbHlpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3BhZ2hldHRpLW1vbnN0ZXItZmx5aW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJwYXN0YWZhcmlhbmlzbVwiXSwgXCJmNjdiXCIsIFwiTTIwOCA2NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAwYzAgMTYuMi02IDMxLjEtMTYgNDIuM2wxNS42IDMxLjJjMTguNy02IDM5LjktOS41IDY0LjQtOS41czQ1LjggMy41IDY0LjQgOS41TDQwMCAxMDYuM0MzOTAgOTUuMSAzODQgODAuMiAzODQgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtMS43IDAtMy40LS4xLTUuMS0uMkw0MjcuOCAxNThjMjEuMSAxMy42IDM3LjcgMzAuMiA1MS40IDQ2LjRjNy4xIDguMyAxMy41IDE2LjYgMTkuMyAyNGwxLjQgMS44YzYuMyA4LjEgMTEuNiAxNC44IDE2LjcgMjAuNEM1MjcuMyAyNjIuMyA1MzIuNyAyNjQgNTM2IDI2NGMyLjUgMCA0LjMtLjYgNy4xLTMuM2MzLjctMy41IDcuMS04LjggMTIuNS0xNy40bC42LS45YzQuNi03LjQgMTEtMTcuNiAxOS40LTI1LjdjOS43LTkuMyAyMi45LTE2LjcgNDAuNC0xNi43YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yLjUgMC00LjMgLjYtNy4xIDMuM2MtMy43IDMuNS03LjEgOC44LTEyLjUgMTcuNGwtLjYgLjljLTQuNiA3LjQtMTEgMTcuNi0xOS40IDI1LjdjLTkuNyA5LjMtMjIuOSAxNi43LTQwLjQgMTYuN2MtMTguNSAwLTMyLjktOC41LTQ0LjMtMTguNmMtMy4xIDQtNi42IDguMy0xMC41IDEyLjdjMS40IDQuMyAyLjggOC41IDQgMTIuNWMuOSAzIDEuOCA1LjggMi42IDguNmMzIDkuOCA1LjUgMTguMiA4LjYgMjUuOWMzLjkgOS44IDcuNCAxNS40IDEwLjggMTguNWMyLjYgMi40IDUuOSA0LjMgMTIuOCA0LjNjOC43IDAgMTYuOS00LjIgMzMuNy0xMy4yYzE1LTggMzUuNy0xOC44IDYyLjMtMTguOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTMuNCAwLTI0LjcgNS4yLTM5LjcgMTMuMmMtMSAuNi0yLjEgMS4xLTMuMiAxLjdDNTU5LjkgNDE0IDU0MS40IDQyNCA1MjAgNDI0Yy0xOC40IDAtMzMuNi02LjEtNDUuNS0xNy4yYy0xMS4xLTEwLjMtMTcuOS0yMy43LTIyLjctMzZjLTMuNi05LTYuNy0xOS4xLTkuNS0yOC41Yy0xNi40IDEyLjMtMzYuMSAyMy42LTU4LjkgMzEuM2MzLjYgMTAuOCA4LjQgMjMuNSAxNC40IDM2LjJjNy41IDE1LjkgMTYuMiAzMC40IDI1LjggNDAuNUM0MzMgNDYwLjUgNDQxLjIgNDY0IDQ0OCA0NjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI1LjIgMC00NS0xMy41LTU5LjUtMjguOGMtMTQuNS0xNS40LTI1LjctMzQuOS0zNC4yLTUzYy04LTE3LTE0LjEtMzMuOC0xOC4zLTQ2LjljLTUuMiAuNC0xMC42IC42LTE2IC42cy0xMC44LS4yLTE2LS42Yy00LjIgMTMtMTAuMyAyOS45LTE4LjMgNDYuOWMtOC41IDE4LjEtMTkuOCAzNy42LTM0LjIgNTNDMjM3IDQ5OC41IDIxNy4yIDUxMiAxOTIgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzYuOCAwIDE1LTMuNSAyNC41LTEzLjdjOS41LTEwLjEgMTguMy0yNC42IDI1LjgtNDAuNWM1LjktMTIuNiAxMC43LTI1LjQgMTQuNC0zNi4yYy0yMi44LTcuNy00Mi41LTE5LTU4LjktMzEuM2MtMi45IDkuNC02IDE5LjUtOS41IDI4LjVjLTQuOCAxMi4yLTExLjYgMjUuNi0yMi43IDM2QzE1My42IDQxNy45IDEzOC40IDQyNCAxMjAgNDI0Yy0yMS40IDAtMzkuOS0xMC01My4xLTE3LjFsMCAwYy0xLjEtLjYtMi4yLTEuMi0zLjItMS43Yy0xNS04LTI2LjMtMTMuMi0zOS43LTEzLjJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRjMjYuNiAwIDQ3LjMgMTAuOCA2Mi4zIDE4LjhjMTYuOCA5IDI1IDEzLjIgMzMuNyAxMy4yYzYuOCAwIDEwLjItMS45IDEyLjgtNC4zYzMuNC0zLjIgNy04LjggMTAuOC0xOC41YzMtNy43IDUuNi0xNi4xIDguNi0yNS45Yy44LTIuNyAxLjctNS42IDIuNi04LjZjMS4yLTQgMi42LTguMiA0LTEyLjVjLTMuOS00LjUtNy40LTguOC0xMC41LTEyLjdDMTM2LjkgMzAzLjUgMTIyLjUgMzEyIDEwNCAzMTJjLTE3LjUgMC0zMC43LTcuNC00MC40LTE2LjdjLTguNC04LjEtMTQuOC0xOC4zLTE5LjQtMjUuN2wtLjYtLjljLTUuNC04LjYtOC44LTEzLjktMTIuNS0xNy40Yy0yLjgtMi43LTQuNi0zLjMtNy4xLTMuM2MtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMxNy41IDAgMzAuNyA3LjQgNDAuNCAxNi43YzguNCA4LjEgMTQuOCAxOC4zIDE5LjQgMjUuN2wuNiAuOWM1LjQgOC42IDguOCAxMy45IDEyLjUgMTcuNGMyLjggMi43IDQuNiAzLjMgNy4xIDMuM2MzLjMgMCA4LjctMS43IDE5LjQtMTMuNGM1LjEtNS42IDEwLjQtMTIuMyAxNi43LTIwLjRsMS40LTEuOGM1LjgtNy40IDEyLjItMTUuNyAxOS4zLTI0YzEzLjgtMTYuMiAzMC4zLTMyLjggNTEuNC00Ni40bC0xNS4xLTMwLjJjLTEuNyAuMS0zLjQgLjItNS4xIC4yYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR6bTIwOCAwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJdXG59O1xudmFyIGZhUGFzdGFmYXJpYW5pc20gPSBmYVNwYWdoZXR0aU1vbnN0ZXJGbHlpbmc7XG52YXIgZmFBcnJvd0Rvd25VcEFjcm9zc0xpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bi11cC1hY3Jvc3MtbGluZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRhZlwiLCBcIk0xMzcuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxOTIgNDAyLjdWMjg4SDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NDhWMTA5LjNsNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMzg0IDEwOS4zVjIyNEgxOTIgMTI4IDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2VjQwMi43TDg2LjYgMzYxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2ek0xMjggMTkyaDY0VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjE5MnpNNDQ4IDMyMEgzODRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzIwelwiXVxufTtcbnZhciBmYVNwb29uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nwb29uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzQ4LCA2MTg3MywgXCJ1dGVuc2lsLXNwb29uXCJdLCBcImYyZTVcIiwgXCJNMjQ1LjggMjIwLjljLTE0LjUtMTcuNi0yMS44LTM5LjItMjEuOC02MC44QzIyNCA4MCAzMjAgMCA0MTYgMGM1MyAwIDk2IDQzIDk2IDk2YzAgOTYtODAgMTkyLTE2MC4yIDE5MmMtMjEuNiAwLTQzLjItNy4zLTYwLjgtMjEuOEw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDUuOCAyMjAuOXpcIl1cbn07XG52YXIgZmFVdGVuc2lsU3Bvb24gPSBmYVNwb29uO1xudmFyIGZhSmFyV2hlYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnamFyLXdoZWF0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlNTE3XCIsIFwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem0xMTIgMEg2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMTk4IDkwIDIyNCAxMjIuMiAyMjRIMTQ0aDMyIDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6bTQ4IDExNy43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjdINjkuOGMtMy4yIDAtNS44IDIuNi01LjggNS44QzY0IDI5NCA5MCAzMjAgMTIyLjIgMzIwSDE0NGgzMiAyMS44YzMyLjEgMCA1OC4yLTI2IDU4LjItNTguMmMwLTMuMi0yLjYtNS44LTUuOC01LjhIMjA4Yy0xOS4xIDAtMzYuMyA4LjQtNDggMjEuN3pNMTEyIDM1Mkg2OS44Yy0zLjIgMC01LjggMi42LTUuOCA1LjhDNjQgMzkwIDkwIDQxNiAxMjIuMiA0MTZIMTQ0djMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDE2aDIxLjhjMzIuMSAwIDU4LjItMjYgNTguMi01OC4yYzAtMy4yLTIuNi01LjgtNS44LTUuOEgyMDhjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6XCJdXG59O1xudmFyIGZhRW52ZWxvcGVzQnVsayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbnZlbG9wZXMtYnVsaycsXG4gIGljb246IFs2NDAsIDUxMiwgW1wibWFpbC1idWxrXCJdLCBcImY2NzRcIiwgXCJNMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMyVjIyNGg5NlYxOTJjMC0zNS4zIDI4LjctNjQgNjQtNjRINDgwVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDEyOHpNMjU2IDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJoOTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2SDU3NmMxNy43IDAgMzItMTQuMyAzMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2em0yNDAgNjRoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0OTZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2ek02NCAyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjEzTDE4Ny4xIDQxNS45YzEuNCAxIDMuMSAxLjYgNC45IDEuNnMzLjUtLjYgNC45LTEuNkwzNTIgMzAxVjI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMkg2NHptMjg4IDg0LjhMMjE2IDQ0MS42Yy02LjkgNS4xLTE1LjMgNy45LTI0IDcuOXMtMTctMi44LTI0LTcuOUwzMiAzNDAuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM0MC44elwiXVxufTtcbnZhciBmYU1haWxCdWxrID0gZmFFbnZlbG9wZXNCdWxrO1xudmFyIGZhRmlsZUNpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtY2lyY2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGViXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHptNDggOTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTAtMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2ODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyODhjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUNpcmNsZUggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5NDA1LCBcImhvc3BpdGFsLXN5bWJvbFwiXSwgXCJmNDdlXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNjggMTUyVjI1NiAzNjBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDE5MmwwIDgwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMjA4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2ODBIMzIwVjE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0elwiXVxufTtcbnZhciBmYUhvc3BpdGFsU3ltYm9sID0gZmFDaXJjbGVIO1xudmFyIGZhUGFnZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFnZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyMjNdLCBcImY4MTVcIiwgXCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4em02NCAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNODAgMzIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDgwem0xMzYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMTZ6XCJdXG59O1xudmFyIGZhQWRkcmVzc0Jvb2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYWRkcmVzcy1ib29rJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjIxMzgsIFwiY29udGFjdC1ib29rXCJdLCBcImYyYjlcIiwgXCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMDggMjg4aDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNTEyIDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWODB6TTQ5NiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZ6bTE2IDE0NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMzNnpcIl1cbn07XG52YXIgZmFDb250YWN0Qm9vayA9IGZhQWRkcmVzc0Jvb2s7XG52YXIgZmFTdHJpa2V0aHJvdWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0cmlrZXRocm91Z2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwY2NcIiwgXCJNMTYxLjMgMTQ0YzMuMi0xNy4yIDE0LTMwLjEgMzMuNy0zOC42YzIxLjEtOSA1MS44LTEyLjMgODguNi02LjVjMTEuOSAxLjkgNDguOCA5LjEgNjAuMSAxMmMxNy4xIDQuNSAzNC42LTUuNiAzOS4yLTIyLjdzLTUuNi0zNC42LTIyLjctMzkuMmMtMTQuMy0zLjgtNTMuNi0xMS40LTY2LjYtMTMuNGMtNDQuNy03LTg4LjMtNC4yLTEyMy43IDEwLjljLTM2LjUgMTUuNi02NC40IDQ0LjgtNzEuOCA4Ny4zYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjggMjMuOSAuNSA0NS42IDEwLjEgNjQuNmM0LjUgOSAxMC4yIDE2LjkgMTYuNyAyMy45SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNzAuMWMtLjEgMC0uMy0uMS0uNC0uMWwtMS4xLS4zYy0zNi0xMC44LTY1LjItMTkuNi04NS4yLTMzLjFjLTkuMy02LjMtMTUtMTIuNi0xOC4yLTE5LjFjLTMuMS02LjEtNS4yLTE0LjYtMy44LTI3LjR6TTM0OC45IDMzNy4yYzIuNyA2LjUgNC40IDE1LjggMS45IDMwLjFjLTMgMTcuNi0xMy44IDMwLjgtMzMuOSAzOS40Yy0yMS4xIDktNTEuNyAxMi4zLTg4LjUgNi41Yy0xOC0yLjktNDkuMS0xMy41LTc0LjQtMjIuMWMtNS42LTEuOS0xMS0zLjctMTUuOS01LjRjLTE2LjgtNS42LTM0LjkgMy41LTQwLjUgMjAuM3MzLjUgMzQuOSAyMC4zIDQwLjVjMy42IDEuMiA3LjkgMi43IDEyLjcgNC4zbDAgMCAwIDBjMjQuOSA4LjUgNjMuNiAyMS43IDg3LjYgMjUuNmwwIDAgLjIgMGM0NC43IDcgODguMyA0LjIgMTIzLjctMTAuOWMzNi41LTE1LjYgNjQuNC00NC44IDcxLjgtODcuM2MzLjYtMjEgMi43LTQwLjQtMy4xLTU4LjFIMzM1LjFjNyA1LjYgMTEuNCAxMS4yIDEzLjkgMTcuMnpcIl1cbn07XG52YXIgZmFLID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2snLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMDddLCBcIjRiXCIsIFwiTTMxMSA4Ni4zYzEyLjMtMTIuNyAxMi0zMi45LS43LTQ1LjJzLTMyLjktMTItNDUuMiAuN2wtMTU1LjIgMTYwTDY0IDI0OVY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFYzMjggNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzQxbDY0LjctNjYuNyAxMzMgMTkyYzEwLjEgMTQuNSAzMCAxOC4xIDQ0LjUgOC4xczE4LjEtMzAgOC4xLTQ0LjVMMTc0LjEgMjI3LjQgMzExIDg2LjN6XCJdXG59O1xudmFyIGZhTGFuZG1hcmtGbGFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhbmRtYXJrLWZsYWcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1MWNcIiwgXCJNMjcyIDBoODBjOC44IDAgMTYgNy4yIDE2IDE2VjgwYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJ2MzJINDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI0MFYxNmMwLTguOCA3LjItMTYgMTYtMTZoMTZ6TTY0IDIyNGg2NFY0MTZoNDBWMjI0aDY0VjQxNmg0OFYyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MjAuM2MuNiAuMyAxLjIgLjcgMS44IDEuMWw0OCAzMmMxMS43IDcuOCAxNyAyMi40IDEyLjkgMzUuOVM0OTQuMSA1MTIgNDgwIDUxMkgzMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFWMjI0elwiXVxufTtcbnZhciBmYVBlbmNpbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW5jaWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5OTk5LCA2MTUwNCwgXCJwZW5jaWwtYWx0XCJdLCBcImYzMDNcIiwgXCJNNDEwLjMgMjMxbDExLjMtMTEuMy0zMy45LTMzLjktNjIuMS02Mi4xTDI5MS43IDg5LjhsLTExLjMgMTEuMy0yMi42IDIyLjZMNTguNiAzMjIuOWMtMTAuNCAxMC40LTE4IDIzLjMtMjIuMiAzNy40TDEgNDgwLjdjLTIuNSA4LjQtLjIgMTcuNSA2LjEgMjMuN3MxNS4zIDguNSAyMy43IDYuMWwxMjAuMy0zNS40YzE0LjEtNC4yIDI3LTExLjggMzcuNC0yMi4yTDM4Ny43IDI1My43IDQxMC4zIDIzMXpNMTYwIDM5OS40bC05LjEgMjIuN2MtNCAzLjEtOC41IDUuNC0xMy4zIDYuOUw1OS40IDQ1MmwyMy03OC4xYzEuNC00LjkgMy44LTkuNCA2LjktMTMuM2wyMi43LTkuMXYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJ6TTM2Mi43IDE4LjdMMzQ4LjMgMzMuMiAzMjUuNyA1NS44IDMxNC4zIDY3LjFsMzMuOSAzMy45IDYyLjEgNjIuMSAzMy45IDMzLjkgMTEuMy0xMS4zIDIyLjYtMjIuNiAxNC41LTE0LjVjMjUtMjUgMjUtNjUuNSAwLTkwLjVMNDUzLjMgMTguN2MtMjUtMjUtNjUuNS0yNS05MC41IDB6bS00Ny40IDE2OGwtMTQ0IDE0NGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwxNDQtMTQ0YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIl1cbn07XG52YXIgZmFQZW5jaWxBbHQgPSBmYVBlbmNpbDtcbnZhciBmYUJhY2t3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY2t3YXJkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTE5NF0sIFwiZjA0YVwiLCBcIk00NTkuNSA0NDAuNmM5LjUgNy45IDIyLjggOS43IDM0LjEgNC40czE4LjQtMTYuNiAxOC40LTI5Vjk2YzAtMTIuNC03LjItMjMuNy0xOC40LTI5cy0yNC41LTMuNi0zNC4xIDQuNEwyODggMjE0LjNWMjU2djQxLjdMNDU5LjUgNDQwLjZ6TTI1NiAzNTJWMjU2IDEyOCA5NmMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRsLTE5MiAxNjBDNC4yIDIzNy41IDAgMjQ2LjUgMCAyNTZzNC4yIDE4LjUgMTEuNSAyNC42bDE5MiAxNjBjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOVYzNTJ6XCJdXG59O1xudmFyIGZhQ2FyZXRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1yaWdodCcsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjBkYVwiLCBcIk0yNDYuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlzLTE5LjggMTYuNi0xOS44IDI5LjZsMCAyNTZjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWwxMjgtMTI4elwiXVxufTtcbnZhciBmYUNvbW1lbnRzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbW1lbnRzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NDkwLCA2MTY3MF0sIFwiZjA4NlwiLCBcIk0yMDggMzUyYzExNC45IDAgMjA4LTc4LjggMjA4LTE3NlMzMjIuOSAwIDIwOCAwUzAgNzguOCAwIDE3NmMwIDM4LjYgMTQuNyA3NC4zIDM5LjYgMTAzLjRjLTMuNSA5LjQtOC43IDE3LjctMTQuMiAyNC43Yy00LjggNi4yLTkuNyAxMS0xMy4zIDE0LjNjLTEuOCAxLjYtMy4zIDIuOS00LjMgMy43Yy0uNSAuNC0uOSAuNy0xLjEgLjhsLS4yIC4yIDAgMCAwIDBDMSAzMjcuMi0xLjQgMzM0LjQgLjggMzQwLjlTOS4xIDM1MiAxNiAzNTJjMjEuOCAwIDQzLjgtNS42IDYyLjEtMTIuNWM5LjItMy41IDE3LjgtNy40IDI1LjMtMTEuNEMxMzQuMSAzNDMuMyAxNjkuOCAzNTIgMjA4IDM1MnpNNDQ4IDE3NmMwIDExMi4zLTk5LjEgMTk2LjktMjE2LjUgMjA3QzI1NS44IDQ1Ny40IDMzNi40IDUxMiA0MzIgNTEyYzM4LjIgMCA3My45LTguNyAxMDQuNy0yMy45YzcuNSA0IDE2IDcuOSAyNS4yIDExLjRjMTguMyA2LjkgNDAuMyAxMi41IDYyLjEgMTIuNWM2LjkgMCAxMy4xLTQuNSAxNS4yLTExLjFjMi4xLTYuNi0uMi0xMy44LTUuOC0xNy45bDAgMCAwIDAtLjItLjJjLS4yLS4yLS42LS40LTEuMS0uOGMtMS0uOC0yLjUtMi00LjMtMy43Yy0zLjYtMy4zLTguNS04LjEtMTMuMy0xNC4zYy01LjUtNy0xMC43LTE1LjQtMTQuMi0yNC43YzI0LjktMjkgMzkuNi02NC43IDM5LjYtMTAzLjRjMC05Mi44LTg0LjktMTY4LjktMTkyLjYtMTc1LjVjLjQgNS4xIC42IDEwLjMgLjYgMTUuNXpcIl1cbn07XG52YXIgZmFQYXN0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXN0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZmlsZS1jbGlwYm9hcmRcIl0sIFwiZjBlYVwiLCBcIk0xNjAgMGMtMjMuNyAwLTQ0LjQgMTIuOS01NS40IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODBWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDE5MlYxNzZjMC00NC4yIDM1LjgtODAgODAtODBoNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjE1LjRDMjA0LjQgMTIuOSAxODMuNyAwIDE2MCAwek0yNzIgMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OFY0NDh2MTZjMCAyNi41IDIxLjUgNDggNDggNDhINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1Nkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOEgzMjAgMjcyek0xNjAgNDBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0yNTYgODh2OTZoOTZsLTk2LTk2elwiXVxufTtcbnZhciBmYUZpbGVDbGlwYm9hcmQgPSBmYVBhc3RlO1xudmFyIGZhQ29kZVB1bGxSZXF1ZXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvZGUtcHVsbC1yZXF1ZXN0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMTNjXCIsIFwiTTMwNS44IDIuMUMzMTQuNCA1LjkgMzIwIDE0LjUgMzIwIDI0VjY0aDE2YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4VjM1OC43YzI4LjMgMTIuMyA0OCA0MC41IDQ4IDczLjNjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0zMi44IDE5LjctNjEgNDgtNzMuM1YxOTJjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzIwdjQwYzAgOS41LTUuNiAxOC4xLTE0LjIgMjEuOXMtMTguOCAyLjMtMjUuOC00LjFsLTgwLTcyYy01LjEtNC42LTcuOS0xMS03LjktMTcuOHMyLjktMTMuMyA3LjktMTcuOGw4MC03MmM3LTYuMyAxNy4yLTcuOSAyNS44LTQuMXpNMTA0IDgwQTI0IDI0IDAgMSAwIDU2IDgwYTI0IDI0IDAgMSAwIDQ4IDB6bTggNzMuM1YzNTguN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNWMTUzLjNDMTkuNyAxNDEgMCAxMTIuOCAwIDgwQzAgMzUuOCAzNS44IDAgODAgMHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjN6TTEwNCA0MzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptMzI4IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIl1cbn07XG52YXIgZmFDbGlwYm9hcmRMaXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NsaXBib2FyZC1saXN0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDZkXCIsIFwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjgyLjVDMjY5LjQgMjYuNyAyMzMuOCAwIDE5MiAwem0wIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNzIgMjcyYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEwNC0xNkgzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek03MiAzNjhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptODggMGMwLTguOCA3LjItMTYgMTYtMTZIMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2elwiXVxufTtcbnZhciBmYVRydWNrUmFtcEJveCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1yYW1wLWJveCcsXG4gIGljb246IFs2NDAsIDUxMiwgW1widHJ1Y2stbG9hZGluZ1wiXSwgXCJmNGRlXCIsIFwiTTY0MCAwVjQwMGMwIDYxLjktNTAuMSAxMTItMTEyIDExMmMtNjEgMC0xMTAuNS00OC43LTExMi0xMDkuM0w0OC40IDUwMi45Yy0xNy4xIDQuNi0zNC42LTUuNC0zOS4zLTIyLjVzNS40LTM0LjYgMjIuNS0zOS4zTDM1MiAzNTMuOFY2NGMwLTM1LjMgMjguNy02NCA2NC02NEg2NDB6TTU3NiA0MDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMjMuMSAyMDcuN2MtNC42LTE3LjEgNS42LTM0LjYgMjIuNi0zOS4ybDQ2LjQtMTIuNCAyMC43IDc3LjNjMi4zIDguNSAxMS4xIDEzLjYgMTkuNiAxMS4zbDMwLjktOC4zYzguNS0yLjMgMTMuNi0xMS4xIDExLjMtMTkuNmwtMjAuNy03Ny4zIDQ2LjQtMTIuNGMxNy4xLTQuNiAzNC42IDUuNiAzOS4yIDIyLjZsNDEuNCAxNTQuNWM0LjYgMTcuMS01LjYgMzQuNi0yMi42IDM5LjJMMTAzLjcgMzg0LjljLTE3LjEgNC42LTM0LjYtNS42LTM5LjItMjIuNkwyMy4xIDIwNy43elwiXVxufTtcbnZhciBmYVRydWNrTG9hZGluZyA9IGZhVHJ1Y2tSYW1wQm94O1xudmFyIGZhVXNlckNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZmNcIiwgXCJNOTYgMTI4YTEyOCAxMjggMCAxIDEgMjU2IDBBMTI4IDEyOCAwIDEgMSA5NiAxMjh6TTAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDRoOTEuNEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM3pNNjI1IDE3N0w0OTcgMzA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0N0w1OTEgMTQzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIl1cbn07XG52YXIgZmFWaWFsVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlhbC12aXJ1cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU5N1wiLCBcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZWMzg0YzAgNTMgNDMgOTYgOTYgOTZjMjguNiAwIDU0LjItMTIuNSA3MS44LTMyLjNjLjEtMTQuMiA1LjYtMjguMyAxNi40LTM5LjFjLjItLjIgLjEtLjYtLjItLjZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2czI1LjEtNTYgNTYtNTZjLjMgMCAuNC0uNCAuMi0uNmMtMjEuOS0yMS45LTIxLjktNTcuMyAwLTc5LjJjMi40LTIuNCA1LTQuNiA3LjgtNi41Vjk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MCA5NiAzMnpNOTYgMTkyVjk2aDY0djk2SDk2ek0yMTYgMzc2YzI4LjggMCA0My4yIDM0LjggMjIuOSA1NS4yYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBjMjAuNC0yMC40IDU1LjItNS45IDU1LjIgMjIuOWMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMjguOCAzNC44LTQzLjIgNTUuMi0yMi45YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUM0NDQuOCA0MTAuOCA0NTkuMiAzNzYgNDg4IDM3NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGMtMjguOCAwLTQzLjItMzQuOC0yMi45LTU1LjJjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEM0MTAuOCAyNTkuMiAzNzYgMjQ0LjggMzc2IDIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGMwIDI4LjgtMzQuOCA0My4yLTU1LjIgMjIuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWMyMC40IDIwLjQgNS45IDU1LjItMjIuOSA1NS4yYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0em0xMDQtODhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em00MCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwiXVxufTtcbnZhciBmYVNoZWV0UGxhc3RpYyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGVldC1wbGFzdGljJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlNTcxXCIsIFwiTTAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIyNFYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJIMzg0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0QzI4LjcgMCAwIDI4LjcgMCA2NFY0NDh6TTE3MS4zIDc1LjNsLTk2IDk2Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDk2LTk2YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnptOTYgMzJsLTE2MCAxNjBjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsMTYwLTE2MGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6TTM4NCAzODRIMjU2VjUxMkwzODQgMzg0elwiXVxufTtcbnZhciBmYUJsb2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmxvZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc4MVwiLCBcIk0xOTIgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyQzUxMiAxMjguOSAzODMuMSAwIDIyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMTA2LTg2LTE5Mi0xOTItMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNOTYgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgMTE3LjUgMCAxNDRWMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDRIMTI4djk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjE0NHpcIl1cbn07XG52YXIgZmFVc2VyTmluamEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1uaW5qYScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyOTM5OV0sIFwiZjUwNFwiLCBcIk0yMjQgMjU2Yy01Ny4yIDAtMTA1LjYtMzcuNS0xMjItODkuM2MtMS4xIDEuMy0yLjIgMi42LTMuNSAzLjhjLTE1LjggMTUuOC0zOC44IDIwLjctNTMuNiAyMi4xYy04LjEgLjgtMTQuNi01LjctMTMuOC0xMy44YzEuNC0xNC43IDYuMy0zNy44IDIyLjEtNTMuNmM1LjgtNS44IDEyLjYtMTAuMSAxOS42LTEzLjRjLTctMy4yLTEzLjgtNy42LTE5LjYtMTMuNEMzNy40IDgyLjcgMzIuNiA1OS43IDMxLjEgNDQuOWMtLjgtOC4xIDUuNy0xNC42IDEzLjgtMTMuOGMxNC43IDEuNCAzNy44IDYuMyA1My42IDIyLjFjNC44IDQuOCA4LjcgMTAuNCAxMS43IDE2LjFDMTMxLjQgMjguMiAxNzQuNCAwIDIyNCAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4cy01Ny4zIDEyOC0xMjggMTI4ek0wIDQ4Mi4zQzAgMzk5LjUgNTYuNCAzMzAgMTMyLjggMzA5LjljNi0xLjYgMTIuMiAuOSAxNS45IDUuOGw2Mi41IDgzLjNjNi40IDguNSAxOS4yIDguNSAyNS42IDBsNjIuNS04My4zYzMuNy00LjkgOS45LTcuNCAxNS45LTUuOEMzOTEuNiAzMzAgNDQ4IDM5OS41IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM3pNMTYwIDk2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNjB6XCJdXG59O1xudmFyIGZhUGVyc29uQXJyb3dVcEZyb21MaW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1hcnJvdy11cC1mcm9tLWxpbmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MzlcIiwgXCJNMTkyIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTggMzUyVjM1MmgxNnY5NkgxODR6bS02NCAwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE1Mmg4MEg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjY0VjI1Ni45bDI4LjYgNDcuNWM5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTguMy05N2MtMTcuNC0yOC45LTQ4LjYtNDYuNi04Mi4zLTQ2LjZIMTc3LjFjLTMzLjcgMC02NC45IDE3LjctODIuMyA0Ni42bC01OC4zIDk3Yy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45TDEyMCAyNTYuOVY0NDh6TTU5OC42IDEyMS40bC04MC04MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDQ2NCAxNDEuMyA0NjQgMzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQxLjNsMjUuNCAyNS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjN6XCJdXG59O1xudmFyIGZhU2Nyb2xsVG9yYWggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2Nyb2xsLXRvcmFoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJ0b3JhaFwiXSwgXCJmNmEwXCIsIFwiTTk2IDQ4MFYzMkM5NiAxNC4zIDc0LjUgMCA0OCAwUzAgMTQuMyAwIDMyVjQ4MGMwIDE3LjcgMjEuNSAzMiA0OCAzMnM0OC0xNC4zIDQ4LTMyek01MTIgMzJIMTI4VjQ4MEg1MTJWMzJ6TTU5MiAwYy0yNi41IDAtNDggMTQuMy00OCAzMlY0ODBjMCAxNy43IDIxLjUgMzIgNDggMzJzNDgtMTQuMyA0OC0zMlYzMmMwLTE3LjctMjEuNS0zMi00OC0zMnpNMTk2IDMxMy43YzAtMy4yIC45LTYuNCAyLjUtOS4yTDIyNi43IDI1NmwtMjguMy00OC41Yy0xLjYtMi44LTIuNS02LTIuNS05LjJjMC0xMC4xIDguMi0xOC4zIDE4LjMtMTguM0gyNzFsMzEuNC01My45YzMuNi02LjMgMTAuMy0xMC4xIDE3LjYtMTAuMXMxMy45IDMuOCAxNy42IDEwLjFMMzY5IDE4MGg1Ni43YzEwLjEgMCAxOC4zIDguMiAxOC4zIDE4LjNjMCAzLjItLjkgNi40LTIuNSA5LjJMNDEzLjMgMjU2bDI4LjMgNDguNWMxLjYgMi44IDIuNSA2IDIuNSA5LjJjMCAxMC4xLTguMiAxOC4zLTE4LjMgMTguM0gzNjlsLTMxLjQgNTMuOWMtMy42IDYuMy0xMC4zIDEwLjEtMTcuNiAxMC4xcy0xMy45LTMuOC0xNy42LTEwLjFMMjcxIDMzMkgyMTQuM2MtMTAuMSAwLTE4LjMtOC4yLTE4LjMtMTguM3ptMTI0IDU0LjdMMzQxLjIgMzMySDI5OC44TDMyMCAzNjguNHpNMjU0LjUgMjU2bDMwLjMgNTJoNzAuNGwzMC4zLTUyLTMwLjMtNTJIMjg0LjhsLTMwLjMgNTJ6bTE0NC45IDIzLjhMMzgzIDMwOGgzMi44bC0xNi40LTI4LjJ6TTQxNS44IDIwNEgzODNsMTYuNCAyOC4yTDQxNS44IDIwNHpNMzIwIDE0My42TDI5OC44IDE4MGg0Mi40TDMyMCAxNDMuNnpNMjI0LjIgMjA0bDE2LjQgMjguMkwyNTcgMjA0SDIyNC4yek0yNTcgMzA4bC0xNi40LTI4LjJMMjI0LjIgMzA4SDI1N3pcIl1cbn07XG52YXIgZmFUb3JhaCA9IGZhU2Nyb2xsVG9yYWg7XG52YXIgZmFCcm9vbUJhbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJvb20tYmFsbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wicXVpZGRpdGNoXCIsIFwicXVpZGRpdGNoLWJyb29tLWJhbGxcIl0sIFwiZjQ1OFwiLCBcIk01NjYuNiA5LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTIgMzQuNyAzNC43YzQuMiA0LjIgNi42IDEwIDYuNiAxNmMwIDEyLjUtMTAuMSAyMi42LTIyLjYgMjIuNkgzNjQuM0wyNTYgMjExLjdWMTgyLjZjMC0xMi41IDEwLjEtMjIuNiAyMi42LTIyLjZjNiAwIDExLjggMi40IDE2IDYuNmwzNC43IDM0LjcgMTkyLTE5MmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHptLTM0NCAyMjUuNUwzNDEuMSAzNTMuNGMzLjcgNDIuNy0xMS43IDg1LjItNDIuMyAxMTUuOEMyNzEuNCA0OTYuNiAyMzQuMiA1MTIgMTk1LjUgNTEyTDIyLjEgNTEyQzkuOSA1MTIgMCA1MDIuMSAwIDQ4OS45YzAtNi4zIDIuNy0xMi4zIDcuMy0xNi41TDEzMy43IDM1OS43YzQuMi0zLjctLjQtMTAuNC01LjQtNy45TDc3LjIgMzc3LjRjLTYuMSAzLTEzLjItMS40LTEzLjItOC4yYzAtMzEuNSAxMi41LTYxLjcgMzQuOC04NGw4LThjMzAuNi0zMC42IDczLjEtNDUuOSAxMTUuOC00Mi4zek00NjQgMzUyYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwiXVxufTtcbnZhciBmYVF1aWRkaXRjaCA9IGZhQnJvb21CYWxsO1xudmFyIGZhUXVpZGRpdGNoQnJvb21CYWxsID0gZmFCcm9vbUJhbGw7XG52YXIgZmFUb2dnbGVPZmYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9nZ2xlLW9mZicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjIwNFwiLCBcIk0zODQgMTI4YzcwLjcgMCAxMjggNTcuMyAxMjggMTI4cy01Ny4zIDEyOC0xMjggMTI4SDE5MmMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhzNTcuMy0xMjggMTI4LTEyOEgzODR6TTU3NiAyNTZjMC0xMDYtODYtMTkyLTE5Mi0xOTJIMTkyQzg2IDY0IDAgMTUwIDAgMjU2Uzg2IDQ0OCAxOTIgNDQ4SDM4NGMxMDYgMCAxOTItODYgMTkyLTE5MnpNMTkyIDM1MmE5NiA5NiAwIDEgMCAwLTE5MiA5NiA5NiAwIDEgMCAwIDE5MnpcIl1cbn07XG52YXIgZmFCb3hBcmNoaXZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JveC1hcmNoaXZlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcmNoaXZlXCJdLCBcImYxODdcIiwgXCJNMzIgMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgMTI4IDAgMTEzLjcgMCA5NlY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptMCAxMjhINDgwVjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem0xMjggODBjMCA4LjggNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG52YXIgZmFBcmNoaXZlID0gZmFCb3hBcmNoaXZlO1xudmFyIGZhUGVyc29uRHJvd25pbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWRyb3duaW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTQ1XCIsIFwiTTE5MiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY5Ni4yYzAgNTQuMSAyMy41IDEwNCA2Mi4yIDEzOC4zbC0yMSAxNDYuN2M3LjggMi4xIDE1LjUgMy4zIDIyLjggMy4zYzIxLjEgMCA0Mi04LjUgNTkuMi0yMC4zYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzEyLjQgOC41IDI2LjEgMTQuOCAzOS43IDE4bDE3LjctOTcuNmMxMC43LTEuMiAyMS4zLTMuMSAzMS45LTUuNWwxMDUtMjMuOWMxNy4yLTMuOSAyOC0yMS4xIDI0LjEtMzguM3MtMjEuMS0yOC0zOC4zLTI0LjFMNDAwIDIxNi42Yy00MSA5LjMtODMuNyA3LjUtMTIzLjctNS4yYy01MC4yLTE2LTg0LjMtNjIuNi04NC4zLTExNS4zVjY0ek0zMjAgMTkyYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek0zMDYuNSAzODkuOWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDA1LjQgMjE5LjUgNDE2IDE5MiA0MTZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA0NjkuNyAxNTkgNDgwIDE5MiA0ODBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQwNS4yIDQxMC45IDQxNiAzODQgNDE2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjF6XCJdXG59O1xudmFyIGZhQXJyb3dEb3duOTEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bi05LTEnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNvcnQtbnVtZXJpYy1kZXNjXCIsIFwic29ydC1udW1lcmljLWRvd24tYWx0XCJdLCBcImY4ODZcIiwgXCJNMTYwIDQ4MGM5IDAgMTcuNS0zLjggMjMuNi0xMC40bDg4LTk2YzExLjktMTMgMTEuMS0zMy4zLTItNDUuMnMtMzMuMy0xMS4xLTQ1LjIgMkwxOTIgMzY1LjdWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzY1LjdMOTUuNiAzMzAuNGMtMTEuOS0xMy0zMi4yLTEzLjktNDUuMi0ycy0xMy45IDMyLjItMiA0NS4ybDg4IDk2QzE0Mi41IDQ3Ni4yIDE1MSA0ODAgMTYwIDQ4MHpNNDUwLjcgMjk0Yy04LjMtNi0xOS4xLTcuNy0yOC44LTQuNGwtNDggMTZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmw1LjktMlY0MTZIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDQ4IDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ2NFYzMjBjMC0xMC4zLTQuOS0xOS45LTEzLjMtMjZ6TTQxOC4zIDkxYTMyIDMyIDAgMSAxIDI3LjQgNTcuOUEzMiAzMiAwIDEgMSA0MTguMyA5MXpNNDA1LjEgMjAzLjhsLTYuOCA5LjJjLTEwLjUgMTQuMi03LjUgMzQuMiA2LjcgNDQuOHMzNC4yIDcuNSA0NC44LTYuN2w0OC44LTY1LjhjMTQtMTguOSAyMS41LTQxLjcgMjEuNS02NS4yYzAtNDguNi0zOS40LTg4LTg4LTg4cy04OCAzOS40LTg4IDg4YzAgMzkuMiAyNS42IDcyLjQgNjEuMSA4My44elwiXVxufTtcbnZhciBmYVNvcnROdW1lcmljRGVzYyA9IGZhQXJyb3dEb3duOTE7XG52YXIgZmFTb3J0TnVtZXJpY0Rvd25BbHQgPSBmYUFycm93RG93bjkxO1xudmFyIGZhRmFjZUdyaW5Ub25ndWVTcXVpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLXRvbmd1ZS1zcXVpbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NDEsIFwiZ3Jpbi10b25ndWUtc3F1aW50XCJdLCBcImY1OGFcIiwgXCJNMCAyNTZDMCAzNjguOSA3My4xIDQ2NC43IDE3NC41IDQ5OC44QzE2NS4zIDQ4NCAxNjAgNDY2LjYgMTYwIDQ0OFY0MDAuN2MtMjQtMTcuNS00My4xLTQxLjQtNTQuOC02OS4yYy01LTExLjggNy0yMi41IDE5LjMtMTguN2MzOS43IDEyLjIgODQuNSAxOSAxMzEuOCAxOXM5Mi4xLTYuOCAxMzEuOC0xOWMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdjLTExLjggMjgtMzEuMSA1Mi01NS40IDY5LjZWNDQ4YzAgMTguNi01LjMgMzYtMTQuNSA1MC44QzQzOC45IDQ2NC43IDUxMiAzNjguOSA1MTIgMjU2QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwUzAgMTE0LjYgMCAyNTZ6TTExNiAxNDEuMWMwLTkgOS42LTE0LjcgMTcuNS0xMC41bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNnptMjYyLjUtMTAuNWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOXpNMzIwIDQ0OFY0MDIuNmMwLTE0LjctMTEuOS0yNi42LTI2LjYtMjYuNmgtMmMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWgtMmMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJdXG59O1xudmFyIGZhR3JpblRvbmd1ZVNxdWludCA9IGZhRmFjZUdyaW5Ub25ndWVTcXVpbnQ7XG52YXIgZmFTcHJheUNhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcHJheS1jYW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YmRcIiwgXCJNMTI4IDBoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMjU2YzAtNTMgNDMtOTYgOTYtOTZIMjI0YzUzIDAgOTYgNDMgOTYgOTZWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyNTZ6bTI0MCA4MEE4MCA4MCAwIDEgMCA4MCAzMzZhODAgODAgMCAxIDAgMTYwIDB6TTI1NiA2NGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0zODQgMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTQ0OCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzg0IDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhVHJ1Y2tNb25zdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLW1vbnN0ZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2M2JcIiwgXCJNMjg4IDY0djY0SDQxNkwzNjggNjRIMjg4ek00MTkuMiAyNS42TDQ5NiAxMjhoODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJjLTI5LjItMzguOS03NS43LTY0LTEyOC02NHMtOTguOCAyNS4xLTEyOCA2NEgyODhjLTI5LjItMzguOS03NS43LTY0LTEyOC02NHMtOTguOCAyNS4xLTEyOCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJIMjI0VjQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDk2YzIwLjEgMCAzOS4xIDkuNSA1MS4yIDI1LjZ6TTE1MiAyNTZoMTZjMTIuMSAwIDIyLjEgOC45IDIzLjggMjAuNmM3LjYgMi4yIDE0LjkgNS4zIDIxLjcgOWM5LjQtNyAyMi44LTYuMyAzMS4zIDIuM2wxMS4zIDExLjNjOC42IDguNiA5LjMgMjEuOSAyLjMgMzEuM2MzLjcgNi44IDYuOCAxNC4xIDkgMjEuN2MxMS42IDEuNyAyMC42IDExLjcgMjAuNiAyMy44djE2YzAgMTIuMS04LjkgMjIuMS0yMC42IDIzLjhjLTIuMiA3LjYtNS4zIDE0LjktOSAyMS43YzcgOS40IDYuMyAyMi44LTIuMyAzMS4zbC0xMS4zIDExLjNjLTguNiA4LjYtMjEuOSA5LjMtMzEuMyAyLjJjLTYuOCAzLjctMTQuMSA2LjgtMjEuNyA5QzE5MC4xIDUwMy4xIDE4MC4xIDUxMiAxNjggNTEySDE1MmMtMTIuMSAwLTIyLjEtOC45LTIzLjgtMjAuNmMtNy42LTIuMi0xNC45LTUuMy0yMS43LTljLTkuNCA3LjEtMjIuOCA2LjMtMzEuMy0yLjJMNjMuOCA0NjguOWMtOC42LTguNi05LjMtMjEuOS0yLjMtMzEuM2MtMy43LTYuOS02LjgtMTQuMS05LTIxLjhDNDAuOSA0MTQuMSAzMiA0MDQuMSAzMiAzOTJWMzc2YzAtMTIuMSA4LjktMjIuMSAyMC42LTIzLjhjMi4yLTcuNiA1LjMtMTQuOSA5LTIxLjhjLTctOS40LTYuMy0yMi44IDIuMy0zMS4zbDExLjMtMTEuM2M4LjYtOC42IDIxLjktOS4zIDMxLjMtMi4zYzYuOC0zLjcgMTQuMS02LjggMjEuNy05YzEuNy0xMS42IDExLjctMjAuNiAyMy44LTIwLjZ6bTggMTc2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNNDQ4LjIgMjc2LjZjMS43LTExLjYgMTEuNy0yMC42IDIzLjgtMjAuNmgxNmMxMi4xIDAgMjIuMSA4LjkgMjMuOCAyMC42YzcuNiAyLjIgMTQuOSA1LjMgMjEuOCA5YzkuNC03IDIyLjgtNi4zIDMxLjMgMi4zbDExLjMgMTEuM2M4LjYgOC42IDkuMyAyMS45IDIuMiAzMS4zYzMuNyA2LjggNi44IDE0LjEgOSAyMS43YzExLjYgMS43IDIwLjYgMTEuNyAyMC42IDIzLjh2MTZjMCAxMi4xLTguOSAyMi4xLTIwLjYgMjMuOGMtMi4yIDcuNi01LjMgMTQuOS05IDIxLjdjNyA5LjQgNi4zIDIyLjgtMi4yIDMxLjNsLTExLjMgMTEuM2MtOC42IDguNi0yMS45IDkuMy0zMS4zIDIuMmMtNi45IDMuNy0xNC4xIDYuOC0yMS44IDlDNTEwLjEgNTAzLjEgNTAwLjEgNTEyIDQ4OCA1MTJINDcyYy0xMi4xIDAtMjIuMS04LjktMjMuOC0yMC42Yy03LjYtMi4yLTE0LjktNS4zLTIxLjctOWMtOS40IDcuMS0yMi44IDYuMy0zMS4zLTIuMmwtMTEuMy0xMS4zYy04LjYtOC42LTkuMy0yMS45LTIuMi0zMS4zYy0zLjctNi45LTYuOC0xNC4xLTktMjEuOEMzNjAuOSA0MTQuMSAzNTIgNDA0LjEgMzUyIDM5MlYzNzZjMC0xMi4xIDguOS0yMi4xIDIwLjYtMjMuOGMyLjItNy42IDUuMy0xNC45IDktMjEuOGMtNy05LjQtNi4zLTIyLjggMi4yLTMxLjNsMTEuMy0xMS4zYzguNi04LjYgMjEuOS05LjMgMzEuMy0yLjNjNi44LTMuNyAxNC4xLTYuOCAyMS43LTl6TTUyOCAzODRhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIl1cbn07XG52YXIgZmFXID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3cnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMTldLCBcIjU3XCIsIFwiTTIwLjggMzRjMTYuNS02LjIgMzUgMi4yIDQxLjIgMTguN2wxMTAuMiAyOTRMMjU3LjMgNTVjNC0xMy43IDE2LjUtMjMgMzAuNy0yM3MyNi43IDkuNCAzMC43IDIzbDg1LjEgMjkxLjdMNTE0IDUyLjhjNi4yLTE2LjUgMjQuNi0yNC45IDQxLjItMTguN3MyNC45IDI0LjcgMTguNyA0MS4ybC0xNDQgMzg0Yy00LjggMTIuOS0xNy40IDIxLjMtMzEuMiAyMC43cy0yNS43LTkuOC0yOS41LTIzTDI4OCAxNzguMyAyMDYuNyA0NTdjLTMuOSAxMy4yLTE1LjggMjIuNS0yOS41IDIzcy0yNi4zLTcuOC0zMS4yLTIwLjdMMiA3NS4yQy00LjIgNTguNyA0LjIgNDAuMiAyMC44IDM0elwiXVxufTtcbnZhciBmYUVhcnRoQWZyaWNhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VhcnRoLWFmcmljYScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzc1NywgXCJnbG9iZS1hZnJpY2FcIl0sIFwiZjU3Y1wiLCBcIk0xNzcuOCA2My4ybDEwIDE3LjRjMi44IDQuOCA0LjIgMTAuMyA0LjIgMTUuOXY0MS40YzAgMy45IDEuNiA3LjcgNC4zIDEwLjRjNi4yIDYuMiAxNi41IDUuNyAyMi0xLjJsMTMuNi0xN2M0LjctNS45IDEyLjktNy43IDE5LjYtNC4zbDE1LjIgNy42YzMuNCAxLjcgNy4yIDIuNiAxMSAyLjZjNi41IDAgMTIuOC0yLjYgMTcuNC03LjJsMy45LTMuOWMyLjktMi45IDcuMy0zLjYgMTEtMS44bDI5LjIgMTQuNmM3LjggMy45IDEyLjYgMTEuOCAxMi42IDIwLjVjMCAxMC41LTcuMSAxOS42LTE3LjMgMjIuMmwtMzUuNCA4LjhjLTcuNCAxLjgtMTUuMSAxLjUtMjIuNC0uOWwtMzItMTAuN2MtMy4zLTEuMS02LjctMS43LTEwLjItMS43Yy03IDAtMTMuOCAyLjMtMTkuNCA2LjVMMTc2IDIxMmMtMTAuMSA3LjYtMTYgMTkuNC0xNiAzMnYyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTAuMSAwIDE5LjYtNC43IDI1LjYtMTIuOGwyNS42LTM0LjFjOC4zLTExLjEgMTIuOC0yNC42IDEyLjgtMzguNFYzMTguNmMwLTMuOSAyLjYtNy4zIDYuNC04LjJsNS4zLTEuM2MxMS45LTMgMjAuMy0xMy43IDIwLjMtMjZjMC03LjEtMi44LTEzLjktNy44LTE4LjlsLTMzLjUtMzMuNWMtMy43LTMuNy0zLjctOS43IDAtMTMuNGM1LjctNS43IDE0LjEtNy43IDIxLjgtNS4xbDE0LjEgNC43YzEyLjMgNC4xIDI1LjctMS41IDMxLjUtMTNjMy41LTcgMTEuMi0xMC44IDE4LjktOS4ybDI3LjQgNS41QzQzMiAxMTIuNCAzNTEuNSA0OCAyNTYgNDhjLTI3LjcgMC01NCA1LjQtNzguMiAxNS4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJdXG59O1xudmFyIGZhR2xvYmVBZnJpY2EgPSBmYUVhcnRoQWZyaWNhO1xudmFyIGZhUmFpbmJvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyYWluYm93JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI3NzUyXSwgXCJmNzViXCIsIFwiTTMyMCA5NkMxNzguNiA5NiA2NCAyMTAuNiA2NCAzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyQzAgMTc1LjMgMTQzLjMgMzIgMzIwIDMyczMyMCAxNDMuMyAzMjAgMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkM1NzYgMjEwLjYgNDYxLjQgOTYgMzIwIDk2em0wIDE5MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4czEyOCA1Ny4zIDEyOCAxMjh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgMzUydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MmMwLTEyMy43IDEwMC4zLTIyNCAyMjQtMjI0czIyNCAxMDAuMyAyMjQgMjI0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MHMtMTYwIDcxLjYtMTYwIDE2MHpcIl1cbn07XG52YXIgZmFDaXJjbGVOb3RjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtbm90Y2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxY2VcIiwgXCJNMjIyLjcgMzIuMWM1IDE2LjktNC42IDM0LjgtMjEuNSAzOS44QzEyMS44IDk1LjYgNjQgMTY5LjEgNjQgMjU2YzAgMTA2IDg2IDE5MiAxOTIgMTkyczE5Mi04NiAxOTItMTkyYzAtODYuOS01Ny44LTE2MC40LTEzNy4xLTE4NC4xYy0xNi45LTUtMjYuNi0yMi45LTIxLjUtMzkuOHMyMi45LTI2LjYgMzkuOC0yMS41QzQzNC45IDQyLjEgNTEyIDE0MCA1MTIgMjU2YzAgMTQxLjQtMTE0LjYgMjU2LTI1NiAyNTZTMCAzOTcuNCAwIDI1NkMwIDE0MCA3Ny4xIDQyLjEgMTgyLjkgMTAuNmMxNi45LTUgMzQuOCA0LjYgMzkuOCAyMS41elwiXVxufTtcbnZhciBmYVRhYmxldFNjcmVlbkJ1dHRvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZXQtc2NyZWVuLWJ1dHRvbicsXG4gIGljb246IFs0NDgsIDUxMiwgW1widGFibGV0LWFsdFwiXSwgXCJmM2ZhXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0yNTYgNDQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCA2NEg2NFYzODRIMzg0VjY0elwiXVxufTtcbnZhciBmYVRhYmxldEFsdCA9IGZhVGFibGV0U2NyZWVuQnV0dG9uO1xudmFyIGZhUGF3ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhdycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFiMFwiLCBcIk0yMjYuNSA5Mi45YzE0LjMgNDIuOS0uMyA4Ni4yLTMyLjYgOTYuOHMtNzAuMS0xNS42LTg0LjQtNTguNXMuMy04Ni4yIDMyLjYtOTYuOHM3MC4xIDE1LjYgODQuNCA1OC41ek0xMDAuNCAxOTguNmMxOC45IDMyLjQgMTQuMyA3MC4xLTEwLjIgODQuMXMtNTkuNy0uOS03OC41LTMzLjNTLTIuNyAxNzkuMyAyMS44IDE2NS4zczU5LjcgLjkgNzguNSAzMy4zek02OS4yIDQwMS4yQzEyMS42IDI1OS45IDIxNC43IDIyNCAyNTYgMjI0czEzNC40IDM1LjkgMTg2LjggMTc3LjJjMy42IDkuNyA1LjIgMjAuMSA1LjIgMzAuNXYxLjZjMCAyNS44LTIwLjkgNDYuNy00Ni43IDQ2LjdjLTExLjUgMC0yMi45LTEuNC0zNC00LjJsLTg4LTIyYy0xNS4zLTMuOC0zMS4zLTMuOC00Ni42IDBsLTg4IDIyYy0xMS4xIDIuOC0yMi41IDQuMi0zNCA0LjJDODQuOSA0ODAgNjQgNDU5LjEgNjQgNDMzLjN2LTEuNmMwLTEwLjQgMS42LTIwLjggNS4yLTMwLjV6TTQyMS44IDI4Mi43Yy0yNC41LTE0LTI5LjEtNTEuNy0xMC4yLTg0LjFzNTQtNDcuMyA3OC41LTMzLjNzMjkuMSA1MS43IDEwLjIgODQuMXMtNTQgNDcuMy03OC41IDMzLjN6TTMxMC4xIDE4OS43Yy0zMi4zLTEwLjYtNDYuOS01My45LTMyLjYtOTYuOHM1Mi4xLTY5LjEgODQuNC01OC41czQ2LjkgNTMuOSAzMi42IDk2LjhzLTUyLjEgNjkuMS04NC40IDU4LjV6XCJdXG59O1xudmFyIGZhQ2xvdWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFs5NzI5XSwgXCJmMGMyXCIsIFwiTTAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0SDUxMmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGMwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjRjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjZjMC01My00My05Ni05Ni05NmMtMTkuNyAwLTM4LjEgNi01My4zIDE2LjJDMzY3IDY0LjIgMzE1LjMgMzIgMjU2IDMyQzE2Ny42IDMyIDk2IDEwMy42IDk2IDE5MmMwIDIuNyAuMSA1LjQgLjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNnpcIl1cbn07XG52YXIgZmFUcm93ZWxCcmlja3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJvd2VsLWJyaWNrcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU4YVwiLCBcIk0yNDAuOCA0LjhDMjUwLjMgMTAuNiAyNTYgMjAuOSAyNTYgMzJ2NzJoODljMy42LTEzLjggMTYuMS0yNCAzMS0yNGg4OGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgzNzZjLTE0LjkgMC0yNy40LTEwLjItMzEtMjRIMjU2djcyYzAgMTEuMS01LjcgMjEuNC0xNS4yIDI3LjJzLTIxLjIgNi40LTMxLjEgMS40bC0xOTItOTZDNi44IDE1MS4yIDAgMTQwLjEgMCAxMjhzNi44LTIzLjIgMTcuNy0yOC42bDE5Mi05NmM5LjktNSAyMS43LTQuNCAzMS4xIDEuNHpNMjg4IDI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNTZ6TTMyIDM4NGg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0xOTIgMEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhRmFjZUZsdXNoZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1mbHVzaGVkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTYzLCBcImZsdXNoZWRcIl0sIFwiZjU3OVwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTE3NiAzODRjMCA4LjggNy4yIDE2IDE2IDE2SDMyMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnptLTE2LTg4YTcyIDcyIDAgMSAwIDAtMTQ0IDcyIDcyIDAgMSAwIDAgMTQ0em0yNjQtNzJhNzIgNzIgMCAxIDAgLTE0NCAwIDcyIDcyIDAgMSAwIDE0NCAwem0tMjg4IDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTkyIDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG52YXIgZmFGbHVzaGVkID0gZmFGYWNlRmx1c2hlZDtcbnZhciBmYUhvc3BpdGFsVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3NwaXRhbC11c2VyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmODBkXCIsIFwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjI1NkgxNDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMHY2NEgxNDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNjUuOWMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMlYyNzEuOCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNMTUyIDY0aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYyNGgyNGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDE4NHYyNGMwIDguOC03LjIgMTYtMTYgMTZIMTUyYy04LjggMC0xNi03LjItMTYtMTZWMTUySDExMmMtOC44IDAtMTYtNy4yLTE2LTE2VjEyMGMwLTguOCA3LjItMTYgMTYtMTZoMjRWODBjMC04LjggNy4yLTE2IDE2LTE2ek01MTIgMjcyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMjg4IDQ3Ny4xYzAgMTkuMyAxNS42IDM0LjkgMzQuOSAzNC45SDU0MS4xYzE5LjMgMCAzNC45LTE1LjYgMzQuOS0zNC45YzAtNTEuNC00MS43LTkzLjEtOTMuMS05My4xSDM4MS4xYy01MS40IDAtOTMuMSA0MS43LTkzLjEgOTMuMXpcIl1cbn07XG52YXIgZmFUZW50QXJyb3dMZWZ0UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVudC1hcnJvdy1sZWZ0LXJpZ2h0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTdmXCIsIFwiTTQ4OC4xIDYuMmMtOS45LTguOS0yNS04LjEtMzMuOSAxLjhzLTguMSAyNSAxLjggMzMuOUw0ODkuNSA3MiA4Ni41IDcybDMzLjUtMzAuMmM5LjktOC45IDEwLjctMjQgMS44LTMzLjlTOTcuOC0yLjcgODcuOSA2LjJsLTgwIDcyQzIuOSA4Mi43IDAgODkuMiAwIDk2czIuOSAxMy4zIDcuOSAxNy44bDgwIDcyYzkuOSA4LjkgMjUgOC4xIDMzLjktMS44czguMS0yNS0xLjgtMzMuOUw4Ni41IDEyMGw0MDIuOSAwLTMzLjUgMzAuMmMtOS45IDguOS0xMC43IDI0LTEuOCAzMy45czI0IDEwLjcgMzMuOSAxLjhsODAtNzJjNS4xLTQuNiA3LjktMTEgNy45LTE3LjhzLTIuOS0xMy4zLTcuOS0xNy44bC04MC03MnpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJIMjg4VjM1Mmw5NiAxNjBoOTZjOS4zIDAgMTguMi00LjEgMjQuMi0xMS4xczguOC0xNi40IDcuNC0yNS42bC0yNC0xNjBjLTEuMi04LjItNS42LTE1LjctMTIuMy0yMC43bC0xNjgtMTI4elwiXVxufTtcbnZhciBmYUdhdmVsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhdmVsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJsZWdhbFwiXSwgXCJmMGUzXCIsIFwiTTMxOC42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyMCAxMjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2IDE2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDQtNEwzMjUuNCAyOTMuNGwtNCA0Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNiAxNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjAtMTIwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNi0xNmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTQgNEwzMzAuNiA3NC42bDQtNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYtMTZ6bS0xNTIgMjg4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTEyIDExMmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNDggNDhjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTEyLTExMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMS40LTEuNEwyNzIgMjg1LjMgMjI2LjcgMjQwIDE2OCAyOTguN2wtMS40LTEuNHpcIl1cbn07XG52YXIgZmFMZWdhbCA9IGZhR2F2ZWw7XG52YXIgZmFCaW5vY3VsYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jpbm9jdWxhcnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZTVcIiwgXCJNMTI4IDMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2SDk2VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NCA5NlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4OC45YzAtMzQuNiA5LjQtNjguNiAyNy4yLTk4LjNDNDAuOSAyNjcuOCA0OS43IDI0Mi40IDUzIDIxNkw2MC41IDE1NmMyLTE2IDE1LjYtMjggMzEuOC0yOEgxOTJ6bTIyNy44IDBjMTYuMSAwIDI5LjggMTIgMzEuOCAyOEw0NTkgMjE2YzMuMyAyNi40IDEyLjEgNTEuOCAyNS44IDc0LjZjMTcuOCAyOS43IDI3LjIgNjMuNyAyNy4yIDk4LjNWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4aDk5Ljh6TTMyMCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5NkgzMjBWNjR6bS0zMiA2NFYyODhIMjI0VjEyOGg2NHpcIl1cbn07XG52YXIgZmFNaWNyb3Bob25lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjEzMVwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Mi4xIDM0NC43YzE1LjItMjYgMjMuOS01Ni4zIDIzLjktODguN1YyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDBjMCAyMS4yLTUuMSA0MS4xLTE0LjIgNTguN0w0MTYgMzAwLjhWOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZ2NTQuM0wzOC44IDUuMXpNMzQ0IDQzMC40YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMmwtNDMuMS0zMy45QzM0Ni4xIDM4MiAzMzMuMyAzODQgMzIwIDM4NGMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjh2LTguN0wxNDQuNyAyMTBjLS41IDEuOS0uNyAzLjktLjcgNnY0MGMwIDg5LjEgNjYuMiAxNjIuNyAxNTIgMTc0LjRWNDY0SDI0OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg3MiA3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNDRWNDMwLjR6XCJdXG59O1xudmFyIGZhQm94VGlzc3VlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JveC10aXNzdWUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNWJcIiwgXCJNOTIuNSAwSDIwOGM0MCAwIDUyIDI0IDY0IDQ4czI0IDQ4IDY0IDQ4aDg1LjJDNDM2IDk2IDQ0OCAxMDggNDQ4IDEyMi44YzAgMy40LS43IDYuOC0xLjkgMTBMNDA5LjYgMjI0IDM4NCAyODhIMTI4bC0xNi02NEw2NC45IDM1LjRjLS42LTIuMy0uOS00LjYtLjktNi45QzY0IDEyLjggNzYuOCAwIDkyLjUgMHpNNzkgMjI0bDE2IDY0SDgwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDQ4SDM4NGg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0MTguNWwyNS42LTY0SDQ2NGMyNi41IDAgNDggMjEuNSA0OCA0OFYzODRIMFYyNzJjMC0yNi41IDIxLjUtNDggNDgtNDhINzl6TTAgNDE2SDUxMnY0OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDE2elwiXVxufTtcbnZhciBmYU1vdG9yY3ljbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW90b3JjeWNsZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyNzk0OV0sIFwiZjIxY1wiLCBcIk0yODAgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNTcuN2wxNi40IDMwLjNMMjU2IDE5MmwtNDUuMy00NS4zYy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmg5NmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDExLTEuMSAyMS43LTMuMiAzMmg3MC40Yy0yLjEtMTAuMy0zLjItMjEtMy4yLTMyYzAtNTIuMiAyNS05OC42IDYzLjctMTI3LjhsMTUuNCAyOC42QzQwMi40IDI3Ni4zIDM4NCAzMTIgMzg0IDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4Yy0xMy41IDAtMjYuNSAyLjEtMzguNyA2TDQxOC4yIDEyOEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINDU5LjZjLTcuNSAwLTE0LjcgMi42LTIwLjUgNy40TDM5MS43IDc4LjlsLTE0LTI2Yy03LTEyLjktMjAuNS0yMS0zNS4yLTIxSDI4MHpNNDYyLjcgMzExLjJsMjguMiA1Mi4yYzYuMyAxMS43IDIwLjkgMTYgMzIuNSA5LjdzMTYtMjAuOSA5LjctMzIuNWwtMjguMi01Mi4yYzIuMy0uMyA0LjctLjQgNy4xLS40YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0YzAtMTUuNSA1LjUtMjkuNyAxNC43LTQwLjh6TTE4Ny4zIDM3NmMtOS41IDIzLjUtMzIuNSA0MC01OS4zIDQwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzI2LjkgMCA0OS45IDE2LjUgNTkuMyA0MGg2Ni40QzI0Mi41IDI2OC44IDE5MC41IDIyNCAxMjggMjI0QzU3LjMgMjI0IDAgMjgxLjMgMCAzNTJzNTcuMyAxMjggMTI4IDEyOGM2Mi41IDAgMTE0LjUtNDQuOCAxMjUuOC0xMDRIMTg3LjN6TTEyOCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbnZhciBmYUJlbGxDb25jaWVyZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVsbC1jb25jaWVyZ2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg3MTgsIFwiY29uY2llcmdlLWJlbGxcIl0sIFwiZjU2MlwiLCBcIk0yMTYgNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZ2MzMuM0MxMTkuNiAxNTcuMiAzMiAyNTIuNCAzMiAzNjhINDgwYzAtMTE1LjYtODcuNi0yMTAuOC0yMDAtMjIyLjdWMTEyaDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI1NiAyMTZ6TTI0IDQwMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6XCJdXG59O1xudmFyIGZhQ29uY2llcmdlQmVsbCA9IGZhQmVsbENvbmNpZXJnZTtcbnZhciBmYVBlblJ1bGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blbi1ydWxlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wicGVuY2lsLXJ1bGVyXCJdLCBcImY1YWVcIiwgXCJNNDY5LjMgMTkuM2wyMy40IDIzLjRjMjUgMjUgMjUgNjUuNSAwIDkwLjVsLTU2LjQgNTYuNEwzMjIuMyA3NS43bDU2LjQtNTYuNGMyNS0yNSA2NS41LTI1IDkwLjUgMHpNNDQuOSAzNTMuMkwyOTkuNyA5OC4zIDQxMy43IDIxMi4zIDE1OC44IDQ2Ny4xYy02LjcgNi43LTE1LjEgMTEuNi0yNC4yIDE0LjJsLTEwNCAyOS43Yy04LjQgMi40LTE3LjQgLjEtMjMuNi02LjFzLTguNS0xNS4yLTYuMS0yMy42bDI5LjctMTA0YzIuNi05LjIgNy41LTE3LjUgMTQuMi0yNC4yek0yNDkuNCAxMDMuNEwxMDMuNCAyNDkuNCAxNiAxNjEuOWMtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlMOTQuMSAxNmMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGwxOS44IDE5LjhjLS4zIC4zLS43IC42LTEgLjlsLTY0IDY0Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsNjQtNjRjLjMtLjMgLjYtLjcgLjktMWw0NS4xIDQ1LjF6TTQwOC42IDI2Mi42bDQ1LjEgNDUuMWMtLjMgLjMtLjcgLjYtMSAuOWwtNjQgNjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw2NC02NGMuMy0uMyAuNi0uNyAuOS0xTDQ5NiAzNTAuMWMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUw0MTcuOSA0OTZjLTE4LjcgMTguNy00OS4xIDE4LjctNjcuOSAwbC04Ny40LTg3LjRMNDA4LjYgMjYyLjZ6XCJdXG59O1xudmFyIGZhUGVuY2lsUnVsZXIgPSBmYVBlblJ1bGVyO1xudmFyIGZhUGVvcGxlQXJyb3dzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blb3BsZS1hcnJvd3MnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInBlb3BsZS1hcnJvd3MtbGVmdC1yaWdodFwiXSwgXCJlMDY4XCIsIFwiTTY0IDY0YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDY0IDY0ek0yNS45IDIzMy40QzI5LjMgMTkxLjkgNjQgMTYwIDEwNS42IDE2MGg0NC44YzI3IDAgNTEgMTMuNCA2NS41IDM0LjFjLTIuNyAxLjktNS4yIDQtNy41IDYuM2wtNjQgNjRjLTIxLjkgMjEuOS0yMS45IDU3LjMgMCA3OS4yTDE5MiAzOTEuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OFYzNDguM2MtMjYuNS05LjUtNDQuNy0zNS44LTQyLjItNjUuNmw0LjEtNDkuM3pNNDQ4IDY0YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDQ0OCA2NHpNNDMxLjYgMjAwLjRjLTIuMy0yLjMtNC45LTQuNC03LjUtNi4zYzE0LjUtMjAuNyAzOC42LTM0LjEgNjUuNS0zNC4xaDQ0LjhjNDEuNiAwIDc2LjMgMzEuOSA3OS43IDczLjRsNC4xIDQ5LjNjMi41IDI5LjgtMTUuNyA1Ni4xLTQyLjIgNjUuNlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDk2Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzOTEuMmw0Ny42LTQ3LjZjMjEuOS0yMS45IDIxLjktNTcuMyAwLTc5LjJsLTY0LTY0ek0yNzIgMjQwdjMyaDk2VjI0MGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsNjQgNjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTY0IDY0Yy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4yVjMzNkgyNzJ2MzJjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDY0LTY0YzYuOS02LjkgMTcuMi04LjkgMjYuMi01LjJzMTQuOCAxMi41IDE0LjggMjIuMnpcIl1cbn07XG52YXIgZmFQZW9wbGVBcnJvd3NMZWZ0UmlnaHQgPSBmYVBlb3BsZUFycm93cztcbnZhciBmYU1hcnNBbmRWZW51c0J1cnN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMtYW5kLXZlbnVzLWJ1cnN0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTIzXCIsIFwiTTUwNCAwYy05LjcgMC0xOC41IDUuOC0yMi4yIDE0LjhzLTEuNyAxOS4zIDUuMiAyNi4ybDM5IDM5LTIyLjIgMjIuMkM0NzUuOSA3OC40IDQzOS42IDY0IDQwMCA2NGMtODguNCAwLTE2MCA3MS42LTE2MCAxNjBjMCA4MC4yIDU5LjEgMTQ2LjcgMTM2LjEgMTU4LjJjMCAuNi0uMSAxLjItLjEgMS44di40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC40IC4zIC40IC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zIC4zSDM1MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgyNHYuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMiAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAuMSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDBsMjQgMEgzNzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNEg0MDBsMjQgMHYwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjFWNDg2IDQ4NnYtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjFWNDg1IDQ4NXYtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjFWNDg0di0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMVY0ODN2LS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xVjQ4MXYtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjFWNDgwdi0uMS0uMS0uMS0uMS0uMS0uMS0uMVY0Nzl2LS4xLS4xLS4xLS4xLS4xLS4xLS4xVjQ3OHYtLjEtLjEtLjEtLjEtLjEtLjFWNDc3di0uMS0uMS0uMS0uMS0uMS0uMVY0NzZ2LS4xLS4xLS4xLS4xLS4xLS4xVjQ3NXYtLjEtLjItLjItLjItLjItLjJWNDc0di0uMi0uMi0uMi0uMi0uMlY0NzN2LS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yVjQ3MHYtLjItLjItLjItLjItLjJWNDY5di0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMlY0Njd2LS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yVjQ2M3YtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJWNDU5di0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMlY0NTd2LS4yLS4yLS4yLS4yVjQ1NmgyNGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0MjR2LS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zVjQwM3YtLjMtLjNWNDAydi0uMy0uM1Y0MDF2LS4zLS4zVjQwMHYtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjQtLjMtLjQtLjQtLjQtLjRWMzkzdi0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNFYzODh2LS40LS40LS40LS40LS40LS40LS40LS40LS40LS40VjM4NGMwLS42IDAtMS4yLS4xLTEuOGM3Ny0xMS42IDEzNi4xLTc4IDEzNi4xLTE1OC4yYzAtMzEuNC05LTYwLjctMjQuNy04NS40TDU2MCAxMTMuOWwzOSAzOWM2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yczE0LjgtMTIuNSAxNC44LTIyLjJWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRINTA0ek00MDAgMTI4YTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyek0xOTAuOSAxOC4xQzE4OC40IDEyIDE4Mi42IDggMTc2IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMNTUuNiA2OC45Yy02LjMtMS45LTEzLjEgLjItMTcuMiA1LjNzLTQuNiAxMi4yLTEuNCAxNy45bDM5LjUgNjkuMUwxMC45IDIwNi40Yy01LjQgMy43LTggMTAuMy02LjUgMTYuN3M2LjcgMTEuMiAxMy4xIDEyLjJsNzguNyAxMi4yTDkwLjYgMzI3Yy0uNSA2LjUgMy4xIDEyLjcgOSAxNS41czEyLjkgMS44IDE3LjgtMi42TDE3NiAyODYuMWw1OC42IDUzLjljNC4xIDMuOCA5LjkgNS4xIDE1LjIgMy42QzIyMy42IDMxMC44IDIwOCAyNjkuMiAyMDggMjI0YzAtNjAuOCAyOC4zLTExNSA3Mi40LTE1MC4yTDIyMC4zIDkyLjFsLTI5LjQtNzR6XCJdXG59O1xudmFyIGZhU3F1YXJlQ2FyZXRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtY2FyZXQtcmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImNhcmV0LXNxdWFyZS1yaWdodFwiXSwgXCJmMTUyXCIsIFwiTTQ0OCA5NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwek0zMjAgMjU2YzAgNi43LTIuOCAxMy03LjcgMTcuNmwtMTEyIDEwNGMtNyA2LjUtMTcuMiA4LjItMjUuOSA0LjRzLTE0LjQtMTIuNS0xNC40LTIybDAtMjA4YzAtOS41IDUuNy0xOC4yIDE0LjQtMjJzMTguOS0yLjEgMjUuOSA0LjRsMTEyIDEwNGM0LjkgNC41IDcuNyAxMC45IDcuNyAxNy42elwiXVxufTtcbnZhciBmYUNhcmV0U3F1YXJlUmlnaHQgPSBmYVNxdWFyZUNhcmV0UmlnaHQ7XG52YXIgZmFTY2lzc29ycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2lzc29ycycsXG4gIGljb246IFs1MTIsIDUxMiwgWzk5ODQsIDk5ODYsIDk5ODgsIFwiY3V0XCJdLCBcImYwYzRcIiwgXCJNMjU2IDE5MmwtMzkuNS0zOS41YzQuOS0xMi42IDcuNS0yNi4yIDcuNS00MC41QzIyNCA1MC4xIDE3My45IDAgMTEyIDBTMCA1MC4xIDAgMTEyczUwLjEgMTEyIDExMiAxMTJjMTQuMyAwIDI3LjktMi43IDQwLjUtNy41TDE5MiAyNTZsLTM5LjUgMzkuNWMtMTIuNi00LjktMjYuMi03LjUtNDAuNS03LjVDNTAuMSAyODggMCAzMzguMSAwIDQwMHM1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJjMC0xNC4zLTIuNy0yNy45LTcuNS00MC41TDQ5OS4yIDc2LjhjNy4xLTcuMSA3LjEtMTguNSAwLTI1LjZjLTI4LjMtMjguMy03NC4xLTI4LjMtMTAyLjQgMEwyNTYgMTkyem0yMi42IDE1MC42TDM5Ni44IDQ2MC44YzI4LjMgMjguMyA3NC4xIDI4LjMgMTAyLjQgMGM3LjEtNy4xIDcuMS0xOC41IDAtMjUuNkwzNDIuNiAyNzguNmwtNjQgNjR6TTY0IDExMmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00OCAyNDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwiXVxufTtcbnZhciBmYUN1dCA9IGZhU2Npc3NvcnM7XG52YXIgZmFTdW5QbGFudFdpbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3VuLXBsYW50LXdpbHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1N2FcIiwgXCJNMTYwIDBjLTYuMyAwLTEyIDMuNy0xNC42IDkuNUwxMjAuNiA2NC45IDYzLjkgNDMuMmMtNS45LTIuMy0xMi42LS44LTE3IDMuNnMtNS45IDExLjEtMy42IDE3bDIxLjcgNTYuN0w5LjUgMTQ1LjRDMy43IDE0OCAwIDE1My43IDAgMTYwczMuNyAxMiA5LjUgMTQuNmw1NS40IDI0LjhMNDMuMiAyNTYuMWMtMi4zIDUuOS0uOCAxMi42IDMuNiAxN3MxMS4xIDUuOSAxNyAzLjZsNTYuNy0yMS43IDI0LjggNTUuNGMyLjYgNS44IDguMyA5LjUgMTQuNiA5LjVzMTItMy43IDE0LjYtOS41bDI0LjgtNTUuNCA1Ni43IDIxLjdjNS45IDIuMyAxMi42IC44IDE3LTMuNnM1LjktMTEuMSAzLjYtMTdsLTIxLjctNTYuNyA1NS40LTI0LjhjNS44LTIuNiA5LjUtOC4zIDkuNS0xNC42cy0zLjctMTItOS41LTE0LjZsLTU1LjQtMjQuOCAyMS43LTU2LjdjMi4zLTUuOSAuOC0xMi42LTMuNi0xN3MtMTEuMS01LjktMTctMy42TDE5OS40IDY0LjkgMTc0LjYgOS41QzE3MiAzLjcgMTY2LjMgMCAxNjAgMHptMCA5NmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMzIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMzEyIDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NTMuNGMtMTQuOCA3LjctMjQgMjMuMS0yNCA0NC42YzAgMTYuOCAxNiA0NCAzNy40IDY3LjJjNS44IDYuMiAxNS41IDYuMiAyMS4yIDBDNjI0IDMxOCA2NDAgMjkwLjcgNjQwIDI3NGMwLTIxLjUtOS4yLTM3LTI0LTQ0LjZWMTc2YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwdjIyLjdjLTkuOC00LjMtMjAuNi02LjctMzItNi43Yy00NC4yIDAtODAgMzUuOC04MCA4MHYyMS40Yy0xNC44IDcuNy0yNCAyMy4xLTI0IDQ0LjZjMCAxNi44IDE2IDQ0IDM3LjQgNjcuMmM1LjggNi4yIDE1LjUgNi4yIDIxLjIgMEM0MDAgMzgyIDQxNiAzNTQuNyA0MTYgMzM4YzAtMjEuNS05LjItMzctMjQtNDQuNlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY4VjQ0OEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTA0VjI4MHYtOFYxNzZ6XCJdXG59O1xudmFyIGZhVG9pbGV0c1BvcnRhYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RvaWxldHMtcG9ydGFibGUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1ODRcIiwgXCJNMzIgMEgyMjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMFYzMkMwIDE0LjMgMTQuMyAwIDMyIDB6TTAgOTZIMjQgMjMyaDI0djI0VjQ4OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHYtOEg0OHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjEyMCA5NnpNMTkyIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnpNMzUyIDBINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDMyMFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIwIDk2aDI0SDU1MmgyNHYyNFY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR2LThIMzY4djhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTIwIDk2ek01MTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUhvY2tleVB1Y2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9ja2V5LXB1Y2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0NTNcIiwgXCJNMjU2IDI1NkMxMTQuNiAyNTYgMCAyMTMgMCAxNjBzMTE0LjYtOTYgMjU2LTk2czI1NiA0MyAyNTYgOTZzLTExNC42IDk2LTI1NiA5NnptMTkyLjMgMS44YzI0LjctOS4zIDQ2LjktMjEgNjMuNy0zNS42VjM1MmMwIDUzLTExNC42IDk2LTI1NiA5NlMwIDQwNSAwIDM1MlYyMjIuM2MxNi44IDE0LjYgMzkgMjYuMyA2My43IDM1LjZDMTE0LjUgMjc2LjkgMTgyLjUgMjg4IDI1NiAyODhzMTQxLjUtMTEuMSAxOTIuMy0zMC4yelwiXVxufTtcbnZhciBmYVRhYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGNlXCIsIFwiTTY0IDI1NlYxNjBIMjI0djk2SDY0em0wIDY0SDIyNHY5Nkg2NFYzMjB6bTIyNCA5NlYzMjBINDQ4djk2SDI4OHpNNDQ4IDI1NkgyODhWMTYwSDQ0OHY5NnpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0elwiXVxufTtcbnZhciBmYU1hZ25pZnlpbmdHbGFzc0Fycm93UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFnbmlmeWluZy1nbGFzcy1hcnJvdy1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTUyMVwiLCBcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0yNDEgMTE5Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDMxIDMxSDEyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyMzguMWwtMzEgMzFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtNzItNzJ6XCJdXG59O1xudmFyIGZhVGFjaG9ncmFwaERpZ2l0YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFjaG9ncmFwaC1kaWdpdGFsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJkaWdpdGFsLXRhY2hvZ3JhcGhcIl0sIFwiZjU2NlwiLCBcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMzIgNjRIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTY0IDM2OGMwLTguOCA3LjItMTYgMTYtMTZIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZ6bTMyMCAwYzAtOC44IDcuMi0xNiAxNi0xNkg1NjBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINDAwYy04LjggMC0xNi03LjItMTYtMTZ6TTgwIDI4OGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4IDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bTgwLTE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptODAtMTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwiXVxufTtcbnZhciBmYURpZ2l0YWxUYWNob2dyYXBoID0gZmFUYWNob2dyYXBoRGlnaXRhbDtcbnZhciBmYVVzZXJzU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcnMtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzNcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w0NDAuNiAzMjBINjE4LjdjMTEuOCAwIDIxLjMtOS42IDIxLjMtMjEuM0M2NDAgMjM5LjggNTkyLjIgMTkyIDUzMy4zIDE5Mkg0OTAuN2MtMTUuOSAwLTMxIDMuNS00NC42IDkuN2MxLjMgNy4yIDEuOSAxNC43IDEuOSAyMi4zYzAgMzAuMi0xMC41IDU4LTI4IDc5LjlsLTI1LjItMTkuN0M0MDguMSAyNjcuNyA0MTYgMjQ2LjggNDE2IDIyNGMwLTUzLTQzLTk2LTk2LTk2Yy0zMS4xIDAtNTguNyAxNC44LTc2LjMgMzcuN2wtNDAuNi0zMS44YzEzLTE0LjIgMjAuOS0zMy4xIDIwLjktNTMuOWMwLTQ0LjItMzUuOC04MC04MC04MEMxMTYuMyAwIDkxLjkgMTQuMSA3Ny41IDM1LjVMMzguOCA1LjF6TTEwNi43IDE5MkM0Ny44IDE5MiAwIDIzOS44IDAgMjk4LjdDMCAzMTAuNCA5LjYgMzIwIDIxLjMgMzIwSDIzNC43Yy4yIDAgLjQgMCAuNyAwYy0yMC42LTE4LjItMzUuMi00Mi44LTQwLjgtNzAuOEwxMjEuOCAxOTJIMTA2Ljd6TTI2MS4zIDM1MkMxODcuNyAzNTIgMTI4IDQxMS43IDEyOCA0ODUuM2MwIDE0LjcgMTEuOSAyNi43IDI2LjcgMjYuN0g0ODUuM2MxMC41IDAgMTkuNS02IDIzLjktMTQuOEwzMjQuOSAzNTJIMjYxLjN6TTUxMiAxNjBBODAgODAgMCAxIDAgNTEyIDBhODAgODAgMCAxIDAgMCAxNjB6XCJdXG59O1xudmFyIGZhQ2xvdmVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3ZlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTEzOVwiLCBcIk0xNzMuMyAzMkMxMzkuNCAzMiAxMTIgNTkuNCAxMTIgOTMuM3Y0LjljMCAxMiAzLjMgMjMuNyA5LjQgMzRsMTguOCAzMS4zYzEuMSAxLjggMS4yIDMuMSAxIDQuMmMtLjIgMS4yLS44IDIuNS0yIDMuNnMtMi40IDEuOC0zLjYgMmMtMSAuMi0yLjQgLjEtNC4yLTFsLTMxLjMtMTguOGMtMTAuMy02LjItMjItOS40LTM0LTkuNEg2MS4zQzI3LjQgMTQ0IDAgMTcxLjQgMCAyMDUuM2MwIDE2LjIgNi41IDMxLjggMTcuOSA0My4zbDEuMiAxLjJjMy40IDMuNCAzLjQgOSAwIDEyLjRsLTEuMiAxLjJDNi41IDI3NC45IDAgMjkwLjUgMCAzMDYuN0MwIDM0MC42IDI3LjQgMzY4IDYxLjMgMzY4aDQuOWMxMiAwIDIzLjctMy4zIDM0LTkuNGwzMS4zLTE4LjhjMS44LTEuMSAzLjEtMS4yIDQuMi0xYzEuMiAuMiAyLjUgLjggMy42IDJzMS44IDIuNCAyIDMuNmMuMiAxIC4xIDIuNC0xIDQuMmwtMTguOCAzMS4zYy02LjIgMTAuMy05LjQgMjItOS40IDM0djQuOWMwIDMzLjggMjcuNCA2MS4zIDYxLjMgNjEuM2MxNi4yIDAgMzEuOC02LjUgNDMuMy0xNy45bDEuMi0xLjJjMy40LTMuNCA5LTMuNCAxMi40IDBsMS4yIDEuMmMxMS41IDExLjUgMjcuMSAxNy45IDQzLjMgMTcuOWMzMy44IDAgNjEuMy0yNy40IDYxLjMtNjEuM3YtNC45YzAtMTItMy4zLTIzLjctOS40LTM0bC0xOC44LTMxLjNjLTEuMS0xLjgtMS4yLTMuMS0xLTQuMmMuMi0xLjIgLjgtMi41IDItMy42czIuNC0xLjggMy42LTJjMS0uMiAyLjQtLjEgNC4yIDFsMzEuMyAxOC44YzEwLjMgNi4yIDIyIDkuNCAzNCA5LjRoNC45YzMzLjggMCA2MS4zLTI3LjQgNjEuMy02MS4zYzAtMTYuMi02LjUtMzEuOC0xNy45LTQzLjNsLTEuMi0xLjJjLTMuNC0zLjQtMy40LTkgMC0xMi40bDEuMi0xLjJjMTEuNS0xMS41IDE3LjktMjcuMSAxNy45LTQzLjNjMC0zMy44LTI3LjQtNjEuMy02MS4zLTYxLjNoLTQuOWMtMTIgMC0yMy43IDMuMy0zNCA5LjRsLTMxLjMgMTguOGMtMS44IDEuMS0zLjEgMS4yLTQuMiAxYy0xLjItLjItMi41LS44LTMuNi0ycy0xLjgtMi40LTItMy42Yy0uMi0xLS4xLTIuNCAxLTQuMmwxOC44LTMxLjNjNi4yLTEwLjMgOS40LTIyIDkuNC0zNFY5My4zQzMzNiA1OS40IDMwOC42IDMyIDI3NC43IDMyYy0xNi4yIDAtMzEuOCA2LjUtNDMuMyAxNy45bC0xLjIgMS4yYy0zLjQgMy40LTkgMy40LTEyLjQgMGwtMS4yLTEuMkMyMDUuMSAzOC41IDE4OS41IDMyIDE3My4zIDMyelwiXVxufTtcbnZhciBmYVJlcGx5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlcGx5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE3MTQsIFwibWFpbC1yZXBseVwiXSwgXCJmM2U1XCIsIFwiTTIwNSAzNC44YzExLjUgNS4xIDE5IDE2LjYgMTkgMjkuMnY2NEgzMzZjOTcuMiAwIDE3NiA3OC44IDE3NiAxNzZjMCAxMTMuMy04MS41IDE2My45LTEwMC4yIDE3NC4xYy0yLjUgMS40LTUuMyAxLjktOC4xIDEuOWMtMTAuOSAwLTE5LjctOC45LTE5LjctMTkuN2MwLTcuNSA0LjMtMTQuNCA5LjgtMTkuNWM5LjQtOC44IDIyLjItMjYuNCAyMi4yLTU2LjdjMC01My00My05Ni05Ni05NkgyMjR2NjRjMCAxMi42LTcuNCAyNC4xLTE5IDI5LjJzLTI1IDMtMzQuNC01LjRsLTE2MC0xNDRDMy45IDIyNS43IDAgMjE3LjEgMCAyMDhzMy45LTE3LjcgMTAuNi0yMy44bDE2MC0xNDRjOS40LTguNSAyMi45LTEwLjYgMzQuNC01LjR6XCJdXG59O1xudmFyIGZhTWFpbFJlcGx5ID0gZmFSZXBseTtcbnZhciBmYVN0YXJBbmRDcmVzY2VudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGFyLWFuZC1jcmVzY2VudCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzk3NzBdLCBcImY2OTlcIiwgXCJNMCAyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwYzMzIDAgNjQuNiA2LjMgOTMuNiAxNy43YzcuNCAyLjkgMTEuNSAxMC43IDkuOCAxOC40cy04LjggMTMtMTYuNyAxMi40Yy00LjgtLjMtOS43LS41LTE0LjYtLjVjLTExNC45IDAtMjA4IDkzLjEtMjA4IDIwOHM5My4xIDIwOCAyMDggMjA4YzQuOSAwIDkuOC0uMiAxNC42LS41YzcuOS0uNSAxNSA0LjcgMTYuNyAxMi40cy0yLjQgMTUuNS05LjggMTguNEMzMjAuNiA1MDUuNyAyODkgNTEyIDI1NiA1MTJDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZ6TTM3NS40IDEzNy40YzMuNS03LjEgMTMuNy03LjEgMTcuMiAwbDMxLjUgNjMuOGMxLjQgMi44IDQuMSA0LjggNy4yIDUuM2w3MC40IDEwLjJjNy45IDEuMSAxMSAxMC44IDUuMyAxNi40bC01MC45IDQ5LjZjLTIuMyAyLjItMy4zIDUuNC0yLjggOC41bDEyIDcwLjFjMS4zIDcuOC02LjkgMTMuOC0xMy45IDEwLjFsLTYzLTMzLjFjLTIuOC0xLjUtNi4xLTEuNS04LjkgMGwtNjMgMzMuMWMtNyAzLjctMTUuMy0yLjMtMTMuOS0xMC4xbDEyLTcwLjFjLjUtMy4xLS41LTYuMy0yLjgtOC41TDI2MSAyMzMuMWMtNS43LTUuNi0yLjYtMTUuMiA1LjMtMTYuNGw3MC40LTEwLjJjMy4xLS41IDUuOC0yLjQgNy4yLTUuM2wzMS41LTYzLjh6XCJdXG59O1xudmFyIGZhSG91c2VGaXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWZpcmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MGNcIiwgXCJNMjg4IDM1MC4xbDAgMS45SDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQ0Ny4zIDEyOC4xYy0xMi4zLTEtMjUgMy0zNC44IDExLjdjLTM1LjQgMzEuNi02NS42IDY3LjctODcuMyAxMDIuOEMzMDQuMyAyNzYuNSAyODggMzE0LjkgMjg4IDM1MC4xek00NTMuNSAxNjMuOGMxOS43IDE3LjggMzguMiAzNyA1NS41IDU3LjdjNy45LTkuOSAxNi44LTIwLjcgMjYuNS0yOS41YzUuNi01LjEgMTQuNC01LjEgMjAgMGMyNC43IDIyLjcgNDUuNiA1Mi43IDYwLjQgODEuMWMxNC41IDI4IDI0LjIgNTguOCAyNC4yIDc5QzY0MCA0NDAgNTY4LjcgNTEyIDQ4MCA1MTJjLTg5LjcgMC0xNjAtNzIuMS0xNjAtMTU5LjhjMC0yNi40IDEyLjctNjAuNyAzMi40LTkyLjZjMjAtMzIuNCA0OC4xLTY2LjEgODEuNC05NS44YzIuOC0yLjUgNi40LTMuOCAxMC0zLjdjMy41IDAgNyAxLjMgOS44IDMuOHpNNTMwIDQzM2MzMC0yMSAzOC02MyAyMC05NmMtMi00LTQtOC03LTEybC0zNiA0MnMtNTgtNzQtNjItNzljLTMwIDM3LTQ1IDU4LTQ1IDgyYzAgNDkgMzYgNzggODEgNzhjMTggMCAzNC01IDQ5LTE1elwiXVxufTtcbnZhciBmYVNxdWFyZU1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1taW51cycsXG4gIGljb246IFs0NDgsIDUxMiwgWzYxNzY3LCBcIm1pbnVzLXNxdWFyZVwiXSwgXCJmMTQ2XCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptODggMjAwSDI5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJdXG59O1xudmFyIGZhTWludXNTcXVhcmUgPSBmYVNxdWFyZU1pbnVzO1xudmFyIGZhSGVsaWNvcHRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWxpY29wdGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NjQxXSwgXCJmNTMzXCIsIFwiTTEyOCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0djY0aDMyYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM4NCAzMjBjLTIwLjEgMC0zOS4xLTkuNS01MS4yLTI1LjZsLTcxLjQtOTUuMmMtMy41LTQuNy04LjMtOC4zLTEzLjctMTAuNUw0Ny4yIDE5OC4xYy05LjUtMy44LTE2LjctMTItMTkuMi0yMkw1IDgzLjlDMi40IDczLjggMTAuMSA2NCAyMC41IDY0SDQ4YzEwLjEgMCAxOS42IDQuNyAyNS42IDEyLjhMMTEyIDEyOEgzMjBWNjRIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMzg0IDMyMEg1MTJWMjg4YzAtNTMtNDMtOTYtOTYtOTZIMzg0VjMyMHpNNjMwLjYgNDI1LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTMuOSAzLjljLTI0IDI0LTU2LjYgMzcuNS05MC41IDM3LjVIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDUzNi4yYzE3IDAgMzMuMy02LjcgNDUuMy0xOC43bDMuOS0zLjljMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJdXG59O1xudmFyIGZhQ29tcGFzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wYXNzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTE3XSwgXCJmMTRlXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem01MC43LTE4Ni45TDE2Mi40IDM4MC42Yy0xOS40IDcuNS0zOC41LTExLjYtMzEtMzFsNTUuNS0xNDQuM2MzLjMtOC41IDkuOS0xNS4xIDE4LjQtMTguNGwxNDQuMy01NS41YzE5LjQtNy41IDM4LjUgMTEuNiAzMSAzMUwzMjUuMSAzMDYuN2MtMy4yIDguNS05LjkgMTUuMS0xOC40IDE4LjR6TTI4OCAyNTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIl1cbn07XG52YXIgZmFTcXVhcmVDYXJldERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLWNhcmV0LWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImNhcmV0LXNxdWFyZS1kb3duXCJdLCBcImYxNTBcIiwgXCJNMzg0IDQ4MGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwek0yMjQgMzUyYy02LjcgMC0xMy0yLjgtMTcuNi03LjdsLTEwNC0xMTJjLTYuNS03LTguMi0xNy4yLTQuNC0yNS45czEyLjUtMTQuNCAyMi0xNC40bDIwOCAwYzkuNSAwIDE4LjIgNS43IDIyIDE0LjRzMi4xIDE4LjktNC40IDI1LjlsLTEwNCAxMTJjLTQuNSA0LjktMTAuOSA3LjctMTcuNiA3Ljd6XCJdXG59O1xudmFyIGZhQ2FyZXRTcXVhcmVEb3duID0gZmFTcXVhcmVDYXJldERvd247XG52YXIgZmFGaWxlQ2lyY2xlUXVlc3Rpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jaXJjbGUtcXVlc3Rpb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0ZWZcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNMzY4IDMyMS42VjMyOGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di02LjRjMC01LjMgNC4zLTkuNiA5LjYtOS42aDQwLjVjNy43IDAgMTMuOSA2LjIgMTMuOSAxMy45YzAgNS4yLTIuOSA5LjktNy40IDEyLjNsLTMyIDE2LjhjLTUuMyAyLjgtOC42IDguMi04LjYgMTQuMlYzODRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnYtNS4xbDIzLjUtMTIuM2MxNS4xLTcuOSAyNC41LTIzLjYgMjQuNS00MC42YzAtMjUuNC0yMC42LTQ1LjktNDUuOS00NS45SDQwOS42Yy0yMyAwLTQxLjYgMTguNi00MS42IDQxLjZ6XCJdXG59O1xudmFyIGZhTGFwdG9wQ29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXB0b3AtY29kZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjVmY1wiLCBcIk02NCA5NmMwLTM1LjMgMjguNy02NCA2NC02NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUySDUxMlY5NkgxMjhWMzUySDY0Vjk2ek0wIDQwMy4yQzAgMzkyLjYgOC42IDM4NCAxOS4yIDM4NEg2MjAuOGMxMC42IDAgMTkuMiA4LjYgMTkuMiAxOS4yYzAgNDIuNC0zNC40IDc2LjgtNzYuOCA3Ni44SDc2LjhDMzQuNCA0ODAgMCA0NDUuNiAwIDQwMy4yek0yODEgMjA5bC0zMSAzMSAzMSAzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00OC00OGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNDgtNDhjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek0zOTMgMTc1bDQ4IDQ4YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC00OCA0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwiXVxufTtcbnZhciBmYVN3YXRjaGJvb2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3dhdGNoYm9vaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVjM1wiLCBcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEgxNjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDE2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjMyek0yMjMuNiA0MjUuOWMuMy0zLjMgLjQtNi42IC40LTkuOVYxNTRsNzUuNC03NS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDkwLjUgOTAuNWMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM0wyMjMuNiA0MjUuOXpNMTgyLjggNTEybDE5Mi0xOTJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxODIuOHpNMTI4IDY0SDY0djY0aDY0VjY0ek02NCAxOTJ2NjRoNjRWMTkySDY0ek05NiA0NDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwiXVxufTtcbnZhciBmYVByZXNjcmlwdGlvbkJvdHRsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcmVzY3JpcHRpb24tYm90dGxlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDg1XCIsIFwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyem0zMiA5NkgzNTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MTZIMTQ0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMyVjMyMEgxNDRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzJWMjI0SDE0NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMlYxMjh6XCJdXG59O1xudmFyIGZhQmFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXJzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJuYXZpY29uXCJdLCBcImYwYzlcIiwgXCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek0wIDI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00NDggNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnpcIl1cbn07XG52YXIgZmFOYXZpY29uID0gZmFCYXJzO1xudmFyIGZhUGVvcGxlR3JvdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVvcGxlLWdyb3VwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTMzXCIsIFwiTTcyIDg4YTU2IDU2IDAgMSAxIDExMiAwQTU2IDU2IDAgMSAxIDcyIDg4ek02NCAyNDUuN0M1NCAyNTYuOSA0OCAyNzEuOCA0OCAyODhzNiAzMS4xIDE2IDQyLjNWMjQ1Ljd6bTE0NC40LTQ5LjNDMTc4LjcgMjIyLjcgMTYwIDI2MS4yIDE2MCAzMDRjMCAzNC4zIDEyIDY1LjggMzIgOTAuNVY0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4OS4yQzI2LjIgMzcxLjIgMCAzMzIuNyAwIDI4OGMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmgzMmMyNCAwIDQ2LjIgNy41IDY0LjQgMjAuM3pNNDQ4IDQxNlYzOTQuNWMyMC0yNC43IDMyLTU2LjIgMzItOTAuNWMwLTQyLjgtMTguNy04MS4zLTQ4LjQtMTA3LjdDNDQ5LjggMTgzLjUgNDcyIDE3NiA0OTYgMTc2aDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyYzAgNDQuNy0yNi4yIDgzLjItNjQgMTAxLjJWNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTgtMzI4YTU2IDU2IDAgMSAxIDExMiAwQTU2IDU2IDAgMSAxIDQ1NiA4OHpNNTc2IDI0NS43djg0LjdjMTAtMTEuMyAxNi0yNi4xIDE2LTQyLjNzLTYtMzEuMS0xNi00Mi4zek0zMjAgMzJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTI0MCAzMDRjMCAxNi4yIDYgMzEgMTYgNDIuM1YyNjEuN2MtMTAgMTEuMy0xNiAyNi4xLTE2IDQyLjN6bTE0NC00Mi4zdjg0LjdjMTAtMTEuMyAxNi0yNi4xIDE2LTQyLjNzLTYtMzEuMS0xNi00Mi4zek00NDggMzA0YzAgNDQuNy0yNi4yIDgzLjItNjQgMTAxLjJWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDA1LjJjLTM3LjgtMTgtNjQtNTYuNS02NC0xMDEuMmMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmgzMmM2MS45IDAgMTEyIDUwLjEgMTEyIDExMnpcIl1cbn07XG52YXIgZmFIb3VyZ2xhc3NFbmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91cmdsYXNzLWVuZCcsXG4gIGljb246IFszODQsIDUxMiwgWzg5ODcsIFwiaG91cmdsYXNzLTNcIl0sIFwiZjI1M1wiLCBcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0Vjc1YzAgNDIuNCAxNi45IDgzLjEgNDYuOSAxMTMuMUwxNDYuNyAyNTYgNzguOSAzMjMuOUM0OC45IDM1My45IDMyIDM5NC42IDMyIDQzN3YxMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NCAzMjBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWNDM3YzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMUwyMzcuMyAyNTZsNjcuOS02Ny45YzMwLTMwIDQ2LjktNzAuNyA0Ni45LTExMy4xVjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMCA2NCAzMnpNOTYgNzVWNjRIMjg4Vjc1YzAgMjUuNS0xMC4xIDQ5LjktMjguMSA2Ny45TDE5MiAyMTAuN2wtNjcuOS02Ny45QzEwNi4xIDEyNC45IDk2IDEwMC40IDk2IDc1elwiXVxufTtcbnZhciBmYUhvdXJnbGFzczMgPSBmYUhvdXJnbGFzc0VuZDtcbnZhciBmYUhlYXJ0Q3JhY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhcnQtY3JhY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgxNDgsIFwiaGVhcnQtYnJva2VuXCJdLCBcImY3YTlcIiwgXCJNMTE5LjQgNDQuMWMyMy4zLTMuOSA0Ni44LTEuOSA2OC42IDUuM2w0OS44IDc3LjUtNzUuNCA3NS40Yy0xLjUgMS41LTIuNCAzLjYtMi4zIDUuOHMxIDQuMiAyLjYgNS43bDExMiAxMDRjMi45IDIuNyA3LjQgMi45IDEwLjUgLjNzMy44LTcgMS43LTEwLjRsLTYwLjQtOTguMSA5MC43LTc1LjZjMi42LTIuMSAzLjUtNS43IDIuNC04LjhMMjk2LjggNjEuOGMyOC41LTE2LjcgNjIuNC0yMy4yIDk1LjctMTcuNkM0NjEuNSA1NS42IDUxMiAxMTUuMiA1MTIgMTg1LjF2NS44YzAgNDEuNS0xNy4yIDgxLjItNDcuNiAxMDkuNUwyODMuNyA0NjkuMWMtNy41IDctMTcuNCAxMC45LTI3LjcgMTAuOXMtMjAuMi0zLjktMjcuNy0xMC45TDQ3LjYgMzAwLjRDMTcuMiAyNzIuMSAwIDIzMi40IDAgMTkwLjl2LTUuOGMwLTY5LjkgNTAuNS0xMjkuNSAxMTkuNC0xNDF6XCJdXG59O1xudmFyIGZhSGVhcnRCcm9rZW4gPSBmYUhlYXJ0Q3JhY2s7XG52YXIgZmFTcXVhcmVVcFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS11cC1yaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzg1OTksIFwiZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0XCJdLCBcImYzNjBcIiwgXCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0ek0zMjAgMzEzLjRWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgxNjYuNmMtMTIuNSAwLTIyLjYgMTAuMS0yMi42IDIyLjZjMCA2IDIuNCAxMS44IDYuNiAxNkwxODQgMjMybC02Ni4zIDY2LjNDMTE0IDMwMiAxMTIgMzA2LjkgMTEyIDMxMnMyIDEwIDUuNyAxMy43bDM2LjcgMzYuN2MzLjYgMy42IDguNSA1LjcgMTMuNyA1LjdzMTAtMiAxMy43LTUuN0wyNDggMjk2bDMzLjQgMzMuNGM0LjIgNC4yIDEwIDYuNiAxNiA2LjZjMTIuNSAwIDIyLjYtMTAuMSAyMi42LTIyLjZ6XCJdXG59O1xudmFyIGZhRXh0ZXJuYWxMaW5rU3F1YXJlQWx0ID0gZmFTcXVhcmVVcFJpZ2h0O1xudmFyIGZhRmFjZUtpc3NCZWFtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2Uta2lzcy1iZWFtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTM3LCBcImtpc3MtYmVhbVwiXSwgXCJmNTk3XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem00OC43LTE5OC4zYzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNGMtMi43IDEuNS01LjcgMy04LjcgNC4zYzMuMSAxLjMgNiAyLjcgOC43IDQuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRDMjc0LjcgNDQzLjEgMjU3LjQgNDQ4IDI0MCA0NDhjLTMuNiAwLTYuOC0yLjUtNy43LTZzLjYtNy4yIDMuOC05bDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0yLjUtMS40LTQuMS00LjEtNC4xLTdzMS42LTUuNiA0LjEtN2wwIDAgMCAwIDAgMCAwIDAgMCAwIC4yLS4xIC4zLS4yIC42LS40Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uNC0uMy0uNS0uMy0uMi0uMSAwIDAgMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6bS04Ny4xLTg0LjlsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIl1cbn07XG52YXIgZmFLaXNzQmVhbSA9IGZhRmFjZUtpc3NCZWFtO1xudmFyIGZhRmlsbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTAyXSwgXCJmMDA4XCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTQ4IDM2OHYzMmMwIDguOCA3LjIgMTYgMTYgMTZIOTZjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZINjRjLTguOCAwLTE2IDcuMi0xNiAxNnptMzY4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDQxNnpNNDggMjQwdjMyYzAgOC44IDcuMiAxNiAxNiAxNkg5NmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg2NGMtOC44IDAtMTYgNy4yLTE2IDE2em0zNjgtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZINDE2ek00OCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2SDk2YzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy04LjggMC0xNiA3LjItMTYgMTZ6TTQxNiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkg0MTZ6TTE2MCAxMjh2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBjMC0xNy43LTE0LjMtMzItMzItMzJIMTkyelwiXVxufTtcbnZhciBmYVJ1bGVySG9yaXpvbnRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdydWxlci1ob3Jpem9udGFsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTQ3XCIsIFwiTTAgMzM2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDU0NCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMTYwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwYy0yNi41IDAtNDggMjEuNS00OCA0OEwwIDMzNnpcIl1cbn07XG52YXIgZmFQZW9wbGVSb2JiZXJ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blb3BsZS1yb2JiZXJ5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTM2XCIsIFwiTTQ4OC4yIDU5LjFDNDc4LjEgOTkuNiA0NDEuNyAxMjggNDAwIDEyOHMtNzguMS0yOC40LTg4LjItNjguOUwzMDMgMjQuMkMyOTguOCA3LjEgMjgxLjQtMy4zIDI2NC4yIDFTMjM2LjcgMjIuNiAyNDEgMzkuOGw4LjcgMzQuOWMxMSA0NCA0MC4yIDc5LjYgNzguMyA5OS42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmgxNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNzQuM2MzOC4xLTIwIDY3LjMtNTUuNiA3OC4zLTk5LjZMNTU5IDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzUwMS4yIDcuMSA0OTcgMjQuMmwtOC43IDM0Ljl6TTQwMCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTgwIDk2QTQ4IDQ4IDAgMSAwIDgwIDBhNDggNDggMCAxIDAgMCA5NnptLTggMzJjLTM1LjMgMC02NCAyOC43LTY0IDY0djk2bDAgLjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUySDg4VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1Mi43bDEzIDIwLjVjNS45IDkuMiAxNi4xIDE0LjkgMjcgMTQuOWg0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyMDkuNmwtMzcuNC01OC45QzE1Ny42IDE0MiAxMzIuMSAxMjggMTA0LjcgMTI4SDcyelwiXVxufTtcbnZhciBmYUxpZ2h0YnVsYiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaWdodGJ1bGInLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgxNjFdLCBcImYwZWJcIiwgXCJNMjcyIDM4NGM5LjYtMzEuOSAyOS41LTU5LjEgNDkuMi04Ni4ybDAgMGM1LjItNy4xIDEwLjQtMTQuMiAxNS40LTIxLjRjMTkuOC0yOC41IDMxLjQtNjMgMzEuNC0xMDAuM0MzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgMzcuMyAxMS42IDcxLjkgMzEuNCAxMDAuM2M1IDcuMiAxMC4yIDE0LjMgMTUuNCAyMS40bDAgMGMxOS44IDI3LjEgMzkuNyA1NC40IDQ5LjIgODYuMkgyNzJ6TTE5MiA1MTJjNDQuMiAwIDgwLTM1LjggODAtODBWNDE2SDExMnYxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHpNMTEyIDE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwIDM1LjgtODAgODB6XCJdXG59O1xudmFyIGZhQ2FyZXRMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmV0LWxlZnQnLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImYwZDlcIiwgXCJNOS40IDI3OC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2wxMjgtMTI4YzkuMi05LjIgMjIuOS0xMS45IDM0LjktNi45czE5LjggMTYuNiAxOS44IDI5LjZsMCAyNTZjMCAxMi45LTcuOCAyNC42LTE5LjggMjkuNnMtMjUuNyAyLjItMzQuOS02LjlsLTEyOC0xMjh6XCJdXG59O1xudmFyIGZhQ2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJleGNsYW1hdGlvbi1jaXJjbGVcIl0sIFwiZjA2YVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMC0zODRjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMjI0IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbnZhciBmYUV4Y2xhbWF0aW9uQ2lyY2xlID0gZmFDaXJjbGVFeGNsYW1hdGlvbjtcbnZhciBmYVNjaG9vbENpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NjaG9vbC1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NmRcIiwgXCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMjB2MEgyNTZWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0bC4zIDBoLjVjMy40LTM3LjcgMTguNy03Mi4xIDQyLjItOTkuMUMzNTAuMiAyNjAgMzM1LjYgMjY0IDMyMCAyNjRjLTQ4LjYgMC04OC0zOS40LTg4LTg4czM5LjQtODggODgtODhzODggMzkuNCA4OCA4OGMwIDE4LjMtNS42IDM1LjMtMTUuMSA0OS40YzI5LTIxIDY0LjYtMzMuNCAxMDMuMS0zMy40YzU5LjUgMCAxMTIuMSAyOS42IDE0NCA3NC44VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEg0NzMuN0wzMzcuOCA1LjR6TTk2IDE5MmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjA4YzAtOC44IDcuMi0xNiAxNi0xNnptMCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6TTMyMCAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzM2VjE0NGMwLTguOC03LjItMTYtMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0yMi42LTE0NGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42TDUxOC42IDM2OHpcIl1cbn07XG52YXIgZmFBcnJvd1JpZ2h0RnJvbUJyYWNrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctcmlnaHQtZnJvbS1icmFja2V0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzaWduLW91dFwiXSwgXCJmMDhiXCIsIFwiTTUwMi42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjQgMTkyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyMTAuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4ek0xNjAgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMOTYgMzJDNDMgMzIgMCA3NSAwIDEyOEwwIDM4NGMwIDUzIDQzIDk2IDk2IDk2bDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDB6XCJdXG59O1xudmFyIGZhU2lnbk91dCA9IGZhQXJyb3dSaWdodEZyb21CcmFja2V0O1xudmFyIGZhQ2lyY2xlQ2hldnJvbkRvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWNoZXZyb24tZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY2hldnJvbi1jaXJjbGUtZG93blwiXSwgXCJmMTNhXCIsIFwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTM1IDI0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDg3IDg3IDg3LTg3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwyNzMgMzQ1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxMzUgMjQxelwiXVxufTtcbnZhciBmYUNoZXZyb25DaXJjbGVEb3duID0gZmFDaXJjbGVDaGV2cm9uRG93bjtcbnZhciBmYVVubG9ja0tleWhvbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndW5sb2NrLWtleWhvbGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcInVubG9jay1hbHRcIl0sIFwiZjEzZVwiLCBcIk0yMjQgNjRjLTQ0LjIgMC04MCAzNS44LTgwIDgwdjQ4SDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI1NmMwLTM1LjMgMjguNy02NCA2NC02NEg4MFYxNDRDODAgNjQuNSAxNDQuNSAwIDIyNCAwYzU3LjUgMCAxMDcgMzMuNyAxMzAuMSA4Mi4zYzcuNiAxNiAuOCAzNS4xLTE1LjIgNDIuNnMtMzUuMSAuOC00Mi42LTE1LjJDMjgzLjQgODIuNiAyNTUuOSA2NCAyMjQgNjR6bTMyIDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNjR6XCJdXG59O1xudmFyIGZhVW5sb2NrQWx0ID0gZmFVbmxvY2tLZXlob2xlO1xudmFyIGZhQ2xvdWRTaG93ZXJzSGVhdnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc2hvd2Vycy1oZWF2eScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc0MFwiLCBcIk05NiAzMjBjLTUzIDAtOTYtNDMtOTYtOTZjMC00Mi41IDI3LjYtNzguNiA2NS45LTkxLjJDNjQuNyAxMjYuMSA2NCAxMTkuMSA2NCAxMTJDNjQgNTAuMSAxMTQuMSAwIDE3NiAwYzQzLjEgMCA4MC41IDI0LjMgOTkuMiA2MGMxNC43LTE3LjEgMzYuNS0yOCA2MC44LTI4YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS41LS42IDEwLjgtMS42IDE2Yy41IDAgMS4xIDAgMS42IDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIOTZ6TTgxLjUgMzUzLjljMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42Uy0zLjMgNDkwLjcgMS45IDQ3OC41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42em0xMjAgMGMxMi4yIDUuMiAxNy44IDE5LjMgMTIuNiAzMS41bC00OCAxMTJjLTUuMiAxMi4yLTE5LjMgMTcuOC0zMS41IDEyLjZzLTE3LjgtMTkuMy0xMi42LTMxLjVsNDgtMTEyYzUuMi0xMi4yIDE5LjMtMTcuOCAzMS41LTEyLjZ6bTI0NC42IDMxLjVsLTQ4IDExMmMtNS4yIDEyLjItMTkuMyAxNy44LTMxLjUgMTIuNnMtMTcuOC0xOS4zLTEyLjYtMzEuNWw0OC0xMTJjNS4yLTEyLjIgMTkuMy0xNy44IDMxLjUtMTIuNnMxNy44IDE5LjMgMTIuNiAzMS41ek0zMTMuNSAzNTMuOWMxMi4yIDUuMiAxNy44IDE5LjMgMTIuNiAzMS41bC00OCAxMTJjLTUuMiAxMi4yLTE5LjMgMTcuOC0zMS41IDEyLjZzLTE3LjgtMTkuMy0xMi42LTMxLjVsNDgtMTEyYzUuMi0xMi4yIDE5LjMtMTcuOCAzMS41LTEyLjZ6XCJdXG59O1xudmFyIGZhSGVhZHBob25lc1NpbXBsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFkcGhvbmVzLXNpbXBsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiaGVhZHBob25lcy1hbHRcIl0sIFwiZjU4ZlwiLCBcIk0yNTYgODBDMTQxLjEgODAgNDggMTczLjEgNDggMjg4VjM5MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODhDMCAxNDYuNiAxMTQuNiAzMiAyNTYgMzJzMjU2IDExNC42IDI1NiAyNTZWMzkyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI4OGMwLTExNC45LTkzLjEtMjA4LTIwOC0yMDh6TTgwIDM1MmMwLTM1LjMgMjguNy02NCA2NC02NGgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMTQ0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzNTJ6bTI4OC02NGMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgxNnpcIl1cbn07XG52YXIgZmFIZWFkcGhvbmVzQWx0ID0gZmFIZWFkcGhvbmVzU2ltcGxlO1xudmFyIGZhU2l0ZW1hcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaXRlbWFwJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMGU4XCIsIFwiTTIwOCA4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OGgtOHY0MEg0NjRjMzAuOSAwIDU2IDI1LjEgNTYgNTZ2MzJoOGMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjM2OGMwLTI2LjUgMjEuNS00OCA0OC00OGg4VjI4OGMwLTQuNC0zLjYtOC04LThIMzEydjQwaDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjU2Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNjhjMC0yNi41IDIxLjUtNDggNDgtNDhoOFYyODBIMTEyYy00LjQgMC04IDMuNi04IDh2MzJoOGMyNi41IDAgNDggMjEuNSA0OCA0OHY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzY4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDhWMjg4YzAtMzAuOSAyNS4xLTU2IDU2LTU2SDI2NFYxOTJoLThjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwelwiXVxufTtcbnZhciBmYUNpcmNsZURvbGxhclRvU2xvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtZG9sbGFyLXRvLXNsb3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImRvbmF0ZVwiXSwgXCJmNGI5XCIsIFwiTTMyNi43IDQwMy43Yy0yMi4xIDgtNDUuOSAxMi4zLTcwLjcgMTIuM3MtNDguNy00LjQtNzAuNy0xMi4zYy0uMy0uMS0uNS0uMi0uOC0uM2MtMzAtMTEtNTYuOC0yOC43LTc4LjYtNTEuNEM3MCAzMTQuNiA0OCAyNjMuOSA0OCAyMDhDNDggOTMuMSAxNDEuMSAwIDI1NiAwUzQ2NCA5My4xIDQ2NCAyMDhjMCA1NS45LTIyIDEwNi42LTU3LjkgMTQ0Yy0xIDEtMiAyLjEtMyAzLjFjLTIxLjQgMjEuNC00Ny40IDM4LjEtNzYuMyA0OC42ek0yNTYgOTEuOWMtMTEuMSAwLTIwLjEgOS0yMC4xIDIwLjF2NmMtNS42IDEuMi0xMC45IDIuOS0xNS45IDUuMWMtMTUgNi44LTI3LjkgMTkuNC0zMS4xIDM3LjdjLTEuOCAxMC4yLS44IDIwIDMuNCAyOWM0LjIgOC44IDEwLjcgMTUgMTcuMyAxOS41YzExLjYgNy45IDI2LjkgMTIuNSAzOC42IDE2bDIuMiAuN2MxMy45IDQuMiAyMy40IDcuNCAyOS4zIDExLjdjMi41IDEuOCAzLjQgMy4yIDMuNyA0Yy4zIC44IC45IDIuNiAuMiA2LjdjLS42IDMuNS0yLjUgNi40LTggOC44Yy02LjEgMi42LTE2IDMuOS0yOC44IDEuOWMtNi0xLTE2LjctNC42LTI2LjItNy45bDAgMCAwIDAgMCAwYy0yLjItLjctNC4zLTEuNS02LjQtMi4xYy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjdzMi4yIDIxLjggMTIuNyAyNS4zYzEuMiAuNCAyLjcgLjkgNC40IDEuNWM3LjkgMi43IDIwLjMgNi45IDI5LjggOS4xVjMwNGMwIDExLjEgOSAyMC4xIDIwLjEgMjAuMXMyMC4xLTkgMjAuMS0yMC4xdi01LjVjNS4zLTEgMTAuNS0yLjUgMTUuNC00LjZjMTUuNy02LjcgMjguNC0xOS43IDMxLjYtMzguN2MxLjgtMTAuNCAxLTIwLjMtMy0yOS40Yy0zLjktOS0xMC4yLTE1LjYtMTYuOS0yMC41Yy0xMi4yLTguOC0yOC4zLTEzLjctNDAuNC0xNy40bC0uOC0uMmMtMTQuMi00LjMtMjMuOC03LjMtMjkuOS0xMS40Yy0yLjYtMS44LTMuNC0zLTMuNi0zLjVjLS4yLS4zLS43LTEuNi0uMS01Yy4zLTEuOSAxLjktNS4yIDguMi04LjFjNi40LTIuOSAxNi40LTQuNSAyOC42LTIuNmM0LjMgLjcgMTcuOSAzLjMgMjEuNyA0LjNjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTQuNC0xLjItMTQuNC0zLjItMjEtNC40VjExMmMwLTExLjEtOS0yMC4xLTIwLjEtMjAuMXpNNDggMzUySDY0YzE5LjUgMjUuOSA0NCA0Ny43IDcyLjIgNjRINjR2MzJIMjU2IDQ0OFY0MTZIMzc1LjhjMjguMi0xNi4zIDUyLjgtMzguMSA3Mi4yLTY0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0MDBjMC0yNi41IDIxLjUtNDggNDgtNDh6XCJdXG59O1xudmFyIGZhRG9uYXRlID0gZmFDaXJjbGVEb2xsYXJUb1Nsb3Q7XG52YXIgZmFNZW1vcnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWVtb3J5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTM4XCIsIFwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4djcuNGMwIDYuOCA0LjQgMTIuNiAxMC4xIDE2LjNDMjMuMyAxNjAuMyAzMiAxNzUuMSAzMiAxOTJzLTguNyAzMS43LTIxLjkgNDAuM0M0LjQgMjM2IDAgMjQxLjggMCAyNDguNlYzMjBINTc2VjI0OC42YzAtNi44LTQuNC0xMi42LTEwLjEtMTYuM0M1NTIuNyAyMjMuNyA1NDQgMjA4LjkgNTQ0IDE5MnM4LjctMzEuNyAyMS45LTQwLjNjNS43LTMuNyAxMC4xLTkuNSAxMC4xLTE2LjNWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01NzYgMzUySDB2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIODBWNDE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJoOTZWNDE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJoOTZWNDE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJoOTZWNDE2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyek0xOTIgMTYwdjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xMjggMHY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDB2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJdXG59O1xudmFyIGZhUm9hZFNwaWtlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2FkLXNwaWtlcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU2OFwiLCBcIk02NCAxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUwxOTIgMjU2VjExNi44YzAtMTUuOCAyMC41LTIyIDI5LjMtOC45TDMyMCAyNTZWMTE2LjhjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMNDQ4IDI1NlYxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUw2MDYuOCAzMDIuMmMxNC4yIDIxLjMtMS4xIDQ5LjctMjYuNiA0OS43SDUxMiA0NDggMzg0IDMyMCAyNTYgMTkyIDY0VjExNi44ek0zMiAzODRINjA4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYUZpcmVCdXJuZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlyZS1idXJuZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZjFcIiwgXCJNMjkzLjUgMy44YzE5LjcgMTcuOCAzOC4yIDM3IDU1LjUgNTcuN2M3LjktOS45IDE2LjgtMjAuNyAyNi41LTI5LjVjNS42LTUuMSAxNC40LTUuMSAyMCAwYzI0LjcgMjIuNyA0NS42IDUyLjcgNjAuNCA4MS4xYzE0LjUgMjggMjQuMiA1OC44IDI0LjIgNzlDNDgwIDI4MCA0MDguNyAzNTIgMzIwIDM1MmMtODkuNyAwLTE2MC03Mi4xLTE2MC0xNTkuOGMwLTI2LjQgMTIuNy02MC43IDMyLjQtOTIuNmMyMC0zMi40IDQ4LjEtNjYuMSA4MS40LTk1LjhjMi44LTIuNSA2LjQtMy44IDEwLTMuN2MzLjUgMCA3IDEuMyA5LjggMy44ek0zNzAgMjczYzMwLTIxIDM4LTYzIDIwLTk2Yy0yLTQtNC04LTctMTJsLTM2IDQycy01OC03NC02Mi03OWMtMzAgMzctNDUgNTgtNDUgODJjMCA0OSAzNiA3OCA4MSA3OGMxOCAwIDM0LTUgNDktMTV6TTMyIDI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMnY2NEg1NDRWMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJWMjg4ek0zMjAgNDgwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTYwLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTE5MiA0ODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbnZhciBmYUZsYWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmxhZycsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyNzk4OCwgNjE3MjVdLCBcImYwMjRcIiwgXCJNNjQgMzJDNjQgMTQuMyA0OS43IDAgMzIgMFMwIDE0LjMgMCAzMlY2NCAzNjggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUybDY0LjMtMTYuMWM0MS4xLTEwLjMgODQuNi01LjUgMTIyLjUgMTMuNGM0NC4yIDIyLjEgOTUuNSAyNC44IDE0MS43IDcuNGwzNC43LTEzYzEyLjUtNC43IDIwLjgtMTYuNiAyMC44LTMwVjY2LjFjMC0yMy0yNC4yLTM4LTQ0LjgtMjcuN2wtOS42IDQuOGMtNDYuMyAyMy4yLTEwMC44IDIzLjItMTQ3LjEgMGMtMzUuMS0xNy42LTc1LjQtMjItMTEzLjUtMTIuNUw2NCA0OFYzMnpcIl1cbn07XG52YXIgZmFIYW51a2lhaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW51a2lhaCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODMzNF0sIFwiZjZlNlwiLCBcIk0zMTQuMiAzLjNDMzA5LjEgMTIuMSAyOTYgMzYuNiAyOTYgNTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN0MzMjQuNiAxLjIgMzIyLjQgMCAzMjAgMHMtNC42IDEuMi01LjggMy4zem0tMjg4IDQ4QzIxLjEgNjAuMSA4IDg0LjYgOCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN0MzNi42IDQ5LjIgMzQuNCA0OCAzMiA0OHMtNC42IDEuMi01LjggMy4zek04OCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MxMDEuMSA2MC4xIDg4IDg0LjYgODggMTA0em04Mi4yLTUyLjdDMTY1LjEgNjAuMSAxNTIgODQuNiAxNTIgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTIxNiAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0MyMjkuMSA2MC4xIDIxNiA4NC42IDIxNiAxMDR6TTM5NC4yIDUxLjNDMzg5LjEgNjAuMSAzNzYgODQuNiAzNzYgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjN6TTQ0MCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM0M0NTMuMSA2MC4xIDQ0MCA4NC42IDQ0MCAxMDR6bTgyLjItNTIuN0M1MTcuMSA2MC4xIDUwNCA4NC42IDUwNCAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM3pNNTg0IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzU5Ny4xIDYwLjEgNTg0IDg0LjYgNTg0IDEwNHpNMTEyIDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptMTYwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnY5NiAxNmgzMlYyNzIgMTc2YzAtOC44LTcuMi0xNi0xNi0xNnptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djk2IDE2aDMyVjI3MiAxNzZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2OTYgMTZoMzJWMjcyIDE3NmMwLTguOC03LjItMTYtMTYtMTZ6TTM1MiAxNDRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzIwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCA1MyA0MyA5NiA5NiA5NkgyODh2NjRIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMCA0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjM4NEg1NDRjNTMgMCA5Ni00MyA5Ni05NlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyVjE0NHpcIl1cbn07XG52YXIgZmFGZWF0aGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZlYXRoZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjk3MThdLCBcImY1MmRcIiwgXCJNMjc4LjUgMjE1LjZMMjMgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNTctNTdoNjhjNDkuNyAwIDk3LjktMTQuNCAxMzktNDFjMTEuMS03LjIgNS41LTIzLTcuOC0yM2MtNS4xIDAtOS4yLTQuMS05LjItOS4yYzAtNC4xIDIuNy03LjYgNi41LTguOGw4MS0yNC4zYzIuNS0uOCA0LjgtMi4xIDYuNy00bDIyLjQtMjIuNGMxMC4xLTEwLjEgMi45LTI3LjMtMTEuMy0yNy4zbC0zMi4yIDBjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsMTEyLTMzLjZjNC0xLjIgNy40LTMuOSA5LjMtNy43QzUwNi40IDIwNy42IDUxMiAxODQuMSA1MTIgMTYwYzAtNDEtMTYuMy04MC4zLTQ1LjMtMTA5LjNsLTUuNS01LjVDNDMyLjMgMTYuMyAzOTMgMCAzNTIgMHMtODAuMyAxNi4zLTEwOS4zIDQ1LjNMMTM5IDE0OUM5MSAxOTcgNjQgMjYyLjEgNjQgMzMwdjU1LjNMMjUzLjYgMTk1LjhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBjNS40IDUuNCA2LjEgMTMuNiAyLjIgMTkuOHpcIl1cbn07XG52YXIgZmFWb2x1bWVMb3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndm9sdW1lLWxvdycsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODI2NCwgXCJ2b2x1bWUtZG93blwiXSwgXCJmMDI3XCIsIFwiTTMwMS4xIDM0LjhDMzEyLjYgNDAgMzIwIDUxLjQgMzIwIDY0VjQ0OGMwIDEyLjYtNy40IDI0LTE4LjkgMjkuMnMtMjUgMy4xLTM0LjQtNS4zTDEzMS44IDM1Mkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDY3LjhMMjY2LjcgNDAuMWM5LjQtOC40IDIyLjktMTAuNCAzNC40LTUuM3pNNDEyLjYgMTgxLjVDNDM0LjEgMTk5LjEgNDQ4IDIyNS45IDQ0OCAyNTZzLTEzLjkgNTYuOS0zNS40IDc0LjVjLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEMzOTMuMSAyODQuNCA0MDAgMjcxIDQwMCAyNTZzLTYuOS0yOC40LTE3LjctMzcuM2MtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXpcIl1cbn07XG52YXIgZmFWb2x1bWVEb3duID0gZmFWb2x1bWVMb3c7XG52YXIgZmFDb21tZW50U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRiM1wiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUxMi45IDM3Ni43QzU1Mi4yIDM0MC4yIDU3NiAyOTIuMyA1NzYgMjQwQzU3NiAxMjUuMSA0NjEuNCAzMiAzMjAgMzJjLTY3LjcgMC0xMjkuMyAyMS40LTE3NS4xIDU2LjNMMzguOCA1LjF6TTY0IDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3LjljMzcgMCA3Mi4zLTYuNCAxMDQtMTcuOUw4Mi45IDE2MS4zQzcwLjcgMTg1LjYgNjQgMjEyLjIgNjQgMjQwelwiXVxufTtcbnZhciBmYUNsb3VkU3VuUmFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1zdW4tcmFpbicsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyNzc4Ml0sIFwiZjc0M1wiLCBcIk0yOTQuMiAxLjJjNS4xIDIuMSA4LjcgNi43IDkuNiAxMi4xbDEwLjQgNjIuNGMtMjMuMyAxMC44LTQyLjkgMjguNC01NiA1MC4zYy0xNC42LTktMzEuOC0xNC4xLTUwLjItMTQuMWMtNTMgMC05NiA0My05NiA5NmMwIDM1LjUgMTkuMyA2Ni42IDQ4IDgzLjJjLjggMzEuOCAxMy4yIDYwLjcgMzMuMSA4Mi43bC01NiAzOS4yYy00LjUgMy4xLTEwLjMgMy44LTE1LjQgMS42cy04LjctNi43LTkuNi0xMi4xTDk4LjEgMzE3LjkgMTMuNCAzMDMuOGMtNS40LS45LTEwLTQuNS0xMi4xLTkuNnMtMS41LTEwLjkgMS42LTE1LjRMNTIuNSAyMDggMi45IDEzNy4yYy0zLjItNC41LTMuOC0xMC4zLTEuNi0xNS40czYuNy04LjcgMTIuMS05LjZMOTguMSA5OC4xbDE0LjEtODQuN2MuOS01LjQgNC41LTEwIDkuNi0xMi4xczEwLjktMS41IDE1LjQgMS42TDIwOCA1Mi41IDI3OC44IDIuOWM0LjUtMy4yIDEwLjMtMy44IDE1LjQtMS42ek0yMDggMTQ0YzEzLjggMCAyNi43IDQuNCAzNy4xIDExLjljLTEuMiA0LjEtMi4yIDguMy0zIDEyLjZjLTM3LjkgMTQuNi02Ny4yIDQ2LjYtNzcuOCA4Ni40QzE1MS44IDI0My4xIDE0NCAyMjYuNSAxNDQgMjA4YzAtMzUuMyAyOC43LTY0IDY0LTY0em02OS40IDI3NmMxMSA3LjQgMTQgMjIuMyA2LjcgMzMuM2wtMzIgNDhjLTcuNCAxMS0yMi4zIDE0LTMzLjMgNi43cy0xNC0yMi4zLTYuNy0zMy4zbDMyLTQ4YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43em05NiAwYzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTk2IDBjMTEgNy40IDE0IDIyLjMgNi43IDMzLjNsLTMyIDQ4Yy03LjQgMTEtMjIuMyAxNC0zMy4zIDYuN3MtMTQtMjIuMy02LjctMzMuM2wzMi00OGM3LjQtMTEgMjIuMy0xNCAzMy4zLTYuN3ptOTYgMGMxMSA3LjQgMTQgMjIuMyA2LjcgMzMuM2wtMzIgNDhjLTcuNCAxMS0yMi4zIDE0LTMzLjMgNi43cy0xNC0yMi4zLTYuNy0zMy4zbDMyLTQ4YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43em03NC41LTExNi4xYzAgNDQuMi0zNS44IDgwLTgwIDgwSDI4OGMtNTMgMC05Ni00My05Ni05NmMwLTQ3LjYgMzQuNi04NyA4MC05NC42bDAtMS4zYzAtNTMgNDMtOTYgOTYtOTZjMzQuOSAwIDY1LjQgMTguNiA4Mi4yIDQ2LjRjMTMtOS4xIDI4LjgtMTQuNCA0NS44LTE0LjRjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjktLjYgMTEuNy0xLjkgMTcuMmMzNy40IDYuNyA2NS44IDM5LjQgNjUuOCA3OC43elwiXVxufTtcbnZhciBmYUNvbXByZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbXByZXNzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDY2XCIsIFwiTTE2MCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NmMxNy43IDAgMzItMTQuMyAzMi0zMlY2NHpNMzIgMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek0zNTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjY0ek0zMjAgMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6XCJdXG59O1xudmFyIGZhV2hlYXRBd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2hlYXQtYXduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJ3aGVhdC1hbHRcIl0sIFwiZTJjZFwiLCBcIk01MDUgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzODMgOTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4OC04OHpNMzA1LjUgMjcuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMMjcxLjUgMzguNmMtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhsLTExLjMtMTEuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTExLjMgMTEuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNC0zMC41IDMwLjVjLTMuNC0yNy4zLTE1LjUtNTMuOC0zNi41LTc0LjhMMTAxLjggMjMxYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw2Ny45IDI0Mi4zYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhsMTAuNCAxMC40TDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2OC45LTY4LjkgMTIuMiAxMi4yYzM3LjUgMzcuNSA5OC4zIDM3LjUgMTM1LjggMGwxMS4zLTExLjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTExLjMtMTEuM2MtMjEuOC0yMS44LTQ5LjYtMzQuMS03OC4xLTM2LjlsMzEuOS0zMS45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwTDQ4Ni41IDIzMWM2LjItNi4yIDYuMi0xNi40IDAtMjIuNkw0NzUuMiAxOTdjLTUuMi01LjItMTAuNi05LjgtMTYuNC0xMy45TDUwNSAxMzdjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTkuNCA1OS40Yy0yMC42LTQuNC00Mi0zLjctNjIuMyAyLjFjNi4xLTIxLjMgNi42LTQzLjggMS40LTY1LjNMNDA5IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzI5LjEgNTIuOWMtMy43LTUtNy44LTkuOC0xMi40LTE0LjNMMzA1LjUgMjcuM3pcIl1cbn07XG52YXIgZmFXaGVhdEFsdCA9IGZhV2hlYXRBd247XG52YXIgZmFBbmtoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fua2gnLFxuICBpY29uOiBbMzIwLCA1MTIsIFs5NzY1XSwgXCJmNjQ0XCIsIFwiTTk2IDEyOGMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0YzAgNDEuNi0yMC43IDc2LjYtNDYuNiAxMDQuMWMtNS45IDYuMi0xMS44IDExLjgtMTcuNCAxNi43Yy01LjYtNC45LTExLjUtMTAuNS0xNy40LTE2LjdDMTE2LjcgMjA0LjYgOTYgMTY5LjYgOTYgMTI4ek0xNjAgMEM4OS4zIDAgMzIgNTcuMyAzMiAxMjhjMCA1Mi40IDIxLjUgOTUuNSA0Ni44IDEyOEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg5NlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMjBoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjQxLjJjMjUuNC0zMi41IDQ2LjgtNzUuNiA0Ni44LTEyOEMyODggNTcuMyAyMzAuNyAwIDE2MCAwelwiXVxufTtcbnZhciBmYUhhbmRzSG9sZGluZ0NoaWxkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWhvbGRpbmctY2hpbGQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZmFcIiwgXCJNMzIwIDBhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwem00NC43IDE2NC4zTDM3NS44IDI1M2MxLjYgMTMuMi03LjcgMjUuMS0yMC44IDI2LjhzLTI1LjEtNy43LTI2LjgtMjAuOGwtNC40LTM1aC03LjZsLTQuNCAzNWMtMS42IDEzLjItMTMuNiAyMi41LTI2LjggMjAuOHMtMjIuNS0xMy42LTIwLjgtMjYuOGwxMS4xLTg4LjhMMjU1LjUgMTgxYy0xMC4xIDguNi0yNS4zIDcuMy0zMy44LTIuOHMtNy4zLTI1LjMgMi44LTMzLjhsMjcuOS0yMy42QzI3MS4zIDEwNC44IDI5NS4zIDk2IDMyMCA5NnM0OC43IDguOCA2Ny42IDI0LjdsMjcuOSAyMy42YzEwLjEgOC42IDExLjQgMjMuNyAyLjggMzMuOHMtMjMuNyAxMS40LTMzLjggMi44bC0xOS44LTE2Ljd6TTQwIDY0YzIyLjEgMCA0MCAxNy45IDQwIDQwdjQwIDgwIDQwLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsNTEuMSA1MS4xYzguMyA4LjMgMjEuMyA5LjYgMzEgMy4xYzEyLjktOC42IDE0LjctMjYuOSAzLjctMzcuOGwtMTUuMi0xNS4yLTMyLTMyYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDMyIDMyIDE1LjIgMTUuMiAwIDAgMjUuMyAyNS4zYzIxIDIxIDMyLjggNDkuNSAzMi44IDc5LjJWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDE3My4zYy0xNyAwLTMzLjMtNi43LTQ1LjMtMTguN0wyOC4xIDM5My40QzEwLjEgMzc1LjQgMCAzNTEgMCAzMjUuNVYyMjQgMTYwIDEwNEMwIDgxLjkgMTcuOSA2NCA0MCA2NHptNTYwIDBjMjIuMSAwIDQwIDE3LjkgNDAgNDB2NTYgNjRWMzI1LjVjMCAyNS41LTEwLjEgNDkuOS0yOC4xIDY3LjlMNTEyIDQ5My4zYy0xMiAxMi0yOC4zIDE4LjctNDUuMyAxOC43SDQwMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzg1LjFjMC0yOS43IDExLjgtNTguMiAzMi44LTc5LjJsMjUuMy0yNS4zIDAgMCAxNS4yLTE1LjIgMzItMzJjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2wtMzIgMzItMTUuMiAxNS4yYy0xMSAxMS05LjIgMjkuMiAzLjcgMzcuOGM5LjcgNi41IDIyLjcgNS4yIDMxLTMuMWw1MS4xLTUxLjFjMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM1YyMjQgMTQ0IDEwNGMwLTIyLjEgMTcuOS00MCA0MC00MHpcIl1cbn07XG52YXIgZmFBc3RlcmlzayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhc3RlcmlzaycsXG4gIGljb246IFszODQsIDUxMiwgWzEwMDMzLCA2MTU0NV0sIFwiMmFcIiwgXCJNMTkyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE5OS41bDExMS41LTY2LjljMTUuMi05LjEgMzQuOC00LjIgNDMuOSAxMXM0LjIgMzQuOC0xMSA0My45TDI1NC4yIDI1NmwxMTQuMyA2OC42YzE1LjIgOS4xIDIwLjEgMjguNyAxMSA0My45cy0yOC43IDIwLjEtNDMuOSAxMUwyMjQgMzEyLjVWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMxMi41TDQ4LjUgMzc5LjRjLTE1LjIgOS4xLTM0LjggNC4yLTQzLjktMTFzLTQuMi0zNC44IDExLTQzLjlMMTI5LjggMjU2IDE1LjUgMTg3LjRjLTE1LjItOS4xLTIwLjEtMjguNy0xMS00My45czI4LjctMjAuMSA0My45LTExTDE2MCAxOTkuNVY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFTcXVhcmVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtY2hlY2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5NzQ1LCA5OTg5LCA2MTUxMCwgXCJjaGVjay1zcXVhcmVcIl0sIFwiZjE0YVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTMzNyAyMDlMMjA5IDMzN2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNDcgNDdMMzAzIDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6XCJdXG59O1xudmFyIGZhQ2hlY2tTcXVhcmUgPSBmYVNxdWFyZUNoZWNrO1xudmFyIGZhUGVzZXRhU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXNldGEtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTIyMVwiLCBcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjR2OTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCA5NlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzNTJoOTZjNzcuNCAwIDE0Mi01NSAxNTYuOC0xMjhIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC0zLjJDMzM0IDg3IDI2OS40IDMyIDE5MiAzMkg2NHpNMjgyLjUgMTYwSDk2Vjk2aDk2YzQxLjggMCA3Ny40IDI2LjcgOTAuNSA2NHpNOTYgMjI0SDI4Mi41Yy0xMy4yIDM3LjMtNDguNyA2NC05MC41IDY0SDk2VjIyNHpcIl1cbn07XG52YXIgZmFIZWFkaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImhlYWRlclwiXSwgXCJmMWRjXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJIODBoNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTEyVjIwOEgzMzZWOTZIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDQ4IDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQwMFYyNDAgNDE2aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM2OCAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMTZWMjcySDExMlY0MTZoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIODAgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDhWMjQwIDk2SDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJdXG59O1xudmFyIGZhSGVhZGVyID0gZmFIZWFkaW5nO1xudmFyIGZhR2hvc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2hvc3QnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgxMjNdLCBcImY2ZTJcIiwgXCJNNDAuMSA0NjcuMWwtMTEuMiA5Yy0zLjIgMi41LTcuMSAzLjktMTEuMSAzLjlDOCA0ODAgMCA0NzIgMCA0NjIuMlYxOTJDMCA4NiA4NiAwIDE5MiAwUzM4NCA4NiAzODQgMTkyVjQ2Mi4yYzAgOS44LTggMTcuOC0xNy44IDE3LjhjLTQgMC03LjktMS40LTExLjEtMy45bC0xMS4yLTljLTEzLjQtMTAuNy0zMi44LTktNDQuMSAzLjlMMjY5LjMgNTA2Yy0zLjMgMy44LTguMiA2LTEzLjMgNnMtOS45LTIuMi0xMy4zLTZsLTI2LjYtMzAuNWMtMTIuNy0xNC42LTM1LjQtMTQuNi00OC4yIDBMMTQxLjMgNTA2Yy0zLjMgMy44LTguMiA2LTEzLjMgNnMtOS45LTIuMi0xMy4zLTZMODQuMiA0NzFjLTExLjMtMTIuOS0zMC43LTE0LjYtNDQuMS0zLjl6TTE2MCAxOTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptOTYgMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbnZhciBmYUxpc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGlzdC1zcXVhcmVzXCJdLCBcImYwM2FcIiwgXCJNNDAgNDhDMjYuNyA0OCAxNiA1OC43IDE2IDcydjQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjcyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwek0xOTIgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MnptMCAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MnptMCAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MnpNMTYgMjMydjQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0VjIzMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6TTQwIDM2OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzkyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwelwiXVxufTtcbnZhciBmYUxpc3RTcXVhcmVzID0gZmFMaXN0O1xudmFyIGZhU3F1YXJlUGhvbmVGbGlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1waG9uZS1mbGlwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJwaG9uZS1zcXVhcmUtYWx0XCJdLCBcImY4N2JcIiwgXCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0em0tOTAuNyA5Ni43Yy05LjctMi42LTE5LjkgMi4zLTIzLjcgMTEuNmwtMjAgNDhjLTMuNCA4LjItMSAxNy42IDUuOCAyMy4yTDI4MCAyMzEuN2MtMTYuNiAzNS4yLTQ1LjEgNjMuNy04MC4zIDgwLjNsLTIwLjItMjQuN2MtNS42LTYuOC0xNS05LjItMjMuMi01LjhsLTQ4IDIwYy05LjMgMy45LTE0LjIgMTQtMTEuNiAyMy43bDEyIDQ0QzExMS4xIDM3OCAxMTkgMzg0IDEyOCAzODRjMTIzLjcgMCAyMjQtMTAwLjMgMjI0LTIyNGMwLTktNi0xNi45LTE0LjctMTkuM2wtNDQtMTJ6XCJdXG59O1xudmFyIGZhUGhvbmVTcXVhcmVBbHQgPSBmYVNxdWFyZVBob25lRmxpcDtcbnZhciBmYUNhcnRQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcnQtcGx1cycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjIxN1wiLCBcIk0wIDI0QzAgMTAuNyAxMC43IDAgMjQgMEg2OS41YzIyIDAgNDEuNSAxMi44IDUwLjYgMzJoNDExYzI2LjMgMCA0NS41IDI1IDM4LjYgNTAuNGwtNDEgMTUyLjNjLTguNSAzMS40LTM3IDUzLjMtNjkuNSA1My4zSDE3MC43bDUuNCAyOC41YzIuMiAxMS4zIDEyLjEgMTkuNSAyMy42IDE5LjVINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDE5OS43Yy0zNC42IDAtNjQuMy0yNC42LTcwLjctNTguNUw3Ny40IDU0LjVjLS43LTMuOC00LTYuNS03LjktNi41SDI0QzEwLjcgNDggMCAzNy4zIDAgMjR6TTEyOCA0NjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzM2LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNMjUyIDE2MGMwIDExIDkgMjAgMjAgMjBoNDR2NDRjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWMTgwaDQ0YzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMEgzNTZWOTZjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwdjQ0SDI3MmMtMTEgMC0yMCA5LTIwIDIwelwiXVxufTtcbnZhciBmYUdhbWVwYWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2FtZXBhZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjExYlwiLCBcIk0xOTIgNjRDODYgNjQgMCAxNTAgMCAyNTZTODYgNDQ4IDE5MiA0NDhINDQ4YzEwNiAwIDE5Mi04NiAxOTItMTkycy04Ni0xOTItMTkyLTE5MkgxOTJ6TTQ5NiAxNjhhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwek0zOTIgMzA0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTE2OCAyMDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHYzMmgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZ2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDEzNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGgzMlYyMDB6XCJdXG59O1xudmFyIGZhQ2lyY2xlRG90ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1kb3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyODAsIFwiZG90LWNpcmNsZVwiXSwgXCJmMTkyXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0wLTM1MmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIl1cbn07XG52YXIgZmFEb3RDaXJjbGUgPSBmYUNpcmNsZURvdDtcbnZhciBmYUZhY2VEaXp6eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWRpenp5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJkaXp6eVwiXSwgXCJmNTY3XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0wLTIyNGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMTAwLjcgMTMyLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBMMTYwIDE2OS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZMMTgyLjYgMTkybDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDE2MCAyMTQuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDEzNy40IDE5MmwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnptMTkyIDBjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBMMzUyIDE2OS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZMMzc0LjYgMTkybDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDM1MiAyMTQuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDMyOS40IDE5MmwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnpcIl1cbn07XG52YXIgZmFEaXp6eSA9IGZhRmFjZURpenp5O1xudmFyIGZhRWdnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VnZycsXG4gIGljb246IFszODQsIDUxMiwgWzEyOTM3MF0sIFwiZjdmYlwiLCBcIk0xOTIgNDk2Qzg2IDQ5NiAwIDM5NCAwIDI4OEMwIDE3NiA2NCAxNiAxOTIgMTZzMTkyIDE2MCAxOTIgMjcyYzAgMTA2LTg2IDIwOC0xOTIgMjA4ek0xNTQuOCAxMzRjNi41LTYgNy0xNi4xIDEtMjIuNnMtMTYuMS03LTIyLjYtMWMtMjMuOSAyMS44LTQxLjEgNTIuNy01Mi4zIDg0LjJDNjkuNyAyMjYuMSA2NCAyNTkuNyA2NCAyODhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmMwLTI0LjUgNS01NC40IDE1LjEtODIuOGMxMC4xLTI4LjUgMjUtNTQuMSA0My43LTcxLjJ6XCJdXG59O1xudmFyIGZhSG91c2VNZWRpY2FsQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtbWVkaWNhbC1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MTNcIiwgXCJNMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NEgxMjguMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDUyMi4xIDE5My45Yy04LjUtMS4zLTE3LjMtMS45LTI2LjEtMS45Yy01NC43IDAtMTAzLjUgMjQuOS0xMzUuOCA2NEgzMjBWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTIyLjYgMTQ0bDM2LjctMzYuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQ5NiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQ3My40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDk2IDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNTE4LjYgMzY4elwiXVxufTtcbnZhciBmYUNhbXBncm91bmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtcGdyb3VuZCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzk5NzhdLCBcImY2YmJcIiwgXCJNMzc3IDUyYzExLTEzLjggOC44LTMzLjktNS00NXMtMzMuOS04LjgtNDUgNUwyODggNjAuOCAyNDkgMTJjLTExLTEzLjgtMzEuMi0xNi00NS01cy0xNiAzMS4yLTUgNDVsNDggNjBMMTIuMyA0MDUuNEM0LjMgNDE1LjQgMCA0MjcuNyAwIDQ0MC40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyODggNTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ0MC40YzAtMTIuNy00LjMtMjUuMS0xMi4zLTM1TDMyOSAxMTJsNDgtNjB6TTI4OCA0NDhIMTY4LjVMMjg4IDI5MS43IDQwNy41IDQ0OEgyODh6XCJdXG59O1xudmFyIGZhRm9sZGVyUGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb2xkZXItcGx1cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY1ZVwiLCBcIk01MTIgNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2ek0yMzIgMzc2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzEyaDY0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI4MFYyMDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRIMTY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDY0djY0elwiXVxufTtcbnZhciBmYUZ1dGJvbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmdXRib2wnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5OTE3LCBcImZ1dGJvbC1iYWxsXCIsIFwic29jY2VyLWJhbGxcIl0sIFwiZjFlM1wiLCBcIk00MTcuMyAzNjAuMWwtNzEuNi00LjhjLTUuMi0uMy0xMC4zIDEuMS0xNC41IDQuMnMtNy4yIDcuNC04LjQgMTIuNWwtMTcuNiA2OS42QzI4OS41IDQ0NS44IDI3MyA0NDggMjU2IDQ0OHMtMzMuNS0yLjItNDkuMi02LjRMMTg5LjIgMzcyYy0xLjMtNS00LjMtOS40LTguNC0xMi41cy05LjMtNC41LTE0LjUtNC4ybC03MS42IDQuOGMtMTcuNi0yNy4yLTI4LjUtNTkuMi0zMC40LTkzLjZMMTI1IDIyOC4zYzQuNC0yLjggNy42LTcgOS4yLTExLjlzMS40LTEwLjItLjUtMTVsLTI2LjctNjYuNkMxMjggMTA5LjIgMTU1LjMgODkgMTg2LjcgNzYuOWw1NS4yIDQ2YzQgMy4zIDkgNS4xIDE0LjEgNS4xczEwLjItMS44IDE0LjEtNS4xbDU1LjItNDZjMzEuMyAxMi4xIDU4LjcgMzIuMyA3OS42IDU3LjlsLTI2LjcgNjYuNmMtMS45IDQuOC0yLjEgMTAuMS0uNSAxNXM0LjkgOS4xIDkuMiAxMS45bDYwLjcgMzguMmMtMS45IDM0LjQtMTIuOCA2Ni40LTMwLjQgOTMuNnpNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTE0LjEtMzI1LjdjLTguNC02LjEtMTkuOC02LjEtMjguMiAwTDE5NCAyMjFjLTguNCA2LjEtMTEuOSAxNi45LTguNyAyNi44bDE4LjMgNTYuM2MzLjIgOS45IDEyLjQgMTYuNiAyMi44IDE2LjZoNTkuMmMxMC40IDAgMTkuNi02LjcgMjIuOC0xNi42bDE4LjMtNTYuM2MzLjItOS45LS4zLTIwLjctOC43LTI2LjhsLTQ3LjktMzQuOHpcIl1cbn07XG52YXIgZmFGdXRib2xCYWxsID0gZmFGdXRib2w7XG52YXIgZmFTb2NjZXJCYWxsID0gZmFGdXRib2w7XG52YXIgZmFQYWludGJydXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhaW50YnJ1c2gnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgzOTYsIFwicGFpbnQtYnJ1c2hcIl0sIFwiZjFmY1wiLCBcIk0zMzkuMyAzNjcuMWMyNy4zLTMuOSA1MS45LTE5LjQgNjcuMi00Mi45TDU2OC4yIDc0LjFjMTIuNi0xOS41IDkuNC00NS4zLTcuNi02MS4yUzUxNy43LTQuNCA0OTkuMSA5LjZMMjYyLjQgMTg3LjJjLTI0IDE4LTM4LjIgNDYuMS0zOC40IDc2LjFMMzM5LjMgMzY3LjF6bS0xOS42IDI1LjRsLTExNi0xMDQuNEMxNDMuOSAyOTAuMyA5NiAzMzkuNiA5NiA0MDBjMCAzLjkgLjIgNy44IC42IDExLjZDOTguNCA0MjkuMSA4Ni40IDQ0OCA2OC44IDQ0OEg2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyMDhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC0yLjUtLjEtNS0uMi03LjV6XCJdXG59O1xudmFyIGZhUGFpbnRCcnVzaCA9IGZhUGFpbnRicnVzaDtcbnZhciBmYUxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jaycsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODI3NF0sIFwiZjAyM1wiLCBcIk0xNDQgMTQ0djQ4SDMwNFYxNDRjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6TTgwIDE5MlYxNDRDODAgNjQuNSAxNDQuNSAwIDIyNCAwczE0NCA2NC41IDE0NCAxNDR2NDhoMTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyNTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIODB6XCJdXG59O1xudmFyIGZhR2FzUHVtcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnYXMtcHVtcCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzk5ODFdLCBcImY1MmZcIiwgXCJNMzIgNjRDMzIgMjguNyA2MC43IDAgOTYgMEgyNTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjU2aDhjNDguNiAwIDg4IDM5LjQgODggODh2MzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyMjJjLTI3LjYtNy4xLTQ4LTMyLjItNDgtNjJWOTZMMzg0IDY0Yy04LjgtOC44LTguOC0yMy4yIDAtMzJzMjMuMi04LjggMzIgMGw3Ny4zIDc3LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YxNjh2MjQgMzJWMzc2YzAgMzkuOC0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyVjM0NGMwLTIyLjEtMTcuOS00MC00MC00MGgtOFY0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWNjR6TTk2IDgwdjk2YzAgOC44IDcuMiAxNiAxNiAxNkgyNDBjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgxMTJjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG52YXIgZmFIb3RUdWJQZXJzb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG90LXR1Yi1wZXJzb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImhvdC10dWJcIl0sIFwiZjU5M1wiLCBcIk0yNzIgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NS4yYzAgMzQgMTQuNCA2Ni40IDM5LjcgODkuMmwxNi40IDE0LjhjMTUuMiAxMy43IDIzLjggMzMuMSAyMy44IDUzLjVWMjAwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTg2LjhjMC0zNC0xNC40LTY2LjQtMzkuNy04OS4yTDI5NS44IDgyLjhDMjgwLjcgNjkuMSAyNzIgNDkuNyAyNzIgMjkuMlYyNHpNMCAzMjB2MTZWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjc3LjNjLTEzLjggMC0yNy4zLTQuNS0zOC40LTEyLjhsLTg1LjMtNjRDMTM3IDE2Ni43IDExNi44IDE2MCA5NiAxNjBjLTUzIDAtOTYgNDMtOTYgOTZ2NjR6bTEyOCAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAtMTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bTExMiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAtMTZjOC44IDAgMTYgNy4yIDE2IDE2djk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6TTM2MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY1LjJjMCAzNCAxNC40IDY2LjQgMzkuNyA4OS4ybDE2LjQgMTQuOGMxNS4yIDEzLjcgMjMuOCAzMy4xIDIzLjggNTMuNVYyMDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxODYuOGMwLTM0LTE0LjQtNjYuNC0zOS43LTg5LjJMNDA3LjggODIuOEMzOTIuNyA2OS4xIDM4NCA0OS43IDM4NCAyOS4yVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0ek02NCAxMjhBNjQgNjQgMCAxIDAgNjQgMGE2NCA2NCAwIDEgMCAwIDEyOHpcIl1cbn07XG52YXIgZmFIb3RUdWIgPSBmYUhvdFR1YlBlcnNvbjtcbnZhciBmYU1hcExvY2F0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcC1sb2NhdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW1wibWFwLW1hcmtlZFwiXSwgXCJmNTlmXCIsIFwiTTMwMi44IDMxMkMzMzQuOSAyNzEuOSA0MDggMTc0LjYgNDA4IDEyMEM0MDggNTMuNyAzNTQuMyAwIDI4OCAwUzE2OCA1My43IDE2OCAxMjBjMCA1NC42IDczLjEgMTUxLjkgMTA1LjIgMTkyYzcuNyA5LjYgMjIgOS42IDI5LjYgMHpNNDE2IDUwM2wxNDQuOS01OGM5LjEtMy42IDE1LjEtMTIuNSAxNS4xLTIyLjNWMTUyYzAtMTctMTcuMS0yOC42LTMyLjktMjIuM2wtMTE2IDQ2LjRjLS41IDEuMi0xIDIuNS0xLjUgMy43Yy0yLjkgNi44LTYuMSAxMy43LTkuNiAyMC42VjUwM3pNMTUuMSAxODcuM0M2IDE5MSAwIDE5OS44IDAgMjA5LjZWNDgwLjRjMCAxNyAxNy4xIDI4LjYgMzIuOSAyMi4zTDE2MCA0NTEuOFYyMDAuNGMtMy41LTYuOS02LjctMTMuOC05LjYtMjAuNmMtNS42LTEzLjItMTAuNC0yNy40LTEyLjgtNDEuNWwtMTIyLjYgNDl6TTM4NCAyNTVjLTIwLjUgMzEuMy00Mi4zIDU5LjYtNTYuMiA3N2MtMjAuNSAyNS42LTU5LjEgMjUuNi03OS42IDBjLTEzLjktMTcuNC0zNS43LTQ1LjctNTYuMi03N1Y0NDkuNGwxOTIgNTQuOVYyNTV6XCJdXG59O1xudmFyIGZhTWFwTWFya2VkID0gZmFNYXBMb2NhdGlvbjtcbnZhciBmYUhvdXNlRmxvb2RXYXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1mbG9vZC13YXRlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTUwZVwiLCBcIk0zMDYuOCA2LjFDMjk1LjYtMiAyODAuNC0yIDI2OS4yIDYuMWwtMTc2IDEyOGMtMTEuMiA4LjItMTUuOSAyMi42LTExLjYgMzUuOFM5OC4xIDE5MiAxMTIgMTkyaDE2djczYzEuNyAxIDMuMyAyIDQuOSAzLjFjMTggMTIuNCA0MC4xIDIwLjMgNTkuMiAyMC4zYzIxLjEgMCA0Mi04LjUgNTkuMi0yMC4zYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzEuNS0xIDMtMiA0LjUtMi45bC0uMy03My4ySDQ2NGMxMy45IDAgMjYuMS04LjkgMzAuNC0yMi4xcy0uNC0yNy42LTExLjYtMzUuOGwtMTc2LTEyOHpNMjY5LjUgMzA5LjlDMjQ3IDMyNS40IDIxOS41IDMzNiAxOTIgMzM2Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgMzg5LjcgMTU5IDQwMCAxOTIgNDAwYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjUtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCAzMjUuMiA0MTAuOSAzMzYgMzg0IDMzNmMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwek0zODQgNDQ4Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDBDMjQ3IDQzNy40IDIxOS41IDQ0OCAxOTIgNDQ4Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNTAxLjcgMTU5IDUxMiAxOTIgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0MzkuNCA0MzcuMiA0MTAuOSA0NDggMzg0IDQ0OHpcIl1cbn07XG52YXIgZmFUcmVlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyZWUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc3OTRdLCBcImYxYmJcIiwgXCJNMjEwLjYgNS45TDYyIDE2OS40Yy0zLjkgNC4yLTYgOS44LTYgMTUuNUM1NiAxOTcuNyA2Ni4zIDIwOCA3OS4xIDIwOEgxMDRMMzAuNiAyODEuNGMtNC4yIDQuMi02LjYgMTAtNi42IDE2QzI0IDMwOS45IDM0LjEgMzIwIDQ2LjYgMzIwSDgwTDUuNCA0MDkuNUMxLjkgNDEzLjcgMCA0MTkgMCA0MjQuNWMwIDEzIDEwLjUgMjMuNSAyMy41IDIzLjVIMTkydjMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4SDQyNC41YzEzIDAgMjMuNS0xMC41IDIzLjUtMjMuNWMwLTUuNS0xLjktMTAuOC01LjQtMTVMMzY4IDMyMGgzMy40YzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMzQ0IDIwOGgyNC45YzEyLjcgMCAyMy4xLTEwLjMgMjMuMS0yMy4xYzAtNS43LTIuMS0xMS4zLTYtMTUuNUwyMzcuNCA1LjlDMjM0IDIuMSAyMjkuMSAwIDIyNCAwcy0xMCAyLjEtMTMuNCA1Ljl6XCJdXG59O1xudmFyIGZhQnJpZGdlTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmlkZ2UtbG9jaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRjY1wiLCBcIk0zMiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg1NzZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTM2djY0aC04Yy02MS45IDAtMTEyIDUwLjEtMTEyIDExMnYyNC42Yy05LjkgNS44LTE4LjIgMTQuMS0yMy44IDI0LjFjLTE3LjYtMjAtNDMuNC0zMi43LTcyLjItMzIuN2MtNTMgMC05NiA0My05NiA5NnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NGMwLTUzLTQzLTk2LTk2LTk2VjE2MGg3MlY5Nkg2NEM0Ni4zIDk2IDMyIDgxLjcgMzIgNjR6TTQwOCA5NnY2NGg4MFY5Nkg0MDh6bS00OCA2NFY5NkgyODB2NjRoODB6TTE1MiA5NnY2NGg4MFY5NkgxNTJ6TTUyOCAyNDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjQ4aDY0VjI3MmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTgwIDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODB2NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzUyYzAtMTcuNyAxNC4zLTMyIDMyLTMyVjI3MnpcIl1cbn07XG52YXIgZmFTYWNrRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NhY2stZG9sbGFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTc2XSwgXCJmODFkXCIsIFwiTTMyMCA5NkgxOTJMMTQ0LjYgMjQuOUMxMzcuNSAxNC4yIDE0NS4xIDAgMTU3LjkgMEgzNTQuMWMxMi44IDAgMjAuNCAxNC4yIDEzLjMgMjQuOUwzMjAgOTZ6TTE5MiAxMjhIMzIwYzMuOCAyLjUgOC4xIDUuMyAxMyA4LjRDMzg5LjcgMTcyLjcgNTEyIDI1MC45IDUxMiA0MTZjMCA1My00MyA5Ni05NiA5Nkg5NmMtNTMgMC05Ni00My05Ni05NkMwIDI1MC45IDEyMi4zIDE3Mi43IDE3OSAxMzYuNGwwIDAgMCAwYzQuOC0zLjEgOS4yLTUuOSAxMy04LjR6bTg0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMHYxNGMtNy42IDEuNy0xNS4yIDQuNC0yMi4yIDguNWMtMTMuOSA4LjMtMjUuOSAyMi44LTI1LjggNDMuOWMuMSAyMC4zIDEyIDMzLjEgMjQuNyA0MC43YzExIDYuNiAyNC43IDEwLjggMzUuNiAxNGwxLjcgLjVjMTIuNiAzLjggMjEuOCA2LjggMjggMTAuN2M1LjEgMy4yIDUuOCA1LjQgNS45IDguMmMuMSA1LTEuOCA4LTUuOSAxMC41Yy01IDMuMS0xMi45IDUtMjEuNCA0LjdjLTExLjEtLjQtMjEuNS0zLjktMzUuMS04LjVjLTIuMy0uOC00LjctMS42LTcuMi0yLjRjLTEwLjUtMy41LTIxLjggMi4yLTI1LjMgMTIuNnMyLjIgMjEuOCAxMi42IDI1LjNjMS45IC42IDQgMS4zIDYuMSAyLjFsMCAwIDAgMGM4LjMgMi45IDE3LjkgNi4yIDI4LjIgOC40VjQyNGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMFY0MTAuMmM4LTEuNyAxNi00LjUgMjMuMi05YzE0LjMtOC45IDI1LjEtMjQuMSAyNC44LTQ1Yy0uMy0yMC4zLTExLjctMzMuNC0yNC42LTQxLjZjLTExLjUtNy4yLTI1LjktMTEuNi0zNy4xLTE1bDAgMC0uNy0uMmMtMTIuOC0zLjktMjEuOS02LjctMjguMy0xMC41Yy01LjItMy4xLTUuMy00LjktNS4zLTYuN2MwLTMuNyAxLjQtNi41IDYuMi05LjNjNS40LTMuMiAxMy42LTUuMSAyMS41LTVjOS42IC4xIDIwLjIgMi4yIDMxLjIgNS4yYzEwLjcgMi44IDIxLjYtMy41IDI0LjUtMTQuMnMtMy41LTIxLjYtMTQuMi0yNC41Yy02LjUtMS43LTEzLjctMy40LTIxLjEtNC43VjIxNnpcIl1cbn07XG52YXIgZmFQZW5Ub1NxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW4tdG8tc3F1YXJlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJlZGl0XCJdLCBcImYwNDRcIiwgXCJNNDcxLjYgMjEuN2MtMjEuOS0yMS45LTU3LjMtMjEuOS03OS4yIDBMMzYyLjMgNTEuN2w5Ny45IDk3LjkgMzAuMS0zMC4xYzIxLjktMjEuOSAyMS45LTU3LjMgMC03OS4yTDQ3MS42IDIxLjd6bS0yOTkuMiAyMjBjLTYuMSA2LjEtMTAuOCAxMy42LTEzLjUgMjEuOWwtMjkuNiA4OC44Yy0yLjkgOC42LS42IDE4LjEgNS44IDI0LjZzMTUuOSA4LjcgMjQuNiA1LjhsODguOC0yOS42YzguMi0yLjcgMTUuNy03LjQgMjEuOS0xMy41TDQzNy43IDE3Mi4zIDMzOS43IDc0LjMgMTcyLjQgMjQxLjd6TTk2IDY0QzQzIDY0IDAgMTA3IDAgMTYwVjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM1MmM1MyAwIDk2LTQzIDk2LTk2VjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDk2elwiXVxufTtcbnZhciBmYUVkaXQgPSBmYVBlblRvU3F1YXJlO1xudmFyIGZhQ2FyU2lkZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXItc2lkZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODY2M10sIFwiZjVlNFwiLCBcIk0xNzEuMyA5NkgyMjR2OTZIMTExLjNsMzAuNC03NS45QzE0Ni41IDEwNCAxNTguMiA5NiAxNzEuMyA5NnpNMjcyIDE5MlY5Nmg4MS4yYzkuNyAwIDE4LjkgNC40IDI1IDEybDY3LjIgODRIMjcyem0yNTYuMiAxTDQyOC4yIDY4Yy0xOC4yLTIyLjgtNDUuOC0zNi03NS0zNkgxNzEuM2MtMzkuMyAwLTc0LjYgMjMuOS04OS4xIDYwLjNMNDAuNiAxOTYuNEMxNi44IDIwNS44IDAgMjI4LjkgMCAyNTZWMzY4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDY1LjNjNy42IDQ1LjQgNDcuMSA4MCA5NC43IDgwczg3LjEtMzQuNiA5NC43LTgwSDM4NS4zYzcuNiA0NS40IDQ3LjEgODAgOTQuNyA4MHM4Ny4xLTM0LjYgOTQuNy04MEg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzIwYzAtNjUuMi00OC44LTExOS0xMTEuOC0xMjd6TTQzNC43IDM2OGE0OCA0OCAwIDEgMSA5MC41IDMyIDQ4IDQ4IDAgMSAxIC05MC41LTMyek0xNjAgMzM2YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIl1cbn07XG52YXIgZmFTaGFyZU5vZGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoYXJlLW5vZGVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJzaGFyZS1hbHRcIl0sIFwiZjFlMFwiLCBcIk0zNTIgMjI0YzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDQgLjIgOCAuNyAxMS45bC05NC4xIDQ3QzE0NS40IDE3MC4yIDEyMS45IDE2MCA5NiAxNjBjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZjMjUuOSAwIDQ5LjQtMTAuMiA2Ni42LTI2LjlsOTQuMSA0N2MtLjUgMy45LS43IDcuOC0uNyAxMS45YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0yNS45IDAtNDkuNCAxMC4yLTY2LjYgMjYuOWwtOTQuMS00N2MuNS0zLjkgLjctNy44IC43LTExLjlzLS4yLTgtLjctMTEuOWw5NC4xLTQ3QzMwMi42IDIxMy44IDMyNi4xIDIyNCAzNTIgMjI0elwiXVxufTtcbnZhciBmYVNoYXJlQWx0ID0gZmFTaGFyZU5vZGVzO1xudmFyIGZhSGVhcnRDaXJjbGVNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1jaXJjbGUtbWludXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0ZmZcIiwgXCJNNDcuNiAzMDAuNEwyMjguMyA0NjkuMWM3LjUgNyAxNy40IDEwLjkgMjcuNyAxMC45czIwLjItMy45IDI3LjctMTAuOWwyLjYtMi40QzI2Ny4yIDQzOC42IDI1NiA0MDQuNiAyNTYgMzY4YzAtOTcuMiA3OC44LTE3NiAxNzYtMTc2YzI4LjMgMCA1NSA2LjcgNzguNyAxOC41Yy45LTYuNSAxLjMtMTMgMS4zLTE5LjZ2LTUuOGMwLTY5LjktNTAuNS0xMjkuNS0xMTkuNC0xNDFDMzQ3IDM2LjUgMzAwLjYgNTEuNCAyNjggODRMMjU2IDk2IDI0NCA4NGMtMzIuNi0zMi42LTc5LTQ3LjUtMTI0LjYtMzkuOUM1MC41IDU1LjYgMCAxMTUuMiAwIDE4NS4xdjUuOGMwIDQxLjUgMTcuMiA4MS4yIDQ3LjYgMTA5LjV6TTU3NiAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTY0IDBjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2elwiXVxufTtcbnZhciBmYUhvdXJnbGFzc0hhbGYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91cmdsYXNzLWhhbGYnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImhvdXJnbGFzcy0yXCJdLCBcImYyNTJcIiwgXCJNMzIgMEMxNC4zIDAgMCAxNC4zIDAgMzJTMTQuMyA2NCAzMiA2NFY3NWMwIDQyLjQgMTYuOSA4My4xIDQ2LjkgMTEzLjFMMTQ2LjcgMjU2IDc4LjkgMzIzLjlDNDguOSAzNTMuOSAzMiAzOTQuNiAzMiA0Mzd2MTFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjQgMzIwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjQzN2MwLTQyLjQtMTYuOS04My4xLTQ2LjktMTEzLjFMMjM3LjMgMjU2bDY3LjktNjcuOWMzMC0zMCA0Ni45LTcwLjcgNDYuOS0xMTMuMVY2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjAgNjQgMzJ6TTk2IDc1VjY0SDI4OFY3NWMwIDE5LTUuNiAzNy40LTE2IDUzSDExMmMtMTAuMy0xNS42LTE2LTM0LTE2LTUzem0xNiAzMDljMy41LTUuMyA3LjYtMTAuMyAxMi4xLTE0LjlMMTkyIDMwMS4zbDY3LjkgNjcuOWM0LjYgNC42IDguNiA5LjYgMTIuMSAxNC45SDExMnpcIl1cbn07XG52YXIgZmFIb3VyZ2xhc3MyID0gZmFIb3VyZ2xhc3NIYWxmO1xudmFyIGZhTWljcm9zY29wZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtaWNyb3Njb3BlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MzAwXSwgXCJmNjEwXCIsIFwiTTE2MCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODhjMCAxNy43LTE0LjMgMzItMzIgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTMyIDQ0OEgzMjBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhzLTU3LjMtMTI4LTEyOC0xMjhWMTI4YzEwNiAwIDE5MiA4NiAxOTIgMTkyYzAgNDkuMi0xOC41IDk0LTQ4LjkgMTI4SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjAgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTgwLTY0SDMwNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhU2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaW5rJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDZkXCIsIFwiTTI4OCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyczE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NlYyODhIMTYwVjI2NGMwLTMwLjktMjUuMS01Ni01Ni01Nkg1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg0OGM0LjQgMCA4IDMuNiA4IDh2MjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMjU2IDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0MDBWMjY0YzAtNC40IDMuNi04IDgtOGg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0MDhjLTMwLjkgMC01NiAyNS4xLTU2IDU2djI0SDI4OFY5NnpNNDgwIDQxNlYzODRIMzJ2MzJjMCA1MyA0MyA5NiA5NiA5NkgzODRjNTMgMCA5Ni00MyA5Ni05NnpcIl1cbn07XG52YXIgZmFCYWdTaG9wcGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWctc2hvcHBpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcInNob3BwaW5nLWJhZ1wiXSwgXCJmMjkwXCIsIFwiTTE2MCAxMTJjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY0OEgxNjBWMTEyem0tNDggNDhINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM1MmM1MyAwIDk2LTQzIDk2LTk2VjIwOGMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZWMTEyQzMzNiA1MC4xIDI4NS45IDAgMjI0IDBTMTEyIDUwLjEgMTEyIDExMnY0OHptMjQgNDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0xNTIgMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG52YXIgZmFTaG9wcGluZ0JhZyA9IGZhQmFnU2hvcHBpbmc7XG52YXIgZmFBcnJvd0Rvd25aQSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1kb3duLXotYScsXG4gIGljb246IFs1NzYsIDUxMiwgW1wic29ydC1hbHBoYS1kZXNjXCIsIFwic29ydC1hbHBoYS1kb3duLWFsdFwiXSwgXCJmODgxXCIsIFwiTTE4My42IDQ2OS42QzE3Ny41IDQ3Ni4yIDE2OSA0ODAgMTYwIDQ4MHMtMTcuNS0zLjgtMjMuNi0xMC40bC04OC05NmMtMTEuOS0xMy0xMS4xLTMzLjMgMi00NS4yczMzLjMtMTEuMSA0NS4yIDJMMTI4IDM2NS43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzY1LjdsMzIuNC0zNS40YzExLjktMTMgMzIuMi0xMy45IDQ1LjItMnMxMy45IDMyLjIgMiA0NS4ybC04OCA5NnpNMzIwIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxMi45IDAgMjQuNiA3LjggMjkuNiAxOS44czIuMiAyNS43LTYuOSAzNC45TDQyOS4zIDE2MEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzUyYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOUw0MDIuNyA5NkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem05NiAxOTJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN2w2NCAxMjggMTYgMzJjNy45IDE1LjggMS41IDM1LTE0LjMgNDIuOXMtMzUgMS41LTQyLjktMTQuM0w0NjAuMiA0NDhIMzcxLjhsLTcuMiAxNC4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDE2LTMyIDY0LTEyOGM1LjQtMTAuOCAxNi41LTE3LjcgMjguNi0xNy43ek0zOTUuOCA0MDBoNDAuNEw0MTYgMzU5LjYgMzk1LjggNDAwelwiXVxufTtcbnZhciBmYVNvcnRBbHBoYURlc2MgPSBmYUFycm93RG93blpBO1xudmFyIGZhU29ydEFscGhhRG93bkFsdCA9IGZhQXJyb3dEb3duWkE7XG52YXIgZmFNaXR0ZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWl0dGVuJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmN2I1XCIsIFwiTTM1MiAzODRINjRMNS40IDE3OC45QzEuOCAxNjYuNCAwIDE1My40IDAgMTQwLjNDMCA2Mi44IDYyLjggMCAxNDAuMyAwaDMuNGM2NiAwIDEyMy41IDQ0LjkgMTM5LjUgMTA4LjlsMzEuNCAxMjUuOCAxNy42LTIwLjFDMzQ0LjggMjAwLjIgMzYyLjkgMTkyIDM4MiAxOTJoMi44YzM0LjkgMCA2My4zIDI4LjMgNjMuMyA2My4zYzAgMTUuOS02IDMxLjItMTYuOCA0Mi45TDM1MiAzODR6TTMyIDQ0OGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0OHpcIl1cbn07XG52YXIgZmFQZXJzb25SYXlzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1yYXlzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTRkXCIsIFwiTTIwOCA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45bC0yOC42IDQ3LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNTguMyA5N2M5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOUwzMjggMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgyNDh6TTcgN0MxNi40LTIuMyAzMS42LTIuMyA0MSA3bDgwIDgwYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBMNyA0MUMtMi4zIDMxLjYtMi4zIDE2LjQgNyA3ek00NzEgN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTgwIDgwYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDQ3MSA3ek03IDUwNWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsODAtODBjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45TDQxIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDB6bTQ2NCAwbC04MC04MGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDgwIDgwYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDB6XCJdXG59O1xudmFyIGZhVXNlcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcnMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYwYzBcIiwgXCJNMTQ0IDBhODAgODAgMCAxIDEgMCAxNjBBODAgODAgMCAxIDEgMTQ0IDB6TTUxMiAwYTgwIDgwIDAgMSAxIDAgMTYwQTgwIDgwIDAgMSAxIDUxMiAwek0wIDI5OC43QzAgMjM5LjggNDcuOCAxOTIgMTA2LjcgMTkyaDQyLjdjMTUuOSAwIDMxIDMuNSA0NC42IDkuN2MtMS4zIDcuMi0xLjkgMTQuNy0xLjkgMjIuM2MwIDM4LjIgMTYuOCA3Mi41IDQzLjMgOTZjLS4yIDAtLjQgMC0uNyAwSDIxLjNDOS42IDMyMCAwIDMxMC40IDAgMjk4Ljd6TTQwNS4zIDMyMGMtLjIgMC0uNCAwLS43IDBjMjYuNi0yMy41IDQzLjMtNTcuOCA0My4zLTk2YzAtNy42LS43LTE1LTEuOS0yMi4zYzEzLjYtNi4zIDI4LjctOS43IDQ0LjYtOS43aDQyLjdDNTkyLjIgMTkyIDY0MCAyMzkuOCA2NDAgMjk4LjdjMCAxMS44LTkuNiAyMS4zLTIxLjMgMjEuM0g0MDUuM3pNMjI0IDIyNGE5NiA5NiAwIDEgMSAxOTIgMCA5NiA5NiAwIDEgMSAtMTkyIDB6TTEyOCA0ODUuM0MxMjggNDExLjcgMTg3LjcgMzUyIDI2MS4zIDM1MkgzNzguN0M0NTIuMyAzNTIgNTEyIDQxMS43IDUxMiA0ODUuM2MwIDE0LjctMTEuOSAyNi43LTI2LjcgMjYuN0gxNTQuN2MtMTQuNyAwLTI2LjctMTEuOS0yNi43LTI2Ljd6XCJdXG59O1xudmFyIGZhRXllU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXllLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMDcwXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTI1LjYgMzg2LjdjMzkuNi00MC42IDY2LjQtODYuMSA3OS45LTExOC40YzMuMy03LjkgMy4zLTE2LjcgMC0yNC42Yy0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xQzQ2NS41IDY4LjggNDAwLjggMzIgMzIwIDMyYy02OC4yIDAtMTI1IDI2LjMtMTY5LjMgNjAuOEwzOC44IDUuMXpNMjIzLjEgMTQ5LjVDMjQ4LjYgMTI2LjIgMjgyLjcgMTEyIDMyMCAxMTJjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCAyNC45LTYuMyA0OC4zLTE3LjQgNjguN0w0MDggMjk0LjVjOC40LTE5LjMgMTAuNi00MS40IDQuOC02My4zYy0xMS4xLTQxLjUtNDcuOC02OS40LTg4LjYtNzEuMWMtNS44LS4yLTkuMiA2LjEtNy40IDExLjdjMi4xIDYuNCAzLjMgMTMuMiAzLjMgMjAuM2MwIDEwLjItMi40IDE5LjgtNi42IDI4LjNsLTkwLjMtNzAuOHpNMzczIDM4OS45Yy0xNi40IDYuNS0zNC4zIDEwLjEtNTMgMTAuMWMtNzkuNSAwLTE0NC02NC41LTE0NC0xNDRjMC02LjkgLjUtMTMuNiAxLjQtMjAuMkw4My4xIDE2MS41QzYwLjMgMTkxLjIgNDQgMjIwLjggMzQuNSAyNDMuN2MtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjZjMTQuOSAzNS43IDQ2LjIgODcuNyA5MyAxMzEuMUMxNzQuNSA0NDMuMiAyMzkuMiA0ODAgMzIwIDQ4MGM0Ny44IDAgODkuOS0xMi45IDEyNi4yLTMyLjVMMzczIDM4OS45elwiXVxufTtcbnZhciBmYUZsYXNrVmlhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmbGFzay12aWFsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGYzXCIsIFwiTTE3NSAzODkuNGMtOS44IDE2LTE1IDM0LjMtMTUgNTMuMWMtMTAgMy41LTIwLjggNS41LTMyIDUuNWMtNTMgMC05Ni00My05Ni05NlY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwSDk2aDY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjMwOS45bC00OSA3OS42ek05NiA2NHY5Nmg2NFY2NEg5NnpNMzUyIDBINDgwaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjIxNC45TDYyOS43IDQwNi4yYzYuNyAxMC45IDEwLjMgMjMuNSAxMC4zIDM2LjRjMCAzOC4zLTMxLjEgNjkuNC02OS40IDY5LjRIMjYxLjRjLTM4LjMgMC02OS40LTMxLjEtNjkuNC02OS40YzAtMTIuOCAzLjYtMjUuNCAxMC4zLTM2LjRMMzIwIDIxNC45VjY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyem0zMiA2NFYyMjRjMCA1LjktMS42IDExLjctNC43IDE2LjhMMzMwLjUgMzIwaDE3MWwtNDguOC03OS4yYy0zLjEtNS00LjctMTAuOC00LjctMTYuOFY2NEgzODR6XCJdXG59O1xudmFyIGZhSGFuZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzA2LCA5OTk1LCBcImhhbmQtcGFwZXJcIl0sIFwiZjI1NlwiLCBcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjMzNmMwIDEuNSAwIDMuMSAuMSA0LjZMNjcuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTI0LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRIMzA0Yzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2VjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyNDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjMyelwiXVxufTtcbnZhciBmYUhhbmRQYXBlciA9IGZhSGFuZDtcbnZhciBmYU9tID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ29tJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MzI5XSwgXCJmNjc5XCIsIFwiTTM3OS4zIDQuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTE2IDE2Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNmwxNiAxNmM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxNi0xNmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTYtMTZ6TTExNS4yIDE2OS42YzgtNiAxNy45LTkuNiAyOC44LTkuNmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxMDkuOGMtNy42IDAtMTMuOCA2LjItMTMuOCAxMy44YzAgMS41IC4yIDIuOSAuNyA0LjRsOCAyNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45SDE0NGgxNmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtNTAuOCAwLTgyLjctMjEuNS0xMDIuMi00Mi44Yy05LjktMTAuOC0xNi42LTIxLjYtMjAuOS0yOS43Yy0yLjEtNC0zLjYtNy4zLTQuNS05LjZjLS41LTEuMS0uOC0yLTEtMi41bC0uMi0uNSAwLS4xYy0yLjYtNy44LTEwLjctMTIuMy0xOC43LTEwLjVDNC40IDM1NC4yLS45IDM2MS44IC4xIDM3MEwxNiAzNjhDLjEgMzcwIC4xIDM3MCAuMSAzNzBsMCAwIDAgMCAwIC4xIC4xIC40YzAgLjMgLjEgLjggLjIgMS4zYy4yIDEuMSAuNCAyLjcgLjggNC42Yy44IDMuOSAyIDkuNCAzLjkgMTUuOWMzLjggMTMgMTAuMyAzMC40IDIxLjMgNDhDNDguNyA0NzYuMiA4OS40IDUxMiAxNjAgNTEyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtMjMuMy02LjItNDUuMi0xNy4xLTY0aDIyLjZjMjUuNSAwIDQ5LjktMTAuMSA2Ny45LTI4LjFsMjYuNS0yNi41YzYtNiAxNC4xLTkuNCAyMi42LTkuNEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJjLTI1LjcgMC00MS40LTEyLjUtNTEuMi0yNS42Yy01LTYuNy04LjQtMTMuNC0xMC41LTE4LjZjLTEuMS0yLjUtMS44LTQuNi0yLjItNmMtLjItLjctLjQtMS4yLS41LTEuNWwtLjEtLjMgMCAwYzAgMCAwIDAgMCAwYy0xLjktNy4zLTguNi0xMi40LTE2LjItMTIuMWMtNy42IC4zLTEzLjkgNS45LTE1LjEgMTMuNEwzMzYgMzY4Yy0xNS44LTIuNi0xNS44LTIuNi0xNS44LTIuNmwwIDAgMCAwIDAgLjEtLjEgLjNjMCAuMy0uMSAuNi0uMiAxLjFjLS4xIC45LS4zIDIuMS0uNCAzLjZjLS4zIDMtLjYgNy4zLS42IDEyLjRjMCAxMC4xIDEuMSAyMy45IDUuOCAzOC4xYzQuOCAxNC4zIDEzLjQgMjkuMyAyOC42IDQwLjdDMzY4LjcgNDczLjMgMzg5LjMgNDgwIDQxNiA0ODBjNTMgMCA5Ni00MyA5Ni05NlYyODhjMC01My00My05Ni05Ni05NmgtNS41Yy0yNS41IDAtNDkuOSAxMC4xLTY3LjkgMjguMWwtMjYuNSAyNi41Yy02IDYtMTQuMSA5LjQtMjIuNiA5LjRIMjQ1LjJjNi45LTE0LjUgMTAuOC0zMC44IDEwLjgtNDhjMC02MS45LTUwLjEtMTEyLTExMi0xMTJjLTI1LjIgMC00OC41IDguMy02Ny4yIDIyLjRjLTE0LjEgMTAuNi0xNyAzMC43LTYuNCA0NC44czMwLjcgMTcgNDQuOCA2LjR6TTI4MC45IDY2LjdjLTYtNC0xNC0zLjUtMTkuNSAxLjNzLTcgMTIuNy0zLjcgMTkuMkwyNzIgODBjLTE0LjMgNy4yLTE0LjMgNy4yLTE0LjMgNy4ybDAgMCAwIDAgMCAuMSAuMSAuMiAuNCAuN2MuMyAuNiAuOCAxLjQgMS40IDIuNGMxLjIgMiAyLjkgNC44IDUuMSA4LjJjNC40IDYuNyAxMS4xIDE1LjUgMjAgMjQuNEMzMDIuNCAxNDEuMSAzMzAuMyAxNjAgMzY4IDE2MGMzMS4yIDAgNTYuNi0xMC40IDczLjktMjAuMmM4LjctNSAxNS42LTkuOSAyMC40LTEzLjhjMi40LTEuOSA0LjMtMy42IDUuNy00LjljLjctLjYgMS4zLTEuMiAxLjctMS42bC42LS41IC4yLS4yIC4xLS4xIDAgMCAwIDBjMCAwIDAgMC0yMi42LTIyLjZsMjIuNiAyMi42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zYy0xMi40LTEyLjQtMzIuNi0xMi41LTQ1LjEtLjJjLS4xIC4xLS4yIC4yLS41IC40Yy0uNSAuNS0xLjUgMS4zLTIuOCAyLjRjLTIuNyAyLjItNi44IDUuMi0xMi4xIDguMkMzOTkuNCA5MC40IDM4NC44IDk2IDM2OCA5NmMtMjAuOCAwLTQyLjQtNy01OS41LTE0LjZjLTguNC0zLjctMTUuNC03LjUtMjAuMy0xMC4zYy0yLjQtMS40LTQuMy0yLjUtNS42LTMuM2MtLjYtLjQtMS4xLS43LTEuNC0uOWwtLjMtLjIgMCAwIDAgMCAwIDB6XCJdXG59O1xudmFyIGZhV29ybSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3b3JtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTk5XCIsIFwiTTI1NiA5NmMwLTUzIDQzLTk2IDk2LTk2aDM4LjRDNDM5LjkgMCA0ODAgNDAuMSA0ODAgODkuNlYxNzZ2MTZWMzc2YzAgNzUuMS02MC45IDEzNi0xMzYgMTM2cy0xMzYtNjAuOS0xMzYtMTM2VjI5NmMwLTIyLjEtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhWMjk2YzAtNzUuMSA2MC45LTEzNiAxMzYtMTM2czEzNiA2MC45IDEzNiAxMzZ2ODBjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MFYxOTJIMzUyYy01MyAwLTk2LTQzLTk2LTk2em0xNDQtOGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwelwiXVxufTtcbnZhciBmYUhvdXNlQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTBiXCIsIFwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIl1cbn07XG52YXIgZmFQbHVnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWcnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgyNjhdLCBcImYxZTZcIiwgXCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhDMjk3IDM5OCAzNTIgMzMzLjQgMzUyIDI1NlYyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJdXG59O1xudmFyIGZhQ2hldnJvblVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXZyb24tdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNzdcIiwgXCJNMjMzLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyNTYgMTczLjMgODYuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTkyLTE5MnpcIl1cbn07XG52YXIgZmFIYW5kU3BvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1zcG9jaycsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODQwNl0sIFwiZjI1OVwiLCBcIk0yNDYuOSAyMy43QzI0Mi4zIDYuNiAyMjQuOC0zLjUgMjA3LjcgMS4xcy0yNy4yIDIyLjEtMjIuNiAzOS4yTDIzOCAyMzcuOGMyLjUgOS4yLTQuNSAxOC4yLTE0IDE4LjJjLTYuNCAwLTEyLTQuMi0xMy45LTEwLjNMMTY2LjYgMTAyLjdjLTUuMS0xNi45LTIzLTI2LjQtMzkuOS0yMS4zcy0yNi40IDIzLTIxLjMgMzkuOWw2Mi44IDIwNi40YzIuNCA3LjktNy4yIDEzLjgtMTMuMiA4LjFMOTkuNiAyODNjLTE2LTE1LjItNDEuMy0xNC42LTU2LjYgMS40cy0xNC42IDQxLjMgMS40IDU2LjZMMTU2LjggNDQ4YzQzLjEgNDEuMSAxMDAuNCA2NCAxNjAgNjRoMTAuOSA4LjJjLjEgMCAuMS0uMSAuMS0uMXYwYzAtLjEgLjEtLjEgLjEtLjFjNTguMy0zLjUgMTA4LjYtNDMuMiAxMjUuMy05OS43bDgxLjItMjc1YzUtMTYuOS00LjctMzQuNy0yMS42LTM5LjhzLTM0LjcgNC43LTM5LjggMjEuNkw0NDMuNSAyNDcuMWMtMS42IDUuMy02LjQgOC45LTEyIDguOWMtNy45IDAtMTMuOC03LjMtMTIuMi0xNS4xbDM2LTE3MC4zYzMuNy0xNy4zLTcuNC0zNC4zLTI0LjctMzcuOXMtMzQuMyA3LjQtMzcuOSAyNC43TDM1NS4xIDIzNS4xYy0yLjYgMTIuMi0xMy4zIDIwLjktMjUuOCAyMC45Yy0xMS45IDAtMjIuNC04LTI1LjQtMTkuNWwtNTctMjEyLjh6XCJdXG59O1xudmFyIGZhU3RvcHdhdGNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3B3YXRjaCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzkyMDFdLCBcImYyZjJcIiwgXCJNMTc2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMTZWOTguNEM5Mi4zIDExMy44IDE2IDIwMCAxNiAzMDRjMCAxMTQuOSA5My4xIDIwOCAyMDggMjA4czIwOC05My4xIDIwOC0yMDhjMC00MS44LTEyLjMtODAuNy0zMy41LTExMy4ybDI0LjEtMjQuMWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwzNTUuNyAxNDNjLTI4LjEtMjMtNjIuMi0zOC44LTk5LjctNDQuNlY2NGgxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyMjQgMTc2em03MiAxOTJWMzIwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjE5MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0elwiXVxufTtcbnZhciBmYUZhY2VLaXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2Uta2lzcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUzNSwgXCJraXNzXCJdLCBcImY1OTZcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTQ4LjctMTk4LjNjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNzQuNyA0NDMuMSAyNTcuNCA0NDggMjQwIDQ0OGMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjEgMCAwIDAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03bDAgMCAwIDAgMCAwIDAgMCAwIDAgLjItLjEgLjMtLjIgLjYtLjRjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFsLS40LS4zLS41LS4zLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNHpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhS2lzcyA9IGZhRmFjZUtpc3M7XG52YXIgZmFCcmlkZ2VDaXJjbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmlkZ2UtY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGNiXCIsIFwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHMxNC4zIDMyIDMyIDMyaDQwdjY0SDMyVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMlYxNjBINTM2Vjk2aDQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0ek00ODggOTZ2NjRINDA4Vjk2aDgwek0zNjAgOTZ2NjRIMjgwVjk2aDgwek0yMzIgOTZ2NjRIMTUyVjk2aDgwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w1MTguNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDk2IDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDczLjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0OTYgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIl1cbn07XG52YXIgZmFGYWNlR3JpblRvbmd1ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4tdG9uZ3VlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTM5LCBcImdyaW4tdG9uZ3VlXCJdLCBcImY1ODlcIiwgXCJNMCAyNTZDMCAzNjguOSA3My4xIDQ2NC43IDE3NC41IDQ5OC44QzE2NS4zIDQ4NCAxNjAgNDY2LjYgMTYwIDQ0OFY0MDAuN2MtMjQtMTcuNS00My4xLTQxLjQtNTQuOC02OS4yYy01LTExLjggNy0yMi41IDE5LjMtMTguN2MzOS43IDEyLjIgODQuNSAxOSAxMzEuOCAxOXM5Mi4xLTYuOCAxMzEuOC0xOWMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdjLTExLjggMjgtMzEuMSA1Mi01NS40IDY5LjZWNDQ4YzAgMTguNi01LjMgMzYtMTQuNSA1MC44QzQzOC45IDQ2NC43IDUxMiAzNjguOSA1MTIgMjU2QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwUzAgMTE0LjYgMCAyNTZ6bTE3Ni40LTgwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyMCA0NDhWNDAyLjZjMC0xNC43LTExLjktMjYuNi0yNi42LTI2LjZoLTJjLTExLjMgMC0yMS4xIDcuOS0yMy42IDE4LjljLTIuOCAxMi42LTIwLjggMTIuNi0yMy42IDBjLTIuNS0xMS4xLTEyLjMtMTguOS0yMy42LTE4LjloLTJjLTE0LjcgMC0yNi42IDExLjktMjYuNiAyNi42VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwiXVxufTtcbnZhciBmYUdyaW5Ub25ndWUgPSBmYUZhY2VHcmluVG9uZ3VlO1xudmFyIGZhQ2hlc3NCaXNob3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3MtYmlzaG9wJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbOTgyMV0sIFwiZjQzYVwiLCBcIk0xMjggMEMxMTAuMyAwIDk2IDE0LjMgOTYgMzJjMCAxNi4xIDExLjkgMjkuNCAyNy40IDMxLjdDNzguNCAxMDYuOCA4IDE5MCA4IDI4OGMwIDQ3LjQgMzAuOCA3Mi4zIDU2IDg0LjdWNDAwSDI1NlYzNzIuN2MyNS4yLTEyLjUgNTYtMzcuNCA1Ni04NC43YzAtMzcuMy0xMC4yLTcyLjQtMjUuMy0xMDQuMWwtOTkuNCA5OS40Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDI3MC44IDE1NC42Yy0yMy4yLTM4LjEtNTEuOC02OS41LTc0LjItOTAuOUMyMTIuMSA2MS40IDIyNCA0OC4xIDIyNCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxMjh6TTQ4IDQzMkw2LjYgNDczLjRjLTQuMiA0LjItNi42IDEwLTYuNiAxNkMwIDUwMS45IDEwLjEgNTEyIDIyLjYgNTEySDI5Ny40YzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMjcyIDQzMkg0OHpcIl1cbn07XG52YXIgZmFGYWNlR3JpbldpbmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLXdpbmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImdyaW4td2lua1wiXSwgXCJmNThjXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6bS0xNi45LTc5LjJjLTE3LjYtMjMuNS01Mi44LTIzLjUtNzAuNCAwYy01LjMgNy4xLTE1LjMgOC41LTIyLjQgMy4ycy04LjUtMTUuMy0zLjItMjIuNGMzMC40LTQwLjUgOTEuMi00MC41IDEyMS42IDBjNS4zIDcuMSAzLjkgMTcuMS0zLjIgMjIuNHMtMTcuMSAzLjktMjIuNC0zLjJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhR3JpbldpbmsgPSBmYUZhY2VHcmluV2luaztcbnZhciBmYUVhckRlYWYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWFyLWRlYWYnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImRlYWZcIiwgXCJkZWFmbmVzc1wiLCBcImhhcmQtb2YtaGVhcmluZ1wiXSwgXCJmMmE0XCIsIFwiTTUwMi42IDU0LjZsLTQwIDQwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w0MC00MGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zem0tMzIwIDMyMGwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTI4LTEyOGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zek0yNDAgMTI4Yy01Ny42IDAtMTA1LjEgNDMuNi0xMTEuMyA5OS41Yy0xLjkgMTcuNi0xNy44IDMwLjItMzUuMyAyOC4zcy0zMC4yLTE3LjgtMjguMy0zNS4zQzc0LjggMTMyLjUgMTQ5LjQgNjQgMjQwIDY0Yzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgNDYtMTcuNyA4Ny45LTQ2LjYgMTE5LjNjLTEyIDEzLTE3LjQgMjQuOC0xNy40IDM0LjdWNDAwYzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di02LjFjMC0zMi45IDE3LjQtNTkuNiAzNC40LTc4YzE4LjQtMjAgMjkuNi00Ni42IDI5LjYtNzUuOWMwLTYxLjktNTAuMS0xMTItMTEyLTExMnptMCA4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFEZWFmID0gZmFFYXJEZWFmO1xudmFyIGZhRGVhZm5lc3MgPSBmYUVhckRlYWY7XG52YXIgZmFIYXJkT2ZIZWFyaW5nID0gZmFFYXJEZWFmO1xudmFyIGZhUm9hZENpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvYWQtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTY0XCIsIFwiTTIxMy4yIDMySDI4OFY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyaDc0LjhjMjcuMSAwIDUxLjMgMTcuMSA2MC4zIDQyLjZsNDIuNyAxMjAuNmMtMTAuOS0yLjEtMjIuMi0zLjItMzMuOC0zLjJjLTU5LjUgMC0xMTIuMSAyOS42LTE0NCA3NC44VjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmMyLjMgMCA0LjYtLjMgNi44LS43Yy00LjUgMTUuNS02LjggMzEuOC02LjggNDguN2MwIDUuNCAuMiAxMC43IC43IDE2bC0uNyAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NEg4Ni42QzU2LjUgNDgwIDMyIDQ1NS41IDMyIDQyNS40YzAtNi4yIDEuMS0xMi40IDMuMS0xOC4yTDE1Mi45IDc0LjZDMTYyIDQ5LjEgMTg2LjEgMzIgMjEzLjIgMzJ6TTM1MiAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjExLjMtNDMuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNDgwIDM4NS40bC0yOC43LTI4LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNzItNzJjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6XCJdXG59O1xudmFyIGZhRGljZUZpdmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1maXZlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbOTg2MF0sIFwiZjUyM1wiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDk2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNOTYgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTIyNCAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NC02NGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiAxNjBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYVNxdWFyZVJzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtcnNzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJyc3Mtc3F1YXJlXCJdLCBcImYxNDNcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek05NiAxMzZjMC0xMy4zIDEwLjctMjQgMjQtMjRjMTM3IDAgMjQ4IDExMSAyNDggMjQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtMTEwLjUtODkuNS0yMDAtMjAwLTIwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTAgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRjODMuOSAwIDE1MiA2OC4xIDE1MiAxNTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC01Ny40LTQ2LjYtMTA0LTEwNC0xMDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0wIDEyMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbnZhciBmYVJzc1NxdWFyZSA9IGZhU3F1YXJlUnNzO1xudmFyIGZhTGFuZE1pbmVPbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYW5kLW1pbmUtb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MWJcIiwgXCJNMzQ0IDI0VjE2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0ek0xOTIgMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMkgxOTJWMzIwem0tNzcuMyA5MC41YzguMS0xNi4zIDI0LjgtMjYuNSA0Mi45LTI2LjVINDgyLjNjMTguMiAwIDM0LjggMTAuMyA0Mi45IDI2LjVsMjcuNiA1NS4yQzU2My41IDQ4NyA1NDggNTEyIDUyNC4yIDUxMkgxMTUuOGMtMjMuOCAwLTM5LjMtMjUtMjguNi00Ni4zbDI3LjYtNTUuMnpNMzYuMyAxMzguM2M3LjUtMTAuOSAyMi41LTEzLjYgMzMuNC02LjFsMTA0IDcyYzEwLjkgNy41IDEzLjYgMjIuNSA2LjEgMzMuNHMtMjIuNSAxMy42LTMzLjQgNi4xbC0xMDQtNzJjLTEwLjktNy41LTEzLjYtMjIuNS02LjEtMzMuNHptNTM0LjEtNi4xYzEwLjktNy41IDI1LjgtNC44IDMzLjQgNi4xczQuOCAyNS44LTYuMSAzMy40bC0xMDQgNzJjLTEwLjkgNy41LTI1LjggNC44LTMzLjQtNi4xcy00LjgtMjUuOCA2LjEtMzMuNGwxMDQtNzJ6XCJdXG59O1xudmFyIGZhSUN1cnNvciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpLWN1cnNvcicsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjI0NlwiLCBcIk0uMSAyOS4zQy0xLjQgNDcgMTEuNyA2Mi40IDI5LjMgNjMuOWw4IC43QzcwLjUgNjcuMyA5NiA5NSA5NiAxMjguM1YyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZ2OTUuN2MwIDMzLjMtMjUuNSA2MS01OC43IDYzLjhsLTggLjdDMTEuNyA0NDkuNi0xLjQgNDY1IC4xIDQ4Mi43czE2LjkgMzAuNyAzNC41IDI5LjJsOC0uN2MzNC4xLTIuOCA2NC4yLTE4LjkgODUuNC00Mi45YzIxLjIgMjQgNTEuMiA0MC4xIDg1LjQgNDIuOWw4IC43YzE3LjYgMS41IDMzLjEtMTEuNiAzNC41LTI5LjJzLTExLjYtMzMuMS0yOS4yLTM0LjVsLTgtLjdDMTg1LjUgNDQ0LjcgMTYwIDQxNyAxNjAgMzgzLjdWMjg4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MFYxMjguM2MwLTMzLjMgMjUuNS02MSA1OC43LTYzLjhsOC0uN2MxNy42LTEuNSAzMC43LTE2LjkgMjkuMi0zNC41UzIzOS0xLjQgMjIxLjMgLjFsLTggLjdDMTc5LjIgMy42IDE0OS4yIDE5LjcgMTI4IDQzLjdjLTIxLjItMjQtNTEuMi00MC04NS40LTQyLjlsLTgtLjdDMTctMS40IDEuNiAxMS43IC4xIDI5LjN6XCJdXG59O1xudmFyIGZhU3RhbXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RhbXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YmZcIiwgXCJNMzEyIDIwMS44YzAtMTcuNCA5LjItMzMuMiAxOS45LTQ3QzM0NC41IDEzOC41IDM1MiAxMTguMSAzNTIgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyMi4xIDcuNSA0Mi41IDIwLjEgNTguOGMxMC43IDEzLjggMTkuOSAyOS42IDE5LjkgNDdjMCAyOS45LTI0LjMgNTQuMi01NC4yIDU0LjJIMTEyQzUwLjEgMjU2IDAgMzA2LjEgMCAzNjhjMCAyMC45IDEzLjQgMzguNyAzMiA0NS4zVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDEzLjNjMTguNi02LjYgMzItMjQuNCAzMi00NS4zYzAtNjEuOS01MC4xLTExMi0xMTItMTEySDM2Ni4yYy0yOS45IDAtNTQuMi0yNC4zLTU0LjItNTQuMnpNNDE2IDQxNnYzMkg5NlY0MTZINDE2elwiXVxufTtcbnZhciBmYVN0YWlycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGFpcnMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUyODlcIiwgXCJNMzg0IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NDh2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzIwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NlYzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDk2VjY0elwiXVxufTtcbnZhciBmYUkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaScsXG4gIGljb246IFszMjAsIDUxMiwgWzEwNV0sIFwiNDlcIiwgXCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2aDk2VjQxNkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTkyVjk2aDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE2MCAzMnpcIl1cbn07XG52YXIgZmFIcnl2bmlhU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdocnl2bmlhLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFs4MzcyLCBcImhyeXZuaWFcIl0sIFwiZjZmMlwiLCBcIk0xMjEuOSAxMTYuMkMxMzguMyAxMDMuMSAxNTguNyA5NiAxNzkuNiA5NkgyMjNjMjcuMSAwIDQ5IDIxLjkgNDkgNDljMCAxMS41LTQgMjIuNC0xMS4xIDMxSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE1NS41bC01MC42IDI4LjljLTEuNyAxLTMuNCAyLTUuMSAzLjFIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTIuM2MtMi44IDkuOS00LjMgMjAuNC00LjMgMzFjMCA2Mi40IDUwLjYgMTEzIDExMyAxMTNoNDMuNGMzNS41IDAgNzAtMTIuMSA5Ny43LTM0LjNMMzA4IDQ0MWMxMy44LTExIDE2LTMxLjIgNS00NXMtMzEuMi0xNi00NS01bC01LjkgNC43Yy0xNi40IDEzLjEtMzYuNyAyMC4yLTU3LjcgMjAuMkgxNjFjLTI3LjEgMC00OS0yMS45LTQ5LTQ5YzAtMTEuNSA0LTIyLjQgMTEuMS0zMUgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI4LjVsNTAuNi0yOC45YzEuNy0xIDMuNC0yIDUuMS0zLjFIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMzMS43YzIuOC0xMCA0LjMtMjAuNCA0LjMtMzFjMC02Mi40LTUwLjYtMTEzLTExMy0xMTNIMTc5LjZjLTM1LjUgMC03MCAxMi4xLTk3LjcgMzQuM0w3NiA3MWMtMTMuOCAxMS0xNiAzMS4yLTUgNDVzMzEuMiAxNiA0NSA1bDUuOS00Ljd6XCJdXG59O1xudmFyIGZhSHJ5dm5pYSA9IGZhSHJ5dm5pYVNpZ247XG52YXIgZmFQaWxscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaWxscycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjQ4NFwiLCBcIk0xMTIgOTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjI1Nmg5NlYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTAgMTQ0QzAgODIuMSA1MC4xIDMyIDExMiAzMnMxMTIgNTAuMSAxMTIgMTEyVjM2OGMwIDYxLjktNTAuMSAxMTItMTEyIDExMlMwIDQyOS45IDAgMzY4VjE0NHpNNTU0LjkgMzk5LjRjLTcuMSAxMi4zLTIzLjcgMTMuMS0zMy44IDMuMUwzMzMuNSAyMTQuOWMtMTAtMTAtOS4zLTI2LjcgMy4xLTMzLjhDMzYwIDE2Ny43IDM4Ny4xIDE2MCA0MTYgMTYwYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwYzAgMjguOS03LjcgNTYtMjEuMSA3OS40em0tNTkuNSA1OS41QzQ3MiA0NzIuMyA0NDQuOSA0ODAgNDE2IDQ4MGMtODguNCAwLTE2MC03MS42LTE2MC0xNjBjMC0yOC45IDcuNy01NiAyMS4xLTc5LjRjNy4xLTEyLjMgMjMuNy0xMy4xIDMzLjgtMy4xTDQ5OC41IDQyNS4xYzEwIDEwIDkuMyAyNi43LTMuMSAzMy44elwiXVxufTtcbnZhciBmYUZhY2VHcmluV2lkZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4td2lkZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUxNSwgXCJncmluLWFsdFwiXSwgXCJmNTgxXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTIwOCAxOTJjMCAzNS4zLTE0LjMgNjQtMzIgNjRzLTMyLTI4LjctMzItNjRzMTQuMy02NCAzMi02NHMzMiAyOC43IDMyIDY0em0xMjggNjRjLTE3LjcgMC0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHMtMTQuMyA2NC0zMiA2NHpcIl1cbn07XG52YXIgZmFHcmluQWx0ID0gZmFGYWNlR3JpbldpZGU7XG52YXIgZmFUb290aCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b290aCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyOTQ2M10sIFwiZjVjOVwiLCBcIk0xODYuMSA1Mi4xQzE2OS4zIDM5LjEgMTQ4LjcgMzIgMTI3LjUgMzJDNzQuNyAzMiAzMiA3NC43IDMyIDEyNy41djYuMmMwIDE1LjggMy43IDMxLjMgMTAuNyA0NS41bDIzLjUgNDcuMWM0LjUgOC45IDcuNiAxOC40IDkuNCAyOC4ybDM2LjcgMjA1LjhjMiAxMS4yIDExLjYgMTkuNCAyMi45IDE5LjhzMjEuNC03LjQgMjQtMTguNGwyOC45LTEyMS4zQzE5Mi4yIDMyMy43IDIwNyAzMTIgMjI0IDMxMnMzMS44IDExLjcgMzUuOCAyOC4zbDI4LjkgMTIxLjNjMi42IDExLjEgMTIuNyAxOC44IDI0IDE4LjRzMjAuOS04LjYgMjIuOS0xOS44bDM2LjctMjA1LjhjMS44LTkuOCA0LjktMTkuMyA5LjQtMjguMmwyMy41LTQ3LjFjNy4xLTE0LjEgMTAuNy0yOS43IDEwLjctNDUuNXYtMi4xYzAtNTUtNDQuNi05OS42LTk5LjYtOTkuNmMtMjQuMSAwLTQ3LjQgOC44LTY1LjYgMjQuNmwtMy4yIDIuOCAxOS41IDE1LjJjNyA1LjQgOC4yIDE1LjUgMi44IDIyLjVzLTE1LjUgOC4yLTIyLjUgMi44bC0yNC40LTE5LTM3LTI4Ljh6XCJdXG59O1xudmFyIGZhViA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTE4XSwgXCI1NlwiLCBcIk0xOS43IDM0LjVjMTYuMy02LjggMzUgLjkgNDEuOCAxNy4yTDE5MiAzNjQuOCAzMjIuNSA1MS43YzYuOC0xNi4zIDI1LjUtMjQgNDEuOC0xNy4yczI0IDI1LjUgMTcuMiA0MS44bC0xNjAgMzg0Yy01IDExLjktMTYuNiAxOS43LTI5LjUgMTkuN3MtMjQuNi03LjgtMjkuNS0xOS43TDIuNSA3Ni4zYy02LjgtMTYuMyAuOS0zNSAxNy4yLTQxLjh6XCJdXG59O1xudmFyIGZhQmFuZ2xhZGVzaGlUYWthU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYW5nbGFkZXNoaS10YWthLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUyZTZcIiwgXCJNMzYgMzIuMkMxOC40IDMwLjEgMi40IDQyLjUgLjIgNjBTMTAuNSA5My42IDI4IDk1LjhsNy45IDFjMTYgMiAyOCAxNS42IDI4IDMxLjhWMTYwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0VjM4NGMwIDUzIDQzIDk2IDk2IDk2aDMyYzEwNiAwIDE5Mi04NiAxOTItMTkyVjI1NmMwLTUzLTQzLTk2LTk2LTk2SDI3MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOEgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjIyNGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMjhWMTI4LjVjMC00OC40LTM2LjEtODkuMy04NC4xLTk1LjNsLTcuOS0xelwiXVxufTtcbnZhciBmYUJpY3ljbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmljeWNsZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODY5MF0sIFwiZjIwNlwiLCBcIk0zMTIgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjUuN2wzNC42IDY0SDIyMi45bC0yNy40LTM4QzE5MSA5OS43IDE4My43IDk2IDE3NiA5NkgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNDMuN2wyMi4xIDMwLjctMjYuNiA1My4xYy0xMC0yLjUtMjAuNS0zLjgtMzEuMi0zLjhDNTcuMyAyMjQgMCAyODEuMyAwIDM1MnM1Ny4zIDEyOCAxMjggMTI4YzY1LjMgMCAxMTkuMS00OC45IDEyNy0xMTJoNDljOC41IDAgMTYuMy00LjUgMjAuNy0xMS44bDg0LjgtMTQzLjUgMjEuNyA0MC4xQzQwMi40IDI3Ni4zIDM4NCAzMTIgMzg0IDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4Yy0xMy41IDAtMjYuNSAyLjEtMzguNyA2TDM3NS40IDQ4LjhDMzY5LjggMzguNCAzNTkgMzIgMzQ3LjIgMzJIMzEyek00NTguNiAzMDMuN2wzMi4zIDU5LjdjNi4zIDExLjcgMjAuOSAxNiAzMi41IDkuN3MxNi0yMC45IDkuNy0zMi41bC0zMi4zLTU5LjdjMy42LS42IDcuNC0uOSAxMS4yLS45YzM5LjggMCA3MiAzMi4yIDcyIDcycy0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyYzAtMTguNiA3LTM1LjUgMTguNi00OC4zek0xMzMuMiAzNjhoNjVjLTcuMyAzMi4xLTM2IDU2LTcwLjIgNTZjLTM5LjggMC03Mi0zMi4yLTcyLTcyczMyLjItNzIgNzItNzJjMS43IDAgMy40IC4xIDUuMSAuMmwtMjQuMiA0OC41Yy05IDE4LjEgNC4xIDM5LjQgMjQuMyAzOS40em0zMy43LTQ4bDUwLjctMTAxLjMgNzIuOSAxMDEuMi0uMSAuMUgxNjYuOHptOTAuNi0xMjhIMzY1LjlMMzE3IDI3NC44IDI1Ny40IDE5MnpcIl1cbn07XG52YXIgZmFTdGFmZlNuYWtlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YWZmLXNuYWtlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJyb2QtYXNjbGVwaXVzXCIsIFwicm9kLXNuYWtlXCIsIFwic3RhZmYtYWVzY3VsYXBpdXNcIl0sIFwiZTU3OVwiLCBcIk0yMjIuNiA0My4ybC0uMSA0LjhIMjg4YzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDI0OFYxNjBoNDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjQ4IDIyMGwtNC41IDE0NEgyNTZjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIMjQwVjM4NGgxNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyMTNsLTMuMSA5OS41TDIwOC41IDQ5NWwwIDFjLS4zIDguOS03LjYgMTYtMTYuNSAxNnMtMTYuMi03LjEtMTYuNS0xNmwwLTEtMS0zMUgxMzZjLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDBoMzZsLTEtMzJIMTUyYy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3LjEgODAtOTQuN1YyNTZjMCA4LjggNy4yIDE2IDE2IDE2aDE2LjVMMTY0IDEyOEgxMzYgMTIyLjZjLTkgMTguOS0yOC4zIDMyLTUwLjYgMzJINTZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2UzI1LjEgNDggNTYgNDhoOCA4IDg5LjVsLS4xLTQuOEwxNjEgMzJjMC0uNyAwLTEuMyAwLTEuOWMuNS0xNi42IDE0LjEtMzAgMzEtMzBzMzAuNSAxMy40IDMxIDMwYzAgLjYgMCAxLjMgMCAxLjlsLS40IDExLjJ6TTY0IDExMmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJdXG59O1xudmFyIGZhUm9kQXNjbGVwaXVzID0gZmFTdGFmZlNuYWtlO1xudmFyIGZhUm9kU25ha2UgPSBmYVN0YWZmU25ha2U7XG52YXIgZmFTdGFmZkFlc2N1bGFwaXVzID0gZmFTdGFmZlNuYWtlO1xudmFyIGZhSGVhZFNpZGVDb3VnaFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWQtc2lkZS1jb3VnaC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2MlwiLCBcIk00NDggMzI1LjhsNDQgMzQuNWM4LjEgMS40IDE0LjggNi44IDE4IDE0LjFMNTUyLjkgNDA4YzEwLjYgLjQgMTkuNSA3LjYgMjIuMiAxNy40bDM5LjEgMzAuNmMuNiAwIDEuMi0uMSAxLjgtLjFjMTEuMSAwIDIwLjQgNy41IDIzLjIgMTcuOGgtMy45YzYuMiA4LjUgNi40IDIwLjQtLjQgMjljLTguMiAxMC40LTIzLjMgMTIuMy0zMy43IDQuMUw5LjIgNDIuOUMtMS4yIDM0LjctMy4xIDE5LjYgNS4xIDkuMlMyOC40LTMuMSAzOC44IDUuMUw4OS42IDQ0LjlDMTI3IDE2LjcgMTczLjUgMCAyMjQgMGgyNGM5NS4yIDAgMTgxLjIgNjkuMyAxOTcuMyAxNjAuMmMyLjMgMTMgNi44IDI1LjcgMTUuMSAzNmw0MiA1Mi42YzYuMiA3LjggOS42IDE3LjQgOS42IDI3LjRjMCAyNC4yLTE5LjYgNDMuOC00My44IDQzLjhINDQ4djAgNS44ek0wIDIyNC4yYzAtMzguNyA5LjgtNzUuMSAyNy4xLTEwNi45TDM0MS44IDM2NS4zbC0yLjUgLjNjLTExIDEuNC0xOS4yIDEwLjctMTkuMiAyMS44YzAgMTEuNiA5IDIxLjIgMjAuNiAyMS45bDYyIDMuOSA0MyAzMy45QzQzOS4zIDQ2Ni4yIDQyMS4yIDQ4MCA0MDAgNDgwSDMyMHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDI1NnYwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek02MTYgMzYwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptLTY0LTQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG52YXIgZmFUcnVja01lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stbWVkaWNhbCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODY1NywgXCJhbWJ1bGFuY2VcIl0sIFwiZjBmOVwiLCBcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzNjhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWOTZoNTAuN2MxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0w1ODkuMyAxOTJjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1YyNTZ2MzIgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTQxNiAyNTZINTQ0VjIzNy4zTDQ2Ni43IDE2MEg0MTZ2OTZ6TTE2MCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zNjgtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTc2IDgwdjQ4bC00OCAwYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTkyaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDI0MFY4MGMwLTguOC03LjItMTYtMTYtMTZIMTkyYy04LjggMC0xNiA3LjItMTYgMTZ6XCJdXG59O1xudmFyIGZhQW1idWxhbmNlID0gZmFUcnVja01lZGljYWw7XG52YXIgZmFXaGVhdEF3bkNpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3doZWF0LWF3bi1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OThcIiwgXCJNNTA1IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzgzIDk1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODgtODh6TTMwNS41IDI3LjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDI3MS41IDM4LjZjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44bC0xMS4zLTExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xMS4zIDExLjNjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44TDEwMS44IDIzMWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNjcuOSAyNDIuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNEw5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjguOS02OC45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMjIuNSAyMi41IDUzLjMgMzEuNSA4Mi40IDI3YzAtMSAwLTIuMSAwLTMuMWMwLTMzLjEgOS4xLTY0LjEgMjUtOTAuNmMtMTUuNS04LjctMzIuNS0xMy44LTQ5LjgtMTUuNWwzMS45LTMxLjkgMTIuMiAxMi4yYzYgNiAxMi42IDExLjEgMTkuNyAxNS4yYzI3LjUtMzQgNjcuMy01Ny41IDExMi42LTYzLjhjLTQuMS0zLjgtOC40LTcuMy0xMi45LTEwLjVMNTA1IDEzN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01OS40IDU5LjRjLTIwLjYtNC40LTQyLTMuNy02Mi4zIDIuMWM2LjEtMjEuMyA2LjYtNDMuOCAxLjQtNjUuM0w0MDkgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzMjkuMSA1Mi45Yy0zLjctNS03LjgtOS44LTEyLjQtMTQuM0wzMDUuNSAyNy4zek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYVNub3dtYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc25vd21hbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzk3MzEsIDk5MjRdLCBcImY3ZDBcIiwgXCJNMzQxLjEgMTQwLjZjLTIgMy45LTEuNiA4LjYgMS4yIDEyYzcgOC41IDEyLjkgMTguMSAxNy4yIDI4LjRMNDA4IDE2MC4yVjEyMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djE5LjZsMjIuNS05LjdjMTIuMi01LjIgMjYuMyAuNCAzMS41IDEyLjZzLS40IDI2LjMtMTIuNiAzMS41bC01NiAyNC03My42IDMxLjVjLS41IDkuNS0yLjEgMTguNi00LjggMjcuM2MtMS4yIDMuOC0uMSA4IDIuOCAxMC44QzM5Ni43IDI5Ni45IDQxNiAzMzguMiA0MTYgMzg0YzAgNDQuNy0xOC4zIDg1LTQ3LjggMTE0LjFjLTkuOSA5LjctMjMuNyAxMy45LTM3LjUgMTMuOUgxODEuM2MtMTMuOSAwLTI3LjctNC4yLTM3LjUtMTMuOUMxMTQuMyA0NjkgOTYgNDI4LjcgOTYgMzg0YzAtNDUuOCAxOS4zLTg3LjEgNTAuMS0xMTYuM2MyLjktMi44IDQtNi45IDIuOC0xMC44Yy0yLjctOC43LTQuMy0xNy45LTQuOC0yNy4zTDcwLjUgMTk4LjFsLTU2LTI0QzIuNCAxNjguOC0zLjMgMTU0LjcgMS45IDE0Mi41czE5LjMtMTcuOCAzMS41LTEyLjZMNTYgMTM5LjZWMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NDAuMkwxNTIuNiAxODFjNC4zLTEwLjMgMTAuMS0xOS45IDE3LjItMjguNGMyLjgtMy40IDMuMy04LjEgMS4yLTEyQzE2NCAxMjcuMiAxNjAgMTEyLjEgMTYwIDk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCAxNi4xLTQgMzEuMi0xMC45IDQ0LjZ6TTIyNCA5NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTQ4IDEyOGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tMTYgODBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0xNiA0OGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0yODggOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tNDggMjR2My4yYzAgMy4yIC44IDYuMyAyLjMgOWw5IDE2LjljLjkgMS43IDIuNyAyLjggNC43IDIuOHMzLjgtMS4xIDQuNy0yLjhsOS0xNi45YzEuNS0yLjggMi4zLTUuOSAyLjMtOVYxMjBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ6XCJdXG59O1xudmFyIGZhTW9ydGFyUGVzdGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vcnRhci1wZXN0bGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YTdcIiwgXCJNNTA0LjMgMTEuMUM0OTMuMy0xLjYgNDc0LjUtMy43IDQ2MSA2LjJMMjUyLjMgMTYwSDM5Ny4zTDUwMi42IDU0LjZjMTEuOC0xMS44IDEyLjYtMzAuOCAxLjYtNDMuNXpNMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzAgODIuNSA0My40IDE0Ny43IDEyMy45IDE3Ni4yYy0xMS4xIDEzLjktMTkuNCAzMC4zLTIzLjkgNDguMUMxMjcuNiA0OTcuNCAxNDIuMyA1MTIgMTYwIDUxMkgzNTJjMTcuNyAwIDMyLjQtMTQuNiAyOC4xLTMxLjdjLTQuNS0xNy44LTEyLjgtMzQuMS0yMy45LTQ4LjFDNDM2LjYgNDAzLjcgNDgwIDMzOC41IDQ4MCAyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJdXG59O1xudmFyIGZhUm9hZEJhcnJpZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm9hZC1iYXJyaWVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTYyXCIsIFwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjY2LjNMMTQ5LjIgOTZINjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQwNS4yIDk2SDMzMC44bC01LjQgMTAuN0wyMzQuOCAyODhoNzQuM2w1LjQtMTAuN0w0MDUuMiA5NnpNMzYyLjggMjg4aDc0LjNsNS40LTEwLjdMNTMzLjIgOTZINDU4LjhsLTUuNCAxMC43TDM2Mi44IDI4OHpNMjAyLjggOTZsLTUuNCAxMC43TDEwNi44IDI4OGg3NC4zbDUuNC0xMC43TDI3Ny4yIDk2SDIwMi44em0yODggMTkySDU3NlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY1My43TDQ5MC44IDI4OHpcIl1cbn07XG52YXIgZmFTY2hvb2wgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2Nob29sJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI3OTc5XSwgXCJmNTQ5XCIsIFwiTTMzNy44IDUuNEMzMjctMS44IDMxMy0xLjggMzAyLjIgNS40TDE2Ni4zIDk2SDQ4QzIxLjUgOTYgMCAxMTcuNSAwIDE0NFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEg0NzMuN0wzMzcuOCA1LjR6TTI1NiA0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHY5NkgyNTZWNDE2ek05NiAxOTJoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOGMwLTguOCA3LjItMTYgMTYtMTZ6bTQwMCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg1MTJjLTguOCAwLTE2LTcuMi0xNi0xNlYyMDh6TTk2IDMyMGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptNDAwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDUxMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNnpNMjMyIDE3NmE4OCA4OCAwIDEgMSAxNzYgMCA4OCA4OCAwIDEgMSAtMTc2IDB6bTg4LTQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDMzNlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUlnbG9vID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2lnbG9vJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmN2FlXCIsIFwiTTMyMCAzMy44VjE2MEg0OC41QzEwMC4yIDgyLjggMTg4LjEgMzIgMjg4IDMyYzEwLjggMCAyMS41IC42IDMyIDEuOHpNMzUyIDE2MFYzOS4xQzQyNC45IDU1LjcgNDg3LjIgOTkuOCA1MjcuNSAxNjBIMzUyek0yOS45IDE5Mkg5NlYzMjBIMGMwLTQ2IDEwLjgtODkuNCAyOS45LTEyOHpNMTkyIDMyMEgxMjhWMTkySDQ0OFYzMjBIMzg0djMySDU3NnY4MGMwIDI2LjUtMjEuNSA0OC00OCA0OEgzNTJWMzUyYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0VjQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzUySDE5MlYzMjB6bTI4OCAwVjE5Mmg2Ni4xYzE5LjIgMzguNiAyOS45IDgyIDI5LjkgMTI4SDQ4MHpcIl1cbn07XG52YXIgZmFKb2ludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdqb2ludCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU5NVwiLCBcIk00NDggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDNjMCA1NS4yIDIxLjkgMTA4LjEgNjAuOSAxNDcuMWwyMSAyMWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOXYxMWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI0NWMwLTI5LjctMTEuOC01OC4yLTMyLjgtNzkuMmwtMjEtMjFDNDYzLjIgMTE3LjggNDQ4IDgxLjIgNDQ4IDQzVjMyek01NzYgMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjQ1YzAtNTUuMi0yMS45LTEwOC4xLTYwLjktMTQ3LjFsLTIxLTIxYy05LTktMTQuMS0yMS4yLTE0LjEtMzMuOVYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0M2MwIDI5LjcgMTEuOCA1OC4yIDMyLjggNzkuMmwyMSAyMWMyNyAyNyA0Mi4yIDYzLjYgNDIuMiAxMDEuOHYxMXpNMjI5LjggMzYwYy00LjctMi4zLTEwLTIuNy0xNS4yLTJjLTM3LjggNS42LTc1LjIgMTQuMy0xMDYuOSAyMi44QzgxLjMgMzg4IDU4LjMgMzk1LjEgNDIgNDAwLjRjLTguMiAyLjctMTQuNyA0LjktMTkuMiA2LjVjLTIuMyAuOC00IDEuNC01LjIgMS44bC0xLjMgLjVDNi44IDQxMi41IDAgNDIxLjQgMCA0MzJzNi44IDE5LjUgMTYuMyAyMi43bDEuMyAuNWMxLjIgLjQgMyAxLjEgNS4yIDEuOGM0LjUgMS42IDExIDMuOCAxOS4yIDYuNWMxNi4zIDUuNCAzOS4yIDEyLjUgNjUuNyAxOS42QzE2MC4zIDQ5Ny4zIDIyOC44IDUxMiAyODggNTEyaDY3LjNjNC4xIDAgNi4zLTUuMSAzLjYtOC4zTDI1Ni41IDM4MC44Yy03LjQtOC45LTE2LjUtMTUuOS0yNi43LTIwLjh6TTQ0NSA1MTJoMTkgNTEuM2M0LjEgMCA2LjMtNS4xIDMuNi04LjNMNDE2LjUgMzgwLjhDNDAxLjMgMzYyLjUgMzc4LjggMzUyIDM1NSAzNTJIMzM2IDI4OGMtMS4xIDAtMi4zIDAtMy40IDBjLTQuMSAwLTYuMiA1LjEtMy41IDguM0wzODMuNSA0ODMuMkMzOTguNyA1MDEuNSA0MjEuMiA1MTIgNDQ1IDUxMnptLTMuOS0xNTEuN0w1NDMuNSA0ODMuMmMxNC42IDE3LjUgMzUuOSAyNy45IDU4LjYgMjguN2MyMS4xLTEuMSAzNy45LTE4LjYgMzcuOS0zOS45VjM5MmMwLTIyLjEtMTcuOS00MC00MC00MEg0NDQuN2MtNC4xIDAtNi4zIDUuMS0zLjYgOC4zelwiXVxufTtcbnZhciBmYUFuZ2xlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGUtcmlnaHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFs4MjUwXSwgXCJmMTA1XCIsIFwiTTI3OC42IDIzMy40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xNjAgMTYwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyMTAuNyAyNTYgNzMuNCAxMTguNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwxNjAgMTYwelwiXVxufTtcbnZhciBmYUhvcnNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvcnNlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MDE0XSwgXCJmNmYwXCIsIFwiTTQ0OCAyMzguMVYxNjBoMTZsOS44IDE5LjZjMTIuNSAyNS4xIDQyLjIgMzYuNCA2OC4zIDI2YzIwLjUtOC4yIDMzLjktMjggMzMuOS01MC4xVjgwYzAtMTkuMS04LjQtMzYuMy0yMS43LTQ4SDU2MGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0ODAgNDQ4QzM3Ny4zIDAgMzIwIDU3LjMgMzIwIDEyOEgyMjQgMjAzLjIgMTQ4LjhjLTMwLjcgMC01Ny42IDE2LjMtNzIuNSA0MC44QzMzLjIgMTc0LjUgMCAyMTEuNCAwIDI1NnY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1NmMwLTEzLjQgNi42LTI1LjIgMTYuNy0zMi41YzEuNiAxMyA2LjMgMjUuNCAxMy42IDM2LjRsMjguMiA0Mi40YzguMyAxMi40IDYuNCAyOC43LTEuMiA0MS42Yy0xNi41IDI4LTIwLjYgNjIuMi0xMCA5My45bDE3LjUgNTIuNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45aDMzLjdjMjEuOCAwIDM3LjMtMjEuNCAzMC40LTQyLjFsLTIwLjgtNjIuNWMtMi4xLTYuNC0uNS0xMy40IDQuMy0xOC4ybDEyLjctMTIuN2MxMy4yLTEzLjIgMjAuNi0zMS4xIDIwLjYtNDkuN2MwLTIuMy0uMS00LjYtLjMtNi45bDg0IDI0YzQuMSAxLjIgOC4yIDIuMSAxMi4zIDIuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzE1LjdjMTkuMi0xOS4yIDMxLjUtNDUuNyAzMi03NS43aDB2LTEuOXpNNDk2IDY0YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIl1cbn07XG52YXIgZmFRID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3EnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMTNdLCBcIjUxXCIsIFwiTTY0IDI1NmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGMyOC45IDAgNTYtNy43IDc5LjQtMjEuMWwtNzItODYuNGMtMTEuMy0xMy42LTkuNS0zMy44IDQuMS00NS4xczMzLjgtOS41IDQ1LjEgNC4xbDcwLjkgODUuMUMzNzEuOSAzMjUuOCAzODQgMjkyLjMgMzg0IDI1NmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MFM2NCAxNjcuNiA2NCAyNTZ6TTM0NC45IDQ0NC42QzMxMCA0NjcgMjY4LjUgNDgwIDIyNCA0ODBDMTAwLjMgNDgwIDAgMzc5LjcgMCAyNTZTMTAwLjMgMzIgMjI0IDMyczIyNCAxMDAuMyAyMjQgMjI0YzAgNTYuMS0yMC42IDEwNy40LTU0LjcgMTQ2LjdsNDcuMyA1Ni44YzExLjMgMTMuNiA5LjUgMzMuOC00LjEgNDUuMXMtMzMuOCA5LjUtNDUuMS00LjFsLTQ2LjYtNTUuOXpcIl1cbn07XG52YXIgZmFHID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2cnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMDNdLCBcIjQ3XCIsIFwiTTIyNCA5NkMxMzUuNiA5NiA2NCAxNjcuNiA2NCAyNTZzNzEuNiAxNjAgMTYwIDE2MGM3Ny40IDAgMTQyLTU1IDE1Ni44LTEyOEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDAwYzI1LjggMCA0OS42IDIxLjQgNDcuMiA1MC42QzQzNy44IDM4OS42IDM0MS40IDQ4MCAyMjQgNDgwQzEwMC4zIDQ4MCAwIDM3OS43IDAgMjU2UzEwMC4zIDMyIDIyNCAzMmM1Ny40IDAgMTA5LjcgMjEuNiAxNDkuMyA1N2MxMy4yIDExLjggMTQuMyAzMiAyLjUgNDUuMnMtMzIgMTQuMy00NS4yIDIuNUMzMDIuMyAxMTEuNCAyNjUgOTYgMjI0IDk2elwiXVxufTtcbnZhciBmYU5vdGVzTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdub3Rlcy1tZWRpY2FsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDgxXCIsIFwiTTk2IDM1MlY5NmMwLTM1LjMgMjguNy02NCA2NC02NEg0MTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjkzLjVjMCAxNy02LjcgMzMuMy0xOC43IDQ1LjNsLTU4LjUgNTguNWMtMTIgMTItMjguMyAxOC43LTQ1LjMgMTguN0gxNjBjLTM1LjMgMC02NC0yOC43LTY0LTY0ek0yNzIgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjU2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDMyMFYxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDI3MnptMjQgMzM2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDEzNkM2MC45IDUxMiAwIDQ1MS4xIDAgMzc2VjE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMjI0YzAgNDguNiAzOS40IDg4IDg4IDg4SDI5NnpcIl1cbn07XG52YXIgZmFUZW1wZXJhdHVyZUhhbGYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVtcGVyYXR1cmUtaGFsZicsXG4gIGljb246IFszMjAsIDUxMiwgWzEyNzc3NywgXCJ0ZW1wZXJhdHVyZS0yXCIsIFwidGhlcm1vbWV0ZXItMlwiLCBcInRoZXJtb21ldGVyLWhhbGZcIl0sIFwiZjJjOVwiLCBcIk0xNjAgNjRjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjI3Ni41YzAgMTcuMy03LjEgMzEuOS0xNS4zIDQyLjVDODYuMiAzMzIuNiA4MCAzNDkuNSA4MCAzNjhjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTE4LjUtNi4yLTM1LjQtMTYuNy00OC45Yy04LjItMTAuNi0xNS4zLTI1LjItMTUuMy00Mi41VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNNDggMTEyQzQ4IDUwLjIgOTguMSAwIDE2MCAwczExMiA1MC4xIDExMiAxMTJWMjc2LjVjMCAuMSAuMSAuMyAuMiAuNmMuMiAuNiAuOCAxLjYgMS43IDIuOGMxOC45IDI0LjQgMzAuMSA1NSAzMC4xIDg4LjFjMCA3OS41LTY0LjUgMTQ0LTE0NCAxNDRTMTYgNDQ3LjUgMTYgMzY4YzAtMzMuMiAxMS4yLTYzLjggMzAuMS04OC4xYy45LTEuMiAxLjUtMi4yIDEuNy0yLjhjLjEtLjMgLjItLjUgLjItLjZWMTEyek0yMDggMzY4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM1YyMDhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlYzMjIuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN6XCJdXG59O1xudmFyIGZhVGVtcGVyYXR1cmUyID0gZmFUZW1wZXJhdHVyZUhhbGY7XG52YXIgZmFUaGVybW9tZXRlcjIgPSBmYVRlbXBlcmF0dXJlSGFsZjtcbnZhciBmYVRoZXJtb21ldGVySGFsZiA9IGZhVGVtcGVyYXR1cmVIYWxmO1xudmFyIGZhRG9uZ1NpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG9uZy1zaWduJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMTY5XCIsIFwiTTI4OCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJ2NDkuMWMtMTguOC0xMC45LTQwLjctMTcuMS02NC0xNy4xYy03MC43IDAtMTI4IDU3LjMtMTI4IDEyOHM1Ny4zIDEyOCAxMjggMTI4YzI0LjUgMCA0Ny40LTYuOSA2Ni44LTE4LjhjNSAxMS4xIDE2LjIgMTguOCAyOS4yIDE4LjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4IDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTI4IDI4OGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJdXG59O1xudmFyIGZhQ2Fwc3VsZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2Fwc3VsZXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0NmJcIiwgXCJNNjQgMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhWMjU2SDY0VjE0NHpNMCAxNDRWMzY4YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMTg5LjZjMS44IDE5LjEgOC4yIDM4IDE5LjggNTQuOEwzNzIuMyA0MzEuN2MzNS41IDUxLjcgMTA1LjMgNjQuMyAxNTYgMjguMXM2My0xMDcuNSAyNy41LTE1OS4yTDQyNy4zIDExMy4zQzM5MS44IDYxLjUgMzIxLjkgNDkgMjcxLjMgODUuMmMtMjggMjAtNDQuMyA1MC44LTQ3LjMgODNWMTQ0YzAtNjEuOS01MC4xLTExMi0xMTItMTEyUzAgODIuMSAwIDE0NHptMjk2LjYgNjQuMmMtMTYtMjMuMy0xMC01NS4zIDExLjktNzFjMjEuMi0xNS4xIDUwLjUtMTAuMyA2NiAxMi4ybDY3IDk3LjZMMzYxLjYgMzAzbC02NS05NC44ek00OTEgNDA3LjdjLS44IC42LTEuNiAxLjEtMi40IDEuNmw0LTIuOGMtLjUgLjQtMSAuOC0xLjYgMS4yelwiXVxufTtcbnZhciBmYVBvb1N0b3JtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bvby1zdG9ybScsXG4gIGljb246IFs0NDgsIDUxMiwgW1wicG9vLWJvbHRcIl0sIFwiZjc1YVwiLCBcIk0yMzYuOSAuMmMtNS41LS43LTExIDEuNC0xNC41IDUuN3MtNC42IDEwLjEtMi44IDE1LjNjMi44IDguMiA0LjMgMTYuOSA0LjMgMjYuMWMwIDIxLjctOC41IDM3LjItMjEuOSA0Ny42Yy0xMy44IDEwLjgtMzQgMTctNTcuOCAxN0gxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMTIuMiAzLjQgMjMuNSA5LjMgMzMuMkMzMS43IDIxNi4yIDAgMjUyLjQgMCAyOTZjMCA0MSAyOCA3NS40IDY1LjggODUuMmMtNS4zLTE4LjUgMS0zOC41IDE2LjItNTAuN2wxNjAtMTI4YzE3LjYtMTQuMSA0Mi42LTE0IDYwLjIgLjJzMjIuOCAzOC42IDEyLjggNTguOEwyODUuNyAzMjBIMzA0YzIwLjQgMCAzOC41IDEyLjkgNDUuMyAzMi4xYzMuNyAxMC42IDMuNSAyMS44IDAgMzEuOUgzNjBjNDguNiAwIDg4LTM5LjQgODgtODhjMC00My42LTMxLjctNzkuOC03My4zLTg2LjhjNS45LTkuNyA5LjMtMjEuMSA5LjMtMzMuMmMwLTM1LjMtMjguNy02NC02NC02NGgtMS40Yy45LTUuNCAxLjQtMTAuOSAxLjQtMTYuNmMwLTQ4LjctMzYuMS04OC45LTgzLjEtOTUuMnptNDUuMSAyMjcuNGMtNS44LTQuNy0xNC4yLTQuNy0yMC4xLS4xbC0xNjAgMTI4Yy01LjMgNC4yLTcuNCAxMS40LTUuMSAxNy44czguMyAxMC43IDE1LjEgMTAuN2g3MC4xTDEyOS43IDQ4OC44Yy0zLjQgNi43LTEuNiAxNC45IDQuMyAxOS42czE0LjIgNC43IDIwLjEgLjFsMTYwLTEyOGM1LjMtNC4yIDcuNC0xMS40IDUuMS0xNy44cy04LjMtMTAuNy0xNS4xLTEwLjdIMjMzLjlsNTIuNC0xMDQuOGMzLjQtNi43IDEuNi0xNC45LTQuMy0xOS42elwiXVxufTtcbnZhciBmYVBvb0JvbHQgPSBmYVBvb1N0b3JtO1xudmFyIGZhRmFjZUZyb3duT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWZyb3duLW9wZW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NTAsIFwiZnJvd24tb3BlblwiXSwgXCJmNTdhXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTEyMiAxNzQuNWMtMTIuNCA1LjItMjYuNS00LjEtMjEuMS0xNi40YzE2LTM2LjYgNTIuNC02Mi4xIDk0LjgtNjIuMXM3OC44IDI1LjYgOTQuOCA2Mi4xYzUuNCAxMi4zLTguNyAyMS42LTIxLjEgMTYuNGMtMjIuNC05LjUtNDcuNC0xNC44LTczLjctMTQuOHMtNTEuMyA1LjMtNzMuNyAxNC44elwiXVxufTtcbnZhciBmYUZyb3duT3BlbiA9IGZhRmFjZUZyb3duT3BlbjtcbnZhciBmYUhhbmRQb2ludFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtcG9pbnQtdXAnLFxuICBpY29uOiBbMzg0LCA1MTIsIFs5NzU3XSwgXCJmMGE2XCIsIFwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBTOTYgMTQuMyA5NiAzMlYyNDBIMzJWMzJ6TTIyNCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxOTJ6bS02NC02NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTE2MCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNHptLTk2IDg4bDAtLjZjOS40IDUuNCAyMC4zIDguNiAzMiA4LjZjMTMuMiAwIDI1LjQtNCAzNS42LTEwLjhjOC43IDI0LjkgMzIuNSA0Mi44IDYwLjQgNDIuOGMxMS43IDAgMjIuNi0zLjEgMzItOC42VjM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MEgxNjIuM2MtNDIuNCAwLTgzLjEtMTYuOS0xMTMuMS00Ni45TDM3LjUgNDUzLjVDMTMuNSA0MjkuNSAwIDM5Ni45IDAgMzYzVjMzNmMwLTM1LjMgMjguNy02NCA2NC02NGg4OGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MEg5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MnpcIl1cbn07XG52YXIgZmFNb25leUJpbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktYmlsbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjBkNlwiLCBcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgMzIwSDY0VjMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NHpNNjQgMTkyVjEyOGg2NGMwIDM1LjMtMjguNyA2NC02NCA2NHpNNDQ4IDM4NGMwLTM1LjMgMjguNy02NCA2NC02NHY2NEg0NDh6bTY0LTE5MmMtMzUuMyAwLTY0LTI4LjctNjQtNjRoNjR2NjR6TTI4OCAxNjBhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJdXG59O1xudmFyIGZhQm9va21hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9va21hcmsnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgyNzgsIDYxNTkxXSwgXCJmMDJlXCIsIFwiTTAgNDhWNDg3LjdDMCA1MDEuMSAxMC45IDUxMiAyNC4zIDUxMmM1IDAgOS45LTEuNSAxNC00LjRMMTkyIDQwMCAzNDUuNyA1MDcuNmM0LjEgMi45IDkgNC40IDE0IDQuNGMxMy40IDAgMjQuMy0xMC45IDI0LjMtMjQuM1Y0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh6XCJdXG59O1xudmFyIGZhQWxpZ25KdXN0aWZ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsaWduLWp1c3RpZnknLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMzlcIiwgXCJNNDQ4IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6bTAgMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnpNMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNDQ4IDQ0OGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ6XCJdXG59O1xudmFyIGZhVW1icmVsbGFCZWFjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bWJyZWxsYS1iZWFjaCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyNzk1OF0sIFwiZjVjYVwiLCBcIk0zNDYuMyAyNzEuOGwtNjAuMS0yMS45TDIxNCA0NDhIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4Mi4xbDY0LjEtMTc2LjJ6bTEyMS4xLS4ybC0zLjMgOS4xIDY3LjcgMjQuNmMxOC4xIDYuNiAzOC00LjIgMzkuNi0yMy40YzYuNS03OC41LTIzLjktMTU1LjUtODAuOC0yMDguNWMyIDggMy4yIDE2LjMgMy40IDI0LjhsLjIgNmMxLjggNTctNy4zIDExMy44LTI2LjggMTY3LjR6TTQ2MiA5OS4xYy0xLjEtMzQuNC0yMi41LTY0LjgtNTQuNC03Ny40Yy0uOS0uNC0xLjktLjctMi44LTEuMWMtMzMtMTEuNy02OS44LTIuNC05My4xIDIzLjhsLTQgNC41QzI3Mi40IDg4LjMgMjQ1IDEzNC4yIDIyNi44IDE4NGwtMy4zIDkuMUw0MzQgMjY5LjdsMy4zLTkuMWMxOC4xLTQ5LjggMjYuNi0xMDIuNSAyNC45LTE1NS41bC0uMi02ek0xMDcuMiAxMTIuOWMtMTEuMSAxNS43LTIuOCAzNi44IDE1LjMgNDMuNGw3MSAyNS44IDMuMy05LjFjMTkuNS01My42IDQ5LjEtMTAzIDg3LjEtMTQ1LjVsNC00LjVjNi4yLTYuOSAxMy4xLTEzIDIwLjUtMTguMmMtNzkuNiAyLjUtMTU0LjcgNDIuMi0yMDEuMiAxMDh6XCJdXG59O1xudmFyIGZhSGVsbWV0VW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVsbWV0LXVuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTAzXCIsIFwiTTQ3OS41IDIyNEM0NzEuMiA5OC45IDM2Ny4yIDAgMjQwIDBDMTA3LjUgMCAwIDEwNy41IDAgMjQwdjU2LjNDMCAzNDQuOCAzOS4yIDM4NCA4Ny43IDM4NEgyMDBoMTQuOUwzNDMuNSA1MDUuNGM0LjUgNC4yIDEwLjQgNi42IDE2LjUgNi42aDk2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2OS41bC0xLjUtMS41VjI4OGg4MCAzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtLjV6TTMyMCA0MTcuMmwtNzgtNzMuN0wyNzQuNCAyODhIMzIwVjQxNy4yek0yODUuMyAxMDMuMWwzNC43IDUyVjExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djk2YzAgNy4xLTQuNiAxMy4zLTExLjQgMTUuM3MtMTQtLjYtMTcuOS02LjRsLTM0LjctNTJWMjA4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjExMmMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTE2MCAxMTJ2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIl1cbn07XG52YXIgZmFCdWxsc2V5ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWxsc2V5ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE0MFwiLCBcIk00NDggMjU2QTE5MiAxOTIgMCAxIDAgNjQgMjU2YTE5MiAxOTIgMCAxIDAgMzg0IDB6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMjU2IDgwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6TTIyNCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIl1cbn07XG52YXIgZmFCYWNvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWNvbicsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyOTM2M10sIFwiZjdlNVwiLCBcIk00MzkuMiAxLjJjMTEuMi0zLjIgMjMuMi0uMSAzMS40IDguMUw1MTggNTYuN2wtMjYuNSA3LjljLTU4IDE2LjYtOTguMSAzOS42LTEyOS42IDY3LjRjLTMxLjIgMjcuNS01My4yIDU5LjEtNzUuMSA5MC45bC0yLjMgMy4zQzI0MS42IDI4OC43IDE5NSAzNTYuNiA3Mi44IDQxNy43TDM3LjkgNDM1LjIgOS40IDQwNi42Yy03LjMtNy4zLTEwLjYtMTcuNi05LTI3LjhzOC4xLTE4LjkgMTcuMy0yMy41QzEzNi4xIDI5Ni4yIDE4MC45IDIzMSAyMjMuMyAxNjkuM2wyLjMtMy40YzIxLjgtMzEuOCA0NC45LTY0LjkgNzcuNy05My45YzMzLjQtMjkuNSA3NS44LTUzLjYgMTM1LjktNzAuOHpNNjEuOCA0NTlsMjUuNC0xMi43YzEyOS41LTY0LjcgMTc5LjktMTM4LjEgMjIzLjgtMjAybDIuMi0zLjNjMjIuMS0zMi4xIDQyLjEtNjAuNSA2OS45LTg1LjFjMjcuNS0yNC4zIDYzLjQtNDUuMiAxMTcuMy02MC42bDAgMCAuMi0uMSA0My4xLTEyLjkgMjMgMjNjOCA4IDExLjIgMTkuNyA4LjMgMzAuN3MtMTEuMyAxOS42LTIyLjIgMjIuN2MtNTEuOSAxNC44LTg1LjYgMzQuNy0xMTEuMSA1Ny4yYy0yNi4xIDIzLTQ1LjEgNDkuOS02Ny4zIDgyLjFsLTIuMiAzLjJDMzI3LjggMzY1LjkgMjc1LjUgNDQyIDE0Mi4zIDUwOC42Yy0xMi4zIDYuMi0yNy4yIDMuNy0zNi45LTZMNjEuOCA0NTl6XCJdXG59O1xudmFyIGZhSGFuZFBvaW50RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LWRvd24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwYTdcIiwgXCJNMzIgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjcySDMyVjQ4MHpNMjI0IDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY2NHptLTY0IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMwNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnptMTYwLTk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0em0tOTYtODhsMCAuNmM5LjQtNS40IDIwLjMtOC42IDMyLTguNmMxMy4yIDAgMjUuNCA0IDM1LjYgMTAuOGM4LjctMjQuOSAzMi41LTQyLjggNjAuNC00Mi44YzExLjcgMCAyMi42IDMuMSAzMiA4LjZWMTYwQzM4NCA3MS42IDMxMi40IDAgMjI0IDBIMTYyLjNDMTE5LjggMCA3OS4xIDE2LjkgNDkuMSA0Ni45TDM3LjUgNTguNUMxMy41IDgyLjUgMCAxMTUuMSAwIDE0OXYyN2MwIDM1LjMgMjguNyA2NCA2NCA2NGg4OGMyMi4xIDAgNDAtMTcuOSA0MC00MHMtMTcuOS00MC00MC00MEg5NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg1NmMzOS44IDAgNzIgMzIuMiA3MiA3MnpcIl1cbn07XG52YXIgZmFBcnJvd1VwRnJvbUJyYWNrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtZnJvbS1icmFja2V0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJlMDlhXCIsIFwiTTI0Ni42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjhjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTkyIDEwOS4zVjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjEwOS4zbDczLjQgNzMuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4ek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRjMCA1MyA0MyA5NiA5NiA5NkgzNTJjNTMgMCA5Ni00MyA5Ni05NlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MnpcIl1cbn07XG52YXIgZmFGb2xkZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9sZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTkzLCAxMjg0NDcsIDYxNzE2LCBcImZvbGRlci1ibGFua1wiXSwgXCJmMDdiXCIsIFwiTTY0IDQ4MEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDI4OGMtMTAuMSAwLTE5LjYtNC43LTI1LjYtMTIuOEwyNDMuMiA1Ny42QzIzMS4xIDQxLjUgMjEyLjEgMzIgMTkyIDMySDY0QzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0elwiXVxufTtcbnZhciBmYUZvbGRlckJsYW5rID0gZmFGb2xkZXI7XG52YXIgZmFGaWxlV2F2ZWZvcm0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS13YXZlZm9ybScsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiZmlsZS1tZWRpY2FsLWFsdFwiXSwgXCJmNDc4XCIsIFwiTTk2IDBDNjAuNyAwIDMyIDI4LjcgMzIgNjRWMjg4SDE0NGM2LjEgMCAxMS42IDMuNCAxNC4zIDguOEwxNzYgMzMyLjJsNDkuNy05OS40YzIuNy01LjQgOC4zLTguOCAxNC4zLTguOHMxMS42IDMuNCAxNC4zIDguOEwyODEuOSAyODhIMzUyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI3MmMtNi4xIDAtMTEuNi0zLjQtMTQuMy04LjhMMjQwIDI3NS44bC00OS43IDk5LjRjLTIuNyA1LjQtOC4zIDguOC0xNC4zIDguOHMtMTEuNi0zLjQtMTQuMy04LjhMMTM0LjEgMzIwSDMyVjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg5NnpNMjg4IDBWMTI4SDQxNkwyODggMHpcIl1cbn07XG52YXIgZmFGaWxlTWVkaWNhbEFsdCA9IGZhRmlsZVdhdmVmb3JtO1xudmFyIGZhUmFkaWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JhZGlhdGlvbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdiOVwiLCBcIk0yMTYgMTg2LjdjLTIzLjkgMTMuOC00MCAzOS43LTQwIDY5LjNMMzIgMjU2QzE0LjMgMjU2LS4yIDI0MS42IDIgMjI0LjFDMTAuNyAxNTQgNDcuOCA5Mi43IDEwMS4zIDUyYzE0LjEtMTAuNyAzMy44LTUuMyA0Mi43IDEwbDcyIDEyNC43ek0yNTYgMzM2YzE0LjYgMCAyOC4yLTMuOSA0MC0xMC43bDcyIDEyNC44YzguOCAxNS4zIDMuNyAzNS4xLTEyLjYgNDEuOWMtMzAuNiAxMi45LTY0LjIgMjAtOTkuNCAyMHMtNjguOS03LjEtOTkuNC0yMGMtMTYuMy02LjktMjEuNC0yNi42LTEyLjYtNDEuOWw3Mi0xMjQuOGMxMS44IDYuOCAyNS40IDEwLjcgNDAgMTAuN3ptMjI0LTgwbC0xNDQgMGMwLTI5LjYtMTYuMS01NS41LTQwLTY5LjNMMzY4IDYyYzguOC0xNS4zIDI4LjYtMjAuNyA0Mi43LTEwYzUzLjYgNDAuNyA5MC42IDEwMiA5OS40IDE3Mi4xYzIuMiAxNy41LTEyLjQgMzEuOS0zMCAzMS45ek0yNTYgMjA4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIl1cbn07XG52YXIgZmFDaGFydFNpbXBsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFydC1zaW1wbGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImU0NzNcIiwgXCJNMTYwIDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDMyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgyMDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4Vjgwek0wIDI3MmMwLTI2LjUgMjEuNS00OCA0OC00OEg4MGMyNi41IDAgNDggMjEuNSA0OCA0OFY0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI3MnpNMzY4IDk2aDMyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgzNjhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHpcIl1cbn07XG52YXIgZmFNYXJzU3Ryb2tlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMtc3Ryb2tlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTg5NF0sIFwiZjIyOVwiLCBcIk0zNzYgMGMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44cy0xLjcgMTkuMyA1LjIgMjYuMmwzMy40IDMzLjRMMzcwLjMgOTYuNCAzNDUgNzFjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMjUuNCAyNS40TDMwNy44IDE1OWMtMjguNC0xOS41LTYyLjctMzEtOTkuOC0zMWMtOTcuMiAwLTE3NiA3OC44LTE3NiAxNzZzNzguOCAxNzYgMTc2IDE3NnMxNzYtNzguOCAxNzYtMTc2YzAtMzctMTEuNC03MS40LTMxLTk5LjhsMjguNi0yOC42TDQwNyAyMDFjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0yNS40LTI1LjQgMjIuMS0yMi4xTDQ3MSAxNTNjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDM3NnptODggNDhoMHYwbDAgMHpNOTYgMzA0YTExMiAxMTIgMCAxIDEgMjI0IDBBMTEyIDExMiAwIDEgMSA5NiAzMDR6XCJdXG59O1xudmFyIGZhVmlhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWFsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTE0XSwgXCJmNDkyXCIsIFwiTTM0Mi42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOS40IDkuNEwyOC4xIDM0Mi42QzEwLjEgMzYwLjYgMCAzODUgMCA0MTAuNVY0MTZjMCA1MyA0MyA5NiA5NiA5Nmg1LjVjMjUuNSAwIDQ5LjktMTAuMSA2Ny45LTI4LjFMNDQ4IDIwNS4zbDkuNCA5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMzItMzItOTYtOTYtMzItMzJ6TTIwNS4zIDI1NkwzNTIgMTA5LjMgNDAyLjcgMTYwbC05NiA5NkgyMDUuM3pcIl1cbn07XG52YXIgZmFHYXVnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnYXVnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZGFzaGJvYXJkXCIsIFwiZ2F1Z2UtbWVkXCIsIFwidGFjaG9tZXRlci1hbHQtYXZlcmFnZVwiXSwgXCJmNjI0XCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzIwIDk2YzAtMjYuOS0xNi41LTQ5LjktNDAtNTkuM1Y4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFYyOTIuN2MtMjMuNSA5LjUtNDAgMzIuNS00MCA1OS4zYzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6TTE0NCAxNzZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0tMTYgODBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjg4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNNDAwIDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwiXVxufTtcbnZhciBmYURhc2hib2FyZCA9IGZhR2F1Z2U7XG52YXIgZmFHYXVnZU1lZCA9IGZhR2F1Z2U7XG52YXIgZmFUYWNob21ldGVyQWx0QXZlcmFnZSA9IGZhR2F1Z2U7XG52YXIgZmFXYW5kTWFnaWNTcGFya2xlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YW5kLW1hZ2ljLXNwYXJrbGVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJtYWdpYy13YW5kLXNwYXJrbGVzXCJdLCBcImUyY2FcIiwgXCJNMjM0LjcgNDIuN0wxOTcgNTYuOGMtMyAxLjEtNSA0LTUgNy4yczIgNi4xIDUgNy4ybDM3LjcgMTQuMUwyNDguOCAxMjNjMS4xIDMgNCA1IDcuMiA1czYuMS0yIDcuMi01bDE0LjEtMzcuN0wzMTUgNzEuMmMzLTEuMSA1LTQgNS03LjJzLTItNi4xLTUtNy4yTDI3Ny4zIDQyLjcgMjYzLjIgNWMtMS4xLTMtNC01LTcuMi01cy02LjEgMi03LjIgNUwyMzQuNyA0Mi43ek00Ni4xIDM5NS40Yy0xOC43IDE4LjctMTguNyA0OS4xIDAgNjcuOWwzNC42IDM0LjZjMTguNyAxOC43IDQ5LjEgMTguNyA2Ny45IDBMNTI5LjkgMTE2LjVjMTguNy0xOC43IDE4LjctNDkuMSAwLTY3LjlMNDk1LjMgMTQuMWMtMTguNy0xOC43LTQ5LjEtMTguNy02Ny45IDBMNDYuMSAzOTUuNHpNNDg0LjYgODIuNmwtMTA1IDEwNS0yMy4zLTIzLjMgMTA1LTEwNSAyMy4zIDIzLjN6TTcuNSAxMTcuMkMzIDExOC45IDAgMTIzLjIgMCAxMjhzMyA5LjEgNy41IDEwLjhMNjQgMTYwbDIxLjIgNTYuNWMxLjcgNC41IDYgNy41IDEwLjggNy41czkuMS0zIDEwLjgtNy41TDEyOCAxNjBsNTYuNS0yMS4yYzQuNS0xLjcgNy41LTYgNy41LTEwLjhzLTMtOS4xLTcuNS0xMC44TDEyOCA5NiAxMDYuOCAzOS41QzEwNS4xIDM1IDEwMC44IDMyIDk2IDMycy05LjEgMy0xMC44IDcuNUw2NCA5NiA3LjUgMTE3LjJ6bTM1MiAyNTZjLTQuNSAxLjctNy41IDYtNy41IDEwLjhzMyA5LjEgNy41IDEwLjhMNDE2IDQxNmwyMS4yIDU2LjVjMS43IDQuNSA2IDcuNSAxMC44IDcuNXM5LjEtMyAxMC44LTcuNUw0ODAgNDE2bDU2LjUtMjEuMmM0LjUtMS43IDcuNS02IDcuNS0xMC44cy0zLTkuMS03LjUtMTAuOEw0ODAgMzUybC0yMS4yLTU2LjVjLTEuNy00LjUtNi03LjUtMTAuOC03LjVzLTkuMSAzLTEwLjggNy41TDQxNiAzNTJsLTU2LjUgMjEuMnpcIl1cbn07XG52YXIgZmFNYWdpY1dhbmRTcGFya2xlcyA9IGZhV2FuZE1hZ2ljU3BhcmtsZXM7XG52YXIgZmFFID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2UnLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMDFdLCBcIjQ1XCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWMjU2IDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NFY5NkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6XCJdXG59O1xudmFyIGZhUGVuQ2xpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW4tY2xpcCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wicGVuLWFsdFwiXSwgXCJmMzA1XCIsIFwiTTQ1My4zIDE5LjNsMzkuNCAzOS40YzI1IDI1IDI1IDY1LjUgMCA5MC41bC01Mi4xIDUyLjEgMCAwLTEtMSAwIDAtMTYtMTYtOTYtOTYtMTctMTcgNTIuMS01Mi4xYzI1LTI1IDY1LjUtMjUgOTAuNSAwek0yNDEgMTE0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDEwNSAyMTdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMTczLjEgODFjMjguMS0yOC4xIDczLjctMjguMSAxMDEuOCAwTDI4OCA5NC4xbDE3IDE3IDk2IDk2IDE2IDE2IDEgMS0xNyAxN0wyMjkuNSA0MTIuNWMtNDggNDgtMTA5LjIgODAuOC0xNzUuOCA5NC4xbC0yNSA1Yy03LjkgMS42LTE2LS45LTIxLjctNi42cy04LjEtMTMuOC02LjYtMjEuN2w1LTI1YzEzLjMtNjYuNiA0Ni4xLTEyNy44IDk0LjEtMTc1LjhMMjU0LjEgMTI4IDI0MSAxMTQuOXpcIl1cbn07XG52YXIgZmFQZW5BbHQgPSBmYVBlbkNsaXA7XG52YXIgZmFCcmlkZ2VDaXJjbGVFeGNsYW1hdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmlkZ2UtY2lyY2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGNhXCIsIFwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NHMxNC4zIDMyIDMyIDMyaDQwdjY0SDMyVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMlYxNjBINTM2Vjk2aDQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDY0ek00ODggOTZ2NjRINDA4Vjk2aDgwek0zNjAgOTZ2NjRIMjgwVjk2aDgwek0yMzIgOTZ2NjRIMTUyVjk2aDgwek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYVVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcicsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODEwMCwgNjIxNDRdLCBcImYwMDdcIiwgXCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS00NS43IDQ4Qzc5LjggMzA0IDAgMzgzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43QzQ0OCAzODMuOCAzNjguMiAzMDQgMjY5LjcgMzA0SDE3OC4zelwiXVxufTtcbnZhciBmYVNjaG9vbENpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NjaG9vbC1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NmJcIiwgXCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMjB2MEgyNTZWNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0bC4zIDBoLjVjMy40LTM3LjcgMTguNy03Mi4xIDQyLjItOTkuMUMzNTAuMiAyNjAgMzM1LjYgMjY0IDMyMCAyNjRjLTQ4LjYgMC04OC0zOS40LTg4LTg4czM5LjQtODggODgtODhzODggMzkuNCA4OCA4OGMwIDE4LjMtNS42IDM1LjMtMTUuMSA0OS40YzI5LTIxIDY0LjYtMzMuNCAxMDMuMS0zMy40YzU5LjUgMCAxMTIuMSAyOS42IDE0NCA3NC44VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEg0NzMuN0wzMzcuOCA1LjR6TTk2IDE5MmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZWMjA4YzAtOC44IDcuMi0xNiAxNi0xNnptMCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6TTMyMCAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMzM2VjE0NGMwLTguOC03LjItMTYtMTYtMTZ6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTk5LjMtNDMuM2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43elwiXVxufTtcbnZhciBmYUR1bXBzdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2R1bXBzdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNzkzXCIsIFwiTTQ5LjcgMzJjLTEwLjUgMC0xOS44IDYuOS0yMi45IDE2LjlMLjkgMTMzYy0uNiAyLS45IDQuMS0uOSA2LjFDMCAxNTAuNyA5LjMgMTYwIDIwLjkgMTYwaDk0TDE0MC41IDMySDQ5Ljd6TTI3MiAxNjBWMzJIMTczLjFMMTQ3LjUgMTYwSDI3MnptMzIgMEg0MjguNUw0MDIuOSAzMkgzMDRWMTYwem0xNTcuMSAwaDk0YzExLjUgMCAyMC45LTkuMyAyMC45LTIwLjljMC0yLjEtLjMtNC4xLS45LTYuMUw1NDkuMiA0OC45QzU0Ni4xIDM4LjkgNTM2LjggMzIgNTI2LjMgMzJINDM1LjVsMjUuNiAxMjh6TTMyIDE5Mmw0IDMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ0TDY0IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMySDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDIwLTE2MGgxMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtNGw0LTMySDMyelwiXVxufTtcbnZhciBmYVZhblNodXR0bGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmFuLXNodXR0bGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg2NTYsIFwic2h1dHRsZS12YW5cIl0sIFwiZjViNlwiLCBcIk02NCAxMDR2ODhoOTZWOTZINzJjLTQuNCAwLTggMy42LTggOHptNDgyIDg4TDQ2NS4xIDk2SDM4NHY5Nkg1NDZ6bS0yMjYgMFY5NkgyMjR2OTZoOTZ6TTU5MiAzODRINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05Nkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTA0QzAgNjQuMiAzMi4yIDMyIDcyIDMySDE5MiAzNTIgNDY1LjFjMTguOSAwIDM2LjggOC4zIDQ5IDIyLjhMNjI1IDE4Ni41YzkuNyAxMS41IDE1IDI2LjEgMTUgNDEuMlYzMzZjMCAyNi41LTIxLjUgNDgtNDggNDh6bS02NCAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTE2MCA0MzJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwiXVxufTtcbnZhciBmYVNodXR0bGVWYW4gPSBmYVZhblNodXR0bGU7XG52YXIgZmFCdWlsZGluZ1VzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctdXNlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRkYVwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoODkuOWMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMlYyNzEuOCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTU3NiAyNzJhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0zNTIgNDc3LjFjMCAxOS4zIDE1LjYgMzQuOSAzNC45IDM0LjlINjA1LjFjMTkuMyAwIDM0LjktMTUuNiAzNC45LTM0LjljMC01MS40LTQxLjctOTMuMS05My4xLTkzLjFINDQ1LjFjLTUxLjQgMC05My4xIDQxLjctOTMuMSA5My4xelwiXVxufTtcbnZhciBmYVNxdWFyZUNhcmV0TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtY2FyZXQtbGVmdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiY2FyZXQtc3F1YXJlLWxlZnRcIl0sIFwiZjE5MVwiLCBcIk0wIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2ek0xMjggMjU2YzAtNi43IDIuOC0xMyA3LjctMTcuNmwxMTItMTA0YzctNi41IDE3LjItOC4yIDI1LjktNC40czE0LjQgMTIuNSAxNC40IDIybDAgMjA4YzAgOS41LTUuNyAxOC4yLTE0LjQgMjJzLTE4LjkgMi4xLTI1LjktNC40bC0xMTItMTA0Yy00LjktNC41LTcuNy0xMC45LTcuNy0xNy42elwiXVxufTtcbnZhciBmYUNhcmV0U3F1YXJlTGVmdCA9IGZhU3F1YXJlQ2FyZXRMZWZ0O1xudmFyIGZhSGlnaGxpZ2h0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGlnaGxpZ2h0ZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1OTFcIiwgXCJNMzE1IDMxNWwxNTguNC0yMTVMNDQ0LjEgNzAuNiAyMjkgMjI5IDMxNSAzMTV6bS0xODcgNWwwIDBWMjQ4LjNjMC0xNS4zIDcuMi0yOS42IDE5LjUtMzguNkw0MjAuNiA4LjRDNDI4IDIuOSA0MzcgMCA0NDYuMiAwYzExLjQgMCAyMi40IDQuNSAzMC41IDEyLjZsNTQuOCA1NC44YzguMSA4LjEgMTIuNiAxOSAxMi42IDMwLjVjMCA5LjItMi45IDE4LjItOC40IDI1LjZMMzM0LjQgMzk2LjVjLTkgMTIuMy0yMy40IDE5LjUtMzguNiAxOS41SDIyNGwtMjUuNCAyNS40Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNTAuNy01MC43Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM0wxMjggMzIwek03IDQ2Ni4zbDYzLTYzIDcwLjYgNzAuNi0zMSAzMWMtNC41IDQuNS0xMC42IDctMTcgN0gyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTQuN2MwLTYuNCAyLjUtMTIuNSA3LTE3elwiXVxufTtcbnZhciBmYUtleSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdrZXknLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyNzNdLCBcImYwODRcIiwgXCJNMzM2IDM1MmM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NlM0MzMuMiAwIDMzNiAwUzE2MCA3OC44IDE2MCAxNzZjMCAxOC43IDIuOSAzNi44IDguMyA1My43TDcgMzkxYy00LjUgNC41LTcgMTAuNi03IDE3djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjQ0OGg0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzODRoNDBjNi40IDAgMTIuNS0yLjUgMTctN2wzMy4zLTMzLjNjMTYuOSA1LjQgMzUgOC4zIDUzLjcgOC4zek0zNzYgOTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwelwiXVxufTtcbnZhciBmYUJ1bGxob3JuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1bGxob3JuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MjI2LCAxMjgzNjNdLCBcImYwYTFcIiwgXCJNNDgwIDMyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45TDM4MS43IDUzYy00OCA0OC0xMTMuMSA3NS0xODEgNzVIMTkyIDE2MCA2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2OTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUybDguNyAwYzY3LjkgMCAxMzMgMjcgMTgxIDc1bDQzLjYgNDMuNmM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42VjMwMC40YzE4LjYtOC44IDMyLTMyLjUgMzItNjAuNHMtMTMuNC01MS42LTMyLTYwLjRWMzJ6bS02NCA3Ni43VjI0MCAzNzEuM0MzNTcuMiAzMTcuOCAyODAuNSAyODggMjAwLjcgMjg4SDE5MlYxOTJoOC43Yzc5LjggMCAxNTYuNS0yOS44IDIxNS4zLTgzLjN6XCJdXG59O1xudmFyIGZhR2xvYmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xvYmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc3NjBdLCBcImYwYWNcIiwgXCJNMzUyIDI1NmMwIDIyLjItMS4yIDQzLjYtMy4zIDY0SDE2My4zYy0yLjItMjAuNC0zLjMtNDEuOC0zLjMtNjRzMS4yLTQzLjYgMy4zLTY0SDM0OC43YzIuMiAyMC40IDMuMyA0MS44IDMuMyA2NHptMjguOC02NEg1MDMuOWM1LjMgMjAuNSA4LjEgNDEuOSA4LjEgNjRzLTIuOCA0My41LTguMSA2NEgzODAuOGMyLjEtMjAuNiAzLjItNDIgMy4yLTY0cy0xLjEtNDMuNC0zLjItNjR6bTExMi42LTMySDM3Ni43Yy0xMC02My45LTI5LjgtMTE3LjQtNTUuMy0xNTEuNmM3OC4zIDIwLjcgMTQyIDc3LjUgMTcxLjkgMTUxLjZ6bS0xNDkuMSAwSDE2Ny43YzYuMS0zNi40IDE1LjUtNjguNiAyNy05NC43YzEwLjUtMjMuNiAyMi4yLTQwLjcgMzMuNS01MS41QzIzOS40IDMuMiAyNDguNyAwIDI1NiAwczE2LjYgMy4yIDI3LjggMTMuOGMxMS4zIDEwLjggMjMgMjcuOSAzMy41IDUxLjVjMTEuNiAyNiAyMC45IDU4LjIgMjcgOTQuN3ptLTIwOSAwSDE4LjZDNDguNiA4NS45IDExMi4yIDI5LjEgMTkwLjYgOC40QzE2NS4xIDQyLjYgMTQ1LjMgOTYuMSAxMzUuMyAxNjB6TTguMSAxOTJIMTMxLjJjLTIuMSAyMC42LTMuMiA0Mi0zLjIgNjRzMS4xIDQzLjQgMy4yIDY0SDguMUMyLjggMjk5LjUgMCAyNzguMSAwIDI1NnMyLjgtNDMuNSA4LjEtNjR6TTE5NC43IDQ0Ni42Yy0xMS42LTI2LTIwLjktNTguMi0yNy05NC42SDM0NC4zYy02LjEgMzYuNC0xNS41IDY4LjYtMjcgOTQuNmMtMTAuNSAyMy42LTIyLjIgNDAuNy0zMy41IDUxLjVDMjcyLjYgNTA4LjggMjYzLjMgNTEyIDI1NiA1MTJzLTE2LjYtMy4yLTI3LjgtMTMuOGMtMTEuMy0xMC44LTIzLTI3LjktMzMuNS01MS41ek0xMzUuMyAzNTJjMTAgNjMuOSAyOS44IDExNy40IDU1LjMgMTUxLjZDMTEyLjIgNDgyLjkgNDguNiA0MjYuMSAxOC42IDM1MkgxMzUuM3ptMzU4LjEgMGMtMzAgNzQuMS05My42IDEzMC45LTE3MS45IDE1MS42YzI1LjUtMzQuMiA0NS4yLTg3LjcgNTUuMy0xNTEuNkg0OTMuNHpcIl1cbn07XG52YXIgZmFTeW5hZ29ndWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3luYWdvZ3VlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4MzMzXSwgXCJmNjliXCIsIFwiTTMwOS44IDMuN2M1LjktNC45IDE0LjYtNC45IDIwLjUgMGwxMjEgMTAwLjhDNDY5LjUgMTE5LjcgNDgwIDE0Mi4yIDQ4MCAxNjZWMjgwLjEgNTEySDQ2NCAzNTJWNDE2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjk2SDE3NiAxNjBWMjgwLjEgMTY2YzAtMjMuNyAxMC41LTQ2LjMgMjguOC02MS41TDMwOS44IDMuN3pNNTEyIDUxMlYyNDQuNWwyOC4xLTMxLjJjMy0zLjQgNy40LTUuMyAxMS45LTUuM3M4LjkgMS45IDExLjkgNS4zbDYzLjggNzAuOWM3LjkgOC44IDEyLjMgMjAuMyAxMi4zIDMyLjFWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDUxMnpNMTI4IDI0NC41VjUxMkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzE2LjNjMC0xMS45IDQuNC0yMy4zIDEyLjMtMzIuMWw2My44LTcwLjljMy0zLjQgNy40LTUuMyAxMS45LTUuM3M4LjkgMS45IDExLjkgNS4zTDEyOCAyNDQuNXpNMzI3IDEyNC4zYy0zLjEtNS40LTEwLjktNS40LTEzLjkgMGwtMTUuOSAyOC4xLTMyLjMtLjNjLTYuMi0uMS0xMC4xIDYuNy03IDEyLjFMMjc0LjMgMTkybC0xNi40IDI3LjhjLTMuMiA1LjQgLjcgMTIuMSA3IDEyLjFsMzIuMy0uM0wzMTMgMjU5LjdjMy4xIDUuNCAxMC45IDUuNCAxMy45IDBsMTUuOS0yOC4xIDMyLjMgLjNjNi4yIC4xIDEwLjEtNi43IDctMTIuMUwzNjUuNyAxOTJsMTYuNC0yNy44YzMuMi01LjQtLjctMTIuMS03LTEyLjFsLTMyLjMgLjNMMzI3IDEyNC4zelwiXVxufTtcbnZhciBmYVBlcnNvbkhhbGZEcmVzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24taGFsZi1kcmVzcycsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZTU0OFwiLCBcIk0xNjAgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTggMzUyVjEyOGg2LjljMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNTguMyA5N2M5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOUwyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1Mmgwek01OC4yIDE4Mi4zYzE5LjktMzMuMSA1NS4zLTUzLjUgOTMuOC01NC4zVjM4NGgwdjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NEg3MC4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMUw5My4zIDI0OC4xIDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1My42LTg5LjJ6XCJdXG59O1xudmFyIGZhUm9hZEJyaWRnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2FkLWJyaWRnZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU2M1wiLCBcIk0zNTIgMEg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ4MCAyMDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djY0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYzODR6TTQ4MCA0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY2NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHpNMzIgOTZIMjg4djY0SDI0OHY2NGg0MHY5NmMtNTMgMC05NiA0My05NiA5NnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTUzLTQzLTk2LTk2LTk2VjIyNEg3MlYxNjBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTE2OCA2NEgxMjB2NjRoODBWMTYwelwiXVxufTtcbnZhciBmYUxvY2F0aW9uQXJyb3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jYXRpb24tYXJyb3cnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxMjRcIiwgXCJNNDI5LjYgOTIuMWM0LjktMTEuOSAyLjEtMjUuNi03LTM0LjdzLTIyLjgtMTEuOS0zNC43LTdsLTM1MiAxNDRjLTE0LjIgNS44LTIyLjIgMjAuOC0xOS4zIDM1LjhzMTYuMSAyNS44IDMxLjQgMjUuOEgyMjRWNDMyYzAgMTUuMyAxMC44IDI4LjQgMjUuOCAzMS40czMwLTUuMSAzNS44LTE5LjNsMTQ0LTM1MnpcIl1cbn07XG52YXIgZmFDID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2MnLFxuICBpY29uOiBbMzg0LCA1MTIsIFs5OV0sIFwiNDNcIiwgXCJNMzI5LjEgMTQyLjljLTYyLjUtNjIuNS0xNTUuOC02Mi41LTIxOC4zIDBzLTYyLjUgMTYzLjggMCAyMjYuM3MxNTUuOCA2Mi41IDIxOC4zIDBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2MtODcuNSA4Ny41LTIyMS4zIDg3LjUtMzA4LjggMHMtODcuNS0yMjkuMyAwLTMxNi44czIyMS4zLTg3LjUgMzA4LjggMGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMHpcIl1cbn07XG52YXIgZmFUYWJsZXRCdXR0b24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGV0LWJ1dHRvbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjEwYVwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFCdWlsZGluZ0xvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctbG9jaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRkNlwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoODguNmMtNS40LTkuNC04LjYtMjAuMy04LjYtMzJWMzUyYzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYyNzJjMC0zMC41IDEyLjItNTguMiAzMi03OC40VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNDY0IDI0MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0MzJWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIl1cbn07XG52YXIgZmFQaXp6YVNsaWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BpenphLXNsaWNlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmODE4XCIsIFwiTTE2OS43IC45Yy0yMi44LTEuNi00MS45IDE0LTQ3LjUgMzQuN0wxMTAuNCA4MGMuNSAwIDEuMSAwIDEuNiAwYzE3Ni43IDAgMzIwIDE0My4zIDMyMCAzMjBjMCAuNSAwIDEuMSAwIDEuNmw0NC40LTExLjhjMjAuOC01LjUgMzYuMy0yNC43IDM0LjctNDcuNUM0OTguNSAxNTkuNSAzNTIuNSAxMy41IDE2OS43IC45ek0zOTkuOCA0MTAuMmMuMS0zLjQgLjItNi44IC4yLTEwLjJjMC0xNTkuMS0xMjguOS0yODgtMjg4LTI4OGMtMy40IDAtNi44IC4xLTEwLjIgLjJMLjUgNDkxLjljLTEuNSA1LjUgLjEgMTEuNCA0LjEgMTUuNHM5LjkgNS42IDE1LjQgNC4xTDM5OS44IDQxMC4yek0xNzYgMjA4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptNjQgMTI4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTk2IDM4NGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbnZhciBmYU1vbmV5QmlsbFdhdmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktYmlsbC13YXZlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTNhXCIsIFwiTTAgMTEyLjVWNDIyLjNjMCAxOCAxMC4xIDM1IDI3IDQxLjNjODcgMzIuNSAxNzQgMTAuMyAyNjEtMTEuOWM3OS44LTIwLjMgMTU5LjYtNDAuNyAyMzkuMy0xOC45YzIzIDYuMyA0OC43LTkuNSA0OC43LTMzLjRWODkuN2MwLTE4LTEwLjEtMzUtMjctNDEuM0M0NjIgMTUuOSAzNzUgMzguMSAyODggNjAuM0MyMDguMiA4MC42IDEyOC40IDEwMC45IDQ4LjcgNzkuMUMyNS42IDcyLjggMCA4OC42IDAgMTEyLjV6TTI4OCAzNTJjLTQ0LjIgMC04MC00My04MC05NnMzNS44LTk2IDgwLTk2czgwIDQzIDgwIDk2cy0zNS44IDk2LTgwIDk2ek02NCAzNTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRINjRWMzUyem02NC0yMDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRWMTQ0aDY0ek01MTIgMzA0djY0SDQ0OGMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDk2aDY0djY0Yy0zNS4zIDAtNjQtMjguNy02NC02NHpcIl1cbn07XG52YXIgZmFDaGFydEFyZWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtYXJlYScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYXJlYS1jaGFydFwiXSwgXCJmMWZlXCIsIFwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjQwMGMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODBjLTguOCAwLTE2LTcuMi0xNi0xNlY2NHptOTYgMjg4SDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNTEuOGMwLTcuNi0yLjctMTUtNy43LTIwLjhsLTY1LjgtNzYuOGMtMTIuMS0xNC4yLTMzLjctMTUtNDYuOS0xLjhsLTIxIDIxYy0xMCAxMC0yNi40IDkuMi0zNS40LTEuNmwtMzkuMi00N2MtMTIuNi0xNS4xLTM1LjctMTUuNC00OC43LS42TDEzNS45IDIxNWMtNS4xIDUuOC03LjkgMTMuMy03LjkgMjEuMXY4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnpcIl1cbn07XG52YXIgZmFBcmVhQ2hhcnQgPSBmYUNoYXJ0QXJlYTtcbnZhciBmYUhvdXNlRmxhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1mbGFnJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTBkXCIsIFwiTTQ4MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlYxOTIgNTEyaDY0VjE5Mkg2MjRjOC44IDAgMTYtNy4yIDE2LTE2VjQ4YzAtOC44LTcuMi0xNi0xNi0xNkg1MTJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQxNiAxNTlMMjc2LjggMzkuN2MtMTItMTAuMy0yOS43LTEwLjMtNDEuNyAwbC0yMjQgMTkyQzEgMjQwLjQtMi43IDI1NC41IDIgMjY3LjFTMTguNiAyODggMzIgMjg4SDY0VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjQuN2wuMiAwaC0xVjE1OXpcIl1cbn07XG52YXIgZmFQZXJzb25DaXJjbGVNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tY2lyY2xlLW1pbnVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTQwXCIsIFwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyem0xMzYgMTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjI0IDBjMC04LjgtNy4yLTE2LTE2LTE2SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0OTZjOC44IDAgMTYtNy4yIDE2LTE2elwiXVxufTtcbnZhciBmYUJhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg2ODMsIFwiY2FuY2VsXCJdLCBcImYwNWVcIiwgXCJNMzY3LjIgNDEyLjVMOTkuNSAxNDQuOEM3Ny4xIDE3Ni4xIDY0IDIxNC41IDY0IDI1NmMwIDEwNiA4NiAxOTIgMTkyIDE5MmM0MS41IDAgNzkuOS0xMy4xIDExMS4yLTM1LjV6bTQ1LjMtNDUuM0M0MzQuOSAzMzUuOSA0NDggMjk3LjUgNDQ4IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MmMtNDEuNSAwLTc5LjkgMTMuMS0xMTEuMiAzNS41TDQxMi41IDM2Ny4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJdXG59O1xudmFyIGZhQ2FuY2VsID0gZmFCYW47XG52YXIgZmFDYW1lcmFSb3RhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtZXJhLXJvdGF0ZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTBkOFwiLCBcIk0yMTMuMSA2NC44TDIwMi43IDk2SDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRINDM3LjNMNDI2LjkgNjQuOEM0MjAuNCA0NS4yIDQwMi4xIDMyIDM4MS40IDMySDI1OC42Yy0yMC43IDAtMzkgMTMuMi00NS41IDMyLjh6TTQ0OCAyNTZjMCA4LjgtNy4yIDE2LTE2IDE2SDM1NS4zYy02LjIgMC0xMS4zLTUuMS0xMS4zLTExLjNjMC0zIDEuMi01LjkgMy4zLThMMzcxIDIyOWMtMTMuNi0xMy40LTMxLjktMjEtNTEtMjFjLTE5LjIgMC0zNy43IDcuNi01MS4zIDIxLjNMMjQ5IDI0OWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwxOS43LTE5LjdDMjU3LjQgMTcyLjcgMjg4IDE2MCAzMjAgMTYwYzMxLjggMCA2Mi40IDEyLjYgODUgMzVsMjMuNy0yMy43YzIuMS0yLjEgNS0zLjMgOC0zLjNjNi4yIDAgMTEuMyA1LjEgMTEuMyAxMS4zVjI1NnpNMTkyIDMyMGMwLTguOCA3LjItMTYgMTYtMTZoNzYuN2M2LjIgMCAxMS4zIDUuMSAxMS4zIDExLjNjMCAzLTEuMiA1LjktMy4zIDhMMjY5IDM0N2MxMy42IDEzLjQgMzEuOSAyMSA1MSAyMWMxOS4yIDAgMzcuNy03LjYgNTEuMy0yMS4zTDM5MSAzMjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0xOS43IDE5LjdDMzgyLjYgNDAzLjMgMzUyIDQxNiAzMjAgNDE2Yy0zMS44IDAtNjIuNC0xMi42LTg1LTM1bC0yMy43IDIzLjdjLTIuMSAyLjEtNSAzLjMtOCAzLjNjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuM1YzMjB6XCJdXG59O1xudmFyIGZhU3ByYXlDYW5TcGFya2xlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcHJheS1jYW4tc3BhcmtsZXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImFpci1mcmVzaGVuZXJcIl0sIFwiZjVkMFwiLCBcIk05NiAzMnY5NkgyMjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4QzExMC4zIDAgOTYgMTQuMyA5NiAzMnptMCAxMjhjLTUzIDAtOTYgNDMtOTYgOTZWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDI3MmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZjMC01My00My05Ni05Ni05Nkg5NnptNjQgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6TTM4NCA0OGMwLTEuNC0xLTMtMi4yLTMuNkwzNTIgMzIgMzM5LjYgMi4yQzMzOSAxIDMzNy40IDAgMzM2IDBzLTMgMS0zLjYgMi4yTDMyMCAzMiAyOTAuMiA0NC40QzI4OSA0NSAyODggNDYuNiAyODggNDhjMCAxLjQgMSAzIDIuMiAzLjZMMzIwIDY0bDEyLjQgMjkuOEMzMzMgOTUgMzM0LjYgOTYgMzM2IDk2czMtMSAzLjYtMi4yTDM1MiA2NGwyOS44LTEyLjRDMzgzIDUxIDM4NCA0OS40IDM4NCA0OHptNzYuNCA0NS44QzQ2MSA5NSA0NjIuNiA5NiA0NjQgOTZzMy0xIDMuNi0yLjJMNDgwIDY0bDI5LjgtMTIuNEM1MTEgNTEgNTEyIDQ5LjQgNTEyIDQ4YzAtMS40LTEtMy0yLjItMy42TDQ4MCAzMiA0NjcuNiAyLjJDNDY3IDEgNDY1LjQgMCA0NjQgMHMtMyAxLTMuNiAyLjJMNDQ4IDMyIDQxOC4yIDQ0LjRDNDE3IDQ1IDQxNiA0Ni42IDQxNiA0OGMwIDEuNCAxIDMgMi4yIDMuNkw0NDggNjRsMTIuNCAyOS44em03LjIgMTAwLjRjLS42LTEuMi0yLjItMi4yLTMuNi0yLjJzLTMgMS0zLjYgMi4yTDQ0OCAyMjRsLTI5LjggMTIuNGMtMS4yIC42LTIuMiAyLjItMi4yIDMuNmMwIDEuNCAxIDMgMi4yIDMuNkw0NDggMjU2bDEyLjQgMjkuOGMuNiAxLjIgMi4yIDIuMiAzLjYgMi4yczMtMSAzLjYtMi4yTDQ4MCAyNTZsMjkuOC0xMi40YzEuMi0uNiAyLjItMi4yIDIuMi0zLjZjMC0xLjQtMS0zLTIuMi0zLjZMNDgwIDIyNGwtMTIuNC0yOS44ek00NDggMTQ0YzAtMS40LTEtMy0yLjItMy42TDQxNiAxMjggNDAzLjYgOTguMkM0MDMgOTcgNDAxLjQgOTYgNDAwIDk2cy0zIDEtMy42IDIuMkwzODQgMTI4bC0yOS44IDEyLjRjLTEuMiAuNi0yLjIgMi4yLTIuMiAzLjZjMCAxLjQgMSAzIDIuMiAzLjZMMzg0IDE2MGwxMi40IDI5LjhjLjYgMS4yIDIuMiAyLjIgMy42IDIuMnMzLTEgMy42LTIuMkw0MTYgMTYwbDI5LjgtMTIuNGMxLjItLjYgMi4yLTIuMiAyLjItMy42elwiXVxufTtcbnZhciBmYUFpckZyZXNoZW5lciA9IGZhU3ByYXlDYW5TcGFya2xlcztcbnZhciBmYVN0YXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RhcicsXG4gIGljb246IFs1NzYsIDUxMiwgWzExMDg4LCA2MTQ0Nl0sIFwiZjAwNVwiLCBcIk0zMTYuOSAxOEMzMTEuNiA3IDMwMC40IDAgMjg4LjEgMHMtMjMuNCA3LTI4LjggMThMMTk1IDE1MC4zIDUxLjQgMTcxLjVjLTEyIDEuOC0yMiAxMC4yLTI1LjcgMjEuN3MtLjcgMjQuMiA3LjkgMzIuN0wxMzcuOCAzMjkgMTEzLjIgNDc0LjdjLTIgMTIgMyAyNC4yIDEyLjkgMzEuM3MyMyA4IDMzLjggMi4zbDEyOC4zLTY4LjUgMTI4LjMgNjguNWMxMC44IDUuNyAyMy45IDQuOSAzMy44LTIuM3MxNC45LTE5LjMgMTIuOS0zMS4zTDQzOC41IDMyOSA1NDIuNyAyMjUuOWM4LjYtOC41IDExLjctMjEuMiA3LjktMzIuN3MtMTMuNy0xOS45LTI1LjctMjEuN0wzODEuMiAxNTAuMyAzMTYuOSAxOHpcIl1cbn07XG52YXIgZmFSZXBlYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVwZWF0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MjU3XSwgXCJmMzYzXCIsIFwiTTAgMjI0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC01MyA0My05NiA5Ni05NkgzMjB2MzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45UzMyMCAxOS4xIDMyMCAzMlY2NEgxNjBDNzEuNiA2NCAwIDEzNS42IDAgMjI0em01MTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJjMCA1My00MyA5Ni05NiA5NkgxOTJWMzUyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlY0NDhIMzUyYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwelwiXVxufTtcbnZhciBmYUNyb3NzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3NzJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI4MzI3LCAxMDAxM10sIFwiZjY1NFwiLCBcIk0xNzYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2ODBINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDgwVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYyNTZoODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI1NlY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZ6XCJdXG59O1xudmFyIGZhQm94ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JveCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODIzMF0sIFwiZjQ2NlwiLCBcIk01MC43IDU4LjVMMCAxNjBIMjA4VjMySDkzLjdDNzUuNSAzMiA1OC45IDQyLjMgNTAuNyA1OC41ek0yNDAgMTYwSDQ0OEwzOTcuMyA1OC41QzM4OS4xIDQyLjMgMzcyLjUgMzIgMzU0LjMgMzJIMjQwVjE2MHptMjA4IDMySDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYxOTJ6XCJdXG59O1xudmFyIGZhVmVudXNNYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZlbnVzLW1hcnMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFs5ODkyXSwgXCJmMjI4XCIsIFwiTTE3NiAyODhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0ek0zNTIgMTc2YzAgODYuMy02Mi4xIDE1OC4xLTE0NCAxNzMuMVYzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjA4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMzJWMzQ5LjFDNjIuMSAzMzQuMSAwIDI2Mi4zIDAgMTc2QzAgNzguOCA3OC44IDAgMTc2IDBzMTc2IDc4LjggMTc2IDE3NnpNMjcxLjkgMzYwLjZjMTkuMy0xMC4xIDM2LjktMjMuMSA1Mi4xLTM4LjRjMjAgMTguNSA0Ni43IDI5LjggNzYuMSAyOS44YzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEyYy03LjIgMC0xNC4zIC43LTIxLjEgMmMtNC45LTIxLjUtMTMtNDEuNy0yNC02MC4yQzM2OS4zIDY2IDM4NC40IDY0IDQwMCA2NGMzNyAwIDcxLjQgMTEuNCA5OS44IDMxbDIwLjYtMjAuNkw0ODcgNDFjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJTNDk0LjMgMCA1MDQgMEg2MTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTM2YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEw1NDUgMTQwLjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtNTAuNSAwLTk2LTIxLjMtMTI4LjEtNTUuNHpcIl1cbn07XG52YXIgZmFBcnJvd1BvaW50ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctcG9pbnRlcicsXG4gIGljb246IFszMjAsIDUxMiwgW1wibW91c2UtcG9pbnRlclwiXSwgXCJmMjQ1XCIsIFwiTTAgNTUuMlY0MjZjMCAxMi4yIDkuOSAyMiAyMiAyMmM2LjMgMCAxMi40LTIuNyAxNi42LTcuNUwxMjEuMiAzNDZsNTguMSAxMTYuM2M3LjkgMTUuOCAyNy4xIDIyLjIgNDIuOSAxNC4zczIyLjItMjcuMSAxNC4zLTQyLjlMMTc5LjggMzIwSDI5Ny45YzEyLjIgMCAyMi4xLTkuOSAyMi4xLTIyLjFjMC02LjMtMi43LTEyLjMtNy40LTE2LjVMMzguNiAzNy45QzM0LjMgMzQuMSAyOC45IDMyIDIzLjIgMzJDMTAuNCAzMiAwIDQyLjQgMCA1NS4yelwiXVxufTtcbnZhciBmYU1vdXNlUG9pbnRlciA9IGZhQXJyb3dQb2ludGVyO1xudmFyIGZhTWF4aW1pemUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWF4aW1pemUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImV4cGFuZC1hcnJvd3MtYWx0XCJdLCBcImYzMWVcIiwgXCJNMjAwIDMySDU2QzQyLjcgMzIgMzIgNDIuNyAzMiA1NlYyMDBjMCA5LjcgNS44IDE4LjUgMTQuOCAyMi4yczE5LjMgMS43IDI2LjItNS4ybDQwLTQwIDc5IDc5LTc5IDc5TDczIDI5NWMtNi45LTYuOS0xNy4yLTguOS0yNi4yLTUuMlMzMiAzMDIuMyAzMiAzMTJWNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0SDIwMGM5LjcgMCAxOC41LTUuOCAyMi4yLTE0LjhzMS43LTE5LjMtNS4yLTI2LjJsLTQwLTQwIDc5LTc5IDc5IDc5LTQwIDQwYy02LjkgNi45LTguOSAxNy4yLTUuMiAyNi4yczEyLjUgMTQuOCAyMi4yIDE0LjhINDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjMxMmMwLTkuNy01LjgtMTguNS0xNC44LTIyLjJzLTE5LjMtMS43LTI2LjIgNS4ybC00MCA0MC03OS03OSA3OS03OSA0MCA0MGM2LjkgNi45IDE3LjIgOC45IDI2LjIgNS4yczE0LjgtMTIuNSAxNC44LTIyLjJWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMzEyYy05LjcgMC0xOC41IDUuOC0yMi4yIDE0LjhzLTEuNyAxOS4zIDUuMiAyNi4ybDQwIDQwLTc5IDc5LTc5LTc5IDQwLTQwYzYuOS02LjkgOC45LTE3LjIgNS4yLTI2LjJTMjA5LjcgMzIgMjAwIDMyelwiXVxufTtcbnZhciBmYUV4cGFuZEFycm93c0FsdCA9IGZhTWF4aW1pemU7XG52YXIgZmFDaGFyZ2luZ1N0YXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcmdpbmctc3RhdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjVlN1wiLCBcIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0VjQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzA0aDE2YzIyLjEgMCA0MCAxNy45IDQwIDQwdjMyYzAgMzkuOCAzMi4yIDcyIDcyIDcyczcyLTMyLjIgNzItNzJWMjUyLjNjMzIuNS0xMC4yIDU2LTQwLjUgNTYtNzYuM1YxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDU0NFY4MGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY0OEg0ODBWODBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2NDhINDMyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCAzNS44IDIzLjUgNjYuMSA1NiA3Ni4zVjM3NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNDRjMC00OC42LTM5LjQtODgtODgtODhIMzIwVjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2ek0yMTYuOSA4Mi43YzYgNCA4LjUgMTEuNSA2LjMgMTguM2wtMjUgNzQuOUgyNTZjNi43IDAgMTIuNyA0LjIgMTUgMTAuNHMuNSAxMy4zLTQuNiAxNy43bC0xMTIgOTZjLTUuNSA0LjctMTMuNCA1LjEtMTkuMyAxLjFzLTguNS0xMS41LTYuMy0xOC4zbDI1LTc0LjlIOTZjLTYuNyAwLTEyLjctNC4yLTE1LTEwLjRzLS41LTEzLjMgNC42LTE3LjdsMTEyLTk2YzUuNS00LjcgMTMuNC01LjEgMTkuMy0xLjF6XCJdXG59O1xudmFyIGZhU2hhcGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoYXBlcycsXG4gIGljb246IFs1MTIsIDUxMiwgW1widHJpYW5nbGUtY2lyY2xlLXNxdWFyZVwiXSwgXCJmNjFmXCIsIFwiTTMxNS40IDE1LjVDMzA5LjcgNS45IDI5OS4yIDAgMjg4IDBzLTIxLjcgNS45LTI3LjQgMTUuNWwtOTYgMTYwYy01LjkgOS45LTYuMSAyMi4yLS40IDMyLjJzMTYuMyAxNi4yIDI3LjggMTYuMkgzODRjMTEuNSAwIDIyLjItNi4yIDI3LjgtMTYuMnM1LjUtMjIuMy0uNC0zMi4ybC05Ni0xNjB6TTI4OCAzMTJWNDU2YzAgMjIuMSAxNy45IDQwIDQwIDQwSDQ3MmMyMi4xIDAgNDAtMTcuOSA0MC00MFYzMTJjMC0yMi4xLTE3LjktNDAtNDAtNDBIMzI4Yy0yMi4xIDAtNDAgMTcuOS00MCA0MHpNMTI4IDUxMmExMjggMTI4IDAgMSAwIDAtMjU2IDEyOCAxMjggMCAxIDAgMCAyNTZ6XCJdXG59O1xudmFyIGZhVHJpYW5nbGVDaXJjbGVTcXVhcmUgPSBmYVNoYXBlcztcbnZhciBmYVNodWZmbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2h1ZmZsZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODI1NiwgXCJyYW5kb21cIl0sIFwiZjA3NFwiLCBcIk00MDMuOCAzNC40YzEyLTUgMjUuNy0yLjIgMzQuOSA2LjlsNjQgNjRjNiA2IDkuNCAxNC4xIDkuNCAyMi42cy0zLjQgMTYuNi05LjQgMjIuNmwtNjQgNjRjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45cy0xOS44LTE2LjYtMTkuOC0yOS42VjE2MEgzNTJjLTEwLjEgMC0xOS42IDQuNy0yNS42IDEyLjhMMjg0IDIyOS4zIDI0NCAxNzZsMzEuMi00MS42QzI5My4zIDExMC4yIDMyMS44IDk2IDM1MiA5NmgzMlY2NGMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42ek0xNjQgMjgyLjdMMjA0IDMzNmwtMzEuMiA0MS42QzE1NC43IDQwMS44IDEyNi4yIDQxNiA5NiA0MTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZjMTAuMSAwIDE5LjYtNC43IDI1LjYtMTIuOEwxNjQgMjgyLjd6bTI3NC42IDE4OGMtOS4yIDkuMi0yMi45IDExLjktMzQuOSA2LjlzLTE5LjgtMTYuNi0xOS44LTI5LjZWNDE2SDM1MmMtMzAuMiAwLTU4LjctMTQuMi03Ni44LTM4LjRMMTIxLjYgMTcyLjhjLTYtOC4xLTE1LjUtMTIuOC0yNS42LTEyLjhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIOTZjMzAuMiAwIDU4LjcgMTQuMiA3Ni44IDM4LjRMMzI2LjQgMzM5LjJjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOGgzMlYzMjBjMC0xMi45IDcuOC0yNC42IDE5LjgtMjkuNnMyNS43LTIuMiAzNC45IDYuOWw2NCA2NGM2IDYgOS40IDE0LjEgOS40IDIyLjZzLTMuNCAxNi42LTkuNCAyMi42bC02NCA2NHpcIl1cbn07XG52YXIgZmFSYW5kb20gPSBmYVNodWZmbGU7XG52YXIgZmFQZXJzb25SdW5uaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1ydW5uaW5nJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3OTM5LCBcInJ1bm5pbmdcIl0sIFwiZjcwY1wiLCBcIk0zMjAgNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTI1LjcgMTc1LjVjOS45LTkuOSAyMy40LTE1LjUgMzcuNS0xNS41YzEuOSAwIDMuOCAuMSA1LjYgLjNMMTM3LjYgMjU0Yy05LjMgMjggMS43IDU4LjggMjYuOCA3NC41bDg2LjIgNTMuOS0yNS40IDg4LjhjLTQuOSAxNyA1IDM0LjcgMjIgMzkuNnMzNC43LTUgMzkuNi0yMmwyOC43LTEwMC40YzUuOS0yMC42LTIuNi00Mi42LTIwLjctNTMuOUwyMzggMjk5bDMwLjktODIuNCA1LjEgMTIuM0MyODkgMjY0LjcgMzIzLjkgMjg4IDM2Mi43IDI4OEgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzYyLjdjLTEyLjkgMC0yNC42LTcuOC0yOS41LTE5LjdsLTYuMy0xNWMtMTQuNi0zNS4xLTQ0LjEtNjEuOS04MC41LTczLjFsLTQ4LjctMTVjLTExLjEtMy40LTIyLjctNS4yLTM0LjQtNS4yYy0zMSAwLTYwLjggMTIuMy04Mi43IDM0LjNMNTcuNCAxNTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwyMy4xLTIzLjF6TTkxLjIgMzUySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDY5LjZjMTkgMCAzNi4yLTExLjIgNDMuOS0yOC41TDE1NyAzNjEuNmwtOS41LTZjLTE3LjUtMTAuOS0zMC41LTI2LjgtMzcuOS00NC45TDkxLjIgMzUyelwiXVxufTtcbnZhciBmYVJ1bm5pbmcgPSBmYVBlcnNvblJ1bm5pbmc7XG52YXIgZmFNb2JpbGVSZXRybyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb2JpbGUtcmV0cm8nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImU1MjdcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTY0IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04MCAzNTJhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yNCA1NmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem01Ni01NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTI0IDU2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTU2LTU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjQgNTZhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMTI4IDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDEyOHpcIl1cbn07XG52YXIgZmFHcmlwTGluZXNWZXJ0aWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmlwLWxpbmVzLXZlcnRpY2FsJyxcbiAgaWNvbjogWzE5MiwgNTEyLCBbXSwgXCJmN2E1XCIsIFwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjY0em0xMjggMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NHpcIl1cbn07XG52YXIgZmFTcGlkZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3BpZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4Mzc1XSwgXCJmNzE3XCIsIFwiTTE1OC40IDMyLjZjNC44LTEyLjQtMS40LTI2LjMtMTMuOC0zMXMtMjYuMyAxLjQtMzEgMTMuOEw4MS4xIDEwMGMtNy45IDIwLjctMyA0NC4xIDEyLjcgNTkuN2w1Ny40IDU3LjRMNzAuOCAxOTAuM2MtMi40LS44LTQuMy0yLjctNS4xLTUuMUw0Ni44IDEyOC40QzQyLjYgMTE1LjggMjkgMTA5IDE2LjQgMTEzLjJTLTMgMTMxIDEuMiAxNDMuNmwxOC45IDU2LjhjNS42IDE2LjcgMTguNyAyOS44IDM1LjQgMzUuNEwxMTYuMSAyNTYgNTUuNiAyNzYuMmMtMTYuNyA1LjYtMjkuOCAxOC43LTM1LjQgMzUuNEwxLjIgMzY4LjRDLTMgMzgxIDMuOCAzOTQuNiAxNi40IDM5OC44czI2LjItMi42IDMwLjQtMTUuMmwxOC45LTU2LjhjLjgtMi40IDIuNy00LjMgNS4xLTUuMWw4MC40LTI2LjhMOTMuNyAzNTIuM0M3OC4xIDM2OCA3My4xIDM5MS40IDgxLjEgNDEybDMyLjUgODQuNmM0LjggMTIuNCAxOC42IDE4LjUgMzEgMTMuOHMxOC41LTE4LjYgMTMuOC0zMWwtMzIuNS04NC42Yy0xLjEtMy0uNC02LjMgMS44LTguNUwxNjAgMzUzLjljMSA1Mi4xIDQzLjYgOTQuMSA5NiA5NC4xczk1LTQxLjkgOTYtOTQuMWwzMi4zIDMyLjNjMi4yIDIuMiAyLjkgNS42IDEuOCA4LjVsLTMyLjUgODQuNmMtNC44IDEyLjQgMS40IDI2LjMgMTMuOCAzMXMyNi4zLTEuNCAzMS0xMy44TDQzMC45IDQxMmM3LjktMjAuNyAzLTQ0LjEtMTIuNy01OS43bC01Ny40LTU3LjQgODAuNCAyNi44YzIuNCAuOCA0LjMgMi43IDUuMSA1LjFsMTguOSA1Ni44YzQuMiAxMi42IDE3LjggMTkuNCAzMC40IDE1LjJzMTkuNC0xNy44IDE1LjItMzAuNGwtMTguOS01Ni44Yy01LjYtMTYuNy0xOC43LTI5LjgtMzUuNC0zNS40TDM5NS45IDI1Nmw2MC41LTIwLjJjMTYuNy01LjYgMjkuOC0xOC43IDM1LjQtMzUuNGwxOC45LTU2LjhjNC4yLTEyLjYtMi42LTI2LjItMTUuMi0zMC40cy0yNi4yIDIuNi0zMC40IDE1LjJsLTE4LjkgNTYuOGMtLjggMi40LTIuNyA0LjMtNS4xIDUuMWwtODAuNCAyNi44IDU3LjQtNTcuNGMxNS42LTE1LjYgMjAuNi0zOSAxMi43LTU5LjdMMzk4LjQgMTUuNEMzOTMuNiAzIDM3OS44LTMuMiAzNjcuNCAxLjZzLTE4LjUgMTguNi0xMy44IDMxbDMyLjUgODQuNmMxLjEgMyAuNCA2LjMtMS44IDguNUwzMzYgMTc0LjFWMTYwYzAtMzEuOC0xOC42LTU5LjMtNDUuNS03Mi4yYy05LjEtNC40LTE4LjUgMy4zLTE4LjUgMTMuNFYxMTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTAxLjJjMC0xMC4xLTkuNC0xNy43LTE4LjUtMTMuNEMxOTQuNiAxMDAuNyAxNzYgMTI4LjIgMTc2IDE2MHYxNC4xbC00OC4zLTQ4LjNjLTIuMi0yLjItMi45LTUuNi0xLjgtOC41bDMyLjUtODQuNnpcIl1cbn07XG52YXIgZmFIYW5kc0JvdW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWJvdW5kJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGY5XCIsIFwiTTk2IDMyQzk2IDE0LjMgODEuNyAwIDY0IDBTMzIgMTQuMyAzMiAzMlY5NnY1OS4xIC43VjE5MnYyMS45YzAgMTQuMiA1LjEgMjcuOSAxNC4zIDM4LjdMMTMxLjYgMzUySDEyOGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgzMkgyODhoNjRINDgwaDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC0zLjZsODUuMy05OS41YzkuMi0xMC44IDE0LjMtMjQuNSAxNC4zLTM4LjdWMTkyIDE1NS44di0uN1Y5NiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY5NnY0OC44bC02OS4zIDkyLjRjLTUuNyA3LjYtMTYuMSA5LjYtMjQuMiA0LjhjLTkuNy01LjctMTIuMS0xOC43LTUuMS0yNy41TDQ3MyAxODBjMTAuOC0xMy41IDguOS0zMy4zLTQuNC00NC41cy0zMy05LjgtNDQuNSAzLjJsLTQ2LjcgNTIuNUMzNjEgMjA5LjcgMzUyIDIzMy40IDM1MiAyNTguMVYzMjB2MzJIMjg4VjMyMCAyNTguMWMwLTI0LjYtOS00OC40LTI1LjQtNjYuOGwtNDYuNy01Mi41Yy0xMS41LTEzLTMxLjMtMTQuNC00NC41LTMuMnMtMTUuMiAzMC45LTQuNCA0NC41bDI3LjYgMzQuNWM3IDguOCA0LjcgMjEuOC01LjEgMjcuNWMtOC4xIDQuOC0xOC42IDIuNy0yNC4yLTQuOEw5NiAxNDQuOFY5NiAzMnptNjQgNDQ4djMySDI4OFY0ODBoNjR2MzJINDgwVjQ4MGgzMmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0ODAgMzUyIDI4OCAxNjAgMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDMyelwiXVxufTtcbnZhciBmYUZpbGVJbnZvaWNlRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtaW52b2ljZS1kb2xsYXInLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY1NzFcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek02NCA4MGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnptMCA2NGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnptMTI4IDcyYzguOCAwIDE2IDcuMiAxNiAxNnYxNy4zYzguNSAxLjIgMTYuNyAzLjEgMjQuMSA1LjFjOC41IDIuMyAxMy42IDExIDExLjMgMTkuNnMtMTEgMTMuNi0xOS42IDExLjNjLTExLjEtMy0yMi01LjItMzIuMS01LjNjLTguNC0uMS0xNy40IDEuOC0yMy42IDUuNWMtNS43IDMuNC04LjEgNy4zLTguMSAxMi44YzAgMy43IDEuMyA2LjUgNy4zIDEwLjFjNi45IDQuMSAxNi42IDcuMSAyOS4yIDEwLjlsLjUgLjEgMCAwIDAgMGMxMS4zIDMuNCAyNS4zIDcuNiAzNi4zIDE0LjZjMTIuMSA3LjYgMjIuNCAxOS43IDIyLjcgMzguMmMuMyAxOS4zLTkuNiAzMy4zLTIyLjkgNDEuNmMtNy43IDQuOC0xNi40IDcuNi0yNS4xIDkuMVY0NDBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNDIyLjJjLTExLjItMi4xLTIxLjctNS43LTMwLjktOC45bDAgMGMtMi4xLS43LTQuMi0xLjQtNi4yLTIuMWMtOC40LTIuOC0xMi45LTExLjktMTAuMS0yMC4yczExLjktMTIuOSAyMC4yLTEwLjFjMi41IC44IDQuOCAxLjYgNy4xIDIuNGwwIDAgMCAwIDAgMGMxMy42IDQuNiAyNC42IDguNCAzNi4zIDguN2M5LjEgLjMgMTcuOS0xLjcgMjMuNy01LjNjNS4xLTMuMiA3LjktNy4zIDcuOC0xNGMtLjEtNC42LTEuOC03LjgtNy43LTExLjZjLTYuOC00LjMtMTYuNS03LjQtMjktMTEuMmwtMS42LS41IDAgMGMtMTEtMy4zLTI0LjMtNy4zLTM0LjgtMTMuN2MtMTItNy4yLTIyLjYtMTguOS0yMi43LTM3LjNjLS4xLTE5LjQgMTAuOC0zMi44IDIzLjgtNDAuNWM3LjUtNC40IDE1LjgtNy4yIDI0LjEtOC43VjIzMmMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhUGxhbmVDaXJjbGVFeGNsYW1hdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NTZcIiwgXCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhWFJheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd4LXJheScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ5N1wiLCBcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMjU2IDk2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJIMTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjQ4SDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgyNDB2NzAuNkwxODkuMSAzMDdjLTUuMi0yLTEwLjYtMy0xNi4yLTNoLTIuMWMtMjMuNiAwLTQyLjggMTkuMi00Mi44IDQyLjhjMCA5LjYgMy4yIDE4LjkgOS4xIDI2LjRsMTguMiAyMy4yYzkuNyAxMi40IDI0LjYgMTkuNiA0MC4zIDE5LjZIMzE2LjRjMTUuNyAwIDMwLjYtNy4yIDQwLjMtMTkuNmwxOC4yLTIzLjJjNS45LTcuNSA5LjEtMTYuOCA5LjEtMjYuNGMwLTIzLjYtMTkuMi00Mi44LTQyLjgtNDIuOEgzMzljLTUuNSAwLTExIDEtMTYuMiAzTDI3MiAzMjYuNlYyNTZIMzg0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDI3MlYxNzZoODBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjcyVjExMmMwLTguOC03LjItMTYtMTYtMTZ6TTIwOCAzNTJhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyem04MCAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwiXVxufTtcbnZhciBmYVNwZWxsQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3BlbGwtY2hlY2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY4OTFcIiwgXCJNMTEyIDBDOTkuMSAwIDg3LjQgNy44IDgyLjUgMTkuN2wtNjYuNyAxNjAtMTMuMyAzMmMtNi44IDE2LjMgLjkgMzUgMTcuMiA0MS44czM1LS45IDQxLjgtMTcuMkw2Ni43IDIyNGg5MC43bDUuMSAxMi4zYzYuOCAxNi4zIDI1LjUgMjQgNDEuOCAxNy4yczI0LTI1LjUgMTcuMi00MS44bC0xMy4zLTMyLTY2LjctMTYwQzEzNi42IDcuOCAxMjQuOSAwIDExMiAwem0xOC43IDE2MEg5My4zTDExMiAxMTUuMiAxMzAuNyAxNjB6TTI1NiAzMnY5NiA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MGM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTIzLjEtOS44LTQzLjgtMjUuNC01OC40YzYtMTEuMiA5LjQtMjQgOS40LTM3LjZjMC00NC4yLTM1LjgtODAtODAtODBIMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnptOTYgNjRIMzIwVjY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2em0tMzIgNjRoMzIgMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzIwVjE2MHpNNTY2LjYgMzEwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzUyIDQzNC43bC03My40LTczLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJ6XCJdXG59O1xudmFyIGZhU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MTVcIiwgXCJNNS4xIDkuMkMxMy4zLTEuMiAyOC40LTMuMSAzOC44IDUuMWw1OTIgNDY0YzEwLjQgOC4yIDEyLjMgMjMuMyA0LjEgMzMuN3MtMjMuMyAxMi4zLTMzLjcgNC4xTDkuMiA0Mi45Qy0xLjIgMzQuNy0zLjEgMTkuNiA1LjEgOS4yelwiXVxufTtcbnZhciBmYUNvbXB1dGVyTW91c2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tcHV0ZXItbW91c2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjg0MzMsIFwibW91c2VcIl0sIFwiZjhjY1wiLCBcIk0wIDE5MkgxNzZWMEgxNjBDNzEuNiAwIDAgNzEuNiAwIDE2MHYzMnptMCAzMlYzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoNjRjODguNCAwIDE2MC03MS42IDE2MC0xNjBWMjI0SDE5MiAwem0zODQtMzJWMTYwQzM4NCA3MS42IDMxMi40IDAgMjI0IDBIMjA4VjE5MkgzODR6XCJdXG59O1xudmFyIGZhTW91c2UgPSBmYUNvbXB1dGVyTW91c2U7XG52YXIgZmFBcnJvd1JpZ2h0VG9CcmFja2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXJpZ2h0LXRvLWJyYWNrZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInNpZ24taW5cIl0sIFwiZjA5MFwiLCBcIk0zNTIgOTZsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwYzUzIDAgOTYtNDMgOTYtOTZsMC0yNTZjMC01My00My05Ni05Ni05NmwtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnptLTkuNCAxODIuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMjQyLjcgMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyMTAuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4elwiXVxufTtcbnZhciBmYVNpZ25JbiA9IGZhQXJyb3dSaWdodFRvQnJhY2tldDtcbnZhciBmYVNob3BTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaG9wLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJzdG9yZS1hbHQtc2xhc2hcIl0sIFwiZTA3MFwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC01NC44LTQzVjIyNEg1MTJWMzc2TDM4NCAyNzUuN1YyMjRIMzIwdjEuNUwyNzcuMiAxOTJINjAzLjJjMjAuMyAwIDM2LjgtMTYuNSAzNi44LTM2LjhjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEgxMjEuN2MtMTYgMC0zMSA4LTM5LjkgMjEuNEw3NC4xIDMyLjggMzguOCA1LjF6TTM2LjggMTkyaDg1TDIxIDExMi41IDYuMiAxMzQuN2MtNCA2LjEtNi4yIDEzLjItNi4yIDIwLjRDMCAxNzUuNSAxNi41IDE5MiAzNi44IDE5MnpNMzIwIDM4NEgxMjhWMjI0SDY0VjM4NHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzk4LjVsLTY0LTUwLjRWMzg0elwiXVxufTtcbnZhciBmYVN0b3JlQWx0U2xhc2ggPSBmYVNob3BTbGFzaDtcbnZhciBmYVNlcnZlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZXJ2ZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyMzNcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NnY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTI4MCA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTQ4IDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjM1MmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptMjgwIDcyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNTYgMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG52YXIgZmFWaXJ1c0NvdmlkU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlydXMtY292aWQtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YTlcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w0NzIuMSAzNDQuN2MxMS40LTE5LjUgMTkuMS00MS40IDIyLjMtNjQuN0g1Mjh2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTZINDk0LjRjLTQuMi0zMC43LTE2LjMtNTguOC0zNC4xLTgyLjNMNDg0IDEyNS45bDExLjMgMTEuM2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNDcyLjcgNDYuN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOUw0NTAuMSA5MmwtMjMuOCAyMy44QzQwMi44IDk3LjkgMzc0LjcgODUuOCAzNDQgODEuNlY0OGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyODBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMTZWODEuNmMtMzAuNyA0LjItNTguOCAxNi4zLTgyLjMgMzQuMUwxODkuOSA5MmwxMS4zLTExLjNjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwxMzQuMSA3OS44IDM4LjggNS4xek0xNDkuMiAyMTMuNWMtMS41IDYtMi43IDEyLjItMy41IDE4LjVIMTEyVjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI4MGgzMy42YzQuMiAzMC43IDE2LjMgNTguOCAzNC4xIDgyLjNMMTU2IDM4Ni4xbC0xMS4zLTExLjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTYuNiA1Ni42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUwxODkuOSA0MjBsMjMuOC0yMy44YzIzLjUgMTcuOSA1MS43IDI5LjkgODIuMyAzNC4xVjQ2NEgyODBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzQ0VjQzMC40YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMkwxNDkuMiAyMTMuNXpcIl1cbn07XG52YXIgZmFTaG9wTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaG9wLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YTVcIiwgXCJNMzYuOCAxOTJINDQ5LjZjMjAuMi0xOS44IDQ3LjktMzIgNzguNC0zMmMzMC41IDAgNTguMSAxMi4yIDc4LjMgMzEuOWMxOC45LTEuNiAzMy43LTE3LjQgMzMuNy0zNi43YzAtNy4zLTIuMi0xNC40LTYuMi0yMC40TDU1OC4yIDIxLjRDNTQ5LjMgOCA1MzQuNCAwIDUxOC4zIDBIMTIxLjdjLTE2IDAtMzEgOC0zOS45IDIxLjRMNi4yIDEzNC43Yy00IDYuMS02LjIgMTMuMi02LjIgMjAuNEMwIDE3NS41IDE2LjUgMTkyIDM2LjggMTkyek0zODQgMjI0SDMyMFYzODRIMTI4VjIyNEg2NFYzODR2ODBjMCAyNi41IDIxLjUgNDggNDggNDhIMzM2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM4NCAzNTIgMjI0em0xNDQgMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NDhINDk2VjI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTgwIDMydjQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMlYyNzJjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6XCJdXG59O1xudmFyIGZhSG91cmdsYXNzU3RhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91cmdsYXNzLXN0YXJ0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJob3VyZ2xhc3MtMVwiXSwgXCJmMjUxXCIsIFwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRWNzVjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3djExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0IDMyMGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlY0MzdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFWNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwIDY0IDMyek0yODggNDM3djExSDk2VjQzN2MwLTI1LjUgMTAuMS00OS45IDI4LjEtNjcuOUwxOTIgMzAxLjNsNjcuOSA2Ny45YzE4IDE4IDI4LjEgNDIuNCAyOC4xIDY3Ljl6XCJdXG59O1xudmFyIGZhSG91cmdsYXNzMSA9IGZhSG91cmdsYXNzU3RhcnQ7XG52YXIgZmFCbGVuZGVyUGhvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmxlbmRlci1waG9uZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjZiNlwiLCBcIk0yMjQgMzUyTDE5Ni44IDUyLjNDMTk0LjIgMjQuMiAyMTYuMyAwIDI0NC42IDBINTM0LjFjMjEuMSAwIDM2LjQgMjAuMSAzMC45IDQwLjRMNTU4LjUgNjRINDAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDU0OS44bC0xNy41IDY0SDQwMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg1MjMuNmwtMTcuNSA2NEg0MDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoOTcuNUw0ODAgMzUySDIyNHptLTE2IDMySDQ5NmMyNi41IDAgNDggMjEuNSA0OCA0OHYzMmMwIDI2LjUtMjEuNSA0OC00OCA0OEgyMDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQzMmMwLTI2LjUgMjEuNS00OCA0OC00OHptMTQ0IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMTQ3LjUgMzAuN2MxMC44IDYuNyAxNS4zIDIxIDEwLjYgMzMuNGwtMjIgNTcuOGMtNC4yIDEwLjktMTQuNSAxNy42LTI1LjMgMTYuNGwtMzMuMy0zLjZjLTEzLjYgNDIuMi0xMy42IDg4LjQgMCAxMzAuN2wzMy4zLTMuNmMxMC45LTEuMiAyMS4yIDUuNSAyNS4zIDE2LjRsMjIgNTcuOGM0LjcgMTIuNCAuMiAyNi43LTEwLjYgMzMuNGwtNDQgMjcuMmMtOS43IDYtMjEuOSA0LjItMjkuOC00LjNDLTI0LjYgMjg2LTI0LjYgMTE0IDczLjcgNy44QzgxLjYtLjcgOTMuOC0yLjUgMTAzLjUgMy41bDQ0IDI3LjJ6XCJdXG59O1xudmFyIGZhQnVpbGRpbmdXaGVhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZy13aGVhdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRkYlwiLCBcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEgzMzZjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI0MFY0MzJjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh2ODBINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4ek04MCAyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjI0MGMwLTguOC03LjItMTYtMTYtMTZIODB6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnptMTEyLTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDI3MnpNNjQgMTEydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkg4MGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNzYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMTc2em04MCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ6bTM4NCA4MHYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MEg1NDRWMjcyYzAtNDQuMiAzNS44LTgwIDgwLTgwaDE2em0wIDEyOGMwIDQ0LjItMzUuOCA4MC04MCA4MEg1NDRWMzg0YzAtNDQuMiAzNS44LTgwIDgwLTgwaDE2djE2em0wIDExMmMwIDQ0LjItMzUuOCA4MC04MCA4MEg1NDRWNDk2YzAtNDQuMiAzNS44LTgwIDgwLTgwaDE2djE2ek01MTIgNDk2djE2SDQ5NmMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDE2aDE2YzQ0LjIgMCA4MCAzNS44IDgwIDgwem0wLTk2SDQ5NmMtNDQuMiAwLTgwLTM1LjgtODAtODBWMzA0aDE2YzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2em0wLTEyOHYxNkg0OTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjE5MmgxNmM0NC4yIDAgODAgMzUuOCA4MCA4MHpNNTI4IDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0VjE2MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY1NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHptOTYgNjR2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpNNDU2IDcyYzEzLjMgMCAyNCAxMC43IDI0IDI0djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0Vjk2YzAtMTMuMyAxMC43LTI0IDI0LTI0elwiXVxufTtcbnZhciBmYVBlcnNvbkJyZWFzdGZlZWRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWJyZWFzdGZlZWRpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImU1M2FcIiwgXCJNMjI0IDBhODAgODAgMCAxIDEgMCAxNjBBODAgODAgMCAxIDEgMjI0IDB6TTQzNi44IDM4Mi44TDM3My41IDQ2MmMtMTYuNiAyMC43LTQ2LjggMjQuMS02Ny41IDcuNWMtMTcuNi0xNC4xLTIyLjctMzguMS0xMy41LTU3LjdsLS44LS4xYy0zOC45LTUuNi03NC4zLTI1LjEtOTkuNy01NC44VjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY0OGMwIC44IDAgMS42IC4xIDIuNGwxMDEuNCA1MC43YzIzLjcgMTEuOSAzMy4zIDQwLjcgMjEuNSA2NC40cy00MC43IDMzLjMtNjQuNCAyMS41TDI3LjIgNDI3LjNjLTEuMS0uNS0yLjItMS4xLTMuMy0xLjdjLTQuOS0yLjgtOS4yLTYuNC0xMi42LTEwLjZjLTQuNi01LjQtNy44LTExLjctOS42LTE4LjRjLTMuMy0xMi0xLjktMjUuMiA0LjgtMzYuNmMuNi0xLjEgMS4zLTIuMiAyLTMuMkw3NS42IDI1Ni4xYzI2LjctNDAuMSA3MS43LTY0LjEgMTE5LjgtNjQuMWg3NS4yYzQ2LjUgMCA5MC4xIDIyLjUgMTE3LjIgNjAuM2w1MC43IDcwLjljMi4yIDMgNCA2LjEgNS41IDkuNGMyLjkgNi43IDQuMyAxMy44IDQgMjAuOGMtLjMgMTAuNi00LjIgMjEtMTEuMiAyOS40ek0zMjAgMzMyYTQ0IDQ0IDAgMSAwIC04OCAwIDQ0IDQ0IDAgMSAwIDg4IDB6XCJdXG59O1xudmFyIGZhUmlnaHRUb0JyYWNrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmlnaHQtdG8tYnJhY2tldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wic2lnbi1pbi1hbHRcIl0sIFwiZjJmNlwiLCBcIk0yMTcuOSAxMDUuOUwzNDAuNyAyMjguN2M3LjIgNy4yIDExLjMgMTcuMSAxMS4zIDI3LjNzLTQuMSAyMC4xLTExLjMgMjcuM0wyMTcuOSA0MDYuMWMtNi40IDYuNC0xNSA5LjktMjQgOS45Yy0xOC43IDAtMzMuOS0xNS4yLTMzLjktMzMuOWwwLTYyLjFMMzIgMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwIDAtNjIuMWMwLTE4LjcgMTUuMi0zMy45IDMzLjktMzMuOWM5IDAgMTcuNiAzLjYgMjQgOS45ek0zNTIgNDE2bDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0yNTZjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjQgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMjU2YzAgNTMtNDMgOTYtOTYgOTZsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhU2lnbkluQWx0ID0gZmFSaWdodFRvQnJhY2tldDtcbnZhciBmYVZlbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZlbnVzJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbOTc5Ml0sIFwiZjIyMVwiLCBcIk04MCAxNzZhMTEyIDExMiAwIDEgMSAyMjQgMEExMTIgMTEyIDAgMSAxIDgwIDE3NnpNMjI0IDM0OS4xYzgxLjktMTUgMTQ0LTg2LjggMTQ0LTE3My4xQzM2OCA3OC44IDI4OS4yIDAgMTkyIDBTMTYgNzguOCAxNiAxNzZjMCA4Ni4zIDYyLjEgMTU4LjEgMTQ0IDE3My4xVjM4NEgxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDhoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI0VjM0OS4xelwiXVxufTtcbnZhciBmYVBhc3Nwb3J0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bhc3Nwb3J0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNWFiXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xODMgMjc4LjhjLTI3LjktMTMuMi00OC40LTM5LjQtNTMuNy03MC44aDM5LjFjMS42IDMwLjQgNy43IDUzLjggMTQuNiA3MC44em00MS4zIDkuMmwtLjMgMC0uMyAwYy0yLjQtMy41LTUuNy04LjktOS4xLTE2LjVjLTYtMTMuNi0xMi40LTM0LjMtMTQuMi02My41aDQ3LjFjLTEuOCAyOS4yLTguMSA0OS45LTE0LjIgNjMuNWMtMy40IDcuNi02LjcgMTMtOS4xIDE2LjV6bTQwLjctOS4yYzYuOC0xNy4xIDEyLjktNDAuNCAxNC42LTcwLjhoMzkuMWMtNS4zIDMxLjQtMjUuOCA1Ny42LTUzLjcgNzAuOHpNMjc5LjYgMTc2Yy0xLjYtMzAuNC03LjctNTMuOC0xNC42LTcwLjhjMjcuOSAxMy4yIDQ4LjQgMzkuNCA1My43IDcwLjhIMjc5LjZ6TTIyMy43IDk2bC4zIDAgLjMgMGMyLjQgMy41IDUuNyA4LjkgOS4xIDE2LjVjNiAxMy42IDEyLjQgMzQuMyAxNC4yIDYzLjVIMjAwLjVjMS44LTI5LjIgOC4xLTQ5LjkgMTQuMi02My41YzMuNC03LjYgNi43LTEzIDkuMS0xNi41ek0xODMgMTA1LjJjLTYuOCAxNy4xLTEyLjkgNDAuNC0xNC42IDcwLjhIMTI5LjNjNS4zLTMxLjQgMjUuOC01Ny42IDUzLjctNzAuOHpNMzUyIDE5MkExMjggMTI4IDAgMSAwIDk2IDE5MmExMjggMTI4IDAgMSAwIDI1NiAwek0xMTIgMzg0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDMzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMTJ6XCJdXG59O1xudmFyIGZhSGVhcnRQdWxzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1wdWxzZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiaGVhcnRiZWF0XCJdLCBcImYyMWVcIiwgXCJNMjI4LjMgNDY5LjFMNDcuNiAzMDAuNGMtNC4yLTMuOS04LjItOC4xLTExLjktMTIuNGg4N2MyMi42IDAgNDMtMTMuNiA1MS43LTM0LjVsMTAuNS0yNS4yIDQ5LjMgMTA5LjVjMy44IDguNSAxMi4xIDE0IDIxLjQgMTQuMXMxNy44LTUgMjItMTMuM0wzMjAgMjUzLjdsMS43IDMuNGM5LjUgMTkgMjguOSAzMSA1MC4xIDMxSDQ3Ni4zYy0zLjcgNC4zLTcuNyA4LjUtMTEuOSAxMi40TDI4My43IDQ2OS4xYy03LjUgNy0xNy40IDEwLjktMjcuNyAxMC45cy0yMC4yLTMuOS0yNy43LTEwLjl6TTUwMy43IDI0MGgtMTMyYy0zIDAtNS44LTEuNy03LjItNC40bC0yMy4yLTQ2LjNjLTQuMS04LjEtMTIuNC0xMy4zLTIxLjUtMTMuM3MtMTcuNCA1LjEtMjEuNSAxMy4zbC00MS40IDgyLjhMMjA1LjkgMTU4LjJjLTMuOS04LjctMTIuNy0xNC4zLTIyLjItMTQuMXMtMTguMSA1LjktMjEuOCAxNC44bC0zMS44IDc2LjNjLTEuMiAzLTQuMiA0LjktNy40IDQuOUgxNmMtMi42IDAtNSAuNC03LjMgMS4xQzMgMjI1LjIgMCAyMDguMiAwIDE5MC45di01LjhjMC02OS45IDUwLjUtMTI5LjUgMTE5LjQtMTQxQzE2NSAzNi41IDIxMS40IDUxLjQgMjQ0IDg0bDEyIDEyIDEyLTEyYzMyLjYtMzIuNiA3OS00Ny41IDEyNC42LTM5LjlDNDYxLjUgNTUuNiA1MTIgMTE1LjIgNTEyIDE4NS4xdjUuOGMwIDE2LjktMi44IDMzLjUtOC4zIDQ5LjF6XCJdXG59O1xudmFyIGZhSGVhcnRiZWF0ID0gZmFIZWFydFB1bHNlO1xudmFyIGZhUGVvcGxlQ2FycnlCb3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVvcGxlLWNhcnJ5LWJveCcsXG4gIGljb246IFs2NDAsIDUxMiwgW1wicGVvcGxlLWNhcnJ5XCJdLCBcImY0Y2VcIiwgXCJNODAgNDhhNDggNDggMCAxIDEgOTYgMEE0OCA0OCAwIDEgMSA4MCA0OHptNjQgMTkzLjd2NjUuMWw1MSA1MWM3LjEgNy4xIDExLjggMTYuMiAxMy40IDI2LjFsMTUuMiA5MC45YzIuOSAxNy40LTguOSAzMy45LTI2LjMgMzYuOHMtMzMuOS04LjktMzYuOC0yNi4zbC0xNC4zLTg1LjlMNjYuOCAzMjBDNTQuOCAzMDggNDggMjkxLjcgNDggMjc0LjdWMTg2LjZjMC0zMi40IDI2LjItNTguNiA1OC42LTU4LjZjMjQuMSAwIDQ2LjUgMTIgNTkuOSAzMmw0Ny40IDcxLjEgMTAuMSA1VjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzODRjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NzYuMmwxMC4xLTVMNDczLjUgMTYwYzEzLjMtMjAgMzUuOC0zMiA1OS45LTMyYzMyLjQgMCA1OC42IDI2LjIgNTguNiA1OC42djg4LjFjMCAxNy02LjcgMzMuMy0xOC43IDQ1LjNsLTc5LjQgNzkuNC0xNC4zIDg1LjljLTIuOSAxNy40LTE5LjQgMjkuMi0zNi44IDI2LjNzLTI5LjItMTkuNC0yNi4zLTM2LjhsMTUuMi05MC45YzEuNi05LjkgNi4zLTE5IDEzLjQtMjYuMWw1MS01MVYyNDEuN2wtMTkgMjguNWMtNC42IDctMTEgMTIuNi0xOC41IDE2LjNsLTU5LjYgMjkuOGMtMi40IDEuMy00LjkgMi4yLTcuNiAyLjhjLTIuNiAuNi01LjMgLjktNy45IC44SDI1Ni43Yy0yLjUgLjEtNS0uMi03LjUtLjdjLTIuOS0uNi01LjYtMS42LTguMS0zbC01OS41LTI5LjhjLTcuNS0zLjctMTMuOC05LjQtMTguNS0xNi4zbC0xOS0yOC41ek0yLjMgNDY4LjFMNTAuMSAzNDguNmw0OS4yIDQ5LjItMzcuNiA5NGMtNi42IDE2LjQtMjUuMiAyNC40LTQxLjYgMTcuOFMtNC4zIDQ4NC41IDIuMyA0NjguMXpNNTEyIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em03Ny45IDM0OC42bDQ3LjggMTE5LjVjNi42IDE2LjQtMS40IDM1LTE3LjggNDEuNnMtMzUtMS40LTQxLjYtMTcuOGwtMzcuNi05NCA0OS4yLTQ5LjJ6XCJdXG59O1xudmFyIGZhUGVvcGxlQ2FycnkgPSBmYVBlb3BsZUNhcnJ5Qm94O1xudmFyIGZhVGVtcGVyYXR1cmVIaWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWhpZ2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3NjlcIiwgXCJNNDE2IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMCAxMjhBOTYgOTYgMCAxIDAgNDE2IDBhOTYgOTYgMCAxIDAgMCAxOTJ6TTk2IDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4VjI3Ni41YzAgMTcuMyA3LjEgMzEuOSAxNS4zIDQyLjVDMjE3LjggMzMyLjYgMjI0IDM0OS41IDIyNCAzNjhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0xOC41IDYuMi0zNS40IDE2LjctNDguOUM4OC45IDMwOC40IDk2IDI5My44IDk2IDI3Ni41VjExMnpNMTQ0IDBDODIuMSAwIDMyIDUwLjIgMzIgMTEyVjI3Ni41YzAgLjEtLjEgLjMtLjIgLjZjLS4yIC42LS44IDEuNi0xLjcgMi44QzExLjIgMzA0LjIgMCAzMzQuOCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzMuMi0xMS4yLTYzLjgtMzAuMS04OC4xYy0uOS0xLjItMS41LTIuMi0xLjctMi44Yy0uMS0uMy0uMi0uNS0uMi0uNlYxMTJDMjU2IDUwLjIgMjA1LjkgMCAxNDQgMHptMCA0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNy0zMi00NS4zVjExMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlYzMjIuN2MtMTguNiA2LjYtMzIgMjQuNC0zMiA0NS4zYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4elwiXVxufTtcbnZhciBmYU1pY3JvY2hpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtaWNyb2NoaXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyZGJcIiwgXCJNMTc2IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NEgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2NHY1NkgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2NHY1NkgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2NGMwIDM1LjMgMjguNyA2NCA2NCA2NHY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ0OGg1NnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ0OGg1NnY0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NGg0MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEg0NDhWMjgwaDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ0OFYxNzZoNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRINDQ4YzAtMzUuMy0yOC43LTY0LTY0LTY0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjY0SDI4MFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY2NEgxNzZWMjR6TTE2MCAxMjhIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTkyIDMySDE2MFYzNTJIMzUyVjE2MHpcIl1cbn07XG52YXIgZmFDcm93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjcm93bicsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODA4MV0sIFwiZjUyMVwiLCBcIk0zMDkgMTA2YzExLjQtNyAxOS0xOS43IDE5LTM0YzAtMjIuMS0xNy45LTQwLTQwLTQwcy00MCAxNy45LTQwIDQwYzAgMTQuNCA3LjYgMjcgMTkgMzRMMjA5LjcgMjIwLjZjLTkuMSAxOC4yLTMyLjcgMjMuNC00OC42IDEwLjdMNzIgMTYwYzUtNi43IDgtMTUgOC0yNGMwLTIyLjEtMTcuOS00MC00MC00MFMwIDExMy45IDAgMTM2czE3LjkgNDAgNDAgNDBjLjIgMCAuNSAwIC43IDBMODYuNCA0MjcuNGM1LjUgMzAuNCAzMiA1Mi42IDYzIDUyLjZINDI2LjZjMzAuOSAwIDU3LjQtMjIuMSA2My01Mi42TDUzNS4zIDE3NmMuMiAwIC41IDAgLjcgMGMyMi4xIDAgNDAtMTcuOSA0MC00MHMtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MGMwIDkgMyAxNy4zIDggMjRsLTg5LjEgNzEuM2MtMTUuOSAxMi43LTM5LjUgNy41LTQ4LjYtMTAuN0wzMDkgMTA2elwiXVxufTtcbnZhciBmYVdlaWdodEhhbmdpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2VpZ2h0LWhhbmdpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1Y2RcIiwgXCJNMjI0IDk2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTEyMi41IDMyYzMuNS0xMCA1LjUtMjAuOCA1LjUtMzJjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAxMS4yIDEuOSAyMiA1LjUgMzJIMTIwYy0yMiAwLTQxLjIgMTUtNDYuNiAzNi40bC03MiAyODhjLTMuNiAxNC4zLS40IDI5LjUgOC43IDQxLjJTMzMuMiA1MTIgNDggNTEySDQ2NGMxNC44IDAgMjguNy02LjggMzcuOC0xOC41czEyLjMtMjYuOCA4LjctNDEuMmwtNzItMjg4QzQzMy4yIDE0MyA0MTQgMTI4IDM5MiAxMjhIMzQ2LjV6XCJdXG59O1xudmFyIGZhWG1hcmtzTGluZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneG1hcmtzLWxpbmVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTlhXCIsIFwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6bTAgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnpNNyAxNjdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDU1IDU1TDcgMzExYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNTUtNTUgNTUgNTVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC01NS01NSA1NS01NWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01NSA1NUw0MSAxNjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwek0yNjUgMTY3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDU1IDU1LTU1IDU1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNTUtNTUgNTUgNTVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC01NS01NSA1NS01NWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01NSA1NS01NS01NXpNNDU1IDE2N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNTUgNTUtNTUgNTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1LTU1LTU1Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHpcIl1cbn07XG52YXIgZmFGaWxlUHJlc2NyaXB0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtcHJlc2NyaXB0aW9uJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTcyXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTA0IDE5Nmg3MmMzMy4xIDAgNjAgMjYuOSA2MCA2MGMwIDI1LjUtMTUuOSA0Ny4yLTM4LjMgNTUuOWw0MyA0MC4zIDMzLjgtMzFjOC4xLTcuNSAyMC44LTYuOSAyOC4zIDEuMnM2LjkgMjAuOC0xLjIgMjguM0wyNzAgMzc5LjdsMzEuNyAyOS43YzguMSA3LjYgOC41IDIwLjIgLjkgMjguM3MtMjAuMiA4LjUtMjguMyAuOWwtMzMuOS0zMS44LTM0LjkgMzJjLTguMSA3LjUtMjAuOCA2LjktMjguMy0xLjJzLTYuOS0yMC44IDEuMi0yOC4zbDMyLjYtMjkuOS02NC44LTYwLjhjLS45LS44LTEuNi0xLjctMi4zLTIuNkgxMjR2NDRjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjI5NiAyMTZjMC0xMSA5LTIwIDIwLTIwem03MiA4MGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBIMTI0djQwaDUyelwiXVxufTtcbnZhciBmYVdlaWdodFNjYWxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dlaWdodC1zY2FsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wid2VpZ2h0XCJdLCBcImY0OTZcIiwgXCJNMTI4IDE3NmExMjggMTI4IDAgMSAxIDI1NiAwIDEyOCAxMjggMCAxIDEgLTI1NiAwek0zOTEuOCA2NEMzNTkuNSAyNC45IDMxMC43IDAgMjU2IDBTMTUyLjUgMjQuOSAxMjAuMiA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgzOTEuOHpNMjk2IDIyNGMwLTEwLjYtNC4xLTIwLjItMTAuOS0yNy40bDMzLjYtNzguM2MzLjUtOC4xLS4zLTE3LjUtOC40LTIxcy0xNy41IC4zLTIxIDguNEwyNTUuNyAxODRjLTIyIC4xLTM5LjcgMTgtMzkuNyA0MGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwelwiXVxufTtcbnZhciBmYVdlaWdodCA9IGZhV2VpZ2h0U2NhbGU7XG52YXIgZmFVc2VyR3JvdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1ncm91cCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODEwMSwgXCJ1c2VyLWZyaWVuZHNcIl0sIFwiZjUwMFwiLCBcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek02MDkuMyA1MTJINDcxLjRjNS40LTkuNCA4LjYtMjAuMyA4LjYtMzJ2LThjMC02MC43LTI3LjEtMTE1LjItNjkuOC0xNTEuOGMyLjQtLjEgNC43LS4yIDcuMS0uMmg2MS40QzU2Ny44IDMyMCA2NDAgMzkyLjIgNjQwIDQ4MS4zYzAgMTctMTMuOCAzMC43LTMwLjcgMzAuN3pNNDMyIDI1NmMtMzEgMC01OS0xMi42LTc5LjMtMzIuOUMzNzIuNCAxOTYuNSAzODQgMTYzLjYgMzg0IDEyOGMwLTI2LjgtNi42LTUyLjEtMTguMy03NC4zQzM4NC4zIDQwLjEgNDA3LjIgMzIgNDMyIDMyYzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEycy01MC4xIDExMi0xMTIgMTEyelwiXVxufTtcbnZhciBmYVVzZXJGcmllbmRzID0gZmFVc2VyR3JvdXA7XG52YXIgZmFBcnJvd1VwQVogPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtYS16JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LWFscGhhLXVwXCJdLCBcImYxNWVcIiwgXCJNMTgzLjYgNDIuNEMxNzcuNSAzNS44IDE2OSAzMiAxNjAgMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDEyOCAxNDYuM1Y0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDYuM2wzMi40IDM1LjRjMTEuOSAxMyAzMi4yIDEzLjkgNDUuMiAyczEzLjktMzIuMiAyLTQ1LjJsLTg4LTk2ek0zMjAgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDUwLjdsLTczLjQgNzMuNGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDI5LjNsNzMuNC03My40YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44SDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTQxNiAzMmMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtNjQgMTI4LTE2IDMyYy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNsNy4yLTE0LjNoODguNGw3LjIgMTQuM2M3LjkgMTUuOCAyNy4xIDIyLjIgNDIuOSAxNC4zczIyLjItMjcuMSAxNC4zLTQyLjlsLTE2LTMyLTY0LTEyOEM0MzkuMiAzOC44IDQyOC4xIDMyIDQxNiAzMnpNMzk1LjggMTc2TDQxNiAxMzUuNiA0MzYuMiAxNzZIMzk1Ljh6XCJdXG59O1xudmFyIGZhU29ydEFscGhhVXAgPSBmYUFycm93VXBBWjtcbnZhciBmYUNoZXNzS25pZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzLWtuaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzk4MjJdLCBcImY0NDFcIiwgXCJNOTYgNDhMODIuNyA2MS4zQzcwLjcgNzMuMyA2NCA4OS41IDY0IDEwNi41VjIzOC45YzAgMTAuNyA1LjMgMjAuNyAxNC4yIDI2LjZsMTAuNiA3YzE0LjMgOS42IDMyLjcgMTAuNyA0OC4xIDNsMy4yLTEuNmMyLjYtMS4zIDUtMi44IDcuMy00LjVsNDkuNC0zN2M2LjYtNSAxNS43LTUgMjIuMyAwYzEwLjIgNy43IDkuOSAyMy4xLS43IDMwLjNMOTAuNCAzNTBDNzMuOSAzNjEuMyA2NCAzODAgNjQgNDAwSDM4NGwyOC45LTE1OWMyLjEtMTEuMyAzLjEtMjIuOCAzLjEtMzQuM1YxOTJDNDE2IDg2IDMzMCAwIDIyNCAwSDgzLjhDNzIuOSAwIDY0IDguOSA2NCAxOS44YzAgNy41IDQuMiAxNC4zIDEwLjkgMTcuN0w5NiA0OHptMjQgNjhhMjAgMjAgMCAxIDEgNDAgMCAyMCAyMCAwIDEgMSAtNDAgMHpNMjIuNiA0NzMuNGMtNC4yIDQuMi02LjYgMTAtNi42IDE2QzE2IDUwMS45IDI2LjEgNTEyIDM4LjYgNTEySDQwOS40YzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMzg0IDQzMkg2NEwyMi42IDQ3My40elwiXVxufTtcbnZhciBmYUZhY2VMYXVnaFNxdWludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWxhdWdoLXNxdWludCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGF1Z2gtc3F1aW50XCJdLCBcImY1OWJcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45em0zNi43LTE5OS40bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTI1LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJdXG59O1xudmFyIGZhTGF1Z2hTcXVpbnQgPSBmYUZhY2VMYXVnaFNxdWludDtcbnZhciBmYVdoZWVsY2hhaXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2hlZWxjaGFpcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE5M1wiLCBcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjAuNSAyNDcuMmMxMi40LTQuNyAxOC43LTE4LjUgMTQtMzAuOXMtMTguNS0xOC43LTMwLjktMTRDNDMuMSAyMjUuMSAwIDI4My41IDAgMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwYzYxLjIgMCAxMTQuMy0zNC4zIDE0MS4yLTg0LjdjNi4yLTExLjcgMS44LTI2LjItOS45LTMyLjVzLTI2LjItMS44LTMyLjUgOS45QzI0MCA0NDAgMjAyLjggNDY0IDE2MCA0NjRDOTguMSA0NjQgNDggNDEzLjkgNDggMzUyYzAtNDcuOSAzMC4xLTg4LjggNzIuNS0xMDQuOHpNMjU5LjggMTc2bC0xLjktOS43Yy00LjUtMjIuMy0yNC0zOC4zLTQ2LjgtMzguM2MtMzAuMSAwLTUyLjcgMjcuNS00Ni44IDU3bDIzLjEgMTE1LjVjNiAyOS45IDMyLjIgNTEuNCA2Mi44IDUxLjRoNS4xYy40IDAgLjggMCAxLjMgMGg5NC4xYzYuNyAwIDEyLjYgNC4xIDE1IDEwLjRMNDAyIDQ1OS4yYzYgMTYuMSAyMy44IDI0LjYgNDAuMSAxOS4xbDQ4LTE2YzE2LjgtNS42IDI1LjgtMjMuNyAyMC4yLTQwLjVzLTIzLjctMjUuOC00MC41LTIwLjJsLTE4LjcgNi4yLTI1LjUtNjhjLTExLjctMzEuMi00MS42LTUxLjktNzQuOS01MS45SDI4Mi4ybC05LjYtNDhIMzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI1OS44elwiXVxufTtcbnZhciBmYUNpcmNsZUFycm93VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWFycm93LXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcnJvdy1jaXJjbGUtdXBcIl0sIFwiZjBhYVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg1IDIzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC03MS03MVYzNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMTkzLjlsLTcxIDcxYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDIzOSAxMTljOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzg1IDIzMXpcIl1cbn07XG52YXIgZmFBcnJvd0NpcmNsZVVwID0gZmFDaXJjbGVBcnJvd1VwO1xudmFyIGZhVG9nZ2xlT24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9nZ2xlLW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjA1XCIsIFwiTTE5MiA2NEM4NiA2NCAwIDE1MCAwIDI1NlM4NiA0NDggMTkyIDQ0OEgzODRjMTA2IDAgMTkyLTg2IDE5Mi0xOTJzLTg2LTE5Mi0xOTItMTkySDE5MnptMTkyIDk2YTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwiXVxufTtcbnZhciBmYVBlcnNvbldhbGtpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXdhbGtpbmcnLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMjg2OTQsIFwid2Fsa2luZ1wiXSwgXCJmNTU0XCIsIFwiTTE2MCA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0xMjYuNSAxOTkuM2MtMSAuNC0xLjkgLjgtMi45IDEuMmwtOCAzLjVjLTE2LjQgNy4zLTI5IDIxLjItMzQuNyAzOC4ybC0yLjYgNy44Yy01LjYgMTYuOC0yMy43IDI1LjgtNDAuNSAyMC4ycy0yNS44LTIzLjctMjAuMi00MC41bDIuNi03LjhjMTEuNC0zNC4xIDM2LjYtNjEuOSA2OS40LTc2LjVsOC0zLjVjMjAuOC05LjIgNDMuMy0xNCA2Ni4xLTE0YzQ0LjYgMCA4NC44IDI2LjggMTAxLjkgNjcuOUwyODEgMjMyLjdsMjEuNCAxMC43YzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjlzLTI3LjEgMjIuMi00Mi45IDE0LjNMMjQ3IDI4Ny4zYy0xMC4zLTUuMi0xOC40LTEzLjgtMjIuOC0yNC41bC05LjYtMjMtMTkuMyA2NS41IDQ5LjUgNTRjNS40IDUuOSA5LjIgMTMgMTEuMiAyMC44bDIzIDkyLjFjNC4zIDE3LjEtNi4xIDM0LjUtMjMuMyAzOC44cy0zNC41LTYuMS0zOC44LTIzLjNsLTIyLTg4LjEtNzAuNy03Ny4xYy0xNC44LTE2LjEtMjAuMy0zOC42LTE0LjctNTkuN2wxNi45LTYzLjV6TTY4LjcgMzk4bDI1LTYyLjRjMi4xIDMgNC41IDUuOCA3IDguNmw0MC43IDQ0LjQtMTQuNSAzNi4yYy0yLjQgNi02IDExLjUtMTAuNiAxNi4xTDU0LjYgNTAyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDY4LjcgMzk4elwiXVxufTtcbnZhciBmYVdhbGtpbmcgPSBmYVBlcnNvbldhbGtpbmc7XG52YXIgZmFMID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2wnLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMDhdLCBcIjRjXCIsIFwiTTY0IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQxNkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYUZpcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlyZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODI5M10sIFwiZjA2ZFwiLCBcIk0xNTkuMyA1LjRjNy44LTcuMyAxOS45LTcuMiAyNy43IC4xYzI3LjYgMjUuOSA1My41IDUzLjggNzcuNyA4NGMxMS0xNC40IDIzLjUtMzAuMSAzNy00Mi45YzcuOS03LjQgMjAuMS03LjQgMjggLjFjMzQuNiAzMyA2My45IDc2LjYgODQuNSAxMThjMjAuMyA0MC44IDMzLjggODIuNSAzMy44IDExMS45QzQ0OCA0MDQuMiAzNDguMiA1MTIgMjI0IDUxMkM5OC40IDUxMiAwIDQwNC4xIDAgMjc2LjVjMC0zOC40IDE3LjgtODUuMyA0NS40LTEzMS43QzczLjMgOTcuNyAxMTIuNyA0OC42IDE1OS4zIDUuNHpNMjI1LjcgNDE2YzI1LjMgMCA0Ny43LTcgNjguOC0yMWM0Mi4xLTI5LjQgNTMuNC04OC4yIDI4LjEtMTM0LjRjLTQuNS05LTE2LTkuNi0yMi41LTJsLTI1LjIgMjkuM2MtNi42IDcuNi0xOC41IDcuNC0yNC43LS41Yy0xNi41LTIxLTQ2LTU4LjUtNjIuOC03OS44Yy02LjMtOC0xOC4zLTguMS0yNC43LS4xYy0zMy44IDQyLjUtNTAuOCA2OS4zLTUwLjggOTkuNEMxMTIgMzc1LjQgMTYyLjYgNDE2IDIyNS43IDQxNnpcIl1cbn07XG52YXIgZmFCZWRQdWxzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiZWQtcHVsc2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInByb2NlZHVyZXNcIl0sIFwiZjQ4N1wiLCBcIk00ODMuMiA5LjZMNTI0IDY0aDkyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDUxMmMtNy42IDAtMTQuNy0zLjYtMTkuMi05LjZMNDY4LjcgNzAuM2wtNDcgOTkuOWMtMy43IDcuOC0xMS4zIDEzLjEtMTkuOSAxMy43cy0xNi45LTMuNC0yMS43LTEwLjZMMzM5LjIgMTEySDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgzNTJjOCAwIDE1LjUgNCAyMCAxMC43bDI0LjQgMzYuNiA0NS45LTk3LjVDNDQ1LjkgNi4yIDQ1My4yIDEgNDYxLjYgLjFzMTYuNiAyLjcgMjEuNiA5LjV6TTMyMCAxNjBoMTIuN2wyMC43IDMxLjFjMTEuMiAxNi44IDMwLjYgMjYuMyA1MC43IDI0LjhzMzcuOS0xMy43IDQ2LjUtMzJMNDYxLjkgMTYwSDU0NGM1MyAwIDk2IDQzIDk2IDk2VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMzUyIDMyMCA2NHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NHMzMiAxNC4zIDMyIDMyVjM1MkgyODhWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tMTQ0IDBhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJdXG59O1xudmFyIGZhUHJvY2VkdXJlcyA9IGZhQmVkUHVsc2U7XG52YXIgZmFTaHV0dGxlU3BhY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2h1dHRsZS1zcGFjZScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wic3BhY2Utc2h1dHRsZVwiXSwgXCJmMTk3XCIsIFwiTTEzMCA0ODBjNDAuNiAwIDgwLjQtMTEgMTE1LjItMzEuOUwzNTIgMzg0bC0yMjQgMCAwIDk2aDJ6TTM1MiAxMjhMMjQ1LjIgNjMuOUMyMTAuNCA0MyAxNzAuNiAzMiAxMzAgMzJoLTJ2OTZsMjI0IDB6TTk2IDEyOGwwLTk2SDgwQzUzLjUgMzIgMzIgNTMuNSAzMiA4MHY0OGg4Yy0yMi4xIDAtNDAgMTcuOS00MCA0MHYxNlYzMjh2MTZjMCAyMi4xIDE3LjkgNDAgNDAgNDBIMzJ2NDhjMCAyNi41IDIxLjUgNDggNDggNDhIOTZsMC05Nmg4YzI2LjIgMCA0OS40LTEyLjYgNjQtMzJINDU2YzY5LjMgMCAxMzUtMjIuNyAxNzkuMi04MS42YzYuNC04LjUgNi40LTIwLjMgMC0yOC44QzU5MSAxODIuNyA1MjUuMyAxNjAgNDU2IDE2MEgxNjhjLTE0LjYtMTkuNC0zNy44LTMyLTY0LTMybC04IDB6TTUxMiAyNDMuNnYyNC45YzAgMTkuNi0xNS45IDM1LjYtMzUuNiAzNS42Yy0yLjUgMC00LjQtMi00LjQtNC40VjIxMi40YzAtMi41IDItNC40IDQuNC00LjRjMTkuNiAwIDM1LjYgMTUuOSAzNS42IDM1LjZ6XCJdXG59O1xudmFyIGZhU3BhY2VTaHV0dGxlID0gZmFTaHV0dGxlU3BhY2U7XG52YXIgZmFGYWNlTGF1Z2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1sYXVnaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGF1Z2hcIl0sIFwiZjU5OVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNOTYuOCAzMTQuMWMtMy44LTEzLjcgNy40LTI2LjEgMjEuNi0yNi4xSDM5My42YzE0LjIgMCAyNS41IDEyLjQgMjEuNiAyNi4xQzM5Ni4yIDM4MiAzMzIuMSA0MzIgMjU2IDQzMnMtMTQwLjItNTAtMTU5LjItMTE3Ljl6TTE0NC40IDE5MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYUxhdWdoID0gZmFGYWNlTGF1Z2g7XG52YXIgZmFGb2xkZXJPcGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MTk0LCAxMjg0NDksIDYxNzE3XSwgXCJmMDdjXCIsIFwiTTg4LjcgMjIzLjhMMCAzNzUuOFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxODEuNWMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN2wyNi41IDI2LjVjMTIgMTIgMjguMyAxOC43IDQ1LjMgMTguN0g0MTZjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJIMTQ0Yy0yMi44IDAtNDMuOCAxMi4xLTU1LjMgMzEuOHptMjcuNiAxNi4xQzEyMi4xIDIzMCAxMzIuNiAyMjQgMTQ0IDIyNEg1NDRjMTEuNSAwIDIyIDYuMSAyNy43IDE2LjFzNS43IDIyLjItLjEgMzIuMWwtMTEyIDE5MkM0NTMuOSA0NzQgNDQzLjQgNDgwIDQzMiA0ODBIMzJjLTExLjUgMC0yMi02LjEtMjcuNy0xNi4xcy01LjctMjIuMiAuMS0zMi4xbDExMi0xOTJ6XCJdXG59O1xudmFyIGZhSGVhcnRDaXJjbGVQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYXJ0LWNpcmNsZS1wbHVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTAwXCIsIFwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMTYtMjA4djQ4aDQ4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDQ0OHY0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzODRIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDQ4VjMwNGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwiXVxufTtcbnZhciBmYUNvZGVGb3JrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvZGUtZm9yaycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTEzYlwiLCBcIk04MCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em04MC0yNGMwIDMyLjgtMTkuNyA2MS00OCA3My4zVjE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzMDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTUzLjNDMzA3LjcgMTQxIDI4OCAxMTIuOCAyODggODBjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zVjE5MmMwIDUzLTQzIDk2LTk2IDk2SDI1NnY3MC43YzI4LjMgMTIuMyA0OCA0MC41IDQ4IDczLjNjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0zMi44IDE5LjctNjEgNDgtNzMuM1YyODhIMTQ0Yy01MyAwLTk2LTQzLTk2LTk2VjE1My4zQzE5LjcgMTQxIDAgMTEyLjggMCA4MEMwIDM1LjggMzUuOCAwIDgwIDBzODAgMzUuOCA4MCA4MHptMjA4IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNMjQ4IDQzMmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwelwiXVxufTtcbnZhciBmYUNpdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2l0eScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyNzk2MV0sIFwiZjY0ZlwiLCBcIk00ODAgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OFY5NkgyMjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWOTZIMTEyVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0UzY0IDEwLjcgNjQgMjRWOTZINDhDMjEuNSA5NiAwIDExNy41IDAgMTQ0djk2VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMDRoMzIgOTZINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0MGMwLTI2LjUtMjEuNS00OC00OC00OEg0ODBWNDh6bTk2IDMyMHYzMmMwIDguOC03LjIgMTYtMTYgMTZINTI4Yy04LjggMC0xNi03LjItMTYtMTZWMzY4YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6TTI0MCA0MTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMzY4YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2ek0xMjggNDAwYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjM2OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyek01NjAgMjU2YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINTI4Yy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmgzMnpNMjU2IDE3NnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6TTExMiAxNjBjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoMzJ6TTI1NiAzMDRjMCA4LjgtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyek0xMTIgMzIwSDgwYy04LjggMC0xNi03LjItMTYtMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2em0zMDQtNDh2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2ek00MDAgNjRjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlY4MGMwLTguOCA3LjItMTYgMTYtMTZoMzJ6bTE2IDExMnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJdXG59O1xudmFyIGZhTWljcm9waG9uZUxpbmVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pY3JvcGhvbmUtbGluZXMnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjc4OTcsIFwibWljcm9waG9uZS1hbHRcIl0sIFwiZjNjOVwiLCBcIk05NiA5NlYyNTZjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoODBWMTkySDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4MFYxMjhIMjA4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDgwYzAtNTMtNDMtOTYtOTYtOTZTOTYgNDMgOTYgOTZ6TTMyMCAyNDB2MTZjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhzLTEyOC01Ny4zLTEyOC0xMjhWMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNlY0MzAuNGM4NS44LTExLjcgMTUyLTg1LjMgMTUyLTE3NC40VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHYyNHpcIl1cbn07XG52YXIgZmFNaWNyb3Bob25lQWx0ID0gZmFNaWNyb3Bob25lTGluZXM7XG52YXIgZmFQZXBwZXJIb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVwcGVyLWhvdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzc5OF0sIFwiZjgxNlwiLCBcIk00MjguMyAzYzExLjYtNi40IDI2LjItMi4zIDMyLjYgOS4zbDQuOCA4LjdjMTkuMyAzNC43IDE5LjggNzUuNyAzLjQgMTEwQzQ5NS44IDE1OS42IDUxMiAxOTcuOSA1MTIgMjQwYzAgMTguNS0zLjEgMzYuMy04LjkgNTIuOGMtNi4xIDE3LjMtMjguNSAxNi4zLTM2LjgtLjFsLTExLjctMjMuNGMtNC4xLTguMS0xMi40LTEzLjMtMjEuNS0xMy4zSDM2MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTUyYzAtMTMuMy0xMC43LTI0LTI0LTI0bC0xNy4xIDBjLTIxLjMgMC0zMC0yMy45LTEwLjgtMzIuOUMzMDQuNyA4NS40IDMyNy43IDgwIDM1MiA4MGMyOC4zIDAgNTQuOCA3LjMgNzcuOCAyMC4yYzUuNS0xOC4yIDMuNy0zOC40LTYtNTUuOEw0MTkgMzUuN2MtNi40LTExLjYtMi4zLTI2LjIgOS4zLTMyLjZ6TTE3MS4yIDM0NS41TDI2NCAxNjBsNDAgMHY4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg3Ni4ybDIzLjkgNDcuOEMzNzIuMyA0NDMuOSAyNDQuMyA1MTIgMTAzLjIgNTEySDQ0LjRDMTkuOSA1MTIgMCA0OTIuMSAwIDQ2Ny42YzAtMjAuOCAxNC41LTM4LjggMzQuOC00My4zbDQ5LjgtMTEuMWMzNy42LTguNCA2OS41LTMzLjIgODYuNy02Ny43elwiXVxufTtcbnZhciBmYVVubG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bmxvY2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgyNzVdLCBcImYwOWNcIiwgXCJNMTQ0IDE0NGMwLTQ0LjIgMzUuOC04MCA4MC04MGMzMS45IDAgNTkuNCAxOC42IDcyLjMgNDUuN2M3LjYgMTYgMjYuNyAyMi44IDQyLjYgMTUuMnMyMi44LTI2LjcgMTUuMi00Mi42QzMzMSAzMy43IDI4MS41IDAgMjI0IDBDMTQ0LjUgMCA4MCA2NC41IDgwIDE0NHY0OEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTQ0VjE0NHpcIl1cbn07XG52YXIgZmFDb2xvblNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29sb24tc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTE0MFwiLCBcIk0yNTUgMzkuOGM0LjMtMTcuMS02LjEtMzQuNS0yMy4zLTM4LjhTMTk3LjIgNy4xIDE5MyAyNC4yTDE4MS45IDY4LjZDOTYuMSA4Ny44IDMyIDE2NC40IDMyIDI1NmMwIDU4LjEgMjUuOCAxMTAuMiA2Ni43IDE0NS40TDgxIDQ3Mi4yYy00LjMgMTcuMSA2LjEgMzQuNSAyMy4zIDM4LjhzMzQuNS02LjEgMzguOC0yMy4zbDEzLTUyLjFjOSAzLjQgMTguNCA2LjIgMjggOC4yTDE3NyA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMC40LTQxLjRjMzMuNC00LjQgNjQuMS0xNy40IDg5LjgtMzYuN2MxNC4xLTEwLjYgMTctMzAuNyA2LjQtNDQuOHMtMzAuNy0xNy00NC44LTYuNGMtMTAuMiA3LjctMjEuNyAxMy45LTM0IDE4LjNMMzIxIDE2MGM5LjQtLjMgMTguNS00LjcgMjQuNi0xMi44YzEwLjYtMTQuMSA3LjgtMzQuMi02LjQtNDQuOGMtMS4xLS44LTIuMi0xLjYtMy4zLTIuNEwzNTEgMzkuOGM0LjMtMTcuMS02LjEtMzQuNS0yMy4zLTM4LjhTMjkzLjIgNy4xIDI4OSAyNC4yTDI3Ny4yIDcxLjVjLTkuMy0yLjctMTguOC00LjYtMjguNi01LjlMMjU1IDM5Ljh6TTE2My4yIDE0My4zTDExNy4zIDMyNi44QzEwMy45IDMwNi41IDk2IDI4Mi4yIDk2IDI1NmMwLTQ4LjcgMjcuMi05MSA2Ny4yLTExMi43em04LjYgMjI5LjVsNjEuMS0yNDQuNmM5LjkgLjcgMTkuNSAyLjUgMjguNyA1LjNsLTYyIDI0OC4xYy05LjctMS45LTE5LTQuOC0yNy44LTguOHpcIl1cbn07XG52YXIgZmFIZWFkc2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRzZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1OTBcIiwgXCJNMjU2IDQ4QzE0MS4xIDQ4IDQ4IDE0MS4xIDQ4IDI1NnY0MGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNTZDMCAxMTQuNiAxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2VjQwMC4xYzAgNDguNi0zOS40IDg4LTg4LjEgODhMMzEzLjYgNDg4Yy04LjMgMTQuMy0yMy44IDI0LTQxLjYgMjRIMjQwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4aDMyYzE3LjggMCAzMy4zIDkuNyA0MS42IDI0bDExMC40IC4xYzIyLjEgMCA0MC0xNy45IDQwLTQwVjI1NmMwLTExNC45LTkzLjEtMjA4LTIwOC0yMDh6TTE0NCAyMDhoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE0NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjcyYzAtMzUuMyAyOC43LTY0IDY0LTY0em0yMjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NHY0OGMwIDM1LjMtMjguNyA2NC02NCA2NEgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI0MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgxNnpcIl1cbn07XG52YXIgZmFTdG9yZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3JlLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDcxXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTg2LjgtNjhWMzg0IDI1Mi42Yy00IDEtOCAxLjgtMTIuMyAyLjNsLS4xIDBjLTUuMyAuNy0xMC43IDEuMS0xNi4yIDEuMWMtMTIuNCAwLTI0LjMtMS45LTM1LjQtNS4zVjM1MC45TDMwMS4yIDIxMC43YzctNC40IDEzLjMtOS43IDE4LjgtMTUuN2MxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjIgMCA0OS4zLTExLjQgNjUuMi0yOWMxNiAxNy42IDM5LjEgMjkgNjUuMiAyOWM0LjEgMCA4LjEtLjMgMTIuMS0uOGM1NS41LTcuNCA4MS44LTcyLjUgNTIuMS0xMTkuNEw1MjIuMyAxMy4xQzUxNy4yIDUgNTA4LjEgMCA0OTguNCAwSDE0MS42Yy05LjcgMC0xOC44IDUtMjMuOSAxMy4xbC0yMi43IDM2TDM4LjggNS4xem03My40IDIxOC4xYzQgLjUgOC4xIC44IDEyLjEgLjhjMTEgMCAyMS40LTIgMzEtNS42TDQ4LjkgMTM0LjVjLTYuMSA0MC42IDE5LjUgODIuOCA2My4zIDg4Ljd6TTE2MCAzODRWMjUwLjZjLTExLjIgMy41LTIzLjIgNS40LTM1LjYgNS40Yy01LjUgMC0xMS0uNC0xNi4zLTEuMWwtLjEgMGMtNC4xLS42LTguMS0xLjMtMTItMi4zVjM4NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0ODBjMTIuOSAwIDI0LjgtMy44IDM0LjktMTAuM0wzNjUuNSAzODRIMTYwelwiXVxufTtcbnZhciBmYVJvYWRDaXJjbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2FkLWNpcmNsZS14bWFyaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU2NlwiLCBcIk0yMTMuMiAzMkgyODhWOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMmg3NC44YzI3LjEgMCA1MS4zIDE3LjEgNjAuMyA0Mi42bDQyLjcgMTIwLjZjLTEwLjktMi4xLTIyLjItMy4yLTMzLjgtMy4yYy01OS41IDAtMTEyLjEgMjkuNi0xNDQgNzQuOFYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJjMi4zIDAgNC42LS4zIDYuOC0uN2MtNC41IDE1LjUtNi44IDMxLjgtNi44IDQ4LjdjMCA1LjQgLjIgMTAuNyAuNyAxNmwtLjcgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRIODYuNkM1Ni41IDQ4MCAzMiA0NTUuNSAzMiA0MjUuNGMwLTYuMiAxLjEtMTIuNCAzLjEtMTguMkwxNTIuOSA3NC42QzE2MiA0OS4xIDE4Ni4xIDMyIDIxMy4yIDMyek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMjIuNiAxNDRsMzYuNy0zNi43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDk2IDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDczLjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0OTYgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw1MTguNiAzNjh6XCJdXG59O1xudmFyIGZhVXNlck1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItbWludXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDNcIiwgXCJNOTYgMTI4YTEyOCAxMjggMCAxIDEgMjU2IDBBMTI4IDEyOCAwIDEgMSA5NiAxMjh6TTAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDRoOTEuNEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM3pNNDcyIDIwMEg2MTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwiXVxufTtcbnZhciBmYU1hcnNTdHJva2VVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJzLXN0cm9rZS11cCcsXG4gIGljb246IFszMjAsIDUxMiwgWzk4OTYsIFwibWFycy1zdHJva2UtdlwiXSwgXCJmMjJhXCIsIFwiTTE0OC43IDQuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGw2NCA2NGM0LjYgNC42IDUuOSAxMS41IDMuNSAxNy40cy04LjMgOS45LTE0LjggOS45SDE4NHYyNGgzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxODR2MjRjMCAuNiAwIDEuMi0uMSAxLjhjNzcgMTEuNiAxMzYuMSA3OCAxMzYuMSAxNTguMmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQ0MC40IDAgMzUyYzAtODAuMiA1OS4xLTE0Ni43IDEzNi4xLTE1OC4yYzAtLjYtLjEtMS4yLS4xLTEuOFYxNjhIMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDMyVjk2SDk2Yy02LjUgMC0xMi4zLTMuOS0xNC44LTkuOXMtMS4xLTEyLjkgMy41LTE3LjRsNjQtNjR6TTI1NiAzNTJBOTYgOTYgMCAxIDAgNjQgMzUyYTk2IDk2IDAgMSAwIDE5MiAwelwiXVxufTtcbnZhciBmYU1hcnNTdHJva2VWID0gZmFNYXJzU3Ryb2tlVXA7XG52YXIgZmFDaGFtcGFnbmVHbGFzc2VzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoYW1wYWduZS1nbGFzc2VzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI5MzQ2LCBcImdsYXNzLWNoZWVyc1wiXSwgXCJmNzlmXCIsIFwiTTE1NS42IDE3LjNDMTYzIDMgMTc5LjktMy42IDE5NSAxLjlMMzIwIDQ3LjVsMTI1LTQ1LjZjMTUuMS01LjUgMzIgMS4xIDM5LjQgMTUuNGw3OC44IDE1Mi45YzI4LjggNTUuOCAxMC4zIDEyMi4zLTM4LjUgMTU2LjZMNTU2LjEgNDEzbDQxLTE1YzE2LjYtNiAzNSAyLjUgNDEgMTkuMXMtMi41IDM1LTE5LjEgNDFsLTcxLjEgMjUuOUw0NzYuOCA1MTBjLTE2LjYgNi4xLTM1LTIuNS00MS0xOS4xczIuNS0zNSAxOS4xLTQxbDQxLTE1LTMxLjMtODYuMmMtNTkuNCA1LjItMTE2LjItMzQtMTMwLTk1LjJMMzIwIDE4OC44bC0xNC42IDY0LjdjLTEzLjggNjEuMy03MC42IDEwMC40LTEzMCA5NS4ybC0zMS4zIDg2LjIgNDEgMTVjMTYuNiA2IDI1LjIgMjQuNCAxOS4xIDQxcy0yNC40IDI1LjItNDEgMTkuMUw5Mi4yIDQ4NC4xIDIxLjEgNDU4LjJjLTE2LjYtNi4xLTI1LjItMjQuNC0xOS4xLTQxczI0LjQtMjUuMiA0MS0xOS4xbDQxIDE1IDMxLjMtODYuMkM2Ni41IDI5Mi41IDQ4LjEgMjI2IDc2LjkgMTcwLjJMMTU1LjYgMTcuM3ptNDQgNTQuNGwtMjcuMiA1Mi44TDI2MS42IDE1N2wxMy4xLTU3LjlMMTk5LjYgNzEuN3ptMjQwLjkgMEwzNjUuNCA5OS4xIDM3OC41IDE1N2w4OS4yLTMyLjVMNDQwLjUgNzEuN3pcIl1cbn07XG52YXIgZmFHbGFzc0NoZWVycyA9IGZhQ2hhbXBhZ25lR2xhc3NlcztcbnZhciBmYUNsaXBib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbGlwYm9hcmQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgyMDNdLCBcImYzMjhcIiwgXCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMTIgMTkySDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhSG91c2VDaXJjbGVFeGNsYW1hdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MGFcIiwgXCJNMzIwLjcgMzUyYzguMS04OS43IDgzLjUtMTYwIDE3NS4zLTE2MGM4LjkgMCAxNy42IC43IDI2LjEgMS45TDMwOS41IDdjLTYtNS0xNC03LTIxLTdzLTE1IDEtMjIgOEwxMCAyMzEuNWMtNyA3LTEwIDE1LTEwIDI0YzAgMTggMTQgMzIuMSAzMiAzMi4xaDMydjY5LjdjLS4xIC45LS4xIDEuOC0uMSAyLjhWNDcyYzAgMjIuMSAxNy45IDQwIDQwIDQwaDE2YzEuMiAwIDIuNC0uMSAzLjYtLjJjMS41IC4xIDMgLjIgNC41IC4ySDE2MGgyNGMyMi4xIDAgNDAtMTcuOSA0MC00MFY0NDggMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0bC43IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhRmlsZUFycm93VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1hcnJvdy11cCcsXG4gIGljb246IFszODQsIDUxMiwgW1wiZmlsZS11cGxvYWRcIl0sIFwiZjU3NFwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTIxNiA0MDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzA1LjlsLTMxIDMxYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDcyLTcyYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDcyIDcyYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTMxLTMxVjQwOHpcIl1cbn07XG52YXIgZmFGaWxlVXBsb2FkID0gZmFGaWxlQXJyb3dVcDtcbnZhciBmYVdpZmkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2lmaScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wid2lmaS0zXCIsIFwid2lmaS1zdHJvbmdcIl0sIFwiZjFlYlwiLCBcIk01NC4yIDIwMi45QzEyMy4yIDEzNi43IDIxNi44IDk2IDMyMCA5NnMxOTYuOCA0MC43IDI2NS44IDEwNi45YzEyLjggMTIuMiAzMyAxMS44IDQ1LjItLjlzMTEuOC0zMy0uOS00NS4yQzU0OS43IDc5LjUgNDQwLjQgMzIgMzIwIDMyUzkwLjMgNzkuNSA5LjggMTU2LjdDLTIuOSAxNjktMy4zIDE4OS4yIDguOSAyMDJzMzIuNSAxMy4yIDQ1LjIgLjl6TTMyMCAyNTZjNTYuOCAwIDEwOC42IDIxLjEgMTQ4LjIgNTZjMTMuMyAxMS43IDMzLjUgMTAuNCA0NS4yLTIuOHMxMC40LTMzLjUtMi44LTQ1LjJDNDU5LjggMjE5LjIgMzkzIDE5MiAzMjAgMTkycy0xMzkuOCAyNy4yLTE5MC41IDcyYy0xMy4zIDExLjctMTQuNSAzMS45LTIuOCA0NS4yczMxLjkgMTQuNSA0NS4yIDIuOGMzOS41LTM0LjkgOTEuMy01NiAxNDguMi01NnptNjQgMTYwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIl1cbn07XG52YXIgZmFXaWZpMyA9IGZhV2lmaTtcbnZhciBmYVdpZmlTdHJvbmcgPSBmYVdpZmk7XG52YXIgZmFCYXRoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhdGgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg3MDUsIFwiYmF0aHR1YlwiXSwgXCJmMmNkXCIsIFwiTTk2IDc3LjNjMC03LjMgNS45LTEzLjMgMTMuMy0xMy4zYzMuNSAwIDYuOSAxLjQgOS40IDMuOWwxNC45IDE0LjlDMTMwIDkxLjggMTI4IDEwMS43IDEyOCAxMTJjMCAxOS45IDcuMiAzOCAxOS4yIDUyYy01LjMgOS4yLTQgMjEuMSAzLjggMjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMjg5IDg5YzkuNC05LjQgOS40LTI0LjYgMC0zMy45Yy03LjktNy45LTE5LjgtOS4xLTI5LTMuOEMyNDYgMzkuMiAyMjcuOSAzMiAyMDggMzJjLTEwLjMgMC0yMC4yIDItMjkuMiA1LjVMMTYzLjkgMjIuNkMxNDkuNCA4LjEgMTI5LjcgMCAxMDkuMyAwQzY2LjYgMCAzMiAzNC42IDMyIDc3LjNWMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg5NlY3Ny4zek0zMiAzNTJ2MTZjMCAyOC40IDEyLjQgNTQgMzIgNzEuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NjRIMzg0djE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDM5LjZjMTkuNi0xNy42IDMyLTQzLjEgMzItNzEuNlYzNTJIMzJ6XCJdXG59O1xudmFyIGZhQmF0aHR1YiA9IGZhQmF0aDtcbnZhciBmYVVuZGVybGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bmRlcmxpbmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwY2RcIiwgXCJNMTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4VjIyNGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2Vjk2SDMwNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRWMjI0YzAgODguNC03MS42IDE2MC0xNjAgMTYwcy0xNjAtNzEuNi0xNjAtMTYwVjk2SDQ4QzMwLjMgOTYgMTYgODEuNyAxNiA2NHpNMCA0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIl1cbn07XG52YXIgZmFVc2VyUGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItcGVuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJ1c2VyLWVkaXRcIl0sIFwiZjRmZlwiLCBcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTQ1LjcgNDhDNzkuOCAzMDQgMCAzODMuOCAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJIMzIyLjhjLTMuMS04LjgtMy43LTE4LjQtMS40LTI3LjhsMTUtNjAuMWMyLjgtMTEuMyA4LjYtMjEuNSAxNi44LTI5LjdsNDAuMy00MC4zYy0zMi4xLTMxLTc1LjctNTAuMS0xMjMuOS01MC4xSDE3OC4zem00MzUuNS02OC4zYy0xNS42LTE1LjYtNDAuOS0xNS42LTU2LjYgMGwtMjkuNCAyOS40IDcxIDcxIDI5LjQtMjkuNGMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMTQuNC0xNC40ek0zNzUuOSA0MTdjLTQuMSA0LjEtNyA5LjItOC40IDE0LjlsLTE1IDYwLjFjLTEuNCA1LjUgLjIgMTEuMiA0LjIgMTUuMnM5LjcgNS42IDE1LjIgNC4ybDYwLjEtMTVjNS42LTEuNCAxMC44LTQuMyAxNC45LTguNEw1NzYuMSAzNTguN2wtNzEtNzFMMzc1LjkgNDE3elwiXVxufTtcbnZhciBmYVVzZXJFZGl0ID0gZmFVc2VyUGVuO1xudmFyIGZhU2lnbmF0dXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpZ25hdHVyZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjViN1wiLCBcIk0xOTIgMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2Ny44YzAgMjcuNy0yLjQgNTUuMy03LjEgODIuNWwtODQuNCAyNS4zYy00MC42IDEyLjItNjguNCA0OS42LTY4LjQgOTJ2NzEuOWMwIDQwIDMyLjUgNzIuNSA3Mi41IDcyLjVjMjYgMCA1MC0xMy45IDYyLjktMzYuNWwxMy45LTI0LjNjMjYuOC00NyA0Ni41LTk3LjcgNTguNC0xNTAuNWw5NC40LTI4LjMtMTIuNSAzNy41Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjAuNGwxOC01My45YzMuOC0xMS4zIC45LTIzLjgtNy40LTMyLjRzLTIwLjctMTEuOC0zMi4yLTguNEwzMTYuNCAxOTguMWMyLjQtMjAuNyAzLjYtNDEuNCAzLjYtNjIuM1YxMjhjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxMjh6bS05LjIgMTc3bDQ5LTE0LjdjLTEwLjQgMzMuOC0yNC41IDY2LjQtNDIuMSA5Ny4ybC0xMy45IDI0LjNjLTEuNSAyLjYtNC4zIDQuMy03LjQgNC4zYy00LjcgMC04LjUtMy44LTguNS04LjVWMzM1LjZjMC0xNC4xIDkuMy0yNi42IDIyLjgtMzAuN3pNMjQgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDY0LjNjLS4yLTIuOC0uMy01LjYtLjMtOC41VjM2OEgyNHptNTkyIDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDMwNS45Yy02LjcgMTYuMy0xNC4yIDMyLjMtMjIuMyA0OEg2MTZ6XCJdXG59O1xudmFyIGZhU3Ryb29wd2FmZWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Ryb29wd2FmZWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NTFcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0zMTIuNiA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgOTcuNiAyMjIuMSA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDMzLjkgMzMuOS00NS4zIDQ1LjMtNTYuNi01Ni42Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDU2LjYgNTYuNi00NS4zIDQ1LjNMODYuMyAxOTkuNGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw5Ny42IDI1NiA2My43IDI4OS45Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsMzMuOS0zMy45IDQ1LjMgNDUuMy01Ni42IDU2LjZjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni42LTU2LjYgNDUuMyA0NS4zLTMzLjkgMzMuOWMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDI1NiA0MTQuNGwzMy45IDMzLjljNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC0zMy45LTMzLjkgNDUuMy00NS4zIDU2LjYgNTYuNmM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU2LjYtNTYuNiA0NS4zLTQ1LjMgMzMuOSAzMy45YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0MTQuNCAyNTZsMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTMzLjkgMzMuOS00NS4zLTQ1LjMgNTYuNi01Ni42YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTU2LjYgNTYuNi00NS4zLTQ1LjMgMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42ek0xNDIuOSAyNTZsNDUuMy00NS4zTDIzMy40IDI1NmwtNDUuMyA0NS4zTDE0Mi45IDI1NnptNjcuOSA2Ny45TDI1NiAyNzguNmw0NS4zIDQ1LjNMMjU2IDM2OS4xbC00NS4zLTQ1LjN6TTI3OC42IDI1Nmw0NS4zLTQ1LjNMMzY5LjEgMjU2bC00NS4zIDQ1LjNMMjc4LjYgMjU2em0yMi42LTY3LjlMMjU2IDIzMy40bC00NS4zLTQ1LjNMMjU2IDE0Mi45bDQ1LjMgNDUuM3pcIl1cbn07XG52YXIgZmFCb2xkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbGQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYwMzJcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg4MCA5NiAyMjRjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhjMCAzMS4zLTExLjMgNjAuMS0zMCA4Mi4zYzM3LjEgMjIuNCA2MiA2My4xIDYyIDEwOS43YzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4SDk2IDgwIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4VjI1NiA5NkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0ek0yMjQgMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0SDExMlYyMjRIMjI0ek0xMTIgMjg4VjQxNkgyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRIMjI0IDExMnpcIl1cbn07XG52YXIgZmFBbmNob3JMb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuY2hvci1sb2NrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGFkXCIsIFwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDMyVjQ0OEgyMDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTdWMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwaDgwIDgwYzggMCAxNS45LS42IDIzLjYtMS43Yy00LjgtOS03LjYtMTkuMy03LjYtMzAuM1Y0NDYuN2MtNS4yIC45LTEwLjUgMS4zLTE2IDEuM0gzMjBWMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xek01MjggMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQ5NlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwiXVxufTtcbnZhciBmYUJ1aWxkaW5nTmdvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nLW5nbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRkN1wiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0xNjggNjRoNDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTg0djY0aDE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djI0YzAgMTMuMy0xMC43IDI0LTI0IDI0SDE3NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWODBjMC04LjggNy4yLTE2IDE2LTE2ek0zMDQgOTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZ6bS00OCAxNmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjExMnpNNjEuMyA3MS4xbDM0LjcgNTJWODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40TDY0IDEzMi44VjE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY4MGMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6XCJdXG59O1xudmFyIGZhTWFuYXRTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hbmF0LXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxZDVcIiwgXCJNMTkyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY5OC43QzY5LjIgMTEzLjkgMCAxOTIuOSAwIDI4OFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhjMC01OS42IDQwLjgtMTA5LjggOTYtMTI0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2NGM1NS4yIDE0LjIgOTYgNjQuMyA5NiAxMjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4YzAtOTUuMS02OS4yLTE3NC4xLTE2MC0xODkuM1Y2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFOb3RFcXVhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdub3QtZXF1YWwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1M2VcIiwgXCJNMzY5LjggMzcuNGMxNC43IDkuOCAxOC43IDI5LjcgOC45IDQ0LjRMMzM3LjEgMTQ0SDQwMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyOTQuNWwtNjQgOTZINDAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE4Ny44bC02NS4yIDk3LjdjLTkuOCAxNC43LTI5LjcgMTguNy00NC40IDguOXMtMTguNy0yOS43LTguOS00NC40TDExMC45IDM2OEg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxNTMuNWw2NC05Nkg0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNjAuMmw2NS4yLTk3LjdjOS44LTE0LjcgMjkuNy0xOC43IDQ0LjQtOC45elwiXVxufTtcbnZhciBmYUJvcmRlclRvcExlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9yZGVyLXRvcC1sZWZ0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJib3JkZXItc3R5bGVcIl0sIFwiZjg1M1wiLCBcIk0wIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzM2YzAtOC44IDcuMi0xNiAxNi0xNmwzMzYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw4MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMkwwIDQ0OHptMTYwIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTkyIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptLTk2IDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTkyIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDE2IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTAgMzJhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0em0wLTEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhQm9yZGVyU3R5bGUgPSBmYUJvcmRlclRvcExlZnQ7XG52YXIgZmFNYXBMb2NhdGlvbkRvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXAtbG9jYXRpb24tZG90JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJtYXAtbWFya2VkLWFsdFwiXSwgXCJmNWEwXCIsIFwiTTQwOCAxMjBjMCA1NC42LTczLjEgMTUxLjktMTA1LjIgMTkyYy03LjcgOS42LTIyIDkuNi0yOS42IDBDMjQxLjEgMjcxLjkgMTY4IDE3NC42IDE2OCAxMjBDMTY4IDUzLjcgMjIxLjcgMCAyODggMHMxMjAgNTMuNyAxMjAgMTIwem04IDgwLjRjMy41LTYuOSA2LjctMTMuOCA5LjYtMjAuNmMuNS0xLjIgMS0yLjUgMS41LTMuN2wxMTYtNDYuNEM1NTguOSAxMjMuNCA1NzYgMTM1IDU3NiAxNTJWNDIyLjhjMCA5LjgtNiAxOC42LTE1LjEgMjIuM0w0MTYgNTAzVjIwMC40ek0xMzcuNiAxMzguM2MyLjQgMTQuMSA3LjIgMjguMyAxMi44IDQxLjVjMi45IDYuOCA2LjEgMTMuNyA5LjYgMjAuNlY0NTEuOEwzMi45IDUwMi43QzE3LjEgNTA5IDAgNDk3LjQgMCA0ODAuNFYyMDkuNmMwLTkuOCA2LTE4LjYgMTUuMS0yMi4zbDEyMi42LTQ5ek0zMjcuOCAzMzJjMTMuOS0xNy40IDM1LjctNDUuNyA1Ni4yLTc3VjUwNC4zTDE5MiA0NDkuNFYyNTVjMjAuNSAzMS4zIDQyLjMgNTkuNiA1Ni4yIDc3YzIwLjUgMjUuNiA1OS4xIDI1LjYgNzkuNiAwek0yODggMTUyYTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpcIl1cbn07XG52YXIgZmFNYXBNYXJrZWRBbHQgPSBmYU1hcExvY2F0aW9uRG90O1xudmFyIGZhSmVkaSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdqZWRpJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNjY5XCIsIFwiTTI0NiAzMTUuN2wtMjEuMi0zMS45Yy0yLjEtMy4yLTEuNy03LjQgMS0xMC4xczYuOS0zLjEgMTAuMS0xbDI5LjUgMTkuN2MyLjEgMS40IDQuOSAwIDUtMi42TDI3OS43IDhjLjEtNC41IDMuOC04IDguMy04czguMSAzLjUgOC4zIDhsOS40IDI4MS45Yy4xIDIuNSAyLjkgMy45IDUgMi42bDI5LjUtMTkuN2MzLjItMi4xIDcuNC0xLjcgMTAuMSAxczMuMSA2LjkgMSAxMC4xTDMzMCAzMTUuN2MtMS4zIDEuOS0uMiA0LjUgMiA0LjlsMzcuNiA3LjVjMy43IC43IDYuNCA0IDYuNCA3LjhzLTIuNyA3LjEtNi40IDcuOEwzMzIgMzUxLjRjLTIuMiAuNC0zLjMgMy0yIDQuOWwyMS4yIDMxLjljMi4xIDMuMiAxLjcgNy40LTEgMTAuMXMtNi45IDMuMS0xMC4xIDFsLTI2LjMtMTcuNmMtMi4yLTEuNC01LjEgLjItNSAyLjhsMi4xIDYxLjVDMzcwLjYgNDM1LjIgNDE2IDM4Mi45IDQxNiAzMjBjMC0zNy0xNS43LTcwLjQtNDAuOC05My43Yy03LTYuNS02LjUtMTguNiAxLTI0LjRDNDEwLjEgMTc1LjUgNDMyIDEzNC4zIDQzMiA4OGMwLTE2LjgtMi45LTMzLTguMi00OGMtNC42LTEzIDEwLjItMzAgMjEuNC0yMmM1My41IDM4IDkyLjcgOTQuOCAxMDcuOCAxNjAuN2MuNSAyLjEtLjIgNC4zLTEuNyA1LjlsLTI4LjQgMjguNGMtNCA0LTEuMiAxMC45IDQuNSAxMC45aDI2YzMuNCAwIDYuMiAyLjYgNi4zIDZjLjEgMy4zIC4yIDYuNiAuMiAxMGMwIDE3LjUtMS43IDM0LjctNC44IDUxLjNjLS4yIDEuMi0uOSAyLjQtMS43IDMuM2wtNDYuNSA0Ni41Yy00IDQtMS4yIDEwLjkgNC41IDEwLjlINTI2YzQuNiAwIDcuNyA0LjggNS43IDlDNDg3LjIgNDUwLjUgMzk0LjggNTEyIDI4OCA1MTJTODguOCA0NTAuNSA0NC4zIDM2MWMtMi4xLTQuMiAxLTkgNS43LTlINjQuNWM1LjcgMCA4LjYtNi45IDQuNS0xMC45TDIyLjYgMjk0LjZjLS45LS45LTEuNS0yLTEuNy0zLjNDMTcuNyAyNzQuNyAxNiAyNTcuNSAxNiAyNDBjMC0zLjMgLjEtNi43IC4yLTEwYy4xLTMuNCAyLjktNiA2LjMtNmgyNmM1LjcgMCA4LjYtNi45IDQuNS0xMC45TDI0LjYgMTg0LjZjLTEuNS0xLjUtMi4yLTMuOC0xLjctNS45QzM4LjEgMTEyLjggNzcuMyA1NiAxMzAuOCAxOGMxMS4zLTggMjYgOC45IDIxLjQgMjJjLTUuMyAxNS04LjIgMzEuMi04LjIgNDhjMCA0Ni4zIDIxLjkgODcuNSA1NS44IDExMy45YzcuNSA1LjggOCAxNy45IDEgMjQuNEMxNzUuNyAyNDkuNiAxNjAgMjgzIDE2MCAzMjBjMCA2Mi45IDQ1LjQgMTE1LjIgMTA1LjEgMTI2bDIuMS02MS41Yy4xLTIuNi0yLjgtNC4yLTUtMi44bC0yNi4zIDE3LjZjLTMuMiAyLjEtNy40IDEuNy0xMC4xLTFzLTMuMS02LjktMS0xMC4xTDI0NiAzNTYuM2MxLjMtMS45IC4yLTQuNS0yLTQuOWwtMzcuNi03LjVjLTMuNy0uNy02LjQtNC02LjQtNy44czIuNy03LjEgNi40LTcuOGwzNy42LTcuNWMyLjItLjQgMy4zLTMgMi00Ljl6XCJdXG59O1xudmFyIGZhU3F1YXJlUG9sbFZlcnRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1wb2xsLXZlcnRpY2FsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJwb2xsXCJdLCBcImY2ODFcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAxOTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjB6TTMyMCAyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYVBvbGwgPSBmYVNxdWFyZVBvbGxWZXJ0aWNhbDtcbnZhciBmYU11Z0hvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtdWctaG90JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTc0OV0sIFwiZjdiNlwiLCBcIk04OCAwQzc0LjcgMCA2NCAxMC43IDY0IDI0YzAgMzguOSAyMy40IDU5LjQgMzkuMSA3My4xbDEuMSAxQzEyMC41IDExMi4zIDEyOCAxMTkuOSAxMjggMTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zOC45LTIzLjQtNTkuNC0zOS4xLTczLjFsLTEuMS0xQzExOS41IDQ3LjcgMTEyIDQwLjEgMTEyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0ek0zMiAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQxNmMwIDUzIDQzIDk2IDk2IDk2SDI4OGM1MyAwIDk2LTQzIDk2LTk2aDE2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEySDM1MiAzMnptMzUyIDY0aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4SDM4NFYyNTZ6TTIyNCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGMwIDM4LjkgMjMuNCA1OS40IDM5LjEgNzMuMWwxLjEgMUMyMzIuNSAxMTIuMyAyNDAgMTE5LjkgMjQwIDEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMzguOS0yMy40LTU5LjQtMzkuMS03My4xbC0xLjEtMUMyMzEuNSA0Ny43IDIyNCA0MC4xIDIyNCAyNHpcIl1cbn07XG52YXIgZmFDYXJCYXR0ZXJ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci1iYXR0ZXJ5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJiYXR0ZXJ5LWNhclwiXSwgXCJmNWRmXCIsIFwiTTgwIDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDk2IDBjMC0xNy43IDE0LjMtMzIgMzItMzJoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJoMTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRsMTYgMHptMzA0IDk2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djMySDMyMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI1NmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzODRWMTkyek04MCAyNDBjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDk2Yy04LjggMC0xNiA3LjItMTYgMTZ6XCJdXG59O1xudmFyIGZhQmF0dGVyeUNhciA9IGZhQ2FyQmF0dGVyeTtcbnZhciBmYUdpZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2lmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzg3M10sIFwiZjA2YlwiLCBcIk0xOTAuNSA2OC44TDIyNS4zIDEyOEgyMjQgMTUyYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwaDIuMmMxNC45IDAgMjguOCA3LjkgMzYuMyAyMC44ek02NCA4OGMwIDE0LjQgMy41IDI4IDkuNiA0MEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0MzguNGM2LjEtMTIgOS42LTI1LjYgOS42LTQwYzAtNDguNi0zOS40LTg4LTg4LTg4aC0yLjJjLTMxLjkgMC02MS41IDE2LjktNzcuNyA0NC40TDI1NiA4NS41bC0yNC4xLTQxQzIxNS43IDE2LjkgMTg2LjEgMCAxNTQuMiAwSDE1MkMxMDMuNCAwIDY0IDM5LjQgNjQgODh6bTMzNiAwYzAgMjIuMS0xNy45IDQwLTQwIDQwSDI4OGgtMS4zbDM0LjgtNTkuMkMzMjkuMSA1NS45IDM0Mi45IDQ4IDM1Ny44IDQ4SDM2MGMyMi4xIDAgNDAgMTcuOSA0MCA0MHpNMzIgMjg4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyMjRWMjg4SDMyek0yODggNTEySDQzMmMyNi41IDAgNDgtMjEuNSA0OC00OFYyODhIMjg4VjUxMnpcIl1cbn07XG52YXIgZmFEaWNlVHdvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpY2UtdHdvJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbOTg1N10sIFwiZjUyOFwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2ek0zNTIgMzUyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbnZhciBmYUNoZXNzUXVlZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3MtcXVlZW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5ODE5XSwgXCJmNDQ1XCIsIFwiTTI1NiAwYTU2IDU2IDAgMSAxIDAgMTEyQTU2IDU2IDAgMSAxIDI1NiAwek0xMzQuMSAxNDMuOGMzLjMtMTMgMTUtMjMuOCAzMC4yLTIzLjhjMTIuMyAwIDIyLjYgNy4yIDI3LjcgMTdjMTIgMjMuMiAzNi4yIDM5IDY0IDM5czUyLTE1LjggNjQtMzljNS4xLTkuOCAxNS40LTE3IDI3LjctMTdjMTUuMyAwIDI3IDEwLjggMzAuMiAyMy44YzcgMjcuOCAzMi4yIDQ4LjMgNjIuMSA0OC4zYzEwLjggMCAyMS0yLjcgMjkuOC03LjRjOC40LTQuNCAxOC45LTQuNSAyNy42IC45YzEzIDggMTcuMSAyNSA5LjIgMzhMMzk5LjcgNDAwSDM4NCAzNDMuNiAxNjguNCAxMjggMTEyLjNMNS40IDIyMy42Yy03LjktMTMtMy44LTMwIDkuMi0zOGM4LjctNS4zIDE5LjItNS4zIDI3LjYtLjljOC45IDQuNyAxOSA3LjQgMjkuOCA3LjRjMjkuOSAwIDU1LjEtMjAuNSA2Mi4xLTQ4LjN6TTI1NiAyMjRsMCAwIDAgMGgwek0xMTIgNDMySDQwMGw0MS40IDQxLjRjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42SDg2LjZDNzQuMSA1MTIgNjQgNTAxLjkgNjQgNDg5LjRjMC02IDIuNC0xMS44IDYuNi0xNkwxMTIgNDMyelwiXVxufTtcbnZhciBmYUdsYXNzZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3NlcycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjUzMFwiLCBcIk0xMTguNiA4MGMtMTEuNSAwLTIxLjQgNy45LTI0IDE5LjFMNTcgMjYwLjNjMjAuNS02LjIgNDguMy0xMi4zIDc4LjctMTIuM2MzMi4zIDAgNjEuOCA2LjkgODIuOCAxMy41YzEwLjYgMy4zIDE5LjMgNi43IDI1LjQgOS4yYzMuMSAxLjMgNS41IDIuNCA3LjMgMy4yYy45IC40IDEuNiAuNyAyLjEgMWwuNiAuMyAuMiAuMSAuMSAwIDAgMCAwIDBzMCAwLTYuMyAxMi43aDBsNi4zLTEyLjdjNS44IDIuOSAxMC40IDcuMyAxMy41IDEyLjdoNDAuNmMzLjEtNS4zIDcuNy05LjggMTMuNS0xMi43bDYuMyAxMi43aDBjLTYuMy0xMi43LTYuMy0xMi43LTYuMy0xMi43bDAgMCAwIDAgLjEgMCAuMi0uMSAuNi0uM2MuNS0uMiAxLjItLjYgMi4xLTFjMS44LS44IDQuMi0xLjkgNy4zLTMuMmM2LjEtMi42IDE0LjgtNS45IDI1LjQtOS4yYzIxLTYuNiA1MC40LTEzLjUgODIuOC0xMy41YzMwLjQgMCA1OC4yIDYuMSA3OC43IDEyLjNMNDgxLjQgOTkuMWMtMi42LTExLjItMTIuNi0xOS4xLTI0LTE5LjFjLTMuMSAwLTYuMiAuNi05LjIgMS44TDQxNi45IDk0LjNjLTEyLjMgNC45LTI2LjMtMS4xLTMxLjItMTMuNHMxLjEtMjYuMyAxMy40LTMxLjJsMzEuMy0xMi41YzguNi0zLjQgMTcuNy01LjIgMjctNS4yYzMzLjggMCA2My4xIDIzLjMgNzAuOCA1Ni4ybDQzLjkgMTg4YzEuNyA3LjMgMi45IDE0LjcgMy41IDIyLjFjLjMgMS45IC41IDMuOCAuNSA1Ljd2Ni43VjM1MnYxNmMwIDYxLjktNTAuMSAxMTItMTEyIDExMkg0MTkuN2MtNTkuNCAwLTEwOC41LTQ2LjQtMTExLjgtMTA1LjhMMzA2LjYgMzUySDI2OS40bC0xLjIgMjIuMkMyNjQuOSA0MzMuNiAyMTUuOCA0ODAgMTU2LjMgNDgwSDExMkM1MC4xIDQ4MCAwIDQyOS45IDAgMzY4VjM1MiAzMTAuNyAzMDRjMC0xLjkgLjItMy44IC41LTUuN2MuNi03LjQgMS44LTE0LjggMy41LTIyLjFsNDMuOS0xODhDNTUuNSA1NS4zIDg0LjggMzIgMTE4LjYgMzJjOS4yIDAgMTguNCAxLjggMjcgNS4ybDMxLjMgMTIuNWMxMi4zIDQuOSAxOC4zIDE4LjkgMTMuNCAzMS4ycy0xOC45IDE4LjMtMzEuMiAxMy40TDEyNy44IDgxLjhjLTIuOS0xLjItNi0xLjgtOS4yLTEuOHpNNjQgMzI1LjRWMzY4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ0LjNjMjUuNSAwIDQ2LjUtMTkuOSA0Ny45LTQ1LjNsMi41LTQ1LjZjLTIuMy0uOC00LjktMS43LTcuNS0yLjVjLTE3LjItNS40LTM5LjktMTAuNS02My42LTEwLjVjLTIzLjcgMC00Ni4yIDUuMS02My4yIDEwLjVjLTMuMSAxLTUuOSAxLjktOC41IDIuOXpNNTEyIDM2OFYzMjUuNGMtMi42LS45LTUuNS0xLjktOC41LTIuOWMtMTctNS40LTM5LjUtMTAuNS02My4yLTEwLjVjLTIzLjcgMC00Ni40IDUuMS02My42IDEwLjVjLTIuNyAuOC01LjIgMS43LTcuNSAyLjVsMi41IDQ1LjZjMS40IDI1LjQgMjIuNSA0NS4zIDQ3LjkgNDUuM0g0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6XCJdXG59O1xudmFyIGZhQ2hlc3NCb2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1ib2FyZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjQzY1wiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTY0IDY0djY0aDY0Vjk2aDY0djY0aDY0Vjk2aDY0djY0SDMyMHY2NGg2NHY2NEgzMjB2NjRoNjR2NjRIMzIwVjM1MkgyNTZ2NjRIMTkyVjM1MkgxMjh2NjRINjRWMzUyaDY0VjI4OEg2NFYyMjRoNjRWMTYwSDY0Vjk2aDY0em02NCAxMjhoNjRWMTYwSDE5MnY2NHptMCA2NFYyMjRIMTI4djY0aDY0em02NCAwSDE5MnY2NGg2NFYyODh6bTAgMGg2NFYyMjRIMjU2djY0elwiXVxufTtcbnZhciBmYUJ1aWxkaW5nQ2lyY2xlQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGQyXCIsIFwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMxNS4xIDAgMjguNS02LjkgMzcuMy0xNy44QzM0MC40IDQ2Mi4yIDMyMCA0MTcuNSAzMjAgMzY4YzAtNTQuNyAyNC45LTEwMy41IDY0LTEzNS44VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIl1cbn07XG52YXIgZmFQZXJzb25DaGFsa2JvYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1jaGFsa2JvYXJkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTNkXCIsIFwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM4NFYzNTJoMTZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTkyaDU2IDY0IDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM4NFY2NEg1NzZWMjU2SDM4NFYyMjRIMzIwdjQ4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgzNjhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djgwSDI0My4xIDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6XCJdXG59O1xudmFyIGZhTWFyc1N0cm9rZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMtc3Ryb2tlLXJpZ2h0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbOTg5NywgXCJtYXJzLXN0cm9rZS1oXCJdLCBcImYyMmJcIiwgXCJNMjA4IDM2OGExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6bTE3NC40LTg4QzM3MC43IDM2NS44IDI5Ny4xIDQzMiAyMDggNDMyYy05Ny4yIDAtMTc2LTc4LjgtMTc2LTE3NnM3OC44LTE3NiAxNzYtMTc2Yzg5LjEgMCAxNjIuNyA2Ni4yIDE3NC40IDE1Mkg0MTZWMTc2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NTZoMzJWMTc2YzAtOS43IDUuOC0xOC41IDE0LjgtMjIuMnMxOS4zLTEuNyAyNi4yIDUuMmw4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODAgODBjLTYuOSA2LjktMTcuMiA4LjktMjYuMiA1LjJzLTE0LjgtMTIuNS0xNC44LTIyLjJWMjgwSDQ2NHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyODBIMzgyLjR6XCJdXG59O1xudmFyIGZhTWFyc1N0cm9rZUggPSBmYU1hcnNTdHJva2VSaWdodDtcbnZhciBmYUhhbmRCYWNrRmlzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWJhY2stZmlzdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiaGFuZC1yb2NrXCJdLCBcImYyNTVcIiwgXCJNMTQ0IDBDMTE3LjUgMCA5NiAyMS41IDk2IDQ4Vjk2djI4LjVWMTc2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE0OS4zbC05IDcuNUM0MC40IDE2OSAzMiAxODcgMzIgMjA2VjI0NGMwIDM4IDE2LjkgNzQgNDYuMSA5OC4zTDEyOCAzODR2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM3NC43YzQ2LjktMTkgODAtNjUgODAtMTE4LjdWMTc2IDE2MCAxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhjLTEyLjQgMC0yMy42IDQuNy0zMi4xIDEyLjNDMzUwIDgzLjUgMzI5LjMgNjQgMzA0IDY0Yy0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zQzI3MCA1MS41IDI0OS4zIDMyIDIyNCAzMmMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MxOTAgMTkuNSAxNjkuMyAwIDE0NCAwelwiXVxufTtcbnZhciBmYUhhbmRSb2NrID0gZmFIYW5kQmFja0Zpc3Q7XG52YXIgZmFTcXVhcmVDYXJldFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1jYXJldC11cCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiY2FyZXQtc3F1YXJlLXVwXCJdLCBcImYxNTFcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMTYwYzYuNyAwIDEzIDIuOCAxNy42IDcuN2wxMDQgMTEyYzYuNSA3IDguMiAxNy4yIDQuNCAyNS45cy0xMi41IDE0LjQtMjIgMTQuNEgxMjBjLTkuNSAwLTE4LjItNS43LTIyLTE0LjRzLTIuMS0xOC45IDQuNC0yNS45bDEwNC0xMTJjNC41LTQuOSAxMC45LTcuNyAxNy42LTcuN3pcIl1cbn07XG52YXIgZmFDYXJldFNxdWFyZVVwID0gZmFTcXVhcmVDYXJldFVwO1xudmFyIGZhQ2xvdWRTaG93ZXJzV2F0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc2hvd2Vycy13YXRlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRlNFwiLCBcIk0yMjQgMGMzOC42IDAgNzEuOSAyMi44IDg3LjIgNTUuN0MzMjUuNyA0MS4xIDM0NS44IDMyIDM2OCAzMmMzOC43IDAgNzEgMjcuNSA3OC40IDY0SDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NEgxMjhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMC01MyA0My05NiA5Ni05NnpNMTQwLjYgMjkyLjNsLTQ4IDgwYy02LjggMTEuNC0yMS42IDE1LTMyLjkgOC4ycy0xNS4xLTIxLjYtOC4yLTMyLjlsNDgtODBjNi44LTExLjQgMjEuNi0xNS4xIDMyLjktOC4yczE1LjEgMjEuNiA4LjIgMzIuOXptMzI3LjgtMzIuOWMxMS40IDYuOCAxNSAyMS42IDguMiAzMi45bC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJ6TTI1Mi42IDI5Mi4zbC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUuMS0yMS42LTguMi0zMi45bDQ4LTgwYzYuOC0xMS40IDIxLjYtMTUuMSAzMi45LTguMnMxNS4xIDIxLjYgOC4yIDMyLjl6bTEwMy44LTMyLjljMTEuNCA2LjggMTUgMjEuNiA4LjIgMzIuOWwtNDggODBjLTYuOCAxMS40LTIxLjYgMTUtMzIuOSA4LjJzLTE1LjEtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJ6TTMwNi41IDQyMS45QzMyOSA0MzcuNCAzNTYuNSA0NDggMzg0IDQ0OGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA1MDEuNyA0MTcgNTEyIDM4NCA1MTJjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MzcuMiAxNjUuMSA0NDggMTkyIDQ0OGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIl1cbn07XG52YXIgZmFDaGFydEJhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFydC1iYXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImJhci1jaGFydFwiXSwgXCJmMDgwXCIsIFwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQwMGMwIDguOCA3LjIgMTYgMTYgMTZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwYy00NC4yIDAtODAtMzUuOC04MC04MFY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptOTYgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgNjRIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCA5Nkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYUJhckNoYXJ0ID0gZmFDaGFydEJhcjtcbnZhciBmYUhhbmRzQnViYmxlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kcy1idWJibGVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJoYW5kcy13YXNoXCJdLCBcImUwNWVcIiwgXCJNNDE2IDY0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptOTYgMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMTYwIDQ2NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0zMiAxNjBsLjEgNzIuNmMuMSA1Mi4yIDI0IDEwMSA2NCAxMzMuMWMtLjEtMS45LS4xLTMuOC0uMS01Ljd2LThjMC03MS44IDM3LTEzOC42IDk3LjktMTc2LjdsNjAuMi0zNy42YzguNi01LjQgMTcuOS04LjQgMjcuMy05LjRsNDUuOS03OS41YzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOGwtNzggMTM1LjFjLTMuMyA1LjctMTAuNyA3LjctMTYuNCA0LjRzLTcuNy0xMC43LTQuNC0xNi40bDYyLTEwNy40YzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44UzIxNCA1IDIwNy40IDE2LjVsLTY4IDExNy44IDAgMCAwIDAtNDMuMyA3NUw5NiAxNjBjMC0xNy43LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ6TTMzMi4xIDg4LjVMMzA3LjUgMTMxYzEzLjkgNC41IDI2LjQgMTMuNyAzNC43IDI3Yy45IDEuNSAxLjcgMi45IDIuNSA0LjRsMjguOS01MGM2LjYtMTEuNSAyLjctMjYuMi04LjgtMzIuOHMtMjYuMi0yLjctMzIuOCA4Ljh6bTQ2LjQgNjMuN2wtMjYuOCA0Ni40Yy0uNiA2LTIuMSAxMS44LTQuMyAxNy40SDM1MmgxMy4zbDAgMEgzOTdsMjMtMzkuOGM2LjYtMTEuNSAyLjctMjYuMi04LjgtMzIuOHMtMjYuMi0yLjctMzIuOCA4Ljh6TTMxNS4xIDE3NWMtOS40LTE1LTI5LjEtMTkuNS00NC4xLTEwLjJsLTYwLjIgMzcuNkMxNTkuMyAyMzQuNyAxMjggMjkxLjIgMTI4IDM1MnY4YzAgOC45IC44IDE3LjYgMi4yIDI2LjFjMzUuNCA4LjIgNjEuOCA0MCA2MS44IDc3LjljMCA2LjMtLjcgMTIuNS0yLjEgMTguNEMyMTUuMSA1MDEgMjQ2LjMgNTEyIDI4MCA1MTJINDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM2NGMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMkg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMzY0Yy02LjYgMC0xMi01LjQtMTItMTJzNS40LTEyIDEyLTEySDUyMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgzNjRjLTYuNiAwLTEyLTUuNC0xMi0xMnM1LjQtMTIgMTItMTJINDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM1MmwwIDAgMCAwSDI1OC44TDMwNSAyMTkuMWMxNS05LjQgMTkuNS0yOS4xIDEwLjItNDQuMXpcIl1cbn07XG52YXIgZmFIYW5kc1dhc2ggPSBmYUhhbmRzQnViYmxlcztcbnZhciBmYUxlc3NUaGFuRXF1YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGVzcy10aGFuLWVxdWFsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTM3XCIsIFwiTTM5NS45IDkzLjdjMTYuNC02LjYgMjQuNC0yNS4yIDE3LjgtNDEuNnMtMjUuMi0yNC40LTQxLjYtMTcuOGwtMzIwIDEyOEM0MCAxNjcuMSAzMiAxNzguOSAzMiAxOTJzOCAyNC45IDIwLjEgMjkuN2wzMjAgMTI4YzE2LjQgNi42IDM1LTEuNCA0MS42LTE3LjhzLTEuNC0zNS0xNy44LTQxLjZMMTUwLjIgMTkyIDM5NS45IDkzLjd6TTMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJdXG59O1xudmFyIGZhVHJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhaW4nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjg2NDZdLCBcImYyMzhcIiwgXCJNOTYgMEM0MyAwIDAgNDMgMCA5NlYzNTJjMCA0OCAzNS4yIDg3LjcgODEuMSA5NC45bC00NiA0NkMyOC4xIDQ5OS45IDMzLjEgNTEyIDQzIDUxMkg4Mi43YzguNSAwIDE2LjYtMy40IDIyLjYtOS40TDE2MCA0NDhIMjg4bDU0LjYgNTQuNmM2IDYgMTQuMSA5LjQgMjIuNiA5LjRINDA1YzEwIDAgMTUtMTIuMSA3LjktMTkuMWwtNDYtNDZjNDYtNy4xIDgxLjEtNDYuOSA4MS4xLTk0LjlWOTZjMC01My00My05Ni05Ni05Nkg5NnpNNjQgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NnpNMjI0IDI4OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJdXG59O1xudmFyIGZhRXllTG93VmlzaW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V5ZS1sb3ctdmlzaW9uJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJsb3ctdmlzaW9uXCJdLCBcImYyYThcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w1MjUuNiAzODYuN2MzOS42LTQwLjYgNjYuNC04Ni4xIDc5LjktMTE4LjRjMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjZjLTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjFDNDY1LjUgNjguOCA0MDAuOCAzMiAzMjAgMzJjLTY4LjIgMC0xMjUgMjYuMy0xNjkuMyA2MC44TDM4LjggNS4xek0yMjMgMTQ5LjVjNDguNi00NC4zIDEyMy01MC44IDE3OS4zLTExLjdjNjAuOCA0Mi40IDc4LjkgMTIzLjIgNDQuMiAxODYuOUw0MDggMjk0LjVjOC40LTE5LjMgMTAuNi00MS40IDQuOC02My4zYy0xMS4xLTQxLjUtNDcuOC02OS40LTg4LjYtNzEuMWMtNS44LS4yLTkuMiA2LjEtNy40IDExLjdjMi4xIDYuNCAzLjMgMTMuMiAzLjMgMjAuM2MwIDEwLjItMi40IDE5LjgtNi42IDI4LjNMMjIzIDE0OS41em0yMjMuMSAyOThMODMuMSAxNjEuNWMtMTEgMTQuNC0yMC41IDI4LjctMjguNCA0Mi4ybDMzOSAyNjUuN2MxOC43LTUuNSAzNi4yLTEzIDUyLjYtMjEuOHpNMzQuNSAyNjguM2MxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xQzE3NC41IDQ0My4yIDIzOS4yIDQ4MCAzMjAgNDgwYzMuMSAwIDYuMS0uMSA5LjItLjJMMzMuMSAyNDcuOGMtMS44IDYuOC0xLjMgMTQgMS40IDIwLjV6XCJdXG59O1xudmFyIGZhTG93VmlzaW9uID0gZmFFeWVMb3dWaXNpb247XG52YXIgZmFDcm93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3cnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MjBcIiwgXCJNNDU2IDBjLTQ4LjYgMC04OCAzOS40LTg4IDg4djI5LjJMMTIuNSAzOTAuNmMtMTQgMTAuOC0xNi42IDMwLjktNS45IDQ0LjlzMzAuOSAxNi42IDQ0LjkgNS45TDEyNi4xIDM4NEgyNTkuMmw0Ni42IDExMy4xYzUgMTIuMyAxOS4xIDE4LjEgMzEuMyAxMy4xczE4LjEtMTkuMSAxMy4xLTMxLjNMMzExLjEgMzg0SDM1MmMxLjEgMCAyLjEgMCAzLjIgMGw0Ni42IDExMy4yYzUgMTIuMyAxOS4xIDE4LjEgMzEuMyAxMy4xczE4LjEtMTkuMSAxMy4xLTMxLjNsLTQyLTEwMkM0ODQuOSAzNTQuMSA1NDQgMjgwIDU0NCAxOTJWMTI4di04bDgwLjUtMjAuMWM4LjYtMi4xIDEzLjgtMTAuOCAxMS42LTE5LjRDNjI5IDUyIDYwMy40IDMyIDU3NCAzMkg1MjMuOUM1MDcuNyAxMi41IDQ4My4zIDAgNDU2IDB6bTAgNjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbnZhciBmYVNhaWxib2F0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NhaWxib2F0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNDQ1XCIsIFwiTTI1NiAxNmMwLTcgNC41LTEzLjIgMTEuMi0xNS4zczEzLjkgLjQgMTcuOSA2LjFsMjI0IDMyMGMzLjQgNC45IDMuOCAxMS4zIDEuMSAxNi42cy04LjIgOC42LTE0LjIgOC42SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjE2ek0yMTIuMSA5Ni41YzcgMS45IDExLjkgOC4yIDExLjkgMTUuNVYzMzZjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy01LjcgMC0xMS0zLTEzLjgtOHMtMi45LTExLS4xLTE2bDEyOC0yMjRjMy42LTYuMyAxMS05LjQgMTgtNy41ek01LjcgNDA0LjNDMi44IDM5NC4xIDEwLjUgMzg0IDIxLjEgMzg0SDU1NC45YzEwLjYgMCAxOC4zIDEwLjEgMTUuNCAyMC4zbC00IDE0LjNDNTUwLjcgNDczLjkgNTAwLjQgNTEyIDQ0MyA1MTJIMTMzQzc1LjYgNTEyIDI1LjMgNDczLjkgOS43IDQxOC43bC00LTE0LjN6XCJdXG59O1xudmFyIGZhV2luZG93UmVzdG9yZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5kb3ctcmVzdG9yZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJkMlwiLCBcIk00MzIgNjRIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZWOTZIMTI4VjgwYzAtNDQuMiAzNS44LTgwIDgwLTgwSDQzMmM0NC4yIDAgODAgMzUuOCA4MCA4MFYzMDRjMCA0NC4yLTM1LjggODAtODAgODBINDE2VjMyMGgxNmM4LjggMCAxNi03LjIgMTYtMTZWODBjMC04LjgtNy4yLTE2LTE2LTE2ek0wIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJ6bTY0IDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJdXG59O1xudmFyIGZhU3F1YXJlUGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtcGx1cycsXG4gIGljb246IFs0NDgsIDUxMiwgWzYxODQ2LCBcInBsdXMtc3F1YXJlXCJdLCBcImYwZmVcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMDAgMzQ0VjI4MEgxMzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMTY4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NjRoNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjQ4djY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0elwiXVxufTtcbnZhciBmYVBsdXNTcXVhcmUgPSBmYVNxdWFyZVBsdXM7XG52YXIgZmFUb3JpaUdhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9yaWktZ2F0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzk5NjFdLCBcImY2YTFcIiwgXCJNMCA4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg2NHY2NGg2NFYxMjhoOTZ2NjRoNjRWMTI4aDk2djY0aDY0VjEyOGgxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMy40QzUxMiA2IDUwNiAwIDQ5OC42IDBjLTEuNyAwLTMuNCAuMy01IDFsLTQ5IDE5LjZDNDI1LjcgMjguMSA0MDUuNSAzMiAzODUuMiAzMkgxMjYuOGMtMjAuNCAwLTQwLjUtMy45LTU5LjQtMTEuNEwxOC40IDFjLTEuNi0uNi0zLjMtMS01LTFDNiAwIDAgNiAwIDEzLjRWODB6TTY0IDI4OFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODhIMzg0VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHpcIl1cbn07XG52YXIgZmFGcm9nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zyb2cnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1MmVcIiwgXCJNMzY4IDMyYzQxLjcgMCA3NS45IDMxLjggNzkuNyA3Mi41bDg1LjYgMjYuM2MyNS40IDcuOCA0Mi44IDMxLjMgNDIuOCA1Ny45YzAgMjEuOC0xMS43IDQxLjktMzAuNyA1Mi43TDQwMC44IDMyMy41IDQ5My4zIDQxNkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDgwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNEwzNDYuOSAzNjAuMmMxMS43LTM2IDMuMi03Ny4xLTI1LjQtMTA1LjdjLTQwLjYtNDAuNi0xMDYuMy00MC42LTE0Ni45LS4xTDEwMSAzMjQuNGMtNi40IDYuMS02LjcgMTYuMi0uNiAyMi42czE2LjIgNi42IDIyLjYgLjZsNzMuOC03MC4yIC4xLS4xIC4xLS4xYzMuNS0zLjUgNy4zLTYuNiAxMS4zLTkuMmMyNy45LTE4LjUgNjUuOS0xNS40IDkwLjUgOS4yYzI0LjcgMjQuNyAyNy43IDYyLjkgOSA5MC45Yy0yLjYgMy44LTUuNiA3LjUtOSAxMC45TDI2MS44IDQxNkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0QzAgMjQ5LjYgMTI3IDExMi45IDI4OS4zIDk3LjVDMjk2LjIgNjAuMiAzMjguOCAzMiAzNjggMzJ6bTAgMTA0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIl1cbn07XG52YXIgZmFCdWNrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVja2V0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJlNGNmXCIsIFwiTTk2IDE1MnY4SDQ4di04QzQ4IDY4LjEgMTE2LjEgMCAyMDAgMGg0OGM4My45IDAgMTUyIDY4LjEgMTUyIDE1MnY4SDM1MnYtOGMwLTU3LjQtNDYuNi0xMDQtMTA0LTEwNEgyMDBDMTQyLjYgNDggOTYgOTQuNiA5NiAxNTJ6TTAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtNS4xTDM4OC41IDQ2OWMtMi42IDI0LjQtMjMuMiA0My00Ny43IDQzSDEwNy4yYy0yNC42IDAtNDUuMi0xOC41LTQ3LjctNDNMMzcuMSAyNTZIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwiXVxufTtcbnZhciBmYUltYWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ltYWdlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDNlXCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTMyMy44IDIwMi41Yy00LjUtNi42LTExLjktMTAuNS0xOS44LTEwLjVzLTE1LjQgMy45LTE5LjggMTAuNWwtODcgMTI3LjZMMTcwLjcgMjk3Yy00LjYtNS43LTExLjUtOS0xOC43LTlzLTE0LjIgMy4zLTE4LjcgOWwtNjQgODBjLTUuOCA3LjItNi45IDE3LjEtMi45IDI1LjRzMTIuNCAxMy42IDIxLjYgMTMuNmg5NiAzMkg0MjRjOC45IDAgMTcuMS00LjkgMjEuMi0xMi44czMuNi0xNy40LTEuNC0yNC43bC0xMjAtMTc2ek0xMTIgMTkyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIl1cbn07XG52YXIgZmFNaWNyb3Bob25lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pY3JvcGhvbmUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxMzBcIiwgXCJNMTkyIDBDMTM5IDAgOTYgNDMgOTYgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZWOTZjMC01My00My05Ni05Ni05NnpNNjQgMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNFY0NjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDcyIDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIxNlY0MzAuNGM4NS44LTExLjcgMTUyLTg1LjMgMTUyLTE3NC40VjIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY0MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOHMtMTI4LTU3LjMtMTI4LTEyOFYyMTZ6XCJdXG59O1xudmFyIGZhQ293ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvdycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODAwNF0sIFwiZjZjOFwiLCBcIk05NiAyMjR2MzJWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyNy44YzkuOSA2LjYgMjAuNiAxMiAzMiAxNi4xVjM2OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjM1MS4xYzUuMyAuNiAxMC42IC45IDE2IC45czEwLjctLjMgMTYtLjlWMzY4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzQzLjhjMTEuNC00IDIyLjEtOS40IDMyLTE2LjFWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmwzMiAzMnY0OS41YzAgOS41IDIuOCAxOC43IDguMSAyNi42TDUzMCA0MjdjOC44IDEzLjEgMjMuNSAyMSAzOS4zIDIxYzIyLjUgMCA0MS45LTE1LjkgNDYuMy0zOGwyMC4zLTEwMS42YzIuNi0xMy0uMy0yNi41LTgtMzcuM2wtMy45LTUuNVYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTQuNGwtNTIuOS03NC4xQzQ5NiA4Ni41IDQ1Mi40IDY0IDQwNS45IDY0SDI3MiAyNTYgMTkyIDE0NEM3Ny43IDY0IDI0IDExNy43IDI0IDE4NHY1NEM5LjQgMjQ5LjggMCAyNjcuOCAwIDI4OHYxNy42YzAgOCA2LjQgMTQuNCAxNC40IDE0LjRDNDYuMiAzMjAgNzIgMjk0LjIgNzIgMjYyLjRWMjU2IDIyNCAxODRjMC0yNC4zIDEyLjEtNDUuOCAzMC41LTU4LjlDOTguMyAxMzUuOSA5NiAxNDcuNyA5NiAxNjB2NjR6TTU2MCAzMzZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMTY2LjYgMTY2LjZjLTQuMi00LjItNi42LTEwLTYuNi0xNmMwLTEyLjUgMTAuMS0yMi42IDIyLjYtMjIuNkgzNjEuNGMxMi41IDAgMjIuNiAxMC4xIDIyLjYgMjIuNmMwIDYtMi40IDExLjgtNi42IDE2bC0yMy40IDIzLjRDMzMyLjIgMjExLjggMzAyLjcgMjI0IDI3MiAyMjRzLTYwLjItMTIuMi04MS45LTMzLjlsLTIzLjQtMjMuNHpcIl1cbn07XG52YXIgZmFDYXJldFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmV0LXVwJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMGQ4XCIsIFwiTTE4Mi42IDEzNy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOEgyODhjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtMTI4LTEyOHpcIl1cbn07XG52YXIgZmFTY3Jld2RyaXZlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY3Jld2RyaXZlcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTY5MV0sIFwiZjU0YVwiLCBcIk00NjUgN2MtOC41LTguNS0yMi05LjQtMzEuNi0yLjFsLTEwNCA4MGMtNS45IDQuNS05LjQgMTEuNi05LjQgMTl2NTQuMWwtODUuNiA4NS42YzYuNyA0LjIgMTMgOS4zIDE4LjggMTUuMXMxMC45IDEyLjIgMTUuMSAxOC44TDM1My45IDE5Mkg0MDhjNy41IDAgMTQuNS0zLjUgMTktOS40bDgwLTEwNGM3LjQtOS42IDYuNS0yMy4xLTIuMS0zMS42TDQ2NSA3ek0xMjEuNCAyODEuNGwtMTEyIDExMmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTEyLTExMmMzMC4yLTMwLjIgMzAuMi03OS4xIDAtMTA5LjNzLTc5LjEtMzAuMi0xMDkuMyAwelwiXVxufTtcbnZhciBmYUZvbGRlckNsb3NlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb2xkZXItY2xvc2VkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMTg1XCIsIFwiTTQ0OCA0ODBINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5Mkg1MTJWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0em02NC0zMjBIMFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR6XCJdXG59O1xudmFyIGZhSG91c2VUc3VuYW1pID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLXRzdW5hbWknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1MTVcIiwgXCJNODAuOCAxMzYuNUMxMDQuOSA5My44IDE1Mi42IDY0IDIwOSA2NGMxNi45IDAgMzMuMSAyLjcgNDguMiA3LjdjMTYuOCA1LjUgMzQuOS0zLjYgNDAuNC0yMC40cy0zLjYtMzQuOS0yMC40LTQwLjRDMjU1LjggMy44IDIzMi44IDAgMjA5IDBDOTUuMiAwIDAgODggMCAyMDBjMCA5MS42IDUzLjUgMTcyLjEgMTQyLjIgMTk0LjFjMTMuNCAzLjggMjcuNSA1LjkgNDIuMiA1LjljLjcgMCAxLjQgMCAyLjEtLjFjMS44IDAgMy43IC4xIDUuNSAuMWwwIDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDMyNS4yIDQxMC45IDMzNiAzODQgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDBjLTIyLjQgMTUuNS00OS45IDI2LjEtNzcuNCAyNi4xYzAgMC0uMSAwLS4xIDBjLTEyLjQgMC0yNC0xLjUtMzQuOS00LjNDMTIxLjYgMzIwLjIgOTYgMjg3IDk2IDI0OGMwLTQ4LjUgMzkuNS04OCA4OC40LTg4YzEzLjUgMCAyNi4xIDMgMzcuNSA4LjNjMTYgNy41IDM1LjEgLjYgNDIuNS0xNS41cy42LTM1LjEtMTUuNS00Mi41QzIyOS4zIDEwMS4xIDIwNy40IDk2IDE4NC40IDk2Yy00MCAwLTc2LjQgMTUuNC0xMDMuNiA0MC41em0yNTItMTguMWMtOC4xIDYtMTIuOCAxNS41LTEyLjggMjUuNlYyNjVjMS42IDEgMy4zIDIgNC44IDMuMWMxOC40IDEyLjcgMzkuNiAyMC4zIDU5LjIgMjAuM2MxOSAwIDQxLjItNy45IDU5LjItMjAuM2MyMy44LTE2LjcgNTUuOC0xNS4zIDc4LjEgMy40YzEwLjYgOC44IDI0LjIgMTUuNiAzNy4zIDE4LjZjNS44IDEuNCAxMS4yIDMuNCAxNi4yIDYuMmMuNy0yLjcgMS4xLTUuNSAxLjEtOC40bC0uNC0xNDRjMC0xMC00LjctMTkuNC0xMi43LTI1LjVsLTk1LjUtNzJjLTExLjQtOC42LTI3LjEtOC42LTM4LjUgMGwtOTYgNzJ6TTM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwiXVxufTtcbnZhciBmYVNxdWFyZU5maSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtbmZpJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJlNTc2XCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTc1LjcgNjQuNkM2OC44IDE2Mi41IDY0IDE2OC44IDY0IDE3NlYzMzZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMzMuOGw2Ni4zIDExMC41YzMuNyA2LjIgMTEuMSA5LjEgMTggNy4yczExLjctOC4yIDExLjctMTUuNFYxNzZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMjc4LjJMOTMuNyAxNjcuOGMtMy43LTYuMi0xMS4xLTkuMS0xOC03LjJ6TTIyNCAxNzZ2NjQgOTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyNTZoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMjU2VjE5Mmg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYwIDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTc2elwiXVxufTtcbnZhciBmYUFycm93VXBGcm9tR3JvdW5kV2F0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtZnJvbS1ncm91bmQtd2F0ZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0YjVcIiwgXCJNMjg4IDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMlYxMDkuM2wyNS40IDI1LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtODAtODBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwyNTYgMTA5LjNWMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyem0tMTguNSA2OS45QzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFsMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzEyNi41IDUwMS43IDE1OSA1MTIgMTkyIDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2wwIDBDNDM5LjQgNDM3LjIgNDEwLjkgNDQ4IDM4NCA0NDhjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMHpNMTkyIDE5Mkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNDI1YzUuMy0zLjEgMTEuMi01LjQgMTcuNS02LjljMTMuMS0zLjEgMjYuNy05LjggMzcuMy0xOC42YzIyLjItMTguNyA1NC4zLTIwLjEgNzguMS0zLjRjMTggMTIuNCA0MC4xIDIwLjMgNTkuMSAyMC4zVjE5MnptMzg0IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDM4NFY0MTYuNWgwYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjMgNzguMSAzLjRjMTAuNiA4LjggMjQuMiAxNS42IDM3LjMgMTguNmM2LjMgMS41IDEyLjEgMy44IDE3LjUgNi45VjI0MHpcIl1cbn07XG52YXIgZmFNYXJ0aW5pR2xhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFydGluaS1nbGFzcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzg2NCwgXCJnbGFzcy1tYXJ0aW5pLWFsdFwiXSwgXCJmNTdiXCIsIFwiTTMyIDBDMTkuMSAwIDcuNCA3LjggMi40IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45TDIyNCAyNjkuM1Y0NDhIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2IDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OFYyNjkuM0w1MDIuNiA1NC42YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45UzQ5Mi45IDAgNDgwIDBIMzJ6TTE3My4zIDEyOGwtNjQtNjRINDAyLjdsLTY0IDY0SDE3My4zelwiXVxufTtcbnZhciBmYUdsYXNzTWFydGluaUFsdCA9IGZhTWFydGluaUdsYXNzO1xudmFyIGZhUm90YXRlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb3RhdGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wicm90YXRlLWJhY2tcIiwgXCJyb3RhdGUtYmFja3dhcmRcIiwgXCJ1bmRvLWFsdFwiXSwgXCJmMmVhXCIsIFwiTTQ4LjUgMjI0SDQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY3MmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJMOTguNiA5Ni42Yzg3LjYtODYuNSAyMjguNy04Ni4yIDMxNS44IDFjODcuNSA4Ny41IDg3LjUgMjI5LjMgMCAzMTYuOHMtMjI5LjMgODcuNS0zMTYuOCAwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwYzYyLjUgNjIuNSAxNjMuOCA2Mi41IDIyNi4zIDBzNjIuNS0xNjMuOCAwLTIyNi4zYy02Mi4yLTYyLjItMTYyLjctNjIuNS0yMjUuMy0xTDE4NSAxODNjNi45IDYuOSA4LjkgMTcuMiA1LjIgMjYuMnMtMTIuNSAxNC44LTIyLjIgMTQuOEg0OC41elwiXVxufTtcbnZhciBmYVJvdGF0ZUJhY2sgPSBmYVJvdGF0ZUxlZnQ7XG52YXIgZmFSb3RhdGVCYWNrd2FyZCA9IGZhUm90YXRlTGVmdDtcbnZhciBmYVVuZG9BbHQgPSBmYVJvdGF0ZUxlZnQ7XG52YXIgZmFUYWJsZUNvbHVtbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGUtY29sdW1ucycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY29sdW1uc1wiXSwgXCJmMGRiXCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTY0IDY0VjQxNkgyMjRWMTYwSDY0em0zODQgMEgyODhWNDE2SDQ0OFYxNjB6XCJdXG59O1xudmFyIGZhQ29sdW1ucyA9IGZhVGFibGVDb2x1bW5zO1xudmFyIGZhTGVtb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGVtb24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc4MTldLCBcImYwOTRcIiwgXCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0Yy02LjYgMC0xMyAxLTE5IDIuOWMtMjIuNSA3LTQ4LjEgMTQuOS03MSA5Yy03NS4yLTE5LjEtMTU2LjQgMTEtMjEzLjcgNjguM1MtNy4yIDI1MC44IDExLjkgMzI2YzUuOCAyMi45LTIgNDguNC05IDcxQzEgNDAzIDAgNDA5LjQgMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRjNi42IDAgMTMtMSAxOS4xLTIuOWMyMi41LTcgNDguMS0xNC45IDcxLTljNzUuMiAxOS4xIDE1Ni40LTExIDIxMy43LTY4LjNzODcuNS0xMzguNSA2OC4zLTIxMy43Yy01LjgtMjIuOSAyLTQ4LjQgOS03MWMxLjktNiAyLjktMTIuNCAyLjktMTkuMXpNMjEyLjUgMTI3LjRjLTU0LjYgMTYtMTAxLjEgNjIuNS0xMTcuMSAxMTcuMUM5Mi45IDI1MyA4NCAyNTcuOCA3NS41IDI1NS40UzYyLjIgMjQ0IDY0LjYgMjM1LjVjMTkuMS02NS4xIDczLjctMTE5LjggMTM4LjktMTM4LjljOC41LTIuNSAxNy40IDIuNCAxOS45IDEwLjlzLTIuNCAxNy40LTEwLjkgMTkuOXpcIl1cbn07XG52YXIgZmFIZWFkU2lkZU1hc2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLW1hc2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUwNjNcIiwgXCJNMzIgMjI0LjJjMC0yMi4yIDMuMi00My42IDkuMi02My45TDI2Mi4yIDMyMWMtNCA5LjUtNi4yIDIwLTYuMiAzMVY1MTJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzQ4LjYgMzIyLjQgMzIgMjc0LjEgMzIgMjI0LjJ6bTI0OC4zIDcwLjRMNTMgMTI5LjNDODguNyA1MyAxNjYuMiAwIDI1NiAwaDI0Yzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNS40IDYuNyA4LjYgMTQuOCA5LjQgMjMuMkgzMzZjLTIxLjcgMC00MS4zIDguNi01NS43IDIyLjZ6TTMzNiAzMDRINTM0bDAgMGgxMGwtMTkuNyA2NEgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINTE0LjVsLTkuOCAzMkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINDk0LjhsLS45IDIuOGMtOC4zIDI2LjktMzMuMSA0NS4yLTYxLjIgNDUuMkgyODhWMzUyYzAtMTQgNi0yNi43IDE1LjYtMzUuNGMwIDAgMCAwIDAgMGM4LjUtNy44IDE5LjktMTIuNiAzMi40LTEyLjZ6bTQ4LTgwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG52YXIgZmFIYW5kc2hha2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMmI1XCIsIFwiTTMyMy40IDg1LjJsLTk2LjggNzguNGMtMTYuMSAxMy0xOS4yIDM2LjQtNyA1My4xYzEyLjkgMTcuOCAzOCAyMS4zIDU1LjMgNy44bDk5LjMtNzcuMmM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTEyIDMxNi44VjEyOGgtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4yem0yMi44IDEyNC40bC01MS43IDQwLjJDMjYzIDI3NC40IDIxNy4zIDI2OCAxOTMuNyAyMzUuNmMtMjIuMi0zMC41LTE2LjYtNzMuMSAxMi43LTk2LjhsODMuMi02Ny4zYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTcyIDQ4VjM1MmgyOC4ybDkxLjQgODMuNGMxOS42IDE3LjkgNDkuOSAxNi41IDY3LjgtMy4xYzUuNS02LjEgOS4yLTEzLjIgMTEuMS0yMC42bDE3IDE1LjZjMTkuNSAxNy45IDQ5LjkgMTYuNiA2Ny44LTIuOWM0LjUtNC45IDcuOC0xMC42IDkuOS0xNi41YzE5LjQgMTMgNDUuOCAxMC4zIDYyLjEtNy41YzE3LjktMTkuNSAxNi42LTQ5LjktMi45LTY3LjhsLTEzNC4yLTEyM3pNMTYgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOEgxNnpNNDggMzIwYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNNTQ0IDEyOFYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTQ0YzAtOC44LTcuMi0xNi0xNi0xNkg1NDR6bTMyIDIwOGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwiXVxufTtcbnZhciBmYUdlbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnZW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgxNDJdLCBcImYzYTVcIiwgXCJNMTE2LjcgMzMuOGM0LjUtNi4xIDExLjctOS44IDE5LjMtOS44SDM3NmM3LjYgMCAxNC44IDMuNiAxOS4zIDkuOGwxMTIgMTUyYzYuOCA5LjIgNi4xIDIxLjktMS41IDMwLjRsLTIzMiAyNTZjLTQuNSA1LTExIDcuOS0xNy44IDcuOXMtMTMuMi0yLjktMTcuOC03LjlsLTIzMi0yNTZjLTcuNy04LjUtOC4zLTIxLjItMS41LTMwLjRsMTEyLTE1MnptMzguNSAzOS44Yy0zLjMgMi41LTQuMiA3LTIuMSAxMC41bDU3LjQgOTUuNkw2My4zIDE5MmMtNC4xIC4zLTcuMyAzLjgtNy4zIDhzMy4yIDcuNiA3LjMgOGwxOTIgMTZjLjQgMCAuOSAwIDEuMyAwbDE5Mi0xNmM0LjEtLjMgNy4zLTMuOCA3LjMtOHMtMy4yLTcuNi03LjMtOEwzMDEuNSAxNzkuOGw1Ny40LTk1LjZjMi4xLTMuNSAxLjItOC4xLTIuMS0xMC41cy03LjktMi0xMC43IDFMMjU2IDE3Mi4yIDE2NS45IDc0LjZjLTIuOC0zLTcuNC0zLjQtMTAuNy0xelwiXVxufTtcbnZhciBmYURvbGx5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvbGx5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJkb2xseS1ib3hcIl0sIFwiZjQ3MlwiLCBcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMGg3Mi45YzI3LjUgMCA1MiAxNy42IDYwLjcgNDMuOEwyNTcuNyAzMjBjMzAuMSAuNSA1Ni44IDE0LjkgNzQgMzdsMjAyLjEtNjcuNGMxNi44LTUuNiAzNC45IDMuNSA0MC41IDIwLjJzLTMuNSAzNC45LTIwLjIgNDAuNUwzNTIgNDE3LjdjLS45IDUyLjItNDMuNSA5NC4zLTk2IDk0LjNjLTUzIDAtOTYtNDMtOTYtOTZjMC0zMC44IDE0LjUtNTguMiAzNy03NS44TDEwNC45IDY0SDMyQzE0LjMgNjQgMCA0OS43IDAgMzJ6TTI0NC44IDEzNC41Yy01LjUtMTYuOCAzLjctMzQuOSAyMC41LTQwLjNMMzExIDc5LjRsMTkuOCA2MC45IDYwLjktMTkuOEwzNzEuOCA1OS42bDQ1LjctMTQuOGMxNi44LTUuNSAzNC45IDMuNyA0MC4zIDIwLjVsNDkuNCAxNTIuMmM1LjUgMTYuOC0zLjcgMzQuOS0yMC41IDQwLjNMMzM0LjUgMzA3LjJjLTE2LjggNS41LTM0LjktMy43LTQwLjMtMjAuNUwyNDQuOCAxMzQuNXpcIl1cbn07XG52YXIgZmFEb2xseUJveCA9IGZhRG9sbHk7XG52YXIgZmFTbW9raW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Ntb2tpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg2ODRdLCBcImY0OGRcIiwgXCJNNDQ4IDMyVjQzYzAgMzguMiAxNS4yIDc0LjggNDIuMiAxMDEuOGwyMSAyMWMyMSAyMSAzMi44IDQ5LjUgMzIuOCA3OS4ydjExYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI0NWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45bC0yMS0yMUM0MDUuOSAxNTEuMSAzODQgOTguMSAzODQgNDNWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpNNTc2IDI1NlYyNDVjMC0zOC4yLTE1LjItNzQuOC00Mi4yLTEwMS44bC0yMS0yMWMtMjEtMjEtMzIuOC00OS41LTMyLjgtNzkuMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjQzYzAgMTIuNyA1LjEgMjQuOSAxNC4xIDMzLjlsMjEgMjFjMzkgMzkgNjAuOSA5MS45IDYwLjkgMTQ3LjF2MTFjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ6TTAgNDE2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNDE2em0yMjQgMHYzMkgzODRWNDE2SDIyNHptMjg4LTY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhTWluaW1pemUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWluaW1pemUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImNvbXByZXNzLWFycm93cy1hbHRcIl0sIFwiZjc4Y1wiLCBcIk00NTYgMjI0SDMxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWNTZjMC05LjcgNS44LTE4LjUgMTQuOC0yMi4yczE5LjMtMS43IDI2LjIgNS4ybDQwIDQwTDQ0Mi4zIDUuN0M0NDYgMiA0NTAuOSAwIDQ1NiAwczEwIDIgMTMuNyA1LjdsMzYuNyAzNi43QzUxMCA0NiA1MTIgNTAuOSA1MTIgNTZzLTIgMTAtNS43IDEzLjdMNDMzIDE0M2w0MCA0MGM2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4ycy0xMi41IDE0LjgtMjIuMiAxNC44em0wIDY0YzkuNyAwIDE4LjUgNS44IDIyLjIgMTQuOHMxLjcgMTkuMy01LjIgMjYuMmwtNDAgNDAgNzMuNCA3My40YzMuNiAzLjYgNS43IDguNSA1LjcgMTMuN3MtMiAxMC01LjcgMTMuN2wtMzYuNyAzNi43QzQ2NiA1MTAgNDYxLjEgNTEyIDQ1NiA1MTJzLTEwLTItMTMuNy01LjdMMzY5IDQzM2wtNDAgNDBjLTYuOSA2LjktMTcuMiA4LjktMjYuMiA1LjJzLTE0LjgtMTIuNS0xNC44LTIyLjJWMzEyYzAtMTMuMyAxMC43LTI0IDI0LTI0SDQ1NnptLTI1NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0VjQ1NmMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC00MC00MEw2OS43IDUwNi4zQzY2IDUxMCA2MS4xIDUxMiA1NiA1MTJzLTEwLTItMTMuNy01LjdMNS43IDQ2OS43QzIgNDY2IDAgNDYxLjEgMCA0NTZzMi0xMCA1LjctMTMuN0w3OSAzNjkgMzkgMzI5Yy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yczEyLjUtMTQuOCAyMi4yLTE0LjhIMjAwek01NiAyMjRjLTkuNyAwLTE4LjUtNS44LTIyLjItMTQuOHMtMS43LTE5LjMgNS4yLTI2LjJsNDAtNDBMNS43IDY5LjdDMiA2NiAwIDYxLjEgMCA1NnMyLTEwIDUuNy0xMy43TDQyLjMgNS43QzQ2IDIgNTAuOSAwIDU2IDBzMTAgMiAxMy43IDUuN0wxNDMgNzlsNDAtNDBjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMnMxNC44IDEyLjUgMTQuOCAyMi4yVjIwMGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg1NnpcIl1cbn07XG52YXIgZmFDb21wcmVzc0Fycm93c0FsdCA9IGZhTWluaW1pemU7XG52YXIgZmFNb251bWVudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb251bWVudCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjVhNlwiLCBcIk0xODAuNyA0LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsODAgODBjMi41IDIuNSA0LjEgNS44IDQuNiA5LjNsNDAuMiAzMjJINTUuOUw5Ni4xIDk0Yy40LTMuNSAyLTYuOCA0LjYtOS4zbDgwLTgwek0xNTIgMjcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE1MnpNMzIgNDQ4SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFTbm93cGxvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbm93cGxvdycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjdkMlwiLCBcIk0yOTguOSA2NGw2OC42IDE2MEgyNTZsLTY0LTY0VjY0SDI5OC45ek00NDUuMSAyNDIuN2wtODcuNC0yMDRDMzQ3LjYgMTUuMyAzMjQuNSAwIDI5OC45IDBIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OFYxNjBIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjI5OC44QzI2LjIgMzE2LjggMCAzNTUuMyAwIDQwMGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMkgzNjhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC0xNy4yLTMuOS0zMy41LTEwLjgtNDhINTEydjUwLjdjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsNTQuNiA1NC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNTc2IDQwMi43VjMyMCAyMzUuMkw2MzMgMTY0YzExLTEzLjggOC44LTMzLjktNS00NXMtMzMuOS04LjgtNDUgNWwtNTcgNzEuMmMtOS4xIDExLjMtMTQgMjUuNC0xNCA0MFYyODhINDQ4VjI1Ni43Yy4xLTIuNC0uMi00LjgtLjYtNy4xcy0xLjItNC43LTIuMi02Ljh6TTM2OCAzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMTEyYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4SDM2OHpNMTQ0IDQwMGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem0yMTYgMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0tNTYtMjRhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMjAwIDQyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJdXG59O1xudmFyIGZhQW5nbGVzUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGVzLXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTg3LCBcImFuZ2xlLWRvdWJsZS1yaWdodFwiXSwgXCJmMTAxXCIsIFwiTTQ3MC42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyNTYgMjY1LjQgMzkzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MHptLTM1MiAxNjBsMTYwLTE2MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMjEwLjcgMjU2IDczLjQgMzkzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDB6XCJdXG59O1xudmFyIGZhQW5nbGVEb3VibGVSaWdodCA9IGZhQW5nbGVzUmlnaHQ7XG52YXIgZmFDYW5uYWJpcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYW5uYWJpcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU1ZlwiLCBcIk0yNTYgMGM1LjMgMCAxMC4zIDIuNyAxMy4zIDcuMWMxNS44IDIzLjUgMzYuNyA2My43IDQ5LjIgMTA5YzcuMiAyNi40IDExLjggNTUuMiAxMC40IDg0YzExLjUtOC44IDIzLjctMTYuNyAzNS44LTIzLjZjNDEtMjMuMyA4NC40LTM2LjkgMTEyLjItNDIuNWM1LjItMSAxMC43IC42IDE0LjQgNC40czUuNCA5LjIgNC40IDE0LjVjLTUuNiAyNy43LTE5LjMgNzAuOS00Mi43IDExMS43Yy05LjEgMTUuOS0xOS45IDMxLjctMzIuNCA0Ni4zYzI3LjggNi42IDUyLjQgMTcuMyA2Ny4yIDI1LjVjNS4xIDIuOCA4LjIgOC4yIDguMiAxNHMtMy4yIDExLjItOC4yIDE0Yy0xNS4yIDguNC00MC45IDE5LjUtNjkuOCAyNi4xYy0yMC4yIDQuNi00Mi45IDcuMi02NS4yIDQuNmw4LjMgMzMuMWMxLjUgNi4xLS42IDEyLjQtNS41IDE2LjRzLTExLjYgNC42LTE3LjIgMS45TDI4MCA0MTcuMlY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWNDE3LjJsLTU4LjUgMjkuMWMtNS42IDIuOC0xMi4zIDIuMS0xNy4yLTEuOXMtNy0xMC4zLTUuNS0xNi40bDguMy0zMy4xYy0yMi4yIDIuNi00NSAwLTY1LjItNC42Yy0yOC45LTYuNi01NC42LTE3LjYtNjkuOC0yNi4xYy01LjEtMi44LTguMi04LjItOC4yLTE0czMuMi0xMS4yIDguMi0xNGMxNC44LTguMiAzOS40LTE4LjggNjcuMi0yNS41Qzc4LjkgMjk2LjMgNjguMSAyODAuNSA1OSAyNjQuNmMtMjMuNC00MC44LTM3LjEtODQtNDIuNy0xMTEuN2MtMS4xLTUuMiAuNi0xMC43IDQuNC0xNC41czkuMi01LjQgMTQuNC00LjRjMjcuOSA1LjUgNzEuMiAxOS4yIDExMi4yIDQyLjVjMTIuMSA2LjkgMjQuMyAxNC43IDM1LjggMjMuNmMtMS40LTI4LjcgMy4xLTU3LjYgMTAuNC04NGMxMi41LTQ1LjMgMzMuNC04NS41IDQ5LjItMTA5YzMtNC40IDgtNy4xIDEzLjMtNy4xelwiXVxufTtcbnZhciBmYUNpcmNsZVBsYXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXBsYXknLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MTQ2OSwgXCJwbGF5LWNpcmNsZVwiXSwgXCJmMTQ0XCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg4LjMgMTQ3LjFjLTcuNiA0LjItMTIuMyAxMi4zLTEyLjMgMjAuOVYzNDRjMCA4LjcgNC43IDE2LjcgMTIuMyAyMC45czE2LjggNC4xIDI0LjMtLjVsMTQ0LTg4YzcuMS00LjQgMTEuNS0xMi4xIDExLjUtMjAuNXMtNC40LTE2LjEtMTEuNS0yMC41bC0xNDQtODhjLTcuNC00LjUtMTYuNy00LjctMjQuMy0uNXpcIl1cbn07XG52YXIgZmFQbGF5Q2lyY2xlID0gZmFDaXJjbGVQbGF5O1xudmFyIGZhVGFibGV0cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZXRzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDkwXCIsIFwiTTYxNC4zIDI0N2MxNi4zLTI1IDI1LjctNTQuOSAyNS43LTg3QzY0MCA3MS42IDU2OC40IDAgNDgwIDBjLTMyLjEgMC02MS45IDkuNC04NyAyNS43Yy03LjkgNS4yLTguNSAxNi4yLTEuOCAyMi45TDU5MS40IDI0OC44YzYuNyA2LjcgMTcuOCA2LjIgMjIuOS0xLjh6TTU2NyAyOTQuM2M3LjktNS4yIDguNS0xNi4yIDEuOC0yMi45TDM2OC42IDcxLjJjLTYuNy02LjctMTcuOC02LjItMjIuOSAxLjhjLTE2LjMgMjUtMjUuNyA1NC45LTI1LjcgODdjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBjMzIuMSAwIDYxLjktOS40IDg3LTI1Ljd6TTMwMS41IDM2OEgxOC41Yy05LjUgMC0xNi45IDguMi0xNSAxNy41QzE4LjkgNDU3LjggODMuMSA1MTIgMTYwIDUxMnMxNDEuMS01NC4yIDE1Ni41LTEyNi41YzItOS4zLTUuNS0xNy41LTE1LTE3LjV6bTAtMzJjOS41IDAgMTYuOS04LjIgMTUtMTcuNUMzMDEuMSAyNDYuMiAyMzYuOSAxOTIgMTYwIDE5MlMxOC45IDI0Ni4yIDMuNSAzMTguNWMtMiA5LjMgNS41IDE3LjUgMTUgMTcuNUgzMDEuNXpcIl1cbn07XG52YXIgZmFFdGhlcm5ldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdldGhlcm5ldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc5NlwiLCBcIk0wIDIyNFY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWNDQ4aDY0VjMzNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2VjQ0OGg2NFYzMzZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNlY0NDhoNjRWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWNDQ4aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDhWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDM4NFY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMySDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJdXG59O1xudmFyIGZhRXVyb1NpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXVyby1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbODM2NCwgXCJldXJcIiwgXCJldXJvXCJdLCBcImYxNTNcIiwgXCJNNDguMSAyNDBjLS4xIDIuNy0uMSA1LjMtLjEgOHYxNmMwIDIuNyAwIDUuMyAuMSA4SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDYwLjNDODkuOSA0MTkuOSAxNzAgNDgwIDI2NCA0ODBoMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjY0Yy01Ny45IDAtMTA4LjItMzIuNC0xMzMuOS04MEgyNTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyLjJjLS4xLTIuNi0uMi01LjMtLjItOFYyNDhjMC0yLjcgLjEtNS40IC4yLThIMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEzMC4xYzI1LjctNDcuNiA3Ni04MCAxMzMuOS04MGgyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyNjRDMTcwIDMyIDg5LjkgOTIuMSA2MC4zIDE3NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OC4xelwiXVxufTtcbnZhciBmYUV1ciA9IGZhRXVyb1NpZ247XG52YXIgZmFFdXJvID0gZmFFdXJvU2lnbjtcbnZhciBmYUNoYWlyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoYWlyJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI5NjgxXSwgXCJmNmMwXCIsIFwiTTI0OCA0OFYyNTZoNDhWNTguN2MyMy45IDEzLjggNDAgMzkuNyA0MCA2OS4zVjI1Nmg0OFYxMjhDMzg0IDU3LjMgMzI2LjcgMCAyNTYgMEgxOTJDMTIxLjMgMCA2NCA1Ny4zIDY0IDEyOFYyNTZoNDhWMTI4YzAtMjkuNiAxNi4xLTU1LjUgNDAtNjkuM1YyNTZoNDhWNDhoNDh6TTQ4IDI4OGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTYgMzJjLTUgOS45LTQuNCAyMS43IDEuNCAzMS4xUzIwLjkgMzg0IDMyIDM4NGwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0SDM1MnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGMxMS4xIDAgMjEuNC01LjcgMjcuMi0xNS4yczYuNC0yMS4yIDEuNC0zMS4xbC0xNi0zMkM0MjMuMiAyOTQuOCA0MTIuMSAyODggNDAwIDI4OEg0OHpcIl1cbn07XG52YXIgZmFDaXJjbGVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MTUzMywgXCJjaGVjay1jaXJjbGVcIl0sIFwiZjA1OFwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzY5IDIwOUwyNDEgMzM3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0N0wzMzUgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIl1cbn07XG52YXIgZmFDaGVja0NpcmNsZSA9IGZhQ2lyY2xlQ2hlY2s7XG52YXIgZmFDaXJjbGVTdG9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1zdG9wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjIwOTQsIFwic3RvcC1jaXJjbGVcIl0sIFwiZjI4ZFwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTkyIDE2MEgzMjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYVN0b3BDaXJjbGUgPSBmYUNpcmNsZVN0b3A7XG52YXIgZmFDb21wYXNzRHJhZnRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tcGFzcy1kcmFmdGluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZHJhZnRpbmctY29tcGFzc1wiXSwgXCJmNTY4XCIsIFwiTTM1MiA5NmMwIDE0LjMtMy4xIDI3LjktOC44IDQwLjJMMzk2IDIyNy40Yy0yMy43IDI1LjMtNTQuMiA0NC4xLTg4LjUgNTMuNkwyNTYgMTkyaDAgMGwtNjggMTE3LjVjMjEuNSA2LjggNDQuMyAxMC41IDY4LjEgMTAuNWM3MC43IDAgMTMzLjgtMzIuNyAxNzQuOS04NGMxMS4xLTEzLjggMzEuMi0xNiA0NS01czE2IDMxLjIgNSA0NUM0MjguMSAzNDEuOCAzNDcgMzg0IDI1NiAzODRjLTM1LjQgMC02OS40LTYuNC0xMDAuNy0xOC4xTDk4LjcgNDYzLjdDOTQgNDcxLjggODcgNDc4LjQgNzguNiA0ODIuNkwyMy4yIDUxMC4zYy01IDIuNS0xMC45IDIuMi0xNS42LS43UzAgNTAxLjUgMCA0OTZWNDQwLjZjMC04LjQgMi4yLTE2LjcgNi41LTI0LjFsNjAtMTAzLjdDNTMuNyAzMDEuNiA0MS44IDI4OS4zIDMxLjIgMjc2Yy0xMS4xLTEzLjgtOC44LTMzLjkgNS00NXMzMy45LTguOCA0NSA1YzUuNyA3LjEgMTEuOCAxMy44IDE4LjIgMjAuMWw2OS40LTExOS45Yy01LjYtMTIuMi04LjgtMjUuOC04LjgtNDAuMmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2em0yMSAyOTcuOWMzMi42LTEyLjggNjIuNS0zMC44IDg4LjktNTIuOWw0My43IDc1LjVjNC4yIDcuMyA2LjUgMTUuNiA2LjUgMjQuMVY0OTZjMCA1LjUtMi45IDEwLjctNy42IDEzLjZzLTEwLjYgMy4yLTE1LjYgLjdsLTU1LjQtMjcuN2MtOC40LTQuMi0xNS40LTEwLjgtMjAuMS0xOC45TDM3MyAzOTMuOXpNMjU2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhRHJhZnRpbmdDb21wYXNzID0gZmFDb21wYXNzRHJhZnRpbmc7XG52YXIgZmFQbGF0ZVdoZWF0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsYXRlLXdoZWF0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTVhXCIsIFwiTTE3NiAzMmM0NC4yIDAgODAgMzUuOCA4MCA4MHYxNmMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjQ4YzAtOC44IDcuMi0xNiAxNi0xNnpNNTYgNjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTI0IDEzNkgxMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTggOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek0yNzIgNDhjMC04LjggNy4yLTE2IDE2LTE2YzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBWNDh6TTQwMCAzMmM0NC4yIDAgODAgMzUuOCA4MCA4MHYxNmMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjQ4YzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTYwdjE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZWMjU2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMzUyIDE3NmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNTZjMC00NC4yIDM1LjgtODAgODAtODB6bS05NiAxNnYxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1NmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZ6TTMuNSAzNDcuNkMxLjYgMzMyLjkgMTMgMzIwIDI3LjggMzIwSDQ4NC4yYzE0LjggMCAyNi4yIDEyLjkgMjQuNCAyNy42QzUwMi4zIDM5Ny44IDQ2NC4yIDQzNyA0MTYgNDQ2djJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnYtMmMtNDguMi05LTg2LjMtNDguMi05Mi41LTk4LjR6XCJdXG59O1xudmFyIGZhSWNpY2xlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpY2ljbGVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2FkXCIsIFwiTTc1LjggMzA0LjhMMSAzNS43Yy0uNy0yLjUtMS01LTEtNy41QzAgMTIuNiAxMi42IDAgMjguMiAwSDQ4Mi40QzQ5OC44IDAgNTEyIDEzLjIgNTEyIDI5LjZjMCAxLjYtLjEgMy4zLS40IDQuOUw0MzQuNiA0OTYuMWMtMS41IDkuMi05LjUgMTUuOS0xOC44IDE1LjljLTkuMiAwLTE3LjEtNi42LTE4LjctMTUuNkwzMzYgMTYwIDMwNy4yIDMwMy45Yy0xLjkgOS4zLTEwLjEgMTYuMS0xOS42IDE2LjFjLTkuMiAwLTE3LjItNi4yLTE5LjQtMTUuMUwyNDAgMTkyIDIxMC42IDM2OC4yYy0xLjUgOS4xLTkuNCAxNS44LTE4LjYgMTUuOHMtMTcuMS02LjctMTguNi0xNS44TDE0NCAxOTIgMTE1LjkgMzA0LjNjLTIuMyA5LjItMTAuNiAxNS43LTIwLjEgMTUuN2MtOS4zIDAtMTcuNS02LjItMjAtMTUuMnpcIl1cbn07XG52YXIgZmFQZXJzb25TaGVsdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1zaGVsdGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTRmXCIsIFwiTTI3MS45IDQuMmMtOS44LTUuNi0yMS45LTUuNi0zMS44IDBsLTIyNCAxMjhDNi4yIDEzNy45IDAgMTQ4LjUgMCAxNjBWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTc4LjZMMjU2IDY4LjkgNDQ4IDE3OC42VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGMwLTExLjUtNi4yLTIyLjEtMTYuMS0yNy44bC0yMjQtMTI4ek0yNTYgMjA4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHptLTggMjgwVjQwMGgxNnY4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjMxMy41bDI2LjkgNDkuOWM2LjMgMTEuNyAyMC44IDE2IDMyLjUgOS44czE2LTIwLjggOS44LTMyLjVsLTM3LjktNzAuM2MtMTUuMy0yOC41LTQ1LjEtNDYuMy03Ny41LTQ2LjNIMjQ2LjJjLTMyLjQgMC02Mi4xIDE3LjgtNzcuNSA0Ni4zbC0zNy45IDcwLjNjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDIwMCAzMTMuNVY0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHpcIl1cbn07XG52YXIgZmFOZXV0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbmV1dGVyJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbOTkwNl0sIFwiZjIyY1wiLCBcIk04MCAxNzZhMTEyIDExMiAwIDEgMSAyMjQgMEExMTIgMTEyIDAgMSAxIDgwIDE3NnpNMjI0IDM0OS4xYzgxLjktMTUgMTQ0LTg2LjggMTQ0LTE3My4xQzM2OCA3OC44IDI4OS4yIDAgMTkyIDBTMTYgNzguOCAxNiAxNzZjMCA4Ni4zIDYyLjEgMTU4LjEgMTQ0IDE3My4xVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM0OS4xelwiXVxufTtcbnZhciBmYUlkQmFkZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWQtYmFkZ2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyYzFcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptOTYgMzIwaDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwem0tMzItOTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek0xNDQgNjRoOTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYU1hcmtlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJrZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YTFcIiwgXCJNNDgxIDMxQzQ0NS4xLTQuOCAzODYuOS00LjggMzUxIDMxbC0xNSAxNUwzMjIuOSAzM0MyOTQuOCA0LjkgMjQ5LjIgNC45IDIyMS4xIDMzTDEzNSAxMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMEwyNTUgNjYuOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzMDIuMSA4MCAxODYuMyAxOTUuNyAzMTYuMyAzMjUuNyA0ODEgMTYxYzM1LjktMzUuOSAzNS45LTk0LjEgMC0xMjkuOXpNMjkzLjcgMzQ4LjNMMTYzLjcgMjE4LjMgOTkuNSAyODIuNWMtNDggNDgtODAuOCAxMDkuMi05NC4xIDE3NS44bC01IDI1Yy0xLjYgNy45IC45IDE2IDYuNiAyMS43czEzLjggOC4xIDIxLjcgNi42bDI1LTVjNjYuNi0xMy4zIDEyNy44LTQ2LjEgMTc1LjgtOTQuMWw2NC4yLTY0LjJ6XCJdXG59O1xudmFyIGZhRmFjZUxhdWdoQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWxhdWdoLWJlYW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1MTMsIFwibGF1Z2gtYmVhbVwiXSwgXCJmNTlhXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek05Ni44IDMxNC4xYy0zLjgtMTMuNyA3LjQtMjYuMSAyMS42LTI2LjFIMzkzLjZjMTQuMiAwIDI1LjUgMTIuNCAyMS42IDI2LjFDMzk2LjIgMzgyIDMzMi4xIDQzMiAyNTYgNDMycy0xNDAuMi01MC0xNTkuMi0xMTcuOXpNMjE3LjYgMjEyLjhsMCAwIDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMHptMTYwIDBsMCAwLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yIDAgMCAwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGwwIDAgMCAwIDAgMHpcIl1cbn07XG52YXIgZmFMYXVnaEJlYW0gPSBmYUZhY2VMYXVnaEJlYW07XG52YXIgZmFIZWxpY29wdGVyU3ltYm9sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlbGljb3B0ZXItc3ltYm9sJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTAyXCIsIFwiTTQ0NS4zIDIyNEg1MTBDNDk1LjYgMTA4LjIgNDAzLjggMTYuNCAyODggMlY2Ni43QzM2OC40IDgwLjEgNDMxLjkgMTQzLjYgNDQ1LjMgMjI0ek01MTAgMjg4SDQ0NS4zQzQzMS45IDM2OC40IDM2OC40IDQzMS45IDI4OCA0NDUuNFY1MTBjMTE1LjgtMTQuNCAyMDcuNi0xMDYuMiAyMjItMjIyek0yIDI4OEMxNi40IDQwMy44IDEwOC4yIDQ5NS42IDIyNCA1MTBWNDQ1LjRDMTQzLjYgNDMxLjkgODAuMSAzNjguNCA2Ni43IDI4OEgyem0wLTY0SDY2LjdDODAuMSAxNDMuNiAxNDMuNiA4MC4xIDIyNCA2Ni43VjJDMTA4LjIgMTYuNCAxNi40IDEwOC4yIDIgMjI0em0yMDYtNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4aDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0SDIwOFYxNjB6XCJdXG59O1xudmFyIGZhVW5pdmVyc2FsQWNjZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VuaXZlcnNhbC1hY2Nlc3MnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyOWFcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNjEuNS04Ni4xYy0xMi4yLTUuMi0yNi4zIC40LTMxLjUgMTIuNnMuNCAyNi4zIDEyLjYgMzEuNWwxMS45IDUuMWMxNy4zIDcuNCAzNS4yIDEyLjkgNTMuNiAxNi4zdjUwLjFjMCA0LjMtLjcgOC42LTIuMSAxMi42bC0yOC43IDg2LjFjLTQuMiAxMi42IDIuNiAyNi4yIDE1LjIgMzAuNHMyNi4yLTIuNiAzMC40LTE1LjJsMjQuNC03My4yYzEuMy0zLjggNC44LTYuNCA4LjgtNi40czcuNiAyLjYgOC44IDYuNGwyNC40IDczLjJjNC4yIDEyLjYgMTcuOCAxOS40IDMwLjQgMTUuMnMxOS40LTE3LjggMTUuMi0zMC40bC0yOC43LTg2LjFjLTEuNC00LjEtMi4xLTguMy0yLjEtMTIuNlYyMzUuNWMxOC40LTMuNSAzNi4zLTguOSA1My42LTE2LjNsMTEuOS01LjFjMTIuMi01LjIgMTcuOC0xOS4zIDEyLjYtMzEuNXMtMTkuMy0xNy44LTMxLjUtMTIuNkwzMzguNyAxNzVjLTI2LjEgMTEuMi01NC4yIDE3LTgyLjcgMTdzLTU2LjUtNS44LTgyLjctMTdsLTExLjktNS4xek0yNTYgMTYwYTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpcIl1cbn07XG52YXIgZmFDaXJjbGVDaGV2cm9uVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWNoZXZyb24tdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImNoZXZyb24tY2lyY2xlLXVwXCJdLCBcImYxMzlcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM3NyAyNzFjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtODctODctODcgODdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMjM5IDE2N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzNzcgMjcxelwiXVxufTtcbnZhciBmYUNoZXZyb25DaXJjbGVVcCA9IGZhQ2lyY2xlQ2hldnJvblVwO1xudmFyIGZhTGFyaVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFyaS1zaWduJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMWM4XCIsIFwiTTE0NCAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY5Ni43YzUuMy0uNCAxMC42LS43IDE2LS43czEwLjcgLjIgMTYgLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OS40YzU0LjkgMjUuMiA5NS44IDc1LjUgMTA4LjIgMTM2LjJjMy41IDE3LjMtNy43IDM0LjItMjUgMzcuN3MtMzQuMi03LjctMzcuNy0yNWMtNi4xLTI5LjktMjIuNS01NS45LTQ1LjQtNzQuM1YyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYxYy01LjItLjctMTAuNi0xLTE2LTFzLTEwLjggLjMtMTYgMXY5NWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxODguMUM4Mi43IDIxMS41IDY0IDI0Ny42IDY0IDI4OGMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDQ4LjlDMTguNSAzODIgMCAzMzcuMiAwIDI4OGMwLTc3LjUgNDUuOS0xNDQuMyAxMTItMTc0LjZWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhVm9sY2FubyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2xjYW5vJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3NzU1XSwgXCJmNzcwXCIsIFwiTTE2MCAxNDRjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMTUuNyAwIDMwIDUuNiA0MS4yIDE1QzIxMi40IDEyLjQgMjMyLjcgMCAyNTYgMHM0My42IDEyLjQgNTQuOCAzMUMzMjIgMjEuNiAzMzYuMyAxNiAzNTIgMTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRjLTE0LjcgMC0yOC4zLTUtMzkuMS0xMy4zbC0zMiA0OEMyNzUuMyAxODcgMjY2IDE5MiAyNTYgMTkycy0xOS4zLTUtMjQuOS0xMy4zbC0zMi00OEMxODguMyAxMzkgMTc0LjcgMTQ0IDE2MCAxNDR6TTE0NCAzNTJsNDguNC0yNC4yYzEwLjItNS4xIDIxLjYtNy44IDMzLTcuOGMxOS42IDAgMzguNCA3LjggNTIuMiAyMS42bDMyLjUgMzIuNWM2LjMgNi4zIDE0LjkgOS45IDIzLjggOS45YzExLjMgMCAyMS44LTUuNiAyOC0xNWw5LjctMTQuNi01OC45LTY2LjNjLTkuMS0xMC4yLTIyLjItMTYuMS0zNS45LTE2LjFIMjM1LjFjLTEzLjcgMC0yNi44IDUuOS0zNS45IDE2LjFsLTU5LjkgNjcuNEwxNDQgMzUyem0xOS40LTk1LjhjMTguMi0yMC41IDQ0LjMtMzIuMiA3MS44LTMyLjJoNDEuOGMyNy40IDAgNTMuNSAxMS43IDcxLjggMzIuMmwxNTAuMiAxNjljOC41IDkuNSAxMy4yIDIxLjkgMTMuMiAzNC43YzAgMjguOC0yMy40IDUyLjItNTIuMiA1Mi4ySDUyLjJDMjMuNCA1MTIgMCA0ODguNiAwIDQ1OS44YzAtMTIuOCA0LjctMjUuMSAxMy4yLTM0LjdsMTUwLjItMTY5elwiXVxufTtcbnZhciBmYVBlcnNvbldhbGtpbmdEYXNoZWRMaW5lQXJyb3dSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24td2Fsa2luZy1kYXNoZWQtbGluZS1hcnJvdy1yaWdodCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU1M1wiLCBcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnpNNTUwLjYgMTUzLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDUzMC43IDIyNEgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTMwLjdsLTI1LjQgMjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4MC04MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6TTM5MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFY3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxNTJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxNTJ6TTM5MiAzMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMzQ0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0NDB6XCJdXG59O1xudmFyIGZhU3RlcmxpbmdTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0ZXJsaW5nLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxNjMsIFwiZ2JwXCIsIFwicG91bmQtc2lnblwiXSwgXCJmMTU0XCIsIFwiTTExMiAxNjAuNGMwLTM1LjUgMjguOC02NC40IDY0LjQtNjQuNGM2LjkgMCAxMy44IDEuMSAyMC40IDMuM2w4MS4yIDI3LjFjMTYuOCA1LjYgMzQuOS0zLjUgNDAuNS0yMC4ycy0zLjUtMzQuOS0yMC4yLTQwLjVMMjE3IDM4LjZjLTEzLjEtNC40LTI2LjgtNi42LTQwLjYtNi42QzEwNS41IDMyIDQ4IDg5LjUgNDggMTYwLjRWMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4djQ0LjVjMCAxNy40LTQuNyAzNC41LTEzLjcgNDkuNEw0LjYgNDMxLjVjLTUuOSA5LjktNi4xIDIyLjItLjQgMzIuMlMyMC41IDQ4MCAzMiA0ODBIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDg4LjVsLjctMS4xQzEwNC4xIDM5MCAxMTIgMzYxLjUgMTEyIDMzMi41VjI4OEgyMjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTEyVjE2MC40elwiXVxufTtcbnZhciBmYUdicCA9IGZhU3RlcmxpbmdTaWduO1xudmFyIGZhUG91bmRTaWduID0gZmFTdGVybGluZ1NpZ247XG52YXIgZmFWaXJ1c2VzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpcnVzZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzZcIiwgXCJNMTkyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMzcuNWMwIDM1LjYgNDMuMSA1My41IDY4LjMgMjguM2w5LjUtOS41YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtOS41IDkuNUMyOTMgMTI0LjkgMzEwLjkgMTY4IDM0Ni41IDE2OEgzNjBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzQ2LjVjLTM1LjYgMC01My41IDQzLjEtMjguMyA2OC4zbDkuNSA5LjVjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtOS41LTkuNUMyNTkuMSAyOTMgMjE2IDMxMC45IDIxNiAzNDYuNVYzNjBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzQ2LjVjMC0zNS42LTQzLjEtNTMuNS02OC4zLTI4LjNsLTkuNSA5LjVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsOS41LTkuNUM5MSAyNTkuMSA3My4xIDIxNiAzNy41IDIxNkgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgzNy41YzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zbC05LjUtOS41Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsOS41IDkuNUMxMjQuOSA5MSAxNjggNzMuMSAxNjggMzcuNVYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHptNDggMjI0YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptLTQ4LTY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTMyMCA4MGMwIDMzIDM5LjkgNDkuNSA2My4yIDI2LjJjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42QzU3NC41IDMxMi4xIDU5MSAzNTIgNjI0IDM1MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMzMgMC00OS41IDM5LjktMjYuMiA2My4yYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBDNTUxLjkgNDQ2LjUgNTEyIDQ2MyA1MTIgNDk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2YzAtMzMtMzkuOS00OS41LTYzLjItMjYuMmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkM0MTcuNSA0MjMuOSA0MDEgMzg0IDM2OCAzODRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZjMzMgMCA0OS41LTM5LjkgMjYuMi02My4yYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBDNDQwLjEgMjg5LjUgNDgwIDI3MyA0ODAgMjQwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTAgMTEyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJdXG59O1xudmFyIGZhU3F1YXJlUGVyc29uQ29uZmluZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLXBlcnNvbi1jb25maW5lZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTU3N1wiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTk2IDExMmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem04MCAxMDRjMC0zMC45IDI1LjEtNTYgNTYtNTZzNTYgMjUuMSA1NiA1NlYzNTAuMWMwIDM2LjQtMjkuNSA2NS45LTY1LjkgNjUuOWMtMTcuNSAwLTM0LjMtNi45LTQ2LjYtMTkuM0wxODQuOCAzNDJsLTI4LjEgNTYuM2MtNy45IDE1LjgtMjcuMSAyMi4yLTQyLjkgMTQuM3MtMjIuMi0yNy4xLTE0LjMtNDIuOWw0OC05NmM0LjYtOS4yIDEzLjMtMTUuNiAyMy41LTE3LjNzMjAuNSAxLjcgMjcuOCA5TDI0MCAzMDYuN1YyNDh6XCJdXG59O1xudmFyIGZhVXNlclRpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXRpZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUwOFwiLCBcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDEgMjI0IDBhMTI4IDEyOCAwIDEgMSAwIDI1NnpNMjA5LjEgMzU5LjJsLTE4LjYtMzFjLTYuNC0xMC43IDEuMy0yNC4yIDEzLjctMjQuMkgyMjRoMTkuN2MxMi40IDAgMjAuMSAxMy42IDEzLjcgMjQuMmwtMTguNiAzMSAzMy40IDEyMy45IDM2LTE0Ni45YzItOC4xIDkuOC0xMy40IDE3LjktMTEuM2M3MC4xIDE3LjYgMTIxLjkgODEgMTIxLjkgMTU2LjRjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43SDI4NS41Yy0yLjEgMC00LS40LTUuOC0xLjFsLjMgMS4xSDE2OGwuMy0xLjFjLTEuOCAuNy0zLjggMS4xLTUuOCAxLjFIMzAuN0MxMy44IDUxMiAwIDQ5OC4yIDAgNDgxLjNjMC03NS41IDUxLjktMTM4LjkgMTIxLjktMTU2LjRjOC4xLTIgMTUuOSAzLjMgMTcuOSAxMS4zbDM2IDE0Ni45IDMzLjQtMTIzLjl6XCJdXG59O1xudmFyIGZhQXJyb3dEb3duTG9uZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1kb3duLWxvbmcnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImxvbmctYXJyb3ctZG93blwiXSwgXCJmMTc1XCIsIFwiTTE2OS40IDUwMi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDQwMi43IDIyNCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDM3MC43TDg2LjYgMzI5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDEyOCAxMjh6XCJdXG59O1xudmFyIGZhTG9uZ0Fycm93RG93biA9IGZhQXJyb3dEb3duTG9uZztcbnZhciBmYVRlbnRBcnJvd0Rvd25Ub0xpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVudC1hcnJvdy1kb3duLXRvLWxpbmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1N2VcIiwgXCJNMjQxLjggMTExLjljOC45IDkuOSA4LjEgMjUtMS44IDMzLjlsLTgwIDcyYy05LjEgOC4yLTIzIDguMi0zMi4xIDBsLTgwLTcyYy05LjktOC45LTEwLjctMjQtMS44LTMzLjlzMjQtMTAuNyAzMy45LTEuOGwzOS45IDM2TDEyMCAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMTIyLjEgMzkuOS0zNmM5LjktOC45IDI1LTguMSAzMy45IDEuOHptMTIyLjggMjIuNmMxMS41LTguNyAyNy4zLTguNyAzOC44IDBsMTY4IDEyOGM2LjYgNSAxMSAxMi41IDEyLjMgMjAuN2wyNCAxNjAgLjcgNC43YzE3LjUgLjIgMzEuNiAxNC40IDMxLjYgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMTU5LjZsLjctNC43IDI0LTE2MGMxLjItOC4yIDUuNi0xNS43IDEyLjMtMjAuN2wxNjgtMTI4ek0zODQgNDQ4aDc2LjhMMzg0IDMyMFY0NDh6XCJdXG59O1xudmFyIGZhQ2VydGlmaWNhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2VydGlmaWNhdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYTNcIiwgXCJNMjExIDcuM0MyMDUgMSAxOTYtMS40IDE4Ny42IC44cy0xNC45IDguOS0xNy4xIDE3LjNMMTU0LjcgODAuNmwtNjItMTcuNWMtOC40LTIuNC0xNy40IDAtMjMuNSA2LjFzLTguNSAxNS4xLTYuMSAyMy41bDE3LjUgNjJMMTguMSAxNzAuNmMtOC40IDIuMS0xNSA4LjctMTcuMyAxNy4xUzEgMjA1IDcuMyAyMTFsNDYuMiA0NUw3LjMgMzAxQzEgMzA3LTEuNCAzMTYgLjggMzI0LjRzOC45IDE0LjkgMTcuMyAxNy4xbDYyLjUgMTUuOC0xNy41IDYyYy0yLjQgOC40IDAgMTcuNCA2LjEgMjMuNXMxNS4xIDguNSAyMy41IDYuMWw2Mi0xNy41IDE1LjggNjIuNWMyLjEgOC40IDguNyAxNSAxNy4xIDE3LjNzMTcuMy0uMiAyMy40LTYuNGw0NS00Ni4yIDQ1IDQ2LjJjNi4xIDYuMiAxNSA4LjcgMjMuNCA2LjRzMTQuOS04LjkgMTcuMS0xNy4zbDE1LjgtNjIuNSA2MiAxNy41YzguNCAyLjQgMTcuNCAwIDIzLjUtNi4xczguNS0xNS4xIDYuMS0yMy41bC0xNy41LTYyIDYyLjUtMTUuOGM4LjQtMi4xIDE1LTguNyAxNy4zLTE3LjFzLS4yLTE3LjMtNi40LTIzLjRsLTQ2LjItNDUgNDYuMi00NWM2LjItNi4xIDguNy0xNSA2LjQtMjMuNHMtOC45LTE0LjktMTcuMy0xNy4xbC02Mi41LTE1LjggMTcuNS02MmMyLjQtOC40IDAtMTcuNC02LjEtMjMuNXMtMTUuMS04LjUtMjMuNS02LjFsLTYyIDE3LjVMMzQxLjQgMTguMWMtMi4xLTguNC04LjctMTUtMTcuMS0xNy4zUzMwNyAxIDMwMSA3LjNMMjU2IDUzLjUgMjExIDcuM3pcIl1cbn07XG52YXIgZmFSZXBseUFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZXBseS1hbGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcIm1haWwtcmVwbHktYWxsXCJdLCBcImYxMjJcIiwgXCJNMjA5LjQgMzkuNWMtOS4xLTkuNi0yNC4zLTEwLTMzLjktLjlMMzMuOCAxNzMuMmMtMTkuOSAxOC45LTE5LjkgNTAuNyAwIDY5LjZMMTc1LjUgMzc3LjRjOS42IDkuMSAyNC44IDguNyAzMy45LS45czguNy0yNC44LS45LTMzLjlMNjYuOCAyMDggMjA4LjUgNzMuNGM5LjYtOS4xIDEwLTI0LjMgLjktMzMuOXpNMzUyIDY0YzAtMTIuNi03LjQtMjQuMS0xOS0yOS4ycy0yNS0zLTM0LjQgNS40bC0xNjAgMTQ0Yy02LjcgNi4xLTEwLjYgMTQuNy0xMC42IDIzLjhzMy45IDE3LjcgMTAuNiAyMy44bDE2MCAxNDRjOS40IDguNSAyMi45IDEwLjYgMzQuNCA1LjRzMTktMTYuNiAxOS0yOS4yVjI4OGgzMmM1MyAwIDk2IDQzIDk2IDk2YzAgMzAuNC0xMi44IDQ3LjktMjIuMiA1Ni43Yy01LjUgNS4xLTkuOCAxMi05LjggMTkuNWMwIDEwLjkgOC44IDE5LjcgMTkuNyAxOS43YzIuOCAwIDUuNi0uNiA4LjEtMS45QzQ5NC41IDQ2Ny45IDU3NiA0MTcuMyA1NzYgMzA0YzAtOTcuMi03OC44LTE3Ni0xNzYtMTc2SDM1MlY2NHpcIl1cbn07XG52YXIgZmFNYWlsUmVwbHlBbGwgPSBmYVJlcGx5QWxsO1xudmFyIGZhU3VpdGNhc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3VpdGNhc2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjk1MjNdLCBcImYwZjJcIiwgXCJNMTc2IDU2Vjk2SDMzNlY1NmMwLTQuNC0zLjYtOC04LThIMTg0Yy00LjQgMC04IDMuNi04IDh6TTEyOCA5NlY1NmMwLTMwLjkgMjUuMS01NiA1Ni01NkgzMjhjMzAuOSAwIDU2IDI1LjEgNTYgNTZWOTZ2MzJWNDgwSDEyOFYxMjggOTZ6TTY0IDk2SDk2VjQ4MEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0ek00NDggNDgwSDQxNlY5NmgzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjR6XCJdXG59O1xudmFyIGZhUGVyc29uU2thdGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tc2thdGluZycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wic2thdGluZ1wiXSwgXCJmN2M1XCIsIFwiTTM1MiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0xMjggMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDMxOS40YzQzLjYgMCA2NC42IDUzLjQgMzIuOCA4My4xbC03NC40IDY5LjQgNjAuMiA2MC4yYzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNDkuM2wtNzcuOS03Ny44Yy0yNi42LTI2LjYtMjQuNi03MC4zIDQuMy05NC40bDIwLjQtMTdIMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNODEuNCAzNTMuNGw4Ni45LTg2LjljNC42IDEwIDExIDE5LjMgMTkuMyAyNy41bDIxLjggMjEuOC04Mi43IDgyLjdjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zem0zMjIuNSA5NS4xYzguNiAyLjEgMTMuOCAxMC44IDExLjYgMTkuNGwtLjQgMS43Yy02LjIgMjQuOS0yOC42IDQyLjQtNTQuMyA0Mi40SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg4OC44YzExIDAgMjAuNi03LjUgMjMuMy0xOC4ybC40LTEuN2MyLjEtOC42IDEwLjgtMTMuOCAxOS40LTExLjZ6TTEzNS4yIDQ3OC4zbC02LjIgMy4xYy0yMS42IDEwLjgtNDcuNiA2LjYtNjQuNi0xMC41TDQuNyA0MTEuM2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwbDU5LjYgNTkuNmM3LjMgNy4zIDE4LjUgOS4xIDI3LjcgNC41bDYuMi0zLjFjNy45LTQgMTcuNS0uNyAyMS41IDcuMnMuNyAxNy41LTcuMiAyMS41elwiXVxufTtcbnZhciBmYVNrYXRpbmcgPSBmYVBlcnNvblNrYXRpbmc7XG52YXIgZmFGaWx0ZXJDaXJjbGVEb2xsYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsdGVyLWNpcmNsZS1kb2xsYXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImZ1bm5lbC1kb2xsYXJcIl0sIFwiZjY2MlwiLCBcIk0zLjkgMjIuOUMxMC41IDguOSAyNC41IDAgNDAgMEg0NzJjMTUuNSAwIDI5LjUgOC45IDM2LjEgMjIuOXM0LjYgMzAuNS01LjIgNDIuNUwzOTYuNCAxOTUuNkMzMTYuMiAyMTIuMSAyNTYgMjgzIDI1NiAzNjhjMCAyNy40IDYuMyA1My40IDE3LjUgNzYuNWMtMS42LS44LTMuMi0xLjgtNC43LTIuOWwtNjQtNDhjLTguMS02LTEyLjgtMTUuNS0xMi44LTI1LjZWMjg4LjlMOSA2NS4zQy0uNyA1My40LTIuOCAzNi44IDMuOSAyMi45ek0yODggMzY4YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTEyMC44LTMyLjZjLjYtLjkgMS44LTIuMSA0LjItMy40YzUuMS0yLjcgMTIuNS00LjEgMTguNy00YzguMiAuMSAxNy4xIDEuOCAyNi40IDQuMWM4LjYgMi4xIDE3LjMtMy4xIDE5LjQtMTEuN3MtMy4xLTE3LjMtMTEuNy0xOS40Yy01LjYtMS40LTExLjYtMi43LTE3LjktMy43VjI4OGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY5LjVjLTYuMSAxLjItMTIuMyAzLjItMTggNi4zYy0xMS44IDYuMy0yMyAxOC40LTIxLjggMzcuMmMxIDE2IDExLjcgMjUuMyAyMS42IDMwLjdjOC44IDQuNyAxOS43IDcuOCAyOC42IDEwLjNsMS44IC41YzEwLjMgMi45IDE3LjkgNS4yIDIzLjIgOC4zYzQuNSAyLjcgNC43IDQuMiA0LjcgNS42Yy4xIDIuNC0uNSAzLjctMSA0LjVjLS42IDEtMS44IDIuMi00IDMuM2MtNC43IDIuNS0xMS44IDMuOC0xOC41IDMuNmMtOS41LS4zLTE4LjUtMy4xLTI5LjktNi44Yy0xLjktLjYtMy44LTEuMi01LjgtMS44Yy04LjQtMi42LTE3LjQgMi4xLTIwIDEwLjVzMi4xIDE3LjQgMTAuNSAyMGMxLjYgLjUgMy4zIDEgNSAxLjZsMCAwIDAgMGM3IDIuMyAxNS4xIDQuOCAyMy43IDYuNnYxMS40YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDM4LjdjNi4yLTEuMSAxMi41LTMuMSAxOC4zLTYuMmMxMi4xLTYuNSAyMi4zLTE4LjcgMjEuNy0zNi45Yy0uNS0xNi4yLTEwLjMtMjYuMy0yMC41LTMyLjNjLTkuNC01LjYtMjEuMi04LjktMzAuNS0xMS41bC0uMiAwYy0xMC40LTIuOS0xOC4zLTUuMi0yMy45LTguMmMtNC44LTIuNi00LjgtNC00LjgtNC41bDAtLjFjLS4xLTEuOSAuMy0yLjkgLjgtMy42elwiXVxufTtcbnZhciBmYUZ1bm5lbERvbGxhciA9IGZhRmlsdGVyQ2lyY2xlRG9sbGFyO1xudmFyIGZhQ2FtZXJhUmV0cm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtZXJhLXJldHJvJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MjQ3XSwgXCJmMDgzXCIsIFwiTTIyMC42IDEyMS4yTDI3MS4xIDk2IDQ0OCA5NnY5NkgzMzMuMmMtMjEuOS0xNS4xLTQ4LjUtMjQtNzcuMi0yNHMtNTUuMiA4LjktNzcuMiAyNEg2NFYxMjhIMTkyYzkuOSAwIDE5LjctMi4zIDI4LjYtNi44ek0wIDEyOFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDI3MS4xYy05LjkgMC0xOS43IDIuMy0yOC42IDYuOEwxOTIgNjRIMTYwVjQ4YzAtOC44LTcuMi0xNi0xNi0xNkg4MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZDMjguNyA2NCAwIDkyLjcgMCAxMjh6TTE2OCAzMDRhODggODggMCAxIDEgMTc2IDAgODggODggMCAxIDEgLTE3NiAwelwiXVxufTtcbnZhciBmYUNpcmNsZUFycm93RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtYXJyb3ctZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYXJyb3ctY2lyY2xlLWRvd25cIl0sIFwiZjBhYlwiLCBcIk0yNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDB6TTEyNyAyODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw3MSA3MUwyMzIgMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxODIuMSA3MS03MWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMMjczIDM5M2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMTI3IDI4MXpcIl1cbn07XG52YXIgZmFBcnJvd0NpcmNsZURvd24gPSBmYUNpcmNsZUFycm93RG93bjtcbnZhciBmYUZpbGVJbXBvcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1pbXBvcnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImFycm93LXJpZ2h0LXRvLWZpbGVcIl0sIFwiZjU2ZlwiLCBcIk0xMjggNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRIMzUyVjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg1MTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDE5MmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMzM2SDMwMi4xbC0zOSAzOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC04MC04MGMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzOSAzOUgxMjhWNjR6bTAgMjI0djQ4SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDEyOHpNNTEyIDEyOEgzODRWMEw1MTIgMTI4elwiXVxufTtcbnZhciBmYUFycm93UmlnaHRUb0ZpbGUgPSBmYUZpbGVJbXBvcnQ7XG52YXIgZmFTcXVhcmVBcnJvd1VwUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLWFycm93LXVwLXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJleHRlcm5hbC1saW5rLXNxdWFyZVwiXSwgXCJmMTRjXCIsIFwiTTM4NCAzMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NHpNMTYwIDE0NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGg5NC4xTDExOSAzMjdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwxMzUtMTM1VjMyOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjE2OGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgxNjB6XCJdXG59O1xudmFyIGZhRXh0ZXJuYWxMaW5rU3F1YXJlID0gZmFTcXVhcmVBcnJvd1VwUmlnaHQ7XG52YXIgZmFCb3hPcGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JveC1vcGVuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDllXCIsIFwiTTU4LjkgNDIuMWMzLTYuMSA5LjYtOS42IDE2LjMtOC43TDMyMCA2NCA1NjQuOCAzMy40YzYuNy0uOCAxMy4zIDIuNyAxNi4zIDguN2w0MS43IDgzLjRjOSAxNy45LS42IDM5LjYtMTkuOCA0NS4xTDQzOS42IDIxNy4zYy0xMy45IDQtMjguOC0xLjktMzYuMi0xNC4zTDMyMCA2NCAyMzYuNiAyMDNjLTcuNCAxMi40LTIyLjMgMTguMy0zNi4yIDE0LjNMMzcuMSAxNzAuNmMtMTkuMy01LjUtMjguOC0yNy4yLTE5LjgtNDUuMUw1OC45IDQyLjF6TTMyMS4xIDEyOGw1NC45IDkxLjRjMTQuOSAyNC44IDQ0LjYgMzYuNiA3Mi41IDI4LjZMNTc2IDIxMS42djE2N2MwIDIyLTE1IDQxLjItMzYuNCA0Ni42bC0yMDQuMSA1MWMtMTAuMiAyLjYtMjAuOSAyLjYtMzEgMGwtMjA0LjEtNTFDNzkgNDE5LjcgNjQgNDAwLjUgNjQgMzc4LjV2LTE2N0wxOTEuNiAyNDhjMjcuOCA4IDU3LjYtMy44IDcyLjUtMjguNkwzMTguOSAxMjhoMi4yelwiXVxufTtcbnZhciBmYVNjcm9sbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY3JvbGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgyMjBdLCBcImY3MGVcIiwgXCJNMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0OCA5NlY4MGMwLTI2LjUtMjEuNS00OC00OC00OFMwIDUzLjUgMCA4MHpNMTEyIDMyYzEwIDEzLjQgMTYgMzAgMTYgNDhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR2LTUuM2MwLTMyLjQgMjYuMy01OC43IDU4LjctNTguN0g0ODBWMTI4YzAtNTMtNDMtOTYtOTYtOTZIMTEyek00NjQgNDgwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgzMTQuN2MtMTQuNyAwLTI2LjcgMTEuOS0yNi43IDI2LjdWMzg0YzAgNTMtNDMgOTYtOTYgOTZIMzY4aDk2elwiXVxufTtcbnZhciBmYVNwYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcGEnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1YmJcIiwgXCJNMTgzLjEgMjM1LjNjMzMuNyAyMC43IDYyLjkgNDguMSA4NS44IDgwLjVjNyA5LjkgMTMuNCAyMC4zIDE5LjEgMzFjNS43LTEwLjggMTIuMS0yMS4xIDE5LjEtMzFjMjIuOS0zMi40IDUyLjEtNTkuOCA4NS44LTgwLjVDNDM3LjYgMjA3LjggNDkwLjEgMTkyIDU0NiAxOTJoOS45YzExLjEgMCAyMC4xIDkgMjAuMSAyMC4xQzU3NiAzNjAuMSA0NTYuMSA0ODAgMzA4LjEgNDgwSDI4OCAyNjcuOUMxMTkuOSA0ODAgMCAzNjAuMSAwIDIxMi4xQzAgMjAxIDkgMTkyIDIwLjEgMTkySDMwYzU1LjkgMCAxMDguNCAxNS44IDE1My4xIDQzLjN6TTMwMS41IDM3LjZjMTUuNyAxNi45IDYxLjEgNzEuOCA4NC40IDE2NC42Yy0zOCAyMS42LTcxLjQgNTAuOC05Ny45IDg1LjZjLTI2LjUtMzQuOC01OS45LTYzLjktOTcuOS04NS42YzIzLjItOTIuOCA2OC42LTE0Ny43IDg0LjQtMTY0LjZDMjc4IDMzLjkgMjgyLjkgMzIgMjg4IDMyczEwIDEuOSAxMy41IDUuNnpcIl1cbn07XG52YXIgZmFMb2NhdGlvblBpbkxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jYXRpb24tcGluLWxvY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1MWZcIiwgXCJNMjE1LjcgNDk5LjJjMTEtMTMuOCAyNS4xLTMxLjcgNDAuMy01Mi4zVjM1MmMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRWMjcyYzAtNTUuNiA0MC41LTEwMS43IDkzLjYtMTEwLjVDMzY3IDcwIDI4Ny43IDAgMTkyIDBDODYgMCAwIDg2IDAgMTkyYzAgODcuNCAxMTcgMjQzIDE2OC4zIDMwNy4yYzEyLjMgMTUuMyAzNS4xIDE1LjMgNDcuNCAwek0xOTIgMTI4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek00MDAgMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDM2OFYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwiXVxufTtcbnZhciBmYVBhdXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhdXNlJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbOTIwOF0sIFwiZjA0Y1wiLCBcIk00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMlY0MDBjMCAyNi41IDIxLjUgNDggNDggNDhIODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4em0xOTIgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OEgyNDB6XCJdXG59O1xudmFyIGZhSGlsbEF2YWxhbmNoZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoaWxsLWF2YWxhbmNoZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTUwN1wiLCBcIk00MzkuNyA0MDEuOWMzNC4yIDIzLjEgODEuMSAxOS41IDExMS40LTEwLjhjMzQuNC0zNC40IDM0LjQtOTAuMSAwLTEyNC40Yy0yNy44LTI3LjgtNjkuNS0zMy4xLTEwMi42LTE2Yy0xMS44IDYuMS0xNi40IDIwLjYtMTAuMyAzMi4zczIwLjYgMTYuNCAzMi4zIDEwLjNjMTUuMS03LjggMzQtNS4zIDQ2LjYgNy4zYzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42cy00MC45IDE1LjYtNTYuNiAwbC04MS43LTgxLjdDNDAxLjIgMjYxLjMgNDE2IDIzNi40IDQxNiAyMDhjMC0zMy45LTIxLjEtNjIuOS01MC45LTc0LjVjMS45LTYuOCAyLjktMTQgMi45LTIxLjVjMC00NC4yLTM1LjgtODAtODAtODBjLTI3LjMgMC01MS41IDEzLjctNjUuOSAzNC42QzIxNi4zIDQ2LjYgMTk3LjkgMzIgMTc2IDMyYy0yNi41IDAtNDggMjEuNS00OCA0OGMwIDQgLjUgNy45IDEuNCAxMS42TDQzOS43IDQwMS45ek00ODAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMCAxMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek02OC4zIDg3QzQzLjEgNjEuOCAwIDc5LjcgMCAxMTUuM1Y0MzJjMCA0NC4yIDM1LjggODAgODAgODBIMzk2LjdjMzUuNiAwIDUzLjUtNDMuMSAyOC4zLTY4LjNMNjguMyA4N3pcIl1cbn07XG52YXIgZmFUZW1wZXJhdHVyZUVtcHR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWVtcHR5JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJ0ZW1wZXJhdHVyZS0wXCIsIFwidGhlcm1vbWV0ZXItMFwiLCBcInRoZXJtb21ldGVyLWVtcHR5XCJdLCBcImYyY2JcIiwgXCJNMTEyIDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4VjI3Ni41YzAgMTcuMyA3LjEgMzEuOSAxNS4zIDQyLjVDMjMzLjggMzMyLjYgMjQwIDM0OS41IDI0MCAzNjhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0xOC41IDYuMi0zNS40IDE2LjctNDguOWM4LjItMTAuNiAxNS4zLTI1LjIgMTUuMy00Mi41VjExMnpNMTYwIDBDOTguMSAwIDQ4IDUwLjIgNDggMTEyVjI3Ni41YzAgLjEtLjEgLjMtLjIgLjZjLS4yIC42LS44IDEuNi0xLjcgMi44QzI3LjIgMzA0LjIgMTYgMzM0LjggMTYgMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRjMC0zMy4yLTExLjItNjMuOC0zMC4xLTg4LjFjLS45LTEuMi0xLjUtMi4yLTEuNy0yLjhjLS4xLS4zLS4yLS41LS4yLS42VjExMkMyNzIgNTAuMiAyMjEuOSAwIDE2MCAwem0wIDQxNmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJdXG59O1xudmFyIGZhVGVtcGVyYXR1cmUwID0gZmFUZW1wZXJhdHVyZUVtcHR5O1xudmFyIGZhVGhlcm1vbWV0ZXIwID0gZmFUZW1wZXJhdHVyZUVtcHR5O1xudmFyIGZhVGhlcm1vbWV0ZXJFbXB0eSA9IGZhVGVtcGVyYXR1cmVFbXB0eTtcbnZhciBmYUJvbWIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9tYicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODE2M10sIFwiZjFlMlwiLCBcIk00NTkuMSA1Mi40TDQ0Mi42IDYuNUM0NDAuNyAyLjYgNDM2LjUgMCA0MzIuMSAwcy04LjUgMi42LTEwLjQgNi41TDQwNS4yIDUyLjRsLTQ2IDE2LjhjLTQuMyAxLjYtNy4zIDUuOS03LjIgMTAuNGMwIDQuNSAzIDguNyA3LjIgMTAuMmw0NS43IDE2LjggMTYuOCA0NS44YzEuNSA0LjQgNS44IDcuNSAxMC40IDcuNXM4LjktMy4xIDEwLjQtNy41bDE2LjUtNDUuOCA0NS43LTE2LjhjNC4yLTEuNSA3LjItNS43IDcuMi0xMC4yYzAtNC42LTMtOC45LTcuMi0xMC40TDQ1OS4xIDUyLjR6bS0xMzIuNCA1M2MtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTIuOSAyLjlDMjU2LjUgMTAwLjMgMjMyLjcgOTYgMjA4IDk2QzkzLjEgOTYgMCAxODkuMSAwIDMwNFM5My4xIDUxMiAyMDggNTEyczIwOC05My4xIDIwOC0yMDhjMC0yNC43LTQuMy00OC41LTEyLjItNzAuNWwyLjktMi45YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC04MC04MHpNMjAwIDE5MmMtNTcuNCAwLTEwNCA0Ni42LTEwNCAxMDR2OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNnYtOGMwLTc1LjEgNjAuOS0xMzYgMTM2LTEzNmg4YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2aC04elwiXVxufTtcbnZhciBmYVJlZ2lzdGVyZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVnaXN0ZXJlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzE3NF0sIFwiZjI1ZFwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTYwIDE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4OGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDI4LTE0LjQgNTIuNy0zNi4zIDY3bDM0LjEgNzUuMWM1LjUgMTIuMSAuMSAyNi4zLTExLjkgMzEuOHMtMjYuMyAuMS0zMS44LTExLjlMMjY4LjkgMjg4SDIwOHY3MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYyNjQgMTUyem00OCA4OGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgyMDh2NjR6XCJdXG59O1xudmFyIGZhQWRkcmVzc0NhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYWRkcmVzcy1jYXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbNjIxNDAsIFwiY29udGFjdC1jYXJkXCIsIFwidmNhcmRcIl0sIFwiZjJiYlwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTgwIDI1Nmg2NGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MHptLTMyLTk2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHptMjU2LTMySDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYUNvbnRhY3RDYXJkID0gZmFBZGRyZXNzQ2FyZDtcbnZhciBmYVZjYXJkID0gZmFBZGRyZXNzQ2FyZDtcbnZhciBmYVNjYWxlVW5iYWxhbmNlZEZsaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2NhbGUtdW5iYWxhbmNlZC1mbGlwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJiYWxhbmNlLXNjYWxlLXJpZ2h0XCJdLCBcImY1MTZcIiwgXCJNMTE3LjkgNjIuNGMtMTYuOC01LjYtMjUuOC0yMy43LTIwLjItNDAuNXMyMy43LTI1LjggNDAuNS0yMC4ybDExMyAzNy43QzI2NSAxNS44IDI5MC43IDAgMzIwIDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCAzLS4yIDUuOS0uNSA4LjhsMTIyLjYgNDAuOWMxNi44IDUuNiAyNS44IDIzLjcgMjAuMiA0MC41cy0yMy43IDI1LjgtNDAuNSAyMC4yTDM2Ni40IDE0NS4yYy00LjUgMy4yLTkuMyA1LjktMTQuNCA4LjJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyODhWMTUzLjNjLTIxLTkuMi0zNy4yLTI3LTQ0LjItNDlsLTEyNS45LTQyek0yMDAuNCAyODhMMTI4IDE2My44IDU1LjYgMjg4SDIwMC40ek0xMjggMzg0QzY1LjEgMzg0IDEyLjggMzUwIDIgMzA1LjFjLTIuNi0xMSAxLTIyLjMgNi43LTMyLjFsOTUuMi0xNjMuMmM1LTguNiAxNC4yLTEzLjggMjQuMS0xMy44czE5LjEgNS4zIDI0LjEgMTMuOGw5NS4yIDE2My4yYzUuNyA5LjggOS4zIDIxLjEgNi43IDMyLjFDMjQzLjIgMzUwIDE5MC45IDM4NCAxMjggMzg0em0zODIuOC05Mi4yTDQzOC40IDQxNkg1ODMuM0w1MTAuOCAyOTEuOHptMTI2IDE0MS4zQzYyNiA0NzggNTczLjcgNTEyIDUxMC44IDUxMnMtMTE1LjItMzQtMTI2LTc4LjljLTIuNi0xMSAxLTIyLjMgNi43LTMyLjFsOTUuMi0xNjMuMmM1LTguNiAxNC4yLTEzLjggMjQuMS0xMy44czE5LjEgNS4zIDI0LjEgMTMuOGw5NS4yIDE2My4yYzUuNyA5LjggOS4zIDIxLjEgNi43IDMyLjF6XCJdXG59O1xudmFyIGZhQmFsYW5jZVNjYWxlUmlnaHQgPSBmYVNjYWxlVW5iYWxhbmNlZEZsaXA7XG52YXIgZmFTdWJzY3JpcHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Vic2NyaXB0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTJjXCIsIFwiTTMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMkg0Ny4zbDg5LjYgMTI4TDQ3LjMgMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0YzEwLjQgMCAyMC4yLTUuMSAyNi4yLTEzLjZMMTc2IDMxMS44bDg1LjggMTIyLjZjNiA4LjYgMTUuOCAxMy42IDI2LjIgMTMuNmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMDQuN0wyMTUuMSAyNTZsODkuNi0xMjhIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OGMtMTAuNCAwLTIwLjIgNS4xLTI2LjIgMTMuNkwxNzYgMjAwLjIgOTAuMiA3Ny42Qzg0LjIgNjkuMSA3NC40IDY0IDY0IDY0SDMyek00ODAgMzIwYzAtMTEuMS01LjctMjEuNC0xNS4yLTI3LjJzLTIxLjItNi40LTMxLjEtMS40bC0zMiAxNmMtMTUuOCA3LjktMjIuMiAyNy4xLTE0LjMgNDIuOUMzOTMgMzYxLjUgNDA0LjMgMzY4IDQxNiAzNjh2ODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzIgMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzIwelwiXVxufTtcbnZhciBmYURpYW1vbmRUdXJuUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGlhbW9uZC10dXJuLXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJkaXJlY3Rpb25zXCJdLCBcImY1ZWJcIiwgXCJNMjI3LjcgMTEuN2MxNS42LTE1LjYgNDAuOS0xNS42IDU2LjYgMGwyMTYgMjE2YzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42bC0yMTYgMjE2Yy0xNS42IDE1LjYtNDAuOSAxNS42LTU2LjYgMGwtMjE2LTIxNmMtMTUuNi0xNS42LTE1LjYtNDAuOSAwLTU2LjZsMjE2LTIxNnptODcuNiAxMzdjLTQuNi00LjYtMTEuNS01LjktMTcuNC0zLjVzLTkuOSA4LjMtOS45IDE0Ljh2NTZIMjI0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI4MGMwLTguOCA3LjItMTYgMTYtMTZoNjR2NTZjMCA2LjUgMy45IDEyLjMgOS45IDE0LjhzMTIuOSAxLjEgMTcuNC0zLjVsODAtODBjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTgwLTgwelwiXVxufTtcbnZhciBmYURpcmVjdGlvbnMgPSBmYURpYW1vbmRUdXJuUmlnaHQ7XG52YXIgZmFCdXJzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidXJzdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRkY1wiLCBcIk0zNy42IDQuMkMyOC0yLjMgMTUuMi0xLjEgNyA3cy05LjQgMjEtMi44IDMwLjVsMTEyIDE2My4zTDE2LjYgMjMzLjJDNi43IDIzNi40IDAgMjQ1LjYgMCAyNTZzNi43IDE5LjYgMTYuNiAyMi44bDEwMy4xIDMzLjRMNjYuOCA0MTIuOGMtNC45IDkuMy0zLjIgMjAuNyA0LjMgMjguMXMxOC44IDkuMiAyOC4xIDQuM2wxMDAuNi01Mi45IDMzLjQgMTAzLjFjMy4yIDkuOSAxMi40IDE2LjYgMjIuOCAxNi42czE5LjYtNi43IDIyLjgtMTYuNmwzMy40LTEwMy4xIDEwMC42IDUyLjljOS4zIDQuOSAyMC43IDMuMiAyOC4xLTQuM3M5LjItMTguOCA0LjMtMjguMUwzOTIuMyAzMTIuMmwxMDMuMS0zMy40YzkuOS0zLjIgMTYuNi0xMi40IDE2LjYtMjIuOHMtNi43LTE5LjYtMTYuNi0yMi44TDM4OC45IDE5OC43bDI1LjctNzAuNGMzLjItOC44IDEtMTguNi01LjYtMjUuMnMtMTYuNC04LjgtMjUuMi01LjZsLTcwLjQgMjUuN0wyNzguOCAxNi42QzI3NS42IDYuNyAyNjYuNCAwIDI1NiAwcy0xOS42IDYuNy0yMi44IDE2LjZsLTMyLjMgOTkuNkwzNy42IDQuMnpcIl1cbn07XG52YXIgZmFIb3VzZUxhcHRvcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1sYXB0b3AnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImxhcHRvcC1ob3VzZVwiXSwgXCJlMDY2XCIsIFwiTTIxOC4zIDguNWMxMi4zLTExLjMgMzEuMi0xMS4zIDQzLjQgMGwyMDggMTkyYzYuNyA2LjIgMTAuMyAxNC44IDEwLjMgMjMuNUgzMzZjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0VjQxNkgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI1NkgzMmMtMTMuMiAwLTI1LTguMS0yOS44LTIwLjNzLTEuNi0yNi4yIDguMS0zNS4ybDIwOC0xOTJ6TTM1MiAzMDRWNDQ4SDU0NFYzMDRIMzUyem0tNDgtMTZjMC0xNy43IDE0LjMtMzIgMzItMzJINTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZjMCAyNi41LTIxLjUgNDgtNDggNDhINTQ0IDM1MiAzMDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtOC44IDcuMi0xNiAxNi0xNmgzMlYyODh6XCJdXG59O1xudmFyIGZhTGFwdG9wSG91c2UgPSBmYUhvdXNlTGFwdG9wO1xudmFyIGZhRmFjZVRpcmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtdGlyZWQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NTUsIFwidGlyZWRcIl0sIFwiZjVjOFwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY0LjcgMzI4LjdjMjItMjIgNTMuOS00MC43IDkxLjMtNDAuN3M2OS4zIDE4LjcgOTEuMyA0MC43YzExLjEgMTEuMSAyMC4xIDIzLjQgMjYuNCAzNS40YzYuMiAxMS43IDEwLjMgMjQuNCAxMC4zIDM1LjljMCA1LjItMi42IDEwLjItNi45IDEzLjJzLTkuOCAzLjctMTQuNyAxLjhsLTIwLjUtNy43Yy0yNi45LTEwLjEtNTUuNS0xNS4zLTg0LjMtMTUuM2gtMy4yYy0yOC44IDAtNTcuMyA1LjItODQuMyAxNS4zTDE0OS42IDQxNWMtNC45IDEuOC0xMC40IDEuMi0xNC43LTEuOHMtNi45LTcuOS02LjktMTMuMmMwLTExLjYgNC4yLTI0LjIgMTAuMy0zNS45YzYuMy0xMiAxNS4zLTI0LjMgMjYuNC0zNS40em0tMzEuMi0xODJsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxNTcuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIl1cbn07XG52YXIgZmFUaXJlZCA9IGZhRmFjZVRpcmVkO1xudmFyIGZhTW9uZXlCaWxscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxscycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTFmM1wiLCBcIk05NiA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTY0IDE2MGMzNS4zIDAgNjQgMjguNyA2NCA2NEgxNjBWMjU2ek0yMjQgOTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRWOTZoNjR6TTU3NiAyNTZ2NjRINTEyYzAtMzUuMyAyOC43LTY0IDY0LTY0ek01MTIgOTZoNjR2NjRjLTM1LjMgMC02NC0yOC43LTY0LTY0ek0yODggMjA4YTgwIDgwIDAgMSAxIDE2MCAwIDgwIDgwIDAgMSAxIC0xNjAgMHpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBWMzYwYzAgNjYuMyA1My43IDEyMCAxMjAgMTIwSDUyMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMjBjLTM5LjggMC03Mi0zMi4yLTcyLTcyVjEyMHpcIl1cbn07XG52YXIgZmFTbW9nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Ntb2cnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3NWZcIiwgXCJNMzIgMTQ0YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0SDI5OS4zYzIyLjYgMTkuOSA1Mi4yIDMyIDg0LjcgMzJzNjIuMS0xMi4xIDg0LjctMzJINDk2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEyYy0xMC43IDAtMjEgMS41LTMwLjggNC4zQzQ0My44IDI3LjcgNDAxLjEgMCAzNTIgMGMtMzIuNiAwLTYyLjQgMTIuMi04NS4xIDMyLjNDMjQyLjEgMTIuMSAyMTAuNSAwIDE3NiAwQzk2LjUgMCAzMiA2NC41IDMyIDE0NHpNNjE2IDM2OEgyODBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINjE2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0em0tNjQgOTZINDQwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDU1MmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNHptLTE5MiAwSDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDM2MGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNHpNMjI0IDM5MmMwLTEzLjMtMTAuNy0yNC0yNC0yNEg5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyMDBjMTMuMyAwIDI0LTEwLjcgMjQtMjR6XCJdXG59O1xudmFyIGZhQ3J1dGNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NydXRjaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdmN1wiLCBcIk0yOTcuNCA5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDB6bS05NiAxNDRsLTM0LjggMzQuOGMtMTIuOSAxMi45LTIxLjkgMjkuMi0yNS44IDQ3LjFMMTE2LjggMzQyLjljLTEuMyA1LjktNC4zIDExLjQtOC42IDE1LjdMOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDk4LjgtOTguOGM0LjMtNC4zIDkuNy03LjMgMTUuNy04LjZsMTA3LjYtMjMuOWMxNy44LTQgMzQuMS0xMi45IDQ3LjEtMjUuOGwzNC43LTM0LjdjMCAwIC4xLS4xIC4xLS4xcy4xLS4xIC4xLS4xbDc0LjYtNzQuNi00NS4zLTQ1LjNMMzM2IDI0Mi43IDI2OS4zIDE3Nmw1Mi4xLTUyLjFMMjc2LjEgNzguNmwtNzQuNyA3NC43ek0yMjQgMjIxLjNMMjkwLjcgMjg4bC0xMi4yIDEyLjJjLTQuMyA0LjMtOS43IDcuMy0xNS43IDguNmwtNzYuNyAxNyAxNy03Ni43YzEuMy01LjkgNC4zLTExLjQgOC42LTE1LjdMMjI0IDIyMS4zelwiXVxufTtcbnZhciBmYUZvbnRBd2Vzb21lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbnQtYXdlc29tZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzYyNTAxLCA2MjY5NCwgXCJmb250LWF3ZXNvbWUtZmxhZ1wiLCBcImZvbnQtYXdlc29tZS1sb2dvLWZ1bGxcIl0sIFwiZjJiNFwiLCBcIk00NDggNDhWMzg0Yy02My4xIDIyLjUtODIuMyAzMi0xMTkuNSAzMmMtNjIuOCAwLTg2LjYtMzItMTQ5LjMtMzJjLTIwLjYgMC0zNi42IDMuNi01MS4yIDguMnYtNjRjMTQuNi00LjYgMzAuNi04LjIgNTEuMi04LjJjNjIuNyAwIDg2LjUgMzIgMTQ5LjMgMzJjMjAuNCAwIDM1LjYtMyA1NS41LTkuM3YtMjA4Yy0xOS45IDYuMy0zNS4xIDkuMy01NS41IDkuM2MtNjIuOCAwLTg2LjYtMzItMTQ5LjMtMzJjLTUwLjggMC03NC45IDIwLjYtMTE1LjIgMjguN1Y0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJzMzIgMTQuMyAzMiAzMlY3Ni43YzQwLjMtOCA2NC40LTI4LjcgMTE1LjItMjguN2M2Mi43IDAgODYuNSAzMiAxNDkuMyAzMmMzNy4xIDAgNTYuNC05LjUgMTE5LjUtMzJ6XCJdXG59O1xudmFyIGZhRm9udEF3ZXNvbWVGbGFnID0gZmFGb250QXdlc29tZTtcbnZhciBmYUZvbnRBd2Vzb21lTG9nb0Z1bGwgPSBmYUZvbnRBd2Vzb21lO1xudmFyIGZhQ2xvdWRBcnJvd1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLWFycm93LXVwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbNjIzMzgsIFwiY2xvdWQtdXBsb2FkXCIsIFwiY2xvdWQtdXBsb2FkLWFsdFwiXSwgXCJmMGVlXCIsIFwiTTE0NCA0ODBDNjQuNSA0ODAgMCA0MTUuNSAwIDMzNmMwLTYyLjggNDAuMi0xMTYuMiA5Ni4yLTEzNS45Yy0uMS0yLjctLjItNS40LS4yLTguMWMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGM1OS4zIDAgMTExIDMyLjIgMTM4LjcgODAuMkM0MDkuOSAxMDIgNDI4LjMgOTYgNDQ4IDk2YzUzIDAgOTYgNDMgOTYgOTZjMCAxMi4yLTIuMyAyMy44LTYuNCAzNC42QzU5NiAyMzguNCA2NDAgMjkwLjEgNjQwIDM1MmMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOEgxNDR6bTc5LTIxN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDM5LTM5VjM5MmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjI1Ny45bDM5IDM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtODAtODBjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC04MCA4MHpcIl1cbn07XG52YXIgZmFDbG91ZFVwbG9hZCA9IGZhQ2xvdWRBcnJvd1VwO1xudmFyIGZhQ2xvdWRVcGxvYWRBbHQgPSBmYUNsb3VkQXJyb3dVcDtcbnZhciBmYVBhbGV0dGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFsZXR0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzkxMl0sIFwiZjUzZlwiLCBcIk01MTIgMjU2YzAgLjkgMCAxLjggMCAyLjdjLS40IDM2LjUtMzMuNiA2MS4zLTcwLjEgNjEuM0gzNDRjLTI2LjUgMC00OCAyMS41LTQ4IDQ4YzAgMy40IC40IDYuNyAxIDkuOWMyLjEgMTAuMiA2LjUgMjAgMTAuOCAyOS45YzYuMSAxMy44IDEyLjEgMjcuNSAxMi4xIDQyYzAgMzEuOC0yMS42IDYwLjctNTMuNCA2MmMtMy41IC4xLTcgLjItMTAuNiAuMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NlMxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2ek0xMjggMjg4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAtOTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0yODggOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptOTYgOTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbnZhciBmYUFycm93c1R1cm5SaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdHVybi1yaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTRjMFwiLCBcIk0yOTcuNCA5LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsOTYgOTZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTk2IDk2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wzMzguNyAxNjBIMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjRDMCAxNTMuMyA1Ny4zIDk2IDEyOCA5NkgzMzguN0wyOTcuNCA1NC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3ptLTk2IDI1NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDQxNkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4YzAtNTMgNDMtOTYgOTYtOTZIMjQyLjdsLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjN6XCJdXG59O1xudmFyIGZhVmVzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZXN0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJlMDg1XCIsIFwiTTIwNy4xIDIzNy40TDE1MS4yIDY5LjdDMTY4LjYgNzkuNyAxOTIuNiA4OCAyMjQgODhzNTUuNC04LjMgNzIuOC0xOC4zTDIyNi41IDI4MC42Yy0xLjYgNC45LTIuNSAxMC0yLjUgMTUuMlY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MC41YzAtOS41LTIuOC0xOC43LTguMS0yNi42bC00Ny45LTcxLjhjLTUuMy03LjktOC4xLTE3LjEtOC4xLTI2LjZWMTI4IDU0LjMgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQuNWMtLjIgMC0uNCAwLS42IDBjLS40IDAtLjggMC0xLjIgMEMzMTEgMCAyOTUuNyA5LjcgMjg1LjcgMTguOEMyNzYuNCAyNy4yIDI1Ny4yIDQwIDIyNCA0MHMtNTIuNC0xMi44LTYxLjctMjEuMkMxNTIuMyA5LjcgMTM3IDAgMTE4LjMgMGMtLjQgMC0uOCAwLTEuMiAwYy0uMiAwLS40IDAtLjYgMEgxMTJDODUuNSAwIDY0IDIxLjUgNjQgNDh2Ni4zVjEyOHYxNy41YzAgOS41LTIuOCAxOC43LTguMSAyNi42TDguMSAyNDMuOUMyLjggMjUxLjggMCAyNjEuMSAwIDI3MC41VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgxNzZjOS45IDAgMTktMyAyNi43LTguMUMxOTUuOSA0OTIuMiAxOTIgNDc4LjUgMTkyIDQ2NFYyOTUuOGMwLTguNiAxLjQtMTcuMSA0LjEtMjUuM2wxMS0zMy4xek0zNDcuMyAzNTYuN2w0OCA0OGM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC00OC00OGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwem0tMjk0LjYgNDhsNDgtNDhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42bC00OCA0OGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNnpcIl1cbn07XG52YXIgZmFGZXJyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmZXJyeScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRlYVwiLCBcIk0yMjQgMEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJoNzUuMWMyMC42IDAgMzEuNiAyNC4zIDE4LjEgMzkuOEw0NTYgOTZIMTIwTDk4LjggNzEuOEM4NS4zIDU2LjMgOTYuMyAzMiAxMTYuOSAzMkgxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTk2IDEyOEg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjgzLjVjMCAxMy4zLTQuMiAyNi4zLTExLjkgMzcuMmwtNTEuNCA3MS45Yy0xLjkgMS4xLTMuNyAyLjItNS41IDMuNWMtMTUuNSAxMC43LTM0IDE4LTUxIDE5LjlIMzc1LjZjLTE3LjEtMS44LTM1LTktNTAuOC0xOS45Yy0yMi4xLTE1LjUtNTEuNi0xNS41LTczLjcgMGMtMTQuOCAxMC4yLTMyLjUgMTgtNTAuNiAxOS45SDE4My45Yy0xNy0xLjgtMzUuNi05LjItNTEtMTkuOWMtMS44LTEuMy0zLjctMi40LTUuNi0zLjVMNzUuOSAzMjAuN0M2OC4yIDMwOS44IDY0IDI5Ni44IDY0IDI4My41VjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMzIgNjR2OTZINDQ4VjE5MkgxMjh6TTMwNi41IDQyMS45QzMyOSA0MzcuNCAzNTYuNSA0NDggMzg0IDQ0OGMyNi45IDAgNTUuMy0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA1MDEuNyA0MTcgNTEyIDM4NCA1MTJjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MzcuMiAxNjUuMSA0NDggMTkyIDQ0OGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIl1cbn07XG52YXIgZmFBcnJvd3NEb3duVG9QZW9wbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLWRvd24tdG8tcGVvcGxlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGI5XCIsIFwiTTE0NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYxNDIuMUw5NyAxMTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsNjQtNjRjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMjMgMjNWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTM2MCAyMDBhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHpNMTg0IDI5NmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0zMTIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek0yMDAgNDQxLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzYuMy02Ny41YzEuNy0xLjcgMy4yLTMuNiA0LjMtNS44TDI2NCAzNDUuNVY0MDBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzQ1LjVsMjYuOSA0OS45YzEuMiAyLjIgMi42IDQuMSA0LjMgNS44bC0zNi4zIDY3LjVjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDQ0MCA0NDEuNVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQxLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzcuOS03MC4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0g0ODYuMmMtMTYuMyAwLTMxLjkgNC41LTQ1LjQgMTIuNmwtMzMuNi02Mi4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM0gzMTAuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNsLTMzLjYgNjIuM2MtMTMuNS04LjEtMjkuMS0xMi42LTQ1LjQtMTIuNkgxMzQuMmMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNMMTguOSA0NjguNmMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMODggNDQxLjVWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ0MS41ek00MTUgMTUzbDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDY0LTY0YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTIzIDIzVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjE0Mi4xbC0yMy0yM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOXpcIl1cbn07XG52YXIgZmFTZWVkbGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZWVkbGluZycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzc5MywgXCJzcHJvdXRcIl0sIFwiZjRkOFwiLCBcIk01MTIgMzJjMCAxMTMuNi04NC42IDIwNy41LTE5NC4yIDIyMmMtNy4xLTUzLjQtMzAuNi0xMDEuNi02NS4zLTEzOS4zQzI5MC44IDQ2LjMgMzY0IDAgNDQ4IDBoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6TTAgOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRINjRjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNHYzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzIwQzEwMC4zIDMyMCAwIDIxOS43IDAgOTZ6XCJdXG59O1xudmFyIGZhU3Byb3V0ID0gZmFTZWVkbGluZztcbnZhciBmYUxlZnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsZWZ0LXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbODU5NiwgXCJhcnJvd3MtYWx0LWhcIl0sIFwiZjMzN1wiLCBcIk01MDQuMyAyNzMuNmM0LjktNC41IDcuNy0xMC45IDcuNy0xNy42cy0yLjgtMTMtNy43LTE3LjZsLTExMi0xMDRjLTctNi41LTE3LjItOC4yLTI1LjktNC40cy0xNC40IDEyLjUtMTQuNCAyMmwwIDU2LTE5MiAwIDAtNTZjMC05LjUtNS43LTE4LjItMTQuNC0yMnMtMTguOS0yLjEtMjUuOSA0LjRsLTExMiAxMDRDMi44IDI0MyAwIDI0OS4zIDAgMjU2czIuOCAxMyA3LjcgMTcuNmwxMTIgMTA0YzcgNi41IDE3LjIgOC4yIDI1LjkgNC40czE0LjQtMTIuNSAxNC40LTIybDAtNTYgMTkyIDAgMCA1NmMwIDkuNSA1LjcgMTguMiAxNC40IDIyczE4LjkgMi4xIDI1LjktNC40bDExMi0xMDR6XCJdXG59O1xudmFyIGZhQXJyb3dzQWx0SCA9IGZhTGVmdFJpZ2h0O1xudmFyIGZhQm94ZXNQYWNraW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JveGVzLXBhY2tpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YzdcIiwgXCJNMjU2IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDU5MmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMzgxLjNjMS44LTUgMi43LTEwLjQgMi43LTE2VjI1My4zYzE4LjYtNi42IDMyLTI0LjQgMzItNDUuM1YxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjU2VjQ4ek01NzEuMyAzNDcuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNjQtNjRjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC02NCA2NGMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDQ4MCAzMTAuNlY0MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzMTAuNmwzNi43IDM2LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDB6TTAgMTc2YzAtOC44IDcuMi0xNiAxNi0xNkgzNjhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNmMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NnptMzUyIDgwVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjU2SDM1MnpNMTQ0IDMyMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNDR6XCJdXG59O1xudmFyIGZhQ2lyY2xlQXJyb3dMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1hcnJvdy1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcnJvdy1jaXJjbGUtbGVmdFwiXSwgXCJmMGE4XCIsIFwiTTUxMiAyNTZBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yMzEgMTI3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNzEgNzFMMzc2IDIzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTgyLjEgMCA3MSA3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDExOSAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIzMSAxMjd6XCJdXG59O1xudmFyIGZhQXJyb3dDaXJjbGVMZWZ0ID0gZmFDaXJjbGVBcnJvd0xlZnQ7XG52YXIgZmFHcm91cEFycm93c1JvdGF0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncm91cC1hcnJvd3Mtcm90YXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNGY2XCIsIFwiTTIwMS4xIDcxLjljMTYuOS01IDI2LjYtMjIuOSAyMS41LTM5LjhzLTIyLjktMjYuNi0zOS44LTIxLjVjLTIxLjUgNi40LTQxLjggMTUuNS02MC42IDI3QzExNC4zIDM0IDEwNS40IDMyIDk2IDMyQzYwLjcgMzIgMzIgNjAuNyAzMiA5NmMwIDkuNCAyIDE4LjMgNS42IDI2LjNjLTExLjUgMTguNy0yMC42IDM5LTI3IDYwLjZjLTUgMTYuOSA0LjYgMzQuOCAyMS41IDM5LjhzMzQuOC00LjYgMzkuOC0yMS41YzQuMy0xNC42IDEwLjQtMjguNSAxNy45LTQxLjRjMiAuMiA0LjEgLjMgNi4xIC4zYzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtMi4xLS4xLTQuMS0uMy02LjFjMTIuOS03LjUgMjYuOC0xMy42IDQxLjQtMTcuOXptMTI4LTYxLjNjLTE2LjktNS0zNC44IDQuNi0zOS44IDIxLjVzNC42IDM0LjggMjEuNSAzOS44YzE0LjYgNC4zIDI4LjUgMTAuNCA0MS40IDE3LjljLS4yIDItLjMgNC4xLS4zIDYuMWMwIDM1LjMgMjguNyA2NCA2NCA2NGMyLjEgMCA0LjEtLjEgNi4yLS4zYzcuNSAxMi45IDEzLjYgMjYuOCAxNy45IDQxLjRjNSAxNi45IDIyLjkgMjYuNiAzOS44IDIxLjVzMjYuNi0yMi45IDIxLjUtMzkuOGMtNi40LTIxLjUtMTUuNS00MS44LTI3LTYwLjZjMy42LTggNS42LTE2LjkgNS42LTI2LjNjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTkuNCAwLTE4LjMgMi0yNi4zIDUuNmMtMTguNy0xMS41LTM5LTIwLjYtNjAuNi0yN3pNNzEuOSAzMTAuOWMtNS0xNi45LTIyLjktMjYuNi0zOS44LTIxLjVzLTI2LjYgMjIuOS0yMS41IDM5LjhjNi40IDIxLjUgMTUuNSA0MS44IDI3IDYwLjZDMzQgMzk3LjcgMzIgNDA2LjYgMzIgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0YzkuNCAwIDE4LjMtMiAyNi4zLTUuNmMxOC43IDExLjUgMzkgMjAuNiA2MC42IDI3YzE2LjkgNSAzNC44LTQuNiAzOS44LTIxLjVzLTQuNi0zNC44LTIxLjUtMzkuOGMtMTQuNi00LjMtMjguNS0xMC40LTQxLjQtMTcuOWMuMi0yIC4zLTQuMSAuMy02LjJjMC0zNS4zLTI4LjctNjQtNjQtNjRjLTIuMSAwLTQuMSAuMS02LjIgLjNjLTcuNS0xMi45LTEzLjYtMjYuOC0xNy45LTQxLjR6bTQyOS40IDE4LjNjNS0xNi45LTQuNi0zNC44LTIxLjUtMzkuOHMtMzQuOCA0LjYtMzkuOCAyMS41Yy00LjMgMTQuNi0xMC40IDI4LjUtMTcuOSA0MS40Yy0yLS4yLTQuMS0uMy02LjItLjNjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMi4xIC4xIDQuMSAuMyA2LjJjLTEyLjkgNy41LTI2LjggMTMuNi00MS40IDE3LjljLTE2LjkgNS0yNi42IDIyLjktMjEuNSAzOS44czIyLjkgMjYuNiAzOS44IDIxLjVjMjEuNS02LjQgNDEuOC0xNS41IDYwLjYtMjdjOCAzLjYgMTYuOSA1LjYgMjYuMyA1LjZjMzUuMyAwIDY0LTI4LjcgNjQtNjRjMC05LjQtMi0xOC4zLTUuNi0yNi4zYzExLjUtMTguNyAyMC42LTM5IDI3LTYwLjZ6TTE5Mi44IDI1Ni44YzAtMTUuNiA1LjYtMjkuOSAxNC45LTQxLjFMMjIzIDIzMWM2LjYgNi42IDE3LjggMS45IDE3LjgtNy40VjE2My4yYzAtNS43LTQuNy0xMC40LTEwLjQtMTAuNEgxNjkuOWMtOS4zIDAtMTMuOSAxMS4yLTcuNCAxNy44bDExLjIgMTEuMmMtMTcuOSAxOS44LTI4LjkgNDYuMi0yOC45IDc1LjFjMCA0My42IDI0LjkgODEuMyA2MS4xIDk5LjhjMTEuOCA2IDI2LjMgMS40IDMyLjMtMTAuNHMxLjQtMjYuMy0xMC40LTMyLjNjLTIwLjgtMTAuNi0zNC45LTMyLjItMzQuOS01N3ptOTMuMS01OC42YzIwLjggMTAuNiAzNC45IDMyLjIgMzQuOSA1N2MwIDE1LjYtNS42IDI5LjktMTQuOSA0MS4xTDI5MC42IDI4MWMtNi42LTYuNi0xNy44LTEuOS0xNy44IDcuNHY2MC41YzAgNS43IDQuNyAxMC40IDEwLjQgMTAuNGg2MC41YzkuMyAwIDEzLjktMTEuMiA3LjQtMTcuOGwtMTEuMi0xMS4yYzE3LjktMTkuOCAyOC45LTQ2LjIgMjguOS03NS4xYzAtNDMuNi0yNC45LTgxLjMtNjEuMS05OS44Yy0xMS44LTYtMjYuMy0xLjQtMzIuMyAxMC40cy0xLjQgMjYuMyAxMC40IDMyLjN6XCJdXG59O1xudmFyIGZhQm93bEZvb2QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm93bC1mb29kJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNGM2XCIsIFwiTTAgMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0Yy41IDAgMS4xIDAgMS42IDBDNzMgOTEuNSAxMDUuMyA2NCAxNDQgNjRjMTUgMCAyOSA0LjEgNDAuOSAxMS4yQzE5OC4yIDQ5LjYgMjI1LjEgMzIgMjU2IDMyczU3LjggMTcuNiA3MS4xIDQzLjJDMzM5IDY4LjEgMzUzIDY0IDM2OCA2NGMzOC43IDAgNzEgMjcuNSA3OC40IDY0Yy41IDAgMS4xIDAgMS42IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxMS43LTMuMSAyMi42LTguNiAzMkg4LjZDMy4xIDIxNC42IDAgMjAzLjcgMCAxOTJ6bTAgOTEuNEMwIDI2OC4zIDEyLjMgMjU2IDI3LjQgMjU2SDQ4NC42YzE1LjEgMCAyNy40IDEyLjMgMjcuNCAyNy40YzAgNzAuNS00NC40IDEzMC43LTEwNi43IDE1NC4xTDQwMy41IDQ1MmMtMiAxNi0xNS42IDI4LTMxLjggMjhIMTQwLjJjLTE2LjEgMC0yOS44LTEyLTMxLjgtMjhsLTEuOC0xNC40QzQ0LjQgNDE0LjEgMCAzNTMuOSAwIDI4My40elwiXVxufTtcbnZhciBmYUNhbmR5Q2FuZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYW5keS1jYW5lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzg2XCIsIFwiTTM0OC44IDEzMS41YzMuNy0yLjMgNy45LTMuNSAxMi4yLTMuNWMxMi43IDAgMjMgMTAuMyAyMyAyM3Y1LjZjMCA5LjktNS4xIDE5LjEtMTMuNSAyNC4zTDMwLjEgMzkzLjdDLjEgNDEyLjUtOSA0NTEuOSA5LjcgNDgxLjlzNTguMiAzOS4xIDg4LjIgMjAuNEw0MzguNCAyODkuNWM0NS44LTI4LjYgNzMuNi03OC44IDczLjYtMTMyLjhWMTUxQzUxMiA2Ny42IDQ0NC40IDAgMzYxIDBjLTI4LjMgMC01NiA4LTgwLjEgMjNMMjU0LjEgMzkuN2MtMzAgMTguNy0zOS4xIDU4LjItMjAuNCA4OC4yczU4LjIgMzkuMSA4OC4yIDIwLjRsMjYuOC0xNi44ek0yOTguNCA0OS44YzkuMi01LjcgMTkuMS0xMC4xIDI5LjQtMTMuMUwzNDggOTcuNWMtNS43IDEuNC0xMS4yIDMuNy0xNi4zIDYuOGwtMTIuNiA3LjlMMjk4LjQgNDkuOHptODguNSA1Mi43bDQ2LjItNDYuMmM4LjUgNi41IDE2LjEgMTQuMSAyMi42IDIyLjZsLTQ2LjIgNDYuMmMtNS4xLTkuNi0xMy0xNy41LTIyLjYtMjIuNnptMjguOSA1OS4zbDYxLjYgMjAuNWMtMi4yIDEwLjUtNS44IDIwLjctMTAuNSAzMC4ybC02Mi0yMC43YzYuMi04LjggMTAuMS0xOS4xIDExLTMwLjF6bS04Ni4xIDgyLjVsNjAuNCAzNy43LTMwLjIgMTguOS02MC40LTM3LjcgMzAuMi0xOC45em0tMTA3LjIgNjdsNjAuNCAzNy43LTMwLjIgMTguOS02MC40LTM3LjcgMzAuMi0xOC45ek0xMTkuMyAzNzUuN2w2MC40IDM3LjctMzAuMiAxOC45TDg5LjEgMzk0LjZsMzAuMi0xOC45elwiXVxufTtcbnZhciBmYUFycm93RG93bldpZGVTaG9ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1kb3duLXdpZGUtc2hvcnQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNvcnQtYW1vdW50LWFzY1wiLCBcInNvcnQtYW1vdW50LWRvd25cIl0sIFwiZjE2MFwiLCBcIk0xNTEuNiA0NjkuNkMxNDUuNSA0NzYuMiAxMzcgNDgwIDEyOCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDk2IDM2NS43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzY1LjdsMzIuNC0zNS40YzExLjktMTMgMzIuMi0xMy45IDQ1LjItMnMxMy45IDMyLjIgMiA0NS4ybC04OCA5NnpNMzIwIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjB6bTAtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMHptMC0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMHptMC0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMHpcIl1cbn07XG52YXIgZmFTb3J0QW1vdW50QXNjID0gZmFBcnJvd0Rvd25XaWRlU2hvcnQ7XG52YXIgZmFTb3J0QW1vdW50RG93biA9IGZhQXJyb3dEb3duV2lkZVNob3J0O1xudmFyIGZhQ2xvdWRCb2x0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLWJvbHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc3ODUsIFwidGh1bmRlcnN0b3JtXCJdLCBcImY3NmNcIiwgXCJNMCAyMjRjMCA1MyA0MyA5NiA5NiA5Nmg0Ny4yTDI5MCAyMDIuNWMxNy42LTE0LjEgNDIuNi0xNCA2MC4yIC4yczIyLjggMzguNiAxMi44IDU4LjhMMzMzLjcgMzIwSDM1Mmg2NGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NmMtLjUgMC0xLjEgMC0xLjYgMGMxLjEtNS4yIDEuNi0xMC41IDEuNi0xNmMwLTQ0LjItMzUuOC04MC04MC04MGMtMjQuMyAwLTQ2LjEgMTAuOS02MC44IDI4QzI1Ni41IDI0LjMgMjE5LjEgMCAxNzYgMEMxMTQuMSAwIDY0IDUwLjEgNjQgMTEyYzAgNy4xIC43IDE0LjEgMS45IDIwLjhDMjcuNiAxNDUuNCAwIDE4MS41IDAgMjI0em0zMzAuMSAzLjZjLTUuOC00LjctMTQuMi00LjctMjAuMS0uMWwtMTYwIDEyOGMtNS4zIDQuMi03LjQgMTEuNC01LjEgMTcuOHM4LjMgMTAuNyAxNS4xIDEwLjdoNzAuMUwxNzcuNyA0ODguOGMtMy40IDYuNy0xLjYgMTQuOSA0LjMgMTkuNnMxNC4yIDQuNyAyMC4xIC4xbDE2MC0xMjhjNS4zLTQuMiA3LjQtMTEuNCA1LjEtMTcuOHMtOC4zLTEwLjctMTUuMS0xMC43SDI4MS45bDUyLjQtMTA0LjhjMy40LTYuNyAxLjYtMTQuOS00LjItMTkuNnpcIl1cbn07XG52YXIgZmFUaHVuZGVyc3Rvcm0gPSBmYUNsb3VkQm9sdDtcbnZhciBmYVRleHRTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZXh0LXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJyZW1vdmUtZm9ybWF0XCJdLCBcImY4N2RcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0wzNTUuNyAyNTMuNSA0MDAuMiA5Nkg1MDNMNDk3IDEyMC4yYy00LjMgMTcuMSA2LjEgMzQuNSAyMy4zIDM4LjhzMzQuNS02LjEgMzguOC0yMy4zbDExLTQ0LjFDNTc3LjYgNjEuMyA1NTQuNyAzMiA1MjMuNSAzMkgzNzYuMWgtLjNIMjA0LjVjLTIyIDAtNDEuMiAxNS00Ni42IDM2LjRsLTYuMyAyNS4yTDM4LjggNS4xem0xNjggMTMxLjdjLjEtLjMgLjItLjcgLjMtMUwyMTcgOTZIMzMzLjdMMzAxLjMgMjEwLjhsLTk0LjUtNzQuMXpNMjQzLjMgNDE2SDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzA5LjhsMTcuNi02Mi4xTDI3Mi45IDMxMSAyNDMuMyA0MTZ6XCJdXG59O1xudmFyIGZhUmVtb3ZlRm9ybWF0ID0gZmFUZXh0U2xhc2g7XG52YXIgZmFGYWNlU21pbGVXaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2Utc21pbGUtd2luaycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUyMSwgXCJzbWlsZS13aW5rXCJdLCBcImY0ZGFcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2NC4xIDMyNS41QzE4MiAzNDYuMiAyMTIuNiAzNjggMjU2IDM2OHM3NC0yMS44IDkxLjktNDIuNWM1LjgtNi43IDE1LjktNy40IDIyLjYtMS42czcuNCAxNS45IDEuNiAyMi42QzM0OS44IDM3Mi4xIDMxMS4xIDQwMCAyNTYgNDAwcy05My44LTI3LjktMTE2LjEtNTMuNWMtNS44LTYuNy01LjEtMTYuOCAxLjYtMjIuNnMxNi44LTUuMSAyMi42IDEuNnpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE1Ni40IDI1LjZjLTUuMyA3LjEtMTUuMyA4LjUtMjIuNCAzLjJzLTguNS0xNS4zLTMuMi0yMi40YzMwLjQtNDAuNSA5MS4yLTQwLjUgMTIxLjYgMGM1LjMgNy4xIDMuOSAxNy4xLTMuMiAyMi40cy0xNy4xIDMuOS0yMi40LTMuMmMtMTcuNi0yMy41LTUyLjgtMjMuNS03MC40IDB6XCJdXG59O1xudmFyIGZhU21pbGVXaW5rID0gZmFGYWNlU21pbGVXaW5rO1xudmFyIGZhRmlsZVdvcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS13b3JkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWMyXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTExIDI1Ny4xbDI2LjggODkuMiAzMS42LTkwLjNjMy40LTkuNiAxMi41LTE2LjEgMjIuNy0xNi4xczE5LjMgNi40IDIyLjcgMTYuMWwzMS42IDkwLjNMMjczIDI1Ny4xYzMuOC0xMi43IDE3LjItMTkuOSAyOS45LTE2LjFzMTkuOSAxNy4yIDE2LjEgMjkuOWwtNDggMTYwYy0zIDEwLTEyIDE2LjktMjIuNCAxNy4xcy0xOS44LTYuMi0yMy4yLTE2LjFMMTkyIDMzNi42bC0zMy4zIDk1LjNjLTMuNCA5LjgtMTIuOCAxNi4zLTIzLjIgMTYuMXMtMTkuNS03LjEtMjIuNC0xNy4xbC00OC0xNjBjLTMuOC0xMi43IDMuNC0yNi4xIDE2LjEtMjkuOXMyNi4xIDMuNCAyOS45IDE2LjF6XCJdXG59O1xudmFyIGZhRmlsZVBvd2VycG9pbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1wb3dlcnBvaW50JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWM0XCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTM2IDI0MGg2OGM0MiAwIDc2IDM0IDc2IDc2cy0zNCA3Ni03NiA3NkgxNjB2MzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMzY4IDI2NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHptNjggMTA0YzE1LjUgMCAyOC0xMi41IDI4LTI4cy0xMi41LTI4LTI4LTI4SDE2MHY1Nmg0NHpcIl1cbn07XG52YXIgZmFBcnJvd3NMZWZ0UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLWxlZnQtcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImFycm93cy1oXCJdLCBcImYwN2VcIiwgXCJNNDA2LjYgMzc0LjZsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjRsLTI5My41IDAgNDEuNC00MS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODhsMjkzLjUgMC00MS40IDQxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDB6XCJdXG59O1xudmFyIGZhQXJyb3dzSCA9IGZhQXJyb3dzTGVmdFJpZ2h0O1xudmFyIGZhSG91c2VMb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MTBcIiwgXCJNMzg0IDQ4MGMwIDExLjcgMy4xIDIyLjYgOC42IDMySDM5MmMtMjIuMSAwLTQwLTE3LjktNDAtNDBWNDQ4IDM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0IDI0YzAgMjIuMS0xNy45IDQwLTQwIDQwSDE2MCAxMjguMWMtMS41IDAtMy0uMS00LjUtLjJjLTEuMiAuMS0yLjQgLjItMy42IC4ySDEwNGMtMjIuMSAwLTQwLTE3LjktNDAtNDBWMzYwYzAtLjkgMC0xLjkgLjEtMi44VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0OTAuNyAxNjYuM0M0NDcuMiAxODEuNyA0MTYgMjIzLjIgNDE2IDI3MnYyNC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40VjQ4MHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwiXVxufTtcbnZhciBmYUNsb3VkQXJyb3dEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLWFycm93LWRvd24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFs2MjMzNywgXCJjbG91ZC1kb3dubG9hZFwiLCBcImNsb3VkLWRvd25sb2FkLWFsdFwiXSwgXCJmMGVkXCIsIFwiTTE0NCA0ODBDNjQuNSA0ODAgMCA0MTUuNSAwIDMzNmMwLTYyLjggNDAuMi0xMTYuMiA5Ni4yLTEzNS45Yy0uMS0yLjctLjItNS40LS4yLTguMWMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGM1OS4zIDAgMTExIDMyLjIgMTM4LjcgODAuMkM0MDkuOSAxMDIgNDI4LjMgOTYgNDQ4IDk2YzUzIDAgOTYgNDMgOTYgOTZjMCAxMi4yLTIuMyAyMy44LTYuNCAzNC42QzU5NiAyMzguNCA2NDAgMjkwLjEgNjQwIDM1MmMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOEgxNDR6bTc5LTE2N2w4MCA4MGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw4MC04MGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC0zOSAzOVYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRWMzE4LjFsLTM5LTM5Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45elwiXVxufTtcbnZhciBmYUNsb3VkRG93bmxvYWQgPSBmYUNsb3VkQXJyb3dEb3duO1xudmFyIGZhQ2xvdWREb3dubG9hZEFsdCA9IGZhQ2xvdWRBcnJvd0Rvd247XG52YXIgZmFDaGlsZHJlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGlsZHJlbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRlMVwiLCBcIk0xNjAgMGE2NCA2NCAwIDEgMSAwIDEyOEE2NCA2NCAwIDEgMSAxNjAgMHpNODggNDgwVjQwMEg3MC4yYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMWwzMS4xLTkzLjRMNTcuNSAzMjMuM2MtMTAuNyAxNC4xLTMwLjggMTYuOC00NC44IDYuMnMtMTYuOC0zMC43LTYuMi00NC44TDY1LjQgMjA3YzIyLjQtMjkuNiA1Ny41LTQ3IDk0LjYtNDdzNzIuMiAxNy40IDk0LjYgNDdsNTguOSA3Ny43YzEwLjcgMTQuMSA3LjkgMzQuMi02LjIgNDQuOHMtMzQuMiA3LjktNDQuOC02LjJsLTI4LjYtMzcuOEwyNjUgMzc4LjljMy41IDEwLjQtNC4zIDIxLjEtMTUuMiAyMS4xSDIzMnY4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0MDBIMTUydjgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyek00ODAgMGE2NCA2NCAwIDEgMSAwIDEyOEE2NCA2NCAwIDEgMSA0ODAgMHptLTggMzg0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjMwMC41TDM5NS4xIDMyMWMtOS40IDE1LTI5LjIgMTkuNC00NC4xIDEwcy0xOS40LTI5LjItMTAtNDQuMWw1MS43LTgyLjFjMTcuNi0yNy45IDQ4LjMtNDQuOSA4MS4yLTQ0LjloMTIuM2MzMyAwIDYzLjcgMTYuOSA4MS4yIDQ0LjlMNjE5LjEgMjg3YzkuNCAxNSA0LjkgMzQuNy0xMCA0NC4xcy0zNC43IDQuOS00NC4xLTEwTDU1MiAzMDAuNVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0SDQ3MnpcIl1cbn07XG52YXIgZmFDaGFsa2JvYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoYWxrYm9hcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImJsYWNrYm9hcmRcIl0sIFwiZjUxYlwiLCBcIk05NiAzMkM2MC43IDMyIDMyIDYwLjcgMzIgOTZWMzg0SDk2Vjk2bDM4NCAwVjM4NGg2NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg5NnpNMjI0IDM4NHYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDE2VjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwiXVxufTtcbnZhciBmYUJsYWNrYm9hcmQgPSBmYUNoYWxrYm9hcmQ7XG52YXIgZmFVc2VyTGFyZ2VTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWxhcmdlLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJ1c2VyLWFsdC1zbGFzaFwiXSwgXCJmNGZhXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzgxLjkgMjc0YzQ4LjUtMjMuMiA4Mi4xLTcyLjcgODIuMS0xMzBDNDY0IDY0LjUgMzk5LjUgMCAzMjAgMEMyNTAuNCAwIDE5Mi40IDQ5LjMgMTc4LjkgMTE0LjlMMzguOCA1LjF6TTU0NS41IDUxMkg1MjhMMjg0LjMgMzIwaC01OUMxMzYuMiAzMjAgNjQgMzkyLjIgNjQgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDU0NS4zbC4zIDB6XCJdXG59O1xudmFyIGZhVXNlckFsdFNsYXNoID0gZmFVc2VyTGFyZ2VTbGFzaDtcbnZhciBmYUVudmVsb3BlT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbnZlbG9wZS1vcGVuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjIxMzVdLCBcImYyYjZcIiwgXCJNNjQgMjA4LjFMMjU2IDY1LjkgNDQ4IDIwOC4xdjQ3LjRMMjg5LjUgMzczYy05LjcgNy4yLTIxLjQgMTEtMzMuNSAxMXMtMjMuOC0zLjktMzMuNS0xMUw2NCAyNTUuNVYyMDguMXpNMjU2IDBjLTEyLjEgMC0yMy44IDMuOS0zMy41IDExTDI1LjkgMTU2LjdDOS42IDE2OC44IDAgMTg3LjggMCAyMDguMVY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjIwOC4xYzAtMjAuMy05LjYtMzkuNC0yNS45LTUxLjRMMjg5LjUgMTFDMjc5LjggMy45IDI2OC4xIDAgMjU2IDB6XCJdXG59O1xudmFyIGZhSGFuZHNoYWtlU2ltcGxlU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLXNpbXBsZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiaGFuZHNoYWtlLWFsdC1zbGFzaFwiXSwgXCJlMDVmXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTEzNS0xMDUuOGMtMS4xLTExLjMtNi4zLTIyLjMtMTUuMy0zMC43bC0xMzQuMi0xMjMtMjMuNCAxOC4yLTI2LTIwLjMgNzcuMi02MC4xYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1NTAuMiAzNTJINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OEg1MTZoLTQtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4ybC04OS43IDcyLjYtMjUuOC0yMC4zIDgxLjgtNjYuMmMtMTEuNi00LjktMjQuMS03LjQtMzYuOC03LjRDMjM0IDY0IDIxNS43IDY5LjYgMjAwIDgwbC0zNS41IDIzLjdMMzguOCA1LjF6TTQxMy42IDQyMS45TDQxLjIgMTI4LjVDMTcuOSAxMzEuOCAwIDE1MS44IDAgMTc2VjMwNGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgxNTYuMmw5MS40IDgzLjRjMTkuNiAxNy45IDQ5LjkgMTYuNSA2Ny44LTMuMWM1LjUtNi4xIDkuMi0xMy4yIDExLjEtMjAuNmwxNyAxNS42YzE5LjUgMTcuOSA0OS45IDE2LjYgNjcuOC0yLjljLjgtLjggMS41LTEuNyAyLjItMi42elwiXVxufTtcbnZhciBmYUhhbmRzaGFrZUFsdFNsYXNoID0gZmFIYW5kc2hha2VTaW1wbGVTbGFzaDtcbnZhciBmYU1hdHRyZXNzUGlsbG93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hdHRyZXNzLXBpbGxvdycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUyNVwiLCBcIk0yNTYgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDI1NlY2NHptMzIgMzg0SDU3NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjg4VjQ0OHpNNjQgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwelwiXVxufTtcbnZhciBmYUd1YXJhbmlTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2d1YXJhbmktc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTE5YVwiLCBcIk0xOTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNjYuN0M2OS4yIDgxLjkgMCAxNjAuOSAwIDI1NnM2OS4yIDE3NC4xIDE2MCAxODkuM1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDUuM2M5MC44LTE1LjIgMTYwLTk0LjIgMTYwLTE4OS4zYzAtMTcuNy0xNC4zLTMyLTMyLTMySDIyNFYxMzJjMjIuMSA1LjcgNDEuOCAxNy4xIDU3LjYgMzIuNmMxMi42IDEyLjQgMzIuOSAxMi4yIDQ1LjMtLjRzMTIuMi0zMi45LS41LTQ1LjNDMjk5IDkyIDI2My41IDczLjMgMjI0IDY2LjdWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTE2MCAxMzJWMzgwYy01NS4yLTE0LjItOTYtNjQuMy05Ni0xMjRzNDAuOC0xMDkuOCA5Ni0xMjR6TTIyNCAzODBWMjg4aDkyYy0xMS42IDQ1LTQ3IDgwLjQtOTIgOTJ6XCJdXG59O1xudmFyIGZhQXJyb3dzUm90YXRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy1yb3RhdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg0NzIsIFwicmVmcmVzaFwiLCBcInN5bmNcIl0sIFwiZjAyMVwiLCBcIk0xMDUuMSAyMDIuNmM3LjctMjEuOCAyMC4yLTQyLjMgMzcuOC01OS44YzYyLjUtNjIuNSAxNjMuOC02Mi41IDIyNi4zIDBMMzg2LjMgMTYwSDMzNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NjMuNWMwIDAgMCAwIDAgMGguNGMxNy43IDAgMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnY1MS4yTDQxNC40IDk3LjZjLTg3LjUtODcuNS0yMjkuMy04Ny41LTMxNi44IDBDNzMuMiAxMjIgNTUuNiAxNTAuNyA0NC44IDE4MS40Yy01LjkgMTYuNyAyLjkgMzQuOSAxOS41IDQwLjhzMzQuOS0yLjkgNDAuOC0xOS41ek0zOSAyODkuM2MtNSAxLjUtOS44IDQuMi0xMy43IDguMmMtNCA0LTYuNyA4LjgtOC4xIDE0Yy0uMyAxLjItLjYgMi41LS44IDMuOGMtLjMgMS43LS40IDMuNC0uNCA1LjFWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzk2LjlsMTcuNiAxNy41IDAgMGM4Ny41IDg3LjQgMjI5LjMgODcuNCAzMTYuNyAwYzI0LjQtMjQuNCA0Mi4xLTUzLjEgNTIuOS04My43YzUuOS0xNi43LTIuOS0zNC45LTE5LjUtNDAuOHMtMzQuOSAyLjktNDAuOCAxOS41Yy03LjcgMjEuOC0yMC4yIDQyLjMtMzcuOCA1OS44Yy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwbC0uMS0uMUwxMjUuNiAzNTJIMTc2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4LjRjLTEuNiAwLTMuMiAuMS00LjggLjNzLTMuMSAuNS00LjYgMXpcIl1cbn07XG52YXIgZmFSZWZyZXNoID0gZmFBcnJvd3NSb3RhdGU7XG52YXIgZmFTeW5jID0gZmFBcnJvd3NSb3RhdGU7XG52YXIgZmFGaXJlRXh0aW5ndWlzaGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpcmUtZXh0aW5ndWlzaGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTE5XSwgXCJmMTM0XCIsIFwiTTUwMC4zIDcuM0M1MDcuNyAxMy4zIDUxMiAyMi40IDUxMiAzMnY5NmMwIDkuNi00LjMgMTguNy0xMS43IDI0LjdzLTE3LjIgOC41LTI2LjYgNi42bC0xNjAtMzJDMzAxLjUgMTI0LjkgMjkyIDExNS43IDI4OSAxMDRIMjI0djM0LjhjMzcuOCAxOCA2NCA1Ni41IDY0IDEwMS4yVjM4NEg2NFYyNDBjMC00NC43IDI2LjItODMuMiA2NC0xMDEuMlYxMTBjLTM2LjIgMTEuMS02NiAzNi45LTgyLjMgNzAuNWMtNS44IDExLjktMjAuMiAxNi45LTMyLjEgMTEuMVMtMy4zIDE3MS40IDIuNSAxNTkuNUMyNi43IDEwOS44IDcyLjcgNzIuNiAxMjggNjAuNFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlY1Nmg2NWMzLTExLjcgMTIuNS0yMC45IDI0LjctMjMuNGwxNjAtMzJjOS40LTEuOSAxOS4xIC42IDI2LjYgNi42ek0yODggNDE2djMyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDEyOGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNDE2SDI4OHpNMTc2IDk2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIl1cbn07XG52YXIgZmFDcnV6ZWlyb1NpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3J1emVpcm8tc2lnbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTE1MlwiLCBcIk05NiAyNTZjMC04OC40IDcxLjYtMTYwIDE2MC0xNjBjNDEgMCA3OC4zIDE1LjQgMTA2LjcgNDAuN2MxMy4yIDExLjggMzMuNCAxMC43IDQ1LjItMi41czEwLjctMzMuNC0yLjUtNDUuMmMtMzkuNi0zNS41LTkyLTU3LTE0OS4zLTU3QzEzMi4zIDMyIDMyIDEzMi4zIDMyIDI1NnMxMDAuMyAyMjQgMjI0IDIyNGM1Ny40IDAgMTA5LjctMjEuNiAxNDkuMy01N2MxMy4yLTExLjggMTQuMy0zMiAyLjUtNDUuMnMtMzItMTQuMy00NS4yLTIuNUMzMzQuMyA0MDAuNiAyOTcgNDE2IDI1NiA0MTZWMzIwdi04LjdjMC0xMi44IDEwLjQtMjMuMyAyMy4zLTIzLjNjNC42IDAgOS4xIDEuNCAxMi45IDMuOWwxMC4xIDYuN2MxNC43IDkuOCAzNC42IDUuOCA0NC40LTguOXM1LjgtMzQuNi04LjktNDQuNGwtMTAuMS02LjdjLTE0LjMtOS42LTMxLjItMTQuNy00OC40LTE0LjdjLTEyLjQgMC0yNC4yIDIuNi0zNC45IDcuM2MtNS41LTQuNS0xMi42LTcuMy0yMC4zLTcuM2MtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTUuM1YzMjB2ODIuN0MxMzUuNSAzNzggOTYgMzIxLjYgOTYgMjU2elwiXVxufTtcbnZhciBmYUdyZWF0ZXJUaGFuRXF1YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JlYXRlci10aGFuLWVxdWFsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTMyXCIsIFwiTTUyLjEgOTMuN0MzNS43IDg3LjEgMjcuNyA2OC41IDM0LjMgNTIuMXMyNS4yLTI0LjQgNDEuNi0xNy44bDMyMCAxMjhDNDA4IDE2Ny4xIDQxNiAxNzguOSA0MTYgMTkycy04IDI0LjktMjAuMSAyOS43bC0zMjAgMTI4Yy0xNi40IDYuNi0zNS0xLjQtNDEuNi0xNy44czEuNC0zNSAxNy44LTQxLjZMMjk3LjggMTkyIDUyLjEgOTMuN3pNNDE2IDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZ6XCJdXG59O1xudmFyIGZhU2hpZWxkSGFsdmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC1oYWx2ZWQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInNoaWVsZC1hbHRcIl0sIFwiZjNlZFwiLCBcIk0yNTYgMGM0LjYgMCA5LjIgMSAxMy40IDIuOUw0NTcuNyA4Mi44YzIyIDkuMyAzOC40IDMxIDM4LjMgNTcuMmMtLjUgOTkuMi00MS4zIDI4MC43LTIxMy42IDM2My4yYy0xNi43IDgtMzYuMSA4LTUyLjggMEM1Ny4zIDQyMC43IDE2LjUgMjM5LjIgMTYgMTQwYy0uMS0yNi4yIDE2LjMtNDcuOSAzOC4zLTU3LjJMMjQyLjcgMi45QzI0Ni44IDEgMjUxLjQgMCAyNTYgMHptMCA2Ni44VjQ0NC44QzM5NCAzNzggNDMxLjEgMjMwLjEgNDMyIDE0MS40TDI1NiA2Ni44bDAgMHpcIl1cbn07XG52YXIgZmFTaGllbGRBbHQgPSBmYVNoaWVsZEhhbHZlZDtcbnZhciBmYUJvb2tBdGxhcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLWF0bGFzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJhdGxhc1wiXSwgXCJmNTU4XCIsIFwiTTAgOTZDMCA0MyA0MyAwIDk2IDBIMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnY2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODQgOTZjLTUzIDAtOTYtNDMtOTYtOTZWOTZ6TTY0IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJWMzg0SDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMjQ3LjQgMjgzLjhjLTMuNyAzLjctNi4yIDQuMi03LjQgNC4ycy0zLjctLjUtNy40LTQuMmMtMy44LTMuNy04LTEwLTExLjgtMTguOWMtNi4yLTE0LjUtMTAuOC0zNC4zLTEyLjItNTYuOWg2M2MtMS41IDIyLjYtNiA0Mi40LTEyLjIgNTYuOWMtMy44IDguOS04IDE1LjItMTEuOCAxOC45em00Mi43LTkuOWM3LjMtMTguMyAxMi00MS4xIDEzLjQtNjUuOWgzMS4xYy00LjcgMjcuOS0yMS40IDUxLjctNDQuNSA2NS45em0wLTE2My44YzIzLjIgMTQuMiAzOS45IDM4IDQ0LjUgNjUuOUgzMDMuNWMtMS40LTI0LjctNi4xLTQ3LjUtMTMuNC02NS45ek0zNjggMTkyYTEyOCAxMjggMCAxIDAgLTI1NiAwIDEyOCAxMjggMCAxIDAgMjU2IDB6TTE0NS4zIDIwOGgzMS4xYzEuNCAyNC43IDYuMSA0Ny41IDEzLjQgNjUuOWMtMjMuMi0xNC4yLTM5LjktMzgtNDQuNS02NS45em0zMS4xLTMySDE0NS4zYzQuNy0yNy45IDIxLjQtNTEuNyA0NC41LTY1LjljLTcuMyAxOC4zLTEyIDQxLjEtMTMuNCA2NS45em01Ni4xLTc1LjhjMy43LTMuNyA2LjItNC4yIDcuNC00LjJzMy43IC41IDcuNCA0LjJjMy44IDMuNyA4IDEwIDExLjggMTguOWM2LjIgMTQuNSAxMC44IDM0LjMgMTIuMiA1Ni45aC02M2MxLjUtMjIuNiA2LTQyLjQgMTIuMi01Ni45YzMuOC04LjkgOC0xNS4yIDExLjgtMTguOXpcIl1cbn07XG52YXIgZmFBdGxhcyA9IGZhQm9va0F0bGFzO1xudmFyIGZhVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlydXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwNzRcIiwgXCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQzLjVjMCA0OS45LTYwLjMgNzQuOS05NS42IDM5LjZMMTIwLjIgNzVDMTA3LjcgNjIuNSA4Ny41IDYyLjUgNzUgNzVzLTEyLjUgMzIuOCAwIDQ1LjNsOC4yIDguMkMxMTguNCAxNjMuNyA5My40IDIyNCA0My41IDIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0My41YzQ5LjkgMCA3NC45IDYwLjMgMzkuNiA5NS42TDc1IDM5MS44Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDguMi04LjJjMzUuMy0zNS4zIDk1LjYtMTAuMyA5NS42IDM5LjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDY4LjVjMC00OS45IDYwLjMtNzQuOSA5NS42LTM5LjZsOC4yIDguMmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC04LjItOC4yYy0zNS4zLTM1LjMtMTAuMy05NS42IDM5LjYtOTUuNkg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDY4LjVjLTQ5LjkgMC03NC45LTYwLjMtMzkuNi05NS42bDguMi04LjJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTguMiA4LjJDMzQ4LjMgMTE4LjQgMjg4IDkzLjQgMjg4IDQzLjVWMzJ6TTE3NiAyMjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMTI4IDU2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIl1cbn07XG52YXIgZmFFbnZlbG9wZUNpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VudmVsb3BlLWNpcmNsZS1jaGVjaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRlOFwiLCBcIk00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMmMwIDE1LjEgNy4xIDI5LjMgMTkuMiAzOC40TDIzNi44IDMxMy42YzExLjQgOC41IDI3IDguNSAzOC40IDBsNTcuNC00M2MyMy45LTU5LjggNzkuNy0xMDMuMyAxNDYuMy0xMDkuOGwxMy45LTEwLjRjMTIuMS05LjEgMTkuMi0yMy4zIDE5LjItMzguNGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNMjk0LjQgMzM5LjJjLTIyLjggMTcuMS01NCAxNy4xLTc2LjggMEwwIDE3NlYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzYwLjJDMzM1LjEgNDE3LjYgMzIwIDM3OC41IDMyMCAzMzZjMC01LjYgLjMtMTEuMSAuOC0xNi42bC0yNi40IDE5Ljh6TTY0MCAzMzZhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzNTMuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJdXG59O1xudmFyIGZhTGF5ZXJHcm91cCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXllci1ncm91cCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjVmZFwiLCBcIk0yNjQuNSA1LjJjMTQuOS02LjkgMzIuMS02LjkgNDcgMGwyMTguNiAxMDFjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDE0OS44QzM3LjQgMTQ1LjggMzIgMTM3LjMgMzIgMTI4czUuNC0xNy45IDEzLjktMjEuOEwyNjQuNSA1LjJ6TTQ3Ni45IDIwOS42bDUzLjIgMjQuNmM4LjUgMy45IDEzLjkgMTIuNCAxMy45IDIxLjhzLTUuNCAxNy45LTEzLjkgMjEuOGwtMjE4LjYgMTAxYy0xNC45IDYuOS0zMi4xIDYuOS00NyAwTDQ1LjkgMjc3LjhDMzcuNCAyNzMuOCAzMiAyNjUuMyAzMiAyNTZzNS40LTE3LjkgMTMuOS0yMS44bDUzLjItMjQuNiAxNTIgNzAuMmMyMy40IDEwLjggNTAuNCAxMC44IDczLjggMGwxNTItNzAuMnptLTE1MiAxOTguMmwxNTItNzAuMiA1My4yIDI0LjZjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDQwNS44QzM3LjQgNDAxLjggMzIgMzkzLjMgMzIgMzg0czUuNC0xNy45IDEzLjktMjEuOGw1My4yLTI0LjYgMTUyIDcwLjJjMjMuNCAxMC44IDUwLjQgMTAuOCA3My44IDB6XCJdXG59O1xudmFyIGZhQXJyb3dzVG9Eb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLXRvLWRvdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRiZVwiLCBcIk0yNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGgzMmMxMi45IDAgMjQuNiA3LjggMjkuNiAxOS44czIuMiAyNS43LTYuOSAzNC45bC02NCA2NGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTY0LTY0Yy05LjItOS4yLTExLjktMjIuOS02LjktMzQuOXMxNi42LTE5LjggMjkuNi0xOS44aDMyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0xNjkuNCAzOTMuNGw2NC02NGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw2NCA2NGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOXMtMTYuNiAxOS44LTI5LjYgMTkuOEgyODh2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDE5MmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0Ljl6TTMyIDIyNEg2NFYxOTJjMC0xMi45IDcuOC0yNC42IDE5LjgtMjkuNnMyNS43LTIuMiAzNC45IDYuOWw2NCA2NGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtNjQgNjRjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45cy0xOS44LTE2LjYtMTkuOC0yOS42VjI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMjk3LjQgNTQuNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsNjQtNjRjOS4yLTkuMiAyMi45LTExLjkgMzQuOS02LjlzMTkuOCAxNi42IDE5LjggMjkuNnYzMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NDh2MzJjMCAxMi45LTcuOCAyNC42LTE5LjggMjkuNnMtMjUuNyAyLjItMzQuOS02LjlsLTY0LTY0ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFBcmNod2F5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FyY2h3YXknLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NTdcIiwgXCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMnptMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZoNjRWMzUyYzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZWNDgwaDY0IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyVjEyOEgzMlY0MTZ6XCJdXG59O1xudmFyIGZhSGVhcnRDaXJjbGVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0ZmRcIiwgXCJNNDcuNiAzMDAuNEwyMjguMyA0NjkuMWM3LjUgNyAxNy40IDEwLjkgMjcuNyAxMC45czIwLjItMy45IDI3LjctMTAuOWwyLjYtMi40QzI2Ny4yIDQzOC42IDI1NiA0MDQuNiAyNTYgMzY4YzAtOTcuMiA3OC44LTE3NiAxNzYtMTc2YzI4LjMgMCA1NSA2LjcgNzguNyAxOC41Yy45LTYuNSAxLjMtMTMgMS4zLTE5LjZ2LTUuOGMwLTY5LjktNTAuNS0xMjkuNS0xMTkuNC0xNDFDMzQ3IDM2LjUgMzAwLjYgNTEuNCAyNjggODRMMjU2IDk2IDI0NCA4NGMtMzIuNi0zMi42LTc5LTQ3LjUtMTI0LjYtMzkuOUM1MC41IDU1LjYgMCAxMTUuMiAwIDE4NS4xdjUuOGMwIDQxLjUgMTcuMiA4MS4yIDQ3LjYgMTA5LjV6TTU3NiAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQxNiAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJdXG59O1xudmFyIGZhSG91c2VDaGltbmV5Q3JhY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtY2hpbW5leS1jcmFjaycsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiaG91c2UtZGFtYWdlXCJdLCBcImY2ZjFcIiwgXCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNIMzI2LjRMMjg4IDQ0OGw4MC44LTY3LjNjNy44LTYuNSA3LjYtMTguNi0uNC0yNC45TDI1MC42IDI2My4yYy0xNC42LTExLjUtMzMuOCA3LTIyLjggMjJMMjg4IDM2OGwtODUuNSA3MS4yYy02LjEgNS03LjUgMTMuOC0zLjUgMjAuNUwyMzAuNCA1MTJIMTI4LjFjLTM1LjMgMC02NC0yOC43LTY0LTY0VjI4Ny42SDMyYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0MTYgMTAwLjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTg1bDUyLjggNDYuNGM4IDcgMTIgMTUgMTEgMjR6XCJdXG59O1xudmFyIGZhSG91c2VEYW1hZ2UgPSBmYUhvdXNlQ2hpbW5leUNyYWNrO1xudmFyIGZhRmlsZVppcHBlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXppcHBlcicsXG4gIGljb246IFszODQsIDUxMiwgW1wiZmlsZS1hcmNoaXZlXCJdLCBcImYxYzZcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek05NiA0OGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnptLTYuMyA3MS44YzMuNy0xNCAxNi40LTIzLjggMzAuOS0yMy44aDE0LjhjMTQuNSAwIDI3LjIgOS43IDMwLjkgMjMuOGwyMy41IDg4LjJjMS40IDUuNCAyLjEgMTAuOSAyLjEgMTYuNGMwIDM1LjItMjguOCA2My43LTY0IDYzLjdzLTY0LTI4LjUtNjQtNjMuN2MwLTUuNSAuNy0xMS4xIDIuMS0xNi40bDIzLjUtODguMnpNMTEyIDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMTJ6XCJdXG59O1xudmFyIGZhRmlsZUFyY2hpdmUgPSBmYUZpbGVaaXBwZXI7XG52YXIgZmFTcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbOTYzMiwgOTcyMywgOTcyNCwgNjE1OTBdLCBcImYwYzhcIiwgXCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgzODRjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NnpcIl1cbn07XG52YXIgZmFNYXJ0aW5pR2xhc3NFbXB0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJ0aW5pLWdsYXNzLWVtcHR5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJnbGFzcy1tYXJ0aW5pXCJdLCBcImYwMDBcIiwgXCJNMzIgMEMxOS4xIDAgNy40IDcuOCAyLjQgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlMMjI0IDI2OS4zVjQ0OEgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTYgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4VjI2OS4zTDUwMi42IDU0LjZjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTNDkyLjkgMCA0ODAgMEgzMnpNMjU2IDIxMC43TDEwOS4zIDY0SDQwMi43TDI1NiAyMTAuN3pcIl1cbn07XG52YXIgZmFHbGFzc01hcnRpbmkgPSBmYU1hcnRpbmlHbGFzc0VtcHR5O1xudmFyIGZhQ291Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY291Y2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0YjhcIiwgXCJNNjQgMTYwQzY0IDg5LjMgMTIxLjMgMzIgMTkyIDMySDQ0OGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOHYzMy42Yy0zNi41IDcuNC02NCAzOS43LTY0IDc4LjR2NDhIMTI4VjI3MmMwLTM4LjctMjcuNS03MS02NC03OC40VjE2MHpNNTQ0IDI3MmMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNjNS0xLjggMTAuNC0yLjcgMTYtMi43YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkg1NzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMySDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNzJjMC0yNi41IDIxLjUtNDggNDgtNDhjNS42IDAgMTEgMSAxNiAyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zdjQ4IDMyaDMySDUxMmgzMlYzMjAgMjcyelwiXVxufTtcbnZhciBmYUNlZGlTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NlZGktc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTBkZlwiLCBcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNjYuN0MxMDEuMiA4MS45IDMyIDE2MC45IDMyIDI1NnM2OS4yIDE3NC4xIDE2MCAxODkuM1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDUuM2MzMC45LTUuMiA1OS4yLTE3LjcgODMuMi0zNS44YzE0LjEtMTAuNiAxNy0zMC43IDYuNC00NC44cy0zMC43LTE3LTQ0LjgtNi40Yy0xMy4yIDkuOS0yOC4zIDE3LjMtNDQuOCAyMS42VjEzMmMxNi40IDQuMiAzMS42IDExLjYgNDQuOCAyMS42YzE0LjEgMTAuNiAzNC4yIDcuOCA0NC44LTYuNHM3LjgtMzQuMi02LjQtNDQuOGMtMjQtMTgtNTIuNC0zMC42LTgzLjItMzUuOFYzMnpNMTkyIDEzMlYzODBjLTU1LjItMTQuMi05Ni02NC4zLTk2LTEyNHM0MC44LTEwOS44IDk2LTEyNHpcIl1cbn07XG52YXIgZmFJdGFsaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaXRhbGljJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMDMzXCIsIFwiTTEyOCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjkzLjNMMTYwIDQxNmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg5MC43TDIyNCA5NkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwiXVxufTtcbnZhciBmYUNodXJjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaHVyY2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFs5OTYyXSwgXCJmNTFkXCIsIFwiTTM0NCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0OEgyNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMzJ2NDYuNEwxODMuMyAyMTBjLTE0LjUgOC43LTIzLjMgMjQuMy0yMy4zIDQxLjJWNTEyaDk2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0djk2aDk2VjI1MS4yYzAtMTYuOS04LjgtMzIuNS0yMy4zLTQxLjJMMzQ0IDE0Mi40Vjk2aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDM0NFYyNHpNMjQuOSAzMzAuM0M5LjUgMzM4LjggMCAzNTQuOSAwIDM3Mi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MFYyNzMuNkwyNC45IDMzMC4zek01OTIgNTEyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3Mi40YzAtMTcuNS05LjUtMzMuNi0yNC45LTQyLjFMNTEyIDI3My42VjUxMmg4MHpcIl1cbn07XG52YXIgZmFDb21tZW50c0RvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50cy1kb2xsYXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2NTNcIiwgXCJNNDE2IDE3NmMwIDk3LjItOTMuMSAxNzYtMjA4IDE3NmMtMzguMiAwLTczLjktOC43LTEwNC43LTIzLjljLTcuNSA0LTE2IDcuOS0yNS4yIDExLjRDNTkuOCAzNDYuNCAzNy44IDM1MiAxNiAzNTJjLTYuOSAwLTEzLjEtNC41LTE1LjItMTEuMXMuMi0xMy44IDUuOC0xNy45bDAgMCAwIDAgLjItLjJjLjItLjIgLjYtLjQgMS4xLS44YzEtLjggMi41LTIgNC4zLTMuN2MzLjYtMy4zIDguNS04LjEgMTMuMy0xNC4zYzUuNS03IDEwLjctMTUuNCAxNC4yLTI0LjdDMTQuNyAyNTAuMyAwIDIxNC42IDAgMTc2QzAgNzguOCA5My4xIDAgMjA4IDBTNDE2IDc4LjggNDE2IDE3NnpNMjMxLjUgMzgzQzM0OC45IDM3Mi45IDQ0OCAyODguMyA0NDggMTc2YzAtNS4yLS4yLTEwLjQtLjYtMTUuNUM1NTUuMSAxNjcuMSA2NDAgMjQzLjIgNjQwIDMzNmMwIDM4LjYtMTQuNyA3NC4zLTM5LjYgMTAzLjRjMy41IDkuNCA4LjcgMTcuNyAxNC4yIDI0LjdjNC44IDYuMiA5LjcgMTEgMTMuMyAxNC4zYzEuOCAxLjYgMy4zIDIuOSA0LjMgMy43Yy41IC40IC45IC43IDEuMSAuOGwuMiAuMiAwIDAgMCAwYzUuNiA0LjEgNy45IDExLjMgNS44IDE3LjljLTIuMSA2LjYtOC4zIDExLjEtMTUuMiAxMS4xYy0yMS44IDAtNDMuOC01LjYtNjIuMS0xMi41Yy05LjItMy41LTE3LjgtNy40LTI1LjItMTEuNEM1MDUuOSA1MDMuMyA0NzAuMiA1MTIgNDMyIDUxMmMtOTUuNiAwLTE3Ni4yLTU0LjYtMjAwLjUtMTI5ek0yMjggNzJjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwVjg2Yy03LjYgMS43LTE1LjIgNC40LTIyLjIgOC41Yy0xMy45IDguMy0yNS45IDIyLjgtMjUuOCA0My45Yy4xIDIwLjMgMTIgMzMuMSAyNC43IDQwLjdjMTEgNi42IDI0LjcgMTAuOCAzNS42IDE0bDEuNyAuNWMxMi42IDMuOCAyMS44IDYuOCAyOCAxMC43YzUuMSAzLjIgNS44IDUuNCA1LjkgOC4yYy4xIDUtMS44IDgtNS45IDEwLjVjLTUgMy4xLTEyLjkgNS0yMS40IDQuN2MtMTEuMS0uNC0yMS41LTMuOS0zNS4xLTguNWMtMi4zLS44LTQuNy0xLjYtNy4yLTIuNGMtMTAuNS0zLjUtMjEuOCAyLjItMjUuMyAxMi42czIuMiAyMS44IDEyLjYgMjUuM2MxLjkgLjYgNCAxLjMgNi4xIDIuMWwwIDAgMCAwYzguMyAyLjkgMTcuOSA2LjIgMjguMiA4LjRWMjgwYzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjI2Ni4yYzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdWNzJ6XCJdXG59O1xudmFyIGZhRGVtb2NyYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGVtb2NyYXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3NDdcIiwgXCJNNjQgMzJjMC04LjkgMy44LTIwLjkgNi4yLTI3LjNDNzEuMiAxLjggNzQgMCA3NyAwYzEuOSAwIDMuOCAuNyA1LjIgMi4xTDEyOCA0NS43IDE3My44IDIuMUMxNzUuMiAuNyAxNzcuMSAwIDE3OSAwYzMgMCA1LjggMS44IDYuOCA0LjdjMi40IDYuNSA2LjIgMTguNCA2LjIgMjcuM2MwIDI2LjUtMjEuOSA0Mi0yOS41IDQ2LjZsNzYuMiA3Mi42YzYgNS43IDEzLjkgOC44IDIyLjEgOC44SDQ4MGwzMiAwYzQwLjMgMCA3OC4yIDE5IDEwMi40IDUxLjJsMTkuMiAyNS42YzEwLjYgMTQuMSA3LjcgMzQuMi02LjQgNDQuOHMtMzQuMiA3LjctNDQuOC02LjRsLTE5LjItMjUuNmMtNS4zLTctMTEuOC0xMi44LTE5LjItMTdWMzIwSDE5MmwtNDAuNC05NC4zYy0zLjktOS4yLTE1LjMtMTIuNi0yMy42LTdsLTQyLjEgMjhjLTkuMSA2LjEtMTkuNyA5LjMtMzAuNyA5LjNoLTJDMjMuOSAyNTYgMCAyMzIuMSAwIDIwMi43YzAtMTIuMSA0LjEtMjMuOCAxMS43LTMzLjNMODcuNiA3NC42Qzc4LjEgNjcuNCA2NCA1My4yIDY0IDMyek00NDggMzUyaDk2djY0IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2SDI4OHY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNiAzNTJoOTZINDQ4ek0yNjAuOSAyMTAuOWMtLjktMS44LTIuOC0yLjktNC44LTIuOXMtMy45IDEuMS00LjggMi45bC0xMC41IDIwLjUtMjMuNSAzLjNjLTIgLjMtMy43IDEuNi00LjMgMy41cy0uMSAzLjkgMS4zIDUuM2wxNyAxNi00IDIyLjZjLS4zIDEuOSAuNSAzLjkgMi4xIDVzMy44IDEuMyA1LjYgLjRsMjEtMTAuNyAyMSAxMC43YzEuOCAuOSA0IC44IDUuNi0uNHMyLjUtMy4xIDIuMS01bC00LTIyLjYgMTctMTZjMS41LTEuNCAyLTMuNCAxLjMtNS4zcy0yLjMtMy4yLTQuMy0zLjVsLTIzLjUtMy4zLTEwLjUtMjAuNXpNMzY4LjEgMjA4Yy0yIDAtMy45IDEuMS00LjggMi45bC0xMC41IDIwLjUtMjMuNSAzLjNjLTIgLjMtMy43IDEuNi00LjMgMy41cy0uMSAzLjkgMS4zIDUuM2wxNyAxNi00IDIyLjZjLS4zIDEuOSAuNSAzLjkgMi4xIDVzMy44IDEuMyA1LjYgLjRsMjEtMTAuNyAyMSAxMC43YzEuOCAuOSA0IC44IDUuNi0uNHMyLjUtMy4xIDIuMS01bC00LTIyLjYgMTctMTZjMS41LTEuNCAyLTMuNCAxLjQtNS4zcy0yLjMtMy4yLTQuMy0zLjVsLTIzLjUtMy4zLTEwLjUtMjAuNWMtLjktMS44LTIuOC0yLjktNC44LTIuOXptMTE2LjggMi45Yy0uOS0xLjgtMi44LTIuOS00LjgtMi45cy0zLjkgMS4xLTQuOCAyLjlsLTEwLjUgMjAuNS0yMy41IDMuM2MtMiAuMy0zLjcgMS42LTQuMyAzLjVzLS4xIDMuOSAxLjMgNS4zbDE3IDE2LTQgMjIuNmMtLjMgMS45IC41IDMuOSAyLjEgNXMzLjggMS4zIDUuNiAuNGwyMS0xMC43IDIxIDEwLjdjMS44IC45IDQgLjggNS42LS40czIuNS0zLjEgMi4xLTVsLTQtMjIuNiAxNy0xNmMxLjUtMS40IDItMy40IDEuNC01LjNzLTIuMy0zLjItNC4zLTMuNWwtMjMuNS0zLjMtMTAuNS0yMC41elwiXVxufTtcbnZhciBmYVogPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneicsXG4gIGljb246IFszODQsIDUxMiwgWzEyMl0sIFwiNWFcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgzNTJjMTIuNCAwIDIzLjcgNy4yIDI5IDE4LjRzMy42IDI0LjUtNC40IDM0LjFMMTAwLjMgNDE2SDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTIuNCAwLTIzLjctNy4yLTI5LTE4LjRzLTMuNi0yNC41IDQuNC0zNC4xTDI4My43IDk2SDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJdXG59O1xudmFyIGZhUGVyc29uU2tpaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1za2lpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5OTc1LCBcInNraWluZ1wiXSwgXCJmN2M5XCIsIFwiTTM4MC43IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTIuNyAyNjguOWM2LjEtMTEuOCAyMC42LTE2LjMgMzIuNC0xMC4yTDIzMi43IDM2MS4zbDQ2LjItNjkuMi03NS4xLTc1LjFjLTE0LjYtMTQuNi0yMC40LTMzLjktMTguNC01Mi4xbDEwOC44IDUyIDM5LjMgMzkuM2MxNi4yIDE2LjIgMTguNyA0MS41IDYgNjAuNkwyODkuOCAzOTFsMTI4LjcgNjYuOGMxMy42IDcuMSAyOS44IDcuMiA0My42IC4zbDE1LjItNy42YzExLjktNS45IDI2LjMtMS4xIDMyLjIgMTAuN3MxLjEgMjYuMy0xMC43IDMyLjJsLTE1LjIgNy42Yy0yNy41IDEzLjctNTkuOSAxMy41LTg3LjItLjdMMTIuOSAzMDEuM0MxLjIgMjk1LjItMy40IDI4MC43IDIuNyAyNjguOXpNMTE4LjkgNjUuNkwxMzcgNzQuMmw4LjctMTcuNGM0LTcuOSAxMy42LTExLjEgMjEuNS03LjJzMTEuMSAxMy42IDcuMiAyMS41bC04LjUgMTYuOSA1NC43IDI2LjJjMS41LS43IDMuMS0xLjQgNC43LTIuMWw4My40LTMzLjRjMzQuMi0xMy43IDcyLjggNC4yIDg0LjUgMzkuMmwxNy4xIDUxLjIgNTIuMSAyNi4xYzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjlzLTI3LjEgMjIuMi00Mi45IDE0LjNsLTU4LjEtMjljLTExLjQtNS43LTIwLTE1LjctMjQuMS0yNy44bC01LjgtMTcuMy0yNy4zIDEyLjEtNi44IDMtNi43LTMuMkwxNTEuNSAxMTYuN2wtOS4yIDE4LjRjLTQgNy45LTEzLjYgMTEuMS0yMS41IDcuMnMtMTEuMS0xMy42LTcuMi0yMS41bDktMTgtMTcuNi04LjRjLTgtMy44LTExLjMtMTMuNC03LjUtMjEuM3MxMy40LTExLjMgMjEuMy03LjV6XCJdXG59O1xudmFyIGZhU2tpaW5nID0gZmFQZXJzb25Ta2lpbmc7XG52YXIgZmFSb2FkTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2FkLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NjdcIiwgXCJNMjg4IDMySDIxMy4yYy0yNy4xIDAtNTEuMyAxNy4xLTYwLjMgNDIuNkwzNS4xIDQwNy4yYy0yLjEgNS45LTMuMSAxMi0zLjEgMTguMkMzMiA0NTUuNSA1Ni41IDQ4MCA4Ni42IDQ4MEgyODhWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NjRoMzJWMzUyYzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYyNzJjMC01OC4zIDQ0LjYtMTA2LjIgMTAxLjUtMTExLjVMNDg3LjEgNzQuNkM0NzggNDkuMSA0NTMuOSAzMiA0MjYuOCAzMkgzNTJWOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzJ6bTY0IDE5MnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTc2IDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjQ4SDQ5NlYyNzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMnY0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJWMjcyYzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwiXVxufTtcbnZhciBmYUEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYScsXG4gIGljb246IFszODQsIDUxMiwgWzk3XSwgXCI0MVwiLCBcIk0yMjEuNSA1MS43QzIxNi42IDM5LjggMjA0LjkgMzIgMTkyIDMycy0yNC42IDcuOC0yOS41IDE5LjdsLTEyMCAyODgtNDAgOTZjLTYuOCAxNi4zIC45IDM1IDE3LjIgNDEuOHMzNS0uOSA0MS44LTE3LjJMOTMuMyAzODRIMjkwLjdsMzEuOCA3Ni4zYzYuOCAxNi4zIDI1LjUgMjQgNDEuOCAxNy4yczI0LTI1LjUgMTcuMi00MS44bC00MC05Ni0xMjAtMjg4ek0yNjQgMzIwSDEyMGw3Mi0xNzIuOEwyNjQgMzIwelwiXVxufTtcbnZhciBmYVRlbXBlcmF0dXJlQXJyb3dEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWFycm93LWRvd24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInRlbXBlcmF0dXJlLWRvd25cIl0sIFwiZTAzZlwiLCBcIk0xMjggMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhWMjc2LjVjMCAxNy4zIDcuMSAzMS45IDE1LjMgNDIuNUMyNDkuOCAzMzIuNiAyNTYgMzQ5LjUgMjU2IDM2OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTE4LjUgNi4yLTM1LjQgMTYuNy00OC45YzguMi0xMC42IDE1LjMtMjUuMiAxNS4zLTQyLjVWMTEyek0xNzYgMEMxMTQuMSAwIDY0IDUwLjEgNjQgMTEyVjI3Ni40YzAgLjEtLjEgLjMtLjIgLjZjLS4yIC42LS44IDEuNi0xLjcgMi44QzQzLjIgMzA0LjIgMzIgMzM0LjggMzIgMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRjMC0zMy4yLTExLjItNjMuOC0zMC4xLTg4LjFjLS45LTEuMi0xLjUtMi4yLTEuNy0yLjhjLS4xLS4zLS4yLS41LS4yLS42VjExMkMyODggNTAuMSAyMzcuOSAwIDE3NiAwem0wIDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OGMwLTIwLjktMTMuNC0zOC43LTMyLTQ1LjNWMjcyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djUwLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHptMzM2LTY0SDQ4MFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzNTJIMzg0Yy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWw2NCA2NGM2IDYgMTQuMSA5LjQgMjIuNiA5LjRzMTYuNi0zLjQgMjIuNi05LjRsNjQtNjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5Ljh6XCJdXG59O1xudmFyIGZhVGVtcGVyYXR1cmVEb3duID0gZmFUZW1wZXJhdHVyZUFycm93RG93bjtcbnZhciBmYUZlYXRoZXJQb2ludGVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZlYXRoZXItcG9pbnRlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZmVhdGhlci1hbHRcIl0sIFwiZjU2YlwiLCBcIk0yNzguNSAyMTUuNkwyMyA0NzFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3NC44LTc0LjhjNy40IDQuNiAxNS4zIDguMiAyMy44IDEwLjVDMjAwLjMgNDUyLjggMjcwIDQ1NC41IDMzOCA0MDkuNGMxMi4yLTguMSA1LjgtMjUuNC04LjgtMjUuNGwtMTYuMSAwYy01LjEgMC05LjItNC4xLTkuMi05LjJjMC00LjEgMi43LTcuNiA2LjUtOC44bDk3LjctMjkuM2MzLjQtMSA2LjQtMy4xIDguNC02LjFjNC40LTYuNCA4LjYtMTIuOSAxMi42LTE5LjZjNi4yLTEwLjMtMS41LTIzLTEzLjUtMjNsLTM4LjYgMGMtNS4xIDAtOS4yLTQuMS05LjItOS4yYzAtNC4xIDIuNy03LjYgNi41LTguOGw4MC45LTI0LjNjNC42LTEuNCA4LjQtNC44IDEwLjItOS4zQzQ5NC41IDE2MyA1MDcuOCA4Ni4xIDUxMS45IDM2LjhjLjgtOS45LTMtMTkuNi0xMC0yNi42cy0xNi43LTEwLjgtMjYuNi0xMEMzOTEuNSA3IDIyOC41IDQwLjUgMTM3LjQgMTMxLjZDNTcuMyAyMTEuNyA1Ni43IDMwMi4zIDcxLjMgMzU2LjRjMi4xIDcuOSAxMiA5LjYgMTcuOCAzLjhMMjUzLjYgMTk1LjhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBjNS40IDUuNCA2LjEgMTMuNiAyLjIgMTkuOHpcIl1cbn07XG52YXIgZmFGZWF0aGVyQWx0ID0gZmFGZWF0aGVyUG9pbnRlZDtcbnZhciBmYVAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncCcsXG4gIGljb246IFszMjAsIDUxMiwgWzExMl0sIFwiNTBcIiwgXCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmg5NmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MHMtNzEuNiAxNjAtMTYwIDE2MEg2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjAgOTZ6TTY0IDI4OGg5NmM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05Nkg2NFYyODh6XCJdXG59O1xudmFyIGZhU25vd2ZsYWtlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nub3dmbGFrZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEwMDUyLCAxMDA1NF0sIFwiZjJkY1wiLCBcIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2Mi4xbDE1LTE1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDkgNDl2NzAuM2w2MS40LTM1LjggMTcuNy02Ni4xYzMuNC0xMi44IDE2LjYtMjAuNCAyOS40LTE3czIwLjQgMTYuNiAxNyAyOS40bC01LjIgMTkuMyAyMy42LTEzLjhjMTUuMy04LjkgMzQuOS0zLjcgNDMuOCAxMS41czMuOCAzNC45LTExLjUgNDMuOGwtMjUuMyAxNC44IDIxLjcgNS44YzEyLjggMy40IDIwLjQgMTYuNiAxNyAyOS40cy0xNi42IDIwLjQtMjkuNCAxN2wtNjcuNy0xOC4xTDI4Ny41IDI1Nmw2MC45IDM1LjUgNjcuNy0xOC4xYzEyLjgtMy40IDI2IDQuMiAyOS40IDE3cy00LjIgMjYtMTcgMjkuNGwtMjEuNyA1LjggMjUuMyAxNC44YzE1LjMgOC45IDIwLjQgMjguNSAxMS41IDQzLjhzLTI4LjUgMjAuNC00My44IDExLjVsLTIzLjYtMTMuOCA1LjIgMTkuM2MzLjQgMTIuOC00LjIgMjYtMTcgMjkuNHMtMjYtNC4yLTI5LjQtMTdsLTE3LjctNjYuMUwyNTYgMzExLjd2NzAuM2w0OSA0OWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0xNS0xNVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ5LjlsLTE1IDE1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ5LTQ5VjMxMS43bC02MS40IDM1LjgtMTcuNyA2Ni4xYy0zLjQgMTIuOC0xNi42IDIwLjQtMjkuNCAxN3MtMjAuNC0xNi42LTE3LTI5LjRsNS4yLTE5LjNMNDguMSAzOTUuNmMtMTUuMyA4LjktMzQuOSAzLjctNDMuOC0xMS41cy0zLjctMzQuOSAxMS41LTQzLjhsMjUuMy0xNC44LTIxLjctNS44Yy0xMi44LTMuNC0yMC40LTE2LjYtMTctMjkuNHMxNi42LTIwLjQgMjkuNC0xN2w2Ny43IDE4LjFMMTYwLjUgMjU2IDk5LjYgMjIwLjUgMzEuOSAyMzguNmMtMTIuOCAzLjQtMjYtNC4yLTI5LjQtMTdzNC4yLTI2IDE3LTI5LjRsMjEuNy01LjhMMTUuOSAxNzEuNkMuNiAxNjIuNy00LjUgMTQzLjEgNC40IDEyNy45czI4LjUtMjAuNCA0My44LTExLjVsMjMuNiAxMy44LTUuMi0xOS4zYy0zLjQtMTIuOCA0LjItMjYgMTctMjkuNHMyNiA0LjIgMjkuNCAxN2wxNy43IDY2LjFMMTkyIDIwMC4zVjEyOS45TDE0MyA4MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDE1IDE1VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYU5ld3NwYXBlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICduZXdzcGFwZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyNDBdLCBcImYxZWFcIiwgXCJNOTYgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDAwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWOTZ6bTY0IDI0djgwYzAgMTMuMyAxMC43IDI0IDI0IDI0SDI5NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptMjA4LThjMCA4LjggNy4yIDE2IDE2IDE2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2em0wIDk2YzAgOC44IDcuMiAxNiAxNiAxNmg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzODRjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTYwIDMwNGMwIDguOCA3LjIgMTYgMTYgMTZINDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2em0wIDk2YzAgOC44IDcuMiAxNiAxNiAxNkg0MzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZ6XCJdXG59O1xudmFyIGZhUmVjdGFuZ2xlQWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVjdGFuZ2xlLWFkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJhZFwiXSwgXCJmNjQxXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjI5LjUgMTczLjNsNzIgMTQ0YzUuOSAxMS45IDEuMSAyNi4zLTEwLjcgMzIuMnMtMjYuMyAxLjEtMzIuMi0xMC43TDI1My4yIDMyOEgxNjIuOGwtNS40IDEwLjdjLTUuOSAxMS45LTIwLjMgMTYuNy0zMi4yIDEwLjdzLTE2LjctMjAuMy0xMC43LTMyLjJsNzItMTQ0YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjN6TTIwOCAyMzcuN0wxODYuOCAyODBoNDIuM0wyMDggMjM3Ljd6TTM5MiAyNTZhMjQgMjQgMCAxIDAgMCA0OCAyNCAyNCAwIDEgMCAwLTQ4em0yNC00My45VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djk2IDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0Yy02LjYgMC0xMi42LTIuNy0xNy03Yy05LjQgNC41LTE5LjkgNy0zMSA3Yy0zOS44IDAtNzItMzIuMi03Mi03MnMzMi4yLTcyIDcyLTcyYzguNCAwIDE2LjUgMS40IDI0IDQuMXpcIl1cbn07XG52YXIgZmFBZCA9IGZhUmVjdGFuZ2xlQWQ7XG52YXIgZmFDaXJjbGVBcnJvd1JpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1hcnJvdy1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYXJyb3ctY2lyY2xlLXJpZ2h0XCJdLCBcImYwYTlcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yODEgMzg1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDcxLTcxTDEzNiAyODBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTgyLjEgMC03MS03MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwTDM5MyAyMzljOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjgxIDM4NXpcIl1cbn07XG52YXIgZmFBcnJvd0NpcmNsZVJpZ2h0ID0gZmFDaXJjbGVBcnJvd1JpZ2h0O1xudmFyIGZhRmlsdGVyQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsdGVyLWNpcmNsZS14bWFyaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTE3YlwiLCBcIk0zLjkgMjIuOUMxMC41IDguOSAyNC41IDAgNDAgMEg0NzJjMTUuNSAwIDI5LjUgOC45IDM2LjEgMjIuOXM0LjYgMzAuNS01LjIgNDIuNUwzOTYuNCAxOTUuNkMzMTYuMiAyMTIuMSAyNTYgMjgzIDI1NiAzNjhjMCAyNy40IDYuMyA1My40IDE3LjUgNzYuNWMtMS42LS44LTMuMi0xLjgtNC43LTIuOWwtNjQtNDhjLTguMS02LTEyLjgtMTUuNS0xMi44LTI1LjZWMjg4LjlMOSA2NS4zQy0uNyA1My40LTIuOCAzNi44IDMuOSAyMi45ek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptNTkuMyAxMDcuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQzMiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQwOS40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDMyIDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNDU0LjYgMzY4bDM2LjctMzYuN3pcIl1cbn07XG52YXIgZmFMb2N1c3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jdXN0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTIwXCIsIFwiTTMxMiAzMmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGgxNmM5OC43IDAgMTgwLjYgNzEuNCAxOTcgMTY1LjRjLTktMy41LTE4LjgtNS40LTI5LTUuNEg0MzEuOGwtNDEuOC05Ny41Yy0zLjQtNy45LTEwLjgtMTMuNC0xOS4zLTE0LjRzLTE3IDIuNy0yMi4xIDkuNmwtNDAuOSA1NS41LTIxLjctNTAuN2MtMy4zLTcuOC0xMC41LTEzLjItMTguOS0xNC4zcy0xNi43IDIuMy0yMiA4LjlsLTI0MCAzMDRjLTguMiAxMC40LTYuNCAyNS41IDQgMzMuN3MyNS41IDYuNCAzMy43LTRsNzkuNC0xMDAuNSA0MyAxNi40LTQwLjUgNTVjLTcuOSAxMC43LTUuNiAyNS43IDUuMSAzMy42czI1LjcgNS42IDMzLjYtNS4xTDIxNS4xIDQwMGg3NC41bC0yOS4zIDQyLjNjLTcuNSAxMC45LTQuOCAyNS44IDYuMSAzMy40czI1LjggNC44IDMzLjQtNi4xTDM0OCA0MDBoODAuNGwzOC44IDY3LjljNi42IDExLjUgMjEuMiAxNS41IDMyLjcgOC45czE1LjUtMjEuMiA4LjktMzIuN0w0ODMuNiA0MDBINDk2YzQ0LjEgMCA3OS44LTM1LjcgODAtNzkuN2MwLS4xIDAtLjIgMC0uM1YyODBDNTc2IDE0MyA0NjUgMzIgMzI4IDMySDMxMnptNTAuNSAxNjhsMTcuMSA0MEgzMzNsMjkuNS00MHptLTg3LjcgMzguMWwtMS40IDEuOUgyMjUuMWwzMi43LTQxLjUgMTYuOSAzOS41ek04OC44IDI0MEM1Ny40IDI0MCAzMiAyNjUuNCAzMiAyOTYuOGMwIDE1LjUgNi4zIDMwIDE2LjkgNDAuNEwxMjYuNyAyNDBIODguOHpNNDk2IDI4OGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6XCJdXG59O1xudmFyIGZhU29ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJ1bnNvcnRlZFwiXSwgXCJmMGRjXCIsIFwiTTEzNy40IDQxLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOXMtMTYuNiAxOS44LTI5LjYgMTkuOEgzMmMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlsMTI4LTEyOHptMCA0MjkuM2wtMTI4LTEyOGMtOS4yLTkuMi0xMS45LTIyLjktNi45LTM0LjlzMTYuNi0xOS44IDI5LjYtMTkuOEgyODhjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDB6XCJdXG59O1xudmFyIGZhVW5zb3J0ZWQgPSBmYVNvcnQ7XG52YXIgZmFMaXN0T2wgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdC1vbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGlzdC0xLTJcIiwgXCJsaXN0LW51bWVyaWNcIl0sIFwiZjBjYlwiLCBcIk0yNCA1NmMwLTEzLjMgMTAuNy0yNCAyNC0yNEg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNzZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRINTZWODBINDhDMzQuNyA4MCAyNCA2OS4zIDI0IDU2ek04Ni43IDM0MS4yYy02LjUtNy40LTE4LjMtNi45LTI0IDEuMkw1MS41IDM1Ny45Yy03LjcgMTAuOC0yMi43IDEzLjMtMzMuNSA1LjZzLTEzLjMtMjIuNy01LjYtMzMuNWwxMS4xLTE1LjZjMjMuNy0zMy4yIDcyLjMtMzUuNiA5OS4yLTQuOWMyMS4zIDI0LjQgMjAuOCA2MC45LTEuMSA4NC43TDg2LjggNDMySDEyMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzMmMtOS41IDAtMTguMi01LjYtMjItMTQuNHMtMi4xLTE4LjkgNC4zLTI1LjlsNzItNzhjNS4zLTUuOCA1LjQtMTQuNiAuMy0yMC41ek0yMjQgNjRINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxNjBINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFMaXN0MTIgPSBmYUxpc3RPbDtcbnZhciBmYUxpc3ROdW1lcmljID0gZmFMaXN0T2w7XG52YXIgZmFQZXJzb25EcmVzc0J1cnN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1kcmVzcy1idXJzdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU0NFwiLCBcIk01MjggNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzkwLjIgMzg0SDQwOHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGgxNnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGgxNy44YzEwLjkgMCAxOC42LTEwLjcgMTUuMi0yMS4xTDU0Ni43IDI0OC4xbDMzLjkgNTYuM2M5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTMuNi04OS4yYy0yMC4yLTMzLjctNTYuNy01NC4zLTk2LTU0LjNINDc0LjJjLTM5LjMgMC03NS43IDIwLjYtOTYgNTQuM2wtNTMuNiA4OS4yYy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45bDMzLjktNTYuM0wzNzUgMzYyLjljLTMuNSAxMC40IDQuMyAyMS4xIDE1LjIgMjEuMXpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA1MC41LTcuOCAyNC40LTQwLjUtNTUuMi0zOEwzMTUgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0elwiXVxufTtcbnZhciBmYU1vbmV5Q2hlY2tEb2xsYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktY2hlY2stZG9sbGFyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJtb25leS1jaGVjay1hbHRcIl0sIFwiZjUzZFwiLCBcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjcyIDE5Mkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek0yNTYgMzA0YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZ6TTE2NCAxNTJ2MTMuOWM3LjUgMS4yIDE0LjYgMi45IDIxLjEgNC43YzEwLjcgMi44IDE3IDEzLjggMTQuMiAyNC41cy0xMy44IDE3LTI0LjUgMTQuMmMtMTEtMi45LTIxLjYtNS0zMS4yLTUuMmMtNy45LS4xLTE2IDEuOC0yMS41IDVjLTQuOCAyLjgtNi4yIDUuNi02LjIgOS4zYzAgMS44IC4xIDMuNSA1LjMgNi43YzYuMyAzLjggMTUuNSA2LjcgMjguMyAxMC41bC43IC4yYzExLjIgMy40IDI1LjYgNy43IDM3LjEgMTVjMTIuOSA4LjEgMjQuMyAyMS4zIDI0LjYgNDEuNmMuMyAyMC45LTEwLjUgMzYuMS0yNC44IDQ1Yy03LjIgNC41LTE1LjIgNy4zLTIzLjIgOVYzNjBjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwVjM0NS40Yy0xMC4zLTIuMi0yMC01LjUtMjguMi04LjRsMCAwIDAgMGMtMi4xLS43LTQuMS0xLjQtNi4xLTIuMWMtMTAuNS0zLjUtMTYuMS0xNC44LTEyLjYtMjUuM3MxNC44LTE2LjEgMjUuMy0xMi42YzIuNSAuOCA0LjkgMS43IDcuMiAyLjRjMTMuNiA0LjYgMjQgOC4xIDM1LjEgOC41YzguNiAuMyAxNi41LTEuNiAyMS40LTQuN2M0LjEtMi41IDYtNS41IDUuOS0xMC41YzAtMi45LS44LTUtNS45LTguMmMtNi4zLTQtMTUuNC02LjktMjgtMTAuN2wtMS43LS41Yy0xMC45LTMuMy0yNC42LTcuNC0zNS42LTE0Yy0xMi43LTcuNy0yNC42LTIwLjUtMjQuNy00MC43Yy0uMS0yMS4xIDExLjgtMzUuNyAyNS44LTQzLjljNi45LTQuMSAxNC41LTYuOCAyMi4yLTguNVYxNTJjMC0xMSA5LTIwIDIwLTIwczIwIDkgMjAgMjB6XCJdXG59O1xudmFyIGZhTW9uZXlDaGVja0FsdCA9IGZhTW9uZXlDaGVja0RvbGxhcjtcbnZhciBmYVZlY3RvclNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZWN0b3Itc3F1YXJlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNWNiXCIsIFwiTTM2OCA4MGgzMnYzMkgzNjhWODB6TTM1MiAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJIMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJWMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg5NmMxNy43IDAgMzItMTQuMyAzMi0zMkgzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzNTJ6TTk2IDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMkgzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJWMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMkgxMjhjMC0xNy43LTE0LjMtMzItMzItMzJWMTYwek00OCA0MDBIODB2MzJINDhWNDAwem0zMjAgMzJWNDAwaDMydjMySDM2OHpNNDggMTEyVjgwSDgwdjMySDQ4elwiXVxufTtcbnZhciBmYUJyZWFkU2xpY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJlYWQtc2xpY2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ZWNcIiwgXCJNMjU2IDMyQzE5MiAzMiAwIDY0IDAgMTkyYzAgMzUuMyAyOC43IDY0IDY0IDY0VjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0QzUxMiA2NCAzMjAgMzIgMjU2IDMyelwiXVxufTtcbnZhciBmYUxhbmd1YWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhbmd1YWdlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMWFiXCIsIFwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDI1Nmg0OCAxNkg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDMyMCAzMDQgMjU2IDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6bTMyMCAwVjM4NEg1NzZWMTI4SDMyMHpNMTc4LjMgMTc1LjljLTMuMi03LjItMTAuNC0xMS45LTE4LjMtMTEuOXMtMTUuMSA0LjctMTguMyAxMS45bC02NCAxNDRjLTQuNSAxMC4xIC4xIDIxLjkgMTAuMiAyNi40czIxLjktLjEgMjYuNC0xMC4ybDguOS0yMC4xaDczLjZsOC45IDIwLjFjNC41IDEwLjEgMTYuMyAxNC42IDI2LjQgMTAuMnMxNC42LTE2LjMgMTAuMi0yNi40bC02NC0xNDR6TTE2MCAyMzMuMkwxNzkgMjc2SDE0MWwxOS00Mi44ek00NDggMTY0YzExIDAgMjAgOSAyMCAyMHY0aDQ0IDE2YzExIDAgMjAgOSAyMCAyMHMtOSAyMC0yMCAyMGgtMmwtMS42IDQuNWMtOC45IDI0LjQtMjIuNCA0Ni42LTM5LjYgNjUuNGMuOSAuNiAxLjggMS4xIDIuNyAxLjZsMTguOSAxMS4zYzkuNSA1LjcgMTIuNSAxOCA2LjkgMjcuNHMtMTggMTIuNS0yNy40IDYuOWwtMTguOS0xMS4zYy00LjUtMi43LTguOC01LjUtMTMuMS04LjVjLTEwLjYgNy41LTIxLjkgMTQtMzQgMTkuNGwtMy42IDEuNmMtMTAuMSA0LjUtMjEuOS0uMS0yNi40LTEwLjJzLjEtMjEuOSAxMC4yLTI2LjRsMy42LTEuNmM2LjQtMi45IDEyLjYtNi4xIDE4LjUtOS44bC0xMi4yLTEyLjJjLTcuOC03LjgtNy44LTIwLjUgMC0yOC4zczIwLjUtNy44IDI4LjMgMGwxNC42IDE0LjYgLjUgLjVjMTIuNC0xMy4xIDIyLjUtMjguMyAyOS44LTQ1SDQ0OCAzNzZjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwaDUydi00YzAtMTEgOS0yMCAyMC0yMHpcIl1cbn07XG52YXIgZmFGYWNlS2lzc1dpbmtIZWFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWtpc3Mtd2luay1oZWFydCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUzNiwgXCJraXNzLXdpbmstaGVhcnRcIl0sIFwiZjU5OFwiLCBcIk00OTggMzM5LjdjOS4xLTI2LjIgMTQtNTQuNCAxNC04My43QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwUzAgMTE0LjYgMCAyNTZTMTE0LjYgNTEyIDI1NiA1MTJjMzUuNCAwIDY5LjEtNy4yIDk5LjctMjAuMmMtNC44LTUuNS04LjUtMTIuMi0xMC40LTE5LjdsLTIyLjktODkuM2MtMTAtMzkgMTEuOC04MC45IDUxLjgtOTIuMWMzNy4yLTEwLjQgNzMuOCAxMC4xIDg3LjUgNDRjMTIuNy0xLjYgMjUuMSAuNCAzNi4yIDV6TTI5NiAzMzJjMCA2LjktMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40Yy0yLjcgMS41LTUuNyAzLTguNyA0LjNjMy4xIDEuMyA2IDIuNyA4LjcgNC4zYzYuNiAzLjcgMTIuNSA4LjIgMTYuNyAxMy40YzQuMyA1LjEgNy4zIDExLjQgNy4zIDE4LjNzLTMuMSAxMy4yLTcuMyAxOC4zYy00LjMgNS4yLTEwLjEgOS43LTE2LjcgMTMuNEMyNTguNyA0NDMuMSAyNDEuNCA0NDggMjI0IDQ0OGMtMy42IDAtNi44LTIuNS03LjctNnMuNi03LjIgMy44LTlsMCAwIDAgMCAwIDAgMCAwIC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xbC0uNi0uNC0uMy0uMi0uMi0uMSAwIDAgMCAwIDAgMGMtMi41LTEuNC00LjEtNC4xLTQuMS03czEuNi01LjYgNC4xLTdsMCAwIDAgMCAwIDAgMCAwIDAgMCAuMi0uMWMuMi0uMSAuNS0uMyAuOS0uNWMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWMtLjQtLjItLjctLjQtLjktLjVsLS4yLS4xIDAgMCAwIDAgMCAwYy0zLjItMS44LTQuNy01LjUtMy44LTlzNC4xLTYgNy43LTZjMTcuNCAwIDM0LjcgNC45IDQ3LjkgMTIuM2M2LjYgMy43IDEyLjUgOC4yIDE2LjcgMTMuNGM0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xOTQuOCA1Ny42Yy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMGMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yek00MzQgMzUyLjNjLTYtMjMuMi0yOC44LTM3LTUxLjEtMzAuOHMtMzUuNCAzMC4xLTI5LjUgNTMuNGwyMi45IDg5LjNjMi4yIDguNyAxMS4yIDEzLjkgMTkuOCAxMS40bDg0LjktMjMuOGMyMi4yLTYuMiAzNS40LTMwLjEgMjkuNS01My40cy0yOC44LTM3LTUxLjEtMzAuOGwtMjAuMiA1LjYtNS40LTIxelwiXVxufTtcbnZhciBmYUtpc3NXaW5rSGVhcnQgPSBmYUZhY2VLaXNzV2lua0hlYXJ0O1xudmFyIGZhRmlsdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbHRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBiMFwiLCBcIk0zLjkgNTQuOUMxMC41IDQwLjkgMjQuNSAzMiA0MCAzMkg0NzJjMTUuNSAwIDI5LjUgOC45IDM2LjEgMjIuOXM0LjYgMzAuNS01LjIgNDIuNUwzMjAgMzIwLjlWNDQ4YzAgMTIuMS02LjggMjMuMi0xNy43IDI4LjZzLTIzLjggNC4zLTMzLjUtM2wtNjQtNDhjLTguMS02LTEyLjgtMTUuNS0xMi44LTI1LjZWMzIwLjlMOSA5Ny4zQy0uNyA4NS40LTIuOCA2OC44IDMuOSA1NC45elwiXVxufTtcbnZhciBmYVF1ZXN0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3F1ZXN0aW9uJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTAwNjcsIDEwMDY4LCA2MTczNl0sIFwiM2ZcIiwgXCJNODAgMTYwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0djMuNmMwIDIxLjgtMTEuMSA0Mi4xLTI5LjQgNTMuOGwtNDIuMiAyNy4xYy0yNS4yIDE2LjItNDAuNCA0NC4xLTQwLjQgNzRWMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ2LTEuNGMwLTguMiA0LjItMTUuOCAxMS0yMC4ybDQyLjItMjcuMWMzNi42LTIzLjYgNTguOC02NC4xIDU4LjgtMTA3LjdWMTYwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDE0NEM3My4zIDMyIDE2IDg5LjMgMTYgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6bTgwIDMyMGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJdXG59O1xudmFyIGZhRmlsZVNpZ25hdHVyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXNpZ25hdHVyZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjU3M1wiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjQyOC43Yy0yLjcgMS4xLTUuNCAyLTguMiAyLjdsLTYwLjEgMTVjLTMgLjctNiAxLjItOSAxLjRjLS45IC4xLTEuOCAuMi0yLjcgLjJIMjQwYy02LjEgMC0xMS42LTMuNC0xNC4zLTguOGwtOC44LTE3LjdjLTEuNy0zLjQtNS4xLTUuNS04LjgtNS41cy03LjIgMi4xLTguOCA1LjVsLTguOCAxNy43Yy0yLjkgNS45LTkuMiA5LjQtMTUuNyA4LjhzLTEyLjEtNS4xLTEzLjktMTEuM0wxNDQgMzgxbC05LjggMzIuOGMtNi4xIDIwLjMtMjQuOCAzNC4yLTQ2IDM0LjJIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoOC4yYzcuMSAwIDEzLjMtNC42IDE1LjMtMTEuNGwxNC45LTQ5LjVjMy40LTExLjMgMTMuOC0xOS4xIDI1LjYtMTkuMXMyMi4yIDcuOCAyNS42IDE5LjFsMTEuNiAzOC42YzcuNC02LjIgMTYuOC05LjcgMjYuOC05LjdjMTUuOSAwIDMwLjQgOSAzNy41IDIzLjJsNC40IDguOGg4LjljLTMuMS04LjgtMy43LTE4LjQtMS40LTI3LjhsMTUtNjAuMWMyLjgtMTEuMyA4LjYtMjEuNSAxNi44LTI5LjdMMzg0IDIwMy42VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTU0OS44IDEzOS43Yy0xNS42LTE1LjYtNDAuOS0xNS42LTU2LjYgMGwtMjkuNCAyOS40IDcxIDcxIDI5LjQtMjkuNGMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMTQuNC0xNC40ek0zMTEuOSAzMjFjLTQuMSA0LjEtNyA5LjItOC40IDE0LjlsLTE1IDYwLjFjLTEuNCA1LjUgLjIgMTEuMiA0LjIgMTUuMnM5LjcgNS42IDE1LjIgNC4ybDYwLjEtMTVjNS42LTEuNCAxMC44LTQuMyAxNC45LTguNEw1MTIuMSAyNjIuN2wtNzEtNzFMMzExLjkgMzIxelwiXVxufTtcbnZhciBmYVVwRG93bkxlZnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1cC1kb3duLWxlZnQtcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImFycm93cy1hbHRcIl0sIFwiZjBiMlwiLCBcIk0yNzguNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGgzMnY5NkgxMjhWMTkyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNlYyODhoOTZ2OTZIMTkyYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWw2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEgyODhWMjg4aDk2djMyYzAgMTIuOSA3LjggMjQuNiAxOS44IDI5LjZzMjUuNyAyLjIgMzQuOS02LjlsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy05LjItOS4yLTIyLjktMTEuOS0zNC45LTYuOXMtMTkuOCAxNi42LTE5LjggMjkuNnYzMkgyODhWMTI4aDMyYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0elwiXVxufTtcbnZhciBmYUFycm93c0FsdCA9IGZhVXBEb3duTGVmdFJpZ2h0O1xudmFyIGZhSG91c2VDaGltbmV5VXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1jaGltbmV5LXVzZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUwNjVcIiwgXCJNNTQzLjggMjg3LjZjMTcgMCAzMi0xNCAzMi0zMi4xYzEtOS0zLTE3LTExLTI0TDUxMiAxODVWNjRjMC0xNy43LTE0LjMtMzItMzItMzJINDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzNi43TDMwOS41IDdjLTYtNS0xNC03LTIxLTdzLTE1IDEtMjIgOEwxMCAyMzEuNWMtNyA3LTEwIDE1LTEwIDI0YzAgMTggMTQgMzIuMSAzMiAzMi4xaDMyVjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDguNWMzNS41IDAgNjQuMi0yOC44IDY0LTY0LjNsLS43LTE2MC4yaDMyek0yODggMTYwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0xNzYgNDAwYzAtNDQuMiAzNS44LTgwIDgwLTgwaDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkgxOTJjLTguOCAwLTE2LTcuMi0xNi0xNnpcIl1cbn07XG52YXIgZmFIYW5kSG9sZGluZ0hlYXJ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtaG9sZGluZy1oZWFydCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjRiZVwiLCBcIk0xNjMuOSAxMzYuOWMtMjkuNC0yOS44LTI5LjQtNzguMiAwLTEwOHM3Ny0yOS44IDEwNi40IDBsMTcuNyAxOCAxNy43LTE4YzI5LjQtMjkuOCA3Ny0yOS44IDEwNi40IDBzMjkuNCA3OC4yIDAgMTA4TDMxMC41IDI0MC4xYy02LjIgNi4zLTE0LjMgOS40LTIyLjUgOS40cy0xNi4zLTMuMS0yMi41LTkuNEwxNjMuOSAxMzYuOXpNNTY4LjIgMzM2LjNjMTMuMSAxNy44IDkuMyA0Mi44LTguNSA1NS45TDQzMy4xIDQ4NS41Yy0yMy40IDE3LjItNTEuNiAyNi41LTgwLjcgMjYuNUgxOTIgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg2OC44bDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhIMjcyaDE2IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI4OCAyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzkyLjZsMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM4NGwwIDAtLjkgMGMuMyAwIC42IDAgLjkgMHpcIl1cbn07XG52YXIgZmFQdXp6bGVQaWVjZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwdXp6bGUtcGllY2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjk1MTNdLCBcImYxMmVcIiwgXCJNMTkyIDEwNC44YzAtOS4yLTUuOC0xNy4zLTEzLjItMjIuOEMxNjcuMiA3My4zIDE2MCA2MS4zIDE2MCA0OGMwLTI2LjUgMjguNy00OCA2NC00OHM2NCAyMS41IDY0IDQ4YzAgMTMuMy03LjIgMjUuMy0xOC44IDM0Yy03LjQgNS41LTEzLjIgMTMuNi0xMy4yIDIyLjh2MGMwIDEyLjggMTAuNCAyMy4yIDIzLjIgMjMuMkgzMzZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NTYuOGMwIDEyLjggMTAuNCAyMy4yIDIzLjIgMjMuMnYwYzkuMiAwIDE3LjMtNS44IDIyLjgtMTMuMmM4LjctMTEuNiAyMC43LTE4LjggMzQtMTguOGMyNi41IDAgNDggMjguNyA0OCA2NHMtMjEuNSA2NC00OCA2NGMtMTMuMyAwLTI1LjMtNy4yLTM0LTE4LjhjLTUuNS03LjQtMTMuNi0xMy4yLTIyLjgtMTMuMnYwYy0xMi44IDAtMjMuMiAxMC40LTIzLjIgMjMuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMjc5LjJjLTEyLjggMC0yMy4yLTEwLjQtMjMuMi0yMy4ydjBjMC05LjIgNS44LTE3LjMgMTMuMi0yMi44YzExLjYtOC43IDE4LjgtMjAuNyAxOC44LTM0YzAtMjYuNS0yOC43LTQ4LTY0LTQ4cy02NCAyMS41LTY0IDQ4YzAgMTMuMyA3LjIgMjUuMyAxOC44IDM0YzcuNCA1LjUgMTMuMiAxMy42IDEzLjIgMjIuOHYwYzAgMTIuOC0xMC40IDIzLjItMjMuMiAyMy4ySDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzNDMuMkMwIDMzMC40IDEwLjQgMzIwIDIzLjIgMzIwdjBjOS4yIDAgMTcuMyA1LjggMjIuOCAxMy4yQzU0LjcgMzQ0LjggNjYuNyAzNTIgODAgMzUyYzI2LjUgMCA0OC0yOC43IDQ4LTY0cy0yMS41LTY0LTQ4LTY0Yy0xMy4zIDAtMjUuMyA3LjItMzQgMTguOEM0MC41IDI1MC4yIDMyLjQgMjU2IDIzLjIgMjU2djBDMTAuNCAyNTYgMCAyNDUuNiAwIDIzMi44VjE3NmMwLTI2LjUgMjEuNS00OCA0OC00OEgxNjguOGMxMi44IDAgMjMuMi0xMC40IDIzLjItMjMuMnYwelwiXVxufTtcbnZhciBmYU1vbmV5Q2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktY2hlY2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1M2NcIiwgXCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTQ4IDE2MEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek05NiAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnpNMzc2IDE2MGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNEgzNzZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFTdGFySGFsZlN0cm9rZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGFyLWhhbGYtc3Ryb2tlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJzdGFyLWhhbGYtYWx0XCJdLCBcImY1YzBcIiwgXCJNMzIwIDM3Ni40bC4xLS4xIDI2LjQgMTQuMSA4NS4yIDQ1LjUtMTYuNS05Ny42LTQuOC0yOC43IDIwLjctMjAuNSA3MC4xLTY5LjMtOTYuMS0xNC4yLTI5LjMtNC4zLTEyLjktMjYuNkwzMjAuMSA4Ni45bC0uMSAuM1YzNzYuNHptMTc1LjEgOTguM2MyIDEyLTMgMjQuMi0xMi45IDMxLjNzLTIzIDgtMzMuOCAyLjNMMzIwLjEgNDM5LjggMTkxLjggNTA4LjNDMTgxIDUxNCAxNjcuOSA1MTMuMSAxNTggNTA2cy0xNC45LTE5LjMtMTIuOS0zMS4zTDE2OS44IDMyOSA2NS42IDIyNS45Yy04LjYtOC41LTExLjctMjEuMi03LjktMzIuN3MxMy43LTE5LjkgMjUuNy0yMS43TDIyNyAxNTAuMyAyOTEuNCAxOGM1LjQtMTEgMTYuNS0xOCAyOC44LTE4czIzLjQgNyAyOC44IDE4bDY0LjMgMTMyLjMgMTQzLjYgMjEuMmMxMiAxLjggMjIgMTAuMiAyNS43IDIxLjdzLjcgMjQuMi03LjkgMzIuN0w0NzAuNSAzMjlsMjQuNiAxNDUuN3pcIl1cbn07XG52YXIgZmFTdGFySGFsZkFsdCA9IGZhU3RhckhhbGZTdHJva2U7XG52YXIgZmFDb2RlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvZGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYxMjFcIiwgXCJNMzkyLjggMS4yYy0xNy00LjktMzQuNyA1LTM5LjYgMjJsLTEyOCA0NDhjLTQuOSAxNyA1IDM0LjcgMjIgMzkuNnMzNC43LTUgMzkuNi0yMmwxMjgtNDQ4YzQuOS0xNy01LTM0LjctMjItMzkuNnptODAuNiAxMjAuMWMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNMNTYyLjcgMjU2bC04OS40IDg5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTEyLTExMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTEyLTExMmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDB6bS0zMDYuNyAwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTEyIDExMmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTEyIDExMmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDc3LjMgMjU2bDg5LjQtODkuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3pcIl1cbn07XG52YXIgZmFXaGlza2V5R2xhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2hpc2tleS1nbGFzcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTM0NywgXCJnbGFzcy13aGlza2V5XCJdLCBcImY3YTBcIiwgXCJNMzIgMzJjLTkuMyAwLTE4LjEgNC0yNC4yIDExLjFTLTEgNTkuNCAuMyA2OC42bDUwIDM0Mi45YzUuNyAzOS4zIDM5LjQgNjguNSA3OS4yIDY4LjVoMjUzYzM5LjcgMCA3My40LTI5LjEgNzkuMi02OC41bDUwLTM0Mi45YzEuMy05LjItMS40LTE4LjUtNy41LTI1LjVTNDg5LjMgMzIgNDgwIDMySDMyek04Ny43IDIyNEw2OSA5Nkg0NDNMNDI0LjMgMjI0SDg3Ljd6XCJdXG59O1xudmFyIGZhR2xhc3NXaGlza2V5ID0gZmFXaGlza2V5R2xhc3M7XG52YXIgZmFCdWlsZGluZ0NpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nLWNpcmNsZS1leGNsYW1hdGlvbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRkM1wiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMTUuMSAwIDI4LjUtNi45IDM3LjMtMTcuOEMzNDAuNCA0NjIuMiAzMjAgNDE3LjUgMzIwIDM2OGMwLTU0LjcgMjQuOS0xMDMuNSA2NC0xMzUuOFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2djgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OGMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhTWFnbmlmeWluZ0dsYXNzQ2hhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFnbmlmeWluZy1nbGFzcy1jaGFydCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTUyMlwiLCBcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4em0tMzEyIDh2NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTY0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em04MC05NlYyODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR6bTgwIDY0djk2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTg0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwiXVxufTtcbnZhciBmYUFycm93VXBSaWdodEZyb21TcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtcmlnaHQtZnJvbS1zcXVhcmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImV4dGVybmFsLWxpbmtcIl0sIFwiZjA4ZVwiLCBcIk0zMjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4Mi43TDIwMS40IDI2NS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDQ0OCAxMDkuM1YxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMjB6TTgwIDMyQzM1LjggMzIgMCA2Ny44IDAgMTEyVjQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0MDBjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjQzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2SDE5MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg4MHpcIl1cbn07XG52YXIgZmFFeHRlcm5hbExpbmsgPSBmYUFycm93VXBSaWdodEZyb21TcXVhcmU7XG52YXIgZmFDdWJlc1N0YWNrZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3ViZXMtc3RhY2tlZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTRlNlwiLCBcIk0xOTIgNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNODIuNyAyMDdjLTE1LjMgOC44LTIwLjUgMjguNC0xMS43IDQzLjdsMzIgNTUuNGM4LjggMTUuMyAyOC40IDIwLjUgNDMuNyAxMS43bDU1LjQtMzJjMTUuMy04LjggMjAuNS0yOC40IDExLjctNDMuN2wtMzItNTUuNGMtOC44LTE1LjMtMjguNC0yMC41LTQzLjctMTEuN0w4Mi43IDIwN3pNMjg4IDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI4OHptNjQgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzODRjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek0xNjAgMzg0djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0zMiAzNTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpcIl1cbn07XG52YXIgZmFXb25TaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dvbi1zaWduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbODM2MSwgXCJrcndcIiwgXCJ3b25cIl0sIFwiZjE1OVwiLCBcIk02Mi40IDUzLjlDNTYuOCAzNy4xIDM4LjYgMjguMSAyMS45IDMzLjZTLTMuOSA1Ny40IDEuNiA3NC4xTDUxLjYgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDcyLjlsNTYuNyAxNzAuMWM0LjUgMTMuNSAxNy40IDIyLjQgMzEuNiAyMS45czI2LjQtMTAuNCAyOS44LTI0LjJMMjMzIDI4OGg0NkwzMjEgNDU1LjhjMy40IDEzLjggMTUuNiAyMy43IDI5LjggMjQuMnMyNy4xLTguNCAzMS42LTIxLjlMNDM5LjEgMjg4SDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjAuNGw1MC0xNDkuOWM1LjYtMTYuOC0zLjUtMzQuOS0yMC4yLTQwLjVzLTM0LjkgMy41LTQwLjUgMjAuMkwzOTIuOSAyMjRIMzI5TDI4NyA1Ni4yQzI4My41IDQyIDI3MC43IDMyIDI1NiAzMnMtMjcuNSAxMC0zMSAyNC4yTDE4MyAyMjRoLTY0TDYyLjQgNTMuOXptNzggMjM0LjFIMTY3bC0xMS40IDQ1LjZMMTQwLjQgMjg4ek0yNDkgMjI0bDctMjguMSA3IDI4LjFIMjQ5em05NiA2NGgyNi42bC0xNS4yIDQ1LjZMMzQ1IDI4OHpcIl1cbn07XG52YXIgZmFLcncgPSBmYVdvblNpZ247XG52YXIgZmFXb24gPSBmYVdvblNpZ247XG52YXIgZmFWaXJ1c0NvdmlkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpcnVzLWNvdmlkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNGE4XCIsIFwiTTE5MiAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODBWODEuNmMzMC43IDQuMiA1OC44IDE2LjMgODIuMyAzNC4xTDM4Ni4xIDkyIDM3NC44IDgwLjZjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw1Ni42IDU2LjZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw0MjAgMTI1LjlsLTIzLjggMjMuOGMxNy45IDIzLjUgMjkuOSA1MS43IDM0LjEgODIuM0g0NjRWMjE2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2ODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDQzMC40Yy00LjIgMzAuNy0xNi4zIDU4LjgtMzQuMSA4Mi4zTDQyMCAzODYuMWwxMS4zLTExLjNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01Ni42IDU2LjZjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMzg2LjEgNDIwbC0yMy44LTIzLjhjLTIzLjUgMTcuOS01MS43IDI5LjktODIuMyAzNC4xVjQ2NGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyMTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoMTZWNDMwLjRjLTMwLjctNC4yLTU4LjgtMTYuMy04Mi4zLTM0LjFMMTI1LjkgNDIwbDExLjMgMTEuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDQ2LjcgNDA4LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMEw5MiAzODYuMWwyMy44LTIzLjhDOTcuOSAzMzguOCA4NS44IDMxMC43IDgxLjYgMjgwSDQ4djE2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjIxNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djE2SDgxLjZjNC4yLTMwLjcgMTYuMy01OC44IDM0LjEtODIuM0w5MiAxMjUuOSA4MC42IDEzNy4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU2LjYtNTYuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMMTI1LjkgOTJsMjMuOCAyMy44YzIzLjUtMTcuOSA1MS43LTI5LjkgODIuMy0zNC4xVjQ4SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTQ4IDIwMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem02NCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwiXVxufTtcbnZhciBmYUF1c3RyYWxTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2F1c3RyYWwtc2lnbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTBhOVwiLCBcIk0yNTMuNSA1MS43QzI0OC42IDM5LjggMjM2LjkgMzIgMjI0IDMycy0yNC42IDcuOC0yOS41IDE5LjdMMTIyLjcgMjI0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDk2TDgyLjcgMzIwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU2TDM0LjUgNDM1LjdjLTYuOCAxNi4zIC45IDM1IDE3LjIgNDEuOHMzNS0uOSA0MS44LTE3LjJMMTI1LjMgMzg0SDMyMi43bDMxLjggNzYuM2M2LjggMTYuMyAyNS41IDI0IDQxLjggMTcuMnMyNC0yNS41IDE3LjItNDEuOEwzOTIgMzg0aDI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM2NS4zTDM1MiAyODhoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzI1LjNMMjUzLjUgNTEuN3pNMjU2IDIyNEgxOTJsMzItNzYuOEwyNTYgMjI0em0tOTAuNyA2NEgyODIuN0wyOTYgMzIwSDE1MmwxMy4zLTMyelwiXVxufTtcbnZhciBmYUYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZicsXG4gIGljb246IFszMjAsIDUxMiwgWzEwMl0sIFwiNDZcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlYyNTYgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NFY5NkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjR6XCJdXG59O1xudmFyIGZhTGVhZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsZWFmJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDZjXCIsIFwiTTI3MiA5NmMtNzguNiAwLTE0NS4xIDUxLjUtMTY3LjcgMTIyLjVjMzMuNi0xNyA3MS41LTI2LjUgMTExLjctMjYuNWg4OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyODggMjE2czAgMCAwIDBjLTE2LjYgMC0zMi43IDEuOS00OC4yIDUuNGMtMjUuOSA1LjktNTAgMTYuNC03MS40IDMwLjdjMCAwIDAgMCAwIDBDMzguMyAyOTguOCAwIDM2NC45IDAgNDQwdjE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWNDQwYzAtNDguNyAyMC43LTkyLjUgNTMuOC0xMjMuMkMxMjEuNiAzOTIuMyAxOTAuMyA0NDggMjcyIDQ0OGwxIDBjMTMyLjEtLjcgMjM5LTEzMC45IDIzOS0yOTEuNGMwLTQyLjYtNy41LTgzLjEtMjEuMS0xMTkuNmMtMi42LTYuOS0xMi43LTYuNi0xNi4yLS4xQzQ1NS45IDcyLjEgNDE4LjcgOTYgMzc2IDk2TDI3MiA5NnpcIl1cbn07XG52YXIgZmFSb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvYWQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjg3MzldLCBcImYwMThcIiwgXCJNMjU2IDMySDE4MS4yYy0yNy4xIDAtNTEuMyAxNy4xLTYwLjMgNDIuNkwzLjEgNDA3LjJDMS4xIDQxMyAwIDQxOS4yIDAgNDI1LjRDMCA0NTUuNSAyNC41IDQ4MCA1NC42IDQ4MEgyNTZWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NjRINTIxLjRjMzAuMiAwIDU0LjYtMjQuNSA1NC42LTU0LjZjMC02LjItMS4xLTEyLjQtMy4xLTE4LjJMNDU1LjEgNzQuNkM0NDYgNDkuMSA0MjEuOSAzMiAzOTQuOCAzMkgzMjBWOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzJ6bTY0IDE5MnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpcIl1cbn07XG52YXIgZmFUYXhpID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RheGknLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg2NjIsIFwiY2FiXCJdLCBcImYxYmFcIiwgXCJNMTkyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjY0YzAgLjEgMCAuMSAwIC4yYy0zOC42IDIuMi03Mi4zIDI3LjMtODUuMiA2NC4xTDM5LjYgMjI4LjhDMTYuNCAyMzguNCAwIDI2MS4zIDAgMjg4VjQzMnY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlY0MzJINDE2djQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQzMiAyODhjMC0yNi43LTE2LjQtNDkuNi0zOS42LTU5LjJMNDM3LjIgMTI4LjNjLTEyLjktMzYuOC00Ni42LTYyLTg1LjItNjQuMWMwLS4xIDAtLjEgMC0uMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxOTJ6TTE2NS40IDEyOEgzNDYuNmMxMy42IDAgMjUuNyA4LjYgMzAuMiAyMS40TDQwMi45IDIyNEgxMDkuMWwyNi4xLTc0LjZjNC41LTEyLjggMTYuNi0yMS40IDMwLjItMjEuNHpNOTYgMjg4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMjg4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJdXG59O1xudmFyIGZhQ2FiID0gZmFUYXhpO1xudmFyIGZhUGVyc29uQ2lyY2xlUGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tY2lyY2xlLXBsdXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NDFcIiwgXCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0xNiA4MGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY0OEgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzODRoNDhjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDQ4VjMwNHpcIl1cbn07XG52YXIgZmFDaGFydFBpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFydC1waWUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInBpZS1jaGFydFwiXSwgXCJmMjAwXCIsIFwiTTMwNCAyNDBWMTYuNmMwLTkgNy0xNi42IDE2LTE2LjZDNDQzLjcgMCA1NDQgMTAwLjMgNTQ0IDIyNGMwIDktNy42IDE2LTE2LjYgMTZIMzA0ek0zMiAyNzJDMzIgMTUwLjcgMTIyLjEgNTAuMyAyMzkgMzQuM2M5LjItMS4zIDE3IDYuMSAxNyAxNS40VjI4OEw0MTIuNSA0NDQuNWM2LjcgNi43IDYuMiAxNy43LTEuNSAyMy4xQzM3MS44IDQ5NS42IDMyMy44IDUxMiAyNzIgNTEyQzEzOS41IDUxMiAzMiA0MDQuNiAzMiAyNzJ6bTUyNi40IDE2YzkuMyAwIDE2LjYgNy44IDE1LjQgMTdjLTcuNyA1NS45LTM0LjYgMTA1LjYtNzMuOSAxNDIuM2MtNiA1LjYtMTUuNCA1LjItMjEuMi0uN0wzMjAgMjg4SDU1OC40elwiXVxufTtcbnZhciBmYVBpZUNoYXJ0ID0gZmFDaGFydFBpZTtcbnZhciBmYUJvbHRMaWdodG5pbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9sdC1saWdodG5pbmcnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUwYjdcIiwgXCJNMCAyNTZMMjguNSAyOGMyLTE2IDE1LjYtMjggMzEuOC0yOEgyMjguOWMxNSAwIDI3LjEgMTIuMSAyNy4xIDI3LjFjMCAzLjItLjYgNi41LTEuNyA5LjVMMjA4IDE2MEgzNDcuM2MyMC4yIDAgMzYuNyAxNi40IDM2LjcgMzYuN2MwIDcuNC0yLjIgMTQuNi02LjQgMjAuN2wtMTkyLjIgMjgxYy01LjkgOC42LTE1LjYgMTMuNy0yNS45IDEzLjdoLTIuOWMtMTUuNyAwLTI4LjUtMTIuOC0yOC41LTI4LjVjMC0yLjMgLjMtNC42IC45LTYuOUwxNzYgMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIl1cbn07XG52YXIgZmFTYWNrWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2Fjay14bWFyaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU2YVwiLCBcIk0xOTIgOTZIMzIwbDQ3LjQtNzEuMUMzNzQuNSAxNC4yIDM2Ni45IDAgMzU0LjEgMEgxNTcuOWMtMTIuOCAwLTIwLjQgMTQuMi0xMy4zIDI0LjlMMTkyIDk2em0xMjggMzJIMTkyYy0zLjggMi41LTguMSA1LjMtMTMgOC40bDAgMCAwIDBDMTIyLjMgMTcyLjcgMCAyNTAuOSAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2SDQxNmM1MyAwIDk2LTQzIDk2LTk2YzAtMTY1LjEtMTIyLjMtMjQzLjMtMTc5LTI3OS42Yy00LjgtMy4xLTkuMi01LjktMTMtOC40ek0yODkuOSAzMzZsNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3elwiXVxufTtcbnZhciBmYUZpbGVFeGNlbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWV4Y2VsJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWMzXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMTU1LjcgMjUwLjJMMTkyIDMwMi4xbDM2LjMtNTEuOWM3LjYtMTAuOSAyMi42LTEzLjUgMzMuNC01LjlzMTMuNSAyMi42IDUuOSAzMy40TDIyMS4zIDM0NGw0Ni40IDY2LjJjNy42IDEwLjkgNSAyNS44LTUuOSAzMy40cy0yNS44IDUtMzMuNC01LjlMMTkyIDM4NS44bC0zNi4zIDUxLjljLTcuNiAxMC45LTIyLjYgMTMuNS0zMy40IDUuOXMtMTMuNS0yMi42LTUuOS0zMy40TDE2Mi43IDM0NGwtNDYuNC02Ni4yYy03LjYtMTAuOS01LTI1LjggNS45LTMzLjRzMjUuOC01IDMzLjQgNS45elwiXVxufTtcbnZhciBmYUZpbGVDb250cmFjdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWNvbnRyYWN0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTZjXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNODAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTU0LjIgMjUzLjhjLTYuMSAyMC4zLTI0LjggMzQuMi00NiAzNC4ySDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDguMmM3LjEgMCAxMy4zLTQuNiAxNS4zLTExLjRsMTQuOS00OS41YzMuNC0xMS4zIDEzLjgtMTkuMSAyNS42LTE5LjFzMjIuMiA3LjcgMjUuNiAxOS4xbDExLjYgMzguNmM3LjQtNi4yIDE2LjgtOS43IDI2LjgtOS43YzE1LjkgMCAzMC40IDkgMzcuNSAyMy4ybDQuNCA4LjhIMzA0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDI0MGMtNi4xIDAtMTEuNi0zLjQtMTQuMy04LjhsLTguOC0xNy43Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNXMtNy4yIDIuMS04LjggNS41bC04LjggMTcuN2MtMi45IDUuOS05LjIgOS40LTE1LjcgOC44cy0xMi4xLTUuMS0xMy45LTExLjNMMTQ0IDM0OWwtOS44IDMyLjh6XCJdXG59O1xudmFyIGZhRmlzaEZpbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlzaC1maW5zJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGYyXCIsIFwiTTI3NS4yIDM4LjRjLTEwLjYtOC0yNS04LjUtMzYuMy0xLjVTMjIyIDU3LjMgMjI0LjYgNzAuM2w5LjcgNDguNmMtMTkuNCA5LTM2LjkgMTkuOS01Mi40IDMxLjVjLTE1LjMgMTEuNS0yOSAyMy45LTQwLjcgMzYuM0w0OC4xIDEzMi40Yy0xMi41LTcuMy0yOC40LTUuMy0zOC43IDQuOVMtMyAxNjMuMyA0LjIgMTc1LjlMNTAgMjU2IDQuMiAzMzYuMWMtNy4yIDEyLjYtNSAyOC40IDUuMyAzOC42czI2LjEgMTIuMiAzOC43IDQuOWw5My4xLTU0LjNjMTEuOCAxMi4zIDI1LjQgMjQuOCA0MC43IDM2LjNjMTUuNSAxMS42IDMzIDIyLjUgNTIuNCAzMS41bC05LjcgNDguNmMtMi42IDEzIDMuMSAyNi4zIDE0LjMgMzMuM3MyNS42IDYuNSAzNi4zLTEuNWw3Ny42LTU4LjJjNTQuOS00IDEwMS41LTI3IDEzNy4yLTUzLjhjMzkuMi0yOS40IDY3LjItNjQuNyA4MS42LTg5LjVjNS44LTkuOSA1LjgtMjIuMiAwLTMyLjFjLTE0LjQtMjQuOC00Mi41LTYwLjEtODEuNi04OS41Yy0zNS44LTI2LjgtODIuMy00OS44LTEzNy4yLTUzLjhMMjc1LjIgMzguNHpNMzg0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbnZhciBmYUJ1aWxkaW5nRmxhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZy1mbGFnJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGQ1XCIsIFwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMjQwem0xMTItMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTgwIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJ6TTI3MiA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ0OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY1MTJoNjRWMTkySDYyNGM4LjggMCAxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2SDQ4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFGYWNlR3JpbkJlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLWJlYW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1MTYsIFwiZ3Jpbi1iZWFtXCJdLCBcImY1ODJcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM4OC4xIDMxMi44YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN0MzODIuNCAzOTAuNiAzMjQuMiA0MzIgMjU2LjMgNDMycy0xMjYuMi00MS40LTE1MS4xLTEwMC41Yy01LTExLjggNy0yMi41IDE5LjMtMTguN2MzOS43IDEyLjIgODQuNSAxOSAxMzEuOCAxOXM5Mi4xLTYuOCAxMzEuOC0xOXptLTE3MC41LTg0bDAgMCAwIDAtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjIgMCAwIDAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44bDAgMCAwIDB6bTE2MCAwbDAgMC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMiAwIDAgMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhsMCAwIDAgMCAwIDB6XCJdXG59O1xudmFyIGZhR3JpbkJlYW0gPSBmYUZhY2VHcmluQmVhbTtcbnZhciBmYU9iamVjdFVuZ3JvdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb2JqZWN0LXVuZ3JvdXAnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyNDhcIiwgXCJNMzIgMTE5LjRDMTIuOSAxMDguNCAwIDg3LjcgMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBjMjMuNyAwIDQ0LjQgMTIuOSA1NS40IDMySDMyOC42QzMzOS42IDEyLjkgMzYwLjMgMCAzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDIzLjctMTIuOSA0NC40LTMyIDU1LjRWMjMyLjZjMTkuMSAxMS4xIDMyIDMxLjcgMzIgNTUuNGMwIDM1LjMtMjguNyA2NC02NCA2NGMtMjMuNyAwLTQ0LjQtMTIuOS01NS40LTMySDExOS40Yy0xMS4xIDE5LjEtMzEuNyAzMi01NS40IDMyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRWMTE5LjR6TTExOS40IDk2Yy01LjYgOS43LTEzLjcgMTcuOC0yMy40IDIzLjRWMjMyLjZjOS43IDUuNiAxNy44IDEzLjcgMjMuNCAyMy40SDMyOC42YzUuNi05LjcgMTMuNy0xNy44IDIzLjQtMjMuNFYxMTkuNGMtOS43LTUuNi0xNy44LTEzLjctMjMuNC0yMy40SDExOS40em0xOTIgMzg0Yy0xMS4xIDE5LjEtMzEuNyAzMi01NS40IDMyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRWMzUyaDY0djQwLjZjOS43IDUuNiAxNy44IDEzLjcgMjMuNCAyMy40SDUyMC42YzUuNi05LjcgMTMuNy0xNy44IDIzLjQtMjMuNFYyNzkuNGMtOS43LTUuNi0xNy44LTEzLjctMjMuNC0yMy40aC00NmMtNS40LTE1LjQtMTQuNi0yOC45LTI2LjUtMzkuNlYxOTJoNzIuNmMxMS4xLTE5LjEgMzEuNy0zMiA1NS40LTMyYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFYzOTIuNmMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMzExLjR6XCJdXG59O1xudmFyIGZhUG9vcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb29wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjE5XCIsIFwiTTI1NC40IDYuNmMzLjUtNC4zIDktNi41IDE0LjUtNS43QzMxNS44IDcuMiAzNTIgNDcuNCAzNTIgOTZjMCAxMS4yLTEuOSAyMi01LjUgMzJIMzUyYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMTkuMS04LjQgMzYuMy0yMS43IDQ4SDQwOGMzOS44IDAgNzIgMzIuMiA3MiA3MmMwIDIzLjItMTEgNDMuOC0yOCA1N2MzNC4xIDUuNyA2MCAzNS4zIDYwIDcxYzAgMzkuOC0zMi4yIDcyLTcyIDcySDcyYy0zOS44IDAtNzItMzIuMi03Mi03MmMwLTM1LjcgMjUuOS02NS4zIDYwLTcxYy0xNy0xMy4yLTI4LTMzLjgtMjgtNTdjMC0zOS44IDMyLjItNzIgNzItNzJoMTMuN0MxMDQuNCAyMjguMyA5NiAyMTEuMSA5NiAxOTJjMC0zNS4zIDI4LjctNjQgNjQtNjRoMTYuMmM0NC4xLS4xIDc5LjgtMzUuOSA3OS44LTgwYzAtOS4yLTEuNS0xNy45LTQuMy0yNi4xYy0xLjgtNS4yLS44LTExLjEgMi44LTE1LjR6XCJdXG59O1xudmFyIGZhTG9jYXRpb25QaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jYXRpb24tcGluJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJtYXAtbWFya2VyXCJdLCBcImYwNDFcIiwgXCJNMzg0IDE5MmMwIDg3LjQtMTE3IDI0My0xNjguMyAzMDcuMmMtMTIuMyAxNS4zLTM1LjEgMTUuMy00Ny40IDBDMTE3IDQzNSAwIDI3OS40IDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MnpcIl1cbn07XG52YXIgZmFNYXBNYXJrZXIgPSBmYUxvY2F0aW9uUGluO1xudmFyIGZhS2FhYmEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2FhYmEnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgzMzFdLCBcImY2NmJcIiwgXCJNNjAgMTIwbDIyOCA3MS4yTDUxNiAxMjAgMjg4IDQ4LjggNjAgMTIwek0yNzguNSAxLjVjNi4yLTEuOSAxMi45LTEuOSAxOS4xIDBsMjU2IDgwQzU2Ni45IDg1LjYgNTc2IDk4IDU3NiAxMTJ2MTYgMCAyMS4yTDI5Mi44IDIzNy43Yy0zLjEgMS02LjQgMS05LjUgMEwwIDE0OS4yVjEyOCAxMTJDMCA5OCA5LjEgODUuNiAyMi41IDgxLjVsMjU2LTgwem0yMy45IDI2Ni44TDU3NiAxODIuOHY0Ni41bC01Mi44IDE2LjVjLTguNCAyLjYtMTMuMSAxMS42LTEwLjUgMjBzMTEuNiAxMy4xIDIwIDEwLjVMNTc2IDI2Mi44VjQwMGMwIDE0LTkuMSAyNi40LTIyLjUgMzAuNWwtMjU2IDgwYy02LjIgMS45LTEyLjkgMS45LTE5LjEgMGwtMjU2LTgwQzkuMSA0MjYuNCAwIDQxNCAwIDQwMFYyNjIuOGw0My4yIDEzLjVjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwTDAgMjI5LjJWMTgyLjhsMjczLjcgODUuNWM5LjMgMi45IDE5LjMgMi45IDI4LjYgMHptLTE4NS41LTIuNmMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBsNjQgMjBjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwbC02NC0yMHptMzUyIDMwLjVjOC40LTIuNiAxMy4xLTExLjYgMTAuNS0yMHMtMTEuNi0xMy4xLTIwLTEwLjVsLTY0IDIwYy04LjQgMi42LTEzLjEgMTEuNi0xMC41IDIwczExLjYgMTMuMSAyMCAxMC41bDY0LTIwem0tMjI0IDkuNWMtOC40LTIuNi0xNy40IDIuMS0yMCAxMC41czIuMSAxNy40IDEwLjUgMjBsMzguNSAxMmM5LjMgMi45IDE5LjMgMi45IDI4LjYgMGwzOC41LTEyYzguNC0yLjYgMTMuMS0xMS42IDEwLjUtMjBzLTExLjYtMTMuMS0yMC0xMC41bC0zOC41IDEyYy0zLjEgMS02LjQgMS05LjUgMGwtMzguNS0xMnpcIl1cbn07XG52YXIgZmFUb2lsZXRQYXBlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2lsZXQtcGFwZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjk1MzFdLCBcImY3MWVcIiwgXCJNNDQ0LjIgMEMzOTcuMiA0OS42IDM4NCAxMjYuNSAzODQgMTkyYzAgMTU4LjgtMjcuMyAyNDctNDIuNyAyODMuOWMtMTAgMjQtMzMuMiAzNi4xLTU1LjQgMzYuMUg0OGMtMTEuNSAwLTIyLjItNi4yLTI3LjgtMTYuMnMtNS42LTIyLjMgLjQtMzIuMmM5LjgtMTcuNyAxNS40LTM4LjIgMjAuNS01Ny43QzUyLjMgMzYyLjggNjQgMjkzLjUgNjQgMTkyQzY0IDg2IDEwNyAwIDE2MCAwSDQ0NC4yek01MTIgMzg0Yy01MyAwLTk2LTg2LTk2LTE5MlM0NTkgMCA1MTIgMHM5NiA4NiA5NiAxOTJzLTQzIDE5Mi05NiAxOTJ6bTAtMTI4YzE3LjcgMCAzMi0yOC43IDMyLTY0cy0xNC4zLTY0LTMyLTY0cy0zMiAyOC43LTMyIDY0czE0LjMgNjQgMzIgNjR6TTE0NCAyMDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNjQgMGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTgwLTE2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJdXG59O1xudmFyIGZhSGVsbWV0U2FmZXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlbG1ldC1zYWZldHknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImhhcmQtaGF0XCIsIFwiaGF0LWhhcmRcIl0sIFwiZjgwN1wiLCBcIk0yNTYgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIuMyA5OS42YzAgNS42LTQuNSAxMC4xLTEwLjEgMTAuMWMtMy42IDAtNy0xLjktOC44LTUuMUwxNTcuMSA4N0M4MyAxMjMuNSAzMiAxOTkuOCAzMiAyODh2NjRINTQ0bDAtNjYuNGMtLjktODcuMi01MS43LTE2Mi40LTEyNS4xLTE5OC42bC00OCA4My45Yy0xLjggMy4yLTUuMiA1LjEtOC44IDUuMWMtNS42IDAtMTAuMS00LjUtMTAuMS0xMC4xVjY2LjMgNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMjU2ek0xNi42IDM4NEM3LjQgMzg0IDAgMzkxLjQgMCA0MDAuNmMwIDQuNyAyIDkuMiA1LjggMTEuOUMyNy41IDQyOC40IDExMS44IDQ4MCAyODggNDgwczI2MC41LTUxLjYgMjgyLjItNjcuNWMzLjgtMi44IDUuOC03LjIgNS44LTExLjljMC05LjItNy40LTE2LjYtMTYuNi0xNi42SDE2LjZ6XCJdXG59O1xudmFyIGZhSGFyZEhhdCA9IGZhSGVsbWV0U2FmZXR5O1xudmFyIGZhSGF0SGFyZCA9IGZhSGVsbWV0U2FmZXR5O1xudmFyIGZhRWplY3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWplY3QnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5MTY3XSwgXCJmMDUyXCIsIFwiTTIyNCAzMmMxMy41IDAgMjYuMyA1LjYgMzUuNCAxNS42bDE3NiAxOTJjMTIuOSAxNCAxNi4yIDM0LjMgOC42IDUxLjhTNDE5IDMyMCA0MDAgMzIwSDQ4Yy0xOSAwLTM2LjMtMTEuMi00My45LTI4LjdzLTQuMy0zNy43IDguNi01MS44bDE3Ni0xOTJDMTk3LjcgMzcuNiAyMTAuNSAzMiAyMjQgMzJ6TTAgNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQwMGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6XCJdXG59O1xudmFyIGZhQ2lyY2xlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE4MzgsIFwiYXJyb3ctYWx0LWNpcmNsZS1yaWdodFwiXSwgXCJmMzVhXCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDBBMjU2IDI1NiAwIDEgMCAwIDI1NnpNMjk0LjYgMTM1LjFsOTkuOSAxMDcuMWMzLjUgMy44IDUuNSA4LjcgNS41IDEzLjhzLTIgMTAuMS01LjUgMTMuOEwyOTQuNiAzNzYuOWMtNC4yIDQuNS0xMC4xIDcuMS0xNi4zIDcuMUMyNjYgMzg0IDI1NiAzNzQgMjU2IDM2MS43bDAtNTcuNy05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMybDk2IDAgMC01Ny43YzAtMTIuMyAxMC0yMi4zIDIyLjMtMjIuM2M2LjIgMCAxMi4xIDIuNiAxNi4zIDcuMXpcIl1cbn07XG52YXIgZmFBcnJvd0FsdENpcmNsZVJpZ2h0ID0gZmFDaXJjbGVSaWdodDtcbnZhciBmYVBsYW5lQ2lyY2xlQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTU1XCIsIFwiTTI1NiAwYy0zNSAwLTY0IDU5LjUtNjQgOTMuN3Y4NC42TDguMSAyODMuNGMtNSAyLjgtOC4xIDguMi04LjEgMTMuOXY2NS41YzAgMTAuNiAxMC4yIDE4LjMgMjAuNCAxNS40bDE3MS42LTQ5IDAgNzAuOS01Ny42IDQzLjJjLTQgMy02LjQgNy44LTYuNCAxMi44djQyYzAgNy44IDYuMyAxNCAxNCAxNGMxLjMgMCAyLjYtLjIgMy45LS41TDI1NiA0ODBsMTEwLjEgMzEuNWMxLjMgLjQgMi42IC41IDMuOSAuNWM2IDAgMTEuMS0zLjcgMTMuMS05QzM0NC41IDQ3MC43IDMyMCA0MjIuMiAzMjAgMzY4YzAtNjAuNiAzMC42LTExNCA3Ny4xLTE0NS42TDMyMCAxNzguM1Y5My43QzMyMCA1OS41IDI5MiAwIDI1NiAwek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwiXVxufTtcbnZhciBmYUZhY2VSb2xsaW5nRXllcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLXJvbGxpbmctZXllcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU4MCwgXCJtZWgtcm9sbGluZy1leWVzXCJdLCBcImY1YTVcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE5MiAzNjhIMzIwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE5MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMzItMTQ0YzAgMzUuMy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0YzAtMjYgMTUuNS00OC40IDM3LjgtNTguNGMtMy43IDUuMi01LjggMTEuNi01LjggMTguNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNi45LTIuMi0xMy4yLTUuOC0xOC40QzIwOC41IDE3NS42IDIyNCAxOTggMjI0IDIyNHptMTI4IDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTI2IDE1LjUtNDguNCAzNy44LTU4LjRjLTMuNyA1LjItNS44IDExLjYtNS44IDE4LjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTYuOS0yLjItMTMuMi01LjgtMTguNEM0MDAuNSAxNzUuNiA0MTYgMTk4IDQxNiAyMjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6XCJdXG59O1xudmFyIGZhTWVoUm9sbGluZ0V5ZXMgPSBmYUZhY2VSb2xsaW5nRXllcztcbnZhciBmYU9iamVjdEdyb3VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ29iamVjdC1ncm91cCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI0N1wiLCBcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJINDU2LjZDNDY3LjYgMTIuOSA0ODguMyAwIDUxMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNFYzOTIuNmMxOS4xIDExLjEgMzIgMzEuNyAzMiA1NS40YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxMTkuNHpNNDU2LjYgOTZIMTE5LjRjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNFYzOTIuNmM5LjcgNS42IDE3LjggMTMuNyAyMy40IDIzLjRINDU2LjZjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40VjExOS40Yy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjR6TTEyOCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwek0yNTYgMzIwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjIyNGg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyMHpcIl1cbn07XG52YXIgZmFDaGFydExpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtbGluZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGluZS1jaGFydFwiXSwgXCJmMjAxXCIsIFwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0VjQwMGMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODBjLTguOCAwLTE2LTcuMi0xNi0xNlY2NHptNDA2LjYgODYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwzMjAgMjEwLjdsLTU3LjQtNTcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjQwIDIyMS4zbDU3LjQgNTcuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4elwiXVxufTtcbnZhciBmYUxpbmVDaGFydCA9IGZhQ2hhcnRMaW5lO1xudmFyIGZhTWFza1ZlbnRpbGF0b3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFzay12ZW50aWxhdG9yJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTI0XCIsIFwiTTE1OS4xIDE3NkMxMzkuNCAyMTkuMiAxMjggMjY0LjcgMTI4IDMwMC44YzAgMTUuOSAyLjIgMzEuNCA2LjMgNDZsLTMxLjgtNy45QzcwLjUgMzMwLjkgNDggMzAyLjEgNDggMjY5VjE4NGMwLTQuNCAzLjYtOCA4LThIMTU5LjF6bTI2LTQ4SDU2Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4NWMwIDU1LjEgMzcuNSAxMDMuMSA5MC45IDExNi40bDcxLjMgMTcuOGMyMi43IDMwLjUgNTUuNCA1NC4xIDkzLjggNjYuNlYzOTMuM2MtMTkuNy0xNi40LTMyLTQwLjMtMzItNjYuOWMwLTQ5LjUgNDMtMTM0LjQgOTYtMTM0LjRjNTIuNSAwIDk2IDg0LjkgOTYgMTM0LjRjMCAyNi43LTEyLjQgNTAuNC0zMiA2Ni44djc2LjZjMzgtMTIuNiA3MC42LTM2IDkzLjUtNjYuNGw3MS42LTE3LjlDNjAyLjUgMzcyLjEgNjQwIDMyNC4xIDY0MCAyNjlWMTg0YzAtMzAuOS0yNS4xLTU2LTU2LTU2SDQ1NC41QzQxOS43IDczLjggMzcyLjEgMzIgMzIwIDMyYy01Mi42IDAtMTAwLjIgNDEuOC0xMzQuOSA5NnptMjk1LjYgNDhINTg0YzQuNCAwIDggMy42IDggOHY4NWMwIDMzLTIyLjUgNjEuOC01NC41IDY5LjlsLTMxLjggOGM0LjItMTQuNyA2LjQtMzAuMSA2LjQtNDYuMWMwLTM2LjEtMTEuNi04MS42LTMxLjMtMTI0Ljh6TTI4OCAzMjBWNTEyaDY0VjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIl1cbn07XG52YXIgZmFBcnJvd1JpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbODU5NF0sIFwiZjA2MVwiLCBcIk00MzguNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMzM4LjggMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMDYuNyAwTDIzMy40IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6XCJdXG59O1xudmFyIGZhU2lnbnNQb3N0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpZ25zLXBvc3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcIm1hcC1zaWduc1wiXSwgXCJmMjc3XCIsIFwiTTIyNCAzMkg2NEM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJINDQxLjRjNC4yIDAgOC4zLTEuNyAxMS4zLTQuN2w0OC00OGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNDgtNDhjLTMtMy03LjEtNC43LTExLjMtNC43SDI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpNNDgwIDI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkgyODhWMTkySDIyNHYzMkg3MC42Yy00LjIgMC04LjMgMS43LTExLjMgNC43bC00OCA0OGMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZsNDggNDhjMyAzIDcuMSA0LjcgMTEuMyA0LjdINDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NnpNMjg4IDQ4MFYzODRIMjI0djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6XCJdXG59O1xudmFyIGZhTWFwU2lnbnMgPSBmYVNpZ25zUG9zdDtcbnZhciBmYUNhc2hSZWdpc3RlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXNoLXJlZ2lzdGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzg4XCIsIFwiTTY0IDBDNDYuMyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoODB2MzJIODdjLTMxLjYgMC01OC41IDIzLjEtNjMuMyA1NC40TDEuMSAzNjQuMUMuNCAzNjguOCAwIDM3My42IDAgMzc4LjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYzNzguNGMwLTQuOC0uNC05LjYtMS4xLTE0LjRMNDg4LjIgMjE0LjRDNDgzLjUgMTgzLjEgNDU2LjYgMTYwIDQyNSAxNjBIMjA4VjEyOGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkg2NHpNOTYgNDhIMjU2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2ek02NCA0MzJjMC04LjggNy4yLTE2IDE2LTE2SDQzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em00OC0xNjhhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4em0xMjAtMjRhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMTYwIDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTMyOCAyNDBhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMjU2IDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTQyNCAyNDBhMjQgMjQgMCAxIDEgLTQ4IDAgMjQgMjQgMCAxIDEgNDggMHpNMzUyIDM0NGEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6XCJdXG59O1xudmFyIGZhUGVyc29uQ2lyY2xlUXVlc3Rpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWNpcmNsZS1xdWVzdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU0MlwiLCBcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTYuOUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmgyOS43YzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE1MnpNNDMyIDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNMzY4IDMyMS42VjMyOGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2di02LjRjMC01LjMgNC4zLTkuNiA5LjYtOS42aDQwLjVjNy43IDAgMTMuOSA2LjIgMTMuOSAxMy45YzAgNS4yLTIuOSA5LjktNy40IDEyLjNsLTMyIDE2LjhjLTUuMyAyLjgtOC42IDguMi04LjYgMTQuMlYzODRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnYtNS4xbDIzLjUtMTIuM2MxNS4xLTcuOSAyNC41LTIzLjYgMjQuNS00MC42YzAtMjUuNC0yMC42LTQ1LjktNDUuOS00NS45SDQwOS42Yy0yMyAwLTQxLjYgMTguNi00MS42IDQxLjZ6XCJdXG59O1xudmFyIGZhSCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTA0XSwgXCI0OFwiLCBcIk0zMjAgMjU2bDAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyTDY0IDE5MiA2NCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlMwIDQ2LjMgMCA2NFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE5MiAyNTYgMHpcIl1cbn07XG52YXIgZmFUYXJwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhcnAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1N2JcIiwgXCJNNTc2IDEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzUyIDAgMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJINTc2VjEyOHpNNDQ4IDQ0OEw1NzYgMzIwSDQ0OGwwIDEyOHpNOTYgMTI4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFTY3Jld2RyaXZlcldyZW5jaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY3Jld2RyaXZlci13cmVuY2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInRvb2xzXCJdLCBcImY3ZDlcIiwgXCJNNzguNiA1QzY5LjEtMi40IDU1LjYtMS41IDQ3IDdMNyA0N2MtOC41IDguNS05LjQgMjItMi4xIDMxLjZsODAgMTA0YzQuNSA1LjkgMTEuNiA5LjQgMTkgOS40aDU0LjFsMTA5IDEwOWMtMTQuNyAyOS0xMCA2NS40IDE0LjMgODkuNmwxMTIgMTEyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMTItMTEyYy0yNC4yLTI0LjItNjAuNi0yOS04OS42LTE0LjNsLTEwOS0xMDlWMTA0YzAtNy41LTMuNS0xNC41LTkuNC0xOUw3OC42IDV6TTE5LjkgMzk2LjFDNy4yIDQwOC44IDAgNDI2LjEgMCA0NDQuMUMwIDQ4MS42IDMwLjQgNTEyIDY3LjkgNTEyYzE4IDAgMzUuMy03LjIgNDgtMTkuOUwyMzMuNyAzNzQuM2MtNy44LTIwLjktOS00My42LTMuNi02NS4xbC02MS43LTYxLjdMMTkuOSAzOTYuMXpNNTEyIDE0NGMwLTEwLjUtMS4xLTIwLjctMy4yLTMwLjVjLTIuNC0xMS4yLTE2LjEtMTQuMS0yNC4yLTZsLTYzLjkgNjMuOWMtMyAzLTcuMSA0LjctMTEuMyA0LjdIMzUyYy04LjggMC0xNi03LjItMTYtMTZWMTAyLjZjMC00LjIgMS43LTguMyA0LjctMTEuM2w2My45LTYzLjljOC4xLTguMSA1LjItMjEuOC02LTI0LjJDMzg4LjcgMS4xIDM3OC41IDAgMzY4IDBDMjg4LjUgMCAyMjQgNjQuNSAyMjQgMTQ0bDAgLjggODUuMyA4NS4zYzM2LTkuMSA3NS44IC41IDEwNCAyOC43TDQyOSAyNzQuNWM0OS0yMyA4My03Mi44IDgzLTEzMC41ek01NiA0MzJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG52YXIgZmFUb29scyA9IGZhU2NyZXdkcml2ZXJXcmVuY2g7XG52YXIgZmFBcnJvd3NUb0V5ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdG8tZXllJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGJmXCIsIFwiTTE1IDE1QzI0LjQgNS43IDM5LjYgNS43IDQ5IDE1bDYzIDYzVjQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2OTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRINDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRINzguMUwxNSA0OUM1LjcgMzkuNiA1LjcgMjQuNCAxNSAxNXpNMTMzLjUgMjQzLjlDMTU4LjYgMTkzLjYgMjIyLjcgMTEyIDMyMCAxMTJzMTYxLjQgODEuNiAxODYuNSAxMzEuOWMzLjggNy42IDMuOCAxNi41IDAgMjQuMkM0ODEuNCAzMTguNCA0MTcuMyA0MDAgMzIwIDQwMHMtMTYxLjQtODEuNi0xODYuNS0xMzEuOWMtMy44LTcuNi0zLjgtMTYuNSAwLTI0LjJ6TTMyMCAzMjBhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6TTU5MSAxNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTYzIDYzSDYwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1MDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjQwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRWNzguMWw2My02M3pNMTUgNDk3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw2My02M0g0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHY5NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0MzMuOUw0OSA0OTdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwem01NzYgMGwtNjMtNjNWNDcyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGg5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NjEuOWw2MyA2M2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwelwiXVxufTtcbnZhciBmYVBsdWdDaXJjbGVCb2x0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLWJvbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NWJcIiwgXCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ2MzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDEyLjhjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6TTQzMiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em00Ny45LTIyNWM0LjMgMy43IDUuNCA5LjkgMi42IDE0LjlMNDUyLjQgMzU2SDQ4OGM1LjIgMCA5LjggMy4zIDExLjQgOC4ycy0uMSAxMC4zLTQuMiAxMy40bC05NiA3MmMtNC41IDMuNC0xMC44IDMuMi0xNS4xLS42cy01LjQtOS45LTIuNi0xNC45TDQxMS42IDM4MEgzNzZjLTUuMiAwLTkuOC0zLjMtMTEuNC04LjJzLjEtMTAuMyA0LjItMTMuNGw5Ni03MmM0LjUtMy40IDEwLjgtMy4yIDE1LjEgLjZ6XCJdXG59O1xudmFyIGZhSGVhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhcnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgxNTMsIDEyODE1NCwgMTI4MTU1LCAxMjgxNTYsIDEyODQyMCwgMTI5MjkzLCAxMjkyOTQsIDEyOTUwNSwgOTgyOSwgMTAwODQsIDYxNTc4XSwgXCJmMDA0XCIsIFwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlMNDY0LjQgMzAwLjRjMzAuNC0yOC4zIDQ3LjYtNjggNDcuNi0xMDkuNXYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpcIl1cbn07XG52YXIgZmFNYXJzQW5kVmVudXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFycy1hbmQtdmVudXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5ODkzXSwgXCJmMjI0XCIsIFwiTTMzNy44IDE0LjhDMzQxLjUgNS44IDM1MC4zIDAgMzYwIDBINDcyYzEzLjMgMCAyNCAxMC43IDI0IDI0VjEzNmMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC0zOS0zOS0yNC43IDI0LjdDNDA3IDE2My4zIDQxNiAxOTIuNiA0MTYgMjI0YzAgODAuMi01OS4xIDE0Ni43LTEzNi4xIDE1OC4yYzAgLjYgLjEgMS4yIC4xIDEuOHYuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuNCAuMyAuNCAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuMyAuM2gyNGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODB2LjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjIgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgLjEgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwbC0yNCAwLTI0IDB2MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xVjQ4NiA0ODZ2LS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xVjQ4NSA0ODV2LS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xVjQ4NHYtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjEtLjFWNDgzdi0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMS0uMVY0ODF2LS4xLS4xLS4xLS4xLS4xLS4xLS4xLS4xVjQ4MHYtLjEtLjEtLjEtLjEtLjEtLjEtLjFWNDc5di0uMS0uMS0uMS0uMS0uMS0uMS0uMVY0Nzh2LS4xLS4xLS4xLS4xLS4xLS4xVjQ3N3YtLjEtLjEtLjEtLjEtLjEtLjFWNDc2di0uMS0uMS0uMS0uMS0uMS0uMVY0NzV2LS4xLS4yLS4yLS4yLS4yLS4yVjQ3NHYtLjItLjItLjItLjItLjJWNDczdi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMlY0NzB2LS4yLS4yLS4yLS4yLS4yVjQ2OXYtLjItLjItLjItLjItLjItLjItLjItLjItLjItLjJWNDY3di0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMi0uMlY0NjN2LS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yLS4yVjQ1OXYtLjItLjItLjItLjItLjItLjItLjItLjJWNDU3di0uMi0uMi0uMi0uMlY0NTZIMjA4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDI0di0uMy0uMy0uMy0uMy0uMy0uMy0uMy0uMy0uMy0uMy0uMy0uMy0uMy0uM1Y0MDN2LS4zLS4zVjQwMnYtLjMtLjNWNDAxdi0uMy0uM1Y0MDB2LS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS4zLS40LS4zLS40LS40LS40LS40VjM5M3YtLjQtLjQtLjQtLjQtLjQtLjQtLjQtLjQtLjQtLjQtLjQtLjQtLjRWMzg4di0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNC0uNFYzODRjMC0uNiAwLTEuMiAuMS0xLjhDMTU1LjEgMzcwLjcgOTYgMzA0LjIgOTYgMjI0YzAtODguNCA3MS42LTE2MCAxNjAtMTYwYzM5LjYgMCA3NS45IDE0LjQgMTAzLjggMzguMkwzODIuMSA4MCAzNDMgNDFjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJ6TTQ0OCA0OGwwIDBoMHYwek0yNTYgNDg4aDI0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0aDI0em05Ni0yNjRhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwelwiXVxufTtcbnZhciBmYUhvdXNlVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS11c2VyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJob21lLXVzZXJcIl0sIFwiZTFiMFwiLCBcIk01NzUuOCAyNTUuNWMwIDE4LTE1IDMyLjEtMzIgMzIuMWgtMzJsLjcgMTYwLjJjLjIgMzUuNS0yOC41IDY0LjMtNjQgNjQuM0gxMjguMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDU2NC44IDIzMS41YzggNyAxMiAxNSAxMSAyNHpNMzUyIDIyNGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6bS05NiA5NmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZjMC00NC4yLTM1LjgtODAtODAtODBIMjU2elwiXVxufTtcbnZhciBmYUhvbWVVc2VyID0gZmFIb3VzZVVzZXI7XG52YXIgZmFEdW1wc3RlckZpcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHVtcHN0ZXItZmlyZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjc5NFwiLCBcIk00OS43IDMyYy0xMC41IDAtMTkuOCA2LjktMjIuOSAxNi45TC45IDEzM2MtLjYgMi0uOSA0LjEtLjkgNi4xQzAgMTUwLjcgOS4zIDE2MCAyMC45IDE2MGg5NEwxNDAuNSAzMkg0OS43ek0yNzIgMTYwVjMySDE3My4xTDE0Ny41IDE2MEgyNzJ6bTMyIDBoNThjMTUuMS0xOC4xIDMyLjEtMzUuNyA1MC41LTUyLjFjMS41LTEuNCAzLjItMi42IDQuOC0zLjhMNDAyLjkgMzJIMzA0VjE2MHptMjA5LjktMjMuN2MxNy40LTE1LjggNDMuOS0xNi4yIDYxLjctMS4yYy0uMS0uNy0uMy0xLjQtLjUtMi4xTDU0OS4yIDQ4LjlDNTQ2LjEgMzguOSA1MzYuOCAzMiA1MjYuMyAzMkg0MzUuNWwxMi44IDY0LjJjOS42IDEgMTkgNC45IDI2LjYgMTEuOGMxMS43IDEwLjYgMjMgMjEuNiAzMy45IDMzLjFjMS42LTEuNiAzLjMtMy4yIDUtNC44ek0zMjUuMiAyMTAuN2MzLjgtNi4yIDcuOS0xMi41IDEyLjMtMTguN0gzMmw0IDMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ0TDY0IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMySDMzNy42Yy0zMS0zNC43LTQ5LjYtODAuNi00OS42LTEyOS45YzAtMzUuMiAxNi4zLTczLjYgMzcuMi0xMDcuNHptMTI4LjQtNzguOWMtMi44LTIuNS02LjMtMy43LTkuOC0zLjhjLTMuNiAwLTcuMiAxLjItMTAgMy43Yy0zMy4yIDI5LjctNjEuNCA2My40LTgxLjQgOTUuOGMtMTkuNyAzMS45LTMyLjQgNjYuMi0zMi40IDkyLjZDMzIwIDQwNy45IDM5MC4zIDQ4MCA0ODAgNDgwYzg4LjcgMCAxNjAtNzIgMTYwLTE1OS44YzAtMjAuMi05LjYtNTAuOS0yNC4yLTc5Yy0xNC44LTI4LjUtMzUuNy01OC41LTYwLjQtODEuMWMtNS42LTUuMS0xNC40LTUuMi0yMCAwYy05LjYgOC44LTE4LjYgMTkuNi0yNi41IDI5LjVjLTE3LjMtMjAuNy0zNS44LTM5LjktNTUuNS01Ny43ek01MzAgNDAxYy0xNSAxMC0zMSAxNS00OSAxNWMtNDUgMC04MS0yOS04MS03OGMwLTI0IDE1LTQ1IDQ1LTgyYzQgNSA2MiA3OSA2MiA3OWwzNi00MmMzIDQgNSA4IDcgMTJjMTggMzMgMTAgNzUtMjAgOTZ6XCJdXG59O1xudmFyIGZhSG91c2VDcmFjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1jcmFjaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTNiMVwiLCBcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDIzMC40bC0zMS4zLTUyLjJjLTQuMS02LjgtMi42LTE1LjUgMy41LTIwLjVMMjg4IDM2OGwtNjAuMi04Mi44Yy0xMC45LTE1IDguMi0zMy41IDIyLjgtMjJsMTE3LjkgOTIuNmM4IDYuMyA4LjIgMTguNCAuNCAyNC45TDI4OCA0NDhsMzguNCA2NEg0NDguNWMzNS41IDAgNjQuMi0yOC44IDY0LTY0LjNsLS43LTE2MC4yaDMyelwiXVxufTtcbnZhciBmYU1hcnRpbmlHbGFzc0NpdHJ1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJ0aW5pLWdsYXNzLWNpdHJ1cycsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiY29ja3RhaWxcIl0sIFwiZjU2MVwiLCBcIk00MzIgMjQwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0zNS41IDAtNjYuNiAxOS4zLTgzLjIgNDhIMjk2LjJDMzE2IDQwLjEgMzY5LjMgMCA0MzIgMGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NHMtNjQuNSAxNDQtMTQ0IDE0NGMtMjcuNyAwLTUzLjUtNy44LTc1LjUtMjEuM2wzNS40LTM1LjRjMTIuMiA1LjYgMjUuOCA4LjcgNDAuMSA4Ljd6TTEuOCAxNDIuOEM1LjUgMTMzLjggMTQuMyAxMjggMjQgMTI4SDM5MmM5LjcgMCAxOC41IDUuOCAyMi4yIDE0LjhzMS43IDE5LjMtNS4yIDI2LjJsLTE3NyAxNzdWNDY0aDY0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIwOCAxMjBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMzQ1LjlMNyAxNjljLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJ6XCJdXG59O1xudmFyIGZhQ29ja3RhaWwgPSBmYU1hcnRpbmlHbGFzc0NpdHJ1cztcbnZhciBmYUZhY2VTdXJwcmlzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLXN1cnByaXNlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTU4LCBcInN1cnByaXNlXCJdLCBcImY1YzJcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0yNTYgMjg4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwiXVxufTtcbnZhciBmYVN1cnByaXNlID0gZmFGYWNlU3VycHJpc2U7XG52YXIgZmFCb3R0bGVXYXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3R0bGUtd2F0ZXInLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImU0YzVcIiwgXCJNMTIwIDBoODBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNjRIOTZWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTMyIDE1MS43YzAtMTUuNiA5LTI5LjggMjMuMi0zNi41bDI0LjQtMTEuNGMxMS01LjEgMjMtNy44IDM1LjEtNy44aDkwLjZjMTIuMSAwIDI0LjEgMi43IDM1LjEgNy44bDI0LjQgMTEuNGMxNC4xIDYuNiAyMy4yIDIwLjggMjMuMiAzNi41YzAgMTQuNC03LjUgMjctMTguOSAzNC4xYzExLjUgOC44IDE4LjkgMjIuNiAxOC45IDM4LjJjMCAxNi43LTguNSAzMS40LTIxLjUgNDBjMTIuOSA4LjYgMjEuNSAyMy4zIDIxLjUgNDBzLTguNSAzMS40LTIxLjUgNDBjMTIuOSA4LjYgMjEuNSAyMy4zIDIxLjUgNDBzLTguNSAzMS40LTIxLjUgNDBjMTIuOSA4LjYgMjEuNSAyMy4zIDIxLjUgNDBjMCAyNi41LTIxLjUgNDgtNDggNDhIODBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtMTYuNyA4LjUtMzEuNCAyMS41LTQwQzQwLjUgNDE1LjQgMzIgNDAwLjcgMzIgMzg0czguNS0zMS40IDIxLjUtNDBDNDAuNSAzMzUuNCAzMiAzMjAuNyAzMiAzMDRzOC41LTMxLjQgMjEuNS00MEM0MC41IDI1NS40IDMyIDI0MC43IDMyIDIyNGMwLTE1LjYgNy40LTI5LjQgMTguOS0zOC4yQzM5LjUgMTc4LjcgMzIgMTY2LjEgMzIgMTUxLjd6TTk2IDI0MGMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ6bTE2IDExMmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxMTJ6XCJdXG59O1xudmFyIGZhQ2lyY2xlUGF1c2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXBhdXNlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjIwOTIsIFwicGF1c2UtY2lyY2xlXCJdLCBcImYyOGJcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIyNCAxOTJWMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xMjggMFYzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJdXG59O1xudmFyIGZhUGF1c2VDaXJjbGUgPSBmYUNpcmNsZVBhdXNlO1xudmFyIGZhVG9pbGV0UGFwZXJTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2lsZXQtcGFwZXItc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzJcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtMTA5LjctODZDNTY5LjkgMzc0IDYwOCAyOTEuOSA2MDggMTkyQzYwOCA4NiA1NjUgMCA1MTIgMHMtOTYgODYtOTYgMTkyYzAgNDkuMSA5LjIgOTMuOSAyNC40IDEyNy45bC01OS00Ni4yYzEuNi0yNC44IDIuNi01MiAyLjYtODEuNmMwLTY1LjUgMTMuMi0xNDIuNCA2MC4yLTE5MkgxNjBjLTI0LjggMC00Ny40IDE4LjgtNjQuNCA0OS42TDM4LjggNS4xek0zNjcuMyAzODUuNEw2Ni41IDE0OC40QzY0LjkgMTYyLjQgNjQgMTc3IDY0IDE5MmMwIDEwMS41LTExLjcgMTcwLjgtMjMgMjEzLjljLTUuMSAxOS40LTEwLjcgMzkuOS0yMC41IDU3LjdjLTUuOSA5LjktNi4xIDIyLjEtLjQgMzIuMlMzNi41IDUxMiA0OCA1MTJIMjg1LjljMjIuMyAwIDQ1LjQtMTIuMSA1NS40LTM2LjFjNy40LTE3LjcgMTcuNS00Ny4yIDI2LTkwLjZ6TTU0NCAxOTJjMCAzNS4zLTE0LjMgNjQtMzIgNjRzLTMyLTI4LjctMzItNjRzMTQuMy02NCAzMi02NHMzMiAyOC43IDMyIDY0elwiXVxufTtcbnZhciBmYUFwcGxlV2hvbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXBwbGUtd2hvbGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc4MjIsIDEyNzgyMywgXCJhcHBsZS1hbHRcIl0sIFwiZjVkMVwiLCBcIk0yMjQgMTEyYy04LjggMC0xNi03LjItMTYtMTZWODBjMC00NC4yIDM1LjgtODAgODAtODBoMTZjOC44IDAgMTYgNy4yIDE2IDE2VjMyYzAgNDQuMi0zNS44IDgwLTgwIDgwSDIyNHpNMCAyODhjMC03Ni4zIDM1LjctMTYwIDExMi0xNjBjMjcuMyAwIDU5LjcgMTAuMyA4Mi43IDE5LjNjMTguOCA3LjMgMzkuOSA3LjMgNTguNyAwYzIyLjktOC45IDU1LjQtMTkuMyA4Mi43LTE5LjNjNzYuMyAwIDExMiA4My43IDExMiAxNjBjMCAxMjgtODAgMjI0LTE2MCAyMjRjLTE2LjUgMC0zOC4xLTYuNi01MS41LTExLjNjLTguMS0yLjgtMTYuOS0yLjgtMjUgMGMtMTMuNCA0LjctMzUgMTEuMy01MS41IDExLjNDODAgNTEyIDAgNDE2IDAgMjg4elwiXVxufTtcbnZhciBmYUFwcGxlQWx0ID0gZmFBcHBsZVdob2xlO1xudmFyIGZhS2l0Y2hlblNldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdraXRjaGVuLXNldCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTUxYVwiLCBcIk0yNDAgMTQ0QTk2IDk2IDAgMSAwIDQ4IDE0NGE5NiA5NiAwIDEgMCAxOTIgMHptNDQuNCAzMkMyNjkuOSAyNDAuMSAyMTIuNSAyODggMTQ0IDI4OEM2NC41IDI4OCAwIDIyMy41IDAgMTQ0UzY0LjUgMCAxNDQgMGM2OC41IDAgMTI1LjkgNDcuOSAxNDAuNCAxMTJoNzEuOGM4LjgtOS44IDIxLjYtMTYgMzUuOC0xNkg0OTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMzkyYy0xNC4yIDAtMjctNi4yLTM1LjgtMTZIMjg0LjR6TTE0NCA4MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNNDAwIDI0MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY4aDk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg5NnYtOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMjg4IDQ2NFYzNTJINTEyVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEgzMzZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4ek00OCAzMjBoODAgMTYgMzJjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhIMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em0xMjggNjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIMTYwdjMyaDE2ek0yNCA0NjRIMjAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwiXVxufTtcbnZhciBmYVIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncicsXG4gIGljb246IFszMjAsIDUxMiwgWzExNF0sIFwiNTJcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlYyODggNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzIwaDk1LjNMMjYxLjggNDY2LjRjMTAuMSAxNC41IDMwLjEgMTggNDQuNiA3LjlzMTgtMzAuMSA3LjktNDQuNkwyMzAuMSAzMDkuNUMyODIuOCAyODguMSAzMjAgMjM2LjQgMzIwIDE3NmMwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NEg2NHpNMTc2IDI1Nkg2NFY5NkgxNzZjNDQuMiAwIDgwIDM1LjggODAgODBzLTM1LjggODAtODAgODB6XCJdXG59O1xudmFyIGZhVGVtcGVyYXR1cmVRdWFydGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLXF1YXJ0ZXInLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcInRlbXBlcmF0dXJlLTFcIiwgXCJ0aGVybW9tZXRlci0xXCIsIFwidGhlcm1vbWV0ZXItcXVhcnRlclwiXSwgXCJmMmNhXCIsIFwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWMjc2LjVjMCAxNy4zLTcuMSAzMS45LTE1LjMgNDIuNUM4Ni4yIDMzMi42IDgwIDM0OS41IDgwIDM2OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMTguNS02LjItMzUuNC0xNi43LTQ4LjljLTguMi0xMC42LTE1LjMtMjUuMi0xNS4zLTQyLjVWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMlYyNzYuNWMwIC4xIC4xIC4zIC4yIC42Yy4yIC42IC44IDEuNiAxLjcgMi44YzE4LjkgMjQuNCAzMC4xIDU1IDMwLjEgODguMWMwIDc5LjUtNjQuNSAxNDQtMTQ0IDE0NFMxNiA0NDcuNSAxNiAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNlYxMTJ6TTIwOCAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zVjI3MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djUwLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwiXVxufTtcbnZhciBmYVRlbXBlcmF0dXJlMSA9IGZhVGVtcGVyYXR1cmVRdWFydGVyO1xudmFyIGZhVGhlcm1vbWV0ZXIxID0gZmFUZW1wZXJhdHVyZVF1YXJ0ZXI7XG52YXIgZmFUaGVybW9tZXRlclF1YXJ0ZXIgPSBmYVRlbXBlcmF0dXJlUXVhcnRlcjtcbnZhciBmYUN1YmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3ViZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFiMlwiLCBcIk0yMzQuNSA1LjdjMTMuOS01IDI5LjEtNSA0My4xIDBsMTkyIDY4LjZDNDk1IDgzLjQgNTEyIDEwNy41IDUxMiAxMzQuNlYzNzcuNGMwIDI3LTE3IDUxLjItNDIuNSA2MC4zbC0xOTIgNjguNmMtMTMuOSA1LTI5LjEgNS00My4xIDBsLTE5Mi02OC42QzE3IDQyOC42IDAgNDA0LjUgMCAzNzcuNFYxMzQuNmMwLTI3IDE3LTUxLjIgNDIuNS02MC4zbDE5Mi02OC42ek0yNTYgNjZMODIuMyAxMjggMjU2IDE5MGwxNzMuNy02MkwyNTYgNjZ6bTMyIDM2OC42bDE2MC01Ny4xdi0xODhMMjg4IDI0Ni42djE4OHpcIl1cbn07XG52YXIgZmFCaXRjb2luU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaXRjb2luLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImUwYjRcIiwgXCJNNDggMzJDNDggMTQuMyA2Mi4zIDAgODAgMHMzMiAxNC4zIDMyIDMyVjY0aDMyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRjMCAxLjUtLjEgMy4xLS4zIDQuNUMyNTQuMSA4Mi4yIDI4OCAxMjUuMSAyODggMTc2YzAgMjQuMi03LjcgNDYuNi0yMC43IDY0LjljMzEuNyAxOS44IDUyLjcgNTUgNTIuNyA5NS4xYzAgNjEuOS01MC4xIDExMi0xMTIgMTEydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgxMTJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDQxLjdDMTguNyA0NDggMCA0MjkuMyAwIDQwNi4zVjI4OCAyNjUuNyAyMjQgMTAxLjZDMCA4MC44IDE2LjggNjQgMzcuNiA2NEg0OFYzMnpNNjQgMjI0SDE3NmMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEg2NHY5NnptMTEyIDY0SDY0djk2SDIwOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEgxNzZ6XCJdXG59O1xudmFyIGZhU2hpZWxkRG9nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC1kb2cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1NzNcIiwgXCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTYwLjkgMjg2LjJjNC44IDEuMiA5LjkgMS44IDE1LjEgMS44YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGg0NC4yYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDE5Mmg2NGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA0NC4yLTM1LjggODAtODAgODBIMjcydjUwLjdjMCA3LjMtNS45IDEzLjMtMTMuMyAxMy4zYy0xLjggMC0zLjYtLjQtNS4yLTEuMWwtOTguNy00Mi4zYy02LjYtMi44LTEwLjgtOS4zLTEwLjgtMTYuNGMwLTIuOCAuNi01LjUgMS45LThsMTUtMzB6TTE2MCAxNjBoNDAgOHYzMiAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNzZjMC04LjggNy4yLTE2IDE2LTE2em0xMjggNDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIl1cbn07XG52YXIgZmFTb2xhclBhbmVsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvbGFyLXBhbmVsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWJhXCIsIFwiTTEyMi4yIDBDOTEuNyAwIDY1LjUgMjEuNSA1OS41IDUxLjRMOC4zIDMwNy40Qy40IDM0NyAzMC42IDM4NCA3MSAzODRIMjg4djY0SDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzUyVjM4NEg1NjljNDAuNCAwIDcwLjctMzYuOSA2Mi44LTc2LjZsLTUxLjItMjU2QzU3NC41IDIxLjUgNTQ4LjMgMCA1MTcuOCAwSDEyMi4yek0yNjAuOSA2NEgzNzkuMWwxMC40IDEwNGgtMTM5TDI2MC45IDY0ek0yMDIuMyAxNjhIMTAxLjRMMTIyLjIgNjRoOTAuNEwyMDIuMyAxNjh6TTkxLjggMjE2SDE5Ny41TDE4Ny4xIDMyMEg3MUw5MS44IDIxNnptMTUzLjkgMEgzOTQuM2wxMC40IDEwNC0xNjkuNCAwIDEwLjQtMTA0em0xOTYuOCAwSDU0OC4yTDU2OSAzMjBoLTExNkw0NDIuNSAyMTZ6bTk2LTQ4SDQzNy43TDQyNy4zIDY0aDkwLjRsMzEuNC02LjNMNTE3LjggNjRsMjAuOCAxMDR6XCJdXG59O1xudmFyIGZhTG9ja09wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jay1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmM2MxXCIsIFwiTTM1MiAxNDRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0NEM1NzYgNjQuNSA1MTEuNSAwIDQzMiAwUzI4OCA2NC41IDI4OCAxNDR2NDhINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM1MlYxNDR6XCJdXG59O1xudmFyIGZhRWxldmF0b3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWxldmF0b3InLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUxNmRcIiwgXCJNMTMyLjcgNC43bC02NCA2NGMtNC42IDQuNi01LjkgMTEuNS0zLjUgMTcuNHM4LjMgOS45IDE0LjggOS45SDIwOGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtNjQtNjRjLTYuMi02LjItMTYuNC02LjItMjIuNiAwek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiA5NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTgwIDQwMGMwLTI2LjUgMjEuNS00OCA0OC00OGg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHYxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMHptMTkyIDBjMC0yNi41IDIxLjUtNDggNDgtNDhoNjRjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzA0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDB6bTMyLTEyOGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0zNTYuNyA5MS4zYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDY0LTY0YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRTNDM4LjUgMCA0MzIgMEgzMDRjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNGw2NCA2NHpcIl1cbn07XG52YXIgZmFNb25leUJpbGxUcmFuc2ZlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLXRyYW5zZmVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTI4XCIsIFwiTTUzNSA0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDY0IDY0YzQuNSA0LjUgNyAxMC42IDcgMTdzLTIuNSAxMi41LTcgMTdsLTY0IDY0Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDIzLTIzTDM4NCAxMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTc0LjEgMEw1MzUgNDF6TTEwNSAzNzdsLTIzIDIzTDI1NiA0MDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMODEuOSA0NDhsMjMgMjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw3IDQ0MWMtNC41LTQuNS03LTEwLjYtNy0xN3MyLjUtMTIuNSA3LTE3bDY0LTY0YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpNOTYgNjRIMzM3LjljLTMuNyA3LjItNS45IDE1LjMtNS45IDI0YzAgMjguNyAyMy4zIDUyIDUyIDUybDExNy40IDBjLTQgMTcgLjYgMzUuNSAxMy44IDQ4LjhjMjAuMyAyMC4zIDUzLjIgMjAuMyA3My41IDBMNjA4IDE2OS41VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMDIuMWMzLjctNy4yIDUuOS0xNS4zIDUuOS0yNGMwLTI4LjctMjMuMy01Mi01Mi01MmwtMTE3LjQgMGM0LTE3LS42LTM1LjUtMTMuOC00OC44Yy0yMC4zLTIwLjMtNTMuMi0yMC4zLTczLjUgMEwzMiAzNDIuNVYxMjhjMC0zNS4zIDI4LjctNjQgNjQtNjR6bTY0IDY0SDk2djY0YzM1LjMgMCA2NC0yOC43IDY0LTY0ek01NDQgMzIwYy0zNS4zIDAtNjQgMjguNy02NCA2NGg2NFYzMjB6TTMyMCAzNTJhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6XCJdXG59O1xudmFyIGZhTW9uZXlCaWxsVHJlbmRVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLXRyZW5kLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTI5XCIsIFwiTTQ3MC43IDkuNGMzIDMuMSA1LjMgNi42IDYuOSAxMC4zczIuNCA3LjggMi40IDEyLjJsMCAuMXYwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEwOS4zTDMxMC42IDIxNC42Yy0xMS44IDExLjgtMzAuOCAxMi42LTQzLjUgMS43TDE3NiAxMzguMSA4NC44IDIxNi4zYy0xMy40IDExLjUtMzMuNiA5LjktNDUuMS0zLjVzLTkuOS0zMy42IDMuNS00NS4xbDExMi05NmMxMi0xMC4zIDI5LjctMTAuMyA0MS43IDBsODkuNSA3Ni43TDM3MC43IDY0SDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg5NiAwYzguOCAwIDE2LjggMy42IDIyLjYgOS4zbC4xIC4xek0wIDMwNGMwLTI2LjUgMjEuNS00OCA0OC00OEg0NjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYzMDR6TTQ4IDQxNnY0OEg5NmMwLTI2LjUtMjEuNS00OC00OC00OHpNOTYgMzA0SDQ4djQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek00NjQgNDE2Yy0yNi41IDAtNDggMjEuNS00OCA0OGg0OFY0MTZ6TTQxNiAzMDRjMCAyNi41IDIxLjUgNDggNDggNDhWMzA0SDQxNnptLTk2IDgwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIl1cbn07XG52YXIgZmFIb3VzZUZsb29kV2F0ZXJDaXJjbGVBcnJvd1JpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWZsb29kLXdhdGVyLWNpcmNsZS1hcnJvdy1yaWdodCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUwZlwiLCBcIk0yODggMTQ0QTE0NCAxNDQgMCAxIDAgMCAxNDRhMTQ0IDE0NCAwIDEgMCAyODggMHpNMTQwLjcgNzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGw1NiA1NmM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNTYgNTZjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMMTY5LjQgMTYwSDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDg5LjRMMTQwLjcgOTkuM2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6TTMyMCAxNDRjMCA1Ny4zLTI3LjQgMTA4LjItNjkuOCAxNDAuM2MxMS44LTMuNiAyMy05LjQgMzMtMTYuMmMyMi4xLTE1LjUgNTEuNi0xNS41IDczLjcgMGMxOC40IDEyLjcgMzkuNiAyMC4zIDU5LjIgMjAuM2MxOSAwIDQxLjItNy45IDU5LjItMjAuM2MyMy44LTE2LjcgNTUuOC0xNS40IDc4LjEgMy40YzIuMSAxLjcgNC4yIDMuMyA2LjUgNC45bC0uMy04NC40SDU3NmMxMy45IDAgMjYuMS04LjkgMzAuNC0yMi4xcy0uNC0yNy42LTExLjYtMzUuOGwtMTc2LTEyOEM0MDcuNi0yIDM5Mi40LTIgMzgxLjIgNi4xTDMwMSA2NC40YzEyLjEgMjMuOSAxOSA1MC45IDE5IDc5LjZ6bTE4LjUgMTY1LjljLTExLjEtNy45LTI1LjktNy45LTM3IDBDMjc5IDMyNS40IDI1MS41IDMzNiAyMjQgMzM2Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWwwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTU4LjUgMzg5LjcgMTkxIDQwMCAyMjQgNDAwYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjYgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjUtMjcuMy0xMC4xLTM5LjItMS43bDAgMEM0NzEuNCAzMjUuMiA0NDIuOSAzMzYgNDE2IDMzNmMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xem0wIDExMmMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNzkgNDM3LjQgMjUxLjUgNDQ4IDIyNCA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxNTguNSA1MDEuNyAxOTEgNTEyIDIyNCA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNiAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQ3MS40IDQzNy4yIDQ0Mi45IDQ0OCA0MTYgNDQ4Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjF6XCJdXG59O1xudmFyIGZhU3F1YXJlUG9sbEhvcml6b250YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLXBvbGwtaG9yaXpvbnRhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wicG9sbC1oXCJdLCBcImY2ODJcIiwgXCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTI1NiAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnptNjQgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE5MiAwek0xOTIgMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJdXG59O1xudmFyIGZhUG9sbEggPSBmYVNxdWFyZVBvbGxIb3Jpem9udGFsO1xudmFyIGZhQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODMwOCwgMTI4MzA5LCAxMjg5OTIsIDEyODk5MywgMTI4OTk0LCAxMjg5OTUsIDEyODk5NiwgOTY3OSwgOTg5OCwgOTg5OSwgMTEwNDQsIDYxNzA4LCA2MTkxNV0sIFwiZjExMVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpcIl1cbn07XG52YXIgZmFCYWNrd2FyZEZhc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFja3dhcmQtZmFzdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzkxOTgsIFwiZmFzdC1iYWNrd2FyZFwiXSwgXCJmMDQ5XCIsIFwiTTQ5My42IDQ0NWMtMTEuMiA1LjMtMjQuNSAzLjYtMzQuMS00LjRMMjg4IDI5Ny43VjQxNmMwIDEyLjQtNy4yIDIzLjctMTguNCAyOXMtMjQuNSAzLjYtMzQuMS00LjRMNjQgMjk3LjdWNDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2QzAgNzguMyAxNC4zIDY0IDMyIDY0czMyIDE0LjMgMzIgMzJWMjE0LjNMMjM1LjUgNzEuNGM5LjUtNy45IDIyLjgtOS43IDM0LjEtNC40UzI4OCA4My42IDI4OCA5NlYyMTQuM0w0NTkuNSA3MS40YzkuNS03LjkgMjIuOC05LjcgMzQuMS00LjRTNTEyIDgzLjYgNTEyIDk2VjQxNmMwIDEyLjQtNy4yIDIzLjctMTguNCAyOXpcIl1cbn07XG52YXIgZmFGYXN0QmFja3dhcmQgPSBmYUJhY2t3YXJkRmFzdDtcbnZhciBmYVJlY3ljbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVjeWNsZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzk4NDIsIDk4NTAsIDk4NTFdLCBcImYxYjhcIiwgXCJNMTc0LjcgNDUuMUMxOTIuMiAxNyAyMjMgMCAyNTYgMHM2My44IDE3IDgxLjMgNDUuMWwzOC42IDYxLjcgMjctMTUuNmM4LjQtNC45IDE4LjktNC4yIDI2LjYgMS43czExLjEgMTUuOSA4LjYgMjUuM2wtMjMuNCA4Ny40Yy0zLjQgMTIuOC0xNi42IDIwLjQtMjkuNCAxN2wtODcuNC0yMy40Yy05LjQtMi41LTE2LjMtMTAuNC0xNy42LTIwczMuNC0xOS4xIDExLjgtMjMuOWwyOC40LTE2LjRMMjgzIDc5Yy01LjgtOS4zLTE2LTE1LTI3LTE1cy0yMS4yIDUuNy0yNyAxNWwtMTcuNSAyOGMtOS4yIDE0LjgtMjguNiAxOS41LTQzLjYgMTAuNWMtMTUuMy05LjItMjAuMi0yOS4yLTEwLjctNDQuNGwxNy41LTI4ek00MjkuNSAyNTEuOWMxNS05IDM0LjQtNC4zIDQzLjYgMTAuNWwyNC40IDM5LjFjOS40IDE1LjEgMTQuNCAzMi40IDE0LjYgNTAuMmMuMyA1My4xLTQyLjcgOTYuNC05NS44IDk2LjRMMzIwIDQ0OHYzMmMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNjQtNjRjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMnMxNC44IDEyLjUgMTQuOCAyMi4ydjMybDk2LjIgMGMxNy42IDAgMzEuOS0xNC40IDMxLjgtMzJjMC01LjktMS43LTExLjctNC44LTE2LjdsLTI0LjQtMzkuMWMtOS41LTE1LjItNC43LTM1LjIgMTAuNy00NC40em0tMzY0LjYtMzFMMzYgMjA0LjJjLTguNC00LjktMTMuMS0xNC4zLTExLjgtMjMuOXM4LjItMTcuNSAxNy42LTIwbDg3LjQtMjMuNGMxMi44LTMuNCAyNiA0LjIgMjkuNCAxN0wxODIgMjQxLjJjMi41IDkuNC0uOSAxOS4zLTguNiAyNS4zcy0xOC4yIDYuNi0yNi42IDEuN2wtMjYuNS0xNS4zTDY4LjggMzM1LjNjLTMuMSA1LTQuOCAxMC44LTQuOCAxNi43Yy0uMSAxNy42IDE0LjIgMzIgMzEuOCAzMmwzMi4yIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyLjIgMEM0Mi43IDQ0OC0uMyA0MDQuOCAwIDM1MS42Yy4xLTE3LjggNS4xLTM1LjEgMTQuNi01MC4ybDUwLjMtODAuNXpcIl1cbn07XG52YXIgZmFVc2VyQXN0cm9uYXV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItYXN0cm9uYXV0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNGZiXCIsIFwiTTM3MC43IDk2LjFDMzQ2LjEgMzkuNSAyODkuNyAwIDIyNCAwUzEwMS45IDM5LjUgNzcuMyA5Ni4xQzYwLjkgOTcuNSA0OCAxMTEuMiA0OCAxMjh2NjRjMCAxNi44IDEyLjkgMzAuNSAyOS4zIDMxLjlDMTAxLjkgMjgwLjUgMTU4LjMgMzIwIDIyNCAzMjBzMTIyLjEtMzkuNSAxNDYuNy05Ni4xYzE2LjQtMS40IDI5LjMtMTUuMSAyOS4zLTMxLjlWMTI4YzAtMTYuOC0xMi45LTMwLjUtMjkuMy0zMS45ek0zMzYgMTQ0djE2YzAgNTMtNDMgOTYtOTYgOTZIMjA4Yy01MyAwLTk2LTQzLTk2LTk2VjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OEgyODhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE4OS4zIDE2Mi43bC02LTIxLjJjLS45LTMuMy0zLjktNS41LTcuMy01LjVzLTYuNCAyLjItNy4zIDUuNWwtNiAyMS4yLTIxLjIgNmMtMy4zIC45LTUuNSAzLjktNS41IDcuM3MyLjIgNi40IDUuNSA3LjNsMjEuMiA2IDYgMjEuMmMuOSAzLjMgMy45IDUuNSA3LjMgNS41czYuNC0yLjIgNy4zLTUuNWw2LTIxLjIgMjEuMi02YzMuMy0uOSA1LjUtMy45IDUuNS03LjNzLTIuMi02LjQtNS41LTcuM2wtMjEuMi02ek0xMTIuNyAzMTYuNUM0Ni43IDM0Mi42IDAgNDA3IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkgxMjhWNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMySDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGw5OC4zIDBjMTYuNCAwIDI5LjctMTMuMyAyOS43LTI5LjdjMC03NS4zLTQ2LjctMTM5LjctMTEyLjctMTY1LjhDMzAzLjkgMzM4LjggMjY1LjUgMzUyIDIyNCAzNTJzLTc5LjktMTMuMi0xMTEuMy0zNS41ek0xNzYgNDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2NDhoMzJWNDY0YzAtOC44LTcuMi0xNi0xNi0xNnptOTYgMzJhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwiXVxufTtcbnZhciBmYVBsYW5lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNjlcIiwgXCJNNTE0LjMgMTkyYzM0LjIgMCA5My43IDI5IDkzLjcgNjRjMCAzNi01OS41IDY0LTkzLjcgNjRINDQwLjZMNjMwLjggNDY5LjFjMTAuNCA4LjIgMTIuMyAyMy4zIDQuMSAzMy43cy0yMy4zIDEyLjMtMzMuNyA0LjFMOS4yIDQyLjlDLTEuMiAzNC43LTMuMSAxOS42IDUuMSA5LjJTMjguNC0zLjEgMzguOCA1LjFMMjM4LjEgMTYxLjMgMTk3LjggMjAuNEMxOTQuOSAxMC4yIDIwMi42IDAgMjEzLjIgMGg1Ni4yYzExLjUgMCAyMi4xIDYuMiAyNy44IDE2LjFMMzk3LjcgMTkybDExNi42IDB6TTQxLjUgMTI4LjdsMzIxIDI1Mi45TDI5Ny4yIDQ5NS45Yy01LjcgMTAtMTYuMyAxNi4xLTI3LjggMTYuMWwtNTYuMiAwYy0xMC42IDAtMTguMy0xMC4yLTE1LjQtMjAuNGw0OS0xNzEuNkgxNDRsLTQzLjIgNTcuNmMtMyA0LTcuOCA2LjQtMTIuOCA2LjRINDZjLTcuOCAwLTE0LTYuMy0xNC0xNGMwLTEuMyAuMi0yLjYgLjUtMy45TDY0IDI1NiAzMi41IDE0NS45Yy0uNC0xLjMtLjUtMi42LS41LTMuOWMwLTYuMiA0LTExLjQgOS41LTEzLjN6XCJdXG59O1xudmFyIGZhVHJhZGVtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYWRlbWFyaycsXG4gIGljb246IFs2NDAsIDUxMiwgWzg0ODJdLCBcImYyNWNcIiwgXCJNMzQ1LjYgMTA4LjhjLTguMy0xMS0yMi43LTE1LjUtMzUuNy0xMS4yUzI4OCAxMTQuMiAyODggMTI4VjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIyNGw4Ni40IDExNS4yYzYgOC4xIDE1LjUgMTIuOCAyNS42IDEyLjhzMTkuNi00LjcgMjUuNi0xMi44TDU3NiAyMjRWMzg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTI4YzAtMTMuOC04LjgtMjYtMjEuOS0zMC40cy0yNy41IC4xLTM1LjcgMTEuMkw0NjQgMjY2LjcgMzQ1LjYgMTA4Ljh6TTAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDk2VjM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgMTEwLjMgMCAxMjh6XCJdXG59O1xudmFyIGZhQmFza2V0YmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXNrZXRiYWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTM2LCBcImJhc2tldGJhbGwtYmFsbFwiXSwgXCJmNDM0XCIsIFwiTTg2LjYgNjRsODUuMiA4NS4yQzE5NC41IDEyMS43IDIwOCA4Ni40IDIwOCA0OGMwLTE0LjctMi0yOC45LTUuNy00Mi40QzE1OC42IDE1IDExOSAzNS41IDg2LjYgNjR6TTY0IDg2LjZDMzUuNSAxMTkgMTUgMTU4LjYgNS42IDIwMi4zQzE5LjEgMjA2IDMzLjMgMjA4IDQ4IDIwOGMzOC40IDAgNzMuNy0xMy41IDEwMS4zLTM2LjFMNjQgODYuNnpNMjU2IDBjLTcuMyAwLTE0LjYgLjMtMjEuOCAuOUMyMzggMTYgMjQwIDMxLjggMjQwIDQ4YzAgNDcuMy0xNy4xIDkwLjUtNDUuNCAxMjRMMjU2IDIzMy40IDQyNS40IDY0QzM4MC4yIDI0LjIgMzIwLjkgMCAyNTYgMHpNNDggMjQwYy0xNi4yIDAtMzItMi00Ny4xLTUuOEMuMyAyNDEuNCAwIDI0OC43IDAgMjU2YzAgNjQuOSAyNC4yIDEyNC4yIDY0IDE2OS40TDIzMy40IDI1NiAxNzIgMTk0LjZDMTM4LjUgMjIyLjkgOTUuMyAyNDAgNDggMjQwem00NjMuMSAzNy44Yy42LTcuMiAuOS0xNC41IC45LTIxLjhjMC02NC45LTI0LjItMTI0LjItNjQtMTY5LjRMMjc4LjYgMjU2IDM0MCAzMTcuNGMzMy40LTI4LjMgNzYuNy00NS40IDEyNC00NS40YzE2LjIgMCAzMiAyIDQ3LjEgNS44em0tNC43IDMxLjlDNDkyLjkgMzA2IDQ3OC43IDMwNCA0NjQgMzA0Yy0zOC40IDAtNzMuNyAxMy41LTEwMS4zIDM2LjFMNDQ4IDQyNS40YzI4LjUtMzIuMyA0OS4xLTcxLjkgNTguNC0xMTUuN3pNMzQwLjEgMzYyLjdDMzE3LjUgMzkwLjMgMzA0IDQyNS42IDMwNCA0NjRjMCAxNC43IDIgMjguOSA1LjcgNDIuNEMzNTMuNCA0OTcgMzkzIDQ3Ni41IDQyNS40IDQ0OGwtODUuMi04NS4yek0zMTcuNCAzNDBMMjU2IDI3OC42IDg2LjYgNDQ4YzQ1LjEgMzkuOCAxMDQuNCA2NCAxNjkuNCA2NGM3LjMgMCAxNC42LS4zIDIxLjgtLjlDMjc0IDQ5NiAyNzIgNDgwLjIgMjcyIDQ2NGMwLTQ3LjMgMTcuMS05MC41IDQ1LjQtMTI0elwiXVxufTtcbnZhciBmYUJhc2tldGJhbGxCYWxsID0gZmFCYXNrZXRiYWxsO1xudmFyIGZhU2F0ZWxsaXRlRGlzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzYXRlbGxpdGUtZGlzaCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODIyNV0sIFwiZjdjMFwiLCBcIk0xOTIgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJDMzgzLjEgMCA1MTIgMTI4LjkgNTEyIDI4OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkM0NDggMTY0LjMgMzQ3LjcgNjQgMjI0IDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNjAuNiAyMjAuNkwxNjQuNyAzMjQuN2wyOC40LTI4LjRjLS43LTIuNi0xLjEtNS40LTEuMS04LjNjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmMtMi45IDAtNS42LS40LTguMy0xLjFsLTI4LjQgMjguNEwyOTEuNCA0NTEuNGMxNC41IDE0LjUgMTEuOCAzOC44LTcuMyA0Ni4zQzI2MC41IDUwNi45IDIzNC45IDUxMiAyMDggNTEyQzkzLjEgNTEyIDAgNDE4LjkgMCAzMDRjMC0yNi45IDUuMS01Mi41IDE0LjQtNzYuMWM3LjUtMTkgMzEuOC0yMS44IDQ2LjMtNy4zek0yMjQgOTZjMTA2IDAgMTkyIDg2IDE5MiAxOTJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhQ2lyY2xlVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE0NjcsIFwiYXJyb3ctYWx0LWNpcmNsZS11cFwiXSwgXCJmMzViXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xMzUuMSAyMTcuNGwxMDcuMS05OS45YzMuOC0zLjUgOC43LTUuNSAxMy44LTUuNXMxMC4xIDIgMTMuOCA1LjVsMTA3LjEgOTkuOWM0LjUgNC4yIDcuMSAxMC4xIDcuMSAxNi4zYzAgMTIuMy0xMCAyMi4zLTIyLjMgMjIuM0gzMDR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjQwYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNTZIMTUwLjNDMTM4IDI1NiAxMjggMjQ2IDEyOCAyMzMuN2MwLTYuMiAyLjYtMTIuMSA3LjEtMTYuM3pcIl1cbn07XG52YXIgZmFBcnJvd0FsdENpcmNsZVVwID0gZmFDaXJjbGVVcDtcbnZhciBmYU1vYmlsZVNjcmVlbkJ1dHRvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb2JpbGUtc2NyZWVuLWJ1dHRvbicsXG4gIGljb246IFszODQsIDUxMiwgW1wibW9iaWxlLWFsdFwiXSwgXCJmM2NkXCIsIFwiTTE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBIMzA0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTIyNCA0NDhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzA0IDY0SDgwVjM4NEgzMDRWNjR6XCJdXG59O1xudmFyIGZhTW9iaWxlQWx0ID0gZmFNb2JpbGVTY3JlZW5CdXR0b247XG52YXIgZmFWb2x1bWVIaWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvbHVtZS1oaWdoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4MjY2LCBcInZvbHVtZS11cFwiXSwgXCJmMDI4XCIsIFwiTTUzMy42IDMyLjVDNTk4LjUgODUuMyA2NDAgMTY1LjggNjQwIDI1NnMtNDEuNSAxNzAuOC0xMDYuNCAyMjMuNWMtMTAuMyA4LjQtMjUuNCA2LjgtMzMuOC0zLjVzLTYuOC0yNS40IDMuNS0zMy44QzU1Ny41IDM5OC4yIDU5MiAzMzEuMiA1OTIgMjU2cy0zNC41LTE0Mi4yLTg4LjctMTg2LjNjLTEwLjMtOC40LTExLjgtMjMuNS0zLjUtMzMuOHMyMy41LTExLjggMzMuOC0zLjV6TTQ3My4xIDEwN2M0My4yIDM1LjIgNzAuOSA4OC45IDcwLjkgMTQ5cy0yNy43IDExMy44LTcwLjkgMTQ5Yy0xMC4zIDguNC0yNS40IDYuOC0zMy44LTMuNXMtNi44LTI1LjQgMy41LTMzLjhDNDc1LjMgMzQxLjMgNDk2IDMwMS4xIDQ5NiAyNTZzLTIwLjctODUuMy01My4yLTExMS44Yy0xMC4zLTguNC0xMS44LTIzLjUtMy41LTMzLjhzMjMuNS0xMS44IDMzLjgtMy41em0tNjAuNSA3NC41QzQzNC4xIDE5OS4xIDQ0OCAyMjUuOSA0NDggMjU2cy0xMy45IDU2LjktMzUuNCA3NC41Yy0xMC4zIDguNC0yNS40IDYuOC0zMy44LTMuNXMtNi44LTI1LjQgMy41LTMzLjhDMzkzLjEgMjg0LjQgNDAwIDI3MSA0MDAgMjU2cy02LjktMjguNC0xNy43LTM3LjNjLTEwLjMtOC40LTExLjgtMjMuNS0zLjUtMzMuOHMyMy41LTExLjggMzMuOC0zLjV6TTMwMS4xIDM0LjhDMzEyLjYgNDAgMzIwIDUxLjQgMzIwIDY0VjQ0OGMwIDEyLjYtNy40IDI0LTE4LjkgMjkuMnMtMjUgMy4xLTM0LjQtNS4zTDEzMS44IDM1Mkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDY3LjhMMjY2LjcgNDAuMWM5LjQtOC40IDIyLjktMTAuNCAzNC40LTUuM3pcIl1cbn07XG52YXIgZmFWb2x1bWVVcCA9IGZhVm9sdW1lSGlnaDtcbnZhciBmYVVzZXJzUmF5cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2Vycy1yYXlzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTkzXCIsIFwiTTQxIDdDMzEuNi0yLjMgMTYuNC0yLjMgNyA3Uy0yLjMgMzEuNiA3IDQxbDcyIDcyYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw0MSA3ek01OTkgN0w1MjcgNzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwek03IDUwNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDcgNDcxYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXptNTkyIDBjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC03Mi03MmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw3MiA3MnpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMjEyLjEgMzM2Yy0yLjcgNy41LTQuMSAxNS42LTQuMSAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg0MDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC04LjQtMS40LTE2LjUtNC4xLTI0Yy0uNS0xLjQtMS0yLjctMS42LTRjLTkuNC0yMi4zLTI5LjgtMzguOS01NC4zLTQzYy0zLjktLjctNy45LTEtMTItMUgyODBjLTQuMSAwLTguMSAuMy0xMiAxYy0uOCAuMS0xLjcgLjMtMi41IC41Yy0yNC45IDUuMS00NS4xIDIzLTUzLjQgNDYuNXpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjN6bTM2OCA4MGMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZoNTYuMXpNNDY0IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJdXG59O1xudmFyIGZhV2FsbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhbGxldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU1NVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0SDgwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2SDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg2NHpNNDE2IDI3MmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhQ2xpcGJvYXJkQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xpcGJvYXJkLWNoZWNrJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDZjXCIsIFwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjgyLjVDMjY5LjQgMjYuNyAyMzMuOCAwIDE5MiAwem0wIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzA1IDI3M0wxNzcgNDAxYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEw3OSAzMzdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0N0wyNzEgMjM5YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIl1cbn07XG52YXIgZmFGaWxlQXVkaW8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1hdWRpbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjN1wiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6bTIgMjI2LjNjMzcuMSAyMi40IDYyIDYzLjEgNjIgMTA5LjdzLTI0LjkgODcuMy02MiAxMDkuN2MtNy42IDQuNi0xNy40IDIuMS0yMi01LjRzLTIuMS0xNy40IDUuNC0yMkMyNjkuNCA0MDEuNSAyODggMzcwLjkgMjg4IDMzNnMtMTguNi02NS41LTQ2LjUtODIuM2MtNy42LTQuNi0xMC0xNC40LTUuNC0yMnMxNC40LTEwIDIyLTUuNHptLTkxLjkgMzAuOWM2IDIuNSA5LjkgOC4zIDkuOSAxNC44VjQwMGMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVMMTEzLjQgMzc2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMzEyYzAtOC44IDcuMi0xNiAxNi0xNmgzMy40bDM1LjMtMzUuM2M0LjYtNC42IDExLjUtNS45IDE3LjQtMy41em01MSAzNC45YzYuNi01LjkgMTYuNy01LjMgMjIuNiAxLjNDMjQ5LjggMzA0LjYgMjU2IDMxOS42IDI1NiAzMzZzLTYuMiAzMS40LTE2LjMgNDIuN2MtNS45IDYuNi0xNiA3LjEtMjIuNiAxLjNzLTcuMS0xNi0xLjMtMjIuNmM1LjEtNS43IDguMS0xMy4xIDguMS0yMS4zcy0zLjEtMTUuNy04LjEtMjEuM2MtNS45LTYuNi01LjMtMTYuNyAxLjMtMjIuNnpcIl1cbn07XG52YXIgZmFCdXJnZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVyZ2VyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJoYW1idXJnZXJcIl0sIFwiZjgwNVwiLCBcIk02MS4xIDIyNEM0NSAyMjQgMzIgMjExIDMyIDE5NC45YzAtMS45IC4yLTMuNyAuNi01LjZDMzcuOSAxNjguMyA3OC44IDMyIDI1NiAzMnMyMTguMSAxMzYuMyAyMjMuNCAxNTcuM2MuNSAxLjkgLjYgMy43IC42IDUuNmMwIDE2LjEtMTMgMjkuMS0yOS4xIDI5LjFINjEuMXpNMTQ0IDEyOGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0yNDAgMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyek0yNzIgOTZhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpNMTYgMzA0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQ0OGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEg2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6bTE2IDk2YzAtOC44IDcuMi0xNiAxNi0xNkg0NjRjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFY0MDB6XCJdXG59O1xudmFyIGZhSGFtYnVyZ2VyID0gZmFCdXJnZXI7XG52YXIgZmFXcmVuY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd3JlbmNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4Mjk1XSwgXCJmMGFkXCIsIFwiTTM1MiAzMjBjODguNCAwIDE2MC03MS42IDE2MC0xNjBjMC0xNS4zLTIuMi0zMC4xLTYuMi00NC4yYy0zLjEtMTAuOC0xNi40LTEzLjItMjQuMy01LjNsLTc2LjggNzYuOGMtMyAzLTcuMSA0LjctMTEuMyA0LjdIMzM2Yy04LjggMC0xNi03LjItMTYtMTZWMTE4LjZjMC00LjIgMS43LTguMyA0LjctMTEuM2w3Ni44LTc2LjhjNy45LTcuOSA1LjQtMjEuMi01LjMtMjQuM0MzODIuMSAyLjIgMzY3LjMgMCAzNTIgMEMyNjMuNiAwIDE5MiA3MS42IDE5MiAxNjBjMCAxOS4xIDMuNCAzNy41IDkuNSA1NC41TDE5LjkgMzk2LjFDNy4yIDQwOC44IDAgNDI2LjEgMCA0NDQuMUMwIDQ4MS42IDMwLjQgNTEyIDY3LjkgNTEyYzE4IDAgMzUuMy03LjIgNDgtMTkuOUwyOTcuNSAzMTAuNWMxNyA2LjIgMzUuNCA5LjUgNTQuNSA5LjV6TTgwIDQwOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJdXG59O1xudmFyIGZhQnVncyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWdzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGQwXCIsIFwiTTE2NC41IDEwNy40bDMzLjQtNzMuNWM1LjUtMTIuMSAuMS0yNi4zLTExLjktMzEuOHMtMjYuMy0uMS0zMS44IDExLjlMMTI4IDcxLjcgMTAxLjkgMTQuMUM5Ni40IDIgODIuMS0zLjMgNzAuMSAyLjFTNTIuNyAyMS45IDU4LjEgMzMuOWwzMy40IDczLjVjLTEwLjIgNy4xLTE4LjIgMTctMjIuOSAyOC42aC0xN2wtNC4xLTIwLjdjLTIuNi0xMy0xNS4yLTIxLjQtMjguMi0xOC44Uy0yLjEgMTExLjcgLjUgMTI0LjdsOCA0MEMxMC43IDE3NS45IDIwLjYgMTg0IDMyIDE4NEg2NHYyMy4zbC0zNy44IDkuNWMtOS41IDIuNC0xNi42IDEwLjItMTcuOSAxOS45bC04IDU2Yy0xLjkgMTMuMSA3LjIgMjUuMyAyMC40IDI3LjJzMjUuMy03LjIgMjcuMi0yMC40bDUuNy00MCAxOC40LTQuNkM4Mi43IDI3NC42IDEwMy44IDI4OCAxMjggMjg4czQ1LjMtMTMuNCA1Ni4xLTMzLjJsMTguNCA0LjYgNS43IDQwYzEuOSAxMy4xIDE0IDIyLjIgMjcuMiAyMC40czIyLjItMTQgMjAuNC0yNy4ybC04LTU2Yy0xLjQtOS43LTguNS0xNy41LTE3LjktMTkuOUwxOTIgMjA3LjNWMTg0aDMyYzExLjQgMCAyMS4zLTguMSAyMy41LTE5LjNsOC00MGMyLjYtMTMtNS44LTI1LjYtMTguOC0yOC4ycy0yNS42IDUuOC0yOC4yIDE4LjhMMjA0LjMgMTM2aC0xN2MtNC43LTExLjYtMTIuNy0yMS41LTIyLjktMjguNnpNNDk2IDI4Ni41bDY1LjYtNDdjMTAuOC03LjcgMTMuMy0yMi43IDUuNi0zMy41cy0yMi43LTEzLjMtMzMuNS01LjZsLTUxLjQgMzYuOCA2LjEtNjIuOWMxLjMtMTMuMi04LjQtMjQuOS0yMS42LTI2LjJzLTI0LjkgOC40LTI2LjIgMjEuNkw0MzIuOCAyNTBjLTEyLjMgMS0yNC4yIDUuNi0zNC4xIDEzLjNMMzg0IDI1NC44bDYuOC0yMGM0LjItMTIuNi0yLjUtMjYuMi0xNS0zMC40cy0yNi4yIDIuNS0zMC40IDE1bC0xMy4xIDM4LjZjLTMuNyAxMC44IC44IDIyLjggMTAuNyAyOC41bDI3LjcgMTZMMzU5IDMyMi43IDMyMS41IDMxMmMtOS40LTIuNy0xOS41IC42LTI1LjUgOC4zbC0zNC45IDQ0LjVjLTguMiAxMC40LTYuNCAyNS41IDQuMSAzMy43czI1LjUgNi40IDMzLjctNC4xbDI1LTMxLjggMTguMiA1LjJjLS41IDIyLjYgMTEgNDQuNyAzMiA1Ni44czQ1LjkgMTEgNjUuMi0uN2wxMy42IDEzLjItMTUuMSAzNy41Yy00LjkgMTIuMyAxIDI2LjMgMTMuMyAzMS4yczI2LjMtMSAzMS4yLTEzLjNMNTAzLjUgNDQwYzMuNi05LjEgMS40LTE5LjQtNS42LTI2LjJsLTI4LTI3LjEgMTEuNi0yMC4xIDI3LjcgMTZjOS45IDUuNyAyMi41IDMuNyAzMC00LjlMNTY2LjIgMzQ3YzguNy0xMCA3LjgtMjUuMS0yLjItMzMuOXMtMjUuMS03LjgtMzMuOSAyLjJsLTEzLjkgMTUuOS0xNC43LTguNWMxLjctMTIuNC0uMi0yNS01LjUtMzYuMnpcIl1cbn07XG52YXIgZmFSdXBlZVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVwZWUtc2lnbicsXG4gIGljb246IFs0NDgsIDUxMiwgWzgzNjAsIFwicnVwZWVcIl0sIFwiZjE1NlwiLCBcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyaDgwYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0YzAgNTguOC0zNS4yIDEwOS4zLTg1LjcgMTMxLjdsNTEuNCAxMjguNGM2LjYgMTYuNC0xLjQgMzUtMTcuOCA0MS42cy0zNS0xLjQtNDEuNi0xNy44TDEwNi4zIDMyMEg2NFY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjg4IDY0ek02NCAyNTZoNDhjNDQuMiAwIDgwLTM1LjggODAtODBzLTM1LjgtODAtODAtODBINjRWMjU2em0yNTYuNSAxNi40Yy0uOSA2IDAgOC43IC40IDkuOGMuNCAxLjEgMS40IDIuNiA0LjIgNC45YzcuMiA1LjcgMTguNyAxMCAzNy45IDE2LjhsMS4zIC41YzE2IDUuNiAzOC43IDEzLjYgNTUuNyAyOC4xYzkuNSA4LjEgMTcuOSAxOC42IDIzLjEgMzIuM2M1LjEgMTMuNyA2LjEgMjguNSAzLjggNDRjLTQuMiAyOC4xLTIwLjUgNDkuMy00My44IDYwLjljLTIyLjEgMTEtNDguMSAxMi41LTczLjIgOGwtLjIgMCAwIDBjLTkuMy0xLjgtMjAuNS01LjctMjkuMy05Yy02LTIuMy0xMi42LTQuOS0xNy43LTYuOWwwIDBjLTIuNS0xLTQuNi0xLjgtNi4zLTIuNWMtMTYuNS02LjQtMjQuNi0yNS0xOC4yLTQxLjRzMjQuOS0yNC42IDQxLjQtMTguMmMyLjYgMSA1LjIgMiA3LjkgMy4xbDAgMGM0LjggMS45IDkuOCAzLjkgMTUuNCA2YzguOCAzLjMgMTUuMyA1LjQgMTguNyA2YzE1LjcgMi44IDI2LjcgLjggMzIuOS0yLjNjNS0yLjUgOC02IDkuMS0xM2MxLTYuOSAuMi0xMC41LS41LTEyLjNjLS42LTEuNy0xLjgtMy42LTQuNS01LjljLTYuOS01LjgtMTguMi0xMC40LTM2LjktMTdsLTMtMS4xYy0xNS41LTUuNC0zNy0xMy01My4zLTI1LjljLTkuNS03LjUtMTguMy0xNy42LTIzLjctMzFjLTUuNS0xMy40LTYuNi0yOC00LjQtNDMuMmM4LjQtNTcuMSA2Ny03OCAxMTYuOS02OC45YzYuOSAxLjMgMjcuMyA1LjggMzUuNCA4LjRjMTYuOSA1LjIgMjYuMyAyMy4yIDIxLjEgNDAuMXMtMjMuMiAyNi4zLTQwLjEgMjEuMWMtNC43LTEuNC0yMi4zLTUuNS0yNy45LTYuNWMtMTQuNi0yLjctMjUuOC0uNC0zMi42IDMuMmMtNi4zIDMuMy04LjkgNy42LTkuNSAxMnpcIl1cbn07XG52YXIgZmFSdXBlZSA9IGZhUnVwZWVTaWduO1xudmFyIGZhRmlsZUltYWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtaW1hZ2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjg0NDNdLCBcImYxYzVcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek02NCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTUyIDMyYzUuMyAwIDEwLjIgMi42IDEzLjIgNi45bDg4IDEyOGMzLjQgNC45IDMuNyAxMS4zIDEgMTYuNXMtOC4yIDguNi0xNC4yIDguNkgyMTYgMTc2IDEyOCA4MGMtNS44IDAtMTEuMS0zLjEtMTMuOS04LjFzLTIuOC0xMS4yIC4yLTE2LjFsNDgtODBjMi45LTQuOCA4LjEtNy44IDEzLjctNy44czEwLjggMi45IDEzLjcgNy44bDEyLjggMjEuNCA0OC4zLTcwLjJjMy00LjMgNy45LTYuOSAxMy4yLTYuOXpcIl1cbn07XG52YXIgZmFDaXJjbGVRdWVzdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtcXVlc3Rpb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MjEwOCwgXCJxdWVzdGlvbi1jaXJjbGVcIl0sIFwiZjA1OVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY5LjggMTY1LjNjNy45LTIyLjMgMjkuMS0zNy4zIDUyLjgtMzcuM2g1OC4zYzM0LjkgMCA2My4xIDI4LjMgNjMuMSA2My4xYzAgMjIuNi0xMi4xIDQzLjUtMzEuNyA1NC44TDI4MCAyNjQuNGMtLjIgMTMtMTAuOSAyMy42LTI0IDIzLjZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjI1MC41YzAtOC42IDQuNi0xNi41IDEyLjEtMjAuOGw0NC4zLTI1LjRjNC43LTIuNyA3LjYtNy43IDcuNi0xMy4xYzAtOC40LTYuOC0xNS4xLTE1LjEtMTUuMUgyMjIuNmMtMy40IDAtNi40IDIuMS03LjUgNS4zbC0uNCAxLjJjLTQuNCAxMi41LTE4LjIgMTktMzAuNiAxNC42cy0xOS0xOC4yLTE0LjYtMzAuNmwuNC0xLjJ6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIl1cbn07XG52YXIgZmFRdWVzdGlvbkNpcmNsZSA9IGZhQ2lyY2xlUXVlc3Rpb247XG52YXIgZmFQbGFuZURlcGFydHVyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS1kZXBhcnR1cmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg3NDddLCBcImY1YjBcIiwgXCJNMzgxIDExNC45TDE4Ni4xIDQxLjhjLTE2LjctNi4yLTM1LjItNS4zLTUxLjEgMi43TDg5LjEgNjcuNEM3OCA3MyA3Ny4yIDg4LjUgODcuNiA5NS4ybDE0Ni45IDk0LjVMMTM2IDI0MCA3Ny44IDIxNC4xYy04LjctMy45LTE4LjgtMy43LTI3LjMgLjZMMTguMyAyMzAuOGMtOS4zIDQuNy0xMS44IDE2LjgtNSAyNC43bDczLjEgODUuM2M2LjEgNy4xIDE1IDExLjIgMjQuMyAxMS4ySDI0OC40YzUgMCA5LjktMS4yIDE0LjMtMy40TDUzNS42IDIxMi4yYzQ2LjUtMjMuMyA4Mi41LTYzLjMgMTAwLjgtMTEyQzY0NS45IDc1IDYyNy4yIDQ4IDYwMC4yIDQ4SDU0Mi44Yy0yMC4yIDAtNDAuMiA0LjgtNTguMiAxNEwzODEgMTE0Ljl6TTAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJdXG59O1xudmFyIGZhSGFuZHNoYWtlU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDYwXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTEzNS0xMDUuOGMtMS4xLTExLjMtNi4zLTIyLjMtMTUuMy0zMC43bC0xMzQuMi0xMjMtMjMuNCAxOC4yLTI2LTIwLjMgNzcuMi02MC4xYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1MTIgMzE2LjhWMTI4aC0uN2wtMy45LTIuNUw0MzQuOCA3OWMtMTUuMy05LjgtMzMuMi0xNS01MS40LTE1Yy0yMS44IDAtNDMgNy41LTYwIDIxLjJsLTg5LjcgNzIuNi0yNS44LTIwLjMgODEuOC02Ni4yYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTM1LjUgMjMuN0wzOC44IDUuMXpNNDEzLjYgNDIxLjlMMTI4IDE5Ni44VjM1MmgyOC4ybDkxLjQgODMuNGMxOS42IDE3LjkgNDkuOSAxNi41IDY3LjgtMy4xYzUuNS02LjEgOS4yLTEzLjIgMTEuMS0yMC42bDE3IDE1LjZjMTkuNSAxNy45IDQ5LjkgMTYuNiA2Ny44LTIuOWMuOC0uOCAxLjUtMS43IDIuMi0yLjZ6TTk2IDE3MS42TDQwLjYgMTI4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE3MS42ek00OCAzMjBhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyek01NDQgMTI4VjM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNDRjMC04LjgtNy4yLTE2LTE2LTE2SDU0NHptMzIgMjA4YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6XCJdXG59O1xudmFyIGZhQm9va0Jvb2ttYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stYm9va21hcmsnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwYmJcIiwgXCJNMCA5NkMwIDQzIDQzIDAgOTYgMGg5NlYxOTAuN2MwIDEzLjQgMTUuNSAyMC45IDI2IDEyLjVMMjcyIDE2MGw1NCA0My4yYzEwLjUgOC40IDI2IC45IDI2LTEyLjVWMGgzMiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0IDk2Yy01MyAwLTk2LTQzLTk2LTk2Vjk2ek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyVjM4NEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJdXG59O1xudmFyIGZhQ29kZUJyYW5jaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlLWJyYW5jaCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjEyNlwiLCBcIk04MCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em04MC0yNGMwIDMyLjgtMTkuNyA2MS00OCA3My4zdjg3LjhjMTguOC0xMC45IDQwLjctMTcuMSA2NC0xNy4xaDk2YzM1LjMgMCA2NC0yOC43IDY0LTY0di02LjdDMzA3LjcgMTQxIDI4OCAxMTIuOCAyODggODBjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zVjE2MGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOEgxNzZjLTM1LjMgMC02NCAyOC43LTY0IDY0djYuN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNWMzUyIDE1My4zQzE5LjcgMTQxIDAgMTEyLjggMCA4MEMwIDM1LjggMzUuOCAwIDgwIDBzODAgMzUuOCA4MCA4MHptMjMyIDBhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNODAgNDU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIl1cbn07XG52YXIgZmFIYXRDb3dib3kgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGF0LWNvd2JveScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjhjMFwiLCBcIk0zMjAgNjRjMTQuNCAwIDIyLjMtNyAzMC44LTE0LjRDMzYwLjQgNDEuMSAzNzAuNyAzMiAzOTIgMzJjNDkuMyAwIDg0LjQgMTUyLjIgOTcuOSAyMjEuOUM0NDcuOCAyNzIuMSAzOTAuOSAyODggMzIwIDI4OHMtMTI3LjgtMTUuOS0xNjkuOS0zNC4xQzE2My42IDE4NC4yIDE5OC43IDMyIDI0OCAzMmMyMS4zIDAgMzEuNiA5LjEgNDEuMiAxNy42QzI5Ny43IDU3IDMwNS42IDY0IDMyMCA2NHpNMTExLjEgMjcwLjdjNDcuMiAyNC41IDExNy41IDQ5LjMgMjA5IDQ5LjNzMTYxLjgtMjQuOCAyMDguOS00OS4zYzI0LjgtMTIuOSA0OS44LTI4LjMgNzAuMS00Ny43YzcuOS03LjkgMjAuMi05LjIgMjkuNi0zLjNjOS41IDUuOSAxMy41IDE3LjkgOS45IDI4LjVjLTEzLjUgMzcuNy0zOC40IDcyLjMtNjYuMSAxMDAuNkM1MjMuNyAzOTguOSA0NDMuNiA0NDggMzIwIDQ0OHMtMjAzLjYtNDkuMS0yNTIuNS05OS4yQzM5LjggMzIwLjQgMTQuOSAyODUuOCAxLjQgMjQ4LjFjLTMuNi0xMC42IC40LTIyLjYgOS45LTI4LjVjOS41LTUuOSAyMS43LTQuNSAyOS42IDMuM2MyMC40IDE5LjQgNDUuMyAzNC44IDcwLjEgNDcuN3pcIl1cbn07XG52YXIgZmFCcmlkZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJpZGdlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGM4XCIsIFwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nkg3MnY2NEgwVjI4OGM1MyAwIDk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2djY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NGMwLTUzIDQzLTk2IDk2LTk2VjE2MEg1MDRWOTZoNDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6TTQ1NiA5NnY2NEgzNzZWOTZoODB6TTMyOCA5NnY2NEgyNDhWOTZoODB6TTIwMCA5NnY2NEgxMjBWOTZoODB6XCJdXG59O1xudmFyIGZhUGhvbmVGbGlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bob25lLWZsaXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzODEsIFwicGhvbmUtYWx0XCJdLCBcImY4NzlcIiwgXCJNMzQ3LjEgMjQuNmM3LjctMTguNiAyOC0yOC41IDQ3LjQtMjMuMmw4OCAyNEM0OTkuOSAzMC4yIDUxMiA0NiA1MTIgNjRjMCAyNDcuNC0yMDAuNiA0NDgtNDQ4IDQ0OGMtMTggMC0zMy44LTEyLjEtMzguNi0yOS41bC0yNC04OGMtNS4zLTE5LjQgNC42LTM5LjcgMjMuMi00Ny40bDk2LTQwYzE2LjMtNi44IDM1LjItMi4xIDQ2LjMgMTEuNkwyMDcuMyAzNjhjNzAuNC0zMy4zIDEyNy40LTkwLjMgMTYwLjctMTYwLjdMMzE4LjcgMTY3Yy0xMy43LTExLjItMTguNC0zMC0xMS42LTQ2LjNsNDAtOTZ6XCJdXG59O1xudmFyIGZhUGhvbmVBbHQgPSBmYVBob25lRmxpcDtcbnZhciBmYVRydWNrRnJvbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stZnJvbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUyYjdcIiwgXCJNMCA4MEMwIDM1LjggMzUuOCAwIDgwIDBINDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwVjM2OGMwIDI2LjItMTIuNiA0OS40LTMyIDY0djQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDQ4SDEyOHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDMyQzEyLjYgNDE3LjQgMCAzOTQuMiAwIDM2OFY4MHptMTI5LjkgNzIuMkwxMTIgMjI0SDQwMGwtMTcuOS03MS44QzM3OC41IDEzOCAzNjUuNyAxMjggMzUxIDEyOEgxNjFjLTE0LjcgMC0yNy41IDEwLTMxIDI0LjJ6TTEyOCAzMjBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjg4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG52YXIgZmFDYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2F0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MDA4XSwgXCJmNmJlXCIsIFwiTTMyMCAxOTJoMTcuMWMyMi4xIDM4LjMgNjMuNSA2NCAxMTAuOSA2NGMxMSAwIDIxLjgtMS40IDMyLTR2NCAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzM5LjJMMjgwIDQ0OGg1NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxOTJjLTUzIDAtOTYtNDMtOTYtOTZWMTkyLjVjMC0xNi4xLTEyLTI5LjgtMjgtMzEuOGwtNy45LTFjLTE3LjUtMi4yLTMwLTE4LjItMjcuOC0zNS43czE4LjItMzAgMzUuNy0yNy44bDcuOSAxYzQ4IDYgODQuMSA0Ni44IDg0LjEgOTUuM3Y4NS4zYzM0LjQtNTEuNyA5My4yLTg1LjggMTYwLTg1Ljh6bTE2MCAyNi41djBjLTEwIDMuNS0yMC44IDUuNS0zMiA1LjVjLTI4LjQgMC01NC0xMi40LTcxLjYtMzJoMGMtMy43LTQuMS03LTguNS05LjktMTMuMkMzNTcuMyAxNjQgMzUyIDE0Ni42IDM1MiAxMjh2MFYzMiAxMiAxMC43QzM1MiA0LjggMzU2LjcgLjEgMzYyLjYgMGguMmMzLjMgMCA2LjQgMS42IDguNCA0LjJsMCAuMUwzODQgMjEuM2wyNy4yIDM2LjNMNDE2IDY0aDY0bDQuOC02LjRMNTEyIDIxLjMgNTI0LjggNC4zbDAtLjFjMi0yLjYgNS4xLTQuMiA4LjQtNC4yaC4yQzUzOS4zIC4xIDU0NCA0LjggNTQ0IDEwLjdWMTIgMzJ2OTZjMCAxNy4zLTQuNiAzMy42LTEyLjYgNDcuNmMtMTEuMyAxOS44LTI5LjYgMzUuMi01MS40IDQyLjl6TTQzMiAxMjhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNDggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwiXVxufTtcbnZhciBmYUFuY2hvckNpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuY2hvci1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YWJcIiwgXCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJWNDQ4SDIwOGMtNTMgMC05Ni00My05Ni05NnYtNi4xbDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoODAgODBjOC4yIDAgMTYuMy0uNiAyNC4yLTEuOGMtMjIuMi0xNi4yLTQwLjQtMzcuNS01My02Mi4ySDMyMFYzNjggMjQwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0MS4xek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYVRydWNrRmllbGQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stZmllbGQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OGRcIiwgXCJNMzIgOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRIMzIwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMmg1MS44YzI1LjMgMCA0OC4yIDE0LjkgNTguNSAzOGw1Mi44IDExOC44Yy41IDEuMSAuOSAyLjEgMS4zIDMuMkg1NDRjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINTc2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2SDI1NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlYyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMlY5NnpNMzg0IDIyNGg4NS45bC00Mi43LTk2SDM4NHY5NnpNMTYwIDQzMmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwiXVxufTtcbnZhciBmYVJvdXRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvdXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNGQ3XCIsIFwiTTUxMiA5NmMwIDUwLjItNTkuMSAxMjUuMS04NC42IDE1NWMtMy44IDQuNC05LjQgNi4xLTE0LjUgNUgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoOTZjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZIMTM5LjZjOC43LTkuOSAxOS4zLTIyLjYgMzAtMzYuOGM2LjMtOC40IDEyLjgtMTcuNiAxOS0yNy4ySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjBjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTZoMzkuOGMtMjEtMzEuNS0zOS44LTY3LjctMzkuOC05NmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2ek0xMTcuMSA0ODkuMWMtMy44IDQuMy03LjIgOC4xLTEwLjEgMTEuM2wtMS44IDItLjItLjJjLTYgNC42LTE0LjYgNC0yMC0xLjhDNTkuOCA0NzMgMCA0MDIuNSAwIDM1MmMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2YzAgMzAtMjEuMSA2Ny00My41IDk3LjljLTEwLjcgMTQuNy0yMS43IDI4LTMwLjggMzguNWwtLjYgLjd6TTEyOCAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDE2IDEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhQ2xpcGJvYXJkUXVlc3Rpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xpcGJvYXJkLXF1ZXN0aW9uJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlNGUzXCIsIFwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRINjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjgyLjVDMjY5LjQgMjYuNyAyMzMuOCAwIDE5MiAwem0wIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTA1LjggMjI5LjNjNy45LTIyLjMgMjkuMS0zNy4zIDUyLjgtMzcuM2g1OC4zYzM0LjkgMCA2My4xIDI4LjMgNjMuMSA2My4xYzAgMjIuNi0xMi4xIDQzLjUtMzEuNyA1NC44TDIxNiAzMjguNGMtLjIgMTMtMTAuOSAyMy42LTI0IDIzLjZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjMxNC41YzAtOC42IDQuNi0xNi41IDEyLjEtMjAuOGw0NC4zLTI1LjRjNC43LTIuNyA3LjYtNy43IDcuNi0xMy4xYzAtOC40LTYuOC0xNS4xLTE1LjEtMTUuMUgxNTguNmMtMy40IDAtNi40IDIuMS03LjUgNS4zbC0uNCAxLjJjLTQuNCAxMi41LTE4LjIgMTktMzAuNiAxNC42cy0xOS0xOC4yLTE0LjYtMzAuNmwuNC0xLjJ6TTE2MCA0MTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIl1cbn07XG52YXIgZmFQYW5vcmFtYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYW5vcmFtYScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTIwOVwiLCBcIk00NS42IDMyQzIwLjQgMzIgMCA1Mi40IDAgNzcuNlY0MzQuNEMwIDQ1OS42IDIwLjQgNDgwIDQ1LjYgNDgwYzUuMSAwIDEwLS44IDE0LjctMi40Qzc0LjYgNDcyLjggMTc3LjYgNDQwIDMyMCA0NDBzMjQ1LjQgMzIuOCAyNTkuNiAzNy42YzQuNyAxLjYgOS43IDIuNCAxNC43IDIuNGMyNS4yIDAgNDUuNi0yMC40IDQ1LjYtNDUuNlY3Ny42QzY0MCA1Mi40IDYxOS42IDMyIDU5NC40IDMyYy01IDAtMTAgLjgtMTQuNyAyLjRDNTY1LjQgMzkuMiA0NjIuNCA3MiAzMjAgNzJTNzQuNiAzOS4yIDYwLjQgMzQuNEM1NS42IDMyLjggNTAuNyAzMiA0NS42IDMyek05NiAxNjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjcyIDBjNy45IDAgMTUuNCAzLjkgMTkuOCAxMC41TDUxMi4zIDM1M2M1LjQgOCA1LjYgMTguNCAuNCAyNi41cy0xNC43IDEyLjMtMjQuMiAxMC43QzQ0Mi43IDM4Mi40IDM4NS4yIDM3NiAzMjAgMzc2Yy02NS42IDAtMTIzLjQgNi41LTE2OS4zIDE0LjRjLTkuOCAxLjctMTkuNy0yLjktMjQuNy0xMS41cy00LjMtMTkuNCAxLjktMjcuMkwxOTcuMyAyNjVjNC42LTUuNyAxMS40LTkgMTguNy05czE0LjIgMy4zIDE4LjcgOWwyNi40IDMzLjEgODctMTI3LjZjNC41LTYuNiAxMS45LTEwLjUgMTkuOC0xMC41elwiXVxufTtcbnZhciBmYUNvbW1lbnRNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbW1lbnQtbWVkaWNhbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdmNVwiLCBcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6TTIyNCAxNjBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI4OHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZWMjcySDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjIyNGMwLTguOCA3LjItMTYgMTYtMTZoNDhWMTYwelwiXVxufTtcbnZhciBmYVRlZXRoT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZWV0aC1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNjJmXCIsIFwiTTk2IDMyQzQzIDMyIDAgNzUgMCAxMjh2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTUzLTQzLTk2LTk2LTk2SDk2ek0yMjQgOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDh6bTgwIDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2NTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMzI4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYxNDR6TTk2IDEyOGMyNi41IDAgNDggMjEuNSA0OCA0OHYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg3MmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em0zMzYgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg0NTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjE3NnpNOTYgNDgwSDQ4MGM1MyAwIDk2LTQzIDk2LTk2VjM1MmMwLTM1LjMtMjguNy02NC02NC02NEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCA1MyA0MyA5NiA5NiA5NnptMC02NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0djI0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em04MC00OFYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDh6bTE3NiA0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0djI0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em04MC00OFYzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRoNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDh6XCJdXG59O1xudmFyIGZhRmlsZUNpcmNsZU1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtY2lyY2xlLW1pbnVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGVkXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMjQgMGMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDQ5NmM4LjggMCAxNi03LjIgMTYtMTZ6XCJdXG59O1xudmFyIGZhVGFncyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWdzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDJjXCIsIFwiTTM0NSAzOS4xTDQ3Mi44IDE2OC40YzUyLjQgNTMgNTIuNCAxMzguMiAwIDE5MS4yTDM2MC44IDQ3Mi45Yy05LjMgOS40LTI0LjUgOS41LTMzLjkgLjJzLTkuNS0yNC41LS4yLTMzLjlMNDM4LjYgMzI1LjljMzMuOS0zNC4zIDMzLjktODkuNCAwLTEyMy43TDMxMC45IDcyLjljLTkuMy05LjQtOS4yLTI0LjYgLjItMzMuOXMyNC42LTkuMiAzMy45IC4yek0wIDIyOS41VjgwQzAgNTMuNSAyMS41IDMyIDQ4IDMySDE5Ny41YzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43bDE2OCAxNjhjMjUgMjUgMjUgNjUuNSAwIDkwLjVMMjc3LjMgNDQyLjdjLTI1IDI1LTY1LjUgMjUtOTAuNSAwbC0xNjgtMTY4QzYuNyAyNjIuNyAwIDI0Ni41IDAgMjI5LjV6TTE0NCAxNDRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIl1cbn07XG52YXIgZmFXaW5lR2xhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZS1nbGFzcycsXG4gIGljb246IFszMjAsIDUxMiwgWzEyNzg2M10sIFwiZjRlM1wiLCBcIk0zMi4xIDI5LjNDMzMuNSAxMi44IDQ3LjQgMCA2NCAwSDI1NmMxNi42IDAgMzAuNSAxMi44IDMxLjkgMjkuM2wxNCAxNjguNGM2IDcyLTQyLjUgMTM1LjItMTA5LjkgMTUwLjZWNDQ4aDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MCA4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg0OFYzNDguNEM2MC42IDMzMyAxMi4xIDI2OS44IDE4LjEgMTk3LjhsMTQtMTY4LjR6bTU2IDk4LjdIMjMxLjlsLTUuMy02NEg5My40bC01LjMgNjR6XCJdXG59O1xudmFyIGZhRm9yd2FyZEZhc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9yd2FyZC1mYXN0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTE5NywgXCJmYXN0LWZvcndhcmRcIl0sIFwiZjA1MFwiLCBcIk0xOC40IDQ0NWMxMS4yIDUuMyAyNC41IDMuNiAzNC4xLTQuNEwyMjQgMjk3LjdWNDE2YzAgMTIuNCA3LjIgMjMuNyAxOC40IDI5czI0LjUgMy42IDM0LjEtNC40TDQ0OCAyOTcuN1Y0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyMTQuM0wyNzYuNSA3MS40Yy05LjUtNy45LTIyLjgtOS43LTM0LjEtNC40UzIyNCA4My42IDIyNCA5NlYyMTQuM0w1Mi41IDcxLjRjLTkuNS03LjktMjIuOC05LjctMzQuMS00LjRTMCA4My42IDAgOTZWNDE2YzAgMTIuNCA3LjIgMjMuNyAxOC40IDI5elwiXVxufTtcbnZhciBmYUZhc3RGb3J3YXJkID0gZmFGb3J3YXJkRmFzdDtcbnZhciBmYUZhY2VNZWhCbGFuayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLW1laC1ibGFuaycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU2NiwgXCJtZWgtYmxhbmtcIl0sIFwiZjVhNFwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTIwOC40LTQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTEyOCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhTWVoQmxhbmsgPSBmYUZhY2VNZWhCbGFuaztcbnZhciBmYVNxdWFyZVBhcmtpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLXBhcmtpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjczNTksIFwicGFya2luZ1wiXSwgXCJmNTQwXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTkyIDI1Nmg0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ2NjR6bTQ4IDY0SDE5MnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggMTY4YzAtMjIuMSAxNy45LTQwIDQwLTQwaDcyYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2elwiXVxufTtcbnZhciBmYVBhcmtpbmcgPSBmYVNxdWFyZVBhcmtpbmc7XG52YXIgZmFIb3VzZVNpZ25hbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1zaWduYWwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUwMTJcIiwgXCJNMzU3LjcgOC41Yy0xMi4zLTExLjMtMzEuMi0xMS4zLTQzLjQgMGwtMjA4IDE5MmMtOS40IDguNi0xMi43IDIyLTguNSAzNGM4Ny4xIDI1LjMgMTU1LjYgOTQuMiAxODAuMyAxODEuNkg0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjU2aDMyYzEzLjIgMCAyNS04LjEgMjkuOC0yMC4zczEuNi0yNi4yLTguMS0zNS4ybC0yMDgtMTkyek0yODggMjA4YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZ2NjRjMCA4LjgtNy4yIDE2LTE2IDE2SDMwNGMtOC44IDAtMTYtNy4yLTE2LTE2VjIwOHpNMjQgMjU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0YzEwMS42IDAgMTg0IDgyLjQgMTg0IDE4NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTI4LjEtMTAzLjktMjMyLTIzMi0yMzJ6bTggMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMCAzNzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRjNDguNiAwIDg4IDM5LjQgODggODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTc1LjEtNjAuOS0xMzYtMTM2LTEzNmMtMTMuMyAwLTI0IDEwLjctMjQgMjR6XCJdXG59O1xudmFyIGZhQmFyc1Byb2dyZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhcnMtcHJvZ3Jlc3MnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInRhc2tzLWFsdFwiXSwgXCJmODI4XCIsIFwiTTQ0OCAxNjBIMzIwVjEyOEg0NDh2MzJ6TTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEydjY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ2NGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTQ0OCAzNTJ2MzJIMTkyVjM1Mkg0NDh6TTQ4IDI4OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMzNmMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpcIl1cbn07XG52YXIgZmFUYXNrc0FsdCA9IGZhQmFyc1Byb2dyZXNzO1xudmFyIGZhRmF1Y2V0RHJpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYXVjZXQtZHJpcCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODY4OF0sIFwiZTAwNlwiLCBcIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0NGw5Ni0xMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwyNTYgODRsLTMxLTMuOS0xLS4xLTEgLjFMMTkyIDg0IDk2IDk2Qzc4LjMgOTYgNjQgODEuNyA2NCA2NHMxNC4zLTMyIDMyLTMybDk2IDEyVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmwyMi42LTIyLjZjNi02IDE0LjEtOS40IDIyLjYtOS40SDE5MlYxMTYuMmwzMi00IDMyIDRWMTYwaDE4LjdjOC41IDAgMTYuNiAzLjQgMjIuNiA5LjRMMzIwIDE5MmgzMmM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMycy0xNC4zLTMyLTMyLTMySDMxNS45Yy0yMC4yIDI5LTUzLjkgNDgtOTEuOSA0OHMtNzEuNy0xOS05MS45LTQ4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMjR6TTQzNi44IDQyMy40YzEuOS00LjUgNi4zLTcuNCAxMS4yLTcuNHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMydi0xLjJjMC00LjUgLjktOC45IDIuNy0xMy4xbDE4LjItNDIuNHpcIl1cbn07XG52YXIgZmFDYXJ0RmxhdGJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJ0LWZsYXRiZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImRvbGx5LWZsYXRiZWRcIl0sIFwiZjQ3NFwiLCBcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0SDQ4YzguOCAwIDE2IDcuMiAxNiAxNlYzNjhjMCA0NC4yIDM1LjggODAgODAgODBoMTguN2MtMS44IDUtMi43IDEwLjQtMi43IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINDUwLjdjLTEuOCA1LTIuNyAxMC40LTIuNyAxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4YzAtNS42LTEtMTEtMi43LTE2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNDRjLTguOCAwLTE2LTcuMi0xNi0xNlY4MEMxMjggMzUuOCA5Mi4yIDAgNDggMEgzMnpNMTkyIDgwVjI3MmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg1NjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDY0VjE3NmMwIDUuOS0zLjIgMTEuMy04LjUgMTQuMXMtMTEuNSAyLjUtMTYuNC0uOEw0MDAgMTYzLjJsLTM5LjEgMjYuMWMtNC45IDMuMy0xMS4yIDMuNi0xNi40IC44cy04LjUtOC4yLTguNS0xNC4xVjMySDI0MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh6XCJdXG59O1xudmFyIGZhRG9sbHlGbGF0YmVkID0gZmFDYXJ0RmxhdGJlZDtcbnZhciBmYUJhblNtb2tpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFuLXNtb2tpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg2ODUsIFwic21va2luZy1iYW5cIl0sIFwiZjU0ZFwiLCBcIk05OS41IDE0NC44TDE3OC43IDIyNGw5NiA5NiA5Mi41IDkyLjVDMzM1LjkgNDM0LjkgMjk3LjUgNDQ4IDI1NiA0NDhDMTUwIDQ0OCA2NCAzNjIgNjQgMjU2YzAtNDEuNSAxMy4xLTc5LjkgMzUuNS0xMTEuMnpNMzMzLjMgMjg4bC0zMi0zMkgzODR2MzJIMzMzLjN6bTMyIDMySDQwMGM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkgyNjkuM0wxNDQuOCA5OS41QzE3Ni4xIDc3LjEgMjE0LjUgNjQgMjU2IDY0YzEwNiAwIDE5MiA4NiAxOTIgMTkyYzAgNDEuNS0xMy4xIDc5LjktMzUuNSAxMTEuMkwzNjUuMyAzMjB6TTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yNzIgOTZjLTguOCAwLTE2IDcuMi0xNiAxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmMwLTI2LjUtMjEuNS00OC00OC00OEgzMDRjLTguOCAwLTE2LTcuMi0xNi0xNnMtNy4yLTE2LTE2LTE2ek0yMjkuNSAzMjBsLTk2LTk2SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNkgyMjkuNXpcIl1cbn07XG52YXIgZmFTbW9raW5nQmFuID0gZmFCYW5TbW9raW5nO1xudmFyIGZhVGVybWluYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVybWluYWwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxMjBcIiwgXCJNOS40IDg2LjZDLTMuMSA3NC4xLTMuMSA1My45IDkuNCA0MS40czMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTc4LjcgMjU2IDkuNCA4Ni42ek0yNTYgNDE2SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhTW9iaWxlQnV0dG9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vYmlsZS1idXR0b24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxMGJcIiwgXCJNODAgMEM0NC43IDAgMTYgMjguNyAxNiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzA0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDgwek0xOTIgNDAwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFIb3VzZU1lZGljYWxGbGFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLW1lZGljYWwtZmxhZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUxNFwiLCBcIk00ODAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMkg2MjRjOC44IDAgMTYgNy4yIDE2IDE2VjE3NmMwIDguOC03LjIgMTYtMTYgMTZINTEyVjUxMkg0NDhWMTkyIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0yNzYuOCAzOS43TDQxNiAxNTlWNTEyaDFsLS4yIDBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjI4OEgzMmMtMTMuNCAwLTI1LjQtOC4zLTMwLTIwLjlzLTEtMjYuNyA5LjItMzUuNGwyMjQtMTkyYzEyLTEwLjMgMjkuNy0xMC4zIDQxLjcgMHpNMjI0IDIwOHY0OEgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBoNDhjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIMjg4VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMjQwYy04LjggMC0xNiA3LjItMTYgMTZ6XCJdXG59O1xudmFyIGZhQmFza2V0U2hvcHBpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFza2V0LXNob3BwaW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzaG9wcGluZy1iYXNrZXRcIl0sIFwiZjI5MVwiLCBcIk0yNTMuMyAzNS4xYzYuMS0xMS44IDEuNS0yNi4zLTEwLjItMzIuNHMtMjYuMy0xLjUtMzIuNCAxMC4yTDExNy42IDE5MkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkw4My45IDQ2My41QzkxIDQ5MiAxMTYuNiA1MTIgMTQ2IDUxMkg0MzBjMjkuNCAwIDU1LTIwIDYyLjEtNDguNUw1NDQgMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ1OC40TDM2NS4zIDEyLjlDMzU5LjIgMS4yIDM0NC43LTMuNCAzMzIuOSAyLjdzLTE2LjMgMjAuNi0xMC4yIDMyLjRMNDA0LjMgMTkySDE3MS43TDI1My4zIDM1LjF6TTE5MiAzMDR2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzA0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6bTk2LTE2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2em0xMjggMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzA0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJdXG59O1xudmFyIGZhU2hvcHBpbmdCYXNrZXQgPSBmYUJhc2tldFNob3BwaW5nO1xudmFyIGZhVGFwZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YXBlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNGRiXCIsIFwiTTM4MC44IDQxNmM0MS41LTQwLjcgNjcuMi05Ny4zIDY3LjItMTYwQzQ0OCAxMzIuMyAzNDcuNyAzMiAyMjQgMzJTMCAxMzIuMyAwIDI1NlMxMDAuMyA0ODAgMjI0IDQ4MEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzgwLjh6TTIyNCAxNjBhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6bTY0IDk2YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIl1cbn07XG52YXIgZmFCdXNTaW1wbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVzLXNpbXBsZScsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiYnVzLWFsdFwiXSwgXCJmNTVlXCIsIFwiTTIyNCAwQzM0OC44IDAgNDQ4IDM1LjIgNDQ4IDgwVjk2IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0OEgxMjh2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjk2IDgwQzAgMzUuMiA5OS4yIDAgMjI0IDB6TTY0IDEyOFYyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTgwIDQwMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTI4OCAwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG52YXIgZmFCdXNBbHQgPSBmYUJ1c1NpbXBsZTtcbnZhciBmYUV5ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleWUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgwNjVdLCBcImYwNmVcIiwgXCJNMjg4IDMyYy04MC44IDAtMTQ1LjUgMzYuOC0xOTIuNiA4MC42QzQ4LjYgMTU2IDE3LjMgMjA4IDIuNSAyNDMuN2MtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjZDMTcuMyAzMDQgNDguNiAzNTYgOTUuNCAzOTkuNEMxNDIuNSA0NDMuMiAyMDcuMiA0ODAgMjg4IDQ4MHMxNDUuNS0zNi44IDE5Mi42LTgwLjZjNDYuOC00My41IDc4LjEtOTUuNCA5My0xMzEuMWMzLjMtNy45IDMuMy0xNi43IDAtMjQuNmMtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMUM0MzMuNSA2OC44IDM2OC44IDMyIDI4OCAzMnpNMTQ0IDI1NmExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDQtNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTcuMSAwLTEzLjktMS4yLTIwLjMtMy4zYy01LjUtMS44LTExLjkgMS42LTExLjcgNy40Yy4zIDYuOSAxLjMgMTMuOCAzLjIgMjAuN2MxMy43IDUxLjIgNjYuNCA4MS42IDExNy42IDY3LjlzODEuNi02Ni40IDY3LjktMTE3LjZjLTExLjEtNDEuNS00Ny44LTY5LjQtODguNi03MS4xYy01LjgtLjItOS4yIDYuMS03LjQgMTEuN2MyLjEgNi40IDMuMyAxMy4yIDMuMyAyMC4zelwiXVxufTtcbnZhciBmYUZhY2VTYWRDcnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1zYWQtY3J5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTU3LCBcInNhZC1jcnlcIl0sIFwiZjViM1wiLCBcIk0zNTIgNDkzLjRjLTI5LjYgMTItNjIuMSAxOC42LTk2IDE4LjZzLTY2LjQtNi42LTk2LTE4LjZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ3Ny44QzUxLjUgNDMzLjUgMCAzNTAuOCAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCA5NC44LTUxLjUgMTc3LjUtMTI4IDIyMS44VjI4OGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNlY0OTMuNHpNMTk1LjIgMjMzLjZjNS4zIDcuMSAxNS4zIDguNSAyMi40IDMuMnM4LjUtMTUuMyAzLjItMjIuNGMtMzAuNC00MC41LTkxLjItNDAuNS0xMjEuNiAwYy01LjMgNy4xLTMuOSAxNy4xIDMuMiAyMi40czE3LjEgMy45IDIyLjQtMy4yYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwem0xMjEuNiAwYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMnpNMjA4IDMzNnYzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4VjMzNmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHpcIl1cbn07XG52YXIgZmFTYWRDcnkgPSBmYUZhY2VTYWRDcnk7XG52YXIgZmFBdWRpb0Rlc2NyaXB0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2F1ZGlvLWRlc2NyaXB0aW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjllXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMjEzLjUgMTczLjNsNzIgMTQ0YzUuOSAxMS45IDEuMSAyNi4zLTEwLjcgMzIuMnMtMjYuMyAxLjEtMzIuMi0xMC43bC05LjQtMTguOUgxNTAuOWwtOS40IDE4LjljLTUuOSAxMS45LTIwLjMgMTYuNy0zMi4yIDEwLjdzLTE2LjctMjAuMy0xMC43LTMyLjJsNzItMTQ0YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjN6bS0uNCAxMDYuNkwxOTIgMjM3LjdsLTIxLjEgNDIuMmg0Mi4yek0zMDQgMTg0YzAtMTMuMyAxMC43LTI0IDI0LTI0aDU2YzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDMyOGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTg0em00OCAyNHY5NmgzMmMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEgzNTJ6XCJdXG59O1xudmFyIGZhUGVyc29uTWlsaXRhcnlUb1BlcnNvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tbWlsaXRhcnktdG8tcGVyc29uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTRjXCIsIFwiTTcxIDEyLjVjLTguNiAxLTE1IDguMi0xNSAxNi44YzAgOS4zIDcuNSAxNi44IDE2LjcgMTYuOUgxODQuMWM4LjgtLjEgMTUuOS03LjIgMTUuOS0xNlYxNmMwLTkuNS04LjMtMTctMTcuOC0xNS45TDcxIDEyLjV6TTE4OS41IDc4LjFINjYuNUM2NC45IDgzLjggNjQgODkuOCA2NCA5NmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0YzAtNi4yLS45LTEyLjItMi41LTE3Ljl6TTMyIDI1NnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxOTJjMS44IDAgMy41LS4xIDUuMi0uNEw1MyAyMDguNkM0MC4xIDIyMC4zIDMyIDIzNy4yIDMyIDI1NnptMTkwLjIgNDIuNWMxLjEtMy4zIDEuOC02LjggMS44LTEwLjVWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDk2Yy0zLjcgMC03LjQgLjMtMTAuOSAuOUwyMjIuMiAyOTguNXpNMzg0IDE2MGE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHptLTMyIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDM1MnpNMjE1LjggNDUwLjFjNS4yLTQuNiA4LjItMTEuMSA4LjItMTguMXMtMy0xMy41LTguMi0xOC4xbC02NC01NmMtNy4xLTYuMi0xNy4xLTcuNy0yNS43LTMuOFMxMTIgMzY2LjYgMTEyIDM3NnYzMmwtODggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw4OCAwdjMyYzAgOS40IDUuNSAxOCAxNC4xIDIxLjlzMTguNiAyLjQgMjUuNy0zLjhsNjQtNTZ6TTI4OCA0MzEuOWMwIDYuOSAyLjkgMTMuNSA4LjEgMTguMWw2NCA1Ni40YzcuMSA2LjIgMTcuMSA3LjggMjUuNyAzLjlzMTQuMS0xMi40IDE0LjEtMjEuOWwwLTMyLjQgODggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtODggMCAwLTMyYzAtOS40LTUuNS0xOC0xNC4xLTIxLjlzLTE4LjYtMi40LTI1LjcgMy44bC02NCA1NmMtNS4yIDQuNS04LjIgMTEuMS04LjIgMTh6XCJdXG59O1xudmFyIGZhRmlsZVNoaWVsZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXNoaWVsZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRmMFwiLCBcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NHY0N2wtOTIuOCAzNy4xYy0yMS4zIDguNS0zNS4yIDI5LjEtMzUuMiA1MmMwIDU2LjYgMTguOSAxNDggOTQuMiAyMDguM2MtOSA0LjgtMTkuMyA3LjYtMzAuMiA3LjZINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHptMzkuMSA5Ny43YzUuNy0yLjMgMTIuMS0yLjMgMTcuOCAwbDEyMCA0OEM1NzAgMjc3LjQgNTc2IDI4Ni4yIDU3NiAyOTZjMCA2My4zLTI1LjkgMTY4LjgtMTM0LjggMjE0LjJjLTUuOSAyLjUtMTIuNiAyLjUtMTguNSAwQzMxMy45IDQ2NC44IDI4OCAzNTkuMyAyODggMjk2YzAtOS44IDYtMTguNiAxNS4xLTIyLjNsMTIwLTQ4ek01MjcuNCAzMTJMNDMyIDI3My44VjQ2MS43YzY4LjItMzMgOTEuNS05OSA5NS40LTE0OS43elwiXVxufTtcbnZhciBmYVVzZXJTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTA2XCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzUzLjMgMjUxLjZDNDA3LjkgMjM3IDQ0OCAxODcuMiA0NDggMTI4QzQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBDMjUwLjIgMCAxOTMuNSA1NS44IDE5MiAxMjUuMkwzOC44IDUuMXpNMjY0LjMgMzA0LjNDMTcwLjUgMzA5LjQgOTYgMzg3LjIgOTYgNDgyLjNjMCAxNi40IDEzLjMgMjkuNyAyOS43IDI5LjdINTE0LjNjMy45IDAgNy42LS43IDExLTIuMWwtMjYxLTIwNS42elwiXVxufTtcbnZhciBmYVBlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzOTRdLCBcImYzMDRcIiwgXCJNMzYyLjcgMTkuM0wzMTQuMyA2Ny43IDQ0NC4zIDE5Ny43bDQ4LjQtNDguNGMyNS0yNSAyNS02NS41IDAtOTAuNUw0NTMuMyAxOS4zYy0yNS0yNS02NS41LTI1LTkwLjUgMHptLTcxIDcxTDU4LjYgMzIzLjVjLTEwLjQgMTAuNC0xOCAyMy4zLTIyLjIgMzcuNEwxIDQ4MS4yQy0xLjUgNDg5LjcgLjggNDk4LjggNyA1MDVzMTUuMyA4LjUgMjMuNyA2LjFsMTIwLjMtMzUuNGMxNC4xLTQuMiAyNy0xMS44IDM3LjQtMjIuMkw0MjEuNyAyMjAuMyAyOTEuNyA5MC4zelwiXVxufTtcbnZhciBmYVRvd2VyT2JzZXJ2YXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG93ZXItb2JzZXJ2YXRpb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1ODZcIiwgXCJNMjQxLjcgMy40YzktNC41IDE5LjYtNC41IDI4LjYgMGwxNjAgODBjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOUM0MzkgMTM3LjUgNDI3LjcgMTQ0IDQxNiAxNDR2ODBjMCAxNy43LTE0LjMgMzItMzIgMzJoLTQuOWwzMiAxOTJINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NC41Yy0uNCAwLS44IDAtMS4xIDBIMTI4LjZjLS40IDAtLjggMC0xLjEgMEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2OC45bDMyLTE5MkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMtMTEuNyAwLTIzLTYuNS0yOC42LTE3LjdjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlsMTYwLTgwek0zMTQuNSA0NDhMMjU2IDM5OS4yIDE5Ny41IDQ0OGgxMTd6TTE5Ny44IDI1NmwtNC43IDI4LjNMMjU2IDMzNi44bDYyLjktNTIuNUwzMTQuMiAyNTZIMTk3Ljh6bS0xMy45IDgzLjJsLTExLjIgNjdMMjE4LjUgMzY4bC0zNC42LTI4Ljh6TTI5My41IDM2OGw0NS44IDM4LjEtMTEuMi02N0wyOTMuNSAzNjh6TTE3NiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMzM2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDE3NnpcIl1cbn07XG52YXIgZmFGaWxlQ29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWNvZGUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzlcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xNTMgMjg5bC0zMSAzMSAzMSAzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcxIDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNDgtNDhjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek0yNjUgMjU1bDQ4IDQ4YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC00OCA0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwiXVxufTtcbnZhciBmYVNpZ25hbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaWduYWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjgyNDYsIFwic2lnbmFsLTVcIiwgXCJzaWduYWwtcGVyZmVjdFwiXSwgXCJmMDEyXCIsIFwiTTU3NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNDQ4IDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTM1MiAyMjRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyek0xOTIgMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTk2IDQxNnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpcIl1cbn07XG52YXIgZmFTaWduYWw1ID0gZmFTaWduYWw7XG52YXIgZmFTaWduYWxQZXJmZWN0ID0gZmFTaWduYWw7XG52YXIgZmFCdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4NjUzXSwgXCJmMjA3XCIsIFwiTTI4OCAwQzQyMi40IDAgNTEyIDM1LjIgNTEyIDgwVjk2bDAgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJsMCAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJINDE2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0NDhIMTkydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgwVjk2aDBWODBDNjQgMzUuMiAxNTMuNiAwIDI4OCAwek0xMjggMTYwdjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDI3MlYxMjhIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzA0IDI4OEg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMwNFYyODh6TTE0NCA0MDBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0yODggMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTM4NCA4MGMwLTguOC03LjItMTYtMTYtMTZIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDM2OGM4LjggMCAxNi03LjIgMTYtMTZ6XCJdXG59O1xudmFyIGZhSGVhcnRDaXJjbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1MDFcIiwgXCJNNDcuNiAzMDAuNEwyMjguMyA0NjkuMWM3LjUgNyAxNy40IDEwLjkgMjcuNyAxMC45czIwLjItMy45IDI3LjctMTAuOWwyLjYtMi40QzI2Ny4yIDQzOC42IDI1NiA0MDQuNiAyNTYgMzY4YzAtOTcuMiA3OC44LTE3NiAxNzYtMTc2YzI4LjMgMCA1NSA2LjcgNzguNyAxOC41Yy45LTYuNSAxLjMtMTMgMS4zLTE5LjZ2LTUuOGMwLTY5LjktNTAuNS0xMjkuNS0xMTkuNC0xNDFDMzQ3IDM2LjUgMzAwLjYgNTEuNCAyNjggODRMMjU2IDk2IDI0NCA4NGMtMzIuNi0zMi42LTc5LTQ3LjUtMTI0LjYtMzkuOUM1MC41IDU1LjYgMCAxMTUuMiAwIDE4NS4xdjUuOGMwIDQxLjUgMTcuMiA4MS4yIDQ3LjYgMTA5LjV6TTQzMiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDQ1NC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0MzIgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0MDkuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQzMiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwiXVxufTtcbnZhciBmYUhvdXNlQ2hpbW5leSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1jaGltbmV5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbNjM0OTksIFwiaG9tZS1sZ1wiXSwgXCJlM2FmXCIsIFwiTTU0My44IDI4Ny42YzE3IDAgMzItMTQgMzItMzIuMWMxLTktMy0xNy0xMS0yNEw1MTIgMTg1VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzYuN0wzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NCAyNGMwIDIyLjEgMTcuOSA0MCA0MCA0MGgyNCAzMi41YzEuNCAwIDIuOCAwIDQuMi0uMWMxLjEgLjEgMi4yIC4xIDMuMyAuMWgxNmMyMi4xIDAgNDAtMTcuOSA0MC00MFY0NTUuOGMuMy0yLjYgLjUtNS4zIC41LTguMWwtLjctMTYwLjJoMzJ6XCJdXG59O1xudmFyIGZhSG9tZUxnID0gZmFIb3VzZUNoaW1uZXk7XG52YXIgZmFXaW5kb3dNYXhpbWl6ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5kb3ctbWF4aW1pemUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg0NzBdLCBcImYyZDBcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek05NiA5Nkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhRmFjZUZyb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZnJvd24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5Nzg1LCBcImZyb3duXCJdLCBcImYxMTlcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE1OS4zIDM4OC43Yy0yLjYgOC40LTExLjYgMTMuMi0yMCAxMC41cy0xMy4yLTExLjYtMTAuNS0yMEMxNDUuMiAzMjYuMSAxOTYuMyAyODggMjU2IDI4OHMxMTAuOCAzOC4xIDEyNy4zIDkxLjNjMi42IDguNC0yLjEgMTcuNC0xMC41IDIwcy0xNy40LTIuMS0yMC0xMC41QzM0MC41IDM0OS40IDMwMi4xIDMyMCAyNTYgMzIwcy04NC41IDI5LjQtOTYuNyA2OC43ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFGcm93biA9IGZhRmFjZUZyb3duO1xudmFyIGZhUHJlc2NyaXB0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ByZXNjcmlwdGlvbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjViMVwiLCBcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlYxOTJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMjRoNTAuN2wxMjggMTI4TDEzNy40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI4OCAzOTcuMyAzOTMuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDMzMy4zIDM1MiA0MzguNiAyNDYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyODggMzA2LjdsLTg1LjgtODUuOEMyNTEuNCAyMDkuMSAyODggMTY0LjggMjg4IDExMkMyODggNTAuMSAyMzcuOSAwIDE3NiAwSDMyek0xNzYgMTYwSDY0VjY0SDE3NmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OHpcIl1cbn07XG52YXIgZmFTaG9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3AnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInN0b3JlLWFsdFwiXSwgXCJmNTRmXCIsIFwiTTM2LjggMTkySDYwMy4yYzIwLjMgMCAzNi44LTE2LjUgMzYuOC0zNi44YzAtNy4zLTIuMi0xNC40LTYuMi0yMC40TDU1OC4yIDIxLjRDNTQ5LjMgOCA1MzQuNCAwIDUxOC4zIDBIMTIxLjdjLTE2IDAtMzEgOC0zOS45IDIxLjRMNi4yIDEzNC43Yy00IDYuMS02LjIgMTMuMi02LjIgMjAuNEMwIDE3NS41IDE2LjUgMTkyIDM2LjggMTkyek02NCAyMjRWMzg0djgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDMzNmMyNi41IDAgNDgtMjEuNSA0OC00OFYzODQgMjI0SDMyMFYzODRIMTI4VjIyNEg2NHptNDQ4IDBWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjI0SDUxMnpcIl1cbn07XG52YXIgZmFTdG9yZUFsdCA9IGZhU2hvcDtcbnZhciBmYUZsb3BweURpc2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmxvcHB5LWRpc2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgxOTAsIDEyODQyNiwgXCJzYXZlXCJdLCBcImYwYzdcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE3My4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDM1MiA1MC43QzM0MCAzOC43IDMyMy43IDMyIDMwNi43IDMySDY0em0wIDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4ek0yMjQgMjg4YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwiXVxufTtcbnZhciBmYVNhdmUgPSBmYUZsb3BweURpc2s7XG52YXIgZmFWaWhhcmEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmloYXJhJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmE3XCIsIFwiTTI4MSAyMkwzMDUuOCA0LjdjMS4zLS45IDIuNy0xLjggNC4xLTIuNEMzMTMuMSAuNyAzMTYuNiAwIDMyMCAwczYuOSAuNyAxMC4xIDIuMmMxLjQgLjcgMi44IDEuNSA0LjEgMi40TDM1OSAyMkMzOTMgNDUuOCA0MzAuOCA2My41IDQ3MC44IDc0LjRsMjMgNi4zYzEuOCAuNSAzLjYgMS4xIDUuMiAyYzMuMiAxLjcgNS45IDQgOC4xIDYuOGMzLjggNC45IDUuNiAxMS4zIDQuNyAxNy44Yy0uNCAyLjgtMS4yIDUuNC0yLjUgNy44Yy0xLjcgMy4yLTQgNS45LTYuOCA4LjFjLTQuMyAzLjItOS42IDUuMS0xNS4xIDQuOUg0ODB2NTYuMWw2LjQgNS4xIDUuMiA0LjFjMjEuMSAxNi43IDQ1IDI5LjYgNzAuNSAzOC4xbDI4LjkgOS42YzEuNiAuNSAzLjIgMS4yIDQuNiAyYzMuMSAxLjcgNS44IDQuMSA3LjggNi45czMuNSA2LjEgNC4xIDkuNmMuNSAyLjcgLjYgNS41IC4xIDguM3MtMS40IDUuNC0yLjcgNy44Yy0xLjcgMy4xLTQuMSA1LjgtNi45IDcuOHMtNi4xIDMuNS05LjYgNC4xYy0xLjYgLjMtMy4zIC40LTUgLjRINTQ0djY1LjljMjAuNSAyMi44IDQ3LjQgMzkuMiA3Ny40IDQ2LjdDNjMyIDQwMyA2NDAgNDEyLjYgNjQwIDQyNGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg1NzZ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ4SDM1MnYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMTI4djMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRjMC0xMS40IDgtMjEgMTguNi0yMy40YzMwLTcuNiA1Ni45LTIzLjkgNzcuNC00Ni43VjI4OEg1Ni42Yy0xLjcgMC0zLjQtLjEtNS0uNGMtMy41LS43LTYuOC0yLjEtOS42LTQuMXMtNS4yLTQuNy03LTcuOGMtMS4zLTIuNC0yLjMtNS0yLjctNy44cy0uNC01LjYgLjEtOC4zYy43LTMuNSAyLjEtNi44IDQuMS05LjZzNC43LTUuMiA3LjgtNi45YzEuNC0uOCAzLTEuNSA0LjYtMmwyOC45LTkuNmMyNS41LTguNSA0OS40LTIxLjQgNzAuNS0zOC4xbDUuMi00LjEgNi40LTUuMVYxNzYgMTI4aC03LjVjLTUuNSAuMS0xMC44LTEuNy0xNS4xLTQuOWMtMi44LTIuMS01LjEtNC44LTYuOC04LjFjLTEuMi0yLjQtMi4xLTUtMi41LTcuOGMtLjktNi41IC45LTEyLjggNC43LTE3LjhjMi4xLTIuOCA0LjgtNS4xIDguMS02LjhjMS42LS44IDMuNC0xLjUgNS4yLTJsMjMtNi4zQzIwOS4yIDYzLjUgMjQ3IDQ1LjggMjgxIDIyek00MTYgMTI4SDMyMCAyMjR2NjRoNzIgNDggNzJWMTI4ek0xNjAgMjg4djY0SDI5NmgyNCAyNEg0ODBWMjg4SDM0NCAzMjBoMEgyOTYgMTYwelwiXVxufTtcbnZhciBmYVNjYWxlVW5iYWxhbmNlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2FsZS11bmJhbGFuY2VkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJiYWxhbmNlLXNjYWxlLWxlZnRcIl0sIFwiZjUxNVwiLCBcIk01MjIuMSA2Mi40YzE2LjgtNS42IDI1LjgtMjMuNyAyMC4yLTQwLjVTNTE4LjYtMy45IDUwMS45IDEuNmwtMTEzIDM3LjdDMzc1IDE1LjggMzQ5LjMgMCAzMjAgMGMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCAzIC4yIDUuOSAuNSA4LjhMMTE3LjkgMTI5LjZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmwxMzUuNS00NS4yYzQuNSAzLjIgOS4zIDUuOSAxNC40IDguMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINTEyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1MlYxNTMuM2MyMS05LjIgMzcuMi0yNyA0NC4yLTQ5bDEyNS45LTQyek00MzkuNiAyODhMNTEyIDE2My44IDU4NC40IDI4OEg0MzkuNnpNNTEyIDM4NGM2Mi45IDAgMTE1LjItMzQgMTI2LTc4LjljMi42LTExLTEtMjIuMy02LjctMzIuMUw1MzYuMSAxMDkuOGMtNS04LjYtMTQuMi0xMy44LTI0LjEtMTMuOHMtMTkuMSA1LjMtMjQuMSAxMy44TDM5Mi43IDI3My4xYy01LjcgOS44LTkuMyAyMS4xLTYuNyAzMi4xQzM5Ni44IDM1MCA0NDkuMSAzODQgNTEyIDM4NHpNMTI5LjIgMjkxLjhMMjAxLjYgNDE2SDU2LjdsNzIuNC0xMjQuMnpNMy4yIDQzMy4xQzE0IDQ3OCA2Ni4zIDUxMiAxMjkuMiA1MTJzMTE1LjItMzQgMTI2LTc4LjljMi42LTExLTEtMjIuMy02LjctMzIuMUwxNTMuMiAyMzcuOGMtNS04LjYtMTQuMi0xMy44LTI0LjEtMTMuOHMtMTkuMSA1LjMtMjQuMSAxMy44TDkuOSA0MDEuMWMtNS43IDkuOC05LjMgMjEuMS02LjcgMzIuMXpcIl1cbn07XG52YXIgZmFCYWxhbmNlU2NhbGVMZWZ0ID0gZmFTY2FsZVVuYmFsYW5jZWQ7XG52YXIgZmFTb3J0VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC11cCcsXG4gIGljb246IFszMjAsIDUxMiwgW1wic29ydC1hc2NcIl0sIFwiZjBkZVwiLCBcIk0xODIuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOEgyODhjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtMTI4LTEyOHpcIl1cbn07XG52YXIgZmFTb3J0QXNjID0gZmFTb3J0VXA7XG52YXIgZmFDb21tZW50RG90cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50LWRvdHMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgxNzIsIDYyMDc1LCBcImNvbW1lbnRpbmdcIl0sIFwiZjRhZFwiLCBcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6TTEyOCAyMDhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTk2IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJdXG59O1xudmFyIGZhQ29tbWVudGluZyA9IGZhQ29tbWVudERvdHM7XG52YXIgZmFQbGFudFdpbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbnQtd2lsdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTVhYVwiLCBcIk0yODggMTIwYzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZ2MTNjLTI5LjMgMTAtNDggMzQuNS00OCA3MC4xYzAgMjcuOSAyNS4zIDc0LjggNjYgMTExLjZjMy44IDMuNSA4LjkgNS4zIDE0IDUuM3MxMC4yLTEuOCAxNC01LjNjNDAuNy0zNi44IDY2LTgzLjcgNjYtMTExLjZjMC0zNS42LTE4LjctNjAuMi00OC03MC4xVjEyMEM0NjQgNTMuNyA0MTAuMyAwIDM0NCAwUzIyNCA1My43IDIyNCAxMjB2MjEuOEMyMDcuMyAxMzMgMTg4LjIgMTI4IDE2OCAxMjhjLTY2LjMgMC0xMjAgNTMuNy0xMjAgMTIwdjEzYy0yOS4zIDEwLTQ4IDM0LjUtNDggNzAuMUMwIDM1OSAyNS4zIDQwNS45IDY2IDQ0Mi43YzMuOCAzLjUgOC45IDUuMyAxNCA1LjNzMTAuMi0xLjggMTQtNS4zYzQwLjctMzYuOCA2Ni04My43IDY2LTExMS42YzAtMzUuNi0xOC43LTYwLjItNDgtNzAuMVYyNDhjMC0zMC45IDI1LjEtNTYgNTYtNTZzNTYgMjUuMSA1NiA1NnYzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyODAgMjQ4IDEyMHpcIl1cbn07XG52YXIgZmFEaWFtb25kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpYW1vbmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5ODMwXSwgXCJmMjE5XCIsIFwiTTI4NC4zIDExLjdjLTE1LjYtMTUuNi00MC45LTE1LjYtNTYuNiAwbC0yMTYgMjE2Yy0xNS42IDE1LjYtMTUuNiA0MC45IDAgNTYuNmwyMTYgMjE2YzE1LjYgMTUuNiA0MC45IDE1LjYgNTYuNiAwbDIxNi0yMTZjMTUuNi0xNS42IDE1LjYtNDAuOSAwLTU2LjZsLTIxNi0yMTZ6XCJdXG59O1xudmFyIGZhRmFjZUdyaW5TcXVpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLXNxdWludCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUxOCwgXCJncmluLXNxdWludFwiXSwgXCJmNTg1XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTEzMy41IDE0Ni43bDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJdXG59O1xudmFyIGZhR3JpblNxdWludCA9IGZhRmFjZUdyaW5TcXVpbnQ7XG52YXIgZmFIYW5kSG9sZGluZ0RvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmctZG9sbGFyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJoYW5kLWhvbGRpbmctdXNkXCJdLCBcImY0YzBcIiwgXCJNMzEyIDI0VjM0LjVjNi40IDEuMiAxMi42IDIuNyAxOC4yIDQuMmMxMi44IDMuNCAyMC40IDE2LjYgMTcgMjkuNHMtMTYuNiAyMC40LTI5LjQgMTdjLTEwLjktMi45LTIxLjEtNC45LTMwLjItNWMtNy4zLS4xLTE0LjcgMS43LTE5LjQgNC40Yy0yLjEgMS4zLTMuMSAyLjQtMy41IDNjLS4zIC41LS43IDEuMi0uNyAyLjhjMCAuMyAwIC41IDAgLjZjLjIgLjIgLjkgMS4yIDMuMyAyLjZjNS44IDMuNSAxNC40IDYuMiAyNy40IDEwLjFsLjkgLjNjMTEuMSAzLjMgMjUuOSA3LjggMzcuOSAxNS4zYzEzLjcgOC42IDI2LjEgMjIuOSAyNi40IDQ0LjljLjMgMjIuNS0xMS40IDM4LjktMjYuNyA0OC41Yy02LjcgNC4xLTEzLjkgNy0yMS4zIDguOFYyMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjIwLjZjLTkuNS0yLjMtMTguMi01LjMtMjUuNi03LjhjLTIuMS0uNy00LjEtMS40LTYtMmMtMTIuNi00LjItMTkuNC0xNy44LTE1LjItMzAuNHMxNy44LTE5LjQgMzAuNC0xNS4yYzIuNiAuOSA1IDEuNyA3LjMgMi41YzEzLjYgNC42IDIzLjQgNy45IDMzLjkgOC4zYzggLjMgMTUuMS0xLjYgMTkuMi00LjFjMS45LTEuMiAyLjgtMi4yIDMuMi0yLjljLjQtLjYgLjktMS44IC44LTQuMWwwLS4yYzAtMSAwLTIuMS00LTQuNmMtNS43LTMuNi0xNC4zLTYuNC0yNy4xLTEwLjNsLTEuOS0uNmMtMTAuOC0zLjItMjUtNy41LTM2LjQtMTQuNGMtMTMuNS04LjEtMjYuNS0yMi0yNi42LTQ0LjFjLS4xLTIyLjkgMTIuOS0zOC42IDI3LjctNDcuNGM2LjQtMy44IDEzLjMtNi40IDIwLjItOC4yVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6TTU2OC4yIDMzNi4zYzEzLjEgMTcuOCA5LjMgNDIuOC04LjUgNTUuOUw0MzMuMSA0ODUuNWMtMjMuNCAxNy4yLTUxLjYgMjYuNS04MC43IDI2LjVIMTkyIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJINjguOGw0NC45LTM2YzIyLjctMTguMiA1MC45LTI4IDgwLTI4SDI3MmgxNiA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyODggMjcyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDM5Mi42bDExOS43LTg4LjJjMTcuOC0xMy4xIDQyLjgtOS4zIDU1LjkgOC41ek0xOTMuNiAzODRsMCAwLS45IDBjLjMgMCAuNiAwIC45IDB6XCJdXG59O1xudmFyIGZhSGFuZEhvbGRpbmdVc2QgPSBmYUhhbmRIb2xkaW5nRG9sbGFyO1xudmFyIGZhQmFjdGVyaXVtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY3Rlcml1bScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTA1YVwiLCBcIk00MjMuMSAzMC42YzMuNi0xMi43LTMuNy0yNi0xNi41LTI5LjdzLTI2IDMuNy0yOS43IDE2LjVsLTQuMiAxNC43Yy05LjgtLjQtMTkuOSAuNS0yOS45IDIuOGMtMTIuMSAyLjgtMjMuNyA1LjktMzQuOSA5LjRsLTUuOS0xMy43Yy01LjItMTIuMi0xOS4zLTE3LjgtMzEuNS0xMi42cy0xNy44IDE5LjMtMTIuNiAzMS41bDQuOSAxMS4zYy0yMiA5LjQtNDIgMjAuMS02MC4yIDMxLjhMMTk2IDgyLjdjLTcuNC0xMS0yMi4zLTE0LTMzLjMtNi43cy0xNCAyMi4zLTYuNyAzMy4zbDcuOCAxMS42Yy0xOCAxNS0zMy43IDMwLjgtNDcuMyA0Ny4xTDEwMyAxNTcuM2MtMTAuNC04LjMtMjUuNS02LjYtMzMuNyAzLjdzLTYuNiAyNS41IDMuNyAzMy43bDE1IDEyYy0yLjEgMy4yLTQuMSA2LjUtNiA5LjdjLTkuNCAxNS43LTE3IDMxLTIzLjIgNDUuM2wtOS45LTMuOWMtMTIuMy00LjktMjYuMyAxLjEtMzEuMiAxMy40czEuMSAyNi4zIDEzLjQgMzEuMmwxMS42IDQuNmMtLjMgMS4xLS42IDIuMS0uOSAzLjFjLTMuNSAxMi41LTUuNyAyMy4yLTcuMSAzMS4zYy0uNyA0LjEtMS4yIDcuNS0xLjYgMTAuM2MtLjIgMS40LS4zIDIuNi0uNCAzLjZsLS4xIDEuNC0uMSAuNiAwIC4zIDAgLjFjMCAwIDAgLjEgMzkuMiAzLjdsMCAwLTM5LjItMy42Yy0uNSA1LS42IDEwLS40IDE0LjlsLTE0LjcgNC4yQzQuNyAzODAuNi0yLjcgMzkzLjggLjkgNDA2LjZzMTYuOSAyMC4xIDI5LjcgMTYuNWwxMy44LTMuOWMxMC42IDIwLjcgMjcuNiAzNy44IDQ4LjUgNDguNWwtMy45IDEzLjdjLTMuNiAxMi43IDMuNyAyNiAxNi41IDI5LjdzMjYtMy43IDI5LjctMTYuNWw0LjItMTQuN2MyMy44IDEgNDYuMy01LjUgNjUuMS0xNy42TDIxNSA0NzNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0xMC42LTEwLjZjOS4xLTE0LjEgMTUuMS0zMC41IDE3LTQ4LjNsLjEtLjhjLjMtMS43IDEtNS4xIDIuMy05LjhsLjItLjggMTIuNiA1LjRjMTIuMiA1LjIgMjYuMy0uNCAzMS41LTEyLjZzLS40LTI2LjMtMTIuNi0zMS41bC0xMS4zLTQuOGM5LjktMTQuOSAyNC45LTMxLjYgNDguNi00NmwyLjEgNy41YzMuNiAxMi43IDE2LjkgMjAuMSAyOS43IDE2LjVzMjAuMS0xNi45IDE2LjUtMjkuN0wzNzEgMjU5LjJjNi45LTIuMiAxNC4zLTQuMyAyMi4yLTYuMWMxMi45LTMgMjQuNy04IDM1LjItMTQuOEw0MzkgMjQ5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTAuNi0xMC42YzEyLjItMTkgMTguNi00MS42IDE3LjYtNjUuMWwxNC43LTQuMmMxMi43LTMuNiAyMC4xLTE2LjkgMTYuNS0yOS43cy0xNi45LTIwLjEtMjkuNy0xNi41bC0xMy43IDMuOWMtMTAuOC0yMS4yLTI4LTM4LTQ4LjUtNDguNWwzLjktMTMuOHpNOTIuMSAzNjMuM2wwIDBMMTQ0IDM2OGwtNTEuOS00Ljd6TTExMiAzMjBhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMjQwIDE4NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJdXG59O1xudmFyIGZhSGFuZFBvaW50ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1wb2ludGVyJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjVhXCIsIFwiTTEyOCA0MGMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwVjE4OC4yYzguNS03LjYgMTkuNy0xMi4yIDMyLTEyLjJjMjAuNiAwIDM4LjIgMTMgNDUgMzEuMmM4LjgtOS4zIDIxLjItMTUuMiAzNS0xNS4yYzI1LjMgMCA0NiAxOS41IDQ3LjkgNDQuM2M4LjUtNy43IDE5LjgtMTIuMyAzMi4xLTEyLjNjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDggMTYgNDhjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhsLTE2IDBIMjQwbC0uMSAwaC01LjJjLTUgMC05LjktLjMtMTQuNy0xYy01NS4zLTUuNi0xMDYuMi0zNC0xNDAtNzlMOCAzMzZjLTEzLjMtMTcuNy05LjctNDIuNyA4LTU2czQyLjctOS43IDU2IDhsNTYgNzQuN1Y0MHpNMjQwIDMwNGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMwNHptNDgtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMwNGMwLTguOC03LjItMTYtMTYtMTZ6bTgwIDE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMzA0elwiXVxufTtcbnZhciBmYURydW1TdGVlbHBhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkcnVtLXN0ZWVscGFuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTZhXCIsIFwiTTI4OCAzMmMxNTkuMSAwIDI4OCA0OCAyODggMTI4VjM1MmMwIDgwLTEyOC45IDEyOC0yODggMTI4UzAgNDMyIDAgMzUyVjE2MEMwIDgwIDEyOC45IDMyIDI4OCAzMnpNNTI4IDE2MGMwLTkuOS04LTI5LjktNTUtNDkuOGMtMTguNi03LjktNDAuOS0xNC40LTY2LTE5LjRsLTI3LjggNDMuNmMtNy4zIDExLjUtMTEuMiAyNC44LTExLjIgMzguNGMwIDE3LjUgNi40IDM0LjQgMTguMSA0Ny41bDkuOCAxMWMyOS44LTUuMiA1NS45LTEyLjUgNzcuMi0yMS41YzQ3LjEtMTkuOSA1NS0zOS45IDU1LTQ5Ljh6TTM0OS4yIDIzNy4zYy04LTI2LjItMzIuNC00NS4zLTYxLjItNDUuM3MtNTMuMyAxOS4xLTYxLjIgNDUuM2MxOS40IDEuNyAzOS45IDIuNyA2MS4yIDIuN3M0MS44LS45IDYxLjItMi43ek0xNjkgOTAuOGMtMjUuMiA1LTQ3LjQgMTEuNi02NiAxOS40QzU2IDEzMC4xIDQ4IDE1MC4xIDQ4IDE2MHM4IDI5LjkgNTUgNDkuOGMyMS4zIDkgNDcuNCAxNi4zIDc3LjIgMjEuNWw5LjgtMTFjMTEuNi0xMy4xIDE4LjEtMzAgMTguMS00Ny41YzAtMTMuNi0zLjktMjYuOS0xMS4yLTM4LjRMMTY5IDkwLjh6bTU2LjMtOEMyMjQuNSA4NyAyMjQgOTEuNSAyMjQgOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGMwLTQuNS0uNS05LTEuNC0xMy4yQzMzMC44IDgxIDMwOS44IDgwIDI4OCA4MHMtNDIuOCAxLTYyLjYgMi44elwiXVxufTtcbnZhciBmYUhhbmRTY2lzc29ycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXNjaXNzb3JzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjU3XCIsIFwiTTQwIDIwOGMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MGwxODAuMiAwYy03LjYgOC41LTEyLjIgMTkuNy0xMi4yIDMyYzAgMjUuMyAxOS41IDQ2IDQ0LjMgNDcuOWMtNy43IDguNS0xMi4zIDE5LjgtMTIuMyAzMi4xYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDMyIDAgNjQgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGwwLTExMy4xYzAtNDAuMi0xNi03OC44LTQ0LjQtMTA3LjNDNDQ0LjggNzYuOCA0MTMuOSA2NCAzODEuNyA2NEwzMzYgNjRjLTIxLjMgMC0zOS4zIDEzLjktNDUuNiAzMy4xbDc0LjUgMjMuN2M4LjQgMi43IDEzLjEgMTEuNyAxMC40IDIwLjFzLTExLjcgMTMuMS0yMC4xIDEwLjRMMjg4IDEyOS45bDAgLjFMODQgNjUuOEM2Mi45IDU5LjIgNDAuNSA3MC45IDMzLjggOTJzNS4xIDQzLjUgMjYuMiA1MC4yTDI2OS41IDIwOCA0MCAyMDh6XCJdXG59O1xudmFyIGZhSGFuZHNQcmF5aW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLXByYXlpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInByYXlpbmctaGFuZHNcIl0sIFwiZjY4NFwiLCBcIk0zNTEuMiA0LjhjMy4yLTIgNi42LTMuMyAxMC00LjFjNC43LTEgOS42LS45IDE0LjEgLjFjNy43IDEuOCAxNC44IDYuNSAxOS40IDEzLjZMNTE0LjYgMTk0LjJjOC44IDEzLjEgMTMuNCAyOC42IDEzLjQgNDQuNHY3My41YzAgNi45IDQuNCAxMyAxMC45IDE1LjJsNzkuMiAyNi40QzYzMS4yIDM1OCA2NDAgMzcwLjIgNjQwIDM4NHY5NmMwIDkuOS00LjYgMTkuMy0xMi41IDI1LjRzLTE4LjEgOC4xLTI3LjcgNS41TDQzMSA0NjUuOWMtNTYtMTQuOS05NS02NS43LTk1LTEyMy43VjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjE5LjFjMC03LTEuOC0xMy44LTUuMy0xOS44TDM0MC4zIDQ4LjFjLTEuNy0zLTIuOS02LjEtMy42LTkuM2MtMS00LjctMS05LjYgLjEtMTQuMWMxLjktOCA2LjgtMTUuMiAxNC4zLTE5Ljl6bS02Mi40IDBjNy41IDQuNiAxMi40IDExLjkgMTQuMyAxOS45YzEuMSA0LjYgMS4yIDkuNCAuMSAxNC4xYy0uNyAzLjItMS45IDYuMy0zLjYgOS4zTDIxMy4zIDE5OS4zYy0zLjUgNi01LjMgMTIuOS01LjMgMTkuOFYzMDRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNDIuM2MwIDU4LTM5IDEwOC43LTk1IDEyMy43bC0xNjguNyA0NWMtOS42IDIuNi0xOS45IC41LTI3LjctNS41UzAgNDkwIDAgNDgwVjM4NGMwLTEzLjggOC44LTI2IDIxLjktMzAuNGw3OS4yLTI2LjRjNi41LTIuMiAxMC45LTguMyAxMC45LTE1LjJWMjM4LjVjMC0xNS44IDQuNy0zMS4yIDEzLjQtNDQuNEwyNDUuMiAxNC41YzQuNi03LjEgMTEuNy0xMS44IDE5LjQtMTMuNmM0LjYtMS4xIDkuNC0xLjIgMTQuMS0uMWMzLjUgLjggNi45IDIuMSAxMCA0LjF6XCJdXG59O1xudmFyIGZhUHJheWluZ0hhbmRzID0gZmFIYW5kc1ByYXlpbmc7XG52YXIgZmFBcnJvd1JvdGF0ZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXJvdGF0ZS1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzg2MzUsIFwiYXJyb3ctcmlnaHQtcm90YXRlXCIsIFwiYXJyb3ctcm90YXRlLWZvcndhcmRcIiwgXCJyZWRvXCJdLCBcImYwMWVcIiwgXCJNMzg2LjMgMTYwSDMzNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0NjRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NTEuMkw0MTQuNCA5Ny42Yy04Ny41LTg3LjUtMjI5LjMtODcuNS0zMTYuOCAwcy04Ny41IDIyOS4zIDAgMzE2LjhzMjI5LjMgODcuNSAzMTYuOCAwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwcy02Mi41LTE2My44IDAtMjI2LjNzMTYzLjgtNjIuNSAyMjYuMyAwTDM4Ni4zIDE2MHpcIl1cbn07XG52YXIgZmFBcnJvd1JpZ2h0Um90YXRlID0gZmFBcnJvd1JvdGF0ZVJpZ2h0O1xudmFyIGZhQXJyb3dSb3RhdGVGb3J3YXJkID0gZmFBcnJvd1JvdGF0ZVJpZ2h0O1xudmFyIGZhUmVkbyA9IGZhQXJyb3dSb3RhdGVSaWdodDtcbnZhciBmYUJpb2hhemFyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaW9oYXphcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFs5NzYzXSwgXCJmNzgwXCIsIFwiTTE3My4yIDBjLTEuOCAwLTMuNSAuNy00LjggMkMxMzguNSAzMi4zIDEyMCA3NCAxMjAgMTIwYzAgMjYuMiA2IDUwLjkgMTYuNiA3M2MtMjIgMi40LTQzLjggOS4xLTY0LjIgMjAuNUMzNy45IDIzMi44IDEzLjMgMjYyLjQgLjQgMjk2Yy0uNyAxLjctLjUgMy43IC41IDUuMmMyLjIgMy43IDcuNCA0LjMgMTAuNiAxLjNDNjQuMiAyNTQuMyAxNTggMjQ1LjEgMjA1IDMyNHMtOC4xIDE1My4xLTc3LjYgMTczLjJjLTQuMiAxLjItNi4zIDUuOS00LjEgOS42YzEgMS42IDIuNiAyLjcgNC41IDNjMzYuNSA1LjkgNzUuMiAuMSAxMDkuNy0xOS4yYzIwLjQtMTEuNCAzNy40LTI2LjUgNTAuNS00My44YzEzLjEgMTcuMyAzMC4xIDMyLjQgNTAuNSA0My44YzM0LjUgMTkuMyA3My4zIDI1LjIgMTA5LjcgMTkuMmMxLjktLjMgMy41LTEuNCA0LjUtM2MyLjItMy43IC4xLTguNC00LjEtOS42QzM3OS4xIDQ3Ny4xIDMyNCA0MDMgMzcxIDMyNHMxNDAuNy02OS44IDE5My41LTIxLjRjMy4yIDIuOSA4LjQgMi4zIDEwLjYtMS4zYzEtMS42IDEuMS0zLjUgLjUtNS4yYy0xMi45LTMzLjYtMzcuNS02My4yLTcyLjEtODIuNWMtMjAuNC0xMS40LTQyLjItMTguMS02NC4yLTIwLjVDNDUwIDE3MC45IDQ1NiAxNDYuMiA0NTYgMTIwYzAtNDYtMTguNS04Ny43LTQ4LjQtMTE4Yy0xLjMtMS4zLTMtMi00LjgtMmMtNSAwLTguNCA1LjItNi43IDkuOUM0MjEuNyA4MC41IDM4NS42IDE3NiAyODggMTc2UzE1NC4zIDgwLjUgMTc5LjkgOS45YzEuNy00LjctMS42LTkuOS02LjctOS45ek0yNDAgMjcyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTE4MS43IDQxNy42YzYuMy0xMS44IDkuOC0yNS4xIDguNi0zOS44Yy0xOS41LTE4LTM0LTQxLjQtNDEuMi02Ny44Yy0xMi41LTguMS0yNi4yLTExLjgtNDAtMTIuNGMtOS0uNC0xOC4xIC42LTI3LjEgMi43YzcuOCA1Ny4xIDM4LjcgMTA2LjggODIuOSAxMzkuNGM2LjgtNi43IDEyLjYtMTQuMSAxNi44LTIyLjF6TTI4OCA2NGMtMjguOCAwLTU2LjMgNS45LTgxLjIgMTYuNWMyIDguMyA1IDE2LjIgOSAyMy41YzYuOCAxMi40IDE2LjcgMjMuMSAzMC4xIDMwLjNjMTMuMy00LjEgMjcuNS02LjMgNDIuMi02LjNzMjguOCAyLjIgNDIuMiA2LjNjMTMuNC03LjIgMjMuMy0xNy45IDMwLjEtMzAuM2M0LTcuMyA3LTE1LjIgOS0yMy41QzM0NC4zIDY5LjkgMzE2LjggNjQgMjg4IDY0ek00MjYuOSAzMTBjLTcuMiAyNi40LTIxLjcgNDkuNy00MS4yIDY3LjhjLTEuMiAxNC43IDIuMiAyOC4xIDguNiAzOS44YzQuMyA4IDEwIDE1LjQgMTYuOCAyMi4xYzQ0LjMtMzIuNiA3NS4yLTgyLjMgODIuOS0xMzkuNGMtOS0yLjItMTguMS0zLjEtMjcuMS0yLjdjLTEzLjggLjYtMjcuNSA0LjQtNDAgMTIuNHpcIl1cbn07XG52YXIgZmFMb2NhdGlvbkNyb3NzaGFpcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jYXRpb24tY3Jvc3NoYWlycycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibG9jYXRpb25cIl0sIFwiZjYwMVwiLCBcIk0yNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2Ni43QzM2OC40IDgwLjEgNDMxLjkgMTQzLjYgNDQ1LjMgMjI0SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg0NDUuM0M0MzEuOSAzNjguNCAzNjguNCA0MzEuOSAyODggNDQ1LjNWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0NS4zQzE0My42IDQzMS45IDgwLjEgMzY4LjQgNjYuNyAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINjYuN0M4MC4xIDE0My42IDE0My42IDgwLjEgMjI0IDY2LjdWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTEyOCAyNTZhMTI4IDEyOCAwIDEgMCAyNTYgMCAxMjggMTI4IDAgMSAwIC0yNTYgMHptMTI4LTgwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwiXVxufTtcbnZhciBmYUxvY2F0aW9uID0gZmFMb2NhdGlvbkNyb3NzaGFpcnM7XG52YXIgZmFNYXJzRG91YmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMtZG91YmxlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbOTg5MV0sIFwiZjIyN1wiLCBcIk0zMTIgMzJjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzMuNCAzMy40TDI3NS44IDE1OWMtMjguNC0xOS41LTYyLjctMzEtOTkuOC0zMUM3OC44IDEyOCAwIDIwNi44IDAgMzA0czc4LjggMTc2IDE3NiAxNzZzMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDUyLjYtNTIuNkw0MDcgMTg1YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMTJ6bTg4IDQ4aDB2MGwwIDB6TTY0IDMwNGExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgNjQgMzA0ek0zNjggNDgwYzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2YzAtMzctMTEuNC03MS40LTMxLTk5LjhsNTIuNi01Mi42TDU5OSAxODVjNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4yVjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDUwNGMtOS43IDAtMTguNSA1LjgtMjIuMiAxNC44Yy0xLjIgMi45LTEuOCA2LTEuOCA5bDAgLjJ2LjJjMCA2LjIgMi41IDEyLjIgNyAxNi44bDMzLjQgMzMuNEw0ODAgMTQ2LjdWMTY4YzAgMjIuNi0xMy42IDQzLjEtMzQuNiA1MS43Yy0uOCAuMy0xLjcgLjctMi41IDFDNDY1LjcgMjQxLjIgNDgwIDI3MC45IDQ4MCAzMDRjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJjLTUuNCAwLTEwLjgtLjQtMTYtMS4xYy0xMi45IDIwLjQtMjkuMSAzOC4zLTQ4LjEgNTMuMWMxOS44IDcuOCA0MS40IDEyIDY0IDEyelwiXVxufTtcbnZhciBmYUNoaWxkRHJlc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hpbGQtZHJlc3MnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImU1OWNcIiwgXCJNMjI0IDY0QTY0IDY0IDAgMSAwIDk2IDY0YTY0IDY0IDAgMSAwIDEyOCAwek04OCA0MDB2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MDBoMTZ2ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MDBoMTcuOGMxMC45IDAgMTguNi0xMC43IDE1LjItMjEuMWwtMzEuMS05My40IDI4LjYgMzcuOGMxMC43IDE0LjEgMzAuOCAxNi44IDQ0LjggNi4yczE2LjgtMzAuNyA2LjItNDQuOEwyNTQuNiAyMDdjLTIyLjQtMjkuNi01Ny41LTQ3LTk0LjYtNDdzLTcyLjIgMTcuNC05NC42IDQ3TDYuNSAyODQuN2MtMTAuNyAxNC4xLTcuOSAzNC4yIDYuMiA0NC44czM0LjIgNy45IDQ0LjgtNi4ybDI4LjctMzcuOEw1NSAzNzguOUM1MS42IDM4OS4zIDU5LjMgNDAwIDcwLjIgNDAwSDg4elwiXVxufTtcbnZhciBmYVVzZXJzQmV0d2VlbkxpbmVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzLWJldHdlZW4tbGluZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OTFcIiwgXCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBINjE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0QzEwLjcgNDggMCAzNy4zIDAgMjR6TTAgNDg4YzAtMTMuMyAxMC43LTI0IDI0LTI0SDYxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6TTgzLjIgMTYwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIgMzIwYzAtMzUuMyAyOC43LTY0IDY0LTY0aDk2YzEyLjIgMCAyMy43IDMuNCAzMy40IDkuNGMtMzcuMiAxNS4xLTY1LjYgNDcuMi03NS44IDg2LjZINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem00NjEuNiAzMmMtMTAuMy00MC4xLTM5LjYtNzIuNi03Ny43LTg3LjRjOS40LTUuNSAyMC40LTguNiAzMi4xLTguNmg5NmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0OTMuNnpNMzkxLjIgMjkwLjRjMzIuMSA3LjQgNTguMSAzMC45IDY4LjkgNjEuNmMzLjUgMTAgNS41IDIwLjggNS41IDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyaC0yMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYzAtMTEuMiAxLjktMjIgNS41LTMyYzEwLjUtMjkuNyAzNS4zLTUyLjggNjYuMS02MC45YzcuOC0yLjEgMTYtMy4xIDI0LjUtMy4xaDk2YzcuNCAwIDE0LjcgLjggMjEuNiAyLjR6bTQ0LTEzMC40YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNMzIxLjYgOTZhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJdXG59O1xudmFyIGZhTHVuZ3NWaXJ1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsdW5ncy12aXJ1cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2N1wiLCBcIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlYxNTYuMmMtOC41LTcuNi0xOS43LTEyLjItMzItMTIuMnMtMjMuNSA0LjYtMzIgMTIuMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNDQ0LjUgMTk1LjVjLTE2LjQtMTYuNC00MS44LTE4LjUtNjAuNS02LjFWMTY1LjNDMzg0IDEyNyA0MTUgOTYgNDUzLjMgOTZjMjEuNyAwIDQyLjggMTAuMiA1NS44IDI4LjhjMTUuNCAyMi4xIDQ0LjMgNjUuNCA3MSAxMTYuOWMyNi41IDUwLjkgNTIuNCAxMTIuNSA1OS42IDE3MC4zYy4yIDEuMyAuMiAyLjYgLjIgNHY3YzAgNDkuMS0zOS44IDg5LTg5IDg5Yy03LjMgMC0xNC41LS45LTIxLjYtMi43bC03Mi43LTE4LjJjLTIwLjktNS4yLTM4LjctMTcuMS01MS41LTMyLjljMTQgMS41IDI4LjUtMyAzOS4yLTEzLjhsLTIyLjYtMjIuNiAyMi42IDIyLjZjMTguNy0xOC43IDE4LjctNDkuMSAwLTY3LjljLTEuMS0xLjEtMS40LTItMS41LTIuNWMtLjEtLjgtLjEtMS44IC40LTIuOXMxLjItMS45IDEuOC0yLjNjLjUtLjMgMS4zLS44IDIuOS0uOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OGMtMS42IDAtMi40LS40LTIuOS0uOGMtLjYtLjQtMS4zLTEuMi0xLjgtMi4zcy0uNS0yLjItLjQtMi45Yy4xLS42IC40LTEuNCAxLjUtMi41YzE4LjctMTguNyAxOC43LTQ5LjEgMC02Ny45ek00MjEuOCA0MjEuOGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBDMzc1LjkgMzk4LjUgMzM2IDQxNSAzMzYgNDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2YzAtMzMtMzkuOS00OS41LTYzLjItMjYuMmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkMyNDEuNSAzNzUuOSAyMjUgMzM2IDE5MiAzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZjMzMgMCA0OS41LTM5LjkgMjYuMi02My4yYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBDMjY0LjEgMjQxLjUgMzA0IDIyNSAzMDQgMTkyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZjMCAzMyAzOS45IDQ5LjUgNjMuMiAyNi4yYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkMzOTguNSAyNjQuMSA0MTUgMzA0IDQ0OCAzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTMzIDAtNDkuNSAzOS45LTI2LjIgNjMuMmM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnpNMTgzLjMgNDkxLjJsLTcyLjcgMTguMmMtNy4xIDEuOC0xNC4zIDIuNy0yMS42IDIuN2MtNDkuMSAwLTg5LTM5LjgtODktODl2LTdjMC0xLjMgLjEtMi43IC4yLTRjNy4yLTU3LjkgMzMuMS0xMTkuNCA1OS42LTE3MC4zYzI2LjgtNTEuNSA1NS42LTk0LjggNzEtMTE2LjljMTMtMTguNiAzNC0yOC44IDU1LjgtMjguOEMyMjUgOTYgMjU2IDEyNyAyNTYgMTY1LjN2MjQuMWMtMTguNi0xMi40LTQ0LTEwLjMtNjAuNSA2LjFjLTE4LjcgMTguNy0xOC43IDQ5LjEgMCA2Ny45YzEuMSAxLjEgMS40IDIgMS41IDIuNWMuMSAuOCAuMSAxLjgtLjQgMi45cy0xLjIgMS45LTEuOCAyLjNjLS41IC4zLTEuMyAuOC0yLjkgLjhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDhjMS42IDAgMi40IC40IDIuOSAuOGMuNiAuNCAxLjMgMS4yIDEuOCAyLjNzLjUgMi4yIC40IDIuOWMtLjEgLjYtLjQgMS40LTEuNSAyLjVjLTE4LjcgMTguNy0xOC43IDQ5LjEgMCA2Ny45YzEwLjcgMTAuNyAyNS4zIDE1LjMgMzkuMiAxMy44Yy0xMi44IDE1LjktMzAuNiAyNy43LTUxLjUgMzIuOXpNMjk2IDMyMGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTcyIDMyYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJdXG59O1xudmFyIGZhRmFjZUdyaW5UZWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4tdGVhcnMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg1MTQsIFwiZ3Jpbi10ZWFyc1wiXSwgXCJmNTg4XCIsIFwiTTU0OC42IDM3MS40QzUwNi40IDQ1NC44IDQxOS45IDUxMiAzMjAgNTEycy0xODYuNC01Ny4yLTIyOC42LTE0MC42YzQuNS0yLjkgOC43LTYuMyAxMi43LTEwLjNjOC4xLTguMSAxMy4yLTE4LjYgMTYuNS0yNi42YzMuNi04LjggNi41LTE4LjQgOC44LTI3LjVjNC42LTE4LjIgNy43LTM3IDkuMy00OC4yYzMuOS0yNi41LTE4LjgtNDkuMi00NS4yLTQ1LjRjLTYuOCAuOS0xNi4yIDIuNC0yNi42IDQuNEM4NS4zIDk0LjUgMTkxLjYgMCAzMjAgMFM1NTQuNyA5NC41IDU3My4yIDIxNy43Yy0xMC4zLTItMTkuOC0zLjUtMjYuNi00LjRjLTI2LjUtMy45LTQ5LjIgMTguOC00NS4yIDQ1LjRjMS42IDExLjMgNC42IDMwIDkuMyA0OC4yYzIuMyA5LjEgNS4yIDE4LjggOC44IDI3LjVjMy4zIDguMSA4LjQgMTguNSAxNi41IDI2LjZjMy45IDMuOSA4LjIgNy40IDEyLjcgMTAuM3pNMTA3IDI1NC4xYy0zLjEgMjEuNS0xMS40IDcwLjItMjUuNSA4NC40Yy0uOSAxLTEuOSAxLjgtMi45IDIuN0M2MCAzNTYuNyAzMiAzNTUuNSAxNC4zIDMzNy43Yy0xOC43LTE4LjctMTkuMS00OC44LS43LTY3LjJjOC42LTguNiAzMC4xLTE1LjEgNTAuNS0xOS42YzEzLTIuOCAyNS41LTQuOCAzMy45LTZjNS40LS44IDkuOSAzLjcgOSA5em00NTQuNSA4Ny4xYy0uOC0uNi0xLjUtMS4zLTIuMy0yYy0uMi0uMi0uNS0uNC0uNy0uN2MtMTQuMS0xNC4xLTIyLjUtNjIuOS0yNS41LTg0LjRjLS44LTUuNCAzLjctOS45IDktOWMxIC4xIDIuMiAuMyAzLjMgLjVjOC4yIDEuMiAxOS4yIDMgMzAuNiA1LjVjMjAuNCA0LjQgNDEuOSAxMC45IDUwLjUgMTkuNmMxOC40IDE4LjQgMTggNDguNS0uNyA2Ny4yYy0xNy43IDE3LjctNDUuNyAxOS02NC4yIDMuNHptLTkwLjEtOS43YzUtMTEuOC03LTIyLjUtMTkuMy0xOC43Yy0zOS43IDEyLjItODQuNCAxOS0xMzEuOCAxOXMtOTIuMS02LjgtMTMxLjgtMTljLTEyLjMtMy44LTI0LjMgNi45LTE5LjMgMTguN2MyNSA1OS4xIDgzLjIgMTAwLjUgMTUxLjEgMTAwLjVzMTI2LjItNDEuNCAxNTEuMS0xMDAuNXpNMjgxLjYgMjI4LjhsMCAwIDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzE5MC43IDE4OC40IDE4NCAyMDYuMSAxODQgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMHptMTYwIDBsMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMzUwLjcgMTg4LjQgMzQ0IDIwNi4xIDM0NCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhsMCAwIDAgMCAwIDAgLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjIgMCAwIDAgMHpcIl1cbn07XG52YXIgZmFHcmluVGVhcnMgPSBmYUZhY2VHcmluVGVhcnM7XG52YXIgZmFQaG9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaG9uZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODIyMiwgMTI4Mzc5XSwgXCJmMDk1XCIsIFwiTTE2NC45IDI0LjZjLTcuNy0xOC42LTI4LTI4LjUtNDcuNC0yMy4ybC04OCAyNEMxMi4xIDMwLjIgMCA0NiAwIDY0QzAgMzExLjQgMjAwLjYgNTEyIDQ0OCA1MTJjMTggMCAzMy44LTEyLjEgMzguNi0yOS41bDI0LTg4YzUuMy0xOS40LTQuNi0zOS43LTIzLjItNDcuNGwtOTYtNDBjLTE2LjMtNi44LTM1LjItMi4xLTQ2LjMgMTEuNkwzMDQuNyAzNjhDMjM0LjMgMzM0LjcgMTc3LjMgMjc3LjcgMTQ0IDIwNy4zTDE5My4zIDE2N2MxMy43LTExLjIgMTguNC0zMCAxMS42LTQ2LjNsLTQwLTk2elwiXVxufTtcbnZhciBmYUNhbGVuZGFyWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXIteG1hcmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImNhbGVuZGFyLXRpbWVzXCJdLCBcImYyNzNcIiwgXCJNMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMzIwVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMzJWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zMiAxOTJINDgwVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg4MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTkyek0zMzcgMzA1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTQ3IDQ3LTQ3LTQ3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDQ3IDQ3LTQ3IDQ3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNDctNDcgNDcgNDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC00Ny00NyA0Ny00N3pcIl1cbn07XG52YXIgZmFDYWxlbmRhclRpbWVzID0gZmFDYWxlbmRhclhtYXJrO1xudmFyIGZhQ2hpbGRSZWFjaGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGlsZC1yZWFjaGluZycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTU5ZFwiLCBcIk0yNTYgNjRBNjQgNjQgMCAxIDAgMTI4IDY0YTY0IDY0IDAgMSAwIDEyOCAwek0xNTIuOSAxNjkuM2MtMjMuNy04LjQtNDQuNS0yNC4zLTU4LjgtNDUuOEw3NC42IDk0LjJDNjQuOCA3OS41IDQ1IDc1LjYgMzAuMiA4NS40cy0xOC43IDI5LjctOC45IDQ0LjRMNDAuOSAxNTljMTguMSAyNy4xIDQyLjggNDguNCA3MS4xIDYyLjRWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjIxLjZjMjkuMS0xNC4yIDU0LjQtMzYuMiA3Mi43LTY0LjJsMTguMi0yNy45YzkuNi0xNC44IDUuNC0zNC42LTkuNC00NC4zcy0zNC42LTUuNS00NC4zIDkuNEwyOTEgMTIyLjRjLTIxLjggMzMuNC01OC45IDUzLjYtOTguOCA1My42Yy0xMi42IDAtMjQuOS0yLTM2LjYtNS44Yy0uOS0uMy0xLjgtLjctMi43LS45elwiXVxufTtcbnZhciBmYUhlYWRTaWRlVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLXZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDY0XCIsIFwiTTAgMjI0LjJDMCAxMDAuNiAxMDAuMiAwIDIyNCAwaDI0Yzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNi4yIDcuOCA5LjYgMTcuNCA5LjYgMjcuNGMwIDI0LjItMTkuNiA0My44LTQzLjggNDMuOEg0NDh2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzIwdjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek0yMjQgNjRjLTguOCAwLTE2IDcuMi0xNiAxNmMwIDMzLTM5LjkgNDkuNS02My4yIDI2LjJjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZDMTQ1LjUgMTUyLjEgMTI5IDE5MiA5NiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZjMzMgMCA0OS41IDM5LjkgMjYuMiA2My4yYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBDMTY4LjEgMjg2LjUgMjA4IDMwMyAyMDggMzM2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZjMC0zMyAzOS45LTQ5LjUgNjMuMi0yNi4yYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkMzMDIuNSAyNjMuOSAzMTkgMjI0IDM1MiAyMjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTMzIDAtNDkuNS0zOS45LTI2LjItNjMuMmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwQzI3OS45IDEyOS41IDI0MCAxMTMgMjQwIDgwYzAtOC44LTcuMi0xNi0xNi0xNnptLTI0IDk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAgODBhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIl1cbn07XG52YXIgZmFVc2VyR2VhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWdlYXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInVzZXItY29nXCJdLCBcImY0ZmVcIiwgXCJNMjI0IDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDIyNCAwek0xNzguMyAzMDRoOTEuNGMxMS44IDAgMjMuNCAxLjIgMzQuNSAzLjNjLTIuMSAxOC41IDcuNCAzNS42IDIxLjggNDQuOGMtMTYuNiAxMC42LTI2LjcgMzEuNi0yMCA1My4zYzQgMTIuOSA5LjQgMjUuNSAxNi40IDM3LjZzMTUuMiAyMy4xIDI0LjQgMzNjMTUuNyAxNi45IDM5LjYgMTguNCA1Ny4yIDguN3YuOWMwIDkuMiAyLjcgMTguNSA3LjkgMjYuM0gyOS43QzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNHpNNDM2IDIxOC4yYzAtNyA0LjUtMTMuMyAxMS4zLTE0LjhjMTAuNS0yLjQgMjEuNS0zLjcgMzIuNy0zLjdzMjIuMiAxLjMgMzIuNyAzLjdjNi44IDEuNSAxMS4zIDcuOCAxMS4zIDE0Ljh2MzAuNmM3LjkgMy40IDE1LjQgNy43IDIyLjMgMTIuOGwyNC45LTE0LjNjNi4xLTMuNSAxMy43LTIuNyAxOC41IDIuNGM3LjYgOC4xIDE0LjMgMTcuMiAyMC4xIDI3LjJzMTAuMyAyMC40IDEzLjUgMzFjMi4xIDYuNy0xLjEgMTMuNy03LjIgMTcuMmwtMjUgMTQuNGMuNCA0IC43IDguMSAuNyAxMi4zcy0uMiA4LjItLjcgMTIuM2wyNSAxNC40YzYuMSAzLjUgOS4yIDEwLjUgNy4yIDE3LjJjLTMuMyAxMC42LTcuOCAyMS0xMy41IDMxcy0xMi41IDE5LjEtMjAuMSAyNy4yYy00LjggNS4xLTEyLjUgNS45LTE4LjUgMi40bC0yNC45LTE0LjNjLTYuOSA1LjEtMTQuMyA5LjQtMjIuMyAxMi44bDAgMzAuNmMwIDctNC41IDEzLjMtMTEuMyAxNC44Yy0xMC41IDIuNC0yMS41IDMuNy0zMi43IDMuN3MtMjIuMi0xLjMtMzIuNy0zLjdjLTYuOC0xLjUtMTEuMy03LjgtMTEuMy0xNC44VjQ1NC44Yy04LTMuNC0xNS42LTcuNy0yMi41LTEyLjlsLTI0LjcgMTQuM2MtNi4xIDMuNS0xMy43IDIuNy0xOC41LTIuNGMtNy42LTguMS0xNC4zLTE3LjItMjAuMS0yNy4ycy0xMC4zLTIwLjQtMTMuNS0zMWMtMi4xLTYuNyAxLjEtMTMuNyA3LjItMTcuMmwyNC44LTE0LjNjLS40LTQuMS0uNy04LjItLjctMTIuNHMuMi04LjMgLjctMTIuNEwzNDMuOCAzMjVjLTYuMS0zLjUtOS4yLTEwLjUtNy4yLTE3LjJjMy4zLTEwLjYgNy43LTIxIDEzLjUtMzFzMTIuNS0xOS4xIDIwLjEtMjcuMmM0LjgtNS4xIDEyLjQtNS45IDE4LjUtMi40bDI0LjggMTQuM2M2LjktNS4xIDE0LjUtOS40IDIyLjUtMTIuOVYyMTguMnptOTIuMSAxMzMuNWE0OC4xIDQ4LjEgMCAxIDAgLTk2LjEgMCA0OC4xIDQ4LjEgMCAxIDAgOTYuMSAwelwiXVxufTtcbnZhciBmYVVzZXJDb2cgPSBmYVVzZXJHZWFyO1xudmFyIGZhQXJyb3dVcDE5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXVwLTEtOScsXG4gIGljb246IFs1NzYsIDUxMiwgW1wic29ydC1udW1lcmljLXVwXCJdLCBcImYxNjNcIiwgXCJNNDUwLjcgMzhjOC4zIDYgMTMuMyAxNS43IDEzLjMgMjZ2OTZoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDMyIDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYxMDguNGwtNS45IDJjLTE2LjggNS42LTM0LjktMy41LTQwLjUtMjAuMnMzLjUtMzQuOSAyMC4yLTQwLjVsNDgtMTZjOS44LTMuMyAyMC41LTEuNiAyOC44IDQuNHpNMTYwIDMyYzkgMCAxNy41IDMuOCAyMy42IDEwLjRsODggOTZjMTEuOSAxMyAxMS4xIDMzLjMtMiA0NS4ycy0zMy4zIDExLjEtNDUuMi0yTDE5MiAxNDYuM1Y0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTQ2LjNMOTUuNiAxODEuNmMtMTEuOSAxMy0zMi4yIDEzLjktNDUuMiAycy0xMy45LTMyLjItMi00NS4ybDg4LTk2QzE0Mi41IDM1LjggMTUxIDMyIDE2MCAzMnpNNDQ1LjcgMzY0LjlBMzIgMzIgMCAxIDAgNDE4LjMgMzA3YTMyIDMyIDAgMSAwIDI3LjQgNTcuOXptLTQwLjcgNTQuOUMzNjkuNiA0MDguNCAzNDQgMzc1LjIgMzQ0IDMzNmMwLTQ4LjYgMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMjMuNS03LjUgNDYuMy0yMS41IDY1LjJMNDQ5LjcgNDY3Yy0xMC41IDE0LjItMzAuNiAxNy4yLTQ0LjggNi43cy0xNy4yLTMwLjYtNi43LTQ0LjhsNi44LTkuMnpcIl1cbn07XG52YXIgZmFTb3J0TnVtZXJpY1VwID0gZmFBcnJvd1VwMTk7XG52YXIgZmFEb29yQ2xvc2VkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Rvb3ItY2xvc2VkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4NjgyXSwgXCJmNTJhXCIsIFwiTTk2IDY0YzAtMzUuMyAyOC43LTY0IDY0LTY0SDQxNmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDMyIDE0NCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg5NlY2NHpNMzg0IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhU2hpZWxkVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hpZWxkLXZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDZjXCIsIFwiTTI2OS40IDIuOUMyNjUuMiAxIDI2MC43IDAgMjU2IDBzLTkuMiAxLTEzLjQgMi45TDU0LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yYy41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMmMxNi43IDggMzYuMSA4IDUyLjggMEM0NTQuNyA0MjAuNyA0OTUuNSAyMzkuMiA0OTYgMTQwYy4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTI1NiAxMTJjOC44IDAgMTYgNy4yIDE2IDE2YzAgMzMgMzkuOSA0OS41IDYzLjIgMjYuMmM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZDMzM0LjUgMjAwLjEgMzUxIDI0MCAzODQgMjQwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0zMyAwLTQ5LjUgMzkuOS0yNi4yIDYzLjJjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEMzMTEuOSAzMzQuNSAyNzIgMzUxIDI3MiAzODRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC0zMy0zOS45LTQ5LjUtNjMuMi0yNi4yYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42QzE3Ny41IDMxMS45IDE2MSAyNzIgMTI4IDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmMzMyAwIDQ5LjUtMzkuOSAyNi4yLTYzLjJjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEMyMDAuMSAxNzcuNSAyNDAgMTYxIDI0MCAxMjhjMC04LjggNy4yLTE2IDE2LTE2ek0yMzIgMjU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptNzIgMzJhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIl1cbn07XG52YXIgZmFEaWNlU2l4ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpY2Utc2l4JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbOTg2MV0sIFwiZjUyNlwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em0xNjAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG52YXIgZmFNb3NxdWl0b05ldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3NxdWl0by1uZXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MmNcIiwgXCJNMTY4LjggNDYyLjNjLTcuOS00LTExLjEtMTMuNi03LjItMjEuNUwxOTIgMzgwLjJsMC00NC4yYzAtNC4yIDEuNy04LjMgNC43LTExLjNMMjU2IDI2NS40VjI0Mi4yTDEzOS4yIDM0NEM4Ny44IDM5NS4zIDAgMzU4LjkgMCAyODYuM2MwLTQxLjEgMzAuNi03NS44IDcxLjQtODAuOWwxNTkuOS0yMy45LTQ5LjYtNDEuM2MtNS4xLTQuMi03LTExLjEtNC45LTE3LjRsMTMuOS00MS43LTI5LTU4LjFjLTQtNy45LS43LTE3LjUgNy4yLTIxLjVzMTcuNS0uNyAyMS41IDcuMmwzMiA2NGMxLjkgMy44IDIuMiA4LjIgLjkgMTIuMmwtMTIuNSAzNy42TDI1NiAxNjAuNVYxMzcuOWMwLTE0LjkgMTAuMS0yNy4zIDIzLjgtMzFWNjMuN2MwLTQuNSAzLjctOC4yIDguMi04LjJzOC4yIDMuNyA4LjIgOC4yVjEwN2MxMy43IDMuNiAyMy44IDE2LjEgMjMuOCAzMXYyMi42bDQ1LjQtMzcuOEwzNTIuOCA4NS4xYy0xLjMtNC0xLTguNCAuOS0xMi4ybDMyLTY0YzQtNy45IDEzLjYtMTEuMSAyMS41LTcuMnMxMS4xIDEzLjYgNy4yIDIxLjVsLTI5IDU4LjEgMTMuOSA0MS43YzIuMSA2LjIgLjEgMTMuMS00LjkgMTcuNGwtNDkuNiA0MS4zIDE1OS45IDIzLjljMjIuNSAyLjggNDEuOCAxNC42IDU0LjcgMzEuNGMtMi43IDIuNi01LjIgNS40LTcuMyA4LjZjLTguNi0xMi45LTIzLjMtMjEuNS00MC0yMS41cy0zMS40IDguNS00MCAyMS41Yy04LjYtMTIuOS0yMy4zLTIxLjUtNDAtMjEuNWMtMjEuNyAwLTQwIDE0LjMtNDUuOSAzNC4xYy0xMC43IDMuMi0xOS44IDEwLjEtMjUuOSAxOS4ybC00MC4yLTM1djIzLjFsMzIuNCAzMi40Yy0uMyAyLS40IDQuMS0uNCA2LjJjMCAxNi43IDguNSAzMS40IDIxLjUgNDBjLTQgMi42LTcuNSA1LjktMTAuNiA5LjVMMzIwIDMxMC42djUwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMydi01MGwtMzIgMzIgMCA0MS40YzAgMi41LS42IDQuOS0xLjcgNy4ybC0zMiA2NGMtNCA3LjktMTMuNiAxMS4xLTIxLjUgNy4yek01MTIgMjU2YzguOCAwIDE2IDcuMiAxNiAxNnYxNmg0OFYyNzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2MDh2NDhoMTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjA4djQ4aDE2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDYwOHYxNmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY0ODBINTI4djE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjQ4MEg0NDh2MTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNDgwSDQwMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNlY0MDBINDAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDE2VjMyMEg0MDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTZWMjcyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MTZoNDhWMjcyYzAtOC44IDcuMi0xNiAxNi0xNnptMTYgMTEyaDQ4VjMyMEg1Mjh2NDh6bTAgODBoNDhWNDAwSDUyOHY0OHpNNDQ4IDMyMHY0OGg0OFYzMjBINDQ4em0wIDgwdjQ4aDQ4VjQwMEg0NDh6XCJdXG59O1xudmFyIGZhQnJpZGdlV2F0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJpZGdlLXdhdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGNlXCIsIFwiTTAgOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRINTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjM1LjZjMCAxNS43LTEyLjcgMjguNC0yOC40IDI4LjRjLTM3LjMgMC02Ny42IDMwLjItNjcuNiA2Ny42VjM1Mi41Yy0xMi45IDAtMjUuOCAzLjktMzYuOCAxMS43Yy0xOCAxMi40LTQwLjEgMjAuMy01OS4yIDIwLjNoMGwwLS41VjI1NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NlYzODRsMCAuNWMtMTkgMC00MS4yLTcuOS01OS4xLTIwLjNjLTExLjEtNy44LTI0LTExLjctMzYuOS0xMS43VjIyNy42Qzk2IDE5MC4yIDY1LjggMTYwIDI4LjQgMTYwQzEyLjcgMTYwIDAgMTQ3LjMgMCAxMzEuNlY5NnpNMzA2LjUgMzg5LjlDMzI5IDQwNS40IDM1Ni41IDQxNiAzODQgNDE2YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDQ2OS43IDQxNyA0ODAgMzg0IDQ4MGMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQwNS4yIDE2NS4xIDQxNiAxOTIgNDE2YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwiXVxufTtcbnZhciBmYVBlcnNvbkJvb3RoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1ib290aCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc1NlwiLCBcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyaDY0VjMyem0zMjAgMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMnpNMjI0IDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBIMTkyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnpNMzIwIDBjLTkuMyAwLTE4LjEgNC0yNC4yIDExcy04LjggMTYuMy03LjUgMjUuNWwzMS4yIDIxOC42TDI4OC42IDQwOS43Yy0zLjUgMTcuMyA3LjggMzQuMiAyNS4xIDM3LjdzMzQuMi03LjggMzcuNy0yNS4xbC43LTMuNmMxLjMgMTYuNCAxNS4xIDI5LjQgMzEuOSAyOS40YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzIwek0xMTIgODBBNDggNDggMCAxIDAgMTYgODBhNDggNDggMCAxIDAgOTYgMHptMCAyNjEuM1YyNjkuM2w0LjcgNC43YzkgOSAyMS4yIDE0LjEgMzMuOSAxNC4xSDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNTcuM2wtNDEuNi00MS42Yy0xNC4zLTE0LjMtMzMuOC0yMi40LTU0LTIyLjRDMjcuNiAxNjAgMCAxODcuNiAwIDIyMS42djU1LjdsMCAuOVY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzODRsMzIgNDIuN1Y0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MjEuM2MwLTEwLjQtMy40LTIwLjUtOS42LTI4LjhMMTEyIDM0MS4zelwiXVxufTtcbnZhciBmYVRleHRXaWR0aCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZXh0LXdpZHRoJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDM1XCIsIFwiTTY0IDEyOFY5NkgxOTJsMCAxMjhIMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI1NmwwLTEyOEgzODR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgyMjQgNDhDMjEuNSAzMiAwIDUzLjUgMCA4MHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek05LjQgMzYxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45czE5LjgtMTYuNiAxOS44LTI5LjZWNDE2SDMyMHYzMmMwIDEyLjkgNy44IDI0LjYgMTkuOCAyOS42czI1LjcgMi4yIDM0LjktNi45bDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC02NC02NGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlzLTE5LjggMTYuNi0xOS44IDI5LjZ2MzJIMTI4VjMyMGMwLTEyLjktNy44LTI0LjYtMTkuOC0yOS42cy0yNS43LTIuMi0zNC45IDYuOWwtNjQgNjR6XCJdXG59O1xudmFyIGZhSGF0V2l6YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhdC13aXphcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2ZThcIiwgXCJNNjQgNDE2TDE2OC42IDE4MC43YzE1LjMtMzQuNCA0MC4zLTYzLjUgNzItODMuN2wxNDYuOS05NGMzLTEuOSA2LjUtMi45IDEwLTIuOUM0MDcuNyAwIDQxNiA4LjMgNDE2IDE4LjZ2MS42YzAgMi42LS41IDUuMS0xLjQgNy41TDM1NC44IDE3Ni45Yy0xLjkgNC43LTIuOCA5LjctMi44IDE0LjdjMCA1LjUgMS4yIDExIDMuNCAxNi4xTDQ0OCA0MTZIMjQwLjlsMTEuOC0zNS40IDQwLjQtMTMuNWM2LjUtMi4yIDEwLjktOC4zIDEwLjktMTUuMnMtNC40LTEzLTEwLjktMTUuMmwtNDAuNC0xMy41LTEzLjUtNDAuNEMyMzcgMjc2LjQgMjMwLjkgMjcyIDIyNCAyNzJzLTEzIDQuNC0xNS4yIDEwLjlsLTEzLjUgNDAuNC00MC40IDEzLjVDMTQ4LjQgMzM5IDE0NCAzNDUuMSAxNDQgMzUyczQuNCAxMyAxMC45IDE1LjJsNDAuNCAxMy41TDIwNy4xIDQxNkg2NHpNMjc5LjYgMTQxLjVjLTEuMS0zLjMtNC4xLTUuNS03LjYtNS41cy02LjUgMi4yLTcuNiA1LjVsLTYuNyAyMC4yLTIwLjIgNi43Yy0zLjMgMS4xLTUuNSA0LjEtNS41IDcuNnMyLjIgNi41IDUuNSA3LjZsMjAuMiA2LjcgNi43IDIwLjJjMS4xIDMuMyA0LjEgNS41IDcuNiA1LjVzNi41LTIuMiA3LjYtNS41bDYuNy0yMC4yIDIwLjItNi43YzMuMy0xLjEgNS41LTQuMSA1LjUtNy42cy0yLjItNi41LTUuNS03LjZsLTIwLjItNi43LTYuNy0yMC4yek0zMiA0NDhINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYVBlbkZhbmN5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blbi1mYW5jeScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODM5NSwgMTAwMDJdLCBcImY1YWNcIiwgXCJNMzczLjUgMjcuMUMzODguNSA5LjkgNDEwLjIgMCA0MzMgMGM0My42IDAgNzkgMzUuNCA3OSA3OWMwIDIyLjgtOS45IDQ0LjYtMjcuMSA1OS42TDI3Ny43IDMxOWwtMTAuMy0xMC4zLTY0LTY0TDE5MyAyMzQuMyAzNzMuNSAyNy4xek0xNzAuMyAyNTYuOWwxMC40IDEwLjQgNjQgNjQgMTAuNCAxMC40LTE5LjIgODMuNGMtMy45IDE3LjEtMTYuOSAzMC43LTMzLjggMzUuNEwyNC40IDUxMC4zbDk1LjQtOTUuNGMyLjYgLjcgNS40IDEuMSA4LjMgMS4xYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyYzAgMi45IC40IDUuNiAxLjEgOC4zTDEuNyA0ODcuNiA1MS41IDMxMGM0LjctMTYuOSAxOC4zLTI5LjkgMzUuNC0zMy44bDgzLjQtMTkuMnpcIl1cbn07XG52YXIgZmFQZXJzb25EaWdnaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1kaWdnaW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJkaWdnaW5nXCJdLCBcImY4NWVcIiwgXCJNMjA4IDY0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTkuOCAyMTQuOGM1LjEtMTIuMiAxOS4xLTE4IDMxLjQtMTIuOUw2MC43IDIxMGwyMi45LTM4LjFDOTkuOSAxNDQuNiAxMjkuMyAxMjggMTYxIDEyOGM1MS40IDAgOTcgMzIuOSAxMTMuMyA4MS43bDM0LjYgMTAzLjcgNzkuMyAzMy4xIDM0LjItNDUuNmM2LjQtOC41IDE2LjYtMTMuMyAyNy4yLTEyLjhzMjAuMyA2LjQgMjUuOCAxNS41bDk2IDE2MGM1LjkgOS45IDYuMSAyMi4yIC40IDMyLjJzLTE2LjMgMTYuMi0yNy44IDE2LjJIMjg4Yy0xMS4xIDAtMjEuNC01LjctMjcuMi0xNS4ycy02LjQtMjEuMi0xLjQtMzEuMWwxNi0zMmM1LjQtMTAuOCAxNi41LTE3LjcgMjguNi0xNy43aDMybDIyLjUtMzBMMjIuOCAyNDYuMmMtMTIuMi01LjEtMTgtMTkuMS0xMi45LTMxLjR6bTgyLjggOTEuOGwxMTIgNDhjMTEuOCA1IDE5LjQgMTYuNiAxOS40IDI5LjR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDA1LjFsLTYwLjYtMjYtMzcgMTExYy01LjYgMTYuOC0yMy43IDI1LjgtNDAuNSAyMC4yUy0zLjkgNDg2LjYgMS42IDQ2OS45bDQ4LTE0NCAxMS0zMyAzMiAxMy43elwiXVxufTtcbnZhciBmYURpZ2dpbmcgPSBmYVBlcnNvbkRpZ2dpbmc7XG52YXIgZmFUcmFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFzaCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFmOFwiLCBcIk0xMzUuMiAxNy43TDEyOCAzMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMGwtNy4yLTE0LjNDMzA3LjQgNi44IDI5Ni4zIDAgMjg0LjIgMEgxNjMuOGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN3pNNDE2IDEyOEgzMkw1My4yIDQ2N2MxLjYgMjUuMyAyMi42IDQ1IDQ3LjkgNDVIMzQ2LjljMjUuMyAwIDQ2LjMtMTkuNyA0Ny45LTQ1TDQxNiAxMjh6XCJdXG59O1xudmFyIGZhR2F1Z2VTaW1wbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2F1Z2Utc2ltcGxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJnYXVnZS1zaW1wbGUtbWVkXCIsIFwidGFjaG9tZXRlci1hdmVyYWdlXCJdLCBcImY2MjlcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0zMjAgOTZjMC0yNi45LTE2LjUtNDkuOS00MC01OS4zVjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjI5Mi43Yy0yMy41IDkuNS00MCAzMi41LTQwIDU5LjNjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpcIl1cbn07XG52YXIgZmFHYXVnZVNpbXBsZU1lZCA9IGZhR2F1Z2VTaW1wbGU7XG52YXIgZmFUYWNob21ldGVyQXZlcmFnZSA9IGZhR2F1Z2VTaW1wbGU7XG52YXIgZmFCb29rTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLW1lZGljYWwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY3ZTZcIiwgXCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0yMDggMTEydjQ4SDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIyNGg0OGM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyMjRjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG52YXIgZmFQb28gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9vJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTY5XSwgXCJmMmZlXCIsIFwiTTI2OC45IC45Yy01LjUtLjctMTEgMS40LTE0LjUgNS43cy00LjYgMTAuMS0yLjggMTUuNGMyLjggOC4yIDQuMyAxNi45IDQuMyAyNi4xYzAgNDQuMS0zNS43IDc5LjktNzkuOCA4MEgxNjBjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMTkuMSA4LjQgMzYuMyAyMS43IDQ4SDEwNGMtMzkuOCAwLTcyIDMyLjItNzIgNzJjMCAyMy4yIDExIDQzLjggMjggNTdjLTM0LjEgNS43LTYwIDM1LjMtNjAgNzFjMCAzOS44IDMyLjIgNzIgNzIgNzJINDQwYzM5LjggMCA3Mi0zMi4yIDcyLTcyYzAtMzUuNy0yNS45LTY1LjMtNjAtNzFjMTctMTMuMiAyOC0zMy44IDI4LTU3YzAtMzkuOC0zMi4yLTcyLTcyLTcySDM5NC4zYzEzLjMtMTEuNyAyMS43LTI4LjkgMjEuNy00OGMwLTM1LjMtMjguNy02NC02NC02NGgtNS41YzMuNS0xMCA1LjUtMjAuOCA1LjUtMzJjMC00OC42LTM2LjItODguOC04My4xLTk1LjF6TTE5MiAyNTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em05NiAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem02NCAxMDguM2MwIDIuNC0uNyA0LjgtMi4yIDYuN2MtOC4yIDEwLjUtMzkuNSA0NS05My44IDQ1cy04NS42LTM0LjYtOTMuOC00NWMtMS41LTEuOS0yLjItNC4zLTIuMi02LjdjMC02LjggNS41LTEyLjMgMTIuMy0xMi4zSDMzOS43YzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM3pcIl1cbn07XG52YXIgZmFRdW90ZVJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3F1b3RlLXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbODIyMSwgXCJxdW90ZS1yaWdodC1hbHRcIl0sIFwiZjEwZVwiLCBcIk00NDggMjk2YzAgNjYuMy01My43IDEyMC0xMjAgMTIwaC04Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDhjMzAuOSAwIDU2LTI1LjEgNTYtNTZ2LThIMzIwYy0zNS4zIDAtNjQtMjguNy02NC02NFYxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjRjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzIgMzIgNzJ6bS0yNTYgMGMwIDY2LjMtNTMuNyAxMjAtMTIwIDEyMEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg4YzMwLjkgMCA1Ni0yNS4xIDU2LTU2di04SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjRjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzIgMzIgNzJ6XCJdXG59O1xudmFyIGZhUXVvdGVSaWdodEFsdCA9IGZhUXVvdGVSaWdodDtcbnZhciBmYVNoaXJ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaXJ0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4MDg1LCBcInQtc2hpcnRcIiwgXCJ0c2hpcnRcIl0sIFwiZjU1M1wiLCBcIk0yMTEuOCAwYzcuOCAwIDE0LjMgNS43IDE2LjcgMTMuMkMyNDAuOCA1MS45IDI3Ny4xIDgwIDMyMCA4MHM3OS4yLTI4LjEgOTEuNS02Ni44QzQxMy45IDUuNyA0MjAuNCAwIDQyOC4yIDBoMTIuNmMyMi41IDAgNDQuMiA3LjkgNjEuNSAyMi4zTDYyOC41IDEyNy40YzYuNiA1LjUgMTAuNyAxMy41IDExLjQgMjIuMXMtMi4xIDE3LjEtNy44IDIzLjZsLTU2IDY0Yy0xMS40IDEzLjEtMzEuMiAxNC42LTQ0LjYgMy41TDQ4MCAxOTcuN1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMjI0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTcuN2wtNTEuNSA0Mi45Yy0xMy4zIDExLjEtMzMuMSA5LjYtNDQuNi0zLjVsLTU2LTY0Yy01LjctNi41LTguNS0xNS03LjgtMjMuNnM0LjgtMTYuNiAxMS40LTIyLjFMMTM3LjcgMjIuM0MxNTUgNy45IDE3Ni43IDAgMTk5LjIgMGgxMi42elwiXVxufTtcbnZhciBmYVRTaGlydCA9IGZhU2hpcnQ7XG52YXIgZmFUc2hpcnQgPSBmYVNoaXJ0O1xudmFyIGZhQ3ViZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3ViZXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxYjNcIiwgXCJNMjkwLjggNDguNmw3OC40IDI5LjdMMjg4IDEwOS41IDIwNi44IDc4LjNsNzguNC0yOS43YzEuOC0uNyAzLjgtLjcgNS43IDB6TTEzNiA5Mi41VjIwNC43Yy0xLjMgLjQtMi42IC44LTMuOSAxLjNsLTk2IDM2LjRDMTQuNCAyNTAuNiAwIDI3MS41IDAgMjk0LjdWNDEzLjljMCAyMi4yIDEzLjEgNDIuMyAzMy41IDUxLjNsOTYgNDIuMmMxNC40IDYuMyAzMC43IDYuMyA0NS4xIDBMMjg4IDQ1Ny41bDExMy41IDQ5LjljMTQuNCA2LjMgMzAuNyA2LjMgNDUuMSAwbDk2LTQyLjJjMjAuMy04LjkgMzMuNS0yOS4xIDMzLjUtNTEuM1YyOTQuN2MwLTIzLjMtMTQuNC00NC4xLTM2LjEtNTIuNGwtOTYtMzYuNGMtMS4zLS41LTIuNi0uOS0zLjktMS4zVjkyLjVjMC0yMy4zLTE0LjQtNDQuMS0zNi4xLTUyLjRsLTk2LTM2LjRjLTEyLjgtNC44LTI2LjktNC44LTM5LjcgMGwtOTYgMzYuNEMxNTAuNCA0OC40IDEzNiA2OS4zIDEzNiA5Mi41ek0zOTIgMjEwLjZsLTgyLjQgMzEuMlYxNTIuNkwzOTIgMTIxdjg5LjZ6TTE1NC44IDI1MC45bDc4LjQgMjkuN0wxNTIgMzExLjcgNzAuOCAyODAuNmw3OC40LTI5LjdjMS44LS43IDMuOC0uNyA1LjcgMHptMTguOCAyMDQuNFYzNTQuOEwyNTYgMzIzLjJ2OTUuOWwtODIuNCAzNi4yek00MjEuMiAyNTAuOWMxLjgtLjcgMy44LS43IDUuNyAwbDc4LjQgMjkuN0w0MjQgMzExLjdsLTgxLjItMzEuMSA3OC40LTI5Ljd6TTUyMy4yIDQyMS4ybC03Ny42IDM0LjFWMzU0LjhMNTI4IDMyMy4ydjkwLjdjMCAzLjItMS45IDYtNC44IDcuM3pcIl1cbn07XG52YXIgZmFEaXZpZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGl2aWRlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTAxMzUsIDI0N10sIFwiZjUyOVwiLCBcIk0yNzIgOTZhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHptMCAzMjBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDAwIDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MDB6XCJdXG59O1xudmFyIGZhVGVuZ2VTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbmdlLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFs4Mzc2LCBcInRlbmdlXCJdLCBcImY3ZDdcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJIMTkyIDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJdXG59O1xudmFyIGZhVGVuZ2UgPSBmYVRlbmdlU2lnbjtcbnZhciBmYUhlYWRwaG9uZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZHBob25lcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzkxMV0sIFwiZjAyNVwiLCBcIk0yNTYgODBDMTQ5LjkgODAgNjIuNCAxNTkuNCA0OS42IDI2MmM5LjQtMy44IDE5LjYtNiAzMC40LTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4Yy00NC4yIDAtODAtMzUuOC04MC04MFYzODQgMzM2IDI4OEMwIDE0Ni42IDExNC42IDMyIDI1NiAzMnMyNTYgMTE0LjYgMjU2IDI1NnY0OCA0OCAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzA0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzEwLjggMCAyMSAyLjEgMzAuNCA2QzQ0OS42IDE1OS40IDM2Mi4xIDgwIDI1NiA4MHpcIl1cbn07XG52YXIgZmFIYW5kc0hvbGRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHMtaG9sZGluZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRjMlwiLCBcIk04MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBTMCA4MS45IDAgMTA0djU2IDY0VjMyNS41YzAgMjUuNSAxMC4xIDQ5LjkgMjguMSA2Ny45TDEyOCA0OTMuM2MxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDI0MGMyNi41IDAgNDgtMjEuNSA0OC00OFYzODUuMWMwLTI5LjctMTEuOC01OC4yLTMyLjgtNzkuMmwtMjUuMy0yNS4zIDAgMC0xNS4yLTE1LjItMzItMzJjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDMyIDMyIDE1LjIgMTUuMmMxMSAxMSA5LjIgMjkuMi0zLjcgMzcuOGMtOS43IDYuNS0yMi43IDUuMi0zMS0zLjFMOTguNyAzMDkuNWMtMTItMTItMTguNy0yOC4zLTE4LjctNDUuM1YyMjQgMTQ0IDEwNHptNDgwIDB2NDAgODAgNDAuMmMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNTEuMSA1MS4xYy04LjMgOC4zLTIxLjMgOS42LTMxIDMuMWMtMTIuOS04LjYtMTQuNy0yNi45LTMuNy0zNy44bDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMzIgMzItMTUuMiAxNS4yIDAgMC0yNS4zIDI1LjNjLTIxIDIxLTMyLjggNDkuNS0zMi44IDc5LjJWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY2LjdjMTcgMCAzMy4zLTYuNyA0NS4zLTE4LjdsOTkuOS05OS45YzE4LTE4IDI4LjEtNDIuNCAyOC4xLTY3LjlWMjI0IDE2MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDB6XCJdXG59O1xudmFyIGZhSGFuZHNDbGFwcGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kcy1jbGFwcGluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTFhOFwiLCBcIk0zMzYgMTZWODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptLTk4LjcgNy4xbDMyIDQ4YzQuOSA3LjQgMi45IDE3LjMtNC40IDIyLjJzLTE3LjMgMi45LTIyLjItNC40bC0zMi00OGMtNC45LTcuNC0yLjktMTcuMyA0LjQtMjIuMnMxNy4zLTIuOSAyMi4yIDQuNHpNMTM1IDExOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwyOTIuNyAyNDIuN2MxMC4xIDEwLjEgMjcuMyAyLjkgMjcuMy0xMS4zVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM0NS42YzAgNTcuMS0zMCAxMTAtNzguOSAxMzkuNGMtNjQgMzguNC0xNDUuOCAyOC4zLTE5OC41LTI0LjRMNyAzNjFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw1MyA1M2M2LjEgNi4xIDE2IDYuMSAyMi4xIDBzNi4xLTE2IDAtMjIuMUwyMyAyNjVjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw5MyA5M2M2LjEgNi4xIDE2IDYuMSAyMi4xIDBzNi4xLTE2IDAtMjIuMUw1NSAxODVjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwxMTcgMTE3YzYuMSA2LjEgMTYgNi4xIDIyLjEgMHM2LjEtMTYgMC0yMi4xbC05My05M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6TTQzMy4xIDQ4NC45Yy0yNC4yIDE0LjUtNTAuOSAyMi4xLTc3LjcgMjMuMWM0OC4xLTM5LjYgNzYuNi05OSA3Ni42LTE2Mi40bDAtOTguMWM4LjItLjEgMTYtNi40IDE2LTE2VjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM0NS42YzAgNTcuMS0zMCAxMTAtNzguOSAxMzkuNHpNNDI0LjkgMTguN2M3LjQgNC45IDkuMyAxNC44IDQuNCAyMi4ybC0zMiA0OGMtNC45IDcuNC0xNC44IDkuMy0yMi4yIDQuNHMtOS4zLTE0LjgtNC40LTIyLjJsMzItNDhjNC45LTcuNCAxNC44LTkuMyAyMi4yLTQuNHpcIl1cbn07XG52YXIgZmFSZXB1YmxpY2FuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlcHVibGljYW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3NWVcIiwgXCJNMCAxOTJDMCAxMDMuNiA3MS42IDMyIDE2MCAzMkgzODRjODguNCAwIDE2MCA3MS42IDE2MCAxNjB2NjRIMFYxOTJ6bTQxNS45LTY0Yy0yLjQgMC00LjcgMS4zLTUuNyAzLjRsLTEyLjYgMjQuNi0yOC4yIDRjLTIuNCAuMy00LjQgMi01LjIgNC4ycy0uMSA0LjcgMS42IDYuM2wyMC40IDE5LjItNC44IDI3LjFjLS40IDIuMyAuNiA0LjcgMi41IDZzNC42IDEuNiA2LjcgLjVsMjUuMi0xMi44IDI1LjIgMTIuOGMyLjIgMS4xIDQuOCAuOSA2LjctLjVzMy0zLjcgMi41LTZsLTQuOC0yNy4xTDQ2NiAxNzAuNWMxLjctMS42IDIuNC00LjEgMS42LTYuM3MtMi44LTMuOS01LjItNC4ybC0yOC4yLTQtMTIuNi0yNC42Yy0xLjEtMi4xLTMuMy0zLjQtNS43LTMuNHptLTEzOC4zIDMuNGMtMS4xLTIuMS0zLjMtMy40LTUuNy0zLjRzLTQuNyAxLjMtNS43IDMuNGwtMTIuNiAyNC42LTI4LjIgNGMtMi40IC4zLTQuNCAyLTUuMiA0LjJzLS4xIDQuNyAxLjYgNi4zbDIwLjQgMTkuMi00LjggMjcuMWMtLjQgMi4zIC42IDQuNyAyLjUgNnM0LjYgMS42IDYuNyAuNWwyNS4yLTEyLjggMjUuMiAxMi44YzIuMiAxLjEgNC44IC45IDYuNy0uNXMzLTMuNyAyLjUtNmwtNC44LTI3LjFMMzIyIDE3MC41YzEuNy0xLjYgMi40LTQuMSAxLjYtNi4zcy0yLjgtMy45LTUuMi00LjJsLTI4LjItNC0xMi42LTI0LjZ6TTEyNy45IDEyOGMtMi40IDAtNC43IDEuMy01LjcgMy40bC0xMi42IDI0LjYtMjguMiA0Yy0yLjQgLjMtNC40IDItNS4yIDQuMnMtLjEgNC43IDEuNiA2LjNsMjAuNCAxOS4yLTQuOCAyNy4xYy0uNCAyLjMgLjYgNC43IDIuNSA2czQuNiAxLjYgNi43IC41bDI1LjItMTIuOCAyNS4yIDEyLjhjMi4yIDEuMSA0LjggLjkgNi43LS41czMtMy43IDIuNS02bC00LjgtMjcuMUwxNzggMTcwLjVjMS43LTEuNiAyLjQtNC4xIDEuNi02LjNzLTIuOC0zLjktNS4yLTQuMmwtMjguMi00LTEyLjYtMjQuNmMtMS4xLTIuMS0zLjMtMy40LTUuNy0zLjR6bS4xIDE2MEgzMjBoOTYgMzIgNjQgMzJ2MzIgODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MFYzNTJINDQ4djMyIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0SDEyOHY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0IDI4OEgxMjh6XCJdXG59O1xudmFyIGZhQXJyb3dMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs4NTkyXSwgXCJmMDYwXCIsIFwiTTkuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4yIDI4OCA0MTYgMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMDYuNyAwTDIxNC42IDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwelwiXVxufTtcbnZhciBmYVBlcnNvbkNpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NDNcIiwgXCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwiXVxufTtcbnZhciBmYVJ1bGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1bGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MjA3XSwgXCJmNTQ1XCIsIFwiTTE3Ny45IDQ5NC4xYy0xOC43IDE4LjctNDkuMSAxOC43LTY3LjkgMEwxNy45IDQwMS45Yy0xOC43LTE4LjctMTguNy00OS4xIDAtNjcuOWw1MC43LTUwLjcgNDggNDhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC00OC00OCA0MS40LTQxLjQgNDggNDhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC00OC00OCA0MS40LTQxLjQgNDggNDhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC00OC00OCA0MS40LTQxLjQgNDggNDhjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC00OC00OCA1MC43LTUwLjdjMTguNy0xOC43IDQ5LjEtMTguNyA2Ny45IDBsOTIuMSA5Mi4xYzE4LjcgMTguNyAxOC43IDQ5LjEgMCA2Ny45TDE3Ny45IDQ5NC4xelwiXVxufTtcbnZhciBmYUFsaWduTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbGlnbi1sZWZ0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDM2XCIsIFwiTTI4OCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0UzE0LjMgMzIgMzIgMzJIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMyem0wIDI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6TTAgMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyelwiXVxufTtcbnZhciBmYURpY2VENiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWNlLWQ2JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNmQxXCIsIFwiTTIwMSAxMC4zYzE0LjMtNy44IDMxLjYtNy44IDQ2IDBMNDIyLjMgMTA2YzUuMSAyLjggOC4zIDguMiA4LjMgMTRzLTMuMiAxMS4yLTguMyAxNEwyMzEuNyAyMzhjLTQuOCAyLjYtMTAuNSAyLjYtMTUuMyAwTDI1LjcgMTM0Yy01LjEtMi44LTguMy04LjItOC4zLTE0czMuMi0xMS4yIDguMy0xNEwyMDEgMTAuM3pNMjMuNyAxNzBsMTc2IDk2YzUuMSAyLjggOC4zIDguMiA4LjMgMTRWNDk2YzAgNS42LTMgMTAuOS03LjggMTMuOHMtMTAuOSAzLTE1LjggLjNMMjUgNDIzLjFDOS42IDQxNC43IDAgMzk4LjYgMCAzODFWMTg0YzAtNS42IDMtMTAuOSA3LjgtMTMuOHMxMC45LTMgMTUuOC0uM3ptNDAwLjcgMGM1LTIuNyAxMS0yLjYgMTUuOCAuM3M3LjggOC4xIDcuOCAxMy44VjM4MWMwIDE3LjYtOS42IDMzLjctMjUgNDIuMUwyNjMuNyA1MTBjLTUgMi43LTExIDIuNi0xNS44LS4zcy03LjgtOC4xLTcuOC0xMy44VjI4MGMwLTUuOSAzLjItMTEuMiA4LjMtMTRsMTc2LTk2elwiXVxufTtcbnZhciBmYVJlc3Ryb29tID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Jlc3Ryb29tJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmN2JkXCIsIFwiTTgwIDQ4YTQ4IDQ4IDAgMSAxIDk2IDBBNDggNDggMCAxIDEgODAgNDh6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzI1LjJjLTguMSA5LjItMjEuMSAxMy4yLTMzLjUgOS40Yy0xNi45LTUuMy0yNi4zLTIzLjItMjEtNDAuMWwzMC45LTk5LjFDNDQuOSAxNTUuMyA4MiAxMjggMTI0IDEyOGg4YzQyIDAgNzkuMSAyNy4zIDkxLjYgNjcuNGwzMC45IDk5LjFjNS4zIDE2LjktNC4xIDM0LjgtMjEgNDAuMWMtMTIuNCAzLjktMjUuNC0uMi0zMy41LTkuNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDEyMHpNMzIwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0VjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek00NjQgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNNDQwIDQ4MFYzODRINDIyLjJjLTEwLjkgMC0xOC42LTEwLjctMTUuMi0yMS4xbDktMjYuOWMtMy4yIDAtNi40LS41LTkuNS0xLjVjLTE2LjktNS4zLTI2LjMtMjMuMi0yMS00MC4xbDI5LjctOTUuMkM0MjguNCAxNTYuOSA0NjcuNiAxMjggNTEyIDEyOHM4My42IDI4LjkgOTYuOCA3MS4ybDI5LjcgOTUuMmM1LjMgMTYuOS00LjEgMzQuOC0yMSA0MC4xYy0zLjIgMS02LjQgMS41LTkuNSAxLjVsOSAyNi45YzMuNSAxMC40LTQuMyAyMS4xLTE1LjIgMjEuMUg1ODR2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzg0SDUwNHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpcIl1cbn07XG52YXIgZmFKID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2onLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMDZdLCBcIjRhXCIsIFwiTTI4OCAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzMjBjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0MDguNCAwIDMyMFYyODhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnYzMmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYVVzZXJzVmlld2ZpbmRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2Vycy12aWV3ZmluZGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTk1XCIsIFwiTTQ4IDQ4aDg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDMyQzE0LjMgMCAwIDE0LjMgMCAzMlYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFY0OHpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43aDU2LjFjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRIMTQ5LjN6bTM2OCA4MGMxNC43IDAgMjYuNy0xMS45IDI2LjctMjYuN2MwLTI5LjUtMjMuOS01My4zLTUzLjMtNTMuM0g0MjEuM2MtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZoNTYuMXptLTg5LjQgMGMtOC42LTI0LjMtMjkuOS00Mi42LTU1LjktNDdjLTMuOS0uNy03LjktMS0xMi0xSDI4MGMtNC4xIDAtOC4xIC4zLTEyIDFjLTI2IDQuNC00Ny4zIDIyLjctNTUuOSA0N2MtMi43IDcuNS00LjEgMTUuNi00LjEgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRINDA4YzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtOC40LTEuNC0xNi41LTQuMS0yNHpNNDY0IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MC0zMmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTUwNCA0OGg4OHY4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDUwNGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNHpNNDggNDY0VjM3NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMTM2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDQ4em00NTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzc2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djg4SDUwNHpcIl1cbn07XG52YXIgZmFGaWxlVmlkZW8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS12aWRlbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjOFwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MEgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjBINjR6TTI1NiAwVjEyOEgzODRMMjU2IDB6TTY0IDI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4ek0zMDAuOSAzOTcuOUwyNTYgMzY4VjMwNGw0NC45LTI5LjljMi0xLjMgNC40LTIuMSA2LjgtMi4xYzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM1YzODcuN2MwIDYuOC01LjUgMTIuMy0xMi4zIDEyLjNjLTIuNCAwLTQuOC0uNy02LjgtMi4xelwiXVxufTtcbnZhciBmYVVwUmlnaHRGcm9tU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VwLXJpZ2h0LWZyb20tc3F1YXJlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJleHRlcm5hbC1saW5rLWFsdFwiXSwgXCJmMzVkXCIsIFwiTTM1MiAwYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOUwzNzAuNyA5NiAyMDEuNCAyNjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0MTYgMTQxLjNsNDEuNCA0MS40YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45czE5LjgtMTYuNiAxOS44LTI5LjZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyek04MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMlY0MzJjMCA0NC4yIDM1LjggODAgODAgODBINDAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwVjMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNkgxOTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIODB6XCJdXG59O1xudmFyIGZhRXh0ZXJuYWxMaW5rQWx0ID0gZmFVcFJpZ2h0RnJvbVNxdWFyZTtcbnZhciBmYVRhYmxlQ2VsbHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGUtY2VsbHMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInRoXCJdLCBcImYwMGFcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em04OCA2NHY2NEg2NFY5Nmg4OHptNTYgMGg4OHY2NEgyMDhWOTZ6bTI0MCAwdjY0SDM2MFY5Nmg4OHpNNjQgMjI0aDg4djY0SDY0VjIyNHptMjMyIDB2NjRIMjA4VjIyNGg4OHptNjQgMGg4OHY2NEgzNjBWMjI0ek0xNTIgMzUydjY0SDY0VjM1Mmg4OHptNTYgMGg4OHY2NEgyMDhWMzUyem0yNDAgMHY2NEgzNjBWMzUyaDg4elwiXVxufTtcbnZhciBmYVRoID0gZmFUYWJsZUNlbGxzO1xudmFyIGZhRmlsZVBkZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXBkZicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFjMVwiLCBcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYzMDRIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY1MTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMTc2IDM1MmgzMmMzMC45IDAgNTYgMjUuMSA1NiA1NnMtMjUuMSA1Ni01NiA1NkgxOTJ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWNDQ4IDM2OGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE5MnY0OGgxNnptOTYtODBoMzJjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMzA0Yy04LjggMC0xNi03LjItMTYtMTZWMzY4YzAtOC44IDcuMi0xNiAxNi0xNnptMzIgMTI4YzguOCAwIDE2LTcuMiAxNi0xNlY0MDBjMC04LjgtNy4yLTE2LTE2LTE2SDMyMHY5NmgxNnptODAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0NDh2MzJoMzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINDQ4djQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjQzMiAzNjh6XCJdXG59O1xudmFyIGZhQm9va0JpYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stYmlibGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImJpYmxlXCJdLCBcImY2NDdcIiwgXCJNOTYgMEM0MyAwIDAgNDMgMCA5NlY0MTZjMCA1MyA0MyA5NiA5NiA5NkgzODRoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDM4NCA5NnptMCAzODRIMzUydjY0SDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyek0yMDggODBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MlYzMDRjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5MkgxNjBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjgwelwiXVxufTtcbnZhciBmYUJpYmxlID0gZmFCb29rQmlibGU7XG52YXIgZmFPID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ28nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMTFdLCBcIjRmXCIsIFwiTTIyNCA5NmExNjAgMTYwIDAgMSAwIDAgMzIwIDE2MCAxNjAgMCAxIDAgMC0zMjB6TTQ0OCAyNTZBMjI0IDIyNCAwIDEgMSAwIDI1NmEyMjQgMjI0IDAgMSAxIDQ0OCAwelwiXVxufTtcbnZhciBmYVN1aXRjYXNlTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWl0Y2FzZS1tZWRpY2FsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJtZWRraXRcIl0sIFwiZjBmYVwiLCBcIk0xODQgNDhIMzI4YzQuNCAwIDggMy42IDggOFY5NkgxNzZWNTZjMC00LjQgMy42LTggOC04em0tNTYgOFY5NnYzMlY0ODBIMzg0VjEyOCA5NiA1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek05NiA5Nkg2NEMyOC43IDk2IDAgMTI0LjcgMCAxNjBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDk2Vjk2ek00MTYgNDgwaDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEg0MTZWNDgwek0yMjQgMjA4YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyODh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMyMEgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjIwOHpcIl1cbn07XG52YXIgZmFNZWRraXQgPSBmYVN1aXRjYXNlTWVkaWNhbDtcbnZhciBmYVVzZXJTZWNyZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1zZWNyZXQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgzNzNdLCBcImYyMWJcIiwgXCJNMjI0IDE2Yy02LjcgMC0xMC44LTIuOC0xNS41LTYuMUMyMDEuOSA1LjQgMTk0IDAgMTc2IDBjLTMwLjUgMC01MiA0My43LTY2IDg5LjRDNjIuNyA5OC4xIDMyIDExMi4yIDMyIDEyOGMwIDE0LjMgMjUgMjcuMSA2NC42IDM1LjljLS40IDQtLjYgOC0uNiAxMi4xYzAgMTcgMy4zIDMzLjIgOS4zIDQ4SDQ1LjRDMzggMjI0IDMyIDIzMCAzMiAyMzcuNGMwIDEuNyAuMyAzLjQgMSA1bDM4LjggOTYuOUMyOC4yIDM3MS44IDAgNDIzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDQxOC4zYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43YzAtNTguNS0yOC4yLTExMC40LTcxLjctMTQzTDQxNSAyNDIuNGMuNi0xLjYgMS0zLjMgMS01YzAtNy40LTYtMTMuNC0xMy40LTEzLjRIMzQyLjdjNi0xNC44IDkuMy0zMSA5LjMtNDhjMC00LjEtLjItOC4xLS42LTEyLjFDMzkxIDE1NS4xIDQxNiAxNDIuMyA0MTYgMTI4YzAtMTUuOC0zMC43LTI5LjktNzgtMzguNkMzMjQgNDMuNyAzMDIuNSAwIDI3MiAwYy0xOCAwLTI1LjkgNS40LTMyLjUgOS45Yy00LjggMy4zLTguOCA2LjEtMTUuNSA2LjF6bTU2IDIwOEgyNjcuNmMtMTYuNSAwLTMxLjEtMTAuNi0zNi4zLTI2LjJjLTIuMy03LTEyLjItNy0xNC41IDBjLTUuMiAxNS42LTE5LjkgMjYuMi0zNi4zIDI2LjJIMTY4Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYxNjkuNmMyOC4yIDQuMSA2MSA2LjQgOTYgNi40czY3LjgtMi4zIDk2LTYuNFYxODRjMCAyMi4xLTE3LjkgNDAtNDAgNDB6bS04OCA5NmwxNiAzMkwxNzYgNDgwIDEyOCAyODhsNjQgMzJ6bTEyOC0zMkwyNzIgNDgwIDI0MCAzNTJsMTYtMzIgNjQtMzJ6XCJdXG59O1xudmFyIGZhT3R0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb3R0ZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjk0NDZdLCBcImY3MDBcIiwgXCJNMTgxLjUgMTk3LjFsMTIuOSA2LjRjNS45IDMgMTIuNCA0LjUgMTkuMSA0LjVjMjMuNSAwIDQyLjYtMTkuMSA0Mi42LTQyLjZWMTQ0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDEyOGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MjEuNGMwIDIzLjUgMTkuMSA0Mi42IDQyLjYgNDIuNmM2LjYgMCAxMy4xLTEuNSAxOS4xLTQuNWwxMi45LTYuNCA4LjQtNC4yTDEzNS4xIDE4NWMtNC41LTMtNy4xLTgtNy4xLTEzLjNWMTY4YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0djMuN2MwIDUuMy0yLjcgMTAuMy03LjEgMTMuM2wtMTEuOCA3LjkgOC40IDQuMnptLTguNiA0OS40TDE2MCAyNDBsLTEyLjkgNi40Yy0xMi42IDYuMy0yNi41IDkuNi00MC41IDkuNmMtMy42IDAtNy4xLS4yLTEwLjYtLjZ2LjZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0VjMzNiAzMjBjMC0yMy43IDEyLjktNDQuNCAzMi01NS40YzkuNC01LjQgMjAuMy04LjYgMzItOC42VjI0MGMwLTI2LjUgMjEuNS00OCA0OC00OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzIgMTYgNDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYyMDQuM2MwLTQ4LjItMzAuOC05MS03Ni42LTEwNi4zbC04LjUtMi44Yy04LTIuNy0xMi42LTExLjEtMTAuNC0xOS4zczEwLjMtMTMuMiAxOC42LTExLjZsMTkuOSA0QzU3NiA4Ni4xIDY0MCAxNjQuMiA2NDAgMjU0LjlsMCAxLjFoMGMwIDEyMy43LTEwMC4zIDIyNC0yMjQgMjI0aC0xLjFIMjU2aC0uNkMxMzIgNDgwIDMyIDM4MCAzMiAyNTYuNlYyNTYgMjE2LjhjLTEwLjEtMTQuNi0xNi0zMi4zLTE2LTUxLjRWMTQ0bDAtMS40QzYuNyAxMzkuMyAwIDEzMC41IDAgMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0aDIuOEM0NC44IDU4LjIgODMuMyAzMiAxMjggMzJoNjRjNDQuNyAwIDgzLjIgMjYuMiAxMDEuMiA2NEgyOTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRjMCAxMC41LTYuNyAxOS4zLTE2IDIyLjZsMCAxLjR2MjEuNGMwIDEuNCAwIDIuOC0uMSA0LjNjMTItNi4yIDI1LjctOS42IDQwLjEtOS42aDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djhoNTYuNGMtMTUuMiAxNy0yNC40IDM5LjQtMjQuNCA2NEgzMjBjLTQyLjMgMC03OC4yLTI3LjQtOTEtNjUuM2MtNS4xIC45LTEwLjMgMS4zLTE1LjYgMS4zYy0xNC4xIDAtMjcuOS0zLjMtNDAuNS05LjZ6TTk2IDEyOGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTExMiAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwiXVxufTtcbnZhciBmYVBlcnNvbkRyZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1kcmVzcycsXG4gIGljb246IFszMjAsIDUxMiwgW1wiZmVtYWxlXCJdLCBcImYxODJcIiwgXCJNMTYwIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2ek04OCAzODRINzAuMmMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFMOTMuMyAyNDguMSA1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTMuNi04OS4yYzIwLjMtMzMuNyA1Ni43LTU0LjMgOTYtNTQuM2gxMS42YzM5LjMgMCA3NS43IDIwLjYgOTYgNTQuM2w1My42IDg5LjJjOS4xIDE1LjEgNC4yIDM0LjgtMTAuOSA0My45cy0zNC44IDQuMi00My45LTEwLjlsLTMzLjktNTYuM0wyNjUgMzYyLjljMy41IDEwLjQtNC4zIDIxLjEtMTUuMiAyMS4xSDIzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRIMTUydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NHpcIl1cbn07XG52YXIgZmFGZW1hbGUgPSBmYVBlcnNvbkRyZXNzO1xudmFyIGZhQ29tbWVudERvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50LWRvbGxhcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY1MVwiLCBcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6bTIwLTMxMnYxMy45YzcuNSAxLjIgMTQuNiAyLjkgMjEuMSA0LjdjMTAuNyAyLjggMTcgMTMuOCAxNC4yIDI0LjVzLTEzLjggMTctMjQuNSAxNC4yYy0xMS0yLjktMjEuNi01LTMxLjItNS4yYy03LjktLjEtMTYgMS44LTIxLjUgNWMtNC44IDIuOC02LjIgNS42LTYuMiA5LjNjMCAxLjggLjEgMy41IDUuMyA2LjdjNi4zIDMuOCAxNS41IDYuNyAyOC4zIDEwLjVsLjcgLjJjMTEuMiAzLjQgMjUuNiA3LjcgMzcuMSAxNWMxMi45IDguMSAyNC4zIDIxLjMgMjQuNiA0MS42Yy4zIDIwLjktMTAuNSAzNi4xLTI0LjggNDVjLTcuMiA0LjUtMTUuMiA3LjMtMjMuMiA5VjM0NGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBWMzI5LjRjLTEwLjMtMi4yLTIwLTUuNS0yOC4yLTguNGwwIDAgMCAwYy0yLjEtLjctNC4xLTEuNC02LjEtMi4xYy0xMC41LTMuNS0xNi4xLTE0LjgtMTIuNi0yNS4zczE0LjgtMTYuMSAyNS4zLTEyLjZjMi41IC44IDQuOSAxLjcgNy4yIDIuNGMxMy42IDQuNiAyNCA4LjEgMzUuMSA4LjVjOC42IC4zIDE2LjUtMS42IDIxLjQtNC43YzQuMS0yLjUgNi01LjUgNS45LTEwLjVjMC0yLjktLjgtNS01LjktOC4yYy02LjMtNC0xNS40LTYuOS0yOC0xMC43bC0xLjctLjVjLTEwLjktMy4zLTI0LjYtNy40LTM1LjYtMTRjLTEyLjctNy43LTI0LjYtMjAuNS0yNC43LTQwLjdjLS4xLTIxLjEgMTEuOC0zNS43IDI1LjgtNDMuOWM2LjktNC4xIDE0LjUtNi44IDIyLjItOC41VjEzNmMwLTExIDktMjAgMjAtMjBzMjAgOSAyMCAyMHpcIl1cbn07XG52YXIgZmFCdXNpbmVzc1RpbWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVzaW5lc3MtdGltZScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiYnJpZWZjYXNlLWNsb2NrXCJdLCBcImY2NGFcIiwgXCJNMTg0IDQ4SDMyOGM0LjQgMCA4IDMuNiA4IDhWOTZIMTc2VjU2YzAtNC40IDMuNi04IDgtOHptLTU2IDhWOTZINjRDMjguNyA5NiAwIDEyNC43IDAgMTYwdjk2SDE5MiAzNTJoOC4yYzMyLjMtMzkuMSA4MS4xLTY0IDEzNS44LTY0YzUuNCAwIDEwLjcgLjIgMTYgLjdWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDM4NFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxODRjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek0zMjAgMzUySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4SDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM2MC4yQzMzNS4xIDQ0OS42IDMyMCA0MTAuNSAzMjAgMzY4YzAtNS40IC4yLTEwLjcgLjctMTZsLS43IDB6bTMyMCAxNmExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwek00OTYgMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY0OGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0OTZjLTguOCAwLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYUJyaWVmY2FzZUNsb2NrID0gZmFCdXNpbmVzc1RpbWU7XG52YXIgZmFUYWJsZUNlbGxzTGFyZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGUtY2VsbHMtbGFyZ2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInRoLWxhcmdlXCJdLCBcImYwMDlcIiwgXCJNNDQ4IDk2VjIyNEgyODhWOTZINDQ4em0wIDE5MlY0MTZIMjg4VjI4OEg0NDh6TTIyNCAyMjRINjRWOTZIMjI0VjIyNHpNNjQgMjg4SDIyNFY0MTZINjRWMjg4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJdXG59O1xudmFyIGZhVGhMYXJnZSA9IGZhVGFibGVDZWxsc0xhcmdlO1xudmFyIGZhQm9va1RhbmFraCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLXRhbmFraCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1widGFuYWtoXCJdLCBcImY4MjdcIiwgXCJNMzUyIDBjNTMgMCA5NiA0MyA5NiA5NlY0MTZjMCA1My00MyA5Ni05NiA5Nkg2NCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlYzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjMyQzAgMTQuMyAxNC4zIDAgMzIgMEg2NCAzNTJ6bTAgMzg0SDk2djY0SDM1MmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMnpNMTM4LjcgMjA4bDEzLjkgMjRIMTI0LjlsMTMuOS0yNHptLTEzLjktMjRMOTcuMSAyMzJjLTYuMiAxMC43IDEuNSAyNCAxMy45IDI0aDU1LjRsMjcuNyA0OGM2LjIgMTAuNyAyMS42IDEwLjcgMjcuNyAwbDI3LjctNDhIMzA1YzEyLjMgMCAyMC0xMy4zIDEzLjktMjRsLTI3LjctNDggMjcuNy00OGM2LjItMTAuNy0xLjUtMjQtMTMuOS0yNEgyNDkuNkwyMjEuOSA2NGMtNi4yLTEwLjctMjEuNi0xMC43LTI3LjcgMGwtMjcuNyA0OEgxMTFjLTEyLjMgMC0yMCAxMy4zLTEzLjkgMjRsMjcuNyA0OHptMjcuNyAwbDI3LjctNDhoNTUuNGwyNy43IDQ4LTI3LjcgNDhIMTgwLjNsLTI3LjctNDh6bTAtNDhsLTEzLjkgMjQtMTMuOS0yNGgyNy43em00MS42LTI0TDIwOCA4OGwxMy45IDI0SDE5NC4xem02OS4zIDI0aDI3LjdsLTEzLjkgMjQtMTMuOS0yNHptMTMuOSA3MmwxMy45IDI0SDI2My40bDEzLjktMjR6bS01NS40IDQ4TDIwOCAyODBsLTEzLjktMjRoMjcuN3pcIl1cbn07XG52YXIgZmFUYW5ha2ggPSBmYUJvb2tUYW5ha2g7XG52YXIgZmFQaG9uZVZvbHVtZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaG9uZS12b2x1bWUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInZvbHVtZS1jb250cm9sLXBob25lXCJdLCBcImYyYTBcIiwgXCJNMjgwIDBDNDA4LjEgMCA1MTIgMTAzLjkgNTEyIDIzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTEwMS42LTgyLjQtMTg0LTE4NC0xODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTggMTkyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptLTMyLTcyYzAtMTMuMyAxMC43LTI0IDI0LTI0Yzc1LjEgMCAxMzYgNjAuOSAxMzYgMTM2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNDguNi0zOS40LTg4LTg4LTg4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMTE3LjUgMS40YzE5LjQtNS4zIDM5LjcgNC42IDQ3LjQgMjMuMmw0MCA5NmM2LjggMTYuMyAyLjEgMzUuMi0xMS42IDQ2LjNMMTQ0IDIwNy4zYzMzLjMgNzAuNCA5MC4zIDEyNy40IDE2MC43IDE2MC43TDM0NSAzMTguN2MxMS4yLTEzLjcgMzAtMTguNCA0Ni4zLTExLjZsOTYgNDBjMTguNiA3LjcgMjguNSAyOCAyMy4yIDQ3LjRsLTI0IDg4QzQ4MS44IDQ5OS45IDQ2NiA1MTIgNDQ4IDUxMkMyMDAuNiA1MTIgMCAzMTEuNCAwIDY0QzAgNDYgMTIuMSAzMC4yIDI5LjUgMjUuNGw4OC0yNHpcIl1cbn07XG52YXIgZmFWb2x1bWVDb250cm9sUGhvbmUgPSBmYVBob25lVm9sdW1lO1xudmFyIGZhSGF0Q293Ym95U2lkZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXQtY293Ym95LXNpZGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4YzFcIiwgXCJNMTUyLjcgMTM1LjlsLTEwLjQgNTcuMmM2LjgtLjcgMTMuNi0xLjEgMjAuNS0xLjFoMTAuN2MzOS40IDAgNzcuOCAxMi4xIDExMC4xIDM0LjdMNTYyLjQgNDIxLjhsMzUuMSAyNC42YzI0LjQtNiA0Mi41LTI4LjEgNDIuNS01NC40YzAtNzUuOC05NC43LTEyNi42LTEzNC42LTE0NC43TDQ3NCA4My45QzQ2OC4yIDUzLjggNDQxLjggMzIgNDExLjEgMzJoLTIuN2MtNS42IDAtMTEuMSAuNy0xNi41IDIuMkwxOTkuMiA4NS41Yy0yMy45IDYuNC00MiAyNi00Ni41IDUwLjR6TTAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDU0NEwyNjUuMyAyNTIuOWMtMjYuOS0xOC44LTU4LjktMjguOS05MS44LTI4LjlIMTYyLjljLTYwLjYgMC0xMTYgMzQuMi0xNDMuMSA4OC40TDEzLjUgMzI1QzQuNiAzNDIuNyAwIDM2Mi4zIDAgMzgyLjJWMzg0elwiXVxufTtcbnZhciBmYUNsaXBib2FyZFVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xpcGJvYXJkLXVzZXInLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3ZjNcIiwgXCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEg2NEMyOC43IDY0IDAgOTIuNyAwIDEyOFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgyODIuNUMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMjggMjU2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNODAgNDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwaDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2elwiXVxufTtcbnZhciBmYUNoaWxkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoaWxkJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMWFlXCIsIFwiTTk2IDY0YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDk2IDY0em00OCAzMjB2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjg3LjhMNTkuMSAzMjFjLTkuNCAxNS0yOS4yIDE5LjQtNDQuMSAxMFMtNC41IDMwMS45IDQuOSAyODdsMzkuOS02My4zQzY5LjcgMTg0IDExMy4yIDE2MCAxNjAgMTYwczkwLjMgMjQgMTE1LjIgNjMuNkwzMTUuMSAyODdjOS40IDE1IDQuOSAzNC43LTEwIDQ0LjFzLTM0LjcgNC45LTQ0LjEtMTBMMjQwIDI4Ny44VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRIMTQ0elwiXVxufTtcbnZhciBmYUxpcmFTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpcmEtc2lnbicsXG4gIGljb246IFszMjAsIDUxMiwgWzgzNTZdLCBcImYxOTVcIiwgXCJNMTEyIDE2MC40YzAtMzUuNSAyOC44LTY0LjQgNjQuNC02NC40YzYuOSAwIDEzLjggMS4xIDIwLjQgMy4zbDgxLjIgMjcuMWMxNi44IDUuNiAzNC45LTMuNSA0MC41LTIwLjJzLTMuNS0zNC45LTIwLjItNDAuNUwyMTcgMzguNmMtMTMuMS00LjQtMjYuOC02LjYtNDAuNi02LjZDMTA1LjUgMzIgNDggODkuNSA0OCAxNjAuNFYxOTJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDh2MzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDZjLTIuMiAxMC41LTYuMSAyMC42LTExLjcgMjkuOUw0LjYgNDMxLjVjLTUuOSA5LjktNi4xIDIyLjItLjQgMzIuMlMyMC41IDQ4MCAzMiA0ODBIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDg4LjVsLjctMS4xYzExLjYtMTkuMyAxOC45LTQwLjcgMjEuNi02Mi45SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMjU2SDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMTYwLjR6XCJdXG59O1xudmFyIGZhU2F0ZWxsaXRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NhdGVsbGl0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODc1Ml0sIFwiZjdiZlwiLCBcIk0yMzMgN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTk2IDk2Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw4OS40IDg5LjQtMTUuNSAxNS41QzE1Mi4zIDIzMC40IDEyNC45IDIyNCA5NiAyMjRjLTMxLjcgMC02MS41IDcuNy04Ny44IDIxLjJjLTkgNC43LTEwLjMgMTYuNy0zLjEgMjMuOEwxMTIuNyAzNzYuNyA5Ni4zIDM5My4xYy0yLjYtLjctNS40LTEuMS04LjMtMS4xYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0yLjktLjQtNS42LTEuMS04LjNsMTYuNC0xNi40TDI0Mi45IDUwNi45YzcuMiA3LjIgMTkuMiA1LjkgMjMuOC0zLjFDMjgwLjMgNDc3LjUgMjg4IDQ0Ny43IDI4OCA0MTZjMC0yOC45LTYuNC01Ni4zLTE3LjgtODAuOWwxNS41LTE1LjVMMzc1IDQwOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw5Ni05NmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtODkuNC04OS40IDU1LTU1YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC00OC00OGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTU1IDU1TDIzMyA3em0xNTkgMzUxbC03Mi40LTcyLjQgNjIuMS02Mi4xTDQ1NC4xIDI5NiAzOTIgMzU4LjF6TTIyNi4zIDE5Mi40TDE1My45IDEyMCAyMTYgNTcuOWw3Mi40IDcyLjQtNjIuMSA2Mi4xelwiXVxufTtcbnZhciBmYVBsYW5lTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS1sb2NrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTU4XCIsIFwiTTE5MiA5My43QzE5MiA1OS41IDIyMSAwIDI1NiAwYzM2IDAgNjQgNTkuNSA2NCA5My43djg0LjZsMTAxLjggNTguMkM0MTggMjQ3LjYgNDE2IDI1OS42IDQxNiAyNzJ2MjQuNmMtMTcuOSAxMC40LTMwLjMgMjkuMS0zMS44IDUwLjlMMzIwIDMyOS4xVjQwMGw1Ny42IDQzLjJjNCAzIDYuNCA3LjggNi40IDEyLjh2MjQgMThjMCA3LjgtNi4zIDE0LTE0IDE0Yy0xLjMgMC0yLjYtLjItMy45LS41TDI1NiA0ODAgMTQ1LjkgNTExLjVjLTEuMyAuNC0yLjYgLjUtMy45IC41Yy03LjggMC0xNC02LjMtMTQtMTRWNDU2YzAtNSAyLjQtOS44IDYuNC0xMi44TDE5MiA0MDBsMC03MC45LTE3MS42IDQ5QzEwLjIgMzgxLjEgMCAzNzMuNCAwIDM2Mi44VjI5Ny4zYzAtNS43IDMuMS0xMSA4LjEtMTMuOUwxOTIgMTc4LjNWOTMuN3pNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDhoNjRWMjcyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MHY0OGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJINDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMjcyelwiXVxufTtcbnZhciBmYVRhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc5OTFdLCBcImYwMmJcIiwgXCJNMCA4MFYyMjkuNWMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2wxNzYgMTc2YzI1IDI1IDY1LjUgMjUgOTAuNSAwTDQxOC43IDMxNy4zYzI1LTI1IDI1LTY1LjUgMC05MC41bC0xNzYtMTc2Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQ4QzIxLjUgMzIgMCA1My41IDAgODB6bTExMiAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhQ29tbWVudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NDg5LCA2MTY2OV0sIFwiZjA3NVwiLCBcIk01MTIgMjQwYzAgMTE0LjktMTE0LjYgMjA4LTI1NiAyMDhjLTM3LjEgMC03Mi4zLTYuNC0xMDQuMS0xNy45Yy0xMS45IDguNy0zMS4zIDIwLjYtNTQuMyAzMC42QzczLjYgNDcxLjEgNDQuNyA0ODAgMTYgNDgwYy02LjUgMC0xMi4zLTMuOS0xNC44LTkuOWMtMi41LTYtMS4xLTEyLjggMy40LTE3LjRsMCAwIDAgMCAwIDAgMCAwIC4zLS4zYy4zLS4zIC43LS43IDEuMy0xLjRjMS4xLTEuMiAyLjgtMy4xIDQuOS01LjdjNC4xLTUgOS42LTEyLjQgMTUuMi0yMS42YzEwLTE2LjYgMTkuNS0zOC40IDIxLjQtNjIuOUMxNy43IDMyNi44IDAgMjg1LjEgMCAyNDBDMCAxMjUuMSAxMTQuNiAzMiAyNTYgMzJzMjU2IDkzLjEgMjU2IDIwOHpcIl1cbn07XG52YXIgZmFDYWtlQ2FuZGxlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWtlLWNhbmRsZXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc4NzQsIFwiYmlydGhkYXktY2FrZVwiLCBcImNha2VcIl0sIFwiZjFmZFwiLCBcIk04Ni40IDUuNUw2MS44IDQ3LjZDNTggNTQuMSA1NiA2MS42IDU2IDY5LjJWNzJjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MFY2OS4yYzAtNy42LTItMTUtNS44LTIxLjZMMTA1LjYgNS41QzEwMy42IDIuMSAxMDAgMCA5NiAwcy03LjYgMi4xLTkuNiA1LjV6bTEyOCAwTDE4OS44IDQ3LjZjLTMuOCA2LjUtNS44IDE0LTUuOCAyMS42VjcyYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBWNjkuMmMwLTcuNi0yLTE1LTUuOC0yMS42TDIzMy42IDUuNUMyMzEuNiAyLjEgMjI4IDAgMjI0IDBzLTcuNiAyLjEtOS42IDUuNXpNMzE3LjggNDcuNmMtMy44IDYuNS01LjggMTQtNS44IDIxLjZWNzJjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MFY2OS4yYzAtNy42LTItMTUtNS44LTIxLjZMMzYxLjYgNS41QzM1OS42IDIuMSAzNTYgMCAzNTIgMHMtNy42IDIuMS05LjYgNS41TDMxNy44IDQ3LjZ6TTEyOCAxNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjLTM1LjMgMC02NCAyOC43LTY0IDY0djcxYzguMyA1LjIgMTguMSA5IDI4LjggOWMxMy41IDAgMjcuMi02LjEgMzguNC0xMy40YzUuNC0zLjUgOS45LTcuMSAxMy05LjdjMS41LTEuMyAyLjctMi40IDMuNS0zLjFjLjQtLjQgLjctLjYgLjgtLjhsLjEtLjEgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjMy4xLTMuMiA3LjQtNC45IDExLjktNC44czguNiAyLjEgMTEuNiA1LjRsMCAwIDAgMCAuMSAuMWMuMSAuMSAuNCAuNCAuNyAuN2MuNyAuNyAxLjcgMS43IDMuMSAzYzIuOCAyLjYgNi44IDYuMSAxMS44IDkuNWMxMC4yIDcuMSAyMyAxMy4xIDM2LjMgMTMuMXMyNi4xLTYgMzYuMy0xMy4xYzUtMy41IDktNi45IDExLjgtOS41YzEuNC0xLjMgMi40LTIuMyAzLjEtM2MuMy0uMyAuNi0uNiAuNy0uN2wuMS0uMWMzLTMuNSA3LjQtNS40IDEyLTUuNHM5IDIgMTIgNS40bC4xIC4xYy4xIC4xIC40IC40IC43IC43Yy43IC43IDEuNyAxLjcgMy4xIDNjMi44IDIuNiA2LjggNi4xIDExLjggOS41YzEwLjIgNy4xIDIzIDEzLjEgMzYuMyAxMy4xczI2LjEtNiAzNi4zLTEzLjFjNS0zLjUgOS02LjkgMTEuOC05LjVjMS40LTEuMyAyLjQtMi4zIDMuMS0zYy4zLS4zIC42LS42IC43LS43bC4xLS4xYzIuOS0zLjQgNy4xLTUuMyAxMS42LTUuNHM4LjcgMS42IDExLjkgNC44bDAgMCAwIDAgMCAwIC4xIC4xYy4yIC4yIC40IC40IC44IC44Yy44IC43IDEuOSAxLjggMy41IDMuMWMzLjEgMi42IDcuNSA2LjIgMTMgOS43YzExLjIgNy4zIDI0LjkgMTMuNCAzOC40IDEzLjRjMTAuNyAwIDIwLjUtMy45IDI4LjgtOVYyODhjMC0zNS4zLTI4LjctNjQtNjQtNjRWMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjQ4SDI1NlYxNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhIMTI4VjE3NnpNNDQ4IDM5NC42Yy04LjUgMy4zLTE4LjIgNS40LTI4LjggNS40Yy0yMi41IDAtNDIuNC05LjktNTUuOC0xOC42Yy00LjEtMi43LTcuOC01LjQtMTAuOS03LjhjLTIuOCAyLjQtNi4xIDUtOS44IDcuNUMzMjkuOCAzOTAgMzEwLjYgNDAwIDI4OCA0MDBzLTQxLjgtMTAtNTQuNi0xOC45Yy0zLjUtMi40LTYuNy00LjktOS40LTcuMmMtMi43IDIuMy01LjkgNC43LTkuNCA3LjJDMjAxLjggMzkwIDE4Mi42IDQwMCAxNjAgNDAwcy00MS44LTEwLTU0LjYtMTguOWMtMy43LTIuNi03LTUuMi05LjgtNy41Yy0zLjEgMi40LTYuOCA1LjEtMTAuOSA3LjhDNzEuMiAzOTAuMSA1MS4zIDQwMCAyOC44IDQwMGMtMTAuNiAwLTIwLjMtMi4yLTI4LjgtNS40VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzk0LjZ6XCJdXG59O1xudmFyIGZhQmlydGhkYXlDYWtlID0gZmFDYWtlQ2FuZGxlcztcbnZhciBmYUNha2UgPSBmYUNha2VDYW5kbGVzO1xudmFyIGZhRW52ZWxvcGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZW52ZWxvcGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzODYsIDk5OTMsIDYxNDQzXSwgXCJmMGUwXCIsIFwiTTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEyYzAgMTUuMSA3LjEgMjkuMyAxOS4yIDM4LjRMMjM2LjggMzEzLjZjMTEuNCA4LjUgMjcgOC41IDM4LjQgMEw0OTIuOCAxNTAuNGMxMi4xLTkuMSAxOS4yLTIzLjMgMTkuMi0zOC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek0wIDE3NlYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE3NkwyOTQuNCAzMzkuMmMtMjIuOCAxNy4xLTU0IDE3LjEtNzYuOCAwTDAgMTc2elwiXVxufTtcbnZhciBmYUFuZ2xlc1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlcy11cCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiYW5nbGUtZG91YmxlLXVwXCJdLCBcImYxMDJcIiwgXCJNMjQ2LjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjI0IDEwOS4zIDM2MS40IDI0Ni42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjB6bTE2MCAzNTJsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDIyNCAzMDEuMyAzNjEuNCA0MzguNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zelwiXVxufTtcbnZhciBmYUFuZ2xlRG91YmxlVXAgPSBmYUFuZ2xlc1VwO1xudmFyIGZhUGFwZXJjbGlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcGVyY2xpcCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODIwNl0sIFwiZjBjNlwiLCBcIk0zNjQuMiA4My44Yy0yNC40LTI0LjQtNjQtMjQuNC04OC40IDBsLTE4NCAxODRjLTQyLjEgNDIuMS00Mi4xIDExMC4zIDAgMTUyLjRzMTEwLjMgNDIuMSAxNTIuNCAwbDE1Mi0xNTJjMTAuOS0xMC45IDI4LjctMTAuOSAzOS42IDBzMTAuOSAyOC43IDAgMzkuNmwtMTUyIDE1MmMtNjQgNjQtMTY3LjYgNjQtMjMxLjYgMHMtNjQtMTY3LjYgMC0yMzEuNmwxODQtMTg0YzQ2LjMtNDYuMyAxMjEuMy00Ni4zIDE2Ny42IDBzNDYuMyAxMjEuMyAwIDE2Ny42bC0xNzYgMTc2Yy0yOC42IDI4LjYtNzUgMjguNi0xMDMuNiAwcy0yOC42LTc1IDAtMTAzLjZsMTQ0LTE0NGMxMC45LTEwLjkgMjguNy0xMC45IDM5LjYgMHMxMC45IDI4LjcgMCAzOS42bC0xNDQgMTQ0Yy02LjcgNi43LTYuNyAxNy43IDAgMjQuNHMxNy43IDYuNyAyNC40IDBsMTc2LTE3NmMyNC40LTI0LjQgMjQuNC02NCAwLTg4LjR6XCJdXG59O1xudmFyIGZhQXJyb3dSaWdodFRvQ2l0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1yaWdodC10by1jaXR5JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGIzXCIsIFwiTTI4OCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OFYxOTJoNDBWMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NzJoMjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQzMiAzMzZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4em02NCAzMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgODBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIMzY4ek0zNTIgMjcydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnptMTc2LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDUyOHpNNTEyIDM2OHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZINTI4Yy04LjggMC0xNiA3LjItMTYgMTZ6TTE2Ni42IDE1My40bDgwIDgwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC04MCA4MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMTQ2LjcgMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDE0Ni43bC0yNS40LTI1LjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDB6XCJdXG59O1xudmFyIGZhUmliYm9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JpYmJvbicsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyNzg5NV0sIFwiZjRkNlwiLCBcIk0zMzMuMiAzMjIuOGwwIDAtMTMzLjktMTQ2IDAgMEwxNDYgMTE4LjZjNy44LTUuMSAzNy0yMi42IDc4LTIyLjZzNzAuMiAxNy40IDc4IDIyLjZMMjQ1LjcgMTgwbDg1LjYgOTMuNCAyNy40LTI5LjhjMTYuMy0xNy43IDI1LjMtNDAuOSAyNS4zLTY1VjE0OS4xYzAtMTktNS42LTM3LjUtMTYuMS01My4zTDMyNy44IDM1LjZDMzEyLjkgMTMuNCAyODcuOSAwIDI2MS4yIDBoLTc2Yy0yNS44IDAtNTAuMSAxMi41LTY1LjEgMzMuNUw4MS45IDg3QzcwLjMgMTAzLjIgNjQgMTIyLjggNjQgMTQyLjhWMTY0YzAgMjMuMiA4LjQgNDUuNiAyMy42IDYzLjFsNTYgNjQuMiAwIDAgODMuMyA5NS42IDAgMCA5MS44IDEwNS4zYzEwIDExLjUgMjYuOCAxNC4zIDQwIDYuOGw1NC41LTMxLjFjMTcuOC0xMC4yIDIxLjYtMzQuMyA3LjctNDkuNGwtODcuNy05NS43ek0yMDUuMiA0MTAuNmwtODMuMy05NS42TDI3LjEgNDE4LjVjLTEzLjkgMTUuMS0xMC4xIDM5LjIgNy43IDQ5LjRsNTUuMSAzMS41YzEzIDcuNCAyOS4zIDQuOSAzOS40LTYuMWw3NS45LTgyLjZ6XCJdXG59O1xudmFyIGZhTHVuZ3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbHVuZ3MnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjk3MjldLCBcImY2MDRcIiwgXCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTY0LjFjMCAxNi40IDguNCAzMS43IDIyLjIgNDAuNWw5LjggNi4yVjE2NS4zQzM4NCAxMjcgNDE1IDk2IDQ1My4zIDk2YzIxLjcgMCA0Mi44IDEwLjIgNTUuOCAyOC44YzE1LjQgMjIuMSA0NC4zIDY1LjQgNzEgMTE2LjljMjYuNSA1MC45IDUyLjQgMTEyLjUgNTkuNiAxNzAuM2MuMiAxLjMgLjIgMi42IC4yIDR2N2MwIDQ5LjEtMzkuOCA4OS04OSA4OWMtNy4zIDAtMTQuNS0uOS0yMS42LTIuN2wtNzIuNy0xOC4yQzQxNCA0ODAuNSAzODQgNDQyLjEgMzg0IDM5OFYzMjVsOTAuNSA1Ny42YzcuNSA0LjcgMTcuMyAyLjUgMjIuMS00LjlzMi41LTE3LjMtNC45LTIyLjFMMzg0IDI4Ny4xdi0uNGwtNDQuMS0yOC4xYy03LjMtNC42LTEzLjktMTAuMS0xOS45LTE2LjFjLTUuOSA2LTEyLjYgMTEuNS0xOS45IDE2LjFMMjU2IDI4Ni43IDE2MS4yIDM0N2wtMTMuNSA4LjZjMCAwIDAgMC0uMSAwYy03LjQgNC44LTkuNiAxNC42LTQuOCAyMi4xYzQuNyA3LjUgMTQuNiA5LjcgMjIuMSA0LjlsOTEuMS01OFYzOThjMCA0NC4xLTMwIDgyLjUtNzIuNyA5My4xbC03Mi43IDE4LjJjLTcuMSAxLjgtMTQuMyAyLjctMjEuNiAyLjdjLTQ5LjEgMC04OS0zOS44LTg5LTg5di03YzAtMS4zIC4xLTIuNyAuMi00YzcuMi01Ny45IDMzLjEtMTE5LjQgNTkuNi0xNzAuM2MyNi44LTUxLjUgNTUuNi05NC44IDcxLTExNi45YzEzLTE4LjYgMzQtMjguOCA1NS44LTI4LjhDMjI1IDk2IDI1NiAxMjcgMjU2IDE2NS4zdjQ1LjVsOS44LTYuMmMxMy44LTguOCAyMi4yLTI0LjEgMjIuMi00MC41VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYUFycm93VXA5MSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cC05LTEnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNvcnQtbnVtZXJpYy11cC1hbHRcIl0sIFwiZjg4N1wiLCBcIk0xNjAgMzJjOSAwIDE3LjUgMy44IDIzLjYgMTAuNGw4OCA5NmMxMS45IDEzIDExLjEgMzMuMy0yIDQ1LjJzLTMzLjMgMTEuMS00NS4yLTJMMTkyIDE0Ni4zVjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNDYuM0w5NS42IDE4MS42Yy0xMS45IDEzLTMyLjIgMTMuOS00NS4yIDJzLTEzLjktMzIuMi0yLTQ1LjJsODgtOTZDMTQyLjUgMzUuOCAxNTEgMzIgMTYwIDMyek00NTAuNyAyOTRjOC4zIDYgMTMuMyAxNS43IDEzLjMgMjZ2OTZoMTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDMyIDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYzNjQuNGwtNS45IDJjLTE2LjggNS42LTM0LjktMy41LTQwLjUtMjAuMnMzLjUtMzQuOSAyMC4yLTQwLjVsNDgtMTZjOS44LTMuMyAyMC41LTEuNiAyOC44IDQuNHptLTUtMTQ1LjFBMzIgMzIgMCAxIDAgNDE4LjMgOTFhMzIgMzIgMCAxIDAgMjcuNCA1Ny45em0tNDAuNyA1NC45QzM2OS42IDE5Mi40IDM0NCAxNTkuMiAzNDQgMTIwYzAtNDguNiAzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAyMy41LTcuNSA0Ni4zLTIxLjUgNjUuMkw0NDkuNyAyNTFjLTEwLjUgMTQuMi0zMC42IDE3LjItNDQuOCA2LjdzLTE3LjItMzAuNi02LjctNDQuOGw2LjgtOS4yelwiXVxufTtcbnZhciBmYVNvcnROdW1lcmljVXBBbHQgPSBmYUFycm93VXA5MTtcbnZhciBmYUxpdGVjb2luU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaXRlY29pbi1zaWduJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMWQzXCIsIFwiTTEyOCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMlM2NCA0Ni4zIDY0IDY0VjIxMy42TDIzLjIgMjI1LjJjLTE3IDQuOS0yNi44IDIyLjYtMjIgMzkuNnMyMi42IDI2LjggMzkuNiAyMkw2NCAyODAuMVY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDEyOFYyNjEuOWwxMzYuOC0zOS4xYzE3LTQuOSAyNi44LTIyLjYgMjItMzkuNnMtMjIuNi0yNi44LTM5LjYtMjJMMTI4IDE5NS4zVjY0elwiXVxufTtcbnZhciBmYUJvcmRlck5vbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9yZGVyLW5vbmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4NTBcIiwgXCJNMzIgNDgwYTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptOTYtNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0wLTM4NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAgMjU2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNMzIwIDQxNmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzIwYTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMCAxMjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMjQgNDgwYTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMC00NDhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0wIDI1NmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTQxNiA0MTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0wLTM4NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTMyIDk2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNNDE2IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTMyIDI4OGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bTE5MiAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTE5MiA2NGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTMyIDMyMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTQxNiAxOTJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek0zMiAxMjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xOTIgNjRhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0elwiXVxufTtcbnZhciBmYUNpcmNsZU5vZGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1ub2RlcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRlMlwiLCBcIk00MTguNCAxNTcuOWMzNS4zLTguMyA2MS42LTQwIDYxLjYtNzcuOWMwLTQ0LjItMzUuOC04MC04MC04MGMtNDMuNCAwLTc4LjcgMzQuNS04MCA3Ny41TDEzNi4yIDE1MS4xQzEyMS43IDEzNi44IDEwMS45IDEyOCA4MCAxMjhjLTQ0LjIgMC04MCAzNS44LTgwIDgwczM1LjggODAgODAgODBjMTIuMiAwIDIzLjgtMi43IDM0LjEtNy42TDI1OS43IDQwNy44Yy0yLjQgNy42LTMuNyAxNS44LTMuNyAyNC4yYzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0yNy43LTE0LTUyLjEtMzUuNC02Ni40bDM3LjgtMjA3Ljd6TTE1Ni4zIDIzMi4yYzIuMi02LjkgMy41LTE0LjIgMy43LTIxLjdsMTgzLjgtNzMuNWMzLjYgMy41IDcuNCA2LjcgMTEuNiA5LjVMMzE3LjYgMzU0LjFjLTUuNSAxLjMtMTAuOCAzLjEtMTUuOCA1LjVMMTU2LjMgMjMyLjJ6XCJdXG59O1xudmFyIGZhUGFyYWNodXRlQm94ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcmFjaHV0ZS1ib3gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0Y2RcIiwgXCJNMzgzLjUgMTkyYy4zLTUuMyAuNS0xMC42IC41LTE2YzAtNTEtMTUuOS05Ni00MC4yLTEyNy42QzMxOS41IDE2LjkgMjg4LjIgMCAyNTYgMHMtNjMuNSAxNi45LTg3LjggNDguNEMxNDMuOSA4MCAxMjggMTI1IDEyOCAxNzZjMCA1LjQgLjIgMTAuNyAuNSAxNkgyNDBWMzIwSDIwOGMtNyAwLTEzLjcgMS41LTE5LjcgNC4yTDY4LjIgMTkySDk2LjVjLS4zLTUuMy0uNS0xMC42LS41LTE2YzAtNjQgMjIuMi0xMjEuMiA1Ny4xLTE1OS4zQzYyIDQ5LjMgMTguNiAxMjIuNiA0LjIgMTczLjZDMS41IDE4My4xIDkgMTkyIDE4LjkgMTkyaDZMMTY1LjIgMzQ2LjNjLTMuMyA2LjUtNS4yIDEzLjktNS4yIDIxLjd2OTZjMCAyNi41IDIxLjUgNDggNDggNDhoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzY4YzAtNy44LTEuOS0xNS4yLTUuMi0yMS43TDQ4Ny4xIDE5Mmg2YzkuOSAwIDE3LjQtOC45IDE0LjctMTguNEM0OTMuNCAxMjIuNiA0NTAgNDkuMyAzNTguOSAxNi43QzM5My44IDU0LjggNDE2IDExMi4xIDQxNiAxNzZjMCA1LjQtLjIgMTAuNy0uNSAxNmgyOC4zTDMyMy43IDMyNC4yYy02LTIuNy0xMi43LTQuMi0xOS43LTQuMkgyNzJWMTkySDM4My41elwiXVxufTtcbnZhciBmYUluZGVudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmRlbnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwM2NcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTkyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgOTZINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpNMCA0NDhjMC0xNy43IDE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTI3LjggMjY4LjZMMjUuOCAzNDcuOUMxNS4zIDM1Ni4xIDAgMzQ4LjYgMCAzMzUuM1YxNzYuN2MwLTEzLjMgMTUuMy0yMC44IDI1LjgtMTIuNmwxMDEuOSA3OS4zYzguMiA2LjQgOC4yIDE4LjkgMCAyNS4zelwiXVxufTtcbnZhciBmYVRydWNrRmllbGRVbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1maWVsZC11bicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU4ZVwiLCBcIk05NiAzMkM2MC43IDMyIDMyIDYwLjcgMzIgOTZ2MzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMydjMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDY0YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZIMzg0YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMjg4YzAtMzUuMy0yOC43LTY0LTY0LTY0aC00LjJjLS40LTEuMS0uOS0yLjEtMS4zLTMuMkw0ODUuNyAxMDJjLTEwLjMtMjMuMS0zMy4yLTM4LTU4LjUtMzhIMzc1LjRDMzY0LjQgNDQuOSAzNDMuNyAzMiAzMjAgMzJIOTZ6bTI4OCA5Nmg0My4ybDQyLjcgOTZIMzg0VjEyOHpNMTEyIDM4NGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem0zNjgtNDhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2ek0yNTMuMyAxMzUuMWwzNC43IDUyVjE0NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djk2YzAgNy4xLTQuNiAxMy4zLTExLjQgMTUuM3MtMTQtLjYtMTcuOS02LjRsLTM0LjctNTJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE0NGMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTEyOCAxNDR2NjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OFYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIl1cbn07XG52YXIgZmFIb3VyZ2xhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91cmdsYXNzJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbOTIwMywgNjIwMzIsIFwiaG91cmdsYXNzLWVtcHR5XCJdLCBcImYyNTRcIiwgXCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBINjQgMzIwaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjc1YzAgNDIuNC0xNi45IDgzLjEtNDYuOSAxMTMuMUwyMzcuMyAyNTZsNjcuOSA2Ny45YzMwIDMwIDQ2LjkgNzAuNyA0Ni45IDExMy4xdjExYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyMCA2NCAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY0MzdjMC00Mi40IDE2LjktODMuMSA0Ni45LTExMy4xTDE0Ni43IDI1NiA3OC45IDE4OC4xQzQ4LjkgMTU4LjEgMzIgMTE3LjQgMzIgNzVWNjRDMTQuMyA2NCAwIDQ5LjcgMCAzMnpNOTYgNjRWNzVjMCAyNS41IDEwLjEgNDkuOSAyOC4xIDY3LjlMMTkyIDIxMC43bDY3LjktNjcuOWMxOC0xOCAyOC4xLTQyLjQgMjguMS02Ny45VjY0SDk2em0wIDM4NEgyODhWNDM3YzAtMjUuNS0xMC4xLTQ5LjktMjguMS02Ny45TDE5MiAzMDEuM2wtNjcuOSA2Ny45Yy0xOCAxOC0yOC4xIDQyLjQtMjguMSA2Ny45djExelwiXVxufTtcbnZhciBmYUhvdXJnbGFzc0VtcHR5ID0gZmFIb3VyZ2xhc3M7XG52YXIgZmFNb3VudGFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3VudGFpbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzk1Nl0sIFwiZjZmY1wiLCBcIk0yNTYgMzJjMTIuNSAwIDI0LjEgNi40IDMwLjggMTdMNTAzLjQgMzk0LjRjNS42IDguOSA4LjYgMTkuMiA4LjYgMjkuN2MwIDMwLjktMjUgNTUuOS01NS45IDU1LjlINTUuOUMyNSA0ODAgMCA0NTUgMCA0MjQuMWMwLTEwLjUgMy0yMC44IDguNi0yOS43TDIyNS4yIDQ5YzYuNi0xMC42IDE4LjMtMTcgMzAuOC0xN3ptNjUgMTkyTDI1NiAxMjAuNCAxNzYuOSAyNDYuNWwxOC4zIDI0LjRjNi40IDguNSAxOS4yIDguNSAyNS42IDBsMjUuNi0zNC4xYzYtOC4xIDE1LjUtMTIuOCAyNS42LTEyLjhoNDl6XCJdXG59O1xudmFyIGZhVXNlckRvY3RvciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWRvY3RvcicsXG4gIGljb246IFs0NDgsIDUxMiwgW1widXNlci1tZFwiXSwgXCJmMGYwXCIsIFwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tOTYgNTUuMkM1NCAzMzIuOSAwIDQwMS4zIDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMkg0MTguM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN2MwLTgxLTU0LTE0OS40LTEyOC0xNzEuMVYzNjJjMjcuNiA3LjEgNDggMzIuMiA0OCA2MnY0MGMwIDguOC03LjIgMTYtMTYgMTZIMzM2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2VjQyNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnYyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNTZjLTguOCAwLTE2LTcuMi0xNi0xNlY0MjRjMC0yOS44IDIwLjQtNTQuOSA0OC02MlYzMDQuOWMtNi0uNi0xMi4xLS45LTE4LjMtLjlIMTc4LjNjLTYuMiAwLTEyLjMgLjMtMTguMyAuOXY2NS40YzIzLjEgNi45IDQwIDI4LjMgNDAgNTMuN2MwIDMwLjktMjUuMSA1Ni01NiA1NnMtNTYtMjUuMS01Ni01NmMwLTI1LjQgMTYuOS00Ni44IDQwLTUzLjdWMzExLjJ6TTE0NCA0NDhhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwiXVxufTtcbnZhciBmYVVzZXJNZCA9IGZhVXNlckRvY3RvcjtcbnZhciBmYUNpcmNsZUluZm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWluZm8nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImluZm8tY2lyY2xlXCJdLCBcImYwNWFcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIxNiAzMzZoMjRWMjcySDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY4OGg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptNDAtMjA4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFJbmZvQ2lyY2xlID0gZmFDaXJjbGVJbmZvO1xudmFyIGZhQ2xvdWRNZWF0YmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1tZWF0YmFsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjczYlwiLCBcIk0wIDIyNGMwIDUzIDQzIDk2IDk2IDk2aDQ0LjdjOS41LTIzLjUgMzIuNS00MCA1OS4zLTQwYzIgMCAzLjkgLjEgNS44IC4zQzIxNy42IDI2NS41IDIzNS43IDI1NiAyNTYgMjU2czM4LjQgOS41IDUwLjIgMjQuM2MxLjktLjIgMy45LS4zIDUuOC0uM2MyNi45IDAgNDkuOSAxNi41IDU5LjMgNDBINDE2YzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0uNSAwLTEuMSAwLTEuNiAwYzEuMS01LjIgMS42LTEwLjUgMS42LTE2YzAtNDQuMi0zNS44LTgwLTgwLTgwYy0yNC4zIDAtNDYuMSAxMC45LTYwLjggMjhDMjU2LjUgMjQuMyAyMTkuMSAwIDE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjEgLjcgMTQuMSAxLjkgMjAuOEMyNy42IDE0NS40IDAgMTgxLjUgMCAyMjR6bTI4OCA5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmMwIDEgLjEgMi4xIC4xIDMuMWMtLjctLjgtMS40LTEuNi0yLjEtMi4zYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2MuNyAuNyAxLjUgMS40IDIuMyAyLjFjLTEtLjEtMi4xLS4xLTMuMS0uMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmMxIDAgMi4xLS4xIDMuMS0uMWMtLjggLjctMS42IDEuMy0yLjMgMi4xYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwYy43LS43IDEuNC0xLjUgMi4xLTIuM2MtLjEgMS0uMSAyLjEtLjEgMy4xYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0xLS4xLTIuMS0uMS0zLjFjLjcgLjggMS4zIDEuNiAyLjEgMi4zYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNjLS43LS43LTEuNS0xLjQtMi4zLTIuMWMxIC4xIDIuMSAuMSAzLjEgLjFjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJjLTEgMC0yLjEgLjEtMy4xIC4xYy44LS43IDEuNi0xLjMgMi4zLTIuMWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGMtLjcgLjctMS40IDEuNS0yLjEgMi4zYy4xLTEgLjEtMi4xIC4xLTMuMXpNNDggNDQ4YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptNDE2IDBhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwiXVxufTtcbnZhciBmYUNhbWVyYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYW1lcmEnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MjI1OCwgXCJjYW1lcmEtYWx0XCJdLCBcImYwMzBcIiwgXCJNMTQ5LjEgNjQuOEwxMzguNyA5Nkg2NEMyOC43IDk2IDAgMTI0LjcgMCAxNjBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzczLjNMMzYyLjkgNjQuOEMzNTYuNCA0NS4yIDMzOC4xIDMyIDMxNy40IDMySDE5NC42Yy0yMC43IDAtMzkgMTMuMi00NS41IDMyLjh6TTI1NiAxOTJhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJdXG59O1xudmFyIGZhQ2FtZXJhQWx0ID0gZmFDYW1lcmE7XG52YXIgZmFTcXVhcmVWaXJ1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtdmlydXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImU1NzhcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjMuOCA5My43YzEzLjMgMCAyNCAxMC43IDI0IDI0YzAgMjkuMyAzNS40IDQzLjkgNTYuMSAyMy4yYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtMjAuNyAyMC43LTYgNTYuMSAyMy4yIDU2LjFjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI5LjMgMC00My45IDM1LjQtMjMuMiA1Ni4xYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBjLTIwLjctMjAuNy01Ni4xLTYtNTYuMSAyMy4yYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtMjkuMy0zNS40LTQzLjktNTYuMS0yMy4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45YzIwLjctMjAuNyA2LTU2LjEtMjMuMi01Ni4xYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzI5LjMgMCA0My45LTM1LjQgMjMuMi01Ni4xYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBjMjAuNyAyMC43IDU2LjEgNiA1Ni4xLTIzLjJjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTE5MiAyNTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em04OCAzMmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwelwiXVxufTtcbnZhciBmYU1ldGVvciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZXRlb3InLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5NzMyXSwgXCJmNzUzXCIsIFwiTTQ5My43IC45TDI5OS40IDc1LjZsMi4zLTI5LjNjMS0xMi44LTEyLjgtMjEuNS0yNC0xNS4xTDEwMS4zIDEzMy40QzM4LjYgMTY5LjcgMCAyMzYuNiAwIDMwOUMwIDQyMS4xIDkwLjkgNTEyIDIwMyA1MTJjNzIuNCAwIDEzOS40LTM4LjYgMTc1LjctMTAxLjNMNDgwLjggMjM0LjNjNi41LTExLjEtMi4yLTI1LTE1LjEtMjRsLTI5LjMgMi4zTDUxMS4xIDE4LjNjLjYtMS41IC45LTMuMiAuOS00LjhDNTEyIDYgNTA2IDAgNDk4LjUgMGMtMS43IDAtMy4zIC4zLTQuOCAuOXpNMTkyIDE5MmExMjggMTI4IDAgMSAxIDAgMjU2IDEyOCAxMjggMCAxIDEgMC0yNTZ6bTAgOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTYgOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwiXVxufTtcbnZhciBmYUNhck9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci1vbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRkZFwiLCBcIk0yODAgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNHpNMTg1LjggMjI0SDMyNi4yYzYuOCAwIDEyLjggNC4zIDE1LjEgMTAuNkwzNjAuMyAyODhIMTUxLjdsMTkuMS01My40YzIuMy02LjQgOC4zLTEwLjYgMTUuMS0xMC42em0tNzUuMy0xMC45TDgyLjIgMjkyLjRDNjIuMSAzMDAuOSA0OCAzMjAuOCA0OCAzNDR2NDAgNjQgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQ4SDM4NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxNmMxNy43IDAgMzItMTQuMyAzMi0zMlY0NDggMzg0IDM0NGMwLTIzLjItMTQuMS00My4xLTM0LjItNTEuNmwtMjguMy03OS4zQzM5MC4xIDE4MS4zIDM2MCAxNjAgMzI2LjIgMTYwSDE4NS44Yy0zMy44IDAtNjQgMjEuMy03NS4zIDUzLjF6TTEyOCAzNDRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0yMzIgMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNMzkgMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDQ4IDQ4YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw3MyAzOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6bTQwMCAwTDM5MSA4N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDQ4LTQ4YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDB6XCJdXG59O1xudmFyIGZhU2xlaWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NsZWlnaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjdjY1wiLCBcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZWMjU2YzAgNTMgNDMgOTYgOTYgOTZ2MzJoNjRWMzUySDM4NHYzMmg2NFYzNTJjNTMgMCA5Ni00MyA5Ni05NlYxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTEyIDQ4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NDEuM2MwIDMwLjItMjQuNSA1NC43LTU0LjcgNTQuN2MtNzUuNSAwLTE0NS42LTM4LjktMTg1LjYtMTAyLjlsLTQuMy02LjlDMTc0LjIgNjcuNiAxMjUgMzcuNiA3MC43IDMyLjdjLTIuMi0uNS00LjQtLjctNi43LS43SDU1IDMyek02NDAgMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTUyYzQ4LjYgMCA4OC0zOS40IDg4LTg4di04elwiXVxufTtcbnZhciBmYUFycm93RG93bjE5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWRvd24tMS05JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LW51bWVyaWMtYXNjXCIsIFwic29ydC1udW1lcmljLWRvd25cIl0sIFwiZjE2MlwiLCBcIk00NTAuNyAzOGMtOC4zLTYtMTkuMS03LjctMjguOC00LjRsLTQ4IDE2Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41czIzLjcgMjUuOCA0MC41IDIwLjJsNS45LTJWMTYwSDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg0OCA0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg0NjRWNjRjMC0xMC4zLTQuOS0xOS45LTEzLjMtMjZ6TTE2MCA0ODBjOSAwIDE3LjUtMy44IDIzLjYtMTAuNGw4OC05NmMxMS45LTEzIDExLjEtMzMuMy0yLTQ1LjJzLTMzLjMtMTEuMS00NS4yIDJMMTkyIDM2NS43VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjM2NS43TDk1LjYgMzMwLjRjLTExLjktMTMtMzIuMi0xMy45LTQ1LjItMnMtMTMuOSAzMi4yLTIgNDUuMmw4OCA5NkMxNDIuNSA0NzYuMiAxNTEgNDgwIDE2MCA0ODB6TTQxOC4zIDMwN2EzMiAzMiAwIDEgMSAyNy40IDU3LjlBMzIgMzIgMCAxIDEgNDE4LjMgMzA3ek00MDUuMSA0MTkuOGwtNi44IDkuMmMtMTAuNSAxNC4yLTcuNSAzNC4yIDYuNyA0NC44czM0LjIgNy41IDQ0LjgtNi43bDQ4LjgtNjUuOGMxNC0xOC45IDIxLjUtNDEuNyAyMS41LTY1LjJjMC00OC42LTM5LjQtODgtODgtODhzLTg4IDM5LjQtODggODhjMCAzOS4yIDI1LjYgNzIuNCA2MS4xIDgzLjh6XCJdXG59O1xudmFyIGZhU29ydE51bWVyaWNBc2MgPSBmYUFycm93RG93bjE5O1xudmFyIGZhU29ydE51bWVyaWNEb3duID0gZmFBcnJvd0Rvd24xOTtcbnZhciBmYUhhbmRIb2xkaW5nRHJvcGxldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmctZHJvcGxldCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiaGFuZC1ob2xkaW5nLXdhdGVyXCJdLCBcImY0YzFcIiwgXCJNMjc1LjUgNi42QzI3OC4zIDIuNSAyODMgMCAyODggMHM5LjcgMi41IDEyLjUgNi42TDM2Ni44IDEwM0MzNzggMTE5LjMgMzg0IDEzOC42IDM4NCAxNTguM1YxNjBjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZ2LTEuN2MwLTE5LjggNi0zOSAxNy4yLTU1LjNMMjc1LjUgNi42ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41SDE5MiAzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDY4LjhsNDQuOS0zNmMyMi43LTE4LjIgNTAuOS0yOCA4MC0yOEgyNzJoMTYgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjg4IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkgzOTIuNmwxMTkuNy04OC4yYzE3LjgtMTMuMSA0Mi44LTkuMyA1NS45IDguNXpNMTkzLjYgMzg0bDAgMC0uOSAwYy4zIDAgLjYgMCAuOSAwelwiXVxufTtcbnZhciBmYUhhbmRIb2xkaW5nV2F0ZXIgPSBmYUhhbmRIb2xkaW5nRHJvcGxldDtcbnZhciBmYVdhdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNzczXCIsIFwiTTI2OS41IDY5LjljMTEuMS03LjkgMjUuOS03LjkgMzcgMEMzMjkgODUuNCAzNTYuNSA5NiAzODQgOTZjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgMTQ5LjcgNDE3IDE2MCAzODQgMTYwYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNEM0Mi44IDkyLjYgNjEgODMuNSA3NS4zIDcxLjZjMTEuMS05LjUgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA4NS4yIDE2NS4xIDk2IDE5MiA5NmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjF6bTM3IDI4OEMzMjkgMzczLjQgMzU2LjUgMzg0IDM4NCAzODRjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFsMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDM3LjcgNDE3IDQ0OCAzODQgNDQ4Yy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2wwIDBDMTM2LjcgMzczLjIgMTY1LjEgMzg0IDE5MiAzODRjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6bTAtMTQ0QzMyOSAyMjkuNCAzNTYuNSAyNDAgMzg0IDI0MGMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSAyOTMuNyA0MTcgMzA0IDM4NCAzMDRjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjUgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAyMjkuMiAxNjUuMSAyNDAgMTkyIDI0MGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIl1cbn07XG52YXIgZmFDYWxlbmRhckNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLWNoZWNrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjc0XCIsIFwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6TTMyOSAzMDVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtOTUgOTUtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMzI5IDMwNXpcIl1cbn07XG52YXIgZmFCcmFpbGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyYWlsbGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyYTFcIiwgXCJNMCA5NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSAwIDk2ek0yMjQgMjcyYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptMC04MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNODAgNDE2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6TTAgNDE2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDAgNDE2em0yNDAgMGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tODAgMGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTY0IDE5MmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMjI0IDMyYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0zNTIgOTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMzUyIDk2em0yNDAgMGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tODAgMGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA1MTIgOTZ6bTY0IDE3NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTAtODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bTE2IDIyNGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tODAgMGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTQxNiAyNzJhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0wLTgwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4em0xNiAyMjRhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptLTgwIDBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwelwiXVxufTtcbnZhciBmYVByZXNjcmlwdGlvbkJvdHRsZU1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHJlc2NyaXB0aW9uLWJvdHRsZS1tZWRpY2FsJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJwcmVzY3JpcHRpb24tYm90dGxlLWFsdFwiXSwgXCJmNDg2XCIsIFwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0VjMyem0zMiA5NkgzNTJWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6TTE2MCAyNDB2NDhIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzUyaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDIyNFYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2elwiXVxufTtcbnZhciBmYVByZXNjcmlwdGlvbkJvdHRsZUFsdCA9IGZhUHJlc2NyaXB0aW9uQm90dGxlTWVkaWNhbDtcbnZhciBmYUxhbmRtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhbmRtYXJrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTYzXSwgXCJmNjZmXCIsIFwiTTI0MC4xIDQuMmM5LjgtNS42IDIxLjktNS42IDMxLjggMGwxNzEuOCA5OC4xTDQ0OCAxMDRsMCAuOSA0Ny45IDI3LjRjMTIuNiA3LjIgMTguOCAyMiAxNS4xIDM2cy0xNi40IDIzLjgtMzAuOSAyMy44SDMyYy0xNC41IDAtMjcuMi05LjgtMzAuOS0yMy44czIuNS0yOC44IDE1LjEtMzZMNjQgMTA0LjlWMTA0bDQuNC0xLjZMMjQwLjEgNC4yek02NCAyMjRoNjRWNDE2aDQwVjIyNGg2NFY0MTZoNDhWMjI0aDY0VjQxNmg0MFYyMjRoNjRWNDIwLjNjLjYgLjMgMS4yIC43IDEuOCAxLjFsNDggMzJjMTEuNyA3LjggMTcgMjIuNCAxMi45IDM1LjlTNDk0LjEgNTEyIDQ4MCA1MTJIMzJjLTE0LjEgMC0yNi41LTkuMi0zMC42LTIyLjdzMS4xLTI4LjEgMTIuOS0zNS45bDQ4LTMyYy42LS40IDEuMi0uNyAxLjgtMS4xVjIyNHpcIl1cbn07XG52YXIgZmFUcnVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjaycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODY2NiwgOTk1MV0sIFwiZjBkMVwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFYzNjhjMCAyNi41IDIxLjUgNDggNDggNDhINjRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NkgzODRjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYyODggMjU2IDIzNy4zYzAtMTctNi43LTMzLjMtMTguNy00NS4zTDUxMiAxMTQuN2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0g0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTQxNiAxNjBoNTAuN0w1NDQgMjM3LjNWMjU2SDQxNlYxNjB6TTExMiA0MTZhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzY4LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIl1cbn07XG52YXIgZmFDcm9zc2hhaXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3NzaGFpcnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNWJcIiwgXCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDIuNGM5My43IDEzLjkgMTY3LjcgODggMTgxLjYgMTgxLjZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ2OS42Yy0xMy45IDkzLjctODggMTY3LjctMTgxLjYgMTgxLjZWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ2OS42QzEzMC4zIDQ1NS43IDU2LjMgMzgxLjcgNDIuNCAyODhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDIuNEM1Ni4zIDEzMC4zIDEzMC4zIDU2LjMgMjI0IDQyLjRWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTEwNy40IDI4OGMxMi41IDU4LjMgNTguNCAxMDQuMSAxMTYuNiAxMTYuNlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnYyMC42YzU4LjMtMTIuNSAxMDQuMS01OC40IDExNi42LTExNi42SDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgyMC42QzM5Mi4xIDE2NS43IDM0Ni4zIDExOS45IDI4OCAxMDcuNFYxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTA3LjRDMTY1LjcgMTE5LjkgMTE5LjkgMTY1LjcgMTA3LjQgMjI0SDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxMDcuNHpNMjU2IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhUGVyc29uQ2FuZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tY2FuZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTUzY1wiLCBcIk0yNzIgNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHptLTggMTg3LjNsNDcuNCA1Ny4xYzExLjMgMTMuNiAzMS41IDE1LjUgNDUuMSA0LjJzMTUuNS0zMS41IDQuMi00NS4xbC03My43LTg4LjljLTE4LjItMjItNDUuMy0zNC43LTczLjktMzQuN0gxNzcuMWMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MmgxNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMzUuM3pNMzUyIDM3NmMwLTQuNCAzLjYtOCA4LThzOCAzLjYgOCA4VjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM3NmMwLTMwLjktMjUuMS01Ni01Ni01NnMtNTYgMjUuMS01NiA1NnY4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR2LTh6XCJdXG59O1xudmFyIGZhVGVudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW50JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTdkXCIsIFwiTTI2OS40IDZDMjgwLjUtMiAyOTUuNS0yIDMwNi42IDZsMjI0IDE2MGM3LjQgNS4zIDEyLjIgMTMuNSAxMy4yIDIyLjVsMzIgMjg4YzEgOS0xLjkgMTguMS04IDI0LjlzLTE0LjcgMTAuNy0yMy44IDEwLjdINDE2TDI4OCAyODhWNTEySDMyYy05LjEgMC0xNy44LTMuOS0yMy44LTEwLjdzLTktMTUuOC04LTI0LjlsMzItMjg4YzEtOSA1LjgtMTcuMiAxMy4yLTIyLjVMMjY5LjQgNnpcIl1cbn07XG52YXIgZmFWZXN0UGF0Y2hlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZXN0LXBhdGNoZXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwODZcIiwgXCJNMTUxLjIgNjkuN2w1NS45IDE2Ny43LTExIDMzLjFjLTIuNyA4LjItNC4xIDE2LjctNC4xIDI1LjNWNDY0YzAgMTQuNSAzLjkgMjguMiAxMC43IDM5LjlDMTk1IDUwOSAxODUuOSA1MTIgMTc2IDUxMkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjcwLjVjMC05LjUgMi44LTE4LjcgOC4xLTI2LjZsNDcuOS03MS44YzUuMy03LjkgOC4xLTE3LjEgOC4xLTI2LjZWMTI4IDU0LjMgNDhDNjQgMjEuNSA4NS41IDAgMTEyIDBoNC41Yy4yIDAgLjQgMCAuNiAwYy40IDAgLjggMCAxLjIgMGMxOC44IDAgMzQuMSA5LjcgNDQuMSAxOC44QzE3MS42IDI3LjIgMTkwLjggNDAgMjI0IDQwczUyLjQtMTIuOCA2MS43LTIxLjJDMjk1LjcgOS43IDMxMSAwIDMyOS43IDBjLjQgMCAuOCAwIDEuMiAwYy4yIDAgLjQgMCAuNiAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OHY2LjNWMTI4djE3LjVjMCA5LjUgMi44IDE4LjcgOC4xIDI2LjZsNDcuOSA3MS44YzUuMyA3LjkgOC4xIDE3LjEgOC4xIDI2LjZWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI3MmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjk1LjhjMC01LjIgLjgtMTAuMyAyLjUtMTUuMkwyOTYuOCA2OS43QzI3OS40IDc5LjcgMjU1LjQgODggMjI0IDg4cy01NS40LTguMy03Mi44LTE4LjN6TTk2IDQ1NmE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTYzLjUgMjU1LjVjLTQuNyA0LjctNC43IDEyLjMgMCAxN0w3OSAyODggNjMuNSAzMDMuNWMtNC43IDQuNy00LjcgMTIuMyAwIDE3czEyLjMgNC43IDE3IDBMOTYgMzA1bDE1LjUgMTUuNWM0LjcgNC43IDEyLjMgNC43IDE3IDBzNC43LTEyLjMgMC0xN0wxMTMgMjg4bDE1LjUtMTUuNWM0LjctNC43IDQuNy0xMi4zIDAtMTdzLTEyLjMtNC43LTE3IDBMOTYgMjcxIDgwLjUgMjU1LjVjLTQuNy00LjctMTIuMy00LjctMTcgMHpNMzA0IDI4MHY4IDMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMiA4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC04di04YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwiXVxufTtcbnZhciBmYUNoZWNrRG91YmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZWNrLWRvdWJsZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjU2MFwiLCBcIk0zNDIuNiA4Ni42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE2MCAxNzguN2wtNTcuNC01Ny40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w4MCA4MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwem05NiAxMjhjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTYwIDQwMi43IDU0LjYgMjk3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDEyOCAxMjhjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMjU2LTI1NnpcIl1cbn07XG52YXIgZmFBcnJvd0Rvd25BWiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1kb3duLWEteicsXG4gIGljb246IFs1NzYsIDUxMiwgW1wic29ydC1hbHBoYS1hc2NcIiwgXCJzb3J0LWFscGhhLWRvd25cIl0sIFwiZjE1ZFwiLCBcIk0xODMuNiA0NjkuNkMxNzcuNSA0NzYuMiAxNjkgNDgwIDE2MCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDEyOCAzNjUuN1Y2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjM2NS43bDMyLjQtMzUuNGMxMS45LTEzIDMyLjItMTMuOSA0NS4yLTJzMTMuOSAzMi4yIDIgNDUuMmwtODggOTZ6TTMyMCAzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJINDgwYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlMNDI5LjMgNDE2SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzNTJjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDQwMi43IDM1MkgzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00MTYgMzJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN2w2NCAxMjggMTYgMzJjNy45IDE1LjggMS41IDM1LTE0LjMgNDIuOXMtMzUgMS41LTQyLjktMTQuM0w0NjAuMiAyMjRIMzcxLjhsLTcuMiAxNC4zYy03LjkgMTUuOC0yNy4xIDIyLjItNDIuOSAxNC4zcy0yMi4yLTI3LjEtMTQuMy00Mi45bDE2LTMyIDY0LTEyOEMzOTIuOCAzOC44IDQwMy45IDMyIDQxNiAzMnpNMzk1LjggMTc2aDQwLjRMNDE2IDEzNS42IDM5NS44IDE3NnpcIl1cbn07XG52YXIgZmFTb3J0QWxwaGFBc2MgPSBmYUFycm93RG93bkFaO1xudmFyIGZhU29ydEFscGhhRG93biA9IGZhQXJyb3dEb3duQVo7XG52YXIgZmFNb25leUJpbGxXaGVhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLXdoZWF0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTJhXCIsIFwiTTE3NiAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBjMC04LjggNy4yLTE2IDE2LTE2ek01NiAxNmg0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1NkM0Mi43IDY0IDMyIDUzLjMgMzIgNDBzMTAuNy0yNCAyNC0yNHpNMjQgODhIMTM2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFMxMC43IDg4IDI0IDg4em04IDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMjcyIDE2YzAtOC44IDcuMi0xNiAxNi0xNmM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwek00MDAgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTQ0YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODBjOC44IDAgMTYgNy4yIDE2IDE2ek0zNTIgMTI4YzguOCAwIDE2IDcuMiAxNiAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwem0tOTYgMTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZ6TTAgMzA0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQ2NGMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMwNHpNNDggNDE2djQ4SDk2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05NiAzMDRINDh2NDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6TTQ2NCA0MTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4aDQ4VjQxNnpNNDE2IDMwNGMwIDI2LjUgMjEuNSA0OCA0OCA0OFYzMDRINDE2em0tOTYgODBhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwiXVxufTtcbnZhciBmYUNvb2tpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb29raWUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc4NTBdLCBcImY1NjNcIiwgXCJNMjQ3LjIgMTdjLTIyLjEtMy4xLTQ0LjYgLjktNjQuNCAxMS40bC03NCAzOS41Qzg5LjEgNzguNCA3My4yIDk0LjkgNjMuNCAxMTVMMjYuNyAxOTAuNmMtOS44IDIwLjEtMTMgNDIuOS05LjEgNjQuOWwxNC41IDgyLjhjMy45IDIyLjEgMTQuNiA0Mi4zIDMwLjcgNTcuOWw2MC4zIDU4LjRjMTYuMSAxNS42IDM2LjYgMjUuNiA1OC43IDI4LjdsODMgMTEuN2MyMi4xIDMuMSA0NC42LS45IDY0LjQtMTEuNGw3NC0zOS41YzE5LjctMTAuNSAzNS42LTI3IDQ1LjQtNDcuMmwzNi43LTc1LjVjOS44LTIwLjEgMTMtNDIuOSA5LjEtNjQuOWwtMTQuNi04Mi44Yy0zLjktMjIuMS0xNC42LTQyLjMtMzAuNy01Ny45TDM4OC45IDU3LjVjLTE2LjEtMTUuNi0zNi42LTI1LjYtNTguNy0yOC43TDI0Ny4yIDE3ek0yMDggMTQ0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTQ0IDMzNmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0yMjQtNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYUFycm93Um90YXRlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1yb3RhdGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzg2MzQsIFwiYXJyb3ctbGVmdC1yb3RhdGVcIiwgXCJhcnJvdy1yb3RhdGUtYmFja1wiLCBcImFycm93LXJvdGF0ZS1iYWNrd2FyZFwiLCBcInVuZG9cIl0sIFwiZjBlMlwiLCBcIk0xMjUuNyAxNjBIMTc2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMydjUxLjJMOTcuNiA5Ny42Yzg3LjUtODcuNSAyMjkuMy04Ny41IDMxNi44IDBzODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNzLTE2My44LTYyLjUtMjI2LjMgMEwxMjUuNyAxNjB6XCJdXG59O1xudmFyIGZhQXJyb3dMZWZ0Um90YXRlID0gZmFBcnJvd1JvdGF0ZUxlZnQ7XG52YXIgZmFBcnJvd1JvdGF0ZUJhY2sgPSBmYUFycm93Um90YXRlTGVmdDtcbnZhciBmYUFycm93Um90YXRlQmFja3dhcmQgPSBmYUFycm93Um90YXRlTGVmdDtcbnZhciBmYVVuZG8gPSBmYUFycm93Um90YXRlTGVmdDtcbnZhciBmYUhhcmREcml2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXJkLWRyaXZlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NDM2LCBcImhkZFwiXSwgXCJmMGEwXCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINDQ4YzM1LjMgMCA2NCAyOC43IDY0IDY0VjI4MC40Yy0xNy0xNS4yLTM5LjQtMjQuNC02NC0yNC40SDY0Yy0yNC42IDAtNDcgOS4yLTY0IDI0LjRWOTZ6TTY0IDI4OEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjM1MmMwLTM1LjMgMjguNy02NCA2NC02NHpNMzIwIDQxNmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTEyOC0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwiXVxufTtcbnZhciBmYUhkZCA9IGZhSGFyZERyaXZlO1xudmFyIGZhRmFjZUdyaW5TcXVpbnRUZWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4tc3F1aW50LXRlYXJzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzE1LCBcImdyaW4tc3F1aW50LXRlYXJzXCJdLCBcImY1ODZcIiwgXCJNNDI2LjggMTQuMkM0NDYtNSA0NzcuNS00LjYgNDk3LjEgMTQuOXMyMCA1MSAuNyA3MC4zYy02LjggNi44LTIxLjQgMTIuNC0zNy40IDE2LjdjLTE2LjMgNC40LTM0LjEgNy41LTQ2LjMgOS4zYy0xLjYgLjItMy4xIC41LTQuNiAuNmMtNC45IC44LTkuMS0yLjgtOS41LTcuNGMtLjEtLjcgMC0xLjQgLjEtMi4xYzEuNi0xMS4yIDQuNi0yOS42IDktNDdjLjMtMS4zIC43LTIuNiAxLTMuOWM0LjMtMTUuOSA5LjgtMzAuNSAxNi43LTM3LjR6bS00NC43IDE5Yy0xLjUgNC44LTIuOSA5LjYtNC4xIDE0LjNjLTQuOCAxOC45LTggMzguNS05LjcgNTAuM2MtNCAyNi44IDE4LjkgNDkuNyA0NS43IDQ1LjhjMTEuOS0xLjYgMzEuNS00LjggNTAuNC05LjdjNC43LTEuMiA5LjUtMi41IDE0LjMtNC4xQzUzNC4yIDIyNy41IDUyMC4yIDM1My44IDQzNyA0MzdjLTgzLjIgODMuMi0yMDkuNSA5Ny4yLTMwNy4yIDQxLjhjMS41LTQuOCAyLjgtOS42IDQtMTQuM2M0LjgtMTguOSA4LTM4LjUgOS43LTUwLjNjNC0yNi44LTE4LjktNDkuNy00NS43LTQ1LjhjLTExLjkgMS42LTMxLjUgNC44LTUwLjQgOS43Yy00LjcgMS4yLTkuNSAyLjUtMTQuMyA0LjFDLTIyLjIgMjg0LjUtOC4yIDE1OC4yIDc1IDc1QzE1OC4yLTguMyAyODQuNS0yMi4yIDM4Mi4yIDMzLjJ6TTUxLjUgNDEwLjFjMTguNS01IDM4LjgtOC4zIDUwLjktMTBjLjQtLjEgLjctLjEgMS0uMWM1LjEtLjIgOS4yIDQuMyA4LjQgOS42Yy0xLjcgMTIuMS01IDMyLjQtMTAgNTAuOUM5Ny42IDQ3Ni40IDkyIDQ5MSA4NS4yIDQ5Ny44QzY2IDUxNyAzNC41IDUxNi42IDE0LjkgNDk3LjFzLTIwLTUxLS43LTcwLjNjNi44LTYuOCAyMS40LTEyLjQgMzcuNC0xNi43ek00MTYuOSAyMDljLTQuNy0xMS45LTIwLjgtMTEtMjYuOCAuM2MtMTkgMzUuNS00NSA3MC44LTc3LjUgMTAzLjNTMjQ0LjggMzcxLjEgMjA5LjMgMzkwYy0xMS4zIDYtMTIuMiAyMi4xLS4zIDI2LjhjNTcuNiAyMi45IDEyNS44IDExIDE3Mi4zLTM1LjVzNTguNC0xMTQuOCAzNS41LTE3Mi4zek04Ny4xIDI4NS4xYzIgMiA0LjYgMy4yIDcuMyAzLjRsNTYuMSA1LjEgNS4xIDU2LjFjLjMgMi44IDEuNSA1LjQgMy40IDcuM2M2LjMgNi4zIDE3LjIgMy42IDE5LjgtNC45bDI5LjctOTcuNGMzLjUtMTEuNi03LjMtMjIuNS0xOS0xOUw5MiAyNjUuM2MtOC42IDIuNi0xMS4zIDEzLjQtNC45IDE5Ljh6TTI2NS4zIDkybC0yOS43IDk3LjRjLTMuNSAxMS42IDcuMyAyMi41IDE5IDE5bDk3LjQtMjkuN2M4LjYtMi42IDExLjMtMTMuNCA0LjktMTkuOGMtMi0yLTQuNi0zLjItNy4zLTMuNGwtNTYuMS01LjEtNS4xLTU2LjFjLS4zLTIuOC0xLjUtNS40LTMuNC03LjNjLTYuMy02LjMtMTcuMi0zLjYtMTkuOCA0Ljl6XCJdXG59O1xudmFyIGZhR3JpblNxdWludFRlYXJzID0gZmFGYWNlR3JpblNxdWludFRlYXJzO1xudmFyIGZhRHVtYmJlbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHVtYmJlbGwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0NGJcIiwgXCJNOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjI0djY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM4NEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg5NlY2NHptNDQ4IDB2NjRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJINTQ0djY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4IDIyNCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnpNNDE2IDIyNHY2NEgyMjRWMjI0SDQxNnpcIl1cbn07XG52YXIgZmFSZWN0YW5nbGVMaXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlY3RhbmdsZS1saXN0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJsaXN0LWFsdFwiXSwgXCJmMDIyXCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTEyOCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zMi0xMjhhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTk2LTI0OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg0NDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjI0em0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDQ0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgyMjR6bTAgOTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRINDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDIyNHpcIl1cbn07XG52YXIgZmFMaXN0QWx0ID0gZmFSZWN0YW5nbGVMaXN0O1xudmFyIGZhVGFycERyb3BsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFycC1kcm9wbGV0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTdjXCIsIFwiTTI4OCAxNjBjLTM1LjMgMC02NC0yNi45LTY0LTYwYzAtMjQgMzMuNy03MC4xIDUyLjItOTMuNWM2LjEtNy43IDE3LjUtNy43IDIzLjYgMEMzMTguMyAyOS45IDM1MiA3NiAzNTIgMTAwYzAgMzMuMS0yOC43IDYwLTY0IDYwek02NCAxMjhIMTk3LjVjMTMuMiAzNy4zIDQ4LjcgNjQgOTAuNSA2NHM3Ny40LTI2LjcgOTAuNS02NEg1MTJjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUySDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxMjhMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NFYxOTJjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTQ0OCA1MTJsMC0xMjhINTc2TDQ0OCA1MTJ6TTk2IDI1NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhSG91c2VNZWRpY2FsQ2lyY2xlQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtbWVkaWNhbC1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MTFcIiwgXCJNMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NEgxMjguMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDUyMi4xIDE5My45Yy04LjUtMS4zLTE3LjMtMS45LTI2LjEtMS45Yy01NC43IDAtMTAzLjUgMjQuOS0xMzUuOCA2NEgzMjBWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgyMDhjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnptMzIgMGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0ODAgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIl1cbn07XG52YXIgZmFQZXJzb25Ta2lpbmdOb3JkaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXNraWluZy1ub3JkaWMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNraWluZy1ub3JkaWNcIl0sIFwiZjdjYVwiLCBcIk0zMzYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0yMjcuMiAxNjBjMS45IDAgMy44IC4xIDUuNiAuM0wyMDEuNiAyNTRjLTkuMyAyOCAxLjcgNTguOCAyNi44IDc0LjVsODYuMiA1My45TDI5MS4zIDQ2NEgyMDIuOGw0MS4xLTg4LjEtMzIuNC0yMC4zYy03LjgtNC45LTE0LjctMTAuNy0yMC42LTE3LjNMMTMyLjIgNDY0SDk5LjdsNTQuMi0yNTcuNmM0LjYtMS41IDktNC4xIDEyLjctNy44bDIzLjEtMjMuMWM5LjktOS45IDIzLjQtMTUuNSAzNy41LTE1LjV6TTEyMS40IDE5OC42Yy40IC40IC44IC44IDEuMyAxLjJMNjcgNDY0SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDE1OS4zYy40IDAgLjkgMCAxLjMgMEgzMTkuM2MuNSAwIDEgMCAxLjQgMEg1MDRjMzkuOCAwIDcyLTMyLjIgNzItNzJ2LThjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNEg0MzQuNmwyNy42LTE3OS4zYzEwLjUtNS4yIDE3LjgtMTYuMSAxNy44LTI4LjdjMC0xNy43LTE0LjMtMzItMzItMzJINDI2LjdjLTEyLjkgMC0yNC42LTcuOC0yOS41LTE5LjdsLTYuMy0xNWMtMTQuNi0zNS4xLTQ0LjEtNjEuOS04MC41LTczLjFsLTQ4LjctMTVjLTExLjEtMy40LTIyLjctNS4yLTM0LjQtNS4yYy0zMSAwLTYwLjggMTIuMy04Mi43IDM0LjNsLTIzLjEgMjMuMWMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjN6bTMwOCA4OS40TDQwMi4zIDQ2NEgzNTcuOGwyMS42LTc1LjZjNS45LTIwLjYtMi42LTQyLjYtMjAuNy01My45TDMwMiAyOTlsMzAuOS04Mi40IDUuMSAxMi4zQzM1MyAyNjQuNyAzODcuOSAyODggNDI2LjcgMjg4aDIuN3pcIl1cbn07XG52YXIgZmFTa2lpbmdOb3JkaWMgPSBmYVBlcnNvblNraWluZ05vcmRpYztcbnZhciBmYUNhbGVuZGFyUGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci1wbHVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjcxXCIsIFwiTTEyOCAzMlY2NEg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NDhINDgwVjExMmMwLTI2LjUtMjEuNS00OC00OC00OEgzODRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNjRIMTkyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyek00ODAgMTkySDMyVjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MzJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkyek0yNTYgMjQ4YzEzLjMgMCAyNCAxMC43IDI0IDI0djU2aDU2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MHY1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFYzNzZIMTc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDU2VjI3MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFQbGFuZUFycml2YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtYXJyaXZhbCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODc0OF0sIFwiZjVhZlwiLCBcIk0uMyAxNjYuOUwwIDY4QzAgNTcuNyA5LjUgNTAuMSAxOS41IDUyLjNsMzUuNiA3LjljMTAuNiAyLjMgMTkuMiA5LjkgMjMgMjBMOTYgMTI4bDEyNy4zIDM3LjZMMTgxLjggMjAuNEMxNzguOSAxMC4yIDE4Ni42IDAgMTk3LjIgMGg0MC4xYzExLjYgMCAyMi4yIDYuMiAyNy45IDE2LjNsMTA5IDE5My44IDEwNy4yIDMxLjdjMTUuOSA0LjcgMzAuOCAxMi41IDQzLjcgMjIuOGwzNC40IDI3LjZjMjQgMTkuMiAxOC4xIDU3LjMtMTAuNyA2OC4yYy00MS4yIDE1LjYtODYuMiAxOC4xLTEyOC44IDdMMTIxLjcgMjg5LjhjLTExLjEtMi45LTIxLjItOC43LTI5LjMtMTYuOUw5LjUgMTg5LjRjLTUuOS02LTkuMy0xNC05LjMtMjIuNXpNMzIgNDQ4SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptOTYtODBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTI4LTE2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFDaXJjbGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE4NDAsIFwiYXJyb3ctYWx0LWNpcmNsZS1sZWZ0XCJdLCBcImYzNTlcIiwgXCJNNTEyIDI1NkEyNTYgMjU2IDAgMSAwIDAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDB6TTIxNy40IDM3Ni45TDExNy41IDI2OS44Yy0zLjUtMy44LTUuNS04LjctNS41LTEzLjhzMi0xMC4xIDUuNS0xMy44bDk5LjktMTA3LjFjNC4yLTQuNSAxMC4xLTcuMSAxNi4zLTcuMWMxMi4zIDAgMjIuMyAxMCAyMi4zIDIyLjNsMCA1Ny43IDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDU3LjdjMCAxMi4zLTEwIDIyLjMtMjIuMyAyMi4zYy02LjIgMC0xMi4xLTIuNi0xNi4zLTcuMXpcIl1cbn07XG52YXIgZmFBcnJvd0FsdENpcmNsZUxlZnQgPSBmYUNpcmNsZUxlZnQ7XG52YXIgZmFUcmFpblN1YndheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFpbi1zdWJ3YXknLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcInN1YndheVwiXSwgXCJmMjM5XCIsIFwiTTk2IDBDNDMgMCAwIDQzIDAgOTZWMzUyYzAgNDggMzUuMiA4Ny43IDgxLjEgOTQuOWwtNDYgNDZDMjguMSA0OTkuOSAzMy4xIDUxMiA0MyA1MTJIODIuN2M4LjUgMCAxNi42LTMuNCAyMi42LTkuNEwxNjAgNDQ4SDI4OGw1NC42IDU0LjZjNiA2IDE0LjEgOS40IDIyLjYgOS40SDQwNWMxMCAwIDE1LTEyLjEgNy45LTE5LjFsLTQ2LTQ2YzQ2LTcuMSA4MS4xLTQ2LjkgODEuMS05NC45Vjk2YzAtNTMtNDMtOTYtOTYtOTZIOTZ6TTY0IDEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTI4ek0yNzIgOTZoODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjcyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTY0IDM1MmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0yODgtMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYVN1YndheSA9IGZhVHJhaW5TdWJ3YXk7XG52YXIgZmFDaGFydEdhbnR0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoYXJ0LWdhbnR0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMGU0XCIsIFwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQwMGMwIDguOCA3LjIgMTYgMTYgMTZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwYy00NC4yIDAtODAtMzUuOC04MC04MFY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptOTYgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem05NiA2NEgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0xNjAgOTZoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYUluZGlhblJ1cGVlU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmRpYW4tcnVwZWUtc2lnbicsXG4gIGljb246IFszMjAsIDUxMiwgW1wiaW5kaWFuLXJ1cGVlXCIsIFwiaW5yXCJdLCBcImUxYmNcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMkg5NmgxNkgyODhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjMxLjhjOS42IDE0LjQgMTYuNyAzMC42IDIwLjcgNDhIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1Mi40Yy0xMy4yIDU4LjMtNjEuOSAxMDMuMi0xMjIuMiAxMTAuOUwyNzQuNiA0MjJjMTQuNCAxMC4zIDE3LjcgMzAuMyA3LjQgNDQuNnMtMzAuMyAxNy43LTQ0LjYgNy40TDEzLjQgMzE0QzIuMSAzMDYtMi43IDI5MS41IDEuNSAyNzguMlMxOC4xIDI1NiAzMiAyNTZoODBjMzIuOCAwIDYxLTE5LjcgNzMuMy00OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkgxODUuM0MxNzMgMTE1LjcgMTQ0LjggOTYgMTEyIDk2SDk2IDMyQzE0LjMgOTYgMCA4MS43IDAgNjR6XCJdXG59O1xudmFyIGZhSW5kaWFuUnVwZWUgPSBmYUluZGlhblJ1cGVlU2lnbjtcbnZhciBmYUluciA9IGZhSW5kaWFuUnVwZWVTaWduO1xudmFyIGZhQ3JvcFNpbXBsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjcm9wLXNpbXBsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY3JvcC1hbHRcIl0sIFwiZjU2NVwiLCBcIk0xMjggMzJjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgMTQuMyA2NCAzMlY2NEgzMkMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJINjRWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM1MlYzODRIMTI4VjMyek0zODQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDQ4aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ0OGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NEwxNjAgNjR2NjRsMjI0IDAgMCAzNTJ6XCJdXG59O1xudmFyIGZhQ3JvcEFsdCA9IGZhQ3JvcFNpbXBsZTtcbnZhciBmYU1vbmV5QmlsbDEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktYmlsbC0xJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJtb25leS1iaWxsLWFsdFwiXSwgXCJmM2QxXCIsIFwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em02NCAzMjBINjRWMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAxOTJWMTI4aDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzg0YzAtMzUuMyAyOC43LTY0IDY0LTY0djY0SDQ0OHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGg2NHY2NHpNMTc2IDI1NmExMTIgMTEyIDAgMSAxIDIyNCAwIDExMiAxMTIgMCAxIDEgLTIyNCAwem03Ni00OGMwIDkuNyA2LjkgMTcuNyAxNiAxOS42VjI3NmgtNGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBoMjQgMjRjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwaC00VjIwOGMwLTExLTktMjAtMjAtMjBIMjcyYy0xMSAwLTIwIDktMjAgMjB6XCJdXG59O1xudmFyIGZhTW9uZXlCaWxsQWx0ID0gZmFNb25leUJpbGwxO1xudmFyIGZhTGVmdExvbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGVmdC1sb25nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJsb25nLWFycm93LWFsdC1sZWZ0XCJdLCBcImYzMGFcIiwgXCJNMTc3LjUgNDE0Yy04LjggMy44LTE5IDItMjYtNC42bC0xNDQtMTM2QzIuNyAyNjguOSAwIDI2Mi42IDAgMjU2czIuNy0xMi45IDcuNS0xNy40bDE0NC0xMzZjNy02LjYgMTcuMi04LjQgMjYtNC42czE0LjUgMTIuNSAxNC41IDIybDAgNzIgMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMjg4IDAgMCA3MmMwIDkuNi01LjcgMTguMi0xNC41IDIyelwiXVxufTtcbnZhciBmYUxvbmdBcnJvd0FsdExlZnQgPSBmYUxlZnRMb25nO1xudmFyIGZhRG5hID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RuYScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyOTUxNl0sIFwiZjQ3MVwiLCBcIk00MTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmMwIDU5LjgtMzAuMyAxMDcuNS02OS40IDE0Ni42Yy0yOCAyOC02Mi41IDUzLjUtOTcuMyA3Ny40bC0yLjUgMS43Yy0xMS45IDguMS0yMy44IDE2LjEtMzUuNSAyMy45bDAgMCAwIDAgMCAwLTEuNiAxYy02IDQtMTEuOSA3LjktMTcuOCAxMS45Yy0yMC45IDE0LTQwLjggMjcuNy01OS4zIDQxLjVIMjgzLjNjLTkuOC03LjQtMjAuMS0xNC43LTMwLjctMjIuMWw3LTQuNyAzLTJjMTUuMS0xMC4xIDMwLjktMjAuNiA0Ni43LTMxLjZjMjUgMTguMSA0OC45IDM3LjMgNjkuNCA1Ny43QzQxNy43IDM3Mi41IDQ0OCA0MjAuMiA0NDggNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMySDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtNTkuOCAzMC4zLTEwNy41IDY5LjQtMTQ2LjZjMjgtMjggNjIuNS01My41IDk3LjMtNzcuNGMtMzQuOC0yMy45LTY5LjMtNDkuMy05Ny4zLTc3LjRDMzAuMyAxMzkuNSAwIDkxLjggMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBTNjQgMTQuMyA2NCAzMkgzODRjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTMzOC42IDM4NEgxMDkuNGMtMTAuMSAxMC42LTE4LjYgMjEuMy0yNS41IDMySDM2NC4xYy02LjgtMTAuNy0xNS4zLTIxLjQtMjUuNS0zMnpNMTA5LjQgMTI4SDMzOC42YzEwLjEtMTAuNyAxOC42LTIxLjMgMjUuNS0zMkg4My45YzYuOCAxMC43IDE1LjMgMjEuMyAyNS41IDMyem01NS40IDQ4YzE4LjQgMTMuOCAzOC40IDI3LjUgNTkuMyA0MS41YzIwLjktMTQgNDAuOC0yNy43IDU5LjMtNDEuNUgxNjQuN3pcIl1cbn07XG52YXIgZmFWaXJ1c1NsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpcnVzLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDc1XCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTE1NC4zLTEyMWMtMi0zMC4xIDIwLjgtNjAuMSA1Ni02MC4xSDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1MzIuNWMtNDkuOSAwLTc0LjktNjAuMy0zOS42LTk1LjZsOC4yLTguMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOC4yIDguMkM0MTIuMyAxMTguNCAzNTIgOTMuNCAzNTIgNDMuNVYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY0My41YzAgNDkuOS02MC4zIDc0LjktOTUuNiAzOS42TDE4NC4yIDc1Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGMtMS42IDEuNi0zLjEgMy40LTQuMyA1LjNMMzguOCA1LjF6bTIyNS44IDE3N2M2LjktMy45IDE0LjktNi4xIDIzLjQtNi4xYzI2LjUgMCA0OCAyMS41IDQ4IDQ4YzAgNC40LS42IDguNy0xLjcgMTIuN2wtNjkuNy01NC42ek00MDIgNDEyLjdMMTQ0LjcgMjEwYy05LjUgOC41LTIyLjIgMTQtMzcuMiAxNEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgxMS41YzQ5LjkgMCA3NC45IDYwLjMgMzkuNiA5NS42bC04LjIgOC4yYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDguMi04LjJjMzUuMy0zNS4zIDk1LjYtMTAuMyA5NS42IDM5LjZWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNDY4LjVjMC0zMS4yIDIzLjYtNTIuNyA1MC01NS43elwiXVxufTtcbnZhciBmYU1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pbnVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbODIxMSwgODcyMiwgMTAxMzQsIFwic3VidHJhY3RcIl0sIFwiZjA2OFwiLCBcIk00MzIgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDQ4IDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzNTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnpcIl1cbn07XG52YXIgZmFTdWJ0cmFjdCA9IGZhTWludXM7XG52YXIgZmFDaGVzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQzOVwiLCBcIk0xNDQgMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzJIOTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMTZWOTZINjAuMkM0OS4xIDk2IDQwIDEwNS4xIDQwIDExNi4yYzAgMi41IC41IDQuOSAxLjMgNy4zTDczLjggMjA4SDcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0aDRMNjAgMzg0SDE5NkwxODAgMjU2aDRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRoLTEuOGwzMi41LTg0LjVjLjktMi4zIDEuMy00LjggMS4zLTcuM2MwLTExLjItOS4xLTIwLjItMjAuMi0yMC4ySDE0NFY2NGgxNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNDRWMTZ6TTQ4IDQxNkw0LjggNDczLjZDMS43IDQ3Ny44IDAgNDgyLjggMCA0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRIMjMyYzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtNS4yLTEuNy0xMC4yLTQuOC0xNC40TDIwOCA0MTZINDh6bTI4OCAwbC00My4yIDU3LjZjLTMuMSA0LjItNC44IDkuMi00LjggMTQuNGMwIDEzLjMgMTAuNyAyNCAyNCAyNEg0ODhjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC01LjItMS43LTEwLjItNC44LTE0LjRMNDY0IDQxNkgzMzZ6TTMwNCAyMDh2NTEuOWMwIDcuOCAyLjggMTUuMyA4IDIxLjFMMzM5LjIgMzEyIDMzNyAzODRINDYyLjVsLTMuMy03MiAyOC4zLTMwLjhjNS40LTUuOSA4LjUtMTMuNiA4LjUtMjEuN1YyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDQ2NGMtOC44IDAtMTYgNy4yLTE2IDE2djE2SDQyNFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDM5MmMtOC44IDAtMTYgNy4yLTE2IDE2djE2SDM1MlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDMyMGMtOC44IDAtMTYgNy4yLTE2IDE2em04MCA5NmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2djMySDM4NFYzMDR6XCJdXG59O1xudmFyIGZhQXJyb3dMZWZ0TG9uZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1sZWZ0LWxvbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImxvbmctYXJyb3ctbGVmdFwiXSwgXCJmMTc3XCIsIFwiTTkuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTI4IDEyOGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDI4OCA0ODAgMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zNzAuNyAwIDczLjQtNzMuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOHpcIl1cbn07XG52YXIgZmFMb25nQXJyb3dMZWZ0ID0gZmFBcnJvd0xlZnRMb25nO1xudmFyIGZhUGx1Z0NpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTVjXCIsIFwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek01NzYgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0MTYgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwiXVxufTtcbnZhciBmYVN0cmVldFZpZXcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RyZWV0LXZpZXcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyMWRcIiwgXCJNMzIwIDY0QTY0IDY0IDAgMSAwIDE5MiA2NGE2NCA2NCAwIDEgMCAxMjggMHptLTk2IDk2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxLjhsMTEuMSA5OS41YzEuOCAxNi4yIDE1LjUgMjguNSAzMS44IDI4LjVoMzguN2MxNi4zIDAgMzAtMTIuMyAzMS44LTI4LjVMMzE4LjIgMzA0SDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjI0ek0xMzIuMyAzOTQuMmMxMy0yLjQgMjEuNy0xNC45IDE5LjMtMjcuOXMtMTQuOS0yMS43LTI3LjktMTkuM2MtMzIuNCA1LjktNjAuOSAxNC4yLTgyIDI0LjhjLTEwLjUgNS4zLTIwLjMgMTEuNy0yNy44IDE5LjZDNi40IDM5OS41IDAgNDEwLjUgMCA0MjRjMCAyMS40IDE1LjUgMzYuMSAyOS4xIDQ1YzE0LjcgOS42IDM0LjMgMTcuMyA1Ni40IDIzLjRDMTMwLjIgNTA0LjcgMTkwLjQgNTEyIDI1NiA1MTJzMTI1LjgtNy4zIDE3MC40LTE5LjZjMjIuMS02LjEgNDEuOC0xMy44IDU2LjQtMjMuNGMxMy43LTguOSAyOS4xLTIzLjYgMjkuMS00NWMwLTEzLjUtNi40LTI0LjUtMTQtMzIuNmMtNy41LTcuOS0xNy4zLTE0LjMtMjcuOC0xOS42Yy0yMS0xMC42LTQ5LjUtMTguOS04Mi0yNC44Yy0xMy0yLjQtMjUuNSA2LjMtMjcuOSAxOS4zczYuMyAyNS41IDE5LjMgMjcuOWMzMC4yIDUuNSA1My43IDEyLjggNjkgMjAuNWMzLjIgMS42IDUuOCAzLjEgNy45IDQuNWMzLjYgMi40IDMuNiA3LjIgMCA5LjZjLTguOCA1LjctMjMuMSAxMS44LTQzIDE3LjNDMzc0LjMgNDU3IDMxOC41IDQ2NCAyNTYgNDY0cy0xMTguMy03LTE1Ny43LTE3LjljLTE5LjktNS41LTM0LjItMTEuNi00My0xNy4zYy0zLjYtMi40LTMuNi03LjIgMC05LjZjMi4xLTEuNCA0LjgtMi45IDcuOS00LjVjMTUuMy03LjcgMzguOC0xNC45IDY5LTIwLjV6XCJdXG59O1xudmFyIGZhRnJhbmNTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZyYW5jLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImUxOGZcIiwgXCJNODAgMzJDNjIuMyAzMiA0OCA0Ni4zIDQ4IDY0VjIyNHY5NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0OHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWMjU2SDI1NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxMTJWOTZIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDgwelwiXVxufTtcbnZhciBmYVZvbHVtZU9mZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2x1bWUtb2ZmJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMDI2XCIsIFwiTTMyMCA2NGMwLTEyLjYtNy40LTI0LTE4LjktMjkuMnMtMjUtMy4xLTM0LjQgNS4zTDEzMS44IDE2MEg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRoNjcuOEwyNjYuNyA0NzEuOWM5LjQgOC40IDIyLjkgMTAuNCAzNC40IDUuM1MzMjAgNDYwLjYgMzIwIDQ0OFY2NHpcIl1cbn07XG52YXIgZmFIYW5kc0FzbEludGVycHJldGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kcy1hc2wtaW50ZXJwcmV0aW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJhbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZ1wiLCBcImFzbC1pbnRlcnByZXRpbmdcIiwgXCJoYW5kcy1hbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZ1wiXSwgXCJmMmEzXCIsIFwiTTE1Ni42IDQ2LjNjNy45LTE1LjggMS41LTM1LTE0LjMtNDIuOXMtMzUtMS41LTQyLjkgMTQuM0wxMy41IDE4OS40QzQuNiAyMDcuMiAwIDIyNi44IDAgMjQ2LjdWMjU2YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4aDcyIDh2LS4zYzM1LjItMi43IDY1LjQtMjIuOCA4Mi4xLTUxLjdjOC44LTE1LjMgMy42LTM0LjktMTEuNy00My43cy0zNC45LTMuNi00My43IDExLjdjLTcgMTItMTkuOSAyMC0zNC43IDIwYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwYzE0LjggMCAyNy43IDggMzQuNyAyMGM4LjggMTUuMyAyOC40IDIwLjUgNDMuNyAxMS43czIwLjUtMjguNCAxMS43LTQzLjdjLTEyLjgtMjIuMS0zMy42LTM5LjEtNTguNC00Ny4xbDgwLjgtMjJjMTctNC42IDI3LjEtMjIuMiAyMi41LTM5LjNzLTIyLjItMjcuMS0zOS4zLTIyLjVMMTk0LjkgMTI0LjZsODEuNi02OGMxMy42LTExLjMgMTUuNC0zMS41IDQuMS00NS4xUzI0OS4xLTMuOSAyMzUuNSA3LjRMMTMzLjYgOTIuM2wyMy00NnpNNDgzLjQgNDY1LjdjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2w4NS45LTE3MS43YzguOS0xNy44IDEzLjUtMzcuNCAxMy41LTU3LjJWMjU2YzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4SDQ0MGgtOHYuM2MtMzUuMiAyLjctNjUuNCAyMi44LTgyLjEgNTEuN2MtOC45IDE1LjMtMy42IDM0LjkgMTEuNyA0My43czM0LjkgMy42IDQzLjctMTEuN2M3LTEyIDE5LjktMjAgMzQuNy0yMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MGMtMTQuOCAwLTI3LjctOC0zNC43LTIwYy04LjktMTUuMy0yOC40LTIwLjUtNDMuNy0xMS43cy0yMC41IDI4LjQtMTEuNyA0My43YzEyLjggMjIuMSAzMy42IDM5LjEgNTguNCA0Ny4xbC04MC44IDIyYy0xNy4xIDQuNy0yNy4xIDIyLjItMjIuNSAzOS4zczIyLjIgMjcuMSAzOS4zIDIyLjVsMTAwLjctMjcuNS04MS42IDY4Yy0xMy42IDExLjMtMTUuNCAzMS41LTQuMSA0NS4xczMxLjUgMTUuNCA0NS4xIDQuMWwxMDEuOS04NC45LTIzIDQ2elwiXVxufTtcbnZhciBmYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nID0gZmFIYW5kc0FzbEludGVycHJldGluZztcbnZhciBmYUFzbEludGVycHJldGluZyA9IGZhSGFuZHNBc2xJbnRlcnByZXRpbmc7XG52YXIgZmFIYW5kc0FtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nID0gZmFIYW5kc0FzbEludGVycHJldGluZztcbnZhciBmYUdlYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2VhcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzk4ODEsIFwiY29nXCJdLCBcImYwMTNcIiwgXCJNNDk1LjkgMTY2LjZjMy4yIDguNyAuNSAxOC40LTYuNCAyNC42bC00My4zIDM5LjRjMS4xIDguMyAxLjcgMTYuOCAxLjcgMjUuNHMtLjYgMTcuMS0xLjcgMjUuNGw0My4zIDM5LjRjNi45IDYuMiA5LjYgMTUuOSA2LjQgMjQuNmMtNC40IDExLjktOS43IDIzLjMtMTUuOCAzNC4zbC00LjcgOC4xYy02LjYgMTEtMTQgMjEuNC0yMi4xIDMxLjJjLTUuOSA3LjItMTUuNyA5LjYtMjQuNSA2LjhsLTU1LjctMTcuN2MtMTMuNCAxMC4zLTI4LjIgMTguOS00NCAyNS40bC0xMi41IDU3LjFjLTIgOS4xLTkgMTYuMy0xOC4yIDE3LjhjLTEzLjggMi4zLTI4IDMuNS00Mi41IDMuNXMtMjguNy0xLjItNDIuNS0zLjVjLTkuMi0xLjUtMTYuMi04LjctMTguMi0xNy44bC0xMi41LTU3LjFjLTE1LjgtNi41LTMwLjYtMTUuMS00NC0yNS40TDgzLjEgNDI1LjljLTguOCAyLjgtMTguNiAuMy0yNC41LTYuOGMtOC4xLTkuOC0xNS41LTIwLjItMjIuMS0zMS4ybC00LjctOC4xYy02LjEtMTEtMTEuNC0yMi40LTE1LjgtMzQuM2MtMy4yLTguNy0uNS0xOC40IDYuNC0yNC42bDQzLjMtMzkuNEM2NC42IDI3My4xIDY0IDI2NC42IDY0IDI1NnMuNi0xNy4xIDEuNy0yNS40TDIyLjQgMTkxLjJjLTYuOS02LjItOS42LTE1LjktNi40LTI0LjZjNC40LTExLjkgOS43LTIzLjMgMTUuOC0zNC4zbDQuNy04LjFjNi42LTExIDE0LTIxLjQgMjIuMS0zMS4yYzUuOS03LjIgMTUuNy05LjYgMjQuNS02LjhsNTUuNyAxNy43YzEzLjQtMTAuMyAyOC4yLTE4LjkgNDQtMjUuNGwxMi41LTU3LjFjMi05LjEgOS0xNi4zIDE4LjItMTcuOEMyMjcuMyAxLjIgMjQxLjUgMCAyNTYgMHMyOC43IDEuMiA0Mi41IDMuNWM5LjIgMS41IDE2LjIgOC43IDE4LjIgMTcuOGwxMi41IDU3LjFjMTUuOCA2LjUgMzAuNiAxNS4xIDQ0IDI1LjRsNTUuNy0xNy43YzguOC0yLjggMTguNi0uMyAyNC41IDYuOGM4LjEgOS44IDE1LjUgMjAuMiAyMi4xIDMxLjJsNC43IDguMWM2LjEgMTEgMTEuNCAyMi40IDE1LjggMzQuM3pNMjU2IDMzNmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHpcIl1cbn07XG52YXIgZmFDb2cgPSBmYUdlYXI7XG52YXIgZmFEcm9wbGV0U2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJvcGxldC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW1widGludC1zbGFzaFwiXSwgXCJmNWM3XCIsIFwiTTMyMCA1MTJjNTMuMiAwIDEwMS40LTIxLjYgMTM2LjEtNTYuNmwtMjk4LjMtMjM1QzE0MCAyNTcuMSAxMjggMjkyLjMgMTI4IDMyMGMwIDEwNiA4NiAxOTIgMTkyIDE5MnpNNTA1LjIgMzcwLjdjNC40LTE2LjEgNi44LTMzLjEgNi44LTUwLjdjMC05MS4yLTEzMC4yLTI2Mi4zLTE2Ni42LTMwOC4zQzMzOS40IDQuMiAzMzAuNSAwIDMyMC45IDBoLTEuOGMtOS42IDAtMTguNSA0LjItMjQuNSAxMS43QzI3Ny44IDMzIDI0MC43IDgxLjMgMjA1LjggMTM2TDM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTA1LjIgMzcwLjd6TTIyNCAzMzZjMCA0NC4yIDM1LjggODAgODAgODBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTYxLjkgMC0xMTItNTAuMS0xMTItMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJdXG59O1xudmFyIGZhVGludFNsYXNoID0gZmFEcm9wbGV0U2xhc2g7XG52YXIgZmFNb3NxdWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9zcXVlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4MzMyXSwgXCJmNjc4XCIsIFwiTTQwMCAwYzUgMCA5LjggMi40IDEyLjggNi40YzM0LjcgNDYuMyA3OC4xIDc0LjkgMTMzLjUgMTExLjVsMCAwIDAgMGM1LjIgMy40IDEwLjUgNyAxNiAxMC42YzI4LjkgMTkuMiA0NS43IDUxLjcgNDUuNyA4Ni4xYzAgMjguNi0xMS4zIDU0LjUtMjkuOCA3My40SDIyMS44Yy0xOC40LTE5LTI5LjgtNDQuOS0yOS44LTczLjRjMC0zNC40IDE2LjctNjYuOSA0NS43LTg2LjFjNS40LTMuNiAxMC44LTcuMSAxNi0xMC42bDAgMCAwIDBDMzA5LjEgODEuMyAzNTIuNSA1Mi43IDM4Ny4yIDYuNGMzLTQgNy44LTYuNCAxMi44LTYuNHpNMjg4IDUxMlY0NDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJINjA4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg1NjBWNDQwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djcySDQ0OFY0NTRjMC0xOS04LjQtMzctMjMtNDkuMkw0MDAgMzg0bC0yNSAyMC44QzM2MC40IDQxNyAzNTIgNDM1IDM1MiA0NTR2NThIMjg4ek03MC40IDUuMmM1LjctNC4zIDEzLjUtNC4zIDE5LjIgMGwxNiAxMkMxMzkuOCA0Mi45IDE2MCA4My4yIDE2MCAxMjZ2Mkgwdi0yQzAgODMuMiAyMC4yIDQyLjkgNTQuNCAxNy4ybDE2LTEyek0wIDE2MEgxNjBWMjk2LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRWNDgwYzAgOS42IDIuMSAxOC42IDUuOCAyNi44Yy02LjYgMy40LTE0IDUuMi0yMS44IDUuMkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2IDE2MHpcIl1cbn07XG52YXIgZmFNb3NxdWl0byA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3NxdWl0bycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUyYlwiLCBcIk00NjMuNyA1MDUuOWM5LjgtOC45IDEwLjctMjQuMyAyLjEtMzQuM2wtNDIuMS00OSAwLTU0LjdjMC01LjUtMS44LTEwLjgtNS4xLTE1LjFMMzUyIDI2Ni4zbDAtLjNMNDg1LjQgMzg3LjhDNTQyLjQgNDQ3LjYgNjQwIDQwNS4yIDY0MCAzMjAuNmMwLTQ3LjktMzQtODguMy03OS40LTk0LjJsLTE1My0yMy45IDQwLjgtNDAuOWM3LjgtNy44IDkuNC0yMC4xIDMuOS0yOS44TDQyOC41IDkwLjFsMzguMi01MC45YzgtMTAuNiA2LjEtMjUuOS00LjMtMzQuMXMtMjUuMi02LjMtMzMuMiA0LjRsLTQ4IDYzLjljLTUuOSA3LjktNi42IDE4LjYtMS43IDI3LjJMNDAyLjIgMTQwIDM1MiAxOTAuM2wwLTM4LjJjMC0xNC45LTEwLjItMjcuNC0yNC0zMWwwLTU3LjJjMC00LjQtMy42LTgtOC04cy04IDMuNi04IDhsMCA1Ny4yYy0xMy44IDMuNi0yNCAxNi4xLTI0IDMxbDAgMzguMUwyMzcuOCAxNDBsMjIuNi0zOS41YzQuOS04LjYgNC4yLTE5LjMtMS43LTI3LjJsLTQ4LTYzLjljLTgtMTAuNi0yMi44LTEyLjYtMzMuMi00LjRzLTEyLjIgMjMuNS00LjMgMzQuMWwzOC4yIDUwLjktMjMuOSA0MS43Yy01LjUgOS43LTMuOSAyMiAzLjkgMjkuOGw0MC44IDQwLjktMTUzIDIzLjlDMzQgMjMyLjMgMCAyNzIuNyAwIDMyMC42YzAgODQuNiA5Ny42IDEyNyAxNTQuNiA2Ny4xTDI4OCAyNjZsMCAuMy02Ni41IDg2LjRjLTMuMyA0LjMtNS4xIDkuNi01LjEgMTUuMWwwIDU0LjctNDIuMSA0OWMtOC42IDEwLjEtNy43IDI1LjUgMi4xIDM0LjNzMjQuNyA3LjkgMzMuNC0yLjFsNDgtNTUuOWMzLjgtNC40IDUuOS0xMC4yIDUuOS0xNi4xbDAtNTUuNEwyODggMzQ0LjdsMCA2My4xYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02My4xIDI0LjMgMzEuNiAwIDU1LjRjMCA1LjkgMi4xIDExLjcgNS45IDE2LjFsNDggNTUuOWM4LjYgMTAuMSAyMy42IDExIDMzLjQgMi4xelwiXVxufTtcbnZhciBmYVN0YXJPZkRhdmlkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXItb2YtZGF2aWQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMDAxN10sIFwiZjY5YVwiLCBcIk00MDQuMiAzMDkuNUwzODMuMSAzNDRoNDIuM2wtMjEuMS0zNC41ek0zNzEuNCAyNTZsLTU0LTg4SDE5NC42bC01NCA4OCA1NCA4OEgzMTcuNGw1NC04OHptNjUuNyAwbDUzLjQgODdjMy42IDUuOSA1LjUgMTIuNyA1LjUgMTkuNmMwIDIwLjctMTYuOCAzNy40LTM3LjQgMzcuNEgzNDguN2wtNTYuMiA5MS41QzI4NC44IDUwNC4zIDI3MC45IDUxMiAyNTYgNTEycy0yOC44LTcuNy0zNi42LTIwLjVMMTYzLjMgNDAwSDUzLjRDMzIuOCA0MDAgMTYgMzgzLjIgMTYgMzYyLjZjMC02LjkgMS45LTEzLjcgNS41LTE5LjZsNTMuNC04N0wyMS41IDE2OWMtMy42LTUuOS01LjUtMTIuNy01LjUtMTkuNkMxNiAxMjguOCAzMi44IDExMiA1My40IDExMkgxNjMuM2w1Ni4yLTkxLjVDMjI3LjIgNy43IDI0MS4xIDAgMjU2IDBzMjguOCA3LjcgMzYuNiAyMC41TDM0OC43IDExMkg0NTguNmMyMC43IDAgMzcuNCAxNi44IDM3LjQgMzcuNGMwIDYuOS0xLjkgMTMuNy01LjUgMTkuNmwtNTMuNCA4N3ptLTU0LTg4bDIxLjEgMzQuNUw0MjUuNCAxNjhIMzgzLjF6TTI4MyAxMTJMMjU2IDY4bC0yNyA0NGg1NHpNMTI4LjkgMTY4SDg2LjZsMjEuMSAzNC41TDEyOC45IDE2OHpNMTA3LjggMzA5LjVMODYuNiAzNDRoNDIuM2wtMjEuMS0zNC41ek0yMjkgNDAwbDI3IDQ0IDI3LTQ0SDIyOXpcIl1cbn07XG52YXIgZmFQZXJzb25NaWxpdGFyeVJpZmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1taWxpdGFyeS1yaWZsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU0YlwiLCBcIk0xNjAgMzljMC0xMyAxMC0yMy44IDIyLjktMjQuOUwzMzQuNyAxLjRDMzQ0IC43IDM1MiA4IDM1MiAxNy40VjQ4YzAgOC44LTcuMiAxNi0xNiAxNkgxODVjLTEzLjggMC0yNS0xMS4yLTI1LTI1em0xNy42IDU3SDMzNC40YzEgNS4yIDEuNiAxMC41IDEuNiAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTUuNSAuNi0xMC44IDEuNi0xNnptMjI4IDM2NC4zTDM1MiAzNjkuN1Y0ODBjMCAxLjMtLjEgMi41LS4yIDMuOEwxNzcuNSAyMzQuOWMxNi42LTcuMSAzNC42LTEwLjkgNTMuMy0xMC45aDUwLjRjMTUuOSAwIDMxLjMgMi44IDQ1LjggNy45TDQyMS45IDY3LjdjLTcuNy00LjQtMTAuMy0xNC4yLTUuOS0yMS45czE0LjItMTAuMyAyMS45LTUuOWwxMy45IDggMTMuOSA4YzcuNyA0LjQgMTAuMyAxNC4yIDUuOSAyMS45TDQxNiAxNzMuOWwxLjYgLjljMTUuMyA4LjggMjAuNiAyOC40IDExLjcgNDMuN0wzOTIuNiAyODJjMiAyLjggMy45IDUuOCA1LjcgOC44bDc2LjEgMTI4LjhjMTEuMiAxOSA0LjkgNDMuNS0xNC4xIDU0LjhzLTQzLjUgNC45LTU0LjgtMTQuMXpNMzIwIDUxMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM2OS43bC01My42IDkwLjZjLTExLjIgMTktMzUuOCAyNS4zLTU0LjggMTQuMXMtMjUuMy0zNS44LTE0LjEtNTQuOGw3Ni4xLTEyOC44YzkuNC0xNS44IDIxLjctMjkuMyAzNi00MEwzMzEuMSA1MTBjLTMuNSAxLjMtNy4yIDItMTEuMSAyek0yOTYgMzIwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIl1cbn07XG52YXIgZmFDYXJ0U2hvcHBpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FydC1zaG9wcGluZycsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODcyMiwgXCJzaG9wcGluZy1jYXJ0XCJdLCBcImYwN2FcIiwgXCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBINjkuNWMyMiAwIDQxLjUgMTIuOCA1MC42IDMyaDQxMWMyNi4zIDAgNDUuNSAyNSAzOC42IDUwLjRsLTQxIDE1Mi4zYy04LjUgMzEuNC0zNyA1My4zLTY5LjUgNTMuM0gxNzAuN2w1LjQgMjguNWMyLjIgMTEuMyAxMi4xIDE5LjUgMjMuNiAxOS41SDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxOTkuN2MtMzQuNiAwLTY0LjMtMjQuNi03MC43LTU4LjVMNzcuNCA1NC41Yy0uNy0zLjgtNC02LjUtNy45LTYuNUgyNEMxMC43IDQ4IDAgMzcuMyAwIDI0ek0xMjggNDY0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTMzNi00OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJdXG59O1xudmFyIGZhU2hvcHBpbmdDYXJ0ID0gZmFDYXJ0U2hvcHBpbmc7XG52YXIgZmFWaWFscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWFscycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ5M1wiLCBcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDg4aDQ4IDU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjQwMGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MFY5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek0xMzYgOTZIODhWMjU2aDQ4Vjk2ek0yODggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJoNTYgNDggNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJWNDAwYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwVjk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDI0IDk2SDM3NlYyNTZoNDhWOTZ6XCJdXG59O1xudmFyIGZhUGx1Z0NpcmNsZVBsdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGx1Zy1jaXJjbGUtcGx1cycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU1ZlwiLCBcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTE2LTIwOHY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg0NDh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMzg0SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmg0OFYzMDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIl1cbn07XG52YXIgZmFQbGFjZU9mV29yc2hpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFjZS1vZi13b3JzaGlwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjdmXCIsIFwiTTIyNCAxMDkuM1YyMTcuNkwxODMuMyAyNDJjLTE0LjUgOC43LTIzLjMgMjQuMy0yMy4zIDQxLjJWNTEyaDk2VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0djk2aDk2VjI4My4yYzAtMTYuOS04LjgtMzIuNS0yMy4zLTQxLjJMNDE2IDIxNy42VjEwOS4zYzAtOC41LTMuNC0xNi42LTkuNC0yMi42TDMzMS4zIDExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDIzMy40IDg2LjZjLTYgNi05LjQgMTQuMS05LjQgMjIuNnpNMjQuOSAzMzAuM0M5LjUgMzM4LjggMCAzNTQuOSAwIDM3Mi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MFYyNzMuNkwyNC45IDMzMC4zek01OTIgNTEyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM3Mi40YzAtMTcuNS05LjUtMzMuNi0yNC45LTQyLjFMNTEyIDI3My42VjUxMmg4MHpcIl1cbn07XG52YXIgZmFHcmlwVmVydGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JpcC12ZXJ0aWNhbCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjU4ZVwiLCBcIk00MCAzNTJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwem0xOTIgMGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDB6TTQwIDMyMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MGw0OCAwYzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDhjMCAyMi4xLTE3LjkgNDAtNDAgNDBsLTQ4IDB6TTIzMiAxOTJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwek00MCAxNjBjLTIyLjEgMC00MC0xNy45LTQwLTQwTDAgNzJDMCA0OS45IDE3LjkgMzIgNDAgMzJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwek0yMzIgMzJsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwelwiXVxufTtcbnZhciBmYUFycm93VHVyblVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXR1cm4tdXAnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImxldmVsLXVwXCJdLCBcImYxNDhcIiwgXCJNMzIgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTMwNi43IDczLjQgNzMuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxNjAgMTA5LjMgMTYwIDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMHpcIl1cbn07XG52YXIgZmFMZXZlbFVwID0gZmFBcnJvd1R1cm5VcDtcbnZhciBmYVUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndScsXG4gIGljb246IFszODQsIDUxMiwgWzExN10sIFwiNTVcIiwgXCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjg4YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4czEyOC01Ny4zIDEyOC0xMjhWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYyODhjMCAxMDYtODYgMTkyLTE5MiAxOTJTMCAzOTQgMCAyODhWNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6XCJdXG59O1xudmFyIGZhU3F1YXJlUm9vdFZhcmlhYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1yb290LXZhcmlhYmxlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzcXVhcmUtcm9vdC1hbHRcIl0sIFwiZjY5OFwiLCBcIk0yODIuNiA3OC4xYzgtMjcuMyAzMy00Ni4xIDYxLjQtNDYuMUg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzQ0TDIzOC43IDQ1N2MtMy42IDEyLjMtMTQuMSAyMS4yLTI2LjggMjIuOHMtMjUuMS00LjYtMzEuNS0xNS42TDc3LjYgMjg4SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDc3LjZjMjIuOCAwIDQzLjggMTIuMSA1NS4zIDMxLjhsNjUuMiAxMTEuOEwyODIuNiA3OC4xek0zOTMuNCAyMzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMEw0ODAgMjc0LjdsNDEuNC00MS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMNTI1LjMgMzIwbDQxLjQgNDEuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEw0ODAgMzY1LjNsLTQxLjQgNDEuNGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMNDM0LjcgMzIwbC00MS40LTQxLjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zelwiXVxufTtcbnZhciBmYVNxdWFyZVJvb3RBbHQgPSBmYVNxdWFyZVJvb3RWYXJpYWJsZTtcbnZhciBmYUNsb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb2NrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MzM5LCBcImNsb2NrLWZvdXJcIl0sIFwiZjAxN1wiLCBcIk0yNTYgMGEyNTYgMjU2IDAgMSAxIDAgNTEyQTI1NiAyNTYgMCAxIDEgMjU2IDB6TTIzMiAxMjBWMjU2YzAgOCA0IDE1LjUgMTAuNyAyMGw5NiA2NGMxMSA3LjQgMjUuOSA0LjQgMzMuMy02LjdzNC40LTI1LjktNi43LTMzLjNMMjgwIDI0My4yVjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHpcIl1cbn07XG52YXIgZmFDbG9ja0ZvdXIgPSBmYUNsb2NrO1xudmFyIGZhQmFja3dhcmRTdGVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY2t3YXJkLXN0ZXAnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcInN0ZXAtYmFja3dhcmRcIl0sIFwiZjA0OFwiLCBcIk0yNjcuNSA0NDAuNmM5LjUgNy45IDIyLjggOS43IDM0LjEgNC40czE4LjQtMTYuNiAxOC40LTI5Vjk2YzAtMTIuNC03LjItMjMuNy0xOC40LTI5cy0yNC41LTMuNi0zNC4xIDQuNGwtMTkyIDE2MEw2NCAyNDFWOTZjMC0xNy43LTE0LjMtMzItMzItMzJTMCA3OC4zIDAgOTZWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjcxbDExLjUgOS42IDE5MiAxNjB6XCJdXG59O1xudmFyIGZhU3RlcEJhY2t3YXJkID0gZmFCYWNrd2FyZFN0ZXA7XG52YXIgZmFQYWxsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFsbGV0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDgyXCIsIFwiTTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHY2NEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg5NiAzMjAgNTQ0aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDU3NlYzODRoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINTQ0IDMyMCA5NiAzMnptOTYgNjRIMjg4djY0SDEyOFYzODR6bTIyNCAwSDUxMnY2NEgzNTJWMzg0elwiXVxufTtcbnZhciBmYUZhdWNldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYXVjZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwMDVcIiwgXCJNMTkyIDk2djEyTDk2IDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2LTEyIDMxLTMuOSAxLS4xIDEgLjEgMzEgMy45IDk2IDEyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC05NiAxMlY5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpNMzIgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxMzIuMWMyMC4yIDI5IDUzLjkgNDggOTEuOSA0OHM3MS43LTE5IDkxLjktNDhIMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMyczE0LjMgMzIgMzIgMzJoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC04OC40LTcxLjYtMTYwLTE2MC0xNjBIMzIwbC0yMi42LTIyLjZjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgyNTZWMTgwLjJsLTMyLTQtMzIgNFYyMjRIMTczLjNjLTguNSAwLTE2LjYgMy40LTIyLjYgOS40TDEyOCAyNTZIMzJ6XCJdXG59O1xudmFyIGZhQmFzZWJhbGxCYXRCYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jhc2ViYWxsLWJhdC1iYWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDMyXCIsIFwiTTQyNCAwYy0xMi40IDAtMjQuMiA0LjktMzMgMTMuN0wyMzMuNSAxNzEuMmMtMTAuNSAxMC41LTE5LjggMjIuMS0yNy43IDM0LjZMMTMyLjcgMzIxLjZjLTcuMyAxMS41LTE1LjggMjIuMi0yNS41IDMxLjlMNjkuOSAzOTAuN2w1MS4zIDUxLjMgMzcuMy0zNy4zYzkuNi05LjYgMjAuMy0xOC4yIDMxLjktMjUuNWwxMTUuOC03My4xYzEyLjUtNy45IDI0LjEtMTcuMiAzNC42LTI3LjdMNDk4LjMgMTIxYzguNy04LjcgMTMuNy0yMC42IDEzLjctMzNzLTQuOS0yNC4yLTEzLjctMzNMNDU3IDEzLjdDNDQ4LjIgNC45IDQzNi40IDAgNDI0IDB6bTg4IDQzMmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6TTE1IDM5OWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQ5IDM5OWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6XCJdXG59O1xudmFyIGZhUyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTE1XSwgXCI1M1wiLCBcIk05OS4xIDEwNS40Qzc5IDExNCA2OC4yIDEyNy4yIDY1LjIgMTQ0LjhjLTIuNCAxNC4xLS43IDIzLjIgMiAyOS40YzIuOCA2LjMgNy45IDEyLjQgMTYuNyAxOC42YzE5LjIgMTMuNCA0OC4zIDIyLjEgODQuOSAzMi41YzEgLjMgMS45IC42IDIuOSAuOGMzMi43IDkuMyA3MiAyMC42IDEwMC45IDQwLjdjMTUuNyAxMC45IDI5LjkgMjUuNSAzOC42IDQ1LjFjOC44IDE5LjggMTAuOCA0MiA2LjYgNjYuM2MtNy4zIDQyLjUtMzUuMyA3MS43LTcxLjggODcuM2MtMzUuNCAxNS4yLTc5LjEgMTcuOS0xMjMuNyAxMC45bC0uMiAwIDAgMGMtMjQtMy45LTYyLjctMTcuMS04Ny42LTI1LjZjLTQuOC0xLjctOS4yLTMuMS0xMi44LTQuM0M1LjEgNDQwLjgtMy45IDQyMi43IDEuNiA0MDUuOXMyMy43LTI1LjggNDAuNS0yMC4zYzQuOSAxLjYgMTAuMiAzLjQgMTUuOSA1LjRjMjUuNCA4LjYgNTYuNCAxOS4yIDc0LjQgMjIuMWMzNi44IDUuNyA2Ny41IDIuNSA4OC41LTYuNWMyMC4xLTguNiAzMC44LTIxLjggMzMuOS0zOS40YzIuNC0xNC4xIC43LTIzLjItMi0yOS40Yy0yLjgtNi4zLTcuOS0xMi40LTE2LjctMTguNmMtMTkuMi0xMy40LTQ4LjMtMjIuMS04NC45LTMyLjVjLTEtLjMtMS45LS42LTIuOS0uOGMtMzIuNy05LjMtNzItMjAuNi0xMDAuOS00MC43Yy0xNS43LTEwLjktMjkuOS0yNS41LTM4LjYtNDUuMWMtOC44LTE5LjgtMTAuOC00Mi02LjYtNjYuM2wzMS41IDUuNUwyLjEgMTMzLjlDOS40IDkxLjQgMzcuNCA2Mi4yIDczLjkgNDYuNmMzNS40LTE1LjIgNzkuMS0xNy45IDEyMy43LTEwLjljMTMgMiA1Mi40IDkuNiA2Ni42IDEzLjRjMTcuMSA0LjUgMjcuMiAyMi4xIDIyLjcgMzkuMnMtMjIuMSAyNy4yLTM5LjIgMjIuN2MtMTEuMi0zLTQ4LjEtMTAuMi02MC4xLTEybDQuOS0zMS41LTQuOSAzMS41Yy0zNi45LTUuOC02Ny41LTIuNS04OC42IDYuNXpcIl1cbn07XG52YXIgZmFUaW1lbGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aW1lbGluZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTI5Y1wiLCBcIk0xMjggNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0zMiA5Ny4zYzI4LjMtMTIuMyA0OC00MC41IDQ4LTczLjNjMC00NC4yLTM1LjgtODAtODAtODBTNDggNTEuOCA0OCA5NmMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjIyNEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgyODh2NTQuN2MtMjguMyAxMi4zLTQ4IDQwLjUtNDggNzMuM2MwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzIuOC0xOS43LTYxLTQ4LTczLjNWMjg4SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkg1NDRWMTY5LjNjMjguMy0xMi4zIDQ4LTQwLjUgNDgtNzMuM2MwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjIyNEgxNjBWMTY5LjN6TTQ4OCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zMjAgMzkyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIl1cbn07XG52YXIgZmFLZXlib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdrZXlib2FyZCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzkwMDBdLCBcImYxMWNcIiwgXCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTE2IDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTE2IDgwaDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2em04MC0xNzZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTQ0em0xNiA4MGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6TTE2MCAzMzZjMC04LjggNy4yLTE2IDE2LTE2SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNnpNMjcyIDEyOGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjE0NGMwLTguOCA3LjItMTYgMTYtMTZ6TTI1NiAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek0zNjggMTI4aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnpNMzUyIDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6TTQ2NCAxMjhoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2ek00NDggMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQ2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0NjRjLTguOCAwLTE2LTcuMi0xNi0xNlYzMzZjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYUNhcmV0RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1kb3duJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMGQ3XCIsIFwiTTEzNy40IDM3NC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhMMzIgMTkyYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWwxMjggMTI4elwiXVxufTtcbnZhciBmYUhvdXNlQ2hpbW5leU1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtY2hpbW5leS1tZWRpY2FsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJjbGluaWMtbWVkaWNhbFwiXSwgXCJmN2YyXCIsIFwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xaC0zMmwuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zSDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE4NWw1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0ek0yNzIgMTkyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaDQ4YzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MnpcIl1cbn07XG52YXIgZmFDbGluaWNNZWRpY2FsID0gZmFIb3VzZUNoaW1uZXlNZWRpY2FsO1xudmFyIGZhVGVtcGVyYXR1cmVUaHJlZVF1YXJ0ZXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLXRocmVlLXF1YXJ0ZXJzJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJ0ZW1wZXJhdHVyZS0zXCIsIFwidGhlcm1vbWV0ZXItM1wiLCBcInRoZXJtb21ldGVyLXRocmVlLXF1YXJ0ZXJzXCJdLCBcImYyYzhcIiwgXCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWMzIyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwiXVxufTtcbnZhciBmYVRlbXBlcmF0dXJlMyA9IGZhVGVtcGVyYXR1cmVUaHJlZVF1YXJ0ZXJzO1xudmFyIGZhVGhlcm1vbWV0ZXIzID0gZmFUZW1wZXJhdHVyZVRocmVlUXVhcnRlcnM7XG52YXIgZmFUaGVybW9tZXRlclRocmVlUXVhcnRlcnMgPSBmYVRlbXBlcmF0dXJlVGhyZWVRdWFydGVycztcbnZhciBmYU1vYmlsZVNjcmVlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb2JpbGUtc2NyZWVuJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJtb2JpbGUtYW5kcm9pZC1hbHRcIl0sIFwiZjNjZlwiLCBcIk0xNiA2NEMxNiAyOC43IDQ0LjcgMCA4MCAwSDMwNGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIODBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0xNDQgNDQ4YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMzA0IDY0SDgwVjM4NEgzMDRWNjR6XCJdXG59O1xudmFyIGZhTW9iaWxlQW5kcm9pZEFsdCA9IGZhTW9iaWxlU2NyZWVuO1xudmFyIGZhUGxhbmVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS11cCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTIyZFwiLCBcIk0xOTIgOTMuN0MxOTIgNTkuNSAyMjEgMCAyNTYgMGMzNiAwIDY0IDU5LjUgNjQgOTMuN2wwIDY2LjNMNDk3LjggMjc4LjVjOC45IDUuOSAxNC4yIDE1LjkgMTQuMiAyNi42djU2LjdjMCAxMC45LTEwLjcgMTguNi0yMS4xIDE1LjJMMzIwIDMyMHY4MGw1Ny42IDQzLjJjNCAzIDYuNCA3LjggNi40IDEyLjh2NDJjMCA3LjgtNi4zIDE0LTE0IDE0Yy0xLjMgMC0yLjYtLjItMy45LS41TDI1NiA0ODAgMTQ1LjkgNTExLjVjLTEuMyAuNC0yLjYgLjUtMy45IC41Yy03LjggMC0xNC02LjMtMTQtMTRWNDU2YzAtNSAyLjQtOS44IDYuNC0xMi44TDE5MiA0MDBWMzIwTDIxLjEgMzc3QzEwLjcgMzgwLjQgMCAzNzIuNyAwIDM2MS44VjMwNS4xYzAtMTAuNyA1LjMtMjAuNyAxNC4yLTI2LjZMMTkyIDE2MFY5My43elwiXVxufTtcbnZhciBmYVBpZ2d5QmFuayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaWdneS1iYW5rJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNGQzXCIsIFwiTTQwMCA5NmwwIC43Yy01LjMtLjQtMTAuNi0uNy0xNi0uN0gyNTZjLTE2LjUgMC0zMi41IDIuMS00Ny44IDZjLS4xLTItLjItNC0uMi02YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZ6bS0xNiAzMmMzLjUgMCA3IC4xIDEwLjQgLjNjNC4yIC4zIDguNCAuNyAxMi42IDEuM0M0MjQuNiAxMDkuMSA0NTAuOCA5NiA0ODAgOTZoMTEuNWMxMC40IDAgMTggOS44IDE1LjUgMTkuOWwtMTMuOCA1NS4yYzE1LjggMTQuOCAyOC43IDMyLjggMzcuNSA1Mi45SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg1MTJjLTkuMSAxMi4xLTE5LjkgMjIuOS0zMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0MTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQ0OEgyNTZ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MTZjLTM0LjktMjYuMi01OC43LTY2LjMtNjMuMi0xMTJINjhjLTM3LjYgMC02OC0zMC40LTY4LTY4czMwLjQtNjggNjgtNjhoNGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg2OGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBIOTkuMmMxMi4xLTU5LjggNTcuNy0xMDcuNSAxMTYuMy0xMjIuOGMxMi45LTMuNCAyNi41LTUuMiA0MC41LTUuMkgzODR6bTY0IDEzNmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwelwiXVxufTtcbnZhciBmYUJhdHRlcnlIYWxmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhdHRlcnktaGFsZicsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiYmF0dGVyeS0zXCJdLCBcImYyNDJcIiwgXCJNNDY0IDE2MGM4LjggMCAxNiA3LjIgMTYgMTZWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZINDY0ek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZWMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ2NGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE3NmMwLTQ0LjItMzUuOC04MC04MC04MEg4MHptMjA4IDk2SDk2VjMyMEgyODhWMTkyelwiXVxufTtcbnZhciBmYUJhdHRlcnkzID0gZmFCYXR0ZXJ5SGFsZjtcbnZhciBmYU1vdW50YWluQ2l0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3VudGFpbi1jaXR5JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTJlXCIsIFwiTTMzNiAwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5Mi4xbDcxLjQgMTE4LjRjMi41LTEuNiA1LjQtMi41IDguNi0yLjVoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNmgtMy41bDczLjggMTIyLjRjMTIuNCAyMC42IDEyLjkgNDYuMyAxLjIgNjcuM2MtLjQgLjgtLjkgMS42LTEuNCAyLjNINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI0MGMwLTI2LjUtMjEuNS00OC00OC00OEg1NjhWMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djcySDQ4MFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgzMzZ6bTMyIDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZWODBjMC04LjggNy4yLTE2IDE2LTE2ek0zNTIgMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NnptMTYwIDk2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDUyOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MnptMTYgODBoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg1MjhjLTguOCAwLTE2LTcuMi0xNi0xNlYzNjhjMC04LjggNy4yLTE2IDE2LTE2ek0yMjQgMTg4LjlMMjgzLjggMjg4SDIyM2wtNDggNjQtMjQuNi00MS4yTDIyNCAxODguOXptMjkuNC00NC4yQzI0Ny4xIDEzNC4zIDIzNiAxMjggMjI0IDEyOHMtMjMuMSA2LjMtMjkuNCAxNi43TDUuMSA0NTguOWMtNi41IDEwLjgtNi43IDI0LjMtLjcgMzUuM1MyMiA1MTIgMzQuNSA1MTJINDEzLjVjMTIuNSAwIDI0LTYuOCAzMC4xLTE3LjhzNS44LTI0LjUtLjctMzUuM0wyNTMuNCAxNDQuN3pcIl1cbn07XG52YXIgZmFDb2lucyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2lucycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjUxZVwiLCBcIk01MTIgODBjMCAxOC0xNC4zIDM0LjYtMzguNCA0OGMtMjkuMSAxNi4xLTcyLjUgMjcuNS0xMjIuMyAzMC45Yy0zLjctMS44LTcuNC0zLjUtMTEuMy01QzMwMC42IDEzNy40IDI0OC4yIDEyOCAxOTIgMTI4Yy04LjMgMC0xNi40IC4yLTI0LjUgLjZsLTEuMS0uNkMxNDIuMyAxMTQuNiAxMjggOTggMTI4IDgwYzAtNDQuMiA4Ni04MCAxOTItODBTNTEyIDM1LjggNTEyIDgwek0xNjAuNyAxNjEuMWMxMC4yLS43IDIwLjctMS4xIDMxLjMtMS4xYzYyLjIgMCAxMTcuNCAxMi4zIDE1Mi41IDMxLjRDMzY5LjMgMjA0LjkgMzg0IDIyMS43IDM4NCAyNDBjMCA0LS43IDcuOS0yLjEgMTEuN2MtNC42IDEzLjItMTcgMjUuMy0zNSAzNS41YzAgMCAwIDAgMCAwYy0uMSAuMS0uMyAuMS0uNCAuMmwwIDAgMCAwYy0uMyAuMi0uNiAuMy0uOSAuNWMtMzUgMTkuNC05MC44IDMyLTE1My42IDMyYy01OS42IDAtMTEyLjktMTEuMy0xNDguMi0yOS4xYy0xLjktLjktMy43LTEuOS01LjUtMi45QzE0LjMgMjc0LjYgMCAyNTggMCAyNDBjMC0zNC44IDUzLjQtNjQuNSAxMjgtNzUuNGMxMC41LTEuNSAyMS40LTIuNyAzMi43LTMuNXpNNDE2IDI0MGMwLTIxLjktMTAuNi0zOS45LTI0LjEtNTMuNGMyOC4zLTQuNCA1NC4yLTExLjQgNzYuMi0yMC41YzE2LjMtNi44IDMxLjUtMTUuMiA0My45LTI1LjVWMTc2YzAgMTkuMy0xNi41IDM3LjEtNDMuOCA1MC45Yy0xNC42IDcuNC0zMi40IDEzLjctNTIuNCAxOC41Yy4xLTEuOCAuMi0zLjUgLjItNS4zem0tMzIgOTZjMCAxOC0xNC4zIDM0LjYtMzguNCA0OGMtMS44IDEtMy42IDEuOS01LjUgMi45QzMwNC45IDQwNC43IDI1MS42IDQxNiAxOTIgNDE2Yy02Mi44IDAtMTE4LjYtMTIuNi0xNTMuNi0zMkMxNC4zIDM3MC42IDAgMzU0IDAgMzM2VjMwMC42YzEyLjUgMTAuMyAyNy42IDE4LjcgNDMuOSAyNS41QzgzLjQgMzQyLjYgMTM1LjggMzUyIDE5MiAzNTJzMTA4LjYtOS40IDE0OC4xLTI1LjljNy44LTMuMiAxNS4zLTYuOSAyMi40LTEwLjljNi4xLTMuNCAxMS44LTcuMiAxNy4yLTExLjJjMS41LTEuMSAyLjktMi4zIDQuMy0zLjRWMzA0djUuN1YzMzZ6bTMyIDBWMzA0IDI3OC4xYzE5LTQuMiAzNi41LTkuNSA1Mi4xLTE2YzE2LjMtNi44IDMxLjUtMTUuMiA0My45LTI1LjVWMjcyYzAgMTAuNS01IDIxLTE0LjkgMzAuOWMtMTYuMyAxNi4zLTQ1IDI5LjctODEuMyAzOC40Yy4xLTEuNyAuMi0zLjUgLjItNS4zek0xOTIgNDQ4YzU2LjIgMCAxMDguNi05LjQgMTQ4LjEtMjUuOWMxNi4zLTYuOCAzMS41LTE1LjIgNDMuOS0yNS41VjQzMmMwIDQ0LjItODYgODAtMTkyIDgwUzAgNDc2LjIgMCA0MzJWMzk2LjZjMTIuNSAxMC4zIDI3LjYgMTguNyA0My45IDI1LjVDODMuNCA0MzguNiAxMzUuOCA0NDggMTkyIDQ0OHpcIl1cbn07XG52YXIgZmFLaGFuZGEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2hhbmRhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTc3Ml0sIFwiZjY2ZFwiLCBcIk0yNDUuOCAzLjdjNS45LTQuOSAxNC42LTQuOSAyMC41IDBsNDggNDBjNS45IDQuOSA3LjUgMTMuMiAzLjggMTkuOWwwIDAgMCAwIDAgMCAwIDAtLjEgLjEtLjMgLjZjLS4zIC41LS43IDEuMy0xLjIgMi4zYy0xIDItMi42IDUtNC40IDguNmMtLjUgLjktLjkgMS45LTEuNCAyLjlDMzQ0LjkgOTcuNCAzNjggMTM0IDM2OCAxNzZzLTIzLjEgNzguNi01Ny4zIDk3LjhjLjUgMSAxIDIgMS40IDIuOWMxLjggMy43IDMuMyA2LjYgNC40IDguNmMuNSAxIC45IDEuOCAxLjIgMi4zbC4zIC42IC4xIC4xIDAgMCAwIDBjMy42IDYuNyAyIDE1LTMuOCAxOS45TDI3MiAzNDMuNXYxOS44bDM1LjYtMjQuNSA0MS4xLTI4LjJjNDIuOC0yOS40IDY4LjQtNzggNjguNC0xMzBjMC0zMS4xLTkuMi02MS42LTI2LjUtODcuNWwtMi44LTQuMmMtNC02LTMuNS0xNCAxLjMtMTkuNXMxMi43LTcgMTkuMi0zLjdMNDAxLjEgODBjNy4yLTE0LjMgNy4yLTE0LjMgNy4yLTE0LjNsMCAwIDAgMCAuMSAwIC4zIC4yIDEgLjVjLjggLjQgMiAxLjEgMy41IDEuOWMyLjkgMS43IDcgNC4xIDExLjggNy4zYzkuNiA2LjQgMjIuNSAxNi4xIDM1LjQgMjljMjUuNyAyNS43IDUyLjcgNjUuNiA1Mi43IDExOS4zYzAgNTMuMS0yNi40IDEwMC41LTUxLjIgMTMzLjZjLTEyLjYgMTYuNy0yNS4xIDMwLjMtMzQuNSAzOS43Yy00LjcgNC43LTguNyA4LjQtMTEuNSAxMC45Yy0xLjQgMS4zLTIuNSAyLjItMy4zIDIuOWwtLjkgLjgtLjMgLjItLjEgLjEgMCAwIDAgMHMwIDAtMTAuMi0xMi4zbDEwLjIgMTIuM2MtNS4xIDQuMy0xMi40IDQuOS0xOC4yIDEuNmwtNzUuNi00My0zMi43IDIyLjUgNDUuNSAzMS4zYzEuOC0uNCAzLjctLjcgNS43LS43YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0xMi4yIDAtMjIuMy05LjEtMjMuOC0yMUwyNzIgNDIzLjR2MjguOWM5LjYgNS41IDE2IDE1LjkgMTYgMjcuN2MwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTExLjggNi40LTIyLjIgMTYtMjcuN1Y0MjQuMWwtNDAuMyAyNy43QzE5Ny44IDQ2My4zIDE4Ny45IDQ3MiAxNzYgNDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzIuMiAwIDQuNCAuMyA2LjUgLjlsNDUuOC0zMS41LTMyLjctMjIuNS03NS42IDQzYy01LjggMy4zLTEzIDIuNy0xOC4yLTEuNkwxMTIgNDAwYy0xMC4yIDEyLjMtMTAuMiAxMi4zLTEwLjMgMTIuM2wwIDAgMCAwLS4xLS4xLS4zLS4yLS45LS44Yy0uOC0uNy0xLjktMS43LTMuMy0yLjljLTIuOC0yLjUtNi43LTYuMi0xMS41LTEwLjljLTkuNC05LjQtMjEuOS0yMy0zNC41LTM5LjdDMjYuNCAzMjQuNSAwIDI3Ny4xIDAgMjI0YzAtNTMuNyAyNi45LTkzLjYgNTIuNy0xMTkuM2MxMi45LTEyLjkgMjUuOC0yMi42IDM1LjQtMjlDOTMgNzIuNSA5NyA3MCA5OS45IDY4LjRjMS41LS44IDIuNi0xLjUgMy41LTEuOWwxLS41IC4zLS4yIC4xIDAgMCAwIDAgMHMwIDAgNy4yIDE0LjNsLTcuMi0xNC4zYzYuNS0zLjIgMTQuMy0xLjcgMTkuMiAzLjdzNS4zIDEzLjQgMS4zIDE5LjVsLTIuOCA0LjJDMTA1LjIgMTE5IDk2IDE0OS41IDk2IDE4MC42YzAgNTEuOSAyNS42IDEwMC42IDY4LjQgMTMwbDQxLjEgMjguMkwyNDAgMzYyLjZWMzQzLjVsLTQyLjItMzUuMmMtNS45LTQuOS03LjUtMTMuMi0zLjgtMTkuOWwwIDAgMCAwIDAgMCAuMS0uMSAuMy0uNmMuMy0uNSAuNy0xLjMgMS4yLTIuM2MxLTIgMi42LTUgNC40LTguNmMuNS0uOSAuOS0xLjkgMS40LTIuOUMxNjcuMSAyNTQuNiAxNDQgMjE4IDE0NCAxNzZzMjMuMS03OC42IDU3LjMtOTcuOGMtLjUtMS0xLTItMS40LTIuOWMtMS44LTMuNy0zLjMtNi42LTQuNC04LjZjLS41LTEtLjktMS44LTEuMi0yLjNsLS4zLS42LS4xLS4xIDAgMCAwIDAgMCAwYy0zLjYtNi43LTItMTUgMy44LTE5LjlsNDgtNDB6TTIyMC4yIDEyMi45Yy0xNyAxMS41LTI4LjIgMzEtMjguMiA1My4xczExLjIgNDEuNiAyOC4yIDUzLjFDMjI3IDIxMC4yIDIzMiAxOTAuOSAyMzIgMTc2cy01LTM0LjItMTEuOC01My4xem03MS41IDEwNi4yYzE3LTExLjUgMjguMi0zMSAyOC4yLTUzLjFzLTExLjItNDEuNi0yOC4yLTUzLjFDMjg1IDE0MS44IDI4MCAxNjEuMSAyODAgMTc2czUgMzQuMiAxMS44IDUzLjF6XCJdXG59O1xudmFyIGZhU2xpZGVycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbGlkZXJzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzbGlkZXJzLWhcIl0sIFwiZjFkZVwiLCBcIk0wIDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw1NC43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjQ2LjcgMGMtMTIuMy0yOC4zLTQwLjUtNDgtNzMuMy00OHMtNjEgMTkuNy03My4zIDQ4TDMyIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTEyOCAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyMCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzItODBjLTMyLjggMC02MSAxOS43LTczLjMgNDhMMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI0Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhsNTQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01NC43IDBjLTEyLjMtMjguMy00MC41LTQ4LTczLjMtNDh6TTE5MiAxMjhhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em03My4zLTY0QzI1MyAzNS43IDIyNC44IDE2IDE5MiAxNnMtNjEgMTkuNy03My4zIDQ4TDMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMmw4Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwyNjUuMyA2NHpcIl1cbn07XG52YXIgZmFTbGlkZXJzSCA9IGZhU2xpZGVycztcbnZhciBmYUZvbGRlclRyZWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9sZGVyLXRyZWUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY4MDJcIiwgXCJNNjQgMzJDNjQgMTQuMyA0OS43IDAgMzIgMFMwIDE0LjMgMCAzMnY5NlYzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjU2VjM4NEg2NFYxNjBIMjU2Vjk2SDY0VjMyek0yODggMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0NDUuM2MtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRMNDA5LjQgOS40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlYxOTJ6bTAgMjg4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJINDQ1LjNjLTguNSAwLTE2LjYtMy40LTIyLjYtOS40bC0xMy4zLTEzLjNjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEgzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MHpcIl1cbn07XG52YXIgZmFOZXR3b3JrV2lyZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbmV0d29yay13aXJlZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZmZlwiLCBcIk0yNTYgNjRIMzg0djY0SDI1NlY2NHpNMjQwIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4djMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2djMySDgwYy0yNi41IDAtNDggMjEuNS00OCA0OHY5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OEgyNDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzY4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDE5MlYyODhINDQ4djMySDQwMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2OTZjMCAyNi41IDIxLjUgNDggNDggNDhINTYwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OEg1MTJWMjg4aDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1MlYxOTJoNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjQwek05NiA0NDhWMzg0SDIyNHY2NEg5NnptMzIwLTY0SDU0NHY2NEg0MTZWMzg0elwiXVxufTtcbnZhciBmYU1hcFBpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXAtcGluJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTI4MjA1XSwgXCJmMjc2XCIsIFwiTTE2IDE0NGExNDQgMTQ0IDAgMSAxIDI4OCAwQTE0NCAxNDQgMCAxIDEgMTYgMTQ0ek0xNjAgODBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTUzIDAtOTYgNDMtOTYgOTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmMwLTM1LjMgMjguNy02NCA2NC02NHpNMTI4IDQ4MFYzMTcuMWMxMC40IDEuOSAyMS4xIDIuOSAzMiAyLjlzMjEuNi0xIDMyLTIuOVY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ6XCJdXG59O1xudmFyIGZhSGFtc2EgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFtc2EnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2NjVcIiwgXCJNMzQuNiAyODhIODBjOC44IDAgMTYtNy4yIDE2LTE2VjcyYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBWMjA0YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjQwYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBWMjA0YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwVjcyYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBWMjcyYzAgOC44IDcuMiAxNiAxNiAxNmg0NS40YzE5LjEgMCAzNC42IDE1LjUgMzQuNiAzNC42YzAgOC42LTMuMiAxNi45LTkgMjMuM0w0MTYuNiA0NDFjLTQxLjEgNDUuMi05OS40IDcxLTE2MC42IDcxcy0xMTkuNC0yNS44LTE2MC42LTcxTDkgMzQ1LjljLTUuOC02LjQtOS0xNC43LTktMjMuM0MwIDMwMy41IDE1LjUgMjg4IDM0LjYgMjg4ek0yNTYgMjg4Yy0zOC40IDAtNzYuOCAzNS44LTkwLjYgNTAuMmMtMy42IDMuNy01LjQgOC43LTUuNCAxMy44czEuOCAxMC4xIDUuNCAxMy44QzE3OS4yIDM4MC4yIDIxNy42IDQxNiAyNTYgNDE2czc2LjgtMzUuOCA5MC42LTUwLjJjMy42LTMuNyA1LjQtOC43IDUuNC0xMy44cy0xLjgtMTAuMS01LjQtMTMuOEMzMzIuOCAzMjMuOCAyOTQuNCAyODggMjU2IDI4OHptMCAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhQ2VudFNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2VudC1zaWduJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlM2Y1XCIsIFwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY2LjdjMzAuOSA1LjIgNTkuMiAxNy43IDgzLjIgMzUuOGMxNC4xIDEwLjYgMTcgMzAuNyA2LjQgNDQuOHMtMzAuNyAxNy00NC44IDYuNEMyNzkuNCAxMzcuNSAyNTIuOSAxMjggMjI0IDEyOGMtNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjhzNTcuMyAxMjggMTI4IDEyOGMyOC45IDAgNTUuNC05LjUgNzYuOC0yNS42YzE0LjEtMTAuNiAzNC4yLTcuOCA0NC44IDYuNHM3LjggMzQuMi02LjQgNDQuOGMtMjQgMTgtNTIuNCAzMC42LTgzLjIgMzUuOFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDQ1LjNDMTAxLjIgNDMwLjEgMzIgMzUxLjEgMzIgMjU2czY5LjItMTc0LjEgMTYwLTE4OS4zVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYUZsYXNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZsYXNrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGMzXCIsIFwiTTI4OCAwSDE2MCAxMjhDMTEwLjMgMCA5NiAxNC4zIDk2IDMyczE0LjMgMzIgMzIgMzJWMTk2LjhjMCAxMS44LTMuMyAyMy41LTkuNSAzMy41TDEwLjMgNDA2LjJDMy42IDQxNy4yIDAgNDI5LjcgMCA0NDIuNkMwIDQ4MC45IDMxLjEgNTEyIDY5LjQgNTEySDM3OC42YzM4LjMgMCA2OS40LTMxLjEgNjkuNC02OS40YzAtMTIuOC0zLjYtMjUuNC0xMC4zLTM2LjRMMzI5LjUgMjMwLjRjLTYuMi0xMC4xLTkuNS0yMS43LTkuNS0zMy41VjY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI4OHpNMTkyIDE5Ni44VjY0aDY0VjE5Ni44YzAgMjMuNyA2LjYgNDYuOSAxOSA2Ny4xTDMwOS41IDMyMGgtMTcxTDE3MyAyNjMuOWMxMi40LTIwLjIgMTktNDMuNCAxOS02Ny4xelwiXVxufTtcbnZhciBmYVBlcnNvblByZWduYW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1wcmVnbmFudCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTMxZVwiLCBcIk0xOTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTEyMCAzODNjLTEzLjgtMy42LTI0LTE2LjEtMjQtMzFWMjk2LjlsLTQuNiA3LjZjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE1LTI0LjkgNDAuMy00MS41IDY4LjctNDUuNmM0LjEtLjYgOC4yLTEgMTIuNS0xaDEuMSAxMi41SDE5MmMxLjQgMCAyLjggLjEgNC4xIC4zYzM1LjcgMi45IDY1LjQgMjkuMyA3Mi4xIDY1bDYuMSAzMi41YzQ0LjMgOC42IDc3LjcgNDcuNSA3Ny43IDk0LjN2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJIMzA0IDI2NHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODRoLTgtOHY5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzODN6XCJdXG59O1xudmFyIGZhV2FuZFNwYXJrbGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhbmQtc3BhcmtsZXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3MmJcIiwgXCJNNDY0IDYuMWM5LjUtOC41IDI0LTguMSAzMyAuOWw4IDhjOSA5IDkuNCAyMy41IC45IDMzbC04NS44IDk1LjljLTIuNiAyLjktNC4xIDYuNy00LjEgMTAuN1YxNzZjMCA4LjgtNy4yIDE2LTE2IDE2SDM4NC4yYy00LjYgMC04LjkgMS45LTExLjkgNS4zTDEwMC43IDUwMC45Qzk0LjMgNTA4IDg1LjMgNTEyIDc1LjggNTEyYy04LjggMC0xNy4zLTMuNS0yMy41LTkuOEw5LjcgNDU5LjdDMy41IDQ1My40IDAgNDQ1IDAgNDM2LjJjMC05LjUgNC0xOC41IDExLjEtMjQuOGwxMTEuNi05OS44YzMuNC0zIDUuMy03LjQgNS4zLTExLjlWMjcyYzAtOC44IDcuMi0xNiAxNi0xNmgzNC42YzMuOSAwIDcuNy0xLjUgMTAuNy00LjFMNDY0IDYuMXpNNDMyIDI4OGMzLjYgMCA2LjcgMi40IDcuNyA1LjhsMTQuOCA1MS43IDUxLjcgMTQuOGMzLjQgMSA1LjggNC4xIDUuOCA3LjdzLTIuNCA2LjctNS44IDcuN2wtNTEuNyAxNC44LTE0LjggNTEuN2MtMSAzLjQtNC4xIDUuOC03LjcgNS44cy02LjctMi40LTcuNy01LjhsLTE0LjgtNTEuNy01MS43LTE0LjhjLTMuNC0xLTUuOC00LjEtNS44LTcuN3MyLjQtNi43IDUuOC03LjdsNTEuNy0xNC44IDE0LjgtNTEuN2MxLTMuNCA0LjEtNS44IDcuNy01Ljh6TTg3LjcgNjkuOGwxNC44IDUxLjcgNTEuNyAxNC44YzMuNCAxIDUuOCA0LjEgNS44IDcuN3MtMi40IDYuNy01LjggNy43bC01MS43IDE0LjhMODcuNyAyMTguMmMtMSAzLjQtNC4xIDUuOC03LjcgNS44cy02LjctMi40LTcuNy01LjhMNTcuNSAxNjYuNSA1LjggMTUxLjdjLTMuNC0xLTUuOC00LjEtNS44LTcuN3MyLjQtNi43IDUuOC03LjdsNTEuNy0xNC44TDcyLjMgNjkuOGMxLTMuNCA0LjEtNS44IDcuNy01LjhzNi43IDIuNCA3LjcgNS44ek0yMDggMGMzLjcgMCA2LjkgMi41IDcuOCA2LjFsNi44IDI3LjMgMjcuMyA2LjhjMy42IC45IDYuMSA0LjEgNi4xIDcuOHMtMi41IDYuOS02LjEgNy44bC0yNy4zIDYuOC02LjggMjcuM2MtLjkgMy42LTQuMSA2LjEtNy44IDYuMXMtNi45LTIuNS03LjgtNi4xbC02LjgtMjcuMy0yNy4zLTYuOGMtMy42LS45LTYuMS00LjEtNi4xLTcuOHMyLjUtNi45IDYuMS03LjhsMjcuMy02LjggNi44LTI3LjNjLjktMy42IDQuMS02LjEgNy44LTYuMXpcIl1cbn07XG52YXIgZmFFbGxpcHNpc1ZlcnRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VsbGlwc2lzLXZlcnRpY2FsJyxcbiAgaWNvbjogWzEyOCwgNTEyLCBbXCJlbGxpcHNpcy12XCJdLCBcImYxNDJcIiwgXCJNNjQgMzYwYTU2IDU2IDAgMSAwIDAgMTEyIDU2IDU2IDAgMSAwIDAtMTEyem0wLTE2MGE1NiA1NiAwIDEgMCAwIDExMiA1NiA1NiAwIDEgMCAwLTExMnpNMTIwIDk2QTU2IDU2IDAgMSAwIDggOTZhNTYgNTYgMCAxIDAgMTEyIDB6XCJdXG59O1xudmFyIGZhRWxsaXBzaXNWID0gZmFFbGxpcHNpc1ZlcnRpY2FsO1xudmFyIGZhVGlja2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RpY2tldCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyNzkwM10sIFwiZjE0NVwiLCBcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOHY2NGMwIDguOCA3LjQgMTUuNyAxNS43IDE4LjZDMzQuNSAyMTcuMSA0OCAyMzUgNDggMjU2cy0xMy41IDM4LjktMzIuMyA0NS40QzcuNCAzMDQuMyAwIDMxMS4yIDAgMzIwdjY0YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYzMjBjMC04LjgtNy40LTE1LjctMTUuNy0xOC42QzU0MS41IDI5NC45IDUyOCAyNzcgNTI4IDI1NnMxMy41LTM4LjkgMzIuMy00NS40YzguMy0yLjkgMTUuNy05LjggMTUuNy0xOC42VjEyOGMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNjQgMTEybDAgMTYwYzAgOC44IDcuMiAxNiAxNiAxNkg0MzJjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIMTQ0Yy04LjggMC0xNiA3LjItMTYgMTZ6TTk2IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMTYwelwiXVxufTtcbnZhciBmYVBvd2VyT2ZmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bvd2VyLW9mZicsXG4gIGljb246IFs1MTIsIDUxMiwgWzkyMTFdLCBcImYwMTFcIiwgXCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyek0xNDMuNSAxMjAuNmMxMy42LTExLjMgMTUuNC0zMS41IDQuMS00NS4xcy0zMS41LTE1LjQtNDUuMS00LjFDNDkuNyAxMTUuNCAxNiAxODEuOCAxNiAyNTZjMCAxMzIuNSAxMDcuNSAyNDAgMjQwIDI0MHMyNDAtMTA3LjUgMjQwLTI0MGMwLTc0LjItMzMuOC0xNDAuNi04Ni42LTE4NC42Yy0xMy42LTExLjMtMzMuOC05LjQtNDUuMSA0LjFzLTkuNCAzMy44IDQuMSA0NS4xYzM4LjkgMzIuMyA2My41IDgxIDYzLjUgMTM1LjRjMCA5Ny4yLTc4LjggMTc2LTE3NiAxNzZzLTE3Ni03OC44LTE3Ni0xNzZjMC01NC40IDI0LjctMTAzLjEgNjMuNS0xMzUuNHpcIl1cbn07XG52YXIgZmFSaWdodExvbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmlnaHQtbG9uZycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibG9uZy1hcnJvdy1hbHQtcmlnaHRcIl0sIFwiZjMwYlwiLCBcIk0zMzQuNSA0MTRjOC44IDMuOCAxOSAyIDI2LTQuNmwxNDQtMTM2YzQuOC00LjUgNy41LTEwLjggNy41LTE3LjRzLTIuNy0xMi45LTcuNS0xNy40bC0xNDQtMTM2Yy03LTYuNi0xNy4yLTguNC0yNi00LjZzLTE0LjUgMTIuNS0xNC41IDIybDAgNzJMMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDI4OCAwIDAgNzJjMCA5LjYgNS43IDE4LjIgMTQuNSAyMnpcIl1cbn07XG52YXIgZmFMb25nQXJyb3dBbHRSaWdodCA9IGZhUmlnaHRMb25nO1xudmFyIGZhRmxhZ1VzYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmbGFnLXVzYScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjc0ZFwiLCBcIk0zMiAwQzQ5LjcgMCA2NCAxNC4zIDY0IDMyVjQ4bDY5LTE3LjJjMzguMS05LjUgNzguMy01LjEgMTEzLjUgMTIuNWM0Ni4zIDIzLjIgMTAwLjggMjMuMiAxNDcuMSAwbDkuNi00LjhDNDIzLjggMjguMSA0NDggNDMuMSA0NDggNjYuMXYzNi4xbC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTIwLjMtOS00MS44LTE0LjctNjMuNi0xNi45djMyLjJjMTcuNCAyLjEgMzQuNCA2LjcgNTAuNiAxMy45bDE2LjEgNy4yYzQ5LjIgMjEuOSAxMDUgMjMuOCAxNTUuNiA1LjRMNDQ4IDEzNi4zdjYybC00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTQwLjItMTcuOS04NS0yMi41LTEyOC4xLTEzLjNMNjQgMjAzLjF2MzIuN2w3MC4yLTE1LjFjMzYuNC03LjggNzQuMy0zLjkgMTA4LjQgMTEuM2wxNi4xIDcuMmM0OS4yIDIxLjkgMTA1IDIzLjggMTU1LjYgNS40TDQ0OCAyMzIuM3Y2MmwtNDQuNyAxNi4yYy00Mi44IDE1LjYtOTAgMTMuOS0xMzEuNi00LjZsLTE2LjEtNy4yYy00MC4yLTE3LjktODUtMjIuNS0xMjguMS0xMy4zTDY0IDI5OS4xdjMyLjdsNzAuMi0xNS4xYzM2LjQtNy44IDc0LjMtMy45IDEwOC40IDExLjNsMTYuMSA3LjJjNDkuMiAyMS45IDEwNSAyMy44IDE1NS42IDUuNEw0NDggMzI4LjN2MzMuNWMwIDEzLjMtOC4zIDI1LjMtMjAuOCAzMGwtMzQuNyAxM2MtNDYuMiAxNy4zLTk3LjYgMTQuNi0xNDEuNy03LjRjLTM3LjktMTktODEuMy0yMy43LTEyMi41LTEzLjRMNjQgNDAwdjgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQxNiAzNDUuNSAzMTIuOCAyNDkuNSAyMTYuOCAxNTMuNSAxMjAuOCA2NCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6bTgwIDk2QTE2IDE2IDAgMSAwIDgwIDk2YTE2IDE2IDAgMSAwIDMyIDB6bTMyIDBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tMzIgNDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzIgMGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJdXG59O1xudmFyIGZhTGFwdG9wRmlsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXB0b3AtZmlsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUxZFwiLCBcIk0xMjggMEM5Mi43IDAgNjQgMjguNyA2NCA2NFYyODhIMTkuMkM4LjYgMjg4IDAgMjk2LjYgMCAzMDcuMkMwIDM0OS42IDM0LjQgMzg0IDc2LjggMzg0SDMyMFYyODhIMTI4VjY0SDQ0OFY5Nmg2NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEgxMjh6TTUxMiAxMjhINDAwYy0yNi41IDAtNDggMjEuNS00OCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI1Nkg1NDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjEyOHptMzIgMHY5Nmg5NmwtOTYtOTZ6XCJdXG59O1xudmFyIGZhVHR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3R0eScsXG4gIGljb246IFs1MTIsIDUxMiwgW1widGVsZXR5cGVcIl0sIFwiZjFlNFwiLCBcIk0zOC4zIDI0MS4zTDE1LjEgMjAwLjZjLTkuMi0xNi4yLTguNC0zNi41IDQuNS01MEM2MS40IDEwNi44IDE0NC43IDQ4IDI1NiA0OHMxOTQuNiA1OC44IDIzNi40IDEwMi42YzEyLjkgMTMuNSAxMy43IDMzLjggNC41IDUwbC0yMy4xIDQwLjdjLTcuNSAxMy4yLTIzLjMgMTkuMy0zNy44IDE0LjZsLTgxLjEtMjYuNmMtMTMuMS00LjMtMjItMTYuNi0yMi0zMC40VjE0NGMtNDkuNi0xOC4xLTEwNC0xOC4xLTE1My42IDB2NTQuOGMwIDEzLjgtOC45IDI2LjEtMjIgMzAuNEw3Ni4xIDI1NS44Yy0xNC41IDQuNy0zMC4zLTEuNC0zNy44LTE0LjZ6TTMyIDMzNmMwLTguOCA3LjItMTYgMTYtMTZIODBjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0OGMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNnptMCA5NmMwLTguOCA3LjItMTYgMTYtMTZIODBjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg0OGMtOC44IDAtMTYtNy4yLTE2LTE2VjQzMnpNMTQ0IDMyMGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE0NGMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMzNnptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMzM2Yy04LjggMC0xNi03LjItMTYtMTZWMzM2YzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZINDMyYy04LjggMC0xNi03LjItMTYtMTZWMzM2em0xNiA4MGgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjQzMmMwLTguOCA3LjItMTYgMTYtMTZ6TTEyOCA0MzJjMC04LjggNy4yLTE2IDE2LTE2SDM2OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE0NGMtOC44IDAtMTYtNy4yLTE2LTE2VjQzMnpcIl1cbn07XG52YXIgZmFUZWxldHlwZSA9IGZhVHR5O1xudmFyIGZhRGlhZ3JhbU5leHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGlhZ3JhbS1uZXh0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNDc2XCIsIFwiTTUxMiAxNjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMjgwdjY0aDQ2LjFjMjEuNCAwIDMyLjEgMjUuOSAxNyA0MUwyNzMgMzk5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxNjkgMzI5Yy0xNS4xLTE1LjEtNC40LTQxIDE3LTQxSDIzMlYyMjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NHpNNDQ4IDQxNlYzNTJIMzY1LjNsLjQtLjRjMTguNC0xOC40IDIwLjQtNDMuNyAxMS02My42bDcxLjMgMGMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjM1MmMwLTM1LjMgMjguNy02NCA2NC02NGw3MS4zIDBjLTkuNCAxOS45LTcuNCA0NS4yIDExIDYzLjZsLjQgLjRINjR2NjRIMjEwLjdsNS43IDUuN2MyMS45IDIxLjkgNTcuMyAyMS45IDc5LjIgMGw1LjctNS43SDQ0OHpcIl1cbn07XG52YXIgZmFQZXJzb25SaWZsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tcmlmbGUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NGVcIiwgXCJNMjY1LjIgMTkyYzI1LjQgMCA0OS44IDcuMSA3MC44IDE5LjlWNTEySDE0NFYzMzcuN0w5MC40IDQyOC4zYy0xMS4yIDE5LTM1LjggMjUuMy01NC44IDE0LjFzLTI1LjMtMzUuOC0xNC4xLTU0LjhMOTcuNyAyNTguOGMyNC41LTQxLjQgNjktNjYuOCAxMTcuMS02Ni44aDUwLjR6TTE2MCA4MGE4MCA4MCAwIDEgMSAxNjAgMEE4MCA4MCAwIDEgMSAxNjAgODB6TTQ0OCAwYzguOCAwIDE2IDcuMiAxNiAxNlYxMzIuM2M5LjYgNS41IDE2IDE1LjkgMTYgMjcuN1YyNjkuM2wxNi01LjNWMjA4YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2ODQuNWMwIDYuOS00LjQgMTMtMTAuOSAxNS4yTDQ4MCAzMjUuM1YzNTJoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNkg0ODRsMjMgOTIuMWMyLjUgMTAuMS01LjEgMTkuOS0xNS41IDE5LjlINDMyYy04LjggMC0xNi03LjItMTYtMTZWNDAwSDQwMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyVjE2MGMwLTExLjggNi40LTIyLjIgMTYtMjcuN1YzMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgxNiAxNnpcIl1cbn07XG52YXIgZmFIb3VzZU1lZGljYWxDaXJjbGVFeGNsYW1hdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1tZWRpY2FsLWNpcmNsZS1leGNsYW1hdGlvbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUxMlwiLCBcIk0zMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0SDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0SDMyMFYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDIwOGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFDbG9zZWRDYXB0aW9uaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3NlZC1jYXB0aW9uaW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjBhXCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJINTEyYzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6TTIwMCAyMDhjMTQuMiAwIDI3IDYuMSAzNS44IDE2YzguOCA5LjkgMjQgMTAuNyAzMy45IDEuOXMxMC43LTI0IDEuOS0zMy45Yy0xNy41LTE5LjYtNDMuMS0zMi03MS41LTMyYy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2YzI4LjQgMCA1NC0xMi40IDcxLjUtMzJjOC44LTkuOSA4LTI1LTEuOS0zMy45cy0yNS04LTMzLjkgMS45Yy04LjggOS45LTIxLjYgMTYtMzUuOCAxNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OHptMTQ0IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzE0LjIgMCAyNyA2LjEgMzUuOCAxNmM4LjggOS45IDI0IDEwLjcgMzMuOSAxLjlzMTAuNy0yNCAxLjktMzMuOWMtMTcuNS0xOS42LTQzLjEtMzItNzEuNS0zMmMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyOC40IDAgNTQtMTIuNCA3MS41LTMyYzguOC05LjkgOC0yNS0xLjktMzMuOXMtMjUtOC0zMy45IDEuOWMtOC44IDkuOS0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4elwiXVxufTtcbnZhciBmYVBlcnNvbkhpa2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24taGlraW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJoaWtpbmdcIl0sIFwiZjZlY1wiLCBcIk0xOTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNTEuMyAxODIuN0wyMjQuMiAzMDdsNDkuNyA0OS43YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzOTcuM2wtNzMuOS03My45Yy0xNS44LTE1LjgtMjIuMi0zOC42LTE2LjktNjAuM2wyMC40LTg0YzguMy0zNC4xIDQyLjctNTQuOSA3Ni43LTQ2LjRjMTkgNC44IDM1LjYgMTYuNCA0Ni40IDMyLjdMMzA1LjEgMjA4SDMzNlYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY1NS44YzAgLjEgMCAuMiAwIC4yczAgLjIgMCAuMlY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjcySDI5Ni42Yy0xNiAwLTMxLTgtMzkuOS0yMS40bC0xMy4zLTIwek04MS4xIDQ3MS45TDExNy4zIDMzNGMzIDQuMiA2LjQgOC4yIDEwLjEgMTEuOWw0MS45IDQxLjlMMTQyLjkgNDg4LjFjLTQuNSAxNy4xLTIyIDI3LjMtMzkuMSAyMi44cy0yNy4zLTIyLTIyLjgtMzkuMXptNTUuNS0zNDZMMTAxLjQgMjY2LjVjLTMgMTIuMS0xNC45IDE5LjktMjcuMiAxNy45bC00Ny45LThjLTE0LTIuMy0yMi45LTE2LjMtMTkuMi0zMEwzMS45IDE1NWM5LjUtMzQuOCA0MS4xLTU5IDc3LjItNTloNC4yYzE1LjYgMCAyNy4xIDE0LjcgMjMuMyAyOS44elwiXVxufTtcbnZhciBmYUhpa2luZyA9IGZhUGVyc29uSGlraW5nO1xudmFyIGZhVmVudXNEb3VibGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmVudXMtZG91YmxlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbOTg5MF0sIFwiZjIyNlwiLCBcIk0xOTIgMjg4YTExMiAxMTIgMCAxIDAgMC0yMjQgMTEyIDExMiAwIDEgMCAwIDIyNHpNMzY4IDE3NmMwIDg2LjMtNjIuMSAxNTguMS0xNDQgMTczLjFWMzg0aDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDIyNHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDhIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDMyVjM0OS4xQzc4LjEgMzM0LjEgMTYgMjYyLjMgMTYgMTc2QzE2IDc4LjggOTQuOCAwIDE5MiAwczE3NiA3OC44IDE3NiAxNzZ6TTM0NCAzMThjMTQuNi0xNS42IDI2LjgtMzMuNCAzNi01M2MxOC44IDE0LjQgNDIuNCAyMyA2OCAyM2M2MS45IDAgMTEyLTUwLjEgMTEyLTExMnMtNTAuMS0xMTItMTEyLTExMmMtMjUuNiAwLTQ5LjEgOC42LTY4IDIzYy05LjMtMTkuNS0yMS41LTM3LjQtMzYtNTNDMzczLjEgMTIuNiA0MDkuMSAwIDQ0OCAwYzk3LjIgMCAxNzYgNzguOCAxNzYgMTc2YzAgODYuMy02Mi4xIDE1OC4xLTE0NCAxNzMuMVYzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDgwdjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OEgzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoMzJWMzQ5LjFjLTI2LjYtNC45LTUxLjEtMTUuNy03Mi0zMS4xelwiXVxufTtcbnZhciBmYUltYWdlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbWFnZXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYzMDJcIiwgXCJNMTYwIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NFYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDE2MHpNMzk2IDEzOC43bDk2IDE0NGM0LjkgNy40IDUuNCAxNi44IDEuMiAyNC42UzQ4MC45IDMyMCA0NzIgMzIwSDMyOCAyODAgMjAwYy05LjIgMC0xNy42LTUuMy0yMS42LTEzLjZzLTIuOS0xOC4yIDIuOS0yNS40bDY0LTgwYzQuNi01LjcgMTEuNC05IDE4LjctOXMxNC4yIDMuMyAxOC43IDlsMTcuMyAyMS42IDU2LTg0QzM2MC41IDEzMiAzNjggMTI4IDM3NiAxMjhzMTUuNSA0IDIwIDEwLjd6TTE5MiAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBWMzQ0YzAgNzUuMSA2MC45IDEzNiAxMzYgMTM2SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxMzZjLTQ4LjYgMC04OC0zOS40LTg4LTg4VjEyMHpcIl1cbn07XG52YXIgZmFDYWxjdWxhdG9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGN1bGF0b3InLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjg0MjVdLCBcImYxZWNcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNOTYgNjRIMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMzIgMTYwYTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6TTk2IDM1MmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTY0IDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE5MiAyNTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem02NC02NGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6TTI4OCA0NDhhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0elwiXVxufTtcbnZhciBmYVBlb3BsZVB1bGxpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVvcGxlLXB1bGxpbmcnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1MzVcIiwgXCJNODAgOTZBNDggNDggMCAxIDAgODAgMGE0OCA0OCAwIDEgMCAwIDk2ek02NCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0VjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmM5LjggMCAxOC41LTQuNCAyNC40LTExLjJMODAuNCA0ODUuM2MyLjkgMTcuNCAxOS40IDI5LjIgMzYuOCAyNi4zczI5LjItMTkuNCAyNi4zLTM2LjhMMTIzLjEgMzUyaDE1LjdsMzAgMTM0LjljMy44IDE3LjMgMjAuOSAyOC4xIDM4LjIgMjQuM3MyOC4xLTIwLjkgMjQuMy0zOC4ybC01Ny4zLTI1OCAxMTYuMyA1My44Yy41IC4zIDEuMSAuNSAxLjYgLjdjOC42IDMuNiAxOCAzLjEgMjUuOS0uN2MzLjQtMS42IDYuNi0zLjkgOS4zLTYuN2MzLjEtMy4yIDUuNS03IDcuMS0xMS40Yy4xLS4zIC4yLS43IC4zLTFsMi41LTcuNWM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUw1MzcgMjMyLjdsLTE1LjMtMzYuOEM1MDQuNSAxNTQuOCA0NjQuMyAxMjggNDE5LjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTI0LjQgMTAuOS00NC42IDI5LTU4LjEgNTEuNkwxNTcuMyAxMzYuOUMxNDQuNyAxMzEgMTMwLjkgMTI4IDExNyAxMjhINjR6TTQ2NCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTM0OS43IDMzNS42bC0yNSA2Mi40LTU5LjQgNTkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzNzIuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42elwiXVxufTtcbnZhciBmYU4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbicsXG4gIGljb246IFszODQsIDUxMiwgWzExMF0sIFwiNGVcIiwgXCJNMjEuMSAzMy45YzEyLjctNC42IDI2LjktLjcgMzUuNSA5LjZMMzIwIDM1OS42VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNDQ4YzAgMTMuNS04LjQgMjUuNS0yMS4xIDMwLjFzLTI2LjkgLjctMzUuNS05LjZMNjQgMTUyLjRWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNTAuNSA4LjQgMzguNSAyMS4xIDMzLjl6XCJdXG59O1xudmFyIGZhQ2FibGVDYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FibGUtY2FyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NjczLCA1NzU1MSwgXCJ0cmFtXCJdLCBcImY3ZGFcIiwgXCJNMjg4IDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNjAgNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIgMjg4YzAtMzUuMyAyOC43LTY0IDY0LTY0SDIzMlYxNTcuNWwtMjAzLjEgNDJjLTEzIDIuNy0yNS43LTUuNy0yOC40LTE4LjZzNS43LTI1LjcgMTguNi0yOC40bDIzMi00OCAyMzItNDhjMTMtMi43IDI1LjcgNS43IDI4LjQgMTguNnMtNS43IDI1LjctMTguNiAyOC40TDI4MCAxNDcuNVYyMjRINDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg5NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg4em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDk2em0xMTIgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2SDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2VjMwNGMwLTguOC03LjItMTYtMTYtMTZIMzUyelwiXVxufTtcbnZhciBmYVRyYW0gPSBmYUNhYmxlQ2FyO1xudmFyIGZhQ2xvdWRSYWluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLXJhaW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc3ODMsIDk5MjZdLCBcImY3M2RcIiwgXCJNOTYgMzIwYy01MyAwLTk2LTQzLTk2LTk2YzAtNDIuNSAyNy42LTc4LjYgNjUuOS05MS4yQzY0LjcgMTI2LjEgNjQgMTE5LjEgNjQgMTEyQzY0IDUwLjEgMTE0LjEgMCAxNzYgMGM0My4xIDAgODAuNSAyNC4zIDk5LjIgNjBjMTQuNy0xNy4xIDM2LjUtMjggNjAuOC0yOGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuNS0uNiAxMC44LTEuNiAxNmMuNSAwIDEuMSAwIDEuNiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2SDk2em0tNi44IDUyYzEuMy0yLjUgMy45LTQgNi44LTRzNS40IDEuNSA2LjggNGwzNS4xIDY0LjZjNC4xIDcuNSA2LjIgMTUuOCA2LjIgMjQuM3YzYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4di0zYzAtOC41IDIuMS0xNi45IDYuMi0yNC4zTDg5LjIgMzcyem0xNjAgMGMxLjMtMi41IDMuOS00IDYuOC00czUuNCAxLjUgNi44IDRsMzUuMSA2NC42YzQuMSA3LjUgNi4yIDE1LjggNi4yIDI0LjN2M2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OHYtM2MwLTguNSAyLjEtMTYuOSA2LjItMjQuM0wyNDkuMiAzNzJ6bTEyNC45IDY0LjZMNDA5LjIgMzcyYzEuMy0yLjUgMy45LTQgNi44LTRzNS40IDEuNSA2LjggNGwzNS4xIDY0LjZjNC4xIDcuNSA2LjIgMTUuOCA2LjIgMjQuM3YzYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4di0zYzAtOC41IDIuMS0xNi45IDYuMi0yNC4zelwiXVxufTtcbnZhciBmYUJ1aWxkaW5nQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGQ0XCIsIFwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NlY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY4MGg5NmMxNS4xIDAgMjguNS02LjkgMzcuMy0xNy44QzM0MC40IDQ2Mi4yIDMyMCA0MTcuNSAzMjAgMzY4YzAtNTQuNyAyNC45LTEwMy41IDY0LTEzNS44VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4ek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDB6bTExMi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHpNODAgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjExMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjExMnpNMjcyIDk2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNTE4LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQ5NiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQ3My40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDk2IDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJdXG59O1xudmFyIGZhU2hpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGlwJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4Njc0XSwgXCJmMjFhXCIsIFwiTTE5MiAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkgzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDhWMjQwbDQ0LjQgMTQuOGMyMy4xIDcuNyAyOS41IDM3LjUgMTEuNSA1My45bC0xMDEgOTIuNmMtMTYuMiA5LjQtMzQuNyAxNS4xLTUwLjkgMTUuMWMtMTkuNiAwLTQwLjgtNy43LTU5LjItMjAuM2MtMjIuMS0xNS41LTUxLjYtMTUuNS03My43IDBjLTE3LjEgMTEuOC0zOCAyMC4zLTU5LjIgMjAuM2MtMTYuMiAwLTM0LjctNS43LTUwLjktMTUuMWwtMTAxLTkyLjZjLTE4LTE2LjUtMTEuNi00Ni4yIDExLjUtNTMuOUw5NiAyNDBWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjMyek0xNjAgMjE4LjdsMTA3LjgtMzUuOWMxMy4xLTQuNCAyNy4zLTQuNCA0MC41IDBMNDE2IDIxOC43VjEyOEgxNjB2OTAuN3pNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xbDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDUwMS43IDQxNyA1MTIgMzg0IDUxMmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdsMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwiXVxufTtcbnZhciBmYUFycm93c0Rvd25Ub0xpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLWRvd24tdG8tbGluZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRiOFwiLCBcIk01NDQgNDE2TDMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw1MTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMnptMjIuNi0xMzcuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEw0ODAgMjc0LjcgNDgwIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjEwLjctNDEuNC00MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NnptLTMyMC00NS4zYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMEwxNjAgMjc0LjcgMTYwIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjEwLjdMNTQuNiAyMzMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsOTYtOTZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjN6XCJdXG59O1xudmFyIGZhRG93bmxvYWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG93bmxvYWQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMTlcIiwgXCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI3NC43bC03My40LTczLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDEyOCAxMjhjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyODggMjc0LjdWMzJ6TTY0IDM1MmMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjQxNmMwLTM1LjMtMjguNy02NC02NC02NEgzNDYuNWwtNDUuMyA0NS4zYy0yNSAyNS02NS41IDI1LTkwLjUgMEwxNjUuNSAzNTJINjR6bTM2OCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJdXG59O1xudmFyIGZhRmFjZUdyaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTEyLCBcImdyaW5cIl0sIFwiZjU4MFwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFHcmluID0gZmFGYWNlR3JpbjtcbnZhciBmYURlbGV0ZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGVsZXRlLWxlZnQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFs5MDAzLCBcImJhY2tzcGFjZVwiXSwgXCJmNTVhXCIsIFwiTTU3NiAxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjA1LjNjLTE3IDAtMzMuMyA2LjctNDUuMyAxOC43TDkuNCAyMzMuNGMtNiA2LTkuNCAxNC4xLTkuNCAyMi42czMuNCAxNi42IDkuNCAyMi42TDE2MCA0MjkuM2MxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjh6TTI3MSAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJdXG59O1xudmFyIGZhQmFja3NwYWNlID0gZmFEZWxldGVMZWZ0O1xudmFyIGZhRXllRHJvcHBlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleWUtZHJvcHBlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZXllLWRyb3BwZXItZW1wdHlcIiwgXCJleWVkcm9wcGVyXCJdLCBcImYxZmJcIiwgXCJNMzQxLjYgMjkuMkwyNDAuMSAxMzAuOGwtOS40LTkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05LjQtOS40TDQ4Mi44IDE3MC40YzM5LTM5IDM5LTEwMi4yIDAtMTQxLjFzLTEwMi4yLTM5LTE0MS4xIDB6TTU1LjQgMzIzLjNjLTE1IDE1LTIzLjQgMzUuNC0yMy40IDU2LjZ2NDIuNEw1LjQgNDYyLjJjLTguNSAxMi43LTYuOCAyOS42IDQgNDAuNHMyNy43IDEyLjUgNDAuNCA0TDg5LjcgNDgwaDQyLjRjMjEuMiAwIDQxLjYtOC40IDU2LjYtMjMuNEwzMDkuNCAzMzUuOWwtNDUuMy00NS4zTDE0My40IDQxMS4zYy0zIDMtNy4xIDQuNy0xMS4zIDQuN0g5NlYzNzkuOWMwLTQuMiAxLjctOC4zIDQuNy0xMS4zTDIyMS40IDI0Ny45bC00NS4zLTQ1LjNMNTUuNCAzMjMuM3pcIl1cbn07XG52YXIgZmFFeWVEcm9wcGVyRW1wdHkgPSBmYUV5ZURyb3BwZXI7XG52YXIgZmFFeWVkcm9wcGVyID0gZmFFeWVEcm9wcGVyO1xudmFyIGZhRmlsZUNpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNWEwXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0djM4LjZDMzEwLjEgMjE5LjUgMjU2IDI4Ny40IDI1NiAzNjhjMCA1OS4xIDI5LjEgMTExLjMgNzMuNyAxNDMuM2MtMy4yIC41LTYuNCAuNy05LjcgLjdINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0em0zODQgNjRIMjU2VjBMMzg0IDEyOHpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0MTYgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIl1cbn07XG52YXIgZmFGb3J3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvcndhcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5MTkzXSwgXCJmMDRlXCIsIFwiTTUyLjUgNDQwLjZjLTkuNSA3LjktMjIuOCA5LjctMzQuMSA0LjRTMCA0MjguNCAwIDQxNlY5NkMwIDgzLjYgNy4yIDcyLjMgMTguNCA2N3MyNC41LTMuNiAzNC4xIDQuNEwyMjQgMjE0LjNWMjU2djQxLjdMNTIuNSA0NDAuNnpNMjU2IDM1MlYyNTYgMTI4IDk2YzAtMTIuNCA3LjItMjMuNyAxOC40LTI5czI0LjUtMy42IDM0LjEgNC40bDE5MiAxNjBjNy4zIDYuMSAxMS41IDE1LjEgMTEuNSAyNC42cy00LjIgMTguNS0xMS41IDI0LjZsLTE5MiAxNjBjLTkuNSA3LjktMjIuOCA5LjctMzQuMSA0LjRzLTE4LjQtMTYuNi0xOC40LTI5VjM1MnpcIl1cbn07XG52YXIgZmFNb2JpbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9iaWxlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI4MjQxLCBcIm1vYmlsZS1hbmRyb2lkXCIsIFwibW9iaWxlLXBob25lXCJdLCBcImYzY2VcIiwgXCJNODAgMEM0NC43IDAgMTYgMjguNyAxNiA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzA0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDgwem04MCA0MzJoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTYwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYU1vYmlsZUFuZHJvaWQgPSBmYU1vYmlsZTtcbnZhciBmYU1vYmlsZVBob25lID0gZmFNb2JpbGU7XG52YXIgZmFGYWNlTWVoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtbWVoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTI4LCBcIm1laFwiXSwgXCJmMTFhXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMTYwIDMzNkgzNTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTYwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYU1laCA9IGZhRmFjZU1laDtcbnZhciBmYUFsaWduQ2VudGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsaWduLWNlbnRlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzN1wiLCBcIk0zNTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDMyMGMxNy43IDAgMzItMTQuMyAzMi0zMnptOTYgMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnpNMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzUyIDMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMkgxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyelwiXVxufTtcbnZhciBmYUJvb2tTa3VsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLXNrdWxsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJib29rLWRlYWRcIl0sIFwiZjZiN1wiLCBcIk0wIDk2QzAgNDMgNDMgMCA5NiAwSDM4NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMlYzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJ2NjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0IDk2Yy01MyAwLTk2LTQzLTk2LTk2Vjk2ek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzUyVjM4NEg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTMyMCAxMTJjMC0zNS4zLTM1LjgtNjQtODAtNjRzLTgwIDI4LjctODAgNjRjMCAyMC45IDEyLjYgMzkuNSAzMiA1MS4yVjE3NmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2My4yYzE5LjQtMTEuNyAzMi0zMC4zIDMyLTUxLjJ6TTIwOCA5NmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4IDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6TTEzNC4zIDIwOS4zYy04LjEtMy41LTE3LjUgLjMtMjEgOC40cy4zIDE3LjUgOC40IDIxTDE5OS40IDI3MmwtNzcuNyAzMy4zYy04LjEgMy41LTExLjkgMTIuOS04LjQgMjFzMTIuOSAxMS45IDIxIDguNEwyNDAgMjg5LjRsMTA1LjcgNDUuM2M4LjEgMy41IDE3LjUtLjMgMjEtOC40cy0uMy0xNy41LTguNC0yMUwyODAuNiAyNzJsNzcuNy0zMy4zYzguMS0zLjUgMTEuOS0xMi45IDguNC0yMXMtMTIuOS0xMS45LTIxLTguNEwyNDAgMjU0LjYgMTM0LjMgMjA5LjN6XCJdXG59O1xudmFyIGZhQm9va0RlYWQgPSBmYUJvb2tTa3VsbDtcbnZhciBmYUlkQ2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpZC1jYXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbNjIxNDcsIFwiZHJpdmVycy1saWNlbnNlXCJdLCBcImYyYzJcIiwgXCJNMCA5Nmw1NzYgMGMwLTM1LjMtMjguNy02NC02NC02NEg2NEMyOC43IDMyIDAgNjAuNyAwIDk2em0wIDMyVjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4SDB6TTY0IDQwNS4zYzAtMjkuNSAyMy45LTUzLjMgNTMuMy01My4zSDIzNC43YzI5LjUgMCA1My4zIDIzLjkgNTMuMyA1My4zYzAgNS45LTQuOCAxMC43LTEwLjcgMTAuN0g3NC43Yy01LjkgMC0xMC43LTQuOC0xMC43LTEwLjd6TTE3NiAxOTJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bTE3NiAxNmMwLTguOCA3LjItMTYgMTYtMTZINDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNkg0OTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZ6bTAgNjRjMC04LjggNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzNjhjLTguOCAwLTE2LTcuMi0xNi0xNnpcIl1cbn07XG52YXIgZmFEcml2ZXJzTGljZW5zZSA9IGZhSWRDYXJkO1xudmFyIGZhT3V0ZGVudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdvdXRkZW50JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJkZWRlbnRcIl0sIFwiZjAzYlwiLCBcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMkMxNC4zIDk2IDAgODEuNyAwIDY0ek0xOTIgMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0zMiA5Nkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyek0wIDQ0OGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek0uMiAyNjguNmMtOC4yLTYuNC04LjItMTguOSAwLTI1LjNsMTAxLjktNzkuM2MxMC41LTguMiAyNS44LS43IDI1LjggMTIuNlYzMzUuM2MwIDEzLjMtMTUuMyAyMC44LTI1LjggMTIuNkwuMiAyNjguNnpcIl1cbn07XG52YXIgZmFEZWRlbnQgPSBmYU91dGRlbnQ7XG52YXIgZmFIZWFydENpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYXJ0LWNpcmNsZS1leGNsYW1hdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRmZVwiLCBcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNnYtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjF2NS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZ2ODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpcIl1cbn07XG52YXIgZmFIb3VzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZScsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyNzk2OCwgNjM0OTgsIDYzNTAwLCBcImhvbWVcIiwgXCJob21lLWFsdFwiLCBcImhvbWUtbGctYWx0XCJdLCBcImYwMTVcIiwgXCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFoLTMybC43IDE2MC4yYzAgMi43LS4yIDUuNC0uNSA4LjFWNDcyYzAgMjIuMS0xNy45IDQwLTQwIDQwSDQ1NmMtMS4xIDAtMi4yIDAtMy4zLS4xYy0xLjQgLjEtMi44IC4xLTQuMiAuMUg0MTYgMzkyYy0yMi4xIDAtNDAtMTcuOS00MC00MFY0NDggMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjQgMjRjMCAyMi4xLTE3LjkgNDAtNDAgNDBIMTYwIDEyOC4xYy0xLjUgMC0zLS4xLTQuNS0uMmMtMS4yIC4xLTIuNCAuMi0zLjYgLjJIMTA0Yy0yMi4xIDAtNDAtMTcuOS00MC00MFYzNjBjMC0uOSAwLTEuOSAuMS0yLjhWMjg3LjZIMzJjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDU2NC44IDIzMS41YzggNyAxMiAxNSAxMSAyNHpcIl1cbn07XG52YXIgZmFIb21lID0gZmFIb3VzZTtcbnZhciBmYUhvbWVBbHQgPSBmYUhvdXNlO1xudmFyIGZhSG9tZUxnQWx0ID0gZmFIb3VzZTtcbnZhciBmYUNhbGVuZGFyV2VlayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci13ZWVrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzg0XCIsIFwiTTEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjY0SDI4OFYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjY0aDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djQ4SDBWMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDk2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDE5Mkg0NDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTJ6bTgwIDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2SDM2OGM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkg4MHpcIl1cbn07XG52YXIgZmFMYXB0b3BNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhcHRvcC1tZWRpY2FsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmODEyXCIsIFwiTTY0IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzNTJINTEyVjk2SDEyOFYzNTJINjRWOTZ6TTAgNDAzLjJDMCAzOTIuNiA4LjYgMzg0IDE5LjIgMzg0SDYyMC44YzEwLjYgMCAxOS4yIDguNiAxOS4yIDE5LjJjMCA0Mi40LTM0LjQgNzYuOC03Ni44IDc2LjhINzYuOEMzNC40IDQ4MCAwIDQ0NS42IDAgNDAzLjJ6TTI4OCAxNjBjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDM1MnY0OGMwIDguOC03LjIgMTYtMTYgMTZIMzA0Yy04LjggMC0xNi03LjItMTYtMTZWMjcySDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjIyNGMwLTguOCA3LjItMTYgMTYtMTZoNDhWMTYwelwiXVxufTtcbnZhciBmYUIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYicsXG4gIGljb246IFszMjAsIDUxMiwgWzk4XSwgXCI0MlwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjI1NiA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMTkyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNDYuNS0yNC44LTg3LjMtNjItMTA5LjdjMTguNy0yMi4zIDMwLTUxIDMwLTgyLjNjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhINjR6bTk2IDE5Mkg2NFY5Nmg5NmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NHpNNjQgMjg4aDk2IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0SDY0VjI4OHpcIl1cbn07XG52YXIgZmFGaWxlTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLW1lZGljYWwnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY0NzdcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYwSDY0ek0yNTYgMFYxMjhIMzg0TDI1NiAwek0xNjAgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyMjR2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2VjM1MkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNlYzMDRjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjI0MHpcIl1cbn07XG52YXIgZmFEaWNlT25lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpY2Utb25lJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbOTg1Nl0sIFwiZjUyNVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTIyNCAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYUtpd2lCaXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2tpd2ktYmlyZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjUzNVwiLCBcIk0yOTEuMiAzODguNGMzMS4yLTE4LjggNjQuNy0zNi40IDEwMS4xLTM2LjRINDQ4YzQuNiAwIDkuMS0uMiAxMy42LS43bDg1LjMgMTIxLjljNCA1LjcgMTEuMyA4LjIgMTcuOSA2LjFzMTEuMi04LjMgMTEuMi0xNS4zVjIyNGMwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEgzOTIuM2MtMzYuNCAwLTY5LjktMTcuNi0xMDEuMS0zNi40QzI2Mi4zIDQyLjEgMjI4LjMgMzIgMTkyIDMyQzg2IDMyIDAgMTE4IDAgMjI0YzAgNzEuMSAzOC42IDEzMy4xIDk2IDE2Ni4zVjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQxMGMxNS4zIDMuOSAzMS40IDYgNDggNmM1LjQgMCAxMC43LS4yIDE2LS43VjQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjQwNS4xYzEyLjQtNC40IDI0LjItMTAgMzUuMi0xNi43ek00NDggMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIl1cbn07XG52YXIgZmFBcnJvd1JpZ2h0QXJyb3dMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXJpZ2h0LWFycm93LWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs4NjQ0LCBcImV4Y2hhbmdlXCJdLCBcImYwZWNcIiwgXCJNNDM4LjYgMTUwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wzMzguNyA5NiAzMiA5NkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhzMTQuMyAzMiAzMiAzMmwzMDYuNyAwLTQxLjQgNDEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5Ni05NnptLTMzMy4zIDM1MmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDQxNiA0MTYgNDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMDYuNyAwIDQxLjQtNDEuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDk2IDk2elwiXVxufTtcbnZhciBmYUV4Y2hhbmdlID0gZmFBcnJvd1JpZ2h0QXJyb3dMZWZ0O1xudmFyIGZhUm90YXRlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm90YXRlLXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJyZWRvLWFsdFwiLCBcInJvdGF0ZS1mb3J3YXJkXCJdLCBcImYyZjlcIiwgXCJNNDYzLjUgMjI0SDQ3MmMxMy4zIDAgMjQtMTAuNyAyNC0yNFY3MmMwLTkuNy01LjgtMTguNS0xNC44LTIyLjJzLTE5LjMtMS43LTI2LjIgNS4yTDQxMy40IDk2LjZjLTg3LjYtODYuNS0yMjguNy04Ni4yLTMxNS44IDFjLTg3LjUgODcuNS04Ny41IDIyOS4zIDAgMzE2LjhzMjI5LjMgODcuNSAzMTYuOCAwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwcy02Mi41LTE2My44IDAtMjI2LjNjNjIuMi02Mi4yIDE2Mi43LTYyLjUgMjI1LjMtMUwzMjcgMTgzYy02LjkgNi45LTguOSAxNy4yLTUuMiAyNi4yczEyLjUgMTQuOCAyMi4yIDE0LjhINDYzLjV6XCJdXG59O1xudmFyIGZhUmVkb0FsdCA9IGZhUm90YXRlUmlnaHQ7XG52YXIgZmFSb3RhdGVGb3J3YXJkID0gZmFSb3RhdGVSaWdodDtcbnZhciBmYVV0ZW5zaWxzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3V0ZW5zaWxzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3ODYwLCA2MTY4NSwgXCJjdXRsZXJ5XCJdLCBcImYyZTdcIiwgXCJNNDE2IDBDNDAwIDAgMjg4IDMyIDI4OCAxNzZWMjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0aDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM1MiAyNDAgMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTY0IDE2QzY0IDcuOCA1Ny45IDEgNDkuNyAuMVMzNC4yIDQuNiAzMi40IDEyLjVMMi4xIDE0OC44Qy43IDE1NS4xIDAgMTYxLjUgMCAxNjcuOWMwIDQ1LjkgMzUuMSA4My42IDgwIDg3LjdWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU1LjZjNDQuOS00LjEgODAtNDEuOCA4MC04Ny43YzAtNi40LS43LTEyLjgtMi4xLTE5LjFMMTkxLjYgMTIuNWMtMS44LTgtOS4zLTEzLjMtMTcuNC0xMi40UzE2MCA3LjggMTYwIDE2VjE1MC4yYzAgNS40LTQuNCA5LjgtOS44IDkuOGMtNS4xIDAtOS4zLTMuOS05LjgtOUwxMjcuOSAxNC42QzEyNy4yIDYuMyAxMjAuMyAwIDExMiAwcy0xNS4yIDYuMy0xNS45IDE0LjZMODMuNyAxNTFjLS41IDUuMS00LjcgOS05LjggOWMtNS40IDAtOS44LTQuNC05LjgtOS44VjE2em00OC4zIDE1MmwtLjMgMC0uMyAwIC4zLS43IC4zIC43elwiXVxufTtcbnZhciBmYUN1dGxlcnkgPSBmYVV0ZW5zaWxzO1xudmFyIGZhQXJyb3dVcFdpZGVTaG9ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cC13aWRlLXNob3J0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LWFtb3VudC11cFwiXSwgXCJmMTYxXCIsIFwiTTE1MS42IDQyLjRDMTQ1LjUgMzUuOCAxMzcgMzIgMTI4IDMycy0xNy41IDMuOC0yMy42IDEwLjRsLTg4IDk2Yy0xMS45IDEzLTExLjEgMzMuMyAyIDQ1LjJzMzMuMyAxMS4xIDQ1LjItMkw5NiAxNDYuM1Y0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNDYuM2wzMi40IDM1LjRjMTEuOSAxMyAzMi4yIDEzLjkgNDUuMiAyczEzLjktMzIuMiAyLTQ1LjJsLTg4LTk2ek0zMjAgNDgwaDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnptMC0xMjhoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0wLTEyOEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0wLTEyOEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYVNvcnRBbW91bnRVcCA9IGZhQXJyb3dVcFdpZGVTaG9ydDtcbnZhciBmYU1pbGxTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pbGwtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTFlZFwiLCBcIk0zMDIuMSA0Mi44YzUuOS0xNi42LTIuNy0zNS0xOS40LTQwLjlzLTM1IDIuNy00MC45IDE5LjRMMjA4IDExNi4xYy01LjcgNC0xMS4xIDguNS0xNiAxMy41QzE3MS43IDEwOC45IDE0My4zIDk2IDExMiA5NmMtMTkuNSAwLTM3LjggNS01My43IDEzLjdDNTIuNSAxMDEuNCA0Mi45IDk2IDMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOHY4MFY0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyMDhjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHY0Mi41TDgxLjkgNDY5LjJjLTUuOSAxNi42IDIuNyAzNSAxOS40IDQwLjlzMzUtMi43IDQwLjktMTkuNGwyMS40LTYwQzE2OC45IDQ0MSAxNzkuNiA0NDggMTkyIDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMlYyNjEuNWwzNS43LTEwMGMzLjktMSA4LjEtMS42IDEyLjMtMS42YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIwOGMwLTU4LjItNDQuMy0xMDYtMTAxLjEtMTExLjVsMTkuMi01My44elwiXVxufTtcbnZhciBmYUJvd2xSaWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvd2wtcmljZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTJlYlwiLCBcIk0xNzYgNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMjQgNDhoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek01NiAxNzZINzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTAgMjgzLjRDMCAyNjguMyAxMi4zIDI1NiAyNy40IDI1Nkg0ODQuNmMxNS4xIDAgMjcuNCAxMi4zIDI3LjQgMjcuNGMwIDcwLjUtNDQuNCAxMzAuNy0xMDYuNyAxNTQuMUw0MDMuNSA0NTJjLTIgMTYtMTUuNiAyOC0zMS44IDI4SDE0MC4yYy0xNi4xIDAtMjkuOC0xMi0zMS44LTI4bC0xLjgtMTQuNEM0NC40IDQxNC4xIDAgMzUzLjkgMCAyODMuNHpNMjI0IDIwMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyNDhjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tOTYgMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxNTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tMjQtOTZoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMTA0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0em0yMTYgOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMzQ0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptLTI0LTk2aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI5NmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMTIwIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDQ0MGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS0yNC05NmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgzOTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6TTI5NiAzMmgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJdXG59O1xudmFyIGZhU2t1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2t1bGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgxMjhdLCBcImY1NGNcIiwgXCJNNDE2IDM5OC45YzU4LjUtNDEuMSA5Ni0xMDQuMSA5Ni0xNzQuOUM1MTIgMTAwLjMgMzk3LjQgMCAyNTYgMFMwIDEwMC4zIDAgMjI0YzAgNzAuNyAzNy41IDEzMy44IDk2IDE3NC45YzAgLjQgMCAuNyAwIDEuMXY2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0OFY0NjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY0OGg2NFY0NjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY0OGg0OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0MDBjMC0uNCAwLS43IDAtMS4xek05NiAyNTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgOTYgMjU2em0yNTYtNjRhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6XCJdXG59O1xudmFyIGZhVG93ZXJCcm9hZGNhc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG93ZXItYnJvYWRjYXN0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJicm9hZGNhc3QtdG93ZXJcIl0sIFwiZjUxOVwiLCBcIk04MC4zIDQ0QzY5LjggNjkuOSA2NCA5OC4yIDY0IDEyOHM1LjggNTguMSAxNi4zIDg0YzYuNiAxNi40LTEuMyAzNS0xNy43IDQxLjdzLTM1LTEuMy00MS43LTE3LjdDNy40IDIwMi42IDAgMTY2LjEgMCAxMjhTNy40IDUzLjQgMjAuOSAyMEMyNy42IDMuNiA0Ni4yLTQuMyA2Mi42IDIuM1M4Ni45IDI3LjYgODAuMyA0NHpNNTU1LjEgMjBDNTY4LjYgNTMuNCA1NzYgODkuOSA1NzYgMTI4cy03LjQgNzQuNi0yMC45IDEwOGMtNi42IDE2LjQtMjUuMyAyNC4zLTQxLjcgMTcuN1M0ODkuMSAyMjguNCA0OTUuNyAyMTJjMTAuNS0yNS45IDE2LjMtNTQuMiAxNi4zLTg0cy01LjgtNTguMS0xNi4zLTg0QzQ4OS4xIDI3LjYgNDk3IDkgNTEzLjQgMi4zczM1IDEuMyA0MS43IDE3Ljd6TTM1MiAxMjhjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxODMuNGMtMTkuMS0xMS4xLTMyLTMxLjctMzItNTUuNGMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0ek0xNzAuNiA3Ni44QzE2My44IDkyLjQgMTYwIDEwOS43IDE2MCAxMjhzMy44IDM1LjYgMTAuNiA1MS4yYzcuMSAxNi4yLS4zIDM1LjEtMTYuNSA0Mi4xcy0zNS4xLS4zLTQyLjEtMTYuNWMtMTAuMy0yMy42LTE2LTQ5LjYtMTYtNzYuOHM1LjctNTMuMiAxNi03Ni44YzcuMS0xNi4yIDI1LjktMjMuNiA0Mi4xLTE2LjVzMjMuNiAyNS45IDE2LjUgNDIuMXpNNDY0IDUxLjJjMTAuMyAyMy42IDE2IDQ5LjYgMTYgNzYuOHMtNS43IDUzLjItMTYgNzYuOGMtNy4xIDE2LjItMjUuOSAyMy42LTQyLjEgMTYuNXMtMjMuNi0yNS45LTE2LjUtNDIuMWM2LjgtMTUuNiAxMC42LTMyLjkgMTAuNi01MS4ycy0zLjgtMzUuNi0xMC42LTUxLjJjLTcuMS0xNi4yIC4zLTM1LjEgMTYuNS00Mi4xczM1LjEgLjMgNDIuMSAxNi41elwiXVxufTtcbnZhciBmYUJyb2FkY2FzdFRvd2VyID0gZmFUb3dlckJyb2FkY2FzdDtcbnZhciBmYVRydWNrUGlja3VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLXBpY2t1cCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODc2M10sIFwiZjYzY1wiLCBcIk0zNjguNiA5Nmw3Ni44IDk2SDI4OFY5Nmg4MC42ek0yMjQgODBWMTkySDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NS4xYy0uNyA1LjItMS4xIDEwLjYtMS4xIDE2YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJjMC01LjQtLjQtMTAuOC0xLjEtMTZoNjYuM2MtLjcgNS4yLTEuMSAxMC42LTEuMSAxNmMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEyYzAtNS40LS40LTEwLjgtMS4xLTE2SDYwOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJINTI3LjRMNDE4LjYgNTZjLTEyLjEtMTUuMi0zMC41LTI0LTUwLTI0SDI3MmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh6bTAgMjg4YTQ4IDQ4IDAgMSAxIC05NiAwIDQ4IDQ4IDAgMSAxIDk2IDB6bTI4OCAwYTQ4IDQ4IDAgMSAxIC05NiAwIDQ4IDQ4IDAgMSAxIDk2IDB6XCJdXG59O1xudmFyIGZhVXBMb25nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VwLWxvbmcnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcImxvbmctYXJyb3ctYWx0LXVwXCJdLCBcImYzMGNcIiwgXCJNMzE4IDE3Ny41YzMuOC04LjggMi0xOS00LjYtMjZsLTEzNi0xNDRDMTcyLjkgMi43IDE2Ni42IDAgMTYwIDBzLTEyLjkgMi43LTE3LjQgNy41bC0xMzYgMTQ0Yy02LjYgNy04LjQgMTcuMi00LjYgMjZTMTQuNCAxOTIgMjQgMTkySDk2bDAgMjg4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjg4aDcyYzkuNiAwIDE4LjItNS43IDIyLTE0LjV6XCJdXG59O1xudmFyIGZhTG9uZ0Fycm93QWx0VXAgPSBmYVVwTG9uZztcbnZhciBmYVN0b3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RvcCcsXG4gIGljb246IFszODQsIDUxMiwgWzkyMDldLCBcImYwNGRcIiwgXCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NCAyOC43IDY0IDY0VjM4NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTI4elwiXVxufTtcbnZhciBmYUNvZGVNZXJnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlLW1lcmdlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMzg3XCIsIFwiTTgwIDU2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMzIuNCA5Ny4yYzI4LTEyLjQgNDcuNi00MC41IDQ3LjYtNzMuMmMwLTQ0LjItMzUuOC04MC04MC04MFMwIDM1LjggMCA4MGMwIDMyLjggMTkuNyA2MSA0OCA3My4zVjM1OC43QzE5LjcgMzcxIDAgMzk5LjIgMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTMyLjgtMTkuNy02MS00OC03My4zVjI3MmMyNi43IDIwLjEgNjAgMzIgOTYgMzJoODYuN2MxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4YzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwYy0zMi44IDAtNjEgMTkuNy03My4zIDQ4SDIwOGMtNDkuOSAwLTkxLTM4LjEtOTUuNi04Ni44ek04MCA0MDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek0zNDQgMjcyYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJdXG59O1xudmFyIGZhVXBsb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VwbG9hZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA5M1wiLCBcIk0yODggMTA5LjNWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEwOS4zbC03My40IDczLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyODggMTA5LjN6TTY0IDM1MkgxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjR2MzJjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjQxNmMwLTM1LjMgMjguNy02NCA2NC02NHpNNDMyIDQ1NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJdXG59O1xudmFyIGZhSHVycmljYW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2h1cnJpY2FuZScsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjc1MVwiLCBcIk0wIDIwOEMwIDEwNC40IDc1LjcgMTguNSAxNzQuOSAyLjZDMTg0IDEuMiAxOTIgOC42IDE5MiAxNy45VjgxLjJjMCA4LjQgNi41IDE1LjMgMTQuNyAxNi41QzMwNyAxMTIuNSAzODQgMTk5IDM4NCAzMDMuNGMwIDEwMy42LTc1LjcgMTg5LjUtMTc0LjkgMjA1LjRjLTkuMiAxLjUtMTcuMS01LjktMTcuMS0xNS4yVjQzMC4yYzAtOC40LTYuNS0xNS4zLTE0LjctMTYuNUM3NyAzOTguOSAwIDMxMi40IDAgMjA4em0yODggNDhBOTYgOTYgMCAxIDAgOTYgMjU2YTk2IDk2IDAgMSAwIDE5MiAwem0tOTYtMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYU1vdW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdW5kJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTJkXCIsIFwiTTE0NC4xIDE3OS4yQzE3My44IDEyNy43IDIyOC42IDk2IDI4OCA5NnMxMTQuMiAzMS43IDE0My45IDgzLjJMNTQwLjQgMzY4YzEyLjMgMjEuMy0zLjEgNDgtMjcuNyA0OEg2My4zYy0yNC42IDAtNDAtMjYuNi0yNy43LTQ4TDE0NC4xIDE3OS4yelwiXVxufTtcbnZhciBmYVRvaWxldFBvcnRhYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RvaWxldC1wb3J0YWJsZScsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZTU4M1wiLCBcIk0wIDMyVjY0SDMyMFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDAgMCAxNC4zIDAgMzJ6TTI0IDk2SDB2MjRWNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR2LThIMjcydjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxMjAgOTZIMjk2IDI0ek0yNTYgMjQwdjY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwiXVxufTtcbnZhciBmYUNvbXBhY3REaXNjID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbXBhY3QtZGlzYycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODE5MSwgMTI4MTkyLCAxMjg0NDBdLCBcImY1MWZcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMzJhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0tOTYtMzJhOTYgOTYgMCAxIDAgMTkyIDAgOTYgOTYgMCAxIDAgLTE5MiAwek05NiAyNDBjMC0zNSAxNy41LTcxLjEgNDUuMi05OC44UzIwNSA5NiAyNDAgOTZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTQ1LjQgMC04OS4yIDIyLjMtMTIxLjUgNTQuNVM2NCAxOTQuNiA2NCAyNDBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNnpcIl1cbn07XG52YXIgZmFGaWxlQXJyb3dEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtYXJyb3ctZG93bicsXG4gIGljb246IFszODQsIDUxMiwgW1wiZmlsZS1kb3dubG9hZFwiXSwgXCJmNTZkXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNMjE2IDIzMlYzMzQuMWwzMS0zMWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTcyIDcyYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNzItNzJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwzMSAzMVYyMzJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIl1cbn07XG52YXIgZmFGaWxlRG93bmxvYWQgPSBmYUZpbGVBcnJvd0Rvd247XG52YXIgZmFDYXJhdmFuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmF2YW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4ZmZcIiwgXCJNMCAxMTJDMCA2Ny44IDM1LjggMzIgODAgMzJINDE2Yzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwVjM1MmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMEgyODhjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZIODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwVjExMnpNMzIwIDM1Mkg0NDhWMjU2SDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmgzMlYxNjBjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlYzNTJ6TTk2IDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkg5NnptOTYgMzM2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIl1cbn07XG52YXIgZmFTaGllbGRDYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hpZWxkLWNhdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU3MlwiLCBcIk0yNjkuNCAyLjlDMjY1LjIgMSAyNjAuNyAwIDI1NiAwcy05LjIgMS0xMy40IDIuOUw1NC4zIDgyLjhjLTIyIDkuMy0zOC40IDMxLTM4LjMgNTcuMmMuNSA5OS4yIDQxLjMgMjgwLjcgMjEzLjYgMzYzLjJjMTYuNyA4IDM2LjEgOCA1Mi44IDBDNDU0LjcgNDIwLjcgNDk1LjUgMjM5LjIgNDk2IDE0MGMuMS0yNi4yLTE2LjMtNDcuOS0zOC4zLTU3LjJMMjY5LjQgMi45ek0xNjAgMTU0LjRjMC01LjggNC43LTEwLjQgMTAuNC0xMC40aC4yYzMuNCAwIDYuNSAxLjYgOC41IDQuM2w0MCA1My4zYzMgNCA3LjggNi40IDEyLjggNi40aDQ4YzUgMCA5LjgtMi40IDEyLjgtNi40bDQwLTUzLjNjMi0yLjcgNS4yLTQuMyA4LjUtNC4zaC4yYzUuOCAwIDEwLjQgNC43IDEwLjQgMTAuNFYyNzJjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZWMTU0LjR6TTIxNiAyODhhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem05Ni0xNmExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwiXVxufTtcbnZhciBmYUJvbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9sdCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzk4ODksIFwiemFwXCJdLCBcImYwZTdcIiwgXCJNMzQ5LjQgNDQuNmM1LjktMTMuNyAxLjUtMjkuNy0xMC42LTM4LjVzLTI4LjYtOC0zOS45IDEuOGwtMjU2IDIyNGMtMTAgOC44LTEzLjYgMjIuOS04LjkgMzUuM1M1MC43IDI4OCA2NCAyODhIMTc1LjVMOTguNiA0NjcuNGMtNS45IDEzLjctMS41IDI5LjcgMTAuNiAzOC41czI4LjYgOCAzOS45LTEuOGwyNTYtMjI0YzEwLTguOCAxMy42LTIyLjkgOC45LTM1LjNzLTE2LjYtMjAuNy0zMC0yMC43SDI3Mi41TDM0OS40IDQ0LjZ6XCJdXG59O1xudmFyIGZhWmFwID0gZmFCb2x0O1xudmFyIGZhR2xhc3NXYXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnbGFzcy13YXRlcicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRmNFwiLCBcIk0zMiAwQzIzLjEgMCAxNC42IDMuNyA4LjYgMTAuMlMtLjYgMjUuNCAuMSAzNC4zTDI4LjkgNDM3LjdjMyA0MS45IDM3LjggNzQuMyA3OS44IDc0LjNIMjc1LjNjNDIgMCA3Ni44LTMyLjQgNzkuOC03NC4zTDM4My45IDM0LjNjLjYtOC45LTIuNC0xNy42LTguNS0yNC4xUzM2MC45IDAgMzUyIDBIMzJ6TTczIDE1Ni41TDY2LjQgNjRIMzE3LjZMMzExIDE1Ni41bC0yNC4yIDEyLjFjLTE5LjQgOS43LTQyLjIgOS43LTYxLjYgMGMtMjAuOS0xMC40LTQ1LjUtMTAuNC02Ni40IDBjLTE5LjQgOS43LTQyLjIgOS43LTYxLjYgMEw3MyAxNTYuNXpcIl1cbn07XG52YXIgZmFPaWxXZWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ29pbC13ZWxsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTMyXCIsIFwiTTUyOC4zIDYxLjNjLTExLjQtNDIuNy01NS4zLTY4LTk4LTU2LjZMNDE0LjkgOC44QzM5Ny44IDEzLjQgMzg3LjcgMzEgMzkyLjMgNDhsMjQuNSA5MS40TDMwOC41IDE2Ny41bC02LjMtMTguMUMyOTcuNyAxMzYuNiAyODUuNiAxMjggMjcyIDEyOHMtMjUuNyA4LjYtMzAuMiAyMS40bC0xMy42IDM5TDk2IDIyMi42VjE4NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNFY0NDhIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQwNi43TDM0MCAyNTcuNWwtNjIuMiAxNi4xTDMwNS4zIDM1MkgyMzguN0wyNjUgMjc3bC03NC42IDE5LjNMMTM3LjMgNDQ4SDk2VjI4OC44bDMzNy40LTg3LjUgMjUuMiA5NGM0LjYgMTcuMSAyMi4xIDI3LjIgMzkuMiAyMi42bDE1LjUtNC4xYzQyLjctMTEuNCA2OC01NS4zIDU2LjYtOThMNTI4LjMgNjEuM3pNMjA1LjEgNDQ4bDExLjItMzJIMzI3LjdsMTEuMiAzMkgyMDUuMXpcIl1cbn07XG52YXIgZmFWYXVsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2YXVsdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTJjNVwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIODBsMTYgMzJoNjRsMTYtMzJINDAwbDE2IDMyaDY0bDE2LTMyaDE2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMjQgMzIwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTI0MGExNjAgMTYwIDAgMSAxIDAgMzIwIDE2MCAxNjAgMCAxIDEgMC0zMjB6TTQ4MCAyMjEuM1YzMzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjIxLjNjLTE4LjYtNi42LTMyLTI0LjQtMzItNDUuM2MwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4YzAgMjAuOS0xMy40IDM4LjctMzIgNDUuM3pcIl1cbn07XG52YXIgZmFNYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5Nzk0XSwgXCJmMjIyXCIsIFwiTTI4OS44IDQ2LjhjMy43LTkgMTIuNS0xNC44IDIyLjItMTQuOEg0MjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRWMTY4YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEwzMjEgMjA0LjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NlMwIDQwMS4yIDAgMzA0czc4LjgtMTc2IDE3Ni0xNzZjMzcgMCA3MS40IDExLjQgOTkuOCAzMWw1Mi42LTUyLjZMMjk1IDczYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yek00MDAgODBsMCAwaDB2MHpNMTc2IDQxNmExMTIgMTEyIDAgMSAwIDAtMjI0IDExMiAxMTIgMCAxIDAgMCAyMjR6XCJdXG59O1xudmFyIGZhVG9pbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RvaWxldCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODcwMV0sIFwiZjdkOFwiLCBcIk0yNCAwQzEwLjcgMCAwIDEwLjcgMCAyNFMxMC43IDQ4IDI0IDQ4aDhWMTk2LjljLTEuOSAxLjQtMy44IDIuOS01LjYgNC40QzEwLjkgMjE0LjUgMCAyMzIuOSAwIDI1NmMwIDQ2LjkgMTQuMyA4NC4xIDM3IDExMi41YzE0LjIgMTcuNyAzMS4xIDMxLjMgNDguNSA0MS44TDY1LjYgNDY5LjljLTMuMyA5LjgtMS42IDIwLjUgNC40IDI4LjhzMTUuNyAxMy4zIDI2IDEzLjNIMzUyYzEwLjMgMCAxOS45LTQuOSAyNi0xMy4zczcuNy0xOS4xIDQuNC0yOC44bC0xOS44LTU5LjVjMTcuNC0xMC41IDM0LjMtMjQuMSA0OC41LTQxLjhjMjIuNy0yOC40IDM3LTY1LjUgMzctMTEyLjVjMC0yMy4xLTEwLjktNDEuNS0yNi40LTU0LjZjLTEuOC0xLjUtMy43LTMtNS42LTQuNFY0OGg4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDI0ek0zODQgMjU2LjNjMCAxLS4zIDIuNi0zLjggNS42Yy00LjggNC4xLTE0IDktMjkuMyAxMy40QzMyMC41IDI4NCAyNzYuMSAyODggMjI0IDI4OHMtOTYuNS00LTEyNi45LTEyLjhjLTE1LjMtNC40LTI0LjUtOS4zLTI5LjMtMTMuNGMtMy41LTMtMy44LTQuNi0zLjgtNS42bDAtLjMgMC0uMWMwLTEgMC0yLjUgMy44LTUuOGM0LjgtNC4xIDE0LTkgMjkuMy0xMy40QzEyNy41IDIyOCAxNzEuOSAyMjQgMjI0IDIyNHM5Ni41IDQgMTI2LjkgMTIuOGMxNS4zIDQuNCAyNC41IDkuMyAyOS4zIDEzLjRjMy44IDMuMiAzLjggNC44IDMuOCA1LjhsMCAuMSAwIC4zek0zMjguMiAzODRsLS4yIC41IDAtLjVoLjJ6TTExMiA2NGgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhUGxhbmVDaXJjbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NTdcIiwgXCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43djg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45djY1LjVjMCAxMC42IDEwLjIgMTguMyAyMC40IDE1LjRsMTcxLjYtNDkgMCA3MC45LTU3LjYgNDMuMmMtNCAzLTYuNCA3LjgtNi40IDEyLjh2NDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zVjkzLjdDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwiXVxufTtcbnZhciBmYVllblNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneWVuLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxNjUsIFwiY255XCIsIFwianB5XCIsIFwicm1iXCIsIFwieWVuXCJdLCBcImYxNTdcIiwgXCJNNTguNiA0Ni4yQzQ4LjggMzEuNSAyOSAyNy42IDE0LjMgMzcuNFMtNC40IDY3IDUuNCA4MS43TDEwMC4yIDIyNEg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MHYzMkg0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MHY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM4NGg4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJWMjg4aDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDIxOS44TDMxNC42IDgxLjdjOS44LTE0LjcgNS44LTM0LjYtOC45LTQ0LjRzLTM0LjYtNS44LTQ0LjQgOC45TDE2MCAxOTguMyA1OC42IDQ2LjJ6XCJdXG59O1xudmFyIGZhQ255ID0gZmFZZW5TaWduO1xudmFyIGZhSnB5ID0gZmFZZW5TaWduO1xudmFyIGZhUm1iID0gZmFZZW5TaWduO1xudmFyIGZhWWVuID0gZmFZZW5TaWduO1xudmFyIGZhUnVibGVTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1YmxlLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFs4MzgxLCBcInJvdWJsZVwiLCBcInJ1YlwiLCBcInJ1YmxlXCJdLCBcImYxNThcIiwgXCJNOTYgMzJDNzguMyAzMiA2NCA0Ni4zIDY0IDY0VjI1NkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHYzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxNkgyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTI4VjMyMEgyNDBjNzkuNSAwIDE0NC02NC41IDE0NC0xNDRzLTY0LjUtMTQ0LTE0NC0xNDRIOTZ6TTI0MCAyNTZIMTI4Vjk2SDI0MGM0NC4yIDAgODAgMzUuOCA4MCA4MHMtMzUuOCA4MC04MCA4MHpcIl1cbn07XG52YXIgZmFSb3VibGUgPSBmYVJ1YmxlU2lnbjtcbnZhciBmYVJ1YiA9IGZhUnVibGVTaWduO1xudmFyIGZhUnVibGUgPSBmYVJ1YmxlU2lnbjtcbnZhciBmYVN1biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5NzI4XSwgXCJmMTg1XCIsIFwiTTM2MS41IDEuMmM1IDIuMSA4LjYgNi42IDkuNiAxMS45TDM5MSAxMjFsMTA3LjkgMTkuOGM1LjMgMSA5LjggNC42IDExLjkgOS42czEuNSAxMC43LTEuNiAxNS4yTDQ0Ni45IDI1Nmw2Mi4zIDkwLjNjMy4xIDQuNSAzLjcgMTAuMiAxLjYgMTUuMnMtNi42IDguNi0xMS45IDkuNkwzOTEgMzkxIDM3MS4xIDQ5OC45Yy0xIDUuMy00LjYgOS44LTkuNiAxMS45cy0xMC43IDEuNS0xNS4yLTEuNkwyNTYgNDQ2LjlsLTkwLjMgNjIuM2MtNC41IDMuMS0xMC4yIDMuNy0xNS4yIDEuNnMtOC42LTYuNi05LjYtMTEuOUwxMjEgMzkxIDEzLjEgMzcxLjFjLTUuMy0xLTkuOC00LjYtMTEuOS05LjZzLTEuNS0xMC43IDEuNi0xNS4yTDY1LjEgMjU2IDIuOCAxNjUuN2MtMy4xLTQuNS0zLjctMTAuMi0xLjYtMTUuMnM2LjYtOC42IDExLjktOS42TDEyMSAxMjEgMTQwLjkgMTMuMWMxLTUuMyA0LjYtOS44IDkuNi0xMS45czEwLjctMS41IDE1LjIgMS42TDI1NiA2NS4xIDM0Ni4zIDIuOGM0LjUtMy4xIDEwLjItMy43IDE1LjItMS42ek0xNjAgMjU2YTk2IDk2IDAgMSAxIDE5MiAwIDk2IDk2IDAgMSAxIC0xOTIgMHptMjI0IDBhMTI4IDEyOCAwIDEgMCAtMjU2IDAgMTI4IDEyOCAwIDEgMCAyNTYgMHpcIl1cbn07XG52YXIgZmFHdWl0YXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3VpdGFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2E2XCIsIFwiTTQ2NSA3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwzODMgNTVjLTIuNCAyLjQtNC4zIDUuMy01LjUgOC41bC0xNS40IDQxLTc3LjUgNzcuNmMtNDUuMS0yOS40LTk5LjMtMzAuMi0xMzEgMS42Yy0xMSAxMS0xOCAyNC42LTIxLjQgMzkuNmMtMy43IDE2LjYtMTkuMSAzMC43LTM2LjEgMzEuNmMtMjUuNiAxLjMtNDkuMyAxMC43LTY3LjMgMjguNkMtMTYgMzI4LjQtNy42IDQwOS40IDQ3LjUgNDY0LjVzMTM2LjEgNjMuNSAxODAuOSAxOC43YzE3LjktMTcuOSAyNy40LTQxLjcgMjguNi02Ny4zYy45LTE3IDE1LTMyLjMgMzEuNi0zNi4xYzE1LTMuNCAyOC42LTEwLjUgMzkuNi0yMS40YzMxLjgtMzEuOCAzMS04NS45IDEuNi0xMzFsNzcuNi03Ny42IDQxLTE1LjRjMy4yLTEuMiA2LjEtMy4xIDguNS01LjVsNDgtNDhjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMNDY1IDd6TTIwOCAyNTZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwiXVxufTtcbnZhciBmYUZhY2VMYXVnaFdpbmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1sYXVnaC13aW5rJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJsYXVnaC13aW5rXCJdLCBcImY1OWNcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMUgzOTMuNmMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTU2LjQgMjUuNmMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMHpcIl1cbn07XG52YXIgZmFMYXVnaFdpbmsgPSBmYUZhY2VMYXVnaFdpbms7XG52YXIgZmFIb3JzZUhlYWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9yc2UtaGVhZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjdhYlwiLCBcIk02NCA0NjRWMzE2LjljMC0xMDguNCA2OC4zLTIwNS4xIDE3MC41LTI0MS4zTDQwNC4yIDE1LjVDNDI1LjYgNy45IDQ0OCAyMy44IDQ0OCA0Ni40YzAgMTEtNS41IDIxLjItMTQuNiAyNy4zTDQwMCA5NmM0OC4xIDAgOTEuMiAyOS44IDEwOC4xIDc0LjlsNDguNiAxMjkuNWMxMS44IDMxLjQgNC4xIDY2LjgtMTkuNiA5MC41Yy0xNiAxNi0zNy44IDI1LjEtNjAuNSAyNS4xaC0zLjRjLTI2LjEgMC01MC45LTExLjYtNjcuNi0zMS43bC0zMi4zLTM4LjdjLTExLjcgNC4xLTI0LjIgNi40LTM3LjMgNi40bC0uMSAwIDAgMGMtNi4zIDAtMTIuNS0uNS0xOC42LTEuNWMtMy42LS42LTcuMi0xLjQtMTAuNy0yLjNsMCAwYy0yOC45LTcuOC01My4xLTI2LjgtNjcuOC01Mi4yYy00LjQtNy42LTE0LjItMTAuMy0yMS45LTUuOHMtMTAuMyAxNC4yLTUuOCAyMS45YzI0IDQxLjUgNjguMyA3MCAxMTkuMyA3MS45bDQ3LjIgNzAuOGM0IDYuMSA2LjIgMTMuMiA2LjIgMjAuNGMwIDIwLjMtMTYuNSAzNi44LTM2LjggMzYuOEgxMTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4ek0zOTIgMjI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIl1cbn07XG52YXIgZmFCb3JlSG9sZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3JlLWhvbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0YzNcIiwgXCJNMjU2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjI5Ni42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRjMC0yMy43LTEyLjktNDQuNC0zMi01NS40VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek00OCAxMjhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0NjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMzUyYzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkg0OHpcIl1cbn07XG52YXIgZmFJbmR1c3RyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmR1c3RyeScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI3NVwiLCBcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjRWMzA0djQ4IDgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQ5NmMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDQgMTUyLjJjMC0xOC4yLTE5LjQtMjkuNy0zNS40LTIxLjFMMzUyIDIxNS40VjE1Mi4yYzAtMTguMi0xOS40LTI5LjctMzUuNC0yMS4xTDE2MCAyMTUuNFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkg2NHpcIl1cbn07XG52YXIgZmFDaXJjbGVEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1kb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE0NjYsIFwiYXJyb3ctYWx0LWNpcmNsZS1kb3duXCJdLCBcImYzNThcIiwgXCJNMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwek0zNzYuOSAyOTQuNkwyNjkuOCAzOTQuNWMtMy44IDMuNS04LjcgNS41LTEzLjggNS41cy0xMC4xLTItMTMuOC01LjVMMTM1LjEgMjk0LjZjLTQuNS00LjItNy4xLTEwLjEtNy4xLTE2LjNjMC0xMi4zIDEwLTIyLjMgMjIuMy0yMi4zbDU3LjcgMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NiA1Ny43IDBjMTIuMyAwIDIyLjMgMTAgMjIuMyAyMi4zYzAgNi4yLTIuNiAxMi4xLTcuMSAxNi4zelwiXVxufTtcbnZhciBmYUFycm93QWx0Q2lyY2xlRG93biA9IGZhQ2lyY2xlRG93bjtcbnZhciBmYUFycm93c1R1cm5Ub0RvdHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLXR1cm4tdG8tZG90cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRjMVwiLCBcIk0yNDkuNCAyNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMjY5LjMgOTYgNDE2IDk2YzUzIDAgOTYgNDMgOTYgOTZ2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xNDYuNyAwIDI1LjQgMjUuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtODAtODBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDgwLTgwem0xMy4zIDI1Nmw4MCA4MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtODAgODBjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDQxNiA5NiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ0OGMwLTUzIDQzLTk2IDk2LTk2bDE0Ni43IDAtMjUuNC0yNS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwek0zODQgMzg0YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjQgMTkyQTY0IDY0IDAgMSAxIDY0IDY0YTY0IDY0IDAgMSAxIDAgMTI4elwiXVxufTtcbnZhciBmYUZsb3JpblNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmxvcmluLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxODRcIiwgXCJNMzE0LjcgMzJjLTM4LjggMC03My43IDIzLjMtODguNiA1OS4xTDE3MC43IDIyNEg2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MEw5OC45IDM5Ni4zYy01IDExLjktMTYuNiAxOS43LTI5LjUgMTkuN0gzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2OS4zYzM4LjggMCA3My43LTIzLjMgODguNi01OS4xTDIxMy4zIDI4OEgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjQwbDQ1LjEtMTA4LjNjNS0xMS45IDE2LjYtMTkuNyAyOS41LTE5LjdIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMxNC43elwiXVxufTtcbnZhciBmYUFycm93RG93blNob3J0V2lkZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1kb3duLXNob3J0LXdpZGUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNvcnQtYW1vdW50LWRlc2NcIiwgXCJzb3J0LWFtb3VudC1kb3duLWFsdFwiXSwgXCJmODg0XCIsIFwiTTE1MS42IDQ2OS42QzE0NS41IDQ3Ni4yIDEzNyA0ODAgMTI4IDQ4MHMtMTcuNS0zLjgtMjMuNi0xMC40bC04OC05NmMtMTEuOS0xMy0xMS4xLTMzLjMgMi00NS4yczMzLjMtMTEuMSA0NS4yIDJMOTYgMzY1LjdWNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMlYzNjUuN2wzMi40LTM1LjRjMTEuOS0xMyAzMi4yLTEzLjkgNDUuMi0yczEzLjkgMzIuMiAyIDQ1LjJsLTg4IDk2ek0zMjAgMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0wIDEyOGg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTI4SDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTI4SDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhU29ydEFtb3VudERlc2MgPSBmYUFycm93RG93blNob3J0V2lkZTtcbnZhciBmYVNvcnRBbW91bnREb3duQWx0ID0gZmFBcnJvd0Rvd25TaG9ydFdpZGU7XG52YXIgZmFMZXNzVGhhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsZXNzLXRoYW4nLFxuICBpY29uOiBbMzg0LCA1MTIsIFs2Mjc3NF0sIFwiM2NcIiwgXCJNMzgwLjYgODEuN2M3LjkgMTUuOCAxLjUgMzUtMTQuMyA0Mi45TDEwMy42IDI1NiAzNjYuMyAzODcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zbC0zMjAtMTYwQzYuOCAyNzkuMiAwIDI2OC4xIDAgMjU2czYuOC0yMy4yIDE3LjctMjguNmwzMjAtMTYwYzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjN6XCJdXG59O1xudmFyIGZhQW5nbGVEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlLWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs4OTY0XSwgXCJmMTA3XCIsIFwiTTIwMS40IDM0Mi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDI3NC43IDg2LjYgMTM3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjB6XCJdXG59O1xudmFyIGZhQ2FyVHVubmVsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci10dW5uZWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0ZGVcIiwgXCJNMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg0Mi44Yy02LjYtNS45LTEwLjgtMTQuNC0xMC44LTI0VjM3NmMwLTIwLjggMTEuMy0zOC45IDI4LjEtNDguNmwyMS02NC43YzcuNS0yMy4xIDI5LTM4LjcgNTMuMy0zOC43SDMxMy42YzI0LjMgMCA0NS44IDE1LjYgNTMuMyAzOC43bDIxIDY0LjdjMTYuOCA5LjcgMjguMiAyNy44IDI4LjIgNDguNlY0ODhjMCA5LjYtNC4yIDE4LjEtMTAuOCAyNEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMjU2QzUxMiAxMTQuNiAzOTcuNCAwIDI1NiAwek0zNjIuOCA1MTJjLTYuNi01LjktMTAuOC0xNC40LTEwLjgtMjRWNDQ4SDE2MHY0MGMwIDkuNi00LjIgMTguMS0xMC44IDI0SDM2Mi44ek0xOTAuOCAyNzcuNUwxNzcgMzIwSDMzNWwtMTMuOC00Mi41Yy0xLjEtMy4zLTQuMS01LjUtNy42LTUuNUgxOTguNGMtMy41IDAtNi41IDIuMi03LjYgNS41ek0xNjggNDA4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjAwLTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJdXG59O1xudmFyIGZhSGVhZFNpZGVDb3VnaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFkLXNpZGUtY291Z2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNjFcIiwgXCJNMCAyMjQuMkMwIDEwMC42IDEwMC4yIDAgMjI0IDBoMjRjOTUuMiAwIDE4MS4yIDY5LjMgMTk3LjMgMTYwLjJjMi4zIDEzIDYuOCAyNS43IDE1LjEgMzZsNDIgNTIuNmM2LjIgNy44IDkuNiAxNy40IDkuNiAyNy40YzAgMjQuMi0xOS42IDQzLjgtNDMuOCA0My44SDQ0OHYwIDMyTDMzOS4yIDM2NS42Yy0xMSAxLjQtMTkuMiAxMC43LTE5LjIgMjEuOGMwIDExLjYgOSAyMS4yIDIwLjYgMjEuOUw0NDggNDE2djE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDMyMHY4YzAgMTMuMy0xMC43IDI0LTI0IDI0SDI1NnYwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDcuM2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yem0zNTItLjJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek00NjQgMzg0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTE1Mi0yNGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTU5MiA0ODBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNNTUyIDMxMmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTQwLTI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTU1MiA0MDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbnZhciBmYUdyaXBMaW5lcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdncmlwLWxpbmVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmN2E0XCIsIFwiTTMyIDI4OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAyODh6bTAtMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDE2MHpcIl1cbn07XG52YXIgZmFUaHVtYnNEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RodW1icy1kb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MDc4LCA2MTU3Nl0sIFwiZjE2NVwiLCBcIk0zMTMuNCA0NzkuMWMyNi01LjIgNDIuOS0zMC41IDM3LjctNTYuNWwtMi4zLTExLjRjLTUuMy0yNi43LTE1LjEtNTIuMS0yOC44LTc1LjJINDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMTguNS0xMC41LTM0LjYtMjUuOS00Mi42QzQ5NyAyMzYuNiA1MDQgMjIzLjEgNTA0IDIwOGMwLTIzLjQtMTYuOC00Mi45LTM4LjktNDcuMWM0LjQtNy4zIDYuOS0xNS44IDYuOS0yNC45YzAtMjEuMy0xMy45LTM5LjQtMzMuMS00NS42Yy43LTMuMyAxLjEtNi44IDEuMS0xMC40YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI5NC41Yy0xOSAwLTM3LjUgNS42LTUzLjMgMTYuMUwyMDIuNyA3My44QzE3NiA5MS42IDE2MCAxMjEuNiAxNjAgMTUzLjdWMTkydjQ4IDI0LjljMCAyOS4yIDEzLjMgNTYuNyAzNiA3NWw3LjQgNS45YzI2LjUgMjEuMiA0NC42IDUxIDUxLjIgODQuMmwyLjMgMTEuNGM1LjIgMjYgMzAuNSA0Mi45IDU2LjUgMzcuN3pNMzIgMzg0SDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyelwiXVxufTtcbnZhciBmYVVzZXJMb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItbG9jaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUwMlwiLCBcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTQ1LjcgNDhDNzkuOCAzMDQgMCAzODMuOCAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJIMzkyLjZjLTUuNC05LjQtOC42LTIwLjMtOC42LTMyVjM1MmMwLTIuMSAuMS00LjIgLjMtNi4zYy0zMS0yNi03MS00MS43LTExNC42LTQxLjdIMTc4LjN6TTUyOCAyNDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2NDhINDk2VjI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTgwIDMydjQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMlYyNzJjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6XCJdXG59O1xudmFyIGZhQXJyb3dSaWdodExvbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctcmlnaHQtbG9uZycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibG9uZy1hcnJvdy1yaWdodFwiXSwgXCJmMTc4XCIsIFwiTTUwMi42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyMjQgMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM3MC43IDAtNzMuNCA3My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjh6XCJdXG59O1xudmFyIGZhTG9uZ0Fycm93UmlnaHQgPSBmYUFycm93UmlnaHRMb25nO1xudmFyIGZhQW5jaG9yQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5jaG9yLWNpcmNsZS14bWFyaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRhY1wiLCBcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwSDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMlY0NDhIMjA4Yy01MyAwLTk2LTQzLTk2LTk2di02LjFsNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGg4MCA4MGM4LjIgMCAxNi4zLS42IDI0LjItMS44Yy0yMi4yLTE2LjItNDAuNC0zNy41LTUzLTYyLjJIMzIwVjM2OCAyNDBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQxLjF6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwiXVxufTtcbnZhciBmYUVsbGlwc2lzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VsbGlwc2lzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJlbGxpcHNpcy1oXCJdLCBcImYxNDFcIiwgXCJNOCAyNTZhNTYgNTYgMCAxIDEgMTEyIDBBNTYgNTYgMCAxIDEgOCAyNTZ6bTE2MCAwYTU2IDU2IDAgMSAxIDExMiAwIDU2IDU2IDAgMSAxIC0xMTIgMHptMjE2LTU2YTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyelwiXVxufTtcbnZhciBmYUVsbGlwc2lzSCA9IGZhRWxsaXBzaXM7XG52YXIgZmFDaGVzc1Bhd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3MtcGF3bicsXG4gIGljb246IFszMjAsIDUxMiwgWzk4MjNdLCBcImY0NDNcIiwgXCJNMjE1LjUgMjI0YzI5LjItMTguNCA0OC41LTUwLjkgNDguNS04OGMwLTU3LjQtNDYuNi0xMDQtMTA0LTEwNFM1NiA3OC42IDU2IDEzNmMwIDM3LjEgMTkuNCA2OS42IDQ4LjUgODhIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyYzAgMTYuNSAxMi41IDMwIDI4LjUgMzEuOEw4MCA0MDBIMjQwTDIyNy41IDI4Ny44YzE2LTEuOCAyOC41LTE1LjMgMjguNS0zMS44YzAtMTcuNy0xNC4zLTMyLTMyLTMyaC04LjV6TTIyLjYgNDczLjRjLTQuMiA0LjItNi42IDEwLTYuNiAxNkMxNiA1MDEuOSAyNi4xIDUxMiAzOC42IDUxMkgyODEuNGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2TDI1NiA0MzJINjRMMjIuNiA0NzMuNHpcIl1cbn07XG52YXIgZmFLaXRNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2tpdC1tZWRpY2FsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJmaXJzdC1haWRcIl0sIFwiZjQ3OVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlYzMkg2NHptNjQgMFY0ODBINDQ4VjMySDEyOHpNNTEyIDQ4MGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg0ODBWNDgwaDMyek0yNTYgMTc2YzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgzMjB2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI3MmMtOC44IDAtMTYtNy4yLTE2LTE2VjI4OEgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNlYyNDBjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjE3NnpcIl1cbn07XG52YXIgZmFGaXJzdEFpZCA9IGZhS2l0TWVkaWNhbDtcbnZhciBmYVBlcnNvblRocm91Z2hXaW5kb3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXRocm91Z2gtd2luZG93JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNWE5XCIsIFwiTTY0IDY0bDIyNCAwIDAgOS44YzAgMzktMjMuNyA3NC01OS45IDg4LjRDMTY3LjYgMTg2LjUgMTI4IDI0NSAxMjggMzEwLjJsMCA3My44czAgMCAwIDBINjRWNjR6bTI4OCAwbDIyNCAwVjM4NEg1MDguM2wtMy43LTQuNS03NS4yLTkwLjJjLTkuMS0xMC45LTIyLjYtMTcuMy0zNi45LTE3LjNsLTcxLjEgMC00MS02My4xYy0uMy0uNS0uNi0xLTEtMS40YzQ0LjctMjkgNzIuNS03OSA3Mi41LTEzMy42bDAtOS44em03MyAzMjBIMzc5LjJsNDIuNyA2NEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4VjQwMGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMDguMmwzMy4yIDQ5LjhjOS44IDE0LjcgMjkuNyAxOC43IDQ0LjQgOC45czE4LjctMjkuNyA4LjktNDQuNEwzMTAuNSAzMzZsNzQuNiAwIDQwIDQ4em0tMTU5LjUgMEgxOTJzMCAwIDAgMGwwLTczLjhjMC0xMC4yIDEuNi0yMC4xIDQuNy0yOS41TDI2NS41IDM4NHpNMTkyIDEyOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwiXVxufTtcbnZhciBmYVRvb2xib3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9vbGJveCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTUyMF0sIFwiZjU1MlwiLCBcIk0xNzYgODh2NDBIMzM2Vjg4YzAtNC40LTMuNi04LTgtOEgxODRjLTQuNCAwLTggMy42LTggOHptLTQ4IDQwVjg4YzAtMzAuOSAyNS4xLTU2IDU2LTU2SDMyOGMzMC45IDAgNTYgMjUuMSA1NiA1NnY0MGgyOC4xYzEyLjcgMCAyNC45IDUuMSAzMy45IDE0LjFsNTEuOSA1MS45YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45VjMwNEgzODRWMjg4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjE2SDE5MlYyODhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2MTZIMFYyMjcuOWMwLTEyLjcgNS4xLTI0LjkgMTQuMS0zMy45bDUxLjktNTEuOWM5LTkgMjEuMi0xNC4xIDMzLjktMTQuMUgxMjh6TTAgNDE2VjMzNkgxMjh2MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMzZIMzIwdjE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzM2SDUxMnY4MGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6XCJdXG59O1xudmFyIGZhSGFuZHNIb2xkaW5nQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWhvbGRpbmctY2lyY2xlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGZiXCIsIFwiTTMyMCAwYTEyOCAxMjggMCAxIDEgMCAyNTZBMTI4IDEyOCAwIDEgMSAzMjAgMHpNNDAgNjRjMjIuMSAwIDQwIDE3LjkgNDAgNDB2NDAgODAgNDAuMmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2w1MS4xIDUxLjFjOC4zIDguMyAyMS4zIDkuNiAzMSAzLjFjMTIuOS04LjYgMTQuNy0yNi45IDMuNy0zNy44bC0xNS4yLTE1LjItMzItMzJjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMzIgMzIgMTUuMiAxNS4yIDAgMCAyNS4zIDI1LjNjMjEgMjEgMzIuOCA0OS41IDMyLjggNzkuMlY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhIMTczLjNjLTE3IDAtMzMuMy02LjctNDUuMy0xOC43TDI4LjEgMzkzLjRDMTAuMSAzNzUuNCAwIDM1MSAwIDMyNS41VjIyNCAxNjAgMTA0QzAgODEuOSAxNy45IDY0IDQwIDY0em01NjAgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHY1NiA2NFYzMjUuNWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOUw1MTIgNDkzLjNjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdINDAwYy0yNi41IDAtNDgtMjEuNS00OC00OFYzODUuMWMwLTI5LjcgMTEuOC01OC4yIDMyLjgtNzkuMmwyNS4zLTI1LjMgMCAwIDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0zMiAzMi0xNS4yIDE1LjJjLTExIDExLTkuMiAyOS4yIDMuNyAzNy44YzkuNyA2LjUgMjIuNyA1LjIgMzEtMy4xbDUxLjEtNTEuMWMxMi0xMiAxOC43LTI4LjMgMTguNy00NS4zVjIyNCAxNDQgMTA0YzAtMjIuMSAxNy45LTQwIDQwLTQwelwiXVxufTtcbnZhciBmYUJ1ZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxODhcIiwgXCJNMjU2IDBjNTMgMCA5NiA0MyA5NiA5NnYzLjZjMCAxNS43LTEyLjcgMjguNC0yOC40IDI4LjRIMTg4LjRjLTE1LjcgMC0yOC40LTEyLjctMjguNC0yOC40Vjk2YzAtNTMgNDMtOTYgOTYtOTZ6TTQxLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsNjQgNjRjLjcgLjcgMS4zIDEuNCAxLjkgMi4xYzE0LjItNy4zIDMwLjQtMTEuNCA0Ny41LTExLjRIMzEyYzE3LjEgMCAzMy4yIDQuMSA0Ny41IDExLjRjLjYtLjcgMS4yLTEuNCAxLjktMi4xbDY0LTY0YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTY0IDY0Yy0uNyAuNy0xLjQgMS4zLTIuMSAxLjljNi4yIDEyIDEwLjEgMjUuMyAxMS4xIDM5LjVINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQxNmMwIDI0LjYtNS41IDQ3LjgtMTUuNCA2OC42YzIuMiAxLjMgNC4yIDIuOSA2IDQuOGw2NCA2NGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtNjMuMS02My4xYy0yNC41IDIxLjgtNTUuOCAzNi4yLTkwLjMgMzkuNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWNDc5LjJjLTM0LjUtMy40LTY1LjgtMTcuOC05MC4zLTM5LjZMODYuNiA1MDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsNjQtNjRjMS45LTEuOSAzLjktMy40IDYtNC44QzEwMS41IDM2Ny44IDk2IDM0NC42IDk2IDMyMEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg5Ni4zYzEuMS0xNC4xIDUtMjcuNSAxMS4xLTM5LjVjLS43LS42LTEuNC0xLjItMi4xLTEuOWwtNjQtNjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zelwiXVxufTtcbnZhciBmYUNyZWRpdENhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3JlZGl0LWNhcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgxNzksIDYyMDgzLCBcImNyZWRpdC1jYXJkLWFsdFwiXSwgXCJmMDlkXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZ2MzJINTc2Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01NzYgMjI0SDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQtMjguNyA2NC02NFYyMjR6TTExMiAzNTJoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0xMTIgMTZjMC04LjggNy4yLTE2IDE2LTE2SDM2OGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNnpcIl1cbn07XG52YXIgZmFDcmVkaXRDYXJkQWx0ID0gZmFDcmVkaXRDYXJkO1xudmFyIGZhQ2FyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODY2NCwgXCJhdXRvbW9iaWxlXCJdLCBcImYxYjlcIiwgXCJNMTM1LjIgMTE3LjRMMTA5LjEgMTkySDQwMi45bC0yNi4xLTc0LjZDMzcyLjMgMTA0LjYgMzYwLjIgOTYgMzQ2LjYgOTZIMTY1LjRjLTEzLjYgMC0yNS43IDguNi0zMC4yIDIxLjR6TTM5LjYgMTk2LjhMNzQuOCA5Ni4zQzg4LjMgNTcuOCAxMjQuNiAzMiAxNjUuNCAzMkgzNDYuNmM0MC44IDAgNzcuMSAyNS44IDkwLjYgNjQuM2wzNS4yIDEwMC41YzIzLjIgOS42IDM5LjYgMzIuNSAzOS42IDU5LjJWNDAwdjQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDAwSDk2djQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlY0MDAgMjU2YzAtMjYuNyAxNi40LTQ5LjYgMzkuNi01OS4yek0xMjggMjg4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhQXV0b21vYmlsZSA9IGZhQ2FyO1xudmFyIGZhSGFuZEhvbGRpbmdIYW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtaG9sZGluZy1oYW5kJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGY3XCIsIFwiTTcuOCAyMDcuN2MtMTMuMS0xNy44LTkuMy00Mi44IDguNS01NS45TDE0Mi45IDU4LjVDMTY2LjIgNDEuMyAxOTQuNSAzMiAyMjMuNSAzMkgzODQgNTQ0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDUwNy4ybC00NC45IDM2Yy0yMi43IDE4LjItNTAuOSAyOC04MCAyOEgzMDQgMjg4IDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmg2NCAxNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgxODMuNEw2My43IDIxNi4yYy0xNy44IDEzLjEtNDIuOCA5LjMtNTUuOS04LjV6TTM4Mi40IDE2MGwwIDAgLjkgMGMtLjMgMC0uNiAwLS45IDB6TTU2OC4yIDMwNC4zYzEzLjEgMTcuOCA5LjMgNDIuOC04LjUgNTUuOUw0MzMuMSA0NTMuNWMtMjMuNCAxNy4yLTUxLjYgMjYuNS04MC43IDI2LjVIMTkyIDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJINjguOGw0NC45LTM2YzIyLjctMTguMiA1MC45LTI4IDgwLTI4SDI3MmgxNiA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyODggMjcyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDM5Mi42bDExOS43LTg4LjJjMTcuOC0xMy4xIDQyLjgtOS4zIDU1LjkgOC41ek0xOTMuNiAzNTJsMCAwLS45IDBjLjMgMCAuNiAwIC45IDB6XCJdXG59O1xudmFyIGZhQm9va09wZW5SZWFkZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1vcGVuLXJlYWRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYm9vay1yZWFkZXJcIl0sIFwiZjVkYVwiLCBcIk0xNjAgOTZhOTYgOTYgMCAxIDEgMTkyIDBBOTYgOTYgMCAxIDEgMTYwIDk2em04MCAxNTJWNTEybC00OC40LTI0LjJjLTIwLjktMTAuNC00My41LTE3LTY2LjgtMTkuM2wtOTYtOS42QzEyLjUgNDU3LjIgMCA0NDMuNSAwIDQyN1YyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJINjIuM2M2My42IDAgMTI1LjYgMTkuNiAxNzcuNyA1NnptMzIgMjY0VjI0OGM1Mi4xLTM2LjQgMTE0LjEtNTYgMTc3LjctNTZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQyN2MwIDE2LjQtMTIuNSAzMC4yLTI4LjggMzEuOGwtOTYgOS42Yy0yMy4yIDIuMy00NS45IDguOS02Ni44IDE5LjNMMjcyIDUxMnpcIl1cbn07XG52YXIgZmFCb29rUmVhZGVyID0gZmFCb29rT3BlblJlYWRlcjtcbnZhciBmYU1vdW50YWluU3VuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdW50YWluLXN1bicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUyZlwiLCBcIk01NjAgMTYwQTgwIDgwIDAgMSAwIDU2MCAwYTgwIDgwIDAgMSAwIDAgMTYwek01NS45IDUxMkgzODEuMWg3NUg1NzguOWMzMy44IDAgNjEuMS0yNy40IDYxLjEtNjEuMWMwLTExLjItMy4xLTIyLjItOC45LTMxLjhsLTEzMi0yMTYuM0M0OTUgMTk2LjEgNDg3LjggMTkyIDQ4MCAxOTJzLTE1IDQuMS0xOS4xIDEwLjdsLTQ4LjIgNzlMMjg2LjggODFjLTYuNi0xMC42LTE4LjMtMTctMzAuOC0xN3MtMjQuMSA2LjQtMzAuOCAxN0w4LjYgNDI2LjRDMyA0MzUuMyAwIDQ0NS42IDAgNDU2LjFDMCA0ODcgMjUgNTEyIDU1LjkgNTEyelwiXVxufTtcbnZhciBmYUFycm93c0xlZnRSaWdodFRvTGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtbGVmdC1yaWdodC10by1saW5lJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGJhXCIsIFwiTTMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjk2QzAgNzguMyAxNC4zIDY0IDMyIDY0em0yMTQuNiA3My40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zTDIwNS4zIDIyNGwyMjkuNSAwLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDQzNC43IDI4OGwtMjI5LjUgMCA0MS40IDQxLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTk2LTk2Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHpNNjQwIDk2VjQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwiXVxufTtcbnZhciBmYURpY2VEMjAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1kMjAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2Y2ZcIiwgXCJNNDguNyAxMjUuOGw1My4yIDMxLjljNy44IDQuNyAxNy44IDIgMjIuMi01LjlMMjAxLjYgMTIuMWMzLTUuNC0uOS0xMi4xLTcuMS0xMi4xYy0xLjYgMC0zLjIgLjUtNC42IDEuNEw0Ny45IDk4LjhjLTkuNiA2LjYtOS4yIDIwLjkgLjggMjYuOXpNMTYgMTcxLjdWMjk1LjNjMCA4IDEwLjQgMTEgMTQuNyA0LjRsNjAtOTJjNS03LjYgMi42LTE3LjgtNS4yLTIyLjVMNDAuMiAxNThDMjkuNiAxNTEuNiAxNiAxNTkuMyAxNiAxNzEuN3pNMzEwLjQgMTIuMWw3Ny42IDEzOS42YzQuNCA3LjkgMTQuNSAxMC42IDIyLjIgNS45bDUzLjItMzEuOWMxMC02IDEwLjQtMjAuMyAuOC0yNi45TDMyMi4xIDEuNGMtMS40LS45LTMtMS40LTQuNi0xLjRjLTYuMiAwLTEwLjEgNi43LTcuMSAxMi4xek00OTYgMTcxLjdjMC0xMi40LTEzLjYtMjAuMS0yNC4yLTEzLjdsLTQ1LjMgMjcuMmMtNy44IDQuNy0xMC4xIDE0LjktNS4yIDIyLjVsNjAgOTJjNC4zIDYuNyAxNC43IDMuNiAxNC43LTQuNFYxNzEuN3ptLTQ5LjMgMjQ2TDI4Ni4xIDQzNi42Yy04LjEgLjktMTQuMSA3LjgtMTQuMSAxNS45djUyLjhjMCAzLjcgMyA2LjggNi44IDYuOGMuOCAwIDEuNi0uMSAyLjQtLjRsMTcyLjctNjRjNi4xLTIuMiAxMC4xLTggMTAuMS0xNC41YzAtOS4zLTguMS0xNi41LTE3LjMtMTUuNHpNMjMzLjIgNTEyYzMuNyAwIDYuOC0zIDYuOC02LjhWNDUyLjZjMC04LjEtNi4xLTE0LjktMTQuMS0xNS45bC0xNjAuNi0xOWMtOS4yLTEuMS0xNy4zIDYuMS0xNy4zIDE1LjRjMCA2LjUgNCAxMi4zIDEwLjEgMTQuNWwxNzIuNyA2NGMuOCAuMyAxLjYgLjQgMi40IC40ek00MS43IDM4Mi45bDE3MC45IDIwLjJjNy44IC45IDEzLjQtNy41IDkuNS0xNC4zbC04NS43LTE1MGMtNS45LTEwLjQtMjAuNy0xMC44LTI3LjMtLjhMMzAuMiAzNTguMmMtNi41IDkuOS0uMyAyMy4zIDExLjUgMjQuN3ptNDM5LjYtMjQuOEw0MDIuOSAyMzguMWMtNi41LTEwLTIxLjQtOS42LTI3LjMgLjhMMjkwLjIgMzg4LjVjLTMuOSA2LjggMS42IDE1LjIgOS41IDE0LjNsMTcwLjEtMjBjMTEuOC0xLjQgMTgtMTQuNyAxMS41LTI0LjZ6bS0yMTYuOSAxMWw3OC40LTEzNy4yYzYuMS0xMC43LTEuNi0yMy45LTEzLjktMjMuOUgxODMuMWMtMTIuMyAwLTIwIDEzLjMtMTMuOSAyMy45bDc4LjQgMTM3LjJjMy43IDYuNCAxMyA2LjQgMTYuNyAwek0xNzQuNCAxNzZIMzM3LjZjMTIuMiAwIDE5LjktMTMuMSAxNC0yMy44bC04MC0xNDRjLTIuOC01LjEtOC4yLTguMi0xNC04LjJoLTMuMmMtNS44IDAtMTEuMiAzLjItMTQgOC4ybC04MCAxNDRjLTUuOSAxMC43IDEuOCAyMy44IDE0IDIzLjh6XCJdXG59O1xudmFyIGZhVHJ1Y2tEcm9wbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLWRyb3BsZXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OGNcIiwgXCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzY4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4Vjk2aDUwLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMNTg5LjMgMTkyYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWMjU2djMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4ek00MTYgMjU2SDU0NFYyMzcuM0w0NjYuNyAxNjBINDE2djk2ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzY4LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTIwOCAyNzJjMzkuOCAwIDcyLTI5LjYgNzItNjZjMC0yNy0zOS40LTgyLjktNTkuOS0xMTAuM2MtNi4xLTguMi0xOC4xLTguMi0yNC4yIDBDMTc1LjQgMTIzIDEzNiAxNzkgMTM2IDIwNmMwIDM2LjUgMzIuMiA2NiA3MiA2NnpcIl1cbn07XG52YXIgZmFGaWxlQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1YTFcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTU5LjMgMTA3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4yLTIyLjYgMEw0MzIgMzQ1LjRsLTM2LjctMzYuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw0MDkuNCAzNjhsLTM2LjcgMzYuN2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDQzMiAzOTAuNmwzNi43IDM2LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42TDQ1NC42IDM2OGwzNi43LTM2Ljd6XCJdXG59O1xudmFyIGZhVGVtcGVyYXR1cmVBcnJvd1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWFycm93LXVwJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJ0ZW1wZXJhdHVyZS11cFwiXSwgXCJlMDQwXCIsIFwiTTEyOCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OFYyNzYuNWMwIDE3LjMgNy4xIDMxLjkgMTUuMyA0Mi41QzI0OS44IDMzMi42IDI1NiAzNDkuNSAyNTYgMzY4YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMTguNSA2LjItMzUuNCAxNi43LTQ4LjljOC4yLTEwLjYgMTUuMy0yNS4yIDE1LjMtNDIuNVYxMTJ6TTE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJWMjc2LjRjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDNDMuMiAzMDQuMiAzMiAzMzQuOCAzMiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZWMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM1YxMTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWMzIyLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHpNNDgwIDE2MGgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44aDMyVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE2MHpcIl1cbn07XG52YXIgZmFUZW1wZXJhdHVyZVVwID0gZmFUZW1wZXJhdHVyZUFycm93VXA7XG52YXIgZmFNZWRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZWRhbCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzk0MV0sIFwiZjVhMlwiLCBcIk00LjEgMzguMkMxLjQgMzQuMiAwIDI5LjQgMCAyNC42QzAgMTEgMTEgMCAyNC42IDBIMTMzLjljMTEuMiAwIDIxLjcgNS45IDI3LjQgMTUuNWw2OC41IDExNC4xYy00OC4yIDYuMS05MS4zIDI4LjYtMTIzLjQgNjEuOUw0LjEgMzguMnptNTAzLjcgMEw0MDUuNiAxOTEuNWMtMzIuMS0zMy4zLTc1LjItNTUuOC0xMjMuNC02MS45TDM1MC43IDE1LjVDMzU2LjUgNS45IDM2Ni45IDAgMzc4LjEgMEg0ODcuNEM1MDEgMCA1MTIgMTEgNTEyIDI0LjZjMCA0LjgtMS40IDkuNi00LjEgMTMuNnpNODAgMzM2YTE3NiAxNzYgMCAxIDEgMzUyIDBBMTc2IDE3NiAwIDEgMSA4MCAzMzZ6bTE4NC40LTk0LjljLTMuNC03LTEzLjMtNy0xNi44IDBsLTIyLjQgNDUuNGMtMS40IDIuOC00IDQuNy03IDUuMUwxNjggMjk4LjljLTcuNyAxLjEtMTAuNyAxMC41LTUuMiAxNmwzNi4zIDM1LjRjMi4yIDIuMiAzLjIgNS4yIDIuNyA4LjNsLTguNiA0OS45Yy0xLjMgNy42IDYuNyAxMy41IDEzLjYgOS45bDQ0LjgtMjMuNmMyLjctMS40IDYtMS40IDguNyAwbDQ0LjggMjMuNmM2LjkgMy42IDE0LjktMi4yIDEzLjYtOS45bC04LjYtNDkuOWMtLjUtMyAuNS02LjEgMi43LTguM2wzNi4zLTM1LjRjNS42LTUuNCAyLjUtMTQuOC01LjItMTZsLTUwLjEtNy4zYy0zLS40LTUuNy0yLjQtNy01LjFsLTIyLjQtNDUuNHpcIl1cbn07XG52YXIgZmFCZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NzE2XSwgXCJmMjM2XCIsIFwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjMyMEgyODhWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMySDU0NGM1MyAwIDk2IDQzIDk2IDk2VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0MTZIMzUyIDMyMCA2NHYzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptMTQ0IDk2YTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwiXVxufTtcbnZhciBmYVNxdWFyZUggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLWgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImgtc3F1YXJlXCJdLCBcImYwZmRcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0zMzYgMTUyVjI1NiAzNjBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWMjgwSDE2MGwwIDgwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMjA4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2ODBIMjg4VjE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0elwiXVxufTtcbnZhciBmYUhTcXVhcmUgPSBmYVNxdWFyZUg7XG52YXIgZmFQb2RjYXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BvZGNhc3QnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyY2VcIiwgXCJNMzE5LjQgMzcyYzQ4LjUtMzEuMyA4MC42LTg1LjkgODAuNi0xNDhjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZTNDggMTI2LjggNDggMjI0YzAgNjIuMSAzMi4xIDExNi42IDgwLjYgMTQ4YzEuMiAxNy4zIDQgMzggNy4yIDU3LjFsLjIgMUM1NiAzOTUuOCAwIDMxNi41IDAgMjI0QzAgMTAwLjMgMTAwLjMgMCAyMjQgMFM0NDggMTAwLjMgNDQ4IDIyNGMwIDkyLjUtNTYgMTcxLjktMTM2IDIwNi4xbC4yLTEuMWMzLjEtMTkuMiA2LTM5LjggNy4yLTU3em0tMi4zLTM4LjFjLTEuNi01LjctMy45LTExLjEtNy0xNi4yYy01LjgtOS43LTEzLjUtMTctMjEuOS0yMi40YzE5LjUtMTcuNiAzMS44LTQzIDMxLjgtNzEuM2MwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDI4LjMgMTIuMyA1My44IDMxLjggNzEuM2MtOC40IDUuNC0xNi4xIDEyLjctMjEuOSAyMi40Yy0zLjEgNS4xLTUuNCAxMC41LTcgMTYuMkM5OS44IDMwNy41IDgwIDI2OCA4MCAyMjRjMC03OS41IDY0LjUtMTQ0IDE0NC0xNDRzMTQ0IDY0LjUgMTQ0IDE0NGMwIDQ0LTE5LjggODMuNS01MC45IDEwOS45ek0yMjQgMzEyYzMyLjkgMCA2NCA4LjYgNjQgNDMuOGMwIDMzLTEyLjkgMTA0LjEtMjAuNiAxMzIuOWMtNS4xIDE5LTI0LjUgMjMuNC00My40IDIzLjRzLTM4LjItNC40LTQzLjQtMjMuNGMtNy44LTI4LjUtMjAuNi05OS43LTIwLjYtMTMyLjhjMC0zNS4xIDMxLjEtNDMuOCA2NC00My44em0wLTE0NGE1NiA1NiAwIDEgMSAwIDExMiA1NiA1NiAwIDEgMSAwLTExMnpcIl1cbn07XG52YXIgZmFUZW1wZXJhdHVyZUZ1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVtcGVyYXR1cmUtZnVsbCcsXG4gIGljb246IFszMjAsIDUxMiwgW1widGVtcGVyYXR1cmUtNFwiLCBcInRoZXJtb21ldGVyLTRcIiwgXCJ0aGVybW9tZXRlci1mdWxsXCJdLCBcImYyYzdcIiwgXCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OFYyNzYuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNVYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEyVjI3Ni41YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZWMzIyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwiXVxufTtcbnZhciBmYVRlbXBlcmF0dXJlNCA9IGZhVGVtcGVyYXR1cmVGdWxsO1xudmFyIGZhVGhlcm1vbWV0ZXI0ID0gZmFUZW1wZXJhdHVyZUZ1bGw7XG52YXIgZmFUaGVybW9tZXRlckZ1bGwgPSBmYVRlbXBlcmF0dXJlRnVsbDtcbnZhciBmYUJlbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVsbCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODI3NiwgNjE2MDJdLCBcImYwZjNcIiwgXCJNMjI0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjUxLjJDMTE5IDY2IDY0IDEzMC42IDY0IDIwOHYxOC44YzAgNDctMTcuMyA5Mi40LTQ4LjUgMTI3LjZsLTcuNCA4LjNjLTguNCA5LjQtMTAuNCAyMi45LTUuMyAzNC40UzE5LjQgNDE2IDMyIDQxNkg0MTZjMTIuNiAwIDI0LTcuNCAyOS4yLTE4LjlzMy4xLTI1LTUuMy0zNC40bC03LjQtOC4zQzQwMS4zIDMxOS4yIDM4NCAyNzMuOSAzODQgMjI2LjhWMjA4YzAtNzcuNC01NS0xNDItMTI4LTE1Ni44VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem00NS4zIDQ5My4zYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNIMjI0IDE2MGMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3pcIl1cbn07XG52YXIgZmFTdXBlcnNjcmlwdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdXBlcnNjcmlwdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEyYlwiLCBcIk00ODAgMzJjMC0xMS4xLTUuNy0yMS40LTE1LjItMjcuMnMtMjEuMi02LjQtMzEuMS0xLjRsLTMyIDE2Yy0xNS44IDcuOS0yMi4yIDI3LjEtMTQuMyA0Mi45QzM5MyA3My41IDQwNC4zIDgwIDQxNiA4MHY4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMiAzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYzMnpNMzIgNjRDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMySDQ3LjNsODkuNiAxMjhMNDcuMyAzODRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjRjMTAuNCAwIDIwLjItNS4xIDI2LjItMTMuNkwxNzYgMzExLjhsODUuOCAxMjIuNmM2IDguNiAxNS44IDEzLjYgMjYuMiAxMy42aDMyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMwNC43TDIxNS4xIDI1Nmw4OS42LTEyOEgzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4Yy0xMC40IDAtMjAuMiA1LjEtMjYuMiAxMy42TDE3NiAyMDAuMiA5MC4yIDc3LjZDODQuMiA2OS4xIDc0LjQgNjQgNjQgNjRIMzJ6XCJdXG59O1xudmFyIGZhUGx1Z0NpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTYwXCIsIFwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNTkuMy0xODAuN0w0NTQuNiAzNjhsMzYuNyAzNi43YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBMNDMyIDM5MC42bC0zNi43IDM2LjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMNDA5LjQgMzY4bC0zNi43LTM2LjdjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0MzIgMzQ1LjRsMzYuNy0zNi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIl1cbn07XG52YXIgZmFTdGFyT2ZMaWZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXItb2YtbGlmZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjYyMVwiLCBcIk0yMDggMzJjMC0xNy43IDE0LjMtMzIgMzItMzJoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMTcyLjlsMTIyLTcwLjRjMTUuMy04LjggMzQuOS0zLjYgNDMuNyAxMS43bDE2IDI3LjdjOC44IDE1LjMgMy42IDM0LjktMTEuNyA0My43TDM1MiAyNTZsMTIyIDcwLjRjMTUuMyA4LjggMjAuNSAyOC40IDExLjcgNDMuN2wtMTYgMjcuN2MtOC44IDE1LjMtMjguNCAyMC42LTQzLjcgMTEuN0wzMDQgMzM5LjFWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDI0MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzM5LjFMODYgNDA5LjZjLTE1LjMgOC44LTM0LjkgMy42LTQzLjctMTEuN2wtMTYtMjcuN2MtOC44LTE1LjMtMy42LTM0LjkgMTEuNy00My43TDE2MCAyNTYgMzggMTg1LjZjLTE1LjMtOC44LTIwLjUtMjguNC0xMS43LTQzLjdsMTYtMjcuN0M1MS4xIDk4LjggNzAuNyA5My42IDg2IDEwMi40bDEyMiA3MC40VjMyelwiXVxufTtcbnZhciBmYVBob25lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzZGRcIiwgXCJNMjI4LjkgMjQuNmMtNy43LTE4LjYtMjgtMjguNS00Ny40LTIzLjJsLTg4IDI0Qzc2LjEgMzAuMiA2NCA0NiA2NCA2NGMwIDEwNy40IDM3LjggMjA2IDEwMC44IDI4My4xTDkuMiA0NjkuMWMtMTAuNCA4LjItMTIuMyAyMy4zLTQuMSAzMy43czIzLjMgMTIuMyAzMy43IDQuMWw1OTItNDY0YzEwLjQtOC4yIDEyLjMtMjMuMyA0LjEtMzMuN3MtMjMuMy0xMi4zLTMzLjctNC4xTDI1MyAyNzhjLTE3LjgtMjEuNS0zMi45LTQ1LjItNDUtNzAuN0wyNTcuMyAxNjdjMTMuNy0xMS4yIDE4LjQtMzAgMTEuNi00Ni4zbC00MC05NnptOTYuOCAzMTlsLTkxLjMgNzJDMzEwLjcgNDc2IDQwNy4xIDUxMiA1MTIgNTEyYzE4IDAgMzMuOC0xMi4xIDM4LjYtMjkuNWwyNC04OGM1LjMtMTkuNC00LjYtMzkuNy0yMy4yLTQ3LjRsLTk2LTQwYy0xNi4zLTYuOC0zNS4yLTIuMS00Ni4zIDExLjZMMzY4LjcgMzY4Yy0xNS03LjEtMjkuMy0xNS4yLTQzLTI0LjN6XCJdXG59O1xudmFyIGZhUGFpbnRSb2xsZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFpbnQtcm9sbGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWFhXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDM1MmMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTE2MCAzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJWMzA0YzAtNDQuMiAzNS44LTgwIDgwLTgwSDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMlYxNjAgNjkuNWMzNy4zIDEzLjIgNjQgNDguNyA2NCA5MC41djMyYzAgNTMtNDMgOTYtOTYgOTZIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzUyelwiXVxufTtcbnZhciBmYUhhbmRzaGFrZUFuZ2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzaGFrZS1hbmdsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiaGFuZHMtaGVscGluZ1wiXSwgXCJmNGM0XCIsIFwiTTU0NCAyNDh2My4zbDY5LjctNjkuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw1MzUuNiAyNC40Yy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMEw0MTYuMyA2NC41Yy0yLjctLjMtNS41LS41LTguMy0uNUgyOTZjLTM3LjEgMC02Ny42IDI4LTcxLjYgNjRIMjI0VjI0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwVjE3NmMwIDAgMC0uMSAwLS4xVjE2MGwxNiAwIDEzNiAwYzAgMCAwIDAgLjEgMEg0NjRjNDQuMiAwIDgwIDM1LjggODAgODB2OHpNMzM2IDE5MnY1NmMwIDM5LjgtMzIuMiA3Mi03MiA3MnMtNzItMzIuMi03Mi03MlYxMjkuNGMtMzUuOSA2LjItNjUuOCAzMi4zLTc2IDY4LjJMOTkuNSAyNTUuMiAyNi4zIDMyOC40Yy0yMS45IDIxLjktMjEuOSA1Ny4zIDAgNzkuMmw3OC4xIDc4LjFjMjEuOSAyMS45IDU3LjMgMjEuOSA3OS4yIDBsMzcuNy0zNy43Yy45IDAgMS44IC4xIDIuNyAuMUgzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZINDMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMTIuOC01LTI0LjQtMTMuMi0zM2MyNS43LTUgNDUuMS0yNy42IDQ1LjItNTQuOHYtLjRjLS4xLTMwLjgtMjUuMS01NS44LTU2LTU1LjhjMCAwIDAgMCAwIDBsLTEyMCAwelwiXVxufTtcbnZhciBmYUhhbmRzSGVscGluZyA9IGZhSGFuZHNoYWtlQW5nbGU7XG52YXIgZmFMb2NhdGlvbkRvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb2NhdGlvbi1kb3QnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcIm1hcC1tYXJrZXItYWx0XCJdLCBcImYzYzVcIiwgXCJNMjE1LjcgNDk5LjJDMjY3IDQzNSAzODQgMjc5LjQgMzg0IDE5MkMzODQgODYgMjk4IDAgMTkyIDBTMCA4NiAwIDE5MmMwIDg3LjQgMTE3IDI0MyAxNjguMyAzMDcuMmMxMi4zIDE1LjMgMzUuMSAxNS4zIDQ3LjQgMHpNMTkyIDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIl1cbn07XG52YXIgZmFNYXBNYXJrZXJBbHQgPSBmYUxvY2F0aW9uRG90O1xudmFyIGZhRmlsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI4MTk2LCAxMjg0NTksIDYxNDYyXSwgXCJmMTViXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwSDIyNFYxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4elwiXVxufTtcbnZhciBmYUdyZWF0ZXJUaGFuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyZWF0ZXItdGhhbicsXG4gIGljb246IFszODQsIDUxMiwgWzYyNzY5XSwgXCIzZVwiLCBcIk0zLjQgODEuN2MtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOUwyODAuNSAyNTYgMTcuNyAzODcuNEMxLjkgMzk1LjMtNC41IDQxNC41IDMuNCA0MzAuM3MyNy4xIDIyLjIgNDIuOSAxNC4zbDMyMC0xNjBjMTAuOC01LjQgMTcuNy0xNi41IDE3LjctMjguNnMtNi44LTIzLjItMTcuNy0yOC42bC0zMjAtMTYwYy0xNS44LTcuOS0zNS0xLjUtNDIuOSAxNC4zelwiXVxufTtcbnZhciBmYVBlcnNvblN3aW1taW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1zd2ltbWluZycsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyNzk0NiwgXCJzd2ltbWVyXCJdLCBcImY1YzRcIiwgXCJNMzA5LjUgMTc4LjRMNDQ3LjkgMjk3LjFjLTEuNiAuOS0zLjIgMi00LjggM2MtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zYy0xOS42IDAtNDAuOC03LjctNTkuMi0yMC4zYy0yMi4xLTE1LjUtNTEuNi0xNS41LTczLjcgMGMtMTcuMSAxMS44LTM4IDIwLjMtNTkuMiAyMC4zYy0xMC4xIDAtMjEuMS0yLjItMzEuOS02LjJDMTYzLjEgMTkzLjIgMjYyLjIgOTYgMzg0IDk2aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NGMtMjYuOSAwLTUyLjMgNi42LTc0LjUgMTguNHpNMTYwIDE2MEE2NCA2NCAwIDEgMSAzMiAxNjBhNjQgNjQgMCAxIDEgMTI4IDB6TTMwNi41IDMyNS45QzMyOSAzNDEuNCAzNTYuNSAzNTIgMzg0IDM1MmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0MDUuNyA0MTcgNDE2IDM4NCA0MTZjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyAzNDEuMiAxNjUuMSAzNTIgMTkyIDM1MmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIl1cbn07XG52YXIgZmFTd2ltbWVyID0gZmFQZXJzb25Td2ltbWluZztcbnZhciBmYUFycm93RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1kb3duJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbODU5NV0sIFwiZjA2M1wiLCBcIk0xNjkuNCA0NzAuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzNzAuOCAyMjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzMDYuN0w1NC42IDI2NS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwelwiXVxufTtcbnZhciBmYURyb3BsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJvcGxldCcsXG4gIGljb246IFszODQsIDUxMiwgWzEyODE2NywgXCJ0aW50XCJdLCBcImYwNDNcIiwgXCJNMTkyIDUxMkM4NiA1MTIgMCA0MjYgMCAzMjBDMCAyMjguOCAxMzAuMiA1Ny43IDE2Ni42IDExLjdDMTcyLjYgNC4yIDE4MS41IDAgMTkxLjEgMGgxLjhjOS42IDAgMTguNSA0LjIgMjQuNSAxMS43QzI1My44IDU3LjcgMzg0IDIyOC44IDM4NCAzMjBjMCAxMDYtODYgMTkyLTE5MiAxOTJ6TTk2IDMzNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNDQuMiAwLTgwLTM1LjgtODAtODB6XCJdXG59O1xudmFyIGZhVGludCA9IGZhRHJvcGxldDtcbnZhciBmYUVyYXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlcmFzZXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYxMmRcIiwgXCJNMjkwLjcgNTcuNEw1Ny40IDI5MC43Yy0yNSAyNS0yNSA2NS41IDAgOTAuNWw4MCA4MGMxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43SDI4OGg5LjRINTEyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM4Ny45TDUxOC42IDI4NS4zYzI1LTI1IDI1LTY1LjUgMC05MC41TDM4MS4zIDU3LjRjLTI1LTI1LTY1LjUtMjUtOTAuNSAwek0yOTcuNCA0MTZIMjg4bC0xMDUuNCAwLTgwLTgwTDIyNy4zIDIxMS4zIDM2NC43IDM0OC43IDI5Ny40IDQxNnpcIl1cbn07XG52YXIgZmFFYXJ0aEFtZXJpY2FzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VhcnRoLWFtZXJpY2FzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3NzU4LCBcImVhcnRoXCIsIFwiZWFydGgtYW1lcmljYVwiLCBcImdsb2JlLWFtZXJpY2FzXCJdLCBcImY1N2RcIiwgXCJNNTcuNyAxOTNsOS40IDE2LjRjOC4zIDE0LjUgMjEuOSAyNS4yIDM4IDI5LjhMMTYzIDI1NS43YzE3LjIgNC45IDI5IDIwLjYgMjkgMzguNXYzOS45YzAgMTEgNi4yIDIxIDE2IDI1LjlzMTYgMTQuOSAxNiAyNS45djM5YzAgMTUuNiAxNC45IDI2LjkgMjkuOSAyMi42YzE2LjEtNC42IDI4LjYtMTcuNSAzMi43LTMzLjhsMi44LTExLjJjNC4yLTE2LjkgMTUuMi0zMS40IDMwLjMtNDBsOC4xLTQuNmMxNS04LjUgMjQuMi0yNC41IDI0LjItNDEuN3YtOC4zYzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTMuOS0zLjljLTktOS0yMS4yLTE0LjEtMzMuOS0xNC4xSDI1N2MtMTEuMSAwLTIyLjEtMi45LTMxLjgtOC40bC0zNC41LTE5LjdjLTQuMy0yLjUtNy42LTYuNS05LjItMTEuMmMtMy4yLTkuNiAxLjEtMjAgMTAuMi0yNC41bDUuOS0zYzYuNi0zLjMgMTQuMy0zLjkgMjEuMy0xLjVsMjMuMiA3LjdjOC4yIDIuNyAxNy4yLS40IDIxLjktNy41YzQuNy03IDQuMi0xNi4zLTEuMi0yMi44bC0xMy42LTE2LjNjLTEwLTEyLTkuOS0yOS41IC4zLTQxLjNsMTUuNy0xOC4zYzguOC0xMC4zIDEwLjItMjUgMy41LTM2LjdsLTIuNC00LjJjLTMuNS0uMi02LjktLjMtMTAuNC0uM0MxNjMuMSA0OCA4NC40IDEwOC45IDU3LjcgMTkzek00NjQgMjU2YzAtMzYuOC05LjYtNzEuNC0yNi40LTEwMS41TDQxMiAxNjQuOGMtMTUuNyA2LjMtMjMuOCAyMy44LTE4LjUgMzkuOGwxNi45IDUwLjdjMy41IDEwLjQgMTIgMTguMyAyMi42IDIwLjlsMjkuMSA3LjNjMS4yLTkgMS44LTE4LjIgMS44LTI3LjV6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIl1cbn07XG52YXIgZmFFYXJ0aCA9IGZhRWFydGhBbWVyaWNhcztcbnZhciBmYUVhcnRoQW1lcmljYSA9IGZhRWFydGhBbWVyaWNhcztcbnZhciBmYUdsb2JlQW1lcmljYXMgPSBmYUVhcnRoQW1lcmljYXM7XG52YXIgZmFQZXJzb25CdXJzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tYnVyc3QnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1M2JcIiwgXCJNNDgwIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTggMzg0VjM1MmgxNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYyNTYuOWwyOC42IDQ3LjVjOS4xIDE1LjEgMjguOCAyMCA0My45IDEwLjlzMjAtMjguOCAxMC45LTQzLjlsLTU4LjMtOTdjLTE3LjQtMjguOS00OC42LTQ2LjYtODIuMy00Ni42SDQ2NS4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUw0MDggMjU2LjlWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6TTE5MC45IDE4LjFDMTg4LjQgMTIgMTgyLjYgOCAxNzYgOHMtMTIuNCA0LTE0LjkgMTAuMWwtMjkuNCA3NEw1NS42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xTDEwLjkgMjA2LjRjLTUuNCAzLjctOCAxMC4zLTYuNSAxNi43czYuNyAxMS4yIDEzLjEgMTIuMmw3OC43IDEyLjJMOTAuNiAzMjdjLS41IDYuNSAzLjEgMTIuNyA5IDE1LjVzMTIuOSAxLjggMTcuOC0yLjZMMTc2IDI4Ni4xbDU4LjYgNTMuOWM0LjggNC40IDExLjkgNS41IDE3LjggMi42czkuNS05IDktMTUuNWwtNS42LTc5LjQgNTAuNS03LjggMjQuNC00MC41LTU1LjItMzhMMzE1IDkyLjJjMy4zLTUuNyAyLjctMTIuOC0xLjQtMTcuOXMtMTAuOS03LjItMTcuMi01LjNMMjIwLjMgOTIuMWwtMjkuNC03NHpcIl1cbn07XG52YXIgZmFEb3ZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvdmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzMzBdLCBcImY0YmFcIiwgXCJNMTYwLjggOTYuNWMxNCAxNyAzMSAzMC45IDQ5LjUgNDIuMmMyNS45IDE1LjggNTMuNyAyNS45IDc3LjcgMzEuNlYxMzguOEMyNjUuOCAxMDguNSAyNTAgNzEuNSAyNDguNiAyOGMtLjQtMTEuMy03LjUtMjEuNS0xOC40LTI0LjRjLTcuNi0yLTE1LjgtLjItMjEgNS44Yy0xMy4zIDE1LjQtMzIuNyA0NC42LTQ4LjQgODcuMnpNMzIwIDE0NHYzMC42bDAgMHYxLjNsMCAwIDAgMzIuMWMtNjAuOC01LjEtMTg1LTQzLjgtMjE5LjMtMTU3LjJDOTcuNCA0MCA4Ny45IDMyIDc2LjYgMzJjLTcuOSAwLTE1LjMgMy45LTE4LjggMTFDNDYuOCA2NS45IDMyIDExMi4xIDMyIDE3NmMwIDExNi45IDgwLjEgMTgwLjUgMTE4LjQgMjAyLjhMMTEuOCA0MTYuNkM2LjcgNDE4IDIuNiA0MjEuOCAuOSA0MjYuOHMtLjggMTAuNiAyLjMgMTQuOEMyMS43IDQ2Ni4yIDc3LjMgNTEyIDE2MCA1MTJjMy42IDAgNy4yLTEuMiAxMC0zLjVMMjQ1LjYgNDQ4SDMyMGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFYxMjhsMjkuOS00NC45YzEuMy0yIDIuMS00LjQgMi4xLTYuOGMwLTYuOC01LjUtMTIuMy0xMi4zLTEyLjNINDAwYy00NC4yIDAtODAgMzUuOC04MCA4MHptODAtMTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwiXVxufTtcbnZhciBmYUJhdHRlcnlFbXB0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXR0ZXJ5LWVtcHR5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJiYXR0ZXJ5LTBcIl0sIFwiZjI0NFwiLCBcIk04MCAxNjBjLTguOCAwLTE2IDcuMi0xNiAxNlYzMzZjMCA4LjggNy4yIDE2IDE2IDE2SDQ2NGM4LjggMCAxNi03LjIgMTYtMTZWMTc2YzAtOC44LTcuMi0xNi0xNi0xNkg4MHpNMCAxNzZjMC00NC4yIDM1LjgtODAgODAtODBINDY0YzQ0LjIgMCA4MCAzNS44IDgwIDgwdjE2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMydjE2YzAgNDQuMi0zNS44IDgwLTgwIDgwSDgwYy00NC4yIDAtODAtMzUuOC04MC04MFYxNzZ6XCJdXG59O1xudmFyIGZhQmF0dGVyeTAgPSBmYUJhdHRlcnlFbXB0eTtcbnZhciBmYVNvY2tzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvY2tzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTEwXSwgXCJmNjk2XCIsIFwiTTE3NS4yIDQ3Ni42Yy05LjctMTgtMTUuMi0zOC43LTE1LjItNjAuNmMwLTQwLjMgMTktNzguMiA1MS4yLTEwMi40bDY0LTQ4YzguMS02IDEyLjgtMTUuNSAxMi44LTI1LjZWOTZIMTI4VjI0MGMwIDIwLjEtOS41IDM5LjEtMjUuNiA1MS4ybC02NCA0OEMxNC4yIDM1Ny4zIDAgMzg1LjggMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmMyMC44IDAgNDEtNi43IDU3LjYtMTkuMmwyMS42LTE2LjJ6TTEyOCA2NEgyODhWNDhjMC0xNC41IDMuOS0yOC4yIDEwLjctMzkuOUMyOTEgMyAyODEuOSAwIDI3MiAwSDE3NmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhWNjR6TTMyMCA5NlYyNDBjMCAyMC4xLTkuNSAzOS4xLTI1LjYgNTEuMmwtNjQgNDhDMjA2LjIgMzU3LjMgMTkyIDM4NS44IDE5MiA0MTZjMCA1MyA0MyA5NiA5NiA5NmMyMC44IDAgNDEtNi43IDU3LjYtMTkuMmwxMTUuMi04Ni40QzQ5MyAzODIuMiA1MTIgMzQ0LjMgNTEyIDMwNFY5NkgzMjB6TTUxMiA2NFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEgzNjhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjY0SDUxMnpcIl1cbn07XG52YXIgZmFJbmJveCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmJveCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAxY1wiLCBcIk0xMjEgMzJDOTEuNiAzMiA2NiA1MiA1OC45IDgwLjVMMS45IDMwOC40Qy42IDMxMy41IDAgMzE4LjcgMCAzMjMuOVY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjMyMy45YzAtNS4yLS42LTEwLjQtMS45LTE1LjVsLTU3LTIyNy45QzQ0NiA1MiA0MjAuNCAzMiAzOTEgMzJIMTIxem0wIDY0SDM5MWw0OCAxOTJIMzg3LjhjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTE0LjMgMjguNmMtNS40IDEwLjgtMTYuNSAxNy43LTI4LjYgMTcuN0gxOTUuOGMtMTIuMSAwLTIzLjItNi44LTI4LjYtMTcuN2wtMTQuMy0yOC42Yy01LjQtMTAuOC0xNi41LTE3LjctMjguNi0xNy43SDczTDEyMSA5NnpcIl1cbn07XG52YXIgZmFTZWN0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NlY3Rpb24nLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImU0NDdcIiwgXCJNNjQuOSA5NkM2Ny4xIDg0LjQgNzMuNyA3Ni4yIDg2IDcwLjZjMTMuOC02LjIgMzQuOC04LjkgNjEuMi00LjVjOC44IDEuNCAzNi4xIDcuMSA0NC4xIDkuM2MxNyA0LjggMzQuNy01LjEgMzkuNS0yMi4ycy01LjEtMzQuNy0yMi4yLTM5LjVjLTExLjEtMy4xLTQxLTkuMi01MC45LTEwLjhDMTIzLTIuNyA4OC4zLS42IDU5LjcgMTIuM0MyOS45IDI1LjggNy41IDUwLjkgMS42IDg2LjVjLS4xIC41LS4yIDEuMS0uMiAxLjZjLTIuMiAxOS43IC4zIDM3LjkgOC4xIDU0LjFjNy43IDE2LjEgMTkuNCAyOCAzMiAzNi45Yy42IC41IDEuMyAuOSAyIDEuNEMyMi4zIDE5NC4yIDYuNSAyMTUuMSAxLjcgMjQzYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjMgMTkuMyAuNCAzNy4xIDguNCA1M2M3LjkgMTUuNiAxOS44IDI3IDMyLjMgMzUuNWMyMi40IDE1LjIgNTEuOSAyNCA3NS40IDMxbDAgMCAzLjcgMS4xYzI3LjIgOC4yIDQ2LjkgMTQuNiA1OS40IDIzLjhjNS41IDQgOC4yIDcuNiA5LjUgMTAuOWMxLjMgMy4yIDIuNiA4LjYgLjkgMTguMWMtMS43IDEwLjEtNy43IDE4LTIwLjcgMjMuNWMtMTQgNi0zNS40IDguNS02MiA0LjRjLTEyLjgtMi4xLTM1LjEtOS43LTU0LjEtMTYuMmwwIDBjLTQuMy0xLjUtOC41LTIuOS0xMi4zLTQuMkMyNS4zIDQyMCA3LjIgNDI5LjEgMS42IDQ0NS44czMuNSAzNC45IDIwLjMgNDAuNWMyLjYgLjggNS43IDEuOSA5LjIgMy4xYzE4LjYgNi4zIDQ4LjUgMTYuNiA2Ny4zIDE5LjZsMCAwIC4yIDBjMzQuNSA1LjQgNjguOCAzLjQgOTcuMi04LjdjMjkuNC0xMi42IDUyLjUtMzYuNSA1OC41LTcxLjVjMy4zLTE5LjMgMS45LTM3LjQtNS01My45Yy02LjMtMTUtMTYuNC0yNi40LTI3LjYtMzUuMmMxNi41LTEzLjkgMjguNS0zMy4yIDMyLjYtNTguMmMzLjItMTkuOCAxLjktMzguMy00LjgtNTUuMWMtNi43LTE2LjgtMTcuOC0yOS40LTMwLjItMzljLTIyLjgtMTcuNi01My42LTI3LjQtNzcuNy0zNWwtMS40LS41Yy0yNy40LTguNy00Ny44LTE1LjMtNjEuNS0yNWMtNi4xLTQuNC05LjUtOC41LTExLjQtMTIuNGMtMS44LTMuNy0zLjItOS4zLTIuMy0xOC41em03Ni43IDIwOC41Yy0uMi0uMS0uNC0uMS0uNi0uMmwtMS40LS40Yy0yNy40LTguMi00Ny45LTE0LjUtNjEuNy0yMy44Yy02LjItNC4yLTkuMy03LjktMTEtMTEuM2MtMS41LTMtMi45LTcuNy0yLjEtMTUuN2MxLjktOS43IDcuOS0xNy4zIDIwLjUtMjIuN2MxNC02IDM1LjQtOC41IDYyLjEtNC4zbDE2LjQgMi42YzYuMyAyLjkgMTEuNyA2IDE2LjIgOS41YzUuNSA0LjIgOC40IDguMiAxMCAxMi4yYzEuNiA0IDIuOCAxMC40IDEuMSAyMC45Yy0yLjQgMTQuNy0xMi44IDI2LjQtMzcuMSAzMWwtMTIuNCAyLjN6XCJdXG59O1xudmFyIGZhR2F1Z2VIaWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhdWdlLWhpZ2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MjQ2MSwgXCJ0YWNob21ldGVyLWFsdFwiLCBcInRhY2hvbWV0ZXItYWx0LWZhc3RcIl0sIFwiZjYyNVwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTI4OCA5NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0yNTYgNDE2YzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtMTcuNC02LjktMzMuMS0xOC4xLTQ0LjZMMzY2IDE2MS43YzUuMy0xMi4xLS4yLTI2LjMtMTIuMy0zMS42cy0yNi4zIC4yLTMxLjYgMTIuM0wyNTcuOSAyODhjLS42IDAtMS4zIDAtMS45IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjR6TTE3NiAxNDRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNOTYgMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMzUyLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJdXG59O1xudmFyIGZhVGFjaG9tZXRlckFsdCA9IGZhR2F1Z2VIaWdoO1xudmFyIGZhVGFjaG9tZXRlckFsdEZhc3QgPSBmYUdhdWdlSGlnaDtcbnZhciBmYUVudmVsb3BlT3BlblRleHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZW52ZWxvcGUtb3Blbi10ZXh0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjU4XCIsIFwiTTIxNS40IDk2SDE0NCAxMDcuOCA5NnY4LjhWMTQ0djQwLjQgODlMLjIgMjAyLjVjMS42LTE4LjEgMTAuOS0zNC45IDI1LjctNDUuOEw0OCAxNDAuM1Y5NmMwLTI2LjUgMjEuNS00OCA0OC00OGg3Ni42bDQ5LjktMzYuOUMyMzIuMiAzLjkgMjQzLjkgMCAyNTYgMHMyMy44IDMuOSAzMy41IDExTDMzOS40IDQ4SDQxNmMyNi41IDAgNDggMjEuNSA0OCA0OHY0NC4zbDIyLjEgMTYuNGMxNC44IDEwLjkgMjQuMSAyNy43IDI1LjcgNDUuOEw0MTYgMjczLjR2LTg5VjE0NCAxMDQuOCA5Nkg0MDQuMiAzNjggMjk2LjYgMjE1LjR6TTAgNDQ4VjI0Mi4xTDIxNy42IDQwMy4zYzExLjEgOC4yIDI0LjYgMTIuNyAzOC40IDEyLjdzMjcuMy00LjQgMzguNC0xMi43TDUxMiAyNDIuMVY0NDh2MGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjR2MHpNMTc2IDE2MEgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDMzNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhSG9zcGl0YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9zcGl0YWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjc5NzMsIDYyNTg5LCBcImhvc3BpdGFsLWFsdFwiLCBcImhvc3BpdGFsLXdpZGVcIl0sIFwiZjBmOFwiLCBcIk0xOTIgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhINDAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjUxMkgzNjhWNDMyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4djgwSDE5MlY0OHpNNDggOTZIMTYwVjUxMkg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzIwSDgwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDBWMjI0SDgwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDBWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em01NDQgMGMyNi41IDAgNDggMjEuNSA0OCA0OHY0OEg1NjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NjRINTYwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0ODBWOTZINTkyek0zMTIgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnYyNEgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMjR2MjRjMCA4LjggNy4yIDE2IDE2IDE2aDE2YzguOCAwIDE2LTcuMiAxNi0xNlYxNTJoMjRjOC44IDAgMTYtNy4yIDE2LTE2VjEyMGMwLTguOC03LjItMTYtMTYtMTZIMzQ0VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgzMTJ6XCJdXG59O1xudmFyIGZhSG9zcGl0YWxBbHQgPSBmYUhvc3BpdGFsO1xudmFyIGZhSG9zcGl0YWxXaWRlID0gZmFIb3NwaXRhbDtcbnZhciBmYVdpbmVCb3R0bGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZS1ib3R0bGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3MmZcIiwgXCJNMzkzLjQgOS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zYy0xMS44IDExLjgtMzAuNyAxMi41LTQzLjIgMS45bC05LjUgOS41LTQ4LjggNDguOGMtOS4yIDkuMi0xMS41IDIyLjktOC42IDM1LjZjOS40IDQwLjktMS45IDg1LjYtMzMuOCAxMTcuNUwxOTcuMyA0OTMuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBsLTg4LTg4Yy0yNS0yNS0yNS02NS41IDAtOTAuNUwxODAuMiAxNTMuM2MzMS45LTMxLjkgNzYuNi00My4xIDExNy41LTMzLjhjMTIuNiAyLjkgMjYuNCAuNSAzNS41LTguNmw0OC44LTQ4LjggOS41LTkuNWMtMTAuNi0xMi42LTEwLTMxLjQgMS45LTQzLjJ6TTk5LjMgMzQ3LjNsNjUuNCA2NS40YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDk3LjQtOTcuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNjUuNC02NS40Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw5OS4zIDMyNC43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnpcIl1cbn07XG52YXIgZmFDaGVzc1Jvb2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlc3Mtcm9vaycsXG4gIGljb246IFs0NDgsIDUxMiwgWzk4MjBdLCBcImY0NDdcIiwgXCJNMzIgMTkyVjQ4YzAtOC44IDcuMi0xNiAxNi0xNmg2NGM4LjggMCAxNiA3LjIgMTYgMTZWODhjMCA0LjQgMy42IDggOCA4aDMyYzQuNCAwIDgtMy42IDgtOFY0OGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2Vjg4YzAgNC40IDMuNiA4IDggOGgzMmM0LjQgMCA4LTMuNiA4LThWNDhjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNlYxOTJjMCAxMC4xLTQuNyAxOS42LTEyLjggMjUuNkwzNTIgMjU2bDE2IDE0NEg4MEw5NiAyNTYgNDQuOCAyMTcuNkMzNi43IDIxMS42IDMyIDIwMi4xIDMyIDE5MnptMTc2IDk2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NDhjMCA4LjggNy4yIDE2IDE2IDE2ek0yMi42IDQ3My40TDY0IDQzMkgzODRsNDEuNCA0MS40YzQuMiA0LjIgNi42IDEwIDYuNiAxNmMwIDEyLjUtMTAuMSAyMi42LTIyLjYgMjIuNkgzOC42QzI2LjEgNTEyIDE2IDUwMS45IDE2IDQ4OS40YzAtNiAyLjQtMTEuOCA2LjYtMTZ6XCJdXG59O1xudmFyIGZhQmFyc1N0YWdnZXJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXJzLXN0YWdnZXJlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wicmVvcmRlclwiLCBcInN0cmVhbVwiXSwgXCJmNTUwXCIsIFwiTTAgOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDMyQzE0LjMgMTI4IDAgMTEzLjcgMCA5NnpNNjQgMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyelwiXVxufTtcbnZhciBmYVJlb3JkZXIgPSBmYUJhcnNTdGFnZ2VyZWQ7XG52YXIgZmFTdHJlYW0gPSBmYUJhcnNTdGFnZ2VyZWQ7XG52YXIgZmFEaGFybWFjaGFrcmEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGhhcm1hY2hha3JhJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTc4NF0sIFwiZjY1NVwiLCBcIk0zMzcuOCAyMDUuN2w0OC42LTQyLjVjMTMuOCAxOS4zIDIzLjQgNDEuOSAyNy40IDY2LjJsLTY0LjQgNC4zYy0yLjQtMTAuMS02LjQtMTkuNS0xMS42LTI4em0xNDAuMSAxOS41Yy01LjMtMzguOC0yMC42LTc0LjUtNDMuMi0xMDQuM2wuOC0uN0M0NDkgMTA4LjQgNDQ5LjcgODcuNiA0MzcgNzVzLTMzLjQtMTItNDUuMiAxLjVsLS43IC44Yy0yOS44LTIyLjYtNjUuNS0zNy45LTEwNC4zLTQzLjJsLjEtMS4xYzEuMi0xNy45LTEzLTMzLTMwLjktMzNzLTMyLjEgMTUuMi0zMC45IDMzbC4xIDEuMWMtMzguOCA1LjMtNzQuNSAyMC42LTEwNC4zIDQzLjJsLS43LS44QzEwOC40IDYzIDg3LjYgNjIuMyA3NSA3NXMtMTIgMzMuNCAxLjUgNDUuMmwuOCAuN2MtMjIuNiAyOS44LTM3LjkgNjUuNS00My4yIDEwNC4zbC0xLjEtLjFjLTE3LjktMS4yLTMzIDEzLTMzIDMwLjlzMTUuMiAzMi4xIDMzIDMwLjlsMS4xLS4xYzUuMyAzOC44IDIwLjYgNzQuNSA0My4yIDEwNC4zbC0uOCAuN0M2MyA0MDMuNiA2Mi4zIDQyNC40IDc1IDQzN3MzMy40IDEyIDQ1LjItMS41bC43LS44YzI5LjggMjIuNiA2NS41IDM3LjkgMTA0LjMgNDMuMmwtLjEgMS4xYy0xLjIgMTcuOSAxMyAzMyAzMC45IDMzczMyLjEtMTUuMiAzMC45LTMzbC0uMS0xLjFjMzguOC01LjMgNzQuNS0yMC42IDEwNC4zLTQzLjJsLjcgLjhjMTEuOCAxMy41IDMyLjUgMTQuMiA0NS4yIDEuNXMxMi0zMy40LTEuNS00NS4ybC0uOC0uN2MyMi42LTI5LjggMzcuOS02NS41IDQzLjItMTA0LjNsMS4xIC4xYzE3LjkgMS4yIDMzLTEzIDMzLTMwLjlzLTE1LjItMzIuMS0zMy0zMC45bC0xLjEgLjF6TTE2My4yIDEyNS42YzE5LjMtMTMuOCA0MS45LTIzLjQgNjYuMi0yNy41bDQuMyA2NC40Yy0xMCAyLjQtMTkuNSA2LjQtMjggMTEuNmwtNDIuNS00OC42em0tNjUgMTAzLjhjNC4xLTI0LjQgMTMuNy00Ni45IDI3LjUtNjYuMmw0OC42IDQyLjVjLTUuMyA4LjUtOS4yIDE4LTExLjYgMjhsLTY0LjQtNC4zem0yNy41IDExOS40Yy0xMy44LTE5LjMtMjMuNC00MS45LTI3LjUtNjYuMmw2NC40LTQuM2MyLjQgMTAgNi40IDE5LjUgMTEuNiAyOGwtNDguNiA0Mi41em0xMDMuOCA2NWMtMjQuNC00LjEtNDYuOS0xMy43LTY2LjItMjcuNGw0Mi41LTQ4LjZjOC41IDUuMyAxOCA5LjIgMjggMTEuNmwtNC4zIDY0LjR6bTExOS40LTI3LjRjLTE5LjMgMTMuOC00MS45IDIzLjQtNjYuMiAyNy40bC00LjMtNjQuNGMxMC0yLjQgMTkuNS02LjQgMjgtMTEuNmw0Mi41IDQ4LjZ6bTY1LTEwMy44Yy00LjEgMjQuNC0xMy43IDQ2LjktMjcuNCA2Ni4ybC00OC42LTQyLjVjNS4zLTguNSA5LjItMTggMTEuNi0yOGw2NC40IDQuM3ptLTY1LTE1Ni45bC00Mi41IDQ4LjZjLTguNS01LjMtMTgtOS4yLTI4LTExLjZsNC4zLTY0LjRjMjQuNCA0LjEgNDYuOSAxMy43IDY2LjIgMjcuNXpNMjU2IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhSG90ZG9nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdGRvZycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzc4OV0sIFwiZjgwZlwiLCBcIk00ODguNiAyMy40YzMxLjIgMzEuMiAzMS4yIDgxLjkgMCAxMTMuMWwtMzUyIDM1MmMtMzEuMiAzMS4yLTgxLjkgMzEuMi0xMTMuMSAwcy0zMS4yLTgxLjkgMC0xMTMuMWwzNTItMzUyYzMxLjItMzEuMiA4MS45LTMxLjIgMTEzLjEgMHpNNDQzLjMgOTIuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBjLTEyLjUgMTIuNS0yMy44IDE1LjEtMzcuNSAxNy42bC0yLjUgLjRjLTEzLjggMi41LTMxLjYgNS42LTQ4IDIyYy0xNi43IDE2LjctMjAuOSAzNi0yNC4xIDUwLjlsMCAwdjBsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFzLTIwLjUgMTIuMy0zNi4xIDE1LjdsLTEgLjJjLTE0LjkgMy4yLTM0LjIgNy40LTUwLjkgMjQuMXMtMjAuOSAzNi0yNC4xIDUwLjlsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFjLTkuMiA5LjItMTggMTAuOC0zMi43IDEzLjRsMCAwLS45IC4yYy0xNS42IDIuOC0zNC45IDYuOS01NC40IDI2LjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGMxMi41LTEyLjUgMjMuOC0xNS4xIDM3LjUtMTcuNmwyLjUtLjRjMTMuOC0yLjUgMzEuNi01LjYgNDgtMjJjMTYuNy0xNi43IDIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMXMyMC41LTEyLjMgMzYuMS0xNS43bDEtLjJjMTQuOS0zLjIgMzQuMi03LjQgNTAuOS0yNC4xczIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMWM5LjItOS4yIDE4LTEwLjggMzIuNy0xMy40bC45LS4yYzE1LjYtMi44IDM0LjktNi45IDU0LjQtMjYuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpNMTkxLjIgNDc5LjJsMjg4LTI4OEw0OTUgMjA3YzEwLjkgMTAuOSAxNyAyNS42IDE3IDQxcy02LjEgMzAuMS0xNyA0MUwyODkgNDk1Yy0xMC45IDEwLjktMjUuNiAxNy00MSAxN3MtMzAuMS02LjEtNDEtMTdsLTE1LjgtMTUuOHpNMTcgMzA1QzYuMSAyOTQuMSAwIDI3OS40IDAgMjY0czYuMS0zMC4xIDE3LTQxTDIyMyAxN0MyMzMuOSA2LjEgMjQ4LjYgMCAyNjQgMHMzMC4xIDYuMSA0MSAxN2wxNS44IDE1LjgtMjg4IDI4OEwxNyAzMDV6XCJdXG59O1xudmFyIGZhUGVyc29uV2Fsa2luZ1dpdGhDYW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi13YWxraW5nLXdpdGgtY2FuZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYmxpbmRcIl0sIFwiZjI5ZFwiLCBcIk0xNzYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOC40IDMyYy0zNi40IDAtNjkuNiAyMC41LTg1LjkgNTMuMUwzNS40IDI3My43Yy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNMMTI4IDIzMS42djQzLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNMMjI0IDM5Ny4zVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjM5MC42YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMMjI0IDMwNi43VjIxMy4zbDcwLjQgOTMuOWMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44TDI2OC44IDE2Ni40QzI1MC43IDE0Mi4yIDIyMi4yIDEyOCAxOTIgMTI4SDE2Ny42ek0xMjguMyAzNDYuOEw5NyA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wyMi04OC4yLTUyLjgtNTIuOHpNNDUwLjggNTA1LjFjNSA3LjMgMTUgOS4xIDIyLjMgNHM5LjEtMTUgNC0yMi4zTDM1OC45IDMxNi4xYy0yLjggMy44LTYuMSA3LjMtMTAuMSAxMC4zYy01IDMuOC0xMC41IDYuNC0xNi4yIDcuOUw0NTAuOCA1MDUuMXpcIl1cbn07XG52YXIgZmFCbGluZCA9IGZhUGVyc29uV2Fsa2luZ1dpdGhDYW5lO1xudmFyIGZhRHJ1bSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkcnVtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzQ1XSwgXCJmNTY5XCIsIFwiTTUwMS4yIDc2LjFjMTEuMS03LjMgMTQuMi0yMi4xIDYuOS0zMy4ycy0yMi4xLTE0LjItMzMuMi02LjlMMzcwLjIgMTA0LjVDMzM1LjggOTguNyAyOTcgOTYgMjU2IDk2QzExNC42IDk2IDAgMTI4IDAgMjA4VjM2OGMwIDMxLjMgMjcuNCA1OC44IDcyIDc4LjdWMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRWNDYzLjRjMzMgOC45IDcxLjEgMTQuNSAxMTIgMTYuMVYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNFY0NzkuNWM0MC45LTEuNiA3OS03LjIgMTEyLTE2LjFWMzQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRWNDQ2LjdjNDQuNi0xOS45IDcyLTQ3LjQgNzItNzguN1YyMDhjMC00MS4xLTMwLjItNjkuNS03OC44LTg3LjRsNjcuOS00NC41ek0zMDcuNCAxNDUuNmwtNjQuNiA0Mi4zYy0xMS4xIDcuMy0xNC4yIDIyLjEtNi45IDMzLjJzMjIuMSAxNC4yIDMzLjIgNi45bDExMS4xLTcyLjhjMTQuNyAzLjIgMjcuOSA3IDM5LjQgMTEuNUM0NTguNCAxODEuOCA0NjQgMTk3LjQgNDY0IDIwOGMwIC44LTIuNyAxNy4yLTQ2IDM1LjlDMzc5LjEgMjYwLjcgMzIyIDI3MiAyNTYgMjcycy0xMjMuMS0xMS4zLTE2Mi0yOC4xQzUwLjcgMjI1LjIgNDggMjA4LjggNDggMjA4YzAtMTAuNiA1LjYtMjYuMiA0NC40LTQxLjNDMTMwLjYgMTUxLjkgMTg3LjggMTQ0IDI1NiAxNDRjMTggMCAzNS4xIC41IDUxLjQgMS42elwiXVxufTtcbnZhciBmYUljZUNyZWFtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ljZS1jcmVhbScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyNzg0OF0sIFwiZjgxMFwiLCBcIk0zNjcuMSAxNjBjLjYtNS4zIC45LTEwLjYgLjktMTZDMzY4IDY0LjUgMzAzLjUgMCAyMjQgMFM4MCA2NC41IDgwIDE0NGMwIDUuNCAuMyAxMC43IC45IDE2SDgwYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4aDUzLjUgMTgxSDM2OGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OGgtLjl6TTk2IDI4OEwyMDAuOCA0OTcuN2M0LjQgOC44IDEzLjMgMTQuMyAyMy4yIDE0LjNzMTguOC01LjUgMjMuMi0xNC4zTDM1MiAyODhIOTZ6XCJdXG59O1xudmFyIGZhSGVhcnRDaXJjbGVCb2x0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYXJ0LWNpcmNsZS1ib2x0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGZjXCIsIFwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42di01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMXY1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNDcuOS0yMjVjNC4zIDMuNyA1LjQgOS45IDIuNiAxNC45TDQ1Mi40IDM1Nkg0ODhjNS4yIDAgOS44IDMuMyAxMS40IDguMnMtLjEgMTAuMy00LjIgMTMuNGwtOTYgNzJjLTQuNSAzLjQtMTAuOCAzLjItMTUuMS0uNnMtNS40LTkuOS0yLjYtMTQuOUw0MTEuNiAzODBIMzc2Yy01LjIgMC05LjgtMy4zLTExLjQtOC4ycy4xLTEwLjMgNC4yLTEzLjRsOTYtNzJjNC41LTMuNCAxMC44LTMuMiAxNS4xIC42elwiXVxufTtcbnZhciBmYUZheCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYXgnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyMjQsIDEyODQzOV0sIFwiZjFhY1wiLCBcIk0xMjggNjR2OTZoNjRWNjRIMzg2LjdMNDE2IDkzLjNWMTYwaDY0VjkzLjNjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNDMyIDE4LjdDNDIwIDYuNyA0MDMuNyAwIDM4Ni43IDBIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHpNMCAxNjBWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTQ4MCAzMkgxMjhWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI1NiAyNTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em05NiAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiA5NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIyNCA0MTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIl1cbn07XG52YXIgZmFQYXJhZ3JhcGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFyYWdyYXBoJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTgyXSwgXCJmMWRkXCIsIFwiTTE5MiAzMmg2NEg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzg0bDAgMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzUySDI4OFY0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUySDE5MmMtODguNCAwLTE2MC03MS42LTE2MC0xNjBzNzEuNi0xNjAgMTYwLTE2MHpcIl1cbn07XG52YXIgZmFDaGVja1RvU2xvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVjay10by1zbG90JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJ2b3RlLXllYVwiXSwgXCJmNzcyXCIsIFwiTTk2IDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQzMmMyNi41IDAgNDggMjEuNSA0OCA0OFYzODRIOTZWODB6bTMxMyA0N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTExMSAxMTEtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMNDA5IDE2MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXpNMCAzMzZjMC0yNi41IDIxLjUtNDggNDgtNDhINjRWNDE2SDUxMlYyODhoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjMzNnpcIl1cbn07XG52YXIgZmFWb3RlWWVhID0gZmFDaGVja1RvU2xvdDtcbnZhciBmYVN0YXJIYWxmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXItaGFsZicsXG4gIGljb246IFs1NzYsIDUxMiwgWzYxNzMxXSwgXCJmMDg5XCIsIFwiTTI4OCAwYy0xMi4yIC4xLTIzLjMgNy0yOC42IDE4TDE5NSAxNTAuMyA1MS40IDE3MS41Yy0xMiAxLjgtMjIgMTAuMi0yNS43IDIxLjdzLS43IDI0LjIgNy45IDMyLjdMMTM3LjggMzI5IDExMy4yIDQ3NC43Yy0yIDEyIDMgMjQuMiAxMi45IDMxLjNzMjMgOCAzMy44IDIuM0wyODggNDM5LjhWMHpNNDI5LjkgNTEyYzEuMSAuMSAyLjEgLjEgMy4yIDBoLTMuMnpcIl1cbn07XG52YXIgZmFCb3hlc1N0YWNrZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94ZXMtc3RhY2tlZCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzYyNjI1LCBcImJveGVzXCIsIFwiYm94ZXMtYWx0XCJdLCBcImY0NjhcIiwgXCJNMjQ4IDBIMjA4Yy0yNi41IDAtNDggMjEuNS00OCA0OFYxNjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzUyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDMyOFY4MGMwIDguOC03LjIgMTYtMTYgMTZIMjY0Yy04LjggMC0xNi03LjItMTYtMTZWMHpNNjQgMjU2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjMyMGMwLTM1LjMtMjguNy02NC02NC02NEgxODR2ODBjMCA4LjgtNy4yIDE2LTE2IDE2SDEyMGMtOC44IDAtMTYtNy4yLTE2LTE2VjI1Nkg2NHpNMzUyIDUxMkg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ3MnY4MGMwIDguOC03LjIgMTYtMTYgMTZINDA4Yy04LjggMC0xNi03LjItMTYtMTZWMjU2SDM1MmMtMTUgMC0yOC44IDUuMS0zOS43IDEzLjhjNC45IDEwLjQgNy43IDIyIDcuNyAzNC4yVjQ2NGMwIDEyLjItMi44IDIzLjgtNy43IDM0LjJDMzIzLjIgNTA2LjkgMzM3IDUxMiAzNTIgNTEyelwiXVxufTtcbnZhciBmYUJveGVzID0gZmFCb3hlc1N0YWNrZWQ7XG52YXIgZmFCb3hlc0FsdCA9IGZhQm94ZXNTdGFja2VkO1xudmFyIGZhTGluayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaW5rJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4Mjc5LCBcImNoYWluXCJdLCBcImYwYzFcIiwgXCJNNTc5LjggMjY3LjdjNTYuNS01Ni41IDU2LjUtMTQ4IDAtMjA0LjVjLTUwLTUwLTEyOC44LTU2LjUtMTg2LjMtMTUuNGwtMS42IDEuMWMtMTQuNCAxMC4zLTE3LjcgMzAuMy03LjQgNDQuNnMzMC4zIDE3LjcgNDQuNiA3LjRsMS42LTEuMWMzMi4xLTIyLjkgNzYtMTkuMyAxMDMuOCA4LjZjMzEuNSAzMS41IDMxLjUgODIuNSAwIDExNEw0MjIuMyAzMzQuOGMtMzEuNSAzMS41LTgyLjUgMzEuNS0xMTQgMGMtMjcuOS0yNy45LTMxLjUtNzEuOC04LjYtMTAzLjhsMS4xLTEuNmMxMC4zLTE0LjQgNi45LTM0LjQtNy40LTQ0LjZzLTM0LjQtNi45LTQ0LjYgNy40bC0xLjEgMS42QzIwNi41IDI1MS4yIDIxMyAzMzAgMjYzIDM4MGM1Ni41IDU2LjUgMTQ4IDU2LjUgMjA0LjUgMEw1NzkuOCAyNjcuN3pNNjAuMiAyNDQuM2MtNTYuNSA1Ni41LTU2LjUgMTQ4IDAgMjA0LjVjNTAgNTAgMTI4LjggNTYuNSAxODYuMyAxNS40bDEuNi0xLjFjMTQuNC0xMC4zIDE3LjctMzAuMyA3LjQtNDQuNnMtMzAuMy0xNy43LTQ0LjYtNy40bC0xLjYgMS4xYy0zMi4xIDIyLjktNzYgMTkuMy0xMDMuOC04LjZDNzQgMzcyIDc0IDMyMSAxMDUuNSAyODkuNUwyMTcuNyAxNzcuMmMzMS41LTMxLjUgODIuNS0zMS41IDExNCAwYzI3LjkgMjcuOSAzMS41IDcxLjggOC42IDEwMy45bC0xLjEgMS42Yy0xMC4zIDE0LjQtNi45IDM0LjQgNy40IDQ0LjZzMzQuNCA2LjkgNDQuNi03LjRsMS4xLTEuNkM0MzMuNSAyNjAuOCA0MjcgMTgyIDM3NyAxMzJjLTU2LjUtNTYuNS0xNDgtNTYuNS0yMDQuNSAwTDYwLjIgMjQ0LjN6XCJdXG59O1xudmFyIGZhQ2hhaW4gPSBmYUxpbms7XG52YXIgZmFFYXJMaXN0ZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWFyLWxpc3RlbicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYXNzaXN0aXZlLWxpc3RlbmluZy1zeXN0ZW1zXCJdLCBcImYyYTJcIiwgXCJNMzk4LjMgMy40Yy0xNS44LTcuOS0zNS0xLjUtNDIuOSAxNC4zYy03LjkgMTUuOC0xLjUgMzQuOSAxNC4yIDQyLjlsLjQgLjJjLjQgLjIgMS4xIC42IDIuMSAxLjJjMiAxLjIgNSAzIDguNyA1LjZjNy41IDUuMiAxNy42IDEzLjIgMjcuNyAyNC4yQzQyOC41IDExMy40IDQ0OCAxNDYgNDQ4IDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNjYtMjguNS0xMTMuNC01Ni41LTE0My43QzQ0MS42IDMzLjIgNDI3LjcgMjIuMiA0MTcuMyAxNWMtNS4zLTMuNy05LjctNi40LTEzLTguM2MtMS42LTEtMy0xLjctNC0yLjJjLS41LS4zLS45LS41LTEuMi0uN2wtLjQtLjItLjItLjEtLjEgMCAwIDBjMCAwIDAgMC0xNC4zIDI4LjZMMzk4LjMgMy40ek0xMjguNyAyMjcuNWM2LjItNTYgNTMuNy05OS41IDExMS4zLTk5LjVjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJjMCAyOS4zLTExLjIgNTUuOS0yOS42IDc1LjljLTE3IDE4LjQtMzQuNCA0NS4xLTM0LjQgNzhWNDAwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzYxLjkgMCAxMTItNTAuMSAxMTItMTEydi02LjFjMC05LjggNS40LTIxLjcgMTcuNC0zNC43QzM5OC4zIDMyNy45IDQxNiAyODYgNDE2IDI0MGMwLTk3LjItNzguOC0xNzYtMTc2LTE3NkMxNDkuNCA2NCA3NC44IDEzMi41IDY1LjEgMjIwLjVjLTEuOSAxNy42IDEwLjcgMzMuNCAyOC4zIDM1LjNzMzMuNC0xMC43IDM1LjMtMjguM3pNMzIgNTEyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMTkyIDM1MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek00MS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDB6TTIwOCAyNDBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjR6XCJdXG59O1xudmFyIGZhQXNzaXN0aXZlTGlzdGVuaW5nU3lzdGVtcyA9IGZhRWFyTGlzdGVuO1xudmFyIGZhVHJlZUNpdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJlZS1jaXR5JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTg3XCIsIFwiTTI4OCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OFYxOTJoNDBWMTIwYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NzJoMjRjMjYuNSAwIDQ4IDIxLjUgNDggNDhWNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQzMiAzMzZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4em02NCAzMnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgODBjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjE3NmMwLTguOC03LjItMTYtMTYtMTZIMzY4ek0zNTIgMjcydjMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjcyYzAtOC44LTcuMi0xNi0xNi0xNkgzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnptMTc2LTE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNzJjMC04LjgtNy4yLTE2LTE2LTE2SDUyOHpNNTEyIDM2OHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZINTI4Yy04LjggMC0xNiA3LjItMTYgMTZ6TTIyNCAxNjBjMCA2LTEgMTEtMiAxNmMyMCAxNCAzNCAzOCAzNCA2NGMwIDQ1LTM2IDgwLTgwIDgwSDE2MFY0ODBjMCAxOC0xNSAzMi0zMiAzMmMtMTggMC0zMi0xNC0zMi0zMlYzMjBIODBjLTQ1IDAtODAtMzUtODAtODBjMC0yNiAxMy01MCAzMy02NGMtMS01LTEtMTAtMS0xNmMwLTUzIDQyLTk2IDk2LTk2YzUzIDAgOTYgNDMgOTYgOTZ6XCJdXG59O1xudmFyIGZhUGxheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGF5JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbOTY1NF0sIFwiZjA0YlwiLCBcIk03MyAzOWMtMTQuOC05LjEtMzMuNC05LjQtNDguNS0uOVMwIDYyLjYgMCA4MFY0MzJjMCAxNy40IDkuNCAzMy40IDI0LjUgNDEuOXMzMy43IDguMSA0OC41LS45TDM2MSAyOTdjMTQuMy04LjcgMjMtMjQuMiAyMy00MXMtOC43LTMyLjItMjMtNDFMNzMgMzl6XCJdXG59O1xudmFyIGZhRm9udCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb250JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDMxXCIsIFwiTTI1NCA1Mi44QzI0OS4zIDQwLjMgMjM3LjMgMzIgMjI0IDMycy0yNS4zIDguMy0zMCAyMC44TDU3LjggNDE2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyaC0xLjhsMTgtNDhIMzAzLjhsMTggNDhIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM5MC4yTDI1NCA1Mi44ek0yNzkuOCAzMDRIMTY4LjJMMjI0IDE1NS4xIDI3OS44IDMwNHpcIl1cbn07XG52YXIgZmFSdXBpYWhTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1cGlhaC1zaWduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMjNkXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJoODBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCA1OC44LTM1LjIgMTA5LjMtODUuNyAxMzEuN2w1MS40IDEyOC40YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhMMTA2LjMgMzIwSDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggNjR6TTY0IDI1Nmg0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MEg2NFYyNTZ6bTI1Ni05Nmg4MGM2MS45IDAgMTEyIDUwLjEgMTEyIDExMnMtNTAuMSAxMTItMTEyIDExMkgzNTJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMzUyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptODAgMTYwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4SDM1MnY5Nmg0OHpcIl1cbn07XG52YXIgZmFNYWduaWZ5aW5nR2xhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFnbmlmeWluZy1nbGFzcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODI2OSwgXCJzZWFyY2hcIl0sIFwiZjAwMlwiLCBcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0yMDggMzUyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHpcIl1cbn07XG52YXIgZmFTZWFyY2ggPSBmYU1hZ25pZnlpbmdHbGFzcztcbnZhciBmYVRhYmxlVGVubmlzUGFkZGxlQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZS10ZW5uaXMtcGFkZGxlLWJhbGwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjc5NTUsIFwicGluZy1wb25nLXBhZGRsZS1iYWxsXCIsIFwidGFibGUtdGVubmlzXCJdLCBcImY0NWRcIiwgXCJNNDgwIDI4OGMtNTAuMSAwLTkzLjYgMjguOC0xMTQuNiA3MC44TDEzMi45IDEyNi4zbC42LS42IDYwLjEtNjAuMWM4Ny41LTg3LjUgMjI5LjMtODcuNSAzMTYuOCAwYzY3LjEgNjcuMSA4Mi43IDE2Ni4zIDQ2LjggMjQ4LjNDNTM1LjggMjk3LjYgNTA5IDI4OCA0ODAgMjg4ek0xMTMuMyAxNTEuOUwzNTQuMSAzOTIuN2MtMS40IDcuNS0yLjEgMTUuMy0yLjEgMjMuM2MwIDIzLjIgNi4yIDQ0LjkgMTYuOSA2My43Yy0zIC4yLTYuMSAuMy05LjIgLjNIMzU3Yy0zMy45IDAtNjYuNS0xMy41LTkwLjUtMzcuNWwtOS44LTkuOGMtMTMuMS0xMy4xLTM0LjYtMTIuNC00Ni44IDEuN0wxNTIuMiA1MDFjLTUuOCA2LjctMTQuMiAxMC43LTIzIDExcy0xNy41LTMuMS0yMy44LTkuNGwtMzItMzJjLTYuMy02LjMtOS43LTE0LjktOS40LTIzLjhzNC4zLTE3LjIgMTEtMjNsNjYuNi01Ny43YzE0LTEyLjIgMTQuOC0zMy43IDEuNy00Ni44bC05LjgtOS44Yy0yNC0yNC0zNy41LTU2LjYtMzcuNS05MC41di0yLjdjMC0yMi44IDYuMS00NC45IDE3LjMtNjQuM3pNNDgwIDMyMGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIl1cbn07XG52YXIgZmFQaW5nUG9uZ1BhZGRsZUJhbGwgPSBmYVRhYmxlVGVubmlzUGFkZGxlQmFsbDtcbnZhciBmYVRhYmxlVGVubmlzID0gZmFUYWJsZVRlbm5pc1BhZGRsZUJhbGw7XG52YXIgZmFQZXJzb25Eb3RzRnJvbUxpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWRvdHMtZnJvbS1saW5lJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJkaWFnbm9zZXNcIl0sIFwiZjQ3MFwiLCBcIk0yODggMTc2QTg4IDg4IDAgMSAwIDI4OCAwYTg4IDg4IDAgMSAwIDAgMTc2ek03OC43IDM3Mi45YzE1LTEyLjUgNTAtMzQuNCA5Ny4zLTUwLjFWNDMySDQwMFYzMjIuN2M0Ny4zIDE1LjggODIuMyAzNy43IDk3LjMgNTAuMWMyMC40IDE3IDUwLjYgMTQuMiA2Ny42LTYuMXMxNC4yLTUwLjYtNi4xLTY3LjZjLTEyLTEwLTMwLjEtMjIuNS01My4yLTM1QzQ5Ny4yIDI3OC40IDQ4MS43IDI4OCA0NjQgMjg4Yy0yNi41IDAtNDgtMjEuNS00OC00OGMwLTQuMyAuNi04LjQgMS42LTEyLjRDMzc5LjEgMjE1LjkgMzM1LjMgMjA4IDI4OCAyMDhjLTYwLjIgMC0xMTQuOSAxMi45LTE2MCAyOS45YzAgLjcgMCAxLjQgMCAyLjFjMCAyNi41LTIxLjUgNDgtNDggNDhjLTExLjggMC0yMi43LTQuMy0zMS0xMS40Yy0xMy4xIDguMS0yMy43IDE1LjktMzEuNyAyMi41Yy0yMC40IDE3LTIzLjEgNDcuMi02LjEgNjcuNnM0Ny4yIDIzLjEgNjcuNiA2LjF6TTI0IDQ2NGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEg1NTJjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjR6TTIyNCAyODBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTA0IDU2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNOTYgMjQwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bTM2OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJdXG59O1xudmFyIGZhRGlhZ25vc2VzID0gZmFQZXJzb25Eb3RzRnJvbUxpbmU7XG52YXIgZmFUcmFzaENhbkFycm93VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhc2gtY2FuLWFycm93LXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJ0cmFzaC1yZXN0b3JlLWFsdFwiXSwgXCJmODJhXCIsIFwiTTE2My44IDBIMjg0LjJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN0wzMjAgMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMyaDk2bDcuMi0xNC4zQzE0MC42IDYuOCAxNTEuNyAwIDE2My44IDB6TTMyIDEyOEg0MTZWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDk2Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6bTE5MiA2NGMtNi40IDAtMTIuNSAyLjUtMTcgN2wtODAgODBjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwzOS0zOVY0MDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNzMuOWwzOSAzOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTgwLTgwYy00LjUtNC41LTEwLjYtNy0xNy03elwiXVxufTtcbnZhciBmYVRyYXNoUmVzdG9yZUFsdCA9IGZhVHJhc2hDYW5BcnJvd1VwO1xudmFyIGZhTmFpcmFTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ25haXJhLXNpZ24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUxZjZcIiwgXCJNMTIyLjYgNDYuM2MtNy44LTExLjctMjIuNC0xNy0zNS45LTEyLjlTNjQgNDkuOSA2NCA2NFYyNTZIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzIwSDIyOC4ybDk3LjIgMTQ1LjhjNy44IDExLjcgMjIuNCAxNyAzNS45IDEyLjlzMjIuNy0xNi41IDIyLjctMzAuNlYzMjBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzg0VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI1NkgyNjIuNUwxMjIuNiA0Ni4zek0zMDUuMSAzMjBIMzIwdjIyLjNMMzA1LjEgMzIwek0xODUuNSAyNTZIMTI4VjE2OS43TDE4NS41IDI1NnpcIl1cbn07XG52YXIgZmFDYXJ0QXJyb3dEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcnQtYXJyb3ctZG93bicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjIxOFwiLCBcIk0yNCAwQzEwLjcgMCAwIDEwLjcgMCAyNFMxMC43IDQ4IDI0IDQ4SDY5LjVjMy44IDAgNy4xIDIuNyA3LjkgNi41bDUxLjYgMjcxYzYuNSAzNCAzNi4yIDU4LjUgNzAuNyA1OC41SDQ4OGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxOTkuN2MtMTEuNSAwLTIxLjQtOC4yLTIzLjYtMTkuNUwxNzAuNyAyODhINDU5LjJjMzIuNiAwIDYxLjEtMjEuOCA2OS41LTUzLjNsNDEtMTUyLjNDNTc2LjYgNTcgNTU3LjQgMzIgNTMxLjEgMzJIMzYwVjEzNC4xbDIzLTIzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNjQgNjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDIzIDIzVjMySDEyMC4xQzExMSAxMi44IDkxLjYgMCA2OS41IDBIMjR6TTE3NiA1MTJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zMzYtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIl1cbn07XG52YXIgZmFXYWxraWVUYWxraWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2Fsa2llLXRhbGtpZScsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjhlZlwiLCBcIk0xMTIgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRTNjQgMTAuNyA2NCAyNFY5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWMzAwLjFjMCAxMi43IDUuMSAyNC45IDE0LjEgMzMuOWwzLjkgMy45YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OEgzMDRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzcxLjljMC0xMi43IDUuMS0yNC45IDE0LjEtMzMuOWwzLjktMy45YzktOSAxNC4xLTIxLjIgMTQuMS0zMy45VjE0NGMwLTI2LjUtMjEuNS00OC00OC00OEgzMjBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJIMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMySDExMlYyNHptMCAxMzZIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NEgyNzJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0SDI3MmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxMTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhRmlsZVBlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXBlbicsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODIyMSwgXCJmaWxlLWVkaXRcIl0sIFwiZjMxY1wiLCBcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYyODUuN2wtODYuOCA4Ni44Yy0xMC4zIDEwLjMtMTcuNSAyMy4xLTIxIDM3LjJsLTE4LjcgNzQuOWMtMi4zIDkuMi0xLjggMTguOCAxLjMgMjcuNUg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4ek01NDkuOCAyMzUuN2wxNC40IDE0LjRjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTI5LjQgMjkuNC03MS03MSAyOS40LTI5LjRjMTUuNi0xNS42IDQwLjktMTUuNiA1Ni42IDB6TTMxMS45IDQxN0w0NDEuMSAyODcuOGw3MSA3MUwzODIuOSA0ODcuOWMtNC4xIDQuMS05LjIgNy0xNC45IDguNGwtNjAuMSAxNWMtNS41IDEuNC0xMS4yLS4yLTE1LjItNC4ycy01LjYtOS43LTQuMi0xNS4ybDE1LTYwLjFjMS40LTUuNiA0LjMtMTAuOCA4LjQtMTQuOXpcIl1cbn07XG52YXIgZmFGaWxlRWRpdCA9IGZhRmlsZVBlbjtcbnZhciBmYVJlY2VpcHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVjZWlwdCcsXG4gIGljb246IFszODQsIDUxMiwgWzEyOTUzNF0sIFwiZjU0M1wiLCBcIk0xNCAyLjJDMjIuNS0xLjcgMzIuNS0uMyAzOS42IDUuOEw4MCA0MC40IDEyMC40IDUuOGM5LTcuNyAyMi4zLTcuNyAzMS4yIDBMMTkyIDQwLjQgMjMyLjQgNS44YzktNy43IDIyLjMtNy43IDMxLjIgMEwzMDQgNDAuNCAzNDQuNCA1LjhjNy4xLTYuMSAxNy4xLTcuNSAyNS42LTMuNnMxNCAxMi40IDE0IDIxLjhWNDg4YzAgOS40LTUuNSAxNy45LTE0IDIxLjhzLTE4LjUgMi41LTI1LjYtMy42TDMwNCA0NzEuNmwtNDAuNCAzNC42Yy05IDcuNy0yMi4zIDcuNy0zMS4yIDBMMTkyIDQ3MS42bC00MC40IDM0LjZjLTkgNy43LTIyLjMgNy43LTMxLjIgMEw4MCA0NzEuNiAzOS42IDUwNi4yYy03LjEgNi4xLTE3LjEgNy41LTI1LjYgMy42UzAgNDk3LjQgMCA0ODhWMjRDMCAxNC42IDUuNSA2LjEgMTQgMi4yek05NiAxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMjg4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDk2ek04MCAzNTJjMCA4LjggNy4yIDE2IDE2IDE2SDI4OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2ek05NiAyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZIMjg4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDk2elwiXVxufTtcbnZhciBmYVNxdWFyZVBlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtcGVuJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJwZW4tc3F1YXJlXCIsIFwicGVuY2lsLXNxdWFyZVwiXSwgXCJmMTRiXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMzI1LjggMTM5LjdsMTQuNCAxNC40YzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42bC0yMS40IDIxLjQtNzEtNzEgMjEuNC0yMS40YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwek0xMTkuOSAyODlMMjI1LjEgMTgzLjhsNzEgNzFMMTkwLjkgMzU5LjljLTQuMSA0LjEtOS4yIDctMTQuOSA4LjRsLTYwLjEgMTVjLTUuNSAxLjQtMTEuMi0uMi0xNS4yLTQuMnMtNS42LTkuNy00LjItMTUuMmwxNS02MC4xYzEuNC01LjYgNC4zLTEwLjggOC40LTE0Ljl6XCJdXG59O1xudmFyIGZhUGVuU3F1YXJlID0gZmFTcXVhcmVQZW47XG52YXIgZmFQZW5jaWxTcXVhcmUgPSBmYVNxdWFyZVBlbjtcbnZhciBmYVN1aXRjYXNlUm9sbGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWl0Y2FzZS1yb2xsaW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNWMxXCIsIFwiTTE0NCA1NmMwLTQuNCAzLjYtOCA4LThoODBjNC40IDAgOCAzLjYgOCA4djcySDE0NFY1NnptMTc2IDcySDI4OFY1NmMwLTMwLjktMjUuMS01Ni01Ni01NkgxNTJDMTIxLjEgMCA5NiAyNS4xIDk2IDU2djcySDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMkgyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMzNS4zIDAgNjQtMjguNyA2NC02NFYxOTJjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTExMiAyMjRIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCAxMjhIMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDExMmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG52YXIgZmFQZXJzb25DaXJjbGVFeGNsYW1hdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tY2lyY2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTNmXCIsIFwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjI1Ni45TDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42aDI5LjdjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYzNTJIMTUyek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2djgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjg4YzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFDaGV2cm9uRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGV2cm9uLWRvd24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNzhcIiwgXCJNMjMzLjQgNDA2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTkyLTE5MmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyNTYgMzM4LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTkyIDE5MnpcIl1cbn07XG52YXIgZmFCYXR0ZXJ5RnVsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXR0ZXJ5LWZ1bGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgyNjcsIFwiYmF0dGVyeVwiLCBcImJhdHRlcnktNVwiXSwgXCJmMjQwXCIsIFwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2VjMzNmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2SDQ2NHpNODAgOTZDMzUuOCA5NiAwIDEzMS44IDAgMTc2VjMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MEg0NjRjNDQuMiAwIDgwLTM1LjggODAtODBWMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMlYxNzZjMC00NC4yLTM1LjgtODAtODAtODBIODB6bTM2OCA5Nkg5NlYzMjBINDQ4VjE5MnpcIl1cbn07XG52YXIgZmFCYXR0ZXJ5ID0gZmFCYXR0ZXJ5RnVsbDtcbnZhciBmYUJhdHRlcnk1ID0gZmFCYXR0ZXJ5RnVsbDtcbnZhciBmYVNrdWxsQ3Jvc3Nib25lcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdza3VsbC1jcm9zc2JvbmVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI4MzY5LCA5NzYwXSwgXCJmNzE0XCIsIFwiTTM2OCAxMjhjMCA0NC40LTI1LjQgODMuNS02NCAxMDYuNFYyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMTc2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMzQuNGMtMzguNi0yMy02NC02Mi4xLTY0LTEwNi40QzgwIDU3LjMgMTQ0LjUgMCAyMjQgMHMxNDQgNTcuMyAxNDQgMTI4ek0xNjggMTc2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTQ0LTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMuNCAyNzMuN2M3LjktMTUuOCAyNy4xLTIyLjIgNDIuOS0xNC4zTDIyNCAzNDguMmwxNzcuNy04OC44YzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjNzMS41IDM1LTE0LjMgNDIuOUwyOTUuNiAzODRsMTM0LjggNjcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDIyNCA0MTkuOCA0Ni4zIDUwOC42Yy0xNS44IDcuOS0zNSAxLjUtNDIuOS0xNC4zcy0xLjUtMzUgMTQuMy00Mi45TDE1Mi40IDM4NCAxNy43IDMxNi42QzEuOSAzMDguNy00LjUgMjg5LjUgMy40IDI3My43elwiXVxufTtcbnZhciBmYUNvZGVDb21wYXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvZGUtY29tcGFyZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTEzYVwiLCBcIk0zMjAgNDg4YzAgOS41LTUuNiAxOC4xLTE0LjIgMjEuOXMtMTguOCAyLjMtMjUuOC00LjFsLTgwLTcyYy01LjEtNC42LTcuOS0xMS03LjktMTcuOHMyLjktMTMuMyA3LjktMTcuOGw4MC03MmM3LTYuMyAxNy4yLTcuOSAyNS44LTQuMXMxNC4yIDEyLjQgMTQuMiAyMS45djQwaDE2YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE1My4zQzM3MS43IDE0MSAzNTIgMTEyLjggMzUyIDgwYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM1YzMjBjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhIMzIwdjQwek00NTYgODBhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNMTkyIDI0YzAtOS41IDUuNi0xOC4xIDE0LjItMjEuOXMxOC44LTIuMyAyNS44IDQuMWw4MCA3MmM1LjEgNC42IDcuOSAxMSA3LjkgMTcuOHMtMi45IDEzLjMtNy45IDE3LjhsLTgwIDcyYy03IDYuMy0xNy4yIDcuOS0yNS44IDQuMXMtMTQuMi0xMi40LTE0LjItMjEuOVYxMjhIMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NFYzNTguN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNWMTkyYzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4aDE2VjI0ek01NiA0MzJhMjQgMjQgMCAxIDAgNDggMCAyNCAyNCAwIDEgMCAtNDggMHpcIl1cbn07XG52YXIgZmFMaXN0VWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdC11bCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGlzdC1kb3RzXCJdLCBcImYwY2FcIiwgXCJNNjQgMTQ0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTkyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQ4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJ6TTY0IDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ4LTIwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwiXVxufTtcbnZhciBmYUxpc3REb3RzID0gZmFMaXN0VWw7XG52YXIgZmFTY2hvb2xMb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NjaG9vbC1sb2NrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTZmXCIsIFwiTTMwMi4yIDUuNGMxMC43LTcuMiAyNC44LTcuMiAzNS41IDBMNDczLjcgOTZINTkyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjI3MmMwLTYxLjktNTAuMS0xMTItMTEyLTExMnMtMTEyIDUwLjEtMTEyIDExMnYyNC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40SDMyMC4zbC0uMyAwYy0zNS4zIDAtNjQgMjguNy02NCA2NHY5Nmg2NHYwSDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhIMTY2LjNMMzAyLjIgNS40ek04MCAyMDh2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDk2Yy04LjggMC0xNiA3LjItMTYgMTZ6bTAgMTI4djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzM2YzAtOC44LTcuMi0xNi0xNi0xNkg5NmMtOC44IDAtMTYgNy4yLTE2IDE2em0yNDAtNzJhODggODggMCAxIDAgMC0xNzYgODggODggMCAxIDAgMCAxNzZ6bTE2LTEyMHYxNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgzMjBjLTguOCAwLTE2LTcuMi0xNi0xNlYxNDRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptMTkyIDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0OGg2NFYyNzJjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwdjQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkg0NDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYyNzJ6XCJdXG59O1xudmFyIGZhVG93ZXJDZWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Rvd2VyLWNlbGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1ODVcIiwgXCJNNjIuNiAyLjNDNDYuMi00LjMgMjcuNiAzLjYgMjAuOSAyMEM3LjQgNTMuNCAwIDg5LjkgMCAxMjhzNy40IDc0LjYgMjAuOSAxMDhjNi42IDE2LjQgMjUuMyAyNC4zIDQxLjcgMTcuN1M4Ni45IDIyOC40IDgwLjMgMjEyQzY5LjggMTg2LjEgNjQgMTU3LjggNjQgMTI4czUuOC01OC4xIDE2LjMtODRDODYuOSAyNy42IDc5IDkgNjIuNiAyLjN6bTQ1MC44IDBDNDk3IDkgNDg5LjEgMjcuNiA0OTUuNyA0NEM1MDYuMiA2OS45IDUxMiA5OC4yIDUxMiAxMjhzLTUuOCA1OC4xLTE2LjMgODRjLTYuNiAxNi40IDEuMyAzNSAxNy43IDQxLjdzMzUtMS4zIDQxLjctMTcuN2MxMy41LTMzLjQgMjAuOS02OS45IDIwLjktMTA4cy03LjQtNzQuNi0yMC45LTEwOEM1NDguNCAzLjYgNTI5LjgtNC4zIDUxMy40IDIuM3pNMzQwLjEgMTY1LjJjNy41LTEwLjUgMTEuOS0yMy4zIDExLjktMzcuMmMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NGMwIDEzLjkgNC40IDI2LjcgMTEuOSAzNy4yTDk4LjkgNDY2LjhjLTcuMyAxNi4xLS4yIDM1LjEgMTUuOSA0Mi40czM1LjEgLjIgNDIuNC0xNS45TDE3Ny43IDQ0OEgzOTguM2wyMC42IDQ1LjJjNy4zIDE2LjEgMjYuMyAyMy4yIDQyLjQgMTUuOXMyMy4yLTI2LjMgMTUuOS00Mi40TDM0MC4xIDE2NS4yek0zNjkuMiAzODRIMjA2LjhsMTQuNS0zMkgzNTQuN2wxNC41IDMyek0yODggMjA1LjNMMzI1LjYgMjg4SDI1MC40TDI4OCAyMDUuM3pNMTYzLjMgNzMuNmM1LjMtMTIuMS0uMi0yNi4zLTEyLjQtMzEuNnMtMjYuMyAuMi0zMS42IDEyLjRDMTA5LjUgNzcgMTA0IDEwMS45IDEwNCAxMjhzNS41IDUxIDE1LjMgNzMuNmM1LjMgMTIuMSAxOS41IDE3LjcgMzEuNiAxMi40czE3LjctMTkuNSAxMi40LTMxLjZDMTU2IDE2NS44IDE1MiAxNDcuNCAxNTIgMTI4czQtMzcuOCAxMS4zLTU0LjR6TTQ1Ni43IDU0LjRjLTUuMy0xMi4xLTE5LjUtMTcuNy0zMS42LTEyLjRzLTE3LjcgMTkuNS0xMi40IDMxLjZDNDIwIDkwLjIgNDI0IDEwOC42IDQyNCAxMjhzLTQgMzcuOC0xMS4zIDU0LjRjLTUuMyAxMi4xIC4yIDI2LjMgMTIuNCAzMS42czI2LjMtLjIgMzEuNi0xMi40QzQ2Ni41IDE3OSA0NzIgMTU0LjEgNDcyIDEyOHMtNS41LTUxLTE1LjMtNzMuNnpcIl1cbn07XG52YXIgZmFEb3duTG9uZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3duLWxvbmcnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcImxvbmctYXJyb3ctYWx0LWRvd25cIl0sIFwiZjMwOVwiLCBcIk0yIDMzNC41Yy0zLjggOC44LTIgMTkgNC42IDI2bDEzNiAxNDRjNC41IDQuOCAxMC44IDcuNSAxNy40IDcuNXMxMi45LTIuNyAxNy40LTcuNWwxMzYtMTQ0YzYuNi03IDguNC0xNy4yIDQuNi0yNnMtMTIuNS0xNC41LTIyLTE0LjVsLTcyIDAgMC0yODhjMC0xNy43LTE0LjMtMzItMzItMzJMMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMybDAgMjg4LTcyIDBjLTkuNiAwLTE4LjIgNS43LTIyIDE0LjV6XCJdXG59O1xudmFyIGZhTG9uZ0Fycm93QWx0RG93biA9IGZhRG93bkxvbmc7XG52YXIgZmFSYW5raW5nU3RhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyYW5raW5nLXN0YXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NjFcIiwgXCJNMzUzLjggNTQuMUwzMzAuMiA2LjNjLTMuOS04LjMtMTYuMS04LjYtMjAuNCAwTDI4Ni4yIDU0LjFsLTUyLjMgNy41Yy05LjMgMS40LTEzLjMgMTIuOS02LjQgMTkuOGwzOCAzNy05IDUyLjFjLTEuNCA5LjMgOC4yIDE2LjUgMTYuOCAxMi4ybDQ2LjktMjQuOCA0Ni42IDI0LjRjOC42IDQuMyAxOC4zLTIuOSAxNi44LTEyLjJsLTktNTIuMSAzOC0zNi42YzYuOC02LjggMi45LTE4LjMtNi40LTE5LjhsLTUyLjMtNy41ek0yNTYgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI4OGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ6TTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMySDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzNTJjMC0xNy43LTE0LjMtMzItMzItMzJIMzJ6bTQxNiA5NnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDE2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDQ4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJdXG59O1xudmFyIGZhQ2hlc3NLaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzLWtpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5ODE4XSwgXCJmNDNmXCIsIFwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ4aDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI1NnY0OEg0MDhjMjIuMSAwIDQwIDE3LjkgNDAgNDBjMCA1LjMtMSAxMC41LTMuMSAxNS40TDM2OCA0MDBIODBMMy4xIDIxNS40QzEgMjEwLjUgMCAyMDUuMyAwIDIwMGMwLTIyLjEgMTcuOS00MCA0MC00MEgxOTJWMTEySDE3NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmgxNlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzguNiA0NzMuNEw4MCA0MzJIMzY4bDQxLjQgNDEuNGM0LjIgNC4yIDYuNiAxMCA2LjYgMTZjMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZINTQuNkM0Mi4xIDUxMiAzMiA1MDEuOSAzMiA0ODkuNGMwLTYgMi40LTExLjggNi42LTE2elwiXVxufTtcbnZhciBmYVBlcnNvbkhhcmFzc2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24taGFyYXNzaW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTQ5XCIsIFwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTU5LjQgMzA0LjVMODggMjU2LjlWNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzUyaDE2VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIzNS4zbDQ3LjQgNTcuMWMxMS4zIDEzLjYgMzEuNSAxNS41IDQ1LjEgNC4yczE1LjUtMzEuNSA0LjItNDUuMWwtNzMuNy04OC45Yy0xOC4yLTIyLTQ1LjMtMzQuNy03My45LTM0LjdIMTQ1LjFjLTMzLjcgMC02NC45IDE3LjctODIuMyA0Ni42bC01OC4zIDk3Yy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45ek00ODAgMjQwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ2NCAzNDR2NTguN2wtNDEuNC00MS40Yy03LjMtNy4zLTE3LjYtMTAuNi0yNy44LTlzLTE4LjkgOC4xLTIzLjUgMTcuM2wtNDggOTZjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM0w0MDguOCA0MzhsNTQuNyA1NC43YzEyLjQgMTIuNCAyOS4xIDE5LjMgNDYuNiAxOS4zYzM2LjQgMCA2NS45LTI5LjUgNjUuOS02NS45VjM0NGMwLTMwLjktMjUuMS01Ni01Ni01NnMtNTYgMjUuMS01NiA1NnpNMjg4IDQ4YzAgOC44IDcuMiAxNiAxNiAxNmg1NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMDRjLTguOCAwLTE2IDcuMi0xNiAxNnptLS44IDQ5LjdjLTcuOS00LTE3LjUtLjctMjEuNSA3LjJzLS43IDE3LjUgNy4yIDIxLjVsNDggMjRjNy45IDQgMTcuNSAuNyAyMS41LTcuMnMuNy0xNy41LTcuMi0yMS41bC00OC0yNHpcIl1cbn07XG52YXIgZmFCcmF6aWxpYW5SZWFsU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmF6aWxpYW4tcmVhbC1zaWduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNDZjXCIsIFwiTTQwMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjUwLjJjMTIuNSAyLjMgMjQuNyA2LjQgMzYuMiAxMi4xbDEwLjEgNS4xYzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjlzLTI3LjEgMjIuMi00Mi45IDE0LjNsLTEwLjItNS4xYy05LjktNS0yMC45LTcuNS0zMi03LjVoLTEuN2MtMjkuOCAwLTUzLjkgMjQuMS01My45IDUzLjljMCAyMiAxMy40IDQxLjggMzMuOSA1MGw1MiAyMC44YzQ0LjcgMTcuOSA3NC4xIDYxLjIgNzQuMSAxMDkuNHYzLjRjMCA1MS4yLTMzLjYgOTQuNi04MCAxMDkuMlY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNDYwLjZjLTE1LTMuNS0yOS40LTkuNy00Mi4zLTE4LjNsLTIzLjQtMTUuNmMtMTQuNy05LjgtMTguNy0yOS43LTguOS00NC40czI5LjctMTguNyA0NC40LTguOUwzNjEuMiAzODljMTAuOCA3LjIgMjMuNCAxMSAzNi4zIDExYzI3LjkgMCA1MC41LTIyLjYgNTAuNS01MC41di0zLjRjMC0yMi0xMy40LTQxLjgtMzMuOS01MGwtNTItMjAuOEMzMTcuMyAyNTcuNCAyODggMjE0LjEgMjg4IDE2NS45QzI4OCAxMTQgMzIxLjUgNzAgMzY4IDU0LjJWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJoODBjNzkuNSAwIDE0NCA2NC41IDE0NCAxNDRjMCA1OC44LTM1LjIgMTA5LjMtODUuNyAxMzEuN2w1MS40IDEyOC40YzYuNiAxNi40LTEuNCAzNS0xNy44IDQxLjZzLTM1LTEuNC00MS42LTE3LjhMMTA2LjMgMzIwSDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyODggNjR6TTY0IDI1Nmg0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MEg2NFYyNTZ6XCJdXG59O1xudmFyIGZhTGFuZG1hcmtEb21lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhbmRtYXJrLWRvbWUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImxhbmRtYXJrLWFsdFwiXSwgXCJmNzUyXCIsIFwiTTI0OCAwaDE2YzEzLjMgMCAyNCAxMC43IDI0IDI0VjM0LjdDMzY4LjQgNDguMSA0MzEuOSAxMTEuNiA0NDUuMyAxOTJINDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDIuN0M4MC4xIDExMS42IDE0My42IDQ4LjEgMjI0IDM0LjdWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTY0IDI4OGg2NFY0MTZoNDBWMjg4aDY0VjQxNmg0OFYyODhoNjRWNDE2aDQwVjI4OGg2NFY0MjAuM2MuNiAuMyAxLjIgLjcgMS43IDEuMWw0OCAzMmMxMS43IDcuOCAxNyAyMi40IDEyLjkgMzUuOVM0OTQuMSA1MTIgNDgwIDUxMkgzMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFWMjg4elwiXVxufTtcbnZhciBmYUxhbmRtYXJrQWx0ID0gZmFMYW5kbWFya0RvbWU7XG52YXIgZmFBcnJvd1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXVwJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbODU5M10sIFwiZjA2MlwiLCBcIk0yMTQuNiA0MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxNjAgMTQxLjJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQxLjJMMzI5LjQgMjQ2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MHpcIl1cbn07XG52YXIgZmFUdiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0dicsXG4gIGljb246IFs2NDAsIDUxMiwgWzYzNzE3LCBcInRlbGV2aXNpb25cIiwgXCJ0di1hbHRcIl0sIFwiZjI2Y1wiLCBcIk02NCA2NFYzNTJINTc2VjY0SDY0ek0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY2NHpNMTI4IDQ0OEg1MTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYVRlbGV2aXNpb24gPSBmYVR2O1xudmFyIGZhVHZBbHQgPSBmYVR2O1xudmFyIGZhU2hyaW1wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NocmltcCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTQyNF0sIFwiZTQ0OFwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2czI4LjcgNjQgNjQgNjRoMWMzLjcgODguOSA3NyAxNjAgMTY3IDE2MGg1NlYxMjhIMjY0IDg4LjggNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDY0YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDY0ek0yMjQgNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDcyVjQwNy44bC02NC4xLTIyLjRjLTEyLjUtNC40LTI2LjIgMi4yLTMwLjYgMTQuN3MyLjIgMjYuMiAxNC43IDMwLjZsNC41IDEuNkMyMzMgNDMzLjkgMjI0IDQ0My45IDIyNCA0NTZ6bTEyOCAyMy4zYzM2LjQtMy4zIDY5LjUtMTcuNiA5Ni4xLTM5LjZsLTg2LjUtMzQuNmMtMyAxLjgtNi4yIDMuMi05LjYgNC4zdjY5Ljl6TTQ3Mi42IDQxNWMyNC42LTMwLjMgMzkuNC02OC45IDM5LjQtMTExYzAtMTIuMy0xLjMtMjQuMy0zLjctMzUuOUwzODIuOCAzNTUuMWMuOCAzLjQgMS4yIDcgMS4yIDEwLjZjMCA0LjYtLjcgOS0xLjkgMTMuMUw0NzIuNiA0MTV6TTMzNiAxMjhIMzIwVjMyMGgxOC4zYzkuOSAwIDE5LjEgMy4yIDI2LjYgOC41bDEzMy41LTkyLjRDNDcxLjggMTcyLjYgNDA5LjEgMTI4IDMzNiAxMjh6TTE2OCAxOTJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG52YXIgZmFMaXN0Q2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdC1jaGVjaycsXG4gIGljb246IFs1MTIsIDUxMiwgW1widGFza3NcIl0sIFwiZjBhZVwiLCBcIk0xNTIuMSAzOC4yYzkuOSA4LjkgMTAuNyAyNCAxLjggMzMuOWwtNzIgODBjLTQuNCA0LjktMTAuNiA3LjgtMTcuMiA3LjlzLTEyLjktMi40LTE3LjYtN0w3IDExM0MtMi4zIDEwMy42LTIuMyA4OC40IDcgNzlzMjQuNi05LjQgMzMuOSAwbDIyLjEgMjIuMSA1NS4xLTYxLjJjOC45LTkuOSAyNC0xMC43IDMzLjktMS44em0wIDE2MGM5LjkgOC45IDEwLjcgMjQgMS44IDMzLjlsLTcyIDgwYy00LjQgNC45LTEwLjYgNy44LTE3LjIgNy45cy0xMi45LTIuNC0xNy42LTdMNyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMi4xIDIyLjEgNTUuMS02MS4yYzguOS05LjkgMjQtMTAuNyAzMy45LTEuOHpNMjI0IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMySDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0wIDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTYwIDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0ODBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDggMzY4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIl1cbn07XG52YXIgZmFUYXNrcyA9IGZhTGlzdENoZWNrO1xudmFyIGZhSnVnRGV0ZXJnZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2p1Zy1kZXRlcmdlbnQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImU1MTlcIiwgXCJNOTYgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRoODBjMTMuMyAwIDI0IDEwLjcgMjQgMjRWNDhoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg4OEM3NC43IDk2IDY0IDg1LjMgNjQgNzJzMTAuNy0yNCAyNC0yNGg4VjI0ek0wIDI1NmMwLTcwLjcgNTcuMy0xMjggMTI4LTEyOEgyNTZjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhWNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyNTZ6bTI1NiAwdjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyelwiXVxufTtcbnZhciBmYUNpcmNsZVVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXVzZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MjE0MiwgXCJ1c2VyLWNpcmNsZVwiXSwgXCJmMmJkXCIsIFwiTTM5OSAzODQuMkMzNzYuOSAzNDUuOCAzMzUuNCAzMjAgMjg4IDMyMEgyMjRjLTQ3LjQgMC04OC45IDI1LjgtMTExIDY0LjJjMzUuMiAzOS4yIDg2LjIgNjMuOCAxNDMgNjMuOHMxMDcuOC0yNC43IDE0My02My44ek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTI1NiAxNmE3MiA3MiAwIDEgMCAwLTE0NCA3MiA3MiAwIDEgMCAwIDE0NHpcIl1cbn07XG52YXIgZmFVc2VyQ2lyY2xlID0gZmFDaXJjbGVVc2VyO1xudmFyIGZhVXNlclNoaWVsZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXNoaWVsZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUwNVwiLCBcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTQ1LjcgNDhDNzkuOCAzMDQgMCAzODMuOCAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJINDE4LjNjMS44IDAgMy41LS4yIDUuMy0uNWMtNzYuMy01NS4xLTk5LjgtMTQxLTEwMy4xLTIwMC4yYy0xNi4xLTQuOC0zMy4xLTcuMy01MC43LTcuM0gxNzguM3ptMzA4LjgtNzguM2wtMTIwIDQ4QzM1OCAyNzcuNCAzNTIgMjg2LjIgMzUyIDI5NmMwIDYzLjMgMjUuOSAxNjguOCAxMzQuOCAyMTQuMmM1LjkgMi41IDEyLjYgMi41IDE4LjUgMEM2MTQuMSA0NjQuOCA2NDAgMzU5LjMgNjQwIDI5NmMwLTkuOC02LTE4LjYtMTUuMS0yMi4zbC0xMjAtNDhjLTUuNy0yLjMtMTIuMS0yLjMtMTcuOCAwek01OTEuNCAzMTJjLTMuOSA1MC43LTI3LjIgMTE2LjctOTUuNCAxNDkuN1YyNzMuOEw1OTEuNCAzMTJ6XCJdXG59O1xudmFyIGZhV2luZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5kJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzJlXCIsIFwiTTI4OCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgzNTJjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptNjQgMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMyYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0xMjggNTEyaDMyYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJdXG59O1xudmFyIGZhQ2FyQnVyc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyLWJ1cnN0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJjYXItY3Jhc2hcIl0sIFwiZjVlMVwiLCBcIk0xNzYgOGMtNi42IDAtMTIuNCA0LTE0LjkgMTAuMWwtMjkuNCA3NEw1NS42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xTDEwLjkgMjA2LjRjLTUuNCAzLjctOCAxMC4zLTYuNSAxNi43czYuNyAxMS4yIDEzLjEgMTIuMmw3OC43IDEyLjJMOTAuNiAzMjdjLS41IDYuNSAzLjEgMTIuNyA5IDE1LjVzMTIuOSAxLjggMTcuOC0yLjZsMzUuMy0zMi41IDkuNS0zNS40IDEwLjQtMzguNmM4LTI5LjkgMzAuNS01Mi4xIDU3LjktNjAuOWw0MS01OS4yYzExLjMtMTYuMyAyNi40LTI4LjkgNDMuNS0zNy4yYy0uNC0uNi0uOC0xLjItMS4zLTEuOGMtNC4xLTUuMS0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0QzE4OC40IDEyIDE4Mi42IDggMTc2IDh6TTM2Ny43IDE2MS41bDEzNS42IDM2LjNjNi41IDEuOCAxMS4zIDcuNCAxMS44IDE0LjJsNC42IDU2LjUtMjAxLjUtNTQgMzIuMi00Ni42YzMuOC01LjYgMTAuOC04LjEgMTcuMy02LjR6bS02OS45LTMwbC00Ny45IDY5LjNjLTIxLjYgMy00MC4zIDE4LjYtNDYuMyA0MWwtMTAuNCAzOC42LTE2LjYgNjEuOC04LjMgMzAuOWMtNC42IDE3LjEgNS42IDM0LjYgMjIuNiAzOS4ybDE1LjUgNC4xYzE3LjEgNC42IDM0LjYtNS42IDM5LjItMjIuNmw4LjMtMzAuOSAyNDcuMyA2Ni4zLTguMyAzMC45Yy00LjYgMTcuMSA1LjYgMzQuNiAyMi42IDM5LjJsMTUuNSA0LjFjMTcuMSA0LjYgMzQuNi01LjYgMzkuMi0yMi42bDguMy0zMC45TDU5NSAzODhsMTAuNC0zOC42YzYtMjIuNC0yLjUtNDUuMi0xOS42LTU4LjdsLTYuOC04NGMtMi43LTMzLjctMjYuNC02Mi01OS03MC44TDM4NC4yIDk5LjdjLTMyLjctOC44LTY3LjMgNC04Ni41IDMxLjh6bS0xNyAxMzFhMjQgMjQgMCAxIDEgLTEyLjQgNDYuNCAyNCAyNCAwIDEgMSAxMi40LTQ2LjR6bTIxNy45IDgzLjJBMjQgMjQgMCAxIDEgNTQ1IDM1OC4xYTI0IDI0IDAgMSAxIC00Ni40LTEyLjR6XCJdXG59O1xudmFyIGZhQ2FyQ3Jhc2ggPSBmYUNhckJ1cnN0O1xudmFyIGZhWSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd5JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTIxXSwgXCI1OVwiLCBcIk01OCA0NS40QzQ3LjggMzEgMjcuOCAyNy43IDEzLjQgMzhTLTQuMyA2OC4yIDYgODIuNkwxNjAgMjk4LjNWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjk4LjNMMzc4IDgyLjZjMTAuMy0xNC40IDYuOS0zNC40LTcuNC00NC42UzMzNi4yIDMxIDMyNiA0NS40TDE5MiAyMzIuOSA1OCA0NS40elwiXVxufTtcbnZhciBmYVBlcnNvblNub3dib2FyZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tc25vd2JvYXJkaW5nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTM4LCBcInNub3dib2FyZGluZ1wiXSwgXCJmN2NlXCIsIFwiTTIwOS43IDMuNGMxNS44LTcuOSAzNS0xLjUgNDIuOSAxNC4zbDI1IDUwIDQyLjQgOC41YzE5LjUgMy45IDM3LjggMTIuMyA1My41IDI0LjVsMTI2LjEgOTguMWMxNCAxMC45IDE2LjUgMzEgNS42IDQ0LjlzLTMxIDE2LjUtNDQuOSA1LjZsLTcyLjEtNTYuMS03MS41IDMxLjggMzMuMSAyNy42YzIzLjIgMTkuMyAzMy41IDUwIDI2LjcgNzkuNGwtMTcuNCA3NS4yYy0yLjIgOS40LTguMiAxNi44LTE2LjEgMjFsODYuNSAzMy4xYzQuNiAxLjggOS40IDIuNiAxNC4zIDIuNkg0NzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINDQzLjhjLTEwLjggMC0yMS40LTItMzEuNS01LjhMNjAuMSAzNzEuM2MtMTEuNS00LjQtMjItMTEuMi0zMC44LTIwTDcgMzI5Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjIuNCAyMi40YzQgNCA4LjcgNy4xIDE0IDkuMWwyMi40IDguNmMtLjgtMS42LTEuNS0zLjItMi4xLTQuOWMtNS42LTE2LjggMy41LTM0LjkgMjAuMi00MC41TDE5MiAyNjQuOWwwLTUzLjJjMC0yNC4yIDEzLjctNDYuNCAzNS40LTU3LjJsNDUuMi0yMi42LTcuNS0xLjVjLTE5LjQtMy45LTM1LjktMTYuNS00NC43LTM0LjFsLTI1LTUwYy03LjktMTUuOC0xLjUtMzUgMTQuMy00Mi45ek0xMzkgMzUwLjFsMTU5IDYwLjljLTIuMS01LjYtMi42LTExLjktMS4xLTE4LjJsMTcuNC03NS4yYzEuNC01LjktLjctMTItNS4zLTE1LjlsLTUyLjgtNDQgMCAxOC44YzAgMjAuNy0xMy4yIDM5LTMyLjggNDUuNUwxMzkgMzUwLjF6TTQzMiAwYTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIl1cbn07XG52YXIgZmFTbm93Ym9hcmRpbmcgPSBmYVBlcnNvblNub3dib2FyZGluZztcbnZhciBmYVRydWNrRmFzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1mYXN0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJzaGlwcGluZy1mYXN0XCJdLCBcImY0OGJcIiwgXCJNMTEyIDBDODUuNSAwIDY0IDIxLjUgNjQgNDhWOTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINjQgMjcyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDY0IDQ4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2SDY0IDI0MGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg2NCAxNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg2NCAyMDhjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZINjRWNDE2YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZIMzg0YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJWMjg4IDI1NiAyMzcuM2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0w1MTIgMTE0LjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDExMnpNNTQ0IDIzNy4zVjI1Nkg0MTZWMTYwaDUwLjdMNTQ0IDIzNy4zek0xNjAgMzY4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnptMjcyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6XCJdXG59O1xudmFyIGZhU2hpcHBpbmdGYXN0ID0gZmFUcnVja0Zhc3Q7XG52YXIgZmFGaXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zpc2gnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgwMzFdLCBcImY1NzhcIiwgXCJNMTgwLjUgMTQxLjVDMjE5LjcgMTA4LjUgMjcyLjYgODAgMzM2IDgwczExNi4zIDI4LjUgMTU1LjUgNjEuNWMzOS4xIDMzIDY2LjkgNzIuNCA4MSA5OS44YzQuNyA5LjIgNC43IDIwLjEgMCAyOS4zYy0xNC4xIDI3LjQtNDEuOSA2Ni44LTgxIDk5LjhDNDUyLjMgNDAzLjUgMzk5LjQgNDMyIDMzNiA0MzJzLTExNi4zLTI4LjUtMTU1LjUtNjEuNWMtMTYuMi0xMy43LTMwLjUtMjguNS00Mi43LTQzLjFMNDguMSAzNzkuNmMtMTIuNSA3LjMtMjguNCA1LjMtMzguNy00LjlTLTMgMzQ4LjcgNC4yIDMzNi4xTDUwIDI1NiA0LjIgMTc1LjljLTcuMi0xMi42LTUtMjguNCA1LjMtMzguNnMyNi4xLTEyLjIgMzguNy00LjlsODkuNyA1Mi4zYzEyLjItMTQuNiAyNi41LTI5LjQgNDIuNy00My4xek00NDggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJdXG59O1xudmFyIGZhVXNlckdyYWR1YXRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItZ3JhZHVhdGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1MDFcIiwgXCJNMjE5LjMgLjVjMy4xLS42IDYuMy0uNiA5LjQgMGwyMDAgNDBDNDM5LjkgNDIuNyA0NDggNTIuNiA0NDggNjRzLTguMSAyMS4zLTE5LjMgMjMuNUwzNTIgMTAyLjlWMTYwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4VjEwMi45TDQ4IDkzLjN2NjUuMWwxNS43IDc4LjRjLjkgNC43LS4zIDkuNi0zLjMgMTMuM3MtNy42IDUuOS0xMi40IDUuOUgxNmMtNC44IDAtOS4zLTIuMS0xMi40LTUuOXMtNC4zLTguNi0zLjMtMTMuM0wxNiAxNTguNFY4Ni42QzYuNSA4My4zIDAgNzQuMyAwIDY0QzAgNTIuNiA4LjEgNDIuNyAxOS4zIDQwLjVsMjAwLTQwek0xMTEuOSAzMjcuN2MxMC41LTMuNCAyMS44IC40IDI5LjQgOC41bDcxIDc1LjVjNi4zIDYuNyAxNyA2LjcgMjMuMyAwbDcxLTc1LjVjNy42LTguMSAxOC45LTExLjkgMjkuNC04LjVDNDAxIDM0OC42IDQ0OCA0MDkuNCA0NDggNDgxLjNjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43SDMwLjdDMTMuOCA1MTIgMCA0OTguMiAwIDQ4MS4zYzAtNzEuOSA0Ny0xMzIuNyAxMTEuOS0xNTMuNnpcIl1cbn07XG52YXIgZmFDaXJjbGVIYWxmU3Ryb2tlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1oYWxmLXN0cm9rZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzk2ODAsIFwiYWRqdXN0XCJdLCBcImYwNDJcIiwgXCJNNDQ4IDI1NmMwLTEwNi04Ni0xOTItMTkyLTE5MlY0NDhjMTA2IDAgMTkyLTg2IDE5Mi0xOTJ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIl1cbn07XG52YXIgZmFBZGp1c3QgPSBmYUNpcmNsZUhhbGZTdHJva2U7XG52YXIgZmFDbGFwcGVyYm9hcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xhcHBlcmJvYXJkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMTMxXCIsIFwiTTQ0OCAzMkgzNjEuOWwtMSAxLTEyNyAxMjdoOTIuMWwxLTFMNDUzLjggMzIuM2MtMS45LS4yLTMuOC0uMy01LjgtLjN6bTY0IDEyOFY5NmMwLTE1LjEtNS4zLTI5LjEtMTQtNDBsLTEwNCAxMDRINTEyek0yOTQuMSAzMkgyMDEuOWwtMSAxTDczLjkgMTYwaDkyLjFsMS0xIDEyNy0xMjd6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZ2NjRINi4xbDEtMSAxMjctMTI3SDY0ek01MTIgMTkySDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYxOTJ6XCJdXG59O1xudmFyIGZhQ2lyY2xlUmFkaWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1yYWRpYXRpb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5NzYyLCBcInJhZGlhdGlvbi1hbHRcIl0sIFwiZjdiYVwiLCBcIk0yNTYgNjRhMTkyIDE5MiAwIDEgMSAwIDM4NCAxOTIgMTkyIDAgMSAxIDAtMzg0em0wIDQ0OEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIwMCAyNTZjMC0yMC43IDExLjMtMzguOCAyOC00OC41bC0zNi02Mi4zYy04LjgtMTUuMy0yOC43LTIwLjgtNDItOWMtMjUuNiAyMi42LTQzLjkgNTMuMy01MC45IDg4LjFDOTUuNyAyNDEuNSAxMTAuMyAyNTYgMTI4IDI1Nmw3MiAwem0yOCA0OC41bC0zNiA2Mi40Yy04LjggMTUuMy0zLjYgMzUuMiAxMy4xIDQwLjhjMTYgNS40IDMzLjEgOC4zIDUwLjkgOC4zczM0LjktMi45IDUwLjktOC4zYzE2LjctNS42IDIxLjktMjUuNSAxMy4xLTQwLjhsLTM2LTYyLjRjLTguMiA0LjgtMTcuOCA3LjUtMjggNy41cy0xOS44LTIuNy0yOC03LjV6TTMxMiAyNTZsNzIgMGMxNy43IDAgMzIuMy0xNC41IDI4LjgtMzEuOGMtNy0zNC44LTI1LjMtNjUuNS01MC45LTg4LjFjLTEzLjItMTEuNy0zMy4xLTYuMy00MiA5bC0zNiA2Mi4zYzE2LjcgOS43IDI4IDI3LjggMjggNDguNXptLTU2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG52YXIgZmFSYWRpYXRpb25BbHQgPSBmYUNpcmNsZVJhZGlhdGlvbjtcbnZhciBmYUJhc2ViYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jhc2ViYWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzU4LCA5OTE4LCBcImJhc2ViYWxsLWJhbGxcIl0sIFwiZjQzM1wiLCBcIk02Mi43IDIyMy40Yy00LjggLjQtOS43IC42LTE0LjcgLjZjLTE1LjYgMC0zMC44LTItNDUuMi01LjlDMTkuMiAxMDcuMSAxMDcuMSAxOS4yIDIxOC4xIDIuOEMyMjIgMTcuMiAyMjQgMzIuNCAyMjQgNDhjMCA0LjktLjIgOS44LS42IDE0LjdjLS43IDguOCA1LjggMTYuNSAxNC42IDE3LjNzMTYuNS01LjggMTcuMy0xNC42Yy41LTUuNyAuNy0xMS41IC43LTE3LjNjMC0xNi41LTEuOS0zMi42LTUuNi00Ny45YzEuOCAwIDMuNy0uMSA1LjYtLjFDMzk3LjQgMCA1MTIgMTE0LjYgNTEyIDI1NmMwIDEuOSAwIDMuNy0uMSA1LjZjLTE1LjQtMy42LTMxLjQtNS42LTQ3LjktNS42Yy01LjggMC0xMS42IC4yLTE3LjMgLjdjLTguOCAuNy0xNS40IDguNS0xNC42IDE3LjNzOC41IDE1LjQgMTcuMyAxNC42YzQuOC0uNCA5LjctLjYgMTQuNy0uNmMxNS42IDAgMzAuOCAyIDQ1LjIgNS45QzQ5Mi44IDQwNC45IDQwNC45IDQ5Mi44IDI5My45IDUwOS4yQzI5MCA0OTQuOCAyODggNDc5LjYgMjg4IDQ2NGMwLTQuOSAuMi05LjggLjYtMTQuN2MuNy04LjgtNS44LTE2LjUtMTQuNi0xNy4zcy0xNi41IDUuOC0xNy4zIDE0LjZjLS41IDUuNy0uNyAxMS41LS43IDE3LjNjMCAxNi41IDEuOSAzMi42IDUuNiA0Ny45Yy0xLjggMC0zLjcgLjEtNS42IC4xQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2YzAtMS45IDAtMy43IC4xLTUuNkMxNS40IDI1NC4xIDMxLjUgMjU2IDQ4IDI1NmM1LjggMCAxMS42LS4yIDE3LjMtLjdjOC44LS43IDE1LjQtOC41IDE0LjYtMTcuM3MtOC41LTE1LjQtMTcuMy0xNC42ek0xMjEuMyAyMDhjLTggMy43LTExLjYgMTMuMi03LjkgMjEuMnMxMy4yIDExLjYgMjEuMiA3LjljNDUuMi0yMC44IDgxLjctNTcuMiAxMDIuNS0xMDIuNWMzLjctOCAuMi0xNy41LTcuOS0yMS4ycy0xNy41LS4yLTIxLjIgNy45Yy0xNy42IDM4LjMtNDguNSA2OS4yLTg2LjcgODYuN3ptMjc3LjIgNzQuN2MtMy43LTgtMTMuMi0xMS42LTIxLjItNy45Yy00NS4yIDIwLjgtODEuNyA1Ny4yLTEwMi41IDEwMi41Yy0zLjcgOC0uMiAxNy41IDcuOSAyMS4yczE3LjUgLjIgMjEuMi03LjljMTcuNi0zOC4zIDQ4LjUtNjkuMiA4Ni43LTg2LjdjOC0zLjcgMTEuNi0xMy4yIDcuOS0yMS4yelwiXVxufTtcbnZhciBmYUJhc2ViYWxsQmFsbCA9IGZhQmFzZWJhbGw7XG52YXIgZmFKZXRGaWdodGVyVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnamV0LWZpZ2h0ZXItdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1MThcIiwgXCJNMjcwLjcgOS43QzI2OC4yIDMuOCAyNjIuNCAwIDI1NiAwcy0xMi4yIDMuOC0xNC43IDkuN0wxOTcuMiAxMTIuNmMtMy40IDgtNS4yIDE2LjUtNS4yIDI1LjJ2NzdsLTE0NCA4NFYyODBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjR2NTYgMzIgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNHYtOEgxOTJ2MzIuN0wxMzMuNSA0NjhjLTMuNSAzLTUuNSA3LjQtNS41IDEydjE2YzAgOC44IDcuMiAxNiAxNiAxNmg5NlY0NDhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnY2NGg5NmM4LjggMCAxNi03LjIgMTYtMTZWNDgwYzAtNC42LTItOS01LjUtMTJMMzIwIDQxNi43VjM4NEg0NjR2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0VjM2OCAzMzYgMjgwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djE4LjhsLTE0NC04NHYtNzdjMC04LjctMS44LTE3LjItNS4yLTI1LjJMMjcwLjcgOS43elwiXVxufTtcbnZhciBmYURpYWdyYW1Qcm9qZWN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpYWdyYW0tcHJvamVjdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wicHJvamVjdC1kaWFncmFtXCJdLCBcImY1NDJcIiwgXCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OFY5NkgzODRWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhINDMyYy0yNi41IDAtNDgtMjEuNS00OC00OFYxNjBIMTkydjE2YzAgMS43LS4xIDMuNC0uMyA1TDI3MiAyODhoOTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhIMjcyYy0yNi41IDAtNDgtMjEuNS00OC00OFYzMzZjMC0xLjcgLjEtMy40IC4zLTVMMTQ0IDIyNEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODB6XCJdXG59O1xudmFyIGZhUHJvamVjdERpYWdyYW0gPSBmYURpYWdyYW1Qcm9qZWN0O1xudmFyIGZhQ29weSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb3B5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGM1XCIsIFwiTTIwOCAwSDMzMi4xYzEyLjcgMCAyNC45IDUuMSAzMy45IDE0LjFsNjcuOSA2Ny45YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45VjMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OEgyMDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhoODB2NjRINjRWNDQ4SDI1NlY0MTZoNjR2NDhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHpcIl1cbn07XG52YXIgZmFWb2x1bWVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2x1bWUteG1hcmsnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInZvbHVtZS1tdXRlXCIsIFwidm9sdW1lLXRpbWVzXCJdLCBcImY2YTlcIiwgXCJNMzAxLjEgMzQuOEMzMTIuNiA0MCAzMjAgNTEuNCAzMjAgNjRWNDQ4YzAgMTIuNi03LjQgMjQtMTguOSAyOS4ycy0yNSAzLjEtMzQuNC01LjNMMTMxLjggMzUySDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYyMjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoNjcuOEwyNjYuNyA0MC4xYzkuNC04LjQgMjIuOS0xMC40IDM0LjQtNS4zek00MjUgMTY3bDU1IDU1IDU1LTU1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNTUgNTUgNTUgNTVjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNTUtNTUtNTUgNTVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTUtNTUtNTUtNTVjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMHpcIl1cbn07XG52YXIgZmFWb2x1bWVNdXRlID0gZmFWb2x1bWVYbWFyaztcbnZhciBmYVZvbHVtZVRpbWVzID0gZmFWb2x1bWVYbWFyaztcbnZhciBmYUhhbmRTcGFya2xlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXNwYXJrbGVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDVkXCIsIFwiTTMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjI0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWMzIzLjFjLTExLjkgNC44LTIxLjMgMTQuOS0yNSAyNy44bC04LjkgMzEuMkw0NzguOSAzOTFDNDYwLjYgMzk2LjMgNDQ4IDQxMyA0NDggNDMyYzAgMTguOSAxMi41IDM1LjYgMzAuNiA0MC45QzQ0OC40IDQ5Ny40IDQwOS45IDUxMiAzNjggNTEySDM0OC44Yy01OS42IDAtMTE2LjktMjIuOS0xNjAtNjRMNzYuNCAzNDFjLTE2LTE1LjItMTYuNi00MC42LTEuNC01Ni42czQwLjYtMTYuNiA1Ni42LTEuNGw2MC41IDU3LjZjMC0xLjUtLjEtMy4xLS4xLTQuNlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyVjI0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tNy4zIDMyNi42Yy0xLjEtMy45LTQuNy02LjYtOC43LTYuNnMtNy42IDIuNy04LjcgNi42TDI4OCAzNTJsLTI1LjQgNy4zYy0zLjkgMS4xLTYuNiA0LjctNi42IDguN3MyLjcgNy42IDYuNiA4LjdMMjg4IDM4NGw3LjMgMjUuNGMxLjEgMy45IDQuNyA2LjYgOC43IDYuNnM3LjYtMi43IDguNy02LjZMMzIwIDM4NGwyNS40LTcuM2MzLjktMS4xIDYuNi00LjcgNi42LTguN3MtMi43LTcuNi02LjYtOC43TDMyMCAzNTJsLTcuMy0yNS40ek0xMDQgMTIwbDQ4LjMgMTMuOGM0LjYgMS4zIDcuNyA1LjUgNy43IDEwLjJzLTMuMSA4LjktNy43IDEwLjJMMTA0IDE2OCA5MC4yIDIxNi4zYy0xLjMgNC42LTUuNSA3LjctMTAuMiA3LjdzLTguOS0zLjEtMTAuMi03LjdMNTYgMTY4IDcuNyAxNTQuMkMzLjEgMTUyLjkgMCAxNDguNyAwIDE0NHMzLjEtOC45IDcuNy0xMC4yTDU2IDEyMCA2OS44IDcxLjdDNzEuMSA2Ny4xIDc1LjMgNjQgODAgNjRzOC45IDMuMSAxMC4yIDcuN0wxMDQgMTIwek01ODQgNDA4bDQ4LjMgMTMuOGM0LjYgMS4zIDcuNyA1LjUgNy43IDEwLjJzLTMuMSA4LjktNy43IDEwLjJMNTg0IDQ1NmwtMTMuOCA0OC4zYy0xLjMgNC42LTUuNSA3LjctMTAuMiA3LjdzLTguOS0zLjEtMTAuMi03LjdMNTM2IDQ1NmwtNDguMy0xMy44Yy00LjYtMS4zLTcuNy01LjUtNy43LTEwLjJzMy4xLTguOSA3LjctMTAuMkw1MzYgNDA4bDEzLjgtNDguM2MxLjMtNC42IDUuNS03LjcgMTAuMi03LjdzOC45IDMuMSAxMC4yIDcuN0w1ODQgNDA4elwiXVxufTtcbnZhciBmYUdyaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JpcCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiZ3JpcC1ob3Jpem9udGFsXCJdLCBcImY1OGRcIiwgXCJNMTI4IDEzNmMwLTIyLjEtMTcuOS00MC00MC00MEw0MCA5NkMxNy45IDk2IDAgMTEzLjkgMCAxMzZsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MEg4OGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTQ4em0wIDE5MmMwLTIyLjEtMTcuOS00MC00MC00MEg0MGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MEg4OGMyMi4xIDAgNDAtMTcuOSA0MC00MFYzMjh6bTMyLTE5MnY0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGg0OGMyMi4xIDAgNDAtMTcuOSA0MC00MFYxMzZjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTQ4IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwek0yODggMzI4YzAtMjIuMS0xNy45LTQwLTQwLTQwSDIwMGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGg0OGMyMi4xIDAgNDAtMTcuOSA0MC00MFYzMjh6bTMyLTE5MnY0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGg0OGMyMi4xIDAgNDAtMTcuOSA0MC00MFYxMzZjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTQ4IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwek00NDggMzI4YzAtMjIuMS0xNy45LTQwLTQwLTQwSDM2MGMtMjIuMSAwLTQwIDE3LjktNDAgNDB2NDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBoNDhjMjIuMSAwIDQwLTE3LjkgNDAtNDBWMzI4elwiXVxufTtcbnZhciBmYUdyaXBIb3Jpem9udGFsID0gZmFHcmlwO1xudmFyIGZhU2hhcmVGcm9tU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoYXJlLWZyb20tc3F1YXJlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbNjE1MDksIFwic2hhcmUtc3F1YXJlXCJdLCBcImYxNGRcIiwgXCJNMzUyIDIyNEgzMDUuNWMtNDUgMC04MS41IDM2LjUtODEuNSA4MS41YzAgMjIuMyAxMC4zIDM0LjMgMTkuMiA0MC41YzYuOCA0LjcgMTIuOCAxMiAxMi44IDIwLjNjMCA5LjgtOCAxNy44LTE3LjggMTcuOGgtMi41Yy0yLjQgMC00LjgtLjQtNy4xLTEuNEMyMTAuOCAzNzQuOCAxMjggMzMzLjQgMTI4IDI0MGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NGg4MFYzNC43QzM1MiAxNS41IDM2Ny41IDAgMzg2LjcgMGM4LjYgMCAxNi44IDMuMiAyMy4yIDguOUw1NDguMSAxMzMuM2M3LjYgNi44IDExLjkgMTYuNSAxMS45IDI2LjdzLTQuMyAxOS45LTExLjkgMjYuN2wtMTM5IDEyNS4xYy01LjkgNS4zLTEzLjUgOC4yLTIxLjQgOC4ySDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0ek04MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2VjQzMmMwIDguOCA3LjIgMTYgMTYgMTZINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYzODRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY0OGMwIDQ0LjItMzUuOCA4MC04MCA4MEg4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBWMTEyQzAgNjcuOCAzNS44IDMyIDgwIDMyaDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwelwiXVxufTtcbnZhciBmYVNoYXJlU3F1YXJlID0gZmFTaGFyZUZyb21TcXVhcmU7XG52YXIgZmFDaGlsZENvbWJhdGFudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGlsZC1jb21iYXRhbnQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImNoaWxkLXJpZmxlXCJdLCBcImU0ZTBcIiwgXCJNMTc2IDEyOEE2NCA2NCAwIDEgMCAxNzYgMGE2NCA2NCAwIDEgMCAwIDEyOHptLTggMzUyVjM1MmgxNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYzMDAuNUwyNjAuOSAzMjFjOS40IDE1IDI5LjIgMTkuNCA0NC4xIDEwczE5LjQtMjkuMiAxMC00NC4xbC01MS43LTgyLjFjLTE3LjYtMjcuOS00OC4zLTQ0LjktODEuMi00NC45SDE2OS44Yy0zMyAwLTYzLjcgMTYuOS04MS4yIDQ0LjlMMzYuOSAyODdjLTkuNCAxNS00LjkgMzQuNyAxMCA0NC4xczM0LjcgNC45IDQ0LjEtMTBMMTA0IDMwMC41VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek00NDggMEg0MzIgNDE2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2VjEzMi4zYy05LjYgNS41LTE2IDE1LjktMTYgMjcuN3YzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJWMzY4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmg1OS41YzEwLjQgMCAxOC05LjggMTUuNS0xOS45TDQ4NCA0MDBoNDRjOC44IDAgMTYtNy4yIDE2LTE2VjM2OGMwLTguOC03LjItMTYtMTYtMTZINDgwVjMyNS4zbDUzLjEtMTcuN2M2LjUtMi4yIDEwLjktOC4zIDEwLjktMTUuMlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDUxMmMtOC44IDAtMTYgNy4yLTE2IDE2djU2bC0xNiA1LjNWMTYwYzAtMTEuOC02LjQtMjIuMi0xNi0yNy43VjE2YzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG52YXIgZmFDaGlsZFJpZmxlID0gZmFDaGlsZENvbWJhdGFudDtcbnZhciBmYUd1biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdndW4nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUxOWJcIiwgXCJNNTI4IDU2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0djhIMzJDMTQuMyA2NCAwIDc4LjMgMCA5NlYyMDhjMCAxNy43IDE0LjMgMzIgMzIgMzJINDJjMjAuOCAwIDM2LjEgMTkuNiAzMSAzOS44TDMzIDQ0MC4yYy0yLjQgOS42LS4yIDE5LjcgNS44IDI3LjVTNTQuMSA0ODAgNjQgNDgwaDk2YzE0LjcgMCAyNy41LTEwIDMxLTI0LjJMMjE3IDM1MkgzMjEuNGMyMy43IDAgNDQuOC0xNC45IDUyLjctMzcuMkw0MDAuOSAyNDBINDMyYzguNSAwIDE2LjYtMy40IDIyLjYtOS40TDQ3Ny4zIDIwOEg1NDRjMTcuNyAwIDMyLTE0LjMgMzItMzJWOTZjMC0xNy43LTE0LjMtMzItMzItMzJINTI4VjU2ek0zMjEuNCAzMDRIMjI5bDE2LTY0aDEwNWwtMjEgNTguN2MtMS4xIDMuMi00LjIgNS4zLTcuNSA1LjN6TTgwIDEyOEg0NjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhU3F1YXJlUGhvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLXBob25lJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJwaG9uZS1zcXVhcmVcIl0sIFwiZjA5OFwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6bTkwLjcgOTYuN2M5LjctMi42IDE5LjkgMi4zIDIzLjcgMTEuNmwyMCA0OGMzLjQgOC4yIDEgMTcuNi01LjggMjMuMkwxNjggMjMxLjdjMTYuNiAzNS4yIDQ1LjEgNjMuNyA4MC4zIDgwLjNsMjAuMi0yNC43YzUuNi02LjggMTUtOS4yIDIzLjItNS44bDQ4IDIwYzkuMyAzLjkgMTQuMiAxNCAxMS42IDIzLjdsLTEyIDQ0QzMzNi45IDM3OCAzMjkgMzg0IDMyMCAzODRDMTk2LjMgMzg0IDk2IDI4My43IDk2IDE2MGMwLTkgNi0xNi45IDE0LjctMTkuM2w0NC0xMnpcIl1cbn07XG52YXIgZmFQaG9uZVNxdWFyZSA9IGZhU3F1YXJlUGhvbmU7XG52YXIgZmFQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMDEzMywgNjE1NDMsIFwiYWRkXCJdLCBcIjJiXCIsIFwiTTI1NiA4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYyMjRINDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMTkyVjQzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjI4OEg0MDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjU2VjgwelwiXVxufTtcbnZhciBmYUFkZCA9IGZhUGx1cztcbnZhciBmYUV4cGFuZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleHBhbmQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjVcIiwgXCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjk2aDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINjRWMzUyek0zMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNjR2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMjB6TTQ0OCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2NjRIMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM1MnpcIl1cbn07XG52YXIgZmFDb21wdXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wdXRlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRlNVwiLCBcIk0zODQgOTZWMzIwSDY0TDY0IDk2SDM4NHpNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlYzMjBjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMTgxLjNsLTEwLjcgMzJIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI3Ny4zbC0xMC43LTMySDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNDY0IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg2NGMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg1Mjh6bTE2IDY0aDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDU0NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptLTE2IDgwYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg1NDRjLTguOCAwLTE2LTcuMi0xNi0xNnptMzIgMTYwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd4bWFyaycsXG4gIGljb246IFszODQsIDUxMiwgWzEyODQ3MywgMTAwMDUsIDEwMDA2LCAxMDA2MCwgMjE1LCBcImNsb3NlXCIsIFwibXVsdGlwbHlcIiwgXCJyZW1vdmVcIiwgXCJ0aW1lc1wiXSwgXCJmMDBkXCIsIFwiTTM0Mi42IDE1MC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5MiAyMTAuNyA4Ni42IDEwNS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wxNDYuNyAyNTYgNDEuNCAzNjEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxOTIgMzAxLjMgMjk3LjQgNDA2LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wyMzcuMyAyNTYgMzQyLjYgMTUwLjZ6XCJdXG59O1xudmFyIGZhQ2xvc2UgPSBmYVhtYXJrO1xudmFyIGZhTXVsdGlwbHkgPSBmYVhtYXJrO1xudmFyIGZhUmVtb3ZlID0gZmFYbWFyaztcbnZhciBmYVRpbWVzID0gZmFYbWFyaztcbnZhciBmYUFycm93c1VwRG93bkxlZnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdXAtZG93bi1sZWZ0LXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcnJvd3NcIl0sIFwiZjA0N1wiLCBcIk0yNzguNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5LjQtOS40VjIyNEgxMDkuM2w5LjQtOS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOS40LTkuNEgyMjRWNDAyLjdsLTkuNC05LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05LjQgOS40VjI4OEg0MDIuN2wtOS40IDkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDkuNCA5LjRIMjg4VjEwOS4zbDkuNCA5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNjQtNjR6XCJdXG59O1xudmFyIGZhQXJyb3dzID0gZmFBcnJvd3NVcERvd25MZWZ0UmlnaHQ7XG52YXIgZmFDaGFsa2JvYXJkVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFsa2JvYXJkLXVzZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImNoYWxrYm9hcmQtdGVhY2hlclwiXSwgXCJmNTFjXCIsIFwiTTE2MCA2NGMwLTM1LjMgMjguNy02NCA2NC02NEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDMzNi44Yy0xMS44LTI1LjUtMjkuOS00Ny41LTUyLjQtNjRIMzg0VjMyMGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnYzMmg2NFY2NEwyMjQgNjR2NDkuMUMyMDUuMiAxMDIuMiAxODMuMyA5NiAxNjAgOTZWNjR6bTAgNjRhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6TTEzMy4zIDM1Mmg1My4zQzI2MC4zIDM1MiAzMjAgNDExLjcgMzIwIDQ4NS4zYzAgMTQuNy0xMS45IDI2LjctMjYuNyAyNi43SDI2LjdDMTEuOSA1MTIgMCA1MDAuMSAwIDQ4NS4zQzAgNDExLjcgNTkuNyAzNTIgMTMzLjMgMzUyelwiXVxufTtcbnZhciBmYUNoYWxrYm9hcmRUZWFjaGVyID0gZmFDaGFsa2JvYXJkVXNlcjtcbnZhciBmYVBlc29TaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blc28tc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTIyMlwiLCBcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjR2NjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwwIDY0djk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzg0aDgwYzY4LjQgMCAxMjcuNy0zOSAxNTYuOC05NkgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJoLS43Yy41LTUuMyAuNy0xMC42IC43LTE2cy0uMi0xMC43LS43LTE2aC43YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMzMi44QzMwMy43IDcxIDI0NC40IDMyIDE3NiAzMkg2NHptMTkwLjQgOTZIOTZWOTZoODBjMzAuNSAwIDU4LjIgMTIuMiA3OC40IDMyek05NiAxOTJIMjg2LjljLjcgNS4yIDEuMSAxMC42IDEuMSAxNnMtLjQgMTAuOC0xLjEgMTZIOTZWMTkyem0xNTguNCA5NmMtMjAuMiAxOS44LTQ3LjkgMzItNzguNCAzMkg5NlYyODhIMjU0LjR6XCJdXG59O1xudmFyIGZhQnVpbGRpbmdTaGllbGQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctc2hpZWxkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGQ4XCIsIFwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFYyMDdsLTQyLjQgMTdIMzA0IDI3MmMtOC44IDAtMTYgNy4yLTE2IDE2djMyIDI0LjJWMzA0YzAgLjkgLjEgMS43IC4yIDIuNmMyLjMgNTguMSAyNC4xIDE0NC44IDk4LjcgMjAxLjVjLTUuOCAyLjUtMTIuMiAzLjktMTguOSAzLjlIMjQwVjQzMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDh6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptODAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyNDBjMC04LjgtNy4yLTE2LTE2LTE2SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2ek02NCAxMTJ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMTJjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgxNzZ6bTgwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNzJjLTguOCAwLTE2IDcuMi0xNiAxNnpNNDIzLjEgMjI1LjdjNS43LTIuMyAxMi4xLTIuMyAxNy44IDBsMTIwIDQ4QzU3MCAyNzcuNCA1NzYgMjg2LjIgNTc2IDI5NmMwIDYzLjMtMjUuOSAxNjguOC0xMzQuOCAyMTQuMmMtNS45IDIuNS0xMi42IDIuNS0xOC41IDBDMzEzLjkgNDY0LjggMjg4IDM1OS4zIDI4OCAyOTZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjAtNDh6TTUyNy40IDMxMkw0MzIgMjczLjhWNDYxLjdjNjguMi0zMyA5MS41LTk5IDk1LjQtMTQ5Ljd6XCJdXG59O1xudmFyIGZhQmFieSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWJ5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzdjXCIsIFwiTTE1MiA4OGE3MiA3MiAwIDEgMSAxNDQgMEE3MiA3MiAwIDEgMSAxNTIgODh6TTM5LjcgMTQ0LjVjMTMtMTcuOSAzOC0yMS44IDU1LjktOC44TDEzMS44IDE2MmMyNi44IDE5LjUgNTkuMSAzMCA5Mi4yIDMwczY1LjQtMTAuNSA5Mi4yLTMwbDM2LjItMjYuNGMxNy45LTEzIDQyLjktOSA1NS45IDguOHM5IDQyLjktOC44IDU1LjlsLTM2LjIgMjYuNGMtMTMuNiA5LjktMjguMSAxOC4yLTQzLjMgMjVWMjg4SDEyOFYyNTEuN2MtMTUuMi02LjctMjkuNy0xNS4xLTQzLjMtMjVMNDguNSAyMDAuM2MtMTcuOS0xMy0yMS44LTM4LTguOC01NS45em04OS44IDE4NC44bDYwLjYgNTMtMjYgMzcuMiAyNC4zIDI0LjNjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZzLTQwLjkgMTUuNi01Ni42IDBsLTQ4LTQ4QzcwIDQzOC42IDY4LjEgNDE3IDc5LjIgNDAxLjFsNTAuMi03MS44em0xMjguNSA1M2w2MC42LTUzIDUwLjIgNzEuOGMxMS4xIDE1LjkgOS4yIDM3LjUtNC41IDUxLjJsLTQ4IDQ4Yy0xNS42IDE1LjYtNDAuOSAxNS42LTU2LjYgMHMtMTUuNi00MC45IDAtNTYuNkwyODQgNDE5LjRsLTI2LTM3LjJ6XCJdXG59O1xudmFyIGZhVXNlcnNMaW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzLWxpbmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OTJcIiwgXCJNMjExLjIgOTZhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwek0zMiAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoODUuNmMxMC4xLTM5LjQgMzguNi03MS41IDc1LjgtODYuNmMtOS43LTYtMjEuMi05LjQtMzMuNC05LjRIOTZjLTM1LjMgMC02NCAyOC43LTY0IDY0em00NjEuNiAzMkg1NzZjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0zNS4zLTI4LjctNjQtNjQtNjRINDQ4Yy0xMS43IDAtMjIuNyAzLjEtMzIuMSA4LjZjMzguMSAxNC44IDY3LjQgNDcuMyA3Ny43IDg3LjR6TTM5MS4yIDIyNi40Yy02LjktMS42LTE0LjItMi40LTIxLjYtMi40aC05NmMtOC41IDAtMTYuNyAxLjEtMjQuNSAzLjFjLTMwLjggOC4xLTU1LjYgMzEuMS02Ni4xIDYwLjljLTMuNSAxMC01LjUgMjAuOC01LjUgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtMTEuMi0xLjktMjItNS41LTMyYy0xMC44LTMwLjctMzYuOC01NC4yLTY4LjktNjEuNnpNNTYzLjIgOTZhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwek0zMjEuNiAxOTJhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6TTMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJ6XCJdXG59O1xudmFyIGZhUXVvdGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3F1b3RlLWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs4MjIwLCBcInF1b3RlLWxlZnQtYWx0XCJdLCBcImYxMGRcIiwgXCJNMCAyMTZDMCAxNDkuNyA1My43IDk2IDEyMCA5Nmg4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyaC04Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4aDY0YzM1LjMgMCA2NCAyOC43IDY0IDY0djY0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYzMjAgMjg4IDIxNnptMjU2IDBjMC02Ni4zIDUzLjctMTIwIDEyMC0xMjBoOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmgtOGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ2OGg2NGMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NEgzMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0VjMyMCAyODggMjE2elwiXVxufTtcbnZhciBmYVF1b3RlTGVmdEFsdCA9IGZhUXVvdGVMZWZ0O1xudmFyIGZhVHJhY3RvciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFjdG9yJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NjY4XSwgXCJmNzIyXCIsIFwiTTk2IDY0YzAtMzUuMyAyOC43LTY0IDY0LTY0SDI2Ni4zYzI2LjIgMCA0OS43IDE1LjkgNTkuNCA0MC4yTDM3My43IDE2MEg0ODBWMTI2LjJjMC0yNC44IDUuOC00OS4zIDE2LjktNzEuNmwyLjUtNWM3LjktMTUuOCAyNy4xLTIyLjIgNDIuOS0xNC4zczIyLjIgMjcuMSAxNC4zIDQyLjlsLTIuNSA1Yy02LjcgMTMuMy0xMC4xIDI4LTEwLjEgNDIuOVYxNjBoNTZjMjIuMSAwIDQwIDE3LjkgNDAgNDB2NDUuNGMwIDE2LjUtOC41IDMxLjktMjIuNiA0MC43bC00My4zIDI3LjFjLTE0LjItNS45LTI5LjgtOS4yLTQ2LjEtOS4yYy0zOS4zIDAtNzQuMSAxOC45LTk2IDQ4SDM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMmgtOC4yYy0xLjcgNC44LTMuNyA5LjUtNS44IDE0LjFsNS44IDUuOGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMjIuNiAyMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtNS44LTUuOGMtNC42IDIuMi05LjMgNC4xLTE0LjEgNS44VjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi04LjJjLTQuOC0xLjctOS41LTMuNy0xNC4xLTUuOGwtNS44IDUuOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBMNDAuMiA0NDkuMWMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsNS44LTUuOGMtMi4yLTQuNi00LjEtOS4zLTUuOC0xNC4xSDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJoOC4yYzEuNy00LjggMy43LTkuNSA1LjgtMTQuMWwtNS44LTUuOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsMjIuNi0yMi42YzktOSAyMS45LTExLjUgMzMuMS03LjZWMTkyIDE2MCA2NHptMTcwLjMgMEgxNjB2OTZoMzJIMzA0LjdMMjY2LjMgNjR6TTE3NiAyNTZhODAgODAgMCAxIDAgMCAxNjAgODAgODAgMCAxIDAgMC0xNjB6TTUyOCA0NDhhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wIDY0Yy00OC42IDAtODgtMzkuNC04OC04OGMwLTI5LjggMTQuOC01Ni4xIDM3LjQtNzJjMTQuMy0xMC4xIDMxLjgtMTYgNTAuNi0xNmMyLjcgMCA1LjMgLjEgNy45IC4zYzQ0LjkgNCA4MC4xIDQxLjcgODAuMSA4Ny43YzAgNDguNi0zOS40IDg4LTg4IDg4elwiXVxufTtcbnZhciBmYVRyYXNoQXJyb3dVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFzaC1hcnJvdy11cCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1widHJhc2gtcmVzdG9yZVwiXSwgXCJmODI5XCIsIFwiTTE2My44IDBIMjg0LjJjMTIuMSAwIDIzLjIgNi44IDI4LjYgMTcuN0wzMjAgMzJoOTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMyaDk2bDcuMi0xNC4zQzE0MC42IDYuOCAxNTEuNyAwIDE2My44IDB6TTMyIDEyOEg0MTZMMzk0LjggNDY3Yy0xLjYgMjUuMy0yMi42IDQ1LTQ3LjkgNDVIMTAxLjFjLTI1LjMgMC00Ni4zLTE5LjctNDcuOS00NUwzMiAxMjh6bTE5MiA2NGMtNi40IDAtMTIuNSAyLjUtMTcgN2wtODAgODBjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGwzOS0zOVY0MDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyNzMuOWwzOSAzOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTgwLTgwYy00LjUtNC41LTEwLjYtNy0xNy03elwiXVxufTtcbnZhciBmYVRyYXNoUmVzdG9yZSA9IGZhVHJhc2hBcnJvd1VwO1xudmFyIGZhQXJyb3dEb3duVXBMb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWRvd24tdXAtbG9jaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRiMFwiLCBcIk0xNTAuNiA1MDIuNmw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgNDAyLjdWMjg4SDQxNlYyNzJjMC0xNy4yIDMuOS0zMy41IDEwLjgtNDhIMzUyVjEwOS4zbDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtNi02LTE0LjEtOS40LTIyLjYtOS40cy0xNi42IDMuNC0yMi42IDkuNGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjg4IDEwOS4zVjIyNGwtMTI4IDBIOTZsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIOTZWNDAyLjdMNTQuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDB6TTE2MCAxOTJWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMTkyaDY0ek0yODggMzIwVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyMEgyODh6bTI0MC04MGMxNy43IDAgMzIgMTQuMyAzMiAzMnY0OEg0OTZWMjcyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJ2NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyVjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMyVjI3MmMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIl1cbn07XG52YXIgZmFMaW5lc0xlYW5pbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGluZXMtbGVhbmluZycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTUxZVwiLCBcIk0xOTAuNCA3NC4xYzUuNi0xNi44LTMuNS0zNC45LTIwLjItNDAuNXMtMzQuOSAzLjUtNDAuNSAyMC4ybC0xMjggMzg0Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDEyOC0zODR6bTcwLjktNDEuN2MtMTcuNC0yLjktMzMuOSA4LjktMzYuOCAyNi4zbC02NCAzODRjLTIuOSAxNy40IDguOSAzMy45IDI2LjMgMzYuOHMzMy45LTguOSAzNi44LTI2LjNsNjQtMzg0YzIuOS0xNy40LTguOS0zMy45LTI2LjMtMzYuOHpNMzUyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIl1cbn07XG52YXIgZmFSdWxlckNvbWJpbmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1bGVyLWNvbWJpbmVkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTQ2XCIsIFwiTS4yIDQ2OC45QzIuNyA0OTMuMSAyMy4xIDUxMiA0OCA1MTJsOTYgMCAzMjAgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTk2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC00OCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC02NCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MC04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDAgMC02NC04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDAgMC02NC04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDAgMC00OGMwLTI2LjUtMjEuNS00OC00OC00OEw0OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDM2OGwwIDk2YzAgMS43IC4xIDMuMyAuMiA0Ljl6XCJdXG59O1xudmFyIGZhQ29weXJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvcHlyaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzE2OV0sIFwiZjFmOVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTk5LjQgMzEyLjZjMzEuMiAzMS4yIDgxLjkgMzEuMiAxMTMuMSAwYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtNTAgNTAtMTMxIDUwLTE4MSAwcy01MC0xMzEgMC0xODFzMTMxLTUwIDE4MSAwYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBjLTMxLjItMzEuMi04MS45LTMxLjItMTEzLjEgMHMtMzEuMiA4MS45IDAgMTEzLjF6XCJdXG59O1xudmFyIGZhRXF1YWxzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VxdWFscycsXG4gIGljb246IFs0NDgsIDUxMiwgWzYyNzY0XSwgXCIzZFwiLCBcIk00OCAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDQ4em0wIDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDh6XCJdXG59O1xudmFyIGZhQmxlbmRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdibGVuZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTE3XCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwaDY0IDMySDQ3MC4xYzIxLjEgMCAzNi40IDIwLjEgMzAuOSA0MC40TDQ5NC41IDY0SDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNkg0ODUuOGwtMTcuNSA2NEgzMzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZINDU5LjZsLTE3LjUgNjRIMzM2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDk3LjVMNDE2IDM1MkgxNjBsLTguNy05Nkg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6TTE0NS41IDE5MkwxMzMuOCA2NEg2NFYxOTJoODEuNXpNMTQ0IDM4NEg0MzJjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzJjMCAyNi41LTIxLjUgNDgtNDggNDhIMTQ0Yy0yNi41IDAtNDgtMjEuNS00OC00OFY0MzJjMC0yNi41IDIxLjUtNDggNDgtNDh6bTE0NCA5NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhVGVldGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVldGgnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY2MmVcIiwgXCJNMCAxMjhDMCA3NSA0MyAzMiA5NiAzMkg0ODBjNTMgMCA5NiA0MyA5NiA5NlYzODRjMCA1My00MyA5Ni05NiA5Nkg5NmMtNTMgMC05Ni00My05Ni05NlYxMjh6bTE3NiA0OHY1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh6bTE3Ni00OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTc2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAyMDh2MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4ek05NiAzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHptODAtNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OFYzMTJjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNHptMTc2IDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMjhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4em04MC0xNzZ2MjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4em00OCAxNzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQ1NmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjRjMCAyNi41IDIxLjUgNDggNDggNDh6XCJdXG59O1xudmFyIGZhU2hla2VsU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGVrZWwtc2lnbicsXG4gIGljb246IFs0NDgsIDUxMiwgWzgzNjIsIFwiaWxzXCIsIFwic2hla2VsXCIsIFwic2hlcWVsXCIsIFwic2hlcWVsLXNpZ25cIl0sIFwiZjIwYlwiLCBcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0VjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjk2SDE5MmMzNS4zIDAgNjQgMjguNyA2NCA2NFYzMjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlYxNjBjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhIMzJ6TTMyMCA0ODBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhWNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMzUyYzAgMzUuMy0yOC43IDY0LTY0IDY0SDE5MlYxOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDMyMHpcIl1cbn07XG52YXIgZmFJbHMgPSBmYVNoZWtlbFNpZ247XG52YXIgZmFTaGVrZWwgPSBmYVNoZWtlbFNpZ247XG52YXIgZmFTaGVxZWwgPSBmYVNoZWtlbFNpZ247XG52YXIgZmFTaGVxZWxTaWduID0gZmFTaGVrZWxTaWduO1xudmFyIGZhTWFwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODUwNiwgNjIwNzJdLCBcImYyNzlcIiwgXCJNMzg0IDQ3Ni4xTDE5MiA0MjEuMlYzNS45TDM4NCA5MC44VjQ3Ni4xem0zMi0xLjJWODguNEw1NDMuMSAzNy41YzE1LjgtNi4zIDMyLjkgNS4zIDMyLjkgMjIuM1YzOTQuNmMwIDkuOC02IDE4LjYtMTUuMSAyMi4zTDQxNiA0NzQuOHpNMTUuMSA5NS4xTDE2MCAzNy4yVjQyMy42TDMyLjkgNDc0LjVDMTcuMSA0ODAuOCAwIDQ2OS4yIDAgNDUyLjJWMTE3LjRjMC05LjggNi0xOC42IDE1LjEtMjIuM3pcIl1cbn07XG52YXIgZmFSb2NrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm9ja2V0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTM1XCIsIFwiTTE1Ni42IDM4NC45TDEyNS43IDM1NGMtOC41LTguNS0xMS41LTIwLjgtNy43LTMyLjJjMy04LjkgNy0yMC41IDExLjgtMzMuOEwyNCAyODhjLTguNiAwLTE2LjYtNC42LTIwLjktMTIuMXMtNC4yLTE2LjcgLjItMjQuMWw1Mi41LTg4LjVjMTMtMjEuOSAzNi41LTM1LjMgNjEuOS0zNS4zbDgyLjMgMGMyLjQtNCA0LjgtNy43IDcuMi0xMS4zQzI4OS4xLTQuMSA0MTEuMS04LjEgNDgzLjkgNS4zYzExLjYgMi4xIDIwLjYgMTEuMiAyMi44IDIyLjhjMTMuNCA3Mi45IDkuMyAxOTQuOC0xMTEuNCAyNzYuN2MtMy41IDIuNC03LjMgNC44LTExLjMgNy4ydjgyLjNjMCAyNS40LTEzLjQgNDktMzUuMyA2MS45bC04OC41IDUyLjVjLTcuNCA0LjQtMTYuNiA0LjUtMjQuMSAuMnMtMTIuMS0xMi4yLTEyLjEtMjAuOVYzODAuOGMtMTQuMSA0LjktMjYuNCA4LjktMzUuNyAxMS45Yy0xMS4yIDMuNi0yMy40IC41LTMxLjgtNy44ek0zODQgMTY4YTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpcIl1cbn07XG52YXIgZmFQaG90b0ZpbG0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvdG8tZmlsbScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wicGhvdG8tdmlkZW9cIl0sIFwiZjg3Y1wiLCBcIk0yNTYgMEg1NzZjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMjg4YzAgMzUuMy0yOC43IDY0LTY0IDY0SDI1NmMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjRjMC0zNS4zIDI4LjctNjQgNjQtNjR6TTQ3NiAxMDYuN0M0NzEuNSAxMDAgNDY0IDk2IDQ1NiA5NnMtMTUuNSA0LTIwIDEwLjdsLTU2IDg0TDM2Mi43IDE2OWMtNC42LTUuNy0xMS41LTktMTguNy05cy0xNC4yIDMuMy0xOC43IDlsLTY0IDgwYy01LjggNy4yLTYuOSAxNy4xLTIuOSAyNS40czEyLjQgMTMuNiAyMS42IDEzLjZoODAgNDhINTUyYzguOSAwIDE3LTQuOSAyMS4yLTEyLjdzMy43LTE3LjMtMS4yLTI0LjZsLTk2LTE0NHpNMzM2IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTY0IDEyOGg5NlYzODR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMzIwYzE3LjcgMCAzMi0xNC4zIDMyLTMyVjM4NEg1MTJ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjE5MmMwLTM1LjMgMjguNy02NCA2NC02NHptOCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNkg4OGM4LjggMCAxNi03LjIgMTYtMTZWMjA4YzAtOC44LTcuMi0xNi0xNi0xNkg3MnptMCAxMDRjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZIODhjOC44IDAgMTYtNy4yIDE2LTE2VjMxMmMwLTguOC03LjItMTYtMTYtMTZINzJ6bTAgMTA0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2SDg4YzguOCAwIDE2LTcuMiAxNi0xNlY0MTZjMC04LjgtNy4yLTE2LTE2LTE2SDcyem0zMzYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDE2YzguOCAwIDE2LTcuMiAxNi0xNlY0MTZjMC04LjgtNy4yLTE2LTE2LTE2SDQyNGMtOC44IDAtMTYgNy4yLTE2IDE2elwiXVxufTtcbnZhciBmYVBob3RvVmlkZW8gPSBmYVBob3RvRmlsbTtcbnZhciBmYUZvbGRlck1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci1taW51cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY1ZFwiLCBcIk00NDggNDgwSDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFY5NkMwIDYwLjcgMjguNyAzMiA2NCAzMkgxOTJjMjAuMSAwIDM5LjEgOS41IDUxLjIgMjUuNmwxOS4yIDI1LjZjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOEg0NDhjMzUuMyAwIDY0IDI4LjcgNjQgNjRWNDE2YzAgMzUuMy0yOC43IDY0LTY0IDY0ek0xODQgMjcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDMyOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEgxODR6XCJdXG59O1xudmFyIGZhU3RvcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RvcmUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1NGVcIiwgXCJNNTQ3LjYgMTAzLjhMNDkwLjMgMTMuMUM0ODUuMiA1IDQ3Ni4xIDAgNDY2LjQgMEgxMDkuNkM5OS45IDAgOTAuOCA1IDg1LjcgMTMuMUwyOC4zIDEwMy44Yy0yOS42IDQ2LjgtMy40IDExMS45IDUxLjkgMTE5LjRjNCAuNSA4LjEgLjggMTIuMSAuOGMyNi4xIDAgNDkuMy0xMS40IDY1LjItMjljMTUuOSAxNy42IDM5LjEgMjkgNjUuMiAyOWMyNi4xIDAgNDkuMy0xMS40IDY1LjItMjljMTUuOSAxNy42IDM5LjEgMjkgNjUuMiAyOWMyNi4yIDAgNDkuMy0xMS40IDY1LjItMjljMTYgMTcuNiAzOS4xIDI5IDY1LjIgMjljNC4xIDAgOC4xLS4zIDEyLjEtLjhjNTUuNS03LjQgODEuOC03Mi41IDUyLjEtMTE5LjR6TTQ5OS43IDI1NC45bC0uMSAwYy01LjMgLjctMTAuNyAxLjEtMTYuMiAxLjFjLTEyLjQgMC0yNC4zLTEuOS0zNS40LTUuM1YzODRIMTI4VjI1MC42Yy0xMS4yIDMuNS0yMy4yIDUuNC0zNS42IDUuNGMtNS41IDAtMTEtLjQtMTYuMy0xLjFsLS4xIDBjLTQuMS0uNi04LjEtMS4zLTEyLTIuM1YzODR2NjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjM4NCAyNTIuNmMtNCAxLTggMS44LTEyLjMgMi4zelwiXVxufTtcbnZhciBmYUFycm93VHJlbmRVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy10cmVuZC11cCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA5OFwiLCBcIk0zODQgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDU0NGMxNy43IDAgMzIgMTQuMyAzMiAzMlYyODhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjA1LjNMMzQyLjYgMzc0LjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDE5MiAyNjkuMyA1NC42IDQwNi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxNjAtMTYwYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwTDMyMCAzMDYuNyA0NjYuNyAxNjBIMzg0elwiXVxufTtcbnZhciBmYVBsdWdDaXJjbGVNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbHVnLWNpcmNsZS1taW51cycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU1ZVwiLCBcIk05NiAwQzc4LjMgMCA2NCAxNC4zIDY0IDMydjk2aDY0VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTMyIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnYzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0MTIuOGMxMi4zLTIuNSAyNC4xLTYuNCAzNS4xLTExLjVjLTIuMS0xMC44LTMuMS0yMS45LTMuMS0zMy4zYzAtODAuMyA1My44LTE0OCAxMjcuMy0xNjkuMmMuNS0yLjIgLjctNC41IC43LTYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMnpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNjQgMGMwIDguOC03LjIgMTYtMTYgMTZIMzY4Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2SDQ5NmM4LjggMCAxNiA3LjIgMTYgMTZ6XCJdXG59O1xudmFyIGZhU2lnbkhhbmdpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2lnbi1oYW5naW5nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzaWduXCJdLCBcImY0ZDlcIiwgXCJNOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY2NGwzNTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzUyIDBWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjEyOEgzMkMxNC4zIDEyOCAwIDExMy43IDAgOTZTMTQuMyA2NCAzMiA2NEg2NFYzMkM2NCAxNC4zIDc4LjMgMCA5NiAwem05NiAxNjBINDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMkgxOTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFTaWduID0gZmFTaWduSGFuZ2luZztcbnZhciBmYUJlemllckN1cnZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jlemllci1jdXJ2ZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU1YlwiLCBcIk0yOTYgMTM2Vjg4aDQ4djQ4SDI5NnpNMjg4IDMyYy0yNi41IDAtNDggMjEuNS00OCA0OHY0SDEyMS42QzExMS4yIDYyLjcgODkuMyA0OCA2NCA0OEMyOC43IDQ4IDAgNzYuNyAwIDExMnMyOC43IDY0IDY0IDY0YzI1LjMgMCA0Ny4yLTE0LjcgNTcuNi0zNmg2Ni45Yy01OC45IDM5LjYtOTguOSAxMDUtMTA0IDE4MEg4MGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2NjRjMCAyNi41IDIxLjUgNDggNDggNDhoNjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzY4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC0zLjNjNS45LTY3IDQ4LjUtMTIzLjQgMTA3LjUtMTQ5LjFjOC42IDEyLjcgMjMuMiAyMS4xIDM5LjggMjEuMWg2NGMxNi42IDAgMzEuMS04LjQgMzkuOC0yMS4xYzU5IDI1LjcgMTAxLjYgODIuMSAxMDcuNSAxNDkuMUg0OTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDY0YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM2OGMwLTI2LjUtMjEuNS00OC00OC00OGgtNC41Yy01LTc1LTQ1LjEtMTQwLjQtMTA0LTE4MGg2Ni45YzEwLjQgMjEuMyAzMi4zIDM2IDU3LjYgMzZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRjLTI1LjMgMC00Ny4yIDE0LjctNTcuNiAzNkg0MDBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMjg4ek04OCAzNzZoNDh2NDhIODhWMzc2em00MTYgNDhWMzc2aDQ4djQ4SDUwNHpcIl1cbn07XG52YXIgZmFCZWxsU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVsbC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODI3NywgNjE5NDNdLCBcImYxZjZcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtODcuNS02OC42Yy41LTEuNyAuNy0zLjUgLjctNS40YzAtMjcuNi0xMS01NC4xLTMwLjUtNzMuN0w1MTIgMzIwYy0yMC41LTIwLjUtMzItNDguMy0zMi03Ny4zVjIwOGMwLTc3LjQtNTUtMTQyLTEyOC0xNTYuOFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlY1MS4yYy00Mi42IDguNi03OSAzNC4yLTEwMiA2OS4zTDM4LjggNS4xek0xNjAgMjQyLjdjMCAyOS0xMS41IDU2LjgtMzIgNzcuM2wtMS41IDEuNUMxMDcgMzQxIDk2IDM2Ny41IDk2IDM5NS4yYzAgMTEuNSA5LjMgMjAuOCAyMC44IDIwLjhINDA2LjJMMTYwIDIyMi4xdjIwLjd6TTM4NCA0NDhIMzIwIDI1NmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3MxOC43LTI4LjMgMTguNy00NS4zelwiXVxufTtcbnZhciBmYVRhYmxldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZXQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcInRhYmxldC1hbmRyb2lkXCJdLCBcImYzZmJcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNMTc2IDQzMmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xudmFyIGZhVGFibGV0QW5kcm9pZCA9IGZhVGFibGV0O1xudmFyIGZhU2Nob29sRmxhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2hvb2wtZmxhZycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU2ZVwiLCBcIk0yODggMEg0MDBjOC44IDAgMTYgNy4yIDE2IDE2VjgwYzAgOC44LTcuMiAxNi0xNiAxNkgzMjAuN2w4OS42IDY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRIMzM2VjQwMGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OFY1MTJINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjIyNGMwLTM1LjMgMjguNy02NCA2NC02NEgxNjUuN0wyNTYgOTUuNVYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptNDggMjQwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTgwIDIyNGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg4MHptMzY4IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNkg0NjRjLTguOCAwLTE2IDcuMi0xNiAxNnpNODAgMzUyYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzNjhjMC04LjgtNy4yLTE2LTE2LTE2SDgwem0zODQgMGMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNkg0NjR6XCJdXG59O1xudmFyIGZhRmlsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTc1XCIsIFwiTTg2LjYgOS40Qzc0LjEtMy4xIDUzLjktMy4xIDQxLjQgOS40cy0xMi41IDMyLjggMCA0NS4zTDEyMi43IDEzNiAzMC42IDIyOC4xYy0zNy41IDM3LjUtMzcuNSA5OC4zIDAgMTM1LjhMMTQ4LjEgNDgxLjRjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwTDQ3NC4zIDI5MC45YzI4LjEtMjguMSAyOC4xLTczLjcgMC0xMDEuOEwzMjIuOSAzNy43Yy0yOC4xLTI4LjEtNzMuNy0yOC4xLTEwMS44IDBMMTY4IDkwLjcgODYuNiA5LjR6TTE2OCAxODEuM2w0OS40IDQ5LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wyMTMuMyAxMzZsNTMuMS01My4xYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBMNDI5LjEgMjM0LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM0wzODYuNyAyODhINjcuNWMxLjQtNS40IDQuMi0xMC40IDguNC0xNC42TDE2OCAxODEuM3pcIl1cbn07XG52YXIgZmFBbmdsZVVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlLXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbODk2M10sIFwiZjEwNlwiLCBcIk0yMDEuNCAxMzcuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxNjAgMTYwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDIyNCAyMDUuMyA4Ni42IDM0Mi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxNjAtMTYwelwiXVxufTtcbnZhciBmYURydW1zdGlja0JpdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJ1bXN0aWNrLWJpdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2ZDdcIiwgXCJNMTYwIDI2NS4yYzAgOC41LTMuNCAxNi42LTkuNCAyMi42bC0yNi44IDI2LjhjLTEyLjMgMTIuMy0zMi41IDExLjQtNDkuNCA3LjJDNjkuOCAzMjAuNiA2NSAzMjAgNjAgMzIwYy0zMy4xIDAtNjAgMjYuOS02MCA2MHMyNi45IDYwIDYwIDYwYzYuMyAwIDEyIDUuNyAxMiAxMmMwIDMzLjEgMjYuOSA2MCA2MCA2MHM2MC0yNi45IDYwLTYwYzAtNS0uNi05LjgtMS44LTE0LjVjLTQuMi0xNi45LTUuMi0zNy4xIDcuMi00OS40bDI2LjgtMjYuOGM2LTYgMTQuMS05LjQgMjIuNi05LjRIMzM2YzYuMyAwIDEyLjQtLjMgMTguNS0xYzExLjktMS4yIDE2LjQtMTUuNSAxMC44LTI2Yy04LjUtMTUuOC0xMy4zLTMzLjgtMTMuMy01M2MwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmM4IDAgMTUuNyAuOCAyMy4yIDIuNGMxMS43IDIuNSAyNC4xLTUuOSAyMi0xNy42QzQ5NC41IDYyLjUgNDIyLjUgMCAzMzYgMEMyMzguOCAwIDE2MCA3OC44IDE2MCAxNzZ2ODkuMnpcIl1cbn07XG52YXIgZmFIb2xseUJlcnJ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvbGx5LWJlcnJ5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2FhXCIsIFwiTTI1NiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04MCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTI3Ni44IDM4My44YzEgLjEgMi4xIC4yIDMuMiAuMmMzOS44IDAgNzIgMzIuMiA3MiA3MnYyMi43YzAgMTYuNCAxNiAyNy45IDMxLjYgMjIuOGwxMi44LTQuM2MxOC02IDM3LjMtNi41IDU1LjYtMS41bDE5LjQgNS4zYzE3LjkgNC45IDM0LjQtMTEuNiAyOS41LTI5LjVMNDk1LjYgNDUyYy01LTE4LjMtNC40LTM3LjYgMS41LTU1LjZsNC4zLTEyLjhjNS4yLTE1LjUtNi40LTMxLjYtMjIuOC0zMS42Yy0zNC42IDAtNjIuNy0yOC4xLTYyLjctNjIuN3YtMzJjMC0xNi40LTE2LTI3LjktMzEuNi0yMi44bC0xMi44IDQuM2MtMTggNi0zNy4zIDYuNS01NS42IDEuNWwtMjkuNi04LjFjLTIuOS0uOC01LjktMS04LjctLjdjNC4yIDkuNyA1LjggMjAuOCAzLjcgMzIuM0wyNzUgMjk4LjdjLTEuNSA4LjQtMS40IDE3IC41IDI1LjNsNS4zIDIzLjljMi44IDEyLjcgMS4xIDI1LjItNCAzNS45ek0xMjcuNiAyMzQuNWMtMTUuNS01LjItMzEuNiA2LjQtMzEuNiAyMi44djMyQzk2IDMyMy45IDY3LjkgMzUyIDMzLjMgMzUyYy0xNi40IDAtMjcuOSAxNi0yMi44IDMxLjZsNC4zIDEyLjhjNiAxOCA2LjUgMzcuMyAxLjUgNTUuNmwtNS4zIDE5LjRDNi4yIDQ4OS40IDIyLjYgNTA1LjggNDAuNSA1MDFMNjAgNDk1LjZjMTguMy01IDM3LjYtNC41IDU1LjYgMS41bDEyLjggNC4zYzE1LjUgNS4yIDMxLjYtNi40IDMxLjYtMjIuOHYtMzJjMC0zNC42IDI4LjEtNjIuNyA2Mi43LTYyLjdjMTYuNCAwIDI3LjktMTYgMjIuOC0zMS42bC00LjMtMTIuOGMtNi0xOC02LjUtMzcuMy0xLjUtNTUuNmw1LjMtMTkuNGM0LjktMTcuOS0xMS42LTM0LjQtMjkuNS0yOS41TDE5NiAyNDAuNGMtMTguMyA1LTM3LjYgNC40LTU1LjYtMS41bC0xMi44LTQuM3pNMzg0IDE0NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwiXVxufTtcbnZhciBmYUNoZXZyb25MZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXZyb24tbGVmdCcsXG4gIGljb246IFszMjAsIDUxMiwgWzkwMDFdLCBcImYwNTNcIiwgXCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNzcuMyAyNTYgMjQ2LjYgODYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTkyIDE5MnpcIl1cbn07XG52YXIgZmFCYWN0ZXJpYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWN0ZXJpYScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA1OVwiLCBcIk0zMDQuOSAuN2MtOS42LTIuNy0xOS41IDIuOC0yMi4zIDEyLjRsLTQuMyAxNS4yYy04LjMtLjYtMTYuOCAwLTI1LjIgMS45Yy03LjMgMS43LTE0LjMgMy41LTIxLjEgNS41bC01LjUtMTIuN2MtMy45LTkuMS0xNC41LTEzLjQtMjMuNi05LjVzLTEzLjQgMTQuNS05LjUgMjMuNmw0LjQgMTAuNGMtMTYuNiA2LjctMzEuNyAxNC40LTQ1LjQgMjIuOEwxNDcgNjJjLTUuNS04LjMtMTYuNy0xMC41LTI1LTVzLTEwLjUgMTYuNy01IDI1bDYgOWMtMTMuNyAxMS0yNS41IDIyLjgtMzUuOCAzNC45bC0xMC04Yy03LjgtNi4yLTE5LjEtNS0yNS4zIDIuOHMtNSAxOS4xIDIuOCAyNS4zTDY1LjkgMTU1Yy0xLjggMi44LTMuNSA1LjctNS4xIDguNWMtNi42IDExLjQtMTEuOCAyMi42LTE2IDMzbC04LTMuMmMtOS4yLTMuNy0xOS43IC44LTIzLjQgMTBzLjggMTkuNyAxMCAyMy40bDEwLjQgNC4yYy0uMiAuOC0uNCAxLjUtLjUgMi4zYy0yLjIgOS4zLTMuNCAxNy4zLTQuMSAyMy40Yy0uNCAzLjEtLjYgNS43LS44IDcuOGMtLjEgMS4xLS4xIDItLjIgMi44bC0uMSAxLjEgMCAuNSAwIC4yIDAgLjFjMCAwIDAgLjEgMjkuMSAxbC0uMSAwTDI4IDI2OS4zYy0uMSAzLjEgMCA2LjEgLjIgOS4xbC0xNS4yIDQuM0MzLjUgMjg1LjQtMiAyOTUuNCAuNyAzMDQuOXMxMi43IDE1LjEgMjIuMyAxMi40bDE1LjYtNC41YzcuNiAxMy42IDE4LjkgMjUgMzIuNiAzMi42TDY2LjcgMzYxYy0yLjcgOS42IDIuOCAxOS41IDEyLjQgMjIuM3MxOS41LTIuOCAyMi4zLTEyLjRsNC4zLTE1LjJjMS4yIC4xIDIuNCAuMiAzLjYgLjJjMTUuNiAuNSAzMC4zLTMuMyA0My0xMC4ybDkgOWM3IDcgMTguNCA3IDI1LjUgMHM3LTE4LjQgMC0yNS41bC03LjItNy4yYzkuMy0xMi42IDE1LjItMjcuOCAxNi4zLTQ0LjVsNy4xIDNjOS4xIDMuOSAxOS43LS4zIDIzLjYtOS41cy0uMy0xOS43LTkuNS0yMy42bC04LjYtMy43YzYuNC05LjkgMTcuMy0yMi40IDM2LjktMzMuM2wxLjMgNC40YzIuNyA5LjYgMTIuNyAxNS4xIDIyLjMgMTIuNHMxNS4xLTEyLjcgMTIuNC0yMi4zbC0yLjMtOC4xYzMuOC0xLjEgNy43LTIuMSAxMS45LTMuMWMxMS42LTIuNyAyMi4xLTcuNyAzMS4xLTE0LjRsNy4yIDcuMmM3IDcgMTguNCA3IDI1LjUgMHM3LTE4LjQgMC0yNS41bC05LTljNy42LTEzLjkgMTEuMy0zMC4xIDEwLjEtNDYuNmwxNS4yLTQuM2M5LjYtMi43IDE1LjEtMTIuNyAxMi40LTIyLjNTMzcwLjYgNjQgMzYxIDY2LjdsLTE1LjYgNC41Yy03LjctMTMuOS0xOS4xLTI1LjEtMzIuNi0zMi42bDQuNS0xNS42YzIuNy05LjYtMi44LTE5LjUtMTIuNC0yMi4zek0xMTIgMjcybC00OC0xLjUgMCAwYzExLjcgLjQgMjcuMyAuOSA0OCAxLjZ6bTE2LTgwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptNjQtNDhhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMzIyLjcgNDg5Yy0yLjcgOS42IDIuOCAxOS41IDEyLjQgMjIuM3MxOS41LTIuOCAyMi4yLTEyLjRsNC4zLTE1LjJjOC4zIC42IDE2LjggMCAyNS4yLTEuOWM3LjMtMS43IDE0LjMtMy41IDIxLjEtNS41bDUuNSAxMi43YzMuOSA5LjEgMTQuNSAxMy40IDIzLjYgOS41czEzLjQtMTQuNSA5LjUtMjMuNmwtNC40LTEwLjRjMTYuNi02LjcgMzEuNy0xNC40IDQ1LjQtMjIuOEw0OTMgNDUwYzUuNSA4LjMgMTYuNyAxMC41IDI1IDVzMTAuNS0xNi43IDUtMjVsLTYtOWMxMy43LTExIDI1LjUtMjIuOCAzNS44LTM0LjlsMTAgOGM3LjggNi4yIDE5LjEgNSAyNS4zLTIuOHM1LTE5LjEtMi44LTI1LjNMNTc0LjEgMzU3YzEuOC0yLjggMy41LTUuNyA1LjEtOC41YzYuNi0xMS40IDExLjgtMjIuNiAxNi0zM2w4IDMuMmM5LjIgMy43IDE5LjctLjggMjMuNC0xMHMtLjgtMTkuNy0xMC0yMy40bC0xMC40LTQuMmMuMi0uOCAuNC0xLjUgLjUtMi4zYzIuMi05LjMgMy40LTE3LjMgNC4xLTIzLjRjLjQtMy4xIC42LTUuNyAuOC03LjhjLjEtMS4xIC4xLTIgLjItMi44bC4xLTEuMSAwLS41IDAtLjIgMC0uMWMwIDAgMC0uMS0yOS4xLTFsLjEgMCAyOS4xIC45Yy4xLTMuMSAwLTYuMS0uMi05LjFsMTUuMi00LjNjOS42LTIuNyAxNS4xLTEyLjcgMTIuNC0yMi4zcy0xMi43LTE1LjEtMjIuMy0xMi40bC0xNS42IDQuNWMtNy42LTEzLjYtMTguOS0yNS0zMi42LTMyLjZsNC41LTE1LjZjMi43LTkuNi0yLjgtMTkuNS0xMi40LTIyLjNzLTE5LjUgMi44LTIyLjMgMTIuNGwtNC4zIDE1LjJjLTEuMi0uMS0yLjQtLjItMy42LS4yYy0xNS42LS41LTMwLjMgMy4zLTQzIDEwLjJsLTktOWMtNy03LTE4LjQtNy0yNS41IDBzLTcgMTguNCAwIDI1LjVsNy4yIDcuMmMtOS4zIDEyLjYtMTUuMiAyNy44LTE2LjMgNDQuNWwtNy4xLTNjLTkuMS0zLjktMTkuNyAuMy0yMy42IDkuNXMuMyAxOS43IDkuNSAyMy42bDguNiAzLjdjLTYuNCA5LjktMTcuMyAyMi40LTM2LjkgMzMuM2wtMS4zLTQuNGMtMi43LTkuNi0xMi43LTE1LjEtMjIuMy0xMi40cy0xNS4xIDEyLjctMTIuNCAyMi4zbDIuMyA4LjFjLTMuOCAxLjEtNy43IDIuMS0xMS45IDMuMWMtMTEuNiAyLjctMjIuMSA3LjctMzEuMSAxNC40bC03LjItNy4yYy03LTctMTguNC03LTI1LjUgMHMtNyAxOC40IDAgMjUuNWw5IDljLTcuNiAxMy45LTExLjMgMzAuMS0xMC4xIDQ2LjZsLTE1LjIgNC4zYy05LjYgMi43LTE1LjEgMTIuNy0xMi40IDIyLjJzMTIuNyAxNS4xIDIyLjMgMTIuNGwxNS42LTQuNWM3LjcgMTMuOSAxOS4xIDI1LjEgMzIuNiAzMi42TDMyMi43IDQ4OXpNNTc2IDI0MS41bDAgMGMtMTEuNy0uNC0yNy4zLS45LTQ4LTEuNmw0OCAxLjV6TTQ0OCAzODRhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHpcIl1cbn07XG52YXIgZmFIYW5kTGl6YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtbGl6YXJkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjU4XCIsIFwiTTAgMTEyQzAgODUuNSAyMS41IDY0IDQ4IDY0SDE2MGg4MCA0Ni41YzM2LjggMCA3MS4yIDE4IDkyLjEgNDguMmwxMTMuNSAxNjRjMTMgMTguNyAxOS45IDQxIDE5LjkgNjMuOHYxMiAxNiA0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjQwMi4yTDI3My45IDM1MkgyNDAgMTYwIDExMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OGg0OCA4MGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEgxNjAgNDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4elwiXVxufTtcbnZhciBmYU5vdGRlZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdub3RkZWYnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxZmVcIiwgXCJNNjQgMzkwLjNMMTUzLjUgMjU2IDY0IDEyMS43VjM5MC4zek0xMDIuNSA0NDhIMjgxLjVMMTkyIDMxMy43IDEwMi41IDQ0OHptMTI4LTE5MkwzMjAgMzkwLjNWMTIxLjdMMjMwLjUgMjU2ek0yODEuNSA2NEgxMDIuNUwxOTIgMTk4LjMgMjgxLjUgNjR6TTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDMzNmMyNi41IDAgNDggMjEuNSA0OCA0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4elwiXVxufTtcbnZhciBmYURpc2Vhc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGlzZWFzZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdmYVwiLCBcIk0yMzYuNCA2MS40TDIyNyA3NS41Yy0yMS4zIDMyLTU5LjQgNDguNS05Ny4zIDQyLjFsLTU5LjYtOS45QzMzLjQgMTAxLjYgMCAxMjkuOSAuMSAxNjcuMWMwIDE1LjkgNi40IDMxLjIgMTcuNiA0Mi41bDI5LjIgMjkuMmMxMSAxMSAxNy4yIDI1LjkgMTcuMiA0MS41YzAgMTUuOC02LjQgMzAuOS0xNy43IDQyTDMzLjMgMzM1LjFDMjIuMiAzNDUuOSAxNiAzNjAuNyAxNiAzNzYuMmMwIDM2LjggMzQuMSA2NC4yIDcwLjEgNTYuMmw2Mi4zLTEzLjhjNy43LTEuNyAxNS43LTIuNiAyMy42LTIuNmgxMGMyNy4yIDAgNTMuNyA5LjMgNzUgMjYuM0wyODcuOCA0NjdjMTAuNSA4LjQgMjMuNiAxMyAzNyAxM2MzMi43IDAgNTkuMy0yNi41IDU5LjMtNTkuM2wwLTI1LjJjMC0zNC45IDIxLjQtNjYuMiA1My45LTc4LjhsMzYuOS0xNC4zYzIyLjQtOC43IDM3LjItMzAuMyAzNy4yLTU0LjNjMC0yOC4xLTIwLjEtNTIuMy00Ny44LTU3LjNsLTI4LTUuMWMtMzYuNS02LjctNjUuNC0zNC41LTczLjYtNzAuN2wtNy4xLTMxLjVDMzQ4LjkgNTMuNCAzMjIuMSAzMiAyOTEuMyAzMmMtMjIgMC00Mi42IDExLTU0LjkgMjkuNHpNMTYwIDE5MmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTEyOCAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem0wIDgwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFCcmllZmNhc2VNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyaWVmY2FzZS1tZWRpY2FsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDY5XCIsIFwiTTE4NCA0OEgzMjhjNC40IDAgOCAzLjYgOCA4Vjk2SDE3NlY1NmMwLTQuNCAzLjYtOCA4LTh6bS01NiA4Vjk2SDY0QzI4LjcgOTYgMCAxMjQuNyAwIDE2MFY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEgzODRWNTZjMC0zMC45LTI1LjEtNTYtNTYtNTZIMTg0Yy0zMC45IDAtNTYgMjUuMS01NiA1NnptOTYgMTUyYzAtOC44IDcuMi0xNiAxNi0xNmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2NDhoNDhjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyODh2NDhjMCA4LjgtNy4yIDE2LTE2IDE2SDI0MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMyMEgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYyNzJjMC04LjggNy4yLTE2IDE2LTE2aDQ4VjIwOHpcIl1cbn07XG52YXIgZmFHZW5kZXJsZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dlbmRlcmxlc3MnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyMmRcIiwgXCJNMTkyIDE0NGExMTIgMTEyIDAgMSAxIDAgMjI0IDExMiAxMTIgMCAxIDEgMC0yMjR6bTAgMjg4YTE3NiAxNzYgMCAxIDAgMC0zNTIgMTc2IDE3NiAwIDEgMCAwIDM1MnpcIl1cbn07XG52YXIgZmFDaGV2cm9uUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hldnJvbi1yaWdodCcsXG4gIGljb246IFszMjAsIDUxMiwgWzkwMDJdLCBcImYwNTRcIiwgXCJNMzEwLjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDI1NiA3My40IDg2LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MnpcIl1cbn07XG52YXIgZmFSZXR3ZWV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JldHdlZXQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwNzlcIiwgXCJNMjcyIDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxNjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE5MmgzMmMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44bDMyIDAgMCAxMjhjMCA1MyA0MyA5NiA5NiA5NkgyNzJ6TTMwNCA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOEg0MTZjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44bC0zMiAwVjE5MmMwLTUzLTQzLTk2LTk2LTk2TDMwNCA5NnpcIl1cbn07XG52YXIgZmFDYXJSZWFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci1yZWFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJjYXItYWx0XCJdLCBcImY1ZGVcIiwgXCJNMTY1LjQgOTZIMzQ2LjZjMTMuNiAwIDI1LjcgOC42IDMwLjIgMjEuNEw0MDIuOSAxOTJIMTA5LjFsMjYuMS03NC42YzQuNS0xMi44IDE2LjYtMjEuNCAzMC4yLTIxLjR6bS05MC42IC4zTDM5LjYgMTk2LjhDMTYuNCAyMDYuNCAwIDIyOS4zIDAgMjU2djgwYzAgMjMuNyAxMi45IDQ0LjQgMzIgNTUuNFY0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJIOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDAwSDM4NHY0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMlYzOTEuNGMxOS4xLTExLjEgMzItMzEuNyAzMi01NS40VjI1NmMwLTI2LjctMTYuNC00OS42LTM5LjYtNTkuMkw0MzcuMiA5Ni4zQzQyMy43IDU3LjggMzg3LjQgMzIgMzQ2LjYgMzJIMTY1LjRjLTQwLjggMC03Ny4xIDI1LjgtOTAuNiA2NC4zek0yMDggMjcyaDk2YzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjA4Yy04LjggMC0xNi03LjItMTYtMTZWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnpNNDggMjgwYzAtMTMuMyAxMC43LTI0IDI0LTI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMzYwLTI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDQwOGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIl1cbn07XG52YXIgZmFDYXJBbHQgPSBmYUNhclJlYXI7XG52YXIgZmFQdW1wU29hcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwdW1wLXNvYXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwNmJcIiwgXCJNMTI4IDMydjk2SDI1NlY5Nmg2MC4xYzQuMiAwIDguMyAxLjcgMTEuMyA0LjdsMzMuOSAzMy45YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMzcyLjcgNTUuNGMtMTUtMTUtMzUuNC0yMy40LTU2LjYtMjMuNEgyNTZjMC0xNy43LTE0LjMtMzItMzItMzJIMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMTE3LjQgMTYwYy0zMy4zIDAtNjEgMjUuNS02My44IDU4LjdMMzUgNDQyLjdDMzEuOSA0ODAgNjEuMyA1MTIgOTguOCA1MTJIMjg1LjJjMzcuNCAwIDY2LjktMzIgNjMuOC02OS4zbC0xOC43LTIyNGMtMi44LTMzLjItMzAuNS01OC43LTYzLjgtNTguN0gxMTcuNHpNMjU2IDM2MGMwIDM1LjMtMjguNyA1Ni02NCA1NnMtNjQtMjAuNy02NC01NmMwLTMyLjUgMzctODAuOSA1MC45LTk3LjljMy4yLTMuOSA4LjEtNi4xIDEzLjEtNi4xczkuOSAyLjIgMTMuMSA2LjFDMjE5IDI3OS4xIDI1NiAzMjcuNSAyNTYgMzYwelwiXVxufTtcbnZhciBmYVZpZGVvU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlkZW8tc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZTJcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtODYuNC02Ny43IDEzLjggOS4yYzkuOCA2LjUgMjIuNCA3LjIgMzIuOSAxLjZzMTYuOS0xNi40IDE2LjktMjguMlYxMjhjMC0xMS44LTYuNS0yMi42LTE2LjktMjguMnMtMjMtNS0zMi45IDEuNmwtOTYgNjRMNDQ4IDE3NC45VjE5MiAzMjB2NS44bC0zMi0yNS4xVjEyOGMwLTM1LjMtMjguNy02NC02NC02NEgxMTMuOUwzOC44IDUuMXpNNDA3IDQxNi43TDMyLjMgMTIxLjVjLS4yIDIuMS0uMyA0LjMtLjMgNi41VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzNTJjMjMuNCAwIDQzLjktMTIuNiA1NS0zMS4zelwiXVxufTtcbnZhciBmYUJhdHRlcnlRdWFydGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhdHRlcnktcXVhcnRlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiYmF0dGVyeS0yXCJdLCBcImYyNDNcIiwgXCJNNDY0IDE2MGM4LjggMCAxNiA3LjIgMTYgMTZWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZINDY0ek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZWMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ2NGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE3NmMwLTQ0LjItMzUuOC04MC04MC04MEg4MHptMTEyIDk2SDk2VjMyMGg5NlYxOTJ6XCJdXG59O1xudmFyIGZhQmF0dGVyeTIgPSBmYUJhdHRlcnlRdWFydGVyO1xudmFyIGZhUmFkaW8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmFkaW8nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyNTFdLCBcImY4ZDdcIiwgXCJNNDk0LjggNDdjMTIuNy0zLjcgMjAtMTcuMSAxNi4zLTI5LjhTNDk0LTIuOCA0ODEuMiAxTDUxLjcgMTI2LjljLTkuNCAyLjctMTcuOSA3LjMtMjUuMSAxMy4yQzEwLjUgMTUxLjcgMCAxNzAuNiAwIDE5MnY0VjMwNCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE5MmMwLTM1LjMtMjguNy02NC02NC02NEgyMTguNUw0OTQuOCA0N3pNMzY4IDI0MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpNODAgMjU2YzAtOC44IDcuMi0xNiAxNi0xNmg5NmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg5NmMtOC44IDAtMTYtNy4yLTE2LTE2ek02NCAzMjBjMC04LjggNy4yLTE2IDE2LTE2SDIwOGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2em0xNiA2NGMwLTguOCA3LjItMTYgMTYtMTZoOTZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIOTZjLTguOCAwLTE2LTcuMi0xNi0xNnpcIl1cbn07XG52YXIgZmFCYWJ5Q2FycmlhZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFieS1jYXJyaWFnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY2FycmlhZ2UtYmFieVwiXSwgXCJmNzdkXCIsIFwiTTI1NiAxOTJILjFDMi43IDExNy45IDQxLjMgNTIuOSA5OSAxNC4xYzEzLjMtOC45IDMwLjgtNC4zIDM5LjkgOC44TDI1NiAxOTJ6bTEyOC0zMmMwLTM1LjMgMjguNy02NCA2NC02NGgzMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMHY2NGMwIDI1LjItNS44IDUwLjItMTcgNzMuNXMtMjcuOCA0NC41LTQ4LjYgNjIuM3MtNDUuNSAzMi03Mi43IDQxLjZTMjUzLjQgNDE2IDIyNCA0MTZzLTU4LjUtNS04NS43LTE0LjZzLTUxLjktMjMuOC03Mi43LTQxLjZzLTM3LjMtMzktNDguNi02Mi4zUzAgMjQ5LjIgMCAyMjRsMjI0IDAgMTYwIDBWMTYwek04MCA0MTZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em0yNDAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIl1cbn07XG52YXIgZmFDYXJyaWFnZUJhYnkgPSBmYUJhYnlDYXJyaWFnZTtcbnZhciBmYVRyYWZmaWNMaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmFmZmljLWxpZ2h0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTI4Njc4XSwgXCJmNjM3XCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MHMxNjAtNzEuNiAxNjAtMTYwVjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0em05NiA0MTZhNDggNDggMCAxIDEgMC05NiA0OCA0OCAwIDEgMSAwIDk2em00OC0xNzZhNDggNDggMCAxIDEgLTk2IDAgNDggNDggMCAxIDEgOTYgMHptLTQ4LTgwYTQ4IDQ4IDAgMSAxIDAtOTYgNDggNDggMCAxIDEgMCA5NnpcIl1cbn07XG52YXIgZmFUaGVybW9tZXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aGVybW9tZXRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ5MVwiLCBcIk05NiAzODIuMVYyOTMuM2MwLTE0LjkgNS45LTI5LjEgMTYuNC0zOS42bDI3LjMtMjcuMyA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQ1LjUtNDUuNUMzNTUuMiAxMC45IDM4MS40IDAgNDA4LjggMEM0NjUuOCAwIDUxMiA0Ni4yIDUxMiAxMDMuMmMwIDI3LjQtMTAuOSA1My42LTMwLjIgNzNMMjU4LjMgMzk5LjZjLTEwLjUgMTAuNS0yNC43IDE2LjQtMzkuNiAxNi40SDEyOS45TDQxIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw4OS04OXpcIl1cbn07XG52YXIgZmFWckNhcmRib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ci1jYXJkYm9hcmQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MjlcIiwgXCJNNTc2IDY0SDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4VjM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgxODQuNGMyNC4yIDAgNDYuNC0xMy43IDU3LjItMzUuNGwzMi02NGM4LjgtMTcuNSAyNi43LTI4LjYgNDYuMy0yOC42czM3LjUgMTEuMSA0Ni4zIDI4LjZsMzIgNjRjMTAuOCAyMS43IDMzIDM1LjQgNTcuMiAzNS40SDU3NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxMjhjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTk2IDI0MGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiAyNDB6bTM4NC02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIl1cbn07XG52YXIgZmFIYW5kTWlkZGxlRmluZ2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtbWlkZGxlLWZpbmdlcicsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODQwNV0sIFwiZjgwNlwiLCBcIk0yMzIgMGMtMjIuMSAwLTQwIDE3LjktNDAgNDBWMjA0LjJjLTguNS03LjYtMTkuNy0xMi4yLTMyLTEyLjJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djcgNzNjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZWMjY0LjNjLTIgMS40LTMuOSAzLTUuOCA0LjVMNTUgMjg0LjhDNDAuNCAyOTcgMzIgMzE1IDMyIDMzNFYzNzJjMCAzOCAxNi45IDc0IDQ2LjEgOTguM2w1LjQgNC41YzI4LjggMjQgNjUgMzcuMSAxMDIuNCAzNy4xSDMwNGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFYzMjAgMjg4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4Yy0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zQzM1MCAyMjcuNSAzMjkuMyAyMDggMzA0IDIwOGMtMTIuMyAwLTIzLjUgNC42LTMyIDEyLjJWNDBjMC0yMi4xLTE3LjktNDAtNDAtNDB6XCJdXG59O1xudmFyIGZhUGVyY2VudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJjZW50JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbNjIxMDEsIDYyNzg1LCBcInBlcmNlbnRhZ2VcIl0sIFwiMjVcIiwgXCJNMzc0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTMyMCAzMjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMzIwLTMyMHpNMTI4IDEyOEE2NCA2NCAwIDEgMCAwIDEyOGE2NCA2NCAwIDEgMCAxMjggMHpNMzg0IDM4NGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJdXG59O1xudmFyIGZhUGVyY2VudGFnZSA9IGZhUGVyY2VudDtcbnZhciBmYVRydWNrTW92aW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLW1vdmluZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRkZlwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjMwNHY4MCAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGMyNi4yIDAgNDkuNC0xMi42IDY0LTMyYzE0LjYgMTkuNCAzNy44IDMyIDY0IDMyYzQ0LjIgMCA4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDQxNmgzMy42Yy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTUuNS0uNi0xMC44LTEuNi0xNkg2MDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjg4IDI3MiAyNjEuN2MwLTkuMi0zLjItMTguMi05LTI1LjNsLTU4LjgtNzEuOGMtMTAuNi0xMy0yNi41LTIwLjUtNDMuMy0yMC41SDQ4MFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNTg1IDI1Nkg0ODBWMTkyaDQ4LjhjMi40IDAgNC43IDEuMSA2LjIgMi45TDU4NSAyNTZ6TTUyOCAzNjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNzYgNDAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTgwIDM2OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhR2xhc3NXYXRlckRyb3BsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3Mtd2F0ZXItZHJvcGxldCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRmNVwiLCBcIk0zMiAwQzIzLjEgMCAxNC42IDMuNyA4LjYgMTAuMlMtLjYgMjUuNCAuMSAzNC4zTDI4LjkgNDM3LjdjMyA0MS45IDM3LjggNzQuMyA3OS44IDc0LjNIMjc1LjNjNDIgMCA3Ni44LTMyLjQgNzkuOC03NC4zTDM4My45IDM0LjNjLjYtOC45LTIuNC0xNy42LTguNS0yNC4xUzM2MC45IDAgMzUyIDBIMzJ6TTgzIDI5Ny41TDY2LjQgNjRIMzE3LjZMMzAxIDI5Ny41IDI4OCAzMDRjLTIwLjEgMTAuMS00My45IDEwLjEtNjQgMHMtNDMuOS0xMC4xLTY0IDBzLTQzLjkgMTAuMS02NCAwbC0xMy02LjV6TTI1NiAxOTZjMC0yNC0zMy43LTcwLjEtNTIuMi05My41Yy02LjEtNy43LTE3LjUtNy43LTIzLjYgMEMxNjEuNyAxMjUuOSAxMjggMTcyIDEyOCAxOTZjMCAzMy4xIDI4LjcgNjAgNjQgNjBzNjQtMjYuOSA2NC02MHpcIl1cbn07XG52YXIgZmFEaXNwbGF5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Rpc3BsYXknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUxNjNcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRWMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0SDI0MGwtMTAuNyAzMkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM0Ni43TDMzNiA0MTZINTEyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek01MTIgNjRWMzUySDY0VjY0SDUxMnpcIl1cbn07XG52YXIgZmFGYWNlU21pbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1zbWlsZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU3OCwgXCJzbWlsZVwiXSwgXCJmMTE4XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYVNtaWxlID0gZmFGYWNlU21pbGU7XG52YXIgZmFUaHVtYnRhY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGh1bWJ0YWNrJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI4MjA0LCAxMjgzOTIsIFwidGh1bWItdGFja1wiXSwgXCJmMDhkXCIsIFwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBIMzIwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI5MC41bDExLjQgMTQ4LjJjMzYuNyAxOS45IDY1LjcgNTMuMiA3OS41IDk0LjdsMSAzYzMuMyA5LjggMS42IDIwLjUtNC40IDI4LjhzLTE1LjcgMTMuMy0yNiAxMy4zSDMyYy0xMC4zIDAtMTkuOS00LjktMjYtMTMuM3MtNy43LTE5LjEtNC40LTI4LjhsMS0zYzEzLjgtNDEuNSA0Mi44LTc0LjggNzkuNS05NC43TDkzLjUgNjRINjRDNDYuMyA2NCAzMiA0OS43IDMyIDMyek0xNjAgMzg0aDY0djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM4NHpcIl1cbn07XG52YXIgZmFUaHVtYlRhY2sgPSBmYVRodW1idGFjaztcbnZhciBmYVRyb3BoeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cm9waHknLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjc5NDJdLCBcImYwOTFcIiwgXCJNNDAwIDBIMTc2Yy0yNi41IDAtNDguMSAyMS44LTQ3LjEgNDguMmMuMiA1LjMgLjQgMTAuNiAuNyAxNS44SDI0QzEwLjcgNjQgMCA3NC43IDAgODhjMCA5Mi42IDMzLjUgMTU3IDc4LjUgMjAwLjdjNDQuMyA0My4xIDk4LjMgNjQuOCAxMzguMSA3NS44YzIzLjQgNi41IDM5LjQgMjYgMzkuNCA0NS42YzAgMjAuOS0xNyAzNy45LTM3LjkgMzcuOUgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDM1Ny45QzMzNyA0NDggMzIwIDQzMSAzMjAgNDEwLjFjMC0xOS42IDE1LjktMzkuMiAzOS40LTQ1LjZjMzkuOS0xMSA5My45LTMyLjcgMTM4LjItNzUuOEM1NDIuNSAyNDUgNTc2IDE4MC42IDU3NiA4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNEg0NDYuNGMuMy01LjIgLjUtMTAuNCAuNy0xNS44QzQ0OC4xIDIxLjggNDI2LjUgMCA0MDAgMHpNNDguOSAxMTJoODQuNGM5LjEgOTAuMSAyOS4yIDE1MC4zIDUxLjkgMTkwLjZjLTI0LjktMTEtNTAuOC0yNi41LTczLjItNDguM2MtMzItMzEuMS01OC03Ni02My0xNDIuM3pNNDY0LjEgMjU0LjNjLTIyLjQgMjEuOC00OC4zIDM3LjMtNzMuMiA0OC4zYzIyLjctNDAuMyA0Mi44LTEwMC41IDUxLjktMTkwLjZoODQuNGMtNS4xIDY2LjMtMzEuMSAxMTEuMi02MyAxNDIuM3pcIl1cbn07XG52YXIgZmFQZXJzb25QcmF5aW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1wcmF5aW5nJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI4NzIwLCBcInByYXlcIl0sIFwiZjY4M1wiLCBcIk0zNTIgNjRBNjQgNjQgMCAxIDAgMjI0IDY0YTY0IDY0IDAgMSAwIDEyOCAwek0yMzIuNyAyNjRsMjIuOSAzMS41YzYuNSA4LjkgMTYuMyAxNC43IDI3LjIgMTYuMXMyMS45LTEuNyAzMC40LTguN2w4OC03MmMxNy4xLTE0IDE5LjYtMzkuMiA1LjYtNTYuM3MtMzkuMi0xOS42LTU2LjMtNS42bC01NS4yIDQ1LjItMjYuMi0zNkMyNTMuNiAxNTYuNyAyMjguNiAxNDQgMjAyIDE0NGMtMzAuOSAwLTU5LjIgMTcuMS03My42IDQ0LjRMNzkuOCAyODAuOWMtMjAuMiAzOC41LTkuNCA4NS45IDI1LjYgMTExLjhMMTU4LjYgNDMySDcyYy0yMi4xIDAtNDAgMTcuOS00MCA0MHMxNy45IDQwIDQwIDQwSDI4MGMxNy4zIDAgMzIuNi0xMS4xIDM4LTI3LjVzLS4zLTM0LjQtMTQuMi00NC43TDE4Ny43IDM1NGw0NS05MHpcIl1cbn07XG52YXIgZmFQcmF5ID0gZmFQZXJzb25QcmF5aW5nO1xudmFyIGZhSGFtbWVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbW1lcicsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODI5Nl0sIFwiZjZlM1wiLCBcIk00MTMuNSAyMzcuNWMtMjguMiA0LjgtNTguMi0zLjYtODAtMjUuNGwtMzguMS0zOC4xQzI4MC40IDE1OSAyNzIgMTM4LjggMjcyIDExNy42VjEwNS41TDE5Mi4zIDYyYy01LjMtMi45LTguNi04LjYtOC4zLTE0LjdzMy45LTExLjUgOS41LTE0bDQ3LjItMjFDMjU5LjEgNC4yIDI3OSAwIDI5OS4yIDBoMTguMWMzNi43IDAgNzIgMTQgOTguNyAzOS4xbDQ0LjYgNDJjMjQuMiAyMi44IDMzLjIgNTUuNyAyNi42IDg2TDUwMyAxODNsOC04YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDI0IDI0YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC04OCA4OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTI0LTI0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw4LTgtMTcuNS0xNy41ek0yNy40IDM3Ny4xTDI2MC45IDE4Mi42YzMuNSA0LjkgNy41IDkuNiAxMS44IDE0bDM4LjEgMzguMWM2IDYgMTIuNCAxMS4yIDE5LjIgMTUuN0wxMzQuOSA0ODQuNmMtMTQuNSAxNy40LTM2IDI3LjQtNTguNiAyNy40QzM0LjEgNTEyIDAgNDc3LjggMCA0MzUuN2MwLTIyLjYgMTAuMS00NC4xIDI3LjQtNTguNnpcIl1cbn07XG52YXIgZmFIYW5kUGVhY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1wZWFjZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzk5OTZdLCBcImYyNWJcIiwgXCJNMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMjQwSDE5MlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptOTYgMTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptNjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyMjR6TTkzLjMgNTEuMkwxNzUuOSAyNDBIMTA2LjFMMzQuNyA3Ni44QzI3LjYgNjAuNiAzNSA0MS44IDUxLjIgMzQuN3MzNS4xIC4zIDQyLjEgMTYuNXptMjcgMjIxLjNsLS4yLS41aDY5LjlIMjE2YzIyLjEgMCA0MCAxNy45IDQwIDQwcy0xNy45IDQwLTQwIDQwSDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg1NmMzOS44IDAgNzItMzIuMiA3Mi03MmwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42YzEzLjIgMCAyNS40LTQgMzUuNi0xMC44YzguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjhjMTEuNyAwIDIyLjYtMy4xIDMyLTguNlYzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBIMjI2LjNjLTQyLjQgMC04My4xLTE2LjktMTEzLjEtNDYuOWwtMTEuNi0xMS42Qzc3LjUgNDI5LjUgNjQgMzk2LjkgNjQgMzYzVjMzNmMwLTMyLjcgMjQuNi01OS43IDU2LjMtNjMuNXpcIl1cbn07XG52YXIgZmFSb3RhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm90YXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MjYwLCBcInN5bmMtYWx0XCJdLCBcImYyZjFcIiwgXCJNMTQyLjkgMTQyLjljNjIuMi02Mi4yIDE2Mi43LTYyLjUgMjI1LjMtMUwzMjcgMTgzYy02LjkgNi45LTguOSAxNy4yLTUuMiAyNi4yczEyLjUgMTQuOCAyMi4yIDE0LjhINDYzLjVjMCAwIDAgMCAwIDBINDcyYzEzLjMgMCAyNC0xMC43IDI0LTI0VjcyYzAtOS43LTUuOC0xOC41LTE0LjgtMjIuMnMtMTkuMy0xLjctMjYuMiA1LjJMNDEzLjQgOTYuNmMtODcuNi04Ni41LTIyOC43LTg2LjItMzE1LjggMUM3My4yIDEyMiA1NS42IDE1MC43IDQ0LjggMTgxLjRjLTUuOSAxNi43IDIuOSAzNC45IDE5LjUgNDAuOHMzNC45LTIuOSA0MC44LTE5LjVjNy43LTIxLjggMjAuMi00Mi4zIDM3LjgtNTkuOHpNMTYgMzEydjcuNiAuN1Y0NDBjMCA5LjcgNS44IDE4LjUgMTQuOCAyMi4yczE5LjMgMS43IDI2LjItNS4ybDQxLjYtNDEuNmM4Ny42IDg2LjUgMjI4LjcgODYuMiAzMTUuOC0xYzI0LjQtMjQuNCA0Mi4xLTUzLjEgNTIuOS04My43YzUuOS0xNi43LTIuOS0zNC45LTE5LjUtNDAuOHMtMzQuOSAyLjktNDAuOCAxOS41Yy03LjcgMjEuOC0yMC4yIDQyLjMtMzcuOCA1OS44Yy02Mi4yIDYyLjItMTYyLjcgNjIuNS0yMjUuMyAxTDE4NSAzMjljNi45LTYuOSA4LjktMTcuMiA1LjItMjYuMnMtMTIuNS0xNC44LTIyLjItMTQuOEg0OC40aC0uN0g0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6XCJdXG59O1xudmFyIGZhU3luY0FsdCA9IGZhUm90YXRlO1xudmFyIGZhU3Bpbm5lciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcGlubmVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTEwXCIsIFwiTTMwNCA0OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0wIDQxNmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00OCAzMDRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00NjQtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTQyLjkgNDM3QTQ4IDQ4IDAgMSAwIDc1IDM2OS4xIDQ4IDQ4IDAgMSAwIDE0Mi45IDQzN3ptMC0yOTQuMkE0OCA0OCAwIDEgMCA3NSA3NWE0OCA0OCAwIDEgMCA2Ny45IDY3Ljl6TTM2OS4xIDQzN0E0OCA0OCAwIDEgMCA0MzcgMzY5LjEgNDggNDggMCAxIDAgMzY5LjEgNDM3elwiXVxufTtcbnZhciBmYVJvYm90ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvYm90JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI5MzAyXSwgXCJmNTQ0XCIsIFwiTTMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk2SDQ3MmMzOS44IDAgNzIgMzIuMiA3MiA3MlY0NDBjMCAzOS44LTMyLjIgNzItNzIgNzJIMTY4Yy0zOS44IDAtNzItMzIuMi03Mi03MlYxNjhjMC0zOS44IDMyLjItNzIgNzItNzJIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0yMDggMzg0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDIwOHptOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkgzMDR6bTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZINDAwek0yNjQgMjU2YTQwIDQwIDAgMSAwIC04MCAwIDQwIDQwIDAgMSAwIDgwIDB6bTE1MiA0MGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTQ4IDIyNEg2NFY0MTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjI3MmMwLTI2LjUgMjEuNS00OCA0OC00OHptNTQ0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDh2OTZjMCAyNi41LTIxLjUgNDgtNDggNDhINTc2VjIyNGgxNnpcIl1cbn07XG52YXIgZmFQZWFjZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZWFjZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzk3NzRdLCBcImY2N2NcIiwgXCJNMjI0IDQ0NS4zVjMyMy41bC05NC4zIDc3LjFjMjYuMSAyMi44IDU4LjUgMzguNyA5NC4zIDQ0Ljd6TTg5LjIgMzUxLjFMMjI0IDI0MC44VjY2LjdDMTMzLjIgODEuOSA2NCAxNjAuOSA2NCAyNTZjMCAzNC42IDkuMiA2Ny4xIDI1LjIgOTUuMXptMjkzLjEgNDkuNUwyODggMzIzLjVWNDQ1LjNjMzUuNy02IDY4LjEtMjEuOSA5NC4zLTQ0Ljd6bTQwLjYtNDkuNWMxNi0yOCAyNS4yLTYwLjUgMjUuMi05NS4xYzAtOTUuMS02OS4yLTE3NC4xLTE2MC0xODkuM1YyNDAuOEw0MjIuOCAzNTEuMXpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2elwiXVxufTtcbnZhciBmYUdlYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dlYXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJjb2dzXCJdLCBcImYwODVcIiwgXCJNMzA4LjUgMTM1LjNjNy4xLTYuMyA5LjktMTYuMiA2LjItMjVjLTIuMy01LjMtNC44LTEwLjUtNy42LTE1LjVMMzA0IDg5LjRjLTMtNS02LjMtOS45LTkuOC0xNC42Yy01LjctNy42LTE1LjctMTAuMS0yNC43LTcuMWwtMjguMiA5LjNjLTEwLjctOC44LTIzLTE2LTM2LjItMjAuOUwxOTkgMjcuMWMtMS45LTkuMy05LjEtMTYuNy0xOC41LTE3LjhDMTczLjkgOC40IDE2Ny4yIDggMTYwLjQgOGgtLjdjLTYuOCAwLTEzLjUgLjQtMjAuMSAxLjJjLTkuNCAxLjEtMTYuNiA4LjYtMTguNSAxNy44TDExNSA1Ni4xYy0xMy4zIDUtMjUuNSAxMi4xLTM2LjIgMjAuOUw1MC41IDY3LjhjLTktMy0xOS0uNS0yNC43IDcuMWMtMy41IDQuNy02LjggOS42LTkuOSAxNC42bC0zIDUuM2MtMi44IDUtNS4zIDEwLjItNy42IDE1LjZjLTMuNyA4LjctLjkgMTguNiA2LjIgMjVsMjIuMiAxOS44QzMyLjYgMTYxLjkgMzIgMTY4LjkgMzIgMTc2cy42IDE0LjEgMS43IDIwLjlMMTEuNSAyMTYuN2MtNy4xIDYuMy05LjkgMTYuMi02LjIgMjVjMi4zIDUuMyA0LjggMTAuNSA3LjYgMTUuNmwzIDUuMmMzIDUuMSA2LjMgOS45IDkuOSAxNC42YzUuNyA3LjYgMTUuNyAxMC4xIDI0LjcgNy4xbDI4LjItOS4zYzEwLjcgOC44IDIzIDE2IDM2LjIgMjAuOWw2LjEgMjkuMWMxLjkgOS4zIDkuMSAxNi43IDE4LjUgMTcuOGM2LjcgLjggMTMuNSAxLjIgMjAuNCAxLjJzMTMuNy0uNCAyMC40LTEuMmM5LjQtMS4xIDE2LjYtOC42IDE4LjUtMTcuOGw2LjEtMjkuMWMxMy4zLTUgMjUuNS0xMi4xIDM2LjItMjAuOWwyOC4yIDkuM2M5IDMgMTkgLjUgMjQuNy03LjFjMy41LTQuNyA2LjgtOS41IDkuOC0xNC42bDMuMS01LjRjMi44LTUgNS4zLTEwLjIgNy42LTE1LjVjMy43LTguNyAuOS0xOC42LTYuMi0yNWwtMjIuMi0xOS44YzEuMS02LjggMS43LTEzLjggMS43LTIwLjlzLS42LTE0LjEtMS43LTIwLjlsMjIuMi0xOS44ek0xMTIgMTc2YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTUwNC43IDUwMC41YzYuMyA3LjEgMTYuMiA5LjkgMjUgNi4yYzUuMy0yLjMgMTAuNS00LjggMTUuNS03LjZsNS40LTMuMWM1LTMgOS45LTYuMyAxNC42LTkuOGM3LjYtNS43IDEwLjEtMTUuNyA3LjEtMjQuN2wtOS4zLTI4LjJjOC44LTEwLjcgMTYtMjMgMjAuOS0zNi4ybDI5LjEtNi4xYzkuMy0xLjkgMTYuNy05LjEgMTcuOC0xOC41Yy44LTYuNyAxLjItMTMuNSAxLjItMjAuNHMtLjQtMTMuNy0xLjItMjAuNGMtMS4xLTkuNC04LjYtMTYuNi0xNy44LTE4LjVMNTgzLjkgMzA3Yy01LTEzLjMtMTIuMS0yNS41LTIwLjktMzYuMmw5LjMtMjguMmMzLTkgLjUtMTktNy4xLTI0LjdjLTQuNy0zLjUtOS42LTYuOC0xNC42LTkuOWwtNS4zLTNjLTUtMi44LTEwLjItNS4zLTE1LjYtNy42Yy04LjctMy43LTE4LjYtLjktMjUgNi4ybC0xOS44IDIyLjJjLTYuOC0xLjEtMTMuOC0xLjctMjAuOS0xLjdzLTE0LjEgLjYtMjAuOSAxLjdsLTE5LjgtMjIuMmMtNi4zLTcuMS0xNi4yLTkuOS0yNS02LjJjLTUuMyAyLjMtMTAuNSA0LjgtMTUuNiA3LjZsLTUuMiAzYy01LjEgMy05LjkgNi4zLTE0LjYgOS45Yy03LjYgNS43LTEwLjEgMTUuNy03LjEgMjQuN2w5LjMgMjguMmMtOC44IDEwLjctMTYgMjMtMjAuOSAzNi4yTDMxNS4xIDMxM2MtOS4zIDEuOS0xNi43IDkuMS0xNy44IDE4LjVjLS44IDYuNy0xLjIgMTMuNS0xLjIgMjAuNHMuNCAxMy43IDEuMiAyMC40YzEuMSA5LjQgOC42IDE2LjYgMTcuOCAxOC41bDI5LjEgNi4xYzUgMTMuMyAxMi4xIDI1LjUgMjAuOSAzNi4ybC05LjMgMjguMmMtMyA5LS41IDE5IDcuMSAyNC43YzQuNyAzLjUgOS41IDYuOCAxNC42IDkuOGw1LjQgMy4xYzUgMi44IDEwLjIgNS4zIDE1LjUgNy42YzguNyAzLjcgMTguNiAuOSAyNS02LjJsMTkuOC0yMi4yYzYuOCAxLjEgMTMuOCAxLjcgMjAuOSAxLjdzMTQuMS0uNiAyMC45LTEuN2wxOS44IDIyLjJ6TTQ2NCAzMDRhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwiXVxufTtcbnZhciBmYUNvZ3MgPSBmYUdlYXJzO1xudmFyIGZhV2FyZWhvdXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhcmVob3VzZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjQ5NFwiLCBcIk0wIDQ4OFYxNzEuM2MwLTI2LjIgMTUuOS00OS43IDQwLjItNTkuNEwzMDguMSA0LjhjNy42LTMuMSAxNi4xLTMuMSAyMy44IDBMNTk5LjggMTExLjljMjQuMyA5LjcgNDAuMiAzMy4zIDQwLjIgNTkuNFY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRINTY4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMlY0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0em00ODggMjRsLTMzNiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNFY0MzJINTEybDAgNTZjMCAxMy4zLTEwLjcgMjQtMjQgMjR6TTEyOCA0MDBWMzM2SDUxMnY2NEgxMjh6bTAtOTZWMjI0SDUxMmwwIDgwSDEyOHpcIl1cbn07XG52YXIgZmFBcnJvd1VwUmlnaHREb3RzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXVwLXJpZ2h0LWRvdHMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0YjdcIiwgXCJNMTYwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoNTAuN0w5LjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjU2IDEwOS4zVjE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE2MHpNNTc2IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ0OCAyMDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNNDAwIDM4NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ4IDgwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTEyOCAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTI3MiAzODRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00OCA4MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNDQgNTEyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNNTc2IDMzNmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0tNDgtODBhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwiXVxufTtcbnZhciBmYVNwbG90Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Bsb3RjaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjViY1wiLCBcIk0yMDguNSA2Mi4zbDI4LjEtMzYuOUMyNDguOCA5LjQgMjY3LjggMCAyODggMGMyOC41IDAgNTMuNiAxOC43IDYxLjggNDZsMTcuOCA1OS40YzEwLjMgMzQuNCAzNi4xIDYyIDY5LjggNzQuNmwzOS44IDE0LjljMjAuOSA3LjkgMzQuOCAyNy45IDM0LjggNTAuMmMwIDE2LjktNy45IDMyLjgtMjEuNSA0Mi45bC02Ny4zIDUwLjVjLTI0LjMgMTguMi0zNy4yIDQ3LjktMzMuOCA3OC4xbDIuNSAyMi43YzQuMyAzOC43LTI2IDcyLjYtNjUgNzIuNmMtMTQuOCAwLTI5LjMtNS4xLTQwLjgtMTQuM2wtNTUuNC00NC4zYy00LjUtMy42LTkuMy02LjctMTQuNS05LjJjLTE1LjgtNy45LTMzLjctMTAuNC01MS03LjNMODIuNCA0NTEuOUM0Ny44IDQ1OC4yIDE2IDQzMS42IDE2IDM5Ni41YzAtMTMuMiA0LjctMjYgMTMuMS0zNi4ybDExLjItMTMuNGMxNC42LTE3LjQgMjIuNi0zOS40IDIyLjYtNjIuMWMwLTE4LjgtNS41LTM3LjItMTUuOC01M0w4LjggMTczLjVDMy4xIDE2NC43IDAgMTU0LjQgMCAxNDMuOWMwLTMzLjQgMzAuMS01OC44IDYzLTUzLjJsNTEuMyA4LjdjMzUuOSA2LjEgNzIuMi04LjIgOTQuMi0zNy4xelwiXVxufTtcbnZhciBmYUZhY2VHcmluSGVhcnRzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZ3Jpbi1oZWFydHMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1MjUsIFwiZ3Jpbi1oZWFydHNcIl0sIFwiZjU4NFwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0xOTkuMyAxMjkuMWMxNy44IDQuOCAyOC40IDIzLjEgMjMuNiA0MC44bC0xNy40IDY1Yy0yLjMgOC41LTExLjEgMTMuNi0xOS42IDExLjNsLTY1LjEtMTcuNGMtMTcuOC00LjgtMjguNC0yMy4xLTIzLjYtNDAuOHMyMy4xLTI4LjQgNDAuOC0yMy42bDE2LjEgNC4zIDQuMy0xNi4xYzQuOC0xNy44IDIzLjEtMjguNCA0MC44LTIzLjZ6bTE1NC4zIDIzLjZsNC4zIDE2LjEgMTYuMS00LjNjMTcuOC00LjggMzYuMSA1LjggNDAuOCAyMy42cy01LjggMzYuMS0yMy42IDQwLjhsLTY1LjEgMTcuNGMtOC41IDIuMy0xNy4zLTIuOC0xOS42LTExLjNsLTE3LjQtNjVjLTQuOC0xNy44IDUuOC0zNi4xIDIzLjYtNDAuOHMzNi4xIDUuOCA0MC45IDIzLjZ6XCJdXG59O1xudmFyIGZhR3JpbkhlYXJ0cyA9IGZhRmFjZUdyaW5IZWFydHM7XG52YXIgZmFEaWNlRm91ciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWNlLWZvdXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5ODU5XSwgXCJmNTI0XCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJIMzg0YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTE2MCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0xMjggMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMzUyIDE2MGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG52YXIgZmFTaW1DYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpbS1jYXJkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmN2M0XCIsIFwiTTY0IDBIMjQyLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMMzY1LjMgOTZjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM1Y0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0QzAgMjguNyAyOC43IDAgNjQgMHpNOTYgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmg2NFYxOTJIOTZ6TTY0IDM1Mmg4MCA5NiA4MFYyODhIMjQwIDE0NCA2NHY2NHpNMzIwIDIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkgyNTZ2NjRoNjRWMjI0ek0xNjAgMTkydjY0aDY0VjE5MkgxNjB6TTI4OCA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzg0SDI1NnY2NGgzMnpNMTYwIDM4NHY2NGg2NFYzODRIMTYwek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzJWMzg0SDY0djMyelwiXVxufTtcbnZhciBmYVRyYW5zZ2VuZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYW5zZ2VuZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTg5NSwgXCJ0cmFuc2dlbmRlci1hbHRcIl0sIFwiZjIyNVwiLCBcIk0xMTIgMGM2LjUgMCAxMi4zIDMuOSAxNC44IDkuOXMxLjEgMTIuOS0zLjUgMTcuNGwtMzEgMzFMMTEyIDc4LjFsNy03YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNyA3IDE1LjIgMTUuMkMxODcuNyAxMDcuNiAyMjAuNSA5NiAyNTYgOTZzNjguMyAxMS42IDk0LjkgMzEuMmw2OC44LTY4LjgtMzEtMzFjLTQuNi00LjYtNS45LTExLjUtMy41LTE3LjRzOC4zLTkuOSAxNC44LTkuOWg5NmM4LjggMCAxNiA3LjIgMTYgMTZ2OTZjMCA2LjUtMy45IDEyLjMtOS45IDE0LjhzLTEyLjkgMS4xLTE3LjQtMy41bC0zMS0zMS02OC44IDY4LjhDNDA0LjQgMTg3LjcgNDE2IDIyMC41IDQxNiAyNTZjMCA4MC4yLTU5IDE0Ni42LTEzNiAxNTguMlY0MzJoMTZjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRIMjgwdjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR2LThIMjE2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDE2VjQxNC4yQzE1NSA0MDIuNiA5NiAzMzYuMiA5NiAyNTZjMC0zNS41IDExLjYtNjguMyAzMS4yLTk0LjlMMTEyIDE0NS45bC03IDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNy03TDU4LjMgOTIuM2wtMzEgMzFjLTQuNiA0LjYtMTEuNSA1LjktMTcuNCAzLjVTMCAxMTguNSAwIDExMlYxNkMwIDcuMiA3LjIgMCAxNiAwaDk2ek0zNTIgMjU2YTk2IDk2IDAgMSAwIC0xOTIgMCA5NiA5NiAwIDEgMCAxOTIgMHpcIl1cbn07XG52YXIgZmFUcmFuc2dlbmRlckFsdCA9IGZhVHJhbnNnZW5kZXI7XG52YXIgZmFNZXJjdXJ5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21lcmN1cnknLFxuICBpY29uOiBbMzg0LCA1MTIsIFs5NzkxXSwgXCJmMjIzXCIsIFwiTTcyLjEgN0M4NS44LTQgMTA2LTEuOCAxMTcgMTJjMTcuNiAyMiA0NC43IDM2IDc1IDM2czU3LjMtMTQgNzUtMzZjMTEuMS0xMy44IDMxLjItMTYgNDUtNXMxNiAzMS4yIDUgNDVjLTcuOCA5LjctMTYuNiAxOC40LTI2LjQgMjYuMUMzMzcuMyAxMDkuNyAzNjggMTYzLjMgMzY4IDIyNGMwIDg5LjEtNjYuMiAxNjIuNy0xNTIgMTc0LjRWNDI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDIxNnYxNmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY0NzJIMTM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDMyVjM5OC40QzgyLjIgMzg2LjcgMTYgMzEzLjEgMTYgMjI0YzAtNjAuNyAzMC43LTExNC4zIDc3LjUtMTQ1LjlDODMuNyA3MC41IDc0LjkgNjEuNyA2Ny4xIDUyYy0xMS4xLTEzLjgtOC44LTMzLjkgNS00NXpNODAgMjI0YTExMiAxMTIgMCAxIDAgMjI0IDBBMTEyIDExMiAwIDEgMCA4MCAyMjR6XCJdXG59O1xudmFyIGZhQXJyb3dUdXJuRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy10dXJuLWRvd24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImxldmVsLWRvd25cIl0sIFwiZjE0OVwiLCBcIk0zMiA2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwbDk2IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDMwNi43IDczLjQtNzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0xMjggMTI4Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgNDAyLjcgMTYwIDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDY0elwiXVxufTtcbnZhciBmYUxldmVsRG93biA9IGZhQXJyb3dUdXJuRG93bjtcbnZhciBmYVBlcnNvbkZhbGxpbmdCdXJzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tZmFsbGluZy1idXJzdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU0N1wiLCBcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA5LjhjMCAzOS0yMy43IDc0LTU5LjkgODguNEM3MS42IDE1NC41IDMyIDIxMyAzMiAyNzguMlYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTczLjhjMC0xMCAxLjYtMTkuOCA0LjUtMjlMMjYxLjEgNDk3LjRjOS42IDE0LjggMjkuNCAxOS4xIDQ0LjMgOS41czE5LjEtMjkuNCA5LjUtNDQuM0wyMjIuNiAzMjBIMjI0bDgwIDAgMzguNCA1MS4yYzEwLjYgMTQuMSAzMC43IDE3IDQ0LjggNi40czE3LTMwLjcgNi40LTQ0LjhsLTQzLjItNTcuNkMzNDEuMyAyNjMuMSAzMjcuMSAyNTYgMzEyIDI1NmwtNzEuNSAwLTU2LjgtODAuMi0uMi0uM2M0NC43LTI5IDcyLjUtNzkgNzIuNS0xMzMuNmwwLTkuOHpNOTYgODBBNDggNDggMCAxIDAgMCA4MGE0OCA0OCAwIDEgMCA5NiAwek00NjQgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA3OC43LTEyLjJjNi41LTEgMTEuNy01LjkgMTMuMS0xMi4ycy0xLjEtMTMtNi41LTE2LjdsLTY1LjYtNDUuMUw2MDMgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0w1MDguMyA5Mi4xbC0yOS40LTc0QzQ3Ni40IDEyIDQ3MC42IDggNDY0IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMMzQzLjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjEtNjUuNiA0NS4xYy01LjQgMy43LTggMTAuMy02LjUgMTYuN2MuMSAuMyAuMSAuNiAuMiAuOGwxOS40IDBjMjAuMSAwIDM5LjIgNy41IDUzLjggMjAuOGwxOC40IDIuOUwzODMgMjY1LjNsMzYuMiA0OC4zYzIuMSAyLjggMy45IDUuNyA1LjUgOC42TDQ2NCAyODYuMXpcIl1cbn07XG52YXIgZmFBd2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhd2FyZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU1OVwiLCBcIk0xNzMuOCA1LjVjMTEtNy4zIDI1LjQtNy4zIDM2LjQgMEwyMjggMTcuMmM2IDMuOSAxMyA1LjggMjAuMSA1LjRsMjEuMy0xLjNjMTMuMi0uOCAyNS42IDYuNCAzMS41IDE4LjJsOS42IDE5LjFjMy4yIDYuNCA4LjQgMTEuNSAxNC43IDE0LjdMMzQ0LjUgODNjMTEuOCA1LjkgMTkgMTguMyAxOC4yIDMxLjVsLTEuMyAyMS4zYy0uNCA3LjEgMS41IDE0LjIgNS40IDIwLjFsMTEuOCAxNy44YzcuMyAxMSA3LjMgMjUuNCAwIDM2LjRMMzY2LjggMjI4Yy0zLjkgNi01LjggMTMtNS40IDIwLjFsMS4zIDIxLjNjLjggMTMuMi02LjQgMjUuNi0xOC4yIDMxLjVsLTE5LjEgOS42Yy02LjQgMy4yLTExLjUgOC40LTE0LjcgMTQuN0wzMDEgMzQ0LjVjLTUuOSAxMS44LTE4LjMgMTktMzEuNSAxOC4ybC0yMS4zLTEuM2MtNy4xLS40LTE0LjIgMS41LTIwLjEgNS40bC0xNy44IDExLjhjLTExIDcuMy0yNS40IDcuMy0zNi40IDBMMTU2IDM2Ni44Yy02LTMuOS0xMy01LjgtMjAuMS01LjRsLTIxLjMgMS4zYy0xMy4yIC44LTI1LjYtNi40LTMxLjUtMTguMmwtOS42LTE5LjFjLTMuMi02LjQtOC40LTExLjUtMTQuNy0xNC43TDM5LjUgMzAxYy0xMS44LTUuOS0xOS0xOC4zLTE4LjItMzEuNWwxLjMtMjEuM2MuNC03LjEtMS41LTE0LjItNS40LTIwLjFMNS41IDIxMC4yYy03LjMtMTEtNy4zLTI1LjQgMC0zNi40TDE3LjIgMTU2YzMuOS02IDUuOC0xMyA1LjQtMjAuMWwtMS4zLTIxLjNjLS44LTEzLjIgNi40LTI1LjYgMTguMi0zMS41bDE5LjEtOS42QzY1IDcwLjIgNzAuMiA2NSA3My40IDU4LjZMODMgMzkuNWM1LjktMTEuOCAxOC4zLTE5IDMxLjUtMTguMmwyMS4zIDEuM2M3LjEgLjQgMTQuMi0xLjUgMjAuMS01LjRMMTczLjggNS41ek0yNzIgMTkyYTgwIDgwIDAgMSAwIC0xNjAgMCA4MCA4MCAwIDEgMCAxNjAgMHpNMS4zIDQ0MS44TDQ0LjQgMzM5LjNjLjIgLjEgLjMgLjIgLjQgLjRsOS42IDE5LjFjMTEuNyAyMy4yIDM2IDM3LjMgNjIgMzUuOGwyMS4zLTEuM2MuMiAwIC41IDAgLjcgLjJsMTcuOCAxMS44YzUuMSAzLjMgMTAuNSA1LjkgMTYuMSA3LjdsLTM3LjYgODkuM2MtMi4zIDUuNS03LjQgOS4yLTEzLjMgOS43cy0xMS42LTIuMi0xNC44LTcuMkw3NC40IDQ1NS41bC01Ni4xIDguM2MtNS43IC44LTExLjQtMS41LTE1LTZzLTQuMy0xMC43LTIuMS0xNnptMjQ4IDYwLjRMMjExLjcgNDEzYzUuNi0xLjggMTEtNC4zIDE2LjEtNy43bDE3LjgtMTEuOGMuMi0uMSAuNC0uMiAuNy0uMmwyMS4zIDEuM2MyNiAxLjUgNTAuMy0xMi42IDYyLTM1LjhsOS42LTE5LjFjLjEtLjIgLjItLjMgLjQtLjRsNDMuMiAxMDIuNWMyLjIgNS4zIDEuNCAxMS40LTIuMSAxNnMtOS4zIDYuOS0xNSA2bC01Ni4xLTguMy0zMi4yIDQ5LjJjLTMuMiA1LTguOSA3LjctMTQuOCA3LjJzLTExLTQuMy0xMy4zLTkuN3pcIl1cbn07XG52YXIgZmFUaWNrZXRTaW1wbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGlja2V0LXNpbXBsZScsXG4gIGljb246IFs1NzYsIDUxMiwgW1widGlja2V0LWFsdFwiXSwgXCJmM2ZmXCIsIFwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NHY2NGMwIDguOC03LjQgMTUuNy0xNS43IDE4LjZDNTQxLjUgMjE3LjEgNTI4IDIzNSA1MjggMjU2czEzLjUgMzguOSAzMi4zIDQ1LjRjOC4zIDIuOSAxNS43IDkuOCAxNS43IDE4LjZ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjMyMGMwLTguOCA3LjQtMTUuNyAxNS43LTE4LjZDMzQuNSAyOTQuOSA0OCAyNzcgNDggMjU2cy0xMy41LTM4LjktMzIuMy00NS40QzcuNCAyMDcuNyAwIDIwMC44IDAgMTkyVjEyOHpcIl1cbn07XG52YXIgZmFUaWNrZXRBbHQgPSBmYVRpY2tldFNpbXBsZTtcbnZhciBmYUJ1aWxkaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI3OTcwLCA2MTY4N10sIFwiZjFhZFwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoOTZWNDMyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2ODBoOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDh6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjI0MHptMTEyLTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMjQwYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMjQwek04MCA5NmgzMmM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDgwYy04LjggMC0xNi03LjItMTYtMTZWMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnYzMmMwIDguOC03LjIgMTYtMTYgMTZIMTc2Yy04LjggMC0xNi03LjItMTYtMTZWMTEyek0yNzIgOTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djMyYzAgOC44LTcuMiAxNi0xNiAxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNlYxMTJjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYUFuZ2xlc0xlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGVzLWxlZnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxNzEsIFwiYW5nbGUtZG91YmxlLWxlZnRcIl0sIFwiZjEwMFwiLCBcIk00MS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgMjU2IDI0Ni42IDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwem0zNTItMTYwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMzAxLjMgMjU2IDQzOC42IDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwelwiXVxufTtcbnZhciBmYUFuZ2xlRG91YmxlTGVmdCA9IGZhQW5nbGVzTGVmdDtcbnZhciBmYVFyY29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdxcmNvZGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMjlcIiwgXCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODB6TTY0IDk2djY0aDY0Vjk2SDY0ek0wIDMzNmMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMzM2em02NCAxNnY2NGg2NFYzNTJINjR6TTMwNCAzMmg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHY5NmMwIDI2LjUtMjEuNSA0OC00OCA0OEgzMDRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em04MCA2NEgzMjB2NjRoNjRWOTZ6TTI1NiAzMDRjMC04LjggNy4yLTE2IDE2LTE2aDY0YzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2czcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2OTZjMCA4LjgtNy4yIDE2LTE2IDE2SDM2OGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMzA0ek0zNjggNDgwYTE2IDE2IDAgMSAxIDAtMzIgMTYgMTYgMCAxIDEgMCAzMnptNjQgMGExNiAxNiAwIDEgMSAwLTMyIDE2IDE2IDAgMSAxIDAgMzJ6XCJdXG59O1xudmFyIGZhQ2xvY2tSb3RhdGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb2NrLXJvdGF0ZS1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJoaXN0b3J5XCJdLCBcImYxZGFcIiwgXCJNNzUgNzVMNDEgNDFDMjUuOSAyNS45IDAgMzYuNiAwIDU3LjlWMTY4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDEzNC4xYzIxLjQgMCAzMi4xLTI1LjkgMTctNDFsLTMwLjgtMzAuOEMxNTUgODUuNSAyMDMgNjQgMjU2IDY0YzEwNiAwIDE5MiA4NiAxOTIgMTkycy04NiAxOTItMTkyIDE5MmMtNDAuOCAwLTc4LjYtMTIuNy0xMDkuNy0zNC40Yy0xNC41LTEwLjEtMzQuNC02LjYtNDQuNiA3LjlzLTYuNiAzNC40IDcuOSA0NC42QzE1MS4yIDQ5NSAyMDEuNyA1MTIgMjU2IDUxMmMxNDEuNCAwIDI1Ni0xMTQuNiAyNTYtMjU2UzM5Ny40IDAgMjU2IDBDMTg1LjMgMCAxMjEuMyAyOC43IDc1IDc1em0xODEgNTNjLTEzLjMgMC0yNCAxMC43LTI0IDI0VjI1NmMwIDYuNCAyLjUgMTIuNSA3IDE3bDcyIDcyYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNjUtNjVWMTUyYzAtMTMuMy0xMC43LTI0LTI0LTI0elwiXVxufTtcbnZhciBmYUhpc3RvcnkgPSBmYUNsb2NrUm90YXRlTGVmdDtcbnZhciBmYUZhY2VHcmluQmVhbVN3ZWF0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZ3Jpbi1iZWFtLXN3ZWF0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTE3LCBcImdyaW4tYmVhbS1zd2VhdFwiXSwgXCJmNTgzXCIsIFwiTTQ3Ni44IDEyNi4zYy00LjEgMS4xLTguNCAxLjctMTIuOCAxLjdjLTI2LjUgMC00OC0yMS00OC00N2MwLTUgMS44LTExLjMgNC42LTE4LjFjLjMtLjcgLjYtMS40IC45LTIuMWM5LTIwLjIgMjYuNS00NC45IDM2LTU3LjVjMy4yLTQuNCA5LjYtNC40IDEyLjggMEM0ODMuNCAyMC42IDUxMiA2MSA1MTIgODFjMCAyMS43LTE0LjkgMzkuOC0zNS4yIDQ1LjN6TTI1NiAwYzUxLjQgMCA5OS4zIDE1LjIgMTM5LjQgNDEuMmMtMS41IDMuMS0zIDYuMi00LjMgOS4zYy0zLjQgOC03LjEgMTktNy4xIDMwLjVjMCA0NC4zIDM2LjYgNzkgODAgNzljOS42IDAgMTguOC0xLjcgMjcuNC00LjhjMTMuMyAzMC45IDIwLjYgNjUgMjAuNiAxMDAuOGMwIDE0MS40LTExNC42IDI1Ni0yNTYgMjU2UzAgMzk3LjQgMCAyNTZTMTE0LjYgMCAyNTYgMHpNMzgzLjggMzE3LjhDMzQ1LjMgMzI5LjQgMzAxLjkgMzM2IDI1NiAzMzZzLTg5LjMtNi42LTEyNy44LTE4LjJjLTEyLjMtMy43LTI0LjMgNy0xOS4yIDE4LjdjMjQuNSA1Ni45IDgxLjEgOTYuNyAxNDcgOTYuN3MxMjIuNS0zOS44IDE0Ny05Ni43YzUuMS0xMS44LTYuOS0yMi40LTE5LjItMTguN3ptLTE2Ni4yLTg5bDAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzEyNi43IDE4OC40IDEyMCAyMDYuMSAxMjAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44bDAgMCAwIDAgMCAwIC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yIDAgMCAwIDB6bTE2MCAwbDAgMCAwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMyODYuNyAxODguNCAyODAgMjA2LjEgMjgwIDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGwwIDAgMCAwIDAgMCAuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMiAwIDB6XCJdXG59O1xudmFyIGZhR3JpbkJlYW1Td2VhdCA9IGZhRmFjZUdyaW5CZWFtU3dlYXQ7XG52YXIgZmFGaWxlRXhwb3J0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtZXhwb3J0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJhcnJvdy1yaWdodC1mcm9tLWZpbGVcIl0sIFwiZjU2ZVwiLCBcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEgyMjRWMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM4NFYyODhIMjE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0SDM4NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjY0ek0zODQgMzM2VjI4OEg0OTQuMWwtMzktMzljLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw4MCA4MGM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMzktMzlIMzg0em0wLTIwOEgyNTZWMEwzODQgMTI4elwiXVxufTtcbnZhciBmYUFycm93UmlnaHRGcm9tRmlsZSA9IGZhRmlsZUV4cG9ydDtcbnZhciBmYVNoaWVsZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGllbGQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg3MzcsIFwic2hpZWxkLWJsYW5rXCJdLCBcImYxMzJcIiwgXCJNMjU2IDBjNC42IDAgOS4yIDEgMTMuNCAyLjlMNDU3LjcgODIuOGMyMiA5LjMgMzguNCAzMSAzOC4zIDU3LjJjLS41IDk5LjItNDEuMyAyODAuNy0yMTMuNiAzNjMuMmMtMTYuNyA4LTM2LjEgOC01Mi44IDBDNTcuMyA0MjAuNyAxNi41IDIzOS4yIDE2IDE0MGMtLjEtMjYuMiAxNi4zLTQ3LjkgMzguMy01Ny4yTDI0Mi43IDIuOUMyNDYuOCAxIDI1MS40IDAgMjU2IDB6XCJdXG59O1xudmFyIGZhU2hpZWxkQmxhbmsgPSBmYVNoaWVsZDtcbnZhciBmYUFycm93VXBTaG9ydFdpZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtc2hvcnQtd2lkZScsXG4gIGljb246IFs1NzYsIDUxMiwgW1wic29ydC1hbW91bnQtdXAtYWx0XCJdLCBcImY4ODVcIiwgXCJNMTUxLjYgNDIuNEMxNDUuNSAzNS44IDEzNyAzMiAxMjggMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDk2IDE0Ni4zVjQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjE0Ni4zbDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgzMjB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMHptMCAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMHptMCAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINTQ0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyMHpcIl1cbn07XG52YXIgZmFTb3J0QW1vdW50VXBBbHQgPSBmYUFycm93VXBTaG9ydFdpZGU7XG52YXIgZmFIb3VzZU1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtbWVkaWNhbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTNiMlwiLCBcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFoMzJWNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OC41YzM1LjUgMCA2NC4yLTI4LjggNjQtNjQuM2wtLjctMTYwLjJoMzJ6TTI1NiAyMDhjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnY0OGg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDMyMHY0OGMwIDguOC03LjIgMTYtMTYgMTZIMjcyYy04LjggMC0xNi03LjItMTYtMTZWMzIwSDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2VjI3MmMwLTguOCA3LjItMTYgMTYtMTZoNDhWMjA4elwiXVxufTtcbnZhciBmYUdvbGZCYWxsVGVlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dvbGYtYmFsbC10ZWUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImdvbGYtYmFsbFwiXSwgXCJmNDUwXCIsIFwiTTM4NCAxOTJjMCA2Ni44LTM0LjEgMTI1LjYtODUuOCAxNjBIODUuOEMzNC4xIDMxNy42IDAgMjU4LjggMCAxOTJDMCA4NiA4NiAwIDE5MiAwUzM4NCA4NiAzODQgMTkyek0yNDIuMSAyNTYuNmMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjVjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNHptLTUyLjMtNDkuM2MtNC45IDAtOS4xIDUuMS01LjQgOC40YzUuOSA1LjIgMTMuNyA4LjQgMjIuMSA4LjRjMTguNSAwIDMzLjUtMTUgMzMuNS0zMy41YzAtOC41LTMuMi0xNi4yLTguNC0yMi4xYy0zLjMtMy43LTguNCAuNS04LjQgNS40YzAgMTguNS0xNSAzMy41LTMzLjUgMzMuNXptMTEzLjUtMTcuNWMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjVjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNHpNOTYgNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjQ2NGMwLTguOC03LjItMTYtMTYtMTZIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIl1cbn07XG52YXIgZmFHb2xmQmFsbCA9IGZhR29sZkJhbGxUZWU7XG52YXIgZmFDaXJjbGVDaGV2cm9uTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtY2hldnJvbi1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJjaGV2cm9uLWNpcmNsZS1sZWZ0XCJdLCBcImYxMzdcIiwgXCJNNTEyIDI1NkEyNTYgMjU2IDAgMSAwIDAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDB6TTI3MSAxMzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC04NyA4NyA4NyA4N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDE2NyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDI3MSAxMzV6XCJdXG59O1xudmFyIGZhQ2hldnJvbkNpcmNsZUxlZnQgPSBmYUNpcmNsZUNoZXZyb25MZWZ0O1xudmFyIGZhSG91c2VDaGltbmV5V2luZG93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWNoaW1uZXktd2luZG93JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlMDBkXCIsIFwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xaC0zMmwuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zSDEyOC4xYy0zNS4zIDAtNjQtMjguNy02NC02NFYyODcuNkgzMmMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43VjY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE4NWw1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0ek0yNDggMTkyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjQ4elwiXVxufTtcbnZhciBmYVBlbk5pYiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW4tbmliJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTAwMDFdLCBcImY1YWRcIiwgXCJNMzY4LjQgMTguM0wzMTIuNyA3NC4xIDQzNy45IDE5OS4zbDU1LjctNTUuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NDcuNiAxOC4zYy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMHpNMjg4IDk0LjZsLTkuMiAyLjhMMTM0LjcgMTQwLjZjLTE5LjkgNi0zNS43IDIxLjItNDIuMyA0MUwzLjggNDQ1LjhjLTMuOCAxMS4zLTEgMjMuOSA3LjMgMzIuNEwxNjQuNyAzMjQuN2MtMy02LjMtNC43LTEzLjMtNC43LTIwLjdjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtNy40IDAtMTQuNC0xLjctMjAuNy00LjdMMzMuNyA1MDAuOWM4LjYgOC4zIDIxLjEgMTEuMiAzMi40IDcuM2wyNjQuMy04OC42YzE5LjctNi42IDM1LTIyLjQgNDEtNDIuM2w0My4yLTE0NC4xIDIuOC05LjJMMjg4IDk0LjZ6XCJdXG59O1xudmFyIGZhVGVudEFycm93VHVybkxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVudC1hcnJvdy10dXJuLWxlZnQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1ODBcIiwgXCJNMTIwLjEgNDEuOGM5LjktOC45IDEwLjctMjQgMS44LTMzLjlTOTcuOC0yLjcgODcuOSA2LjJsLTgwIDcyQzIuOSA4Mi43IDAgODkuMiAwIDk2czIuOSAxMy4zIDcuOSAxNy44bDgwIDcyYzkuOSA4LjkgMjUgOC4xIDMzLjktMS44czguMS0yNS0xLjgtMzMuOUw4Ni41IDEyMCA0NTYgMTIwYzM5LjggMCA3MiAzMi4yIDcyIDcydjQwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRWMTkyYzAtNjYuMy01My43LTEyMC0xMjAtMTIwTDg2LjUgNzJsMzMuNS0zMC4yek0zMDcuNCAxNjYuNWMtMTEuNS04LjctMjcuMy04LjctMzguOCAwbC0xNjggMTI4Yy02LjYgNS0xMSAxMi41LTEyLjMgMjAuN2wtMjQgMTYwYy0xLjQgOS4yIDEuMyAxOC42IDcuNCAyNS42Uzg2LjcgNTEyIDk2IDUxMkgyODhWMzUybDk2IDE2MGg5NmM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJdXG59O1xudmFyIGZhVGVudHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVudHMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1ODJcIiwgXCJNMzk2LjYgNi41TDIzNS44IDEyOS4xYzkuNiAxLjggMTguOSA1LjggMjcgMTJsMTY4IDEyOGMxMy4yIDEwLjEgMjIgMjQuOSAyNC41IDQxLjRsNi4yIDQxLjVINjA4YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOGMtMTEuNS04LjctMjcuMy04LjctMzguOCAwem0tMTUzLjIgMTYwYy0xMS41LTguNy0yNy4zLTguNy0zOC44IDBsLTE2OCAxMjhjLTYuNiA1LTExIDEyLjUtMTIuMyAyMC43bC0yNCAxNjBjLTEuNCA5LjIgMS4zIDE4LjYgNy40IDI1LjZTMjIuNyA1MTIgMzIgNTEySDIyNFYzNTJsOTYgMTYwaDk2YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIl1cbn07XG52YXIgZmFXYW5kTWFnaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2FuZC1tYWdpYycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibWFnaWNcIl0sIFwiZjBkMFwiLCBcIk0xNC4xIDQ2My4zYy0xOC43LTE4LjctMTguNy00OS4xIDAtNjcuOUwzOTUuNCAxNC4xYzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDM0LjYgMzQuNmMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUwxMTYuNSA0OTcuOWMtMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDBMMTQuMSA0NjMuM3pNMzQ3LjYgMTg3LjZsMTA1LTEwNUw0MjkuNCA1OS4zbC0xMDUgMTA1IDIzLjMgMjMuM3pcIl1cbn07XG52YXIgZmFNYWdpYyA9IGZhV2FuZE1hZ2ljO1xudmFyIGZhRG9nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvZycsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODAyMV0sIFwiZjZkM1wiLCBcIk0zMDkuNiAxNTguNUwzMzIuNyAxOS44QzMzNC42IDguNCAzNDQuNSAwIDM1Ni4xIDBjNy41IDAgMTQuNSAzLjUgMTkgOS41TDM5MiAzMmg1Mi4xYzEyLjcgMCAyNC45IDUuMSAzMy45IDE0LjFMNDk2IDY0aDU2YzEzLjMgMCAyNCAxMC43IDI0IDI0djI0YzAgNDQuMi0zNS44IDgwLTgwIDgwSDQ2NCA0NDggNDI2LjdsLTUuMSAzMC41LTExMi02NHpNNDE2IDI1Ni4xTDQxNiA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJIMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMlYzNjQuOGMtMjQgMTIuMy01MS4yIDE5LjItODAgMTkuMnMtNTYtNi45LTgwLTE5LjJWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMySDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyNDkuOGMtMjguOC0xMC45LTUxLjQtMzUuMy01OS4yLTY2LjVMMSAxNjcuOGMtNC4zLTE3LjEgNi4xLTM0LjUgMjMuMy0zOC44czM0LjUgNi4xIDM4LjggMjMuM2wzLjkgMTUuNUM3MC41IDE4MiA4My4zIDE5MiA5OCAxOTJoMzAgMTZIMzAzLjhMNDE2IDI1Ni4xek00NjQgODBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIl1cbn07XG52YXIgZmFDYXJyb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2Fycm90JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzY1XSwgXCJmNzg3XCIsIFwiTTM0Ni43IDZDMzM3LjYgMTcgMzIwIDQyLjMgMzIwIDcyYzAgNDAgMTUuMyA1NS4zIDQwIDgwczQwIDQwIDgwIDQwYzI5LjcgMCA1NS0xNy42IDY2LTI2LjdjNC0zLjMgNi04LjIgNi0xMy4zcy0yLTEwLTYtMTMuMmMtMTEuNC05LjEtMzguMy0yNi44LTc0LTI2LjhjLTMyIDAtNDAgOC00MCA4czgtOCA4LTQwYzAtMzUuNy0xNy43LTYyLjYtMjYuOC03NEMzNzAgMiAzNjUuMSAwIDM2MCAwcy0xMCAyLTEzLjMgNnpNMjQ0LjYgMTM2Yy00MCAwLTc3LjEgMTguMS0xMDEuNyA0OC4ybDYwLjUgNjAuNWM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwbC01NS4zLTU1LjMgMCAuMUwyLjIgNDc3LjlDLTIgNDg3LS4xIDQ5Ny44IDcgNTA1czE3LjkgOSAyNy4xIDQuOGwxMzQuNy02Mi40LTUyLjEtNTIuMWMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDE5OS43IDQzM2wxMDAuMi00Ni40YzQ2LjQtMjEuNSA3Ni4yLTY4IDc2LjItMTE5LjJDMzc2IDE5NC44IDMxNy4yIDEzNiAyNDQuNiAxMzZ6XCJdXG59O1xudmFyIGZhTW9vbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb29uJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI3NzY5LCA5MjE0XSwgXCJmMTg2XCIsIFwiTTIyMy41IDMyQzEwMCAzMiAwIDEzMi4zIDAgMjU2UzEwMCA0ODAgMjIzLjUgNDgwYzYwLjYgMCAxMTUuNS0yNC4yIDE1NS44LTYzLjRjNS00LjkgNi4zLTEyLjUgMy4xLTE4LjdzLTEwLjEtOS43LTE3LTguNWMtOS44IDEuNy0xOS44IDIuNi0zMC4xIDIuNmMtOTYuOSAwLTE3NS41LTc4LjgtMTc1LjUtMTc2YzAtNjUuOCAzNi0xMjMuMSA4OS4zLTE1My4zYzYuMS0zLjUgOS4yLTEwLjUgNy43LTE3LjNzLTcuMy0xMS45LTE0LjMtMTIuNWMtNi4zLS41LTEyLjYtLjgtMTktLjh6XCJdXG59O1xudmFyIGZhV2luZUdsYXNzRW1wdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZS1nbGFzcy1lbXB0eScsXG4gIGljb246IFszMjAsIDUxMiwgW1wid2luZS1nbGFzcy1hbHRcIl0sIFwiZjVjZVwiLCBcIk02NCAwQzQ3LjQgMCAzMy41IDEyLjggMzIuMSAyOS4zbC0xNCAxNjguNGMtNiA3MiA0Mi41IDEzNS4yIDEwOS45IDE1MC42VjQ0OEg4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg4MCA4MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJWMzQ4LjRjNjcuNC0xNS40IDExNS45LTc4LjYgMTA5LjktMTUwLjZsLTE0LTE2OC40QzI4Ni41IDEyLjggMjcyLjYgMCAyNTYgMEg2NHpNODEuOSAyMDMuMUw5My40IDY0SDIyNi42bDExLjYgMTM5LjFDMjQyIDI0OC44IDIwNS45IDI4OCAxNjAgMjg4cy04Mi0zOS4yLTc4LjEtODQuOXpcIl1cbn07XG52YXIgZmFXaW5lR2xhc3NBbHQgPSBmYVdpbmVHbGFzc0VtcHR5O1xudmFyIGZhQ2hlZXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZWVzZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdlZlwiLCBcIk01MTIgMjQwLjJWMjU2SDBjMC0yMCAxMC0zOC43IDI2LjYtNDkuOEwyNzQuOSA0MC43YzguNi01LjcgMTguNi04LjcgMjguOS04LjdDNDE4LjggMzIgNTEyIDEyNS4yIDUxMiAyNDAuMnptMCA0Ny44VjQxNmMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMjg4SDUxMnpcIl1cbn07XG52YXIgZmFZaW5ZYW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3lpbi15YW5nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTc3NV0sIFwiZjZhZFwiLCBcIk0yNTYgNjRjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZzLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2QzE1MCA0NDggNjQgMzYyIDY0IDI1NlMxNTAgNjQgMjU2IDY0em0wIDQ0OEEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTMyLTM1MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJdXG59O1xudmFyIGZhTXVzaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbXVzaWMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc5MjVdLCBcImYwMDFcIiwgXCJNNDk5LjEgNi4zYzguMSA2IDEyLjkgMTUuNiAxMi45IDI1Ljd2NzJWMzY4YzAgNDQuMi00MyA4MC05NiA4MHMtOTYtMzUuOC05Ni04MHM0My04MCA5Ni04MGMxMS4yIDAgMjIgMS42IDMyIDQuNlYxNDdMMTkyIDIyMy44VjQzMmMwIDQ0LjItNDMgODAtOTYgODBzLTk2LTM1LjgtOTYtODBzNDMtODAgOTYtODBjMTEuMiAwIDIyIDEuNiAzMiA0LjZWMjAwIDEyOGMwLTE0LjEgOS4zLTI2LjYgMjIuOC0zMC43bDMyMC05NmM5LjctMi45IDIwLjItMS4xIDI4LjMgNXpcIl1cbn07XG52YXIgZmFDb2RlQ29tbWl0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvZGUtY29tbWl0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMzg2XCIsIFwiTTMyMCAzMzZhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6bTE1Ni44LTQ4QzQ2MiAzNjEgMzk3LjQgNDE2IDMyMCA0MTZzLTE0Mi01NS0xNTYuOC0xMjhIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJIMTYzLjJDMTc4IDE1MSAyNDIuNiA5NiAzMjAgOTZzMTQyIDU1IDE1Ni44IDEyOEg2MDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJINDc2Ljh6XCJdXG59O1xudmFyIGZhVGVtcGVyYXR1cmVMb3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVtcGVyYXR1cmUtbG93JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzZiXCIsIFwiTTQ0OCA5NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgOTZhOTYgOTYgMCAxIDEgMTkyIDBBOTYgOTYgMCAxIDEgMzIwIDk2ek0xNDQgNjRjLTI2LjUgMC00OCAyMS41LTQ4IDQ4VjI3Ni41YzAgMTcuMy03LjEgMzEuOS0xNS4zIDQyLjVDNzAuMiAzMzIuNiA2NCAzNDkuNSA2NCAzNjhjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTE4LjUtNi4yLTM1LjQtMTYuNy00OC45Yy04LjItMTAuNi0xNS4zLTI1LjItMTUuMy00Mi41VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMzIgMTEyQzMyIDUwLjIgODIuMSAwIDE0NCAwczExMiA1MC4xIDExMiAxMTJWMjc2LjVjMCAuMSAuMSAuMyAuMiAuNmMuMiAuNiAuOCAxLjYgMS43IDIuOGMxOC45IDI0LjQgMzAuMSA1NSAzMC4xIDg4LjFjMCA3OS41LTY0LjUgMTQ0LTE0NCAxNDRTMCA0NDcuNSAwIDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42VjExMnpNMTkyIDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNWMjcyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2NTAuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN6XCJdXG59O1xudmFyIGZhUGVyc29uQmlraW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1iaWtpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg2OTIsIFwiYmlraW5nXCJdLCBcImY4NGFcIiwgXCJNNDAwIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMjcuMiA2NGwtNjEuOC00OC44Yy0xNy4zLTEzLjYtNDEuNy0xMy44LTU5LjEtLjNsLTgzLjEgNjQuMmMtMzAuNyAyMy44LTI4LjUgNzAuOCA0LjMgOTEuNkwyODggMzA1LjFWNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMjg4YzAtMTAuNy01LjMtMjAuNy0xNC4yLTI2LjZMMjk1IDIzMi45bDYwLjMtNDguNUwzOTYgMjE3YzUuNyA0LjUgMTIuNyA3IDIwIDdoNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDI3LjJ6TTU2IDM4NGE3MiA3MiAwIDEgMSAxNDQgMEE3MiA3MiAwIDEgMSA1NiAzODR6bTIwMCAwQTEyOCAxMjggMCAxIDAgMCAzODRhMTI4IDEyOCAwIDEgMCAyNTYgMHptMTg0IDBhNzIgNzIgMCAxIDEgMTQ0IDAgNzIgNzIgMCAxIDEgLTE0NCAwem0yMDAgMGExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwelwiXVxufTtcbnZhciBmYUJpa2luZyA9IGZhUGVyc29uQmlraW5nO1xudmFyIGZhQnJvb20gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJvb20nLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjk1MjldLCBcImY1MWFcIiwgXCJNNTY2LjYgNTQuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTkyIDE5Mi0zNC43LTM0LjdjLTQuMi00LjItMTAtNi42LTE2LTYuNmMtMTIuNSAwLTIyLjYgMTAuMS0yMi42IDIyLjZ2MjkuMUwzNjQuMyAzMjBoMjkuMWMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2bC0zNC43LTM0LjcgMTkyLTE5MnpNMzQxLjEgMzUzLjRMMjIyLjYgMjM0LjljLTQyLjctMy43LTg1LjIgMTEuNy0xMTUuOCA0Mi4zbC04IDhDNzYuNSAzMDcuNSA2NCAzMzcuNyA2NCAzNjkuMmMwIDYuOCA3LjEgMTEuMiAxMy4yIDguMmw1MS4xLTI1LjVjNS0yLjUgOS41IDQuMSA1LjQgNy45TDcuMyA0NzMuNEMyLjcgNDc3LjYgMCA0ODMuNiAwIDQ4OS45QzAgNTAyLjEgOS45IDUxMiAyMi4xIDUxMmwxNzMuMyAwYzM4LjggMCA3NS45LTE1LjQgMTAzLjQtNDIuOGMzMC42LTMwLjYgNDUuOS03My4xIDQyLjMtMTE1Ljh6XCJdXG59O1xudmFyIGZhU2hpZWxkSGVhcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hpZWxkLWhlYXJ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTc0XCIsIFwiTTI2OS40IDIuOUMyNjUuMiAxIDI2MC43IDAgMjU2IDBzLTkuMiAxLTEzLjQgMi45TDU0LjMgODIuOGMtMjIgOS4zLTM4LjQgMzEtMzguMyA1Ny4yYy41IDk5LjIgNDEuMyAyODAuNyAyMTMuNiAzNjMuMmMxNi43IDggMzYuMSA4IDUyLjggMEM0NTQuNyA0MjAuNyA0OTUuNSAyMzkuMiA0OTYgMTQwYy4xLTI2LjItMTYuMy00Ny45LTM4LjMtNTcuMkwyNjkuNCAyLjl6TTE0NCAyMjEuM2MwLTMzLjggMjcuNC02MS4zIDYxLjMtNjEuM2MxNi4yIDAgMzEuOCA2LjUgNDMuMyAxNy45bDcuNCA3LjQgNy40LTcuNGMxMS41LTExLjUgMjcuMS0xNy45IDQzLjMtMTcuOWMzMy44IDAgNjEuMyAyNy40IDYxLjMgNjEuM2MwIDE2LjItNi41IDMxLjgtMTcuOSA0My4zbC04Mi43IDgyLjdjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC04Mi43LTgyLjdjLTExLjUtMTEuNS0xNy45LTI3LjEtMTcuOS00My4zelwiXVxufTtcbnZhciBmYUdvcHVyYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ29wdXJhbScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY2NFwiLCBcIk0xMjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHY4aDQwVjI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2OGg0OFYyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0djhoNDBWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY4VjY0djY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDQxNlYzNTJIMzg0VjIyNEgzNTJWMTI4SDMyMHY5NmgzMlYzNTJoMzJWNTEySDMwNFY0NjRjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDh2NDhIMTI4VjM1MmgzMlYyMjRoMzJWMTI4SDE2MHY5NkgxMjhWMzUySDk2VjUxMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzg0YzAtMTcuNyAxNC4zLTMyIDMyLTMyVjI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMlYxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJWNjQgMzIgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI1NiAyNzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjQ4aDY0VjMwNGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTMyLTgwdjMyaDY0VjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIl1cbn07XG52YXIgZmFFYXJ0aE9jZWFuaWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWFydGgtb2NlYW5pYScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZ2xvYmUtb2NlYW5pYVwiXSwgXCJlNDdiXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMDguNiAzNTcuM2wtMzktMTMuNWMtNi41LTIuMi0xMy42LTIuMy0yMC4xLS4zbC0xNS4zIDQuOWMtMTguNSA1LjktMzguNS0yLjQtNDcuNS0xOS41bC0zLjMtNi4yYy0xMC42LTIwLjEtMi4zLTQ1IDE4LjItNTQuN2wzNS4zLTE2LjhjMi4zLTEuMSA0LjQtMi44IDUuOS00LjhsNS4zLTdjNy4yLTkuNiAxOC42LTE1LjMgMzAuNi0xNS4zczIzLjQgNS43IDMwLjYgMTUuM2w0LjYgNi4xYzIgMi42IDQuOSA0LjUgOC4xIDUuMWM3LjggMS42IDE1LjctMS41IDIwLjQtNy45bDEwLjQtMTQuMmMyLTIuOCA1LjMtNC40IDguNy00LjRjNC40IDAgOC40IDIuNyAxMCA2LjhsMTAuMSAyNS45YzIuOCA3LjIgNi43IDE0IDExLjUgMjAuMkwzMTEgMjk5LjhjNS44IDcuNCA5IDE2LjYgOSAyNnMtMy4yIDE4LjYtOSAyNkwyOTkgMzY3LjJjLTguMyAxMC42LTIxIDE2LjgtMzQuNCAxNi44Yy04LjQgMC0xNi42LTIuNC0yMy43LTdsLTI1LjQtMTYuNGMtMi4yLTEuNC00LjUtMi41LTYuOS0zLjR6bTY1LjItMjE0LjhMMjk2IDE2NC43YzEwLjEgMTAuMSAyLjkgMjcuMy0xMS4zIDI3LjNIMjU0LjhjLTUuNiAwLTExLjEtMS4yLTE2LjItMy40bC00Mi44LTE5Yy0xNC4zLTYuMy0xMS45LTI3LjMgMy40LTMwLjNsMzguNS03LjdjMTMuMS0yLjYgMjYuNyAxLjUgMzYuMSAxMC45ek0yNDggNDMyYzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNjRjLTguOCAwLTE2LTcuMi0xNi0xNnpNNDMxLjIgMjk4LjlsOCAyNGMyLjggOC40LTEuNyAxNy40LTEwLjEgMjAuMnMtMTcuNC0xLjctMjAuMi0xMC4xbC04LTI0Yy0yLjgtOC40IDEuNy0xNy40IDEwLjEtMjAuMnMxNy40IDEuNyAyMC4yIDEwLjF6bS0xOS45IDgwLjRsLTMyIDMyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDMyLTMyYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIl1cbn07XG52YXIgZmFHbG9iZU9jZWFuaWEgPSBmYUVhcnRoT2NlYW5pYTtcbnZhciBmYVNxdWFyZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS14bWFyaycsXG4gIGljb246IFs0NDgsIDUxMiwgWzEwMDYyLCBcInRpbWVzLXNxdWFyZVwiLCBcInhtYXJrLXNxdWFyZVwiXSwgXCJmMmQzXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDM4NGMzNS4zIDAgNjQtMjguNyA2NC02NFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHptNzkgMTQzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwiXVxufTtcbnZhciBmYVRpbWVzU3F1YXJlID0gZmFTcXVhcmVYbWFyaztcbnZhciBmYVhtYXJrU3F1YXJlID0gZmFTcXVhcmVYbWFyaztcbnZhciBmYUhhc2h0YWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFzaHRhZycsXG4gIGljb246IFs0NDgsIDUxMiwgWzYyMDk4XSwgXCIyM1wiLCBcIk0xODEuMyAzMi40YzE3LjQgMi45IDI5LjIgMTkuNCAyNi4zIDM2LjhMMTk3LjggMTI4aDk1LjFsMTEuNS02OS4zYzIuOS0xNy40IDE5LjQtMjkuMiAzNi44LTI2LjNzMjkuMiAxOS40IDI2LjMgMzYuOEwzNTcuOCAxMjhINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM0Ny4xTDMyNS44IDMyMEgzODRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzE1LjFsLTExLjUgNjkuM2MtMi45IDE3LjQtMTkuNCAyOS4yLTM2LjggMjYuM3MtMjkuMi0xOS40LTI2LjMtMzYuOGw5LjgtNTguN0gxNTUuMWwtMTEuNSA2OS4zYy0yLjkgMTcuNC0xOS40IDI5LjItMzYuOCAyNi4zcy0yOS4yLTE5LjQtMjYuMy0zNi44TDkwLjIgMzg0SDMyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyaDY4LjlsMjEuMy0xMjhINjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNjguOWwxMS41LTY5LjNjMi45LTE3LjQgMTkuNC0yOS4yIDM2LjgtMjYuM3pNMTg3LjEgMTkyTDE2NS44IDMyMGg5NS4xbDIxLjMtMTI4SDE4Ny4xelwiXVxufTtcbnZhciBmYVVwUmlnaHRBbmREb3duTGVmdEZyb21DZW50ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXAtcmlnaHQtYW5kLWRvd24tbGVmdC1mcm9tLWNlbnRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZXhwYW5kLWFsdFwiXSwgXCJmNDI0XCIsIFwiTTM0NCAwSDQ4OGMxMy4zIDAgMjQgMTAuNyAyNCAyNFYxNjhjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzktMzktODcgODdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC0zMi0zMmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsODctODdMMzI3IDQxYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yUzMzNC4zIDAgMzQ0IDB6TTE2OCA1MTJIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM0NGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzkgODctODdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0Ljh6XCJdXG59O1xudmFyIGZhRXhwYW5kQWx0ID0gZmFVcFJpZ2h0QW5kRG93bkxlZnRGcm9tQ2VudGVyO1xudmFyIGZhT2lsQ2FuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ29pbC1jYW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2MTNcIiwgXCJNMzIwIDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkgxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJ2MzJIMTQ0IDk2IDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY2NC44YzAgMTkgMTEuMiAzNi4yIDI4LjUgNDMuOWw2Ny41IDMwVjM2OGMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MDMuMWMxOC40IDAgMzUuOC03LjkgNDgtMjEuN0w2MzMuNSAxODcuN2MxMi4zLTEzLjktLjMtMzUuNC0xOC40LTMxLjVMNDQ4IDE5MmwtNTAuNS0yNS4yYy04LjktNC40LTE4LjctNi44LTI4LjYtNi44SDI4OFYxMjhoMzJ6TTk2IDIwOHY4Ni4xTDQ4IDI3Mi44VjIwOEg5NnpcIl1cbn07XG52YXIgZmFUID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3QnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMTZdLCBcIjU0XCIsIFwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5NkgxNjBWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWOTZIMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDE5MiAzMnpcIl1cbn07XG52YXIgZmFIaXBwbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoaXBwbycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyOTQzNV0sIFwiZjZlZFwiLCBcIk00MDcgNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTcuMiAxNy4yYzEuOS0uMSAzLjktLjIgNS44LS4yaDMyYzExLjIgMCAyMS45IDIuMyAzMS42IDYuNUw1NDMgNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45TDU2NCAxMDEuOWM3LjYgMTIuMiAxMiAyNi43IDEyIDQyLjFjMCAxMC4yIDcuNCAxOC44IDE2LjcgMjNjMjcuOSAxMi41IDQ3LjMgNDAuNSA0Ny4zIDczYzAgMjYuMi0xMi42IDQ5LjQtMzIgNjR2MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDU2MGMtOC44IDAtMTYtNy4yLTE2LTE2VjMyMEg0ODB2MTZjMCA4LjgtNy4yIDE2LTE2IDE2SDQzMmMtOC44IDAtMTYtNy4yLTE2LTE2VjMxOC40Yy0xMS44LTIuNC0yMi43LTcuNC0zMi0xNC40Yy0xLjUtMS4xLTIuOS0yLjMtNC4zLTMuNWMtMTctMTQuNy0yNy43LTM2LjQtMjcuNy02MC41YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2YzAgNDQuNyAyNi4yIDgzLjIgNjQgMTAxLjJWMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyaDMydjY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzcyYy0xOS44IDcuNy00MS40IDEyLTY0IDEycy00NC4yLTQuMy02NC0xMnY3NmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMzI5LjFMNDUuOSAzNjkuN2MtNS40IDEyLjEtMTkuNiAxNy42LTMxLjcgMTIuMlMtMy4zIDM2Mi40IDIuMSAzNTAuM0wyNCAzMDAuOWM1LjMtMTEuOSA4LTI0LjcgOC0zNy43QzMyIDE1NS43IDExNy4yIDY4IDIyMy44IDY0LjFsLjItLjFoNy4ySDI1NmgzMmM0MS43IDAgODMuNCAxMi4xIDExNy4yIDI1LjdjMS43LTEuOCAzLjUtMy42IDUuMy01LjJMNDA3IDgxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXptNzMgMTg1YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTg4IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpNNDgwIDE0NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJdXG59O1xudmFyIGZhQ2hhcnRDb2x1bW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtY29sdW1uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMGUzXCIsIFwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQwMGMwIDguOCA3LjIgMTYgMTYgMTZINDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDgwYy00NC4yIDAtODAtMzUuOC04MC04MFY2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnpNMTYwIDIyNGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTEyOC02NFYzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6bTY0IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMydjk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNDgwIDk2VjMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwiXVxufTtcbnZhciBmYUluZmluaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2luZmluaXR5JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbODczNCwgOTg1NF0sIFwiZjUzNFwiLCBcIk0wIDI0MS4xQzAgMTYxIDY1IDk2IDE0NS4xIDk2YzM4LjUgMCA3NS40IDE1LjMgMTAyLjYgNDIuNUwzMjAgMjEwLjdsNzIuMi03Mi4yQzQxOS41IDExMS4zIDQ1Ni40IDk2IDQ5NC45IDk2QzU3NSA5NiA2NDAgMTYxIDY0MCAyNDEuMXYyOS43QzY0MCAzNTEgNTc1IDQxNiA0OTQuOSA0MTZjLTM4LjUgMC03NS40LTE1LjMtMTAyLjYtNDIuNUwzMjAgMzAxLjNsLTcyLjIgNzIuMkMyMjAuNSA0MDAuNyAxODMuNiA0MTYgMTQ1LjEgNDE2QzY1IDQxNiAwIDM1MSAwIDI3MC45VjI0MS4xek0yNzQuNyAyNTZsLTcyLjItNzIuMmMtMTUuMi0xNS4yLTM1LjktMjMuOC01Ny40LTIzLjhDMTAwLjMgMTYwIDY0IDE5Ni4zIDY0IDI0MS4xdjI5LjdjMCA0NC44IDM2LjMgODEuMSA4MS4xIDgxLjFjMjEuNSAwIDQyLjItOC41IDU3LjQtMjMuOEwyNzQuNyAyNTZ6bTkwLjUgMGw3Mi4yIDcyLjJjMTUuMiAxNS4yIDM1LjkgMjMuOCA1Ny40IDIzLjhjNDQuOCAwIDgxLjEtMzYuMyA4MS4xLTgxLjFWMjQxLjFjMC00NC44LTM2LjMtODEuMS04MS4xLTgxLjFjLTIxLjUgMC00Mi4yIDguNS01Ny40IDIzLjhMMzY1LjMgMjU2elwiXVxufTtcbnZhciBmYVZpYWxDaXJjbGVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWFsLWNpcmNsZS1jaGVjaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU5NlwiLCBcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMySDk2aDY0IDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyVjI2Ni44Yy0yMC4yIDI4LjYtMzIgNjMuNS0zMiAxMDEuMmMwIDI1LjIgNS4zIDQ5LjEgMTQuOCA3MC44QzE4OS41IDQ2My43IDE2MC42IDQ4MCAxMjggNDgwYy01MyAwLTk2LTQzLTk2LTk2Vjk2QzE0LjMgOTYgMCA4MS43IDAgNjR6TTk2IDk2djk2aDY0Vjk2SDk2ek0yMjQgMzY4YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIxMS4zLTQzLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDM1MiAzODUuNGwtMjguNy0yOC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDQwIDQwYzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDcyLTcyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwiXVxufTtcbnZhciBmYVBlcnNvbkFycm93RG93blRvTGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tYXJyb3ctZG93bi10by1saW5lJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTM4XCIsIFwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM1MlYzNTJoMTZ2OTZIMTg0em0tNjQgMEgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkgxNTJoODBINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDI2NFYyNTYuOWwyOC42IDQ3LjVjOS4xIDE1LjEgMjguOCAyMCA0My45IDEwLjlzMjAtMjguOCAxMC45LTQzLjlsLTU4LjMtOTdjLTE3LjQtMjguOS00OC42LTQ2LjYtODIuMy00Ni42SDE3Ny4xYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUwxMjAgMjU2LjlWNDQ4ek00NjQgNjRWMzA2LjdsLTI1LjQtMjUuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsODAgODBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsODAtODBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMNTI4IDMwNi43VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyelwiXVxufTtcbnZhciBmYVZvaWNlbWFpbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2ljZW1haWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4OTdcIiwgXCJNMTQ0IDMyMGE4MCA4MCAwIDEgMSAwLTE2MCA4MCA4MCAwIDEgMSAwIDE2MHptMTE5LjggMGMxNS4zLTIyLjkgMjQuMi01MC40IDI0LjItODBjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCAxNjAuNSAwIDI0MHM2NC41IDE0NCAxNDQgMTQ0SDQ5NmM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NHMtNjQuNS0xNDQtMTQ0LTE0NHMtMTQ0IDY0LjUtMTQ0IDE0NGMwIDI5LjYgOC45IDU3LjEgMjQuMiA4MEgyNjMuOHpNNDk2IDE2MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIl1cbn07XG52YXIgZmFGYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmODYzXCIsIFwiTTI1OC42IDBjLTEuNyAwLTMuNCAuMS01LjEgLjVDMTY4IDE3IDExNS42IDEwMi4zIDEzMC41IDE4OS4zYzIuOSAxNyA4LjQgMzIuOSAxNS45IDQ3LjRMMzIgMjI0SDI5LjRDMTMuMiAyMjQgMCAyMzcuMiAwIDI1My40YzAgMS43IC4xIDMuNCAuNSA1LjFDMTcgMzQ0IDEwMi4zIDM5Ni40IDE4OS4zIDM4MS41YzE3LTIuOSAzMi45LTguNCA0Ny40LTE1LjlMMjI0IDQ4MHYyLjZjMCAxNi4yIDEzLjIgMjkuNCAyOS40IDI5LjRjMS43IDAgMy40LS4xIDUuMS0uNUMzNDQgNDk1IDM5Ni40IDQwOS43IDM4MS41IDMyMi43Yy0yLjktMTctOC40LTMyLjktMTUuOS00Ny40TDQ4MCAyODhoMi42YzE2LjIgMCAyOS40LTEzLjIgMjkuNC0yOS40YzAtMS43LS4xLTMuNC0uNS01LjFDNDk1IDE2OCA0MDkuNyAxMTUuNiAzMjIuNyAxMzAuNWMtMTcgMi45LTMyLjkgOC40LTQ3LjQgMTUuOUwyODggMzJWMjkuNEMyODggMTMuMiAyNzQuOCAwIDI1OC42IDB6TTI1NiAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbnZhciBmYVBlcnNvbldhbGtpbmdMdWdnYWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi13YWxraW5nLWx1Z2dhZ2UnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NTRcIiwgXCJNNDMyIDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMzQ3LjcgMjAwLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDUwNSAyMzIuN2wtMTUuMy0zNi44QzQ3Mi41IDE1NC44IDQzMi4zIDEyOCAzODcuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMzIuOSAxNC42LTU4LjEgNDIuNC02OS40IDc2LjVsLTIuNiA3LjhjLTUuNiAxNi44IDMuNSAzNC45IDIwLjIgNDAuNXMzNC45LTMuNSA0MC41LTIwLjJsMi42LTcuOGM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41em0tMzAgMTM1LjFsLTI1IDYyLjQtNTkuNCA1OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDM0MC4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6TTI1NiAyNzQuMWMtNy43LTQuNC0xNy40LTEuOC0yMS45IDUuOWwtMzIgNTUuNEwxNDcuNyAzMDRjLTE1LjMtOC44LTM0LjktMy42LTQzLjcgMTEuN0w0MCA0MjYuNmMtOC44IDE1LjMtMy42IDM0LjkgMTEuNyA0My43bDU1LjQgMzJjMTUuMyA4LjggMzQuOSAzLjYgNDMuNy0xMS43bDY0LTExMC45YzEuNS0yLjYgMi42LTUuMiAzLjMtOEwyNjEuOSAyOTZjNC40LTcuNyAxLjgtMTcuNC01LjktMjEuOXpcIl1cbn07XG52YXIgZmFVcERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXAtZG93bicsXG4gIGljb246IFsyNTYsIDUxMiwgWzg1OTcsIDExMDIxLCBcImFycm93cy1hbHQtdlwiXSwgXCJmMzM4XCIsIFwiTTE0NS42IDcuN0MxNDEgMi44IDEzNC43IDAgMTI4IDBzLTEzIDIuOC0xNy42IDcuN2wtMTA0IDExMmMtNi41IDctOC4yIDE3LjItNC40IDI1LjlTMTQuNSAxNjAgMjQgMTYwSDgwVjM1MkgyNGMtOS41IDAtMTguMiA1LjctMjIgMTQuNHMtMi4xIDE4LjkgNC40IDI1LjlsMTA0IDExMmM0LjUgNC45IDEwLjkgNy43IDE3LjYgNy43czEzLTIuOCAxNy42LTcuN2wxMDQtMTEyYzYuNS03IDguMi0xNy4yIDQuNC0yNS45cy0xMi41LTE0LjQtMjItMTQuNEgxNzZWMTYwaDU2YzkuNSAwIDE4LjItNS43IDIyLTE0LjRzMi4xLTE4LjktNC40LTI1LjlsLTEwNC0xMTJ6XCJdXG59O1xudmFyIGZhQXJyb3dzQWx0ViA9IGZhVXBEb3duO1xudmFyIGZhQ2xvdWRNb29uUmFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1tb29uLXJhaW4nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY3M2NcIiwgXCJNNDgxLjIgMEM0MTcgMCAzNjMuNSA0Ni41IDM1My43IDEwNy42YzM1LjQgMTcuNiA2MC4yIDUzLjMgNjIuMSA5NS4xYzIzLjIgMTEgNDIgMjkuNyA1My4xIDUyLjdjNCAuNCA4LjEgLjYgMTIuMyAuNmMzNC45IDAgNjYuNy0xMy44IDg5LjktMzYuMWM1LjEtNC45IDYuNC0xMi41IDMuMi0xOC43cy0xMC4xLTkuNy0xNy04LjZjLTQuOSAuOC0xMCAxLjMtMTUuMiAxLjNjLTQ5IDAtODguNC0zOS4zLTg4LjQtODcuNGMwLTMyLjYgMTgtNjEuMSA0NC45LTc2LjFjNi4xLTMuNCA5LjMtMTAuNSA3LjgtMTcuNHMtNy4zLTEyLTE0LjMtMTIuNmMtMy42LS4zLTcuMy0uNS0xMC45LS41ek0zNjcuOSAzODMuOWM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTM5LjMtMjguNC03Mi4xLTY1LjgtNzguN2MxLjItNS42IDEuOS0xMS4zIDEuOS0xNy4yYzAtNDQuMi0zNS44LTgwLTgwLTgwYy0xNyAwLTMyLjggNS4zLTQ1LjggMTQuNEMyNDEuMyAxMTQuNiAyMTAuOCA5NiAxNzYgOTZjLTUzIDAtOTYgNDMtOTYgOTZsMCAxLjNjLTQ1LjQgNy42LTgwIDQ3LjEtODAgOTQuNmMwIDUzIDQzIDk2IDk2IDk2SDM2Ny45ek04NS40IDQyMC4xYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zelwiXVxufTtcbnZhciBmYUNhbGVuZGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI4MTk3LCAxMjgxOThdLCBcImYxMzNcIiwgXCJNOTYgMzJWNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhINDQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OEgzNTJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWNjRIMTYwVjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzk2IDE0LjMgOTYgMzJ6TTQ0OCAxOTJIMFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhINDAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE5MnpcIl1cbn07XG52YXIgZmFUcmFpbGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYWlsZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNDFcIiwgXCJNNDggMzJDMjEuNSAzMiAwIDUzLjUgMCA4MFYzMzZjMCAyNi41IDIxLjUgNDggNDggNDhINjUuMWM3LjgtNTQuMyA1NC40LTk2IDExMC45LTk2czEwMy4xIDQxLjcgMTEwLjkgOTZINDg4aDhINjA4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDU0NFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHpNODAgOTZjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTMxLjJjLTExLjQgNS45LTIyLjIgMTIuOS0zMiAyMVYxMTJjMC04LjggNy4yLTE2IDE2LTE2em05NiAxMjhjLTUuNCAwLTEwLjcgLjItMTYgLjdMMTYwIDExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTEyLjdjLTUuMy0uNS0xMC42LS43LTE2LS43em04MCAxOS4yTDI1NiAxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDE1Mi4yYy05LjgtOC4xLTIwLjYtMTUuMi0zMi0yMXpNMzY4IDk2YzguOCAwIDE2IDcuMiAxNiAxNmwwIDE5MmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTE5MmMwLTguOCA3LjItMTYgMTYtMTZ6bTExMiAxNmwwIDE5MmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTE5MmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2ek0xNzYgNDgwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTExMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhQmFoYWkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFoYWknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImhheWthbFwiXSwgXCJmNjY2XCIsIFwiTTI4OCAwYzE0LjUgMCAyNy4yIDkuNyAzMC45IDIzLjhsMjMuOSA4OS42IDc1LjktNTMuM2MxMS45LTguMyAyNy44LTcuNiAzOSAxLjdzMTQuNiAyNC45IDguNCAzOC4xbC0zOS4zIDg0IDkyLjQgOGMxNC40IDEuMiAyNi4yIDEyIDI4LjggMjYuM3MtNC45IDI4LjUtMTggMzQuNmwtODQuMSAzOS4xIDY1LjcgNjUuNWMxMC4zIDEwLjIgMTIuNCAyNi4xIDUuMSAzOC43cy0yMiAxOC43LTM2IDE0LjlMMzkxIDM4Ni44bDguMiA5Mi40YzEuMyAxNC40LTcuMyAyNy45LTIwLjkgMzIuOXMtMjguOSAuMS0zNy4yLTExLjdsLTUzLjEtNzYtNTMuMSA3NmMtOC4zIDExLjktMjMuNiAxNi43LTM3LjIgMTEuN3MtMjIuMi0xOC41LTIwLjktMzIuOWw4LjItOTIuNEw5NS40IDQxMC45Yy0xNCAzLjgtMjguOC0yLjMtMzYtMTQuOXMtNS4yLTI4LjQgNS4xLTM4LjdsNjUuNy02NS41TDQ2IDI1Mi43Yy0xMy4xLTYuMS0yMC41LTIwLjMtMTgtMzQuNnMxNC4zLTI1LjEgMjguOC0yNi4zbDkyLjQtOC0zOS4zLTg0Yy02LjEtMTMuMS0yLjctMjguOCA4LjQtMzguMXMyNy4xLTEwIDM5LTEuN2w3NS45IDUzLjMgMjMuOS04OS42QzI2MC44IDkuNyAyNzMuNSAwIDI4OCAwem0wIDE1Ni4ybC00LjggMThjLTIuNyAxMC4xLTEwLjIgMTguMi0yMCAyMS44cy0yMC44IDIuMS0yOS4zLTMuOWwtMTUuMi0xMC43IDcuOSAxNi44YzQuNCA5LjUgNCAyMC41LTEuMyAyOS42cy0xNC41IDE1LTI1IDE1LjlsLTE4LjUgMS42IDE2LjggNy44YzkuNSA0LjQgMTYuMiAxMy4yIDE4IDIzLjVzLTEuNSAyMC44LTguOSAyOC4ybC0xMy4yIDEzLjEgMTcuOS00LjhjMTAuMS0yLjcgMjAuOS0uMyAyOC45IDYuNHMxMi4yIDE2LjkgMTEuMyAyNy4zbC0xLjYgMTguNSAxMC42LTE1LjJjNi04LjYgMTUuOC0xMy43IDI2LjItMTMuN3MyMC4yIDUuMSAyNi4yIDEzLjdsMTAuNiAxNS4yLTEuNi0xOC41Yy0uOS0xMC40IDMuMy0yMC42IDExLjMtMjcuM3MxOC44LTkuMSAyOC45LTYuNGwxNy45IDQuOC0xMy4yLTEzLjFjLTcuNC03LjQtMTAuNy0xNy45LTguOS0yOC4yczguNS0xOS4xIDE4LTIzLjVsMTYuOC03LjgtMTguNS0xLjZjLTEwLjQtLjktMTkuNy02LjgtMjUtMTUuOXMtNS43LTIwLjEtMS4zLTI5LjZsNy45LTE2LjgtMTUuMiAxMC43Yy04LjYgNi0xOS41IDcuNS0yOS4zIDMuOXMtMTcuMy0xMS43LTIwLTIxLjhsLTQuOC0xOHpcIl1cbn07XG52YXIgZmFIYXlrYWwgPSBmYUJhaGFpO1xudmFyIGZhU2RDYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NkLWNhcmQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3YzJcIiwgXCJNMzIwIDBIMTQxLjNDMTI0LjMgMCAxMDggNi43IDk2IDE4LjdMMTguNyA5NkM2LjcgMTA4IDAgMTI0LjMgMCAxNDEuM1Y0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzIwYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0ek0xNjAgODh2NDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRWODhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHptODAgMHY0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNFY4OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em04MCAwdjQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0Vjg4YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJdXG59O1xudmFyIGZhRHJhZ29uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RyYWdvbicsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODAwOV0sIFwiZjZkNVwiLCBcIk0zNTIgMTI0LjVsLTUxLjktMTNjLTYuNS0xLjYtMTEuMy03LjEtMTItMTMuOHMyLjgtMTMuMSA4LjctMTYuMWw0MC44LTIwLjRMMjk0LjQgMjguOGMtNS41LTQuMS03LjgtMTEuMy01LjYtMTcuOVMyOTcuMSAwIDMwNCAwSDQxNmgzMiAxNmMzMC4yIDAgNTguNyAxNC4yIDc2LjggMzguNGw1Ny42IDc2LjhjNi4yIDguMyA5LjYgMTguNCA5LjYgMjguOGMwIDI2LjUtMjEuNSA0OC00OCA0OEg1MzguNWMtMTcgMC0zMy4zLTYuNy00NS4zLTE4LjdMNDgwIDE2MEg0NDh2MjEuNWMwIDI0LjggMTIuOCA0Ny45IDMzLjggNjEuMWwxMDYuNiA2Ni42YzMyLjEgMjAuMSA1MS42IDU1LjIgNTEuNiA5My4xQzY0MCA0NjIuOSA1OTAuOSA1MTIgNTMwLjIgNTEySDQ5NiA0MzIgMzIuM2MtMy4zIDAtNi42LS40LTkuNi0xLjRDMTMuNSA1MDcuOCA2IDUwMSAyLjQgNDkyLjFDMSA0ODguNyAuMiA0ODUuMiAwIDQ4MS40Yy0uMi0zLjcgLjMtNy4zIDEuMy0xMC43YzIuOC05LjIgOS42LTE2LjcgMTguNi0yMC40YzMtMS4yIDYuMi0yIDkuNS0yLjJMNDMzLjMgNDEyYzguMy0uNyAxNC43LTcuNyAxNC43LTE2LjFjMC00LjMtMS43LTguNC00LjctMTEuNGwtNDQuNC00NC40Yy0zMC0zMC00Ni45LTcwLjctNDYuOS0xMTMuMVYxODEuNXYtNTd6TTUxMiA3Mi4zYzAtLjEgMC0uMiAwLS4zczAtLjIgMC0uM3YuNnptLTEuMyA3LjRMNDY0LjMgNjguMWMtLjIgMS4zLS4zIDIuNi0uMyAzLjljMCAxMy4zIDEwLjcgMjQgMjQgMjRjMTAuNiAwIDE5LjUtNi44IDIyLjctMTYuM3pNMTMwLjkgMTE2LjVjMTYuMy0xNC41IDQwLjQtMTYuMiA1OC41LTQuMWwxMzAuNiA4N1YyMjdjMCAzMi44IDguNCA2NC44IDI0IDkzSDExMmMtNi43IDAtMTIuNy00LjItMTUtMTAuNHMtLjUtMTMuMyA0LjYtMTcuN0wxNzEgMjMyLjMgMTguNCAyNTUuOGMtNyAxLjEtMTMuOS0yLjYtMTYuOS05cy0xLjUtMTQuMSAzLjgtMTguOEwxMzAuOSAxMTYuNXpcIl1cbn07XG52YXIgZmFTaG9lUHJpbnRzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob2UtcHJpbnRzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTRiXCIsIFwiTTQxNiAwQzM1Mi4zIDAgMjU2IDMyIDI1NiAzMlYxNjBjNDggMCA3NiAxNiAxMDQgMzJzNTYgMzIgMTA0IDMyYzU2LjQgMCAxNzYtMTYgMTc2LTk2UzUxMiAwIDQxNiAwek0xMjggOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRoMzJWMzJIMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NHpNMjg4IDUxMmM5NiAwIDIyNC00OCAyMjQtMTI4cy0xMTkuNi05Ni0xNzYtOTZjLTQ4IDAtNzYgMTYtMTA0IDMycy01NiAzMi0xMDQgMzJWNDgwczk2LjMgMzIgMTYwIDMyek0wIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg5NlYzNTJINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0elwiXVxufTtcbnZhciBmYUNpcmNsZVBsdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXBsdXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInBsdXMtY2lyY2xlXCJdLCBcImYwNTVcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIzMiAzNDRWMjgwSDE2OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg2NFYxNjhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHY2NGg2NGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgyODB2NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjR6XCJdXG59O1xudmFyIGZhUGx1c0NpcmNsZSA9IGZhQ2lyY2xlUGx1cztcbnZhciBmYUZhY2VHcmluVG9uZ3VlV2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4tdG9uZ3VlLXdpbmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NDAsIFwiZ3Jpbi10b25ndWUtd2lua1wiXSwgXCJmNThiXCIsIFwiTTE3NC41IDQ5OC44QzczLjEgNDY0LjcgMCAzNjguOSAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCAxMTIuOS03My4xIDIwOC43LTE3NC41IDI0Mi44QzM0Ni43IDQ4NCAzNTIgNDY2LjYgMzUyIDQ0OFY0MDEuMWMyNC4zLTE3LjUgNDMuNi00MS42IDU1LjQtNjkuNmM1LTExLjgtNy0yMi41LTE5LjMtMTguN2MtMzkuNyAxMi4yLTg0LjUgMTktMTMxLjggMTlzLTkyLjEtNi44LTEzMS44LTE5Yy0xMi4zLTMuOC0yNC4zIDYuOS0xOS4zIDE4LjdjMTEuNyAyNy44IDMwLjggNTEuNyA1NC44IDY5LjJWNDQ4YzAgMTguNiA1LjMgMzYgMTQuNSA1MC44em0yMC43LTI2NS4yYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMmMxNy42LTIzLjUgNTIuOC0yMy41IDcwLjQgMHpNMzM2IDI3MmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMzIwIDQwMi42VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NFY0MDIuNmMwLTE0LjcgMTEuOS0yNi42IDI2LjYtMjYuNmgyYzExLjMgMCAyMS4xIDcuOSAyMy42IDE4LjljMi44IDEyLjYgMjAuOCAxMi42IDIzLjYgMGMyLjUtMTEuMSAxMi4zLTE4LjkgMjMuNi0xOC45aDJjMTQuNyAwIDI2LjYgMTEuOSAyNi42IDI2LjZ6TTMzNiAxODRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbnZhciBmYUdyaW5Ub25ndWVXaW5rID0gZmFGYWNlR3JpblRvbmd1ZVdpbms7XG52YXIgZmFIYW5kSG9sZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmcnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0YmRcIiwgXCJNNTU5LjcgMzkyLjJjMTcuOC0xMy4xIDIxLjYtMzguMSA4LjUtNTUuOXMtMzguMS0yMS42LTU1LjktOC41TDM5Mi42IDQxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTYgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4IDI3MiAxOTMuN2MtMjkuMSAwLTU3LjMgOS45LTgwIDI4TDY4LjggMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxOTIgMzUyLjVjMjkgMCA1Ny4zLTkuMyA4MC43LTI2LjVsMTI2LjYtOTMuM3ptLTM2Ni4xLTguM2EuNSAuNSAwIDEgMSAtLjkgLjEgLjUgLjUgMCAxIDEgLjktLjF6XCJdXG59O1xudmFyIGZhUGx1Z0NpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTVkXCIsIFwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJ2OTZoNjRWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5Nmg2NFYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMydjMyYzAgNzcuNCA1NSAxNDIgMTI4IDE1Ni44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjQxMi44YzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNnY4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYyODhjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYUxpbmtTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaW5rLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJjaGFpbi1icm9rZW5cIiwgXCJjaGFpbi1zbGFzaFwiLCBcInVubGlua1wiXSwgXCJmMTI3XCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDg5LjMgMzU4LjJsOTAuNS05MC41YzU2LjUtNTYuNSA1Ni41LTE0OCAwLTIwNC41Yy01MC01MC0xMjguOC01Ni41LTE4Ni4zLTE1LjRsLTEuNiAxLjFjLTE0LjQgMTAuMy0xNy43IDMwLjMtNy40IDQ0LjZzMzAuMyAxNy43IDQ0LjYgNy40bDEuNi0xLjFjMzIuMS0yMi45IDc2LTE5LjMgMTAzLjggOC42YzMxLjUgMzEuNSAzMS41IDgyLjUgMCAxMTRsLTk2IDk2LTMxLjktMjVDNDMwLjkgMjM5LjYgNDIwLjEgMTc1LjEgMzc3IDEzMmMtNTIuMi01Mi4zLTEzNC41LTU2LjItMTkxLjMtMTEuN0wzOC44IDUuMXpNMjM5IDE2MmMzMC4xLTE0LjkgNjcuNy05LjkgOTIuOCAxNS4zYzIwIDIwIDI3LjUgNDguMyAyMS43IDc0LjVMMjM5IDE2MnpNNDA2LjYgNDE2LjRMMjIwLjkgMjcwYy0yLjEgMzkuOCAxMi4yIDgwLjEgNDIuMiAxMTBjMzguOSAzOC45IDk0LjQgNTEgMTQzLjYgMzYuM3ptLTI5MC0yMjguNUw2MC4yIDI0NC4zYy01Ni41IDU2LjUtNTYuNSAxNDggMCAyMDQuNWM1MCA1MCAxMjguOCA1Ni41IDE4Ni4zIDE1LjRsMS42LTEuMWMxNC40LTEwLjMgMTcuNy0zMC4zIDcuNC00NC42cy0zMC4zLTE3LjctNDQuNi03LjRsLTEuNiAxLjFjLTMyLjEgMjIuOS03NiAxOS4zLTEwMy44LTguNkM3NCAzNzIgNzQgMzIxIDEwNS41IDI4OS41bDYxLjgtNjEuOC01MC42LTM5Ljl6XCJdXG59O1xudmFyIGZhQ2hhaW5Ccm9rZW4gPSBmYUxpbmtTbGFzaDtcbnZhciBmYUNoYWluU2xhc2ggPSBmYUxpbmtTbGFzaDtcbnZhciBmYVVubGluayA9IGZhTGlua1NsYXNoO1xudmFyIGZhQ2xvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvbmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNGRcIiwgXCJNMjg4IDQ0OEg2NFYyMjRoNjRWMTYwSDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NFY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjg4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjM4NEgyODh2NjR6bS02NC05Nkg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIMjI0Yy0zNS4zIDAtNjQgMjguNy02NCA2NFYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjR6XCJdXG59O1xudmFyIGZhUGVyc29uV2Fsa2luZ0Fycm93TG9vcExlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXdhbGtpbmctYXJyb3ctbG9vcC1sZWZ0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTUxXCIsIFwiTTIwOCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTEyMy43IDIwMC41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUwyODEgMjMyLjdsLTE1LjMtMzYuOEMyNDguNSAxNTQuOCAyMDguMyAxMjggMTYzLjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTMyLjkgMTQuNi01OC4xIDQyLjQtNjkuNCA3Ni41bC0yLjYgNy44Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDIuNi03LjhjNS43LTE3LjEgMTguMy0zMC45IDM0LjctMzguMmw4LTMuNXptLTMwIDEzNS4xTDY4LjcgMzk4IDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxMTYuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42em0zNDcuNyAxMTljMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w0NjEuMyAzODRINDgwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwcy03MS42LTE2MC0xNjAtMTYwTDM1MiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMjggMGM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5Nkg0NjEuM2wyNS40LTI1LjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w4MCA4MHpcIl1cbn07XG52YXIgZmFBcnJvd1VwWkEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtei1hJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LWFscGhhLXVwLWFsdFwiXSwgXCJmODgyXCIsIFwiTTE4My42IDQyLjRDMTc3LjUgMzUuOCAxNjkgMzIgMTYwIDMycy0xNy41IDMuOC0yMy42IDEwLjRsLTg4IDk2Yy0xMS45IDEzLTExLjEgMzMuMyAyIDQ1LjJzMzMuMyAxMS4xIDQ1LjItMkwxMjggMTQ2LjNWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTQ2LjNsMzIuNCAzNS40YzExLjkgMTMgMzIuMiAxMy45IDQ1LjIgMnMxMy45LTMyLjIgMi00NS4ybC04OC05NnpNMzIwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDUwLjdsLTczLjQgNzMuNGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOEg0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDI5LjNsNzMuNC03My40YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44SDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTk2IDE5MmMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtNjQgMTI4LTE2IDMyYy03LjkgMTUuOC0xLjUgMzUgMTQuMyA0Mi45czM1IDEuNSA0Mi45LTE0LjNsNy4yLTE0LjNoODguNGw3LjIgMTQuM2M3LjkgMTUuOCAyNy4xIDIyLjIgNDIuOSAxNC4zczIyLjItMjcuMSAxNC4zLTQyLjlsLTE2LTMyLTY0LTEyOEM0MzkuMiAyNjIuOCA0MjguMSAyNTYgNDE2IDI1NnpNMzk1LjggNDAwTDQxNiAzNTkuNiA0MzYuMiA0MDBIMzk1Ljh6XCJdXG59O1xudmFyIGZhU29ydEFscGhhVXBBbHQgPSBmYUFycm93VXBaQTtcbnZhciBmYUZpcmVGbGFtZUN1cnZlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaXJlLWZsYW1lLWN1cnZlZCcsXG4gIGljb246IFszODQsIDUxMiwgW1wiZmlyZS1hbHRcIl0sIFwiZjdlNFwiLCBcIk0xNTMuNiAyOS45bDE2LTIxLjNDMTczLjYgMy4yIDE4MCAwIDE4Ni43IDBDMTk4LjQgMCAyMDggOS42IDIwOCAyMS4zVjQzLjVjMCAxMy4xIDUuNCAyNS43IDE0LjkgMzQuN0wzMDcuNiAxNTlDMzU2LjQgMjA1LjYgMzg0IDI3MC4yIDM4NCAzMzcuN0MzODQgNDM0IDMwNiA1MTIgMjA5LjcgNTEySDE5MkM4NiA1MTIgMCA0MjYgMCAzMjB2LTMuOGMwLTQ4LjggMTkuNC05NS42IDUzLjktMTMwLjFsMy41LTMuNWM0LjItNC4yIDEwLTYuNiAxNi02LjZDODUuOSAxNzYgOTYgMTg2LjEgOTYgMTk4LjZWMjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR2LTMuOWMwLTE4LTcuMi0zNS4zLTE5LjktNDhsLTM4LjYtMzguNmMtMjQtMjQtMzcuNS01Ni43LTM3LjUtOTAuN2MwLTI3LjcgOS01NC44IDI1LjYtNzYuOXpcIl1cbn07XG52YXIgZmFGaXJlQWx0ID0gZmFGaXJlRmxhbWVDdXJ2ZWQ7XG52YXIgZmFUb3JuYWRvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Rvcm5hZG8nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc3ODZdLCBcImY3NmZcIiwgXCJNMCAzMlY0NS42QzAgNjIuNyAxLjcgNzkuNiA1IDk2SDM1Ny44YzMuMi02LjkgNy41LTEzLjMgMTMtMTguOGwzOC42LTM4LjZjNC4yLTQuMiA2LjYtMTAgNi42LTE2QzQxNiAxMC4xIDQwNS45IDAgMzkzLjQgMEgzMkMxNC4zIDAgMCAxNC4zIDAgMzJ6bTM1Mi4yIDk2SDEzLjZjMTIuMiAzNS45IDMyLjMgNjguNyA1OC44IDk2SDQxMmwtNDcuMi02Mi45Yy03LjMtOS43LTExLjYtMjEuMi0xMi42LTMzLjF6bS0yMjYgMTM4LjJsMTE2LjQgNjguNWM4LjIgNC44IDE1LjggMTAuNyAyMi41IDE3LjNINDQ1YzItOS44IDMtMTkuOSAzLTMwLjFjMC0yMy01LjMtNDUuNS0xNS4zLTY1LjlIMTEwLjJjNS4yIDMuNiAxMC41IDcgMTYgMTAuMnpNMjg4IDM4NGMxMC4zIDIxLjQgMTMuOCA0NS41IDkuOSA2OWwtNS45IDM1LjdjLTIgMTIuMiA3LjQgMjMuNCAxOS44IDIzLjRjNS4zIDAgMTAuNC0yLjEgMTQuMi01LjlsNzguMi03OC4yYzEyLjgtMTIuOCAyMy4xLTI3LjcgMzAuNC00My45SDI4OHpcIl1cbn07XG52YXIgZmFGaWxlQ2lyY2xlUGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWNpcmNsZS1wbHVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbNTg2MDZdLCBcImU0OTRcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBIMjI0VjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODR2MzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0g2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWNjR6bTM4NCA2NEgyNTZWMEwzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTE2IDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djQ4SDM2OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg0OHY0OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjM4NGg0OGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkg0NDhWMzA0elwiXVxufTtcbnZhciBmYUJvb2tRdXJhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLXF1cmFuJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJxdXJhblwiXSwgXCJmNjg3XCIsIFwiTTM1MiAwYzUzIDAgOTYgNDMgOTYgOTZWNDE2YzAgNTMtNDMgOTYtOTYgOTZINjQgMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJWMzg0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMkMwIDE0LjMgMTQuMyAwIDMyIDBINjQgMzUyem0wIDM4NEg5NnY2NEgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJ6TTI3NC4xIDE1MC4ybC04LjkgMjEuNC0yMy4xIDEuOWMtNS43IC41LTggNy41LTMuNyAxMS4yTDI1NiAxOTkuOGwtNS40IDIyLjZjLTEuMyA1LjUgNC43IDkuOSA5LjYgNi45TDI4MCAyMTcuMmwxOS44IDEyLjFjNC45IDMgMTAuOS0xLjQgOS42LTYuOUwzMDQgMTk5LjhsMTcuNi0xNS4xYzQuMy0zLjcgMi0xMC44LTMuNy0xMS4ybC0yMy4xLTEuOS04LjktMjEuNGMtMi4yLTUuMy05LjYtNS4zLTExLjggMHpNOTYgMTkyYzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4YzI1LjYgMCA0OS41LTcuNSA2OS41LTIwLjVjMy4yLTIuMSA0LjUtNi4yIDMuMS05LjdzLTUuMi01LjYtOS00LjhjLTYuMSAxLjItMTIuNSAxLjktMTkgMS45Yy01Mi40IDAtOTQuOS00Mi41LTk0LjktOTQuOXM0Mi41LTk0LjkgOTQuOS05NC45YzYuNSAwIDEyLjggLjcgMTkgMS45YzMuOCAuOCA3LjUtMS4zIDktNC44cy4yLTcuNi0zLjEtOS43QzI3My41IDcxLjUgMjQ5LjYgNjQgMjI0IDY0QzE1My4zIDY0IDk2IDEyMS4zIDk2IDE5MnpcIl1cbn07XG52YXIgZmFRdXJhbiA9IGZhQm9va1F1cmFuO1xudmFyIGZhQW5jaG9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuY2hvcicsXG4gIGljb246IFs1NzYsIDUxMiwgWzk4NzVdLCBcImYxM2RcIiwgXCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEgyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJoMzJWNDQ4SDIwOGMtNTMgMC05Ni00My05Ni05NnYtNi4xbDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctN1YzNTJjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBoODAgODBjODguNCAwIDE2MC03MS42IDE2MC0xNjB2LTYuMWw3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC01Ni01NmMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTU2IDU2Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03VjM1MmMwIDUzLTQzIDk2LTk2IDk2SDMyMFYyNDBoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQxLjF6XCJdXG59O1xudmFyIGZhQm9yZGVyQWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvcmRlci1hbGwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4NGNcIiwgXCJNMzg0IDk2VjIyNEgyNTZWOTZIMzg0em0wIDE5MlY0MTZIMjU2VjI4OEgzODR6TTE5MiAyMjRINjRWOTZIMTkyVjIyNHpNNjQgMjg4SDE5MlY0MTZINjRWMjg4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6XCJdXG59O1xudmFyIGZhRmFjZUFuZ3J5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtYW5ncnknLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NDQsIFwiYW5ncnlcIl0sIFwiZjU1NlwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTMzOC43IDM5NS45YzYuNi01LjkgNy4xLTE2IDEuMi0yMi42QzMyMy44IDM1NS40IDI5NS43IDMzNiAyNTYgMzM2cy02Ny44IDE5LjQtODMuOSAzNy4zYy01LjkgNi42LTUuNCAxNi43IDEuMiAyMi42czE2LjcgNS40IDIyLjYtMS4yYzExLjctMTMgMzEuNi0yNi43IDYwLjEtMjYuN3M0OC40IDEzLjcgNjAuMSAyNi43YzUuOSA2LjYgMTYgNy4xIDIyLjYgMS4yek0xNzYuNCAyNzJjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xLjUtLjEtMy0uMy00LjRsMTAuOSAzLjZjOC40IDIuOCAxNy40LTEuNyAyMC4yLTEwLjFzLTEuNy0xNy40LTEwLjEtMjAuMmwtOTYtMzJjLTguNC0yLjgtMTcuNCAxLjctMjAuMiAxMC4xczEuNyAxNy40IDEwLjEgMjAuMmwzMC43IDEwLjJjLTUuOCA1LjgtOS4zIDEzLjgtOS4zIDIyLjZjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE5Mi0zMmMwLTguOS0zLjYtMTctOS41LTIyLjhsMzAuMi0xMC4xYzguNC0yLjggMTIuOS0xMS45IDEwLjEtMjAuMnMtMTEuOS0xMi45LTIwLjItMTAuMWwtOTYgMzJjLTguNCAyLjgtMTIuOSAxMS45LTEwLjEgMjAuMnMxMS45IDEyLjkgMjAuMiAxMC4xbDExLjctMy45Yy0uMiAxLjUtLjMgMy4xLS4zIDQuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwiXVxufTtcbnZhciBmYUFuZ3J5ID0gZmFGYWNlQW5ncnk7XG52YXIgZmFDb29raWVCaXRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nvb2tpZS1iaXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNTY0XCIsIFwiTTI1Ny41IDI3LjZjLS44LTUuNC00LjktOS44LTEwLjMtMTAuNmMtMjIuMS0zLjEtNDQuNiAuOS02NC40IDExLjRsLTc0IDM5LjVDODkuMSA3OC40IDczLjIgOTQuOSA2My40IDExNUwyNi43IDE5MC42Yy05LjggMjAuMS0xMyA0Mi45LTkuMSA2NC45bDE0LjUgODIuOGMzLjkgMjIuMSAxNC42IDQyLjMgMzAuNyA1Ny45bDYwLjMgNTguNGMxNi4xIDE1LjYgMzYuNiAyNS42IDU4LjcgMjguN2w4MyAxMS43YzIyLjEgMy4xIDQ0LjYtLjkgNjQuNC0xMS40bDc0LTM5LjVjMTkuNy0xMC41IDM1LjYtMjcgNDUuNC00Ny4ybDM2LjctNzUuNWM5LjgtMjAuMSAxMy00Mi45IDkuMS02NC45Yy0uOS01LjMtNS4zLTkuMy0xMC42LTEwLjFjLTUxLjUtOC4yLTkyLjgtNDcuMS0xMDQuNS05Ny40Yy0xLjgtNy42LTgtMTMuNC0xNS43LTE0LjZjLTU0LjYtOC43LTk3LjctNTItMTA2LjItMTA2Ljh6TTIwOCAxNDRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xNDQgMzM2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTIyNC02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhQXJyb3dUcmVuZERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdHJlbmQtZG93bicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA5N1wiLCBcIk0zODQgMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDU0NGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ2ODIuN0wzNDIuNiAxMzcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBMMTkyIDI0Mi43IDU0LjYgMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBMMzIwIDIwNS4zIDQ2Ni43IDM1MkgzODR6XCJdXG59O1xudmFyIGZhUnNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JzcycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiZmVlZFwiXSwgXCJmMDllXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJjMjI5LjggMCA0MTYgMTg2LjIgNDE2IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkMzODQgMjUzLjYgMjI2LjQgOTYgMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMCA0MTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMCA0MTZ6TTMyIDE2MGMxNTkuMSAwIDI4OCAxMjguOSAyODggMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhRmVlZCA9IGZhUnNzO1xudmFyIGZhRHJhd1BvbHlnb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJhdy1wb2x5Z29uJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNWVlXCIsIFwiTTk2IDE1MS40VjM2MC42YzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNEgzMjguNmMwLS4xIC4xLS4yIC4xLS4zbC00LjUtNy45LTMyLTU2IDAgMGMtMS40IC4xLTIuOCAuMS00LjIgLjFjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMS40IDAgMi44IDAgNC4yIC4xbDAgMCAzMi01NiA0LjUtNy45LS4xLS4zSDExOS40Yy01LjYgOS43LTEzLjcgMTcuOC0yMy40IDIzLjR6TTM4NC4zIDM1MmMzNS4yIC4yIDYzLjcgMjguNyA2My43IDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0yMy43IDAtNDQuNC0xMi45LTU1LjQtMzJIMTE5LjRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNFYxNTEuNEMxMi45IDE0MC40IDAgMTE5LjcgMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJIMzI4LjZjMTEuMS0xOS4xIDMxLjctMzIgNTUuNC0zMmMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDM1LjMtMjguNSA2My44LTYzLjcgNjRsLTQuNSA3LjktMzIgNTYtMi4zIDRjNC4yIDguNSA2LjUgMTggNi41IDI4LjFzLTIuMyAxOS42LTYuNSAyOC4xbDIuMyA0IDMyIDU2IDQuNSA3Ljl6XCJdXG59O1xudmFyIGZhU2NhbGVCYWxhbmNlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2FsZS1iYWxhbmNlZCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzk4NzgsIFwiYmFsYW5jZS1zY2FsZVwiXSwgXCJmMjRlXCIsIFwiTTM4NCAzMkg1MTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzk4LjRjLTUuMiAyNS44LTIyLjkgNDcuMS00Ni40IDU3LjNWNDQ4SDUxMmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMjAgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI4OFYxNTMuM2MtMjMuNS0xMC4zLTQxLjItMzEuNi00Ni40LTU3LjNIMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMySDI1NmMxNC42LTE5LjQgMzcuOC0zMiA2NC0zMnM0OS40IDEyLjYgNjQgMzJ6bTU1LjYgMjg4SDU4NC40TDUxMiAxOTUuOCA0MzkuNiAzMjB6TTUxMiA0MTZjLTYyLjkgMC0xMTUuMi0zNC0xMjYtNzguOWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMUM2MjcuMiAzODIgNTc0LjkgNDE2IDUxMiA0MTZ6TTEyNi44IDE5NS44TDU0LjQgMzIwSDE5OS4zTDEyNi44IDE5NS44ek0uOSAzMzcuMWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMUMyNDIgMzgyIDE4OS43IDQxNiAxMjYuOCA0MTZTMTEuNyAzODIgLjkgMzM3LjF6XCJdXG59O1xudmFyIGZhQmFsYW5jZVNjYWxlID0gZmFTY2FsZUJhbGFuY2VkO1xudmFyIGZhR2F1Z2VTaW1wbGVIaWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhdWdlLXNpbXBsZS1oaWdoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE2NjgsIFwidGFjaG9tZXRlclwiLCBcInRhY2hvbWV0ZXItZmFzdFwiXSwgXCJmNjJhXCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMzIwIDk2YzAtMTUuOS01LjgtMzAuNC0xNS4zLTQxLjZsNzYuNi0xNDcuNGM2LjEtMTEuOCAxLjUtMjYuMy0xMC4yLTMyLjRzLTI2LjItMS41LTMyLjQgMTAuMkwyNjIuMSAyODguM2MtMi0uMi00LS4zLTYuMS0uM2MtMzUuMyAwLTY0IDI4LjctNjQgNjRzMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwiXVxufTtcbnZhciBmYVRhY2hvbWV0ZXIgPSBmYUdhdWdlU2ltcGxlSGlnaDtcbnZhciBmYVRhY2hvbWV0ZXJGYXN0ID0gZmFHYXVnZVNpbXBsZUhpZ2g7XG52YXIgZmFTaG93ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hvd2VyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NzAzXSwgXCJmMmNjXCIsIFwiTTY0IDEzMS45QzY0IDExMi4xIDgwLjEgOTYgOTkuOSA5NmM5LjUgMCAxOC42IDMuOCAyNS40IDEwLjVsMTYuMiAxNi4yYy0yMSAzOC45LTE3LjQgODcuNSAxMC45IDEyM0wxNTEgMjQ3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBMMzQ1IDEyMWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC0xLjMgMS4zYy0zNS41LTI4LjMtODQuMi0zMS45LTEyMy0xMC45TDE3MC41IDYxLjNDMTUxLjggNDIuNSAxMjYuNCAzMiA5OS45IDMyQzQ0LjcgMzIgMCA3Ni43IDAgMTMxLjlWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMTMxLjl6TTI1NiAzNTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em02NCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wLTEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTY0IDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAtMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptNjQgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMzItMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbnZhciBmYURlc2t0b3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGVza3RvcCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODQyMSwgNjE3MDQsIFwiZGVza3RvcC1hbHRcIl0sIFwiZjM5MFwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NFYzNTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjQwbC0xMC43IDMySDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMkg0MTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzQ2LjdMMzM2IDQxNkg1MTJjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTUxMiA2NFYyODhINjRWNjRINTEyelwiXVxufTtcbnZhciBmYURlc2t0b3BBbHQgPSBmYURlc2t0b3A7XG52YXIgZmFNID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ20nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMDldLCBcIjRkXCIsIFwiTTIyLjcgMzMuNGMxMy41LTQuMSAyOC4xIDEuMSAzNS45IDEyLjlMMjI0IDI5NC4zIDM4OS40IDQ2LjJjNy44LTExLjcgMjIuNC0xNyAzNS45LTEyLjlTNDQ4IDQ5LjkgNDQ4IDY0VjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlYxNjkuN0wyNTAuNiAzNjkuOGMtNS45IDguOS0xNS45IDE0LjItMjYuNiAxNC4ycy0yMC43LTUuMy0yNi42LTE0LjJMNjQgMTY5LjdWNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjY0QzAgNDkuOSA5LjIgMzcuNSAyMi43IDMzLjR6XCJdXG59O1xudmFyIGZhVGFibGVMaXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxlLWxpc3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInRoLWxpc3RcIl0sIFwiZjAwYlwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDQ0OGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2em02NCAwdjY0aDY0Vjk2SDY0em0zODQgMEgxOTJ2NjRINDQ4Vjk2ek02NCAyMjR2NjRoNjRWMjI0SDY0em0zODQgMEgxOTJ2NjRINDQ4VjIyNHpNNjQgMzUydjY0aDY0VjM1Mkg2NHptMzg0IDBIMTkydjY0SDQ0OFYzNTJ6XCJdXG59O1xudmFyIGZhVGhMaXN0ID0gZmFUYWJsZUxpc3Q7XG52YXIgZmFDb21tZW50U21zID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbW1lbnQtc21zJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzbXNcIl0sIFwiZjdjZFwiLCBcIk0yNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJTMCAxMjUuMSAwIDI0MGMwIDQ1LjEgMTcuNyA4Ni44IDQ3LjcgMTIwLjljLTEuOSAyNC41LTExLjQgNDYuMy0yMS40IDYyLjljLTUuNSA5LjItMTEuMSAxNi42LTE1LjIgMjEuNmMtMi4xIDIuNS0zLjcgNC40LTQuOSA1LjdjLS42IC42LTEgMS4xLTEuMyAxLjRsLS4zIC4zIDAgMCAwIDAgMCAwIDAgMGMtNC42IDQuNi01LjkgMTEuNC0zLjQgMTcuNGMyLjUgNiA4LjMgOS45IDE0LjggOS45YzI4LjcgMCA1Ny42LTguOSA4MS42LTE5LjNjMjIuOS0xMCA0Mi40LTIxLjkgNTQuMy0zMC42YzMxLjggMTEuNSA2NyAxNy45IDEwNC4xIDE3Ljl6TTIwMi45IDE3Ni44YzYuNS0yLjIgMTMuNyAuMSAxNy45IDUuNkwyNTYgMjI5LjNsMzUuMi00Ni45YzQuMS01LjUgMTEuMy03LjggMTcuOS01LjZzMTAuOSA4LjMgMTAuOSAxNS4ydjk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI0MGwtMTkuMiAyNS42Yy0zIDQtNy44IDYuNC0xMi44IDYuNHMtOS44LTIuNC0xMi44LTYuNEwyMjQgMjQwdjQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjE5MmMwLTYuOSA0LjQtMTMgMTAuOS0xNS4yem0xNzMuMSAzOGMwIC4yIDAgLjQgMCAuNGMuMSAuMSAuNiAuOCAyLjIgMS43YzMuOSAyLjMgOS42IDQuMSAxOC4zIDYuOGwuNiAuMmM3LjQgMi4yIDE3LjMgNS4yIDI1LjIgMTAuMmM5LjEgNS43IDE3LjQgMTUuMiAxNy42IDI5LjljLjIgMTUtNy42IDI2LTE3LjggMzIuM2MtOS41IDUuOS0yMC45IDcuOS0zMC43IDcuNmMtMTIuMi0uNC0yMy43LTQuNC0zMi42LTcuNGwwIDAgMCAwYy0xLjQtLjUtMi43LS45LTQtMS40Yy04LjQtMi44LTEyLjktMTEuOS0xMC4xLTIwLjJzMTEuOS0xMi45IDIwLjItMTAuMWMxLjcgLjYgMy4zIDEuMSA0LjkgMS42bDAgMCAwIDBjOS4xIDMuMSAxNS42IDUuMyAyMi42IDUuNWM1LjMgLjIgMTAtMSAxMi44LTIuOGMxLjItLjggMS44LTEuNSAyLjEtMmMuMi0uNCAuNi0xLjIgLjYtMi43bDAtLjJjMC0uNyAwLTEuNC0yLjctMy4xYy0zLjgtMi40LTkuNi00LjMtMTgtNi45bC0xLjItLjRjLTcuMi0yLjItMTYuNy01LTI0LjMtOS42Yy05LTUuNC0xNy43LTE0LjctMTcuNy0yOS40Yy0uMS0xNS4yIDguNi0yNS43IDE4LjUtMzEuNmM5LjQtNS41IDIwLjUtNy41IDI5LjctNy40YzEwIC4yIDE5LjcgMi4zIDI3LjkgNC40YzguNSAyLjMgMTMuNiAxMSAxMS4zIDE5LjZzLTExIDEzLjYtMTkuNiAxMS4zYy03LjMtMS45LTE0LjEtMy4zLTIwLjEtMy40Yy00LjktLjEtOS44IDEuMS0xMi45IDIuOWMtMS40IC44LTIuMSAxLjYtMi40IDJjLS4yIC4zLS40IC44LS40IDEuOXptLTI3MiAwYzAgLjIgMCAuNCAwIC40Yy4xIC4xIC42IC44IDIuMiAxLjdjMy45IDIuMyA5LjYgNC4xIDE4LjMgNi44bC42IC4yYzcuNCAyLjIgMTcuMyA1LjIgMjUuMiAxMC4yYzkuMSA1LjcgMTcuNCAxNS4yIDE3LjYgMjkuOWMuMiAxNS03LjYgMjYtMTcuOCAzMi4zYy05LjUgNS45LTIwLjkgNy45LTMwLjcgNy42Yy0xMi4zLS40LTI0LjItNC41LTMzLjItNy42bDAgMCAwIDBjLTEuMy0uNC0yLjUtLjgtMy42LTEuMmMtOC40LTIuOC0xMi45LTExLjktMTAuMS0yMC4yczExLjktMTIuOSAyMC4yLTEwLjFjMS40IC41IDIuOCAuOSA0LjEgMS40bDAgMCAwIDBjOS41IDMuMiAxNi41IDUuNiAyMy43IDUuOGM1LjMgLjIgMTAtMSAxMi44LTIuOGMxLjItLjggMS44LTEuNSAyLjEtMmMuMi0uNCAuNi0xLjIgLjYtMi43bDAtLjJjMC0uNyAwLTEuNC0yLjctMy4xYy0zLjgtMi40LTkuNi00LjMtMTgtNi45bC0xLjItLjQgMCAwYy03LjItMi4yLTE2LjctNS0yNC4zLTkuNkM4MC44IDIzOSA3Mi4xIDIyOS43IDcyIDIxNWMtLjEtMTUuMiA4LjYtMjUuNyAxOC41LTMxLjZjOS40LTUuNSAyMC41LTcuNSAyOS43LTcuNGM5LjUgLjEgMjIuMiAyLjEgMzEuMSA0LjRjOC41IDIuMyAxMy42IDExIDExLjMgMTkuNnMtMTEgMTMuNi0xOS42IDExLjNjLTYuNi0xLjgtMTYuOC0zLjMtMjMuMy0zLjRjLTQuOS0uMS05LjggMS4xLTEyLjkgMi45Yy0xLjQgLjgtMi4xIDEuNi0yLjQgMmMtLjIgLjMtLjQgLjgtLjQgMS45elwiXVxufTtcbnZhciBmYVNtcyA9IGZhQ29tbWVudFNtcztcbnZhciBmYUJvb2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vaycsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODIxMl0sIFwiZjAyZFwiLCBcIk05NiAwQzQzIDAgMCA0MyAwIDk2VjQxNmMwIDUzIDQzIDk2IDk2IDk2SDM4NGgzMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMlYzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJIMzg0IDk2em0wIDM4NEgzNTJ2NjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTMyLTI0MGMwLTguOCA3LjItMTYgMTYtMTZIMzM2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDE0NGMtOC44IDAtMTYtNy4yLTE2LTE2em0xNiA0OEgzMzZjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMTQ0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYVVzZXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItcGx1cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjIzNFwiLCBcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGg5MS40QzM2OC4yIDMwNCA0NDggMzgzLjggNDQ4IDQ4Mi4zYzAgMTYuNC0xMy4zIDI5LjctMjkuNyAyOS43SDI5LjdDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek01MDQgMzEyVjI0OEg0NDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoNjRWMTM2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR2NjRoNjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRINTUydjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0elwiXVxufTtcbnZhciBmYUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZWNrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTAwMDMsIDEwMDA0XSwgXCJmMDBjXCIsIFwiTTQzOC42IDEwNS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0yNTYgMjU2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgMzM4LjcgMzkzLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJdXG59O1xudmFyIGZhQmF0dGVyeVRocmVlUXVhcnRlcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS10aHJlZS1xdWFydGVycycsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiYmF0dGVyeS00XCJdLCBcImYyNDFcIiwgXCJNNDY0IDE2MGM4LjggMCAxNiA3LjIgMTYgMTZWMzM2YzAgOC44LTcuMiAxNi0xNiAxNkg4MGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZINDY0ek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZWMzM2YzAgNDQuMiAzNS44IDgwIDgwIDgwSDQ2NGM0NC4yIDAgODAtMzUuOCA4MC04MFYzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMyVjE3NmMwLTQ0LjItMzUuOC04MC04MC04MEg4MHptMjcyIDk2SDk2VjMyMEgzNTJWMTkyelwiXVxufTtcbnZhciBmYUJhdHRlcnk0ID0gZmFCYXR0ZXJ5VGhyZWVRdWFydGVycztcbnZhciBmYUhvdXNlQ2lyY2xlQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTA5XCIsIFwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWgzMnY2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44VjQ3MmMwIDIyLjEgMTcuOSA0MCA0MCA0MGgxNmMxLjIgMCAyLjQtLjEgMy42LS4yYzEuNSAuMSAzIC4yIDQuNSAuMkgxNjBoMjRjMjIuMSAwIDQwLTE3LjkgNDAtNDBWNDQ4IDM4NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg2NGwuNyAwek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwiXVxufTtcbnZhciBmYUFuZ2xlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS1sZWZ0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbODI0OV0sIFwiZjEwNFwiLCBcIk00MS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgMjU2IDI0Ni42IDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwelwiXVxufTtcbnZhciBmYURpYWdyYW1TdWNjZXNzb3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGlhZ3JhbS1zdWNjZXNzb3InLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0N2FcIiwgXCJNNTEyIDQxNmwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpNNjQgMTYwbDAtNjQgMTQ0IDAgMTYgMCAwIDY0TDY0IDE2MHptMjI0IDBsMC02NCA4MCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2LTM4LjEgMGMtMjEuNCAwLTMyLjEgMjUuOS0xNyA0MUwzOTkgMjM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDUwMyAxNjljMTUuMS0xNS4xIDQuNC00MS0xNy00MUw0NDggMTI4bDAtMTZjMC00NC4yLTM1LjgtODAtODAtODBMMjI0IDMybC0xNiAwTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpcIl1cbn07XG52YXIgZmFUcnVja0Fycm93UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stYXJyb3ctcmlnaHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OGJcIiwgXCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBIMzY4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4Vjk2aDUwLjdjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMNTg5LjMgMTkyYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNWMjU2djMyIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDU3NmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NkgyNTZjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4ek00MTYgMjU2SDU0NFYyMzcuM0w0NjYuNyAxNjBINDE2djk2ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzY4LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTI1NyA5NWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzOSAzOUg5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgyNjIuMWwtMzkgMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4MC04MGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNTcgOTV6XCJdXG59O1xudmFyIGZhQXJyb3dzU3BsaXRVcEFuZExlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3dzLXNwbGl0LXVwLWFuZC1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNGJjXCIsIFwiTTI0Ni42IDE1MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w5Ni05NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzNTIgMTA5LjNWMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0aDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDQxNmMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhjMC0zNS4zLTI4LjctNjQtNjQtNjRIMTA5LjNsNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC05Ni05NmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsOTYtOTZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM0wxMDkuMyAyNTZIMjI0YzIzLjMgMCA0NS4yIDYuMiA2NCAxNy4xVjEwOS4zbC00MS40IDQxLjR6XCJdXG59O1xudmFyIGZhSGFuZEZpc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1maXN0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbOTk5NCwgXCJmaXN0LXJhaXNlZFwiXSwgXCJmNmRlXCIsIFwiTTE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjE0NEgxNjBWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTY0IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2ODBINjRWNjR6bTE5MiAwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2OTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWNjR6bTk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ2NjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMTI4em0tOTYgODhsMC0uNmM5LjQgNS40IDIwLjMgOC42IDMyIDguNmMxMy4yIDAgMjUuNC00IDM1LjYtMTAuOGM4LjcgMjQuOSAzMi41IDQyLjggNjAuNCA0Mi44YzExLjcgMCAyMi42LTMuMSAzMi04LjZWMjU2YzAgNTIuMy0yNS4xIDk4LjgtNjQgMTI4djk2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWNDAxLjZjLTE3LjMtNy45LTMzLjItMTguOC00Ni45LTMyLjVMNjkuNSAzNTcuNUM0NS41IDMzMy41IDMyIDMwMC45IDMyIDI2N1YyNDBjMC0zNS4zIDI4LjctNjQgNjQtNjRoODhjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDBIMTI4Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDU2YzM5LjggMCA3Mi0zMi4yIDcyLTcyelwiXVxufTtcbnZhciBmYUZpc3RSYWlzZWQgPSBmYUhhbmRGaXN0O1xudmFyIGZhQ2xvdWRNb29uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLW1vb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2YzNcIiwgXCJNNDk1LjggMGM1LjUgMCAxMC45IC4yIDE2LjMgLjdjNyAuNiAxMi44IDUuNyAxNC4zIDEyLjVzLTEuNiAxMy45LTcuNyAxNy4zYy00NC40IDI1LjItNzQuNCA3My03NC40IDEyNy44YzAgODEgNjUuNSAxNDYuNiAxNDYuMiAxNDYuNmM4LjYgMCAxNy0uNyAyNS4xLTIuMWM2LjktMS4yIDEzLjggMi4yIDE3IDguNXMxLjkgMTMuOC0zLjEgMTguN2MtMzQuNSAzMy42LTgxLjcgNTQuNC0xMzMuNiA1NC40Yy05LjMgMC0xOC40LS43LTI3LjQtMS45Yy0xMS4yLTIyLjYtMjkuOC00MC45LTUyLjYtNTEuN2MtMi43LTU4LjUtNTAuMy0xMDUuMy0xMDkuMi0xMDYuN2MtMS43LTEwLjQtMi42LTIxLTIuNi0zMS44QzMwNCA4Ni4xIDM4OS44IDAgNDk1LjggMHpNNDQ3LjkgNDMxLjljMCA0NC4yLTM1LjggODAtODAgODBIOTZjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcgODAtOTQuNmwwLTEuM2MwLTUzIDQzLTk2IDk2LTk2YzM0LjkgMCA2NS40IDE4LjYgODIuMiA0Ni40YzEzLTkuMSAyOC44LTE0LjQgNDUuOC0xNC40YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS45LS42IDExLjctMS45IDE3LjJjMzcuNCA2LjcgNjUuOCAzOS40IDY1LjggNzguN3pcIl1cbn07XG52YXIgZmFCcmllZmNhc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJpZWZjYXNlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTg4XSwgXCJmMGIxXCIsIFwiTTE4NCA0OEgzMjhjNC40IDAgOCAzLjYgOCA4Vjk2SDE3NlY1NmMwLTQuNCAzLjYtOCA4LTh6bS01NiA4Vjk2SDY0QzI4LjcgOTYgMCAxMjQuNyAwIDE2MHY5NkgxOTIgMzIwIDUxMlYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzg0VjU2YzAtMzAuOS0yNS4xLTU2LTU2LTU2SDE4NGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZ6TTUxMiAyODhIMzIwdjMyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4SDBWNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0SDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NFYyODh6XCJdXG59O1xudmFyIGZhUGVyc29uRmFsbGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tZmFsbGluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU0NlwiLCBcIk0yODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDkuOGMwIDU0LjYtMjcuOSAxMDQuNi03Mi41IDEzMy42bC4yIC4zTDMwNC41IDI1Nmw4Ny41IDBjMTUuMSAwIDI5LjMgNy4xIDM4LjQgMTkuMmw0My4yIDU3LjZjMTAuNiAxNC4xIDcuNyAzNC4yLTYuNCA0NC44cy0zNC4yIDcuNy00NC44LTYuNEwzODQgMzIwbC05NiAwaC0xLjRsOTIuMyAxNDIuNmM5LjYgMTQuOCA1LjQgMzQuNi05LjUgNDQuM3MtMzQuNiA1LjQtNDQuMy05LjVMMTY0LjUgMjQ5LjJjLTIuOSA5LjItNC41IDE5LTQuNSAyOWwwIDczLjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjc4LjJjMC02NS4xIDM5LjYtMTIzLjcgMTAwLjEtMTQ3LjlDMjMyLjMgMTE1LjggMjU2IDgwLjggMjU2IDQxLjhsMC05LjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTExMiAzMmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJdXG59O1xudmFyIGZhSW1hZ2VQb3J0cmFpdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbWFnZS1wb3J0cmFpdCcsXG4gIGljb246IFszODQsIDUxMiwgW1wicG9ydHJhaXRcIl0sIFwiZjNlMFwiLCBcIk0zODQgNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRINjRDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zODR6TTEyOCAxOTJhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek04MCAzNTYuNmMwLTM3LjkgMzAuNy02OC42IDY4LjYtNjguNmg4Ni45YzM3LjkgMCA2OC42IDMwLjcgNjguNiA2OC42YzAgMTUuMS0xMi4zIDI3LjQtMjcuNCAyNy40SDEwNy40QzkyLjMgMzg0IDgwIDM3MS43IDgwIDM1Ni42elwiXVxufTtcbnZhciBmYVBvcnRyYWl0ID0gZmFJbWFnZVBvcnRyYWl0O1xudmFyIGZhVXNlclRhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXRhZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUwN1wiLCBcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTQ1LjcgNDhDNzkuOCAzMDQgMCAzODMuOCAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJINDE4LjNjMTAgMCAxOC44LTQuOSAyNC4yLTEyLjVsLTk5LjItOTkuMmMtMTQuOS0xNC45LTIzLjMtMzUuMS0yMy4zLTU2LjF2LTMzYy0xNS45LTQuNy0zMi44LTcuMi01MC4zLTcuMkgxNzguM3pNMzg0IDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2ODIuN2MwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM0w0NzguMSA0OTEuM2MxOC43IDE4LjcgNDkuMSAxOC43IDY3LjkgMGw3My40LTczLjRjMTguNy0xOC43IDE4LjctNDkuMSAwLTY3LjlMNTEyIDI0Mi43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDM4NHptMjQgODBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG52YXIgZmFSdWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVnJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTY5XCIsIFwiTTI0IDY0SDU2IDgwVjg4djg4IDgwIDgwIDg4IDI0SDU2IDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMzYwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMjgwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMjAwSDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0aDhWMTEySDI0QzEwLjcgMTEyIDAgMTAxLjMgMCA4OFMxMC43IDY0IDI0IDY0em04OCAwSDUyOFY0NDhIMTEyVjY0ek02NDAgODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRoLTh2NDBoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGgtOHYzMmg4YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0aC04djMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRoLTh2NDBoOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEg1ODQgNTYwVjQyNCAzMzYgMjU2IDE3NiA4OCA2NGgyNCAzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHpcIl1cbn07XG52YXIgZmFFYXJ0aEV1cm9wZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlYXJ0aC1ldXJvcGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImdsb2JlLWV1cm9wZVwiXSwgXCJmN2EyXCIsIFwiTTI2Ni4zIDQ4LjNMMjMyLjUgNzMuNmMtNS40IDQtOC41IDEwLjQtOC41IDE3LjF2OS4xYzAgNi44IDUuNSAxMi4zIDEyLjMgMTIuM2MyLjQgMCA0LjgtLjcgNi44LTIuMWw0MS44LTI3LjljMi0xLjMgNC40LTIuMSA2LjgtMi4xaDFjNi4yIDAgMTEuMyA1LjEgMTEuMyAxMS4zYzAgMy0xLjIgNS45LTMuMyA4bC0xOS45IDE5LjljLTUuOCA1LjgtMTIuOSAxMC4yLTIwLjcgMTIuOGwtMjYuNSA4LjhjLTUuOCAxLjktOS42IDcuMy05LjYgMTMuNGMwIDMuNy0xLjUgNy4zLTQuMSAxMGwtMTcuOSAxNy45Yy02LjQgNi40LTkuOSAxNS05LjkgMjR2NC4zYzAgMTYuNCAxMy42IDI5LjcgMjkuOSAyOS43YzExIDAgMjEuMi02LjIgMjYuMS0xNmw0LTguMWMyLjQtNC44IDcuNC03LjkgMTIuOC03LjljNC41IDAgOC43IDIuMSAxMS40IDUuN2wxNi4zIDIxLjdjMi4xIDIuOSA1LjUgNC41IDkuMSA0LjVjOC40IDAgMTMuOS04LjkgMTAuMS0xNi40bC0xLjEtMi4zYy0zLjUtNyAwLTE1LjUgNy41LTE4bDIxLjItNy4xYzcuNi0yLjUgMTIuNy05LjYgMTIuNy0xNy42YzAtMTAuMyA4LjMtMTguNiAxOC42LTE4LjZINDAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDM3OS4zYy03LjIgMC0xNC4yIDIuOS0xOS4zIDhsLTQuNyA0LjdjLTIuMSAyLjEtMy4zIDUtMy4zIDhjMCA2LjIgNS4xIDExLjMgMTEuMyAxMS4zaDExLjNjNiAwIDExLjggMi40IDE2IDYuNmw2LjUgNi41YzEuOCAxLjggMi44IDQuMyAyLjggNi44cy0xIDUtMi44IDYuOGwtNy41IDcuNUMzODYgMjYyIDM4NCAyNjYuOSAzODQgMjcyczIgMTAgNS43IDEzLjdMNDA4IDMwNGMxMC4yIDEwLjIgMjQuMSAxNiAzOC42IDE2SDQ1NGM2LjUtMjAuMiAxMC00MS43IDEwLTY0YzAtMTExLjQtODcuNi0yMDIuNC0xOTcuNy0yMDcuN3ptMTcyIDMwNy45Yy0zLjctMi42LTguMi00LjEtMTMtNC4xYy02IDAtMTEuOC0yLjQtMTYtNi42TDM5NiAzMzJjLTcuNy03LjctMTgtMTItMjguOS0xMmMtOS43IDAtMTkuMi0zLjUtMjYuNi05LjhMMzE0IDI4Ny40Yy0xMS42LTkuOS0yNi40LTE1LjQtNDEuNy0xNS40SDI1MS40Yy0xMi42IDAtMjUgMy43LTM1LjUgMTAuN0wxODguNSAzMDFjLTE3LjggMTEuOS0yOC41IDMxLjktMjguNSA1My4zdjMuMmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2wxNiAxNmM4LjUgOC41IDIwIDEzLjMgMzIgMTMuM0gyNDhjMTMuMyAwIDI0IDEwLjcgMjQgMjRjMCAyLjUgLjQgNSAxLjEgNy4zYzcxLjMtNS44IDEzMi41LTQ3LjYgMTY1LjItMTA3LjJ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg3LjMgMTAwLjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0zMiAzMmMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDMyLTMyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwiXVxufTtcbnZhciBmYUdsb2JlRXVyb3BlID0gZmFFYXJ0aEV1cm9wZTtcbnZhciBmYUNhcnRGbGF0YmVkU3VpdGNhc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FydC1mbGF0YmVkLXN1aXRjYXNlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJsdWdnYWdlLWNhcnRcIl0sIFwiZjU5ZFwiLCBcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEg0OGM0NC4yIDAgODAgMzUuOCA4MCA4MFYzNjhjMCA4LjggNy4yIDE2IDE2IDE2SDYwOGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkg1NDEuM2MxLjggNSAyLjcgMTAuNCAyLjcgMTZjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC01LjYgMS0xMSAyLjctMTZIMjUzLjNjMS44IDUgMi43IDEwLjQgMi43IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtNS42IDEtMTEgMi43LTE2SDE0NGMtNDQuMiAwLTgwLTM1LjgtODAtODBWODBjMC04LjgtNy4yLTE2LTE2LTE2SDMyQzE0LjMgNjQgMCA0OS43IDAgMzJ6TTQzMiA5NlY1NmMwLTQuNC0zLjYtOC04LThIMzQ0Yy00LjQgMC04IDMuNi04IDhWOTZoOTZ6TTI4OCA5NlY1NmMwLTMwLjkgMjUuMS01NiA1Ni01Nmg4MGMzMC45IDAgNTYgMjUuMSA1NiA1NlY5NiAzMjBIMjg4Vjk2ek01MTIgMzIwVjk2aDE2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4VjI3MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg1MTJ6TTI0MCA5NmgxNlYzMjBIMjQwYy0yNi41IDAtNDgtMjEuNS00OC00OFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDh6XCJdXG59O1xudmFyIGZhTHVnZ2FnZUNhcnQgPSBmYUNhcnRGbGF0YmVkU3VpdGNhc2U7XG52YXIgZmFSZWN0YW5nbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWN0YW5nbGUteG1hcmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MjE2NCwgXCJyZWN0YW5nbGUtdGltZXNcIiwgXCJ0aW1lcy1yZWN0YW5nbGVcIiwgXCJ3aW5kb3ctY2xvc2VcIl0sIFwiZjQxMFwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEg0NDhjMzUuMyAwIDY0LTI4LjcgNjQtNjRWOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINjR6TTE3NSAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJdXG59O1xudmFyIGZhUmVjdGFuZ2xlVGltZXMgPSBmYVJlY3RhbmdsZVhtYXJrO1xudmFyIGZhVGltZXNSZWN0YW5nbGUgPSBmYVJlY3RhbmdsZVhtYXJrO1xudmFyIGZhV2luZG93Q2xvc2UgPSBmYVJlY3RhbmdsZVhtYXJrO1xudmFyIGZhQmFodFNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFodC1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlMGFjXCIsIFwiTTE0NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMlY2NEgzNy42QzE2LjggNjQgMCA4MC44IDAgMTAxLjZWMjI0djQxLjdWMjg4IDQwNi4zYzAgMjMgMTguNyA0MS43IDQxLjcgNDEuN0gxMTJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMlY0NDhoMzJjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC00MC4xLTIxLjEtNzUuMy01Mi43LTk1LjFDMjgwLjMgMjIyLjYgMjg4IDIwMC4yIDI4OCAxNzZjMC02MS45LTUwLjEtMTEyLTExMi0xMTJWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTExMiAxMjh2OTZINjRWMTI4aDQ4em02NCA5NlYxMjhjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6bS02NCA2NHY5Nkg2NFYyODhoNDh6bTY0IDk2VjI4OGgzMmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEgxNzZ6XCJdXG59O1xudmFyIGZhQm9va09wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MjE0LCAxMjgzNjZdLCBcImY1MThcIiwgXCJNMjQ5LjYgNDcxLjVjMTAuOCAzLjggMjIuNC00LjEgMjIuNC0xNS41Vjc4LjZjMC00LjItMS42LTguNC01LTExQzI0Ny40IDUyIDIwMi40IDMyIDE0NCAzMkM5My41IDMyIDQ2LjMgNDUuMyAxOC4xIDU2LjFDNi44IDYwLjUgMCA3MS43IDAgODMuOFY0NTQuMWMwIDExLjkgMTIuOCAyMC4yIDI0LjEgMTYuNUM1NS42IDQ2MC4xIDEwNS41IDQ0OCAxNDQgNDQ4YzMzLjkgMCA3OSAxNCAxMDUuNiAyMy41em03Ni44IDBDMzUzIDQ2MiAzOTguMSA0NDggNDMyIDQ0OGMzOC41IDAgODguNCAxMi4xIDExOS45IDIyLjZjMTEuMyAzLjggMjQuMS00LjYgMjQuMS0xNi41VjgzLjhjMC0xMi4xLTYuOC0yMy4zLTE4LjEtMjcuNkM1MjkuNyA0NS4zIDQ4Mi41IDMyIDQzMiAzMmMtNTguNCAwLTEwMy40IDIwLTEyMyAzNS42Yy0zLjMgMi42LTUgNi44LTUgMTFWNDU2YzAgMTEuNCAxMS43IDE5LjMgMjIuNCAxNS41elwiXVxufTtcbnZhciBmYUJvb2tKb3VybmFsV2hpbGxzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stam91cm5hbC13aGlsbHMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImpvdXJuYWwtd2hpbGxzXCJdLCBcImY2NmFcIiwgXCJNMCA5NkMwIDQzIDQzIDAgOTYgMEgzODRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJWMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMydjY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDM4NCA5NmMtNTMgMC05Ni00My05Ni05NlY5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMySDM1MlYzODRIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05MC40LTIzNC40bC0yMS4yLTIxLjJjLTMgMTAuMS01LjEgMjAuNi01LjEgMzEuNmMwIC4yIDAgLjUgLjEgLjhzLjEgLjUgLjEgLjhMMTY1LjIgMjI2YzIuNSAyLjEgMy40IDUuOCAyLjMgOC45Yy0xLjMgMy00LjEgNS4xLTcuNSA1LjFjLTEuOS0uMS0zLjgtLjgtNS4yLTJsLTIzLjYtMjAuNkMxNDIuOCAyNjcgMTg2LjkgMzA0IDI0MCAzMDRzOTcuMy0zNyAxMDguOS04Ni42TDMyNS4zIDIzOGMtMS40IDEuMi0zLjMgMi01LjMgMmMtMi4yLS4xLTQuNC0xLjEtNi0yLjhjLTEuMi0xLjUtMS45LTMuNC0yLTUuMmMuMS0yLjIgMS4xLTQuNCAyLjgtNmwzNy4xLTMyLjVjMC0uMyAwLS41IC4xLS44cy4xLS41IC4xLS44YzAtMTEtMi4xLTIxLjUtNS4xLTMxLjZsLTIxLjIgMjEuMmMtMy4xIDMuMS04LjEgMy4xLTExLjMgMHMtMy4xLTguMSAwLTExLjJsMjYuNC0yNi41Yy04LjItMTctMjAuNS0zMS43LTM1LjktNDIuNmMtMi43LTEuOS02LjIgMS40LTUgNC41YzguNSAyMi40IDMuNiA0OC0xMyA2NS42Yy0zLjIgMy40LTMuNiA4LjktLjkgMTIuN2M5LjggMTQgMTIuNyAzMS45IDcuNSA0OC41Yy01LjkgMTkuNC0yMiAzNC4xLTQxLjkgMzguM2wtMS40LTM0LjMgMTIuNiA4LjZjLjYgLjQgMS41IC42IDIuMyAuNmMxLjUgMCAyLjctLjggMy41LTJzLjYtMi44LS4xLTRMMjYwIDIyNS40bDE4LTMuNmMxLjgtLjQgMy4xLTIuMSAzLjEtNHMtMS40LTMuNS0zLjEtMy45bC0xOC0zLjcgOC41LTE0LjNjLjgtMS4yIC45LTIuOSAuMS00LjFzLTItMi0zLjUtMmwtLjEgMGMtLjcgLjEtMS41IC4zLTIuMSAuN2wtMTQuMSA5LjZMMjQ0IDg3LjljLS4xLTIuMi0xLjktMy45LTQtMy45cy0zLjkgMS42LTQgMy45bC00LjYgMTEwLjgtMTItOC4xYy0xLjUtMS4xLTMuNi0uOS01IC40cy0xLjYgMy40LS44IDVsOC42IDE0LjMtMTggMy43Yy0xLjggLjQtMy4xIDItMy4xIDMuOXMxLjQgMy42IDMuMSA0bDE4IDMuOC04LjYgMTQuMmMtLjIgLjYtLjUgMS40LS41IDJjMCAxLjEgLjUgMi4xIDEuMiAzYy44IC42IDEuOCAxIDIuOCAxYy43IDAgMS42LS4yIDIuMi0uNmwxMC40LTcuMS0xLjQgMzIuOGMtMTkuOS00LjEtMzYtMTguOS00MS45LTM4LjNjLTUuMS0xNi42LTIuMi0zNC40IDcuNi00OC41YzIuNy0zLjkgMi4zLTkuMy0uOS0xMi43Yy0xNi42LTE3LjUtMjEuNi00My4xLTEzLjEtNjUuNWMxLjItMy4xLTIuMy02LjQtNS00LjVjLTE1LjMgMTAuOS0yNy42IDI1LjYtMzUuOCA0Mi42bDI2LjQgMjYuNWMzLjEgMy4xIDMuMSA4LjEgMCAxMS4ycy04LjEgMy4xLTExLjIgMHpcIl1cbn07XG52YXIgZmFKb3VybmFsV2hpbGxzID0gZmFCb29rSm91cm5hbFdoaWxscztcbnZhciBmYUhhbmRjdWZmcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kY3VmZnMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZjhcIiwgXCJNMjQwIDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTE5MiA0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bS0zMiA4MGMxNy43IDAgMzIgMTQuMyAzMiAzMmg4YzEzLjMgMCAyNCAxMC43IDI0IDI0djE2YzAgMS43LS4yIDMuNC0uNSA1LjFDMjgwLjMgMjI5LjYgMzIwIDI4Ni4yIDMyMCAzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0NDAuNCAwIDM1MmMwLTY1LjggMzkuNy0xMjIuNCA5Ni41LTE0Ni45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMVYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRoOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAzMjBhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6bTE5Mi05NmMwLTI1LjktNS4xLTUwLjUtMTQuNC03My4xYzE2LjktMzIuOSA0NC44LTU5LjEgNzguOS03My45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMVYxODRjMC0xMy4zIDEwLjctMjQgMjQtMjRoOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyaDhjMTMuMyAwIDI0IDEwLjcgMjQgMjR2MTZjMCAxLjctLjIgMy40LS41IDUuMUM2MDAuMyAyMjkuNiA2NDAgMjg2LjIgNjQwIDM1MmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MGMtNjIgMC0xMTUuOC0zNS4zLTE0Mi40LTg2LjljOS4zLTIyLjUgMTQuNC00Ny4yIDE0LjQtNzMuMXptMjI0IDBhOTYgOTYgMCAxIDAgLTE5MiAwIDk2IDk2IDAgMSAwIDE5MiAwek0zNjggMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTgwIDQ4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFUcmlhbmdsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyaWFuZ2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTg4OCwgXCJleGNsYW1hdGlvbi10cmlhbmdsZVwiLCBcIndhcm5pbmdcIl0sIFwiZjA3MVwiLCBcIk0yNTYgMzJjMTQuMiAwIDI3LjMgNy41IDM0LjUgMTkuOGwyMTYgMzY4YzcuMyAxMi40IDcuMyAyNy43IC4yIDQwLjFTNDg2LjMgNDgwIDQ3MiA0ODBINDBjLTE0LjMgMC0yNy42LTcuNy0zNC43LTIwLjFzLTctMjcuOCAuMi00MC4xbDIxNi0zNjhDMjI4LjcgMzkuNSAyNDEuOCAzMiAyNTYgMzJ6bTAgMTI4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNFYyOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYxODRjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTMyIDIyNGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwiXVxufTtcbnZhciBmYUV4Y2xhbWF0aW9uVHJpYW5nbGUgPSBmYVRyaWFuZ2xlRXhjbGFtYXRpb247XG52YXIgZmFXYXJuaW5nID0gZmFUcmlhbmdsZUV4Y2xhbWF0aW9uO1xudmFyIGZhRGF0YWJhc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGF0YWJhc2UnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxYzBcIiwgXCJNNDQ4IDgwdjQ4YzAgNDQuMi0xMDAuMyA4MC0yMjQgODBTMCAxNzIuMiAwIDEyOFY4MEMwIDM1LjggMTAwLjMgMCAyMjQgMFM0NDggMzUuOCA0NDggODB6TTM5My4yIDIxNC43YzIwLjgtNy40IDM5LjktMTYuOSA1NC44LTI4LjZWMjg4YzAgNDQuMi0xMDAuMyA4MC0yMjQgODBTMCAzMzIuMiAwIDI4OFYxODYuMWMxNC45IDExLjggMzQgMjEuMiA1NC44IDI4LjZDOTkuNyAyMzAuNyAxNTkuNSAyNDAgMjI0IDI0MHMxMjQuMy05LjMgMTY5LjItMjUuM3pNMCAzNDYuMWMxNC45IDExLjggMzQgMjEuMiA1NC44IDI4LjZDOTkuNyAzOTAuNyAxNTkuNSA0MDAgMjI0IDQwMHMxMjQuMy05LjMgMTY5LjItMjUuM2MyMC44LTcuNCAzOS45LTE2LjkgNTQuOC0yOC42VjQzMmMwIDQ0LjItMTAwLjMgODAtMjI0IDgwUzAgNDc2LjIgMCA0MzJWMzQ2LjF6XCJdXG59O1xudmFyIGZhU2hhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hhcmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImFycm93LXR1cm4tcmlnaHRcIiwgXCJtYWlsLWZvcndhcmRcIl0sIFwiZjA2NFwiLCBcIk0zMDcgMzQuOGMtMTEuNSA1LjEtMTkgMTYuNi0xOSAyOS4ydjY0SDE3NkM3OC44IDEyOCAwIDIwNi44IDAgMzA0QzAgNDE3LjMgODEuNSA0NjcuOSAxMDAuMiA0NzguMWMyLjUgMS40IDUuMyAxLjkgOC4xIDEuOWMxMC45IDAgMTkuNy04LjkgMTkuNy0xOS43YzAtNy41LTQuMy0xNC40LTkuOC0xOS41QzEwOC44IDQzMS45IDk2IDQxNC40IDk2IDM4NGMwLTUzIDQzLTk2IDk2LTk2aDk2djY0YzAgMTIuNiA3LjQgMjQuMSAxOSAyOS4yczI1IDMgMzQuNC01LjRsMTYwLTE0NGM2LjctNi4xIDEwLjYtMTQuNyAxMC42LTIzLjhzLTMuOC0xNy43LTEwLjYtMjMuOGwtMTYwLTE0NGMtOS40LTguNS0yMi45LTEwLjYtMzQuNC01LjR6XCJdXG59O1xudmFyIGZhQXJyb3dUdXJuUmlnaHQgPSBmYVNoYXJlO1xudmFyIGZhTWFpbEZvcndhcmQgPSBmYVNoYXJlO1xudmFyIGZhQm90dGxlRHJvcGxldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3R0bGUtZHJvcGxldCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZTRjNFwiLCBcIk05NiAwQzgyLjcgMCA3MiAxMC43IDcyIDI0czEwLjcgMjQgMjQgMjRjNC40IDAgOCAzLjYgOCA4djY0LjljMCAxMi4yLTcuMiAyMy4xLTE3LjIgMzAuMUM1My43IDE3NC4xIDMyIDIxMi41IDMyIDI1NlY0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI1NmMwLTQzLjUtMjEuNy04MS45LTU0LjgtMTA1Yy0xMC03LTE3LjItMTcuOS0xNy4yLTMwLjFWNTZjMC00LjQgMy42LTggOC04YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC04IDAgMCAwIDAgMEgxMDRsMCAwIDAgMEw5NiAwem02NCAzODJjLTI2LjUgMC00OC0yMC4xLTQ4LTQ1YzAtMTYuOCAyMi4xLTQ4LjEgMzYuMy02Ni40YzYtNy44IDE3LjUtNy44IDIzLjUgMEMxODUuOSAyODguOSAyMDggMzIwLjIgMjA4IDMzN2MwIDI0LjktMjEuNSA0NS00OCA0NXpcIl1cbn07XG52YXIgZmFNYXNrRmFjZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXNrLWZhY2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUxZDdcIiwgXCJNMzIwIDY0Yy0yNy4yIDAtNTMuOCA4LTc2LjQgMjMuMWwtMzcuMSAyNC44Yy0xNS44IDEwLjUtMzQuMyAxNi4xLTUzLjMgMTYuMUgxNDQgMTI4IDU2Yy0zMC45IDAtNTYgMjUuMS01NiA1NnY4NWMwIDU1LjEgMzcuNSAxMDMuMSA5MC45IDExNi40bDEwOCAyN0MyMzMuOCA0MzUgMjc1LjQgNDQ4IDMyMCA0NDhzODYuMi0xMyAxMjEuMS0zNS41bDEwOC0yN0M2MDIuNSAzNzIuMSA2NDAgMzI0LjEgNjQwIDI2OVYxODRjMC0zMC45LTI1LjEtNTYtNTYtNTZINTEyIDQ5NmgtOS4yYy0xOSAwLTM3LjUtNS42LTUzLjMtMTYuMUwzOTYuNCA4Ny4xQzM3My44IDcyIDM0Ny4yIDY0IDMyMCA2NHpNMTMyLjMgMzQ2LjNsLTI5LjgtNy40QzcwLjUgMzMwLjkgNDggMzAyLjEgNDggMjY5VjE4NGMwLTQuNCAzLjYtOCA4LThIOTZ2NDhjMCA0NS4xIDEzLjQgODcuMiAzNi4zIDEyMi4zem00MDUuMS03LjRsLTI5LjggNy40YzIzLTM1LjIgMzYuMy03Ny4yIDM2LjMtMTIyLjNWMTc2aDQwYzQuNCAwIDggMy42IDggOHY4NWMwIDMzLTIyLjUgNjEuOC01NC41IDY5Ljl6TTE5MiAyMDhjMC04LjggNy4yLTE2IDE2LTE2SDQzMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyMDhjLTguOCAwLTE2LTcuMi0xNi0xNnptMTYgNDhINDMyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2SDIwOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTYgODBjMC04LjggNy4yLTE2IDE2LTE2SDQwMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkgyNDBjLTguOCAwLTE2LTcuMi0xNi0xNnpcIl1cbn07XG52YXIgZmFIaWxsUm9ja3NsaWRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hpbGwtcm9ja3NsaWRlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTA4XCIsIFwiTTI1Mi40IDEwMy44bDI3IDQ4YzIuOCA1IDguMiA4LjIgMTMuOSA4LjJsNTMuMyAwYzUuOCAwIDExLjEtMy4xIDEzLjktOC4ybDI3LTQ4YzIuNy00LjkgMi43LTEwLjggMC0xNS43bC0yNy00OGMtMi44LTUtOC4yLTguMi0xMy45LTguMkgyOTMuNGMtNS44IDAtMTEuMSAzLjEtMTMuOSA4LjJsLTI3IDQ4Yy0yLjcgNC45LTIuNyAxMC44IDAgMTUuN3pNNjguMyA4N0M0My4xIDYxLjggMCA3OS43IDAgMTE1LjNWNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwSDM5Ni43YzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zTDY4LjMgODd6TTUwNC4yIDQwMy42YzQuOSAyLjcgMTAuOCAyLjcgMTUuNyAwbDQ4LTI3YzUtMi44IDguMi04LjIgOC4yLTEzLjlWMzA5LjRjMC01LjgtMy4xLTExLjEtOC4yLTEzLjlsLTQ4LTI3Yy00LjktMi43LTEwLjgtMi43LTE1LjcgMGwtNDggMjdjLTUgMi44LTguMiA4LjItOC4yIDEzLjl2NTMuM2MwIDUuOCAzLjEgMTEuMSA4LjIgMTMuOWw0OCAyN3pNMTkyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbnZhciBmYVJpZ2h0TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyaWdodC1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJleGNoYW5nZS1hbHRcIl0sIFwiZjM2MlwiLCBcIk0zMiA5NmwzMjAgMFYzMmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDk2IDk2YzYgNiA5LjQgMTQuMSA5LjQgMjIuNnMtMy40IDE2LjYtOS40IDIyLjZsLTk2IDk2Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNlYxNjBMMzIgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyek00ODAgMzUyYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDE2MHY2NGMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtOTYtOTZjLTYtNi05LjQtMTQuMS05LjQtMjIuNnMzLjQtMTYuNiA5LjQtMjIuNmw5Ni05NmM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42bDAgNjRINDgwelwiXVxufTtcbnZhciBmYUV4Y2hhbmdlQWx0ID0gZmFSaWdodExlZnQ7XG52YXIgZmFQYXBlclBsYW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcGVyLXBsYW5lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE5MTNdLCBcImYxZDhcIiwgXCJNNDk4LjEgNS42YzEwLjEgNyAxNS40IDE5LjEgMTMuNSAzMS4ybC02NCA0MTZjLTEuNSA5LjctNy40IDE4LjItMTYgMjNzLTE4LjkgNS40LTI4IDEuNkwyODQgNDI3LjdsLTY4LjUgNzQuMWMtOC45IDkuNy0yMi45IDEyLjktMzUuMiA4LjFTMTYwIDQ5My4yIDE2MCA0ODBWMzk2LjRjMC00IDEuNS03LjggNC4yLTEwLjdMMzMxLjggMjAyLjhjNS44LTYuMyA1LjYtMTYtLjQtMjJzLTE1LjctNi40LTIyLS43TDEwNiAzNjAuOCAxNy43IDMxNi42QzcuMSAzMTEuMyAuMyAzMDAuNyAwIDI4OC45czUuOS0yMi44IDE2LjEtMjguN2w0NDgtMjU2YzEwLjctNi4xIDIzLjktNS41IDM0IDEuNHpcIl1cbn07XG52YXIgZmFSb2FkQ2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm9hZC1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NjVcIiwgXCJNMjEzLjIgMzJIMjg4Vjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzJoNzQuOGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhWMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMydjY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0SDg2LjZDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNNDk2IDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMC0xOTJjLTguOCAwLTE2IDcuMi0xNiAxNnY4MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjI4OGMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xudmFyIGZhRHVuZ2VvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkdW5nZW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNmQ5XCIsIFwiTTMzNi42IDE1Ni41YzEuMyAxLjEgMi43IDIuMiAzLjkgMy4zYzkuMyA4LjIgMjMgMTAuNSAzMy40IDMuNmw2Ny42LTQ1LjFjMTEuNC03LjYgMTQuMi0yMy4yIDUuMS0zMy40QzQzMCA2Ni42IDQxMC45IDUwLjYgMzg5LjcgMzcuNmMtMTEuOS03LjMtMjYuOS0xLjQtMzIuMSAxMS42bC0zMC41IDc2LjJjLTQuNSAxMS4xIC4yIDIzLjYgOS41IDMxLjJ6TTMyOCAzNi44YzUuMS0xMi44LTEuNi0yNy40LTE1LTMwLjVDMjk0LjcgMi4yIDI3NS42IDAgMjU2IDBzLTM4LjcgMi4yLTU3IDYuNEMxODUuNSA5LjQgMTc4LjggMjQgMTg0IDM2LjhsMzAuMyA3NS44YzQuNSAxMS4zIDE2LjggMTcuMiAyOSAxNmM0LjItLjQgOC40LS42IDEyLjctLjZzOC42IC4yIDEyLjcgLjZjMTIuMSAxLjIgMjQuNC00LjcgMjktMTZMMzI4IDM2Ljh6TTY1LjUgODVjLTkuMSAxMC4yLTYuMyAyNS44IDUuMSAzMy40bDY3LjYgNDUuMWMxMC4zIDYuOSAyNC4xIDQuNiAzMy40LTMuNmMxLjMtMS4xIDIuNi0yLjMgNC0zLjNjOS4zLTcuNSAxMy45LTIwLjEgOS41LTMxLjJMMTU0LjQgNDkuMmMtNS4yLTEyLjktMjAuMy0xOC44LTMyLjEtMTEuNkMxMDEuMSA1MC42IDgyIDY2LjYgNjUuNSA4NXptMzE0IDEzNy4xYy45IDMuMyAxLjcgNi42IDIuMyAxMGMyLjUgMTMgMTMgMjMuOSAyNi4yIDIzLjloODBjMTMuMyAwIDI0LjEtMTAuOCAyMi45LTI0Yy0yLjUtMjcuMi05LjMtNTMuMi0xOS43LTc3LjNjLTUuNS0xMi45LTIxLjQtMTYuNi0zMy4xLTguOWwtNjguNiA0NS43Yy05LjggNi41LTEzLjIgMTkuMi0xMCAzMC41ek01My45IDE0NS44Yy0xMS42LTcuOC0yNy42LTQtMzMuMSA4LjlDMTAuNCAxNzguOCAzLjYgMjA0LjggMS4xIDIzMmMtMS4yIDEzLjIgOS42IDI0IDIyLjkgMjRoODBjMTMuMyAwIDIzLjgtMTAuOCAyNi4yLTIzLjljLjYtMy40IDEuNC02LjcgMi4zLTEwYzMuMS0xMS40LS4yLTI0LTEwLTMwLjVMNTMuOSAxNDUuOHpNMTA0IDI4OEgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0em0zMDQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzEyYzAtMTMuMy0xMC43LTI0LTI0LTI0SDQwOHpNMjQgNDE2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDBjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjR6bTM4NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY0NDBjMC0xMy4zLTEwLjctMjQtMjQtMjRINDA4ek0yNzIgMTkyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjE5MnptLTY0IDMyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjIyNHptMTI4IDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZWNDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWMjI0elwiXVxufTtcbnZhciBmYUFsaWduUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYWxpZ24tcmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMzhcIiwgXCJNNDQ4IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMySDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6TTAgMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMySDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJINDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMyelwiXVxufTtcbnZhciBmYU1vbmV5QmlsbDFXYXZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbmV5LWJpbGwtMS13YXZlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJtb25leS1iaWxsLXdhdmUtYWx0XCJdLCBcImY1M2JcIiwgXCJNMCAxMTIuNVY0MjIuM2MwIDE4IDEwLjEgMzUgMjcgNDEuM2M4NyAzMi41IDE3NCAxMC4zIDI2MS0xMS45Yzc5LjgtMjAuMyAxNTkuNi00MC43IDIzOS4zLTE4LjljMjMgNi4zIDQ4LjctOS41IDQ4LjctMzMuNFY4OS43YzAtMTgtMTAuMS0zNS0yNy00MS4zQzQ2MiAxNS45IDM3NSAzOC4xIDI4OCA2MC4zQzIwOC4yIDgwLjYgMTI4LjQgMTAwLjkgNDguNyA3OS4xQzI1LjYgNzIuOCAwIDg4LjYgMCAxMTIuNXpNMTI4IDQxNkg2NFYzNTJjMzUuMyAwIDY0IDI4LjcgNjQgNjR6TTY0IDIyNFYxNjBoNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTQ0OCAzNTJjMC0zNS4zIDI4LjctNjQgNjQtNjR2NjRINDQ4em02NC0xOTJjLTM1LjMgMC02NC0yOC43LTY0LTY0aDY0djY0ek0zODQgMjU2YzAgNjEuOS00MyAxMTItOTYgMTEycy05Ni01MC4xLTk2LTExMnM0My0xMTIgOTYtMTEyczk2IDUwLjEgOTYgMTEyek0yNTIgMjA4YzAgOS43IDYuOSAxNy43IDE2IDE5LjZWMjc2aC00Yy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGgyNCAyNGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBoLTRWMjA4YzAtMTEtOS0yMC0yMC0yMEgyNzJjLTExIDAtMjAgOS0yMCAyMHpcIl1cbn07XG52YXIgZmFNb25leUJpbGxXYXZlQWx0ID0gZmFNb25leUJpbGwxV2F2ZTtcbnZhciBmYUxpZmVSaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpZmUtcmluZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFjZFwiLCBcIk0zNjcuMiA0MTIuNUMzMzUuOSA0MzQuOSAyOTcuNSA0NDggMjU2IDQ0OHMtNzkuOS0xMy4xLTExMS4yLTM1LjVsNTgtNThjMTUuOCA4LjYgMzQgMTMuNSA1My4zIDEzLjVzMzcuNC00LjkgNTMuMy0xMy41bDU4IDU4em05MC43IC44YzMzLjgtNDMuNCA1NC05OCA1NC0xNTcuM3MtMjAuMi0xMTMuOS01NC0xNTcuM2M5LTEyLjUgNy45LTMwLjEtMy40LTQxLjNTNDI1LjggNDUgNDEzLjMgNTRDMzY5LjkgMjAuMiAzMTUuMyAwIDI1NiAwUzE0Mi4xIDIwLjIgOTguNyA1NGMtMTIuNS05LTMwLjEtNy45LTQxLjMgMy40UzQ1IDg2LjIgNTQgOTguN0MyMC4yIDE0Mi4xIDAgMTk2LjcgMCAyNTZzMjAuMiAxMTMuOSA1NCAxNTcuM2MtOSAxMi41LTcuOSAzMC4xIDMuNCA0MS4zUzg2LjIgNDY3IDk4LjcgNDU4YzQzLjQgMzMuOCA5OCA1NCAxNTcuMyA1NHMxMTMuOS0yMC4yIDE1Ny4zLTU0YzEyLjUgOSAzMC4xIDcuOSA0MS4zLTMuNHMxMi40LTI4LjggMy40LTQxLjN6bS00NS41LTQ2LjFsLTU4LTU4YzguNi0xNS44IDEzLjUtMzQgMTMuNS01My4zcy00LjktMzcuNC0xMy41LTUzLjNsNTgtNThDNDM0LjkgMTc2LjEgNDQ4IDIxNC41IDQ0OCAyNTZzLTEzLjEgNzkuOS0zNS41IDExMS4yek0zNjcuMiA5OS41bC01OCA1OGMtMTUuOC04LjYtMzQtMTMuNS01My4zLTEzLjVzLTM3LjQgNC45LTUzLjMgMTMuNWwtNTgtNThDMTc2LjEgNzcuMSAyMTQuNSA2NCAyNTYgNjRzNzkuOSAxMy4xIDExMS4yIDM1LjV6TTE1Ny41IDMwOS4zbC01OCA1OEM3Ny4xIDMzNS45IDY0IDI5Ny41IDY0IDI1NnMxMy4xLTc5LjkgMzUuNS0xMTEuMmw1OCA1OGMtOC42IDE1LjgtMTMuNSAzNC0xMy41IDUzLjNzNC45IDM3LjQgMTMuNSA1My4zek0yMDggMjU2YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6XCJdXG59O1xudmFyIGZhSGFuZHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNpZ24tbGFuZ3VhZ2VcIiwgXCJzaWduaW5nXCJdLCBcImYyYTdcIiwgXCJNNTQ0IDE2MGwtLjEgNzIuNmMtLjEgNTIuMi0yNCAxMDEtNjQgMTMzLjFjLjEtMS45IC4xLTMuOCAuMS01Ljd2LThjMC03MS44LTM3LTEzOC42LTk3LjktMTc2LjdsLTYwLjItMzcuNmMtOC42LTUuNC0xNy45LTguNC0yNy4zLTkuNEwyNDguNyA0OC44Yy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOGw3OCAxMzUuMWMzLjMgNS43IDEwLjcgNy43IDE2LjQgNC40czcuNy0xMC43IDQuNC0xNi40bC02Mi0xMDcuNGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhTMzYyIDUgMzY4LjYgMTYuNWw2OCAxMTcuOCAwIDAgMCAwIDQzLjMgNzVMNDgwIDE2MGMwLTE3LjcgMTQuNC0zMiAzMi0zMnMzMiAxNC40IDMyIDMyek0yNDMuOSA4OC41TDI2OC41IDEzMWMtMTMuOSA0LjUtMjYuNCAxMy43LTM0LjcgMjdjLS45IDEuNC0xLjcgMi45LTIuNSA0LjRsLTI4LjktNTBjLTYuNi0xMS41LTIuNy0yNi4yIDguOC0zMi44czI2LjItMi43IDMyLjggOC44em0tNDYuNCA2My43bDI2LjggNDYuNGMuNiA2IDIuMSAxMS44IDQuMyAxNy40SDIyNCAyMTAuN2wwIDBIMTc5bC0yMy0zOS44Yy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOHpNMjYwLjkgMTc1YzkuNC0xNSAyOS4xLTE5LjUgNDQuMS0xMC4ybDYwLjIgMzcuNkM0MTYuNyAyMzQuNyA0NDggMjkxLjIgNDQ4IDM1MnY4YzAgODMuOS02OC4xIDE1Mi0xNTIgMTUySDEyMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGg5MmM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMkg4OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNEgyMTJjNi42IDAgMTItNS40IDEyLTEycy01LjQtMTItMTItMTJINTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRIMjEyYzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEySDg4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0SDIyNGwwIDAgMCAwaDkzLjJMMjcxIDIxOS4xYy0xNS05LjQtMTkuNS0yOS4xLTEwLjItNDQuMXpcIl1cbn07XG52YXIgZmFTaWduTGFuZ3VhZ2UgPSBmYUhhbmRzO1xudmFyIGZhU2lnbmluZyA9IGZhSGFuZHM7XG52YXIgZmFDYWxlbmRhckRheSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci1kYXknLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY3ODNcIiwgXCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMjg4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMFYxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRIOTZWMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkySDQ0OFY0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjE5MnptODAgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2VjI3MmMwLTguOC03LjItMTYtMTYtMTZIODB6XCJdXG59O1xudmFyIGZhV2F0ZXJMYWRkZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2F0ZXItbGFkZGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJsYWRkZXItd2F0ZXJcIiwgXCJzd2ltbWluZy1wb29sXCJdLCBcImY1YzVcIiwgXCJNMTI4IDEyNy43QzEyOCA3NC45IDE3MC45IDMyIDIyMy43IDMyYzQ4LjMgMCA4OSAzNiA5NSA4My45bDEgOC4yYzIuMiAxNy41LTEwLjIgMzMuNS0yNy44IDM1LjdzLTMzLjUtMTAuMi0zNS43LTI3LjhsLTEtOC4yYy0yLTE1LjktMTUuNS0yNy44LTMxLjUtMjcuOGMtMTcuNSAwLTMxLjcgMTQuMi0zMS43IDMxLjdWMjI0SDM4NFYxMjcuN0MzODQgNzQuOSA0MjYuOSAzMiA0NzkuNyAzMmM0OC4zIDAgODkgMzYgOTUgODMuOWwxIDguMmMyLjIgMTcuNS0xMC4yIDMzLjUtMjcuOCAzNS43cy0zMy41LTEwLjItMzUuNy0yNy44bC0xLTguMmMtMi0xNS45LTE1LjUtMjcuOC0zMS41LTI3LjhjLTE3LjUgMC0zMS43IDE0LjItMzEuNyAzMS43VjM2MWMtMS42IDEtMy4zIDItNC44IDMuMWMtMTggMTIuNC00MC4xIDIwLjMtNTkuMiAyMC4zaDBWMjg4SDE5MnY5Ni41Yy0xOSAwLTQxLjItNy45LTU5LjEtMjAuM2MtMS42LTEuMS0zLjItMi4yLTQuOS0zLjFWMTI3Ljd6TTMwNi41IDM4OS45QzMyOSA0MDUuNCAzNTYuNSA0MTYgMzg0IDQxNmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWwwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA0NjkuNyA0MTcgNDgwIDM4NCA0ODBjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43bDAgMEMxMzYuNyA0MDUuMiAxNjUuMSA0MTYgMTkyIDQxNmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIl1cbn07XG52YXIgZmFMYWRkZXJXYXRlciA9IGZhV2F0ZXJMYWRkZXI7XG52YXIgZmFTd2ltbWluZ1Bvb2wgPSBmYVdhdGVyTGFkZGVyO1xudmFyIGZhQXJyb3dzVXBEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy11cC1kb3duJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJhcnJvd3MtdlwiXSwgXCJmMDdkXCIsIFwiTTE4Mi42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDEyOCAxMDkuM1Y0MDIuN0w4Ni42IDM2MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxOTIgNDAyLjdWMTA5LjNsNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2elwiXVxufTtcbnZhciBmYUFycm93c1YgPSBmYUFycm93c1VwRG93bjtcbnZhciBmYUZhY2VHcmltYWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZ3JpbWFjZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU1NiwgXCJncmltYWNlXCJdLCBcImY1N2ZcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTk2LTExMmgtOFYzNjBsNTUuMyAwYy0zLjggMjIuNy0yMy42IDQwLTQ3LjMgNDB6bTQ3LjMtNTZMMzQ0IDM0NFYzMDRoOGMyMy44IDAgNDMuNSAxNy4zIDQ3LjMgNDB6TTMyOCAzNDRIMjY0VjMwNGg2NHY0MHptMCA1NkgyNjRWMzYwaDY0djQwem0tODAtOTZ2NDBsLTY0IDBWMzA0aDY0em0wIDU2djQwSDE4NFYzNjBsNjQgMHptLTgwLTE2SDExMi43YzMuOC0yMi43IDIzLjYtNDAgNDcuMy00MGg4djQwem0wIDU2aC04Yy0yMy44IDAtNDMuNS0xNy4zLTQ3LjMtNDBIMTY4djQwek0xNDQuNCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTkyLTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFHcmltYWNlID0gZmFGYWNlR3JpbWFjZTtcbnZhciBmYVdoZWVsY2hhaXJNb3ZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3doZWVsY2hhaXItbW92ZScsXG4gIGljb246IFs0NDgsIDUxMiwgW1wid2hlZWxjaGFpci1hbHRcIl0sIFwiZTJjZVwiLCBcIk0zMjAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMjA0LjUgMTIxLjNjLTUuNC0yLjUtMTEuNy0xLjktMTYuNCAxLjdsLTQwLjkgMzAuN2MtMTQuMSAxMC42LTM0LjIgNy43LTQ0LjgtNi40cy03LjctMzQuMiA2LjQtNDQuOGw0MC45LTMwLjdjMjMuNy0xNy44IDU1LjMtMjEgODIuMS04LjRsOTAuNCA0Mi41YzI5LjEgMTMuNyAzNi44IDUxLjYgMTUuMiA3NS41TDI5OS4xIDIyNGg5Ny40YzMwLjMgMCA1MyAyNy43IDQ3LjEgNTcuNEw0MTUuNCA0MjIuM2MtMy41IDE3LjMtMjAuMyAyOC42LTM3LjcgMjUuMXMtMjguNi0yMC4zLTI1LjEtMzcuN0wzNzcgMjg4SDMwNi43YzguNiAxOS42IDEzLjMgNDEuMiAxMy4zIDY0YzAgODguNC03MS42IDE2MC0xNjAgMTYwUzAgNDQwLjQgMCAzNTJzNzEuNi0xNjAgMTYwLTE2MGMxMS4xIDAgMjIgMS4xIDMyLjQgMy4zbDU0LjItNTQuMi00Mi4xLTE5Ljh6TTE2MCA0NDhhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6XCJdXG59O1xudmFyIGZhV2hlZWxjaGFpckFsdCA9IGZhV2hlZWxjaGFpck1vdmU7XG52YXIgZmFUdXJuRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0dXJuLWRvd24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMDU0OSwgXCJsZXZlbC1kb3duLWFsdFwiXSwgXCJmM2JlXCIsIFwiTTM1MCAzMzQuNWMzLjggOC44IDIgMTktNC42IDI2bC0xMzYgMTQ0Yy00LjUgNC44LTEwLjggNy41LTE3LjQgNy41cy0xMi45LTIuNy0xNy40LTcuNWwtMTM2LTE0NGMtNi42LTctOC40LTE3LjItNC42LTI2czEyLjUtMTQuNSAyMi0xNC41aDg4bDAtMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDMyQzE0LjMgOTYgMCA4MS43IDAgNjRWMzJDMCAxNC4zIDE0LjMgMCAzMiAwbDgwIDBjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhsMCAxOTJoODhjOS42IDAgMTguMiA1LjcgMjIgMTQuNXpcIl1cbn07XG52YXIgZmFMZXZlbERvd25BbHQgPSBmYVR1cm5Eb3duO1xudmFyIGZhUGVyc29uV2Fsa2luZ0Fycm93UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXdhbGtpbmctYXJyb3ctcmlnaHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NTJcIiwgXCJNMjA4IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTIzLjcgMjAwLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDI4MSAyMzIuN2wtMTUuMy0zNi44QzI0OC41IDE1NC44IDIwOC4zIDEyOCAxNjMuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMzIuOSAxNC42LTU4LjEgNDIuNC02OS40IDc2LjVsLTIuNiA3LjhjLTUuNiAxNi44IDMuNSAzNC45IDIwLjIgNDAuNXMzNC45LTMuNSA0MC41LTIwLjJsMi42LTcuOGM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41em0tMzAgMTM1LjFMNjguNyAzOTggOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDExNi4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6TTU1MC42IDE1My40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w1MzAuNyAyMjRIMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMySDUzMC43bC0yNS40IDI1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsODAtODBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTgwLTgwelwiXVxufTtcbnZhciBmYVNxdWFyZUVudmVsb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1lbnZlbG9wZScsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiZW52ZWxvcGUtc3F1YXJlXCJdLCBcImYxOTlcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0yMTggMjcxLjdMNjQuMiAxNzIuNEM2NiAxNTYuNCA3OS41IDE0NCA5NiAxNDRIMzUyYzE2LjUgMCAzMCAxMi40IDMxLjggMjguNEwyMzAgMjcxLjdjLTEuOCAxLjItMy45IDEuOC02IDEuOHMtNC4yLS42LTYtMS44em0yOS40IDI2LjlMMzg0IDIxMC40VjMzNmMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjEwLjRsMTM2LjYgODguMmM3IDQuNSAxNS4xIDYuOSAyMy40IDYuOXMxNi40LTIuNCAyMy40LTYuOXpcIl1cbn07XG52YXIgZmFFbnZlbG9wZVNxdWFyZSA9IGZhU3F1YXJlRW52ZWxvcGU7XG52YXIgZmFEaWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpY2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjc5MjJdLCBcImY1MjJcIiwgXCJNMjc0LjkgMzQuM2MtMjguMS0yOC4xLTczLjctMjguMS0xMDEuOCAwTDM0LjMgMTczLjFjLTI4LjEgMjguMS0yOC4xIDczLjcgMCAxMDEuOEwxNzMuMSA0MTMuN2MyOC4xIDI4LjEgNzMuNyAyOC4xIDEwMS44IDBMNDEzLjcgMjc0LjljMjguMS0yOC4xIDI4LjEtNzMuNyAwLTEwMS44TDI3NC45IDM0LjN6TTIwMCAyMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNOTYgMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjI0IDM3NmEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTM1MiAyMDBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek0yMjQgMTIwYTI0IDI0IDAgMSAxIDAtNDggMjQgMjQgMCAxIDEgMCA0OHptOTYgMzI4YzAgMzUuMyAyOC43IDY0IDY0IDY0SDU3NmMzNS4zIDAgNjQtMjguNyA2NC02NFYyNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRINDYxLjdjMTEuNiAzNiAzLjEgNzctMjUuNCAxMDUuNUwzMjAgNDEzLjhWNDQ4ek00ODAgMzI4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIl1cbn07XG52YXIgZmFCb3dsaW5nQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3dsaW5nLWJhbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0MzZcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTI0MCA4MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIwOCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTY0LTY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFCcmFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmFpbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTUwNF0sIFwiZjVkY1wiLCBcIk0xODQgMGMzMC45IDAgNTYgMjUuMSA1NiA1NlY0NTZjMCAzMC45LTI1LjEgNTYtNTYgNTZjLTI4LjkgMC01Mi43LTIxLjktNTUuNy01MC4xYy01LjIgMS40LTEwLjcgMi4xLTE2LjMgMi4xYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTcuNCAxLjMtMTQuNiAzLjYtMjEuMkMyMS40IDM2Ny40IDAgMzM4LjIgMCAzMDRjMC0zMS45IDE4LjctNTkuNSA0NS44LTcyLjNDMzcuMSAyMjAuOCAzMiAyMDcgMzIgMTkyYzAtMzAuNyAyMS42LTU2LjMgNTAuNC02Mi42QzgwLjggMTIzLjkgODAgMTE4IDgwIDExMmMwLTI5LjkgMjAuNi01NS4xIDQ4LjMtNjIuMUMxMzEuMyAyMS45IDE1NS4xIDAgMTg0IDB6TTMyOCAwYzI4LjkgMCA1Mi42IDIxLjkgNTUuNyA0OS45YzI3LjggNyA0OC4zIDMyLjEgNDguMyA2Mi4xYzAgNi0uOCAxMS45LTIuNCAxNy40YzI4LjggNi4yIDUwLjQgMzEuOSA1MC40IDYyLjZjMCAxNS01LjEgMjguOC0xMy44IDM5LjdDNDkzLjMgMjQ0LjUgNTEyIDI3Mi4xIDUxMiAzMDRjMCAzNC4yLTIxLjQgNjMuNC01MS42IDc0LjhjMi4zIDYuNiAzLjYgMTMuOCAzLjYgMjEuMmMwIDM1LjMtMjguNyA2NC02NCA2NGMtNS42IDAtMTEuMS0uNy0xNi4zLTIuMWMtMyAyOC4yLTI2LjggNTAuMS01NS43IDUwLjFjLTMwLjkgMC01Ni0yNS4xLTU2LTU2VjU2YzAtMzAuOSAyNS4xLTU2IDU2LTU2elwiXVxufTtcbnZhciBmYUJhbmRhZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFuZGFnZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyOTY1NywgXCJiYW5kLWFpZFwiXSwgXCJmNDYyXCIsIFwiTTQ4MCA0MTZoOTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwYzAtMzUuMy0yOC43LTY0LTY0LTY0SDQ4MFY0MTZ6TTQ0OCA5NkgxOTJWNDE2SDQ0OFY5NnpNNjQgOTZDMjguNyA5NiAwIDEyNC43IDAgMTYwVjM1MmMwIDM1LjMgMjguNyA2NCA2NCA2NGg5NlY5Nkg2NHpNMjQ4IDIwOGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMjAtMjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek0yNDggMzA0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTEyMC0yNGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJdXG59O1xudmFyIGZhQmFuZEFpZCA9IGZhQmFuZGFnZTtcbnZhciBmYUNhbGVuZGFyTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItbWludXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNzJcIiwgXCJNMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjRIMzIwVjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJWNjRoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2NDhIMzJWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zMiAxOTJINDgwVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg4MGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTkyek0zNDQgMzc2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDE2OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNEgzNDR6XCJdXG59O1xudmFyIGZhQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE1MzIsIFwidGltZXMtY2lyY2xlXCIsIFwieG1hcmstY2lyY2xlXCJdLCBcImYwNTdcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE3NSAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJdXG59O1xudmFyIGZhVGltZXNDaXJjbGUgPSBmYUNpcmNsZVhtYXJrO1xudmFyIGZhWG1hcmtDaXJjbGUgPSBmYUNpcmNsZVhtYXJrO1xudmFyIGZhR2lmdHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2lmdHMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3OWNcIiwgXCJNMjAwLjYgMzJDMjA1IDE5LjUgMTk4LjUgNS44IDE4NiAxLjRTMTU5LjggMy41IDE1NS40IDE2TDE0NC43IDQ2LjJsLTkuOS0yOS44QzEzMC42IDMuOCAxMTctMyAxMDQuNCAxLjJTODUgMTkgODkuMiAzMS42bDguMyAyNS0yNy40LTIwYy0xMC43LTcuOC0yNS43LTUuNC0zMy41IDUuM3MtNS40IDI1LjcgNS4zIDMzLjVMNzAuMiA5Nkg0OEMyMS41IDk2IDAgMTE3LjUgMCAxNDRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDIwMC42Yy01LjQtOS40LTguNi0yMC4zLTguNi0zMlYyNTZjMC0yOS45IDIwLjUtNTUgNDguMi02MmMxLjgtMzEgMTcuMS01OC4yIDQwLjEtNzYuMUMyNzEuNyAxMDQuNyAyNTYuOSA5NiAyNDAgOTZIMjE3LjhsMjguMy0yMC42YzEwLjctNy44IDEzLjEtMjIuOCA1LjMtMzMuNXMtMjIuOC0xMy4xLTMzLjUtNS4zTDE5Mi41IDU1LjEgMjAwLjYgMzJ6TTM2My41IDE4NS41TDM5My4xIDIyNEgzNDRjLTEzLjMgMC0yNC0xMC43LTI0LTI0YzAtMTMuMSAxMC44LTI0IDI0LjItMjRjNy42IDAgMTQuNyAzLjUgMTkuMyA5LjV6TTI3MiAyMDBjMCA4LjQgMS40IDE2LjUgNC4xIDI0SDI3MmMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2ODBINDE2VjI1NmgzMnY5Nkg2NDBWMjcyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00LjFjMi43LTcuNSA0LjEtMTUuNiA0LjEtMjRjMC0zOS45LTMyLjUtNzItNzIuMi03MmMtMjIuNCAwLTQzLjYgMTAuNC01Ny4zIDI4LjJMNDMyIDE5NS44bC0zMC41LTM5LjZjLTEzLjctMTcuOC0zNS0yOC4yLTU3LjMtMjguMmMtMzkuNyAwLTcyLjIgMzIuMS03Mi4yIDcyek0yMjQgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4SDQxNlYzODRIMjI0djgwem0yMjQgNDhINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjM4NEg0NDhWNTEyem05Ni0zMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRINDcwLjlsMjkuNi0zOC41YzQuNi01LjkgMTEuNy05LjUgMTkuMy05LjVjMTMuNCAwIDI0LjIgMTAuOSAyNC4yIDI0elwiXVxufTtcbnZhciBmYUhvdGVsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdGVsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTc2XSwgXCJmNTk0XCIsIFwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwSDQ4MGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMlY0NDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzA0VjQ2NGMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHY0OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMlY2NEMxNC4zIDY0IDAgNDkuNyAwIDMyem05NiA4MHYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMTEyYy04LjggMC0xNiA3LjItMTYgMTZ6TTI0MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTEyYzAtOC44LTcuMi0xNi0xNi0xNkgyNDB6bTExMiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjExMmMwLTguOC03LjItMTYtMTYtMTZIMzY4Yy04LjggMC0xNiA3LjItMTYgMTZ6TTExMiAxOTJjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMTEyem0xMTIgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIwOGMwLTguOC03LjItMTYtMTYtMTZIMzY4ek0zMjggMzg0YzEzLjMgMCAyNC4zLTEwLjkgMjEtMjMuOGMtMTAuNi00MS41LTQ4LjItNzIuMi05My03Mi4ycy04Mi41IDMwLjctOTMgNzIuMmMtMy4zIDEyLjggNy44IDIzLjggMjEgMjMuOEgzMjh6XCJdXG59O1xudmFyIGZhRWFydGhBc2lhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VhcnRoLWFzaWEnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc3NTksIFwiZ2xvYmUtYXNpYVwiXSwgXCJmNTdlXCIsIFwiTTUxLjcgMjk1LjFsMzEuNyA2LjNjNy45IDEuNiAxNi0uOSAyMS43LTYuNmwxNS40LTE1LjRjMTEuNi0xMS42IDMxLjEtOC40IDM4LjQgNi4ybDkuMyAxOC41YzQuOCA5LjYgMTQuNiAxNS43IDI1LjQgMTUuN2MxNS4yIDAgMjYuMS0xNC42IDIxLjctMjkuMmwtNi0xOS45Yy00LjYtMTUuNCA2LjktMzAuOSAyMy0zMC45aDIuM2MxMy40IDAgMjUuOS02LjcgMzMuMy0xNy44bDEwLjctMTYuMWM1LjYtOC41IDUuMy0xOS42LS44LTI3LjdsLTE2LjEtMjEuNWMtMTAuMy0xMy43LTMuMy0zMy41IDEzLjQtMzcuN2wxNy00LjNjNy41LTEuOSAxMy42LTcuMiAxNi41LTE0LjRsMTYuNC00MC45QzMwMy40IDUyLjEgMjgwLjIgNDggMjU2IDQ4QzE0MS4xIDQ4IDQ4IDE0MS4xIDQ4IDI1NmMwIDEzLjQgMS4zIDI2LjUgMy43IDM5LjF6bTQwNy43IDQuNmMtMy0uMy02LS4xLTkgLjhsLTE1LjggNC40Yy02LjcgMS45LTEzLjgtLjktMTcuNS02LjdsLTItMy4xYy02LTkuNC0xNi40LTE1LjEtMjcuNi0xNS4xcy0yMS42IDUuNy0yNy42IDE1LjFsLTYuMSA5LjVjLTEuNCAyLjItMy40IDQuMS01LjcgNS4zTDMxMiAzMzAuMWMtMTguMSAxMC4xLTI1LjUgMzIuNC0xNyA1MS4zbDUuNSAxMi40YzguNiAxOS4yIDMwLjcgMjguNSA1MC41IDIxLjFsMi42LTFjMTAtMy43IDIxLjMtMi4yIDI5LjkgNC4xbDEuNSAxLjFjMzcuMi0yOS41IDY0LjEtNzEuNCA3NC40LTExOS41ek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE0NC41IDkyLjFjLTIuMSA4LjYgMy4xIDE3LjMgMTEuNiAxOS40bDMyIDhjOC42IDIuMSAxNy4zLTMuMSAxOS40LTExLjZzLTMuMS0xNy4zLTExLjYtMTkuNGwtMzItOGMtOC42LTIuMS0xNy4zIDMuMS0xOS40IDExLjZ6bTkyLTIwYy0yLjEgOC42IDMuMSAxNy4zIDExLjYgMTkuNHMxNy4zLTMuMSAxOS40LTExLjZsOC0zMmMyLjEtOC42LTMuMS0xNy4zLTExLjYtMTkuNHMtMTcuMyAzLjEtMTkuNCAxMS42bC04IDMyek0zNDMuMiAxMTMuN2MtNy45LTQtMTcuNS0uNy0yMS41IDcuMmwtMTYgMzJjLTQgNy45LS43IDE3LjUgNy4yIDIxLjVzMTcuNSAuNyAyMS41LTcuMmwxNi0zMmM0LTcuOSAuNy0xNy41LTcuMi0yMS41elwiXVxufTtcbnZhciBmYUdsb2JlQXNpYSA9IGZhRWFydGhBc2lhO1xudmFyIGZhSWRDYXJkQ2xpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpZC1jYXJkLWNsaXAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImlkLWNhcmQtYWx0XCJdLCBcImY0N2ZcIiwgXCJNMjU2IDBoNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJWOTZjMCAxNy43LTE0LjMgMzItMzIgMzJIMjU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgNjRIMTkydjQ4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjY0SDUxMmMzNS4zIDAgNjQgMjguNyA2NCA2NFY0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NHpNMTc2IDQzNy4zYzAgNS45IDQuOCAxMC43IDEwLjcgMTAuN0gzODkuM2M1LjkgMCAxMC43LTQuOCAxMC43LTEwLjdjMC0yOS41LTIzLjktNTMuMy01My4zLTUzLjNIMjI5LjNjLTI5LjUgMC01My4zIDIzLjktNTMuMyA1My4zek0yODggMzUyYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4elwiXVxufTtcbnZhciBmYUlkQ2FyZEFsdCA9IGZhSWRDYXJkQ2xpcDtcbnZhciBmYU1hZ25pZnlpbmdHbGFzc1BsdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFnbmlmeWluZy1nbGFzcy1wbHVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzZWFyY2gtcGx1c1wiXSwgXCJmMDBlXCIsIFwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTE4NCAyOTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNFYyMzJoNjRjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRIMjMyVjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHY2NEgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoNjR2NjR6XCJdXG59O1xudmFyIGZhU2VhcmNoUGx1cyA9IGZhTWFnbmlmeWluZ0dsYXNzUGx1cztcbnZhciBmYVRodW1ic1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RodW1icy11cCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODA3NywgNjE1NzVdLCBcImYxNjRcIiwgXCJNMzEzLjQgMzIuOWMyNiA1LjIgNDIuOSAzMC41IDM3LjcgNTYuNWwtMi4zIDExLjRjLTUuMyAyNi43LTE1LjEgNTIuMS0yOC44IDc1LjJINDY0YzI2LjUgMCA0OCAyMS41IDQ4IDQ4YzAgMTguNS0xMC41IDM0LjYtMjUuOSA0Mi42QzQ5NyAyNzUuNCA1MDQgMjg4LjkgNTA0IDMwNGMwIDIzLjQtMTYuOCA0Mi45LTM4LjkgNDcuMWM0LjQgNy4zIDYuOSAxNS44IDYuOSAyNC45YzAgMjEuMy0xMy45IDM5LjQtMzMuMSA0NS42Yy43IDMuMyAxLjEgNi44IDEuMSAxMC40YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDI5NC41Yy0xOSAwLTM3LjUtNS42LTUzLjMtMTYuMWwtMzguNS0yNS43QzE3NiA0MjAuNCAxNjAgMzkwLjQgMTYwIDM1OC4zVjMyMCAyNzIgMjQ3LjFjMC0yOS4yIDEzLjMtNTYuNyAzNi03NWw3LjQtNS45YzI2LjUtMjEuMiA0NC42LTUxIDUxLjItODQuMmwyLjMtMTEuNGM1LjItMjYgMzAuNS00Mi45IDU2LjUtMzcuN3pNMzIgMTkySDk2YzE3LjcgMCAzMiAxNC4zIDMyIDMyVjQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbnZhciBmYVVzZXJDbG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWNsb2NrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGZkXCIsIFwiTTIyNCAwYTEyOCAxMjggMCAxIDEgMCAyNTZBMTI4IDEyOCAwIDEgMSAyMjQgMHpNMTc4LjMgMzA0aDkxLjRjMjAuNiAwIDQwLjQgMy41IDU4LjggOS45QzMyMyAzMzEgMzIwIDM0OS4xIDMyMCAzNjhjMCA1OS41IDI5LjUgMTEyLjEgNzQuOCAxNDRIMjkuN0MxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjNDMCAzODMuOCA3OS44IDMwNCAxNzguMyAzMDR6TTM1MiAzNjhhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTQ0LTgwYy04LjggMC0xNiA3LjItMTYgMTZ2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDQ4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDUxMlYzMDRjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbnZhciBmYUhhbmREb3RzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtZG90cycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYWxsZXJnaWVzXCJdLCBcImY0NjFcIiwgXCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYzMzZjMCAxLjUgMCAzLjEgLjEgNC42TDY3LjYgMjgzYy0xNi0xNS4yLTQxLjMtMTQuNi01Ni42IDEuNHMtMTQuNiA0MS4zIDEuNCA1Ni42TDEyNC44IDQ0OGM0My4xIDQxLjEgMTAwLjQgNjQgMTYwIDY0SDMwNGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJWMjQwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyVjI0MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNlYzMnpNMjQwIDMzNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem04MCAxNmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4LTE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bS0xNiA4MGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTI0MCA0MzJhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptLTQ4LTQ4YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIl1cbn07XG52YXIgZmFBbGxlcmdpZXMgPSBmYUhhbmREb3RzO1xudmFyIGZhRmlsZUludm9pY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1pbnZvaWNlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTcwXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0VjQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTYwSDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMEg2NHpNMjU2IDBWMTI4SDM4NEwyNTYgMHpNODAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTE2IDk2SDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkg5NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDMydjY0SDI4OFYyNTZIOTZ6TTI0MCA0MTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZIMjQwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbnZhciBmYVdpbmRvd01pbmltaXplID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpbmRvdy1taW5pbWl6ZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODQ2OV0sIFwiZjJkMVwiLCBcIk0zMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINDgwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMySDMyelwiXVxufTtcbnZhciBmYU11Z1NhdWNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtdWctc2F1Y2VyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJjb2ZmZWVcIl0sIFwiZjBmNFwiLCBcIk05NiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg0NDhoNjRjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjhINDgwYzAgNTMtNDMgOTYtOTYgOTZIMTkyYy01MyAwLTk2LTQzLTk2LTk2VjY0ek00ODAgMjI0aDMyYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0SDQ4MFYyMjR6TTMyIDQxNkg1NDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xudmFyIGZhQ29mZmVlID0gZmFNdWdTYXVjZXI7XG52YXIgZmFCcnVzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicnVzaCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU1ZFwiLCBcIk0xNjIuNCA2Yy0xLjUtMy42LTUtNi04LjktNmgtMTljLTMuOSAwLTcuNSAyLjQtOC45IDZMMTA0LjkgNTcuN2MtMy4yIDgtMTQuNiA4LTE3LjggMEw2Ni40IDZjLTEuNS0zLjYtNS02LTguOS02SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OFYyMjR2MjIuNFYyNTZIOS42IDM3NC40IDM4NHYtOS42VjIyNCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEgyMzAuNWMtMy45IDAtNy41IDIuNC04LjkgNkwyMDAuOSA1Ny43Yy0zLjIgOC0xNC42IDgtMTcuOCAwTDE2Mi40IDZ6TTAgMjg4djMyYzAgMzUuMyAyOC43IDY0IDY0IDY0aDY0djY0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRWMzg0aDY0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjI4OEgwek0xOTIgNDMyYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIl1cbn07XG52YXIgZmFNYXNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hc2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY2ZmFcIiwgXCJNMjg4IDY0QzY0IDY0IDAgMTYwIDAgMjcyUzgwIDQ0OCAxNzYgNDQ4aDguNGMyNC4yIDAgNDYuNC0xMy43IDU3LjItMzUuNGwyMy4yLTQ2LjNjNC40LTguOCAxMy4zLTE0LjMgMjMuMi0xNC4zczE4LjggNS41IDIzLjIgMTQuM2wyMy4yIDQ2LjNjMTAuOCAyMS43IDMzIDM1LjQgNTcuMiAzNS40SDQwMGM5NiAwIDE3Ni02NCAxNzYtMTc2cy02NC0yMDgtMjg4LTIwOHpNOTYgMjU2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDk2IDI1NnptMzIwLTY0YTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4elwiXVxufTtcbnZhciBmYU1hZ25pZnlpbmdHbGFzc01pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hZ25pZnlpbmctZ2xhc3MtbWludXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInNlYXJjaC1taW51c1wiXSwgXCJmMDEwXCIsIFwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTEzNiAxODRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRIMjgwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0SDEzNnpcIl1cbn07XG52YXIgZmFTZWFyY2hNaW51cyA9IGZhTWFnbmlmeWluZ0dsYXNzTWludXM7XG52YXIgZmFSdWxlclZlcnRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1bGVyLXZlcnRpY2FsJyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmNTQ4XCIsIFwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwSDIwOGMyNi41IDAgNDggMjEuNSA0OCA0OFY5NkgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NjRIMTc2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDgwdjY0SDE3NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmg4MHY2NEgxNzZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoODB2NDhjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjQ4elwiXVxufTtcbnZhciBmYVVzZXJMYXJnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWxhcmdlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJ1c2VyLWFsdFwiXSwgXCJmNDA2XCIsIFwiTTI1NiAyODhBMTQ0IDE0NCAwIDEgMCAyNTYgMGExNDQgMTQ0IDAgMSAwIDAgMjg4em0tOTQuNyAzMkM3Mi4yIDMyMCAwIDM5Mi4yIDAgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43SDQ4MS4zYzE3IDAgMzAuNy0xMy44IDMwLjctMzAuN0M1MTIgMzkyLjIgNDM5LjggMzIwIDM1MC43IDMyMEgxNjEuM3pcIl1cbn07XG52YXIgZmFVc2VyQWx0ID0gZmFVc2VyTGFyZ2U7XG52YXIgZmFUcmFpblRyYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhaW4tdHJhbScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODY1MF0sIFwiZTViNFwiLCBcIk04Ni44IDQ4Yy0xMi4yIDAtMjMuNiA1LjUtMzEuMiAxNUw0Mi43IDc5QzM0LjUgODkuMyAxOS40IDkxIDkgODIuN1MtMyA1OS40IDUuMyA0OUwxOCAzM0MzNC43IDEyLjIgNjAgMCA4Ni44IDBIMzYxLjJjMjYuNyAwIDUyIDEyLjIgNjguNyAzM2wxMi44IDE2YzguMyAxMC40IDYuNiAyNS41LTMuOCAzMy43cy0yNS41IDYuNi0zMy43LTMuN0wzOTIuNSA2M2MtNy42LTkuNS0xOS4xLTE1LTMxLjItMTVIMjQ4Vjk2aDQwYzUzIDAgOTYgNDMgOTYgOTZWMzUyYzAgMzAuNi0xNC4zIDU3LjgtMzYuNiA3NS40bDY1LjUgNjUuNWM3LjEgNy4xIDIuMSAxOS4xLTcuOSAxOS4xSDM2NS4zYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNEwyODggNDQ4SDE2MGwtNTQuNiA1NC42Yy02IDYtMTQuMSA5LjQtMjIuNiA5LjRINDNjLTEwIDAtMTUtMTIuMS03LjktMTkuMWw2NS41LTY1LjVDNzguMyA0MDkuOCA2NCAzODIuNiA2NCAzNTJWMTkyYzAtNTMgNDMtOTYgOTYtOTZoNDBWNDhIODYuOHpNMTYwIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMkgxNjB6bTMyIDE5MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xudmFyIGZhVXNlck51cnNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItbnVyc2UnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY4MmZcIiwgXCJNOTYgMTI4VjcwLjJjMC0xMy4zIDguMy0yNS4zIDIwLjgtMzBsOTYtMzZjNy4yLTIuNyAxNS4yLTIuNyAyMi41IDBsOTYgMzZjMTIuNSA0LjcgMjAuOCAxNi42IDIwLjggMzBWMTI4aC0uM2MuMiAyLjYgLjMgNS4zIC4zIDh2NDBjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhzLTEyOC01Ny4zLTEyOC0xMjhWMTM2YzAtMi43IC4xLTUuNCAuMy04SDk2em00OCA0OGMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwVjE2MEgxNDR2MTZ6TTExMS45IDMyNy43YzEwLjUtMy40IDIxLjggLjQgMjkuNCA4LjVsNzEgNzUuNWM2LjMgNi43IDE3IDYuNyAyMy4zIDBsNzEtNzUuNWM3LjYtOC4xIDE4LjktMTEuOSAyOS40LTguNUM0MDEgMzQ4LjYgNDQ4IDQwOS40IDQ0OCA0ODEuM2MwIDE3LTEzLjggMzAuNy0zMC43IDMwLjdIMzAuN0MxMy44IDUxMiAwIDQ5OC4yIDAgNDgxLjNjMC03MS45IDQ3LTEzMi43IDExMS45LTE1My42ek0yMDggNDhWNjRIMTkyYy00LjQgMC04IDMuNi04IDhWODhjMCA0LjQgMy42IDggOCA4aDE2djE2YzAgNC40IDMuNiA4IDggOGgxNmM0LjQgMCA4LTMuNiA4LThWOTZoMTZjNC40IDAgOC0zLjYgOC04VjcyYzAtNC40LTMuNi04LTgtOEgyNDBWNDhjMC00LjQtMy42LTgtOC04SDIxNmMtNC40IDAtOCAzLjYtOCA4elwiXVxufTtcbnZhciBmYVN5cmluZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3lyaW5nZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODEzN10sIFwiZjQ4ZVwiLCBcIk00NDEgN2wzMiAzMiAzMiAzMmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0xNS0xNUw0MTcuOSAxMjhsNTUgNTVjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNzItNzJMMjk1IDczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNTUgNTVMNDIyLjEgNTYgNDA3IDQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDB6TTIxMC4zIDE1NS43bDYxLjEtNjEuMWMuMyAuMyAuNiAuNyAxIDFsMTYgMTYgNTYgNTYgNTYgNTYgMTYgMTZjLjMgLjMgLjYgLjYgMSAxbC0xOTEgMTkxYy0xMC41IDEwLjUtMjQuNyAxNi40LTM5LjYgMTYuNEg5Ny45TDQxIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw1Ny01N1YzMjUuM2MwLTE0LjkgNS45LTI5LjEgMTYuNC0zOS42bDQzLjMtNDMuMyA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3IDQxLjQtNDEuNCA1NyA1N2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU3LTU3elwiXVxufTtcbnZhciBmYUNsb3VkU3VuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLXN1bicsXG4gIGljb246IFs2NDAsIDUxMiwgWzk5MjVdLCBcImY2YzRcIiwgXCJNMjk0LjIgMS4yYzUuMSAyLjEgOC43IDYuNyA5LjYgMTIuMWwxNC4xIDg0LjcgODQuNyAxNC4xYzUuNCAuOSAxMCA0LjUgMTIuMSA5LjZzMS41IDEwLjktMS42IDE1LjRsLTM4LjUgNTVjLTIuMi0uMS00LjQtLjItNi43LS4yYy0yMy4zIDAtNDUuMSA2LjItNjQgMTcuMWwwLTEuMWMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NmM4LjEgMCAxNS45LTEgMjMuNC0yLjljLTM2LjYgMTguMS02My4zIDUzLjEtNjkuOCA5NC45bC0yNC40IDE3Yy00LjUgMy4yLTEwLjMgMy44LTE1LjQgMS42cy04LjctNi43LTkuNi0xMi4xTDk4LjEgMzE3LjkgMTMuNCAzMDMuOGMtNS40LS45LTEwLTQuNS0xMi4xLTkuNnMtMS41LTEwLjkgMS42LTE1LjRMNTIuNSAyMDggMi45IDEzNy4yYy0zLjItNC41LTMuOC0xMC4zLTEuNi0xNS40czYuNy04LjcgMTIuMS05LjZMOTguMSA5OC4xbDE0LjEtODQuN2MuOS01LjQgNC41LTEwIDkuNi0xMi4xczEwLjktMS41IDE1LjQgMS42TDIwOCA1Mi41IDI3OC44IDIuOWM0LjUtMy4yIDEwLjMtMy44IDE1LjQtMS42ek0xNDQgMjA4YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjM5LjkgNDMxLjljMCA0NC4yLTM1LjggODAtODAgODBIMjg4Yy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3IDgwLTk0LjZsMC0xLjNjMC01MyA0My05NiA5Ni05NmMzNC45IDAgNjUuNCAxOC42IDgyLjIgNDYuNGMxMy05LjEgMjguOC0xNC40IDQ1LjgtMTQuNGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuOS0uNiAxMS43LTEuOSAxNy4yYzM3LjQgNi43IDY1LjggMzkuNCA2NS44IDc4Ljd6XCJdXG59O1xudmFyIGZhU3RvcHdhdGNoMjAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RvcHdhdGNoLTIwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJlMDZmXCIsIFwiTTE3NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyaDE2Vjk4LjRDOTIuMyAxMTMuOCAxNiAyMDAgMTYgMzA0YzAgMTE0LjkgOTMuMSAyMDggMjA4IDIwOHMyMDgtOTMuMSAyMDgtMjA4YzAtNDEuOC0xMi4zLTgwLjctMzMuNS0xMTMuMmwyNC4xLTI0LjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzU1LjcgMTQzYy0yOC4xLTIzLTYyLjItMzguOC05OS43LTQ0LjZWNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTc2ek0yODggMjA0YzI4LjcgMCA1MiAyMy4zIDUyIDUydjk2YzAgMjguNy0yMy4zIDUyLTUyIDUycy01Mi0yMy4zLTUyLTUyVjI1NmMwLTI4LjcgMjMuMy01MiA1Mi01MnptLTEyIDUydjk2YzAgNi42IDUuNCAxMiAxMiAxMnMxMi01LjQgMTItMTJWMjU2YzAtNi42LTUuNC0xMi0xMi0xMnMtMTIgNS40LTEyIDEyek0xNTkuNSAyNDRjLTUuNCAwLTEwLjIgMy41LTExLjkgOC42bC0uNiAxLjdjLTMuNSAxMC41LTE0LjggMTYuMS0yNS4zIDEyLjZzLTE2LjEtMTQuOC0xMi42LTI1LjNsLjYtMS43YzcuMi0yMS41IDI3LjItMzUuOSA0OS44LTM1LjljMjkgMCA1Mi41IDIzLjUgNTIuNSA1Mi41djIuMmMwIDEzLjQtNC45IDI2LjQtMTMuOCAzNi40bC0zOSA0My45Yy02LjIgNy0xMCAxNS43LTEwLjkgMjQuOUgxOTJjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwSDEyOGMtMTEgMC0yMC05LTIwLTIwVjM2OC4zYzAtMjAuNiA3LjUtNDAuNCAyMS4yLTU1LjhsMzktNDMuOWMyLjQtMi43IDMuNy02LjIgMy43LTkuOHYtMi4yYzAtNi45LTUuNi0xMi41LTEyLjUtMTIuNXpcIl1cbn07XG52YXIgZmFTcXVhcmVGdWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1mdWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4OTk3LCAxMjg5OTgsIDEyODk5OSwgMTI5MDAwLCAxMjkwMDEsIDEyOTAwMiwgMTI5MDAzLCAxMTAzNSwgMTEwMzZdLCBcImY0NWNcIiwgXCJNMCAwSDUxMlY1MTJIMFYwelwiXVxufTtcbnZhciBmYU1hZ25ldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYWduZXQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjk1MjJdLCBcImYwNzZcIiwgXCJNMCAxNjB2OTZDMCAzNzkuNyAxMDAuMyA0ODAgMjI0IDQ4MHMyMjQtMTAwLjMgMjI0LTIyNFYxNjBIMzIwdjk2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2VjE2MEgwem0wLTMySDEyOFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djY0em0zMjAgMEg0NDhWNjRjMC0xNy43LTE0LjMtMzItMzItMzJIMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NHpcIl1cbn07XG52YXIgZmFKYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnamFyJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlNTE2XCIsIFwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBIMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMySDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRIMjU2YzM1LjMgMCA2NCAyOC43IDY0IDY0VjQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWMTYwem05NiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2OTZjMCAxNy43IDE0LjMgMzIgMzIgMzJIMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMkg5NnpcIl1cbn07XG52YXIgZmFOb3RlU3RpY2t5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ25vdGUtc3RpY2t5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbNjIwMjYsIFwic3RpY2t5LW5vdGVcIl0sIFwiZjI0OVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NEgyODhWMzY4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4SDQ0OFY5NmMwLTM1LjMtMjguNy02NC02NC02NEg2NHpNNDQ4IDM1Mkg0MDIuNyAzMzZjLTguOCAwLTE2IDcuMi0xNiAxNnY2Ni43VjQ4MGwzMi0zMiA2NC02NCAzMi0zMnpcIl1cbn07XG52YXIgZmFTdGlja3lOb3RlID0gZmFOb3RlU3RpY2t5O1xudmFyIGZhQnVnU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVnLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNDkwXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDc3LjQgMzQ4LjljMS43LTkuNCAyLjYtMTkgMi42LTI4LjloNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJINDc5LjdjLTEuMS0xNC4xLTUtMjcuNS0xMS4xLTM5LjVjLjctLjYgMS40LTEuMiAyLjEtMS45bDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtLjcgLjctMS4zIDEuNC0xLjkgMi4xQzQwOS4yIDE2NC4xIDM5My4xIDE2MCAzNzYgMTYwSDI2NGMtOC4zIDAtMTYuMyAxLTI0IDIuOEwzOC44IDUuMXpNMzIwIDBjLTUzIDAtOTYgNDMtOTYgOTZ2My42YzAgMTUuNyAxMi43IDI4LjQgMjguNCAyOC40SDM4Ny42YzE1LjcgMCAyOC40LTEyLjcgMjguNC0yOC40Vjk2YzAtNTMtNDMtOTYtOTYtOTZ6TTE2MC4zIDI1Nkg5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmg2NGMwIDI0LjYgNS41IDQ3LjggMTUuNCA2OC42Yy0yLjIgMS4zLTQuMiAyLjktNiA0LjhsLTY0IDY0Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDYzLjEtNjMuMWMyNC41IDIxLjggNTUuOCAzNi4yIDkwLjMgMzkuNlYzMzUuNUwxNjYuNyAyMjcuM2MtMy40IDktNS42IDE4LjctNi40IDI4Ljd6TTMzNiA0NzkuMmMzNi42LTMuNiA2OS43LTE5LjYgOTQuOC00My44TDMzNiAzNjAuN1Y0NzkuMnpcIl1cbn07XG52YXIgZmFBcnJvd1VwRnJvbVdhdGVyUHVtcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cC1mcm9tLXdhdGVyLXB1bXAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0YjZcIiwgXCJNMTEyIDBDODUuNSAwIDY0IDIxLjUgNjQgNDhWMjU2SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHY5NmMwIDggMiAxNS42IDUuNCAyMi4yYzMuOC0xLjcgNy44LTMuMSAxMi00LjFjMTMuMS0zLjEgMjYuNy05LjggMzcuMy0xOC42YzIyLjItMTguNyA1NC4zLTIwLjEgNzguMS0zLjRjMTggMTIuNCA0MC4xIDIwLjMgNTkuMiAyMC4zYzIxLjEgMCA0Mi04LjUgNTkuMi0yMC4zYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjMgNzguMSAzLjRjMTAuNiA4LjggMjQuMiAxNS42IDM3LjMgMTguNmM0LjIgMSA4LjIgMi40IDEyIDQuMUM1NzQgNDE1LjYgNTc2IDQwOCA1NzYgNDAwVjMwNGMwLTI2LjUtMjEuNS00OC00OC00OEg0ODBsMC0xNDYuNyAyNS40IDI1LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtODAtODBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0MTYgMTA5LjMgNDE2IDI1NkgyODhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTEyek0zMDYuNSA0MjEuOWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xbDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA1MDEuNyAxNTkgNTEyIDE5MiA1MTJjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdsMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjF6XCJdXG59O1xudmFyIGZhQm9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib25lJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI5NDYwXSwgXCJmNWQ3XCIsIFwiTTE1My43IDE0NC44YzYuOSAxNi4zIDIwLjYgMzEuMiAzOC4zIDMxLjJIMzg0YzE3LjcgMCAzMS40LTE0LjkgMzguMy0zMS4yQzQzNC40IDExNi4xIDQ2Mi45IDk2IDQ5NiA5NmM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDMwLjQtMTcgNTYuOS00MiA3MC40Yy0zLjYgMS45LTYgNS41LTYgOS42czIuNCA3LjcgNiA5LjZjMjUgMTMuNSA0MiA0MCA0MiA3MC40YzAgNDQuMi0zNS44IDgwLTgwIDgwYy0zMy4xIDAtNjEuNi0yMC4xLTczLjctNDguOEM0MTUuNCAzNTAuOSA0MDEuNyAzMzYgMzg0IDMzNkgxOTJjLTE3LjcgMC0zMS40IDE0LjktMzguMyAzMS4yQzE0MS42IDM5NS45IDExMy4xIDQxNiA4MCA0MTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtMzAuNCAxNy01Ni45IDQyLTcwLjRjMy42LTEuOSA2LTUuNSA2LTkuNnMtMi40LTcuNy02LTkuNkMxNyAyMzIuOSAwIDIwNi40IDAgMTc2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzMzLjEgMCA2MS42IDIwLjEgNzMuNyA0OC44elwiXVxufTtcbnZhciBmYVVzZXJJbmp1cmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItaW5qdXJlZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjcyOFwiLCBcIk0yNDAgODBIMzQyLjdjLTcuOS0xOS41LTIwLjQtMzYuNS0zNi4yLTQ5LjlMMjQwIDgwem0zNy43LTY4LjJDMjYxLjMgNC4yIDI0My4yIDAgMjI0IDBjLTUzLjcgMC05OS43IDMzLjEtMTE4LjcgODBoODEuNGw5MS02OC4yek0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtNS40LS4zLTEwLjgtMS0xNkg5N2MtLjcgNS4yLTEgMTAuNi0xIDE2YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4ek0xMjQgMzEyLjRjLTkuNyAzLjEtMTkuMSA3LTI4IDExLjdWNTEySDI0My43TDE4MS41IDQwOC4yIDEyNCAzMTIuNHptMzMtNy4yTDIwNC4zIDM4NEgyNzJjNDQuMiAwIDgwIDM1LjggODAgODBjMCAxOC02IDM0LjYtMTYgNDhoODIuM2MxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN0M0NDggMzgzLjggMzY4LjIgMzA0IDI2OS43IDMwNEgxNzguM2MtNy4yIDAtMTQuMyAuNC0yMS4zIDEuM3pNMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEySDY0VjM0NS40QzI0LjkgMzc4LjEgMCA0MjcuMyAwIDQ4Mi4zek0zMjAgNDY0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDIyMy41bDU3LjEgOTUuMkMzMDMgNTA3LjIgMzIwIDQ4Ny42IDMyMCA0NjR6XCJdXG59O1xudmFyIGZhRmFjZVNhZFRlYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1zYWQtdGVhcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU0NiwgXCJzYWQtdGVhclwiXSwgXCJmNWI0XCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDBBMjU2IDI1NiAwIDEgMCAwIDI1NnptMjQwIDgwYzAtOC44IDcuMi0xNiAxNi0xNmM0NSAwIDg1LjYgMjAuNSAxMTUuNyA1My4xYzYgNi41IDUuNiAxNi42LS45IDIyLjZzLTE2LjYgNS42LTIyLjYtLjljLTI1LTI3LjEtNTcuNC00Mi45LTkyLjMtNDIuOWMtOC44IDAtMTYtNy4yLTE2LTE2em0tODAgODBjLTI2LjUgMC00OC0yMS00OC00N2MwLTIwIDI4LjYtNjAuNCA0MS42LTc3LjdjMy4yLTQuNCA5LjYtNC40IDEyLjggMEMxNzkuNiAzMDguNiAyMDggMzQ5IDIwOCAzNjljMCAyNi0yMS41IDQ3LTQ4IDQ3ek0zNjcuNiAyMDhhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptLTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xudmFyIGZhU2FkVGVhciA9IGZhRmFjZVNhZFRlYXI7XG52YXIgZmFQbGFuZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3MlwiLCBcIk00ODIuMyAxOTJjMzQuMiAwIDkzLjcgMjkgOTMuNyA2NGMwIDM2LTU5LjUgNjQtOTMuNyA2NGwtMTE2LjYgMEwyNjUuMiA0OTUuOWMtNS43IDEwLTE2LjMgMTYuMS0yNy44IDE2LjFsLTU2LjIgMGMtMTAuNiAwLTE4LjMtMTAuMi0xNS40LTIwLjRsNDktMTcxLjZMMTEyIDMyMCA2OC44IDM3Ny42Yy0zIDQtNy44IDYuNC0xMi44IDYuNGwtNDIgMGMtNy44IDAtMTQtNi4zLTE0LTE0YzAtMS4zIC4yLTIuNiAuNS0zLjlMMzIgMjU2IC41IDE0NS45Yy0uNC0xLjMtLjUtMi42LS41LTMuOWMwLTcuOCA2LjMtMTQgMTQtMTRsNDIgMGM1IDAgOS44IDIuNCAxMi44IDYuNEwxMTIgMTkybDEwMi45IDAtNDktMTcxLjZDMTYyLjkgMTAuMiAxNzAuNiAwIDE4MS4yIDBsNTYuMiAwYzExLjUgMCAyMi4xIDYuMiAyNy44IDE2LjFMMzY1LjcgMTkybDExNi42IDB6XCJdXG59O1xudmFyIGZhVGVudEFycm93c0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVudC1hcnJvd3MtZG93bicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU4MVwiLCBcIk0yMDkuOCAxMTEuOWMtOC45LTkuOS0yNC0xMC43LTMzLjktMS44bC0zOS45IDM2TDEzNiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNFM4OCAxMC43IDg4IDI0bDAgMTIyLjEtMzkuOS0zNmMtOS45LTguOS0yNS04LjEtMzMuOSAxLjhzLTguMSAyNSAxLjggMzMuOWw4MCA3MmM5LjEgOC4yIDIzIDguMiAzMi4xIDBsODAtNzJjOS45LTguOSAxMC43LTI0IDEuOC0zMy45em0zNTIgMGMtOC45LTkuOS0yNC0xMC43LTMzLjktMS44bC0zOS45IDM2VjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0VjE0Ni4xbC0zOS45LTM2Yy05LjktOC45LTI1LTguMS0zMy45IDEuOHMtOC4xIDI1IDEuOCAzMy45bDgwIDcyYzkuMSA4LjIgMjMgOC4yIDMyLjEgMGw4MC03MmM5LjktOC45IDEwLjctMjQgMS44LTMzLjl6TTMwNy40IDE2Ni41Yy0xMS41LTguNy0yNy4zLTguNy0zOC44IDBsLTE2OCAxMjhjLTYuNiA1LTExIDEyLjUtMTIuMyAyMC43bC0yNCAxNjBjLTEuNCA5LjIgMS4zIDE4LjYgNy40IDI1LjZTODYuNyA1MTIgOTYgNTEySDI4OFYzNTJsOTYgMTYwaDk2YzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIl1cbn07XG52YXIgZmFFeGNsYW1hdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleGNsYW1hdGlvbicsXG4gIGljb246IFs2NCwgNTEyLCBbMTAwNjksIDEwMDcxLCA2MTczOF0sIFwiMjFcIiwgXCJNNjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRWMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWNjR6TTMyIDQ4MGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6XCJdXG59O1xudmFyIGZhQXJyb3dzU3BpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3Mtc3BpbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRiYlwiLCBcIk0yNTYgOTZjMzguNCAwIDczLjcgMTMuNSAxMDEuMyAzNi4xbC0zMi42IDMyLjZjLTQuNiA0LjYtNS45IDExLjUtMy41IDE3LjRzOC4zIDkuOSAxNC44IDkuOUg0NDhjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtNi41LTMuOS0xMi4zLTkuOS0xNC44cy0xMi45LTEuMS0xNy40IDMuNWwtMzQgMzRDMzYzLjQgNTIuNiAzMTIuMSAzMiAyNTYgMzJjLTEwLjkgMC0yMS41IC44LTMyIDIuM1Y5OS4yYzEwLjMtMi4xIDIxLTMuMiAzMi0zLjJ6TTEzMi4xIDE1NC43bDMyLjYgMzIuNmM0LjYgNC42IDExLjUgNS45IDE3LjQgMy41czkuOS04LjMgOS45LTE0LjhWNjRjMC04LjgtNy4yLTE2LTE2LTE2SDY0Yy02LjUgMC0xMi4zIDMuOS0xNC44IDkuOXMtMS4xIDEyLjkgMy41IDE3LjRsMzQgMzRDNTIuNiAxNDguNiAzMiAxOTkuOSAzMiAyNTZjMCAxMC45IC44IDIxLjUgMi4zIDMySDk5LjJjLTIuMS0xMC4zLTMuMi0yMS0zLjItMzJjMC0zOC40IDEzLjUtNzMuNyAzNi4xLTEwMS4zek00NzcuNyAyMjRINDEyLjhjMi4xIDEwLjMgMy4yIDIxIDMuMiAzMmMwIDM4LjQtMTMuNSA3My43LTM2LjEgMTAxLjNsLTMyLjYtMzIuNmMtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOFY0NDhjMCA4LjggNy4yIDE2IDE2IDE2SDQ0OGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtMzQtMzRDNDU5LjQgMzYzLjQgNDgwIDMxMi4xIDQ4MCAyNTZjMC0xMC45LS44LTIxLjUtMi4zLTMyek0yNTYgNDE2Yy0zOC40IDAtNzMuNy0xMy41LTEwMS4zLTM2LjFsMzIuNi0zMi42YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRzLTguMy05LjktMTQuOC05LjlINjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDExMmMwIDYuNSAzLjkgMTIuMyA5LjkgMTQuOHMxMi45IDEuMSAxNy40LTMuNWwzNC0zNEMxNDguNiA0NTkuNCAxOTkuOSA0ODAgMjU2IDQ4MGMxMC45IDAgMjEuNS0uOCAzMi0yLjNWNDEyLjhjLTEwLjMgMi4xLTIxIDMuMi0zMiAzLjJ6XCJdXG59O1xudmFyIGZhUHJpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHJpbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg0MjQsIDEyODQzOCwgOTExM10sIFwiZjAyZlwiLCBcIk0xMjggMEM5Mi43IDAgNjQgMjguNyA2NCA2NHY5Nmg2NFY2NEgzNTQuN0wzODQgOTMuM1YxNjBoNjRWOTMuM2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0w0MDAgMTguN0MzODggNi43IDM3MS43IDAgMzU0LjcgMEgxMjh6TTM4NCAzNTJ2MzIgNjRIMTI4VjM4NCAzNjggMzUySDM4NHptNjQgMzJoMzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMkg2NHY2NGMwIDM1LjMgMjguNyA2NCA2NCA2NEgzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMzg0ek00MzIgMjQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIl1cbn07XG52YXIgZmFUdXJraXNoTGlyYVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHVya2lzaC1saXJhLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcInRyeVwiLCBcInR1cmtpc2gtbGlyYVwiXSwgXCJlMmJiXCIsIFwiTTk2IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMyVjk5LjNMMjQ3LjIgNjUuMmMxNy00LjkgMzQuNyA1IDM5LjYgMjJzLTUgMzQuNy0yMiAzOS42TDEyOCAxNjUuOXYyOS40bDExOS4yLTM0LjFjMTctNC45IDM0LjcgNSAzOS42IDIycy01IDM0LjctMjIgMzkuNkwxMjggMjYxLjlWNDE2aDYzLjhjNjguMiAwIDEyNC40LTUzLjUgMTI3LjgtMTIxLjZsLjQtOGMuOS0xNy43IDE1LjktMzEuMiAzMy42LTMwLjRzMzEuMiAxNS45IDMwLjQgMzMuNmwtLjQgOEMzNzguNSAzOTkuOCAyOTQuMSA0ODAgMTkxLjggNDgwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyODAuMWwtMjMuMiA2LjZjLTE3IDQuOS0zNC43LTUtMzkuNi0yMnM1LTM0LjcgMjItMzkuNkw2NCAyMTMuNlYxODQuMWwtMjMuMiA2LjZjLTE3IDQuOS0zNC43LTUtMzkuNi0yMnM1LTM0LjcgMjItMzkuNkw2NCAxMTcuNlY2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFUcnkgPSBmYVR1cmtpc2hMaXJhU2lnbjtcbnZhciBmYVR1cmtpc2hMaXJhID0gZmFUdXJraXNoTGlyYVNpZ247XG52YXIgZmFEb2xsYXJTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvbGxhci1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTI4MTc4LCA2MTc4MSwgXCJkb2xsYXJcIiwgXCJ1c2RcIl0sIFwiMjRcIiwgXCJNMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJWNjcuN2MxLjYgLjIgMy4xIC40IDQuNyAuN2MuNCAuMSAuNyAuMSAxLjEgLjJsNDggOC44YzE3LjQgMy4yIDI4LjkgMTkuOSAyNS43IDM3LjJzLTE5LjkgMjguOS0zNy4yIDI1LjdsLTQ3LjUtOC43Yy0zMS4zLTQuNi01OC45LTEuNS03OC4zIDYuMnMtMjcuMiAxOC4zLTI5IDI4LjFjLTIgMTAuNy0uNSAxNi43IDEuMiAyMC40YzEuOCAzLjkgNS41IDguMyAxMi44IDEzLjJjMTYuMyAxMC43IDQxLjMgMTcuNyA3My43IDI2LjNsMi45IC44YzI4LjYgNy42IDYzLjYgMTYuOCA4OS42IDMzLjhjMTQuMiA5LjMgMjcuNiAyMS45IDM1LjkgMzkuNWM4LjUgMTcuOSAxMC4zIDM3LjkgNi40IDU5LjJjLTYuOSAzOC0zMy4xIDYzLjQtNjUuNiA3Ni43Yy0xMy43IDUuNi0yOC42IDkuMi00NC40IDExVjQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMlY0NDUuMWMtLjQtLjEtLjktLjEtMS4zLS4ybC0uMiAwIDAgMGMtMjQuNC0zLjgtNjQuNS0xNC4zLTkxLjUtMjYuM2MtMTYuMS03LjItMjMuNC0yNi4xLTE2LjItNDIuMnMyNi4xLTIzLjQgNDIuMi0xNi4yYzIwLjkgOS4zIDU1LjMgMTguNSA3NS4yIDIxLjZjMzEuOSA0LjcgNTguMiAyIDc2LTUuM2MxNi45LTYuOSAyNC42LTE2LjkgMjYuOC0yOC45YzEuOS0xMC42IC40LTE2LjctMS4zLTIwLjRjLTEuOS00LTUuNi04LjQtMTMtMTMuM2MtMTYuNC0xMC43LTQxLjUtMTcuNy03NC0yNi4zbC0yLjgtLjcgMCAwQzExOS40IDI3OS4zIDg0LjQgMjcwIDU4LjQgMjUzYy0xNC4yLTkuMy0yNy41LTIyLTM1LjgtMzkuNmMtOC40LTE3LjktMTAuMS0zNy45LTYuMS01OS4yQzIzLjcgMTE2IDUyLjMgOTEuMiA4NC44IDc4LjNjMTMuMy01LjMgMjcuOS04LjkgNDMuMi0xMVYzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG52YXIgZmFEb2xsYXIgPSBmYURvbGxhclNpZ247XG52YXIgZmFVc2QgPSBmYURvbGxhclNpZ247XG52YXIgZmFYID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3gnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjBdLCBcIjU4XCIsIFwiTTM3Ni42IDg0LjVjMTEuMy0xMy42IDkuNS0zMy44LTQuMS00NS4xcy0zMy44LTkuNS00NS4xIDQuMUwxOTIgMjA2IDU2LjYgNDMuNUM0NS4zIDI5LjkgMjUuMSAyOC4xIDExLjUgMzkuNFMtMy45IDcwLjkgNy40IDg0LjVMMTUwLjMgMjU2IDcuNCA0MjcuNWMtMTEuMyAxMy42LTkuNSAzMy44IDQuMSA0NS4xczMzLjggOS41IDQ1LjEtNC4xTDE5MiAzMDYgMzI3LjQgNDY4LjVjMTEuMyAxMy42IDMxLjUgMTUuNCA0NS4xIDQuMXMxNS40LTMxLjUgNC4xLTQ1LjFMMjMzLjcgMjU2IDM3Ni42IDg0LjV6XCJdXG59O1xudmFyIGZhTWFnbmlmeWluZ0dsYXNzRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hZ25pZnlpbmctZ2xhc3MtZG9sbGFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzZWFyY2gtZG9sbGFyXCJdLCBcImY2ODhcIiwgXCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMjI4IDEwNGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjB2MTRjLTcuNiAxLjctMTUuMiA0LjQtMjIuMiA4LjVjLTEzLjkgOC4zLTI1LjkgMjIuOC0yNS44IDQzLjljLjEgMjAuMyAxMiAzMy4xIDI0LjcgNDAuN2MxMSA2LjYgMjQuNyAxMC44IDM1LjYgMTRsMS43IC41YzEyLjYgMy44IDIxLjggNi44IDI4IDEwLjdjNS4xIDMuMiA1LjggNS40IDUuOSA4LjJjLjEgNS0xLjggOC01LjkgMTAuNWMtNSAzLjEtMTIuOSA1LTIxLjQgNC43Yy0xMS4xLS40LTIxLjUtMy45LTM1LjEtOC41Yy0yLjMtLjgtNC43LTEuNi03LjItMi40Yy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjZzMi4yIDIxLjggMTIuNiAyNS4zYzEuOSAuNiA0IDEuMyA2LjEgMi4xbDAgMCAwIDBjOC4zIDIuOSAxNy45IDYuMiAyOC4yIDguNFYzMTJjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBWMjk4LjJjOC0xLjcgMTYtNC41IDIzLjItOWMxNC4zLTguOSAyNS4xLTI0LjEgMjQuOC00NWMtLjMtMjAuMy0xMS43LTMzLjQtMjQuNi00MS42Yy0xMS41LTcuMi0yNS45LTExLjYtMzcuMS0xNWwtLjctLjJjLTEyLjgtMy45LTIxLjktNi43LTI4LjMtMTAuNWMtNS4yLTMuMS01LjMtNC45LTUuMy02LjdjMC0zLjcgMS40LTYuNSA2LjItOS4zYzUuNC0zLjIgMTMuNi01LjEgMjEuNS01YzkuNiAuMSAyMC4yIDIuMiAzMS4yIDUuMmMxMC43IDIuOCAyMS42LTMuNSAyNC41LTE0LjJzLTMuNS0yMS42LTE0LjItMjQuNWMtNi41LTEuNy0xMy43LTMuNC0yMS4xLTQuN1YxMDR6XCJdXG59O1xudmFyIGZhU2VhcmNoRG9sbGFyID0gZmFNYWduaWZ5aW5nR2xhc3NEb2xsYXI7XG52YXIgZmFVc2Vyc0dlYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcnMtZ2VhcicsXG4gIGljb246IFs2NDAsIDUxMiwgW1widXNlcnMtY29nXCJdLCBcImY1MDlcIiwgXCJNMTQ0IDE2MEE4MCA4MCAwIDEgMCAxNDQgMGE4MCA4MCAwIDEgMCAwIDE2MHptMzY4IDBBODAgODAgMCAxIDAgNTEyIDBhODAgODAgMCAxIDAgMCAxNjB6TTAgMjk4LjdDMCAzMTAuNCA5LjYgMzIwIDIxLjMgMzIwSDIzNC43Yy4yIDAgLjQgMCAuNyAwYy0yNi42LTIzLjUtNDMuMy01Ny44LTQzLjMtOTZjMC03LjYgLjctMTUgMS45LTIyLjNjLTEzLjYtNi4zLTI4LjctOS43LTQ0LjYtOS43SDEwNi43QzQ3LjggMTkyIDAgMjM5LjggMCAyOTguN3pNMzIwIDMyMGMyNCAwIDQ1LjktOC44IDYyLjctMjMuM2MyLjUtMy43IDUuMi03LjMgOC0xMC43YzIuNy0zLjMgNS43LTYuMSA5LTguM0M0MTAgMjYyLjMgNDE2IDI0My45IDQxNiAyMjRjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZ6bTY1LjQgNjAuMmMtMTAuMy01LjktMTguMS0xNi4yLTIwLjgtMjguMkgyNjEuM0MxODcuNyAzNTIgMTI4IDQxMS43IDEyOCA0ODUuM2MwIDE0LjcgMTEuOSAyNi43IDI2LjcgMjYuN0g0NTUuMmMtMi4xLTUuMi0zLjItMTAuOS0zLjItMTYuNHYtM2MtMS4zLS43LTIuNy0xLjUtNC0yLjNsLTIuNiAxLjVjLTE2LjggOS43LTQwLjUgOC01NC43LTkuN2MtNC41LTUuNi04LjYtMTEuNS0xMi40LTE3LjZsLS4xLS4yLS4xLS4yLTIuNC00LjEtLjEtLjItLjEtLjJjLTMuNC02LjItNi40LTEyLjYtOS0xOS4zYy04LjItMjEuMiAyLjItNDIuNiAxOS01Mi4zbDIuNy0xLjVjMC0uOCAwLTEuNSAwLTIuM3MwLTEuNSAwLTIuM2wtMi43LTEuNXpNNTMzLjMgMTkySDQ5MC43Yy0xNS45IDAtMzEgMy41LTQ0LjYgOS43YzEuMyA3LjIgMS45IDE0LjcgMS45IDIyLjNjMCAxNy40LTMuNSAzMy45LTkuNyA0OWMyLjUgLjkgNC45IDIgNy4xIDMuM2wyLjYgMS41YzEuMy0uOCAyLjYtMS42IDQtMi4zdi0zYzAtMTkuNCAxMy4zLTM5LjEgMzUuOC00Mi42YzcuOS0xLjIgMTYtMS45IDI0LjItMS45czE2LjMgLjYgMjQuMiAxLjljMjIuNSAzLjUgMzUuOCAyMy4yIDM1LjggNDIuNnYzYzEuMyAuNyAyLjcgMS41IDQgMi4zbDIuNi0xLjVjMTYuOC05LjcgNDAuNS04IDU0LjcgOS43YzIuMyAyLjggNC41IDUuOCA2LjYgOC43Yy0yLjEtNTcuMS00OS0xMDIuNy0xMDYuNi0xMDIuN3ptOTEuMyAxNjMuOWM2LjMtMy42IDkuNS0xMS4xIDYuOC0xOGMtMi4xLTUuNS00LjYtMTAuOC03LjQtMTUuOWwtMi4zLTRjLTMuMS01LjEtNi41LTkuOS0xMC4yLTE0LjVjLTQuNi01LjctMTIuNy02LjctMTktM0w1NzQuNCAzMTFjLTguOS03LjYtMTkuMS0xMy42LTMwLjQtMTcuNnYtMjFjMC03LjMtNC45LTEzLjgtMTIuMS0xNC45Yy02LjUtMS0xMy4xLTEuNS0xOS45LTEuNXMtMTMuNCAuNS0xOS45IDEuNWMtNy4yIDEuMS0xMi4xIDcuNi0xMi4xIDE0Ljl2MjFjLTExLjIgNC0yMS41IDEwLTMwLjQgMTcuNmwtMTguMi0xMC41Yy02LjMtMy42LTE0LjQtMi42LTE5IDNjLTMuNyA0LjYtNy4xIDkuNS0xMC4yIDE0LjZsLTIuMyAzLjljLTIuOCA1LjEtNS4zIDEwLjQtNy40IDE1LjljLTIuNiA2LjggLjUgMTQuMyA2LjggMTcuOWwxOC4yIDEwLjVjLTEgNS43LTEuNiAxMS42LTEuNiAxNy42cy42IDExLjkgMS42IDE3LjVsLTE4LjIgMTAuNWMtNi4zIDMuNi05LjUgMTEuMS02LjggMTcuOWMyLjEgNS41IDQuNiAxMC43IDcuNCAxNS44bDIuNCA0LjFjMyA1LjEgNi40IDkuOSAxMC4xIDE0LjVjNC42IDUuNyAxMi43IDYuNyAxOSAzTDQ0OS42IDQ1N2M4LjkgNy42IDE5LjIgMTMuNiAzMC40IDE3LjZ2MjFjMCA3LjMgNC45IDEzLjggMTIuMSAxNC45YzYuNSAxIDEzLjEgMS41IDE5LjkgMS41czEzLjQtLjUgMTkuOS0xLjVjNy4yLTEuMSAxMi4xLTcuNiAxMi4xLTE0Ljl2LTIxYzExLjItNCAyMS41LTEwIDMwLjQtMTcuNmwxOC4yIDEwLjVjNi4zIDMuNiAxNC40IDIuNiAxOS0zYzMuNy00LjYgNy4xLTkuNCAxMC4xLTE0LjVsMi40LTQuMmMyLjgtNS4xIDUuMy0xMC4zIDcuNC0xNS44YzIuNi02LjgtLjUtMTQuMy02LjgtMTcuOWwtMTguMi0xMC41YzEtNS43IDEuNi0xMS42IDEuNi0xNy41cy0uNi0xMS45LTEuNi0xNy42bDE4LjItMTAuNXpNNDcyIDM4NGE0MCA0MCAwIDEgMSA4MCAwIDQwIDQwIDAgMSAxIC04MCAwelwiXVxufTtcbnZhciBmYVVzZXJzQ29nID0gZmFVc2Vyc0dlYXI7XG52YXIgZmFQZXJzb25NaWxpdGFyeVBvaW50aW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1taWxpdGFyeS1wb2ludGluZycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU0YVwiLCBcIk0yNDYuOSAxNC4xQzIzNCAxNS4yIDIyNCAyNiAyMjQgMzljMCAxMy44IDExLjIgMjUgMjUgMjVINDAwYzguOCAwIDE2LTcuMiAxNi0xNlYxNy40QzQxNiA4IDQwOCAuNyAzOTguNyAxLjRMMjQ2LjkgMTQuMXpNMjQwIDExMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDI0MS42Yy0xIDUuMi0xLjYgMTAuNS0xLjYgMTZ6TTcyIDIyNGMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MEgyMjR2ODkuNEwzODYuOCAyMzAuNWMtMTMuMy00LjMtMjcuMy02LjUtNDEuNi02LjVIMjQwIDcyem0zNDUuNyAyMC45TDI0Ni42IDQxNkg0MTZWMzY5LjdsNTMuNiA5MC42YzExLjIgMTkgMzUuOCAyNS4zIDU0LjggMTQuMXMyNS4zLTM1LjggMTQuMS01NC44TDQ2Mi4zIDI5MC44Yy0xMS4yLTE4LjktMjYuNi0zNC41LTQ0LjYtNDUuOXpNMjI0IDQ0OHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWNDQ4SDIyNHpcIl1cbn07XG52YXIgZmFCdWlsZGluZ0NvbHVtbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctY29sdW1ucycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYmFua1wiLCBcImluc3RpdHV0aW9uXCIsIFwibXVzZXVtXCIsIFwidW5pdmVyc2l0eVwiXSwgXCJmMTljXCIsIFwiTTI0My40IDIuNmwtMjI0IDk2Yy0xNCA2LTIxLjggMjEtMTguNyAzNS44UzE2LjggMTYwIDMyIDE2MHY4YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQ1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtOGMxNS4yIDAgMjguMy0xMC43IDMxLjMtMjUuNnMtNC44LTI5LjktMTguNy0zNS44bC0yMjQtOTZjLTgtMy40LTE3LjItMy40LTI1LjIgMHpNMTI4IDIyNEg2NFY0MjAuM2MtLjYgLjMtMS4yIC43LTEuOCAxLjFsLTQ4IDMyYy0xMS43IDcuOC0xNyAyMi40LTEyLjkgMzUuOVMxNy45IDUxMiAzMiA1MTJINDgwYzE0LjEgMCAyNi41LTkuMiAzMC42LTIyLjdzLTEuMS0yOC4xLTEyLjktMzUuOWwtNDgtMzJjLS42LS40LTEuMi0uNy0xLjgtMS4xVjIyNEgzODRWNDE2SDM0NFYyMjRIMjgwVjQxNkgyMzJWMjI0SDE2OFY0MTZIMTI4VjIyNHpNMjU2IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG52YXIgZmFCYW5rID0gZmFCdWlsZGluZ0NvbHVtbnM7XG52YXIgZmFJbnN0aXR1dGlvbiA9IGZhQnVpbGRpbmdDb2x1bW5zO1xudmFyIGZhTXVzZXVtID0gZmFCdWlsZGluZ0NvbHVtbnM7XG52YXIgZmFVbml2ZXJzaXR5ID0gZmFCdWlsZGluZ0NvbHVtbnM7XG52YXIgZmFVbWJyZWxsYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bWJyZWxsYScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjBlOVwiLCBcIk0yODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMlY0OS43QzQ1MS44IDYzLjQgNTU3LjcgMTYxIDU3My45IDI4NS45YzIgMTUuNi0xNy4zIDI0LjQtMjcuOCAxMi43QzUzMi4xIDI4MyA1MDQuOCAyNzIgNDgwIDI3MmMtMzguNyAwLTcxIDI3LjUtNzguNCA2NC4xYy0xLjcgOC43LTguNyAxNS45LTE3LjYgMTUuOXMtMTUuOC03LjItMTcuNi0xNS45QzM1OSAyOTkuNSAzMjYuNyAyNzIgMjg4IDI3MnMtNzEgMjcuNS03OC40IDY0LjFjLTEuNyA4LjctOC43IDE1LjktMTcuNiAxNS45cy0xNS44LTcuMi0xNy42LTE1LjlDMTY3IDI5OS41IDEzNC43IDI3MiA5NiAyNzJjLTI0LjggMC01Mi4xIDExLTY2LjEgMjYuN0MxOS40IDMxMC40IC4xIDMwMS41IDIuMSAyODUuOUMxOC4zIDE2MSAxMjQuMiA2My40IDI1NiA0OS43VjMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDMwNGMxMi4zIDAgMjMuNSA0LjYgMzIgMTIuMlY0MzAuNmMwIDQ1LTM2LjUgODEuNC04MS40IDgxLjRjLTMwLjggMC01OS0xNy40LTcyLjgtNDVsLTIuMy00LjdjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlzMzUtMS41IDQyLjkgMTQuM2wyLjMgNC43YzMgNS45IDkgOS42IDE1LjYgOS42YzkuNiAwIDE3LjQtNy44IDE3LjQtMTcuNFYzMTYuMmM4LjUtNy42IDE5LjctMTIuMiAzMi0xMi4yelwiXVxufTtcbnZhciBmYVRyb3dlbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cm93ZWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1ODlcIiwgXCJNMzQzLjkgMjEzLjRMMjQ1LjMgMzEybDY1LjQgNjUuNGM3LjkgNy45IDExLjEgMTkuNCA4LjQgMzAuM3MtMTAuOCAxOS42LTIxLjUgMjIuOWwtMjU2IDgwYy0xMS40IDMuNS0yMy44IC41LTMyLjItNy45Uy0yLjEgNDgxLjggMS41IDQ3MC41bDgwLTI1NmMzLjMtMTAuNyAxMi0xOC45IDIyLjktMjEuNXMyMi40IC41IDMwLjMgOC40TDIwMCAyNjYuN2w5OC42LTk4LjZjLTE0LjMtMTQuNi0xNC4yLTM4IC4zLTUyLjVsOTUuNC05NS40YzI2LjktMjYuOSA3MC41LTI2LjkgOTcuNSAwczI2LjkgNzAuNSAwIDk3LjVsLTk1LjQgOTUuNGMtMTQuNSAxNC41LTM3LjkgMTQuNi01Mi41IC4zelwiXVxufTtcbnZhciBmYUQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZCcsXG4gIGljb246IFszODQsIDUxMiwgWzEwMF0sIFwiNDRcIiwgXCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmg5NmMxMjMuNyAwIDIyNCAxMDAuMyAyMjQgMjI0cy0xMDAuMyAyMjQtMjI0IDIyNEg2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjRWOTZ6bTE2MCAwSDY0VjQxNmg5NmM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MHMtNzEuNi0xNjAtMTYwLTE2MHpcIl1cbn07XG52YXIgZmFTdGFwbGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXBsZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1YWZcIiwgXCJNNjQwIDI5OS4zVjMwNCA0MzJjMCAyNi41LTIxLjUgNDgtNDggNDhINTEyIDQ0OCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMkg0NDhWMzY4SDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMlYyMTkuNEwzMy44IDIxNEMxNC4yIDIxMC41IDAgMTkzLjUgMCAxNzMuN2MwLTguOSAyLjktMTcuNSA4LjItMjQuNmwzNS42LTQ3LjVDNzYuNyA1Ny44IDEyOC4yIDMyIDE4Mi45IDMyYzI3IDAgNTMuNiA2LjMgNzcuOCAxOC40TDU4Ni45IDIxMy41QzYxOS41IDIyOS43IDY0MCAyNjMgNjQwIDI5OS4zek00NDggMzA0VjI4OEwxMjggMjMwLjlWMzA0SDQ0OHpcIl1cbn07XG52YXIgZmFNYXNrc1RoZWF0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFza3MtdGhlYXRlcicsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyNzkxNywgXCJ0aGVhdGVyLW1hc2tzXCJdLCBcImY2MzBcIiwgXCJNNzQuNiAzNzMuMmM0MS43IDM2LjEgMTA4IDgyLjUgMTY2LjEgNzMuN2M2LjEtLjkgMTIuMS0yLjUgMTgtNC41Yy05LjItMTIuMy0xNy4zLTI0LjQtMjQuMi0zNS40Yy0yMS45LTM1LTI4LjgtNzUuMi0yNS45LTExMy42Yy0yMC42IDQuMS0zOS4yIDEzLTU0LjcgMjUuNGMtNi41IDUuMi0xNi4zIDEuMy0xNC44LTdjNi40LTMzLjUgMzMtNjAuOSA2OC4yLTY2LjNjMi42LS40IDUuMy0uNyA3LjktLjhsMTkuNC0xMzEuM2MyLTEzLjggOC0zMi43IDI1LTQ1LjlDMjc4LjIgNTMuMiAzMTAuNSAzNyAzNjMuMiAzMi4yYy0uOC0uNy0xLjYtMS40LTIuNC0yLjFDMzQwLjYgMTQuNSAyODguNC0xMS41IDE3NS43IDUuNlMyMC41IDYzIDUuNyA4My45QzAgOTEuOS0uOCAxMDIgLjYgMTExLjhMMjQuOCAyNzYuMWM1LjUgMzcuMyAyMS41IDcyLjYgNDkuOCA5Ny4yem04Ny43LTIxOS42YzQuNC0zLjEgMTAuOC0yIDExLjggMy4zYy4xIC41IC4yIDEuMSAuMyAxLjZjMy4yIDIxLjgtMTEuNiA0Mi0zMy4xIDQ1LjNzLTQxLjUtMTEuOC00NC43LTMzLjVjLS4xLS41LS4xLTEuMS0uMi0xLjZjLS42LTUuNCA1LjItOC40IDEwLjMtNi43YzkgMyAxOC44IDMuOSAyOC43IDIuNHMxOS4xLTUuMyAyNi44LTEwLjh6TTI2MS42IDM5MGMyOS40IDQ2LjkgNzkuNSAxMTAuOSAxMzcuNiAxMTkuN3MxMjQuNS0zNy41IDE2Ni4xLTczLjdjMjguMy0yNC41IDQ0LjMtNTkuOCA0OS44LTk3LjJsMjQuMi0xNjQuM2MxLjQtOS44IC42LTE5LjktNS4xLTI3LjljLTE0LjgtMjAuOS01Ny4zLTYxLjItMTcwLTc4LjNTMjk5LjQgNzcuMiAyNzkuMiA5Mi44Yy03LjggNi0xMS41IDE1LjQtMTIuOSAyNS4yTDI0Mi4xIDI4Mi4zYy01LjUgMzcuMy0uNCA3NS44IDE5LjYgMTA3Ljd6TTQwNC41IDIzNS4zYy03LjctNS41LTE2LjgtOS4zLTI2LjgtMTAuOHMtMTkuOC0uNi0yOC43IDIuNGMtNS4xIDEuNy0xMC45LTEuMy0xMC4zLTYuN2MuMS0uNSAuMS0xLjEgLjItMS42YzMuMi0yMS44IDIzLjItMzYuOCA0NC43LTMzLjVzMzYuMyAyMy41IDMzLjEgNDUuM2MtLjEgLjUtLjIgMS4xLS4zIDEuNmMtMSA1LjMtNy40IDYuNC0xMS44IDMuM3ptMTM2LjIgMTUuNWMtMSA1LjMtNy40IDYuNC0xMS44IDMuM2MtNy43LTUuNS0xNi44LTkuMy0yNi44LTEwLjhzLTE5LjgtLjYtMjguNyAyLjRjLTUuMSAxLjctMTAuOS0xLjMtMTAuMy02LjdjLjEtLjUgLjEtMS4xIC4yLTEuNmMzLjItMjEuOCAyMy4yLTM2LjggNDQuNy0zMy41czM2LjMgMjMuNSAzMy4xIDQ1LjNjLS4xIC41LS4yIDEuMS0uMyAxLjZ6TTUzMCAzNTAuMmMtMTkuNiA0NC43LTY2LjggNzIuNS0xMTYuOCA2NC45cy04Ny4xLTQ4LjItOTMtOTYuN2MtMS04LjMgOC45LTEyLjEgMTUuMi02LjdjMjMuOSAyMC44IDUzLjYgMzUuMyA4NyA0MC4zczY2LjEgLjEgOTQuOS0xMi44YzcuNi0zLjQgMTYgMy4yIDEyLjYgMTAuOXpcIl1cbn07XG52YXIgZmFUaGVhdGVyTWFza3MgPSBmYU1hc2tzVGhlYXRlcjtcbnZhciBmYUtpcFNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2lwLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxYzRcIiwgXCJNMzQwLjggODguM2MxMy40LTExLjUgMTUtMzEuNyAzLjUtNDUuMXMtMzEuNy0xNS00NS4xLTMuNUwxMjggMTg2LjRWNjRjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgNDYuMyA2NCA2NFYyMjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJINjRWNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJWMzI1LjZMMjk5LjIgNDcyLjNjMTMuNCAxMS41IDMzLjYgOS45IDQ1LjEtMy41czkuOS0zMy42LTMuNS00NS4xTDE4Mi41IDI4OEgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMTgyLjVMMzQwLjggODguM3pcIl1cbn07XG52YXIgZmFIYW5kUG9pbnRMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtcG9pbnQtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBhNVwiLCBcIk0zMiA5NkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhzMTQuMyAzMiAzMiAzMmwyMDggMCAwLTY0TDMyIDk2ek0xOTIgMjg4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDB6bS02NC02NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC00OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptOTYgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDB6bTg4LTk2bC0uNiAwYzUuNCA5LjQgOC42IDIwLjMgOC42IDMyYzAgMTMuMi00IDI1LjQtMTAuOCAzNS42YzI0LjkgOC43IDQyLjggMzIuNSA0Mi44IDYwLjRjMCAxMS43LTMuMSAyMi42LTguNiAzMmw4LjYgMGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MGwwLTYxLjdjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xbC0xMS42LTExLjZDNDI5LjUgNzcuNSAzOTYuOSA2NCAzNjMgNjRsLTI3IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgODhjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MGwwLTU2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCA1NmMwIDM5LjgtMzIuMiA3Mi03MiA3MnpcIl1cbn07XG52YXIgZmFIYW5kc2hha2VTaW1wbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLXNpbXBsZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyOTMwOSwgXCJoYW5kc2hha2UtYWx0XCJdLCBcImY0YzZcIiwgXCJNMzIzLjQgODUuMmwtOTYuOCA3OC40Yy0xNi4xIDEzLTE5LjIgMzYuNC03IDUzLjFjMTIuOSAxNy44IDM4IDIxLjMgNTUuMyA3LjhsOTkuMy03Ny4yYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1NTAuMiAzNTJINTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OEg1MTZoLTQtLjdsLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4yem0yMi44IDEyNC40bC01MS43IDQwLjJDMjYzIDI3NC40IDIxNy4zIDI2OCAxOTMuNyAyMzUuNmMtMjIuMi0zMC41LTE2LjYtNzMuMSAxMi43LTk2LjhsODMuMi02Ny4zYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTcyIDQ4SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OFYzMDRjMCAyNi41IDIxLjUgNDggNDggNDhIMTU2LjJsOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45YzQuNS00LjkgNy44LTEwLjYgOS45LTE2LjVjMTkuNCAxMyA0NS44IDEwLjMgNjIuMS03LjVjMTcuOS0xOS41IDE2LjYtNDkuOS0yLjktNjcuOGwtMTM0LjItMTIzelwiXVxufTtcbnZhciBmYUhhbmRzaGFrZUFsdCA9IGZhSGFuZHNoYWtlU2ltcGxlO1xudmFyIGZhSmV0RmlnaHRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdqZXQtZmlnaHRlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiZmlnaHRlci1qZXRcIl0sIFwiZjBmYlwiLCBcIk0xNjAgMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRIMjk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0SDI4MEwzODQgMTkySDUwMC40YzcuNyAwIDE1LjMgMS40IDIyLjUgNC4xTDYyNSAyMzQuNGM5IDMuNCAxNSAxMiAxNSAyMS42cy02IDE4LjItMTUgMjEuNkw1MjIuOSAzMTUuOWMtNy4yIDIuNy0xNC44IDQuMS0yMi41IDQuMUgzODRMMjgwIDQ2NGgxNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEgxODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRoOFYzMjBIMTYwbC01NC42IDU0LjZjLTYgNi0xNC4xIDkuNC0yMi42IDkuNEg2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJWMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMkg4Mi43YzguNSAwIDE2LjYgMy40IDIyLjYgOS40TDE2MCAxOTJoMzJWNDhoLThjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek04MCAyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZIODB6XCJdXG59O1xudmFyIGZhRmlnaHRlckpldCA9IGZhSmV0RmlnaHRlcjtcbnZhciBmYVNxdWFyZVNoYXJlTm9kZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLXNoYXJlLW5vZGVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJzaGFyZS1hbHQtc3F1YXJlXCJdLCBcImYxZTFcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NlY0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRIMzg0YzM1LjMgMCA2NC0yOC43IDY0LTY0Vjk2YzAtMzUuMy0yOC43LTY0LTY0LTY0SDY0ek0zODQgMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0Yy0xNS40IDAtMjkuNS01LjQtNDAuNi0xNC41TDE5NC4xIDI1Nmw4NS4zIDQ2LjVjMTEtOS4xIDI1LjItMTQuNSA0MC42LTE0LjVjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0yLjUgLjEtNC45IC40LTcuM0wxNzQuNSAzMDBjLTExLjcgMTIuMy0yOC4yIDIwLTQ2LjUgMjBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMTguMyAwIDM0LjggNy43IDQ2LjUgMjBsODEuOS00NC43Yy0uMy0yLjQtLjQtNC45LS40LTcuM2MwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0elwiXVxufTtcbnZhciBmYVNoYXJlQWx0U3F1YXJlID0gZmFTcXVhcmVTaGFyZU5vZGVzO1xudmFyIGZhQmFyY29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXJjb2RlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDJhXCIsIFwiTTI0IDMyQzEwLjcgMzIgMCA0Mi43IDAgNTZWNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0SDQwYzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0em04OCAwYy04LjggMC0xNiA3LjItMTYgMTZWNDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZWNDhjMC04LjgtNy4yLTE2LTE2LTE2em03MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFY0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTg0em05NiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNFY0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjgwek00NDggNTZWNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDE2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDQ3MmMtMTMuMyAwLTI0IDEwLjctMjQgMjR6bS02NC04VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2VjQ4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2elwiXVxufTtcbnZhciBmYVBsdXNNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbHVzLW1pbnVzJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlNDNjXCIsIFwiTTIyNCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMlYxNDRINDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJIMTYwVjMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjIwOEgzMzZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjI0VjMyek0wIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwiXVxufTtcbnZhciBmYVZpZGVvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpZGVvJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJ2aWRlby1jYW1lcmFcIl0sIFwiZjAzZFwiLCBcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NEgzMjBjMzUuMyAwIDY0IDI4LjcgNjQgNjRWMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0SDY0Yy0zNS4zIDAtNjQtMjguNy02NC02NFYxMjh6TTU1OS4xIDk5LjhjMTAuNCA1LjYgMTYuOSAxNi40IDE2LjkgMjguMlYzODRjMCAxMS44LTYuNSAyMi42LTE2LjkgMjguMnMtMjMgNS0zMi45LTEuNmwtOTYtNjRMNDE2IDMzNy4xVjMyMCAxOTIgMTc0LjlsMTQuMi05LjUgOTYtNjRjOS44LTYuNSAyMi40LTcuMiAzMi45LTEuNnpcIl1cbn07XG52YXIgZmFWaWRlb0NhbWVyYSA9IGZhVmlkZW87XG52YXIgZmFHcmFkdWF0aW9uQ2FwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyYWR1YXRpb24tY2FwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI3ODkxLCBcIm1vcnRhci1ib2FyZFwiXSwgXCJmMTlkXCIsIFwiTTMyMCAzMmMtOC4xIDAtMTYuMSAxLjQtMjMuNyA0LjFMMTUuOCAxMzcuNEM2LjMgMTQwLjkgMCAxNDkuOSAwIDE2MHM2LjMgMTkuMSAxNS44IDIyLjZsNTcuOSAyMC45QzU3LjMgMjI5LjMgNDggMjU5LjggNDggMjkxLjl2MjguMWMwIDI4LjQtMTAuOCA1Ny43LTIyLjMgODAuOGMtNi41IDEzLTEzLjkgMjUuOC0yMi41IDM3LjZDMCA0NDIuNy0uOSA0NDguMyAuOSA0NTMuNHM2IDguOSAxMS4yIDEwLjJsNjQgMTZjNC4yIDEuMSA4LjcgLjMgMTIuNC0yczYuMy02LjEgNy4xLTEwLjRjOC42LTQyLjggNC4zLTgxLjItMi4xLTEwOC43QzkwLjMgMzQ0LjMgODYgMzI5LjggODAgMzE2LjVWMjkxLjljMC0zMC4yIDEwLjItNTguNyAyNy45LTgxLjVjMTIuOS0xNS41IDI5LjYtMjggNDkuMi0zNS43bDE1Ny02MS43YzguMi0zLjIgMTcuNSAuOCAyMC43IDlzLS44IDE3LjUtOSAyMC43bC0xNTcgNjEuN2MtMTIuNCA0LjktMjMuMyAxMi40LTMyLjIgMjEuNmwxNTkuNiA1Ny42YzcuNiAyLjcgMTUuNiA0LjEgMjMuNyA0LjFzMTYuMS0xLjQgMjMuNy00LjFMNjI0LjIgMTgyLjZjOS41LTMuNCAxNS44LTEyLjUgMTUuOC0yMi42cy02LjMtMTkuMS0xNS44LTIyLjZMMzQzLjcgMzYuMUMzMzYuMSAzMy40IDMyOC4xIDMyIDMyMCAzMnpNMTI4IDQwOGMwIDM1LjMgODYgNzIgMTkyIDcyczE5Mi0zNi43IDE5Mi03Mkw0OTYuNyAyNjIuNiAzNTQuNSAzMTRjLTExLjEgNC0yMi44IDYtMzQuNSA2cy0yMy41LTItMzQuNS02TDE0My4zIDI2Mi42IDEyOCA0MDh6XCJdXG59O1xudmFyIGZhTW9ydGFyQm9hcmQgPSBmYUdyYWR1YXRpb25DYXA7XG52YXIgZmFIYW5kSG9sZGluZ01lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1ob2xkaW5nLW1lZGljYWwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUwNWNcIiwgXCJNMjI0IDI0VjgwSDE2OGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNTZ2NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTc2aDU2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjEwNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMjBWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMjQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNNTU5LjcgMzkyLjJjMTcuOC0xMy4xIDIxLjYtMzguMSA4LjUtNTUuOXMtMzguMS0yMS42LTU1LjktOC41TDM5Mi42IDQxNkgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoMTYgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJIMjg4IDI3MiAxOTMuN2MtMjkuMSAwLTU3LjMgOS45LTgwIDI4TDY4LjggMzg0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMkgxOTIgMzUyLjVjMjkgMCA1Ny4zLTkuMyA4MC43LTI2LjVsMTI2LjYtOTMuM3ptLTM2Ny04LjJsLjkgMCAwIDBjLS4zIDAtLjYgMC0uOSAwelwiXVxufTtcbnZhciBmYVBlcnNvbkNpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1M2VcIiwgXCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNFY0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJWMjU2LjlMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZoMjkuN2MzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjlWNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyVjM1MkgxNTJ6bTEzNiAxNmExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0MTYgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIl1cbn07XG52YXIgZmFUdXJuVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHVybi11cCcsXG4gIGljb246IFszODQsIDUxMiwgWzEwNTQ4LCBcImxldmVsLXVwLWFsdFwiXSwgXCJmM2JmXCIsIFwiTTM1MCAxNzcuNWMzLjgtOC44IDItMTktNC42LTI2bC0xMzYtMTQ0QzIwNC45IDIuNyAxOTguNiAwIDE5MiAwcy0xMi45IDIuNy0xNy40IDcuNWwtMTM2IDE0NGMtNi42IDctOC40IDE3LjItNC42IDI2czEyLjUgMTQuNSAyMiAxNC41aDg4bDAgMTkyYzAgMTcuNy0xNC4zIDMyLTMyIDMySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw4MCAwYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4bDAtMTkyaDg4YzkuNiAwIDE4LjItNS43IDIyLTE0LjV6XCJdXG59O1xudmFyIGZhTGV2ZWxVcEFsdCA9IGZhVHVyblVwO1xudmFyIGljb25zID0ge1xuICBmYTA6IGZhMCxcbiAgZmExOiBmYTEsXG4gIGZhMjogZmEyLFxuICBmYTM6IGZhMyxcbiAgZmE0OiBmYTQsXG4gIGZhNTogZmE1LFxuICBmYTY6IGZhNixcbiAgZmE3OiBmYTcsXG4gIGZhODogZmE4LFxuICBmYTk6IGZhOSxcbiAgZmFGaWxsRHJpcDogZmFGaWxsRHJpcCxcbiAgZmFBcnJvd3NUb0NpcmNsZTogZmFBcnJvd3NUb0NpcmNsZSxcbiAgZmFDaXJjbGVDaGV2cm9uUmlnaHQ6IGZhQ2lyY2xlQ2hldnJvblJpZ2h0LFxuICBmYUNoZXZyb25DaXJjbGVSaWdodDogZmFDaGV2cm9uQ2lyY2xlUmlnaHQsXG4gIGZhQXQ6IGZhQXQsXG4gIGZhVHJhc2hDYW46IGZhVHJhc2hDYW4sXG4gIGZhVHJhc2hBbHQ6IGZhVHJhc2hBbHQsXG4gIGZhVGV4dEhlaWdodDogZmFUZXh0SGVpZ2h0LFxuICBmYVVzZXJYbWFyazogZmFVc2VyWG1hcmssXG4gIGZhVXNlclRpbWVzOiBmYVVzZXJUaW1lcyxcbiAgZmFTdGV0aG9zY29wZTogZmFTdGV0aG9zY29wZSxcbiAgZmFNZXNzYWdlOiBmYU1lc3NhZ2UsXG4gIGZhQ29tbWVudEFsdDogZmFDb21tZW50QWx0LFxuICBmYUluZm86IGZhSW5mbyxcbiAgZmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlcjogZmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlcixcbiAgZmFDb21wcmVzc0FsdDogZmFDb21wcmVzc0FsdCxcbiAgZmFFeHBsb3Npb246IGZhRXhwbG9zaW9uLFxuICBmYUZpbGVMaW5lczogZmFGaWxlTGluZXMsXG4gIGZhRmlsZUFsdDogZmFGaWxlQWx0LFxuICBmYUZpbGVUZXh0OiBmYUZpbGVUZXh0LFxuICBmYVdhdmVTcXVhcmU6IGZhV2F2ZVNxdWFyZSxcbiAgZmFSaW5nOiBmYVJpbmcsXG4gIGZhQnVpbGRpbmdVbjogZmFCdWlsZGluZ1VuLFxuICBmYURpY2VUaHJlZTogZmFEaWNlVGhyZWUsXG4gIGZhQ2FsZW5kYXJEYXlzOiBmYUNhbGVuZGFyRGF5cyxcbiAgZmFDYWxlbmRhckFsdDogZmFDYWxlbmRhckFsdCxcbiAgZmFBbmNob3JDaXJjbGVDaGVjazogZmFBbmNob3JDaXJjbGVDaGVjayxcbiAgZmFCdWlsZGluZ0NpcmNsZUFycm93UmlnaHQ6IGZhQnVpbGRpbmdDaXJjbGVBcnJvd1JpZ2h0LFxuICBmYVZvbGxleWJhbGw6IGZhVm9sbGV5YmFsbCxcbiAgZmFWb2xsZXliYWxsQmFsbDogZmFWb2xsZXliYWxsQmFsbCxcbiAgZmFBcnJvd3NVcFRvTGluZTogZmFBcnJvd3NVcFRvTGluZSxcbiAgZmFTb3J0RG93bjogZmFTb3J0RG93bixcbiAgZmFTb3J0RGVzYzogZmFTb3J0RGVzYyxcbiAgZmFDaXJjbGVNaW51czogZmFDaXJjbGVNaW51cyxcbiAgZmFNaW51c0NpcmNsZTogZmFNaW51c0NpcmNsZSxcbiAgZmFEb29yT3BlbjogZmFEb29yT3BlbixcbiAgZmFSaWdodEZyb21CcmFja2V0OiBmYVJpZ2h0RnJvbUJyYWNrZXQsXG4gIGZhU2lnbk91dEFsdDogZmFTaWduT3V0QWx0LFxuICBmYUF0b206IGZhQXRvbSxcbiAgZmFTb2FwOiBmYVNvYXAsXG4gIGZhSWNvbnM6IGZhSWNvbnMsXG4gIGZhSGVhcnRNdXNpY0NhbWVyYUJvbHQ6IGZhSGVhcnRNdXNpY0NhbWVyYUJvbHQsXG4gIGZhTWljcm9waG9uZUxpbmVzU2xhc2g6IGZhTWljcm9waG9uZUxpbmVzU2xhc2gsXG4gIGZhTWljcm9waG9uZUFsdFNsYXNoOiBmYU1pY3JvcGhvbmVBbHRTbGFzaCxcbiAgZmFCcmlkZ2VDaXJjbGVDaGVjazogZmFCcmlkZ2VDaXJjbGVDaGVjayxcbiAgZmFQdW1wTWVkaWNhbDogZmFQdW1wTWVkaWNhbCxcbiAgZmFGaW5nZXJwcmludDogZmFGaW5nZXJwcmludCxcbiAgZmFIYW5kUG9pbnRSaWdodDogZmFIYW5kUG9pbnRSaWdodCxcbiAgZmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbjogZmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbixcbiAgZmFTZWFyY2hMb2NhdGlvbjogZmFTZWFyY2hMb2NhdGlvbixcbiAgZmFGb3J3YXJkU3RlcDogZmFGb3J3YXJkU3RlcCxcbiAgZmFTdGVwRm9yd2FyZDogZmFTdGVwRm9yd2FyZCxcbiAgZmFGYWNlU21pbGVCZWFtOiBmYUZhY2VTbWlsZUJlYW0sXG4gIGZhU21pbGVCZWFtOiBmYVNtaWxlQmVhbSxcbiAgZmFGbGFnQ2hlY2tlcmVkOiBmYUZsYWdDaGVja2VyZWQsXG4gIGZhRm9vdGJhbGw6IGZhRm9vdGJhbGwsXG4gIGZhRm9vdGJhbGxCYWxsOiBmYUZvb3RiYWxsQmFsbCxcbiAgZmFTY2hvb2xDaXJjbGVFeGNsYW1hdGlvbjogZmFTY2hvb2xDaXJjbGVFeGNsYW1hdGlvbixcbiAgZmFDcm9wOiBmYUNyb3AsXG4gIGZhQW5nbGVzRG93bjogZmFBbmdsZXNEb3duLFxuICBmYUFuZ2xlRG91YmxlRG93bjogZmFBbmdsZURvdWJsZURvd24sXG4gIGZhVXNlcnNSZWN0YW5nbGU6IGZhVXNlcnNSZWN0YW5nbGUsXG4gIGZhUGVvcGxlUm9vZjogZmFQZW9wbGVSb29mLFxuICBmYVBlb3BsZUxpbmU6IGZhUGVvcGxlTGluZSxcbiAgZmFCZWVyTXVnRW1wdHk6IGZhQmVlck11Z0VtcHR5LFxuICBmYUJlZXI6IGZhQmVlcixcbiAgZmFEaWFncmFtUHJlZGVjZXNzb3I6IGZhRGlhZ3JhbVByZWRlY2Vzc29yLFxuICBmYUFycm93VXBMb25nOiBmYUFycm93VXBMb25nLFxuICBmYUxvbmdBcnJvd1VwOiBmYUxvbmdBcnJvd1VwLFxuICBmYUZpcmVGbGFtZVNpbXBsZTogZmFGaXJlRmxhbWVTaW1wbGUsXG4gIGZhQnVybjogZmFCdXJuLFxuICBmYVBlcnNvbjogZmFQZXJzb24sXG4gIGZhTWFsZTogZmFNYWxlLFxuICBmYUxhcHRvcDogZmFMYXB0b3AsXG4gIGZhRmlsZUNzdjogZmFGaWxlQ3N2LFxuICBmYU1lbm9yYWg6IGZhTWVub3JhaCxcbiAgZmFUcnVja1BsYW5lOiBmYVRydWNrUGxhbmUsXG4gIGZhUmVjb3JkVmlueWw6IGZhUmVjb3JkVmlueWwsXG4gIGZhRmFjZUdyaW5TdGFyczogZmFGYWNlR3JpblN0YXJzLFxuICBmYUdyaW5TdGFyczogZmFHcmluU3RhcnMsXG4gIGZhQm9uZzogZmFCb25nLFxuICBmYVNwYWdoZXR0aU1vbnN0ZXJGbHlpbmc6IGZhU3BhZ2hldHRpTW9uc3RlckZseWluZyxcbiAgZmFQYXN0YWZhcmlhbmlzbTogZmFQYXN0YWZhcmlhbmlzbSxcbiAgZmFBcnJvd0Rvd25VcEFjcm9zc0xpbmU6IGZhQXJyb3dEb3duVXBBY3Jvc3NMaW5lLFxuICBmYVNwb29uOiBmYVNwb29uLFxuICBmYVV0ZW5zaWxTcG9vbjogZmFVdGVuc2lsU3Bvb24sXG4gIGZhSmFyV2hlYXQ6IGZhSmFyV2hlYXQsXG4gIGZhRW52ZWxvcGVzQnVsazogZmFFbnZlbG9wZXNCdWxrLFxuICBmYU1haWxCdWxrOiBmYU1haWxCdWxrLFxuICBmYUZpbGVDaXJjbGVFeGNsYW1hdGlvbjogZmFGaWxlQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhQ2lyY2xlSDogZmFDaXJjbGVILFxuICBmYUhvc3BpdGFsU3ltYm9sOiBmYUhvc3BpdGFsU3ltYm9sLFxuICBmYVBhZ2VyOiBmYVBhZ2VyLFxuICBmYUFkZHJlc3NCb29rOiBmYUFkZHJlc3NCb29rLFxuICBmYUNvbnRhY3RCb29rOiBmYUNvbnRhY3RCb29rLFxuICBmYVN0cmlrZXRocm91Z2g6IGZhU3RyaWtldGhyb3VnaCxcbiAgZmFLOiBmYUssXG4gIGZhTGFuZG1hcmtGbGFnOiBmYUxhbmRtYXJrRmxhZyxcbiAgZmFQZW5jaWw6IGZhUGVuY2lsLFxuICBmYVBlbmNpbEFsdDogZmFQZW5jaWxBbHQsXG4gIGZhQmFja3dhcmQ6IGZhQmFja3dhcmQsXG4gIGZhQ2FyZXRSaWdodDogZmFDYXJldFJpZ2h0LFxuICBmYUNvbW1lbnRzOiBmYUNvbW1lbnRzLFxuICBmYVBhc3RlOiBmYVBhc3RlLFxuICBmYUZpbGVDbGlwYm9hcmQ6IGZhRmlsZUNsaXBib2FyZCxcbiAgZmFDb2RlUHVsbFJlcXVlc3Q6IGZhQ29kZVB1bGxSZXF1ZXN0LFxuICBmYUNsaXBib2FyZExpc3Q6IGZhQ2xpcGJvYXJkTGlzdCxcbiAgZmFUcnVja1JhbXBCb3g6IGZhVHJ1Y2tSYW1wQm94LFxuICBmYVRydWNrTG9hZGluZzogZmFUcnVja0xvYWRpbmcsXG4gIGZhVXNlckNoZWNrOiBmYVVzZXJDaGVjayxcbiAgZmFWaWFsVmlydXM6IGZhVmlhbFZpcnVzLFxuICBmYVNoZWV0UGxhc3RpYzogZmFTaGVldFBsYXN0aWMsXG4gIGZhQmxvZzogZmFCbG9nLFxuICBmYVVzZXJOaW5qYTogZmFVc2VyTmluamEsXG4gIGZhUGVyc29uQXJyb3dVcEZyb21MaW5lOiBmYVBlcnNvbkFycm93VXBGcm9tTGluZSxcbiAgZmFTY3JvbGxUb3JhaDogZmFTY3JvbGxUb3JhaCxcbiAgZmFUb3JhaDogZmFUb3JhaCxcbiAgZmFCcm9vbUJhbGw6IGZhQnJvb21CYWxsLFxuICBmYVF1aWRkaXRjaDogZmFRdWlkZGl0Y2gsXG4gIGZhUXVpZGRpdGNoQnJvb21CYWxsOiBmYVF1aWRkaXRjaEJyb29tQmFsbCxcbiAgZmFUb2dnbGVPZmY6IGZhVG9nZ2xlT2ZmLFxuICBmYUJveEFyY2hpdmU6IGZhQm94QXJjaGl2ZSxcbiAgZmFBcmNoaXZlOiBmYUFyY2hpdmUsXG4gIGZhUGVyc29uRHJvd25pbmc6IGZhUGVyc29uRHJvd25pbmcsXG4gIGZhQXJyb3dEb3duOTE6IGZhQXJyb3dEb3duOTEsXG4gIGZhU29ydE51bWVyaWNEZXNjOiBmYVNvcnROdW1lcmljRGVzYyxcbiAgZmFTb3J0TnVtZXJpY0Rvd25BbHQ6IGZhU29ydE51bWVyaWNEb3duQWx0LFxuICBmYUZhY2VHcmluVG9uZ3VlU3F1aW50OiBmYUZhY2VHcmluVG9uZ3VlU3F1aW50LFxuICBmYUdyaW5Ub25ndWVTcXVpbnQ6IGZhR3JpblRvbmd1ZVNxdWludCxcbiAgZmFTcHJheUNhbjogZmFTcHJheUNhbixcbiAgZmFUcnVja01vbnN0ZXI6IGZhVHJ1Y2tNb25zdGVyLFxuICBmYVc6IGZhVyxcbiAgZmFFYXJ0aEFmcmljYTogZmFFYXJ0aEFmcmljYSxcbiAgZmFHbG9iZUFmcmljYTogZmFHbG9iZUFmcmljYSxcbiAgZmFSYWluYm93OiBmYVJhaW5ib3csXG4gIGZhQ2lyY2xlTm90Y2g6IGZhQ2lyY2xlTm90Y2gsXG4gIGZhVGFibGV0U2NyZWVuQnV0dG9uOiBmYVRhYmxldFNjcmVlbkJ1dHRvbixcbiAgZmFUYWJsZXRBbHQ6IGZhVGFibGV0QWx0LFxuICBmYVBhdzogZmFQYXcsXG4gIGZhQ2xvdWQ6IGZhQ2xvdWQsXG4gIGZhVHJvd2VsQnJpY2tzOiBmYVRyb3dlbEJyaWNrcyxcbiAgZmFGYWNlRmx1c2hlZDogZmFGYWNlRmx1c2hlZCxcbiAgZmFGbHVzaGVkOiBmYUZsdXNoZWQsXG4gIGZhSG9zcGl0YWxVc2VyOiBmYUhvc3BpdGFsVXNlcixcbiAgZmFUZW50QXJyb3dMZWZ0UmlnaHQ6IGZhVGVudEFycm93TGVmdFJpZ2h0LFxuICBmYUdhdmVsOiBmYUdhdmVsLFxuICBmYUxlZ2FsOiBmYUxlZ2FsLFxuICBmYUJpbm9jdWxhcnM6IGZhQmlub2N1bGFycyxcbiAgZmFNaWNyb3Bob25lU2xhc2g6IGZhTWljcm9waG9uZVNsYXNoLFxuICBmYUJveFRpc3N1ZTogZmFCb3hUaXNzdWUsXG4gIGZhTW90b3JjeWNsZTogZmFNb3RvcmN5Y2xlLFxuICBmYUJlbGxDb25jaWVyZ2U6IGZhQmVsbENvbmNpZXJnZSxcbiAgZmFDb25jaWVyZ2VCZWxsOiBmYUNvbmNpZXJnZUJlbGwsXG4gIGZhUGVuUnVsZXI6IGZhUGVuUnVsZXIsXG4gIGZhUGVuY2lsUnVsZXI6IGZhUGVuY2lsUnVsZXIsXG4gIGZhUGVvcGxlQXJyb3dzOiBmYVBlb3BsZUFycm93cyxcbiAgZmFQZW9wbGVBcnJvd3NMZWZ0UmlnaHQ6IGZhUGVvcGxlQXJyb3dzTGVmdFJpZ2h0LFxuICBmYU1hcnNBbmRWZW51c0J1cnN0OiBmYU1hcnNBbmRWZW51c0J1cnN0LFxuICBmYVNxdWFyZUNhcmV0UmlnaHQ6IGZhU3F1YXJlQ2FyZXRSaWdodCxcbiAgZmFDYXJldFNxdWFyZVJpZ2h0OiBmYUNhcmV0U3F1YXJlUmlnaHQsXG4gIGZhU2Npc3NvcnM6IGZhU2Npc3NvcnMsXG4gIGZhQ3V0OiBmYUN1dCxcbiAgZmFTdW5QbGFudFdpbHQ6IGZhU3VuUGxhbnRXaWx0LFxuICBmYVRvaWxldHNQb3J0YWJsZTogZmFUb2lsZXRzUG9ydGFibGUsXG4gIGZhSG9ja2V5UHVjazogZmFIb2NrZXlQdWNrLFxuICBmYVRhYmxlOiBmYVRhYmxlLFxuICBmYU1hZ25pZnlpbmdHbGFzc0Fycm93UmlnaHQ6IGZhTWFnbmlmeWluZ0dsYXNzQXJyb3dSaWdodCxcbiAgZmFUYWNob2dyYXBoRGlnaXRhbDogZmFUYWNob2dyYXBoRGlnaXRhbCxcbiAgZmFEaWdpdGFsVGFjaG9ncmFwaDogZmFEaWdpdGFsVGFjaG9ncmFwaCxcbiAgZmFVc2Vyc1NsYXNoOiBmYVVzZXJzU2xhc2gsXG4gIGZhQ2xvdmVyOiBmYUNsb3ZlcixcbiAgZmFSZXBseTogZmFSZXBseSxcbiAgZmFNYWlsUmVwbHk6IGZhTWFpbFJlcGx5LFxuICBmYVN0YXJBbmRDcmVzY2VudDogZmFTdGFyQW5kQ3Jlc2NlbnQsXG4gIGZhSG91c2VGaXJlOiBmYUhvdXNlRmlyZSxcbiAgZmFTcXVhcmVNaW51czogZmFTcXVhcmVNaW51cyxcbiAgZmFNaW51c1NxdWFyZTogZmFNaW51c1NxdWFyZSxcbiAgZmFIZWxpY29wdGVyOiBmYUhlbGljb3B0ZXIsXG4gIGZhQ29tcGFzczogZmFDb21wYXNzLFxuICBmYVNxdWFyZUNhcmV0RG93bjogZmFTcXVhcmVDYXJldERvd24sXG4gIGZhQ2FyZXRTcXVhcmVEb3duOiBmYUNhcmV0U3F1YXJlRG93bixcbiAgZmFGaWxlQ2lyY2xlUXVlc3Rpb246IGZhRmlsZUNpcmNsZVF1ZXN0aW9uLFxuICBmYUxhcHRvcENvZGU6IGZhTGFwdG9wQ29kZSxcbiAgZmFTd2F0Y2hib29rOiBmYVN3YXRjaGJvb2ssXG4gIGZhUHJlc2NyaXB0aW9uQm90dGxlOiBmYVByZXNjcmlwdGlvbkJvdHRsZSxcbiAgZmFCYXJzOiBmYUJhcnMsXG4gIGZhTmF2aWNvbjogZmFOYXZpY29uLFxuICBmYVBlb3BsZUdyb3VwOiBmYVBlb3BsZUdyb3VwLFxuICBmYUhvdXJnbGFzc0VuZDogZmFIb3VyZ2xhc3NFbmQsXG4gIGZhSG91cmdsYXNzMzogZmFIb3VyZ2xhc3MzLFxuICBmYUhlYXJ0Q3JhY2s6IGZhSGVhcnRDcmFjayxcbiAgZmFIZWFydEJyb2tlbjogZmFIZWFydEJyb2tlbixcbiAgZmFTcXVhcmVVcFJpZ2h0OiBmYVNxdWFyZVVwUmlnaHQsXG4gIGZhRXh0ZXJuYWxMaW5rU3F1YXJlQWx0OiBmYUV4dGVybmFsTGlua1NxdWFyZUFsdCxcbiAgZmFGYWNlS2lzc0JlYW06IGZhRmFjZUtpc3NCZWFtLFxuICBmYUtpc3NCZWFtOiBmYUtpc3NCZWFtLFxuICBmYUZpbG06IGZhRmlsbSxcbiAgZmFSdWxlckhvcml6b250YWw6IGZhUnVsZXJIb3Jpem9udGFsLFxuICBmYVBlb3BsZVJvYmJlcnk6IGZhUGVvcGxlUm9iYmVyeSxcbiAgZmFMaWdodGJ1bGI6IGZhTGlnaHRidWxiLFxuICBmYUNhcmV0TGVmdDogZmFDYXJldExlZnQsXG4gIGZhQ2lyY2xlRXhjbGFtYXRpb246IGZhQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhRXhjbGFtYXRpb25DaXJjbGU6IGZhRXhjbGFtYXRpb25DaXJjbGUsXG4gIGZhU2Nob29sQ2lyY2xlWG1hcms6IGZhU2Nob29sQ2lyY2xlWG1hcmssXG4gIGZhQXJyb3dSaWdodEZyb21CcmFja2V0OiBmYUFycm93UmlnaHRGcm9tQnJhY2tldCxcbiAgZmFTaWduT3V0OiBmYVNpZ25PdXQsXG4gIGZhQ2lyY2xlQ2hldnJvbkRvd246IGZhQ2lyY2xlQ2hldnJvbkRvd24sXG4gIGZhQ2hldnJvbkNpcmNsZURvd246IGZhQ2hldnJvbkNpcmNsZURvd24sXG4gIGZhVW5sb2NrS2V5aG9sZTogZmFVbmxvY2tLZXlob2xlLFxuICBmYVVubG9ja0FsdDogZmFVbmxvY2tBbHQsXG4gIGZhQ2xvdWRTaG93ZXJzSGVhdnk6IGZhQ2xvdWRTaG93ZXJzSGVhdnksXG4gIGZhSGVhZHBob25lc1NpbXBsZTogZmFIZWFkcGhvbmVzU2ltcGxlLFxuICBmYUhlYWRwaG9uZXNBbHQ6IGZhSGVhZHBob25lc0FsdCxcbiAgZmFTaXRlbWFwOiBmYVNpdGVtYXAsXG4gIGZhQ2lyY2xlRG9sbGFyVG9TbG90OiBmYUNpcmNsZURvbGxhclRvU2xvdCxcbiAgZmFEb25hdGU6IGZhRG9uYXRlLFxuICBmYU1lbW9yeTogZmFNZW1vcnksXG4gIGZhUm9hZFNwaWtlczogZmFSb2FkU3Bpa2VzLFxuICBmYUZpcmVCdXJuZXI6IGZhRmlyZUJ1cm5lcixcbiAgZmFGbGFnOiBmYUZsYWcsXG4gIGZhSGFudWtpYWg6IGZhSGFudWtpYWgsXG4gIGZhRmVhdGhlcjogZmFGZWF0aGVyLFxuICBmYVZvbHVtZUxvdzogZmFWb2x1bWVMb3csXG4gIGZhVm9sdW1lRG93bjogZmFWb2x1bWVEb3duLFxuICBmYUNvbW1lbnRTbGFzaDogZmFDb21tZW50U2xhc2gsXG4gIGZhQ2xvdWRTdW5SYWluOiBmYUNsb3VkU3VuUmFpbixcbiAgZmFDb21wcmVzczogZmFDb21wcmVzcyxcbiAgZmFXaGVhdEF3bjogZmFXaGVhdEF3bixcbiAgZmFXaGVhdEFsdDogZmFXaGVhdEFsdCxcbiAgZmFBbmtoOiBmYUFua2gsXG4gIGZhSGFuZHNIb2xkaW5nQ2hpbGQ6IGZhSGFuZHNIb2xkaW5nQ2hpbGQsXG4gIGZhQXN0ZXJpc2s6IGZhQXN0ZXJpc2ssXG4gIGZhU3F1YXJlQ2hlY2s6IGZhU3F1YXJlQ2hlY2ssXG4gIGZhQ2hlY2tTcXVhcmU6IGZhQ2hlY2tTcXVhcmUsXG4gIGZhUGVzZXRhU2lnbjogZmFQZXNldGFTaWduLFxuICBmYUhlYWRpbmc6IGZhSGVhZGluZyxcbiAgZmFIZWFkZXI6IGZhSGVhZGVyLFxuICBmYUdob3N0OiBmYUdob3N0LFxuICBmYUxpc3Q6IGZhTGlzdCxcbiAgZmFMaXN0U3F1YXJlczogZmFMaXN0U3F1YXJlcyxcbiAgZmFTcXVhcmVQaG9uZUZsaXA6IGZhU3F1YXJlUGhvbmVGbGlwLFxuICBmYVBob25lU3F1YXJlQWx0OiBmYVBob25lU3F1YXJlQWx0LFxuICBmYUNhcnRQbHVzOiBmYUNhcnRQbHVzLFxuICBmYUdhbWVwYWQ6IGZhR2FtZXBhZCxcbiAgZmFDaXJjbGVEb3Q6IGZhQ2lyY2xlRG90LFxuICBmYURvdENpcmNsZTogZmFEb3RDaXJjbGUsXG4gIGZhRmFjZURpenp5OiBmYUZhY2VEaXp6eSxcbiAgZmFEaXp6eTogZmFEaXp6eSxcbiAgZmFFZ2c6IGZhRWdnLFxuICBmYUhvdXNlTWVkaWNhbENpcmNsZVhtYXJrOiBmYUhvdXNlTWVkaWNhbENpcmNsZVhtYXJrLFxuICBmYUNhbXBncm91bmQ6IGZhQ2FtcGdyb3VuZCxcbiAgZmFGb2xkZXJQbHVzOiBmYUZvbGRlclBsdXMsXG4gIGZhRnV0Ym9sOiBmYUZ1dGJvbCxcbiAgZmFGdXRib2xCYWxsOiBmYUZ1dGJvbEJhbGwsXG4gIGZhU29jY2VyQmFsbDogZmFTb2NjZXJCYWxsLFxuICBmYVBhaW50YnJ1c2g6IGZhUGFpbnRicnVzaCxcbiAgZmFQYWludEJydXNoOiBmYVBhaW50QnJ1c2gsXG4gIGZhTG9jazogZmFMb2NrLFxuICBmYUdhc1B1bXA6IGZhR2FzUHVtcCxcbiAgZmFIb3RUdWJQZXJzb246IGZhSG90VHViUGVyc29uLFxuICBmYUhvdFR1YjogZmFIb3RUdWIsXG4gIGZhTWFwTG9jYXRpb246IGZhTWFwTG9jYXRpb24sXG4gIGZhTWFwTWFya2VkOiBmYU1hcE1hcmtlZCxcbiAgZmFIb3VzZUZsb29kV2F0ZXI6IGZhSG91c2VGbG9vZFdhdGVyLFxuICBmYVRyZWU6IGZhVHJlZSxcbiAgZmFCcmlkZ2VMb2NrOiBmYUJyaWRnZUxvY2ssXG4gIGZhU2Fja0RvbGxhcjogZmFTYWNrRG9sbGFyLFxuICBmYVBlblRvU3F1YXJlOiBmYVBlblRvU3F1YXJlLFxuICBmYUVkaXQ6IGZhRWRpdCxcbiAgZmFDYXJTaWRlOiBmYUNhclNpZGUsXG4gIGZhU2hhcmVOb2RlczogZmFTaGFyZU5vZGVzLFxuICBmYVNoYXJlQWx0OiBmYVNoYXJlQWx0LFxuICBmYUhlYXJ0Q2lyY2xlTWludXM6IGZhSGVhcnRDaXJjbGVNaW51cyxcbiAgZmFIb3VyZ2xhc3NIYWxmOiBmYUhvdXJnbGFzc0hhbGYsXG4gIGZhSG91cmdsYXNzMjogZmFIb3VyZ2xhc3MyLFxuICBmYU1pY3Jvc2NvcGU6IGZhTWljcm9zY29wZSxcbiAgZmFTaW5rOiBmYVNpbmssXG4gIGZhQmFnU2hvcHBpbmc6IGZhQmFnU2hvcHBpbmcsXG4gIGZhU2hvcHBpbmdCYWc6IGZhU2hvcHBpbmdCYWcsXG4gIGZhQXJyb3dEb3duWkE6IGZhQXJyb3dEb3duWkEsXG4gIGZhU29ydEFscGhhRGVzYzogZmFTb3J0QWxwaGFEZXNjLFxuICBmYVNvcnRBbHBoYURvd25BbHQ6IGZhU29ydEFscGhhRG93bkFsdCxcbiAgZmFNaXR0ZW46IGZhTWl0dGVuLFxuICBmYVBlcnNvblJheXM6IGZhUGVyc29uUmF5cyxcbiAgZmFVc2VyczogZmFVc2VycyxcbiAgZmFFeWVTbGFzaDogZmFFeWVTbGFzaCxcbiAgZmFGbGFza1ZpYWw6IGZhRmxhc2tWaWFsLFxuICBmYUhhbmQ6IGZhSGFuZCxcbiAgZmFIYW5kUGFwZXI6IGZhSGFuZFBhcGVyLFxuICBmYU9tOiBmYU9tLFxuICBmYVdvcm06IGZhV29ybSxcbiAgZmFIb3VzZUNpcmNsZVhtYXJrOiBmYUhvdXNlQ2lyY2xlWG1hcmssXG4gIGZhUGx1ZzogZmFQbHVnLFxuICBmYUNoZXZyb25VcDogZmFDaGV2cm9uVXAsXG4gIGZhSGFuZFNwb2NrOiBmYUhhbmRTcG9jayxcbiAgZmFTdG9wd2F0Y2g6IGZhU3RvcHdhdGNoLFxuICBmYUZhY2VLaXNzOiBmYUZhY2VLaXNzLFxuICBmYUtpc3M6IGZhS2lzcyxcbiAgZmFCcmlkZ2VDaXJjbGVYbWFyazogZmFCcmlkZ2VDaXJjbGVYbWFyayxcbiAgZmFGYWNlR3JpblRvbmd1ZTogZmFGYWNlR3JpblRvbmd1ZSxcbiAgZmFHcmluVG9uZ3VlOiBmYUdyaW5Ub25ndWUsXG4gIGZhQ2hlc3NCaXNob3A6IGZhQ2hlc3NCaXNob3AsXG4gIGZhRmFjZUdyaW5XaW5rOiBmYUZhY2VHcmluV2luayxcbiAgZmFHcmluV2luazogZmFHcmluV2luayxcbiAgZmFFYXJEZWFmOiBmYUVhckRlYWYsXG4gIGZhRGVhZjogZmFEZWFmLFxuICBmYURlYWZuZXNzOiBmYURlYWZuZXNzLFxuICBmYUhhcmRPZkhlYXJpbmc6IGZhSGFyZE9mSGVhcmluZyxcbiAgZmFSb2FkQ2lyY2xlQ2hlY2s6IGZhUm9hZENpcmNsZUNoZWNrLFxuICBmYURpY2VGaXZlOiBmYURpY2VGaXZlLFxuICBmYVNxdWFyZVJzczogZmFTcXVhcmVSc3MsXG4gIGZhUnNzU3F1YXJlOiBmYVJzc1NxdWFyZSxcbiAgZmFMYW5kTWluZU9uOiBmYUxhbmRNaW5lT24sXG4gIGZhSUN1cnNvcjogZmFJQ3Vyc29yLFxuICBmYVN0YW1wOiBmYVN0YW1wLFxuICBmYVN0YWlyczogZmFTdGFpcnMsXG4gIGZhSTogZmFJLFxuICBmYUhyeXZuaWFTaWduOiBmYUhyeXZuaWFTaWduLFxuICBmYUhyeXZuaWE6IGZhSHJ5dm5pYSxcbiAgZmFQaWxsczogZmFQaWxscyxcbiAgZmFGYWNlR3JpbldpZGU6IGZhRmFjZUdyaW5XaWRlLFxuICBmYUdyaW5BbHQ6IGZhR3JpbkFsdCxcbiAgZmFUb290aDogZmFUb290aCxcbiAgZmFWOiBmYVYsXG4gIGZhQmFuZ2xhZGVzaGlUYWthU2lnbjogZmFCYW5nbGFkZXNoaVRha2FTaWduLFxuICBmYUJpY3ljbGU6IGZhQmljeWNsZSxcbiAgZmFTdGFmZlNuYWtlOiBmYVN0YWZmU25ha2UsXG4gIGZhUm9kQXNjbGVwaXVzOiBmYVJvZEFzY2xlcGl1cyxcbiAgZmFSb2RTbmFrZTogZmFSb2RTbmFrZSxcbiAgZmFTdGFmZkFlc2N1bGFwaXVzOiBmYVN0YWZmQWVzY3VsYXBpdXMsXG4gIGZhSGVhZFNpZGVDb3VnaFNsYXNoOiBmYUhlYWRTaWRlQ291Z2hTbGFzaCxcbiAgZmFUcnVja01lZGljYWw6IGZhVHJ1Y2tNZWRpY2FsLFxuICBmYUFtYnVsYW5jZTogZmFBbWJ1bGFuY2UsXG4gIGZhV2hlYXRBd25DaXJjbGVFeGNsYW1hdGlvbjogZmFXaGVhdEF3bkNpcmNsZUV4Y2xhbWF0aW9uLFxuICBmYVNub3dtYW46IGZhU25vd21hbixcbiAgZmFNb3J0YXJQZXN0bGU6IGZhTW9ydGFyUGVzdGxlLFxuICBmYVJvYWRCYXJyaWVyOiBmYVJvYWRCYXJyaWVyLFxuICBmYVNjaG9vbDogZmFTY2hvb2wsXG4gIGZhSWdsb286IGZhSWdsb28sXG4gIGZhSm9pbnQ6IGZhSm9pbnQsXG4gIGZhQW5nbGVSaWdodDogZmFBbmdsZVJpZ2h0LFxuICBmYUhvcnNlOiBmYUhvcnNlLFxuICBmYVE6IGZhUSxcbiAgZmFHOiBmYUcsXG4gIGZhTm90ZXNNZWRpY2FsOiBmYU5vdGVzTWVkaWNhbCxcbiAgZmFUZW1wZXJhdHVyZUhhbGY6IGZhVGVtcGVyYXR1cmVIYWxmLFxuICBmYVRlbXBlcmF0dXJlMjogZmFUZW1wZXJhdHVyZTIsXG4gIGZhVGhlcm1vbWV0ZXIyOiBmYVRoZXJtb21ldGVyMixcbiAgZmFUaGVybW9tZXRlckhhbGY6IGZhVGhlcm1vbWV0ZXJIYWxmLFxuICBmYURvbmdTaWduOiBmYURvbmdTaWduLFxuICBmYUNhcHN1bGVzOiBmYUNhcHN1bGVzLFxuICBmYVBvb1N0b3JtOiBmYVBvb1N0b3JtLFxuICBmYVBvb0JvbHQ6IGZhUG9vQm9sdCxcbiAgZmFGYWNlRnJvd25PcGVuOiBmYUZhY2VGcm93bk9wZW4sXG4gIGZhRnJvd25PcGVuOiBmYUZyb3duT3BlbixcbiAgZmFIYW5kUG9pbnRVcDogZmFIYW5kUG9pbnRVcCxcbiAgZmFNb25leUJpbGw6IGZhTW9uZXlCaWxsLFxuICBmYUJvb2ttYXJrOiBmYUJvb2ttYXJrLFxuICBmYUFsaWduSnVzdGlmeTogZmFBbGlnbkp1c3RpZnksXG4gIGZhVW1icmVsbGFCZWFjaDogZmFVbWJyZWxsYUJlYWNoLFxuICBmYUhlbG1ldFVuOiBmYUhlbG1ldFVuLFxuICBmYUJ1bGxzZXllOiBmYUJ1bGxzZXllLFxuICBmYUJhY29uOiBmYUJhY29uLFxuICBmYUhhbmRQb2ludERvd246IGZhSGFuZFBvaW50RG93bixcbiAgZmFBcnJvd1VwRnJvbUJyYWNrZXQ6IGZhQXJyb3dVcEZyb21CcmFja2V0LFxuICBmYUZvbGRlcjogZmFGb2xkZXIsXG4gIGZhRm9sZGVyQmxhbms6IGZhRm9sZGVyQmxhbmssXG4gIGZhRmlsZVdhdmVmb3JtOiBmYUZpbGVXYXZlZm9ybSxcbiAgZmFGaWxlTWVkaWNhbEFsdDogZmFGaWxlTWVkaWNhbEFsdCxcbiAgZmFSYWRpYXRpb246IGZhUmFkaWF0aW9uLFxuICBmYUNoYXJ0U2ltcGxlOiBmYUNoYXJ0U2ltcGxlLFxuICBmYU1hcnNTdHJva2U6IGZhTWFyc1N0cm9rZSxcbiAgZmFWaWFsOiBmYVZpYWwsXG4gIGZhR2F1Z2U6IGZhR2F1Z2UsXG4gIGZhRGFzaGJvYXJkOiBmYURhc2hib2FyZCxcbiAgZmFHYXVnZU1lZDogZmFHYXVnZU1lZCxcbiAgZmFUYWNob21ldGVyQWx0QXZlcmFnZTogZmFUYWNob21ldGVyQWx0QXZlcmFnZSxcbiAgZmFXYW5kTWFnaWNTcGFya2xlczogZmFXYW5kTWFnaWNTcGFya2xlcyxcbiAgZmFNYWdpY1dhbmRTcGFya2xlczogZmFNYWdpY1dhbmRTcGFya2xlcyxcbiAgZmFFOiBmYUUsXG4gIGZhUGVuQ2xpcDogZmFQZW5DbGlwLFxuICBmYVBlbkFsdDogZmFQZW5BbHQsXG4gIGZhQnJpZGdlQ2lyY2xlRXhjbGFtYXRpb246IGZhQnJpZGdlQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhVXNlcjogZmFVc2VyLFxuICBmYVNjaG9vbENpcmNsZUNoZWNrOiBmYVNjaG9vbENpcmNsZUNoZWNrLFxuICBmYUR1bXBzdGVyOiBmYUR1bXBzdGVyLFxuICBmYVZhblNodXR0bGU6IGZhVmFuU2h1dHRsZSxcbiAgZmFTaHV0dGxlVmFuOiBmYVNodXR0bGVWYW4sXG4gIGZhQnVpbGRpbmdVc2VyOiBmYUJ1aWxkaW5nVXNlcixcbiAgZmFTcXVhcmVDYXJldExlZnQ6IGZhU3F1YXJlQ2FyZXRMZWZ0LFxuICBmYUNhcmV0U3F1YXJlTGVmdDogZmFDYXJldFNxdWFyZUxlZnQsXG4gIGZhSGlnaGxpZ2h0ZXI6IGZhSGlnaGxpZ2h0ZXIsXG4gIGZhS2V5OiBmYUtleSxcbiAgZmFCdWxsaG9ybjogZmFCdWxsaG9ybixcbiAgZmFHbG9iZTogZmFHbG9iZSxcbiAgZmFTeW5hZ29ndWU6IGZhU3luYWdvZ3VlLFxuICBmYVBlcnNvbkhhbGZEcmVzczogZmFQZXJzb25IYWxmRHJlc3MsXG4gIGZhUm9hZEJyaWRnZTogZmFSb2FkQnJpZGdlLFxuICBmYUxvY2F0aW9uQXJyb3c6IGZhTG9jYXRpb25BcnJvdyxcbiAgZmFDOiBmYUMsXG4gIGZhVGFibGV0QnV0dG9uOiBmYVRhYmxldEJ1dHRvbixcbiAgZmFCdWlsZGluZ0xvY2s6IGZhQnVpbGRpbmdMb2NrLFxuICBmYVBpenphU2xpY2U6IGZhUGl6emFTbGljZSxcbiAgZmFNb25leUJpbGxXYXZlOiBmYU1vbmV5QmlsbFdhdmUsXG4gIGZhQ2hhcnRBcmVhOiBmYUNoYXJ0QXJlYSxcbiAgZmFBcmVhQ2hhcnQ6IGZhQXJlYUNoYXJ0LFxuICBmYUhvdXNlRmxhZzogZmFIb3VzZUZsYWcsXG4gIGZhUGVyc29uQ2lyY2xlTWludXM6IGZhUGVyc29uQ2lyY2xlTWludXMsXG4gIGZhQmFuOiBmYUJhbixcbiAgZmFDYW5jZWw6IGZhQ2FuY2VsLFxuICBmYUNhbWVyYVJvdGF0ZTogZmFDYW1lcmFSb3RhdGUsXG4gIGZhU3ByYXlDYW5TcGFya2xlczogZmFTcHJheUNhblNwYXJrbGVzLFxuICBmYUFpckZyZXNoZW5lcjogZmFBaXJGcmVzaGVuZXIsXG4gIGZhU3RhcjogZmFTdGFyLFxuICBmYVJlcGVhdDogZmFSZXBlYXQsXG4gIGZhQ3Jvc3M6IGZhQ3Jvc3MsXG4gIGZhQm94OiBmYUJveCxcbiAgZmFWZW51c01hcnM6IGZhVmVudXNNYXJzLFxuICBmYUFycm93UG9pbnRlcjogZmFBcnJvd1BvaW50ZXIsXG4gIGZhTW91c2VQb2ludGVyOiBmYU1vdXNlUG9pbnRlcixcbiAgZmFNYXhpbWl6ZTogZmFNYXhpbWl6ZSxcbiAgZmFFeHBhbmRBcnJvd3NBbHQ6IGZhRXhwYW5kQXJyb3dzQWx0LFxuICBmYUNoYXJnaW5nU3RhdGlvbjogZmFDaGFyZ2luZ1N0YXRpb24sXG4gIGZhU2hhcGVzOiBmYVNoYXBlcyxcbiAgZmFUcmlhbmdsZUNpcmNsZVNxdWFyZTogZmFUcmlhbmdsZUNpcmNsZVNxdWFyZSxcbiAgZmFTaHVmZmxlOiBmYVNodWZmbGUsXG4gIGZhUmFuZG9tOiBmYVJhbmRvbSxcbiAgZmFQZXJzb25SdW5uaW5nOiBmYVBlcnNvblJ1bm5pbmcsXG4gIGZhUnVubmluZzogZmFSdW5uaW5nLFxuICBmYU1vYmlsZVJldHJvOiBmYU1vYmlsZVJldHJvLFxuICBmYUdyaXBMaW5lc1ZlcnRpY2FsOiBmYUdyaXBMaW5lc1ZlcnRpY2FsLFxuICBmYVNwaWRlcjogZmFTcGlkZXIsXG4gIGZhSGFuZHNCb3VuZDogZmFIYW5kc0JvdW5kLFxuICBmYUZpbGVJbnZvaWNlRG9sbGFyOiBmYUZpbGVJbnZvaWNlRG9sbGFyLFxuICBmYVBsYW5lQ2lyY2xlRXhjbGFtYXRpb246IGZhUGxhbmVDaXJjbGVFeGNsYW1hdGlvbixcbiAgZmFYUmF5OiBmYVhSYXksXG4gIGZhU3BlbGxDaGVjazogZmFTcGVsbENoZWNrLFxuICBmYVNsYXNoOiBmYVNsYXNoLFxuICBmYUNvbXB1dGVyTW91c2U6IGZhQ29tcHV0ZXJNb3VzZSxcbiAgZmFNb3VzZTogZmFNb3VzZSxcbiAgZmFBcnJvd1JpZ2h0VG9CcmFja2V0OiBmYUFycm93UmlnaHRUb0JyYWNrZXQsXG4gIGZhU2lnbkluOiBmYVNpZ25JbixcbiAgZmFTaG9wU2xhc2g6IGZhU2hvcFNsYXNoLFxuICBmYVN0b3JlQWx0U2xhc2g6IGZhU3RvcmVBbHRTbGFzaCxcbiAgZmFTZXJ2ZXI6IGZhU2VydmVyLFxuICBmYVZpcnVzQ292aWRTbGFzaDogZmFWaXJ1c0NvdmlkU2xhc2gsXG4gIGZhU2hvcExvY2s6IGZhU2hvcExvY2ssXG4gIGZhSG91cmdsYXNzU3RhcnQ6IGZhSG91cmdsYXNzU3RhcnQsXG4gIGZhSG91cmdsYXNzMTogZmFIb3VyZ2xhc3MxLFxuICBmYUJsZW5kZXJQaG9uZTogZmFCbGVuZGVyUGhvbmUsXG4gIGZhQnVpbGRpbmdXaGVhdDogZmFCdWlsZGluZ1doZWF0LFxuICBmYVBlcnNvbkJyZWFzdGZlZWRpbmc6IGZhUGVyc29uQnJlYXN0ZmVlZGluZyxcbiAgZmFSaWdodFRvQnJhY2tldDogZmFSaWdodFRvQnJhY2tldCxcbiAgZmFTaWduSW5BbHQ6IGZhU2lnbkluQWx0LFxuICBmYVZlbnVzOiBmYVZlbnVzLFxuICBmYVBhc3Nwb3J0OiBmYVBhc3Nwb3J0LFxuICBmYUhlYXJ0UHVsc2U6IGZhSGVhcnRQdWxzZSxcbiAgZmFIZWFydGJlYXQ6IGZhSGVhcnRiZWF0LFxuICBmYVBlb3BsZUNhcnJ5Qm94OiBmYVBlb3BsZUNhcnJ5Qm94LFxuICBmYVBlb3BsZUNhcnJ5OiBmYVBlb3BsZUNhcnJ5LFxuICBmYVRlbXBlcmF0dXJlSGlnaDogZmFUZW1wZXJhdHVyZUhpZ2gsXG4gIGZhTWljcm9jaGlwOiBmYU1pY3JvY2hpcCxcbiAgZmFDcm93bjogZmFDcm93bixcbiAgZmFXZWlnaHRIYW5naW5nOiBmYVdlaWdodEhhbmdpbmcsXG4gIGZhWG1hcmtzTGluZXM6IGZhWG1hcmtzTGluZXMsXG4gIGZhRmlsZVByZXNjcmlwdGlvbjogZmFGaWxlUHJlc2NyaXB0aW9uLFxuICBmYVdlaWdodFNjYWxlOiBmYVdlaWdodFNjYWxlLFxuICBmYVdlaWdodDogZmFXZWlnaHQsXG4gIGZhVXNlckdyb3VwOiBmYVVzZXJHcm91cCxcbiAgZmFVc2VyRnJpZW5kczogZmFVc2VyRnJpZW5kcyxcbiAgZmFBcnJvd1VwQVo6IGZhQXJyb3dVcEFaLFxuICBmYVNvcnRBbHBoYVVwOiBmYVNvcnRBbHBoYVVwLFxuICBmYUNoZXNzS25pZ2h0OiBmYUNoZXNzS25pZ2h0LFxuICBmYUZhY2VMYXVnaFNxdWludDogZmFGYWNlTGF1Z2hTcXVpbnQsXG4gIGZhTGF1Z2hTcXVpbnQ6IGZhTGF1Z2hTcXVpbnQsXG4gIGZhV2hlZWxjaGFpcjogZmFXaGVlbGNoYWlyLFxuICBmYUNpcmNsZUFycm93VXA6IGZhQ2lyY2xlQXJyb3dVcCxcbiAgZmFBcnJvd0NpcmNsZVVwOiBmYUFycm93Q2lyY2xlVXAsXG4gIGZhVG9nZ2xlT246IGZhVG9nZ2xlT24sXG4gIGZhUGVyc29uV2Fsa2luZzogZmFQZXJzb25XYWxraW5nLFxuICBmYVdhbGtpbmc6IGZhV2Fsa2luZyxcbiAgZmFMOiBmYUwsXG4gIGZhRmlyZTogZmFGaXJlLFxuICBmYUJlZFB1bHNlOiBmYUJlZFB1bHNlLFxuICBmYVByb2NlZHVyZXM6IGZhUHJvY2VkdXJlcyxcbiAgZmFTaHV0dGxlU3BhY2U6IGZhU2h1dHRsZVNwYWNlLFxuICBmYVNwYWNlU2h1dHRsZTogZmFTcGFjZVNodXR0bGUsXG4gIGZhRmFjZUxhdWdoOiBmYUZhY2VMYXVnaCxcbiAgZmFMYXVnaDogZmFMYXVnaCxcbiAgZmFGb2xkZXJPcGVuOiBmYUZvbGRlck9wZW4sXG4gIGZhSGVhcnRDaXJjbGVQbHVzOiBmYUhlYXJ0Q2lyY2xlUGx1cyxcbiAgZmFDb2RlRm9yazogZmFDb2RlRm9yayxcbiAgZmFDaXR5OiBmYUNpdHksXG4gIGZhTWljcm9waG9uZUxpbmVzOiBmYU1pY3JvcGhvbmVMaW5lcyxcbiAgZmFNaWNyb3Bob25lQWx0OiBmYU1pY3JvcGhvbmVBbHQsXG4gIGZhUGVwcGVySG90OiBmYVBlcHBlckhvdCxcbiAgZmFVbmxvY2s6IGZhVW5sb2NrLFxuICBmYUNvbG9uU2lnbjogZmFDb2xvblNpZ24sXG4gIGZhSGVhZHNldDogZmFIZWFkc2V0LFxuICBmYVN0b3JlU2xhc2g6IGZhU3RvcmVTbGFzaCxcbiAgZmFSb2FkQ2lyY2xlWG1hcms6IGZhUm9hZENpcmNsZVhtYXJrLFxuICBmYVVzZXJNaW51czogZmFVc2VyTWludXMsXG4gIGZhTWFyc1N0cm9rZVVwOiBmYU1hcnNTdHJva2VVcCxcbiAgZmFNYXJzU3Ryb2tlVjogZmFNYXJzU3Ryb2tlVixcbiAgZmFDaGFtcGFnbmVHbGFzc2VzOiBmYUNoYW1wYWduZUdsYXNzZXMsXG4gIGZhR2xhc3NDaGVlcnM6IGZhR2xhc3NDaGVlcnMsXG4gIGZhQ2xpcGJvYXJkOiBmYUNsaXBib2FyZCxcbiAgZmFIb3VzZUNpcmNsZUV4Y2xhbWF0aW9uOiBmYUhvdXNlQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhRmlsZUFycm93VXA6IGZhRmlsZUFycm93VXAsXG4gIGZhRmlsZVVwbG9hZDogZmFGaWxlVXBsb2FkLFxuICBmYVdpZmk6IGZhV2lmaSxcbiAgZmFXaWZpMzogZmFXaWZpMyxcbiAgZmFXaWZpU3Ryb25nOiBmYVdpZmlTdHJvbmcsXG4gIGZhQmF0aDogZmFCYXRoLFxuICBmYUJhdGh0dWI6IGZhQmF0aHR1YixcbiAgZmFVbmRlcmxpbmU6IGZhVW5kZXJsaW5lLFxuICBmYVVzZXJQZW46IGZhVXNlclBlbixcbiAgZmFVc2VyRWRpdDogZmFVc2VyRWRpdCxcbiAgZmFTaWduYXR1cmU6IGZhU2lnbmF0dXJlLFxuICBmYVN0cm9vcHdhZmVsOiBmYVN0cm9vcHdhZmVsLFxuICBmYUJvbGQ6IGZhQm9sZCxcbiAgZmFBbmNob3JMb2NrOiBmYUFuY2hvckxvY2ssXG4gIGZhQnVpbGRpbmdOZ286IGZhQnVpbGRpbmdOZ28sXG4gIGZhTWFuYXRTaWduOiBmYU1hbmF0U2lnbixcbiAgZmFOb3RFcXVhbDogZmFOb3RFcXVhbCxcbiAgZmFCb3JkZXJUb3BMZWZ0OiBmYUJvcmRlclRvcExlZnQsXG4gIGZhQm9yZGVyU3R5bGU6IGZhQm9yZGVyU3R5bGUsXG4gIGZhTWFwTG9jYXRpb25Eb3Q6IGZhTWFwTG9jYXRpb25Eb3QsXG4gIGZhTWFwTWFya2VkQWx0OiBmYU1hcE1hcmtlZEFsdCxcbiAgZmFKZWRpOiBmYUplZGksXG4gIGZhU3F1YXJlUG9sbFZlcnRpY2FsOiBmYVNxdWFyZVBvbGxWZXJ0aWNhbCxcbiAgZmFQb2xsOiBmYVBvbGwsXG4gIGZhTXVnSG90OiBmYU11Z0hvdCxcbiAgZmFDYXJCYXR0ZXJ5OiBmYUNhckJhdHRlcnksXG4gIGZhQmF0dGVyeUNhcjogZmFCYXR0ZXJ5Q2FyLFxuICBmYUdpZnQ6IGZhR2lmdCxcbiAgZmFEaWNlVHdvOiBmYURpY2VUd28sXG4gIGZhQ2hlc3NRdWVlbjogZmFDaGVzc1F1ZWVuLFxuICBmYUdsYXNzZXM6IGZhR2xhc3NlcyxcbiAgZmFDaGVzc0JvYXJkOiBmYUNoZXNzQm9hcmQsXG4gIGZhQnVpbGRpbmdDaXJjbGVDaGVjazogZmFCdWlsZGluZ0NpcmNsZUNoZWNrLFxuICBmYVBlcnNvbkNoYWxrYm9hcmQ6IGZhUGVyc29uQ2hhbGtib2FyZCxcbiAgZmFNYXJzU3Ryb2tlUmlnaHQ6IGZhTWFyc1N0cm9rZVJpZ2h0LFxuICBmYU1hcnNTdHJva2VIOiBmYU1hcnNTdHJva2VILFxuICBmYUhhbmRCYWNrRmlzdDogZmFIYW5kQmFja0Zpc3QsXG4gIGZhSGFuZFJvY2s6IGZhSGFuZFJvY2ssXG4gIGZhU3F1YXJlQ2FyZXRVcDogZmFTcXVhcmVDYXJldFVwLFxuICBmYUNhcmV0U3F1YXJlVXA6IGZhQ2FyZXRTcXVhcmVVcCxcbiAgZmFDbG91ZFNob3dlcnNXYXRlcjogZmFDbG91ZFNob3dlcnNXYXRlcixcbiAgZmFDaGFydEJhcjogZmFDaGFydEJhcixcbiAgZmFCYXJDaGFydDogZmFCYXJDaGFydCxcbiAgZmFIYW5kc0J1YmJsZXM6IGZhSGFuZHNCdWJibGVzLFxuICBmYUhhbmRzV2FzaDogZmFIYW5kc1dhc2gsXG4gIGZhTGVzc1RoYW5FcXVhbDogZmFMZXNzVGhhbkVxdWFsLFxuICBmYVRyYWluOiBmYVRyYWluLFxuICBmYUV5ZUxvd1Zpc2lvbjogZmFFeWVMb3dWaXNpb24sXG4gIGZhTG93VmlzaW9uOiBmYUxvd1Zpc2lvbixcbiAgZmFDcm93OiBmYUNyb3csXG4gIGZhU2FpbGJvYXQ6IGZhU2FpbGJvYXQsXG4gIGZhV2luZG93UmVzdG9yZTogZmFXaW5kb3dSZXN0b3JlLFxuICBmYVNxdWFyZVBsdXM6IGZhU3F1YXJlUGx1cyxcbiAgZmFQbHVzU3F1YXJlOiBmYVBsdXNTcXVhcmUsXG4gIGZhVG9yaWlHYXRlOiBmYVRvcmlpR2F0ZSxcbiAgZmFGcm9nOiBmYUZyb2csXG4gIGZhQnVja2V0OiBmYUJ1Y2tldCxcbiAgZmFJbWFnZTogZmFJbWFnZSxcbiAgZmFNaWNyb3Bob25lOiBmYU1pY3JvcGhvbmUsXG4gIGZhQ293OiBmYUNvdyxcbiAgZmFDYXJldFVwOiBmYUNhcmV0VXAsXG4gIGZhU2NyZXdkcml2ZXI6IGZhU2NyZXdkcml2ZXIsXG4gIGZhRm9sZGVyQ2xvc2VkOiBmYUZvbGRlckNsb3NlZCxcbiAgZmFIb3VzZVRzdW5hbWk6IGZhSG91c2VUc3VuYW1pLFxuICBmYVNxdWFyZU5maTogZmFTcXVhcmVOZmksXG4gIGZhQXJyb3dVcEZyb21Hcm91bmRXYXRlcjogZmFBcnJvd1VwRnJvbUdyb3VuZFdhdGVyLFxuICBmYU1hcnRpbmlHbGFzczogZmFNYXJ0aW5pR2xhc3MsXG4gIGZhR2xhc3NNYXJ0aW5pQWx0OiBmYUdsYXNzTWFydGluaUFsdCxcbiAgZmFSb3RhdGVMZWZ0OiBmYVJvdGF0ZUxlZnQsXG4gIGZhUm90YXRlQmFjazogZmFSb3RhdGVCYWNrLFxuICBmYVJvdGF0ZUJhY2t3YXJkOiBmYVJvdGF0ZUJhY2t3YXJkLFxuICBmYVVuZG9BbHQ6IGZhVW5kb0FsdCxcbiAgZmFUYWJsZUNvbHVtbnM6IGZhVGFibGVDb2x1bW5zLFxuICBmYUNvbHVtbnM6IGZhQ29sdW1ucyxcbiAgZmFMZW1vbjogZmFMZW1vbixcbiAgZmFIZWFkU2lkZU1hc2s6IGZhSGVhZFNpZGVNYXNrLFxuICBmYUhhbmRzaGFrZTogZmFIYW5kc2hha2UsXG4gIGZhR2VtOiBmYUdlbSxcbiAgZmFEb2xseTogZmFEb2xseSxcbiAgZmFEb2xseUJveDogZmFEb2xseUJveCxcbiAgZmFTbW9raW5nOiBmYVNtb2tpbmcsXG4gIGZhTWluaW1pemU6IGZhTWluaW1pemUsXG4gIGZhQ29tcHJlc3NBcnJvd3NBbHQ6IGZhQ29tcHJlc3NBcnJvd3NBbHQsXG4gIGZhTW9udW1lbnQ6IGZhTW9udW1lbnQsXG4gIGZhU25vd3Bsb3c6IGZhU25vd3Bsb3csXG4gIGZhQW5nbGVzUmlnaHQ6IGZhQW5nbGVzUmlnaHQsXG4gIGZhQW5nbGVEb3VibGVSaWdodDogZmFBbmdsZURvdWJsZVJpZ2h0LFxuICBmYUNhbm5hYmlzOiBmYUNhbm5hYmlzLFxuICBmYUNpcmNsZVBsYXk6IGZhQ2lyY2xlUGxheSxcbiAgZmFQbGF5Q2lyY2xlOiBmYVBsYXlDaXJjbGUsXG4gIGZhVGFibGV0czogZmFUYWJsZXRzLFxuICBmYUV0aGVybmV0OiBmYUV0aGVybmV0LFxuICBmYUV1cm9TaWduOiBmYUV1cm9TaWduLFxuICBmYUV1cjogZmFFdXIsXG4gIGZhRXVybzogZmFFdXJvLFxuICBmYUNoYWlyOiBmYUNoYWlyLFxuICBmYUNpcmNsZUNoZWNrOiBmYUNpcmNsZUNoZWNrLFxuICBmYUNoZWNrQ2lyY2xlOiBmYUNoZWNrQ2lyY2xlLFxuICBmYUNpcmNsZVN0b3A6IGZhQ2lyY2xlU3RvcCxcbiAgZmFTdG9wQ2lyY2xlOiBmYVN0b3BDaXJjbGUsXG4gIGZhQ29tcGFzc0RyYWZ0aW5nOiBmYUNvbXBhc3NEcmFmdGluZyxcbiAgZmFEcmFmdGluZ0NvbXBhc3M6IGZhRHJhZnRpbmdDb21wYXNzLFxuICBmYVBsYXRlV2hlYXQ6IGZhUGxhdGVXaGVhdCxcbiAgZmFJY2ljbGVzOiBmYUljaWNsZXMsXG4gIGZhUGVyc29uU2hlbHRlcjogZmFQZXJzb25TaGVsdGVyLFxuICBmYU5ldXRlcjogZmFOZXV0ZXIsXG4gIGZhSWRCYWRnZTogZmFJZEJhZGdlLFxuICBmYU1hcmtlcjogZmFNYXJrZXIsXG4gIGZhRmFjZUxhdWdoQmVhbTogZmFGYWNlTGF1Z2hCZWFtLFxuICBmYUxhdWdoQmVhbTogZmFMYXVnaEJlYW0sXG4gIGZhSGVsaWNvcHRlclN5bWJvbDogZmFIZWxpY29wdGVyU3ltYm9sLFxuICBmYVVuaXZlcnNhbEFjY2VzczogZmFVbml2ZXJzYWxBY2Nlc3MsXG4gIGZhQ2lyY2xlQ2hldnJvblVwOiBmYUNpcmNsZUNoZXZyb25VcCxcbiAgZmFDaGV2cm9uQ2lyY2xlVXA6IGZhQ2hldnJvbkNpcmNsZVVwLFxuICBmYUxhcmlTaWduOiBmYUxhcmlTaWduLFxuICBmYVZvbGNhbm86IGZhVm9sY2FubyxcbiAgZmFQZXJzb25XYWxraW5nRGFzaGVkTGluZUFycm93UmlnaHQ6IGZhUGVyc29uV2Fsa2luZ0Rhc2hlZExpbmVBcnJvd1JpZ2h0LFxuICBmYVN0ZXJsaW5nU2lnbjogZmFTdGVybGluZ1NpZ24sXG4gIGZhR2JwOiBmYUdicCxcbiAgZmFQb3VuZFNpZ246IGZhUG91bmRTaWduLFxuICBmYVZpcnVzZXM6IGZhVmlydXNlcyxcbiAgZmFTcXVhcmVQZXJzb25Db25maW5lZDogZmFTcXVhcmVQZXJzb25Db25maW5lZCxcbiAgZmFVc2VyVGllOiBmYVVzZXJUaWUsXG4gIGZhQXJyb3dEb3duTG9uZzogZmFBcnJvd0Rvd25Mb25nLFxuICBmYUxvbmdBcnJvd0Rvd246IGZhTG9uZ0Fycm93RG93bixcbiAgZmFUZW50QXJyb3dEb3duVG9MaW5lOiBmYVRlbnRBcnJvd0Rvd25Ub0xpbmUsXG4gIGZhQ2VydGlmaWNhdGU6IGZhQ2VydGlmaWNhdGUsXG4gIGZhUmVwbHlBbGw6IGZhUmVwbHlBbGwsXG4gIGZhTWFpbFJlcGx5QWxsOiBmYU1haWxSZXBseUFsbCxcbiAgZmFTdWl0Y2FzZTogZmFTdWl0Y2FzZSxcbiAgZmFQZXJzb25Ta2F0aW5nOiBmYVBlcnNvblNrYXRpbmcsXG4gIGZhU2thdGluZzogZmFTa2F0aW5nLFxuICBmYUZpbHRlckNpcmNsZURvbGxhcjogZmFGaWx0ZXJDaXJjbGVEb2xsYXIsXG4gIGZhRnVubmVsRG9sbGFyOiBmYUZ1bm5lbERvbGxhcixcbiAgZmFDYW1lcmFSZXRybzogZmFDYW1lcmFSZXRybyxcbiAgZmFDaXJjbGVBcnJvd0Rvd246IGZhQ2lyY2xlQXJyb3dEb3duLFxuICBmYUFycm93Q2lyY2xlRG93bjogZmFBcnJvd0NpcmNsZURvd24sXG4gIGZhRmlsZUltcG9ydDogZmFGaWxlSW1wb3J0LFxuICBmYUFycm93UmlnaHRUb0ZpbGU6IGZhQXJyb3dSaWdodFRvRmlsZSxcbiAgZmFTcXVhcmVBcnJvd1VwUmlnaHQ6IGZhU3F1YXJlQXJyb3dVcFJpZ2h0LFxuICBmYUV4dGVybmFsTGlua1NxdWFyZTogZmFFeHRlcm5hbExpbmtTcXVhcmUsXG4gIGZhQm94T3BlbjogZmFCb3hPcGVuLFxuICBmYVNjcm9sbDogZmFTY3JvbGwsXG4gIGZhU3BhOiBmYVNwYSxcbiAgZmFMb2NhdGlvblBpbkxvY2s6IGZhTG9jYXRpb25QaW5Mb2NrLFxuICBmYVBhdXNlOiBmYVBhdXNlLFxuICBmYUhpbGxBdmFsYW5jaGU6IGZhSGlsbEF2YWxhbmNoZSxcbiAgZmFUZW1wZXJhdHVyZUVtcHR5OiBmYVRlbXBlcmF0dXJlRW1wdHksXG4gIGZhVGVtcGVyYXR1cmUwOiBmYVRlbXBlcmF0dXJlMCxcbiAgZmFUaGVybW9tZXRlcjA6IGZhVGhlcm1vbWV0ZXIwLFxuICBmYVRoZXJtb21ldGVyRW1wdHk6IGZhVGhlcm1vbWV0ZXJFbXB0eSxcbiAgZmFCb21iOiBmYUJvbWIsXG4gIGZhUmVnaXN0ZXJlZDogZmFSZWdpc3RlcmVkLFxuICBmYUFkZHJlc3NDYXJkOiBmYUFkZHJlc3NDYXJkLFxuICBmYUNvbnRhY3RDYXJkOiBmYUNvbnRhY3RDYXJkLFxuICBmYVZjYXJkOiBmYVZjYXJkLFxuICBmYVNjYWxlVW5iYWxhbmNlZEZsaXA6IGZhU2NhbGVVbmJhbGFuY2VkRmxpcCxcbiAgZmFCYWxhbmNlU2NhbGVSaWdodDogZmFCYWxhbmNlU2NhbGVSaWdodCxcbiAgZmFTdWJzY3JpcHQ6IGZhU3Vic2NyaXB0LFxuICBmYURpYW1vbmRUdXJuUmlnaHQ6IGZhRGlhbW9uZFR1cm5SaWdodCxcbiAgZmFEaXJlY3Rpb25zOiBmYURpcmVjdGlvbnMsXG4gIGZhQnVyc3Q6IGZhQnVyc3QsXG4gIGZhSG91c2VMYXB0b3A6IGZhSG91c2VMYXB0b3AsXG4gIGZhTGFwdG9wSG91c2U6IGZhTGFwdG9wSG91c2UsXG4gIGZhRmFjZVRpcmVkOiBmYUZhY2VUaXJlZCxcbiAgZmFUaXJlZDogZmFUaXJlZCxcbiAgZmFNb25leUJpbGxzOiBmYU1vbmV5QmlsbHMsXG4gIGZhU21vZzogZmFTbW9nLFxuICBmYUNydXRjaDogZmFDcnV0Y2gsXG4gIGZhRm9udEF3ZXNvbWU6IGZhRm9udEF3ZXNvbWUsXG4gIGZhRm9udEF3ZXNvbWVGbGFnOiBmYUZvbnRBd2Vzb21lRmxhZyxcbiAgZmFGb250QXdlc29tZUxvZ29GdWxsOiBmYUZvbnRBd2Vzb21lTG9nb0Z1bGwsXG4gIGZhQ2xvdWRBcnJvd1VwOiBmYUNsb3VkQXJyb3dVcCxcbiAgZmFDbG91ZFVwbG9hZDogZmFDbG91ZFVwbG9hZCxcbiAgZmFDbG91ZFVwbG9hZEFsdDogZmFDbG91ZFVwbG9hZEFsdCxcbiAgZmFQYWxldHRlOiBmYVBhbGV0dGUsXG4gIGZhQXJyb3dzVHVyblJpZ2h0OiBmYUFycm93c1R1cm5SaWdodCxcbiAgZmFWZXN0OiBmYVZlc3QsXG4gIGZhRmVycnk6IGZhRmVycnksXG4gIGZhQXJyb3dzRG93blRvUGVvcGxlOiBmYUFycm93c0Rvd25Ub1Blb3BsZSxcbiAgZmFTZWVkbGluZzogZmFTZWVkbGluZyxcbiAgZmFTcHJvdXQ6IGZhU3Byb3V0LFxuICBmYUxlZnRSaWdodDogZmFMZWZ0UmlnaHQsXG4gIGZhQXJyb3dzQWx0SDogZmFBcnJvd3NBbHRILFxuICBmYUJveGVzUGFja2luZzogZmFCb3hlc1BhY2tpbmcsXG4gIGZhQ2lyY2xlQXJyb3dMZWZ0OiBmYUNpcmNsZUFycm93TGVmdCxcbiAgZmFBcnJvd0NpcmNsZUxlZnQ6IGZhQXJyb3dDaXJjbGVMZWZ0LFxuICBmYUdyb3VwQXJyb3dzUm90YXRlOiBmYUdyb3VwQXJyb3dzUm90YXRlLFxuICBmYUJvd2xGb29kOiBmYUJvd2xGb29kLFxuICBmYUNhbmR5Q2FuZTogZmFDYW5keUNhbmUsXG4gIGZhQXJyb3dEb3duV2lkZVNob3J0OiBmYUFycm93RG93bldpZGVTaG9ydCxcbiAgZmFTb3J0QW1vdW50QXNjOiBmYVNvcnRBbW91bnRBc2MsXG4gIGZhU29ydEFtb3VudERvd246IGZhU29ydEFtb3VudERvd24sXG4gIGZhQ2xvdWRCb2x0OiBmYUNsb3VkQm9sdCxcbiAgZmFUaHVuZGVyc3Rvcm06IGZhVGh1bmRlcnN0b3JtLFxuICBmYVRleHRTbGFzaDogZmFUZXh0U2xhc2gsXG4gIGZhUmVtb3ZlRm9ybWF0OiBmYVJlbW92ZUZvcm1hdCxcbiAgZmFGYWNlU21pbGVXaW5rOiBmYUZhY2VTbWlsZVdpbmssXG4gIGZhU21pbGVXaW5rOiBmYVNtaWxlV2luayxcbiAgZmFGaWxlV29yZDogZmFGaWxlV29yZCxcbiAgZmFGaWxlUG93ZXJwb2ludDogZmFGaWxlUG93ZXJwb2ludCxcbiAgZmFBcnJvd3NMZWZ0UmlnaHQ6IGZhQXJyb3dzTGVmdFJpZ2h0LFxuICBmYUFycm93c0g6IGZhQXJyb3dzSCxcbiAgZmFIb3VzZUxvY2s6IGZhSG91c2VMb2NrLFxuICBmYUNsb3VkQXJyb3dEb3duOiBmYUNsb3VkQXJyb3dEb3duLFxuICBmYUNsb3VkRG93bmxvYWQ6IGZhQ2xvdWREb3dubG9hZCxcbiAgZmFDbG91ZERvd25sb2FkQWx0OiBmYUNsb3VkRG93bmxvYWRBbHQsXG4gIGZhQ2hpbGRyZW46IGZhQ2hpbGRyZW4sXG4gIGZhQ2hhbGtib2FyZDogZmFDaGFsa2JvYXJkLFxuICBmYUJsYWNrYm9hcmQ6IGZhQmxhY2tib2FyZCxcbiAgZmFVc2VyTGFyZ2VTbGFzaDogZmFVc2VyTGFyZ2VTbGFzaCxcbiAgZmFVc2VyQWx0U2xhc2g6IGZhVXNlckFsdFNsYXNoLFxuICBmYUVudmVsb3BlT3BlbjogZmFFbnZlbG9wZU9wZW4sXG4gIGZhSGFuZHNoYWtlU2ltcGxlU2xhc2g6IGZhSGFuZHNoYWtlU2ltcGxlU2xhc2gsXG4gIGZhSGFuZHNoYWtlQWx0U2xhc2g6IGZhSGFuZHNoYWtlQWx0U2xhc2gsXG4gIGZhTWF0dHJlc3NQaWxsb3c6IGZhTWF0dHJlc3NQaWxsb3csXG4gIGZhR3VhcmFuaVNpZ246IGZhR3VhcmFuaVNpZ24sXG4gIGZhQXJyb3dzUm90YXRlOiBmYUFycm93c1JvdGF0ZSxcbiAgZmFSZWZyZXNoOiBmYVJlZnJlc2gsXG4gIGZhU3luYzogZmFTeW5jLFxuICBmYUZpcmVFeHRpbmd1aXNoZXI6IGZhRmlyZUV4dGluZ3Vpc2hlcixcbiAgZmFDcnV6ZWlyb1NpZ246IGZhQ3J1emVpcm9TaWduLFxuICBmYUdyZWF0ZXJUaGFuRXF1YWw6IGZhR3JlYXRlclRoYW5FcXVhbCxcbiAgZmFTaGllbGRIYWx2ZWQ6IGZhU2hpZWxkSGFsdmVkLFxuICBmYVNoaWVsZEFsdDogZmFTaGllbGRBbHQsXG4gIGZhQm9va0F0bGFzOiBmYUJvb2tBdGxhcyxcbiAgZmFBdGxhczogZmFBdGxhcyxcbiAgZmFWaXJ1czogZmFWaXJ1cyxcbiAgZmFFbnZlbG9wZUNpcmNsZUNoZWNrOiBmYUVudmVsb3BlQ2lyY2xlQ2hlY2ssXG4gIGZhTGF5ZXJHcm91cDogZmFMYXllckdyb3VwLFxuICBmYUFycm93c1RvRG90OiBmYUFycm93c1RvRG90LFxuICBmYUFyY2h3YXk6IGZhQXJjaHdheSxcbiAgZmFIZWFydENpcmNsZUNoZWNrOiBmYUhlYXJ0Q2lyY2xlQ2hlY2ssXG4gIGZhSG91c2VDaGltbmV5Q3JhY2s6IGZhSG91c2VDaGltbmV5Q3JhY2ssXG4gIGZhSG91c2VEYW1hZ2U6IGZhSG91c2VEYW1hZ2UsXG4gIGZhRmlsZVppcHBlcjogZmFGaWxlWmlwcGVyLFxuICBmYUZpbGVBcmNoaXZlOiBmYUZpbGVBcmNoaXZlLFxuICBmYVNxdWFyZTogZmFTcXVhcmUsXG4gIGZhTWFydGluaUdsYXNzRW1wdHk6IGZhTWFydGluaUdsYXNzRW1wdHksXG4gIGZhR2xhc3NNYXJ0aW5pOiBmYUdsYXNzTWFydGluaSxcbiAgZmFDb3VjaDogZmFDb3VjaCxcbiAgZmFDZWRpU2lnbjogZmFDZWRpU2lnbixcbiAgZmFJdGFsaWM6IGZhSXRhbGljLFxuICBmYUNodXJjaDogZmFDaHVyY2gsXG4gIGZhQ29tbWVudHNEb2xsYXI6IGZhQ29tbWVudHNEb2xsYXIsXG4gIGZhRGVtb2NyYXQ6IGZhRGVtb2NyYXQsXG4gIGZhWjogZmFaLFxuICBmYVBlcnNvblNraWluZzogZmFQZXJzb25Ta2lpbmcsXG4gIGZhU2tpaW5nOiBmYVNraWluZyxcbiAgZmFSb2FkTG9jazogZmFSb2FkTG9jayxcbiAgZmFBOiBmYUEsXG4gIGZhVGVtcGVyYXR1cmVBcnJvd0Rvd246IGZhVGVtcGVyYXR1cmVBcnJvd0Rvd24sXG4gIGZhVGVtcGVyYXR1cmVEb3duOiBmYVRlbXBlcmF0dXJlRG93bixcbiAgZmFGZWF0aGVyUG9pbnRlZDogZmFGZWF0aGVyUG9pbnRlZCxcbiAgZmFGZWF0aGVyQWx0OiBmYUZlYXRoZXJBbHQsXG4gIGZhUDogZmFQLFxuICBmYVNub3dmbGFrZTogZmFTbm93Zmxha2UsXG4gIGZhTmV3c3BhcGVyOiBmYU5ld3NwYXBlcixcbiAgZmFSZWN0YW5nbGVBZDogZmFSZWN0YW5nbGVBZCxcbiAgZmFBZDogZmFBZCxcbiAgZmFDaXJjbGVBcnJvd1JpZ2h0OiBmYUNpcmNsZUFycm93UmlnaHQsXG4gIGZhQXJyb3dDaXJjbGVSaWdodDogZmFBcnJvd0NpcmNsZVJpZ2h0LFxuICBmYUZpbHRlckNpcmNsZVhtYXJrOiBmYUZpbHRlckNpcmNsZVhtYXJrLFxuICBmYUxvY3VzdDogZmFMb2N1c3QsXG4gIGZhU29ydDogZmFTb3J0LFxuICBmYVVuc29ydGVkOiBmYVVuc29ydGVkLFxuICBmYUxpc3RPbDogZmFMaXN0T2wsXG4gIGZhTGlzdDEyOiBmYUxpc3QxMixcbiAgZmFMaXN0TnVtZXJpYzogZmFMaXN0TnVtZXJpYyxcbiAgZmFQZXJzb25EcmVzc0J1cnN0OiBmYVBlcnNvbkRyZXNzQnVyc3QsXG4gIGZhTW9uZXlDaGVja0RvbGxhcjogZmFNb25leUNoZWNrRG9sbGFyLFxuICBmYU1vbmV5Q2hlY2tBbHQ6IGZhTW9uZXlDaGVja0FsdCxcbiAgZmFWZWN0b3JTcXVhcmU6IGZhVmVjdG9yU3F1YXJlLFxuICBmYUJyZWFkU2xpY2U6IGZhQnJlYWRTbGljZSxcbiAgZmFMYW5ndWFnZTogZmFMYW5ndWFnZSxcbiAgZmFGYWNlS2lzc1dpbmtIZWFydDogZmFGYWNlS2lzc1dpbmtIZWFydCxcbiAgZmFLaXNzV2lua0hlYXJ0OiBmYUtpc3NXaW5rSGVhcnQsXG4gIGZhRmlsdGVyOiBmYUZpbHRlcixcbiAgZmFRdWVzdGlvbjogZmFRdWVzdGlvbixcbiAgZmFGaWxlU2lnbmF0dXJlOiBmYUZpbGVTaWduYXR1cmUsXG4gIGZhVXBEb3duTGVmdFJpZ2h0OiBmYVVwRG93bkxlZnRSaWdodCxcbiAgZmFBcnJvd3NBbHQ6IGZhQXJyb3dzQWx0LFxuICBmYUhvdXNlQ2hpbW5leVVzZXI6IGZhSG91c2VDaGltbmV5VXNlcixcbiAgZmFIYW5kSG9sZGluZ0hlYXJ0OiBmYUhhbmRIb2xkaW5nSGVhcnQsXG4gIGZhUHV6emxlUGllY2U6IGZhUHV6emxlUGllY2UsXG4gIGZhTW9uZXlDaGVjazogZmFNb25leUNoZWNrLFxuICBmYVN0YXJIYWxmU3Ryb2tlOiBmYVN0YXJIYWxmU3Ryb2tlLFxuICBmYVN0YXJIYWxmQWx0OiBmYVN0YXJIYWxmQWx0LFxuICBmYUNvZGU6IGZhQ29kZSxcbiAgZmFXaGlza2V5R2xhc3M6IGZhV2hpc2tleUdsYXNzLFxuICBmYUdsYXNzV2hpc2tleTogZmFHbGFzc1doaXNrZXksXG4gIGZhQnVpbGRpbmdDaXJjbGVFeGNsYW1hdGlvbjogZmFCdWlsZGluZ0NpcmNsZUV4Y2xhbWF0aW9uLFxuICBmYU1hZ25pZnlpbmdHbGFzc0NoYXJ0OiBmYU1hZ25pZnlpbmdHbGFzc0NoYXJ0LFxuICBmYUFycm93VXBSaWdodEZyb21TcXVhcmU6IGZhQXJyb3dVcFJpZ2h0RnJvbVNxdWFyZSxcbiAgZmFFeHRlcm5hbExpbms6IGZhRXh0ZXJuYWxMaW5rLFxuICBmYUN1YmVzU3RhY2tlZDogZmFDdWJlc1N0YWNrZWQsXG4gIGZhV29uU2lnbjogZmFXb25TaWduLFxuICBmYUtydzogZmFLcncsXG4gIGZhV29uOiBmYVdvbixcbiAgZmFWaXJ1c0NvdmlkOiBmYVZpcnVzQ292aWQsXG4gIGZhQXVzdHJhbFNpZ246IGZhQXVzdHJhbFNpZ24sXG4gIGZhRjogZmFGLFxuICBmYUxlYWY6IGZhTGVhZixcbiAgZmFSb2FkOiBmYVJvYWQsXG4gIGZhVGF4aTogZmFUYXhpLFxuICBmYUNhYjogZmFDYWIsXG4gIGZhUGVyc29uQ2lyY2xlUGx1czogZmFQZXJzb25DaXJjbGVQbHVzLFxuICBmYUNoYXJ0UGllOiBmYUNoYXJ0UGllLFxuICBmYVBpZUNoYXJ0OiBmYVBpZUNoYXJ0LFxuICBmYUJvbHRMaWdodG5pbmc6IGZhQm9sdExpZ2h0bmluZyxcbiAgZmFTYWNrWG1hcms6IGZhU2Fja1htYXJrLFxuICBmYUZpbGVFeGNlbDogZmFGaWxlRXhjZWwsXG4gIGZhRmlsZUNvbnRyYWN0OiBmYUZpbGVDb250cmFjdCxcbiAgZmFGaXNoRmluczogZmFGaXNoRmlucyxcbiAgZmFCdWlsZGluZ0ZsYWc6IGZhQnVpbGRpbmdGbGFnLFxuICBmYUZhY2VHcmluQmVhbTogZmFGYWNlR3JpbkJlYW0sXG4gIGZhR3JpbkJlYW06IGZhR3JpbkJlYW0sXG4gIGZhT2JqZWN0VW5ncm91cDogZmFPYmplY3RVbmdyb3VwLFxuICBmYVBvb3A6IGZhUG9vcCxcbiAgZmFMb2NhdGlvblBpbjogZmFMb2NhdGlvblBpbixcbiAgZmFNYXBNYXJrZXI6IGZhTWFwTWFya2VyLFxuICBmYUthYWJhOiBmYUthYWJhLFxuICBmYVRvaWxldFBhcGVyOiBmYVRvaWxldFBhcGVyLFxuICBmYUhlbG1ldFNhZmV0eTogZmFIZWxtZXRTYWZldHksXG4gIGZhSGFyZEhhdDogZmFIYXJkSGF0LFxuICBmYUhhdEhhcmQ6IGZhSGF0SGFyZCxcbiAgZmFFamVjdDogZmFFamVjdCxcbiAgZmFDaXJjbGVSaWdodDogZmFDaXJjbGVSaWdodCxcbiAgZmFBcnJvd0FsdENpcmNsZVJpZ2h0OiBmYUFycm93QWx0Q2lyY2xlUmlnaHQsXG4gIGZhUGxhbmVDaXJjbGVDaGVjazogZmFQbGFuZUNpcmNsZUNoZWNrLFxuICBmYUZhY2VSb2xsaW5nRXllczogZmFGYWNlUm9sbGluZ0V5ZXMsXG4gIGZhTWVoUm9sbGluZ0V5ZXM6IGZhTWVoUm9sbGluZ0V5ZXMsXG4gIGZhT2JqZWN0R3JvdXA6IGZhT2JqZWN0R3JvdXAsXG4gIGZhQ2hhcnRMaW5lOiBmYUNoYXJ0TGluZSxcbiAgZmFMaW5lQ2hhcnQ6IGZhTGluZUNoYXJ0LFxuICBmYU1hc2tWZW50aWxhdG9yOiBmYU1hc2tWZW50aWxhdG9yLFxuICBmYUFycm93UmlnaHQ6IGZhQXJyb3dSaWdodCxcbiAgZmFTaWduc1Bvc3Q6IGZhU2lnbnNQb3N0LFxuICBmYU1hcFNpZ25zOiBmYU1hcFNpZ25zLFxuICBmYUNhc2hSZWdpc3RlcjogZmFDYXNoUmVnaXN0ZXIsXG4gIGZhUGVyc29uQ2lyY2xlUXVlc3Rpb246IGZhUGVyc29uQ2lyY2xlUXVlc3Rpb24sXG4gIGZhSDogZmFILFxuICBmYVRhcnA6IGZhVGFycCxcbiAgZmFTY3Jld2RyaXZlcldyZW5jaDogZmFTY3Jld2RyaXZlcldyZW5jaCxcbiAgZmFUb29sczogZmFUb29scyxcbiAgZmFBcnJvd3NUb0V5ZTogZmFBcnJvd3NUb0V5ZSxcbiAgZmFQbHVnQ2lyY2xlQm9sdDogZmFQbHVnQ2lyY2xlQm9sdCxcbiAgZmFIZWFydDogZmFIZWFydCxcbiAgZmFNYXJzQW5kVmVudXM6IGZhTWFyc0FuZFZlbnVzLFxuICBmYUhvdXNlVXNlcjogZmFIb3VzZVVzZXIsXG4gIGZhSG9tZVVzZXI6IGZhSG9tZVVzZXIsXG4gIGZhRHVtcHN0ZXJGaXJlOiBmYUR1bXBzdGVyRmlyZSxcbiAgZmFIb3VzZUNyYWNrOiBmYUhvdXNlQ3JhY2ssXG4gIGZhTWFydGluaUdsYXNzQ2l0cnVzOiBmYU1hcnRpbmlHbGFzc0NpdHJ1cyxcbiAgZmFDb2NrdGFpbDogZmFDb2NrdGFpbCxcbiAgZmFGYWNlU3VycHJpc2U6IGZhRmFjZVN1cnByaXNlLFxuICBmYVN1cnByaXNlOiBmYVN1cnByaXNlLFxuICBmYUJvdHRsZVdhdGVyOiBmYUJvdHRsZVdhdGVyLFxuICBmYUNpcmNsZVBhdXNlOiBmYUNpcmNsZVBhdXNlLFxuICBmYVBhdXNlQ2lyY2xlOiBmYVBhdXNlQ2lyY2xlLFxuICBmYVRvaWxldFBhcGVyU2xhc2g6IGZhVG9pbGV0UGFwZXJTbGFzaCxcbiAgZmFBcHBsZVdob2xlOiBmYUFwcGxlV2hvbGUsXG4gIGZhQXBwbGVBbHQ6IGZhQXBwbGVBbHQsXG4gIGZhS2l0Y2hlblNldDogZmFLaXRjaGVuU2V0LFxuICBmYVI6IGZhUixcbiAgZmFUZW1wZXJhdHVyZVF1YXJ0ZXI6IGZhVGVtcGVyYXR1cmVRdWFydGVyLFxuICBmYVRlbXBlcmF0dXJlMTogZmFUZW1wZXJhdHVyZTEsXG4gIGZhVGhlcm1vbWV0ZXIxOiBmYVRoZXJtb21ldGVyMSxcbiAgZmFUaGVybW9tZXRlclF1YXJ0ZXI6IGZhVGhlcm1vbWV0ZXJRdWFydGVyLFxuICBmYUN1YmU6IGZhQ3ViZSxcbiAgZmFCaXRjb2luU2lnbjogZmFCaXRjb2luU2lnbixcbiAgZmFTaGllbGREb2c6IGZhU2hpZWxkRG9nLFxuICBmYVNvbGFyUGFuZWw6IGZhU29sYXJQYW5lbCxcbiAgZmFMb2NrT3BlbjogZmFMb2NrT3BlbixcbiAgZmFFbGV2YXRvcjogZmFFbGV2YXRvcixcbiAgZmFNb25leUJpbGxUcmFuc2ZlcjogZmFNb25leUJpbGxUcmFuc2ZlcixcbiAgZmFNb25leUJpbGxUcmVuZFVwOiBmYU1vbmV5QmlsbFRyZW5kVXAsXG4gIGZhSG91c2VGbG9vZFdhdGVyQ2lyY2xlQXJyb3dSaWdodDogZmFIb3VzZUZsb29kV2F0ZXJDaXJjbGVBcnJvd1JpZ2h0LFxuICBmYVNxdWFyZVBvbGxIb3Jpem9udGFsOiBmYVNxdWFyZVBvbGxIb3Jpem9udGFsLFxuICBmYVBvbGxIOiBmYVBvbGxILFxuICBmYUNpcmNsZTogZmFDaXJjbGUsXG4gIGZhQmFja3dhcmRGYXN0OiBmYUJhY2t3YXJkRmFzdCxcbiAgZmFGYXN0QmFja3dhcmQ6IGZhRmFzdEJhY2t3YXJkLFxuICBmYVJlY3ljbGU6IGZhUmVjeWNsZSxcbiAgZmFVc2VyQXN0cm9uYXV0OiBmYVVzZXJBc3Ryb25hdXQsXG4gIGZhUGxhbmVTbGFzaDogZmFQbGFuZVNsYXNoLFxuICBmYVRyYWRlbWFyazogZmFUcmFkZW1hcmssXG4gIGZhQmFza2V0YmFsbDogZmFCYXNrZXRiYWxsLFxuICBmYUJhc2tldGJhbGxCYWxsOiBmYUJhc2tldGJhbGxCYWxsLFxuICBmYVNhdGVsbGl0ZURpc2g6IGZhU2F0ZWxsaXRlRGlzaCxcbiAgZmFDaXJjbGVVcDogZmFDaXJjbGVVcCxcbiAgZmFBcnJvd0FsdENpcmNsZVVwOiBmYUFycm93QWx0Q2lyY2xlVXAsXG4gIGZhTW9iaWxlU2NyZWVuQnV0dG9uOiBmYU1vYmlsZVNjcmVlbkJ1dHRvbixcbiAgZmFNb2JpbGVBbHQ6IGZhTW9iaWxlQWx0LFxuICBmYVZvbHVtZUhpZ2g6IGZhVm9sdW1lSGlnaCxcbiAgZmFWb2x1bWVVcDogZmFWb2x1bWVVcCxcbiAgZmFVc2Vyc1JheXM6IGZhVXNlcnNSYXlzLFxuICBmYVdhbGxldDogZmFXYWxsZXQsXG4gIGZhQ2xpcGJvYXJkQ2hlY2s6IGZhQ2xpcGJvYXJkQ2hlY2ssXG4gIGZhRmlsZUF1ZGlvOiBmYUZpbGVBdWRpbyxcbiAgZmFCdXJnZXI6IGZhQnVyZ2VyLFxuICBmYUhhbWJ1cmdlcjogZmFIYW1idXJnZXIsXG4gIGZhV3JlbmNoOiBmYVdyZW5jaCxcbiAgZmFCdWdzOiBmYUJ1Z3MsXG4gIGZhUnVwZWVTaWduOiBmYVJ1cGVlU2lnbixcbiAgZmFSdXBlZTogZmFSdXBlZSxcbiAgZmFGaWxlSW1hZ2U6IGZhRmlsZUltYWdlLFxuICBmYUNpcmNsZVF1ZXN0aW9uOiBmYUNpcmNsZVF1ZXN0aW9uLFxuICBmYVF1ZXN0aW9uQ2lyY2xlOiBmYVF1ZXN0aW9uQ2lyY2xlLFxuICBmYVBsYW5lRGVwYXJ0dXJlOiBmYVBsYW5lRGVwYXJ0dXJlLFxuICBmYUhhbmRzaGFrZVNsYXNoOiBmYUhhbmRzaGFrZVNsYXNoLFxuICBmYUJvb2tCb29rbWFyazogZmFCb29rQm9va21hcmssXG4gIGZhQ29kZUJyYW5jaDogZmFDb2RlQnJhbmNoLFxuICBmYUhhdENvd2JveTogZmFIYXRDb3dib3ksXG4gIGZhQnJpZGdlOiBmYUJyaWRnZSxcbiAgZmFQaG9uZUZsaXA6IGZhUGhvbmVGbGlwLFxuICBmYVBob25lQWx0OiBmYVBob25lQWx0LFxuICBmYVRydWNrRnJvbnQ6IGZhVHJ1Y2tGcm9udCxcbiAgZmFDYXQ6IGZhQ2F0LFxuICBmYUFuY2hvckNpcmNsZUV4Y2xhbWF0aW9uOiBmYUFuY2hvckNpcmNsZUV4Y2xhbWF0aW9uLFxuICBmYVRydWNrRmllbGQ6IGZhVHJ1Y2tGaWVsZCxcbiAgZmFSb3V0ZTogZmFSb3V0ZSxcbiAgZmFDbGlwYm9hcmRRdWVzdGlvbjogZmFDbGlwYm9hcmRRdWVzdGlvbixcbiAgZmFQYW5vcmFtYTogZmFQYW5vcmFtYSxcbiAgZmFDb21tZW50TWVkaWNhbDogZmFDb21tZW50TWVkaWNhbCxcbiAgZmFUZWV0aE9wZW46IGZhVGVldGhPcGVuLFxuICBmYUZpbGVDaXJjbGVNaW51czogZmFGaWxlQ2lyY2xlTWludXMsXG4gIGZhVGFnczogZmFUYWdzLFxuICBmYVdpbmVHbGFzczogZmFXaW5lR2xhc3MsXG4gIGZhRm9yd2FyZEZhc3Q6IGZhRm9yd2FyZEZhc3QsXG4gIGZhRmFzdEZvcndhcmQ6IGZhRmFzdEZvcndhcmQsXG4gIGZhRmFjZU1laEJsYW5rOiBmYUZhY2VNZWhCbGFuayxcbiAgZmFNZWhCbGFuazogZmFNZWhCbGFuayxcbiAgZmFTcXVhcmVQYXJraW5nOiBmYVNxdWFyZVBhcmtpbmcsXG4gIGZhUGFya2luZzogZmFQYXJraW5nLFxuICBmYUhvdXNlU2lnbmFsOiBmYUhvdXNlU2lnbmFsLFxuICBmYUJhcnNQcm9ncmVzczogZmFCYXJzUHJvZ3Jlc3MsXG4gIGZhVGFza3NBbHQ6IGZhVGFza3NBbHQsXG4gIGZhRmF1Y2V0RHJpcDogZmFGYXVjZXREcmlwLFxuICBmYUNhcnRGbGF0YmVkOiBmYUNhcnRGbGF0YmVkLFxuICBmYURvbGx5RmxhdGJlZDogZmFEb2xseUZsYXRiZWQsXG4gIGZhQmFuU21va2luZzogZmFCYW5TbW9raW5nLFxuICBmYVNtb2tpbmdCYW46IGZhU21va2luZ0JhbixcbiAgZmFUZXJtaW5hbDogZmFUZXJtaW5hbCxcbiAgZmFNb2JpbGVCdXR0b246IGZhTW9iaWxlQnV0dG9uLFxuICBmYUhvdXNlTWVkaWNhbEZsYWc6IGZhSG91c2VNZWRpY2FsRmxhZyxcbiAgZmFCYXNrZXRTaG9wcGluZzogZmFCYXNrZXRTaG9wcGluZyxcbiAgZmFTaG9wcGluZ0Jhc2tldDogZmFTaG9wcGluZ0Jhc2tldCxcbiAgZmFUYXBlOiBmYVRhcGUsXG4gIGZhQnVzU2ltcGxlOiBmYUJ1c1NpbXBsZSxcbiAgZmFCdXNBbHQ6IGZhQnVzQWx0LFxuICBmYUV5ZTogZmFFeWUsXG4gIGZhRmFjZVNhZENyeTogZmFGYWNlU2FkQ3J5LFxuICBmYVNhZENyeTogZmFTYWRDcnksXG4gIGZhQXVkaW9EZXNjcmlwdGlvbjogZmFBdWRpb0Rlc2NyaXB0aW9uLFxuICBmYVBlcnNvbk1pbGl0YXJ5VG9QZXJzb246IGZhUGVyc29uTWlsaXRhcnlUb1BlcnNvbixcbiAgZmFGaWxlU2hpZWxkOiBmYUZpbGVTaGllbGQsXG4gIGZhVXNlclNsYXNoOiBmYVVzZXJTbGFzaCxcbiAgZmFQZW46IGZhUGVuLFxuICBmYVRvd2VyT2JzZXJ2YXRpb246IGZhVG93ZXJPYnNlcnZhdGlvbixcbiAgZmFGaWxlQ29kZTogZmFGaWxlQ29kZSxcbiAgZmFTaWduYWw6IGZhU2lnbmFsLFxuICBmYVNpZ25hbDU6IGZhU2lnbmFsNSxcbiAgZmFTaWduYWxQZXJmZWN0OiBmYVNpZ25hbFBlcmZlY3QsXG4gIGZhQnVzOiBmYUJ1cyxcbiAgZmFIZWFydENpcmNsZVhtYXJrOiBmYUhlYXJ0Q2lyY2xlWG1hcmssXG4gIGZhSG91c2VDaGltbmV5OiBmYUhvdXNlQ2hpbW5leSxcbiAgZmFIb21lTGc6IGZhSG9tZUxnLFxuICBmYVdpbmRvd01heGltaXplOiBmYVdpbmRvd01heGltaXplLFxuICBmYUZhY2VGcm93bjogZmFGYWNlRnJvd24sXG4gIGZhRnJvd246IGZhRnJvd24sXG4gIGZhUHJlc2NyaXB0aW9uOiBmYVByZXNjcmlwdGlvbixcbiAgZmFTaG9wOiBmYVNob3AsXG4gIGZhU3RvcmVBbHQ6IGZhU3RvcmVBbHQsXG4gIGZhRmxvcHB5RGlzazogZmFGbG9wcHlEaXNrLFxuICBmYVNhdmU6IGZhU2F2ZSxcbiAgZmFWaWhhcmE6IGZhVmloYXJhLFxuICBmYVNjYWxlVW5iYWxhbmNlZDogZmFTY2FsZVVuYmFsYW5jZWQsXG4gIGZhQmFsYW5jZVNjYWxlTGVmdDogZmFCYWxhbmNlU2NhbGVMZWZ0LFxuICBmYVNvcnRVcDogZmFTb3J0VXAsXG4gIGZhU29ydEFzYzogZmFTb3J0QXNjLFxuICBmYUNvbW1lbnREb3RzOiBmYUNvbW1lbnREb3RzLFxuICBmYUNvbW1lbnRpbmc6IGZhQ29tbWVudGluZyxcbiAgZmFQbGFudFdpbHQ6IGZhUGxhbnRXaWx0LFxuICBmYURpYW1vbmQ6IGZhRGlhbW9uZCxcbiAgZmFGYWNlR3JpblNxdWludDogZmFGYWNlR3JpblNxdWludCxcbiAgZmFHcmluU3F1aW50OiBmYUdyaW5TcXVpbnQsXG4gIGZhSGFuZEhvbGRpbmdEb2xsYXI6IGZhSGFuZEhvbGRpbmdEb2xsYXIsXG4gIGZhSGFuZEhvbGRpbmdVc2Q6IGZhSGFuZEhvbGRpbmdVc2QsXG4gIGZhQmFjdGVyaXVtOiBmYUJhY3Rlcml1bSxcbiAgZmFIYW5kUG9pbnRlcjogZmFIYW5kUG9pbnRlcixcbiAgZmFEcnVtU3RlZWxwYW46IGZhRHJ1bVN0ZWVscGFuLFxuICBmYUhhbmRTY2lzc29yczogZmFIYW5kU2Npc3NvcnMsXG4gIGZhSGFuZHNQcmF5aW5nOiBmYUhhbmRzUHJheWluZyxcbiAgZmFQcmF5aW5nSGFuZHM6IGZhUHJheWluZ0hhbmRzLFxuICBmYUFycm93Um90YXRlUmlnaHQ6IGZhQXJyb3dSb3RhdGVSaWdodCxcbiAgZmFBcnJvd1JpZ2h0Um90YXRlOiBmYUFycm93UmlnaHRSb3RhdGUsXG4gIGZhQXJyb3dSb3RhdGVGb3J3YXJkOiBmYUFycm93Um90YXRlRm9yd2FyZCxcbiAgZmFSZWRvOiBmYVJlZG8sXG4gIGZhQmlvaGF6YXJkOiBmYUJpb2hhemFyZCxcbiAgZmFMb2NhdGlvbkNyb3NzaGFpcnM6IGZhTG9jYXRpb25Dcm9zc2hhaXJzLFxuICBmYUxvY2F0aW9uOiBmYUxvY2F0aW9uLFxuICBmYU1hcnNEb3VibGU6IGZhTWFyc0RvdWJsZSxcbiAgZmFDaGlsZERyZXNzOiBmYUNoaWxkRHJlc3MsXG4gIGZhVXNlcnNCZXR3ZWVuTGluZXM6IGZhVXNlcnNCZXR3ZWVuTGluZXMsXG4gIGZhTHVuZ3NWaXJ1czogZmFMdW5nc1ZpcnVzLFxuICBmYUZhY2VHcmluVGVhcnM6IGZhRmFjZUdyaW5UZWFycyxcbiAgZmFHcmluVGVhcnM6IGZhR3JpblRlYXJzLFxuICBmYVBob25lOiBmYVBob25lLFxuICBmYUNhbGVuZGFyWG1hcms6IGZhQ2FsZW5kYXJYbWFyayxcbiAgZmFDYWxlbmRhclRpbWVzOiBmYUNhbGVuZGFyVGltZXMsXG4gIGZhQ2hpbGRSZWFjaGluZzogZmFDaGlsZFJlYWNoaW5nLFxuICBmYUhlYWRTaWRlVmlydXM6IGZhSGVhZFNpZGVWaXJ1cyxcbiAgZmFVc2VyR2VhcjogZmFVc2VyR2VhcixcbiAgZmFVc2VyQ29nOiBmYVVzZXJDb2csXG4gIGZhQXJyb3dVcDE5OiBmYUFycm93VXAxOSxcbiAgZmFTb3J0TnVtZXJpY1VwOiBmYVNvcnROdW1lcmljVXAsXG4gIGZhRG9vckNsb3NlZDogZmFEb29yQ2xvc2VkLFxuICBmYVNoaWVsZFZpcnVzOiBmYVNoaWVsZFZpcnVzLFxuICBmYURpY2VTaXg6IGZhRGljZVNpeCxcbiAgZmFNb3NxdWl0b05ldDogZmFNb3NxdWl0b05ldCxcbiAgZmFCcmlkZ2VXYXRlcjogZmFCcmlkZ2VXYXRlcixcbiAgZmFQZXJzb25Cb290aDogZmFQZXJzb25Cb290aCxcbiAgZmFUZXh0V2lkdGg6IGZhVGV4dFdpZHRoLFxuICBmYUhhdFdpemFyZDogZmFIYXRXaXphcmQsXG4gIGZhUGVuRmFuY3k6IGZhUGVuRmFuY3ksXG4gIGZhUGVyc29uRGlnZ2luZzogZmFQZXJzb25EaWdnaW5nLFxuICBmYURpZ2dpbmc6IGZhRGlnZ2luZyxcbiAgZmFUcmFzaDogZmFUcmFzaCxcbiAgZmFHYXVnZVNpbXBsZTogZmFHYXVnZVNpbXBsZSxcbiAgZmFHYXVnZVNpbXBsZU1lZDogZmFHYXVnZVNpbXBsZU1lZCxcbiAgZmFUYWNob21ldGVyQXZlcmFnZTogZmFUYWNob21ldGVyQXZlcmFnZSxcbiAgZmFCb29rTWVkaWNhbDogZmFCb29rTWVkaWNhbCxcbiAgZmFQb286IGZhUG9vLFxuICBmYVF1b3RlUmlnaHQ6IGZhUXVvdGVSaWdodCxcbiAgZmFRdW90ZVJpZ2h0QWx0OiBmYVF1b3RlUmlnaHRBbHQsXG4gIGZhU2hpcnQ6IGZhU2hpcnQsXG4gIGZhVFNoaXJ0OiBmYVRTaGlydCxcbiAgZmFUc2hpcnQ6IGZhVHNoaXJ0LFxuICBmYUN1YmVzOiBmYUN1YmVzLFxuICBmYURpdmlkZTogZmFEaXZpZGUsXG4gIGZhVGVuZ2VTaWduOiBmYVRlbmdlU2lnbixcbiAgZmFUZW5nZTogZmFUZW5nZSxcbiAgZmFIZWFkcGhvbmVzOiBmYUhlYWRwaG9uZXMsXG4gIGZhSGFuZHNIb2xkaW5nOiBmYUhhbmRzSG9sZGluZyxcbiAgZmFIYW5kc0NsYXBwaW5nOiBmYUhhbmRzQ2xhcHBpbmcsXG4gIGZhUmVwdWJsaWNhbjogZmFSZXB1YmxpY2FuLFxuICBmYUFycm93TGVmdDogZmFBcnJvd0xlZnQsXG4gIGZhUGVyc29uQ2lyY2xlWG1hcms6IGZhUGVyc29uQ2lyY2xlWG1hcmssXG4gIGZhUnVsZXI6IGZhUnVsZXIsXG4gIGZhQWxpZ25MZWZ0OiBmYUFsaWduTGVmdCxcbiAgZmFEaWNlRDY6IGZhRGljZUQ2LFxuICBmYVJlc3Ryb29tOiBmYVJlc3Ryb29tLFxuICBmYUo6IGZhSixcbiAgZmFVc2Vyc1ZpZXdmaW5kZXI6IGZhVXNlcnNWaWV3ZmluZGVyLFxuICBmYUZpbGVWaWRlbzogZmFGaWxlVmlkZW8sXG4gIGZhVXBSaWdodEZyb21TcXVhcmU6IGZhVXBSaWdodEZyb21TcXVhcmUsXG4gIGZhRXh0ZXJuYWxMaW5rQWx0OiBmYUV4dGVybmFsTGlua0FsdCxcbiAgZmFUYWJsZUNlbGxzOiBmYVRhYmxlQ2VsbHMsXG4gIGZhVGg6IGZhVGgsXG4gIGZhRmlsZVBkZjogZmFGaWxlUGRmLFxuICBmYUJvb2tCaWJsZTogZmFCb29rQmlibGUsXG4gIGZhQmlibGU6IGZhQmlibGUsXG4gIGZhTzogZmFPLFxuICBmYVN1aXRjYXNlTWVkaWNhbDogZmFTdWl0Y2FzZU1lZGljYWwsXG4gIGZhTWVka2l0OiBmYU1lZGtpdCxcbiAgZmFVc2VyU2VjcmV0OiBmYVVzZXJTZWNyZXQsXG4gIGZhT3R0ZXI6IGZhT3R0ZXIsXG4gIGZhUGVyc29uRHJlc3M6IGZhUGVyc29uRHJlc3MsXG4gIGZhRmVtYWxlOiBmYUZlbWFsZSxcbiAgZmFDb21tZW50RG9sbGFyOiBmYUNvbW1lbnREb2xsYXIsXG4gIGZhQnVzaW5lc3NUaW1lOiBmYUJ1c2luZXNzVGltZSxcbiAgZmFCcmllZmNhc2VDbG9jazogZmFCcmllZmNhc2VDbG9jayxcbiAgZmFUYWJsZUNlbGxzTGFyZ2U6IGZhVGFibGVDZWxsc0xhcmdlLFxuICBmYVRoTGFyZ2U6IGZhVGhMYXJnZSxcbiAgZmFCb29rVGFuYWtoOiBmYUJvb2tUYW5ha2gsXG4gIGZhVGFuYWtoOiBmYVRhbmFraCxcbiAgZmFQaG9uZVZvbHVtZTogZmFQaG9uZVZvbHVtZSxcbiAgZmFWb2x1bWVDb250cm9sUGhvbmU6IGZhVm9sdW1lQ29udHJvbFBob25lLFxuICBmYUhhdENvd2JveVNpZGU6IGZhSGF0Q293Ym95U2lkZSxcbiAgZmFDbGlwYm9hcmRVc2VyOiBmYUNsaXBib2FyZFVzZXIsXG4gIGZhQ2hpbGQ6IGZhQ2hpbGQsXG4gIGZhTGlyYVNpZ246IGZhTGlyYVNpZ24sXG4gIGZhU2F0ZWxsaXRlOiBmYVNhdGVsbGl0ZSxcbiAgZmFQbGFuZUxvY2s6IGZhUGxhbmVMb2NrLFxuICBmYVRhZzogZmFUYWcsXG4gIGZhQ29tbWVudDogZmFDb21tZW50LFxuICBmYUNha2VDYW5kbGVzOiBmYUNha2VDYW5kbGVzLFxuICBmYUJpcnRoZGF5Q2FrZTogZmFCaXJ0aGRheUNha2UsXG4gIGZhQ2FrZTogZmFDYWtlLFxuICBmYUVudmVsb3BlOiBmYUVudmVsb3BlLFxuICBmYUFuZ2xlc1VwOiBmYUFuZ2xlc1VwLFxuICBmYUFuZ2xlRG91YmxlVXA6IGZhQW5nbGVEb3VibGVVcCxcbiAgZmFQYXBlcmNsaXA6IGZhUGFwZXJjbGlwLFxuICBmYUFycm93UmlnaHRUb0NpdHk6IGZhQXJyb3dSaWdodFRvQ2l0eSxcbiAgZmFSaWJib246IGZhUmliYm9uLFxuICBmYUx1bmdzOiBmYUx1bmdzLFxuICBmYUFycm93VXA5MTogZmFBcnJvd1VwOTEsXG4gIGZhU29ydE51bWVyaWNVcEFsdDogZmFTb3J0TnVtZXJpY1VwQWx0LFxuICBmYUxpdGVjb2luU2lnbjogZmFMaXRlY29pblNpZ24sXG4gIGZhQm9yZGVyTm9uZTogZmFCb3JkZXJOb25lLFxuICBmYUNpcmNsZU5vZGVzOiBmYUNpcmNsZU5vZGVzLFxuICBmYVBhcmFjaHV0ZUJveDogZmFQYXJhY2h1dGVCb3gsXG4gIGZhSW5kZW50OiBmYUluZGVudCxcbiAgZmFUcnVja0ZpZWxkVW46IGZhVHJ1Y2tGaWVsZFVuLFxuICBmYUhvdXJnbGFzczogZmFIb3VyZ2xhc3MsXG4gIGZhSG91cmdsYXNzRW1wdHk6IGZhSG91cmdsYXNzRW1wdHksXG4gIGZhTW91bnRhaW46IGZhTW91bnRhaW4sXG4gIGZhVXNlckRvY3RvcjogZmFVc2VyRG9jdG9yLFxuICBmYVVzZXJNZDogZmFVc2VyTWQsXG4gIGZhQ2lyY2xlSW5mbzogZmFDaXJjbGVJbmZvLFxuICBmYUluZm9DaXJjbGU6IGZhSW5mb0NpcmNsZSxcbiAgZmFDbG91ZE1lYXRiYWxsOiBmYUNsb3VkTWVhdGJhbGwsXG4gIGZhQ2FtZXJhOiBmYUNhbWVyYSxcbiAgZmFDYW1lcmFBbHQ6IGZhQ2FtZXJhQWx0LFxuICBmYVNxdWFyZVZpcnVzOiBmYVNxdWFyZVZpcnVzLFxuICBmYU1ldGVvcjogZmFNZXRlb3IsXG4gIGZhQ2FyT246IGZhQ2FyT24sXG4gIGZhU2xlaWdoOiBmYVNsZWlnaCxcbiAgZmFBcnJvd0Rvd24xOTogZmFBcnJvd0Rvd24xOSxcbiAgZmFTb3J0TnVtZXJpY0FzYzogZmFTb3J0TnVtZXJpY0FzYyxcbiAgZmFTb3J0TnVtZXJpY0Rvd246IGZhU29ydE51bWVyaWNEb3duLFxuICBmYUhhbmRIb2xkaW5nRHJvcGxldDogZmFIYW5kSG9sZGluZ0Ryb3BsZXQsXG4gIGZhSGFuZEhvbGRpbmdXYXRlcjogZmFIYW5kSG9sZGluZ1dhdGVyLFxuICBmYVdhdGVyOiBmYVdhdGVyLFxuICBmYUNhbGVuZGFyQ2hlY2s6IGZhQ2FsZW5kYXJDaGVjayxcbiAgZmFCcmFpbGxlOiBmYUJyYWlsbGUsXG4gIGZhUHJlc2NyaXB0aW9uQm90dGxlTWVkaWNhbDogZmFQcmVzY3JpcHRpb25Cb3R0bGVNZWRpY2FsLFxuICBmYVByZXNjcmlwdGlvbkJvdHRsZUFsdDogZmFQcmVzY3JpcHRpb25Cb3R0bGVBbHQsXG4gIGZhTGFuZG1hcms6IGZhTGFuZG1hcmssXG4gIGZhVHJ1Y2s6IGZhVHJ1Y2ssXG4gIGZhQ3Jvc3NoYWlyczogZmFDcm9zc2hhaXJzLFxuICBmYVBlcnNvbkNhbmU6IGZhUGVyc29uQ2FuZSxcbiAgZmFUZW50OiBmYVRlbnQsXG4gIGZhVmVzdFBhdGNoZXM6IGZhVmVzdFBhdGNoZXMsXG4gIGZhQ2hlY2tEb3VibGU6IGZhQ2hlY2tEb3VibGUsXG4gIGZhQXJyb3dEb3duQVo6IGZhQXJyb3dEb3duQVosXG4gIGZhU29ydEFscGhhQXNjOiBmYVNvcnRBbHBoYUFzYyxcbiAgZmFTb3J0QWxwaGFEb3duOiBmYVNvcnRBbHBoYURvd24sXG4gIGZhTW9uZXlCaWxsV2hlYXQ6IGZhTW9uZXlCaWxsV2hlYXQsXG4gIGZhQ29va2llOiBmYUNvb2tpZSxcbiAgZmFBcnJvd1JvdGF0ZUxlZnQ6IGZhQXJyb3dSb3RhdGVMZWZ0LFxuICBmYUFycm93TGVmdFJvdGF0ZTogZmFBcnJvd0xlZnRSb3RhdGUsXG4gIGZhQXJyb3dSb3RhdGVCYWNrOiBmYUFycm93Um90YXRlQmFjayxcbiAgZmFBcnJvd1JvdGF0ZUJhY2t3YXJkOiBmYUFycm93Um90YXRlQmFja3dhcmQsXG4gIGZhVW5kbzogZmFVbmRvLFxuICBmYUhhcmREcml2ZTogZmFIYXJkRHJpdmUsXG4gIGZhSGRkOiBmYUhkZCxcbiAgZmFGYWNlR3JpblNxdWludFRlYXJzOiBmYUZhY2VHcmluU3F1aW50VGVhcnMsXG4gIGZhR3JpblNxdWludFRlYXJzOiBmYUdyaW5TcXVpbnRUZWFycyxcbiAgZmFEdW1iYmVsbDogZmFEdW1iYmVsbCxcbiAgZmFSZWN0YW5nbGVMaXN0OiBmYVJlY3RhbmdsZUxpc3QsXG4gIGZhTGlzdEFsdDogZmFMaXN0QWx0LFxuICBmYVRhcnBEcm9wbGV0OiBmYVRhcnBEcm9wbGV0LFxuICBmYUhvdXNlTWVkaWNhbENpcmNsZUNoZWNrOiBmYUhvdXNlTWVkaWNhbENpcmNsZUNoZWNrLFxuICBmYVBlcnNvblNraWluZ05vcmRpYzogZmFQZXJzb25Ta2lpbmdOb3JkaWMsXG4gIGZhU2tpaW5nTm9yZGljOiBmYVNraWluZ05vcmRpYyxcbiAgZmFDYWxlbmRhclBsdXM6IGZhQ2FsZW5kYXJQbHVzLFxuICBmYVBsYW5lQXJyaXZhbDogZmFQbGFuZUFycml2YWwsXG4gIGZhQ2lyY2xlTGVmdDogZmFDaXJjbGVMZWZ0LFxuICBmYUFycm93QWx0Q2lyY2xlTGVmdDogZmFBcnJvd0FsdENpcmNsZUxlZnQsXG4gIGZhVHJhaW5TdWJ3YXk6IGZhVHJhaW5TdWJ3YXksXG4gIGZhU3Vid2F5OiBmYVN1YndheSxcbiAgZmFDaGFydEdhbnR0OiBmYUNoYXJ0R2FudHQsXG4gIGZhSW5kaWFuUnVwZWVTaWduOiBmYUluZGlhblJ1cGVlU2lnbixcbiAgZmFJbmRpYW5SdXBlZTogZmFJbmRpYW5SdXBlZSxcbiAgZmFJbnI6IGZhSW5yLFxuICBmYUNyb3BTaW1wbGU6IGZhQ3JvcFNpbXBsZSxcbiAgZmFDcm9wQWx0OiBmYUNyb3BBbHQsXG4gIGZhTW9uZXlCaWxsMTogZmFNb25leUJpbGwxLFxuICBmYU1vbmV5QmlsbEFsdDogZmFNb25leUJpbGxBbHQsXG4gIGZhTGVmdExvbmc6IGZhTGVmdExvbmcsXG4gIGZhTG9uZ0Fycm93QWx0TGVmdDogZmFMb25nQXJyb3dBbHRMZWZ0LFxuICBmYURuYTogZmFEbmEsXG4gIGZhVmlydXNTbGFzaDogZmFWaXJ1c1NsYXNoLFxuICBmYU1pbnVzOiBmYU1pbnVzLFxuICBmYVN1YnRyYWN0OiBmYVN1YnRyYWN0LFxuICBmYUNoZXNzOiBmYUNoZXNzLFxuICBmYUFycm93TGVmdExvbmc6IGZhQXJyb3dMZWZ0TG9uZyxcbiAgZmFMb25nQXJyb3dMZWZ0OiBmYUxvbmdBcnJvd0xlZnQsXG4gIGZhUGx1Z0NpcmNsZUNoZWNrOiBmYVBsdWdDaXJjbGVDaGVjayxcbiAgZmFTdHJlZXRWaWV3OiBmYVN0cmVldFZpZXcsXG4gIGZhRnJhbmNTaWduOiBmYUZyYW5jU2lnbixcbiAgZmFWb2x1bWVPZmY6IGZhVm9sdW1lT2ZmLFxuICBmYUhhbmRzQXNsSW50ZXJwcmV0aW5nOiBmYUhhbmRzQXNsSW50ZXJwcmV0aW5nLFxuICBmYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nOiBmYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nLFxuICBmYUFzbEludGVycHJldGluZzogZmFBc2xJbnRlcnByZXRpbmcsXG4gIGZhSGFuZHNBbWVyaWNhblNpZ25MYW5ndWFnZUludGVycHJldGluZzogZmFIYW5kc0FtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nLFxuICBmYUdlYXI6IGZhR2VhcixcbiAgZmFDb2c6IGZhQ29nLFxuICBmYURyb3BsZXRTbGFzaDogZmFEcm9wbGV0U2xhc2gsXG4gIGZhVGludFNsYXNoOiBmYVRpbnRTbGFzaCxcbiAgZmFNb3NxdWU6IGZhTW9zcXVlLFxuICBmYU1vc3F1aXRvOiBmYU1vc3F1aXRvLFxuICBmYVN0YXJPZkRhdmlkOiBmYVN0YXJPZkRhdmlkLFxuICBmYVBlcnNvbk1pbGl0YXJ5UmlmbGU6IGZhUGVyc29uTWlsaXRhcnlSaWZsZSxcbiAgZmFDYXJ0U2hvcHBpbmc6IGZhQ2FydFNob3BwaW5nLFxuICBmYVNob3BwaW5nQ2FydDogZmFTaG9wcGluZ0NhcnQsXG4gIGZhVmlhbHM6IGZhVmlhbHMsXG4gIGZhUGx1Z0NpcmNsZVBsdXM6IGZhUGx1Z0NpcmNsZVBsdXMsXG4gIGZhUGxhY2VPZldvcnNoaXA6IGZhUGxhY2VPZldvcnNoaXAsXG4gIGZhR3JpcFZlcnRpY2FsOiBmYUdyaXBWZXJ0aWNhbCxcbiAgZmFBcnJvd1R1cm5VcDogZmFBcnJvd1R1cm5VcCxcbiAgZmFMZXZlbFVwOiBmYUxldmVsVXAsXG4gIGZhVTogZmFVLFxuICBmYVNxdWFyZVJvb3RWYXJpYWJsZTogZmFTcXVhcmVSb290VmFyaWFibGUsXG4gIGZhU3F1YXJlUm9vdEFsdDogZmFTcXVhcmVSb290QWx0LFxuICBmYUNsb2NrOiBmYUNsb2NrLFxuICBmYUNsb2NrRm91cjogZmFDbG9ja0ZvdXIsXG4gIGZhQmFja3dhcmRTdGVwOiBmYUJhY2t3YXJkU3RlcCxcbiAgZmFTdGVwQmFja3dhcmQ6IGZhU3RlcEJhY2t3YXJkLFxuICBmYVBhbGxldDogZmFQYWxsZXQsXG4gIGZhRmF1Y2V0OiBmYUZhdWNldCxcbiAgZmFCYXNlYmFsbEJhdEJhbGw6IGZhQmFzZWJhbGxCYXRCYWxsLFxuICBmYVM6IGZhUyxcbiAgZmFUaW1lbGluZTogZmFUaW1lbGluZSxcbiAgZmFLZXlib2FyZDogZmFLZXlib2FyZCxcbiAgZmFDYXJldERvd246IGZhQ2FyZXREb3duLFxuICBmYUhvdXNlQ2hpbW5leU1lZGljYWw6IGZhSG91c2VDaGltbmV5TWVkaWNhbCxcbiAgZmFDbGluaWNNZWRpY2FsOiBmYUNsaW5pY01lZGljYWwsXG4gIGZhVGVtcGVyYXR1cmVUaHJlZVF1YXJ0ZXJzOiBmYVRlbXBlcmF0dXJlVGhyZWVRdWFydGVycyxcbiAgZmFUZW1wZXJhdHVyZTM6IGZhVGVtcGVyYXR1cmUzLFxuICBmYVRoZXJtb21ldGVyMzogZmFUaGVybW9tZXRlcjMsXG4gIGZhVGhlcm1vbWV0ZXJUaHJlZVF1YXJ0ZXJzOiBmYVRoZXJtb21ldGVyVGhyZWVRdWFydGVycyxcbiAgZmFNb2JpbGVTY3JlZW46IGZhTW9iaWxlU2NyZWVuLFxuICBmYU1vYmlsZUFuZHJvaWRBbHQ6IGZhTW9iaWxlQW5kcm9pZEFsdCxcbiAgZmFQbGFuZVVwOiBmYVBsYW5lVXAsXG4gIGZhUGlnZ3lCYW5rOiBmYVBpZ2d5QmFuayxcbiAgZmFCYXR0ZXJ5SGFsZjogZmFCYXR0ZXJ5SGFsZixcbiAgZmFCYXR0ZXJ5MzogZmFCYXR0ZXJ5MyxcbiAgZmFNb3VudGFpbkNpdHk6IGZhTW91bnRhaW5DaXR5LFxuICBmYUNvaW5zOiBmYUNvaW5zLFxuICBmYUtoYW5kYTogZmFLaGFuZGEsXG4gIGZhU2xpZGVyczogZmFTbGlkZXJzLFxuICBmYVNsaWRlcnNIOiBmYVNsaWRlcnNILFxuICBmYUZvbGRlclRyZWU6IGZhRm9sZGVyVHJlZSxcbiAgZmFOZXR3b3JrV2lyZWQ6IGZhTmV0d29ya1dpcmVkLFxuICBmYU1hcFBpbjogZmFNYXBQaW4sXG4gIGZhSGFtc2E6IGZhSGFtc2EsXG4gIGZhQ2VudFNpZ246IGZhQ2VudFNpZ24sXG4gIGZhRmxhc2s6IGZhRmxhc2ssXG4gIGZhUGVyc29uUHJlZ25hbnQ6IGZhUGVyc29uUHJlZ25hbnQsXG4gIGZhV2FuZFNwYXJrbGVzOiBmYVdhbmRTcGFya2xlcyxcbiAgZmFFbGxpcHNpc1ZlcnRpY2FsOiBmYUVsbGlwc2lzVmVydGljYWwsXG4gIGZhRWxsaXBzaXNWOiBmYUVsbGlwc2lzVixcbiAgZmFUaWNrZXQ6IGZhVGlja2V0LFxuICBmYVBvd2VyT2ZmOiBmYVBvd2VyT2ZmLFxuICBmYVJpZ2h0TG9uZzogZmFSaWdodExvbmcsXG4gIGZhTG9uZ0Fycm93QWx0UmlnaHQ6IGZhTG9uZ0Fycm93QWx0UmlnaHQsXG4gIGZhRmxhZ1VzYTogZmFGbGFnVXNhLFxuICBmYUxhcHRvcEZpbGU6IGZhTGFwdG9wRmlsZSxcbiAgZmFUdHk6IGZhVHR5LFxuICBmYVRlbGV0eXBlOiBmYVRlbGV0eXBlLFxuICBmYURpYWdyYW1OZXh0OiBmYURpYWdyYW1OZXh0LFxuICBmYVBlcnNvblJpZmxlOiBmYVBlcnNvblJpZmxlLFxuICBmYUhvdXNlTWVkaWNhbENpcmNsZUV4Y2xhbWF0aW9uOiBmYUhvdXNlTWVkaWNhbENpcmNsZUV4Y2xhbWF0aW9uLFxuICBmYUNsb3NlZENhcHRpb25pbmc6IGZhQ2xvc2VkQ2FwdGlvbmluZyxcbiAgZmFQZXJzb25IaWtpbmc6IGZhUGVyc29uSGlraW5nLFxuICBmYUhpa2luZzogZmFIaWtpbmcsXG4gIGZhVmVudXNEb3VibGU6IGZhVmVudXNEb3VibGUsXG4gIGZhSW1hZ2VzOiBmYUltYWdlcyxcbiAgZmFDYWxjdWxhdG9yOiBmYUNhbGN1bGF0b3IsXG4gIGZhUGVvcGxlUHVsbGluZzogZmFQZW9wbGVQdWxsaW5nLFxuICBmYU46IGZhTixcbiAgZmFDYWJsZUNhcjogZmFDYWJsZUNhcixcbiAgZmFUcmFtOiBmYVRyYW0sXG4gIGZhQ2xvdWRSYWluOiBmYUNsb3VkUmFpbixcbiAgZmFCdWlsZGluZ0NpcmNsZVhtYXJrOiBmYUJ1aWxkaW5nQ2lyY2xlWG1hcmssXG4gIGZhU2hpcDogZmFTaGlwLFxuICBmYUFycm93c0Rvd25Ub0xpbmU6IGZhQXJyb3dzRG93blRvTGluZSxcbiAgZmFEb3dubG9hZDogZmFEb3dubG9hZCxcbiAgZmFGYWNlR3JpbjogZmFGYWNlR3JpbixcbiAgZmFHcmluOiBmYUdyaW4sXG4gIGZhRGVsZXRlTGVmdDogZmFEZWxldGVMZWZ0LFxuICBmYUJhY2tzcGFjZTogZmFCYWNrc3BhY2UsXG4gIGZhRXllRHJvcHBlcjogZmFFeWVEcm9wcGVyLFxuICBmYUV5ZURyb3BwZXJFbXB0eTogZmFFeWVEcm9wcGVyRW1wdHksXG4gIGZhRXllZHJvcHBlcjogZmFFeWVkcm9wcGVyLFxuICBmYUZpbGVDaXJjbGVDaGVjazogZmFGaWxlQ2lyY2xlQ2hlY2ssXG4gIGZhRm9yd2FyZDogZmFGb3J3YXJkLFxuICBmYU1vYmlsZTogZmFNb2JpbGUsXG4gIGZhTW9iaWxlQW5kcm9pZDogZmFNb2JpbGVBbmRyb2lkLFxuICBmYU1vYmlsZVBob25lOiBmYU1vYmlsZVBob25lLFxuICBmYUZhY2VNZWg6IGZhRmFjZU1laCxcbiAgZmFNZWg6IGZhTWVoLFxuICBmYUFsaWduQ2VudGVyOiBmYUFsaWduQ2VudGVyLFxuICBmYUJvb2tTa3VsbDogZmFCb29rU2t1bGwsXG4gIGZhQm9va0RlYWQ6IGZhQm9va0RlYWQsXG4gIGZhSWRDYXJkOiBmYUlkQ2FyZCxcbiAgZmFEcml2ZXJzTGljZW5zZTogZmFEcml2ZXJzTGljZW5zZSxcbiAgZmFPdXRkZW50OiBmYU91dGRlbnQsXG4gIGZhRGVkZW50OiBmYURlZGVudCxcbiAgZmFIZWFydENpcmNsZUV4Y2xhbWF0aW9uOiBmYUhlYXJ0Q2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhSG91c2U6IGZhSG91c2UsXG4gIGZhSG9tZTogZmFIb21lLFxuICBmYUhvbWVBbHQ6IGZhSG9tZUFsdCxcbiAgZmFIb21lTGdBbHQ6IGZhSG9tZUxnQWx0LFxuICBmYUNhbGVuZGFyV2VlazogZmFDYWxlbmRhcldlZWssXG4gIGZhTGFwdG9wTWVkaWNhbDogZmFMYXB0b3BNZWRpY2FsLFxuICBmYUI6IGZhQixcbiAgZmFGaWxlTWVkaWNhbDogZmFGaWxlTWVkaWNhbCxcbiAgZmFEaWNlT25lOiBmYURpY2VPbmUsXG4gIGZhS2l3aUJpcmQ6IGZhS2l3aUJpcmQsXG4gIGZhQXJyb3dSaWdodEFycm93TGVmdDogZmFBcnJvd1JpZ2h0QXJyb3dMZWZ0LFxuICBmYUV4Y2hhbmdlOiBmYUV4Y2hhbmdlLFxuICBmYVJvdGF0ZVJpZ2h0OiBmYVJvdGF0ZVJpZ2h0LFxuICBmYVJlZG9BbHQ6IGZhUmVkb0FsdCxcbiAgZmFSb3RhdGVGb3J3YXJkOiBmYVJvdGF0ZUZvcndhcmQsXG4gIGZhVXRlbnNpbHM6IGZhVXRlbnNpbHMsXG4gIGZhQ3V0bGVyeTogZmFDdXRsZXJ5LFxuICBmYUFycm93VXBXaWRlU2hvcnQ6IGZhQXJyb3dVcFdpZGVTaG9ydCxcbiAgZmFTb3J0QW1vdW50VXA6IGZhU29ydEFtb3VudFVwLFxuICBmYU1pbGxTaWduOiBmYU1pbGxTaWduLFxuICBmYUJvd2xSaWNlOiBmYUJvd2xSaWNlLFxuICBmYVNrdWxsOiBmYVNrdWxsLFxuICBmYVRvd2VyQnJvYWRjYXN0OiBmYVRvd2VyQnJvYWRjYXN0LFxuICBmYUJyb2FkY2FzdFRvd2VyOiBmYUJyb2FkY2FzdFRvd2VyLFxuICBmYVRydWNrUGlja3VwOiBmYVRydWNrUGlja3VwLFxuICBmYVVwTG9uZzogZmFVcExvbmcsXG4gIGZhTG9uZ0Fycm93QWx0VXA6IGZhTG9uZ0Fycm93QWx0VXAsXG4gIGZhU3RvcDogZmFTdG9wLFxuICBmYUNvZGVNZXJnZTogZmFDb2RlTWVyZ2UsXG4gIGZhVXBsb2FkOiBmYVVwbG9hZCxcbiAgZmFIdXJyaWNhbmU6IGZhSHVycmljYW5lLFxuICBmYU1vdW5kOiBmYU1vdW5kLFxuICBmYVRvaWxldFBvcnRhYmxlOiBmYVRvaWxldFBvcnRhYmxlLFxuICBmYUNvbXBhY3REaXNjOiBmYUNvbXBhY3REaXNjLFxuICBmYUZpbGVBcnJvd0Rvd246IGZhRmlsZUFycm93RG93bixcbiAgZmFGaWxlRG93bmxvYWQ6IGZhRmlsZURvd25sb2FkLFxuICBmYUNhcmF2YW46IGZhQ2FyYXZhbixcbiAgZmFTaGllbGRDYXQ6IGZhU2hpZWxkQ2F0LFxuICBmYUJvbHQ6IGZhQm9sdCxcbiAgZmFaYXA6IGZhWmFwLFxuICBmYUdsYXNzV2F0ZXI6IGZhR2xhc3NXYXRlcixcbiAgZmFPaWxXZWxsOiBmYU9pbFdlbGwsXG4gIGZhVmF1bHQ6IGZhVmF1bHQsXG4gIGZhTWFyczogZmFNYXJzLFxuICBmYVRvaWxldDogZmFUb2lsZXQsXG4gIGZhUGxhbmVDaXJjbGVYbWFyazogZmFQbGFuZUNpcmNsZVhtYXJrLFxuICBmYVllblNpZ246IGZhWWVuU2lnbixcbiAgZmFDbnk6IGZhQ255LFxuICBmYUpweTogZmFKcHksXG4gIGZhUm1iOiBmYVJtYixcbiAgZmFZZW46IGZhWWVuLFxuICBmYVJ1YmxlU2lnbjogZmFSdWJsZVNpZ24sXG4gIGZhUm91YmxlOiBmYVJvdWJsZSxcbiAgZmFSdWI6IGZhUnViLFxuICBmYVJ1YmxlOiBmYVJ1YmxlLFxuICBmYVN1bjogZmFTdW4sXG4gIGZhR3VpdGFyOiBmYUd1aXRhcixcbiAgZmFGYWNlTGF1Z2hXaW5rOiBmYUZhY2VMYXVnaFdpbmssXG4gIGZhTGF1Z2hXaW5rOiBmYUxhdWdoV2luayxcbiAgZmFIb3JzZUhlYWQ6IGZhSG9yc2VIZWFkLFxuICBmYUJvcmVIb2xlOiBmYUJvcmVIb2xlLFxuICBmYUluZHVzdHJ5OiBmYUluZHVzdHJ5LFxuICBmYUNpcmNsZURvd246IGZhQ2lyY2xlRG93bixcbiAgZmFBcnJvd0FsdENpcmNsZURvd246IGZhQXJyb3dBbHRDaXJjbGVEb3duLFxuICBmYUFycm93c1R1cm5Ub0RvdHM6IGZhQXJyb3dzVHVyblRvRG90cyxcbiAgZmFGbG9yaW5TaWduOiBmYUZsb3JpblNpZ24sXG4gIGZhQXJyb3dEb3duU2hvcnRXaWRlOiBmYUFycm93RG93blNob3J0V2lkZSxcbiAgZmFTb3J0QW1vdW50RGVzYzogZmFTb3J0QW1vdW50RGVzYyxcbiAgZmFTb3J0QW1vdW50RG93bkFsdDogZmFTb3J0QW1vdW50RG93bkFsdCxcbiAgZmFMZXNzVGhhbjogZmFMZXNzVGhhbixcbiAgZmFBbmdsZURvd246IGZhQW5nbGVEb3duLFxuICBmYUNhclR1bm5lbDogZmFDYXJUdW5uZWwsXG4gIGZhSGVhZFNpZGVDb3VnaDogZmFIZWFkU2lkZUNvdWdoLFxuICBmYUdyaXBMaW5lczogZmFHcmlwTGluZXMsXG4gIGZhVGh1bWJzRG93bjogZmFUaHVtYnNEb3duLFxuICBmYVVzZXJMb2NrOiBmYVVzZXJMb2NrLFxuICBmYUFycm93UmlnaHRMb25nOiBmYUFycm93UmlnaHRMb25nLFxuICBmYUxvbmdBcnJvd1JpZ2h0OiBmYUxvbmdBcnJvd1JpZ2h0LFxuICBmYUFuY2hvckNpcmNsZVhtYXJrOiBmYUFuY2hvckNpcmNsZVhtYXJrLFxuICBmYUVsbGlwc2lzOiBmYUVsbGlwc2lzLFxuICBmYUVsbGlwc2lzSDogZmFFbGxpcHNpc0gsXG4gIGZhQ2hlc3NQYXduOiBmYUNoZXNzUGF3bixcbiAgZmFLaXRNZWRpY2FsOiBmYUtpdE1lZGljYWwsXG4gIGZhRmlyc3RBaWQ6IGZhRmlyc3RBaWQsXG4gIGZhUGVyc29uVGhyb3VnaFdpbmRvdzogZmFQZXJzb25UaHJvdWdoV2luZG93LFxuICBmYVRvb2xib3g6IGZhVG9vbGJveCxcbiAgZmFIYW5kc0hvbGRpbmdDaXJjbGU6IGZhSGFuZHNIb2xkaW5nQ2lyY2xlLFxuICBmYUJ1ZzogZmFCdWcsXG4gIGZhQ3JlZGl0Q2FyZDogZmFDcmVkaXRDYXJkLFxuICBmYUNyZWRpdENhcmRBbHQ6IGZhQ3JlZGl0Q2FyZEFsdCxcbiAgZmFDYXI6IGZhQ2FyLFxuICBmYUF1dG9tb2JpbGU6IGZhQXV0b21vYmlsZSxcbiAgZmFIYW5kSG9sZGluZ0hhbmQ6IGZhSGFuZEhvbGRpbmdIYW5kLFxuICBmYUJvb2tPcGVuUmVhZGVyOiBmYUJvb2tPcGVuUmVhZGVyLFxuICBmYUJvb2tSZWFkZXI6IGZhQm9va1JlYWRlcixcbiAgZmFNb3VudGFpblN1bjogZmFNb3VudGFpblN1bixcbiAgZmFBcnJvd3NMZWZ0UmlnaHRUb0xpbmU6IGZhQXJyb3dzTGVmdFJpZ2h0VG9MaW5lLFxuICBmYURpY2VEMjA6IGZhRGljZUQyMCxcbiAgZmFUcnVja0Ryb3BsZXQ6IGZhVHJ1Y2tEcm9wbGV0LFxuICBmYUZpbGVDaXJjbGVYbWFyazogZmFGaWxlQ2lyY2xlWG1hcmssXG4gIGZhVGVtcGVyYXR1cmVBcnJvd1VwOiBmYVRlbXBlcmF0dXJlQXJyb3dVcCxcbiAgZmFUZW1wZXJhdHVyZVVwOiBmYVRlbXBlcmF0dXJlVXAsXG4gIGZhTWVkYWw6IGZhTWVkYWwsXG4gIGZhQmVkOiBmYUJlZCxcbiAgZmFTcXVhcmVIOiBmYVNxdWFyZUgsXG4gIGZhSFNxdWFyZTogZmFIU3F1YXJlLFxuICBmYVBvZGNhc3Q6IGZhUG9kY2FzdCxcbiAgZmFUZW1wZXJhdHVyZUZ1bGw6IGZhVGVtcGVyYXR1cmVGdWxsLFxuICBmYVRlbXBlcmF0dXJlNDogZmFUZW1wZXJhdHVyZTQsXG4gIGZhVGhlcm1vbWV0ZXI0OiBmYVRoZXJtb21ldGVyNCxcbiAgZmFUaGVybW9tZXRlckZ1bGw6IGZhVGhlcm1vbWV0ZXJGdWxsLFxuICBmYUJlbGw6IGZhQmVsbCxcbiAgZmFTdXBlcnNjcmlwdDogZmFTdXBlcnNjcmlwdCxcbiAgZmFQbHVnQ2lyY2xlWG1hcms6IGZhUGx1Z0NpcmNsZVhtYXJrLFxuICBmYVN0YXJPZkxpZmU6IGZhU3Rhck9mTGlmZSxcbiAgZmFQaG9uZVNsYXNoOiBmYVBob25lU2xhc2gsXG4gIGZhUGFpbnRSb2xsZXI6IGZhUGFpbnRSb2xsZXIsXG4gIGZhSGFuZHNoYWtlQW5nbGU6IGZhSGFuZHNoYWtlQW5nbGUsXG4gIGZhSGFuZHNIZWxwaW5nOiBmYUhhbmRzSGVscGluZyxcbiAgZmFMb2NhdGlvbkRvdDogZmFMb2NhdGlvbkRvdCxcbiAgZmFNYXBNYXJrZXJBbHQ6IGZhTWFwTWFya2VyQWx0LFxuICBmYUZpbGU6IGZhRmlsZSxcbiAgZmFHcmVhdGVyVGhhbjogZmFHcmVhdGVyVGhhbixcbiAgZmFQZXJzb25Td2ltbWluZzogZmFQZXJzb25Td2ltbWluZyxcbiAgZmFTd2ltbWVyOiBmYVN3aW1tZXIsXG4gIGZhQXJyb3dEb3duOiBmYUFycm93RG93bixcbiAgZmFEcm9wbGV0OiBmYURyb3BsZXQsXG4gIGZhVGludDogZmFUaW50LFxuICBmYUVyYXNlcjogZmFFcmFzZXIsXG4gIGZhRWFydGhBbWVyaWNhczogZmFFYXJ0aEFtZXJpY2FzLFxuICBmYUVhcnRoOiBmYUVhcnRoLFxuICBmYUVhcnRoQW1lcmljYTogZmFFYXJ0aEFtZXJpY2EsXG4gIGZhR2xvYmVBbWVyaWNhczogZmFHbG9iZUFtZXJpY2FzLFxuICBmYVBlcnNvbkJ1cnN0OiBmYVBlcnNvbkJ1cnN0LFxuICBmYURvdmU6IGZhRG92ZSxcbiAgZmFCYXR0ZXJ5RW1wdHk6IGZhQmF0dGVyeUVtcHR5LFxuICBmYUJhdHRlcnkwOiBmYUJhdHRlcnkwLFxuICBmYVNvY2tzOiBmYVNvY2tzLFxuICBmYUluYm94OiBmYUluYm94LFxuICBmYVNlY3Rpb246IGZhU2VjdGlvbixcbiAgZmFHYXVnZUhpZ2g6IGZhR2F1Z2VIaWdoLFxuICBmYVRhY2hvbWV0ZXJBbHQ6IGZhVGFjaG9tZXRlckFsdCxcbiAgZmFUYWNob21ldGVyQWx0RmFzdDogZmFUYWNob21ldGVyQWx0RmFzdCxcbiAgZmFFbnZlbG9wZU9wZW5UZXh0OiBmYUVudmVsb3BlT3BlblRleHQsXG4gIGZhSG9zcGl0YWw6IGZhSG9zcGl0YWwsXG4gIGZhSG9zcGl0YWxBbHQ6IGZhSG9zcGl0YWxBbHQsXG4gIGZhSG9zcGl0YWxXaWRlOiBmYUhvc3BpdGFsV2lkZSxcbiAgZmFXaW5lQm90dGxlOiBmYVdpbmVCb3R0bGUsXG4gIGZhQ2hlc3NSb29rOiBmYUNoZXNzUm9vayxcbiAgZmFCYXJzU3RhZ2dlcmVkOiBmYUJhcnNTdGFnZ2VyZWQsXG4gIGZhUmVvcmRlcjogZmFSZW9yZGVyLFxuICBmYVN0cmVhbTogZmFTdHJlYW0sXG4gIGZhRGhhcm1hY2hha3JhOiBmYURoYXJtYWNoYWtyYSxcbiAgZmFIb3Rkb2c6IGZhSG90ZG9nLFxuICBmYVBlcnNvbldhbGtpbmdXaXRoQ2FuZTogZmFQZXJzb25XYWxraW5nV2l0aENhbmUsXG4gIGZhQmxpbmQ6IGZhQmxpbmQsXG4gIGZhRHJ1bTogZmFEcnVtLFxuICBmYUljZUNyZWFtOiBmYUljZUNyZWFtLFxuICBmYUhlYXJ0Q2lyY2xlQm9sdDogZmFIZWFydENpcmNsZUJvbHQsXG4gIGZhRmF4OiBmYUZheCxcbiAgZmFQYXJhZ3JhcGg6IGZhUGFyYWdyYXBoLFxuICBmYUNoZWNrVG9TbG90OiBmYUNoZWNrVG9TbG90LFxuICBmYVZvdGVZZWE6IGZhVm90ZVllYSxcbiAgZmFTdGFySGFsZjogZmFTdGFySGFsZixcbiAgZmFCb3hlc1N0YWNrZWQ6IGZhQm94ZXNTdGFja2VkLFxuICBmYUJveGVzOiBmYUJveGVzLFxuICBmYUJveGVzQWx0OiBmYUJveGVzQWx0LFxuICBmYUxpbms6IGZhTGluayxcbiAgZmFDaGFpbjogZmFDaGFpbixcbiAgZmFFYXJMaXN0ZW46IGZhRWFyTGlzdGVuLFxuICBmYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXM6IGZhQXNzaXN0aXZlTGlzdGVuaW5nU3lzdGVtcyxcbiAgZmFUcmVlQ2l0eTogZmFUcmVlQ2l0eSxcbiAgZmFQbGF5OiBmYVBsYXksXG4gIGZhRm9udDogZmFGb250LFxuICBmYVJ1cGlhaFNpZ246IGZhUnVwaWFoU2lnbixcbiAgZmFNYWduaWZ5aW5nR2xhc3M6IGZhTWFnbmlmeWluZ0dsYXNzLFxuICBmYVNlYXJjaDogZmFTZWFyY2gsXG4gIGZhVGFibGVUZW5uaXNQYWRkbGVCYWxsOiBmYVRhYmxlVGVubmlzUGFkZGxlQmFsbCxcbiAgZmFQaW5nUG9uZ1BhZGRsZUJhbGw6IGZhUGluZ1BvbmdQYWRkbGVCYWxsLFxuICBmYVRhYmxlVGVubmlzOiBmYVRhYmxlVGVubmlzLFxuICBmYVBlcnNvbkRvdHNGcm9tTGluZTogZmFQZXJzb25Eb3RzRnJvbUxpbmUsXG4gIGZhRGlhZ25vc2VzOiBmYURpYWdub3NlcyxcbiAgZmFUcmFzaENhbkFycm93VXA6IGZhVHJhc2hDYW5BcnJvd1VwLFxuICBmYVRyYXNoUmVzdG9yZUFsdDogZmFUcmFzaFJlc3RvcmVBbHQsXG4gIGZhTmFpcmFTaWduOiBmYU5haXJhU2lnbixcbiAgZmFDYXJ0QXJyb3dEb3duOiBmYUNhcnRBcnJvd0Rvd24sXG4gIGZhV2Fsa2llVGFsa2llOiBmYVdhbGtpZVRhbGtpZSxcbiAgZmFGaWxlUGVuOiBmYUZpbGVQZW4sXG4gIGZhRmlsZUVkaXQ6IGZhRmlsZUVkaXQsXG4gIGZhUmVjZWlwdDogZmFSZWNlaXB0LFxuICBmYVNxdWFyZVBlbjogZmFTcXVhcmVQZW4sXG4gIGZhUGVuU3F1YXJlOiBmYVBlblNxdWFyZSxcbiAgZmFQZW5jaWxTcXVhcmU6IGZhUGVuY2lsU3F1YXJlLFxuICBmYVN1aXRjYXNlUm9sbGluZzogZmFTdWl0Y2FzZVJvbGxpbmcsXG4gIGZhUGVyc29uQ2lyY2xlRXhjbGFtYXRpb246IGZhUGVyc29uQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhQ2hldnJvbkRvd246IGZhQ2hldnJvbkRvd24sXG4gIGZhQmF0dGVyeUZ1bGw6IGZhQmF0dGVyeUZ1bGwsXG4gIGZhQmF0dGVyeTogZmFCYXR0ZXJ5LFxuICBmYUJhdHRlcnk1OiBmYUJhdHRlcnk1LFxuICBmYVNrdWxsQ3Jvc3Nib25lczogZmFTa3VsbENyb3NzYm9uZXMsXG4gIGZhQ29kZUNvbXBhcmU6IGZhQ29kZUNvbXBhcmUsXG4gIGZhTGlzdFVsOiBmYUxpc3RVbCxcbiAgZmFMaXN0RG90czogZmFMaXN0RG90cyxcbiAgZmFTY2hvb2xMb2NrOiBmYVNjaG9vbExvY2ssXG4gIGZhVG93ZXJDZWxsOiBmYVRvd2VyQ2VsbCxcbiAgZmFEb3duTG9uZzogZmFEb3duTG9uZyxcbiAgZmFMb25nQXJyb3dBbHREb3duOiBmYUxvbmdBcnJvd0FsdERvd24sXG4gIGZhUmFua2luZ1N0YXI6IGZhUmFua2luZ1N0YXIsXG4gIGZhQ2hlc3NLaW5nOiBmYUNoZXNzS2luZyxcbiAgZmFQZXJzb25IYXJhc3Npbmc6IGZhUGVyc29uSGFyYXNzaW5nLFxuICBmYUJyYXppbGlhblJlYWxTaWduOiBmYUJyYXppbGlhblJlYWxTaWduLFxuICBmYUxhbmRtYXJrRG9tZTogZmFMYW5kbWFya0RvbWUsXG4gIGZhTGFuZG1hcmtBbHQ6IGZhTGFuZG1hcmtBbHQsXG4gIGZhQXJyb3dVcDogZmFBcnJvd1VwLFxuICBmYVR2OiBmYVR2LFxuICBmYVRlbGV2aXNpb246IGZhVGVsZXZpc2lvbixcbiAgZmFUdkFsdDogZmFUdkFsdCxcbiAgZmFTaHJpbXA6IGZhU2hyaW1wLFxuICBmYUxpc3RDaGVjazogZmFMaXN0Q2hlY2ssXG4gIGZhVGFza3M6IGZhVGFza3MsXG4gIGZhSnVnRGV0ZXJnZW50OiBmYUp1Z0RldGVyZ2VudCxcbiAgZmFDaXJjbGVVc2VyOiBmYUNpcmNsZVVzZXIsXG4gIGZhVXNlckNpcmNsZTogZmFVc2VyQ2lyY2xlLFxuICBmYVVzZXJTaGllbGQ6IGZhVXNlclNoaWVsZCxcbiAgZmFXaW5kOiBmYVdpbmQsXG4gIGZhQ2FyQnVyc3Q6IGZhQ2FyQnVyc3QsXG4gIGZhQ2FyQ3Jhc2g6IGZhQ2FyQ3Jhc2gsXG4gIGZhWTogZmFZLFxuICBmYVBlcnNvblNub3dib2FyZGluZzogZmFQZXJzb25Tbm93Ym9hcmRpbmcsXG4gIGZhU25vd2JvYXJkaW5nOiBmYVNub3dib2FyZGluZyxcbiAgZmFUcnVja0Zhc3Q6IGZhVHJ1Y2tGYXN0LFxuICBmYVNoaXBwaW5nRmFzdDogZmFTaGlwcGluZ0Zhc3QsXG4gIGZhRmlzaDogZmFGaXNoLFxuICBmYVVzZXJHcmFkdWF0ZTogZmFVc2VyR3JhZHVhdGUsXG4gIGZhQ2lyY2xlSGFsZlN0cm9rZTogZmFDaXJjbGVIYWxmU3Ryb2tlLFxuICBmYUFkanVzdDogZmFBZGp1c3QsXG4gIGZhQ2xhcHBlcmJvYXJkOiBmYUNsYXBwZXJib2FyZCxcbiAgZmFDaXJjbGVSYWRpYXRpb246IGZhQ2lyY2xlUmFkaWF0aW9uLFxuICBmYVJhZGlhdGlvbkFsdDogZmFSYWRpYXRpb25BbHQsXG4gIGZhQmFzZWJhbGw6IGZhQmFzZWJhbGwsXG4gIGZhQmFzZWJhbGxCYWxsOiBmYUJhc2ViYWxsQmFsbCxcbiAgZmFKZXRGaWdodGVyVXA6IGZhSmV0RmlnaHRlclVwLFxuICBmYURpYWdyYW1Qcm9qZWN0OiBmYURpYWdyYW1Qcm9qZWN0LFxuICBmYVByb2plY3REaWFncmFtOiBmYVByb2plY3REaWFncmFtLFxuICBmYUNvcHk6IGZhQ29weSxcbiAgZmFWb2x1bWVYbWFyazogZmFWb2x1bWVYbWFyayxcbiAgZmFWb2x1bWVNdXRlOiBmYVZvbHVtZU11dGUsXG4gIGZhVm9sdW1lVGltZXM6IGZhVm9sdW1lVGltZXMsXG4gIGZhSGFuZFNwYXJrbGVzOiBmYUhhbmRTcGFya2xlcyxcbiAgZmFHcmlwOiBmYUdyaXAsXG4gIGZhR3JpcEhvcml6b250YWw6IGZhR3JpcEhvcml6b250YWwsXG4gIGZhU2hhcmVGcm9tU3F1YXJlOiBmYVNoYXJlRnJvbVNxdWFyZSxcbiAgZmFTaGFyZVNxdWFyZTogZmFTaGFyZVNxdWFyZSxcbiAgZmFDaGlsZENvbWJhdGFudDogZmFDaGlsZENvbWJhdGFudCxcbiAgZmFDaGlsZFJpZmxlOiBmYUNoaWxkUmlmbGUsXG4gIGZhR3VuOiBmYUd1bixcbiAgZmFTcXVhcmVQaG9uZTogZmFTcXVhcmVQaG9uZSxcbiAgZmFQaG9uZVNxdWFyZTogZmFQaG9uZVNxdWFyZSxcbiAgZmFQbHVzOiBmYVBsdXMsXG4gIGZhQWRkOiBmYUFkZCxcbiAgZmFFeHBhbmQ6IGZhRXhwYW5kLFxuICBmYUNvbXB1dGVyOiBmYUNvbXB1dGVyLFxuICBmYVhtYXJrOiBmYVhtYXJrLFxuICBmYUNsb3NlOiBmYUNsb3NlLFxuICBmYU11bHRpcGx5OiBmYU11bHRpcGx5LFxuICBmYVJlbW92ZTogZmFSZW1vdmUsXG4gIGZhVGltZXM6IGZhVGltZXMsXG4gIGZhQXJyb3dzVXBEb3duTGVmdFJpZ2h0OiBmYUFycm93c1VwRG93bkxlZnRSaWdodCxcbiAgZmFBcnJvd3M6IGZhQXJyb3dzLFxuICBmYUNoYWxrYm9hcmRVc2VyOiBmYUNoYWxrYm9hcmRVc2VyLFxuICBmYUNoYWxrYm9hcmRUZWFjaGVyOiBmYUNoYWxrYm9hcmRUZWFjaGVyLFxuICBmYVBlc29TaWduOiBmYVBlc29TaWduLFxuICBmYUJ1aWxkaW5nU2hpZWxkOiBmYUJ1aWxkaW5nU2hpZWxkLFxuICBmYUJhYnk6IGZhQmFieSxcbiAgZmFVc2Vyc0xpbmU6IGZhVXNlcnNMaW5lLFxuICBmYVF1b3RlTGVmdDogZmFRdW90ZUxlZnQsXG4gIGZhUXVvdGVMZWZ0QWx0OiBmYVF1b3RlTGVmdEFsdCxcbiAgZmFUcmFjdG9yOiBmYVRyYWN0b3IsXG4gIGZhVHJhc2hBcnJvd1VwOiBmYVRyYXNoQXJyb3dVcCxcbiAgZmFUcmFzaFJlc3RvcmU6IGZhVHJhc2hSZXN0b3JlLFxuICBmYUFycm93RG93blVwTG9jazogZmFBcnJvd0Rvd25VcExvY2ssXG4gIGZhTGluZXNMZWFuaW5nOiBmYUxpbmVzTGVhbmluZyxcbiAgZmFSdWxlckNvbWJpbmVkOiBmYVJ1bGVyQ29tYmluZWQsXG4gIGZhQ29weXJpZ2h0OiBmYUNvcHlyaWdodCxcbiAgZmFFcXVhbHM6IGZhRXF1YWxzLFxuICBmYUJsZW5kZXI6IGZhQmxlbmRlcixcbiAgZmFUZWV0aDogZmFUZWV0aCxcbiAgZmFTaGVrZWxTaWduOiBmYVNoZWtlbFNpZ24sXG4gIGZhSWxzOiBmYUlscyxcbiAgZmFTaGVrZWw6IGZhU2hla2VsLFxuICBmYVNoZXFlbDogZmFTaGVxZWwsXG4gIGZhU2hlcWVsU2lnbjogZmFTaGVxZWxTaWduLFxuICBmYU1hcDogZmFNYXAsXG4gIGZhUm9ja2V0OiBmYVJvY2tldCxcbiAgZmFQaG90b0ZpbG06IGZhUGhvdG9GaWxtLFxuICBmYVBob3RvVmlkZW86IGZhUGhvdG9WaWRlbyxcbiAgZmFGb2xkZXJNaW51czogZmFGb2xkZXJNaW51cyxcbiAgZmFTdG9yZTogZmFTdG9yZSxcbiAgZmFBcnJvd1RyZW5kVXA6IGZhQXJyb3dUcmVuZFVwLFxuICBmYVBsdWdDaXJjbGVNaW51czogZmFQbHVnQ2lyY2xlTWludXMsXG4gIGZhU2lnbkhhbmdpbmc6IGZhU2lnbkhhbmdpbmcsXG4gIGZhU2lnbjogZmFTaWduLFxuICBmYUJlemllckN1cnZlOiBmYUJlemllckN1cnZlLFxuICBmYUJlbGxTbGFzaDogZmFCZWxsU2xhc2gsXG4gIGZhVGFibGV0OiBmYVRhYmxldCxcbiAgZmFUYWJsZXRBbmRyb2lkOiBmYVRhYmxldEFuZHJvaWQsXG4gIGZhU2Nob29sRmxhZzogZmFTY2hvb2xGbGFnLFxuICBmYUZpbGw6IGZhRmlsbCxcbiAgZmFBbmdsZVVwOiBmYUFuZ2xlVXAsXG4gIGZhRHJ1bXN0aWNrQml0ZTogZmFEcnVtc3RpY2tCaXRlLFxuICBmYUhvbGx5QmVycnk6IGZhSG9sbHlCZXJyeSxcbiAgZmFDaGV2cm9uTGVmdDogZmFDaGV2cm9uTGVmdCxcbiAgZmFCYWN0ZXJpYTogZmFCYWN0ZXJpYSxcbiAgZmFIYW5kTGl6YXJkOiBmYUhhbmRMaXphcmQsXG4gIGZhTm90ZGVmOiBmYU5vdGRlZixcbiAgZmFEaXNlYXNlOiBmYURpc2Vhc2UsXG4gIGZhQnJpZWZjYXNlTWVkaWNhbDogZmFCcmllZmNhc2VNZWRpY2FsLFxuICBmYUdlbmRlcmxlc3M6IGZhR2VuZGVybGVzcyxcbiAgZmFDaGV2cm9uUmlnaHQ6IGZhQ2hldnJvblJpZ2h0LFxuICBmYVJldHdlZXQ6IGZhUmV0d2VldCxcbiAgZmFDYXJSZWFyOiBmYUNhclJlYXIsXG4gIGZhQ2FyQWx0OiBmYUNhckFsdCxcbiAgZmFQdW1wU29hcDogZmFQdW1wU29hcCxcbiAgZmFWaWRlb1NsYXNoOiBmYVZpZGVvU2xhc2gsXG4gIGZhQmF0dGVyeVF1YXJ0ZXI6IGZhQmF0dGVyeVF1YXJ0ZXIsXG4gIGZhQmF0dGVyeTI6IGZhQmF0dGVyeTIsXG4gIGZhUmFkaW86IGZhUmFkaW8sXG4gIGZhQmFieUNhcnJpYWdlOiBmYUJhYnlDYXJyaWFnZSxcbiAgZmFDYXJyaWFnZUJhYnk6IGZhQ2FycmlhZ2VCYWJ5LFxuICBmYVRyYWZmaWNMaWdodDogZmFUcmFmZmljTGlnaHQsXG4gIGZhVGhlcm1vbWV0ZXI6IGZhVGhlcm1vbWV0ZXIsXG4gIGZhVnJDYXJkYm9hcmQ6IGZhVnJDYXJkYm9hcmQsXG4gIGZhSGFuZE1pZGRsZUZpbmdlcjogZmFIYW5kTWlkZGxlRmluZ2VyLFxuICBmYVBlcmNlbnQ6IGZhUGVyY2VudCxcbiAgZmFQZXJjZW50YWdlOiBmYVBlcmNlbnRhZ2UsXG4gIGZhVHJ1Y2tNb3Zpbmc6IGZhVHJ1Y2tNb3ZpbmcsXG4gIGZhR2xhc3NXYXRlckRyb3BsZXQ6IGZhR2xhc3NXYXRlckRyb3BsZXQsXG4gIGZhRGlzcGxheTogZmFEaXNwbGF5LFxuICBmYUZhY2VTbWlsZTogZmFGYWNlU21pbGUsXG4gIGZhU21pbGU6IGZhU21pbGUsXG4gIGZhVGh1bWJ0YWNrOiBmYVRodW1idGFjayxcbiAgZmFUaHVtYlRhY2s6IGZhVGh1bWJUYWNrLFxuICBmYVRyb3BoeTogZmFUcm9waHksXG4gIGZhUGVyc29uUHJheWluZzogZmFQZXJzb25QcmF5aW5nLFxuICBmYVByYXk6IGZhUHJheSxcbiAgZmFIYW1tZXI6IGZhSGFtbWVyLFxuICBmYUhhbmRQZWFjZTogZmFIYW5kUGVhY2UsXG4gIGZhUm90YXRlOiBmYVJvdGF0ZSxcbiAgZmFTeW5jQWx0OiBmYVN5bmNBbHQsXG4gIGZhU3Bpbm5lcjogZmFTcGlubmVyLFxuICBmYVJvYm90OiBmYVJvYm90LFxuICBmYVBlYWNlOiBmYVBlYWNlLFxuICBmYUdlYXJzOiBmYUdlYXJzLFxuICBmYUNvZ3M6IGZhQ29ncyxcbiAgZmFXYXJlaG91c2U6IGZhV2FyZWhvdXNlLFxuICBmYUFycm93VXBSaWdodERvdHM6IGZhQXJyb3dVcFJpZ2h0RG90cyxcbiAgZmFTcGxvdGNoOiBmYVNwbG90Y2gsXG4gIGZhRmFjZUdyaW5IZWFydHM6IGZhRmFjZUdyaW5IZWFydHMsXG4gIGZhR3JpbkhlYXJ0czogZmFHcmluSGVhcnRzLFxuICBmYURpY2VGb3VyOiBmYURpY2VGb3VyLFxuICBmYVNpbUNhcmQ6IGZhU2ltQ2FyZCxcbiAgZmFUcmFuc2dlbmRlcjogZmFUcmFuc2dlbmRlcixcbiAgZmFUcmFuc2dlbmRlckFsdDogZmFUcmFuc2dlbmRlckFsdCxcbiAgZmFNZXJjdXJ5OiBmYU1lcmN1cnksXG4gIGZhQXJyb3dUdXJuRG93bjogZmFBcnJvd1R1cm5Eb3duLFxuICBmYUxldmVsRG93bjogZmFMZXZlbERvd24sXG4gIGZhUGVyc29uRmFsbGluZ0J1cnN0OiBmYVBlcnNvbkZhbGxpbmdCdXJzdCxcbiAgZmFBd2FyZDogZmFBd2FyZCxcbiAgZmFUaWNrZXRTaW1wbGU6IGZhVGlja2V0U2ltcGxlLFxuICBmYVRpY2tldEFsdDogZmFUaWNrZXRBbHQsXG4gIGZhQnVpbGRpbmc6IGZhQnVpbGRpbmcsXG4gIGZhQW5nbGVzTGVmdDogZmFBbmdsZXNMZWZ0LFxuICBmYUFuZ2xlRG91YmxlTGVmdDogZmFBbmdsZURvdWJsZUxlZnQsXG4gIGZhUXJjb2RlOiBmYVFyY29kZSxcbiAgZmFDbG9ja1JvdGF0ZUxlZnQ6IGZhQ2xvY2tSb3RhdGVMZWZ0LFxuICBmYUhpc3Rvcnk6IGZhSGlzdG9yeSxcbiAgZmFGYWNlR3JpbkJlYW1Td2VhdDogZmFGYWNlR3JpbkJlYW1Td2VhdCxcbiAgZmFHcmluQmVhbVN3ZWF0OiBmYUdyaW5CZWFtU3dlYXQsXG4gIGZhRmlsZUV4cG9ydDogZmFGaWxlRXhwb3J0LFxuICBmYUFycm93UmlnaHRGcm9tRmlsZTogZmFBcnJvd1JpZ2h0RnJvbUZpbGUsXG4gIGZhU2hpZWxkOiBmYVNoaWVsZCxcbiAgZmFTaGllbGRCbGFuazogZmFTaGllbGRCbGFuayxcbiAgZmFBcnJvd1VwU2hvcnRXaWRlOiBmYUFycm93VXBTaG9ydFdpZGUsXG4gIGZhU29ydEFtb3VudFVwQWx0OiBmYVNvcnRBbW91bnRVcEFsdCxcbiAgZmFIb3VzZU1lZGljYWw6IGZhSG91c2VNZWRpY2FsLFxuICBmYUdvbGZCYWxsVGVlOiBmYUdvbGZCYWxsVGVlLFxuICBmYUdvbGZCYWxsOiBmYUdvbGZCYWxsLFxuICBmYUNpcmNsZUNoZXZyb25MZWZ0OiBmYUNpcmNsZUNoZXZyb25MZWZ0LFxuICBmYUNoZXZyb25DaXJjbGVMZWZ0OiBmYUNoZXZyb25DaXJjbGVMZWZ0LFxuICBmYUhvdXNlQ2hpbW5leVdpbmRvdzogZmFIb3VzZUNoaW1uZXlXaW5kb3csXG4gIGZhUGVuTmliOiBmYVBlbk5pYixcbiAgZmFUZW50QXJyb3dUdXJuTGVmdDogZmFUZW50QXJyb3dUdXJuTGVmdCxcbiAgZmFUZW50czogZmFUZW50cyxcbiAgZmFXYW5kTWFnaWM6IGZhV2FuZE1hZ2ljLFxuICBmYU1hZ2ljOiBmYU1hZ2ljLFxuICBmYURvZzogZmFEb2csXG4gIGZhQ2Fycm90OiBmYUNhcnJvdCxcbiAgZmFNb29uOiBmYU1vb24sXG4gIGZhV2luZUdsYXNzRW1wdHk6IGZhV2luZUdsYXNzRW1wdHksXG4gIGZhV2luZUdsYXNzQWx0OiBmYVdpbmVHbGFzc0FsdCxcbiAgZmFDaGVlc2U6IGZhQ2hlZXNlLFxuICBmYVlpbllhbmc6IGZhWWluWWFuZyxcbiAgZmFNdXNpYzogZmFNdXNpYyxcbiAgZmFDb2RlQ29tbWl0OiBmYUNvZGVDb21taXQsXG4gIGZhVGVtcGVyYXR1cmVMb3c6IGZhVGVtcGVyYXR1cmVMb3csXG4gIGZhUGVyc29uQmlraW5nOiBmYVBlcnNvbkJpa2luZyxcbiAgZmFCaWtpbmc6IGZhQmlraW5nLFxuICBmYUJyb29tOiBmYUJyb29tLFxuICBmYVNoaWVsZEhlYXJ0OiBmYVNoaWVsZEhlYXJ0LFxuICBmYUdvcHVyYW06IGZhR29wdXJhbSxcbiAgZmFFYXJ0aE9jZWFuaWE6IGZhRWFydGhPY2VhbmlhLFxuICBmYUdsb2JlT2NlYW5pYTogZmFHbG9iZU9jZWFuaWEsXG4gIGZhU3F1YXJlWG1hcms6IGZhU3F1YXJlWG1hcmssXG4gIGZhVGltZXNTcXVhcmU6IGZhVGltZXNTcXVhcmUsXG4gIGZhWG1hcmtTcXVhcmU6IGZhWG1hcmtTcXVhcmUsXG4gIGZhSGFzaHRhZzogZmFIYXNodGFnLFxuICBmYVVwUmlnaHRBbmREb3duTGVmdEZyb21DZW50ZXI6IGZhVXBSaWdodEFuZERvd25MZWZ0RnJvbUNlbnRlcixcbiAgZmFFeHBhbmRBbHQ6IGZhRXhwYW5kQWx0LFxuICBmYU9pbENhbjogZmFPaWxDYW4sXG4gIGZhVDogZmFULFxuICBmYUhpcHBvOiBmYUhpcHBvLFxuICBmYUNoYXJ0Q29sdW1uOiBmYUNoYXJ0Q29sdW1uLFxuICBmYUluZmluaXR5OiBmYUluZmluaXR5LFxuICBmYVZpYWxDaXJjbGVDaGVjazogZmFWaWFsQ2lyY2xlQ2hlY2ssXG4gIGZhUGVyc29uQXJyb3dEb3duVG9MaW5lOiBmYVBlcnNvbkFycm93RG93blRvTGluZSxcbiAgZmFWb2ljZW1haWw6IGZhVm9pY2VtYWlsLFxuICBmYUZhbjogZmFGYW4sXG4gIGZhUGVyc29uV2Fsa2luZ0x1Z2dhZ2U6IGZhUGVyc29uV2Fsa2luZ0x1Z2dhZ2UsXG4gIGZhVXBEb3duOiBmYVVwRG93bixcbiAgZmFBcnJvd3NBbHRWOiBmYUFycm93c0FsdFYsXG4gIGZhQ2xvdWRNb29uUmFpbjogZmFDbG91ZE1vb25SYWluLFxuICBmYUNhbGVuZGFyOiBmYUNhbGVuZGFyLFxuICBmYVRyYWlsZXI6IGZhVHJhaWxlcixcbiAgZmFCYWhhaTogZmFCYWhhaSxcbiAgZmFIYXlrYWw6IGZhSGF5a2FsLFxuICBmYVNkQ2FyZDogZmFTZENhcmQsXG4gIGZhRHJhZ29uOiBmYURyYWdvbixcbiAgZmFTaG9lUHJpbnRzOiBmYVNob2VQcmludHMsXG4gIGZhQ2lyY2xlUGx1czogZmFDaXJjbGVQbHVzLFxuICBmYVBsdXNDaXJjbGU6IGZhUGx1c0NpcmNsZSxcbiAgZmFGYWNlR3JpblRvbmd1ZVdpbms6IGZhRmFjZUdyaW5Ub25ndWVXaW5rLFxuICBmYUdyaW5Ub25ndWVXaW5rOiBmYUdyaW5Ub25ndWVXaW5rLFxuICBmYUhhbmRIb2xkaW5nOiBmYUhhbmRIb2xkaW5nLFxuICBmYVBsdWdDaXJjbGVFeGNsYW1hdGlvbjogZmFQbHVnQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhTGlua1NsYXNoOiBmYUxpbmtTbGFzaCxcbiAgZmFDaGFpbkJyb2tlbjogZmFDaGFpbkJyb2tlbixcbiAgZmFDaGFpblNsYXNoOiBmYUNoYWluU2xhc2gsXG4gIGZhVW5saW5rOiBmYVVubGluayxcbiAgZmFDbG9uZTogZmFDbG9uZSxcbiAgZmFQZXJzb25XYWxraW5nQXJyb3dMb29wTGVmdDogZmFQZXJzb25XYWxraW5nQXJyb3dMb29wTGVmdCxcbiAgZmFBcnJvd1VwWkE6IGZhQXJyb3dVcFpBLFxuICBmYVNvcnRBbHBoYVVwQWx0OiBmYVNvcnRBbHBoYVVwQWx0LFxuICBmYUZpcmVGbGFtZUN1cnZlZDogZmFGaXJlRmxhbWVDdXJ2ZWQsXG4gIGZhRmlyZUFsdDogZmFGaXJlQWx0LFxuICBmYVRvcm5hZG86IGZhVG9ybmFkbyxcbiAgZmFGaWxlQ2lyY2xlUGx1czogZmFGaWxlQ2lyY2xlUGx1cyxcbiAgZmFCb29rUXVyYW46IGZhQm9va1F1cmFuLFxuICBmYVF1cmFuOiBmYVF1cmFuLFxuICBmYUFuY2hvcjogZmFBbmNob3IsXG4gIGZhQm9yZGVyQWxsOiBmYUJvcmRlckFsbCxcbiAgZmFGYWNlQW5ncnk6IGZhRmFjZUFuZ3J5LFxuICBmYUFuZ3J5OiBmYUFuZ3J5LFxuICBmYUNvb2tpZUJpdGU6IGZhQ29va2llQml0ZSxcbiAgZmFBcnJvd1RyZW5kRG93bjogZmFBcnJvd1RyZW5kRG93bixcbiAgZmFSc3M6IGZhUnNzLFxuICBmYUZlZWQ6IGZhRmVlZCxcbiAgZmFEcmF3UG9seWdvbjogZmFEcmF3UG9seWdvbixcbiAgZmFTY2FsZUJhbGFuY2VkOiBmYVNjYWxlQmFsYW5jZWQsXG4gIGZhQmFsYW5jZVNjYWxlOiBmYUJhbGFuY2VTY2FsZSxcbiAgZmFHYXVnZVNpbXBsZUhpZ2g6IGZhR2F1Z2VTaW1wbGVIaWdoLFxuICBmYVRhY2hvbWV0ZXI6IGZhVGFjaG9tZXRlcixcbiAgZmFUYWNob21ldGVyRmFzdDogZmFUYWNob21ldGVyRmFzdCxcbiAgZmFTaG93ZXI6IGZhU2hvd2VyLFxuICBmYURlc2t0b3A6IGZhRGVza3RvcCxcbiAgZmFEZXNrdG9wQWx0OiBmYURlc2t0b3BBbHQsXG4gIGZhTTogZmFNLFxuICBmYVRhYmxlTGlzdDogZmFUYWJsZUxpc3QsXG4gIGZhVGhMaXN0OiBmYVRoTGlzdCxcbiAgZmFDb21tZW50U21zOiBmYUNvbW1lbnRTbXMsXG4gIGZhU21zOiBmYVNtcyxcbiAgZmFCb29rOiBmYUJvb2ssXG4gIGZhVXNlclBsdXM6IGZhVXNlclBsdXMsXG4gIGZhQ2hlY2s6IGZhQ2hlY2ssXG4gIGZhQmF0dGVyeVRocmVlUXVhcnRlcnM6IGZhQmF0dGVyeVRocmVlUXVhcnRlcnMsXG4gIGZhQmF0dGVyeTQ6IGZhQmF0dGVyeTQsXG4gIGZhSG91c2VDaXJjbGVDaGVjazogZmFIb3VzZUNpcmNsZUNoZWNrLFxuICBmYUFuZ2xlTGVmdDogZmFBbmdsZUxlZnQsXG4gIGZhRGlhZ3JhbVN1Y2Nlc3NvcjogZmFEaWFncmFtU3VjY2Vzc29yLFxuICBmYVRydWNrQXJyb3dSaWdodDogZmFUcnVja0Fycm93UmlnaHQsXG4gIGZhQXJyb3dzU3BsaXRVcEFuZExlZnQ6IGZhQXJyb3dzU3BsaXRVcEFuZExlZnQsXG4gIGZhSGFuZEZpc3Q6IGZhSGFuZEZpc3QsXG4gIGZhRmlzdFJhaXNlZDogZmFGaXN0UmFpc2VkLFxuICBmYUNsb3VkTW9vbjogZmFDbG91ZE1vb24sXG4gIGZhQnJpZWZjYXNlOiBmYUJyaWVmY2FzZSxcbiAgZmFQZXJzb25GYWxsaW5nOiBmYVBlcnNvbkZhbGxpbmcsXG4gIGZhSW1hZ2VQb3J0cmFpdDogZmFJbWFnZVBvcnRyYWl0LFxuICBmYVBvcnRyYWl0OiBmYVBvcnRyYWl0LFxuICBmYVVzZXJUYWc6IGZhVXNlclRhZyxcbiAgZmFSdWc6IGZhUnVnLFxuICBmYUVhcnRoRXVyb3BlOiBmYUVhcnRoRXVyb3BlLFxuICBmYUdsb2JlRXVyb3BlOiBmYUdsb2JlRXVyb3BlLFxuICBmYUNhcnRGbGF0YmVkU3VpdGNhc2U6IGZhQ2FydEZsYXRiZWRTdWl0Y2FzZSxcbiAgZmFMdWdnYWdlQ2FydDogZmFMdWdnYWdlQ2FydCxcbiAgZmFSZWN0YW5nbGVYbWFyazogZmFSZWN0YW5nbGVYbWFyayxcbiAgZmFSZWN0YW5nbGVUaW1lczogZmFSZWN0YW5nbGVUaW1lcyxcbiAgZmFUaW1lc1JlY3RhbmdsZTogZmFUaW1lc1JlY3RhbmdsZSxcbiAgZmFXaW5kb3dDbG9zZTogZmFXaW5kb3dDbG9zZSxcbiAgZmFCYWh0U2lnbjogZmFCYWh0U2lnbixcbiAgZmFCb29rT3BlbjogZmFCb29rT3BlbixcbiAgZmFCb29rSm91cm5hbFdoaWxsczogZmFCb29rSm91cm5hbFdoaWxscyxcbiAgZmFKb3VybmFsV2hpbGxzOiBmYUpvdXJuYWxXaGlsbHMsXG4gIGZhSGFuZGN1ZmZzOiBmYUhhbmRjdWZmcyxcbiAgZmFUcmlhbmdsZUV4Y2xhbWF0aW9uOiBmYVRyaWFuZ2xlRXhjbGFtYXRpb24sXG4gIGZhRXhjbGFtYXRpb25UcmlhbmdsZTogZmFFeGNsYW1hdGlvblRyaWFuZ2xlLFxuICBmYVdhcm5pbmc6IGZhV2FybmluZyxcbiAgZmFEYXRhYmFzZTogZmFEYXRhYmFzZSxcbiAgZmFTaGFyZTogZmFTaGFyZSxcbiAgZmFBcnJvd1R1cm5SaWdodDogZmFBcnJvd1R1cm5SaWdodCxcbiAgZmFNYWlsRm9yd2FyZDogZmFNYWlsRm9yd2FyZCxcbiAgZmFCb3R0bGVEcm9wbGV0OiBmYUJvdHRsZURyb3BsZXQsXG4gIGZhTWFza0ZhY2U6IGZhTWFza0ZhY2UsXG4gIGZhSGlsbFJvY2tzbGlkZTogZmFIaWxsUm9ja3NsaWRlLFxuICBmYVJpZ2h0TGVmdDogZmFSaWdodExlZnQsXG4gIGZhRXhjaGFuZ2VBbHQ6IGZhRXhjaGFuZ2VBbHQsXG4gIGZhUGFwZXJQbGFuZTogZmFQYXBlclBsYW5lLFxuICBmYVJvYWRDaXJjbGVFeGNsYW1hdGlvbjogZmFSb2FkQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhRHVuZ2VvbjogZmFEdW5nZW9uLFxuICBmYUFsaWduUmlnaHQ6IGZhQWxpZ25SaWdodCxcbiAgZmFNb25leUJpbGwxV2F2ZTogZmFNb25leUJpbGwxV2F2ZSxcbiAgZmFNb25leUJpbGxXYXZlQWx0OiBmYU1vbmV5QmlsbFdhdmVBbHQsXG4gIGZhTGlmZVJpbmc6IGZhTGlmZVJpbmcsXG4gIGZhSGFuZHM6IGZhSGFuZHMsXG4gIGZhU2lnbkxhbmd1YWdlOiBmYVNpZ25MYW5ndWFnZSxcbiAgZmFTaWduaW5nOiBmYVNpZ25pbmcsXG4gIGZhQ2FsZW5kYXJEYXk6IGZhQ2FsZW5kYXJEYXksXG4gIGZhV2F0ZXJMYWRkZXI6IGZhV2F0ZXJMYWRkZXIsXG4gIGZhTGFkZGVyV2F0ZXI6IGZhTGFkZGVyV2F0ZXIsXG4gIGZhU3dpbW1pbmdQb29sOiBmYVN3aW1taW5nUG9vbCxcbiAgZmFBcnJvd3NVcERvd246IGZhQXJyb3dzVXBEb3duLFxuICBmYUFycm93c1Y6IGZhQXJyb3dzVixcbiAgZmFGYWNlR3JpbWFjZTogZmFGYWNlR3JpbWFjZSxcbiAgZmFHcmltYWNlOiBmYUdyaW1hY2UsXG4gIGZhV2hlZWxjaGFpck1vdmU6IGZhV2hlZWxjaGFpck1vdmUsXG4gIGZhV2hlZWxjaGFpckFsdDogZmFXaGVlbGNoYWlyQWx0LFxuICBmYVR1cm5Eb3duOiBmYVR1cm5Eb3duLFxuICBmYUxldmVsRG93bkFsdDogZmFMZXZlbERvd25BbHQsXG4gIGZhUGVyc29uV2Fsa2luZ0Fycm93UmlnaHQ6IGZhUGVyc29uV2Fsa2luZ0Fycm93UmlnaHQsXG4gIGZhU3F1YXJlRW52ZWxvcGU6IGZhU3F1YXJlRW52ZWxvcGUsXG4gIGZhRW52ZWxvcGVTcXVhcmU6IGZhRW52ZWxvcGVTcXVhcmUsXG4gIGZhRGljZTogZmFEaWNlLFxuICBmYUJvd2xpbmdCYWxsOiBmYUJvd2xpbmdCYWxsLFxuICBmYUJyYWluOiBmYUJyYWluLFxuICBmYUJhbmRhZ2U6IGZhQmFuZGFnZSxcbiAgZmFCYW5kQWlkOiBmYUJhbmRBaWQsXG4gIGZhQ2FsZW5kYXJNaW51czogZmFDYWxlbmRhck1pbnVzLFxuICBmYUNpcmNsZVhtYXJrOiBmYUNpcmNsZVhtYXJrLFxuICBmYVRpbWVzQ2lyY2xlOiBmYVRpbWVzQ2lyY2xlLFxuICBmYVhtYXJrQ2lyY2xlOiBmYVhtYXJrQ2lyY2xlLFxuICBmYUdpZnRzOiBmYUdpZnRzLFxuICBmYUhvdGVsOiBmYUhvdGVsLFxuICBmYUVhcnRoQXNpYTogZmFFYXJ0aEFzaWEsXG4gIGZhR2xvYmVBc2lhOiBmYUdsb2JlQXNpYSxcbiAgZmFJZENhcmRDbGlwOiBmYUlkQ2FyZENsaXAsXG4gIGZhSWRDYXJkQWx0OiBmYUlkQ2FyZEFsdCxcbiAgZmFNYWduaWZ5aW5nR2xhc3NQbHVzOiBmYU1hZ25pZnlpbmdHbGFzc1BsdXMsXG4gIGZhU2VhcmNoUGx1czogZmFTZWFyY2hQbHVzLFxuICBmYVRodW1ic1VwOiBmYVRodW1ic1VwLFxuICBmYVVzZXJDbG9jazogZmFVc2VyQ2xvY2ssXG4gIGZhSGFuZERvdHM6IGZhSGFuZERvdHMsXG4gIGZhQWxsZXJnaWVzOiBmYUFsbGVyZ2llcyxcbiAgZmFGaWxlSW52b2ljZTogZmFGaWxlSW52b2ljZSxcbiAgZmFXaW5kb3dNaW5pbWl6ZTogZmFXaW5kb3dNaW5pbWl6ZSxcbiAgZmFNdWdTYXVjZXI6IGZhTXVnU2F1Y2VyLFxuICBmYUNvZmZlZTogZmFDb2ZmZWUsXG4gIGZhQnJ1c2g6IGZhQnJ1c2gsXG4gIGZhTWFzazogZmFNYXNrLFxuICBmYU1hZ25pZnlpbmdHbGFzc01pbnVzOiBmYU1hZ25pZnlpbmdHbGFzc01pbnVzLFxuICBmYVNlYXJjaE1pbnVzOiBmYVNlYXJjaE1pbnVzLFxuICBmYVJ1bGVyVmVydGljYWw6IGZhUnVsZXJWZXJ0aWNhbCxcbiAgZmFVc2VyTGFyZ2U6IGZhVXNlckxhcmdlLFxuICBmYVVzZXJBbHQ6IGZhVXNlckFsdCxcbiAgZmFUcmFpblRyYW06IGZhVHJhaW5UcmFtLFxuICBmYVVzZXJOdXJzZTogZmFVc2VyTnVyc2UsXG4gIGZhU3lyaW5nZTogZmFTeXJpbmdlLFxuICBmYUNsb3VkU3VuOiBmYUNsb3VkU3VuLFxuICBmYVN0b3B3YXRjaDIwOiBmYVN0b3B3YXRjaDIwLFxuICBmYVNxdWFyZUZ1bGw6IGZhU3F1YXJlRnVsbCxcbiAgZmFNYWduZXQ6IGZhTWFnbmV0LFxuICBmYUphcjogZmFKYXIsXG4gIGZhTm90ZVN0aWNreTogZmFOb3RlU3RpY2t5LFxuICBmYVN0aWNreU5vdGU6IGZhU3RpY2t5Tm90ZSxcbiAgZmFCdWdTbGFzaDogZmFCdWdTbGFzaCxcbiAgZmFBcnJvd1VwRnJvbVdhdGVyUHVtcDogZmFBcnJvd1VwRnJvbVdhdGVyUHVtcCxcbiAgZmFCb25lOiBmYUJvbmUsXG4gIGZhVXNlckluanVyZWQ6IGZhVXNlckluanVyZWQsXG4gIGZhRmFjZVNhZFRlYXI6IGZhRmFjZVNhZFRlYXIsXG4gIGZhU2FkVGVhcjogZmFTYWRUZWFyLFxuICBmYVBsYW5lOiBmYVBsYW5lLFxuICBmYVRlbnRBcnJvd3NEb3duOiBmYVRlbnRBcnJvd3NEb3duLFxuICBmYUV4Y2xhbWF0aW9uOiBmYUV4Y2xhbWF0aW9uLFxuICBmYUFycm93c1NwaW46IGZhQXJyb3dzU3BpbixcbiAgZmFQcmludDogZmFQcmludCxcbiAgZmFUdXJraXNoTGlyYVNpZ246IGZhVHVya2lzaExpcmFTaWduLFxuICBmYVRyeTogZmFUcnksXG4gIGZhVHVya2lzaExpcmE6IGZhVHVya2lzaExpcmEsXG4gIGZhRG9sbGFyU2lnbjogZmFEb2xsYXJTaWduLFxuICBmYURvbGxhcjogZmFEb2xsYXIsXG4gIGZhVXNkOiBmYVVzZCxcbiAgZmFYOiBmYVgsXG4gIGZhTWFnbmlmeWluZ0dsYXNzRG9sbGFyOiBmYU1hZ25pZnlpbmdHbGFzc0RvbGxhcixcbiAgZmFTZWFyY2hEb2xsYXI6IGZhU2VhcmNoRG9sbGFyLFxuICBmYVVzZXJzR2VhcjogZmFVc2Vyc0dlYXIsXG4gIGZhVXNlcnNDb2c6IGZhVXNlcnNDb2csXG4gIGZhUGVyc29uTWlsaXRhcnlQb2ludGluZzogZmFQZXJzb25NaWxpdGFyeVBvaW50aW5nLFxuICBmYUJ1aWxkaW5nQ29sdW1uczogZmFCdWlsZGluZ0NvbHVtbnMsXG4gIGZhQmFuazogZmFCYW5rLFxuICBmYUluc3RpdHV0aW9uOiBmYUluc3RpdHV0aW9uLFxuICBmYU11c2V1bTogZmFNdXNldW0sXG4gIGZhVW5pdmVyc2l0eTogZmFVbml2ZXJzaXR5LFxuICBmYVVtYnJlbGxhOiBmYVVtYnJlbGxhLFxuICBmYVRyb3dlbDogZmFUcm93ZWwsXG4gIGZhRDogZmFELFxuICBmYVN0YXBsZXI6IGZhU3RhcGxlcixcbiAgZmFNYXNrc1RoZWF0ZXI6IGZhTWFza3NUaGVhdGVyLFxuICBmYVRoZWF0ZXJNYXNrczogZmFUaGVhdGVyTWFza3MsXG4gIGZhS2lwU2lnbjogZmFLaXBTaWduLFxuICBmYUhhbmRQb2ludExlZnQ6IGZhSGFuZFBvaW50TGVmdCxcbiAgZmFIYW5kc2hha2VTaW1wbGU6IGZhSGFuZHNoYWtlU2ltcGxlLFxuICBmYUhhbmRzaGFrZUFsdDogZmFIYW5kc2hha2VBbHQsXG4gIGZhSmV0RmlnaHRlcjogZmFKZXRGaWdodGVyLFxuICBmYUZpZ2h0ZXJKZXQ6IGZhRmlnaHRlckpldCxcbiAgZmFTcXVhcmVTaGFyZU5vZGVzOiBmYVNxdWFyZVNoYXJlTm9kZXMsXG4gIGZhU2hhcmVBbHRTcXVhcmU6IGZhU2hhcmVBbHRTcXVhcmUsXG4gIGZhQmFyY29kZTogZmFCYXJjb2RlLFxuICBmYVBsdXNNaW51czogZmFQbHVzTWludXMsXG4gIGZhVmlkZW86IGZhVmlkZW8sXG4gIGZhVmlkZW9DYW1lcmE6IGZhVmlkZW9DYW1lcmEsXG4gIGZhR3JhZHVhdGlvbkNhcDogZmFHcmFkdWF0aW9uQ2FwLFxuICBmYU1vcnRhckJvYXJkOiBmYU1vcnRhckJvYXJkLFxuICBmYUhhbmRIb2xkaW5nTWVkaWNhbDogZmFIYW5kSG9sZGluZ01lZGljYWwsXG4gIGZhUGVyc29uQ2lyY2xlQ2hlY2s6IGZhUGVyc29uQ2lyY2xlQ2hlY2ssXG4gIGZhVHVyblVwOiBmYVR1cm5VcCxcbiAgZmFMZXZlbFVwQWx0OiBmYUxldmVsVXBBbHRcbn07XG5cbmV4cG9ydCB7IGljb25zIGFzIGZhcywgcHJlZml4LCBmYTAsIGZhMSwgZmEyLCBmYTMsIGZhNCwgZmE1LCBmYTYsIGZhNywgZmE4LCBmYTksIGZhRmlsbERyaXAsIGZhQXJyb3dzVG9DaXJjbGUsIGZhQ2lyY2xlQ2hldnJvblJpZ2h0LCBmYUNoZXZyb25DaXJjbGVSaWdodCwgZmFBdCwgZmFUcmFzaENhbiwgZmFUcmFzaEFsdCwgZmFUZXh0SGVpZ2h0LCBmYVVzZXJYbWFyaywgZmFVc2VyVGltZXMsIGZhU3RldGhvc2NvcGUsIGZhTWVzc2FnZSwgZmFDb21tZW50QWx0LCBmYUluZm8sIGZhRG93bkxlZnRBbmRVcFJpZ2h0VG9DZW50ZXIsIGZhQ29tcHJlc3NBbHQsIGZhRXhwbG9zaW9uLCBmYUZpbGVMaW5lcywgZmFGaWxlQWx0LCBmYUZpbGVUZXh0LCBmYVdhdmVTcXVhcmUsIGZhUmluZywgZmFCdWlsZGluZ1VuLCBmYURpY2VUaHJlZSwgZmFDYWxlbmRhckRheXMsIGZhQ2FsZW5kYXJBbHQsIGZhQW5jaG9yQ2lyY2xlQ2hlY2ssIGZhQnVpbGRpbmdDaXJjbGVBcnJvd1JpZ2h0LCBmYVZvbGxleWJhbGwsIGZhVm9sbGV5YmFsbEJhbGwsIGZhQXJyb3dzVXBUb0xpbmUsIGZhU29ydERvd24sIGZhU29ydERlc2MsIGZhQ2lyY2xlTWludXMsIGZhTWludXNDaXJjbGUsIGZhRG9vck9wZW4sIGZhUmlnaHRGcm9tQnJhY2tldCwgZmFTaWduT3V0QWx0LCBmYUF0b20sIGZhU29hcCwgZmFJY29ucywgZmFIZWFydE11c2ljQ2FtZXJhQm9sdCwgZmFNaWNyb3Bob25lTGluZXNTbGFzaCwgZmFNaWNyb3Bob25lQWx0U2xhc2gsIGZhQnJpZGdlQ2lyY2xlQ2hlY2ssIGZhUHVtcE1lZGljYWwsIGZhRmluZ2VycHJpbnQsIGZhSGFuZFBvaW50UmlnaHQsIGZhTWFnbmlmeWluZ0dsYXNzTG9jYXRpb24sIGZhU2VhcmNoTG9jYXRpb24sIGZhRm9yd2FyZFN0ZXAsIGZhU3RlcEZvcndhcmQsIGZhRmFjZVNtaWxlQmVhbSwgZmFTbWlsZUJlYW0sIGZhRmxhZ0NoZWNrZXJlZCwgZmFGb290YmFsbCwgZmFGb290YmFsbEJhbGwsIGZhU2Nob29sQ2lyY2xlRXhjbGFtYXRpb24sIGZhQ3JvcCwgZmFBbmdsZXNEb3duLCBmYUFuZ2xlRG91YmxlRG93biwgZmFVc2Vyc1JlY3RhbmdsZSwgZmFQZW9wbGVSb29mLCBmYVBlb3BsZUxpbmUsIGZhQmVlck11Z0VtcHR5LCBmYUJlZXIsIGZhRGlhZ3JhbVByZWRlY2Vzc29yLCBmYUFycm93VXBMb25nLCBmYUxvbmdBcnJvd1VwLCBmYUZpcmVGbGFtZVNpbXBsZSwgZmFCdXJuLCBmYVBlcnNvbiwgZmFNYWxlLCBmYUxhcHRvcCwgZmFGaWxlQ3N2LCBmYU1lbm9yYWgsIGZhVHJ1Y2tQbGFuZSwgZmFSZWNvcmRWaW55bCwgZmFGYWNlR3JpblN0YXJzLCBmYUdyaW5TdGFycywgZmFCb25nLCBmYVNwYWdoZXR0aU1vbnN0ZXJGbHlpbmcsIGZhUGFzdGFmYXJpYW5pc20sIGZhQXJyb3dEb3duVXBBY3Jvc3NMaW5lLCBmYVNwb29uLCBmYVV0ZW5zaWxTcG9vbiwgZmFKYXJXaGVhdCwgZmFFbnZlbG9wZXNCdWxrLCBmYU1haWxCdWxrLCBmYUZpbGVDaXJjbGVFeGNsYW1hdGlvbiwgZmFDaXJjbGVILCBmYUhvc3BpdGFsU3ltYm9sLCBmYVBhZ2VyLCBmYUFkZHJlc3NCb29rLCBmYUNvbnRhY3RCb29rLCBmYVN0cmlrZXRocm91Z2gsIGZhSywgZmFMYW5kbWFya0ZsYWcsIGZhUGVuY2lsLCBmYVBlbmNpbEFsdCwgZmFCYWNrd2FyZCwgZmFDYXJldFJpZ2h0LCBmYUNvbW1lbnRzLCBmYVBhc3RlLCBmYUZpbGVDbGlwYm9hcmQsIGZhQ29kZVB1bGxSZXF1ZXN0LCBmYUNsaXBib2FyZExpc3QsIGZhVHJ1Y2tSYW1wQm94LCBmYVRydWNrTG9hZGluZywgZmFVc2VyQ2hlY2ssIGZhVmlhbFZpcnVzLCBmYVNoZWV0UGxhc3RpYywgZmFCbG9nLCBmYVVzZXJOaW5qYSwgZmFQZXJzb25BcnJvd1VwRnJvbUxpbmUsIGZhU2Nyb2xsVG9yYWgsIGZhVG9yYWgsIGZhQnJvb21CYWxsLCBmYVF1aWRkaXRjaCwgZmFRdWlkZGl0Y2hCcm9vbUJhbGwsIGZhVG9nZ2xlT2ZmLCBmYUJveEFyY2hpdmUsIGZhQXJjaGl2ZSwgZmFQZXJzb25Ecm93bmluZywgZmFBcnJvd0Rvd245MSwgZmFTb3J0TnVtZXJpY0Rlc2MsIGZhU29ydE51bWVyaWNEb3duQWx0LCBmYUZhY2VHcmluVG9uZ3VlU3F1aW50LCBmYUdyaW5Ub25ndWVTcXVpbnQsIGZhU3ByYXlDYW4sIGZhVHJ1Y2tNb25zdGVyLCBmYVcsIGZhRWFydGhBZnJpY2EsIGZhR2xvYmVBZnJpY2EsIGZhUmFpbmJvdywgZmFDaXJjbGVOb3RjaCwgZmFUYWJsZXRTY3JlZW5CdXR0b24sIGZhVGFibGV0QWx0LCBmYVBhdywgZmFDbG91ZCwgZmFUcm93ZWxCcmlja3MsIGZhRmFjZUZsdXNoZWQsIGZhRmx1c2hlZCwgZmFIb3NwaXRhbFVzZXIsIGZhVGVudEFycm93TGVmdFJpZ2h0LCBmYUdhdmVsLCBmYUxlZ2FsLCBmYUJpbm9jdWxhcnMsIGZhTWljcm9waG9uZVNsYXNoLCBmYUJveFRpc3N1ZSwgZmFNb3RvcmN5Y2xlLCBmYUJlbGxDb25jaWVyZ2UsIGZhQ29uY2llcmdlQmVsbCwgZmFQZW5SdWxlciwgZmFQZW5jaWxSdWxlciwgZmFQZW9wbGVBcnJvd3MsIGZhUGVvcGxlQXJyb3dzTGVmdFJpZ2h0LCBmYU1hcnNBbmRWZW51c0J1cnN0LCBmYVNxdWFyZUNhcmV0UmlnaHQsIGZhQ2FyZXRTcXVhcmVSaWdodCwgZmFTY2lzc29ycywgZmFDdXQsIGZhU3VuUGxhbnRXaWx0LCBmYVRvaWxldHNQb3J0YWJsZSwgZmFIb2NrZXlQdWNrLCBmYVRhYmxlLCBmYU1hZ25pZnlpbmdHbGFzc0Fycm93UmlnaHQsIGZhVGFjaG9ncmFwaERpZ2l0YWwsIGZhRGlnaXRhbFRhY2hvZ3JhcGgsIGZhVXNlcnNTbGFzaCwgZmFDbG92ZXIsIGZhUmVwbHksIGZhTWFpbFJlcGx5LCBmYVN0YXJBbmRDcmVzY2VudCwgZmFIb3VzZUZpcmUsIGZhU3F1YXJlTWludXMsIGZhTWludXNTcXVhcmUsIGZhSGVsaWNvcHRlciwgZmFDb21wYXNzLCBmYVNxdWFyZUNhcmV0RG93biwgZmFDYXJldFNxdWFyZURvd24sIGZhRmlsZUNpcmNsZVF1ZXN0aW9uLCBmYUxhcHRvcENvZGUsIGZhU3dhdGNoYm9vaywgZmFQcmVzY3JpcHRpb25Cb3R0bGUsIGZhQmFycywgZmFOYXZpY29uLCBmYVBlb3BsZUdyb3VwLCBmYUhvdXJnbGFzc0VuZCwgZmFIb3VyZ2xhc3MzLCBmYUhlYXJ0Q3JhY2ssIGZhSGVhcnRCcm9rZW4sIGZhU3F1YXJlVXBSaWdodCwgZmFFeHRlcm5hbExpbmtTcXVhcmVBbHQsIGZhRmFjZUtpc3NCZWFtLCBmYUtpc3NCZWFtLCBmYUZpbG0sIGZhUnVsZXJIb3Jpem9udGFsLCBmYVBlb3BsZVJvYmJlcnksIGZhTGlnaHRidWxiLCBmYUNhcmV0TGVmdCwgZmFDaXJjbGVFeGNsYW1hdGlvbiwgZmFFeGNsYW1hdGlvbkNpcmNsZSwgZmFTY2hvb2xDaXJjbGVYbWFyaywgZmFBcnJvd1JpZ2h0RnJvbUJyYWNrZXQsIGZhU2lnbk91dCwgZmFDaXJjbGVDaGV2cm9uRG93biwgZmFDaGV2cm9uQ2lyY2xlRG93biwgZmFVbmxvY2tLZXlob2xlLCBmYVVubG9ja0FsdCwgZmFDbG91ZFNob3dlcnNIZWF2eSwgZmFIZWFkcGhvbmVzU2ltcGxlLCBmYUhlYWRwaG9uZXNBbHQsIGZhU2l0ZW1hcCwgZmFDaXJjbGVEb2xsYXJUb1Nsb3QsIGZhRG9uYXRlLCBmYU1lbW9yeSwgZmFSb2FkU3Bpa2VzLCBmYUZpcmVCdXJuZXIsIGZhRmxhZywgZmFIYW51a2lhaCwgZmFGZWF0aGVyLCBmYVZvbHVtZUxvdywgZmFWb2x1bWVEb3duLCBmYUNvbW1lbnRTbGFzaCwgZmFDbG91ZFN1blJhaW4sIGZhQ29tcHJlc3MsIGZhV2hlYXRBd24sIGZhV2hlYXRBbHQsIGZhQW5raCwgZmFIYW5kc0hvbGRpbmdDaGlsZCwgZmFBc3RlcmlzaywgZmFTcXVhcmVDaGVjaywgZmFDaGVja1NxdWFyZSwgZmFQZXNldGFTaWduLCBmYUhlYWRpbmcsIGZhSGVhZGVyLCBmYUdob3N0LCBmYUxpc3QsIGZhTGlzdFNxdWFyZXMsIGZhU3F1YXJlUGhvbmVGbGlwLCBmYVBob25lU3F1YXJlQWx0LCBmYUNhcnRQbHVzLCBmYUdhbWVwYWQsIGZhQ2lyY2xlRG90LCBmYURvdENpcmNsZSwgZmFGYWNlRGl6enksIGZhRGl6enksIGZhRWdnLCBmYUhvdXNlTWVkaWNhbENpcmNsZVhtYXJrLCBmYUNhbXBncm91bmQsIGZhRm9sZGVyUGx1cywgZmFGdXRib2wsIGZhRnV0Ym9sQmFsbCwgZmFTb2NjZXJCYWxsLCBmYVBhaW50YnJ1c2gsIGZhUGFpbnRCcnVzaCwgZmFMb2NrLCBmYUdhc1B1bXAsIGZhSG90VHViUGVyc29uLCBmYUhvdFR1YiwgZmFNYXBMb2NhdGlvbiwgZmFNYXBNYXJrZWQsIGZhSG91c2VGbG9vZFdhdGVyLCBmYVRyZWUsIGZhQnJpZGdlTG9jaywgZmFTYWNrRG9sbGFyLCBmYVBlblRvU3F1YXJlLCBmYUVkaXQsIGZhQ2FyU2lkZSwgZmFTaGFyZU5vZGVzLCBmYVNoYXJlQWx0LCBmYUhlYXJ0Q2lyY2xlTWludXMsIGZhSG91cmdsYXNzSGFsZiwgZmFIb3VyZ2xhc3MyLCBmYU1pY3Jvc2NvcGUsIGZhU2luaywgZmFCYWdTaG9wcGluZywgZmFTaG9wcGluZ0JhZywgZmFBcnJvd0Rvd25aQSwgZmFTb3J0QWxwaGFEZXNjLCBmYVNvcnRBbHBoYURvd25BbHQsIGZhTWl0dGVuLCBmYVBlcnNvblJheXMsIGZhVXNlcnMsIGZhRXllU2xhc2gsIGZhRmxhc2tWaWFsLCBmYUhhbmQsIGZhSGFuZFBhcGVyLCBmYU9tLCBmYVdvcm0sIGZhSG91c2VDaXJjbGVYbWFyaywgZmFQbHVnLCBmYUNoZXZyb25VcCwgZmFIYW5kU3BvY2ssIGZhU3RvcHdhdGNoLCBmYUZhY2VLaXNzLCBmYUtpc3MsIGZhQnJpZGdlQ2lyY2xlWG1hcmssIGZhRmFjZUdyaW5Ub25ndWUsIGZhR3JpblRvbmd1ZSwgZmFDaGVzc0Jpc2hvcCwgZmFGYWNlR3JpbldpbmssIGZhR3JpbldpbmssIGZhRWFyRGVhZiwgZmFEZWFmLCBmYURlYWZuZXNzLCBmYUhhcmRPZkhlYXJpbmcsIGZhUm9hZENpcmNsZUNoZWNrLCBmYURpY2VGaXZlLCBmYVNxdWFyZVJzcywgZmFSc3NTcXVhcmUsIGZhTGFuZE1pbmVPbiwgZmFJQ3Vyc29yLCBmYVN0YW1wLCBmYVN0YWlycywgZmFJLCBmYUhyeXZuaWFTaWduLCBmYUhyeXZuaWEsIGZhUGlsbHMsIGZhRmFjZUdyaW5XaWRlLCBmYUdyaW5BbHQsIGZhVG9vdGgsIGZhViwgZmFCYW5nbGFkZXNoaVRha2FTaWduLCBmYUJpY3ljbGUsIGZhU3RhZmZTbmFrZSwgZmFSb2RBc2NsZXBpdXMsIGZhUm9kU25ha2UsIGZhU3RhZmZBZXNjdWxhcGl1cywgZmFIZWFkU2lkZUNvdWdoU2xhc2gsIGZhVHJ1Y2tNZWRpY2FsLCBmYUFtYnVsYW5jZSwgZmFXaGVhdEF3bkNpcmNsZUV4Y2xhbWF0aW9uLCBmYVNub3dtYW4sIGZhTW9ydGFyUGVzdGxlLCBmYVJvYWRCYXJyaWVyLCBmYVNjaG9vbCwgZmFJZ2xvbywgZmFKb2ludCwgZmFBbmdsZVJpZ2h0LCBmYUhvcnNlLCBmYVEsIGZhRywgZmFOb3Rlc01lZGljYWwsIGZhVGVtcGVyYXR1cmVIYWxmLCBmYVRlbXBlcmF0dXJlMiwgZmFUaGVybW9tZXRlcjIsIGZhVGhlcm1vbWV0ZXJIYWxmLCBmYURvbmdTaWduLCBmYUNhcHN1bGVzLCBmYVBvb1N0b3JtLCBmYVBvb0JvbHQsIGZhRmFjZUZyb3duT3BlbiwgZmFGcm93bk9wZW4sIGZhSGFuZFBvaW50VXAsIGZhTW9uZXlCaWxsLCBmYUJvb2ttYXJrLCBmYUFsaWduSnVzdGlmeSwgZmFVbWJyZWxsYUJlYWNoLCBmYUhlbG1ldFVuLCBmYUJ1bGxzZXllLCBmYUJhY29uLCBmYUhhbmRQb2ludERvd24sIGZhQXJyb3dVcEZyb21CcmFja2V0LCBmYUZvbGRlciwgZmFGb2xkZXJCbGFuaywgZmFGaWxlV2F2ZWZvcm0sIGZhRmlsZU1lZGljYWxBbHQsIGZhUmFkaWF0aW9uLCBmYUNoYXJ0U2ltcGxlLCBmYU1hcnNTdHJva2UsIGZhVmlhbCwgZmFHYXVnZSwgZmFEYXNoYm9hcmQsIGZhR2F1Z2VNZWQsIGZhVGFjaG9tZXRlckFsdEF2ZXJhZ2UsIGZhV2FuZE1hZ2ljU3BhcmtsZXMsIGZhTWFnaWNXYW5kU3BhcmtsZXMsIGZhRSwgZmFQZW5DbGlwLCBmYVBlbkFsdCwgZmFCcmlkZ2VDaXJjbGVFeGNsYW1hdGlvbiwgZmFVc2VyLCBmYVNjaG9vbENpcmNsZUNoZWNrLCBmYUR1bXBzdGVyLCBmYVZhblNodXR0bGUsIGZhU2h1dHRsZVZhbiwgZmFCdWlsZGluZ1VzZXIsIGZhU3F1YXJlQ2FyZXRMZWZ0LCBmYUNhcmV0U3F1YXJlTGVmdCwgZmFIaWdobGlnaHRlciwgZmFLZXksIGZhQnVsbGhvcm4sIGZhR2xvYmUsIGZhU3luYWdvZ3VlLCBmYVBlcnNvbkhhbGZEcmVzcywgZmFSb2FkQnJpZGdlLCBmYUxvY2F0aW9uQXJyb3csIGZhQywgZmFUYWJsZXRCdXR0b24sIGZhQnVpbGRpbmdMb2NrLCBmYVBpenphU2xpY2UsIGZhTW9uZXlCaWxsV2F2ZSwgZmFDaGFydEFyZWEsIGZhQXJlYUNoYXJ0LCBmYUhvdXNlRmxhZywgZmFQZXJzb25DaXJjbGVNaW51cywgZmFCYW4sIGZhQ2FuY2VsLCBmYUNhbWVyYVJvdGF0ZSwgZmFTcHJheUNhblNwYXJrbGVzLCBmYUFpckZyZXNoZW5lciwgZmFTdGFyLCBmYVJlcGVhdCwgZmFDcm9zcywgZmFCb3gsIGZhVmVudXNNYXJzLCBmYUFycm93UG9pbnRlciwgZmFNb3VzZVBvaW50ZXIsIGZhTWF4aW1pemUsIGZhRXhwYW5kQXJyb3dzQWx0LCBmYUNoYXJnaW5nU3RhdGlvbiwgZmFTaGFwZXMsIGZhVHJpYW5nbGVDaXJjbGVTcXVhcmUsIGZhU2h1ZmZsZSwgZmFSYW5kb20sIGZhUGVyc29uUnVubmluZywgZmFSdW5uaW5nLCBmYU1vYmlsZVJldHJvLCBmYUdyaXBMaW5lc1ZlcnRpY2FsLCBmYVNwaWRlciwgZmFIYW5kc0JvdW5kLCBmYUZpbGVJbnZvaWNlRG9sbGFyLCBmYVBsYW5lQ2lyY2xlRXhjbGFtYXRpb24sIGZhWFJheSwgZmFTcGVsbENoZWNrLCBmYVNsYXNoLCBmYUNvbXB1dGVyTW91c2UsIGZhTW91c2UsIGZhQXJyb3dSaWdodFRvQnJhY2tldCwgZmFTaWduSW4sIGZhU2hvcFNsYXNoLCBmYVN0b3JlQWx0U2xhc2gsIGZhU2VydmVyLCBmYVZpcnVzQ292aWRTbGFzaCwgZmFTaG9wTG9jaywgZmFIb3VyZ2xhc3NTdGFydCwgZmFIb3VyZ2xhc3MxLCBmYUJsZW5kZXJQaG9uZSwgZmFCdWlsZGluZ1doZWF0LCBmYVBlcnNvbkJyZWFzdGZlZWRpbmcsIGZhUmlnaHRUb0JyYWNrZXQsIGZhU2lnbkluQWx0LCBmYVZlbnVzLCBmYVBhc3Nwb3J0LCBmYUhlYXJ0UHVsc2UsIGZhSGVhcnRiZWF0LCBmYVBlb3BsZUNhcnJ5Qm94LCBmYVBlb3BsZUNhcnJ5LCBmYVRlbXBlcmF0dXJlSGlnaCwgZmFNaWNyb2NoaXAsIGZhQ3Jvd24sIGZhV2VpZ2h0SGFuZ2luZywgZmFYbWFya3NMaW5lcywgZmFGaWxlUHJlc2NyaXB0aW9uLCBmYVdlaWdodFNjYWxlLCBmYVdlaWdodCwgZmFVc2VyR3JvdXAsIGZhVXNlckZyaWVuZHMsIGZhQXJyb3dVcEFaLCBmYVNvcnRBbHBoYVVwLCBmYUNoZXNzS25pZ2h0LCBmYUZhY2VMYXVnaFNxdWludCwgZmFMYXVnaFNxdWludCwgZmFXaGVlbGNoYWlyLCBmYUNpcmNsZUFycm93VXAsIGZhQXJyb3dDaXJjbGVVcCwgZmFUb2dnbGVPbiwgZmFQZXJzb25XYWxraW5nLCBmYVdhbGtpbmcsIGZhTCwgZmFGaXJlLCBmYUJlZFB1bHNlLCBmYVByb2NlZHVyZXMsIGZhU2h1dHRsZVNwYWNlLCBmYVNwYWNlU2h1dHRsZSwgZmFGYWNlTGF1Z2gsIGZhTGF1Z2gsIGZhRm9sZGVyT3BlbiwgZmFIZWFydENpcmNsZVBsdXMsIGZhQ29kZUZvcmssIGZhQ2l0eSwgZmFNaWNyb3Bob25lTGluZXMsIGZhTWljcm9waG9uZUFsdCwgZmFQZXBwZXJIb3QsIGZhVW5sb2NrLCBmYUNvbG9uU2lnbiwgZmFIZWFkc2V0LCBmYVN0b3JlU2xhc2gsIGZhUm9hZENpcmNsZVhtYXJrLCBmYVVzZXJNaW51cywgZmFNYXJzU3Ryb2tlVXAsIGZhTWFyc1N0cm9rZVYsIGZhQ2hhbXBhZ25lR2xhc3NlcywgZmFHbGFzc0NoZWVycywgZmFDbGlwYm9hcmQsIGZhSG91c2VDaXJjbGVFeGNsYW1hdGlvbiwgZmFGaWxlQXJyb3dVcCwgZmFGaWxlVXBsb2FkLCBmYVdpZmksIGZhV2lmaTMsIGZhV2lmaVN0cm9uZywgZmFCYXRoLCBmYUJhdGh0dWIsIGZhVW5kZXJsaW5lLCBmYVVzZXJQZW4sIGZhVXNlckVkaXQsIGZhU2lnbmF0dXJlLCBmYVN0cm9vcHdhZmVsLCBmYUJvbGQsIGZhQW5jaG9yTG9jaywgZmFCdWlsZGluZ05nbywgZmFNYW5hdFNpZ24sIGZhTm90RXF1YWwsIGZhQm9yZGVyVG9wTGVmdCwgZmFCb3JkZXJTdHlsZSwgZmFNYXBMb2NhdGlvbkRvdCwgZmFNYXBNYXJrZWRBbHQsIGZhSmVkaSwgZmFTcXVhcmVQb2xsVmVydGljYWwsIGZhUG9sbCwgZmFNdWdIb3QsIGZhQ2FyQmF0dGVyeSwgZmFCYXR0ZXJ5Q2FyLCBmYUdpZnQsIGZhRGljZVR3bywgZmFDaGVzc1F1ZWVuLCBmYUdsYXNzZXMsIGZhQ2hlc3NCb2FyZCwgZmFCdWlsZGluZ0NpcmNsZUNoZWNrLCBmYVBlcnNvbkNoYWxrYm9hcmQsIGZhTWFyc1N0cm9rZVJpZ2h0LCBmYU1hcnNTdHJva2VILCBmYUhhbmRCYWNrRmlzdCwgZmFIYW5kUm9jaywgZmFTcXVhcmVDYXJldFVwLCBmYUNhcmV0U3F1YXJlVXAsIGZhQ2xvdWRTaG93ZXJzV2F0ZXIsIGZhQ2hhcnRCYXIsIGZhQmFyQ2hhcnQsIGZhSGFuZHNCdWJibGVzLCBmYUhhbmRzV2FzaCwgZmFMZXNzVGhhbkVxdWFsLCBmYVRyYWluLCBmYUV5ZUxvd1Zpc2lvbiwgZmFMb3dWaXNpb24sIGZhQ3JvdywgZmFTYWlsYm9hdCwgZmFXaW5kb3dSZXN0b3JlLCBmYVNxdWFyZVBsdXMsIGZhUGx1c1NxdWFyZSwgZmFUb3JpaUdhdGUsIGZhRnJvZywgZmFCdWNrZXQsIGZhSW1hZ2UsIGZhTWljcm9waG9uZSwgZmFDb3csIGZhQ2FyZXRVcCwgZmFTY3Jld2RyaXZlciwgZmFGb2xkZXJDbG9zZWQsIGZhSG91c2VUc3VuYW1pLCBmYVNxdWFyZU5maSwgZmFBcnJvd1VwRnJvbUdyb3VuZFdhdGVyLCBmYU1hcnRpbmlHbGFzcywgZmFHbGFzc01hcnRpbmlBbHQsIGZhUm90YXRlTGVmdCwgZmFSb3RhdGVCYWNrLCBmYVJvdGF0ZUJhY2t3YXJkLCBmYVVuZG9BbHQsIGZhVGFibGVDb2x1bW5zLCBmYUNvbHVtbnMsIGZhTGVtb24sIGZhSGVhZFNpZGVNYXNrLCBmYUhhbmRzaGFrZSwgZmFHZW0sIGZhRG9sbHksIGZhRG9sbHlCb3gsIGZhU21va2luZywgZmFNaW5pbWl6ZSwgZmFDb21wcmVzc0Fycm93c0FsdCwgZmFNb251bWVudCwgZmFTbm93cGxvdywgZmFBbmdsZXNSaWdodCwgZmFBbmdsZURvdWJsZVJpZ2h0LCBmYUNhbm5hYmlzLCBmYUNpcmNsZVBsYXksIGZhUGxheUNpcmNsZSwgZmFUYWJsZXRzLCBmYUV0aGVybmV0LCBmYUV1cm9TaWduLCBmYUV1ciwgZmFFdXJvLCBmYUNoYWlyLCBmYUNpcmNsZUNoZWNrLCBmYUNoZWNrQ2lyY2xlLCBmYUNpcmNsZVN0b3AsIGZhU3RvcENpcmNsZSwgZmFDb21wYXNzRHJhZnRpbmcsIGZhRHJhZnRpbmdDb21wYXNzLCBmYVBsYXRlV2hlYXQsIGZhSWNpY2xlcywgZmFQZXJzb25TaGVsdGVyLCBmYU5ldXRlciwgZmFJZEJhZGdlLCBmYU1hcmtlciwgZmFGYWNlTGF1Z2hCZWFtLCBmYUxhdWdoQmVhbSwgZmFIZWxpY29wdGVyU3ltYm9sLCBmYVVuaXZlcnNhbEFjY2VzcywgZmFDaXJjbGVDaGV2cm9uVXAsIGZhQ2hldnJvbkNpcmNsZVVwLCBmYUxhcmlTaWduLCBmYVZvbGNhbm8sIGZhUGVyc29uV2Fsa2luZ0Rhc2hlZExpbmVBcnJvd1JpZ2h0LCBmYVN0ZXJsaW5nU2lnbiwgZmFHYnAsIGZhUG91bmRTaWduLCBmYVZpcnVzZXMsIGZhU3F1YXJlUGVyc29uQ29uZmluZWQsIGZhVXNlclRpZSwgZmFBcnJvd0Rvd25Mb25nLCBmYUxvbmdBcnJvd0Rvd24sIGZhVGVudEFycm93RG93blRvTGluZSwgZmFDZXJ0aWZpY2F0ZSwgZmFSZXBseUFsbCwgZmFNYWlsUmVwbHlBbGwsIGZhU3VpdGNhc2UsIGZhUGVyc29uU2thdGluZywgZmFTa2F0aW5nLCBmYUZpbHRlckNpcmNsZURvbGxhciwgZmFGdW5uZWxEb2xsYXIsIGZhQ2FtZXJhUmV0cm8sIGZhQ2lyY2xlQXJyb3dEb3duLCBmYUFycm93Q2lyY2xlRG93biwgZmFGaWxlSW1wb3J0LCBmYUFycm93UmlnaHRUb0ZpbGUsIGZhU3F1YXJlQXJyb3dVcFJpZ2h0LCBmYUV4dGVybmFsTGlua1NxdWFyZSwgZmFCb3hPcGVuLCBmYVNjcm9sbCwgZmFTcGEsIGZhTG9jYXRpb25QaW5Mb2NrLCBmYVBhdXNlLCBmYUhpbGxBdmFsYW5jaGUsIGZhVGVtcGVyYXR1cmVFbXB0eSwgZmFUZW1wZXJhdHVyZTAsIGZhVGhlcm1vbWV0ZXIwLCBmYVRoZXJtb21ldGVyRW1wdHksIGZhQm9tYiwgZmFSZWdpc3RlcmVkLCBmYUFkZHJlc3NDYXJkLCBmYUNvbnRhY3RDYXJkLCBmYVZjYXJkLCBmYVNjYWxlVW5iYWxhbmNlZEZsaXAsIGZhQmFsYW5jZVNjYWxlUmlnaHQsIGZhU3Vic2NyaXB0LCBmYURpYW1vbmRUdXJuUmlnaHQsIGZhRGlyZWN0aW9ucywgZmFCdXJzdCwgZmFIb3VzZUxhcHRvcCwgZmFMYXB0b3BIb3VzZSwgZmFGYWNlVGlyZWQsIGZhVGlyZWQsIGZhTW9uZXlCaWxscywgZmFTbW9nLCBmYUNydXRjaCwgZmFGb250QXdlc29tZSwgZmFGb250QXdlc29tZUZsYWcsIGZhRm9udEF3ZXNvbWVMb2dvRnVsbCwgZmFDbG91ZEFycm93VXAsIGZhQ2xvdWRVcGxvYWQsIGZhQ2xvdWRVcGxvYWRBbHQsIGZhUGFsZXR0ZSwgZmFBcnJvd3NUdXJuUmlnaHQsIGZhVmVzdCwgZmFGZXJyeSwgZmFBcnJvd3NEb3duVG9QZW9wbGUsIGZhU2VlZGxpbmcsIGZhU3Byb3V0LCBmYUxlZnRSaWdodCwgZmFBcnJvd3NBbHRILCBmYUJveGVzUGFja2luZywgZmFDaXJjbGVBcnJvd0xlZnQsIGZhQXJyb3dDaXJjbGVMZWZ0LCBmYUdyb3VwQXJyb3dzUm90YXRlLCBmYUJvd2xGb29kLCBmYUNhbmR5Q2FuZSwgZmFBcnJvd0Rvd25XaWRlU2hvcnQsIGZhU29ydEFtb3VudEFzYywgZmFTb3J0QW1vdW50RG93biwgZmFDbG91ZEJvbHQsIGZhVGh1bmRlcnN0b3JtLCBmYVRleHRTbGFzaCwgZmFSZW1vdmVGb3JtYXQsIGZhRmFjZVNtaWxlV2luaywgZmFTbWlsZVdpbmssIGZhRmlsZVdvcmQsIGZhRmlsZVBvd2VycG9pbnQsIGZhQXJyb3dzTGVmdFJpZ2h0LCBmYUFycm93c0gsIGZhSG91c2VMb2NrLCBmYUNsb3VkQXJyb3dEb3duLCBmYUNsb3VkRG93bmxvYWQsIGZhQ2xvdWREb3dubG9hZEFsdCwgZmFDaGlsZHJlbiwgZmFDaGFsa2JvYXJkLCBmYUJsYWNrYm9hcmQsIGZhVXNlckxhcmdlU2xhc2gsIGZhVXNlckFsdFNsYXNoLCBmYUVudmVsb3BlT3BlbiwgZmFIYW5kc2hha2VTaW1wbGVTbGFzaCwgZmFIYW5kc2hha2VBbHRTbGFzaCwgZmFNYXR0cmVzc1BpbGxvdywgZmFHdWFyYW5pU2lnbiwgZmFBcnJvd3NSb3RhdGUsIGZhUmVmcmVzaCwgZmFTeW5jLCBmYUZpcmVFeHRpbmd1aXNoZXIsIGZhQ3J1emVpcm9TaWduLCBmYUdyZWF0ZXJUaGFuRXF1YWwsIGZhU2hpZWxkSGFsdmVkLCBmYVNoaWVsZEFsdCwgZmFCb29rQXRsYXMsIGZhQXRsYXMsIGZhVmlydXMsIGZhRW52ZWxvcGVDaXJjbGVDaGVjaywgZmFMYXllckdyb3VwLCBmYUFycm93c1RvRG90LCBmYUFyY2h3YXksIGZhSGVhcnRDaXJjbGVDaGVjaywgZmFIb3VzZUNoaW1uZXlDcmFjaywgZmFIb3VzZURhbWFnZSwgZmFGaWxlWmlwcGVyLCBmYUZpbGVBcmNoaXZlLCBmYVNxdWFyZSwgZmFNYXJ0aW5pR2xhc3NFbXB0eSwgZmFHbGFzc01hcnRpbmksIGZhQ291Y2gsIGZhQ2VkaVNpZ24sIGZhSXRhbGljLCBmYUNodXJjaCwgZmFDb21tZW50c0RvbGxhciwgZmFEZW1vY3JhdCwgZmFaLCBmYVBlcnNvblNraWluZywgZmFTa2lpbmcsIGZhUm9hZExvY2ssIGZhQSwgZmFUZW1wZXJhdHVyZUFycm93RG93biwgZmFUZW1wZXJhdHVyZURvd24sIGZhRmVhdGhlclBvaW50ZWQsIGZhRmVhdGhlckFsdCwgZmFQLCBmYVNub3dmbGFrZSwgZmFOZXdzcGFwZXIsIGZhUmVjdGFuZ2xlQWQsIGZhQWQsIGZhQ2lyY2xlQXJyb3dSaWdodCwgZmFBcnJvd0NpcmNsZVJpZ2h0LCBmYUZpbHRlckNpcmNsZVhtYXJrLCBmYUxvY3VzdCwgZmFTb3J0LCBmYVVuc29ydGVkLCBmYUxpc3RPbCwgZmFMaXN0MTIsIGZhTGlzdE51bWVyaWMsIGZhUGVyc29uRHJlc3NCdXJzdCwgZmFNb25leUNoZWNrRG9sbGFyLCBmYU1vbmV5Q2hlY2tBbHQsIGZhVmVjdG9yU3F1YXJlLCBmYUJyZWFkU2xpY2UsIGZhTGFuZ3VhZ2UsIGZhRmFjZUtpc3NXaW5rSGVhcnQsIGZhS2lzc1dpbmtIZWFydCwgZmFGaWx0ZXIsIGZhUXVlc3Rpb24sIGZhRmlsZVNpZ25hdHVyZSwgZmFVcERvd25MZWZ0UmlnaHQsIGZhQXJyb3dzQWx0LCBmYUhvdXNlQ2hpbW5leVVzZXIsIGZhSGFuZEhvbGRpbmdIZWFydCwgZmFQdXp6bGVQaWVjZSwgZmFNb25leUNoZWNrLCBmYVN0YXJIYWxmU3Ryb2tlLCBmYVN0YXJIYWxmQWx0LCBmYUNvZGUsIGZhV2hpc2tleUdsYXNzLCBmYUdsYXNzV2hpc2tleSwgZmFCdWlsZGluZ0NpcmNsZUV4Y2xhbWF0aW9uLCBmYU1hZ25pZnlpbmdHbGFzc0NoYXJ0LCBmYUFycm93VXBSaWdodEZyb21TcXVhcmUsIGZhRXh0ZXJuYWxMaW5rLCBmYUN1YmVzU3RhY2tlZCwgZmFXb25TaWduLCBmYUtydywgZmFXb24sIGZhVmlydXNDb3ZpZCwgZmFBdXN0cmFsU2lnbiwgZmFGLCBmYUxlYWYsIGZhUm9hZCwgZmFUYXhpLCBmYUNhYiwgZmFQZXJzb25DaXJjbGVQbHVzLCBmYUNoYXJ0UGllLCBmYVBpZUNoYXJ0LCBmYUJvbHRMaWdodG5pbmcsIGZhU2Fja1htYXJrLCBmYUZpbGVFeGNlbCwgZmFGaWxlQ29udHJhY3QsIGZhRmlzaEZpbnMsIGZhQnVpbGRpbmdGbGFnLCBmYUZhY2VHcmluQmVhbSwgZmFHcmluQmVhbSwgZmFPYmplY3RVbmdyb3VwLCBmYVBvb3AsIGZhTG9jYXRpb25QaW4sIGZhTWFwTWFya2VyLCBmYUthYWJhLCBmYVRvaWxldFBhcGVyLCBmYUhlbG1ldFNhZmV0eSwgZmFIYXJkSGF0LCBmYUhhdEhhcmQsIGZhRWplY3QsIGZhQ2lyY2xlUmlnaHQsIGZhQXJyb3dBbHRDaXJjbGVSaWdodCwgZmFQbGFuZUNpcmNsZUNoZWNrLCBmYUZhY2VSb2xsaW5nRXllcywgZmFNZWhSb2xsaW5nRXllcywgZmFPYmplY3RHcm91cCwgZmFDaGFydExpbmUsIGZhTGluZUNoYXJ0LCBmYU1hc2tWZW50aWxhdG9yLCBmYUFycm93UmlnaHQsIGZhU2lnbnNQb3N0LCBmYU1hcFNpZ25zLCBmYUNhc2hSZWdpc3RlciwgZmFQZXJzb25DaXJjbGVRdWVzdGlvbiwgZmFILCBmYVRhcnAsIGZhU2NyZXdkcml2ZXJXcmVuY2gsIGZhVG9vbHMsIGZhQXJyb3dzVG9FeWUsIGZhUGx1Z0NpcmNsZUJvbHQsIGZhSGVhcnQsIGZhTWFyc0FuZFZlbnVzLCBmYUhvdXNlVXNlciwgZmFIb21lVXNlciwgZmFEdW1wc3RlckZpcmUsIGZhSG91c2VDcmFjaywgZmFNYXJ0aW5pR2xhc3NDaXRydXMsIGZhQ29ja3RhaWwsIGZhRmFjZVN1cnByaXNlLCBmYVN1cnByaXNlLCBmYUJvdHRsZVdhdGVyLCBmYUNpcmNsZVBhdXNlLCBmYVBhdXNlQ2lyY2xlLCBmYVRvaWxldFBhcGVyU2xhc2gsIGZhQXBwbGVXaG9sZSwgZmFBcHBsZUFsdCwgZmFLaXRjaGVuU2V0LCBmYVIsIGZhVGVtcGVyYXR1cmVRdWFydGVyLCBmYVRlbXBlcmF0dXJlMSwgZmFUaGVybW9tZXRlcjEsIGZhVGhlcm1vbWV0ZXJRdWFydGVyLCBmYUN1YmUsIGZhQml0Y29pblNpZ24sIGZhU2hpZWxkRG9nLCBmYVNvbGFyUGFuZWwsIGZhTG9ja09wZW4sIGZhRWxldmF0b3IsIGZhTW9uZXlCaWxsVHJhbnNmZXIsIGZhTW9uZXlCaWxsVHJlbmRVcCwgZmFIb3VzZUZsb29kV2F0ZXJDaXJjbGVBcnJvd1JpZ2h0LCBmYVNxdWFyZVBvbGxIb3Jpem9udGFsLCBmYVBvbGxILCBmYUNpcmNsZSwgZmFCYWNrd2FyZEZhc3QsIGZhRmFzdEJhY2t3YXJkLCBmYVJlY3ljbGUsIGZhVXNlckFzdHJvbmF1dCwgZmFQbGFuZVNsYXNoLCBmYVRyYWRlbWFyaywgZmFCYXNrZXRiYWxsLCBmYUJhc2tldGJhbGxCYWxsLCBmYVNhdGVsbGl0ZURpc2gsIGZhQ2lyY2xlVXAsIGZhQXJyb3dBbHRDaXJjbGVVcCwgZmFNb2JpbGVTY3JlZW5CdXR0b24sIGZhTW9iaWxlQWx0LCBmYVZvbHVtZUhpZ2gsIGZhVm9sdW1lVXAsIGZhVXNlcnNSYXlzLCBmYVdhbGxldCwgZmFDbGlwYm9hcmRDaGVjaywgZmFGaWxlQXVkaW8sIGZhQnVyZ2VyLCBmYUhhbWJ1cmdlciwgZmFXcmVuY2gsIGZhQnVncywgZmFSdXBlZVNpZ24sIGZhUnVwZWUsIGZhRmlsZUltYWdlLCBmYUNpcmNsZVF1ZXN0aW9uLCBmYVF1ZXN0aW9uQ2lyY2xlLCBmYVBsYW5lRGVwYXJ0dXJlLCBmYUhhbmRzaGFrZVNsYXNoLCBmYUJvb2tCb29rbWFyaywgZmFDb2RlQnJhbmNoLCBmYUhhdENvd2JveSwgZmFCcmlkZ2UsIGZhUGhvbmVGbGlwLCBmYVBob25lQWx0LCBmYVRydWNrRnJvbnQsIGZhQ2F0LCBmYUFuY2hvckNpcmNsZUV4Y2xhbWF0aW9uLCBmYVRydWNrRmllbGQsIGZhUm91dGUsIGZhQ2xpcGJvYXJkUXVlc3Rpb24sIGZhUGFub3JhbWEsIGZhQ29tbWVudE1lZGljYWwsIGZhVGVldGhPcGVuLCBmYUZpbGVDaXJjbGVNaW51cywgZmFUYWdzLCBmYVdpbmVHbGFzcywgZmFGb3J3YXJkRmFzdCwgZmFGYXN0Rm9yd2FyZCwgZmFGYWNlTWVoQmxhbmssIGZhTWVoQmxhbmssIGZhU3F1YXJlUGFya2luZywgZmFQYXJraW5nLCBmYUhvdXNlU2lnbmFsLCBmYUJhcnNQcm9ncmVzcywgZmFUYXNrc0FsdCwgZmFGYXVjZXREcmlwLCBmYUNhcnRGbGF0YmVkLCBmYURvbGx5RmxhdGJlZCwgZmFCYW5TbW9raW5nLCBmYVNtb2tpbmdCYW4sIGZhVGVybWluYWwsIGZhTW9iaWxlQnV0dG9uLCBmYUhvdXNlTWVkaWNhbEZsYWcsIGZhQmFza2V0U2hvcHBpbmcsIGZhU2hvcHBpbmdCYXNrZXQsIGZhVGFwZSwgZmFCdXNTaW1wbGUsIGZhQnVzQWx0LCBmYUV5ZSwgZmFGYWNlU2FkQ3J5LCBmYVNhZENyeSwgZmFBdWRpb0Rlc2NyaXB0aW9uLCBmYVBlcnNvbk1pbGl0YXJ5VG9QZXJzb24sIGZhRmlsZVNoaWVsZCwgZmFVc2VyU2xhc2gsIGZhUGVuLCBmYVRvd2VyT2JzZXJ2YXRpb24sIGZhRmlsZUNvZGUsIGZhU2lnbmFsLCBmYVNpZ25hbDUsIGZhU2lnbmFsUGVyZmVjdCwgZmFCdXMsIGZhSGVhcnRDaXJjbGVYbWFyaywgZmFIb3VzZUNoaW1uZXksIGZhSG9tZUxnLCBmYVdpbmRvd01heGltaXplLCBmYUZhY2VGcm93biwgZmFGcm93biwgZmFQcmVzY3JpcHRpb24sIGZhU2hvcCwgZmFTdG9yZUFsdCwgZmFGbG9wcHlEaXNrLCBmYVNhdmUsIGZhVmloYXJhLCBmYVNjYWxlVW5iYWxhbmNlZCwgZmFCYWxhbmNlU2NhbGVMZWZ0LCBmYVNvcnRVcCwgZmFTb3J0QXNjLCBmYUNvbW1lbnREb3RzLCBmYUNvbW1lbnRpbmcsIGZhUGxhbnRXaWx0LCBmYURpYW1vbmQsIGZhRmFjZUdyaW5TcXVpbnQsIGZhR3JpblNxdWludCwgZmFIYW5kSG9sZGluZ0RvbGxhciwgZmFIYW5kSG9sZGluZ1VzZCwgZmFCYWN0ZXJpdW0sIGZhSGFuZFBvaW50ZXIsIGZhRHJ1bVN0ZWVscGFuLCBmYUhhbmRTY2lzc29ycywgZmFIYW5kc1ByYXlpbmcsIGZhUHJheWluZ0hhbmRzLCBmYUFycm93Um90YXRlUmlnaHQsIGZhQXJyb3dSaWdodFJvdGF0ZSwgZmFBcnJvd1JvdGF0ZUZvcndhcmQsIGZhUmVkbywgZmFCaW9oYXphcmQsIGZhTG9jYXRpb25Dcm9zc2hhaXJzLCBmYUxvY2F0aW9uLCBmYU1hcnNEb3VibGUsIGZhQ2hpbGREcmVzcywgZmFVc2Vyc0JldHdlZW5MaW5lcywgZmFMdW5nc1ZpcnVzLCBmYUZhY2VHcmluVGVhcnMsIGZhR3JpblRlYXJzLCBmYVBob25lLCBmYUNhbGVuZGFyWG1hcmssIGZhQ2FsZW5kYXJUaW1lcywgZmFDaGlsZFJlYWNoaW5nLCBmYUhlYWRTaWRlVmlydXMsIGZhVXNlckdlYXIsIGZhVXNlckNvZywgZmFBcnJvd1VwMTksIGZhU29ydE51bWVyaWNVcCwgZmFEb29yQ2xvc2VkLCBmYVNoaWVsZFZpcnVzLCBmYURpY2VTaXgsIGZhTW9zcXVpdG9OZXQsIGZhQnJpZGdlV2F0ZXIsIGZhUGVyc29uQm9vdGgsIGZhVGV4dFdpZHRoLCBmYUhhdFdpemFyZCwgZmFQZW5GYW5jeSwgZmFQZXJzb25EaWdnaW5nLCBmYURpZ2dpbmcsIGZhVHJhc2gsIGZhR2F1Z2VTaW1wbGUsIGZhR2F1Z2VTaW1wbGVNZWQsIGZhVGFjaG9tZXRlckF2ZXJhZ2UsIGZhQm9va01lZGljYWwsIGZhUG9vLCBmYVF1b3RlUmlnaHQsIGZhUXVvdGVSaWdodEFsdCwgZmFTaGlydCwgZmFUU2hpcnQsIGZhVHNoaXJ0LCBmYUN1YmVzLCBmYURpdmlkZSwgZmFUZW5nZVNpZ24sIGZhVGVuZ2UsIGZhSGVhZHBob25lcywgZmFIYW5kc0hvbGRpbmcsIGZhSGFuZHNDbGFwcGluZywgZmFSZXB1YmxpY2FuLCBmYUFycm93TGVmdCwgZmFQZXJzb25DaXJjbGVYbWFyaywgZmFSdWxlciwgZmFBbGlnbkxlZnQsIGZhRGljZUQ2LCBmYVJlc3Ryb29tLCBmYUosIGZhVXNlcnNWaWV3ZmluZGVyLCBmYUZpbGVWaWRlbywgZmFVcFJpZ2h0RnJvbVNxdWFyZSwgZmFFeHRlcm5hbExpbmtBbHQsIGZhVGFibGVDZWxscywgZmFUaCwgZmFGaWxlUGRmLCBmYUJvb2tCaWJsZSwgZmFCaWJsZSwgZmFPLCBmYVN1aXRjYXNlTWVkaWNhbCwgZmFNZWRraXQsIGZhVXNlclNlY3JldCwgZmFPdHRlciwgZmFQZXJzb25EcmVzcywgZmFGZW1hbGUsIGZhQ29tbWVudERvbGxhciwgZmFCdXNpbmVzc1RpbWUsIGZhQnJpZWZjYXNlQ2xvY2ssIGZhVGFibGVDZWxsc0xhcmdlLCBmYVRoTGFyZ2UsIGZhQm9va1RhbmFraCwgZmFUYW5ha2gsIGZhUGhvbmVWb2x1bWUsIGZhVm9sdW1lQ29udHJvbFBob25lLCBmYUhhdENvd2JveVNpZGUsIGZhQ2xpcGJvYXJkVXNlciwgZmFDaGlsZCwgZmFMaXJhU2lnbiwgZmFTYXRlbGxpdGUsIGZhUGxhbmVMb2NrLCBmYVRhZywgZmFDb21tZW50LCBmYUNha2VDYW5kbGVzLCBmYUJpcnRoZGF5Q2FrZSwgZmFDYWtlLCBmYUVudmVsb3BlLCBmYUFuZ2xlc1VwLCBmYUFuZ2xlRG91YmxlVXAsIGZhUGFwZXJjbGlwLCBmYUFycm93UmlnaHRUb0NpdHksIGZhUmliYm9uLCBmYUx1bmdzLCBmYUFycm93VXA5MSwgZmFTb3J0TnVtZXJpY1VwQWx0LCBmYUxpdGVjb2luU2lnbiwgZmFCb3JkZXJOb25lLCBmYUNpcmNsZU5vZGVzLCBmYVBhcmFjaHV0ZUJveCwgZmFJbmRlbnQsIGZhVHJ1Y2tGaWVsZFVuLCBmYUhvdXJnbGFzcywgZmFIb3VyZ2xhc3NFbXB0eSwgZmFNb3VudGFpbiwgZmFVc2VyRG9jdG9yLCBmYVVzZXJNZCwgZmFDaXJjbGVJbmZvLCBmYUluZm9DaXJjbGUsIGZhQ2xvdWRNZWF0YmFsbCwgZmFDYW1lcmEsIGZhQ2FtZXJhQWx0LCBmYVNxdWFyZVZpcnVzLCBmYU1ldGVvciwgZmFDYXJPbiwgZmFTbGVpZ2gsIGZhQXJyb3dEb3duMTksIGZhU29ydE51bWVyaWNBc2MsIGZhU29ydE51bWVyaWNEb3duLCBmYUhhbmRIb2xkaW5nRHJvcGxldCwgZmFIYW5kSG9sZGluZ1dhdGVyLCBmYVdhdGVyLCBmYUNhbGVuZGFyQ2hlY2ssIGZhQnJhaWxsZSwgZmFQcmVzY3JpcHRpb25Cb3R0bGVNZWRpY2FsLCBmYVByZXNjcmlwdGlvbkJvdHRsZUFsdCwgZmFMYW5kbWFyaywgZmFUcnVjaywgZmFDcm9zc2hhaXJzLCBmYVBlcnNvbkNhbmUsIGZhVGVudCwgZmFWZXN0UGF0Y2hlcywgZmFDaGVja0RvdWJsZSwgZmFBcnJvd0Rvd25BWiwgZmFTb3J0QWxwaGFBc2MsIGZhU29ydEFscGhhRG93biwgZmFNb25leUJpbGxXaGVhdCwgZmFDb29raWUsIGZhQXJyb3dSb3RhdGVMZWZ0LCBmYUFycm93TGVmdFJvdGF0ZSwgZmFBcnJvd1JvdGF0ZUJhY2ssIGZhQXJyb3dSb3RhdGVCYWNrd2FyZCwgZmFVbmRvLCBmYUhhcmREcml2ZSwgZmFIZGQsIGZhRmFjZUdyaW5TcXVpbnRUZWFycywgZmFHcmluU3F1aW50VGVhcnMsIGZhRHVtYmJlbGwsIGZhUmVjdGFuZ2xlTGlzdCwgZmFMaXN0QWx0LCBmYVRhcnBEcm9wbGV0LCBmYUhvdXNlTWVkaWNhbENpcmNsZUNoZWNrLCBmYVBlcnNvblNraWluZ05vcmRpYywgZmFTa2lpbmdOb3JkaWMsIGZhQ2FsZW5kYXJQbHVzLCBmYVBsYW5lQXJyaXZhbCwgZmFDaXJjbGVMZWZ0LCBmYUFycm93QWx0Q2lyY2xlTGVmdCwgZmFUcmFpblN1YndheSwgZmFTdWJ3YXksIGZhQ2hhcnRHYW50dCwgZmFJbmRpYW5SdXBlZVNpZ24sIGZhSW5kaWFuUnVwZWUsIGZhSW5yLCBmYUNyb3BTaW1wbGUsIGZhQ3JvcEFsdCwgZmFNb25leUJpbGwxLCBmYU1vbmV5QmlsbEFsdCwgZmFMZWZ0TG9uZywgZmFMb25nQXJyb3dBbHRMZWZ0LCBmYURuYSwgZmFWaXJ1c1NsYXNoLCBmYU1pbnVzLCBmYVN1YnRyYWN0LCBmYUNoZXNzLCBmYUFycm93TGVmdExvbmcsIGZhTG9uZ0Fycm93TGVmdCwgZmFQbHVnQ2lyY2xlQ2hlY2ssIGZhU3RyZWV0VmlldywgZmFGcmFuY1NpZ24sIGZhVm9sdW1lT2ZmLCBmYUhhbmRzQXNsSW50ZXJwcmV0aW5nLCBmYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nLCBmYUFzbEludGVycHJldGluZywgZmFIYW5kc0FtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nLCBmYUdlYXIsIGZhQ29nLCBmYURyb3BsZXRTbGFzaCwgZmFUaW50U2xhc2gsIGZhTW9zcXVlLCBmYU1vc3F1aXRvLCBmYVN0YXJPZkRhdmlkLCBmYVBlcnNvbk1pbGl0YXJ5UmlmbGUsIGZhQ2FydFNob3BwaW5nLCBmYVNob3BwaW5nQ2FydCwgZmFWaWFscywgZmFQbHVnQ2lyY2xlUGx1cywgZmFQbGFjZU9mV29yc2hpcCwgZmFHcmlwVmVydGljYWwsIGZhQXJyb3dUdXJuVXAsIGZhTGV2ZWxVcCwgZmFVLCBmYVNxdWFyZVJvb3RWYXJpYWJsZSwgZmFTcXVhcmVSb290QWx0LCBmYUNsb2NrLCBmYUNsb2NrRm91ciwgZmFCYWNrd2FyZFN0ZXAsIGZhU3RlcEJhY2t3YXJkLCBmYVBhbGxldCwgZmFGYXVjZXQsIGZhQmFzZWJhbGxCYXRCYWxsLCBmYVMsIGZhVGltZWxpbmUsIGZhS2V5Ym9hcmQsIGZhQ2FyZXREb3duLCBmYUhvdXNlQ2hpbW5leU1lZGljYWwsIGZhQ2xpbmljTWVkaWNhbCwgZmFUZW1wZXJhdHVyZVRocmVlUXVhcnRlcnMsIGZhVGVtcGVyYXR1cmUzLCBmYVRoZXJtb21ldGVyMywgZmFUaGVybW9tZXRlclRocmVlUXVhcnRlcnMsIGZhTW9iaWxlU2NyZWVuLCBmYU1vYmlsZUFuZHJvaWRBbHQsIGZhUGxhbmVVcCwgZmFQaWdneUJhbmssIGZhQmF0dGVyeUhhbGYsIGZhQmF0dGVyeTMsIGZhTW91bnRhaW5DaXR5LCBmYUNvaW5zLCBmYUtoYW5kYSwgZmFTbGlkZXJzLCBmYVNsaWRlcnNILCBmYUZvbGRlclRyZWUsIGZhTmV0d29ya1dpcmVkLCBmYU1hcFBpbiwgZmFIYW1zYSwgZmFDZW50U2lnbiwgZmFGbGFzaywgZmFQZXJzb25QcmVnbmFudCwgZmFXYW5kU3BhcmtsZXMsIGZhRWxsaXBzaXNWZXJ0aWNhbCwgZmFFbGxpcHNpc1YsIGZhVGlja2V0LCBmYVBvd2VyT2ZmLCBmYVJpZ2h0TG9uZywgZmFMb25nQXJyb3dBbHRSaWdodCwgZmFGbGFnVXNhLCBmYUxhcHRvcEZpbGUsIGZhVHR5LCBmYVRlbGV0eXBlLCBmYURpYWdyYW1OZXh0LCBmYVBlcnNvblJpZmxlLCBmYUhvdXNlTWVkaWNhbENpcmNsZUV4Y2xhbWF0aW9uLCBmYUNsb3NlZENhcHRpb25pbmcsIGZhUGVyc29uSGlraW5nLCBmYUhpa2luZywgZmFWZW51c0RvdWJsZSwgZmFJbWFnZXMsIGZhQ2FsY3VsYXRvciwgZmFQZW9wbGVQdWxsaW5nLCBmYU4sIGZhQ2FibGVDYXIsIGZhVHJhbSwgZmFDbG91ZFJhaW4sIGZhQnVpbGRpbmdDaXJjbGVYbWFyaywgZmFTaGlwLCBmYUFycm93c0Rvd25Ub0xpbmUsIGZhRG93bmxvYWQsIGZhRmFjZUdyaW4sIGZhR3JpbiwgZmFEZWxldGVMZWZ0LCBmYUJhY2tzcGFjZSwgZmFFeWVEcm9wcGVyLCBmYUV5ZURyb3BwZXJFbXB0eSwgZmFFeWVkcm9wcGVyLCBmYUZpbGVDaXJjbGVDaGVjaywgZmFGb3J3YXJkLCBmYU1vYmlsZSwgZmFNb2JpbGVBbmRyb2lkLCBmYU1vYmlsZVBob25lLCBmYUZhY2VNZWgsIGZhTWVoLCBmYUFsaWduQ2VudGVyLCBmYUJvb2tTa3VsbCwgZmFCb29rRGVhZCwgZmFJZENhcmQsIGZhRHJpdmVyc0xpY2Vuc2UsIGZhT3V0ZGVudCwgZmFEZWRlbnQsIGZhSGVhcnRDaXJjbGVFeGNsYW1hdGlvbiwgZmFIb3VzZSwgZmFIb21lLCBmYUhvbWVBbHQsIGZhSG9tZUxnQWx0LCBmYUNhbGVuZGFyV2VlaywgZmFMYXB0b3BNZWRpY2FsLCBmYUIsIGZhRmlsZU1lZGljYWwsIGZhRGljZU9uZSwgZmFLaXdpQmlyZCwgZmFBcnJvd1JpZ2h0QXJyb3dMZWZ0LCBmYUV4Y2hhbmdlLCBmYVJvdGF0ZVJpZ2h0LCBmYVJlZG9BbHQsIGZhUm90YXRlRm9yd2FyZCwgZmFVdGVuc2lscywgZmFDdXRsZXJ5LCBmYUFycm93VXBXaWRlU2hvcnQsIGZhU29ydEFtb3VudFVwLCBmYU1pbGxTaWduLCBmYUJvd2xSaWNlLCBmYVNrdWxsLCBmYVRvd2VyQnJvYWRjYXN0LCBmYUJyb2FkY2FzdFRvd2VyLCBmYVRydWNrUGlja3VwLCBmYVVwTG9uZywgZmFMb25nQXJyb3dBbHRVcCwgZmFTdG9wLCBmYUNvZGVNZXJnZSwgZmFVcGxvYWQsIGZhSHVycmljYW5lLCBmYU1vdW5kLCBmYVRvaWxldFBvcnRhYmxlLCBmYUNvbXBhY3REaXNjLCBmYUZpbGVBcnJvd0Rvd24sIGZhRmlsZURvd25sb2FkLCBmYUNhcmF2YW4sIGZhU2hpZWxkQ2F0LCBmYUJvbHQsIGZhWmFwLCBmYUdsYXNzV2F0ZXIsIGZhT2lsV2VsbCwgZmFWYXVsdCwgZmFNYXJzLCBmYVRvaWxldCwgZmFQbGFuZUNpcmNsZVhtYXJrLCBmYVllblNpZ24sIGZhQ255LCBmYUpweSwgZmFSbWIsIGZhWWVuLCBmYVJ1YmxlU2lnbiwgZmFSb3VibGUsIGZhUnViLCBmYVJ1YmxlLCBmYVN1biwgZmFHdWl0YXIsIGZhRmFjZUxhdWdoV2luaywgZmFMYXVnaFdpbmssIGZhSG9yc2VIZWFkLCBmYUJvcmVIb2xlLCBmYUluZHVzdHJ5LCBmYUNpcmNsZURvd24sIGZhQXJyb3dBbHRDaXJjbGVEb3duLCBmYUFycm93c1R1cm5Ub0RvdHMsIGZhRmxvcmluU2lnbiwgZmFBcnJvd0Rvd25TaG9ydFdpZGUsIGZhU29ydEFtb3VudERlc2MsIGZhU29ydEFtb3VudERvd25BbHQsIGZhTGVzc1RoYW4sIGZhQW5nbGVEb3duLCBmYUNhclR1bm5lbCwgZmFIZWFkU2lkZUNvdWdoLCBmYUdyaXBMaW5lcywgZmFUaHVtYnNEb3duLCBmYVVzZXJMb2NrLCBmYUFycm93UmlnaHRMb25nLCBmYUxvbmdBcnJvd1JpZ2h0LCBmYUFuY2hvckNpcmNsZVhtYXJrLCBmYUVsbGlwc2lzLCBmYUVsbGlwc2lzSCwgZmFDaGVzc1Bhd24sIGZhS2l0TWVkaWNhbCwgZmFGaXJzdEFpZCwgZmFQZXJzb25UaHJvdWdoV2luZG93LCBmYVRvb2xib3gsIGZhSGFuZHNIb2xkaW5nQ2lyY2xlLCBmYUJ1ZywgZmFDcmVkaXRDYXJkLCBmYUNyZWRpdENhcmRBbHQsIGZhQ2FyLCBmYUF1dG9tb2JpbGUsIGZhSGFuZEhvbGRpbmdIYW5kLCBmYUJvb2tPcGVuUmVhZGVyLCBmYUJvb2tSZWFkZXIsIGZhTW91bnRhaW5TdW4sIGZhQXJyb3dzTGVmdFJpZ2h0VG9MaW5lLCBmYURpY2VEMjAsIGZhVHJ1Y2tEcm9wbGV0LCBmYUZpbGVDaXJjbGVYbWFyaywgZmFUZW1wZXJhdHVyZUFycm93VXAsIGZhVGVtcGVyYXR1cmVVcCwgZmFNZWRhbCwgZmFCZWQsIGZhU3F1YXJlSCwgZmFIU3F1YXJlLCBmYVBvZGNhc3QsIGZhVGVtcGVyYXR1cmVGdWxsLCBmYVRlbXBlcmF0dXJlNCwgZmFUaGVybW9tZXRlcjQsIGZhVGhlcm1vbWV0ZXJGdWxsLCBmYUJlbGwsIGZhU3VwZXJzY3JpcHQsIGZhUGx1Z0NpcmNsZVhtYXJrLCBmYVN0YXJPZkxpZmUsIGZhUGhvbmVTbGFzaCwgZmFQYWludFJvbGxlciwgZmFIYW5kc2hha2VBbmdsZSwgZmFIYW5kc0hlbHBpbmcsIGZhTG9jYXRpb25Eb3QsIGZhTWFwTWFya2VyQWx0LCBmYUZpbGUsIGZhR3JlYXRlclRoYW4sIGZhUGVyc29uU3dpbW1pbmcsIGZhU3dpbW1lciwgZmFBcnJvd0Rvd24sIGZhRHJvcGxldCwgZmFUaW50LCBmYUVyYXNlciwgZmFFYXJ0aEFtZXJpY2FzLCBmYUVhcnRoLCBmYUVhcnRoQW1lcmljYSwgZmFHbG9iZUFtZXJpY2FzLCBmYVBlcnNvbkJ1cnN0LCBmYURvdmUsIGZhQmF0dGVyeUVtcHR5LCBmYUJhdHRlcnkwLCBmYVNvY2tzLCBmYUluYm94LCBmYVNlY3Rpb24sIGZhR2F1Z2VIaWdoLCBmYVRhY2hvbWV0ZXJBbHQsIGZhVGFjaG9tZXRlckFsdEZhc3QsIGZhRW52ZWxvcGVPcGVuVGV4dCwgZmFIb3NwaXRhbCwgZmFIb3NwaXRhbEFsdCwgZmFIb3NwaXRhbFdpZGUsIGZhV2luZUJvdHRsZSwgZmFDaGVzc1Jvb2ssIGZhQmFyc1N0YWdnZXJlZCwgZmFSZW9yZGVyLCBmYVN0cmVhbSwgZmFEaGFybWFjaGFrcmEsIGZhSG90ZG9nLCBmYVBlcnNvbldhbGtpbmdXaXRoQ2FuZSwgZmFCbGluZCwgZmFEcnVtLCBmYUljZUNyZWFtLCBmYUhlYXJ0Q2lyY2xlQm9sdCwgZmFGYXgsIGZhUGFyYWdyYXBoLCBmYUNoZWNrVG9TbG90LCBmYVZvdGVZZWEsIGZhU3RhckhhbGYsIGZhQm94ZXNTdGFja2VkLCBmYUJveGVzLCBmYUJveGVzQWx0LCBmYUxpbmssIGZhQ2hhaW4sIGZhRWFyTGlzdGVuLCBmYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXMsIGZhVHJlZUNpdHksIGZhUGxheSwgZmFGb250LCBmYVJ1cGlhaFNpZ24sIGZhTWFnbmlmeWluZ0dsYXNzLCBmYVNlYXJjaCwgZmFUYWJsZVRlbm5pc1BhZGRsZUJhbGwsIGZhUGluZ1BvbmdQYWRkbGVCYWxsLCBmYVRhYmxlVGVubmlzLCBmYVBlcnNvbkRvdHNGcm9tTGluZSwgZmFEaWFnbm9zZXMsIGZhVHJhc2hDYW5BcnJvd1VwLCBmYVRyYXNoUmVzdG9yZUFsdCwgZmFOYWlyYVNpZ24sIGZhQ2FydEFycm93RG93biwgZmFXYWxraWVUYWxraWUsIGZhRmlsZVBlbiwgZmFGaWxlRWRpdCwgZmFSZWNlaXB0LCBmYVNxdWFyZVBlbiwgZmFQZW5TcXVhcmUsIGZhUGVuY2lsU3F1YXJlLCBmYVN1aXRjYXNlUm9sbGluZywgZmFQZXJzb25DaXJjbGVFeGNsYW1hdGlvbiwgZmFDaGV2cm9uRG93biwgZmFCYXR0ZXJ5RnVsbCwgZmFCYXR0ZXJ5LCBmYUJhdHRlcnk1LCBmYVNrdWxsQ3Jvc3Nib25lcywgZmFDb2RlQ29tcGFyZSwgZmFMaXN0VWwsIGZhTGlzdERvdHMsIGZhU2Nob29sTG9jaywgZmFUb3dlckNlbGwsIGZhRG93bkxvbmcsIGZhTG9uZ0Fycm93QWx0RG93biwgZmFSYW5raW5nU3RhciwgZmFDaGVzc0tpbmcsIGZhUGVyc29uSGFyYXNzaW5nLCBmYUJyYXppbGlhblJlYWxTaWduLCBmYUxhbmRtYXJrRG9tZSwgZmFMYW5kbWFya0FsdCwgZmFBcnJvd1VwLCBmYVR2LCBmYVRlbGV2aXNpb24sIGZhVHZBbHQsIGZhU2hyaW1wLCBmYUxpc3RDaGVjaywgZmFUYXNrcywgZmFKdWdEZXRlcmdlbnQsIGZhQ2lyY2xlVXNlciwgZmFVc2VyQ2lyY2xlLCBmYVVzZXJTaGllbGQsIGZhV2luZCwgZmFDYXJCdXJzdCwgZmFDYXJDcmFzaCwgZmFZLCBmYVBlcnNvblNub3dib2FyZGluZywgZmFTbm93Ym9hcmRpbmcsIGZhVHJ1Y2tGYXN0LCBmYVNoaXBwaW5nRmFzdCwgZmFGaXNoLCBmYVVzZXJHcmFkdWF0ZSwgZmFDaXJjbGVIYWxmU3Ryb2tlLCBmYUFkanVzdCwgZmFDbGFwcGVyYm9hcmQsIGZhQ2lyY2xlUmFkaWF0aW9uLCBmYVJhZGlhdGlvbkFsdCwgZmFCYXNlYmFsbCwgZmFCYXNlYmFsbEJhbGwsIGZhSmV0RmlnaHRlclVwLCBmYURpYWdyYW1Qcm9qZWN0LCBmYVByb2plY3REaWFncmFtLCBmYUNvcHksIGZhVm9sdW1lWG1hcmssIGZhVm9sdW1lTXV0ZSwgZmFWb2x1bWVUaW1lcywgZmFIYW5kU3BhcmtsZXMsIGZhR3JpcCwgZmFHcmlwSG9yaXpvbnRhbCwgZmFTaGFyZUZyb21TcXVhcmUsIGZhU2hhcmVTcXVhcmUsIGZhQ2hpbGRDb21iYXRhbnQsIGZhQ2hpbGRSaWZsZSwgZmFHdW4sIGZhU3F1YXJlUGhvbmUsIGZhUGhvbmVTcXVhcmUsIGZhUGx1cywgZmFBZGQsIGZhRXhwYW5kLCBmYUNvbXB1dGVyLCBmYVhtYXJrLCBmYUNsb3NlLCBmYU11bHRpcGx5LCBmYVJlbW92ZSwgZmFUaW1lcywgZmFBcnJvd3NVcERvd25MZWZ0UmlnaHQsIGZhQXJyb3dzLCBmYUNoYWxrYm9hcmRVc2VyLCBmYUNoYWxrYm9hcmRUZWFjaGVyLCBmYVBlc29TaWduLCBmYUJ1aWxkaW5nU2hpZWxkLCBmYUJhYnksIGZhVXNlcnNMaW5lLCBmYVF1b3RlTGVmdCwgZmFRdW90ZUxlZnRBbHQsIGZhVHJhY3RvciwgZmFUcmFzaEFycm93VXAsIGZhVHJhc2hSZXN0b3JlLCBmYUFycm93RG93blVwTG9jaywgZmFMaW5lc0xlYW5pbmcsIGZhUnVsZXJDb21iaW5lZCwgZmFDb3B5cmlnaHQsIGZhRXF1YWxzLCBmYUJsZW5kZXIsIGZhVGVldGgsIGZhU2hla2VsU2lnbiwgZmFJbHMsIGZhU2hla2VsLCBmYVNoZXFlbCwgZmFTaGVxZWxTaWduLCBmYU1hcCwgZmFSb2NrZXQsIGZhUGhvdG9GaWxtLCBmYVBob3RvVmlkZW8sIGZhRm9sZGVyTWludXMsIGZhU3RvcmUsIGZhQXJyb3dUcmVuZFVwLCBmYVBsdWdDaXJjbGVNaW51cywgZmFTaWduSGFuZ2luZywgZmFTaWduLCBmYUJlemllckN1cnZlLCBmYUJlbGxTbGFzaCwgZmFUYWJsZXQsIGZhVGFibGV0QW5kcm9pZCwgZmFTY2hvb2xGbGFnLCBmYUZpbGwsIGZhQW5nbGVVcCwgZmFEcnVtc3RpY2tCaXRlLCBmYUhvbGx5QmVycnksIGZhQ2hldnJvbkxlZnQsIGZhQmFjdGVyaWEsIGZhSGFuZExpemFyZCwgZmFOb3RkZWYsIGZhRGlzZWFzZSwgZmFCcmllZmNhc2VNZWRpY2FsLCBmYUdlbmRlcmxlc3MsIGZhQ2hldnJvblJpZ2h0LCBmYVJldHdlZXQsIGZhQ2FyUmVhciwgZmFDYXJBbHQsIGZhUHVtcFNvYXAsIGZhVmlkZW9TbGFzaCwgZmFCYXR0ZXJ5UXVhcnRlciwgZmFCYXR0ZXJ5MiwgZmFSYWRpbywgZmFCYWJ5Q2FycmlhZ2UsIGZhQ2FycmlhZ2VCYWJ5LCBmYVRyYWZmaWNMaWdodCwgZmFUaGVybW9tZXRlciwgZmFWckNhcmRib2FyZCwgZmFIYW5kTWlkZGxlRmluZ2VyLCBmYVBlcmNlbnQsIGZhUGVyY2VudGFnZSwgZmFUcnVja01vdmluZywgZmFHbGFzc1dhdGVyRHJvcGxldCwgZmFEaXNwbGF5LCBmYUZhY2VTbWlsZSwgZmFTbWlsZSwgZmFUaHVtYnRhY2ssIGZhVGh1bWJUYWNrLCBmYVRyb3BoeSwgZmFQZXJzb25QcmF5aW5nLCBmYVByYXksIGZhSGFtbWVyLCBmYUhhbmRQZWFjZSwgZmFSb3RhdGUsIGZhU3luY0FsdCwgZmFTcGlubmVyLCBmYVJvYm90LCBmYVBlYWNlLCBmYUdlYXJzLCBmYUNvZ3MsIGZhV2FyZWhvdXNlLCBmYUFycm93VXBSaWdodERvdHMsIGZhU3Bsb3RjaCwgZmFGYWNlR3JpbkhlYXJ0cywgZmFHcmluSGVhcnRzLCBmYURpY2VGb3VyLCBmYVNpbUNhcmQsIGZhVHJhbnNnZW5kZXIsIGZhVHJhbnNnZW5kZXJBbHQsIGZhTWVyY3VyeSwgZmFBcnJvd1R1cm5Eb3duLCBmYUxldmVsRG93biwgZmFQZXJzb25GYWxsaW5nQnVyc3QsIGZhQXdhcmQsIGZhVGlja2V0U2ltcGxlLCBmYVRpY2tldEFsdCwgZmFCdWlsZGluZywgZmFBbmdsZXNMZWZ0LCBmYUFuZ2xlRG91YmxlTGVmdCwgZmFRcmNvZGUsIGZhQ2xvY2tSb3RhdGVMZWZ0LCBmYUhpc3RvcnksIGZhRmFjZUdyaW5CZWFtU3dlYXQsIGZhR3JpbkJlYW1Td2VhdCwgZmFGaWxlRXhwb3J0LCBmYUFycm93UmlnaHRGcm9tRmlsZSwgZmFTaGllbGQsIGZhU2hpZWxkQmxhbmssIGZhQXJyb3dVcFNob3J0V2lkZSwgZmFTb3J0QW1vdW50VXBBbHQsIGZhSG91c2VNZWRpY2FsLCBmYUdvbGZCYWxsVGVlLCBmYUdvbGZCYWxsLCBmYUNpcmNsZUNoZXZyb25MZWZ0LCBmYUNoZXZyb25DaXJjbGVMZWZ0LCBmYUhvdXNlQ2hpbW5leVdpbmRvdywgZmFQZW5OaWIsIGZhVGVudEFycm93VHVybkxlZnQsIGZhVGVudHMsIGZhV2FuZE1hZ2ljLCBmYU1hZ2ljLCBmYURvZywgZmFDYXJyb3QsIGZhTW9vbiwgZmFXaW5lR2xhc3NFbXB0eSwgZmFXaW5lR2xhc3NBbHQsIGZhQ2hlZXNlLCBmYVlpbllhbmcsIGZhTXVzaWMsIGZhQ29kZUNvbW1pdCwgZmFUZW1wZXJhdHVyZUxvdywgZmFQZXJzb25CaWtpbmcsIGZhQmlraW5nLCBmYUJyb29tLCBmYVNoaWVsZEhlYXJ0LCBmYUdvcHVyYW0sIGZhRWFydGhPY2VhbmlhLCBmYUdsb2JlT2NlYW5pYSwgZmFTcXVhcmVYbWFyaywgZmFUaW1lc1NxdWFyZSwgZmFYbWFya1NxdWFyZSwgZmFIYXNodGFnLCBmYVVwUmlnaHRBbmREb3duTGVmdEZyb21DZW50ZXIsIGZhRXhwYW5kQWx0LCBmYU9pbENhbiwgZmFULCBmYUhpcHBvLCBmYUNoYXJ0Q29sdW1uLCBmYUluZmluaXR5LCBmYVZpYWxDaXJjbGVDaGVjaywgZmFQZXJzb25BcnJvd0Rvd25Ub0xpbmUsIGZhVm9pY2VtYWlsLCBmYUZhbiwgZmFQZXJzb25XYWxraW5nTHVnZ2FnZSwgZmFVcERvd24sIGZhQXJyb3dzQWx0ViwgZmFDbG91ZE1vb25SYWluLCBmYUNhbGVuZGFyLCBmYVRyYWlsZXIsIGZhQmFoYWksIGZhSGF5a2FsLCBmYVNkQ2FyZCwgZmFEcmFnb24sIGZhU2hvZVByaW50cywgZmFDaXJjbGVQbHVzLCBmYVBsdXNDaXJjbGUsIGZhRmFjZUdyaW5Ub25ndWVXaW5rLCBmYUdyaW5Ub25ndWVXaW5rLCBmYUhhbmRIb2xkaW5nLCBmYVBsdWdDaXJjbGVFeGNsYW1hdGlvbiwgZmFMaW5rU2xhc2gsIGZhQ2hhaW5Ccm9rZW4sIGZhQ2hhaW5TbGFzaCwgZmFVbmxpbmssIGZhQ2xvbmUsIGZhUGVyc29uV2Fsa2luZ0Fycm93TG9vcExlZnQsIGZhQXJyb3dVcFpBLCBmYVNvcnRBbHBoYVVwQWx0LCBmYUZpcmVGbGFtZUN1cnZlZCwgZmFGaXJlQWx0LCBmYVRvcm5hZG8sIGZhRmlsZUNpcmNsZVBsdXMsIGZhQm9va1F1cmFuLCBmYVF1cmFuLCBmYUFuY2hvciwgZmFCb3JkZXJBbGwsIGZhRmFjZUFuZ3J5LCBmYUFuZ3J5LCBmYUNvb2tpZUJpdGUsIGZhQXJyb3dUcmVuZERvd24sIGZhUnNzLCBmYUZlZWQsIGZhRHJhd1BvbHlnb24sIGZhU2NhbGVCYWxhbmNlZCwgZmFCYWxhbmNlU2NhbGUsIGZhR2F1Z2VTaW1wbGVIaWdoLCBmYVRhY2hvbWV0ZXIsIGZhVGFjaG9tZXRlckZhc3QsIGZhU2hvd2VyLCBmYURlc2t0b3AsIGZhRGVza3RvcEFsdCwgZmFNLCBmYVRhYmxlTGlzdCwgZmFUaExpc3QsIGZhQ29tbWVudFNtcywgZmFTbXMsIGZhQm9vaywgZmFVc2VyUGx1cywgZmFDaGVjaywgZmFCYXR0ZXJ5VGhyZWVRdWFydGVycywgZmFCYXR0ZXJ5NCwgZmFIb3VzZUNpcmNsZUNoZWNrLCBmYUFuZ2xlTGVmdCwgZmFEaWFncmFtU3VjY2Vzc29yLCBmYVRydWNrQXJyb3dSaWdodCwgZmFBcnJvd3NTcGxpdFVwQW5kTGVmdCwgZmFIYW5kRmlzdCwgZmFGaXN0UmFpc2VkLCBmYUNsb3VkTW9vbiwgZmFCcmllZmNhc2UsIGZhUGVyc29uRmFsbGluZywgZmFJbWFnZVBvcnRyYWl0LCBmYVBvcnRyYWl0LCBmYVVzZXJUYWcsIGZhUnVnLCBmYUVhcnRoRXVyb3BlLCBmYUdsb2JlRXVyb3BlLCBmYUNhcnRGbGF0YmVkU3VpdGNhc2UsIGZhTHVnZ2FnZUNhcnQsIGZhUmVjdGFuZ2xlWG1hcmssIGZhUmVjdGFuZ2xlVGltZXMsIGZhVGltZXNSZWN0YW5nbGUsIGZhV2luZG93Q2xvc2UsIGZhQmFodFNpZ24sIGZhQm9va09wZW4sIGZhQm9va0pvdXJuYWxXaGlsbHMsIGZhSm91cm5hbFdoaWxscywgZmFIYW5kY3VmZnMsIGZhVHJpYW5nbGVFeGNsYW1hdGlvbiwgZmFFeGNsYW1hdGlvblRyaWFuZ2xlLCBmYVdhcm5pbmcsIGZhRGF0YWJhc2UsIGZhU2hhcmUsIGZhQXJyb3dUdXJuUmlnaHQsIGZhTWFpbEZvcndhcmQsIGZhQm90dGxlRHJvcGxldCwgZmFNYXNrRmFjZSwgZmFIaWxsUm9ja3NsaWRlLCBmYVJpZ2h0TGVmdCwgZmFFeGNoYW5nZUFsdCwgZmFQYXBlclBsYW5lLCBmYVJvYWRDaXJjbGVFeGNsYW1hdGlvbiwgZmFEdW5nZW9uLCBmYUFsaWduUmlnaHQsIGZhTW9uZXlCaWxsMVdhdmUsIGZhTW9uZXlCaWxsV2F2ZUFsdCwgZmFMaWZlUmluZywgZmFIYW5kcywgZmFTaWduTGFuZ3VhZ2UsIGZhU2lnbmluZywgZmFDYWxlbmRhckRheSwgZmFXYXRlckxhZGRlciwgZmFMYWRkZXJXYXRlciwgZmFTd2ltbWluZ1Bvb2wsIGZhQXJyb3dzVXBEb3duLCBmYUFycm93c1YsIGZhRmFjZUdyaW1hY2UsIGZhR3JpbWFjZSwgZmFXaGVlbGNoYWlyTW92ZSwgZmFXaGVlbGNoYWlyQWx0LCBmYVR1cm5Eb3duLCBmYUxldmVsRG93bkFsdCwgZmFQZXJzb25XYWxraW5nQXJyb3dSaWdodCwgZmFTcXVhcmVFbnZlbG9wZSwgZmFFbnZlbG9wZVNxdWFyZSwgZmFEaWNlLCBmYUJvd2xpbmdCYWxsLCBmYUJyYWluLCBmYUJhbmRhZ2UsIGZhQmFuZEFpZCwgZmFDYWxlbmRhck1pbnVzLCBmYUNpcmNsZVhtYXJrLCBmYVRpbWVzQ2lyY2xlLCBmYVhtYXJrQ2lyY2xlLCBmYUdpZnRzLCBmYUhvdGVsLCBmYUVhcnRoQXNpYSwgZmFHbG9iZUFzaWEsIGZhSWRDYXJkQ2xpcCwgZmFJZENhcmRBbHQsIGZhTWFnbmlmeWluZ0dsYXNzUGx1cywgZmFTZWFyY2hQbHVzLCBmYVRodW1ic1VwLCBmYVVzZXJDbG9jaywgZmFIYW5kRG90cywgZmFBbGxlcmdpZXMsIGZhRmlsZUludm9pY2UsIGZhV2luZG93TWluaW1pemUsIGZhTXVnU2F1Y2VyLCBmYUNvZmZlZSwgZmFCcnVzaCwgZmFNYXNrLCBmYU1hZ25pZnlpbmdHbGFzc01pbnVzLCBmYVNlYXJjaE1pbnVzLCBmYVJ1bGVyVmVydGljYWwsIGZhVXNlckxhcmdlLCBmYVVzZXJBbHQsIGZhVHJhaW5UcmFtLCBmYVVzZXJOdXJzZSwgZmFTeXJpbmdlLCBmYUNsb3VkU3VuLCBmYVN0b3B3YXRjaDIwLCBmYVNxdWFyZUZ1bGwsIGZhTWFnbmV0LCBmYUphciwgZmFOb3RlU3RpY2t5LCBmYVN0aWNreU5vdGUsIGZhQnVnU2xhc2gsIGZhQXJyb3dVcEZyb21XYXRlclB1bXAsIGZhQm9uZSwgZmFVc2VySW5qdXJlZCwgZmFGYWNlU2FkVGVhciwgZmFTYWRUZWFyLCBmYVBsYW5lLCBmYVRlbnRBcnJvd3NEb3duLCBmYUV4Y2xhbWF0aW9uLCBmYUFycm93c1NwaW4sIGZhUHJpbnQsIGZhVHVya2lzaExpcmFTaWduLCBmYVRyeSwgZmFUdXJraXNoTGlyYSwgZmFEb2xsYXJTaWduLCBmYURvbGxhciwgZmFVc2QsIGZhWCwgZmFNYWduaWZ5aW5nR2xhc3NEb2xsYXIsIGZhU2VhcmNoRG9sbGFyLCBmYVVzZXJzR2VhciwgZmFVc2Vyc0NvZywgZmFQZXJzb25NaWxpdGFyeVBvaW50aW5nLCBmYUJ1aWxkaW5nQ29sdW1ucywgZmFCYW5rLCBmYUluc3RpdHV0aW9uLCBmYU11c2V1bSwgZmFVbml2ZXJzaXR5LCBmYVVtYnJlbGxhLCBmYVRyb3dlbCwgZmFELCBmYVN0YXBsZXIsIGZhTWFza3NUaGVhdGVyLCBmYVRoZWF0ZXJNYXNrcywgZmFLaXBTaWduLCBmYUhhbmRQb2ludExlZnQsIGZhSGFuZHNoYWtlU2ltcGxlLCBmYUhhbmRzaGFrZUFsdCwgZmFKZXRGaWdodGVyLCBmYUZpZ2h0ZXJKZXQsIGZhU3F1YXJlU2hhcmVOb2RlcywgZmFTaGFyZUFsdFNxdWFyZSwgZmFCYXJjb2RlLCBmYVBsdXNNaW51cywgZmFWaWRlbywgZmFWaWRlb0NhbWVyYSwgZmFHcmFkdWF0aW9uQ2FwLCBmYU1vcnRhckJvYXJkLCBmYUhhbmRIb2xkaW5nTWVkaWNhbCwgZmFQZXJzb25DaXJjbGVDaGVjaywgZmFUdXJuVXAsIGZhTGV2ZWxVcEFsdCB9O1xuIiwgIjxnPlxuICB7QGh0bWwgcmF3fVxuPC9nPlxuXG48c2NyaXB0PmxldCBjdXJzb3IgPSAweGQ0OTM3O1xuZnVuY3Rpb24gZ2V0SWQoKSB7XG4gICAgY3Vyc29yICs9IDE7XG4gICAgcmV0dXJuIGBmYS0ke2N1cnNvci50b1N0cmluZygxNil9YDtcbn1cbmxldCByYXcgPSAnJztcbmV4cG9ydCBsZXQgZGF0YTtcbmZ1bmN0aW9uIGdldFJhdyhkYXRhKSB7XG4gICAgaWYgKCFkYXRhIHx8ICFkYXRhLnJhdykge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGxldCByYXdEYXRhID0gZGF0YS5yYXc7XG4gICAgY29uc3QgaWRzID0ge307XG4gICAgcmF3RGF0YSA9IHJhd0RhdGEucmVwbGFjZSgvXFxzKD86eG1sOik/aWQ9W1wiJ10/KFteXCInKVxcc10rKS9nLCAobWF0Y2gsIGlkKSA9PiB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZUlkID0gZ2V0SWQoKTtcbiAgICAgICAgaWRzW2lkXSA9IHVuaXF1ZUlkO1xuICAgICAgICByZXR1cm4gYCBpZD1cIiR7dW5pcXVlSWR9XCJgO1xuICAgIH0pO1xuICAgIHJhd0RhdGEgPSByYXdEYXRhLnJlcGxhY2UoLyMoPzooW14nXCIpXFxzXSspfHhwb2ludGVyXFwoaWRcXCgoWydcIl0/KShbXicpXSspXFwyXFwpXFwpKS9nLCAobWF0Y2gsIHJhd0lkLCBfLCBwb2ludGVySWQpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSByYXdJZCB8fCBwb2ludGVySWQ7XG4gICAgICAgIGlmICghaWQgfHwgIWlkc1tpZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCMke2lkc1tpZF19YDtcbiAgICB9KTtcbiAgICByZXR1cm4gcmF3RGF0YTtcbn1cbiQ6IHJhdyA9IGdldFJhdyhkYXRhKTtcbjwvc2NyaXB0PlxuIiwgIjxzdmdcbiAgdmVyc2lvbj1cIjEuMVwiXG4gIGNsYXNzPVwiZmEtaWNvbiB7Y2xhc3NOYW1lfVwiXG4gIGNsYXNzOmZhLXNwaW49e3NwaW59XG4gIGNsYXNzOmZhLXB1bHNlPXtwdWxzZX1cbiAgY2xhc3M6ZmEtaW52ZXJzZT17aW52ZXJzZX1cbiAgY2xhc3M6ZmEtZmxpcC1ob3Jpem9udGFsPXtmbGlwID09PSAnaG9yaXpvbnRhbCd9XG4gIGNsYXNzOmZhLWZsaXAtdmVydGljYWw9e2ZsaXAgPT09ICd2ZXJ0aWNhbCd9XG4gIHt3aWR0aH1cbiAge2hlaWdodH1cbiAgYXJpYS1sYWJlbD17bGFiZWx9XG4gIHJvbGU9e2xhYmVsID8gJ2ltZycgOiAncHJlc2VudGF0aW9uJ31cbiAgdmlld0JveD17Ym94fVxuICB7c3R5bGV9XG4gIHsuLi4kJHJlc3RQcm9wc31cbj5cbiAgPHNsb3QgLz5cbjwvc3ZnPlxuXG48c3R5bGU+XG4gIC5mYS1pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xuICB9XG4gIC5mYS1mbGlwLWhvcml6b250YWwge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpO1xuICB9XG4gIC5mYS1mbGlwLXZlcnRpY2FsIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIC0xKTtcbiAgfVxuICAuZmEtc3BpbiB7XG4gICAgYW5pbWF0aW9uOiBmYS1zcGluIDFzIDBzIGluZmluaXRlIGxpbmVhcjtcbiAgfVxuICAuZmEtaW52ZXJzZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbiAgLmZhLXB1bHNlIHtcbiAgICBhbmltYXRpb246IGZhLXNwaW4gMXMgaW5maW5pdGUgc3RlcHMoOCk7XG4gIH1cbiAgQGtleWZyYW1lcyBmYS1zcGluIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cblxuPHNjcmlwdD5sZXQgY2xhc3NOYW1lID0gJyc7XG5leHBvcnQgeyBjbGFzc05hbWUgYXMgY2xhc3MgfTtcbmV4cG9ydCBsZXQgd2lkdGg7XG5leHBvcnQgbGV0IGhlaWdodDtcbmV4cG9ydCBsZXQgYm94ID0gJzAgMCAwIDAnO1xuZXhwb3J0IGxldCBzcGluID0gZmFsc2U7XG5leHBvcnQgbGV0IGludmVyc2UgPSBmYWxzZTtcbmV4cG9ydCBsZXQgcHVsc2UgPSBmYWxzZTtcbmV4cG9ydCBsZXQgZmxpcCA9ICdub25lJztcbi8vIG9wdGlvbmFsc1xuZXhwb3J0IGxldCBzdHlsZSA9ICcnO1xuZXhwb3J0IGxldCBsYWJlbCA9ICcnO1xuPC9zY3JpcHQ+XG4iLCAiPFN2Z1xuICB7bGFiZWx9XG4gIHt3aWR0aH1cbiAge2hlaWdodH1cbiAge2JveH1cbiAgc3R5bGU9e2NvbWJpbmVkU3R5bGV9XG4gIHtzcGlufVxuICB7ZmxpcH1cbiAge2ludmVyc2V9XG4gIHtwdWxzZX1cbiAgY2xhc3M9e2NsYXNzTmFtZX1cbiAgey4uLiQkcmVzdFByb3BzfVxuPlxuICA8c2xvdD5cbiAgICB7I2lmIGljb25EYXRhfVxuICAgICAgeyNpZiBpY29uRGF0YS5wYXRoc31cbiAgICAgICAgeyNlYWNoIGljb25EYXRhLnBhdGhzIGFzIHBhdGh9XG4gICAgICAgICAgPHBhdGggey4uLnBhdGh9IC8+XG4gICAgICAgIHsvZWFjaH1cbiAgICAgIHsvaWZ9XG4gICAgICB7I2lmIGljb25EYXRhLnBvbHlnb25zfVxuICAgICAgICB7I2VhY2ggaWNvbkRhdGEucG9seWdvbnMgYXMgcG9seWdvbn1cbiAgICAgICAgICA8cG9seWdvbiB7Li4ucG9seWdvbn0gLz5cbiAgICAgICAgey9lYWNofVxuICAgICAgey9pZn1cbiAgICAgIHsjaWYgaWNvbkRhdGEucmF3fVxuICAgICAgICA8UmF3IGJpbmQ6ZGF0YT17aWNvbkRhdGF9IC8+XG4gICAgICB7L2lmfVxuICAgIHsvaWZ9XG4gIDwvc2xvdD5cbjwvU3ZnPlxuXG48c2NyaXB0IGNvbnRleHQ9XCJtb2R1bGVcIj48L3NjcmlwdD5cblxuPHNjcmlwdD5pbXBvcnQgUmF3IGZyb20gJy4vc3ZnL1Jhdy5zdmVsdGUnO1xuaW1wb3J0IFN2ZyBmcm9tICcuL3N2Zy9Tdmcuc3ZlbHRlJztcbmxldCBjbGFzc05hbWUgPSAnJztcbmV4cG9ydCBsZXQgZGF0YTtcbmxldCBpY29uRGF0YTtcbmV4cG9ydCBsZXQgc2NhbGUgPSAxO1xuZXhwb3J0IGxldCBzcGluID0gZmFsc2U7XG5leHBvcnQgbGV0IGludmVyc2UgPSBmYWxzZTtcbmV4cG9ydCBsZXQgcHVsc2UgPSBmYWxzZTtcbmV4cG9ydCBsZXQgZmxpcCA9IHVuZGVmaW5lZDtcbmV4cG9ydCBsZXQgbGFiZWwgPSAnJztcbmV4cG9ydCBsZXQgc3R5bGUgPSAnJztcbmV4cG9ydCB7IGNsYXNzTmFtZSBhcyBjbGFzcyB9O1xuLy8gaW50ZXJuYWxcbmxldCBjaGlsZHJlbkhlaWdodCA9IDA7XG5sZXQgY2hpbGRyZW5XaWR0aCA9IDA7XG5sZXQgb3V0ZXJTY2FsZSA9IDE7XG5sZXQgd2lkdGggPSAxMDtcbmxldCBoZWlnaHQgPSAxMDtcbmxldCBjb21iaW5lZFN0eWxlO1xubGV0IGJveDtcbmZ1bmN0aW9uIG5vcm1hbGlzZURhdGEoZGF0YSkge1xuICAgIGxldCBuYW1lO1xuICAgIGxldCBpY29uRGF0YTtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZWxzZSBpZiAoJ2RlZmluaXRpb24nIGluIGRhdGEpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcImBpbXBvcnQgZmFJY29uTmFtZSBmcm9tICdAZm9ydGF3ZXNvbWUvcGFja2FnZS1uYW1lL2ZhSWNvbk5hbWVgIG5vdCBzdXBwb3J0ZWQgLSBQbGVhc2UgdXNlIGBpbXBvcnQgeyBmYUljb25OYW1lIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3BhY2thZ2UtbmFtZS9mYUljb25OYW1lJ2AgaW5zdGVhZFwiKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgZWxzZSBpZiAoJ2ljb25OYW1lJyBpbiBkYXRhICYmICdpY29uJyBpbiBkYXRhKSB7XG4gICAgICAgIG5hbWUgPSBkYXRhLmljb25OYW1lO1xuICAgICAgICBsZXQgcGF0aHMgPSBbXTtcbiAgICAgICAgLy8gZm9udGF3ZXNvbWUgdjUvNiBpY29uIGltcG9ydGVkIHdpdGg6XG4gICAgICAgIC8vIGltcG9ydCB7IGljb25OYW1lIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3BhY2thZ2VuYW1lL2ljb25OYW1lJztcbiAgICAgICAgLy8gaW1wb3J0IHsgaWNvbk5hbWUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvcGFja2FnZW5hbWUnO1xuICAgICAgICBjb25zdCBbd2lkdGgsIGhlaWdodCwgLCAsIHBhdGhdID0gZGF0YS5pY29uO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkge1xuICAgICAgICAgICAgcGF0aHMgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGF0aHMgPSBbcGF0aF07XG4gICAgICAgIH1cbiAgICAgICAgaWNvbkRhdGEgPSB7XG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHBhdGhzOiBwYXRocy5tYXAoKHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBkOiBwYXRoIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gaW5idWlsdCBpY29uc1xuICAgICAgICBuYW1lID0gT2JqZWN0LmtleXMoZGF0YSlbMF07XG4gICAgICAgIGljb25EYXRhID0gZGF0YVtuYW1lXTtcbiAgICB9XG4gICAgcmV0dXJuIGljb25EYXRhO1xufVxuZnVuY3Rpb24gbm9ybWFsaXNlZFNjYWxlKCkge1xuICAgIGxldCBudW1TY2FsZSA9IDE7XG4gICAgaWYgKHR5cGVvZiBzY2FsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbnVtU2NhbGUgPSBOdW1iZXIoc2NhbGUpO1xuICAgIH1cbiAgICBpZiAoaXNOYU4obnVtU2NhbGUpIHx8IG51bVNjYWxlIDw9IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdJbnZhbGlkIHByb3A6IHByb3AgXCJzY2FsZVwiIHNob3VsZCBiZSBhIG51bWJlciBvdmVyIDAuJyk7XG4gICAgICAgIHJldHVybiBvdXRlclNjYWxlO1xuICAgIH1cbiAgICByZXR1cm4gbnVtU2NhbGUgKiBvdXRlclNjYWxlO1xufVxuZnVuY3Rpb24gY2FsY3VsYXRlQm94KCkge1xuICAgIGlmIChpY29uRGF0YSkge1xuICAgICAgICByZXR1cm4gYDAgMCAke2ljb25EYXRhLndpZHRofSAke2ljb25EYXRhLmhlaWdodH1gO1xuICAgIH1cbiAgICByZXR1cm4gYDAgMCAke3dpZHRofSAke2hlaWdodH1gO1xufVxuZnVuY3Rpb24gY2FsY3VsYXRlUmF0aW8oKSB7XG4gICAgaWYgKCFpY29uRGF0YSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWF4KGljb25EYXRhLndpZHRoLCBpY29uRGF0YS5oZWlnaHQpIC8gMTY7XG59XG5mdW5jdGlvbiBjYWxjdWxhdGVXaWR0aCgpIHtcbiAgICBpZiAoY2hpbGRyZW5XaWR0aCkge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW5XaWR0aDtcbiAgICB9XG4gICAgaWYgKGljb25EYXRhKSB7XG4gICAgICAgIHJldHVybiAoaWNvbkRhdGEud2lkdGggLyBjYWxjdWxhdGVSYXRpbygpKSAqIG5vcm1hbGlzZWRTY2FsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cbmZ1bmN0aW9uIGNhbGN1bGF0ZUhlaWdodCgpIHtcbiAgICBpZiAoY2hpbGRyZW5IZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuSGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoaWNvbkRhdGEpIHtcbiAgICAgICAgcmV0dXJuIChpY29uRGF0YS5oZWlnaHQgLyBjYWxjdWxhdGVSYXRpbygpKSAqIG5vcm1hbGlzZWRTY2FsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cbmZ1bmN0aW9uIGNhbGN1bGF0ZVN0eWxlKCkge1xuICAgIGxldCBjb21iaW5lZCA9ICcnO1xuICAgIGlmIChzdHlsZSAhPT0gbnVsbCkge1xuICAgICAgICBjb21iaW5lZCArPSBzdHlsZTtcbiAgICB9XG4gICAgbGV0IHNpemUgPSBub3JtYWxpc2VkU2NhbGUoKTtcbiAgICBpZiAoc2l6ZSA9PT0gMSkge1xuICAgICAgICBpZiAoY29tYmluZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVkO1xuICAgIH1cbiAgICBpZiAoY29tYmluZWQgIT09ICcnICYmICFjb21iaW5lZC5lbmRzV2l0aCgnOycpKSB7XG4gICAgICAgIGNvbWJpbmVkICs9ICc7ICc7XG4gICAgfVxuICAgIHJldHVybiBgJHtjb21iaW5lZH1mb250LXNpemU6ICR7c2l6ZX1lbWA7XG59XG4kOiB7XG4gICAgaWNvbkRhdGEgPSBub3JtYWxpc2VEYXRhKGRhdGEpO1xuICAgIHN0eWxlO1xuICAgIHNjYWxlO1xuICAgIHdpZHRoID0gY2FsY3VsYXRlV2lkdGgoKTtcbiAgICBoZWlnaHQgPSBjYWxjdWxhdGVIZWlnaHQoKTtcbiAgICBjb21iaW5lZFN0eWxlID0gY2FsY3VsYXRlU3R5bGUoKTtcbiAgICBib3ggPSBjYWxjdWxhdGVCb3goKTtcbn1cbjwvc2NyaXB0PlxuIiwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5cdGltcG9ydCB7XG5cdFx0ZmFCb2x0LFxuXHRcdGZhQ2xvbmUsXG5cdFx0ZmFDb2csXG5cdFx0ZmFUcmFzaCxcblx0fSBmcm9tIFwiQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zXCI7XG5cdGltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcInNyYy90eXBlc1wiO1xuXHRpbXBvcnQgeyBjcmVhdGVFdmVudERpc3BhdGNoZXIgfSBmcm9tIFwic3ZlbHRlXCI7XG5cdGltcG9ydCB7IEljb24gfSBmcm9tIFwic3ZlbHRlLWF3ZXNvbWVcIjtcblxuXHRleHBvcnQgbGV0IHF1ZXJ5OiBRdWVyeTtcblx0Y29uc3QgZGlzcGF0Y2ggPSBjcmVhdGVFdmVudERpc3BhdGNoZXIoKTtcblxuXHRjb25zdCBkZWxldGVRdWVyeSA9ICgpID0+IHtcblx0XHRkaXNwYXRjaChcImRlbGV0ZVF1ZXJ5XCIsIHsgcXVlcnkgfSk7XG5cdH07XG5cblx0Y29uc3QgZWRpdFF1ZXJ5ID0gKCkgPT4ge1xuXHRcdGRpc3BhdGNoKFwiZWRpdFF1ZXJ5XCIsIHsgcXVlcnkgfSk7XG5cdH07XG5cblx0Y29uc3QgZHVwbGljYXRlUXVlcnkgPSAoKSA9PiB7XG5cdFx0ZGlzcGF0Y2goXCJkdXBsaWNhdGVRdWVyeVwiLCB7IHF1ZXJ5IH0pO1xuXHR9O1xuXG5cdGNvbnN0IHRvZ2dsZUNvbW1hbmRGb3JRdWVyeSA9ICgpID0+IHtcblx0XHRkaXNwYXRjaChcInRvZ2dsZUNvbW1hbmRGb3JRdWVyeVwiLCB7IHF1ZXJ5IH0pO1xuXHR9O1xuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJxdWVyeS1pdGVtXCI+XG5cdDwhLS0gTmFtZSAtLT5cblx0PGJ1dHRvbiBjbGFzcz1cInF1ZXJ5LWl0ZW1fX25hbWVcIiBvbjpjbGljaz17ZWRpdFF1ZXJ5fT5cblx0XHR7cXVlcnkubmFtZX1cblx0PC9idXR0b24+XG5cblx0PCEtLSBPcHRpb25zIC0tPlxuXHQ8ZGl2IGNsYXNzPVwicXVlcnktaXRlbV9fb3B0aW9uc1wiPlxuXHRcdDxidXR0b25cblx0XHRcdGNsYXNzPVwicXVlcnktaXRlbV9fb3B0aW9uXCJcblx0XHRcdGNsYXNzOmFjdGl2ZT17cXVlcnkuY3JlYXRlQ29tbWFuZH1cblx0XHRcdG9uOmNsaWNrPXt0b2dnbGVDb21tYW5kRm9yUXVlcnl9XG5cdFx0PlxuXHRcdFx0PEljb24gZGF0YT17ZmFCb2x0fSAvPlxuXHRcdDwvYnV0dG9uPlxuXG5cdFx0PGJ1dHRvbiBjbGFzcz1cInF1ZXJ5LWl0ZW1fX29wdGlvblwiIG9uOmNsaWNrPXtlZGl0UXVlcnl9PlxuXHRcdFx0PEljb24gZGF0YT17ZmFDb2d9IC8+XG5cdFx0PC9idXR0b24+XG5cblx0XHQ8YnV0dG9uIGNsYXNzPVwicXVlcnktaXRlbV9fb3B0aW9uXCIgb246Y2xpY2s9e2R1cGxpY2F0ZVF1ZXJ5fT5cblx0XHRcdDxJY29uIGRhdGE9e2ZhQ2xvbmV9IC8+XG5cdFx0PC9idXR0b24+XG5cblx0XHQ8YnV0dG9uIGNsYXNzPVwicXVlcnktaXRlbV9fb3B0aW9uXCIgb246Y2xpY2s9e2RlbGV0ZVF1ZXJ5fT5cblx0XHRcdDxJY29uIGRhdGE9e2ZhVHJhc2h9IC8+XG5cdFx0PC9idXR0b24+XG5cdDwvZGl2PlxuPC9kaXY+XG5cbjxzdHlsZT5cblx0LnF1ZXJ5LWl0ZW0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0aGVpZ2h0OiBtYXgtY29udGVudDtcblx0fVxuXG5cdC5xdWVyeS1pdGVtX19uYW1lIHtcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQucXVlcnktaXRlbV9fb3B0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDAuMTI1cmVtO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdH1cblxuXHQucXVlcnktaXRlbV9fb3B0aW9uIHtcblx0XHRhc3BlY3QtcmF0aW86IDEgLyAxO1xuXHR9XG5cblx0YnV0dG9uIHtcblx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHR9XG5cblx0YnV0dG9uOmhvdmVyIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdH1cblxuXHRidXR0b246Zm9jdXMtdmlzaWJsZSB7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLWJhY2tncm91bmQtbW9kaWZpZXItYm9yZGVyLWZvY3VzKTtcblx0fVxuXG5cdC5hY3RpdmUge1xuXHRcdGNvbG9yOiB2YXIoLS1jb2xvci15ZWxsb3cpO1xuXHR9XG48L3N0eWxlPlxuIiwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5cdGltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcInNyYy90eXBlc1wiO1xuXHRpbXBvcnQgUXVlcnlJdGVtIGZyb20gXCIuL1F1ZXJ5SXRlbS5zdmVsdGVcIjtcblxuXHRleHBvcnQgbGV0IHF1ZXJpZXM6IFF1ZXJ5W107XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cInF1ZXJ5LWxpc3RcIj5cblx0eyNlYWNoIHF1ZXJpZXMgYXMgcXVlcnl9XG5cdFx0PFF1ZXJ5SXRlbVxuXHRcdFx0YmluZDpxdWVyeVxuXHRcdFx0b246ZWRpdFF1ZXJ5XG5cdFx0XHRvbjpkZWxldGVRdWVyeVxuXHRcdFx0b246ZHVwbGljYXRlUXVlcnlcblx0XHRcdG9uOnRvZ2dsZUNvbW1hbmRGb3JRdWVyeVxuXHRcdFx0b246c2F2ZUNoYW5nZXNcblx0XHQvPlxuXHR7OmVsc2V9XG5cdFx0PHA+Q3JlYXRlIGEgcXVlcnk8L3A+XG5cdHsvZWFjaH1cbjwvZGl2PlxuXG48c3R5bGU+XG5cdC5xdWVyeS1saXN0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAwLjI1cmVtO1xuXHR9XG48L3N0eWxlPlxuIiwgImltcG9ydCB7IEFwcCwgTW9kYWwgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcIi4vRWRpdFF1ZXJ5TW9kYWwuc3ZlbHRlXCI7XG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gXCJzcmMvdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIEVkaXRRdWVyeU1vZGFsIGV4dGVuZHMgTW9kYWwge1xuXHR2aWV3OiBDb21wb25lbnQ7XG5cdHF1ZXJ5OiBRdWVyeTtcblxuXHRjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcXVlcnk6IFF1ZXJ5LCBoYW5kbGVDaGFuZ2U6IChxdWVyeTogUXVlcnkpID0+IHZvaWQpIHtcblx0XHRzdXBlcihhcHApO1xuXHRcdHRoaXMucXVlcnkgPSBxdWVyeTtcblx0XHR0aGlzLnZpZXcgPSBuZXcgQ29tcG9uZW50KHtcblx0XHRcdHRhcmdldDogdGhpcy5jb250ZW50RWwsXG5cdFx0XHRwcm9wczoge1xuXHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0aGFuZGxlQ2hhbmdlLFxuXHRcdFx0fSxcblx0XHR9KTtcblx0fVxufVxuIiwgIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5cdGltcG9ydCB7IFFVRVJZX09QRU5fVFlQRVMsIFFVRVJZX1RZUEVTLCBRdWVyeSB9IGZyb20gXCJzcmMvdHlwZXNcIjtcblx0aW1wb3J0IHsgb25EZXN0cm95IH0gZnJvbSBcInN2ZWx0ZVwiO1xuXG5cdGV4cG9ydCBsZXQgcXVlcnk6IFF1ZXJ5O1xuXHRleHBvcnQgbGV0IGhhbmRsZUNoYW5nZTogKHF1ZXJ5OiBRdWVyeSkgPT4gdm9pZDtcblxuXHRsZXQgcXVlcnlQbGFjZWhvbGRlciA9IFwiXCI7XG5cdGxldCBxdWVyeURlc2NyaXB0aW9uID0gXCJcIjtcblx0JDoge1xuXHRcdHN3aXRjaCAocXVlcnkudHlwZSkge1xuXHRcdFx0Y2FzZSBcIkRhdGF2aWV3XCI6XG5cdFx0XHRcdHF1ZXJ5RGVzY3JpcHRpb24gPSBcIk9ubHkgd29ya3MgZm9yIGxpc3QgcXVlcmllcy5cIjtcblx0XHRcdFx0cXVlcnlQbGFjZWhvbGRlciA9IFwiTElTVFxcbi4uLlwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJSZWdleFwiOlxuXHRcdFx0XHRxdWVyeURlc2NyaXB0aW9uID0gXCJcIjtcblx0XHRcdFx0cXVlcnlQbGFjZWhvbGRlciA9IFwiUmVndWxhciBFeHByZXNzaW9uLi4uXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cXVlcnlEZXNjcmlwdGlvbiA9IFwiXCI7XG5cdFx0XHRcdHF1ZXJ5UGxhY2Vob2xkZXIgPSBcInBhdGg6IC4uLiBmaWxlOiAuLi4gdGFnOiAuLi5cIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0aWYgKHF1ZXJ5LnR5cGUgPT09IFwiRGF0YXZpZXdcIikge1xuXHRcdH0gZWxzZSBpZiAocXVlcnkudHlwZSA9PT0gXCJEZWZhdWx0XCIpIHtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBlbWl0SGFuZGxlQ2hhbmdlID0gKCkgPT4ge1xuXHRcdGhhbmRsZUNoYW5nZShxdWVyeSk7XG5cdH07XG5cblx0b25EZXN0cm95KCgpID0+IHtcblx0XHRlbWl0SGFuZGxlQ2hhbmdlKCk7XG5cdH0pO1xuPC9zY3JpcHQ+XG5cbjxoMiBjbGFzcz1cInRpdGxlXCI+XG5cdDxpbnB1dFxuXHRcdGNsYXNzPVwidGl0bGVfX2lucHV0XCJcblx0XHR0eXBlPVwidGV4dFwiXG5cdFx0cGxhY2Vob2xkZXI9XCJRdWVyeSBuYW1lXCJcblx0XHRiaW5kOnZhbHVlPXtxdWVyeS5uYW1lfVxuXHRcdG9uOmlucHV0PXtlbWl0SGFuZGxlQ2hhbmdlfVxuXHQvPlxuPC9oMj5cblxuPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cblx0PCEtLSBDcmVhdGUgY29tbWFuZCAtLT5cblx0PGRpdiBjbGFzcz1cInNldHRpbmctaXRlbSBtb2QtdG9nZ2xlXCI+XG5cdFx0PGRpdiBjbGFzcz1cInNldHRpbmctaXRlbS1pbmZvXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2V0dGluZy1pdGVtLW5hbWVcIj5DcmVhdGUgY29tbWFuZDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInNldHRpbmctaXRlbS1kZXNjcmlwdGlvblwiPlxuXHRcdFx0XHRNYWtlIHRoZSBxdWVyeSBpbnRvIGFuIGV4ZWN1dGFibGUgY29tbWFuZC5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJzZXR0aW5nLWl0ZW0tY29udHJvbFwiPlxuXHRcdFx0PGRpdlxuXHRcdFx0XHRjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiXG5cdFx0XHRcdGNsYXNzOmlzLWVuYWJsZWQ9e3F1ZXJ5LmNyZWF0ZUNvbW1hbmR9XG5cdFx0XHRcdG9uOmNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0cXVlcnkuY3JlYXRlQ29tbWFuZCA9ICFxdWVyeS5jcmVhdGVDb21tYW5kO1xuXHRcdFx0XHRcdGVtaXRIYW5kbGVDaGFuZ2UoKTtcblx0XHRcdFx0fX1cblx0XHRcdD5cblx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0dHlwZT1cImNoZWNrYm94XCJcblx0XHRcdFx0XHR0YWJpbmRleD1cIjBcIlxuXHRcdFx0XHRcdGJpbmQ6Y2hlY2tlZD17cXVlcnkuY3JlYXRlQ29tbWFuZH1cblx0XHRcdFx0Lz5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblxuXHQ8IS0tIFVzZSBleGNsdWRlZCBmb2xkZXJzIC0tPlxuXHQ8ZGl2IGNsYXNzPVwic2V0dGluZy1pdGVtIG1vZC10b2dnbGVcIj5cblx0XHQ8ZGl2IGNsYXNzPVwic2V0dGluZy1pdGVtLWluZm9cIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJzZXR0aW5nLWl0ZW0tbmFtZVwiPlVzZSBkaXNhYmxlZCBmb2xkZXJzPC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwic2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uXCI+XG5cdFx0XHRcdFVzZSBkaXNhYmxlZCBmb2xkZXJzIGZyb20gc2V0dGluZ3MuXG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwic2V0dGluZy1pdGVtLWNvbnRyb2xcIj5cblx0XHRcdDxkaXZcblx0XHRcdFx0Y2xhc3M9XCJjaGVja2JveC1jb250YWluZXJcIlxuXHRcdFx0XHRjbGFzczppcy1lbmFibGVkPXtxdWVyeS51c2VEaXNhYmxlZEZvbGRlcnN9XG5cdFx0XHRcdG9uOmNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0cXVlcnkudXNlRGlzYWJsZWRGb2xkZXJzID0gIXF1ZXJ5LnVzZURpc2FibGVkRm9sZGVycztcblx0XHRcdFx0XHRlbWl0SGFuZGxlQ2hhbmdlKCk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdDxpbnB1dFxuXHRcdFx0XHRcdHR5cGU9XCJjaGVja2JveFwiXG5cdFx0XHRcdFx0dGFiaW5kZXg9XCIwXCJcblx0XHRcdFx0XHRiaW5kOmNoZWNrZWQ9e3F1ZXJ5LnVzZURpc2FibGVkRm9sZGVyc31cblx0XHRcdFx0Lz5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblxuXHQ8IS0tICAtLT5cblx0PGRpdiBjbGFzcz1cInNldHRpbmctaXRlbVwiPlxuXHRcdDxkaXYgY2xhc3M9XCJzZXR0aW5nLWl0ZW0taW5mb1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInNldHRpbmctaXRlbS1uYW1lXCI+T3BlbiBpbjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInNldHRpbmctaXRlbS1kZXNjcmlwdGlvblwiPldoZXJlIHRvIG9wZW4gdGhlIGZpbGUuPC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInNldHRpbmctaXRlbS1jb250cm9sXCI+XG5cdFx0XHQ8c2VsZWN0XG5cdFx0XHRcdGNsYXNzPVwiZHJvcGRvd25cIlxuXHRcdFx0XHRiaW5kOnZhbHVlPXtxdWVyeS5vcGVuVHlwZX1cblx0XHRcdFx0b246Y2hhbmdlPXtlbWl0SGFuZGxlQ2hhbmdlfVxuXHRcdFx0PlxuXHRcdFx0XHR7I2VhY2ggUVVFUllfT1BFTl9UWVBFUyBhcyB0eXBlfVxuXHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9e3R5cGV9Pnt0eXBlfTwvb3B0aW9uPlxuXHRcdFx0XHR7L2VhY2h9XG5cdFx0XHQ8L3NlbGVjdD5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cblx0PCEtLSBVc2UgRGF0YXZpZXcgLS0+XG5cdDxkaXYgY2xhc3M9XCJzZXR0aW5nLWl0ZW1cIj5cblx0XHQ8ZGl2IGNsYXNzPVwic2V0dGluZy1pdGVtLWluZm9cIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJzZXR0aW5nLWl0ZW0tbmFtZVwiPlF1ZXJ5IHR5cGU8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb25cIj5cblx0XHRcdFx0VXNlIFJlZ2V4LCBEYXRhdmlldywgb3IgdGhlIGRlZmF1bHQuXG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwic2V0dGluZy1pdGVtLWNvbnRyb2xcIj5cblx0XHRcdDxzZWxlY3Rcblx0XHRcdFx0Y2xhc3M9XCJkcm9wZG93blwiXG5cdFx0XHRcdGJpbmQ6dmFsdWU9e3F1ZXJ5LnR5cGV9XG5cdFx0XHRcdG9uOmNoYW5nZT17ZW1pdEhhbmRsZUNoYW5nZX1cblx0XHRcdD5cblx0XHRcdFx0eyNlYWNoIFFVRVJZX1RZUEVTIGFzIHR5cGV9XG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT17dHlwZX0+e3R5cGV9PC9vcHRpb24+XG5cdFx0XHRcdHsvZWFjaH1cblx0XHRcdDwvc2VsZWN0PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuXHRcdDxkaXYgY2xhc3M9XCJzZXR0aW5nLWl0ZW0taW5mb1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInNldHRpbmctaXRlbS1uYW1lXCI+UXVlcnk8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb25cIj5cblx0XHRcdFx0e3F1ZXJ5RGVzY3JpcHRpb259XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8dGV4dGFyZWFcblx0XHRcdGJpbmQ6dmFsdWU9e3F1ZXJ5LnF1ZXJ5fVxuXHRcdFx0cm93cz17MTJ9XG5cdFx0XHRvbjppbnB1dD17ZW1pdEhhbmRsZUNoYW5nZX1cblx0XHRcdHBsYWNlaG9sZGVyPXtxdWVyeVBsYWNlaG9sZGVyfVxuXHRcdC8+XG5cdDwvZGl2PlxuPC9kaXY+XG5cbjxzdHlsZT5cblx0LnRpdGxlIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQudGl0bGVfX2lucHV0IHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Zm9udC1zaXplOiB2YXIoLS1oMi1zaXplKTtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxuXG5cdC5jb250ZW50IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxZW07XG5cdH1cbjwvc3R5bGU+XG4iLCAiPHNjcmlwdCBsYW5nPVwidHNcIj5cblx0aW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwic3JjL3R5cGVzXCI7XG5cdGltcG9ydCBRdWVyeUxpc3QgZnJvbSBcIi4vUXVlcnlMaXN0LnN2ZWx0ZVwiO1xuXHRpbXBvcnQge1xuXHRcdGNyZWF0ZVF1ZXJ5LFxuXHRcdGdldFF1ZXJ5Q29tbWFuZElkLFxuXHRcdGFkZE9yUmVtb3ZlUXVlcnlDb21tYW5kLFxuXHR9IGZyb20gXCJzcmMvdXRpbGl0aWVzXCI7XG5cdGltcG9ydCB7IEVkaXRRdWVyeU1vZGFsIH0gZnJvbSBcInNyYy9ndWkvbW9kYWxzL0VkaXRRdWVyeU1vZGFsL2VkaXRRdWVyeU1vZGFsXCI7XG5cdGltcG9ydCBBZHZhbmNlZFJhbmRvbU5vdGUgZnJvbSBcInNyYy9tYWluXCI7XG5cblx0ZXhwb3J0IGxldCBwbHVnaW46IEFkdmFuY2VkUmFuZG9tTm90ZTtcblx0ZXhwb3J0IGxldCBxdWVyaWVzOiBRdWVyeVtdO1xuXHRleHBvcnQgbGV0IHNhdmVRdWVyaWVzOiAocXVlcmllczogUXVlcnlbXSkgPT4gdm9pZDtcblx0bGV0IHF1ZXJ5Rm9ybU5hbWUgPSBcIlwiO1xuXG5cdGNvbnN0IGRlbGV0ZVF1ZXJ5ID0gKGU6IGFueSkgPT4ge1xuXHRcdGNvbnN0IHF1ZXJ5OiBRdWVyeSA9IGUuZGV0YWlsLnF1ZXJ5O1xuXHRcdHF1ZXJpZXMgPSBxdWVyaWVzLmZpbHRlcigocSkgPT4gcS5pZCAhPT0gcXVlcnkuaWQpO1xuXHRcdHBsdWdpbi5yZW1vdmVRdWVyeUNvbW1hbmQocXVlcnkpO1xuXHRcdHNhdmVRdWVyaWVzKHF1ZXJpZXMpO1xuXHR9O1xuXG5cdGNvbnN0IGVkaXRRdWVyeSA9IChlOiBhbnkpID0+IHtcblx0XHRjb25zdCBxdWVyeTogUXVlcnkgPSBlLmRldGFpbC5xdWVyeTtcblxuXHRcdGNvbnN0IG1vZGFsID0gbmV3IEVkaXRRdWVyeU1vZGFsKHBsdWdpbi5hcHAsIHF1ZXJ5LCAocXVlcnkpID0+IHtcblx0XHRcdGFkZE9yUmVtb3ZlUXVlcnlDb21tYW5kKHBsdWdpbiwgcXVlcnkpO1xuXHRcdFx0cXVlcmllcyA9IHF1ZXJpZXM7XG5cdFx0XHRzYXZlUXVlcmllcyhxdWVyaWVzKTtcblx0XHR9KTtcblx0XHRtb2RhbC5vcGVuKCk7XG5cblx0XHRxdWVyaWVzID0gcXVlcmllcztcblx0XHRzYXZlUXVlcmllcyhxdWVyaWVzKTtcblx0fTtcblxuXHRjb25zdCB0b2dnbGVDb21tYW5kRm9yUXVlcnkgPSAoZTogYW55KSA9PiB7XG5cdFx0Y29uc3QgcXVlcnk6IFF1ZXJ5ID0gZS5kZXRhaWwucXVlcnk7XG5cdFx0cXVlcnkuY3JlYXRlQ29tbWFuZCA9ICFxdWVyeS5jcmVhdGVDb21tYW5kO1xuXHRcdHF1ZXJpZXMgPSBxdWVyaWVzO1xuXHRcdGFkZE9yUmVtb3ZlUXVlcnlDb21tYW5kKHBsdWdpbiwgcXVlcnkpO1xuXHRcdHNhdmVRdWVyaWVzKHF1ZXJpZXMpO1xuXHR9O1xuXG5cdGNvbnN0IGR1cGxpY2F0ZVF1ZXJ5ID0gKGU6IGFueSkgPT4ge1xuXHRcdGNvbnN0IHF1ZXJ5OiBRdWVyeSA9IGUuZGV0YWlsLnF1ZXJ5O1xuXHRcdGNvbnN0IHF1ZXJ5Q2xvbmUgPSBzdHJ1Y3R1cmVkQ2xvbmUocXVlcnkpO1xuXHRcdHF1ZXJ5Q2xvbmUuaWQgPSBnZXRRdWVyeUNvbW1hbmRJZCgpO1xuXHRcdHF1ZXJ5Q2xvbmUubmFtZSA9IHF1ZXJ5Q2xvbmUubmFtZSArIFwiIChDb3B5KVwiO1xuXHRcdHF1ZXJpZXMgPSBbLi4ucXVlcmllcywgcXVlcnlDbG9uZV07XG5cdFx0c2F2ZVF1ZXJpZXMocXVlcmllcyk7XG5cdFx0aWYgKHF1ZXJ5LmNyZWF0ZUNvbW1hbmQpIHtcblx0XHRcdHBsdWdpbi5hZGRRdWVyeUNvbW1hbmQocXVlcnkpO1xuXHRcdH1cblx0fTtcblxuXHRjb25zdCBoYW5kbGVTdWJtaXQgPSAoKSA9PiB7XG5cdFx0aWYgKHF1ZXJ5Rm9ybU5hbWUudHJpbSgpID09PSBcIlwiKSByZXR1cm47XG5cblx0XHRxdWVyaWVzID0gWy4uLnF1ZXJpZXMsIGNyZWF0ZVF1ZXJ5KHF1ZXJ5Rm9ybU5hbWUsIFwiXCIpXTtcblx0XHRxdWVyeUZvcm1OYW1lID0gXCJcIjtcblx0XHRzYXZlUXVlcmllcyhxdWVyaWVzKTtcblx0fTtcblxuXHRjb25zdCBzYXZlQ2hhbmdlcyA9ICgpID0+IHtcblx0XHRxdWVyaWVzID0gcXVlcmllcztcblx0XHRzYXZlUXVlcmllcyhxdWVyaWVzKTtcblx0fTtcbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwicXVlcnktbGlzdC12aWV3XCI+XG5cdDwhLS0gUXVlcmllcyAtLT5cblx0PFF1ZXJ5TGlzdFxuXHRcdGJpbmQ6cXVlcmllc1xuXHRcdG9uOmRlbGV0ZVF1ZXJ5PXtkZWxldGVRdWVyeX1cblx0XHRvbjplZGl0UXVlcnk9e2VkaXRRdWVyeX1cblx0XHRvbjp0b2dnbGVDb21tYW5kRm9yUXVlcnk9e3RvZ2dsZUNvbW1hbmRGb3JRdWVyeX1cblx0XHRvbjpkdXBsaWNhdGVRdWVyeT17ZHVwbGljYXRlUXVlcnl9XG5cdFx0b246c2F2ZUNoYW5nZXM9e3NhdmVDaGFuZ2VzfVxuXHQvPlxuXG5cdDwhLS0gQ3JlYXRlIHF1ZXJ5IGZvcm0gLS0+XG5cdDxmb3JtIGNsYXNzPVwicXVlcnktZm9ybVwiIG9uOnN1Ym1pdHxwcmV2ZW50RGVmYXVsdD17aGFuZGxlU3VibWl0fT5cblx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIk5hbWVcIiBiaW5kOnZhbHVlPXtxdWVyeUZvcm1OYW1lfSAvPlxuXHRcdDxidXR0b24gY2xhc3M9XCJtb2QtY3RhXCIgdHlwZT1cInN1Ym1pdFwiPkFkZCBRdWVyeTwvYnV0dG9uPlxuXHQ8L2Zvcm0+XG48L2Rpdj5cblxuPHN0eWxlPlxuXHQucXVlcnktbGlzdC12aWV3IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxcmVtO1xuXHR9XG5cblx0LnF1ZXJ5LWZvcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiByaWdodDtcblx0XHRnYXA6IHZhcigtLXNpemUtNC0yKTtcblx0fVxuPC9zdHlsZT5cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBLFFBQU0sYUFBTixjQUF5QixNQUFNO0lBQUE7QUFLeEIsUUFBTSx1QkFBTixjQUFtQyxXQUFXO01BQ25ELFlBQVksUUFBUTtBQUNsQixjQUFNLHFCQUFxQixPQUFPLFVBQVMsR0FBSTtNQUNuRDtJQUNBO0FBS08sUUFBTSx1QkFBTixjQUFtQyxXQUFXO01BQ25ELFlBQVksUUFBUTtBQUNsQixjQUFNLHFCQUFxQixPQUFPLFVBQVMsR0FBSTtNQUNuRDtJQUNBO0FBS08sUUFBTSx1QkFBTixjQUFtQyxXQUFXO01BQ25ELFlBQVksUUFBUTtBQUNsQixjQUFNLHFC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V0FBVyxFQUFFLE9BQU8sRUFBQyxDQUFFO01BQ3ZDLElBQUksU0FBUyxXQUFXLEVBQUUsT0FBTyxFQUFDLENBQUU7TUFDcEMsS0FBSyxTQUFTLFdBQVcsRUFBRSxPQUFPLEVBQUMsQ0FBRTtNQUVyQyxPQUFPLFNBQVMsV0FBVyxFQUFFLFFBQVEsRUFBQyxDQUFFO01BQ3hDLFFBQVEsU0FBUyxXQUFXLEVBQUUsUUFBUSxFQUFDLENBQUU7TUFDekMsSUFBSSxTQUFTLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBRTtNQUNyQyxLQUFLLFNBQVMsV0FBVyxFQUFFLFFBQVEsRUFBQyxDQUFFO01BRXRDLE1BQU0sU0FBUyxXQUFXLEVBQUUsT0FBTyxFQUFDLENBQUU7TUFDdEMsT0FBTyxTQUFTLFdBQVcsRUFBRSxPQUFPLEVBQUMsQ0FBRTtNQUN2QyxJQUFJLFNBQVMsV0FBVyxFQUFFLE9BQU8sRUFBQyxDQUFFO01BQ3BDLEtBQUssU0FBUyxXQUFXLEVBQUUsT0FBTyxFQUFDLENBQUU7TUFDckMsR0FBRyxTQUFTLFdBQVcsRUFBRSxPQUFPLEVBQUMsQ0FBRTtNQUVuQyxLQUFLLFNBQVMsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFFO01BQ3BDLE1BQU0sU0FBUyxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUU7TUFDckMsR0FBRyxTQUFTLFdBQVcsRUFBRSxNQUFNLEVBQUMsQ0FBRTtNQUVsQyxNQUFNLFNBQVMsV0FBVyxFQUFFLE9BQU8sRUFBQyxDQUFFO01BQ3RDLE9BQU8sU0FBUyxXQUFXLEVBQUUsT0FBTyxFQUFDLENBQUU7TUFDdkMsSUFBSSxTQUFTLFdBQVcsRUFBRSxPQUFPLEVBQUMsQ0FBRTtNQUNwQyxLQUFLLFNBQVMsV0FBVyxFQUFFLE9BQU8sRUFBQyxDQUFFO01BQ3JDLEdBQUcsU0FBUyxXQUFXLEVBQUUsT0FBTyxFQUFDLENBQUU7TUFFbkMsUUFBUSxTQUFTLFdBQVcsRUFBRSxTQUFTLEVBQUMsQ0FBRTtNQUMxQyxTQUFTLFNBQVMsV0FBVyxFQUFFLFNBQVMsRUFBQyxDQUFFO01BQzNDLEtBQUssU0FB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QUFNLFNBQVM7QUFBQSxJQUN6QjtBQUNBLFVBQU0sS0FBSyxlQUFlLFVBQVU7QUFBQSxFQUNyQztBQUFBLEVBRUEsNEJBQTRCO0FBQzNCLFVBQU0sUUFBUSxJQUFJO0FBQUEsTUFDakIsS0FBSztBQUFBLE1BQ0wsS0FBSyxTQUFTO0FBQUEsTUFDZCxPQUFPLFVBQWlCLEtBQUssYUFBYSxLQUFLO0FBQUEsSUFDaEQ7QUFDQSxVQUFNLEtBQUs7QUFBQSxFQUNaO0FBQUEsRUFFQSxNQUFNLGFBQWEsT0FBYztBQUNoQyxVQUFNLFFBQVEsTUFBTSxJQUFJLE9BQU8sSUFBSSxFQUFFLE9BQU8sS0FBSztBQUVqRCxRQUFJLE1BQU0sVUFBVSxHQUFHO0FBQ3RCO0FBQUEsSUFDRDtBQUVBLFVBQU0sS0FBSyxlQUFlLE9BQU8sTUFBTSxRQUFRO0FBQUEsRUFDaEQ7QUFBQSxFQUVBLG1CQUFtQjtBQUNsQixTQUFLLFNBQVMsUUFBUTtBQUFBLE1BQ3JCLENBQUMsVUFBVSxNQUFNLGlCQUFpQixLQUFLLGdCQUFnQixLQUFLO0FBQUEsSUFDN0Q7QUFBQSxFQUNEO0FBQUEsRUFFQSxnQkFBZ0IsT0FBYztBQUM3QixTQUFLLFdBQVc7QUFBQSxNQUNmLElBQUksTUFBTTtBQUFBLE1BQ1YsTUFBTSxNQUFNO0FBQUEsTUFDWixVQUFVLFlBQVksS0FBSyxhQUFhLEtBQUs7QUFBQSxJQUM5QyxDQUFDO0FBQUEsRUFDRjtBQUFBLEVBRUEsbUJBQW1CLE9BQWM7QUFDaEM7QUFBQSxNQUNDLEtBQUs7QUFBQSxNQUNMLG1CQUFtQixNQUFNLElBQUksS0FBSyxRQUFRO0FBQUEsSUFDM0M7QUFBQSxFQUNEO0FBQ0Q7IiwKICAibmFtZXMiOiBbInNpbmdsZXRvbiIsICJzIiwgIkVuZ2xpc2guZm9ybWF0UmVsYXRpdmVUaW1lIiwgIlNldHRpbmdzIiwgIkVuZ2xpc2gubW9udGhzIiwgIkVuZ2xpc2gud2Vla2RheXMiLCAiRW5nbGlzaC5tZXJpZGllbXMiLCAiRW5nbGlzaC5lcmFzIiwgIm9mZnNldCIsICJkZWZhdWx0Wm9uZSIsICJub3ciLCAibiIsICJGb3JtYXRzLkRBVEVfU0hPUlQiLCAiRm9ybWF0cy5EQVRFX01FRCIsICJGb3JtYXRzLkRBVEVfRlVMTCIsICJGb3JtYXRzLkRBVEVfSFVHRSIsICJGb3JtYXRzLlRJTUVfU0lNUExFIiwgIkZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMiLCAiRm9ybWF0cy5USU1FX1dJVEhfU0hPUlRfT0ZGU0VUIiwgIkZvcm1hdHMuVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwgIkZvcm1hdHMuVElNRV8yNF9TSU1QTEUiLCAiRm9ybWF0cy5USU1FXzI0X1dJVEhfU0VDT05EUyIsICJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQiLCAiRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLCAiRm9ybWF0cy5EQVRFVElNRV9TSE9SVCIsICJGb3JtYXRzLkRBVEVUSU1FX01FRCIsICJGb3JtYXRzLkRBVEVUSU1FX0ZVTEwiLCAiRm9ybWF0cy5EQVRFVElNRV9IVUdFIiwgIkZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTIiwgIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyIsICJGb3JtYXRzLkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTIiwgIkZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMiLCAiZm9ybWF0T2Zmc2V0IiwgIkVuZ2xpc2gubWVyaWRpZW1Gb3JEYXRlVGltZSIsICJFbmdsaXNoLm1vbnRoRm9yRGF0ZVRpbWUiLCAiRW5nbGlzaC53ZWVrZGF5Rm9yRGF0ZVRpbWUiLCAiRW5nbGlzaC5lcmFGb3JEYXRlVGltZSIsICJtYXRjaCIsICJFbmdsaXNoLm1vbnRoc1Nob3J0IiwgIkVuZ2xpc2gud2Vla2RheXNMb25nIiwgIkVuZ2xpc2gud2Vla2RheXNTaG9ydCIsICJJTlZBTElEIiwgIm9yZGVyZWRVbml0cyIsICJjbG9uZSIsICJ0ZXh0IiwgImwiLCAiZSIsICJhcHBlbmQiLCAiRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVkiLCAiRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9XRUVLREFZIiwgIlJlc3VsdCIsICJtb2R1bGUiLCAidGhpcyIsICJ0IiwgInIiLCAidSIsICJvIiwgImkiLCAiYSIsICJmIiwgImMiLCAiaCIsICJwIiwgImQiLCAidiIsICJnIiwgIm0iLCAiUC5hbHQiLCAiUC5yZWdleCIsICJQLndoaXRlc3BhY2UiLCAiUC5hbnkiLCAiVmFsdWVzIiwgImlzTnVtYmVyIiwgImlzU3RyaW5nIiwgImlzRGF0ZSIsICJHcm91cGluZ3MiLCAiZWxlbWVudCIsICJXaWRnZXRzIiwgIkZpZWxkcyIsICJpbmRleCIsICJmdW5jIiwgIlNvdXJjZXMiLCAidGFnIiwgImVtcHR5IiwgIlAuc2VxTWFwIiwgIlAuc2VxIiwgIlAub3B0V2hpdGVzcGFjZSIsICJQLmN1c3RvbSIsICJQLmNyZWF0ZUxhbmd1YWdlIiwgIlAucmVnZXhwIiwgIlAuc3RyaW5nIiwgIlAubm9uZU9mIiwgIl8iLCAiUC5zdWNjZWVkIiwgIlAuZmFpbCIsICJRdWVyeUZpZWxkcyIsICJQLnNlcEJ5IiwgImdldEFQSSIsICJpbXBvcnRfb2JzaWRpYW4iLCAiZWxlbWVudCIsICJfYSIsICJlbGVtZW50IiwgInRleHQiLCAiZWxlbWVudCIsICJlbGVtZW50IiwgImRldGFjaCIsICJ1cGRhdGUiLCAiaW5zdGFuY2UiLCAiY3JlYXRlX2ZyYWdtZW50IiwgImFwcGVuZF9zdHlsZXMiLCAiY3JlYXRlX3Nsb3QiLCAiYXR0ciIsICJjdHgiLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiY3R4IiwgImRhdGEiLCAiY3R4IiwgImN0eCIsICJjcmVhdGVfaWZfYmxvY2siLCAicGF0aCIsICJjdHgiLCAiY3R4IiwgImltcG9ydF9vYnNpZGlhbiIsICJjdHgiLCAiRWRpdFF1ZXJ5TW9kYWwiLCAiY3R4IiwgInRleHQiXQp9Cg==
|