'use strict'; var obsidian = require('obsidian'); var sysPath = require('path'); var require$$0$4 = require('events'); var require$$0$2 = require('util'); var fs$3 = require('fs'); var require$$0$3 = require('stream'); var require$$1$1 = require('os'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var sysPath__default = /*#__PURE__*/_interopDefaultLegacy(sysPath); var require$$0__default$2 = /*#__PURE__*/_interopDefaultLegacy(require$$0$4); var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0$2); var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs$3); var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$3); var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1$1); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ /* global Reflect, Promise */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function createCommonjsModule(fn, basedir, module) { return module = { path: basedir, exports: {}, require: function (path, base) { return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); } }, fn(module, module.exports), module.exports; } function commonjsRequire () { throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); } const WIN_SLASH = '\\\\/'; const WIN_NO_SLASH = `[^${WIN_SLASH}]`; /** * Posix glob regex */ const DOT_LITERAL = '\\.'; const PLUS_LITERAL = '\\+'; const QMARK_LITERAL = '\\?'; const SLASH_LITERAL = '\\/'; const ONE_CHAR = '(?=.)'; const QMARK = '[^/]'; const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; const NO_DOT = `(?!${DOT_LITERAL})`; const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; const STAR = `${QMARK}*?`; const POSIX_CHARS = { DOT_LITERAL, PLUS_LITERAL, QMARK_LITERAL, SLASH_LITERAL, ONE_CHAR, QMARK, END_ANCHOR, DOTS_SLASH, NO_DOT, NO_DOTS, NO_DOT_SLASH, NO_DOTS_SLASH, QMARK_NO_DOT, STAR, START_ANCHOR }; /** * Windows glob regex */ const WINDOWS_CHARS = { ...POSIX_CHARS, SLASH_LITERAL: `[${WIN_SLASH}]`, QMARK: WIN_NO_SLASH, STAR: `${WIN_NO_SLASH}*?`, DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, NO_DOT: `(?!${DOT_LITERAL})`, NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, QMARK_NO_DOT: `[^.${WIN_SLASH}]`, START_ANCHOR: `(?:^|[${WIN_SLASH}])`, END_ANCHOR: `(?:[${WIN_SLASH}]|$)` }; /** * POSIX Bracket Regex */ const POSIX_REGEX_SOURCE = { alnum: 'a-zA-Z0-9', alpha: 'a-zA-Z', ascii: '\\x00-\\x7F', blank: ' \\t', cntrl: '\\x00-\\x1F\\x7F', digit: '0-9', graph: '\\x21-\\x7E', lower: 'a-z', print: '\\x20-\\x7E ', punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', space: ' \\t\\r\\n\\v\\f', upper: 'A-Z', word: 'A-Za-z0-9_', xdigit: 'A-Fa-f0-9' }; var constants = { MAX_LENGTH: 1024 * 64, POSIX_REGEX_SOURCE, // regular expressions REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, // Replace globs with equivalent patterns to reduce parsing time. REPLACEMENTS: { '***': '*', '**/**': '**', '**/**/**': '**' }, // Digits CHAR_0: 48, /* 0 */ CHAR_9: 57, /* 9 */ // Alphabet chars. CHAR_UPPERCASE_A: 65, /* A */ CHAR_LOWERCASE_A: 97, /* a */ CHAR_UPPERCASE_Z: 90, /* Z */ CHAR_LOWERCASE_Z: 122, /* z */ CHAR_LEFT_PARENTHESES: 40, /* ( */ CHAR_RIGHT_PARENTHESES: 41, /* ) */ CHAR_ASTERISK: 42, /* * */ // Non-alphabetic chars. CHAR_AMPERSAND: 38, /* & */ CHAR_AT: 64, /* @ */ CHAR_BACKWARD_SLASH: 92, /* \ */ CHAR_CARRIAGE_RETURN: 13, /* \r */ CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ CHAR_COLON: 58, /* : */ CHAR_COMMA: 44, /* , */ CHAR_DOT: 46, /* . */ CHAR_DOUBLE_QUOTE: 34, /* " */ CHAR_EQUAL: 61, /* = */ CHAR_EXCLAMATION_MARK: 33, /* ! */ CHAR_FORM_FEED: 12, /* \f */ CHAR_FORWARD_SLASH: 47, /* / */ CHAR_GRAVE_ACCENT: 96, /* ` */ CHAR_HASH: 35, /* # */ CHAR_HYPHEN_MINUS: 45, /* - */ CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ CHAR_LEFT_CURLY_BRACE: 123, /* { */ CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ CHAR_LINE_FEED: 10, /* \n */ CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ CHAR_PERCENT: 37, /* % */ CHAR_PLUS: 43, /* + */ CHAR_QUESTION_MARK: 63, /* ? */ CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ CHAR_RIGHT_CURLY_BRACE: 125, /* } */ CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ CHAR_SEMICOLON: 59, /* ; */ CHAR_SINGLE_QUOTE: 39, /* ' */ CHAR_SPACE: 32, /* */ CHAR_TAB: 9, /* \t */ CHAR_UNDERSCORE: 95, /* _ */ CHAR_VERTICAL_LINE: 124, /* | */ CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ SEP: sysPath__default['default'].sep, /** * Create EXTGLOB_CHARS */ extglobChars(chars) { return { '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, '?': { type: 'qmark', open: '(?:', close: ')?' }, '+': { type: 'plus', open: '(?:', close: ')+' }, '*': { type: 'star', open: '(?:', close: ')*' }, '@': { type: 'at', open: '(?:', close: ')' } }; }, /** * Create GLOB_CHARS */ globChars(win32) { return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; } }; var utils = createCommonjsModule(function (module, exports) { const win32 = process.platform === 'win32'; const { REGEX_BACKSLASH, REGEX_REMOVE_BACKSLASH, REGEX_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_GLOBAL } = constants; exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); exports.removeBackslashes = str => { return str.replace(REGEX_REMOVE_BACKSLASH, match => { return match === '\\' ? '' : match; }); }; exports.supportsLookbehinds = () => { const segs = process.version.slice(1).split('.').map(Number); if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { return true; } return false; }; exports.isWindows = options => { if (options && typeof options.windows === 'boolean') { return options.windows; } return win32 === true || sysPath__default['default'].sep === '\\'; }; exports.escapeLast = (input, char, lastIdx) => { const idx = input.lastIndexOf(char, lastIdx); if (idx === -1) return input; if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); return `${input.slice(0, idx)}\\${input.slice(idx)}`; }; exports.removePrefix = (input, state = {}) => { let output = input; if (output.startsWith('./')) { output = output.slice(2); state.prefix = './'; } return output; }; exports.wrapOutput = (input, state = {}, options = {}) => { const prepend = options.contains ? '' : '^'; const append = options.contains ? '' : '$'; let output = `${prepend}(?:${input})${append}`; if (state.negated === true) { output = `(?:^(?!${output}).*$)`; } return output; }; }); const { CHAR_ASTERISK, /* * */ CHAR_AT, /* @ */ CHAR_BACKWARD_SLASH, /* \ */ CHAR_COMMA, /* , */ CHAR_DOT, /* . */ CHAR_EXCLAMATION_MARK, /* ! */ CHAR_FORWARD_SLASH, /* / */ CHAR_LEFT_CURLY_BRACE, /* { */ CHAR_LEFT_PARENTHESES, /* ( */ CHAR_LEFT_SQUARE_BRACKET, /* [ */ CHAR_PLUS, /* + */ CHAR_QUESTION_MARK, /* ? */ CHAR_RIGHT_CURLY_BRACE, /* } */ CHAR_RIGHT_PARENTHESES, /* ) */ CHAR_RIGHT_SQUARE_BRACKET /* ] */ } = constants; const isPathSeparator = code => { return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; }; const depth = token => { if (token.isPrefix !== true) { token.depth = token.isGlobstar ? Infinity : 1; } }; /** * Quickly scans a glob pattern and returns an object with a handful of * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), * `glob` (the actual pattern), and `negated` (true if the path starts with `!`). * * ```js * const pm = require('picomatch'); * console.log(pm.scan('foo/bar/*.js')); * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } * ``` * @param {String} `str` * @param {Object} `options` * @return {Object} Returns an object with tokens and regex source string. * @api public */ const scan = (input, options) => { const opts = options || {}; const length = input.length - 1; const scanToEnd = opts.parts === true || opts.scanToEnd === true; const slashes = []; const tokens = []; const parts = []; let str = input; let index = -1; let start = 0; let lastIndex = 0; let isBrace = false; let isBracket = false; let isGlob = false; let isExtglob = false; let isGlobstar = false; let braceEscaped = false; let backslashes = false; let negated = false; let finished = false; let braces = 0; let prev; let code; let token = { value: '', depth: 0, isGlob: false }; const eos = () => index >= length; const peek = () => str.charCodeAt(index + 1); const advance = () => { prev = code; return str.charCodeAt(++index); }; while (index < length) { code = advance(); let next; if (code === CHAR_BACKWARD_SLASH) { backslashes = token.backslashes = true; code = advance(); if (code === CHAR_LEFT_CURLY_BRACE) { braceEscaped = true; } continue; } if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { braces++; while (eos() !== true && (code = advance())) { if (code === CHAR_BACKWARD_SLASH) { backslashes = token.backslashes = true; advance(); continue; } if (code === CHAR_LEFT_CURLY_BRACE) { braces++; continue; } if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { isBrace = token.isBrace = true; isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } if (braceEscaped !== true && code === CHAR_COMMA) { isBrace = token.isBrace = true; isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } if (code === CHAR_RIGHT_CURLY_BRACE) { braces--; if (braces === 0) { braceEscaped = false; isBrace = token.isBrace = true; finished = true; break; } } } if (scanToEnd === true) { continue; } break; } if (code === CHAR_FORWARD_SLASH) { slashes.push(index); tokens.push(token); token = { value: '', depth: 0, isGlob: false }; if (finished === true) continue; if (prev === CHAR_DOT && index === (start + 1)) { start += 2; continue; } lastIndex = index + 1; continue; } if (opts.noext !== true) { const isExtglobChar = code === CHAR_PLUS || code === CHAR_AT || code === CHAR_ASTERISK || code === CHAR_QUESTION_MARK || code === CHAR_EXCLAMATION_MARK; if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { isGlob = token.isGlob = true; isExtglob = token.isExtglob = true; finished = true; if (scanToEnd === true) { while (eos() !== true && (code = advance())) { if (code === CHAR_BACKWARD_SLASH) { backslashes = token.backslashes = true; code = advance(); continue; } if (code === CHAR_RIGHT_PARENTHESES) { isGlob = token.isGlob = true; finished = true; break; } } continue; } break; } } if (code === CHAR_ASTERISK) { if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } if (code === CHAR_QUESTION_MARK) { isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } if (code === CHAR_LEFT_SQUARE_BRACKET) { while (eos() !== true && (next = advance())) { if (next === CHAR_BACKWARD_SLASH) { backslashes = token.backslashes = true; advance(); continue; } if (next === CHAR_RIGHT_SQUARE_BRACKET) { isBracket = token.isBracket = true; isGlob = token.isGlob = true; finished = true; if (scanToEnd === true) { continue; } break; } } } if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { negated = token.negated = true; start++; continue; } if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { isGlob = token.isGlob = true; if (scanToEnd === true) { while (eos() !== true && (code = advance())) { if (code === CHAR_LEFT_PARENTHESES) { backslashes = token.backslashes = true; code = advance(); continue; } if (code === CHAR_RIGHT_PARENTHESES) { finished = true; break; } } continue; } break; } if (isGlob === true) { finished = true; if (scanToEnd === true) { continue; } break; } } if (opts.noext === true) { isExtglob = false; isGlob = false; } let base = str; let prefix = ''; let glob = ''; if (start > 0) { prefix = str.slice(0, start); str = str.slice(start); lastIndex -= start; } if (base && isGlob === true && lastIndex > 0) { base = str.slice(0, lastIndex); glob = str.slice(lastIndex); } else if (isGlob === true) { base = ''; glob = str; } else { base = str; } if (base && base !== '' && base !== '/' && base !== str) { if (isPathSeparator(base.charCodeAt(base.length - 1))) { base = base.slice(0, -1); } } if (opts.unescape === true) { if (glob) glob = utils.removeBackslashes(glob); if (base && backslashes === true) { base = utils.removeBackslashes(base); } } const state = { prefix, input, start, base, glob, isBrace, isBracket, isGlob, isExtglob, isGlobstar, negated }; if (opts.tokens === true) { state.maxDepth = 0; if (!isPathSeparator(code)) { tokens.push(token); } state.tokens = tokens; } if (opts.parts === true || opts.tokens === true) { let prevIndex; for (let idx = 0; idx < slashes.length; idx++) { const n = prevIndex ? prevIndex + 1 : start; const i = slashes[idx]; const value = input.slice(n, i); if (opts.tokens) { if (idx === 0 && start !== 0) { tokens[idx].isPrefix = true; tokens[idx].value = prefix; } else { tokens[idx].value = value; } depth(tokens[idx]); state.maxDepth += tokens[idx].depth; } if (idx !== 0 || value !== '') { parts.push(value); } prevIndex = i; } if (prevIndex && prevIndex + 1 < input.length) { const value = input.slice(prevIndex + 1); parts.push(value); if (opts.tokens) { tokens[tokens.length - 1].value = value; depth(tokens[tokens.length - 1]); state.maxDepth += tokens[tokens.length - 1].depth; } } state.slashes = slashes; state.parts = parts; } return state; }; var scan_1 = scan; /** * Constants */ const { MAX_LENGTH, POSIX_REGEX_SOURCE: POSIX_REGEX_SOURCE$1, REGEX_NON_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_BACKREF, REPLACEMENTS } = constants; /** * Helpers */ const expandRange = (args, options) => { if (typeof options.expandRange === 'function') { return options.expandRange(...args, options); } args.sort(); const value = `[${args.join('-')}]`; try { /* eslint-disable-next-line no-new */ new RegExp(value); } catch (ex) { return args.map(v => utils.escapeRegex(v)).join('..'); } return value; }; /** * Create the message for a syntax error */ const syntaxError = (type, char) => { return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; }; /** * Parse the given input string. * @param {String} input * @param {Object} options * @return {Object} */ const parse = (input, options) => { if (typeof input !== 'string') { throw new TypeError('Expected a string'); } input = REPLACEMENTS[input] || input; const opts = { ...options }; const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; let len = input.length; if (len > max) { throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); } const bos = { type: 'bos', value: '', output: opts.prepend || '' }; const tokens = [bos]; const capture = opts.capture ? '' : '?:'; const win32 = utils.isWindows(options); // create constants based on platform, for windows or posix const PLATFORM_CHARS = constants.globChars(win32); const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); const { DOT_LITERAL, PLUS_LITERAL, SLASH_LITERAL, ONE_CHAR, DOTS_SLASH, NO_DOT, NO_DOT_SLASH, NO_DOTS_SLASH, QMARK, QMARK_NO_DOT, STAR, START_ANCHOR } = PLATFORM_CHARS; const globstar = (opts) => { return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; }; const nodot = opts.dot ? '' : NO_DOT; const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; let star = opts.bash === true ? globstar(opts) : STAR; if (opts.capture) { star = `(${star})`; } // minimatch options support if (typeof opts.noext === 'boolean') { opts.noextglob = opts.noext; } const state = { input, index: -1, start: 0, dot: opts.dot === true, consumed: '', output: '', prefix: '', backtrack: false, negated: false, brackets: 0, braces: 0, parens: 0, quotes: 0, globstar: false, tokens }; input = utils.removePrefix(input, state); len = input.length; const extglobs = []; const braces = []; const stack = []; let prev = bos; let value; /** * Tokenizing helpers */ const eos = () => state.index === len - 1; const peek = state.peek = (n = 1) => input[state.index + n]; const advance = state.advance = () => input[++state.index]; const remaining = () => input.slice(state.index + 1); const consume = (value = '', num = 0) => { state.consumed += value; state.index += num; }; const append = token => { state.output += token.output != null ? token.output : token.value; consume(token.value); }; const negate = () => { let count = 1; while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) { advance(); state.start++; count++; } if (count % 2 === 0) { return false; } state.negated = true; state.start++; return true; }; const increment = type => { state[type]++; stack.push(type); }; const decrement = type => { state[type]--; stack.pop(); }; /** * Push tokens onto the tokens array. This helper speeds up * tokenizing by 1) helping us avoid backtracking as much as possible, * and 2) helping us avoid creating extra tokens when consecutive * characters are plain text. This improves performance and simplifies * lookbehinds. */ const push = tok => { if (prev.type === 'globstar') { const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren')); if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { state.output = state.output.slice(0, -prev.output.length); prev.type = 'star'; prev.value = '*'; prev.output = star; state.output += prev.output; } } if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) { extglobs[extglobs.length - 1].inner += tok.value; } if (tok.value || tok.output) append(tok); if (prev && prev.type === 'text' && tok.type === 'text') { prev.value += tok.value; prev.output = (prev.output || '') + tok.value; return; } tok.prev = prev; tokens.push(tok); prev = tok; }; const extglobOpen = (type, value) => { const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; token.prev = prev; token.parens = state.parens; token.output = state.output; const output = (opts.capture ? '(' : '') + token.open; increment('parens'); push({ type, value, output: state.output ? '' : ONE_CHAR }); push({ type: 'paren', extglob: true, value: advance(), output }); extglobs.push(token); }; const extglobClose = token => { let output = token.close + (opts.capture ? ')' : ''); if (token.type === 'negate') { let extglobStar = star; if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { extglobStar = globstar(opts); } if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { output = token.close = `)$))${extglobStar}`; } if (token.prev.type === 'bos' && eos()) { state.negatedExtglob = true; } } push({ type: 'paren', extglob: true, value, output }); decrement('parens'); }; /** * Fast paths */ if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { let backslashes = false; let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { if (first === '\\') { backslashes = true; return m; } if (first === '?') { if (esc) { return esc + first + (rest ? QMARK.repeat(rest.length) : ''); } if (index === 0) { return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); } return QMARK.repeat(chars.length); } if (first === '.') { return DOT_LITERAL.repeat(chars.length); } if (first === '*') { if (esc) { return esc + first + (rest ? star : ''); } return star; } return esc ? m : `\\${m}`; }); if (backslashes === true) { if (opts.unescape === true) { output = output.replace(/\\/g, ''); } else { output = output.replace(/\\+/g, m => { return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); }); } } if (output === input && opts.contains === true) { state.output = input; return state; } state.output = utils.wrapOutput(output, state, options); return state; } /** * Tokenize input until we reach end-of-string */ while (!eos()) { value = advance(); if (value === '\u0000') { continue; } /** * Escaped characters */ if (value === '\\') { const next = peek(); if (next === '/' && opts.bash !== true) { continue; } if (next === '.' || next === ';') { continue; } if (!next) { value += '\\'; push({ type: 'text', value }); continue; } // collapse slashes to reduce potential for exploits const match = /^\\+/.exec(remaining()); let slashes = 0; if (match && match[0].length > 2) { slashes = match[0].length; state.index += slashes; if (slashes % 2 !== 0) { value += '\\'; } } if (opts.unescape === true) { value = advance() || ''; } else { value += advance() || ''; } if (state.brackets === 0) { push({ type: 'text', value }); continue; } } /** * If we're inside a regex character class, continue * until we reach the closing bracket. */ if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { if (opts.posix !== false && value === ':') { const inner = prev.value.slice(1); if (inner.includes('[')) { prev.posix = true; if (inner.includes(':')) { const idx = prev.value.lastIndexOf('['); const pre = prev.value.slice(0, idx); const rest = prev.value.slice(idx + 2); const posix = POSIX_REGEX_SOURCE$1[rest]; if (posix) { prev.value = pre + posix; state.backtrack = true; advance(); if (!bos.output && tokens.indexOf(prev) === 1) { bos.output = ONE_CHAR; } continue; } } } } if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { value = `\\${value}`; } if (value === ']' && (prev.value === '[' || prev.value === '[^')) { value = `\\${value}`; } if (opts.posix === true && value === '!' && prev.value === '[') { value = '^'; } prev.value += value; append({ value }); continue; } /** * If we're inside a quoted string, continue * until we reach the closing double quote. */ if (state.quotes === 1 && value !== '"') { value = utils.escapeRegex(value); prev.value += value; append({ value }); continue; } /** * Double quotes */ if (value === '"') { state.quotes = state.quotes === 1 ? 0 : 1; if (opts.keepQuotes === true) { push({ type: 'text', value }); } continue; } /** * Parentheses */ if (value === '(') { increment('parens'); push({ type: 'paren', value }); continue; } if (value === ')') { if (state.parens === 0 && opts.strictBrackets === true) { throw new SyntaxError(syntaxError('opening', '(')); } const extglob = extglobs[extglobs.length - 1]; if (extglob && state.parens === extglob.parens + 1) { extglobClose(extglobs.pop()); continue; } push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); decrement('parens'); continue; } /** * Square brackets */ if (value === '[') { if (opts.nobracket === true || !remaining().includes(']')) { if (opts.nobracket !== true && opts.strictBrackets === true) { throw new SyntaxError(syntaxError('closing', ']')); } value = `\\${value}`; } else { increment('brackets'); } push({ type: 'bracket', value }); continue; } if (value === ']') { if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { push({ type: 'text', value, output: `\\${value}` }); continue; } if (state.brackets === 0) { if (opts.strictBrackets === true) { throw new SyntaxError(syntaxError('opening', '[')); } push({ type: 'text', value, output: `\\${value}` }); continue; } decrement('brackets'); const prevValue = prev.value.slice(1); if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { value = `/${value}`; } prev.value += value; append({ value }); // when literal brackets are explicitly disabled // assume we should match with a regex character class if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { continue; } const escaped = utils.escapeRegex(prev.value); state.output = state.output.slice(0, -prev.value.length); // when literal brackets are explicitly enabled // assume we should escape the brackets to match literal characters if (opts.literalBrackets === true) { state.output += escaped; prev.value = escaped; continue; } // when the user specifies nothing, try to match both prev.value = `(${capture}${escaped}|${prev.value})`; state.output += prev.value; continue; } /** * Braces */ if (value === '{' && opts.nobrace !== true) { increment('braces'); const open = { type: 'brace', value, output: '(', outputIndex: state.output.length, tokensIndex: state.tokens.length }; braces.push(open); push(open); continue; } if (value === '}') { const brace = braces[braces.length - 1]; if (opts.nobrace === true || !brace) { push({ type: 'text', value, output: value }); continue; } let output = ')'; if (brace.dots === true) { const arr = tokens.slice(); const range = []; for (let i = arr.length - 1; i >= 0; i--) { tokens.pop(); if (arr[i].type === 'brace') { break; } if (arr[i].type !== 'dots') { range.unshift(arr[i].value); } } output = expandRange(range, opts); state.backtrack = true; } if (brace.comma !== true && brace.dots !== true) { const out = state.output.slice(0, brace.outputIndex); const toks = state.tokens.slice(brace.tokensIndex); brace.value = brace.output = '\\{'; value = output = '\\}'; state.output = out; for (const t of toks) { state.output += (t.output || t.value); } } push({ type: 'brace', value, output }); decrement('braces'); braces.pop(); continue; } /** * Pipes */ if (value === '|') { if (extglobs.length > 0) { extglobs[extglobs.length - 1].conditions++; } push({ type: 'text', value }); continue; } /** * Commas */ if (value === ',') { let output = value; const brace = braces[braces.length - 1]; if (brace && stack[stack.length - 1] === 'braces') { brace.comma = true; output = '|'; } push({ type: 'comma', value, output }); continue; } /** * Slashes */ if (value === '/') { // if the beginning of the glob is "./", advance the start // to the current index, and don't add the "./" characters // to the state. This greatly simplifies lookbehinds when // checking for BOS characters like "!" and "." (not "./") if (prev.type === 'dot' && state.index === state.start + 1) { state.start = state.index + 1; state.consumed = ''; state.output = ''; tokens.pop(); prev = bos; // reset "prev" to the first token continue; } push({ type: 'slash', value, output: SLASH_LITERAL }); continue; } /** * Dots */ if (value === '.') { if (state.braces > 0 && prev.type === 'dot') { if (prev.value === '.') prev.output = DOT_LITERAL; const brace = braces[braces.length - 1]; prev.type = 'dots'; prev.output += value; prev.value += value; brace.dots = true; continue; } if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') { push({ type: 'text', value, output: DOT_LITERAL }); continue; } push({ type: 'dot', value, output: DOT_LITERAL }); continue; } /** * Question marks */ if (value === '?') { const isGroup = prev && prev.value === '('; if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { extglobOpen('qmark', value); continue; } if (prev && prev.type === 'paren') { const next = peek(); let output = value; if (next === '<' && !utils.supportsLookbehinds()) { throw new Error('Node.js v10 or higher is required for regex lookbehinds'); } if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) { output = `\\${value}`; } push({ type: 'text', value, output }); continue; } if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { push({ type: 'qmark', value, output: QMARK_NO_DOT }); continue; } push({ type: 'qmark', value, output: QMARK }); continue; } /** * Exclamation */ if (value === '!') { if (opts.noextglob !== true && peek() === '(') { if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { extglobOpen('negate', value); continue; } } if (opts.nonegate !== true && state.index === 0) { negate(); continue; } } /** * Plus */ if (value === '+') { if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { extglobOpen('plus', value); continue; } if ((prev && prev.value === '(') || opts.regex === false) { push({ type: 'plus', value, output: PLUS_LITERAL }); continue; } if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) { push({ type: 'plus', value }); continue; } push({ type: 'plus', value: PLUS_LITERAL }); continue; } /** * Plain text */ if (value === '@') { if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { push({ type: 'at', extglob: true, value, output: '' }); continue; } push({ type: 'text', value }); continue; } /** * Plain text */ if (value !== '*') { if (value === '$' || value === '^') { value = `\\${value}`; } const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); if (match) { value += match[0]; state.index += match[0].length; } push({ type: 'text', value }); continue; } /** * Stars */ if (prev && (prev.type === 'globstar' || prev.star === true)) { prev.type = 'star'; prev.star = true; prev.value += value; prev.output = star; state.backtrack = true; state.globstar = true; consume(value); continue; } let rest = remaining(); if (opts.noextglob !== true && /^\([^?]/.test(rest)) { extglobOpen('star', value); continue; } if (prev.type === 'star') { if (opts.noglobstar === true) { consume(value); continue; } const prior = prev.prev; const before = prior.prev; const isStart = prior.type === 'slash' || prior.type === 'bos'; const afterStar = before && (before.type === 'star' || before.type === 'globstar'); if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) { push({ type: 'star', value, output: '' }); continue; } const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { push({ type: 'star', value, output: '' }); continue; } // strip consecutive `/**/` while (rest.slice(0, 3) === '/**') { const after = input[state.index + 4]; if (after && after !== '/') { break; } rest = rest.slice(3); consume('/**', 3); } if (prior.type === 'bos' && eos()) { prev.type = 'globstar'; prev.value += value; prev.output = globstar(opts); state.output = prev.output; state.globstar = true; consume(value); continue; } if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { state.output = state.output.slice(0, -(prior.output + prev.output).length); prior.output = `(?:${prior.output}`; prev.type = 'globstar'; prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)'); prev.value += value; state.globstar = true; state.output += prior.output + prev.output; consume(value); continue; } if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') { const end = rest[1] !== void 0 ? '|$' : ''; state.output = state.output.slice(0, -(prior.output + prev.output).length); prior.output = `(?:${prior.output}`; prev.type = 'globstar'; prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; prev.value += value; state.output += prior.output + prev.output; state.globstar = true; consume(value + advance()); push({ type: 'slash', value: '/', output: '' }); continue; } if (prior.type === 'bos' && rest[0] === '/') { prev.type = 'globstar'; prev.value += value; prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; state.output = prev.output; state.globstar = true; consume(value + advance()); push({ type: 'slash', value: '/', output: '' }); continue; } // remove single star from output state.output = state.output.slice(0, -prev.output.length); // reset previous token to globstar prev.type = 'globstar'; prev.output = globstar(opts); prev.value += value; // reset output with globstar state.output += prev.output; state.globstar = true; consume(value); continue; } const token = { type: 'star', value, output: star }; if (opts.bash === true) { token.output = '.*?'; if (prev.type === 'bos' || prev.type === 'slash') { token.output = nodot + token.output; } push(token); continue; } if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { token.output = value; push(token); continue; } if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { if (prev.type === 'dot') { state.output += NO_DOT_SLASH; prev.output += NO_DOT_SLASH; } else if (opts.dot === true) { state.output += NO_DOTS_SLASH; prev.output += NO_DOTS_SLASH; } else { state.output += nodot; prev.output += nodot; } if (peek() !== '*') { state.output += ONE_CHAR; prev.output += ONE_CHAR; } } push(token); } while (state.brackets > 0) { if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); state.output = utils.escapeLast(state.output, '['); decrement('brackets'); } while (state.parens > 0) { if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); state.output = utils.escapeLast(state.output, '('); decrement('parens'); } while (state.braces > 0) { if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); state.output = utils.escapeLast(state.output, '{'); decrement('braces'); } if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); } // rebuild the output if we had to backtrack at any point if (state.backtrack === true) { state.output = ''; for (const token of state.tokens) { state.output += token.output != null ? token.output : token.value; if (token.suffix) { state.output += token.suffix; } } } return state; }; /** * Fast paths for creating regular expressions for common glob patterns. * This can significantly speed up processing and has very little downside * impact when none of the fast paths match. */ parse.fastpaths = (input, options) => { const opts = { ...options }; const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; const len = input.length; if (len > max) { throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); } input = REPLACEMENTS[input] || input; const win32 = utils.isWindows(options); // create constants based on platform, for windows or posix const { DOT_LITERAL, SLASH_LITERAL, ONE_CHAR, DOTS_SLASH, NO_DOT, NO_DOTS, NO_DOTS_SLASH, STAR, START_ANCHOR } = constants.globChars(win32); const nodot = opts.dot ? NO_DOTS : NO_DOT; const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; const capture = opts.capture ? '' : '?:'; const state = { negated: false, prefix: '' }; let star = opts.bash === true ? '.*?' : STAR; if (opts.capture) { star = `(${star})`; } const globstar = (opts) => { if (opts.noglobstar === true) return star; return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; }; const create = str => { switch (str) { case '*': return `${nodot}${ONE_CHAR}${star}`; case '.*': return `${DOT_LITERAL}${ONE_CHAR}${star}`; case '*.*': return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; case '*/*': return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; case '**': return nodot + globstar(opts); case '**/*': return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; case '**/*.*': return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; case '**/.*': return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; default: { const match = /^(.*?)\.(\w+)$/.exec(str); if (!match) return; const source = create(match[1]); if (!source) return; return source + DOT_LITERAL + match[2]; } } }; const output = utils.removePrefix(input, state); let source = create(output); if (source && opts.strictSlashes !== true) { source += `${SLASH_LITERAL}?`; } return source; }; var parse_1 = parse; const isObject = val => val && typeof val === 'object' && !Array.isArray(val); /** * Creates a matcher function from one or more glob patterns. The * returned function takes a string to match as its first argument, * and returns true if the string is a match. The returned matcher * function also takes a boolean as the second argument that, when true, * returns an object with additional information. * * ```js * const picomatch = require('picomatch'); * // picomatch(glob[, options]); * * const isMatch = picomatch('*.!(*a)'); * console.log(isMatch('a.a')); //=> false * console.log(isMatch('a.b')); //=> true * ``` * @name picomatch * @param {String|Array} `globs` One or more glob patterns. * @param {Object=} `options` * @return {Function=} Returns a matcher function. * @api public */ const picomatch = (glob, options, returnState = false) => { if (Array.isArray(glob)) { const fns = glob.map(input => picomatch(input, options, returnState)); const arrayMatcher = str => { for (const isMatch of fns) { const state = isMatch(str); if (state) return state; } return false; }; return arrayMatcher; } const isState = isObject(glob) && glob.tokens && glob.input; if (glob === '' || (typeof glob !== 'string' && !isState)) { throw new TypeError('Expected pattern to be a non-empty string'); } const opts = options || {}; const posix = utils.isWindows(options); const regex = isState ? picomatch.compileRe(glob, options) : picomatch.makeRe(glob, options, false, true); const state = regex.state; delete regex.state; let isIgnored = () => false; if (opts.ignore) { const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); } const matcher = (input, returnObject = false) => { const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); const result = { glob, state, regex, posix, input, output, match, isMatch }; if (typeof opts.onResult === 'function') { opts.onResult(result); } if (isMatch === false) { result.isMatch = false; return returnObject ? result : false; } if (isIgnored(input)) { if (typeof opts.onIgnore === 'function') { opts.onIgnore(result); } result.isMatch = false; return returnObject ? result : false; } if (typeof opts.onMatch === 'function') { opts.onMatch(result); } return returnObject ? result : true; }; if (returnState) { matcher.state = state; } return matcher; }; /** * Test `input` with the given `regex`. This is used by the main * `picomatch()` function to test the input string. * * ```js * const picomatch = require('picomatch'); * // picomatch.test(input, regex[, options]); * * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } * ``` * @param {String} `input` String to test. * @param {RegExp} `regex` * @return {Object} Returns an object with matching info. * @api public */ picomatch.test = (input, regex, options, { glob, posix } = {}) => { if (typeof input !== 'string') { throw new TypeError('Expected input to be a string'); } if (input === '') { return { isMatch: false, output: '' }; } const opts = options || {}; const format = opts.format || (posix ? utils.toPosixSlashes : null); let match = input === glob; let output = (match && format) ? format(input) : input; if (match === false) { output = format ? format(input) : input; match = output === glob; } if (match === false || opts.capture === true) { if (opts.matchBase === true || opts.basename === true) { match = picomatch.matchBase(input, regex, options, posix); } else { match = regex.exec(output); } } return { isMatch: Boolean(match), match, output }; }; /** * Match the basename of a filepath. * * ```js * const picomatch = require('picomatch'); * // picomatch.matchBase(input, glob[, options]); * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true * ``` * @param {String} `input` String to test. * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). * @return {Boolean} * @api public */ picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); return regex.test(sysPath__default['default'].basename(input)); }; /** * Returns true if **any** of the given glob `patterns` match the specified `string`. * * ```js * const picomatch = require('picomatch'); * // picomatch.isMatch(string, patterns[, options]); * * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false * ``` * @param {String|Array} str The string to test. * @param {String|Array} patterns One or more glob patterns to use for matching. * @param {Object} [options] See available [options](#options). * @return {Boolean} Returns true if any patterns match `str` * @api public */ picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); /** * Parse a glob pattern to create the source string for a regular * expression. * * ```js * const picomatch = require('picomatch'); * const result = picomatch.parse(pattern[, options]); * ``` * @param {String} `pattern` * @param {Object} `options` * @return {Object} Returns an object with useful properties and output to be used as a regex source string. * @api public */ picomatch.parse = (pattern, options) => { if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); return parse_1(pattern, { ...options, fastpaths: false }); }; /** * Scan a glob pattern to separate the pattern into segments. * * ```js * const picomatch = require('picomatch'); * // picomatch.scan(input[, options]); * * const result = picomatch.scan('!./foo/*.js'); * console.log(result); * { prefix: '!./', * input: '!./foo/*.js', * start: 3, * base: 'foo', * glob: '*.js', * isBrace: false, * isBracket: false, * isGlob: true, * isExtglob: false, * isGlobstar: false, * negated: true } * ``` * @param {String} `input` Glob pattern to scan. * @param {Object} `options` * @return {Object} Returns an object with * @api public */ picomatch.scan = (input, options) => scan_1(input, options); /** * Create a regular expression from a parsed glob pattern. * * ```js * const picomatch = require('picomatch'); * const state = picomatch.parse('*.js'); * // picomatch.compileRe(state[, options]); * * console.log(picomatch.compileRe(state)); * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ * ``` * @param {String} `state` The object returned from the `.parse` method. * @param {Object} `options` * @return {RegExp} Returns a regex created from the given pattern. * @api public */ picomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => { if (returnOutput === true) { return parsed.output; } const opts = options || {}; const prepend = opts.contains ? '' : '^'; const append = opts.contains ? '' : '$'; let source = `${prepend}(?:${parsed.output})${append}`; if (parsed && parsed.negated === true) { source = `^(?!${source}).*$`; } const regex = picomatch.toRegex(source, options); if (returnState === true) { regex.state = parsed; } return regex; }; picomatch.makeRe = (input, options, returnOutput = false, returnState = false) => { if (!input || typeof input !== 'string') { throw new TypeError('Expected a non-empty string'); } const opts = options || {}; let parsed = { negated: false, fastpaths: true }; let prefix = ''; let output; if (input.startsWith('./')) { input = input.slice(2); prefix = parsed.prefix = './'; } if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { output = parse_1.fastpaths(input, options); } if (output === undefined) { parsed = parse_1(input, options); parsed.prefix = prefix + (parsed.prefix || ''); } else { parsed.output = output; } return picomatch.compileRe(parsed, options, returnOutput, returnState); }; /** * Create a regular expression from the given regex source string. * * ```js * const picomatch = require('picomatch'); * // picomatch.toRegex(source[, options]); * * const { output } = picomatch.parse('*.js'); * console.log(picomatch.toRegex(output)); * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ * ``` * @param {String} `source` Regular expression source string. * @param {Object} `options` * @return {RegExp} * @api public */ picomatch.toRegex = (source, options) => { try { const opts = options || {}; return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); } catch (err) { if (options && options.debug === true) throw err; return /$^/; } }; /** * Picomatch constants. * @return {Object} */ picomatch.constants = constants; /** * Expose "picomatch" */ var picomatch_1 = picomatch; var picomatch$1 = picomatch_1; const { Readable } = require$$0__default$1['default']; const { promisify } = require$$0__default['default']; const readdir = promisify(fs__default['default'].readdir); const stat = promisify(fs__default['default'].stat); const lstat = promisify(fs__default['default'].lstat); const realpath = promisify(fs__default['default'].realpath); /** * @typedef {Object} EntryInfo * @property {String} path * @property {String} fullPath * @property {fs.Stats=} stats * @property {fs.Dirent=} dirent * @property {String} basename */ const BANG = '!'; const NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP']); const FILE_TYPE = 'files'; const DIR_TYPE = 'directories'; const FILE_DIR_TYPE = 'files_directories'; const EVERYTHING_TYPE = 'all'; const ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE]; const isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code); const normalizeFilter = filter => { if (filter === undefined) return; if (typeof filter === 'function') return filter; if (typeof filter === 'string') { const glob = picomatch$1(filter.trim()); return entry => glob(entry.basename); } if (Array.isArray(filter)) { const positive = []; const negative = []; for (const item of filter) { const trimmed = item.trim(); if (trimmed.charAt(0) === BANG) { negative.push(picomatch$1(trimmed.slice(1))); } else { positive.push(picomatch$1(trimmed)); } } if (negative.length > 0) { if (positive.length > 0) { return entry => positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename)); } return entry => !negative.some(f => f(entry.basename)); } return entry => positive.some(f => f(entry.basename)); } }; class ReaddirpStream extends Readable { static get defaultOptions() { return { root: '.', /* eslint-disable no-unused-vars */ fileFilter: (path) => true, directoryFilter: (path) => true, /* eslint-enable no-unused-vars */ type: FILE_TYPE, lstat: false, depth: 2147483648, alwaysStat: false }; } constructor(options = {}) { super({ objectMode: true, autoDestroy: true, highWaterMark: options.highWaterMark || 4096 }); const opts = { ...ReaddirpStream.defaultOptions, ...options }; const { root, type } = opts; this._fileFilter = normalizeFilter(opts.fileFilter); this._directoryFilter = normalizeFilter(opts.directoryFilter); const statMethod = opts.lstat ? lstat : stat; // Use bigint stats if it's windows and stat() supports options (node 10+). if (process.platform === 'win32' && stat.length === 3) { this._stat = path => statMethod(path, { bigint: true }); } else { this._stat = statMethod; } this._maxDepth = opts.depth; this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); this._wantsEverything = type === EVERYTHING_TYPE; this._root = sysPath__default['default'].resolve(root); this._isDirent = ('Dirent' in fs__default['default']) && !opts.alwaysStat; this._statsProp = this._isDirent ? 'dirent' : 'stats'; this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent }; // Launch stream with one parent, the root dir. this.parents = [this._exploreDir(root, 1)]; this.reading = false; this.parent = undefined; } async _read(batch) { if (this.reading) return; this.reading = true; try { while (!this.destroyed && batch > 0) { const { path, depth, files = [] } = this.parent || {}; if (files.length > 0) { const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path)); for (const entry of await Promise.all(slice)) { if (this.destroyed) return; const entryType = await this._getEntryType(entry); if (entryType === 'directory' && this._directoryFilter(entry)) { if (depth <= this._maxDepth) { this.parents.push(this._exploreDir(entry.fullPath, depth + 1)); } if (this._wantsDir) { this.push(entry); batch--; } } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) { if (this._wantsFile) { this.push(entry); batch--; } } } } else { const parent = this.parents.pop(); if (!parent) { this.push(null); break; } this.parent = await parent; if (this.destroyed) return; } } } catch (error) { this.destroy(error); } finally { this.reading = false; } } async _exploreDir(path, depth) { let files; try { files = await readdir(path, this._rdOptions); } catch (error) { this._onError(error); } return {files, depth, path}; } async _formatEntry(dirent, path) { let entry; try { const basename = this._isDirent ? dirent.name : dirent; const fullPath = sysPath__default['default'].resolve(sysPath__default['default'].join(path, basename)); entry = {path: sysPath__default['default'].relative(this._root, fullPath), fullPath, basename}; entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath); } catch (err) { this._onError(err); } return entry; } _onError(err) { if (isNormalFlowError(err) && !this.destroyed) { this.emit('warn', err); } else { this.destroy(err); } } async _getEntryType(entry) { // entry may be undefined, because a warning or an error were emitted // and the statsProp is undefined const stats = entry && entry[this._statsProp]; if (!stats) { return; } if (stats.isFile()) { return 'file'; } if (stats.isDirectory()) { return 'directory'; } if (stats && stats.isSymbolicLink()) { const full = entry.fullPath; try { const entryRealPath = await realpath(full); const entryRealPathStats = await lstat(entryRealPath); if (entryRealPathStats.isFile()) { return 'file'; } if (entryRealPathStats.isDirectory()) { const len = entryRealPath.length; if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath__default['default'].sep) { return this._onError(new Error( `Circular symlink detected: "${full}" points to "${entryRealPath}"` )); } return 'directory'; } } catch (error) { this._onError(error); } } } _includeAsFile(entry) { const stats = entry && entry[this._statsProp]; return stats && this._wantsEverything && !stats.isDirectory(); } } /** * @typedef {Object} ReaddirpArguments * @property {Function=} fileFilter * @property {Function=} directoryFilter * @property {String=} type * @property {Number=} depth * @property {String=} root * @property {Boolean=} lstat * @property {Boolean=} bigint */ /** * Main function which ends up calling readdirRec and reads all files and directories in given root recursively. * @param {String} root Root directory * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth */ const readdirp = (root, options = {}) => { let type = options.entryType || options.type; if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility if (type) options.type = type; if (!root) { throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)'); } else if (typeof root !== 'string') { throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)'); } else if (type && !ALL_TYPES.includes(type)) { throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`); } options.root = root; return new ReaddirpStream(options); }; const readdirpPromise = (root, options = {}) => { return new Promise((resolve, reject) => { const files = []; readdirp(root, options) .on('data', entry => files.push(entry)) .on('end', () => resolve(files)) .on('error', error => reject(error)); }); }; readdirp.promise = readdirpPromise; readdirp.ReaddirpStream = ReaddirpStream; readdirp.default = readdirp; var readdirp_1 = readdirp; /*! * normalize-path * * Copyright (c) 2014-2018, Jon Schlinkert. * Released under the MIT License. */ var normalizePath = function(path, stripTrailing) { if (typeof path !== 'string') { throw new TypeError('expected path to be a string'); } if (path === '\\' || path === '/') return '/'; var len = path.length; if (len <= 1) return path; // ensure that win32 namespaces has two leading slashes, so that the path is // handled properly by the win32 version of path.parse() after being normalized // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces var prefix = ''; if (len > 4 && path[3] === '\\') { var ch = path[2]; if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') { path = path.slice(2); prefix = '//'; } } var segs = path.split(/[/\\]+/); if (stripTrailing !== false && segs[segs.length - 1] === '') { segs.pop(); } return prefix + segs.join('/'); }; var anymatch_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); /** * @typedef {(testString: string) => boolean} AnymatchFn * @typedef {string|RegExp|AnymatchFn} AnymatchPattern * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher */ const BANG = '!'; const DEFAULT_OPTIONS = {returnIndex: false}; const arrify = (item) => Array.isArray(item) ? item : [item]; /** * @param {AnymatchPattern} matcher * @param {object} options * @returns {AnymatchFn} */ const createPattern = (matcher, options) => { if (typeof matcher === 'function') { return matcher; } if (typeof matcher === 'string') { const glob = picomatch$1(matcher, options); return (string) => matcher === string || glob(string); } if (matcher instanceof RegExp) { return (string) => matcher.test(string); } return (string) => false; }; /** * @param {Array} patterns * @param {Array} negPatterns * @param {String|Array} args * @param {Boolean} returnIndex * @returns {boolean|number} */ const matchPatterns = (patterns, negPatterns, args, returnIndex) => { const isList = Array.isArray(args); const _path = isList ? args[0] : args; if (!isList && typeof _path !== 'string') { throw new TypeError('anymatch: second argument must be a string: got ' + Object.prototype.toString.call(_path)) } const path = normalizePath(_path); for (let index = 0; index < negPatterns.length; index++) { const nglob = negPatterns[index]; if (nglob(path)) { return returnIndex ? -1 : false; } } const applied = isList && [path].concat(args.slice(1)); for (let index = 0; index < patterns.length; index++) { const pattern = patterns[index]; if (isList ? pattern(...applied) : pattern(path)) { return returnIndex ? index : true; } } return returnIndex ? -1 : false; }; /** * @param {AnymatchMatcher} matchers * @param {Array|string} testString * @param {object} options * @returns {boolean|number|Function} */ const anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => { if (matchers == null) { throw new TypeError('anymatch: specify first argument'); } const opts = typeof options === 'boolean' ? {returnIndex: options} : options; const returnIndex = opts.returnIndex || false; // Early cache for matchers. const mtchers = arrify(matchers); const negatedGlobs = mtchers .filter(item => typeof item === 'string' && item.charAt(0) === BANG) .map(item => item.slice(1)) .map(item => picomatch$1(item, opts)); const patterns = mtchers.map(matcher => createPattern(matcher, opts)); if (testString == null) { return (testString, ri = false) => { const returnIndex = typeof ri === 'boolean' ? ri : false; return matchPatterns(patterns, negatedGlobs, testString, returnIndex); } } return matchPatterns(patterns, negatedGlobs, testString, returnIndex); }; anymatch.default = anymatch; module.exports = anymatch; }); /*! * is-extglob * * Copyright (c) 2014-2016, Jon Schlinkert. * Licensed under the MIT License. */ var isExtglob = function isExtglob(str) { if (typeof str !== 'string' || str === '') { return false; } var match; while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) { if (match[2]) return true; str = str.slice(match.index + match[0].length); } return false; }; /*! * is-glob * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. */ var chars = { '{': '}', '(': ')', '[': ']'}; var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; var isGlob = function isGlob(str, options) { if (typeof str !== 'string' || str === '') { return false; } if (isExtglob(str)) { return true; } var regex = strictRegex; var match; // optionally relax regex if (options && options.strict === false) { regex = relaxedRegex; } while ((match = regex.exec(str))) { if (match[2]) return true; var idx = match.index + match[0].length; // if an open bracket/brace/paren is escaped, // set the index to the next closing character var open = match[1]; var close = open ? chars[open] : null; if (open && close) { var n = str.indexOf(close, idx); if (n !== -1) { idx = n + 1; } } str = str.slice(idx); } return false; }; var pathPosixDirname = sysPath__default['default'].posix.dirname; var isWin32 = require$$1__default['default'].platform() === 'win32'; var slash = '/'; var backslash = /\\/g; var enclosure = /[\{\[].*[\/]*.*[\}\]]$/; var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; /** * @param {string} str * @param {Object} opts * @param {boolean} [opts.flipBackslashes=true] */ var globParent = function globParent(str, opts) { var options = Object.assign({ flipBackslashes: true }, opts); // flip windows path separators if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { str = str.replace(backslash, slash); } // special case for strings ending in enclosure containing path separator if (enclosure.test(str)) { str += slash; } // preserves full path in case of trailing path separator str += 'a'; // remove path parts that are globby do { str = pathPosixDirname(str); } while (isGlob(str) || globby.test(str)); // remove escape chars and return result return str.replace(escaped, '$1'); }; var utils$1 = createCommonjsModule(function (module, exports) { exports.isInteger = num => { if (typeof num === 'number') { return Number.isInteger(num); } if (typeof num === 'string' && num.trim() !== '') { return Number.isInteger(Number(num)); } return false; }; /** * Find a node of the given type */ exports.find = (node, type) => node.nodes.find(node => node.type === type); /** * Find a node of the given type */ exports.exceedsLimit = (min, max, step = 1, limit) => { if (limit === false) return false; if (!exports.isInteger(min) || !exports.isInteger(max)) return false; return ((Number(max) - Number(min)) / Number(step)) >= limit; }; /** * Escape the given node with '\\' before node.value */ exports.escapeNode = (block, n = 0, type) => { let node = block.nodes[n]; if (!node) return; if ((type && node.type === type) || node.type === 'open' || node.type === 'close') { if (node.escaped !== true) { node.value = '\\' + node.value; node.escaped = true; } } }; /** * Returns true if the given brace node should be enclosed in literal braces */ exports.encloseBrace = node => { if (node.type !== 'brace') return false; if ((node.commas >> 0 + node.ranges >> 0) === 0) { node.invalid = true; return true; } return false; }; /** * Returns true if a brace node is invalid. */ exports.isInvalidBrace = block => { if (block.type !== 'brace') return false; if (block.invalid === true || block.dollar) return true; if ((block.commas >> 0 + block.ranges >> 0) === 0) { block.invalid = true; return true; } if (block.open !== true || block.close !== true) { block.invalid = true; return true; } return false; }; /** * Returns true if a node is an open or close node */ exports.isOpenOrClose = node => { if (node.type === 'open' || node.type === 'close') { return true; } return node.open === true || node.close === true; }; /** * Reduce an array of text nodes. */ exports.reduce = nodes => nodes.reduce((acc, node) => { if (node.type === 'text') acc.push(node.value); if (node.type === 'range') node.type = 'text'; return acc; }, []); /** * Flatten an array */ exports.flatten = (...args) => { const result = []; const flat = arr => { for (let i = 0; i < arr.length; i++) { let ele = arr[i]; Array.isArray(ele) ? flat(ele) : ele !== void 0 && result.push(ele); } return result; }; flat(args); return result; }; }); var stringify = (ast, options = {}) => { let stringify = (node, parent = {}) => { let invalidBlock = options.escapeInvalid && utils$1.isInvalidBrace(parent); let invalidNode = node.invalid === true && options.escapeInvalid === true; let output = ''; if (node.value) { if ((invalidBlock || invalidNode) && utils$1.isOpenOrClose(node)) { return '\\' + node.value; } return node.value; } if (node.value) { return node.value; } if (node.nodes) { for (let child of node.nodes) { output += stringify(child); } } return output; }; return stringify(ast); }; /*! * is-number * * Copyright (c) 2014-present, Jon Schlinkert. * Released under the MIT License. */ var isNumber = function(num) { if (typeof num === 'number') { return num - num === 0; } if (typeof num === 'string' && num.trim() !== '') { return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); } return false; }; const toRegexRange = (min, max, options) => { if (isNumber(min) === false) { throw new TypeError('toRegexRange: expected the first argument to be a number'); } if (max === void 0 || min === max) { return String(min); } if (isNumber(max) === false) { throw new TypeError('toRegexRange: expected the second argument to be a number.'); } let opts = { relaxZeros: true, ...options }; if (typeof opts.strictZeros === 'boolean') { opts.relaxZeros = opts.strictZeros === false; } let relax = String(opts.relaxZeros); let shorthand = String(opts.shorthand); let capture = String(opts.capture); let wrap = String(opts.wrap); let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap; if (toRegexRange.cache.hasOwnProperty(cacheKey)) { return toRegexRange.cache[cacheKey].result; } let a = Math.min(min, max); let b = Math.max(min, max); if (Math.abs(a - b) === 1) { let result = min + '|' + max; if (opts.capture) { return `(${result})`; } if (opts.wrap === false) { return result; } return `(?:${result})`; } let isPadded = hasPadding(min) || hasPadding(max); let state = { min, max, a, b }; let positives = []; let negatives = []; if (isPadded) { state.isPadded = isPadded; state.maxLen = String(state.max).length; } if (a < 0) { let newMin = b < 0 ? Math.abs(b) : 1; negatives = splitToPatterns(newMin, Math.abs(a), state, opts); a = state.a = 0; } if (b >= 0) { positives = splitToPatterns(a, b, state, opts); } state.negatives = negatives; state.positives = positives; state.result = collatePatterns(negatives, positives); if (opts.capture === true) { state.result = `(${state.result})`; } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) { state.result = `(?:${state.result})`; } toRegexRange.cache[cacheKey] = state; return state.result; }; function collatePatterns(neg, pos, options) { let onlyNegative = filterPatterns(neg, pos, '-', false) || []; let onlyPositive = filterPatterns(pos, neg, '', false) || []; let intersected = filterPatterns(neg, pos, '-?', true) || []; let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); return subpatterns.join('|'); } function splitToRanges(min, max) { let nines = 1; let zeros = 1; let stop = countNines(min, nines); let stops = new Set([max]); while (min <= stop && stop <= max) { stops.add(stop); nines += 1; stop = countNines(min, nines); } stop = countZeros(max + 1, zeros) - 1; while (min < stop && stop <= max) { stops.add(stop); zeros += 1; stop = countZeros(max + 1, zeros) - 1; } stops = [...stops]; stops.sort(compare); return stops; } /** * Convert a range to a regex pattern * @param {Number} `start` * @param {Number} `stop` * @return {String} */ function rangeToPattern(start, stop, options) { if (start === stop) { return { pattern: start, count: [], digits: 0 }; } let zipped = zip(start, stop); let digits = zipped.length; let pattern = ''; let count = 0; for (let i = 0; i < digits; i++) { let [startDigit, stopDigit] = zipped[i]; if (startDigit === stopDigit) { pattern += startDigit; } else if (startDigit !== '0' || stopDigit !== '9') { pattern += toCharacterClass(startDigit, stopDigit); } else { count++; } } if (count) { pattern += options.shorthand === true ? '\\d' : '[0-9]'; } return { pattern, count: [count], digits }; } function splitToPatterns(min, max, tok, options) { let ranges = splitToRanges(min, max); let tokens = []; let start = min; let prev; for (let i = 0; i < ranges.length; i++) { let max = ranges[i]; let obj = rangeToPattern(String(start), String(max), options); let zeros = ''; if (!tok.isPadded && prev && prev.pattern === obj.pattern) { if (prev.count.length > 1) { prev.count.pop(); } prev.count.push(obj.count[0]); prev.string = prev.pattern + toQuantifier(prev.count); start = max + 1; continue; } if (tok.isPadded) { zeros = padZeros(max, tok, options); } obj.string = zeros + obj.pattern + toQuantifier(obj.count); tokens.push(obj); start = max + 1; prev = obj; } return tokens; } function filterPatterns(arr, comparison, prefix, intersection, options) { let result = []; for (let ele of arr) { let { string } = ele; // only push if _both_ are negative... if (!intersection && !contains(comparison, 'string', string)) { result.push(prefix + string); } // or _both_ are positive if (intersection && contains(comparison, 'string', string)) { result.push(prefix + string); } } return result; } /** * Zip strings */ function zip(a, b) { let arr = []; for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]); return arr; } function compare(a, b) { return a > b ? 1 : b > a ? -1 : 0; } function contains(arr, key, val) { return arr.some(ele => ele[key] === val); } function countNines(min, len) { return Number(String(min).slice(0, -len) + '9'.repeat(len)); } function countZeros(integer, zeros) { return integer - (integer % Math.pow(10, zeros)); } function toQuantifier(digits) { let [start = 0, stop = ''] = digits; if (stop || start > 1) { return `{${start + (stop ? ',' + stop : '')}}`; } return ''; } function toCharacterClass(a, b, options) { return `[${a}${(b - a === 1) ? '' : '-'}${b}]`; } function hasPadding(str) { return /^-?(0+)\d/.test(str); } function padZeros(value, tok, options) { if (!tok.isPadded) { return value; } let diff = Math.abs(tok.maxLen - String(value).length); let relax = options.relaxZeros !== false; switch (diff) { case 0: return ''; case 1: return relax ? '0?' : '0'; case 2: return relax ? '0{0,2}' : '00'; default: { return relax ? `0{0,${diff}}` : `0{${diff}}`; } } } /** * Cache */ toRegexRange.cache = {}; toRegexRange.clearCache = () => (toRegexRange.cache = {}); /** * Expose `toRegexRange` */ var toRegexRange_1 = toRegexRange; const isObject$1 = val => val !== null && typeof val === 'object' && !Array.isArray(val); const transform = toNumber => { return value => toNumber === true ? Number(value) : String(value); }; const isValidValue = value => { return typeof value === 'number' || (typeof value === 'string' && value !== ''); }; const isNumber$1 = num => Number.isInteger(+num); const zeros = input => { let value = `${input}`; let index = -1; if (value[0] === '-') value = value.slice(1); if (value === '0') return false; while (value[++index] === '0'); return index > 0; }; const stringify$1 = (start, end, options) => { if (typeof start === 'string' || typeof end === 'string') { return true; } return options.stringify === true; }; const pad = (input, maxLength, toNumber) => { if (maxLength > 0) { let dash = input[0] === '-' ? '-' : ''; if (dash) input = input.slice(1); input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0')); } if (toNumber === false) { return String(input); } return input; }; const toMaxLen = (input, maxLength) => { let negative = input[0] === '-' ? '-' : ''; if (negative) { input = input.slice(1); maxLength--; } while (input.length < maxLength) input = '0' + input; return negative ? ('-' + input) : input; }; const toSequence = (parts, options) => { parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); let prefix = options.capture ? '' : '?:'; let positives = ''; let negatives = ''; let result; if (parts.positives.length) { positives = parts.positives.join('|'); } if (parts.negatives.length) { negatives = `-(${prefix}${parts.negatives.join('|')})`; } if (positives && negatives) { result = `${positives}|${negatives}`; } else { result = positives || negatives; } if (options.wrap) { return `(${prefix}${result})`; } return result; }; const toRange = (a, b, isNumbers, options) => { if (isNumbers) { return toRegexRange_1(a, b, { wrap: false, ...options }); } let start = String.fromCharCode(a); if (a === b) return start; let stop = String.fromCharCode(b); return `[${start}-${stop}]`; }; const toRegex = (start, end, options) => { if (Array.isArray(start)) { let wrap = options.wrap === true; let prefix = options.capture ? '' : '?:'; return wrap ? `(${prefix}${start.join('|')})` : start.join('|'); } return toRegexRange_1(start, end, options); }; const rangeError = (...args) => { return new RangeError('Invalid range arguments: ' + require$$0__default['default'].inspect(...args)); }; const invalidRange = (start, end, options) => { if (options.strictRanges === true) throw rangeError([start, end]); return []; }; const invalidStep = (step, options) => { if (options.strictRanges === true) { throw new TypeError(`Expected step "${step}" to be a number`); } return []; }; const fillNumbers = (start, end, step = 1, options = {}) => { let a = Number(start); let b = Number(end); if (!Number.isInteger(a) || !Number.isInteger(b)) { if (options.strictRanges === true) throw rangeError([start, end]); return []; } // fix negative zero if (a === 0) a = 0; if (b === 0) b = 0; let descending = a > b; let startString = String(start); let endString = String(end); let stepString = String(step); step = Math.max(Math.abs(step), 1); let padded = zeros(startString) || zeros(endString) || zeros(stepString); let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; let toNumber = padded === false && stringify$1(start, end, options) === false; let format = options.transform || transform(toNumber); if (options.toRegex && step === 1) { return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); } let parts = { negatives: [], positives: [] }; let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num)); let range = []; let index = 0; while (descending ? a >= b : a <= b) { if (options.toRegex === true && step > 1) { push(a); } else { range.push(pad(format(a, index), maxLen, toNumber)); } a = descending ? a - step : a + step; index++; } if (options.toRegex === true) { return step > 1 ? toSequence(parts, options) : toRegex(range, null, { wrap: false, ...options }); } return range; }; const fillLetters = (start, end, step = 1, options = {}) => { if ((!isNumber$1(start) && start.length > 1) || (!isNumber$1(end) && end.length > 1)) { return invalidRange(start, end, options); } let format = options.transform || (val => String.fromCharCode(val)); let a = `${start}`.charCodeAt(0); let b = `${end}`.charCodeAt(0); let descending = a > b; let min = Math.min(a, b); let max = Math.max(a, b); if (options.toRegex && step === 1) { return toRange(min, max, false, options); } let range = []; let index = 0; while (descending ? a >= b : a <= b) { range.push(format(a, index)); a = descending ? a - step : a + step; index++; } if (options.toRegex === true) { return toRegex(range, null, { wrap: false, options }); } return range; }; const fill = (start, end, step, options = {}) => { if (end == null && isValidValue(start)) { return [start]; } if (!isValidValue(start) || !isValidValue(end)) { return invalidRange(start, end, options); } if (typeof step === 'function') { return fill(start, end, 1, { transform: step }); } if (isObject$1(step)) { return fill(start, end, 0, step); } let opts = { ...options }; if (opts.capture === true) opts.wrap = true; step = step || opts.step || 1; if (!isNumber$1(step)) { if (step != null && !isObject$1(step)) return invalidStep(step, opts); return fill(start, end, 1, step); } if (isNumber$1(start) && isNumber$1(end)) { return fillNumbers(start, end, step, opts); } return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); }; var fillRange = fill; const compile = (ast, options = {}) => { let walk = (node, parent = {}) => { let invalidBlock = utils$1.isInvalidBrace(parent); let invalidNode = node.invalid === true && options.escapeInvalid === true; let invalid = invalidBlock === true || invalidNode === true; let prefix = options.escapeInvalid === true ? '\\' : ''; let output = ''; if (node.isOpen === true) { return prefix + node.value; } if (node.isClose === true) { return prefix + node.value; } if (node.type === 'open') { return invalid ? (prefix + node.value) : '('; } if (node.type === 'close') { return invalid ? (prefix + node.value) : ')'; } if (node.type === 'comma') { return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|'); } if (node.value) { return node.value; } if (node.nodes && node.ranges > 0) { let args = utils$1.reduce(node.nodes); let range = fillRange(...args, { ...options, wrap: false, toRegex: true }); if (range.length !== 0) { return args.length > 1 && range.length > 1 ? `(${range})` : range; } } if (node.nodes) { for (let child of node.nodes) { output += walk(child, node); } } return output; }; return walk(ast); }; var compile_1 = compile; const append = (queue = '', stash = '', enclose = false) => { let result = []; queue = [].concat(queue); stash = [].concat(stash); if (!stash.length) return queue; if (!queue.length) { return enclose ? utils$1.flatten(stash).map(ele => `{${ele}}`) : stash; } for (let item of queue) { if (Array.isArray(item)) { for (let value of item) { result.push(append(value, stash, enclose)); } } else { for (let ele of stash) { if (enclose === true && typeof ele === 'string') ele = `{${ele}}`; result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele)); } } } return utils$1.flatten(result); }; const expand = (ast, options = {}) => { let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit; let walk = (node, parent = {}) => { node.queue = []; let p = parent; let q = parent.queue; while (p.type !== 'brace' && p.type !== 'root' && p.parent) { p = p.parent; q = p.queue; } if (node.invalid || node.dollar) { q.push(append(q.pop(), stringify(node, options))); return; } if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) { q.push(append(q.pop(), ['{}'])); return; } if (node.nodes && node.ranges > 0) { let args = utils$1.reduce(node.nodes); if (utils$1.exceedsLimit(...args, options.step, rangeLimit)) { throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.'); } let range = fillRange(...args, options); if (range.length === 0) { range = stringify(node, options); } q.push(append(q.pop(), range)); node.nodes = []; return; } let enclose = utils$1.encloseBrace(node); let queue = node.queue; let block = node; while (block.type !== 'brace' && block.type !== 'root' && block.parent) { block = block.parent; queue = block.queue; } for (let i = 0; i < node.nodes.length; i++) { let child = node.nodes[i]; if (child.type === 'comma' && node.type === 'brace') { if (i === 1) queue.push(''); queue.push(''); continue; } if (child.type === 'close') { q.push(append(q.pop(), queue, enclose)); continue; } if (child.value && child.type !== 'open') { queue.push(append(queue.pop(), child.value)); continue; } if (child.nodes) { walk(child, node); } } return queue; }; return utils$1.flatten(walk(ast)); }; var expand_1 = expand; var constants$1 = { MAX_LENGTH: 1024 * 64, // Digits CHAR_0: '0', /* 0 */ CHAR_9: '9', /* 9 */ // Alphabet chars. CHAR_UPPERCASE_A: 'A', /* A */ CHAR_LOWERCASE_A: 'a', /* a */ CHAR_UPPERCASE_Z: 'Z', /* Z */ CHAR_LOWERCASE_Z: 'z', /* z */ CHAR_LEFT_PARENTHESES: '(', /* ( */ CHAR_RIGHT_PARENTHESES: ')', /* ) */ CHAR_ASTERISK: '*', /* * */ // Non-alphabetic chars. CHAR_AMPERSAND: '&', /* & */ CHAR_AT: '@', /* @ */ CHAR_BACKSLASH: '\\', /* \ */ CHAR_BACKTICK: '`', /* ` */ CHAR_CARRIAGE_RETURN: '\r', /* \r */ CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */ CHAR_COLON: ':', /* : */ CHAR_COMMA: ',', /* , */ CHAR_DOLLAR: '$', /* . */ CHAR_DOT: '.', /* . */ CHAR_DOUBLE_QUOTE: '"', /* " */ CHAR_EQUAL: '=', /* = */ CHAR_EXCLAMATION_MARK: '!', /* ! */ CHAR_FORM_FEED: '\f', /* \f */ CHAR_FORWARD_SLASH: '/', /* / */ CHAR_HASH: '#', /* # */ CHAR_HYPHEN_MINUS: '-', /* - */ CHAR_LEFT_ANGLE_BRACKET: '<', /* < */ CHAR_LEFT_CURLY_BRACE: '{', /* { */ CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */ CHAR_LINE_FEED: '\n', /* \n */ CHAR_NO_BREAK_SPACE: '\u00A0', /* \u00A0 */ CHAR_PERCENT: '%', /* % */ CHAR_PLUS: '+', /* + */ CHAR_QUESTION_MARK: '?', /* ? */ CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */ CHAR_RIGHT_CURLY_BRACE: '}', /* } */ CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */ CHAR_SEMICOLON: ';', /* ; */ CHAR_SINGLE_QUOTE: '\'', /* ' */ CHAR_SPACE: ' ', /* */ CHAR_TAB: '\t', /* \t */ CHAR_UNDERSCORE: '_', /* _ */ CHAR_VERTICAL_LINE: '|', /* | */ CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\uFEFF' /* \uFEFF */ }; /** * Constants */ const { MAX_LENGTH: MAX_LENGTH$1, CHAR_BACKSLASH, /* \ */ CHAR_BACKTICK, /* ` */ CHAR_COMMA: CHAR_COMMA$1, /* , */ CHAR_DOT: CHAR_DOT$1, /* . */ CHAR_LEFT_PARENTHESES: CHAR_LEFT_PARENTHESES$1, /* ( */ CHAR_RIGHT_PARENTHESES: CHAR_RIGHT_PARENTHESES$1, /* ) */ CHAR_LEFT_CURLY_BRACE: CHAR_LEFT_CURLY_BRACE$1, /* { */ CHAR_RIGHT_CURLY_BRACE: CHAR_RIGHT_CURLY_BRACE$1, /* } */ CHAR_LEFT_SQUARE_BRACKET: CHAR_LEFT_SQUARE_BRACKET$1, /* [ */ CHAR_RIGHT_SQUARE_BRACKET: CHAR_RIGHT_SQUARE_BRACKET$1, /* ] */ CHAR_DOUBLE_QUOTE, /* " */ CHAR_SINGLE_QUOTE, /* ' */ CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_NOBREAK_SPACE } = constants$1; /** * parse */ const parse$1 = (input, options = {}) => { if (typeof input !== 'string') { throw new TypeError('Expected a string'); } let opts = options || {}; let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH$1, opts.maxLength) : MAX_LENGTH$1; if (input.length > max) { throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); } let ast = { type: 'root', input, nodes: [] }; let stack = [ast]; let block = ast; let prev = ast; let brackets = 0; let length = input.length; let index = 0; let depth = 0; let value; /** * Helpers */ const advance = () => input[index++]; const push = node => { if (node.type === 'text' && prev.type === 'dot') { prev.type = 'text'; } if (prev && prev.type === 'text' && node.type === 'text') { prev.value += node.value; return; } block.nodes.push(node); node.parent = block; node.prev = prev; prev = node; return node; }; push({ type: 'bos' }); while (index < length) { block = stack[stack.length - 1]; value = advance(); /** * Invalid chars */ if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { continue; } /** * Escaped chars */ if (value === CHAR_BACKSLASH) { push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() }); continue; } /** * Right square bracket (literal): ']' */ if (value === CHAR_RIGHT_SQUARE_BRACKET$1) { push({ type: 'text', value: '\\' + value }); continue; } /** * Left square bracket: '[' */ if (value === CHAR_LEFT_SQUARE_BRACKET$1) { brackets++; let next; while (index < length && (next = advance())) { value += next; if (next === CHAR_LEFT_SQUARE_BRACKET$1) { brackets++; continue; } if (next === CHAR_BACKSLASH) { value += advance(); continue; } if (next === CHAR_RIGHT_SQUARE_BRACKET$1) { brackets--; if (brackets === 0) { break; } } } push({ type: 'text', value }); continue; } /** * Parentheses */ if (value === CHAR_LEFT_PARENTHESES$1) { block = push({ type: 'paren', nodes: [] }); stack.push(block); push({ type: 'text', value }); continue; } if (value === CHAR_RIGHT_PARENTHESES$1) { if (block.type !== 'paren') { push({ type: 'text', value }); continue; } block = stack.pop(); push({ type: 'text', value }); block = stack[stack.length - 1]; continue; } /** * Quotes: '|"|` */ if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { let open = value; let next; if (options.keepQuotes !== true) { value = ''; } while (index < length && (next = advance())) { if (next === CHAR_BACKSLASH) { value += next + advance(); continue; } if (next === open) { if (options.keepQuotes === true) value += next; break; } value += next; } push({ type: 'text', value }); continue; } /** * Left curly brace: '{' */ if (value === CHAR_LEFT_CURLY_BRACE$1) { depth++; let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true; let brace = { type: 'brace', open: true, close: false, dollar, depth, commas: 0, ranges: 0, nodes: [] }; block = push(brace); stack.push(block); push({ type: 'open', value }); continue; } /** * Right curly brace: '}' */ if (value === CHAR_RIGHT_CURLY_BRACE$1) { if (block.type !== 'brace') { push({ type: 'text', value }); continue; } let type = 'close'; block = stack.pop(); block.close = true; push({ type, value }); depth--; block = stack[stack.length - 1]; continue; } /** * Comma: ',' */ if (value === CHAR_COMMA$1 && depth > 0) { if (block.ranges > 0) { block.ranges = 0; let open = block.nodes.shift(); block.nodes = [open, { type: 'text', value: stringify(block) }]; } push({ type: 'comma', value }); block.commas++; continue; } /** * Dot: '.' */ if (value === CHAR_DOT$1 && depth > 0 && block.commas === 0) { let siblings = block.nodes; if (depth === 0 || siblings.length === 0) { push({ type: 'text', value }); continue; } if (prev.type === 'dot') { block.range = []; prev.value += value; prev.type = 'range'; if (block.nodes.length !== 3 && block.nodes.length !== 5) { block.invalid = true; block.ranges = 0; prev.type = 'text'; continue; } block.ranges++; block.args = []; continue; } if (prev.type === 'range') { siblings.pop(); let before = siblings[siblings.length - 1]; before.value += prev.value + value; prev = before; block.ranges--; continue; } push({ type: 'dot', value }); continue; } /** * Text */ push({ type: 'text', value }); } // Mark imbalanced braces and brackets as invalid do { block = stack.pop(); if (block.type !== 'root') { block.nodes.forEach(node => { if (!node.nodes) { if (node.type === 'open') node.isOpen = true; if (node.type === 'close') node.isClose = true; if (!node.nodes) node.type = 'text'; node.invalid = true; } }); // get the location of the block on parent.nodes (block's siblings) let parent = stack[stack.length - 1]; let index = parent.nodes.indexOf(block); // replace the (invalid) block with it's nodes parent.nodes.splice(index, 1, ...block.nodes); } } while (stack.length > 0); push({ type: 'eos' }); return ast; }; var parse_1$1 = parse$1; /** * Expand the given pattern or create a regex-compatible string. * * ```js * const braces = require('braces'); * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)'] * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c'] * ``` * @param {String} `str` * @param {Object} `options` * @return {String} * @api public */ const braces = (input, options = {}) => { let output = []; if (Array.isArray(input)) { for (let pattern of input) { let result = braces.create(pattern, options); if (Array.isArray(result)) { output.push(...result); } else { output.push(result); } } } else { output = [].concat(braces.create(input, options)); } if (options && options.expand === true && options.nodupes === true) { output = [...new Set(output)]; } return output; }; /** * Parse the given `str` with the given `options`. * * ```js * // braces.parse(pattern, [, options]); * const ast = braces.parse('a/{b,c}/d'); * console.log(ast); * ``` * @param {String} pattern Brace pattern to parse * @param {Object} options * @return {Object} Returns an AST * @api public */ braces.parse = (input, options = {}) => parse_1$1(input, options); /** * Creates a braces string from an AST, or an AST node. * * ```js * const braces = require('braces'); * let ast = braces.parse('foo/{a,b}/bar'); * console.log(stringify(ast.nodes[2])); //=> '{a,b}' * ``` * @param {String} `input` Brace pattern or AST. * @param {Object} `options` * @return {Array} Returns an array of expanded values. * @api public */ braces.stringify = (input, options = {}) => { if (typeof input === 'string') { return stringify(braces.parse(input, options), options); } return stringify(input, options); }; /** * Compiles a brace pattern into a regex-compatible, optimized string. * This method is called by the main [braces](#braces) function by default. * * ```js * const braces = require('braces'); * console.log(braces.compile('a/{b,c}/d')); * //=> ['a/(b|c)/d'] * ``` * @param {String} `input` Brace pattern or AST. * @param {Object} `options` * @return {Array} Returns an array of expanded values. * @api public */ braces.compile = (input, options = {}) => { if (typeof input === 'string') { input = braces.parse(input, options); } return compile_1(input, options); }; /** * Expands a brace pattern into an array. This method is called by the * main [braces](#braces) function when `options.expand` is true. Before * using this method it's recommended that you read the [performance notes](#performance)) * and advantages of using [.compile](#compile) instead. * * ```js * const braces = require('braces'); * console.log(braces.expand('a/{b,c}/d')); * //=> ['a/b/d', 'a/c/d']; * ``` * @param {String} `pattern` Brace pattern * @param {Object} `options` * @return {Array} Returns an array of expanded values. * @api public */ braces.expand = (input, options = {}) => { if (typeof input === 'string') { input = braces.parse(input, options); } let result = expand_1(input, options); // filter out empty strings if specified if (options.noempty === true) { result = result.filter(Boolean); } // filter out duplicates if specified if (options.nodupes === true) { result = [...new Set(result)]; } return result; }; /** * Processes a brace pattern and returns either an expanded array * (if `options.expand` is true), a highly optimized regex-compatible string. * This method is called by the main [braces](#braces) function. * * ```js * const braces = require('braces'); * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' * ``` * @param {String} `pattern` Brace pattern * @param {Object} `options` * @return {Array} Returns an array of expanded values. * @api public */ braces.create = (input, options = {}) => { if (input === '' || input.length < 3) { return [input]; } return options.expand !== true ? braces.compile(input, options) : braces.expand(input, options); }; /** * Expose "braces" */ var braces_1 = braces; var require$$0 = [ "3dm", "3ds", "3g2", "3gp", "7z", "a", "aac", "adp", "ai", "aif", "aiff", "alz", "ape", "apk", "appimage", "ar", "arj", "asf", "au", "avi", "bak", "baml", "bh", "bin", "bk", "bmp", "btif", "bz2", "bzip2", "cab", "caf", "cgm", "class", "cmx", "cpio", "cr2", "cur", "dat", "dcm", "deb", "dex", "djvu", "dll", "dmg", "dng", "doc", "docm", "docx", "dot", "dotm", "dra", "DS_Store", "dsk", "dts", "dtshd", "dvb", "dwg", "dxf", "ecelp4800", "ecelp7470", "ecelp9600", "egg", "eol", "eot", "epub", "exe", "f4v", "fbs", "fh", "fla", "flac", "flatpak", "fli", "flv", "fpx", "fst", "fvt", "g3", "gh", "gif", "graffle", "gz", "gzip", "h261", "h263", "h264", "icns", "ico", "ief", "img", "ipa", "iso", "jar", "jpeg", "jpg", "jpgv", "jpm", "jxr", "key", "ktx", "lha", "lib", "lvp", "lz", "lzh", "lzma", "lzo", "m3u", "m4a", "m4v", "mar", "mdi", "mht", "mid", "midi", "mj2", "mka", "mkv", "mmr", "mng", "mobi", "mov", "movie", "mp3", "mp4", "mp4a", "mpeg", "mpg", "mpga", "mxu", "nef", "npx", "numbers", "nupkg", "o", "odp", "ods", "odt", "oga", "ogg", "ogv", "otf", "ott", "pages", "pbm", "pcx", "pdb", "pdf", "pea", "pgm", "pic", "png", "pnm", "pot", "potm", "potx", "ppa", "ppam", "ppm", "pps", "ppsm", "ppsx", "ppt", "pptm", "pptx", "psd", "pya", "pyc", "pyo", "pyv", "qt", "rar", "ras", "raw", "resources", "rgb", "rip", "rlc", "rmf", "rmvb", "rpm", "rtf", "rz", "s3m", "s7z", "scpt", "sgi", "shar", "snap", "sil", "sketch", "slk", "smv", "snk", "so", "stl", "suo", "sub", "swf", "tar", "tbz", "tbz2", "tga", "tgz", "thmx", "tif", "tiff", "tlz", "ttc", "ttf", "txz", "udf", "uvh", "uvi", "uvm", "uvp", "uvs", "uvu", "viv", "vob", "war", "wav", "wax", "wbmp", "wdp", "weba", "webm", "webp", "whl", "wim", "wm", "wma", "wmv", "wmx", "woff", "woff2", "wrm", "wvx", "xbm", "xif", "xla", "xlam", "xls", "xlsb", "xlsm", "xlsx", "xlt", "xltm", "xltx", "xm", "xmind", "xpi", "xpm", "xwd", "xz", "z", "zip", "zipx" ]; var binaryExtensions = require$$0; const extensions = new Set(binaryExtensions); var isBinaryPath = filePath => extensions.has(sysPath__default['default'].extname(filePath).slice(1).toLowerCase()); var constants$2 = createCommonjsModule(function (module, exports) { const {sep} = sysPath__default['default']; const {platform} = process; exports.EV_ALL = 'all'; exports.EV_READY = 'ready'; exports.EV_ADD = 'add'; exports.EV_CHANGE = 'change'; exports.EV_ADD_DIR = 'addDir'; exports.EV_UNLINK = 'unlink'; exports.EV_UNLINK_DIR = 'unlinkDir'; exports.EV_RAW = 'raw'; exports.EV_ERROR = 'error'; exports.STR_DATA = 'data'; exports.STR_END = 'end'; exports.STR_CLOSE = 'close'; exports.FSEVENT_CREATED = 'created'; exports.FSEVENT_MODIFIED = 'modified'; exports.FSEVENT_DELETED = 'deleted'; exports.FSEVENT_MOVED = 'moved'; exports.FSEVENT_CLONED = 'cloned'; exports.FSEVENT_UNKNOWN = 'unknown'; exports.FSEVENT_TYPE_FILE = 'file'; exports.FSEVENT_TYPE_DIRECTORY = 'directory'; exports.FSEVENT_TYPE_SYMLINK = 'symlink'; exports.KEY_LISTENERS = 'listeners'; exports.KEY_ERR = 'errHandlers'; exports.KEY_RAW = 'rawEmitters'; exports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW]; exports.DOT_SLASH = `.${sep}`; exports.BACK_SLASH_RE = /\\/g; exports.DOUBLE_SLASH_RE = /\/\//; exports.SLASH_OR_BACK_SLASH_RE = /[/\\]/; exports.DOT_RE = /\..*\.(sw[px])$|~$|\.subl.*\.tmp/; exports.REPLACER_RE = /^\.[/\\]/; exports.SLASH = '/'; exports.SLASH_SLASH = '//'; exports.BRACE_START = '{'; exports.BANG = '!'; exports.ONE_DOT = '.'; exports.TWO_DOTS = '..'; exports.STAR = '*'; exports.GLOBSTAR = '**'; exports.ROOT_GLOBSTAR = '/**/*'; exports.SLASH_GLOBSTAR = '/**'; exports.DIR_SUFFIX = 'Dir'; exports.ANYMATCH_OPTS = {dot: true}; exports.STRING_TYPE = 'string'; exports.FUNCTION_TYPE = 'function'; exports.EMPTY_STR = ''; exports.EMPTY_FN = () => {}; exports.IDENTITY_FN = val => val; exports.isWindows = platform === 'win32'; exports.isMacos = platform === 'darwin'; exports.isLinux = platform === 'linux'; }); const fs = require('original-fs'); const { promisify: promisify$1 } = require$$0__default['default']; const { isWindows, isLinux, EMPTY_FN, EMPTY_STR, KEY_LISTENERS, KEY_ERR, KEY_RAW, HANDLER_KEYS, EV_CHANGE, EV_ADD, EV_ADD_DIR, EV_ERROR, STR_DATA, STR_END, BRACE_START, STAR: STAR$1 } = constants$2; const THROTTLE_MODE_WATCH = 'watch'; const open$1 = promisify$1(fs.open); const stat$1 = promisify$1(fs.stat); const lstat$1 = promisify$1(fs.lstat); const close = promisify$1(fs.close); const fsrealpath = promisify$1(fs.realpath); const statMethods = { lstat: lstat$1, stat: stat$1 }; // TODO: emit errors properly. Example: EMFILE on Macos. const foreach = (val, fn) => { if (val instanceof Set) { val.forEach(fn); } else { fn(val); } }; const addAndConvert = (main, prop, item) => { let container = main[prop]; if (!(container instanceof Set)) { main[prop] = container = new Set([container]); } container.add(item); }; const clearItem = cont => key => { const set = cont[key]; if (set instanceof Set) { set.clear(); } else { delete cont[key]; } }; const delFromSet = (main, prop, item) => { const container = main[prop]; if (container instanceof Set) { container.delete(item); } else if (container === item) { delete main[prop]; } }; const isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val; /** * @typedef {String} Path */ // fs_watch helpers // object to hold per-process fs_watch instances // (may be shared across chokidar FSWatcher instances) /** * @typedef {Object} FsWatchContainer * @property {Set} listeners * @property {Set} errHandlers * @property {Set} rawEmitters * @property {fs.FSWatcher=} watcher * @property {Boolean=} watcherUnusable */ /** * @type {Map} */ const FsWatchInstances = new Map(); /** * Instantiates the fs_watch interface * @param {String} path to be watched * @param {Object} options to be passed to fs_watch * @param {Function} listener main event handler * @param {Function} errHandler emits info about errors * @param {Function} emitRaw emits raw event data * @returns {fs.FSWatcher} new fsevents instance */ function createFsWatchInstance(path, options, listener, errHandler, emitRaw) { const handleEvent = (rawEvent, evPath) => { listener(path); emitRaw(rawEvent, evPath, {watchedPath: path}); // emit based on events occurring for files from a directory's watcher in // case the file's watcher misses it (and rely on throttling to de-dupe) if (evPath && path !== evPath) { fsWatchBroadcast( sysPath__default['default'].resolve(path, evPath), KEY_LISTENERS, sysPath__default['default'].join(path, evPath) ); } }; try { return fs.watch(path, options, handleEvent); } catch (error) { errHandler(error); } } /** * Helper for passing fs_watch event data to a collection of listeners * @param {Path} fullPath absolute path bound to fs_watch instance * @param {String} type listener type * @param {*=} val1 arguments to be passed to listeners * @param {*=} val2 * @param {*=} val3 */ const fsWatchBroadcast = (fullPath, type, val1, val2, val3) => { const cont = FsWatchInstances.get(fullPath); if (!cont) return; foreach(cont[type], (listener) => { listener(val1, val2, val3); }); }; /** * Instantiates the fs_watch interface or binds listeners * to an existing one covering the same file system entry * @param {String} path * @param {String} fullPath absolute path * @param {Object} options to be passed to fs_watch * @param {Object} handlers container for event listener functions */ const setFsWatchListener = (path, fullPath, options, handlers) => { const {listener, errHandler, rawEmitter} = handlers; let cont = FsWatchInstances.get(fullPath); /** @type {fs.FSWatcher=} */ let watcher; if (!options.persistent) { watcher = createFsWatchInstance( path, options, listener, errHandler, rawEmitter ); return watcher.close.bind(watcher); } if (cont) { addAndConvert(cont, KEY_LISTENERS, listener); addAndConvert(cont, KEY_ERR, errHandler); addAndConvert(cont, KEY_RAW, rawEmitter); } else { watcher = createFsWatchInstance( path, options, fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), errHandler, // no need to use broadcast here fsWatchBroadcast.bind(null, fullPath, KEY_RAW) ); if (!watcher) return; watcher.on(EV_ERROR, async (error) => { const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR); cont.watcherUnusable = true; // documented since Node 10.4.1 // Workaround for https://github.com/joyent/node/issues/4337 if (isWindows && error.code === 'EPERM') { try { const fd = await open$1(path, 'r'); await close(fd); broadcastErr(error); } catch (err) {} } else { broadcastErr(error); } }); cont = { listeners: listener, errHandlers: errHandler, rawEmitters: rawEmitter, watcher }; FsWatchInstances.set(fullPath, cont); } // const index = cont.listeners.indexOf(listener); // removes this instance's listeners and closes the underlying fs_watch // instance if there are no more listeners left return () => { delFromSet(cont, KEY_LISTENERS, listener); delFromSet(cont, KEY_ERR, errHandler); delFromSet(cont, KEY_RAW, rawEmitter); if (isEmptySet(cont.listeners)) { // Check to protect against issue gh-730. // if (cont.watcherUnusable) { cont.watcher.close(); // } FsWatchInstances.delete(fullPath); HANDLER_KEYS.forEach(clearItem(cont)); cont.watcher = undefined; Object.freeze(cont); } }; }; // fs_watchFile helpers // object to hold per-process fs_watchFile instances // (may be shared across chokidar FSWatcher instances) const FsWatchFileInstances = new Map(); /** * Instantiates the fs_watchFile interface or binds listeners * to an existing one covering the same file system entry * @param {String} path to be watched * @param {String} fullPath absolute path * @param {Object} options options to be passed to fs_watchFile * @param {Object} handlers container for event listener functions * @returns {Function} closer */ const setFsWatchFileListener = (path, fullPath, options, handlers) => { const {listener, rawEmitter} = handlers; let cont = FsWatchFileInstances.get(fullPath); /* eslint-disable no-unused-vars, prefer-destructuring */ let listeners = new Set(); let rawEmitters = new Set(); const copts = cont && cont.options; if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) { // "Upgrade" the watcher to persistence or a quicker interval. // This creates some unlikely edge case issues if the user mixes // settings in a very weird way, but solving for those cases // doesn't seem worthwhile for the added complexity. listeners = cont.listeners; rawEmitters = cont.rawEmitters; fs.unwatchFile(fullPath); cont = undefined; } /* eslint-enable no-unused-vars, prefer-destructuring */ if (cont) { addAndConvert(cont, KEY_LISTENERS, listener); addAndConvert(cont, KEY_RAW, rawEmitter); } else { // TODO // listeners.add(listener); // rawEmitters.add(rawEmitter); cont = { listeners: listener, rawEmitters: rawEmitter, options, watcher: fs.watchFile(fullPath, options, (curr, prev) => { foreach(cont.rawEmitters, (rawEmitter) => { rawEmitter(EV_CHANGE, fullPath, {curr, prev}); }); const currmtime = curr.mtimeMs; if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) { foreach(cont.listeners, (listener) => listener(path, curr)); } }) }; FsWatchFileInstances.set(fullPath, cont); } // const index = cont.listeners.indexOf(listener); // Removes this instance's listeners and closes the underlying fs_watchFile // instance if there are no more listeners left. return () => { delFromSet(cont, KEY_LISTENERS, listener); delFromSet(cont, KEY_RAW, rawEmitter); if (isEmptySet(cont.listeners)) { FsWatchFileInstances.delete(fullPath); fs.unwatchFile(fullPath); cont.options = cont.watcher = undefined; Object.freeze(cont); } }; }; /** * @mixin */ class NodeFsHandler { /** * @param {import("../index").FSWatcher} fsW */ constructor(fsW) { this.fsw = fsW; this._boundHandleError = (error) => fsW._handleError(error); } /** * Watch file for changes with fs_watchFile or fs_watch. * @param {String} path to file or dir * @param {Function} listener on fs change * @returns {Function} closer for the watcher instance */ _watchWithNodeFs(path, listener) { const opts = this.fsw.options; const directory = sysPath__default['default'].dirname(path); const basename = sysPath__default['default'].basename(path); const parent = this.fsw._getWatchedDir(directory); parent.add(basename); const absolutePath = sysPath__default['default'].resolve(path); const options = {persistent: opts.persistent}; if (!listener) listener = EMPTY_FN; let closer; if (opts.usePolling) { options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ? opts.binaryInterval : opts.interval; closer = setFsWatchFileListener(path, absolutePath, options, { listener, rawEmitter: this.fsw._emitRaw }); } else { closer = setFsWatchListener(path, absolutePath, options, { listener, errHandler: this._boundHandleError, rawEmitter: this.fsw._emitRaw }); } return closer; } /** * Watch a file and emit add event if warranted. * @param {Path} file Path * @param {fs.Stats} stats result of fs_stat * @param {Boolean} initialAdd was the file added at watch instantiation? * @returns {Function} closer for the watcher instance */ _handleFile(file, stats, initialAdd) { if (this.fsw.closed) { return; } const dirname = sysPath__default['default'].dirname(file); const basename = sysPath__default['default'].basename(file); const parent = this.fsw._getWatchedDir(dirname); // stats is always present let prevStats = stats; // if the file is already being watched, do nothing if (parent.has(basename)) return; const listener = async (path, newStats) => { if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return; if (!newStats || newStats.mtimeMs === 0) { try { const newStats = await stat$1(file); if (this.fsw.closed) return; // Check that change event was not fired because of changed only accessTime. const at = newStats.atimeMs; const mt = newStats.mtimeMs; if (!at || at <= mt || mt !== prevStats.mtimeMs) { this.fsw._emit(EV_CHANGE, file, newStats); } if (isLinux && prevStats.ino !== newStats.ino) { this.fsw._closeFile(path); prevStats = newStats; this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener)); } else { prevStats = newStats; } } catch (error) { // Fix issues where mtime is null but file is still present this.fsw._remove(dirname, basename); } // add is about to be emitted if file not already tracked in parent } else if (parent.has(basename)) { // Check that change event was not fired because of changed only accessTime. const at = newStats.atimeMs; const mt = newStats.mtimeMs; if (!at || at <= mt || mt !== prevStats.mtimeMs) { this.fsw._emit(EV_CHANGE, file, newStats); } prevStats = newStats; } }; // kick off the watcher const closer = this._watchWithNodeFs(file, listener); // emit an add event if we're supposed to if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) { if (!this.fsw._throttle(EV_ADD, file, 0)) return; this.fsw._emit(EV_ADD, file, stats); } return closer; } /** * Handle symlinks encountered while reading a dir. * @param {Object} entry returned by readdirp * @param {String} directory path of dir being read * @param {String} path of this item * @param {String} item basename of this item * @returns {Promise} true if no more processing is needed for this entry. */ async _handleSymlink(entry, directory, path, item) { if (this.fsw.closed) { return; } const full = entry.fullPath; const dir = this.fsw._getWatchedDir(directory); if (!this.fsw.options.followSymlinks) { // watch symlink directly (don't follow) and detect changes this.fsw._incrReadyCount(); const linkPath = await fsrealpath(path); if (this.fsw.closed) return; if (dir.has(item)) { if (this.fsw._symlinkPaths.get(full) !== linkPath) { this.fsw._symlinkPaths.set(full, linkPath); this.fsw._emit(EV_CHANGE, path, entry.stats); } } else { dir.add(item); this.fsw._symlinkPaths.set(full, linkPath); this.fsw._emit(EV_ADD, path, entry.stats); } this.fsw._emitReady(); return true; } // don't follow the same symlink more than once if (this.fsw._symlinkPaths.has(full)) { return true; } this.fsw._symlinkPaths.set(full, true); } _handleRead(directory, initialAdd, wh, target, dir, depth, throttler) { // Normalize the directory name on Windows directory = sysPath__default['default'].join(directory, EMPTY_STR); if (!wh.hasGlob) { throttler = this.fsw._throttle('readdir', directory, 1000); if (!throttler) return; } const previous = this.fsw._getWatchedDir(wh.path); const current = new Set(); let stream = this.fsw._readdirp(directory, { fileFilter: entry => wh.filterPath(entry), directoryFilter: entry => wh.filterDir(entry), depth: 0 }).on(STR_DATA, async (entry) => { if (this.fsw.closed) { stream = undefined; return; } const item = entry.path; let path = sysPath__default['default'].join(directory, item); current.add(item); if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) { return; } if (this.fsw.closed) { stream = undefined; return; } // Files that present in current directory snapshot // but absent in previous are added to watch list and // emit `add` event. if (item === target || !target && !previous.has(item)) { this.fsw._incrReadyCount(); // ensure relativeness of path is preserved in case of watcher reuse path = sysPath__default['default'].join(dir, sysPath__default['default'].relative(dir, path)); this._addToNodeFs(path, initialAdd, wh, depth + 1); } }).on(EV_ERROR, this._boundHandleError); return new Promise(resolve => stream.once(STR_END, () => { if (this.fsw.closed) { stream = undefined; return; } const wasThrottled = throttler ? throttler.clear() : false; resolve(); // Files that absent in current directory snapshot // but present in previous emit `remove` event // and are removed from @watched[directory]. previous.getChildren().filter((item) => { return item !== directory && !current.has(item) && // in case of intersecting globs; // a path may have been filtered out of this readdir, but // shouldn't be removed because it matches a different glob (!wh.hasGlob || wh.filterPath({ fullPath: sysPath__default['default'].resolve(directory, item) })); }).forEach((item) => { this.fsw._remove(directory, item); }); stream = undefined; // one more time for any missed in case changes came in extremely quickly if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler); }) ); } /** * Read directory to add / remove files from `@watched` list and re-read it on change. * @param {String} dir fs path * @param {fs.Stats} stats * @param {Boolean} initialAdd * @param {Number} depth relative to user-supplied path * @param {String} target child path targeted for watch * @param {Object} wh Common watch helpers for this path * @param {String} realpath * @returns {Promise} closer for the watcher instance. */ async _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) { const parentDir = this.fsw._getWatchedDir(sysPath__default['default'].dirname(dir)); const tracked = parentDir.has(sysPath__default['default'].basename(dir)); if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) { if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats); } // ensure dir is tracked (harmless if redundant) parentDir.add(sysPath__default['default'].basename(dir)); this.fsw._getWatchedDir(dir); let throttler; let closer; const oDepth = this.fsw.options.depth; if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) { if (!target) { await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler); if (this.fsw.closed) return; } closer = this._watchWithNodeFs(dir, (dirPath, stats) => { // if current directory is removed, do nothing if (stats && stats.mtimeMs === 0) return; this._handleRead(dirPath, false, wh, target, dir, depth, throttler); }); } return closer; } /** * Handle added file, directory, or glob pattern. * Delegates call to _handleFile / _handleDir after checks. * @param {String} path to file or ir * @param {Boolean} initialAdd was the file added at watch instantiation? * @param {Object} priorWh depth relative to user-supplied path * @param {Number} depth Child path actually targeted for watch * @param {String=} target Child path actually targeted for watch * @returns {Promise} */ async _addToNodeFs(path, initialAdd, priorWh, depth, target) { const ready = this.fsw._emitReady; if (this.fsw._isIgnored(path) || this.fsw.closed) { ready(); return false; } const wh = this.fsw._getWatchHelpers(path, depth); if (!wh.hasGlob && priorWh) { wh.hasGlob = priorWh.hasGlob; wh.globFilter = priorWh.globFilter; wh.filterPath = entry => priorWh.filterPath(entry); wh.filterDir = entry => priorWh.filterDir(entry); } // evaluate what is at the path we're being asked to watch try { const stats = await statMethods[wh.statMethod](wh.watchPath); if (this.fsw.closed) return; if (this.fsw._isIgnored(wh.watchPath, stats)) { ready(); return false; } const follow = this.fsw.options.followSymlinks && !path.includes(STAR$1) && !path.includes(BRACE_START); let closer; if (stats.isDirectory()) { const targetPath = follow ? await fsrealpath(path) : path; if (this.fsw.closed) return; closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath); if (this.fsw.closed) return; // preserve this symlink's target path if (path !== targetPath && targetPath !== undefined) { this.fsw._symlinkPaths.set(targetPath, true); } } else if (stats.isSymbolicLink()) { const targetPath = follow ? await fsrealpath(path) : path; if (this.fsw.closed) return; const parent = sysPath__default['default'].dirname(wh.watchPath); this.fsw._getWatchedDir(parent).add(wh.watchPath); this.fsw._emit(EV_ADD, wh.watchPath, stats); closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath); if (this.fsw.closed) return; // preserve this symlink's target path if (targetPath !== undefined) { this.fsw._symlinkPaths.set(sysPath__default['default'].resolve(path), targetPath); } } else { closer = this._handleFile(wh.watchPath, stats, initialAdd); } ready(); this.fsw._addPathCloser(path, closer); return false; } catch (error) { if (this.fsw._handleError(error)) { ready(); return path; } } } } var nodefsHandler = NodeFsHandler; const fs$1 = require('original-fs'); const { promisify: promisify$2 } = require$$0__default['default']; let fsevents; try { fsevents = null; } catch (error) { if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error); } if (fsevents) { // TODO: real check const mtch = process.version.match(/v(\d+)\.(\d+)/); if (mtch && mtch[1] && mtch[2]) { const maj = Number.parseInt(mtch[1], 10); const min = Number.parseInt(mtch[2], 10); if (maj === 8 && min < 16) { fsevents = undefined; } } } const { EV_ADD: EV_ADD$1, EV_CHANGE: EV_CHANGE$1, EV_ADD_DIR: EV_ADD_DIR$1, EV_UNLINK, EV_ERROR: EV_ERROR$1, STR_DATA: STR_DATA$1, STR_END: STR_END$1, FSEVENT_CREATED, FSEVENT_MODIFIED, FSEVENT_DELETED, FSEVENT_MOVED, // FSEVENT_CLONED, FSEVENT_UNKNOWN, FSEVENT_TYPE_FILE, FSEVENT_TYPE_DIRECTORY, FSEVENT_TYPE_SYMLINK, ROOT_GLOBSTAR, DIR_SUFFIX, DOT_SLASH, FUNCTION_TYPE, EMPTY_FN: EMPTY_FN$1, IDENTITY_FN } = constants$2; const Depth = (value) => isNaN(value) ? {} : {depth: value}; const stat$2 = promisify$2(fs$1.stat); const lstat$2 = promisify$2(fs$1.lstat); const realpath$1 = promisify$2(fs$1.realpath); const statMethods$1 = { stat: stat$2, lstat: lstat$2 }; /** * @typedef {String} Path */ /** * @typedef {Object} FsEventsWatchContainer * @property {Set} listeners * @property {Function} rawEmitter * @property {{stop: Function}} watcher */ // fsevents instance helper functions /** * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances) * @type {Map} */ const FSEventsWatchers = new Map(); // Threshold of duplicate path prefixes at which to start // consolidating going forward const consolidateThreshhold = 10; const wrongEventFlags = new Set([ 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912 ]); /** * Instantiates the fsevents interface * @param {Path} path path to be watched * @param {Function} callback called when fsevents is bound and ready * @returns {{stop: Function}} new fsevents instance */ const createFSEventsInstance = (path, callback) => { const stop = fsevents.watch(path, callback); return {stop}; }; /** * Instantiates the fsevents interface or binds listeners to an existing one covering * the same file tree. * @param {Path} path - to be watched * @param {Path} realPath - real path for symlinks * @param {Function} listener - called when fsevents emits events * @param {Function} rawEmitter - passes data to listeners of the 'raw' event * @returns {Function} closer */ function setFSEventsListener(path, realPath, listener, rawEmitter) { let watchPath = sysPath__default['default'].extname(path) ? sysPath__default['default'].dirname(path) : path; const parentPath = sysPath__default['default'].dirname(watchPath); let cont = FSEventsWatchers.get(watchPath); // If we've accumulated a substantial number of paths that // could have been consolidated by watching one directory // above the current one, create a watcher on the parent // path instead, so that we do consolidate going forward. if (couldConsolidate(parentPath)) { watchPath = parentPath; } const resolvedPath = sysPath__default['default'].resolve(path); const hasSymlink = resolvedPath !== realPath; const filteredListener = (fullPath, flags, info) => { if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath); if ( fullPath === resolvedPath || !fullPath.indexOf(resolvedPath + sysPath__default['default'].sep) ) listener(fullPath, flags, info); }; // check if there is already a watcher on a parent path // modifies `watchPath` to the parent path when it finds a match let watchedParent = false; for (const watchedPath of FSEventsWatchers.keys()) { if (realPath.indexOf(sysPath__default['default'].resolve(watchedPath) + sysPath__default['default'].sep) === 0) { watchPath = watchedPath; cont = FSEventsWatchers.get(watchPath); watchedParent = true; break; } } if (cont || watchedParent) { cont.listeners.add(filteredListener); } else { cont = { listeners: new Set([filteredListener]), rawEmitter, watcher: createFSEventsInstance(watchPath, (fullPath, flags) => { if (!cont.listeners.size) return; const info = fsevents.getInfo(fullPath, flags); cont.listeners.forEach(list => { list(fullPath, flags, info); }); cont.rawEmitter(info.event, fullPath, info); }) }; FSEventsWatchers.set(watchPath, cont); } // removes this instance's listeners and closes the underlying fsevents // instance if there are no more listeners left return () => { const lst = cont.listeners; lst.delete(filteredListener); if (!lst.size) { FSEventsWatchers.delete(watchPath); if (cont.watcher) return cont.watcher.stop().then(() => { cont.rawEmitter = cont.watcher = undefined; Object.freeze(cont); }); } }; } // Decide whether or not we should start a new higher-level // parent watcher const couldConsolidate = (path) => { let count = 0; for (const watchPath of FSEventsWatchers.keys()) { if (watchPath.indexOf(path) === 0) { count++; if (count >= consolidateThreshhold) { return true; } } } return false; }; // returns boolean indicating whether fsevents can be used const canUse = () => fsevents && FSEventsWatchers.size < 128; // determines subdirectory traversal levels from root to path const calcDepth = (path, root) => { let i = 0; while (!path.indexOf(root) && (path = sysPath__default['default'].dirname(path)) !== root) i++; return i; }; // returns boolean indicating whether the fsevents' event info has the same type // as the one returned by fs.stat const sameTypes = (info, stats) => ( info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() || info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() || info.type === FSEVENT_TYPE_FILE && stats.isFile() ); /** * @mixin */ class FsEventsHandler { /** * @param {import('../index').FSWatcher} fsw */ constructor(fsw) { this.fsw = fsw; } checkIgnored(path, stats) { const ipaths = this.fsw._ignoredPaths; if (this.fsw._isIgnored(path, stats)) { ipaths.add(path); if (stats && stats.isDirectory()) { ipaths.add(path + ROOT_GLOBSTAR); } return true; } ipaths.delete(path); ipaths.delete(path + ROOT_GLOBSTAR); } addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) { const event = watchedDir.has(item) ? EV_CHANGE$1 : EV_ADD$1; this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts); } async checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) { try { const stats = await stat$2(path); if (this.fsw.closed) return; if (sameTypes(info, stats)) { this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); } else { this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); } } catch (error) { if (error.code === 'EACCES') { this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); } else { this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); } } } handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) { if (this.fsw.closed || this.checkIgnored(path)) return; if (event === EV_UNLINK) { const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY; // suppress unlink events on never before seen files if (isDirectory || watchedDir.has(item)) { this.fsw._remove(parent, item, isDirectory); } } else { if (event === EV_ADD$1) { // track new directories if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path); if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) { // push symlinks back to the top of the stack to get handled const curDepth = opts.depth === undefined ? undefined : calcDepth(fullPath, realPath) + 1; return this._addToFsEvents(path, false, true, curDepth); } // track new paths // (other than symlinks being followed, which will be tracked soon) this.fsw._getWatchedDir(parent).add(item); } /** * @type {'add'|'addDir'|'unlink'|'unlinkDir'} */ const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event; this.fsw._emit(eventName, path); if (eventName === EV_ADD_DIR$1) this._addToFsEvents(path, false, true); } } /** * Handle symlinks encountered during directory scan * @param {String} watchPath - file/dir path to be watched with fsevents * @param {String} realPath - real path (in case of symlinks) * @param {Function} transform - path transformer * @param {Function} globFilter - path filter in case a glob pattern was provided * @returns {Function} closer for the watcher instance */ _watchWithFsEvents(watchPath, realPath, transform, globFilter) { if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return; const opts = this.fsw.options; const watchCallback = async (fullPath, flags, info) => { if (this.fsw.closed) return; if ( opts.depth !== undefined && calcDepth(fullPath, realPath) > opts.depth ) return; const path = transform(sysPath__default['default'].join( watchPath, sysPath__default['default'].relative(watchPath, fullPath) )); if (globFilter && !globFilter(path)) return; // ensure directories are tracked const parent = sysPath__default['default'].dirname(path); const item = sysPath__default['default'].basename(path); const watchedDir = this.fsw._getWatchedDir( info.type === FSEVENT_TYPE_DIRECTORY ? path : parent ); // correct for wrong events emitted if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) { if (typeof opts.ignored === FUNCTION_TYPE) { let stats; try { stats = await stat$2(path); } catch (error) {} if (this.fsw.closed) return; if (this.checkIgnored(path, stats)) return; if (sameTypes(info, stats)) { this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); } else { this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); } } else { this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts); } } else { switch (info.event) { case FSEVENT_CREATED: case FSEVENT_MODIFIED: return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); case FSEVENT_DELETED: case FSEVENT_MOVED: return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts); } } }; const closer = setFSEventsListener( watchPath, realPath, watchCallback, this.fsw._emitRaw ); this.fsw._emitReady(); return closer; } /** * Handle symlinks encountered during directory scan * @param {String} linkPath path to symlink * @param {String} fullPath absolute path to the symlink * @param {Function} transform pre-existing path transformer * @param {Number} curDepth level of subdirectories traversed to where symlink is * @returns {Promise} */ async _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) { // don't follow the same symlink more than once if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return; this.fsw._symlinkPaths.set(fullPath, true); this.fsw._incrReadyCount(); try { const linkTarget = await realpath$1(linkPath); if (this.fsw.closed) return; if (this.fsw._isIgnored(linkTarget)) { return this.fsw._emitReady(); } this.fsw._incrReadyCount(); // add the linkTarget for watching with a wrapper for transform // that causes emitted paths to incorporate the link's path this._addToFsEvents(linkTarget || linkPath, (path) => { let aliasedPath = linkPath; if (linkTarget && linkTarget !== DOT_SLASH) { aliasedPath = path.replace(linkTarget, linkPath); } else if (path !== DOT_SLASH) { aliasedPath = sysPath__default['default'].join(linkPath, path); } return transform(aliasedPath); }, false, curDepth); } catch(error) { if (this.fsw._handleError(error)) { return this.fsw._emitReady(); } } } /** * * @param {Path} newPath * @param {fs.Stats} stats */ emitAdd(newPath, stats, processPath, opts, forceAdd) { const pp = processPath(newPath); const isDir = stats.isDirectory(); const dirObj = this.fsw._getWatchedDir(sysPath__default['default'].dirname(pp)); const base = sysPath__default['default'].basename(pp); // ensure empty dirs get tracked if (isDir) this.fsw._getWatchedDir(pp); if (dirObj.has(base)) return; dirObj.add(base); if (!opts.ignoreInitial || forceAdd === true) { this.fsw._emit(isDir ? EV_ADD_DIR$1 : EV_ADD$1, pp, stats); } } initWatch(realPath, path, wh, processPath) { if (this.fsw.closed) return; const closer = this._watchWithFsEvents( wh.watchPath, sysPath__default['default'].resolve(realPath || wh.watchPath), processPath, wh.globFilter ); this.fsw._addPathCloser(path, closer); } /** * Handle added path with fsevents * @param {String} path file/dir path or glob pattern * @param {Function|Boolean=} transform converts working path to what the user expects * @param {Boolean=} forceAdd ensure add is emitted * @param {Number=} priorDepth Level of subdirectories already traversed. * @returns {Promise} */ async _addToFsEvents(path, transform, forceAdd, priorDepth) { if (this.fsw.closed) { return; } const opts = this.fsw.options; const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN; const wh = this.fsw._getWatchHelpers(path); // evaluate what is at the path we're being asked to watch try { const stats = await statMethods$1[wh.statMethod](wh.watchPath); if (this.fsw.closed) return; if (this.fsw._isIgnored(wh.watchPath, stats)) { throw null; } if (stats.isDirectory()) { // emit addDir unless this is a glob parent if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd); // don't recurse further if it would exceed depth setting if (priorDepth && priorDepth > opts.depth) return; // scan the contents of the dir this.fsw._readdirp(wh.watchPath, { fileFilter: entry => wh.filterPath(entry), directoryFilter: entry => wh.filterDir(entry), ...Depth(opts.depth - (priorDepth || 0)) }).on(STR_DATA$1, (entry) => { // need to check filterPath on dirs b/c filterDir is less restrictive if (this.fsw.closed) { return; } if (entry.stats.isDirectory() && !wh.filterPath(entry)) return; const joinedPath = sysPath__default['default'].join(wh.watchPath, entry.path); const {fullPath} = entry; if (wh.followSymlinks && entry.stats.isSymbolicLink()) { // preserve the current depth here since it can't be derived from // real paths past the symlink const curDepth = opts.depth === undefined ? undefined : calcDepth(joinedPath, sysPath__default['default'].resolve(wh.watchPath)) + 1; this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth); } else { this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd); } }).on(EV_ERROR$1, EMPTY_FN$1).on(STR_END$1, () => { this.fsw._emitReady(); }); } else { this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd); this.fsw._emitReady(); } } catch (error) { if (!error || this.fsw._handleError(error)) { // TODO: Strange thing: "should not choke on an ignored watch path" will be failed without 2 ready calls -__- this.fsw._emitReady(); this.fsw._emitReady(); } } if (opts.persistent && forceAdd !== true) { if (typeof transform === FUNCTION_TYPE) { // realpath has already been resolved this.initWatch(undefined, path, wh, processPath); } else { let realPath; try { realPath = await realpath$1(wh.watchPath); } catch (e) {} this.initWatch(realPath, path, wh, processPath); } } } } var fseventsHandler = FsEventsHandler; var canUse_1 = canUse; fseventsHandler.canUse = canUse_1; const { EventEmitter } = require$$0__default$2['default']; const fs$2 = require('original-fs'); const { promisify: promisify$3 } = require$$0__default['default']; const anymatch = anymatch_1.default; const { EV_ALL, EV_READY, EV_ADD: EV_ADD$2, EV_CHANGE: EV_CHANGE$2, EV_UNLINK: EV_UNLINK$1, EV_ADD_DIR: EV_ADD_DIR$2, EV_UNLINK_DIR, EV_RAW, EV_ERROR: EV_ERROR$2, STR_CLOSE, STR_END: STR_END$2, BACK_SLASH_RE, DOUBLE_SLASH_RE, SLASH_OR_BACK_SLASH_RE, DOT_RE, REPLACER_RE, SLASH, SLASH_SLASH, BRACE_START: BRACE_START$1, BANG: BANG$1, ONE_DOT, TWO_DOTS, GLOBSTAR, SLASH_GLOBSTAR, ANYMATCH_OPTS, STRING_TYPE, FUNCTION_TYPE: FUNCTION_TYPE$1, EMPTY_STR: EMPTY_STR$1, EMPTY_FN: EMPTY_FN$2, isWindows: isWindows$1, isMacos } = constants$2; const stat$3 = promisify$3(fs$2.stat); const readdir$1 = promisify$3(fs$2.readdir); /** * @typedef {String} Path * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType */ /** * * @typedef {Object} WatchHelpers * @property {Boolean} followSymlinks * @property {'stat'|'lstat'} statMethod * @property {Path} path * @property {Path} watchPath * @property {Function} entryPath * @property {Boolean} hasGlob * @property {Object} globFilter * @property {Function} filterPath * @property {Function} filterDir */ const arrify = (value = []) => Array.isArray(value) ? value : [value]; const flatten = (list, result = []) => { list.forEach(item => { if (Array.isArray(item)) { flatten(item, result); } else { result.push(item); } }); return result; }; const unifyPaths = (paths_) => { /** * @type {Array} */ const paths = flatten(arrify(paths_)); if (!paths.every(p => typeof p === STRING_TYPE)) { throw new TypeError(`Non-string provided as watch path: ${paths}`); } return paths.map(normalizePathToUnix); }; // If SLASH_SLASH occurs at the beginning of path, it is not replaced // because "//StoragePC/DrivePool/Movies" is a valid network path const toUnix = (string) => { let str = string.replace(BACK_SLASH_RE, SLASH); let prepend = false; if (str.startsWith(SLASH_SLASH)) { prepend = true; } while (str.match(DOUBLE_SLASH_RE)) { str = str.replace(DOUBLE_SLASH_RE, SLASH); } if (prepend) { str = SLASH + str; } return str; }; // Our version of upath.normalize // TODO: this is not equal to path-normalize module - investigate why const normalizePathToUnix = (path) => toUnix(sysPath__default['default'].normalize(toUnix(path))); const normalizeIgnored = (cwd = EMPTY_STR$1) => (path) => { if (typeof path !== STRING_TYPE) return path; return normalizePathToUnix(sysPath__default['default'].isAbsolute(path) ? path : sysPath__default['default'].join(cwd, path)); }; const getAbsolutePath = (path, cwd) => { if (sysPath__default['default'].isAbsolute(path)) { return path; } if (path.startsWith(BANG$1)) { return BANG$1 + sysPath__default['default'].join(cwd, path.slice(1)); } return sysPath__default['default'].join(cwd, path); }; const undef = (opts, key) => opts[key] === undefined; /** * Directory entry. * @property {Path} path * @property {Set} items */ class DirEntry { /** * @param {Path} dir * @param {Function} removeWatcher */ constructor(dir, removeWatcher) { this.path = dir; this._removeWatcher = removeWatcher; /** @type {Set} */ this.items = new Set(); } add(item) { const {items} = this; if (!items) return; if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item); } async remove(item) { const {items} = this; if (!items) return; items.delete(item); if (items.size > 0) return; const dir = this.path; try { await readdir$1(dir); } catch (err) { if (this._removeWatcher) { this._removeWatcher(sysPath__default['default'].dirname(dir), sysPath__default['default'].basename(dir)); } } } has(item) { const {items} = this; if (!items) return; return items.has(item); } /** * @returns {Array} */ getChildren() { const {items} = this; if (!items) return; return [...items.values()]; } dispose() { this.items.clear(); delete this.path; delete this._removeWatcher; delete this.items; Object.freeze(this); } } const STAT_METHOD_F = 'stat'; const STAT_METHOD_L = 'lstat'; class WatchHelper { constructor(path, watchPath, follow, fsw) { this.fsw = fsw; this.path = path = path.replace(REPLACER_RE, EMPTY_STR$1); this.watchPath = watchPath; this.fullWatchPath = sysPath__default['default'].resolve(watchPath); this.hasGlob = watchPath !== path; /** @type {object|boolean} */ if (path === EMPTY_STR$1) this.hasGlob = false; this.globSymlink = this.hasGlob && follow ? undefined : false; this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false; this.dirParts = this.getDirParts(path); this.dirParts.forEach((parts) => { if (parts.length > 1) parts.pop(); }); this.followSymlinks = follow; this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L; } checkGlobSymlink(entry) { // only need to resolve once // first entry should always have entry.parentDir === EMPTY_STR if (this.globSymlink === undefined) { this.globSymlink = entry.fullParentDir === this.fullWatchPath ? false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath}; } if (this.globSymlink) { return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath); } return entry.fullPath; } entryPath(entry) { return sysPath__default['default'].join(this.watchPath, sysPath__default['default'].relative(this.watchPath, this.checkGlobSymlink(entry)) ); } filterPath(entry) { const {stats} = entry; if (stats && stats.isSymbolicLink()) return this.filterDir(entry); const resolvedPath = this.entryPath(entry); const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE$1 ? this.globFilter(resolvedPath) : true; return matchesGlob && this.fsw._isntIgnored(resolvedPath, stats) && this.fsw._hasReadPermissions(stats); } getDirParts(path) { if (!this.hasGlob) return []; const parts = []; const expandedPath = path.includes(BRACE_START$1) ? braces_1.expand(path) : [path]; expandedPath.forEach((path) => { parts.push(sysPath__default['default'].relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE)); }); return parts; } filterDir(entry) { if (this.hasGlob) { const entryParts = this.getDirParts(this.checkGlobSymlink(entry)); let globstar = false; this.unmatchedGlob = !this.dirParts.some((parts) => { return parts.every((part, i) => { if (part === GLOBSTAR) globstar = true; return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS); }); }); } return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats); } } /** * Watches files & directories for changes. Emitted events: * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error` * * new FSWatcher() * .add(directories) * .on('add', path => log('File', path, 'was added')) */ class FSWatcher extends EventEmitter { // Not indenting methods for history sake; for now. constructor(_opts) { super(); const opts = {}; if (_opts) Object.assign(opts, _opts); // for frozen objects /** @type {Map} */ this._watched = new Map(); /** @type {Map} */ this._closers = new Map(); /** @type {Set} */ this._ignoredPaths = new Set(); /** @type {Map} */ this._throttled = new Map(); /** @type {Map} */ this._symlinkPaths = new Map(); this._streams = new Set(); this.closed = false; // Set up default options. if (undef(opts, 'persistent')) opts.persistent = true; if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false; if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false; if (undef(opts, 'interval')) opts.interval = 100; if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300; if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false; opts.enableBinaryInterval = opts.binaryInterval !== opts.interval; // Enable fsevents on OS X when polling isn't explicitly enabled. if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling; // If we can't use fsevents, ensure the options reflect it's disabled. const canUseFsEvents = fseventsHandler.canUse(); if (!canUseFsEvents) opts.useFsEvents = false; // Use polling on Mac if not using fsevents. // Other platforms use non-polling fs_watch. if (undef(opts, 'usePolling') && !opts.useFsEvents) { opts.usePolling = isMacos; } // Global override (useful for end-developers that need to force polling for all // instances of chokidar, regardless of usage/dependency depth) const envPoll = process.env.CHOKIDAR_USEPOLLING; if (envPoll !== undefined) { const envLower = envPoll.toLowerCase(); if (envLower === 'false' || envLower === '0') { opts.usePolling = false; } else if (envLower === 'true' || envLower === '1') { opts.usePolling = true; } else { opts.usePolling = !!envLower; } } const envInterval = process.env.CHOKIDAR_INTERVAL; if (envInterval) { opts.interval = Number.parseInt(envInterval, 10); } // Editor atomic write normalization enabled by default with fs.watch if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents; if (opts.atomic) this._pendingUnlinks = new Map(); if (undef(opts, 'followSymlinks')) opts.followSymlinks = true; if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false; if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {}; const awf = opts.awaitWriteFinish; if (awf) { if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000; if (!awf.pollInterval) awf.pollInterval = 100; this._pendingWrites = new Map(); } if (opts.ignored) opts.ignored = arrify(opts.ignored); let readyCalls = 0; this._emitReady = () => { readyCalls++; if (readyCalls >= this._readyCount) { this._emitReady = EMPTY_FN$2; this._readyEmitted = true; // use process.nextTick to allow time for listener to be bound process.nextTick(() => this.emit(EV_READY)); } }; this._emitRaw = (...args) => this.emit(EV_RAW, ...args); this._readyEmitted = false; this.options = opts; // Initialize with proper watcher. if (opts.useFsEvents) { this._fsEventsHandler = new fseventsHandler(this); } else { this._nodeFsHandler = new nodefsHandler(this); } // You’re frozen when your heart’s not open. Object.freeze(opts); } // Public methods /** * Adds paths to be watched on an existing FSWatcher instance * @param {Path|Array} paths_ * @param {String=} _origAdd private; for handling non-existent paths to be watched * @param {Boolean=} _internal private; indicates a non-user add * @returns {FSWatcher} for chaining */ add(paths_, _origAdd, _internal) { const {cwd, disableGlobbing} = this.options; this.closed = false; let paths = unifyPaths(paths_); if (cwd) { paths = paths.map((path) => { const absPath = getAbsolutePath(path, cwd); // Check `path` instead of `absPath` because the cwd portion can't be a glob if (disableGlobbing || !isGlob(path)) { return absPath; } return normalizePath(absPath); }); } // set aside negated glob strings paths = paths.filter((path) => { if (path.startsWith(BANG$1)) { this._ignoredPaths.add(path.slice(1)); return false; } // if a path is being added that was previously ignored, stop ignoring it this._ignoredPaths.delete(path); this._ignoredPaths.delete(path + SLASH_GLOBSTAR); // reset the cached userIgnored anymatch fn // to make ignoredPaths changes effective this._userIgnored = undefined; return true; }); if (this.options.useFsEvents && this._fsEventsHandler) { if (!this._readyCount) this._readyCount = paths.length; if (this.options.persistent) this._readyCount *= 2; paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path)); } else { if (!this._readyCount) this._readyCount = 0; this._readyCount += paths.length; Promise.all( paths.map(async path => { const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd); if (res) this._emitReady(); return res; }) ).then(results => { if (this.closed) return; results.filter(item => item).forEach(item => { this.add(sysPath__default['default'].dirname(item), sysPath__default['default'].basename(_origAdd || item)); }); }); } return this; } /** * Close watchers or start ignoring events from specified paths. * @param {Path|Array} paths_ - string or array of strings, file/directory paths and/or globs * @returns {FSWatcher} for chaining */ unwatch(paths_) { if (this.closed) return this; const paths = unifyPaths(paths_); const {cwd} = this.options; paths.forEach((path) => { // convert to absolute path unless relative path already matches if (!sysPath__default['default'].isAbsolute(path) && !this._closers.has(path)) { if (cwd) path = sysPath__default['default'].join(cwd, path); path = sysPath__default['default'].resolve(path); } this._closePath(path); this._ignoredPaths.add(path); if (this._watched.has(path)) { this._ignoredPaths.add(path + SLASH_GLOBSTAR); } // reset the cached userIgnored anymatch fn // to make ignoredPaths changes effective this._userIgnored = undefined; }); return this; } /** * Close watchers and remove all listeners from watched paths. * @returns {Promise}. */ close() { if (this.closed) return this._closePromise; this.closed = true; // Memory management. this.removeAllListeners(); const closers = []; this._closers.forEach(closerList => closerList.forEach(closer => { const promise = closer(); if (promise instanceof Promise) closers.push(promise); })); this._streams.forEach(stream => stream.destroy()); this._userIgnored = undefined; this._readyCount = 0; this._readyEmitted = false; this._watched.forEach(dirent => dirent.dispose()); ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => { this[`_${key}`].clear(); }); this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve(); return this._closePromise; } /** * Expose list of watched paths * @returns {Object} for chaining */ getWatched() { const watchList = {}; this._watched.forEach((entry, dir) => { const key = this.options.cwd ? sysPath__default['default'].relative(this.options.cwd, dir) : dir; watchList[key || ONE_DOT] = entry.getChildren().sort(); }); return watchList; } emitWithAll(event, args) { this.emit(...args); if (event !== EV_ERROR$2) this.emit(EV_ALL, ...args); } // Common helpers // -------------- /** * Normalize and emit events. * Calling _emit DOES NOT MEAN emit() would be called! * @param {EventName} event Type of event * @param {Path} path File or directory path * @param {*=} val1 arguments to be passed with event * @param {*=} val2 * @param {*=} val3 * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag */ async _emit(event, path, val1, val2, val3) { if (this.closed) return; const opts = this.options; if (isWindows$1) path = sysPath__default['default'].normalize(path); if (opts.cwd) path = sysPath__default['default'].relative(opts.cwd, path); /** @type Array */ const args = [event, path]; if (val3 !== undefined) args.push(val1, val2, val3); else if (val2 !== undefined) args.push(val1, val2); else if (val1 !== undefined) args.push(val1); const awf = opts.awaitWriteFinish; let pw; if (awf && (pw = this._pendingWrites.get(path))) { pw.lastChange = new Date(); return this; } if (opts.atomic) { if (event === EV_UNLINK$1) { this._pendingUnlinks.set(path, args); setTimeout(() => { this._pendingUnlinks.forEach((entry, path) => { this.emit(...entry); this.emit(EV_ALL, ...entry); this._pendingUnlinks.delete(path); }); }, typeof opts.atomic === 'number' ? opts.atomic : 100); return this; } if (event === EV_ADD$2 && this._pendingUnlinks.has(path)) { event = args[0] = EV_CHANGE$2; this._pendingUnlinks.delete(path); } } if (awf && (event === EV_ADD$2 || event === EV_CHANGE$2) && this._readyEmitted) { const awfEmit = (err, stats) => { if (err) { event = args[0] = EV_ERROR$2; args[1] = err; this.emitWithAll(event, args); } else if (stats) { // if stats doesn't exist the file must have been deleted if (args.length > 2) { args[2] = stats; } else { args.push(stats); } this.emitWithAll(event, args); } }; this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit); return this; } if (event === EV_CHANGE$2) { const isThrottled = !this._throttle(EV_CHANGE$2, path, 50); if (isThrottled) return this; } if (opts.alwaysStat && val1 === undefined && (event === EV_ADD$2 || event === EV_ADD_DIR$2 || event === EV_CHANGE$2) ) { const fullPath = opts.cwd ? sysPath__default['default'].join(opts.cwd, path) : path; let stats; try { stats = await stat$3(fullPath); } catch (err) {} // Suppress event when fs_stat fails, to avoid sending undefined 'stat' if (!stats || this.closed) return; args.push(stats); } this.emitWithAll(event, args); return this; } /** * Common handler for errors * @param {Error} error * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag */ _handleError(error) { const code = error && error.code; if (error && code !== 'ENOENT' && code !== 'ENOTDIR' && (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES')) ) { this.emit(EV_ERROR$2, error); } return error || this.closed; } /** * Helper utility for throttling * @param {ThrottleType} actionType type being throttled * @param {Path} path being acted upon * @param {Number} timeout duration of time to suppress duplicate actions * @returns {Object|false} tracking object or false if action should be suppressed */ _throttle(actionType, path, timeout) { if (!this._throttled.has(actionType)) { this._throttled.set(actionType, new Map()); } /** @type {Map} */ const action = this._throttled.get(actionType); /** @type {Object} */ const actionPath = action.get(path); if (actionPath) { actionPath.count++; return false; } let timeoutObject; const clear = () => { const item = action.get(path); const count = item ? item.count : 0; action.delete(path); clearTimeout(timeoutObject); if (item) clearTimeout(item.timeoutObject); return count; }; timeoutObject = setTimeout(clear, timeout); const thr = {timeoutObject, clear, count: 0}; action.set(path, thr); return thr; } _incrReadyCount() { return this._readyCount++; } /** * Awaits write operation to finish. * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback. * @param {Path} path being acted upon * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished * @param {EventName} event * @param {Function} awfEmit Callback to be called when ready for event to be emitted. */ _awaitWriteFinish(path, threshold, event, awfEmit) { let timeoutHandler; let fullPath = path; if (this.options.cwd && !sysPath__default['default'].isAbsolute(path)) { fullPath = sysPath__default['default'].join(this.options.cwd, path); } const now = new Date(); const awaitWriteFinish = (prevStat) => { fs$2.stat(fullPath, (err, curStat) => { if (err || !this._pendingWrites.has(path)) { if (err && err.code !== 'ENOENT') awfEmit(err); return; } const now = Number(new Date()); if (prevStat && curStat.size !== prevStat.size) { this._pendingWrites.get(path).lastChange = now; } const pw = this._pendingWrites.get(path); const df = now - pw.lastChange; if (df >= threshold) { this._pendingWrites.delete(path); awfEmit(undefined, curStat); } else { timeoutHandler = setTimeout( awaitWriteFinish, this.options.awaitWriteFinish.pollInterval, curStat ); } }); }; if (!this._pendingWrites.has(path)) { this._pendingWrites.set(path, { lastChange: now, cancelWait: () => { this._pendingWrites.delete(path); clearTimeout(timeoutHandler); return event; } }); timeoutHandler = setTimeout( awaitWriteFinish, this.options.awaitWriteFinish.pollInterval ); } } _getGlobIgnored() { return [...this._ignoredPaths.values()]; } /** * Determines whether user has asked to ignore this path. * @param {Path} path filepath or dir * @param {fs.Stats=} stats result of fs.stat * @returns {Boolean} */ _isIgnored(path, stats) { if (this.options.atomic && DOT_RE.test(path)) return true; if (!this._userIgnored) { const {cwd} = this.options; const ign = this.options.ignored; const ignored = ign && ign.map(normalizeIgnored(cwd)); const paths = arrify(ignored) .filter((path) => typeof path === STRING_TYPE && !isGlob(path)) .map((path) => path + SLASH_GLOBSTAR); const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths); this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS); } return this._userIgnored([path, stats]); } _isntIgnored(path, stat) { return !this._isIgnored(path, stat); } /** * Provides a set of common helpers and properties relating to symlink and glob handling. * @param {Path} path file, directory, or glob pattern being watched * @param {Number=} depth at any depth > 0, this isn't a glob * @returns {WatchHelper} object containing helpers for this path */ _getWatchHelpers(path, depth) { const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path); const follow = this.options.followSymlinks; return new WatchHelper(path, watchPath, follow, this); } // Directory helpers // ----------------- /** * Provides directory tracking objects * @param {String} directory path of the directory * @returns {DirEntry} the directory's tracking object */ _getWatchedDir(directory) { if (!this._boundRemove) this._boundRemove = this._remove.bind(this); const dir = sysPath__default['default'].resolve(directory); if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove)); return this._watched.get(dir); } // File helpers // ------------ /** * Check for read permissions. * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405 * @param {fs.Stats} stats - object, result of fs_stat * @returns {Boolean} indicates whether the file can be read */ _hasReadPermissions(stats) { if (this.options.ignorePermissionErrors) return true; // stats.mode may be bigint const md = stats && Number.parseInt(stats.mode, 10); const st = md & 0o777; const it = Number.parseInt(st.toString(8)[0], 10); return Boolean(4 & it); } /** * Handles emitting unlink events for * files and directories, and via recursion, for * files and directories within directories that are unlinked * @param {String} directory within which the following item is located * @param {String} item base path of item/directory * @returns {void} */ _remove(directory, item, isDirectory) { // if what is being deleted is a directory, get that directory's paths // for recursive deleting and cleaning of watched object // if it is not a directory, nestedDirectoryChildren will be empty array const path = sysPath__default['default'].join(directory, item); const fullPath = sysPath__default['default'].resolve(path); isDirectory = isDirectory != null ? isDirectory : this._watched.has(path) || this._watched.has(fullPath); // prevent duplicate handling in case of arriving here nearly simultaneously // via multiple paths (such as _handleFile and _handleDir) if (!this._throttle('remove', path, 100)) return; // if the only watched file is removed, watch for its return if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) { this.add(directory, item, true); } // This will create a new entry in the watched object in either case // so we got to do the directory check beforehand const wp = this._getWatchedDir(path); const nestedDirectoryChildren = wp.getChildren(); // Recursively remove children directories / files. nestedDirectoryChildren.forEach(nested => this._remove(path, nested)); // Check if item was on the watched list and remove it const parent = this._getWatchedDir(directory); const wasTracked = parent.has(item); parent.remove(item); // Fixes issue #1042 -> Relative paths were detected and added as symlinks // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612), // but never removed from the map in case the path was deleted. // This leads to an incorrect state if the path was recreated: // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553 if (this._symlinkPaths.has(fullPath)) { this._symlinkPaths.delete(fullPath); } // If we wait for this file to be fully written, cancel the wait. let relPath = path; if (this.options.cwd) relPath = sysPath__default['default'].relative(this.options.cwd, path); if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) { const event = this._pendingWrites.get(relPath).cancelWait(); if (event === EV_ADD$2) return; } // The Entry will either be a directory that just got removed // or a bogus entry to a file, in either case we have to remove it this._watched.delete(path); this._watched.delete(fullPath); const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK$1; if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path); // Avoid conflicts if we later create another file with the same name if (!this.options.useFsEvents) { this._closePath(path); } } /** * Closes all watchers for a path * @param {Path} path */ _closePath(path) { this._closeFile(path); const dir = sysPath__default['default'].dirname(path); this._getWatchedDir(dir).remove(sysPath__default['default'].basename(path)); } /** * Closes only file-specific watchers * @param {Path} path */ _closeFile(path) { const closers = this._closers.get(path); if (!closers) return; closers.forEach(closer => closer()); this._closers.delete(path); } /** * * @param {Path} path * @param {Function} closer */ _addPathCloser(path, closer) { if (!closer) return; let list = this._closers.get(path); if (!list) { list = []; this._closers.set(path, list); } list.push(closer); } _readdirp(root, opts) { if (this.closed) return; const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts}; let stream = readdirp_1(root, options); this._streams.add(stream); stream.once(STR_CLOSE, () => { stream = undefined; }); stream.once(STR_END$2, () => { if (stream) { this._streams.delete(stream); stream = undefined; } }); return stream; } } /** * Instantiates watcher with paths to be tracked. * @param {String|Array} paths file/directory paths and/or globs * @param {Object=} options chokidar opts * @returns an instance of FSWatcher for chaining. */ const watch = (paths, options) => { const watcher = new FSWatcher(options); watcher.add(paths); return watcher; }; var watch_1 = watch; var utils$2 = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.extend = extend; exports.indexOf = indexOf; exports.escapeExpression = escapeExpression; exports.isEmpty = isEmpty; exports.createFrame = createFrame; exports.blockParams = blockParams; exports.appendContextPath = appendContextPath; var escape = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`', '=': '=' }; var badChars = /[&<>"'`=]/g, possible = /[&<>"'`=]/; function escapeChar(chr) { return escape[chr]; } function extend(obj /* , ...source */) { for (var i = 1; i < arguments.length; i++) { for (var key in arguments[i]) { if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { obj[key] = arguments[i][key]; } } } return obj; } var toString = Object.prototype.toString; exports.toString = toString; // Sourced from lodash // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt /* eslint-disable func-style */ var isFunction = function isFunction(value) { return typeof value === 'function'; }; // fallback for older versions of Chrome and Safari /* istanbul ignore next */ if (isFunction(/x/)) { exports.isFunction = isFunction = function (value) { return typeof value === 'function' && toString.call(value) === '[object Function]'; }; } exports.isFunction = isFunction; /* eslint-enable func-style */ /* istanbul ignore next */ var isArray = Array.isArray || function (value) { return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false; }; exports.isArray = isArray; // Older IE versions do not directly support indexOf so we must implement our own, sadly. function indexOf(array, value) { for (var i = 0, len = array.length; i < len; i++) { if (array[i] === value) { return i; } } return -1; } function escapeExpression(string) { if (typeof string !== 'string') { // don't escape SafeStrings, since they're already safe if (string && string.toHTML) { return string.toHTML(); } else if (string == null) { return ''; } else if (!string) { return string + ''; } // Force a string conversion as this will be done by the append regardless and // the regex test will do this transparently behind the scenes, causing issues if // an object's to string has escaped characters in it. string = '' + string; } if (!possible.test(string)) { return string; } return string.replace(badChars, escapeChar); } function isEmpty(value) { if (!value && value !== 0) { return true; } else if (isArray(value) && value.length === 0) { return true; } else { return false; } } function createFrame(object) { var frame = extend({}, object); frame._parent = object; return frame; } function blockParams(params, ids) { params.path = ids; return params; } function appendContextPath(contextPath, id) { return (contextPath ? contextPath + '.' : '') + id; } }); var exception = createCommonjsModule(function (module, exports) { exports.__esModule = true; var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack']; function Exception(message, node) { var loc = node && node.loc, line = undefined, endLineNumber = undefined, column = undefined, endColumn = undefined; if (loc) { line = loc.start.line; endLineNumber = loc.end.line; column = loc.start.column; endColumn = loc.end.column; message += ' - ' + line + ':' + column; } var tmp = Error.prototype.constructor.call(this, message); // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work. for (var idx = 0; idx < errorProps.length; idx++) { this[errorProps[idx]] = tmp[errorProps[idx]]; } /* istanbul ignore else */ if (Error.captureStackTrace) { Error.captureStackTrace(this, Exception); } try { if (loc) { this.lineNumber = line; this.endLineNumber = endLineNumber; // Work around issue under safari where we can't directly set the column value /* istanbul ignore next */ if (Object.defineProperty) { Object.defineProperty(this, 'column', { value: column, enumerable: true }); Object.defineProperty(this, 'endColumn', { value: endColumn, enumerable: true }); } else { this.column = column; this.endColumn = endColumn; } } } catch (nop) { /* Ignore if the browser is very particular */ } } Exception.prototype = new Error(); exports['default'] = Exception; module.exports = exports['default']; }); var blockHelperMissing = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports['default'] = function (instance) { instance.registerHelper('blockHelperMissing', function (context, options) { var inverse = options.inverse, fn = options.fn; if (context === true) { return fn(this); } else if (context === false || context == null) { return inverse(this); } else if (utils$2.isArray(context)) { if (context.length > 0) { if (options.ids) { options.ids = [options.name]; } return instance.helpers.each(context, options); } else { return inverse(this); } } else { if (options.data && options.ids) { var data = utils$2.createFrame(options.data); data.contextPath = utils$2.appendContextPath(options.data.contextPath, options.name); options = { data: data }; } return fn(context, options); } }); }; module.exports = exports['default']; }); var each = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); exports['default'] = function (instance) { instance.registerHelper('each', function (context, options) { if (!options) { throw new _exception2['default']('Must pass iterator to #each'); } var fn = options.fn, inverse = options.inverse, i = 0, ret = '', data = undefined, contextPath = undefined; if (options.data && options.ids) { contextPath = utils$2.appendContextPath(options.data.contextPath, options.ids[0]) + '.'; } if (utils$2.isFunction(context)) { context = context.call(this); } if (options.data) { data = utils$2.createFrame(options.data); } function execIteration(field, index, last) { if (data) { data.key = field; data.index = index; data.first = index === 0; data.last = !!last; if (contextPath) { data.contextPath = contextPath + field; } } ret = ret + fn(context[field], { data: data, blockParams: utils$2.blockParams([context[field], field], [contextPath + field, null]) }); } if (context && typeof context === 'object') { if (utils$2.isArray(context)) { for (var j = context.length; i < j; i++) { if (i in context) { execIteration(i, i, i === context.length - 1); } } } else if (commonjsGlobal.Symbol && context[commonjsGlobal.Symbol.iterator]) { var newContext = []; var iterator = context[commonjsGlobal.Symbol.iterator](); for (var it = iterator.next(); !it.done; it = iterator.next()) { newContext.push(it.value); } context = newContext; for (var j = context.length; i < j; i++) { execIteration(i, i, i === context.length - 1); } } else { (function () { var priorKey = undefined; Object.keys(context).forEach(function (key) { // We're running the iterations one step out of sync so we can detect // the last iteration without have to scan the object twice and create // an itermediate keys array. if (priorKey !== undefined) { execIteration(priorKey, i - 1); } priorKey = key; i++; }); if (priorKey !== undefined) { execIteration(priorKey, i - 1, true); } })(); } } if (i === 0) { ret = inverse(this); } return ret; }); }; module.exports = exports['default']; }); var helperMissing = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); exports['default'] = function (instance) { instance.registerHelper('helperMissing', function () /* [args, ]options */{ if (arguments.length === 1) { // A missing field in a {{foo}} construct. return undefined; } else { // Someone is actually trying to call something, blow up. throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"'); } }); }; module.exports = exports['default']; }); var _if = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); exports['default'] = function (instance) { instance.registerHelper('if', function (conditional, options) { if (arguments.length != 2) { throw new _exception2['default']('#if requires exactly one argument'); } if (utils$2.isFunction(conditional)) { conditional = conditional.call(this); } // Default behavior is to render the positive path if the value is truthy and not empty. // The `includeZero` option may be set to treat the condtional as purely not empty based on the // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative. if (!options.hash.includeZero && !conditional || utils$2.isEmpty(conditional)) { return options.inverse(this); } else { return options.fn(this); } }); instance.registerHelper('unless', function (conditional, options) { if (arguments.length != 2) { throw new _exception2['default']('#unless requires exactly one argument'); } return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash }); }); }; module.exports = exports['default']; }); var log = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports['default'] = function (instance) { instance.registerHelper('log', function () /* message, options */{ var args = [undefined], options = arguments[arguments.length - 1]; for (var i = 0; i < arguments.length - 1; i++) { args.push(arguments[i]); } var level = 1; if (options.hash.level != null) { level = options.hash.level; } else if (options.data && options.data.level != null) { level = options.data.level; } args[0] = level; instance.log.apply(instance, args); }); }; module.exports = exports['default']; }); var lookup = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports['default'] = function (instance) { instance.registerHelper('lookup', function (obj, field, options) { if (!obj) { // Note for 5.0: Change to "obj == null" in 5.0 return obj; } return options.lookupProperty(obj, field); }); }; module.exports = exports['default']; }); var _with = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); exports['default'] = function (instance) { instance.registerHelper('with', function (context, options) { if (arguments.length != 2) { throw new _exception2['default']('#with requires exactly one argument'); } if (utils$2.isFunction(context)) { context = context.call(this); } var fn = options.fn; if (!utils$2.isEmpty(context)) { var data = options.data; if (options.data && options.ids) { data = utils$2.createFrame(options.data); data.contextPath = utils$2.appendContextPath(options.data.contextPath, options.ids[0]); } return fn(context, { data: data, blockParams: utils$2.blockParams([context], [data && data.contextPath]) }); } else { return options.inverse(this); } }); }; module.exports = exports['default']; }); var helpers = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.registerDefaultHelpers = registerDefaultHelpers; exports.moveHelperToHooks = moveHelperToHooks; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _helpersBlockHelperMissing2 = _interopRequireDefault(blockHelperMissing); var _helpersEach2 = _interopRequireDefault(each); var _helpersHelperMissing2 = _interopRequireDefault(helperMissing); var _helpersIf2 = _interopRequireDefault(_if); var _helpersLog2 = _interopRequireDefault(log); var _helpersLookup2 = _interopRequireDefault(lookup); var _helpersWith2 = _interopRequireDefault(_with); function registerDefaultHelpers(instance) { _helpersBlockHelperMissing2['default'](instance); _helpersEach2['default'](instance); _helpersHelperMissing2['default'](instance); _helpersIf2['default'](instance); _helpersLog2['default'](instance); _helpersLookup2['default'](instance); _helpersWith2['default'](instance); } function moveHelperToHooks(instance, helperName, keepHelper) { if (instance.helpers[helperName]) { instance.hooks[helperName] = instance.helpers[helperName]; if (!keepHelper) { delete instance.helpers[helperName]; } } } }); var inline = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports['default'] = function (instance) { instance.registerDecorator('inline', function (fn, props, container, options) { var ret = fn; if (!props.partials) { props.partials = {}; ret = function (context, options) { // Create a new partials stack frame prior to exec. var original = container.partials; container.partials = utils$2.extend({}, original, props.partials); var ret = fn(context, options); container.partials = original; return ret; }; } props.partials[options.args[0]] = options.fn; return ret; }); }; module.exports = exports['default']; }); var decorators = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.registerDefaultDecorators = registerDefaultDecorators; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _decoratorsInline2 = _interopRequireDefault(inline); function registerDefaultDecorators(instance) { _decoratorsInline2['default'](instance); } }); var logger_1 = createCommonjsModule(function (module, exports) { exports.__esModule = true; var logger = { methodMap: ['debug', 'info', 'warn', 'error'], level: 'info', // Maps a given level value to the `methodMap` indexes above. lookupLevel: function lookupLevel(level) { if (typeof level === 'string') { var levelMap = utils$2.indexOf(logger.methodMap, level.toLowerCase()); if (levelMap >= 0) { level = levelMap; } else { level = parseInt(level, 10); } } return level; }, // Can be overridden in the host environment log: function log(level) { level = logger.lookupLevel(level); if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) { var method = logger.methodMap[level]; // eslint-disable-next-line no-console if (!console[method]) { method = 'log'; } for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { message[_key - 1] = arguments[_key]; } console[method].apply(console, message); // eslint-disable-line no-console } } }; exports['default'] = logger; module.exports = exports['default']; }); var createNewLookupObject_1 = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.createNewLookupObject = createNewLookupObject; /** * Create a new object with "null"-prototype to avoid truthy results on prototype properties. * The resulting object can be used with "object[property]" to check if a property exists * @param {...object} sources a varargs parameter of source objects that will be merged * @returns {object} */ function createNewLookupObject() { for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) { sources[_key] = arguments[_key]; } return utils$2.extend.apply(undefined, [Object.create(null)].concat(sources)); } }); var protoAccess = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.createProtoAccessControl = createProtoAccessControl; exports.resultIsAllowed = resultIsAllowed; exports.resetLoggedProperties = resetLoggedProperties; // istanbul ignore next function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } var logger = _interopRequireWildcard(logger_1); var loggedProperties = Object.create(null); function createProtoAccessControl(runtimeOptions) { var defaultMethodWhiteList = Object.create(null); defaultMethodWhiteList['constructor'] = false; defaultMethodWhiteList['__defineGetter__'] = false; defaultMethodWhiteList['__defineSetter__'] = false; defaultMethodWhiteList['__lookupGetter__'] = false; var defaultPropertyWhiteList = Object.create(null); // eslint-disable-next-line no-proto defaultPropertyWhiteList['__proto__'] = false; return { properties: { whitelist: createNewLookupObject_1.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties), defaultValue: runtimeOptions.allowProtoPropertiesByDefault }, methods: { whitelist: createNewLookupObject_1.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods), defaultValue: runtimeOptions.allowProtoMethodsByDefault } }; } function resultIsAllowed(result, protoAccessControl, propertyName) { if (typeof result === 'function') { return checkWhiteList(protoAccessControl.methods, propertyName); } else { return checkWhiteList(protoAccessControl.properties, propertyName); } } function checkWhiteList(protoAccessControlForType, propertyName) { if (protoAccessControlForType.whitelist[propertyName] !== undefined) { return protoAccessControlForType.whitelist[propertyName] === true; } if (protoAccessControlForType.defaultValue !== undefined) { return protoAccessControlForType.defaultValue; } logUnexpecedPropertyAccessOnce(propertyName); return false; } function logUnexpecedPropertyAccessOnce(propertyName) { if (loggedProperties[propertyName] !== true) { loggedProperties[propertyName] = true; logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'); } } function resetLoggedProperties() { Object.keys(loggedProperties).forEach(function (propertyName) { delete loggedProperties[propertyName]; }); } }); var base = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.HandlebarsEnvironment = HandlebarsEnvironment; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); var _logger2 = _interopRequireDefault(logger_1); var VERSION = '4.7.6'; exports.VERSION = VERSION; var COMPILER_REVISION = 8; exports.COMPILER_REVISION = COMPILER_REVISION; var LAST_COMPATIBLE_COMPILER_REVISION = 7; exports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION; var REVISION_CHANGES = { 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it 2: '== 1.0.0-rc.3', 3: '== 1.0.0-rc.4', 4: '== 1.x.x', 5: '== 2.0.0-alpha.x', 6: '>= 2.0.0-beta.1', 7: '>= 4.0.0 <4.3.0', 8: '>= 4.3.0' }; exports.REVISION_CHANGES = REVISION_CHANGES; var objectType = '[object Object]'; function HandlebarsEnvironment(helpers$1, partials, decorators$1) { this.helpers = helpers$1 || {}; this.partials = partials || {}; this.decorators = decorators$1 || {}; helpers.registerDefaultHelpers(this); decorators.registerDefaultDecorators(this); } HandlebarsEnvironment.prototype = { constructor: HandlebarsEnvironment, logger: _logger2['default'], log: _logger2['default'].log, registerHelper: function registerHelper(name, fn) { if (utils$2.toString.call(name) === objectType) { if (fn) { throw new _exception2['default']('Arg not supported with multiple helpers'); } utils$2.extend(this.helpers, name); } else { this.helpers[name] = fn; } }, unregisterHelper: function unregisterHelper(name) { delete this.helpers[name]; }, registerPartial: function registerPartial(name, partial) { if (utils$2.toString.call(name) === objectType) { utils$2.extend(this.partials, name); } else { if (typeof partial === 'undefined') { throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined'); } this.partials[name] = partial; } }, unregisterPartial: function unregisterPartial(name) { delete this.partials[name]; }, registerDecorator: function registerDecorator(name, fn) { if (utils$2.toString.call(name) === objectType) { if (fn) { throw new _exception2['default']('Arg not supported with multiple decorators'); } utils$2.extend(this.decorators, name); } else { this.decorators[name] = fn; } }, unregisterDecorator: function unregisterDecorator(name) { delete this.decorators[name]; }, /** * Reset the memory of illegal property accesses that have already been logged. * @deprecated should only be used in handlebars test-cases */ resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() { protoAccess.resetLoggedProperties(); } }; var log = _logger2['default'].log; exports.log = log; exports.createFrame = utils$2.createFrame; exports.logger = _logger2['default']; }); var safeString = createCommonjsModule(function (module, exports) { exports.__esModule = true; function SafeString(string) { this.string = string; } SafeString.prototype.toString = SafeString.prototype.toHTML = function () { return '' + this.string; }; exports['default'] = SafeString; module.exports = exports['default']; }); var wrapHelper_1 = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.wrapHelper = wrapHelper; function wrapHelper(helper, transformOptionsFn) { if (typeof helper !== 'function') { // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639 // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function. return helper; } var wrapper = function wrapper() /* dynamic arguments */{ var options = arguments[arguments.length - 1]; arguments[arguments.length - 1] = transformOptionsFn(options); return helper.apply(this, arguments); }; return wrapper; } }); var runtime = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.checkRevision = checkRevision; exports.template = template; exports.wrapProgram = wrapProgram; exports.resolvePartial = resolvePartial; exports.invokePartial = invokePartial; exports.noop = noop; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // istanbul ignore next function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } var Utils = _interopRequireWildcard(utils$2); var _exception2 = _interopRequireDefault(exception); function checkRevision(compilerInfo) { var compilerRevision = compilerInfo && compilerInfo[0] || 1, currentRevision = base.COMPILER_REVISION; if (compilerRevision >= base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= base.COMPILER_REVISION) { return; } if (compilerRevision < base.LAST_COMPATIBLE_COMPILER_REVISION) { var runtimeVersions = base.REVISION_CHANGES[currentRevision], compilerVersions = base.REVISION_CHANGES[compilerRevision]; throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').'); } else { // Use the embedded version info since the runtime doesn't know about this revision yet throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').'); } } function template(templateSpec, env) { /* istanbul ignore next */ if (!env) { throw new _exception2['default']('No environment passed to template'); } if (!templateSpec || !templateSpec.main) { throw new _exception2['default']('Unknown template object: ' + typeof templateSpec); } templateSpec.main.decorator = templateSpec.main_d; // Note: Using env.VM references rather than local var references throughout this section to allow // for external users to override these as pseudo-supported APIs. env.VM.checkRevision(templateSpec.compiler); // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0) var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7; function invokePartialWrapper(partial, context, options) { if (options.hash) { context = Utils.extend({}, context, options.hash); if (options.ids) { options.ids[0] = true; } } partial = env.VM.resolvePartial.call(this, partial, context, options); var extendedOptions = Utils.extend({}, options, { hooks: this.hooks, protoAccessControl: this.protoAccessControl }); var result = env.VM.invokePartial.call(this, partial, context, extendedOptions); if (result == null && env.compile) { options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); result = options.partials[options.name](context, extendedOptions); } if (result != null) { if (options.indent) { var lines = result.split('\n'); for (var i = 0, l = lines.length; i < l; i++) { if (!lines[i] && i + 1 === l) { break; } lines[i] = options.indent + lines[i]; } result = lines.join('\n'); } return result; } else { throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode'); } } // Just add water var container = { strict: function strict(obj, name, loc) { if (!obj || !(name in obj)) { throw new _exception2['default']('"' + name + '" not defined in ' + obj, { loc: loc }); } return obj[name]; }, lookupProperty: function lookupProperty(parent, propertyName) { var result = parent[propertyName]; if (result == null) { return result; } if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { return result; } if (protoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) { return result; } return undefined; }, lookup: function lookup(depths, name) { var len = depths.length; for (var i = 0; i < len; i++) { var result = depths[i] && container.lookupProperty(depths[i], name); if (result != null) { return depths[i][name]; } } }, lambda: function lambda(current, context) { return typeof current === 'function' ? current.call(context) : current; }, escapeExpression: Utils.escapeExpression, invokePartial: invokePartialWrapper, fn: function fn(i) { var ret = templateSpec[i]; ret.decorator = templateSpec[i + '_d']; return ret; }, programs: [], program: function program(i, data, declaredBlockParams, blockParams, depths) { var programWrapper = this.programs[i], fn = this.fn(i); if (data || depths || blockParams || declaredBlockParams) { programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); } else if (!programWrapper) { programWrapper = this.programs[i] = wrapProgram(this, i, fn); } return programWrapper; }, data: function data(value, depth) { while (value && depth--) { value = value._parent; } return value; }, mergeIfNeeded: function mergeIfNeeded(param, common) { var obj = param || common; if (param && common && param !== common) { obj = Utils.extend({}, common, param); } return obj; }, // An empty object to use as replacement for null-contexts nullContext: Object.seal({}), noop: env.VM.noop, compilerInfo: templateSpec.compiler }; function ret(context) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var data = options.data; ret._setup(options); if (!options.partial && templateSpec.useData) { data = initData(context, data); } var depths = undefined, blockParams = templateSpec.useBlockParams ? [] : undefined; if (templateSpec.useDepths) { if (options.depths) { depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths; } else { depths = [context]; } } function main(context /*, options*/) { return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths); } main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams); return main(context, options); } ret.isTop = true; ret._setup = function (options) { if (!options.partial) { var mergedHelpers = Utils.extend({}, env.helpers, options.helpers); wrapHelpersToPassLookupProperty(mergedHelpers, container); container.helpers = mergedHelpers; if (templateSpec.usePartial) { // Use mergeIfNeeded here to prevent compiling global partials multiple times container.partials = container.mergeIfNeeded(options.partials, env.partials); } if (templateSpec.usePartial || templateSpec.useDecorators) { container.decorators = Utils.extend({}, env.decorators, options.decorators); } container.hooks = {}; container.protoAccessControl = protoAccess.createProtoAccessControl(options); var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7; helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers); helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers); } else { container.protoAccessControl = options.protoAccessControl; // internal option container.helpers = options.helpers; container.partials = options.partials; container.decorators = options.decorators; container.hooks = options.hooks; } }; ret._child = function (i, data, blockParams, depths) { if (templateSpec.useBlockParams && !blockParams) { throw new _exception2['default']('must pass block params'); } if (templateSpec.useDepths && !depths) { throw new _exception2['default']('must pass parent depths'); } return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); }; return ret; } function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { function prog(context) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var currentDepths = depths; if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) { currentDepths = [context].concat(depths); } return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths); } prog = executeDecorators(fn, prog, container, depths, data, blockParams); prog.program = i; prog.depth = depths ? depths.length : 0; prog.blockParams = declaredBlockParams || 0; return prog; } /** * This is currently part of the official API, therefore implementation details should not be changed. */ function resolvePartial(partial, context, options) { if (!partial) { if (options.name === '@partial-block') { partial = options.data['partial-block']; } else { partial = options.partials[options.name]; } } else if (!partial.call && !options.name) { // This is a dynamic partial that returned a string options.name = partial; partial = options.partials[partial]; } return partial; } function invokePartial(partial, context, options) { // Use the current closure context to save the partial-block if this partial var currentPartialBlock = options.data && options.data['partial-block']; options.partial = true; if (options.ids) { options.data.contextPath = options.ids[0] || options.data.contextPath; } var partialBlock = undefined; if (options.fn && options.fn !== noop) { (function () { options.data = base.createFrame(options.data); // Wrapper function to get access to currentPartialBlock from the closure var fn = options.fn; partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) { var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; // Restore the partial-block from the closure for the execution of the block // i.e. the part inside the block of the partial call. options.data = base.createFrame(options.data); options.data['partial-block'] = currentPartialBlock; return fn(context, options); }; if (fn.partials) { options.partials = Utils.extend({}, options.partials, fn.partials); } })(); } if (partial === undefined && partialBlock) { partial = partialBlock; } if (partial === undefined) { throw new _exception2['default']('The partial ' + options.name + ' could not be found'); } else if (partial instanceof Function) { return partial(context, options); } } function noop() { return ''; } function initData(context, data) { if (!data || !('root' in data)) { data = data ? base.createFrame(data) : {}; data.root = context; } return data; } function executeDecorators(fn, prog, container, depths, data, blockParams) { if (fn.decorator) { var props = {}; prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths); Utils.extend(prog, props); } return prog; } function wrapHelpersToPassLookupProperty(mergedHelpers, container) { Object.keys(mergedHelpers).forEach(function (helperName) { var helper = mergedHelpers[helperName]; mergedHelpers[helperName] = passLookupPropertyOption(helper, container); }); } function passLookupPropertyOption(helper, container) { var lookupProperty = container.lookupProperty; return wrapHelper_1.wrapHelper(helper, function (options) { return Utils.extend({ lookupProperty: lookupProperty }, options); }); } }); var noConflict = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports['default'] = function (Handlebars) { /* istanbul ignore next */ var root = typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : window, $Handlebars = root.Handlebars; /* istanbul ignore next */ Handlebars.noConflict = function () { if (root.Handlebars === Handlebars) { root.Handlebars = $Handlebars; } return Handlebars; }; }; module.exports = exports['default']; }); var handlebars_runtime = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // istanbul ignore next function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } var base$1 = _interopRequireWildcard(base); // Each of these augment the Handlebars object. No need to setup here. // (This is done to easily share code between commonjs and browse envs) var _handlebarsSafeString2 = _interopRequireDefault(safeString); var _handlebarsException2 = _interopRequireDefault(exception); var Utils = _interopRequireWildcard(utils$2); var runtime$1 = _interopRequireWildcard(runtime); var _handlebarsNoConflict2 = _interopRequireDefault(noConflict); // For compatibility and usage outside of module systems, make the Handlebars object a namespace function create() { var hb = new base$1.HandlebarsEnvironment(); Utils.extend(hb, base$1); hb.SafeString = _handlebarsSafeString2['default']; hb.Exception = _handlebarsException2['default']; hb.Utils = Utils; hb.escapeExpression = Utils.escapeExpression; hb.VM = runtime$1; hb.template = function (spec) { return runtime$1.template(spec, hb); }; return hb; } var inst = create(); inst.create = create; _handlebarsNoConflict2['default'](inst); inst['default'] = inst; exports['default'] = inst; module.exports = exports['default']; }); var ast = createCommonjsModule(function (module, exports) { exports.__esModule = true; var AST = { // Public API used to evaluate derived attributes regarding AST nodes helpers: { // a mustache is definitely a helper if: // * it is an eligible helper, and // * it has at least one parameter or hash segment helperExpression: function helperExpression(node) { return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash); }, scopedId: function scopedId(path) { return (/^\.|this\b/.test(path.original) ); }, // an ID is simple if it only has one part, and that part is not // `..` or `this`. simpleId: function simpleId(path) { return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth; } } }; // Must be exported as an object rather than the root of the module as the jison lexer // must modify the object to operate properly. exports['default'] = AST; module.exports = exports['default']; }); var parser = createCommonjsModule(function (module, exports) { exports.__esModule = true; var handlebars = (function () { var parser = { trace: function trace() {}, yy: {}, symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 }, terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" }, productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { var $0 = $$.length - 1; switch (yystate) { case 1: return $$[$0 - 1]; case 2: this.$ = yy.prepareProgram($$[$0]); break; case 3: this.$ = $$[$0]; break; case 4: this.$ = $$[$0]; break; case 5: this.$ = $$[$0]; break; case 6: this.$ = $$[$0]; break; case 7: this.$ = $$[$0]; break; case 8: this.$ = $$[$0]; break; case 9: this.$ = { type: 'CommentStatement', value: yy.stripComment($$[$0]), strip: yy.stripFlags($$[$0], $$[$0]), loc: yy.locInfo(this._$) }; break; case 10: this.$ = { type: 'ContentStatement', original: $$[$0], value: $$[$0], loc: yy.locInfo(this._$) }; break; case 11: this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); break; case 12: this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] }; break; case 13: this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$); break; case 14: this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$); break; case 15: this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; break; case 16: this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; break; case 17: this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; break; case 18: this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] }; break; case 19: var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$), program = yy.prepareProgram([inverse], $$[$0 - 1].loc); program.chained = true; this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true }; break; case 20: this.$ = $$[$0]; break; case 21: this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) }; break; case 22: this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); break; case 23: this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); break; case 24: this.$ = { type: 'PartialStatement', name: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], indent: '', strip: yy.stripFlags($$[$0 - 4], $$[$0]), loc: yy.locInfo(this._$) }; break; case 25: this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); break; case 26: this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) }; break; case 27: this.$ = $$[$0]; break; case 28: this.$ = $$[$0]; break; case 29: this.$ = { type: 'SubExpression', path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], loc: yy.locInfo(this._$) }; break; case 30: this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) }; break; case 31: this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) }; break; case 32: this.$ = yy.id($$[$0 - 1]); break; case 33: this.$ = $$[$0]; break; case 34: this.$ = $$[$0]; break; case 35: this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) }; break; case 36: this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) }; break; case 37: this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) }; break; case 38: this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) }; break; case 39: this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) }; break; case 40: this.$ = $$[$0]; break; case 41: this.$ = $$[$0]; break; case 42: this.$ = yy.preparePath(true, $$[$0], this._$); break; case 43: this.$ = yy.preparePath(false, $$[$0], this._$); break; case 44: $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });this.$ = $$[$0 - 2]; break; case 45: this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }]; break; case 46: this.$ = []; break; case 47: $$[$0 - 1].push($$[$0]); break; case 48: this.$ = []; break; case 49: $$[$0 - 1].push($$[$0]); break; case 50: this.$ = []; break; case 51: $$[$0 - 1].push($$[$0]); break; case 58: this.$ = []; break; case 59: $$[$0 - 1].push($$[$0]); break; case 64: this.$ = []; break; case 65: $$[$0 - 1].push($$[$0]); break; case 70: this.$ = []; break; case 71: $$[$0 - 1].push($$[$0]); break; case 78: this.$ = []; break; case 79: $$[$0 - 1].push($$[$0]); break; case 82: this.$ = []; break; case 83: $$[$0 - 1].push($$[$0]); break; case 86: this.$ = []; break; case 87: $$[$0 - 1].push($$[$0]); break; case 90: this.$ = []; break; case 91: $$[$0 - 1].push($$[$0]); break; case 94: this.$ = []; break; case 95: $$[$0 - 1].push($$[$0]); break; case 98: this.$ = [$$[$0]]; break; case 99: $$[$0 - 1].push($$[$0]); break; case 100: this.$ = [$$[$0]]; break; case 101: $$[$0 - 1].push($$[$0]); break; } }, table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 15: [2, 48], 17: 39, 18: [2, 48] }, { 20: 41, 56: 40, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 44, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 45, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 41, 56: 48, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 49, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 50] }, { 72: [1, 35], 86: 51 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 52, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 53, 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 54, 47: [2, 54] }, { 28: 59, 43: 60, 44: [1, 58], 47: [2, 56] }, { 13: 62, 15: [1, 20], 18: [1, 61] }, { 33: [2, 86], 57: 63, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 64, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 65, 47: [1, 66] }, { 30: 67, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 68, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 69, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 70, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 74, 33: [2, 80], 50: 71, 63: 72, 64: 75, 65: [1, 43], 69: 73, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 79] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 50] }, { 20: 74, 53: 80, 54: [2, 84], 63: 81, 64: 75, 65: [1, 43], 69: 82, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 83, 47: [1, 66] }, { 47: [2, 55] }, { 4: 84, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 85, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 86, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 87, 47: [1, 66] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 74, 33: [2, 88], 58: 88, 63: 89, 64: 75, 65: [1, 43], 69: 90, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 91, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 92, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 31: 93, 33: [2, 60], 63: 94, 64: 75, 65: [1, 43], 69: 95, 70: 76, 71: 77, 72: [1, 78], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 66], 36: 96, 63: 97, 64: 75, 65: [1, 43], 69: 98, 70: 76, 71: 77, 72: [1, 78], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 22: 99, 23: [2, 52], 63: 100, 64: 75, 65: [1, 43], 69: 101, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 92], 62: 102, 63: 103, 64: 75, 65: [1, 43], 69: 104, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 105] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 106, 72: [1, 107], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 108], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 109] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 111, 46: 110, 47: [2, 76] }, { 33: [2, 70], 40: 112, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 113] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 74, 63: 115, 64: 75, 65: [1, 43], 67: 114, 68: [2, 96], 69: 116, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 117] }, { 32: 118, 33: [2, 62], 74: 119, 75: [1, 120] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 121, 74: 122, 75: [1, 120] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 123] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 124] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 108] }, { 20: 74, 63: 125, 64: 75, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 74, 33: [2, 72], 41: 126, 63: 127, 64: 75, 65: [1, 43], 69: 128, 70: 76, 71: 77, 72: [1, 78], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 129] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 130] }, { 33: [2, 63] }, { 72: [1, 132], 76: 131 }, { 33: [1, 133] }, { 33: [2, 69] }, { 15: [2, 12], 18: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 134, 74: 135, 75: [1, 120] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 137], 77: [1, 136] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 138] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }], defaultActions: { 4: [2, 1], 54: [2, 55], 56: [2, 20], 60: [2, 57], 73: [2, 81], 82: [2, 85], 86: [2, 18], 90: [2, 89], 101: [2, 53], 104: [2, 93], 110: [2, 19], 111: [2, 77], 116: [2, 97], 119: [2, 63], 122: [2, 69], 135: [2, 75], 136: [2, 32] }, parseError: function parseError(str, hash) { throw new Error(str); }, parse: function parse(input) { var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0; this.lexer.setInput(input); this.lexer.yy = this.yy; this.yy.lexer = this.lexer; this.yy.parser = this; if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {}; var yyloc = this.lexer.yylloc; lstack.push(yyloc); var ranges = this.lexer.options && this.lexer.options.ranges; if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError; function lex() { var token; token = self.lexer.lex() || 1; if (typeof token !== "number") { token = self.symbols_[token] || token; } return token; } var symbol, state, action, r, yyval = {}, p, len, newState, expected; while (true) { state = stack[stack.length - 1]; if (this.defaultActions[state]) { action = this.defaultActions[state]; } else { if (symbol === null || typeof symbol == "undefined") { symbol = lex(); } action = table[state] && table[state][symbol]; } if (typeof action === "undefined" || !action.length || !action[0]) { var errStr = ""; if (!recovering) { expected = []; for (p in table[state]) if (this.terminals_[p] && p > 2) { expected.push("'" + this.terminals_[p] + "'"); } if (this.lexer.showPosition) { errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; } else { errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); } this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected }); } } if (action[0] instanceof Array && action.length > 1) { throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol); } switch (action[0]) { case 1: stack.push(symbol); vstack.push(this.lexer.yytext); lstack.push(this.lexer.yylloc); stack.push(action[1]); symbol = null; { yyleng = this.lexer.yyleng; yytext = this.lexer.yytext; yylineno = this.lexer.yylineno; yyloc = this.lexer.yylloc; if (recovering > 0) recovering--; } break; case 2: len = this.productions_[action[1]][1]; yyval.$ = vstack[vstack.length - len]; yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column }; if (ranges) { yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]]; } r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); if (typeof r !== "undefined") { return r; } if (len) { stack = stack.slice(0, -1 * len * 2); vstack = vstack.slice(0, -1 * len); lstack = lstack.slice(0, -1 * len); } stack.push(this.productions_[action[1]][0]); vstack.push(yyval.$); lstack.push(yyval._$); newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; stack.push(newState); break; case 3: return true; } } return true; } }; /* Jison generated lexer */ var lexer = (function () { var lexer = { EOF: 1, parseError: function parseError(str, hash) { if (this.yy.parser) { this.yy.parser.parseError(str, hash); } else { throw new Error(str); } }, setInput: function setInput(input) { this._input = input; this._more = this._less = this.done = false; this.yylineno = this.yyleng = 0; this.yytext = this.matched = this.match = ''; this.conditionStack = ['INITIAL']; this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }; if (this.options.ranges) this.yylloc.range = [0, 0]; this.offset = 0; return this; }, input: function input() { var ch = this._input[0]; this.yytext += ch; this.yyleng++; this.offset++; this.match += ch; this.matched += ch; var lines = ch.match(/(?:\r\n?|\n).*/g); if (lines) { this.yylineno++; this.yylloc.last_line++; } else { this.yylloc.last_column++; } if (this.options.ranges) this.yylloc.range[1]++; this._input = this._input.slice(1); return ch; }, unput: function unput(ch) { var len = ch.length; var lines = ch.split(/(?:\r\n?|\n)/g); this._input = ch + this._input; this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); //this.yyleng -= len; this.offset -= len; var oldLines = this.match.split(/(?:\r\n?|\n)/g); this.match = this.match.substr(0, this.match.length - 1); this.matched = this.matched.substr(0, this.matched.length - 1); if (lines.length - 1) this.yylineno -= lines.length - 1; var r = this.yylloc.range; this.yylloc = { first_line: this.yylloc.first_line, last_line: this.yylineno + 1, first_column: this.yylloc.first_column, last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len }; if (this.options.ranges) { this.yylloc.range = [r[0], r[0] + this.yyleng - len]; } return this; }, more: function more() { this._more = true; return this; }, less: function less(n) { this.unput(this.match.slice(n)); }, pastInput: function pastInput() { var past = this.matched.substr(0, this.matched.length - this.match.length); return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, ""); }, upcomingInput: function upcomingInput() { var next = this.match; if (next.length < 20) { next += this._input.substr(0, 20 - next.length); } return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); }, showPosition: function showPosition() { var pre = this.pastInput(); var c = new Array(pre.length + 1).join("-"); return pre + this.upcomingInput() + "\n" + c + "^"; }, next: function next() { if (this.done) { return this.EOF; } if (!this._input) this.done = true; var token, match, tempMatch, index, lines; if (!this._more) { this.yytext = ''; this.match = ''; } var rules = this._currentRules(); for (var i = 0; i < rules.length; i++) { tempMatch = this._input.match(this.rules[rules[i]]); if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { match = tempMatch; index = i; if (!this.options.flex) break; } } if (match) { lines = match[0].match(/(?:\r\n?|\n).*/g); if (lines) this.yylineno += lines.length; this.yylloc = { first_line: this.yylloc.last_line, last_line: this.yylineno + 1, first_column: this.yylloc.last_column, last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length }; this.yytext += match[0]; this.match += match[0]; this.matches = match; this.yyleng = this.yytext.length; if (this.options.ranges) { this.yylloc.range = [this.offset, this.offset += this.yyleng]; } this._more = false; this._input = this._input.slice(match[0].length); this.matched += match[0]; token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]); if (this.done && this._input) this.done = false; if (token) return token;else return; } if (this._input === "") { return this.EOF; } else { return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { text: "", token: null, line: this.yylineno }); } }, lex: function lex() { var r = this.next(); if (typeof r !== 'undefined') { return r; } else { return this.lex(); } }, begin: function begin(condition) { this.conditionStack.push(condition); }, popState: function popState() { return this.conditionStack.pop(); }, _currentRules: function _currentRules() { return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; }, topState: function topState() { return this.conditionStack[this.conditionStack.length - 2]; }, pushState: function begin(condition) { this.begin(condition); } }; lexer.options = {}; lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { function strip(start, end) { return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start); } switch ($avoiding_name_collisions) { case 0: if (yy_.yytext.slice(-2) === "\\\\") { strip(0, 1); this.begin("mu"); } else if (yy_.yytext.slice(-1) === "\\") { strip(0, 1); this.begin("emu"); } else { this.begin("mu"); } if (yy_.yytext) return 15; break; case 1: return 15; case 2: this.popState(); return 15; case 3: this.begin('raw');return 15; case 4: this.popState(); // Should be using `this.topState()` below, but it currently // returns the second top instead of the first top. Opened an // issue about it at https://github.com/zaach/jison/issues/291 if (this.conditionStack[this.conditionStack.length - 1] === 'raw') { return 15; } else { strip(5, 9); return 'END_RAW_BLOCK'; } case 5: return 15; case 6: this.popState(); return 14; case 7: return 65; case 8: return 68; case 9: return 19; case 10: this.popState(); this.begin('raw'); return 23; case 11: return 55; case 12: return 60; case 13: return 29; case 14: return 47; case 15: this.popState();return 44; case 16: this.popState();return 44; case 17: return 34; case 18: return 39; case 19: return 51; case 20: return 48; case 21: this.unput(yy_.yytext); this.popState(); this.begin('com'); break; case 22: this.popState(); return 14; case 23: return 48; case 24: return 73; case 25: return 72; case 26: return 72; case 27: return 87; case 28: // ignore whitespace break; case 29: this.popState();return 54; case 30: this.popState();return 33; case 31: yy_.yytext = strip(1, 2).replace(/\\"/g, '"');return 80; case 32: yy_.yytext = strip(1, 2).replace(/\\'/g, "'");return 80; case 33: return 85; case 34: return 82; case 35: return 82; case 36: return 83; case 37: return 84; case 38: return 81; case 39: return 75; case 40: return 77; case 41: return 72; case 42: yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, '$1');return 72; case 43: return 'INVALID'; case 44: return 5; } }; lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^\/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/]; lexer.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } }; return lexer; })(); parser.lexer = lexer; function Parser() { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser; return new Parser(); })();exports["default"] = handlebars; module.exports = exports["default"]; }); var visitor = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); function Visitor() { this.parents = []; } Visitor.prototype = { constructor: Visitor, mutating: false, // Visits a given value. If mutating, will replace the value if necessary. acceptKey: function acceptKey(node, name) { var value = this.accept(node[name]); if (this.mutating) { // Hacky sanity check: This may have a few false positives for type for the helper // methods but will generally do the right thing without a lot of overhead. if (value && !Visitor.prototype[value.type]) { throw new _exception2['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type); } node[name] = value; } }, // Performs an accept operation with added sanity check to ensure // required keys are not removed. acceptRequired: function acceptRequired(node, name) { this.acceptKey(node, name); if (!node[name]) { throw new _exception2['default'](node.type + ' requires ' + name); } }, // Traverses a given array. If mutating, empty respnses will be removed // for child elements. acceptArray: function acceptArray(array) { for (var i = 0, l = array.length; i < l; i++) { this.acceptKey(array, i); if (!array[i]) { array.splice(i, 1); i--; l--; } } }, accept: function accept(object) { if (!object) { return; } /* istanbul ignore next: Sanity code */ if (!this[object.type]) { throw new _exception2['default']('Unknown type: ' + object.type, object); } if (this.current) { this.parents.unshift(this.current); } this.current = object; var ret = this[object.type](object); this.current = this.parents.shift(); if (!this.mutating || ret) { return ret; } else if (ret !== false) { return object; } }, Program: function Program(program) { this.acceptArray(program.body); }, MustacheStatement: visitSubExpression, Decorator: visitSubExpression, BlockStatement: visitBlock, DecoratorBlock: visitBlock, PartialStatement: visitPartial, PartialBlockStatement: function PartialBlockStatement(partial) { visitPartial.call(this, partial); this.acceptKey(partial, 'program'); }, ContentStatement: function ContentStatement() /* content */{}, CommentStatement: function CommentStatement() /* comment */{}, SubExpression: visitSubExpression, PathExpression: function PathExpression() /* path */{}, StringLiteral: function StringLiteral() /* string */{}, NumberLiteral: function NumberLiteral() /* number */{}, BooleanLiteral: function BooleanLiteral() /* bool */{}, UndefinedLiteral: function UndefinedLiteral() /* literal */{}, NullLiteral: function NullLiteral() /* literal */{}, Hash: function Hash(hash) { this.acceptArray(hash.pairs); }, HashPair: function HashPair(pair) { this.acceptRequired(pair, 'value'); } }; function visitSubExpression(mustache) { this.acceptRequired(mustache, 'path'); this.acceptArray(mustache.params); this.acceptKey(mustache, 'hash'); } function visitBlock(block) { visitSubExpression.call(this, block); this.acceptKey(block, 'program'); this.acceptKey(block, 'inverse'); } function visitPartial(partial) { this.acceptRequired(partial, 'name'); this.acceptArray(partial.params); this.acceptKey(partial, 'hash'); } exports['default'] = Visitor; module.exports = exports['default']; }); var whitespaceControl = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _visitor2 = _interopRequireDefault(visitor); function WhitespaceControl() { var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; this.options = options; } WhitespaceControl.prototype = new _visitor2['default'](); WhitespaceControl.prototype.Program = function (program) { var doStandalone = !this.options.ignoreStandalone; var isRoot = !this.isRootSeen; this.isRootSeen = true; var body = program.body; for (var i = 0, l = body.length; i < l; i++) { var current = body[i], strip = this.accept(current); if (!strip) { continue; } var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot), _isNextWhitespace = isNextWhitespace(body, i, isRoot), openStandalone = strip.openStandalone && _isPrevWhitespace, closeStandalone = strip.closeStandalone && _isNextWhitespace, inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace; if (strip.close) { omitRight(body, i, true); } if (strip.open) { omitLeft(body, i, true); } if (doStandalone && inlineStandalone) { omitRight(body, i); if (omitLeft(body, i)) { // If we are on a standalone node, save the indent info for partials if (current.type === 'PartialStatement') { // Pull out the whitespace from the final line current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1]; } } } if (doStandalone && openStandalone) { omitRight((current.program || current.inverse).body); // Strip out the previous content node if it's whitespace only omitLeft(body, i); } if (doStandalone && closeStandalone) { // Always strip the next node omitRight(body, i); omitLeft((current.inverse || current.program).body); } } return program; }; WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) { this.accept(block.program); this.accept(block.inverse); // Find the inverse program that is involed with whitespace stripping. var program = block.program || block.inverse, inverse = block.program && block.inverse, firstInverse = inverse, lastInverse = inverse; if (inverse && inverse.chained) { firstInverse = inverse.body[0].program; // Walk the inverse chain to find the last inverse that is actually in the chain. while (lastInverse.chained) { lastInverse = lastInverse.body[lastInverse.body.length - 1].program; } } var strip = { open: block.openStrip.open, close: block.closeStrip.close, // Determine the standalone candiacy. Basically flag our content as being possibly standalone // so our parent can determine if we actually are standalone openStandalone: isNextWhitespace(program.body), closeStandalone: isPrevWhitespace((firstInverse || program).body) }; if (block.openStrip.close) { omitRight(program.body, null, true); } if (inverse) { var inverseStrip = block.inverseStrip; if (inverseStrip.open) { omitLeft(program.body, null, true); } if (inverseStrip.close) { omitRight(firstInverse.body, null, true); } if (block.closeStrip.open) { omitLeft(lastInverse.body, null, true); } // Find standalone else statments if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) { omitLeft(program.body); omitRight(firstInverse.body); } } else if (block.closeStrip.open) { omitLeft(program.body, null, true); } return strip; }; WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) { return mustache.strip; }; WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) { /* istanbul ignore next */ var strip = node.strip || {}; return { inlineStandalone: true, open: strip.open, close: strip.close }; }; function isPrevWhitespace(body, i, isRoot) { if (i === undefined) { i = body.length; } // Nodes that end with newlines are considered whitespace (but are special // cased for strip operations) var prev = body[i - 1], sibling = body[i - 2]; if (!prev) { return isRoot; } if (prev.type === 'ContentStatement') { return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original); } } function isNextWhitespace(body, i, isRoot) { if (i === undefined) { i = -1; } var next = body[i + 1], sibling = body[i + 2]; if (!next) { return isRoot; } if (next.type === 'ContentStatement') { return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original); } } // Marks the node to the right of the position as omitted. // I.e. {{foo}}' ' will mark the ' ' node as omitted. // // If i is undefined, then the first child will be marked as such. // // If mulitple is truthy then all whitespace will be stripped out until non-whitespace // content is met. function omitRight(body, i, multiple) { var current = body[i == null ? 0 : i + 1]; if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) { return; } var original = current.value; current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, ''); current.rightStripped = current.value !== original; } // Marks the node to the left of the position as omitted. // I.e. ' '{{foo}} will mark the ' ' node as omitted. // // If i is undefined then the last child will be marked as such. // // If mulitple is truthy then all whitespace will be stripped out until non-whitespace // content is met. function omitLeft(body, i, multiple) { var current = body[i == null ? body.length - 1 : i - 1]; if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) { return; } // We omit the last node if it's whitespace only and not preceded by a non-content node. var original = current.value; current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, ''); current.leftStripped = current.value !== original; return current.leftStripped; } exports['default'] = WhitespaceControl; module.exports = exports['default']; }); var helpers$1 = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.SourceLocation = SourceLocation; exports.id = id; exports.stripFlags = stripFlags; exports.stripComment = stripComment; exports.preparePath = preparePath; exports.prepareMustache = prepareMustache; exports.prepareRawBlock = prepareRawBlock; exports.prepareBlock = prepareBlock; exports.prepareProgram = prepareProgram; exports.preparePartialBlock = preparePartialBlock; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); function validateClose(open, close) { close = close.path ? close.path.original : close; if (open.path.original !== close) { var errorNode = { loc: open.path.loc }; throw new _exception2['default'](open.path.original + " doesn't match " + close, errorNode); } } function SourceLocation(source, locInfo) { this.source = source; this.start = { line: locInfo.first_line, column: locInfo.first_column }; this.end = { line: locInfo.last_line, column: locInfo.last_column }; } function id(token) { if (/^\[.*\]$/.test(token)) { return token.substring(1, token.length - 1); } else { return token; } } function stripFlags(open, close) { return { open: open.charAt(2) === '~', close: close.charAt(close.length - 3) === '~' }; } function stripComment(comment) { return comment.replace(/^\{\{~?!-?-?/, '').replace(/-?-?~?\}\}$/, ''); } function preparePath(data, parts, loc) { loc = this.locInfo(loc); var original = data ? '@' : '', dig = [], depth = 0; for (var i = 0, l = parts.length; i < l; i++) { var part = parts[i].part, // If we have [] syntax then we do not treat path references as operators, // i.e. foo.[this] resolves to approximately context.foo['this'] isLiteral = parts[i].original !== part; original += (parts[i].separator || '') + part; if (!isLiteral && (part === '..' || part === '.' || part === 'this')) { if (dig.length > 0) { throw new _exception2['default']('Invalid path: ' + original, { loc: loc }); } else if (part === '..') { depth++; } } else { dig.push(part); } } return { type: 'PathExpression', data: data, depth: depth, parts: dig, original: original, loc: loc }; } function prepareMustache(path, params, hash, open, strip, locInfo) { // Must use charAt to support IE pre-10 var escapeFlag = open.charAt(3) || open.charAt(2), escaped = escapeFlag !== '{' && escapeFlag !== '&'; var decorator = /\*/.test(open); return { type: decorator ? 'Decorator' : 'MustacheStatement', path: path, params: params, hash: hash, escaped: escaped, strip: strip, loc: this.locInfo(locInfo) }; } function prepareRawBlock(openRawBlock, contents, close, locInfo) { validateClose(openRawBlock, close); locInfo = this.locInfo(locInfo); var program = { type: 'Program', body: contents, strip: {}, loc: locInfo }; return { type: 'BlockStatement', path: openRawBlock.path, params: openRawBlock.params, hash: openRawBlock.hash, program: program, openStrip: {}, inverseStrip: {}, closeStrip: {}, loc: locInfo }; } function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) { if (close && close.path) { validateClose(openBlock, close); } var decorator = /\*/.test(openBlock.open); program.blockParams = openBlock.blockParams; var inverse = undefined, inverseStrip = undefined; if (inverseAndProgram) { if (decorator) { throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram); } if (inverseAndProgram.chain) { inverseAndProgram.program.body[0].closeStrip = close.strip; } inverseStrip = inverseAndProgram.strip; inverse = inverseAndProgram.program; } if (inverted) { inverted = inverse; inverse = program; program = inverted; } return { type: decorator ? 'DecoratorBlock' : 'BlockStatement', path: openBlock.path, params: openBlock.params, hash: openBlock.hash, program: program, inverse: inverse, openStrip: openBlock.strip, inverseStrip: inverseStrip, closeStrip: close && close.strip, loc: this.locInfo(locInfo) }; } function prepareProgram(statements, loc) { if (!loc && statements.length) { var firstLoc = statements[0].loc, lastLoc = statements[statements.length - 1].loc; /* istanbul ignore else */ if (firstLoc && lastLoc) { loc = { source: firstLoc.source, start: { line: firstLoc.start.line, column: firstLoc.start.column }, end: { line: lastLoc.end.line, column: lastLoc.end.column } }; } } return { type: 'Program', body: statements, strip: {}, loc: loc }; } function preparePartialBlock(open, program, close, locInfo) { validateClose(open, close); return { type: 'PartialBlockStatement', name: open.path, params: open.params, hash: open.hash, program: program, openStrip: open.strip, closeStrip: close && close.strip, loc: this.locInfo(locInfo) }; } }); var base$1 = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.parseWithoutProcessing = parseWithoutProcessing; exports.parse = parse; // istanbul ignore next function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _parser2 = _interopRequireDefault(parser); var _whitespaceControl2 = _interopRequireDefault(whitespaceControl); var Helpers = _interopRequireWildcard(helpers$1); exports.parser = _parser2['default']; var yy = {}; utils$2.extend(yy, Helpers); function parseWithoutProcessing(input, options) { // Just return if an already-compiled AST was passed in. if (input.type === 'Program') { return input; } _parser2['default'].yy = yy; // Altering the shared object here, but this is ok as parser is a sync operation yy.locInfo = function (locInfo) { return new yy.SourceLocation(options && options.srcName, locInfo); }; var ast = _parser2['default'].parse(input); return ast; } function parse(input, options) { var ast = parseWithoutProcessing(input, options); var strip = new _whitespaceControl2['default'](options); return strip.accept(ast); } }); var compiler = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.Compiler = Compiler; exports.precompile = precompile; exports.compile = compile; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); var _ast2 = _interopRequireDefault(ast); var slice = [].slice; function Compiler() {} // the foundHelper register will disambiguate helper lookup from finding a // function in a context. This is necessary for mustache compatibility, which // requires that context functions in blocks are evaluated by blockHelperMissing, // and then proceed as if the resulting value was provided to blockHelperMissing. Compiler.prototype = { compiler: Compiler, equals: function equals(other) { var len = this.opcodes.length; if (other.opcodes.length !== len) { return false; } for (var i = 0; i < len; i++) { var opcode = this.opcodes[i], otherOpcode = other.opcodes[i]; if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) { return false; } } // We know that length is the same between the two arrays because they are directly tied // to the opcode behavior above. len = this.children.length; for (var i = 0; i < len; i++) { if (!this.children[i].equals(other.children[i])) { return false; } } return true; }, guid: 0, compile: function compile(program, options) { this.sourceNode = []; this.opcodes = []; this.children = []; this.options = options; this.stringParams = options.stringParams; this.trackIds = options.trackIds; options.blockParams = options.blockParams || []; options.knownHelpers = utils$2.extend(Object.create(null), { helperMissing: true, blockHelperMissing: true, each: true, 'if': true, unless: true, 'with': true, log: true, lookup: true }, options.knownHelpers); return this.accept(program); }, compileProgram: function compileProgram(program) { var childCompiler = new this.compiler(), // eslint-disable-line new-cap result = childCompiler.compile(program, this.options), guid = this.guid++; this.usePartial = this.usePartial || result.usePartial; this.children[guid] = result; this.useDepths = this.useDepths || result.useDepths; return guid; }, accept: function accept(node) { /* istanbul ignore next: Sanity code */ if (!this[node.type]) { throw new _exception2['default']('Unknown type: ' + node.type, node); } this.sourceNode.unshift(node); var ret = this[node.type](node); this.sourceNode.shift(); return ret; }, Program: function Program(program) { this.options.blockParams.unshift(program.blockParams); var body = program.body, bodyLength = body.length; for (var i = 0; i < bodyLength; i++) { this.accept(body[i]); } this.options.blockParams.shift(); this.isSimple = bodyLength === 1; this.blockParams = program.blockParams ? program.blockParams.length : 0; return this; }, BlockStatement: function BlockStatement(block) { transformLiteralToPath(block); var program = block.program, inverse = block.inverse; program = program && this.compileProgram(program); inverse = inverse && this.compileProgram(inverse); var type = this.classifySexpr(block); if (type === 'helper') { this.helperSexpr(block, program, inverse); } else if (type === 'simple') { this.simpleSexpr(block); // now that the simple mustache is resolved, we need to // evaluate it by executing `blockHelperMissing` this.opcode('pushProgram', program); this.opcode('pushProgram', inverse); this.opcode('emptyHash'); this.opcode('blockValue', block.path.original); } else { this.ambiguousSexpr(block, program, inverse); // now that the simple mustache is resolved, we need to // evaluate it by executing `blockHelperMissing` this.opcode('pushProgram', program); this.opcode('pushProgram', inverse); this.opcode('emptyHash'); this.opcode('ambiguousBlockValue'); } this.opcode('append'); }, DecoratorBlock: function DecoratorBlock(decorator) { var program = decorator.program && this.compileProgram(decorator.program); var params = this.setupFullMustacheParams(decorator, program, undefined), path = decorator.path; this.useDecorators = true; this.opcode('registerDecorator', params.length, path.original); }, PartialStatement: function PartialStatement(partial) { this.usePartial = true; var program = partial.program; if (program) { program = this.compileProgram(partial.program); } var params = partial.params; if (params.length > 1) { throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial); } else if (!params.length) { if (this.options.explicitPartialContext) { this.opcode('pushLiteral', 'undefined'); } else { params.push({ type: 'PathExpression', parts: [], depth: 0 }); } } var partialName = partial.name.original, isDynamic = partial.name.type === 'SubExpression'; if (isDynamic) { this.accept(partial.name); } this.setupFullMustacheParams(partial, program, undefined, true); var indent = partial.indent || ''; if (this.options.preventIndent && indent) { this.opcode('appendContent', indent); indent = ''; } this.opcode('invokePartial', isDynamic, partialName, indent); this.opcode('append'); }, PartialBlockStatement: function PartialBlockStatement(partialBlock) { this.PartialStatement(partialBlock); }, MustacheStatement: function MustacheStatement(mustache) { this.SubExpression(mustache); if (mustache.escaped && !this.options.noEscape) { this.opcode('appendEscaped'); } else { this.opcode('append'); } }, Decorator: function Decorator(decorator) { this.DecoratorBlock(decorator); }, ContentStatement: function ContentStatement(content) { if (content.value) { this.opcode('appendContent', content.value); } }, CommentStatement: function CommentStatement() {}, SubExpression: function SubExpression(sexpr) { transformLiteralToPath(sexpr); var type = this.classifySexpr(sexpr); if (type === 'simple') { this.simpleSexpr(sexpr); } else if (type === 'helper') { this.helperSexpr(sexpr); } else { this.ambiguousSexpr(sexpr); } }, ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) { var path = sexpr.path, name = path.parts[0], isBlock = program != null || inverse != null; this.opcode('getContext', path.depth); this.opcode('pushProgram', program); this.opcode('pushProgram', inverse); path.strict = true; this.accept(path); this.opcode('invokeAmbiguous', name, isBlock); }, simpleSexpr: function simpleSexpr(sexpr) { var path = sexpr.path; path.strict = true; this.accept(path); this.opcode('resolvePossibleLambda'); }, helperSexpr: function helperSexpr(sexpr, program, inverse) { var params = this.setupFullMustacheParams(sexpr, program, inverse), path = sexpr.path, name = path.parts[0]; if (this.options.knownHelpers[name]) { this.opcode('invokeKnownHelper', params.length, name); } else if (this.options.knownHelpersOnly) { throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr); } else { path.strict = true; path.falsy = true; this.accept(path); this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path)); } }, PathExpression: function PathExpression(path) { this.addDepth(path.depth); this.opcode('getContext', path.depth); var name = path.parts[0], scoped = _ast2['default'].helpers.scopedId(path), blockParamId = !path.depth && !scoped && this.blockParamIndex(name); if (blockParamId) { this.opcode('lookupBlockParam', blockParamId, path.parts); } else if (!name) { // Context reference, i.e. `{{foo .}}` or `{{foo ..}}` this.opcode('pushContext'); } else if (path.data) { this.options.data = true; this.opcode('lookupData', path.depth, path.parts, path.strict); } else { this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped); } }, StringLiteral: function StringLiteral(string) { this.opcode('pushString', string.value); }, NumberLiteral: function NumberLiteral(number) { this.opcode('pushLiteral', number.value); }, BooleanLiteral: function BooleanLiteral(bool) { this.opcode('pushLiteral', bool.value); }, UndefinedLiteral: function UndefinedLiteral() { this.opcode('pushLiteral', 'undefined'); }, NullLiteral: function NullLiteral() { this.opcode('pushLiteral', 'null'); }, Hash: function Hash(hash) { var pairs = hash.pairs, i = 0, l = pairs.length; this.opcode('pushHash'); for (; i < l; i++) { this.pushParam(pairs[i].value); } while (i--) { this.opcode('assignToHash', pairs[i].key); } this.opcode('popHash'); }, // HELPERS opcode: function opcode(name) { this.opcodes.push({ opcode: name, args: slice.call(arguments, 1), loc: this.sourceNode[0].loc }); }, addDepth: function addDepth(depth) { if (!depth) { return; } this.useDepths = true; }, classifySexpr: function classifySexpr(sexpr) { var isSimple = _ast2['default'].helpers.simpleId(sexpr.path); var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]); // a mustache is an eligible helper if: // * its id is simple (a single part, not `this` or `..`) var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr); // if a mustache is an eligible helper but not a definite // helper, it is ambiguous, and will be resolved in a later // pass or at runtime. var isEligible = !isBlockParam && (isHelper || isSimple); // if ambiguous, we can possibly resolve the ambiguity now // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc. if (isEligible && !isHelper) { var _name = sexpr.path.parts[0], options = this.options; if (options.knownHelpers[_name]) { isHelper = true; } else if (options.knownHelpersOnly) { isEligible = false; } } if (isHelper) { return 'helper'; } else if (isEligible) { return 'ambiguous'; } else { return 'simple'; } }, pushParams: function pushParams(params) { for (var i = 0, l = params.length; i < l; i++) { this.pushParam(params[i]); } }, pushParam: function pushParam(val) { var value = val.value != null ? val.value : val.original || ''; if (this.stringParams) { if (value.replace) { value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.'); } if (val.depth) { this.addDepth(val.depth); } this.opcode('getContext', val.depth || 0); this.opcode('pushStringParam', value, val.type); if (val.type === 'SubExpression') { // SubExpressions get evaluated and passed in // in string params mode. this.accept(val); } } else { if (this.trackIds) { var blockParamIndex = undefined; if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) { blockParamIndex = this.blockParamIndex(val.parts[0]); } if (blockParamIndex) { var blockParamChild = val.parts.slice(1).join('.'); this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild); } else { value = val.original || value; if (value.replace) { value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, ''); } this.opcode('pushId', val.type, value); } } this.accept(val); } }, setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) { var params = sexpr.params; this.pushParams(params); this.opcode('pushProgram', program); this.opcode('pushProgram', inverse); if (sexpr.hash) { this.accept(sexpr.hash); } else { this.opcode('emptyHash', omitEmpty); } return params; }, blockParamIndex: function blockParamIndex(name) { for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) { var blockParams = this.options.blockParams[depth], param = blockParams && utils$2.indexOf(blockParams, name); if (blockParams && param >= 0) { return [depth, param]; } } } }; function precompile(input, options, env) { if (input == null || typeof input !== 'string' && input.type !== 'Program') { throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input); } options = options || {}; if (!('data' in options)) { options.data = true; } if (options.compat) { options.useDepths = true; } var ast = env.parse(input, options), environment = new env.Compiler().compile(ast, options); return new env.JavaScriptCompiler().compile(environment, options); } function compile(input, options, env) { if (options === undefined) options = {}; if (input == null || typeof input !== 'string' && input.type !== 'Program') { throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input); } options = utils$2.extend({}, options); if (!('data' in options)) { options.data = true; } if (options.compat) { options.useDepths = true; } var compiled = undefined; function compileInput() { var ast = env.parse(input, options), environment = new env.Compiler().compile(ast, options), templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true); return env.template(templateSpec); } // Template is only compiled on first use and cached after that point. function ret(context, execOptions) { if (!compiled) { compiled = compileInput(); } return compiled.call(this, context, execOptions); } ret._setup = function (setupOptions) { if (!compiled) { compiled = compileInput(); } return compiled._setup(setupOptions); }; ret._child = function (i, data, blockParams, depths) { if (!compiled) { compiled = compileInput(); } return compiled._child(i, data, blockParams, depths); }; return ret; } function argEquals(a, b) { if (a === b) { return true; } if (utils$2.isArray(a) && utils$2.isArray(b) && a.length === b.length) { for (var i = 0; i < a.length; i++) { if (!argEquals(a[i], b[i])) { return false; } } return true; } } function transformLiteralToPath(sexpr) { if (!sexpr.path.parts) { var literal = sexpr.path; // Casting to string here to make false and 0 literal values play nicely with the rest // of the system. sexpr.path = { type: 'PathExpression', data: false, depth: 0, parts: [literal.original + ''], original: literal.original + '', loc: literal.loc }; } } }); /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); /** * Encode an integer in the range of 0 to 63 to a single base 64 digit. */ var encode = function (number) { if (0 <= number && number < intToCharMap.length) { return intToCharMap[number]; } throw new TypeError("Must be between 0 and 63: " + number); }; /** * Decode a single base 64 character code digit to an integer. Returns -1 on * failure. */ var decode = function (charCode) { var bigA = 65; // 'A' var bigZ = 90; // 'Z' var littleA = 97; // 'a' var littleZ = 122; // 'z' var zero = 48; // '0' var nine = 57; // '9' var plus = 43; // '+' var slash = 47; // '/' var littleOffset = 26; var numberOffset = 52; // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ if (bigA <= charCode && charCode <= bigZ) { return (charCode - bigA); } // 26 - 51: abcdefghijklmnopqrstuvwxyz if (littleA <= charCode && charCode <= littleZ) { return (charCode - littleA + littleOffset); } // 52 - 61: 0123456789 if (zero <= charCode && charCode <= nine) { return (charCode - zero + numberOffset); } // 62: + if (charCode == plus) { return 62; } // 63: / if (charCode == slash) { return 63; } // Invalid base64 digit. return -1; }; var base64 = { encode: encode, decode: decode }; /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause * * Based on the Base 64 VLQ implementation in Closure Compiler: * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java * * Copyright 2011 The Closure Compiler Authors. All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // A single base 64 digit can contain 6 bits of data. For the base 64 variable // length quantities we use in the source map spec, the first bit is the sign, // the next four bits are the actual value, and the 6th bit is the // continuation bit. The continuation bit tells us whether there are more // digits in this value following this digit. // // Continuation // | Sign // | | // V V // 101011 var VLQ_BASE_SHIFT = 5; // binary: 100000 var VLQ_BASE = 1 << VLQ_BASE_SHIFT; // binary: 011111 var VLQ_BASE_MASK = VLQ_BASE - 1; // binary: 100000 var VLQ_CONTINUATION_BIT = VLQ_BASE; /** * Converts from a two-complement value to a value where the sign bit is * placed in the least significant bit. For example, as decimals: * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) */ function toVLQSigned(aValue) { return aValue < 0 ? ((-aValue) << 1) + 1 : (aValue << 1) + 0; } /** * Converts to a two-complement value from a value where the sign bit is * placed in the least significant bit. For example, as decimals: * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 */ function fromVLQSigned(aValue) { var isNegative = (aValue & 1) === 1; var shifted = aValue >> 1; return isNegative ? -shifted : shifted; } /** * Returns the base 64 VLQ encoded value. */ var encode$1 = function base64VLQ_encode(aValue) { var encoded = ""; var digit; var vlq = toVLQSigned(aValue); do { digit = vlq & VLQ_BASE_MASK; vlq >>>= VLQ_BASE_SHIFT; if (vlq > 0) { // There are still more digits in this value, so we must make sure the // continuation bit is marked. digit |= VLQ_CONTINUATION_BIT; } encoded += base64.encode(digit); } while (vlq > 0); return encoded; }; /** * Decodes the next base 64 VLQ value from the given string and returns the * value and the rest of the string via the out parameter. */ var decode$1 = function base64VLQ_decode(aStr, aIndex, aOutParam) { var strLen = aStr.length; var result = 0; var shift = 0; var continuation, digit; do { if (aIndex >= strLen) { throw new Error("Expected more digits in base 64 VLQ value."); } digit = base64.decode(aStr.charCodeAt(aIndex++)); if (digit === -1) { throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); } continuation = !!(digit & VLQ_CONTINUATION_BIT); digit &= VLQ_BASE_MASK; result = result + (digit << shift); shift += VLQ_BASE_SHIFT; } while (continuation); aOutParam.value = fromVLQSigned(result); aOutParam.rest = aIndex; }; var base64Vlq = { encode: encode$1, decode: decode$1 }; var util = createCommonjsModule(function (module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ /** * This is a helper function for getting values from parameter/options * objects. * * @param args The object we are extracting values from * @param name The name of the property we are getting. * @param defaultValue An optional value to return if the property is missing * from the object. If this is not specified and the property is missing, an * error will be thrown. */ function getArg(aArgs, aName, aDefaultValue) { if (aName in aArgs) { return aArgs[aName]; } else if (arguments.length === 3) { return aDefaultValue; } else { throw new Error('"' + aName + '" is a required argument.'); } } exports.getArg = getArg; var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; var dataUrlRegexp = /^data:.+\,.+$/; function urlParse(aUrl) { var match = aUrl.match(urlRegexp); if (!match) { return null; } return { scheme: match[1], auth: match[2], host: match[3], port: match[4], path: match[5] }; } exports.urlParse = urlParse; function urlGenerate(aParsedUrl) { var url = ''; if (aParsedUrl.scheme) { url += aParsedUrl.scheme + ':'; } url += '//'; if (aParsedUrl.auth) { url += aParsedUrl.auth + '@'; } if (aParsedUrl.host) { url += aParsedUrl.host; } if (aParsedUrl.port) { url += ":" + aParsedUrl.port; } if (aParsedUrl.path) { url += aParsedUrl.path; } return url; } exports.urlGenerate = urlGenerate; /** * Normalizes a path, or the path portion of a URL: * * - Replaces consecutive slashes with one slash. * - Removes unnecessary '.' parts. * - Removes unnecessary '/..' parts. * * Based on code in the Node.js 'path' core module. * * @param aPath The path or url to normalize. */ function normalize(aPath) { var path = aPath; var url = urlParse(aPath); if (url) { if (!url.path) { return aPath; } path = url.path; } var isAbsolute = exports.isAbsolute(path); var parts = path.split(/\/+/); for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { part = parts[i]; if (part === '.') { parts.splice(i, 1); } else if (part === '..') { up++; } else if (up > 0) { if (part === '') { // The first part is blank if the path is absolute. Trying to go // above the root is a no-op. Therefore we can remove all '..' parts // directly after the root. parts.splice(i + 1, up); up = 0; } else { parts.splice(i, 2); up--; } } } path = parts.join('/'); if (path === '') { path = isAbsolute ? '/' : '.'; } if (url) { url.path = path; return urlGenerate(url); } return path; } exports.normalize = normalize; /** * Joins two paths/URLs. * * @param aRoot The root path or URL. * @param aPath The path or URL to be joined with the root. * * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a * scheme-relative URL: Then the scheme of aRoot, if any, is prepended * first. * - Otherwise aPath is a path. If aRoot is a URL, then its path portion * is updated with the result and aRoot is returned. Otherwise the result * is returned. * - If aPath is absolute, the result is aPath. * - Otherwise the two paths are joined with a slash. * - Joining for example 'http://' and 'www.example.com' is also supported. */ function join(aRoot, aPath) { if (aRoot === "") { aRoot = "."; } if (aPath === "") { aPath = "."; } var aPathUrl = urlParse(aPath); var aRootUrl = urlParse(aRoot); if (aRootUrl) { aRoot = aRootUrl.path || '/'; } // `join(foo, '//www.example.org')` if (aPathUrl && !aPathUrl.scheme) { if (aRootUrl) { aPathUrl.scheme = aRootUrl.scheme; } return urlGenerate(aPathUrl); } if (aPathUrl || aPath.match(dataUrlRegexp)) { return aPath; } // `join('http://', 'www.example.com')` if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { aRootUrl.host = aPath; return urlGenerate(aRootUrl); } var joined = aPath.charAt(0) === '/' ? aPath : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); if (aRootUrl) { aRootUrl.path = joined; return urlGenerate(aRootUrl); } return joined; } exports.join = join; exports.isAbsolute = function (aPath) { return aPath.charAt(0) === '/' || urlRegexp.test(aPath); }; /** * Make a path relative to a URL or another path. * * @param aRoot The root path or URL. * @param aPath The path or URL to be made relative to aRoot. */ function relative(aRoot, aPath) { if (aRoot === "") { aRoot = "."; } aRoot = aRoot.replace(/\/$/, ''); // It is possible for the path to be above the root. In this case, simply // checking whether the root is a prefix of the path won't work. Instead, we // need to remove components from the root one by one, until either we find // a prefix that fits, or we run out of components to remove. var level = 0; while (aPath.indexOf(aRoot + '/') !== 0) { var index = aRoot.lastIndexOf("/"); if (index < 0) { return aPath; } // If the only part of the root that is left is the scheme (i.e. http://, // file:///, etc.), one or more slashes (/), or simply nothing at all, we // have exhausted all components, so the path is not relative to the root. aRoot = aRoot.slice(0, index); if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { return aPath; } ++level; } // Make sure we add a "../" for each component we removed from the root. return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); } exports.relative = relative; var supportsNullProto = (function () { var obj = Object.create(null); return !('__proto__' in obj); }()); function identity (s) { return s; } /** * Because behavior goes wacky when you set `__proto__` on objects, we * have to prefix all the strings in our set with an arbitrary character. * * See https://github.com/mozilla/source-map/pull/31 and * https://github.com/mozilla/source-map/issues/30 * * @param String aStr */ function toSetString(aStr) { if (isProtoString(aStr)) { return '$' + aStr; } return aStr; } exports.toSetString = supportsNullProto ? identity : toSetString; function fromSetString(aStr) { if (isProtoString(aStr)) { return aStr.slice(1); } return aStr; } exports.fromSetString = supportsNullProto ? identity : fromSetString; function isProtoString(s) { if (!s) { return false; } var length = s.length; if (length < 9 /* "__proto__".length */) { return false; } if (s.charCodeAt(length - 1) !== 95 /* '_' */ || s.charCodeAt(length - 2) !== 95 /* '_' */ || s.charCodeAt(length - 3) !== 111 /* 'o' */ || s.charCodeAt(length - 4) !== 116 /* 't' */ || s.charCodeAt(length - 5) !== 111 /* 'o' */ || s.charCodeAt(length - 6) !== 114 /* 'r' */ || s.charCodeAt(length - 7) !== 112 /* 'p' */ || s.charCodeAt(length - 8) !== 95 /* '_' */ || s.charCodeAt(length - 9) !== 95 /* '_' */) { return false; } for (var i = length - 10; i >= 0; i--) { if (s.charCodeAt(i) !== 36 /* '$' */) { return false; } } return true; } /** * Comparator between two mappings where the original positions are compared. * * Optionally pass in `true` as `onlyCompareGenerated` to consider two * mappings with the same original source/line/column, but different generated * line and column the same. Useful when searching for a mapping with a * stubbed out mapping. */ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { var cmp = strcmp(mappingA.source, mappingB.source); if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0 || onlyCompareOriginal) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } return strcmp(mappingA.name, mappingB.name); } exports.compareByOriginalPositions = compareByOriginalPositions; /** * Comparator between two mappings with deflated source and name indices where * the generated positions are compared. * * Optionally pass in `true` as `onlyCompareGenerated` to consider two * mappings with the same generated line and column, but different * source/name/original line and column the same. Useful when searching for a * mapping with a stubbed out mapping. */ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { var cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0 || onlyCompareGenerated) { return cmp; } cmp = strcmp(mappingA.source, mappingB.source); if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0) { return cmp; } return strcmp(mappingA.name, mappingB.name); } exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; function strcmp(aStr1, aStr2) { if (aStr1 === aStr2) { return 0; } if (aStr1 === null) { return 1; // aStr2 !== null } if (aStr2 === null) { return -1; // aStr1 !== null } if (aStr1 > aStr2) { return 1; } return -1; } /** * Comparator between two mappings with inflated source and name strings where * the generated positions are compared. */ function compareByGeneratedPositionsInflated(mappingA, mappingB) { var cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0) { return cmp; } cmp = strcmp(mappingA.source, mappingB.source); if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0) { return cmp; } return strcmp(mappingA.name, mappingB.name); } exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; /** * Strip any JSON XSSI avoidance prefix from the string (as documented * in the source maps specification), and then parse the string as * JSON. */ function parseSourceMapInput(str) { return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); } exports.parseSourceMapInput = parseSourceMapInput; /** * Compute the URL of a source given the the source root, the source's * URL, and the source map's URL. */ function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { sourceURL = sourceURL || ''; if (sourceRoot) { // This follows what Chrome does. if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { sourceRoot += '/'; } // The spec says: // Line 4: An optional source root, useful for relocating source // files on a server or removing repeated values in the // “sources” entry. This value is prepended to the individual // entries in the “source” field. sourceURL = sourceRoot + sourceURL; } // Historically, SourceMapConsumer did not take the sourceMapURL as // a parameter. This mode is still somewhat supported, which is why // this code block is conditional. However, it's preferable to pass // the source map URL to SourceMapConsumer, so that this function // can implement the source URL resolution algorithm as outlined in // the spec. This block is basically the equivalent of: // new URL(sourceURL, sourceMapURL).toString() // ... except it avoids using URL, which wasn't available in the // older releases of node still supported by this library. // // The spec says: // If the sources are not absolute URLs after prepending of the // “sourceRoot”, the sources are resolved relative to the // SourceMap (like resolving script src in a html document). if (sourceMapURL) { var parsed = urlParse(sourceMapURL); if (!parsed) { throw new Error("sourceMapURL could not be parsed"); } if (parsed.path) { // Strip the last path component, but keep the "/". var index = parsed.path.lastIndexOf('/'); if (index >= 0) { parsed.path = parsed.path.substring(0, index + 1); } } sourceURL = join(urlGenerate(parsed), sourceURL); } return normalize(sourceURL); } exports.computeSourceURL = computeSourceURL; }); /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ var has = Object.prototype.hasOwnProperty; var hasNativeMap = typeof Map !== "undefined"; /** * A data structure which is a combination of an array and a set. Adding a new * member is O(1), testing for membership is O(1), and finding the index of an * element is O(1). Removing elements from the set is not supported. Only * strings are supported for membership. */ function ArraySet() { this._array = []; this._set = hasNativeMap ? new Map() : Object.create(null); } /** * Static method for creating ArraySet instances from an existing array. */ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { var set = new ArraySet(); for (var i = 0, len = aArray.length; i < len; i++) { set.add(aArray[i], aAllowDuplicates); } return set; }; /** * Return how many unique items are in this ArraySet. If duplicates have been * added, than those do not count towards the size. * * @returns Number */ ArraySet.prototype.size = function ArraySet_size() { return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; }; /** * Add the given string to this set. * * @param String aStr */ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { var sStr = hasNativeMap ? aStr : util.toSetString(aStr); var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); var idx = this._array.length; if (!isDuplicate || aAllowDuplicates) { this._array.push(aStr); } if (!isDuplicate) { if (hasNativeMap) { this._set.set(aStr, idx); } else { this._set[sStr] = idx; } } }; /** * Is the given string a member of this set? * * @param String aStr */ ArraySet.prototype.has = function ArraySet_has(aStr) { if (hasNativeMap) { return this._set.has(aStr); } else { var sStr = util.toSetString(aStr); return has.call(this._set, sStr); } }; /** * What is the index of the given string in the array? * * @param String aStr */ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { if (hasNativeMap) { var idx = this._set.get(aStr); if (idx >= 0) { return idx; } } else { var sStr = util.toSetString(aStr); if (has.call(this._set, sStr)) { return this._set[sStr]; } } throw new Error('"' + aStr + '" is not in the set.'); }; /** * What is the element at the given index? * * @param Number aIdx */ ArraySet.prototype.at = function ArraySet_at(aIdx) { if (aIdx >= 0 && aIdx < this._array.length) { return this._array[aIdx]; } throw new Error('No element indexed by ' + aIdx); }; /** * Returns the array representation of this set (which has the proper indices * indicated by indexOf). Note that this is a copy of the internal array used * for storing the members so that no one can mess with internal state. */ ArraySet.prototype.toArray = function ArraySet_toArray() { return this._array.slice(); }; var ArraySet_1 = ArraySet; var arraySet = { ArraySet: ArraySet_1 }; /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2014 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ /** * Determine whether mappingB is after mappingA with respect to generated * position. */ function generatedPositionAfter(mappingA, mappingB) { // Optimized for most common case var lineA = mappingA.generatedLine; var lineB = mappingB.generatedLine; var columnA = mappingA.generatedColumn; var columnB = mappingB.generatedColumn; return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; } /** * A data structure to provide a sorted view of accumulated mappings in a * performance conscious manner. It trades a neglibable overhead in general * case for a large speedup in case of mappings being added in order. */ function MappingList() { this._array = []; this._sorted = true; // Serves as infimum this._last = {generatedLine: -1, generatedColumn: 0}; } /** * Iterate through internal items. This method takes the same arguments that * `Array.prototype.forEach` takes. * * NOTE: The order of the mappings is NOT guaranteed. */ MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) { this._array.forEach(aCallback, aThisArg); }; /** * Add the given source mapping. * * @param Object aMapping */ MappingList.prototype.add = function MappingList_add(aMapping) { if (generatedPositionAfter(this._last, aMapping)) { this._last = aMapping; this._array.push(aMapping); } else { this._sorted = false; this._array.push(aMapping); } }; /** * Returns the flat, sorted array of mappings. The mappings are sorted by * generated position. * * WARNING: This method returns internal data without copying, for * performance. The return value must NOT be mutated, and should be treated as * an immutable borrow. If you want to take ownership, you must make your own * copy. */ MappingList.prototype.toArray = function MappingList_toArray() { if (!this._sorted) { this._array.sort(util.compareByGeneratedPositionsInflated); this._sorted = true; } return this._array; }; var MappingList_1 = MappingList; var mappingList = { MappingList: MappingList_1 }; /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ var ArraySet$1 = arraySet.ArraySet; var MappingList$1 = mappingList.MappingList; /** * An instance of the SourceMapGenerator represents a source map which is * being built incrementally. You may pass an object with the following * properties: * * - file: The filename of the generated source. * - sourceRoot: A root for all relative URLs in this source map. */ function SourceMapGenerator(aArgs) { if (!aArgs) { aArgs = {}; } this._file = util.getArg(aArgs, 'file', null); this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); this._skipValidation = util.getArg(aArgs, 'skipValidation', false); this._sources = new ArraySet$1(); this._names = new ArraySet$1(); this._mappings = new MappingList$1(); this._sourcesContents = null; } SourceMapGenerator.prototype._version = 3; /** * Creates a new SourceMapGenerator based on a SourceMapConsumer * * @param aSourceMapConsumer The SourceMap. */ SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { var sourceRoot = aSourceMapConsumer.sourceRoot; var generator = new SourceMapGenerator({ file: aSourceMapConsumer.file, sourceRoot: sourceRoot }); aSourceMapConsumer.eachMapping(function (mapping) { var newMapping = { generated: { line: mapping.generatedLine, column: mapping.generatedColumn } }; if (mapping.source != null) { newMapping.source = mapping.source; if (sourceRoot != null) { newMapping.source = util.relative(sourceRoot, newMapping.source); } newMapping.original = { line: mapping.originalLine, column: mapping.originalColumn }; if (mapping.name != null) { newMapping.name = mapping.name; } } generator.addMapping(newMapping); }); aSourceMapConsumer.sources.forEach(function (sourceFile) { var sourceRelative = sourceFile; if (sourceRoot !== null) { sourceRelative = util.relative(sourceRoot, sourceFile); } if (!generator._sources.has(sourceRelative)) { generator._sources.add(sourceRelative); } var content = aSourceMapConsumer.sourceContentFor(sourceFile); if (content != null) { generator.setSourceContent(sourceFile, content); } }); return generator; }; /** * Add a single mapping from original source line and column to the generated * source's line and column for this source map being created. The mapping * object should have the following properties: * * - generated: An object with the generated line and column positions. * - original: An object with the original line and column positions. * - source: The original source file (relative to the sourceRoot). * - name: An optional original token name for this mapping. */ SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) { var generated = util.getArg(aArgs, 'generated'); var original = util.getArg(aArgs, 'original', null); var source = util.getArg(aArgs, 'source', null); var name = util.getArg(aArgs, 'name', null); if (!this._skipValidation) { this._validateMapping(generated, original, source, name); } if (source != null) { source = String(source); if (!this._sources.has(source)) { this._sources.add(source); } } if (name != null) { name = String(name); if (!this._names.has(name)) { this._names.add(name); } } this._mappings.add({ generatedLine: generated.line, generatedColumn: generated.column, originalLine: original != null && original.line, originalColumn: original != null && original.column, source: source, name: name }); }; /** * Set the source content for a source file. */ SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { var source = aSourceFile; if (this._sourceRoot != null) { source = util.relative(this._sourceRoot, source); } if (aSourceContent != null) { // Add the source content to the _sourcesContents map. // Create a new _sourcesContents map if the property is null. if (!this._sourcesContents) { this._sourcesContents = Object.create(null); } this._sourcesContents[util.toSetString(source)] = aSourceContent; } else if (this._sourcesContents) { // Remove the source file from the _sourcesContents map. // If the _sourcesContents map is empty, set the property to null. delete this._sourcesContents[util.toSetString(source)]; if (Object.keys(this._sourcesContents).length === 0) { this._sourcesContents = null; } } }; /** * Applies the mappings of a sub-source-map for a specific source file to the * source map being generated. Each mapping to the supplied source file is * rewritten using the supplied source map. Note: The resolution for the * resulting mappings is the minimium of this map and the supplied map. * * @param aSourceMapConsumer The source map to be applied. * @param aSourceFile Optional. The filename of the source file. * If omitted, SourceMapConsumer's file property will be used. * @param aSourceMapPath Optional. The dirname of the path to the source map * to be applied. If relative, it is relative to the SourceMapConsumer. * This parameter is needed when the two source maps aren't in the same * directory, and the source map to be applied contains relative source * paths. If so, those relative source paths need to be rewritten * relative to the SourceMapGenerator. */ SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { var sourceFile = aSourceFile; // If aSourceFile is omitted, we will use the file property of the SourceMap if (aSourceFile == null) { if (aSourceMapConsumer.file == null) { throw new Error( 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + 'or the source map\'s "file" property. Both were omitted.' ); } sourceFile = aSourceMapConsumer.file; } var sourceRoot = this._sourceRoot; // Make "sourceFile" relative if an absolute Url is passed. if (sourceRoot != null) { sourceFile = util.relative(sourceRoot, sourceFile); } // Applying the SourceMap can add and remove items from the sources and // the names array. var newSources = new ArraySet$1(); var newNames = new ArraySet$1(); // Find mappings for the "sourceFile" this._mappings.unsortedForEach(function (mapping) { if (mapping.source === sourceFile && mapping.originalLine != null) { // Check if it can be mapped by the source map, then update the mapping. var original = aSourceMapConsumer.originalPositionFor({ line: mapping.originalLine, column: mapping.originalColumn }); if (original.source != null) { // Copy mapping mapping.source = original.source; if (aSourceMapPath != null) { mapping.source = util.join(aSourceMapPath, mapping.source); } if (sourceRoot != null) { mapping.source = util.relative(sourceRoot, mapping.source); } mapping.originalLine = original.line; mapping.originalColumn = original.column; if (original.name != null) { mapping.name = original.name; } } } var source = mapping.source; if (source != null && !newSources.has(source)) { newSources.add(source); } var name = mapping.name; if (name != null && !newNames.has(name)) { newNames.add(name); } }, this); this._sources = newSources; this._names = newNames; // Copy sourcesContents of applied map. aSourceMapConsumer.sources.forEach(function (sourceFile) { var content = aSourceMapConsumer.sourceContentFor(sourceFile); if (content != null) { if (aSourceMapPath != null) { sourceFile = util.join(aSourceMapPath, sourceFile); } if (sourceRoot != null) { sourceFile = util.relative(sourceRoot, sourceFile); } this.setSourceContent(sourceFile, content); } }, this); }; /** * A mapping can have one of the three levels of data: * * 1. Just the generated position. * 2. The Generated position, original position, and original source. * 3. Generated and original position, original source, as well as a name * token. * * To maintain consistency, we validate that any new mapping being added falls * in to one of these categories. */ SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) { // When aOriginal is truthy but has empty values for .line and .column, // it is most likely a programmer error. In this case we throw a very // specific error message to try to guide them the right way. // For example: https://github.com/Polymer/polymer-bundler/pull/519 if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { throw new Error( 'original.line and original.column are not numbers -- you probably meant to omit ' + 'the original mapping entirely and only map the generated position. If so, pass ' + 'null for the original mapping instead of an object with empty or null values.' ); } if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) { // Case 1. return; } else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aOriginal && 'line' in aOriginal && 'column' in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) { // Cases 2 and 3. return; } else { throw new Error('Invalid mapping: ' + JSON.stringify({ generated: aGenerated, source: aSource, original: aOriginal, name: aName })); } }; /** * Serialize the accumulated mappings in to the stream of base 64 VLQs * specified by the source map format. */ SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() { var previousGeneratedColumn = 0; var previousGeneratedLine = 1; var previousOriginalColumn = 0; var previousOriginalLine = 0; var previousName = 0; var previousSource = 0; var result = ''; var next; var mapping; var nameIdx; var sourceIdx; var mappings = this._mappings.toArray(); for (var i = 0, len = mappings.length; i < len; i++) { mapping = mappings[i]; next = ''; if (mapping.generatedLine !== previousGeneratedLine) { previousGeneratedColumn = 0; while (mapping.generatedLine !== previousGeneratedLine) { next += ';'; previousGeneratedLine++; } } else { if (i > 0) { if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { continue; } next += ','; } } next += base64Vlq.encode(mapping.generatedColumn - previousGeneratedColumn); previousGeneratedColumn = mapping.generatedColumn; if (mapping.source != null) { sourceIdx = this._sources.indexOf(mapping.source); next += base64Vlq.encode(sourceIdx - previousSource); previousSource = sourceIdx; // lines are stored 0-based in SourceMap spec version 3 next += base64Vlq.encode(mapping.originalLine - 1 - previousOriginalLine); previousOriginalLine = mapping.originalLine - 1; next += base64Vlq.encode(mapping.originalColumn - previousOriginalColumn); previousOriginalColumn = mapping.originalColumn; if (mapping.name != null) { nameIdx = this._names.indexOf(mapping.name); next += base64Vlq.encode(nameIdx - previousName); previousName = nameIdx; } } result += next; } return result; }; SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { return aSources.map(function (source) { if (!this._sourcesContents) { return null; } if (aSourceRoot != null) { source = util.relative(aSourceRoot, source); } var key = util.toSetString(source); return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null; }, this); }; /** * Externalize the source map. */ SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() { var map = { version: this._version, sources: this._sources.toArray(), names: this._names.toArray(), mappings: this._serializeMappings() }; if (this._file != null) { map.file = this._file; } if (this._sourceRoot != null) { map.sourceRoot = this._sourceRoot; } if (this._sourcesContents) { map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); } return map; }; /** * Render the source map being generated to a string. */ SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() { return JSON.stringify(this.toJSON()); }; var SourceMapGenerator_1 = SourceMapGenerator; var sourceMapGenerator = { SourceMapGenerator: SourceMapGenerator_1 }; var binarySearch = createCommonjsModule(function (module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ exports.GREATEST_LOWER_BOUND = 1; exports.LEAST_UPPER_BOUND = 2; /** * Recursive implementation of binary search. * * @param aLow Indices here and lower do not contain the needle. * @param aHigh Indices here and higher do not contain the needle. * @param aNeedle The element being searched for. * @param aHaystack The non-empty array being searched. * @param aCompare Function which takes two elements and returns -1, 0, or 1. * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the * closest element that is smaller than or greater than the one we are * searching for, respectively, if the exact element cannot be found. */ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { // This function terminates when one of the following is true: // // 1. We find the exact element we are looking for. // // 2. We did not find the exact element, but we can return the index of // the next-closest element. // // 3. We did not find the exact element, and there is no next-closest // element than the one we are searching for, so we return -1. var mid = Math.floor((aHigh - aLow) / 2) + aLow; var cmp = aCompare(aNeedle, aHaystack[mid], true); if (cmp === 0) { // Found the element we are looking for. return mid; } else if (cmp > 0) { // Our needle is greater than aHaystack[mid]. if (aHigh - mid > 1) { // The element is in the upper half. return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); } // The exact needle element was not found in this haystack. Determine if // we are in termination case (3) or (2) and return the appropriate thing. if (aBias == exports.LEAST_UPPER_BOUND) { return aHigh < aHaystack.length ? aHigh : -1; } else { return mid; } } else { // Our needle is less than aHaystack[mid]. if (mid - aLow > 1) { // The element is in the lower half. return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); } // we are in termination case (3) or (2) and return the appropriate thing. if (aBias == exports.LEAST_UPPER_BOUND) { return mid; } else { return aLow < 0 ? -1 : aLow; } } } /** * This is an implementation of binary search which will always try and return * the index of the closest element if there is no exact hit. This is because * mappings between original and generated line/col pairs are single points, * and there is an implicit region between each of them, so a miss just means * that you aren't on the very start of a region. * * @param aNeedle The element you are looking for. * @param aHaystack The array that is being searched. * @param aCompare A function which takes the needle and an element in the * array and returns -1, 0, or 1 depending on whether the needle is less * than, equal to, or greater than the element, respectively. * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the * closest element that is smaller than or greater than the one we are * searching for, respectively, if the exact element cannot be found. * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. */ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { if (aHaystack.length === 0) { return -1; } var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports.GREATEST_LOWER_BOUND); if (index < 0) { return -1; } // We have found either the exact element, or the next-closest element than // the one we are searching for. However, there may be more than one such // element. Make sure we always return the smallest of these. while (index - 1 >= 0) { if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { break; } --index; } return index; }; }); /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ // It turns out that some (most?) JavaScript engines don't self-host // `Array.prototype.sort`. This makes sense because C++ will likely remain // faster than JS when doing raw CPU-intensive sorting. However, when using a // custom comparator function, calling back and forth between the VM's C++ and // JIT'd JS is rather slow *and* loses JIT type information, resulting in // worse generated code for the comparator function than would be optimal. In // fact, when sorting with a comparator, these costs outweigh the benefits of // sorting in C++. By using our own JS-implemented Quick Sort (below), we get // a ~3500ms mean speed-up in `bench/bench.html`. /** * Swap the elements indexed by `x` and `y` in the array `ary`. * * @param {Array} ary * The array. * @param {Number} x * The index of the first item. * @param {Number} y * The index of the second item. */ function swap(ary, x, y) { var temp = ary[x]; ary[x] = ary[y]; ary[y] = temp; } /** * Returns a random integer within the range `low .. high` inclusive. * * @param {Number} low * The lower bound on the range. * @param {Number} high * The upper bound on the range. */ function randomIntInRange(low, high) { return Math.round(low + (Math.random() * (high - low))); } /** * The Quick Sort algorithm. * * @param {Array} ary * An array to sort. * @param {function} comparator * Function to use to compare two items. * @param {Number} p * Start index of the array * @param {Number} r * End index of the array */ function doQuickSort(ary, comparator, p, r) { // If our lower bound is less than our upper bound, we (1) partition the // array into two pieces and (2) recurse on each half. If it is not, this is // the empty array and our base case. if (p < r) { // (1) Partitioning. // // The partitioning chooses a pivot between `p` and `r` and moves all // elements that are less than or equal to the pivot to the before it, and // all the elements that are greater than it after it. The effect is that // once partition is done, the pivot is in the exact place it will be when // the array is put in sorted order, and it will not need to be moved // again. This runs in O(n) time. // Always choose a random pivot so that an input array which is reverse // sorted does not cause O(n^2) running time. var pivotIndex = randomIntInRange(p, r); var i = p - 1; swap(ary, pivotIndex, r); var pivot = ary[r]; // Immediately after `j` is incremented in this loop, the following hold // true: // // * Every element in `ary[p .. i]` is less than or equal to the pivot. // // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. for (var j = p; j < r; j++) { if (comparator(ary[j], pivot) <= 0) { i += 1; swap(ary, i, j); } } swap(ary, i + 1, j); var q = i + 1; // (2) Recurse on each half. doQuickSort(ary, comparator, p, q - 1); doQuickSort(ary, comparator, q + 1, r); } } /** * Sort the given array in-place with the given comparator function. * * @param {Array} ary * An array to sort. * @param {function} comparator * Function to use to compare two items. */ var quickSort_1 = function (ary, comparator) { doQuickSort(ary, comparator, 0, ary.length - 1); }; var quickSort = { quickSort: quickSort_1 }; /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ var ArraySet$2 = arraySet.ArraySet; var quickSort$1 = quickSort.quickSort; function SourceMapConsumer(aSourceMap, aSourceMapURL) { var sourceMap = aSourceMap; if (typeof aSourceMap === 'string') { sourceMap = util.parseSourceMapInput(aSourceMap); } return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); } SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); }; /** * The version of the source mapping spec that we are consuming. */ SourceMapConsumer.prototype._version = 3; // `__generatedMappings` and `__originalMappings` are arrays that hold the // parsed mapping coordinates from the source map's "mappings" attribute. They // are lazily instantiated, accessed via the `_generatedMappings` and // `_originalMappings` getters respectively, and we only parse the mappings // and create these arrays once queried for a source location. We jump through // these hoops because there can be many thousands of mappings, and parsing // them is expensive, so we only want to do it if we must. // // Each object in the arrays is of the form: // // { // generatedLine: The line number in the generated code, // generatedColumn: The column number in the generated code, // source: The path to the original source file that generated this // chunk of code, // originalLine: The line number in the original source that // corresponds to this chunk of generated code, // originalColumn: The column number in the original source that // corresponds to this chunk of generated code, // name: The name of the original symbol which generated this chunk of // code. // } // // All properties except for `generatedLine` and `generatedColumn` can be // `null`. // // `_generatedMappings` is ordered by the generated positions. // // `_originalMappings` is ordered by the original positions. SourceMapConsumer.prototype.__generatedMappings = null; Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { configurable: true, enumerable: true, get: function () { if (!this.__generatedMappings) { this._parseMappings(this._mappings, this.sourceRoot); } return this.__generatedMappings; } }); SourceMapConsumer.prototype.__originalMappings = null; Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { configurable: true, enumerable: true, get: function () { if (!this.__originalMappings) { this._parseMappings(this._mappings, this.sourceRoot); } return this.__originalMappings; } }); SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) { var c = aStr.charAt(index); return c === ";" || c === ","; }; /** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */ SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { throw new Error("Subclasses must implement _parseMappings"); }; SourceMapConsumer.GENERATED_ORDER = 1; SourceMapConsumer.ORIGINAL_ORDER = 2; SourceMapConsumer.GREATEST_LOWER_BOUND = 1; SourceMapConsumer.LEAST_UPPER_BOUND = 2; /** * Iterate over each mapping between an original source/line/column and a * generated line/column in this source map. * * @param Function aCallback * The function that is called with each mapping. * @param Object aContext * Optional. If specified, this object will be the value of `this` every * time that `aCallback` is called. * @param aOrder * Either `SourceMapConsumer.GENERATED_ORDER` or * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to * iterate over the mappings sorted by the generated file's line/column * order or the original's source/line/column order, respectively. Defaults to * `SourceMapConsumer.GENERATED_ORDER`. */ SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { var context = aContext || null; var order = aOrder || SourceMapConsumer.GENERATED_ORDER; var mappings; switch (order) { case SourceMapConsumer.GENERATED_ORDER: mappings = this._generatedMappings; break; case SourceMapConsumer.ORIGINAL_ORDER: mappings = this._originalMappings; break; default: throw new Error("Unknown order of iteration."); } var sourceRoot = this.sourceRoot; mappings.map(function (mapping) { var source = mapping.source === null ? null : this._sources.at(mapping.source); source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); return { source: source, generatedLine: mapping.generatedLine, generatedColumn: mapping.generatedColumn, originalLine: mapping.originalLine, originalColumn: mapping.originalColumn, name: mapping.name === null ? null : this._names.at(mapping.name) }; }, this).forEach(aCallback, context); }; /** * Returns all generated line and column information for the original source, * line, and column provided. If no column is provided, returns all mappings * corresponding to a either the line we are searching for or the next * closest line that has any mappings. Otherwise, returns all mappings * corresponding to the given line and either the column we are searching for * or the next closest column that has any offsets. * * The only argument is an object with the following properties: * * - source: The filename of the original source. * - line: The line number in the original source. The line number is 1-based. * - column: Optional. the column number in the original source. * The column number is 0-based. * * and an array of objects is returned, each with the following properties: * * - line: The line number in the generated source, or null. The * line number is 1-based. * - column: The column number in the generated source, or null. * The column number is 0-based. */ SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { var line = util.getArg(aArgs, 'line'); // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping // returns the index of the closest mapping less than the needle. By // setting needle.originalColumn to 0, we thus find the last mapping for // the given line, provided such a mapping exists. var needle = { source: util.getArg(aArgs, 'source'), originalLine: line, originalColumn: util.getArg(aArgs, 'column', 0) }; needle.source = this._findSourceIndex(needle.source); if (needle.source < 0) { return []; } var mappings = []; var index = this._findMapping(needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND); if (index >= 0) { var mapping = this._originalMappings[index]; if (aArgs.column === undefined) { var originalLine = mapping.originalLine; // Iterate until either we run out of mappings, or we run into // a mapping for a different line than the one we found. Since // mappings are sorted, this is guaranteed to find all mappings for // the line we found. while (mapping && mapping.originalLine === originalLine) { mappings.push({ line: util.getArg(mapping, 'generatedLine', null), column: util.getArg(mapping, 'generatedColumn', null), lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) }); mapping = this._originalMappings[++index]; } } else { var originalColumn = mapping.originalColumn; // Iterate until either we run out of mappings, or we run into // a mapping for a different line than the one we were searching for. // Since mappings are sorted, this is guaranteed to find all mappings for // the line we are searching for. while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) { mappings.push({ line: util.getArg(mapping, 'generatedLine', null), column: util.getArg(mapping, 'generatedColumn', null), lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) }); mapping = this._originalMappings[++index]; } } } return mappings; }; var SourceMapConsumer_1 = SourceMapConsumer; /** * A BasicSourceMapConsumer instance represents a parsed source map which we can * query for information about the original file positions by giving it a file * position in the generated source. * * The first parameter is the raw source map (either as a JSON string, or * already parsed to an object). According to the spec, source maps have the * following attributes: * * - version: Which version of the source map spec this map is following. * - sources: An array of URLs to the original source files. * - names: An array of identifiers which can be referrenced by individual mappings. * - sourceRoot: Optional. The URL root from which all sources are relative. * - sourcesContent: Optional. An array of contents of the original source files. * - mappings: A string of base64 VLQs which contain the actual mappings. * - file: Optional. The generated file this source map is associated with. * * Here is an example source map, taken from the source map spec[0]: * * { * version : 3, * file: "out.js", * sourceRoot : "", * sources: ["foo.js", "bar.js"], * names: ["src", "maps", "are", "fun"], * mappings: "AA,AB;;ABCDE;" * } * * The second parameter, if given, is a string whose value is the URL * at which the source map was found. This URL is used to compute the * sources array. * * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# */ function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { var sourceMap = aSourceMap; if (typeof aSourceMap === 'string') { sourceMap = util.parseSourceMapInput(aSourceMap); } var version = util.getArg(sourceMap, 'version'); var sources = util.getArg(sourceMap, 'sources'); // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which // requires the array) to play nice here. var names = util.getArg(sourceMap, 'names', []); var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); var mappings = util.getArg(sourceMap, 'mappings'); var file = util.getArg(sourceMap, 'file', null); // Once again, Sass deviates from the spec and supplies the version as a // string rather than a number, so we use loose equality checking here. if (version != this._version) { throw new Error('Unsupported version: ' + version); } if (sourceRoot) { sourceRoot = util.normalize(sourceRoot); } sources = sources .map(String) // Some source maps produce relative source paths like "./foo.js" instead of // "foo.js". Normalize these first so that future comparisons will succeed. // See bugzil.la/1090768. .map(util.normalize) // Always ensure that absolute sources are internally stored relative to // the source root, if the source root is absolute. Not doing this would // be particularly problematic when the source root is a prefix of the // source (valid, but why??). See github issue #199 and bugzil.la/1188982. .map(function (source) { return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source; }); // Pass `true` below to allow duplicate names and sources. While source maps // are intended to be compressed and deduplicated, the TypeScript compiler // sometimes generates source maps with duplicates in them. See Github issue // #72 and bugzil.la/889492. this._names = ArraySet$2.fromArray(names.map(String), true); this._sources = ArraySet$2.fromArray(sources, true); this._absoluteSources = this._sources.toArray().map(function (s) { return util.computeSourceURL(sourceRoot, s, aSourceMapURL); }); this.sourceRoot = sourceRoot; this.sourcesContent = sourcesContent; this._mappings = mappings; this._sourceMapURL = aSourceMapURL; this.file = file; } BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; /** * Utility function to find the index of a source. Returns -1 if not * found. */ BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { var relativeSource = aSource; if (this.sourceRoot != null) { relativeSource = util.relative(this.sourceRoot, relativeSource); } if (this._sources.has(relativeSource)) { return this._sources.indexOf(relativeSource); } // Maybe aSource is an absolute URL as returned by |sources|. In // this case we can't simply undo the transform. var i; for (i = 0; i < this._absoluteSources.length; ++i) { if (this._absoluteSources[i] == aSource) { return i; } } return -1; }; /** * Create a BasicSourceMapConsumer from a SourceMapGenerator. * * @param SourceMapGenerator aSourceMap * The source map that will be consumed. * @param String aSourceMapURL * The URL at which the source map can be found (optional) * @returns BasicSourceMapConsumer */ BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { var smc = Object.create(BasicSourceMapConsumer.prototype); var names = smc._names = ArraySet$2.fromArray(aSourceMap._names.toArray(), true); var sources = smc._sources = ArraySet$2.fromArray(aSourceMap._sources.toArray(), true); smc.sourceRoot = aSourceMap._sourceRoot; smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot); smc.file = aSourceMap._file; smc._sourceMapURL = aSourceMapURL; smc._absoluteSources = smc._sources.toArray().map(function (s) { return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); }); // Because we are modifying the entries (by converting string sources and // names to indices into the sources and names ArraySets), we have to make // a copy of the entry or else bad things happen. Shared mutable state // strikes again! See github issue #191. var generatedMappings = aSourceMap._mappings.toArray().slice(); var destGeneratedMappings = smc.__generatedMappings = []; var destOriginalMappings = smc.__originalMappings = []; for (var i = 0, length = generatedMappings.length; i < length; i++) { var srcMapping = generatedMappings[i]; var destMapping = new Mapping; destMapping.generatedLine = srcMapping.generatedLine; destMapping.generatedColumn = srcMapping.generatedColumn; if (srcMapping.source) { destMapping.source = sources.indexOf(srcMapping.source); destMapping.originalLine = srcMapping.originalLine; destMapping.originalColumn = srcMapping.originalColumn; if (srcMapping.name) { destMapping.name = names.indexOf(srcMapping.name); } destOriginalMappings.push(destMapping); } destGeneratedMappings.push(destMapping); } quickSort$1(smc.__originalMappings, util.compareByOriginalPositions); return smc; }; /** * The version of the source mapping spec that we are consuming. */ BasicSourceMapConsumer.prototype._version = 3; /** * The list of original sources. */ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { get: function () { return this._absoluteSources.slice(); } }); /** * Provide the JIT with a nice shape / hidden class. */ function Mapping() { this.generatedLine = 0; this.generatedColumn = 0; this.source = null; this.originalLine = null; this.originalColumn = null; this.name = null; } /** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */ BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { var generatedLine = 1; var previousGeneratedColumn = 0; var previousOriginalLine = 0; var previousOriginalColumn = 0; var previousSource = 0; var previousName = 0; var length = aStr.length; var index = 0; var cachedSegments = {}; var temp = {}; var originalMappings = []; var generatedMappings = []; var mapping, str, segment, end, value; while (index < length) { if (aStr.charAt(index) === ';') { generatedLine++; index++; previousGeneratedColumn = 0; } else if (aStr.charAt(index) === ',') { index++; } else { mapping = new Mapping(); mapping.generatedLine = generatedLine; // Because each offset is encoded relative to the previous one, // many segments often have the same encoding. We can exploit this // fact by caching the parsed variable length fields of each segment, // allowing us to avoid a second parse if we encounter the same // segment again. for (end = index; end < length; end++) { if (this._charIsMappingSeparator(aStr, end)) { break; } } str = aStr.slice(index, end); segment = cachedSegments[str]; if (segment) { index += str.length; } else { segment = []; while (index < end) { base64Vlq.decode(aStr, index, temp); value = temp.value; index = temp.rest; segment.push(value); } if (segment.length === 2) { throw new Error('Found a source, but no line and column'); } if (segment.length === 3) { throw new Error('Found a source and line, but no column'); } cachedSegments[str] = segment; } // Generated column. mapping.generatedColumn = previousGeneratedColumn + segment[0]; previousGeneratedColumn = mapping.generatedColumn; if (segment.length > 1) { // Original source. mapping.source = previousSource + segment[1]; previousSource += segment[1]; // Original line. mapping.originalLine = previousOriginalLine + segment[2]; previousOriginalLine = mapping.originalLine; // Lines are stored 0-based mapping.originalLine += 1; // Original column. mapping.originalColumn = previousOriginalColumn + segment[3]; previousOriginalColumn = mapping.originalColumn; if (segment.length > 4) { // Original name. mapping.name = previousName + segment[4]; previousName += segment[4]; } } generatedMappings.push(mapping); if (typeof mapping.originalLine === 'number') { originalMappings.push(mapping); } } } quickSort$1(generatedMappings, util.compareByGeneratedPositionsDeflated); this.__generatedMappings = generatedMappings; quickSort$1(originalMappings, util.compareByOriginalPositions); this.__originalMappings = originalMappings; }; /** * Find the mapping that best matches the hypothetical "needle" mapping that * we are searching for in the given "haystack" of mappings. */ BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) { // To return the position we are searching for, we must first find the // mapping for the given position and then return the opposite position it // points to. Because the mappings are sorted, we can use binary search to // find the best mapping. if (aNeedle[aLineName] <= 0) { throw new TypeError('Line must be greater than or equal to 1, got ' + aNeedle[aLineName]); } if (aNeedle[aColumnName] < 0) { throw new TypeError('Column must be greater than or equal to 0, got ' + aNeedle[aColumnName]); } return binarySearch.search(aNeedle, aMappings, aComparator, aBias); }; /** * Compute the last column for each generated mapping. The last column is * inclusive. */ BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() { for (var index = 0; index < this._generatedMappings.length; ++index) { var mapping = this._generatedMappings[index]; // Mappings do not contain a field for the last generated columnt. We // can come up with an optimistic estimate, however, by assuming that // mappings are contiguous (i.e. given two consecutive mappings, the // first mapping ends where the second one starts). if (index + 1 < this._generatedMappings.length) { var nextMapping = this._generatedMappings[index + 1]; if (mapping.generatedLine === nextMapping.generatedLine) { mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; continue; } } // The last mapping for each line spans the entire line. mapping.lastGeneratedColumn = Infinity; } }; /** * Returns the original source, line, and column information for the generated * source's line and column positions provided. The only argument is an object * with the following properties: * * - line: The line number in the generated source. The line number * is 1-based. * - column: The column number in the generated source. The column * number is 0-based. * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the * closest element that is smaller than or greater than the one we are * searching for, respectively, if the exact element cannot be found. * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. * * and an object is returned with the following properties: * * - source: The original source file, or null. * - line: The line number in the original source, or null. The * line number is 1-based. * - column: The column number in the original source, or null. The * column number is 0-based. * - name: The original identifier, or null. */ BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) { var needle = { generatedLine: util.getArg(aArgs, 'line'), generatedColumn: util.getArg(aArgs, 'column') }; var index = this._findMapping( needle, this._generatedMappings, "generatedLine", "generatedColumn", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) ); if (index >= 0) { var mapping = this._generatedMappings[index]; if (mapping.generatedLine === needle.generatedLine) { var source = util.getArg(mapping, 'source', null); if (source !== null) { source = this._sources.at(source); source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); } var name = util.getArg(mapping, 'name', null); if (name !== null) { name = this._names.at(name); } return { source: source, line: util.getArg(mapping, 'originalLine', null), column: util.getArg(mapping, 'originalColumn', null), name: name }; } } return { source: null, line: null, column: null, name: null }; }; /** * Return true if we have the source content for every source in the source * map, false otherwise. */ BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() { if (!this.sourcesContent) { return false; } return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function (sc) { return sc == null; }); }; /** * Returns the original source content. The only argument is the url of the * original source file. Returns null if no original source content is * available. */ BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { if (!this.sourcesContent) { return null; } var index = this._findSourceIndex(aSource); if (index >= 0) { return this.sourcesContent[index]; } var relativeSource = aSource; if (this.sourceRoot != null) { relativeSource = util.relative(this.sourceRoot, relativeSource); } var url; if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) { // XXX: file:// URIs and absolute paths lead to unexpected behavior for // many users. We can help them out when they expect file:// URIs to // behave like it would if they were running a local HTTP server. See // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) { return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] } if ((!url.path || url.path == "/") && this._sources.has("/" + relativeSource)) { return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; } } // This function is used recursively from // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we // don't want to throw if we can't find the source - we just want to // return null, so we provide a flag to exit gracefully. if (nullOnMissing) { return null; } else { throw new Error('"' + relativeSource + '" is not in the SourceMap.'); } }; /** * Returns the generated line and column information for the original source, * line, and column positions provided. The only argument is an object with * the following properties: * * - source: The filename of the original source. * - line: The line number in the original source. The line number * is 1-based. * - column: The column number in the original source. The column * number is 0-based. * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the * closest element that is smaller than or greater than the one we are * searching for, respectively, if the exact element cannot be found. * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. * * and an object is returned with the following properties: * * - line: The line number in the generated source, or null. The * line number is 1-based. * - column: The column number in the generated source, or null. * The column number is 0-based. */ BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) { var source = util.getArg(aArgs, 'source'); source = this._findSourceIndex(source); if (source < 0) { return { line: null, column: null, lastColumn: null }; } var needle = { source: source, originalLine: util.getArg(aArgs, 'line'), originalColumn: util.getArg(aArgs, 'column') }; var index = this._findMapping( needle, this._originalMappings, "originalLine", "originalColumn", util.compareByOriginalPositions, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) ); if (index >= 0) { var mapping = this._originalMappings[index]; if (mapping.source === needle.source) { return { line: util.getArg(mapping, 'generatedLine', null), column: util.getArg(mapping, 'generatedColumn', null), lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) }; } } return { line: null, column: null, lastColumn: null }; }; var BasicSourceMapConsumer_1 = BasicSourceMapConsumer; /** * An IndexedSourceMapConsumer instance represents a parsed source map which * we can query for information. It differs from BasicSourceMapConsumer in * that it takes "indexed" source maps (i.e. ones with a "sections" field) as * input. * * The first parameter is a raw source map (either as a JSON string, or already * parsed to an object). According to the spec for indexed source maps, they * have the following attributes: * * - version: Which version of the source map spec this map is following. * - file: Optional. The generated file this source map is associated with. * - sections: A list of section definitions. * * Each value under the "sections" field has two fields: * - offset: The offset into the original specified at which this section * begins to apply, defined as an object with a "line" and "column" * field. * - map: A source map definition. This source map could also be indexed, * but doesn't have to be. * * Instead of the "map" field, it's also possible to have a "url" field * specifying a URL to retrieve a source map from, but that's currently * unsupported. * * Here's an example source map, taken from the source map spec[0], but * modified to omit a section which uses the "url" field. * * { * version : 3, * file: "app.js", * sections: [{ * offset: {line:100, column:10}, * map: { * version : 3, * file: "section.js", * sources: ["foo.js", "bar.js"], * names: ["src", "maps", "are", "fun"], * mappings: "AAAA,E;;ABCDE;" * } * }], * } * * The second parameter, if given, is a string whose value is the URL * at which the source map was found. This URL is used to compute the * sources array. * * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt */ function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { var sourceMap = aSourceMap; if (typeof aSourceMap === 'string') { sourceMap = util.parseSourceMapInput(aSourceMap); } var version = util.getArg(sourceMap, 'version'); var sections = util.getArg(sourceMap, 'sections'); if (version != this._version) { throw new Error('Unsupported version: ' + version); } this._sources = new ArraySet$2(); this._names = new ArraySet$2(); var lastOffset = { line: -1, column: 0 }; this._sections = sections.map(function (s) { if (s.url) { // The url field will require support for asynchronicity. // See https://github.com/mozilla/source-map/issues/16 throw new Error('Support for url field in sections not implemented.'); } var offset = util.getArg(s, 'offset'); var offsetLine = util.getArg(offset, 'line'); var offsetColumn = util.getArg(offset, 'column'); if (offsetLine < lastOffset.line || (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { throw new Error('Section offsets must be ordered and non-overlapping.'); } lastOffset = offset; return { generatedOffset: { // The offset fields are 0-based, but we use 1-based indices when // encoding/decoding from VLQ. generatedLine: offsetLine + 1, generatedColumn: offsetColumn + 1 }, consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) } }); } IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; /** * The version of the source mapping spec that we are consuming. */ IndexedSourceMapConsumer.prototype._version = 3; /** * The list of original sources. */ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { get: function () { var sources = []; for (var i = 0; i < this._sections.length; i++) { for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { sources.push(this._sections[i].consumer.sources[j]); } } return sources; } }); /** * Returns the original source, line, and column information for the generated * source's line and column positions provided. The only argument is an object * with the following properties: * * - line: The line number in the generated source. The line number * is 1-based. * - column: The column number in the generated source. The column * number is 0-based. * * and an object is returned with the following properties: * * - source: The original source file, or null. * - line: The line number in the original source, or null. The * line number is 1-based. * - column: The column number in the original source, or null. The * column number is 0-based. * - name: The original identifier, or null. */ IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) { var needle = { generatedLine: util.getArg(aArgs, 'line'), generatedColumn: util.getArg(aArgs, 'column') }; // Find the section containing the generated position we're trying to map // to an original position. var sectionIndex = binarySearch.search(needle, this._sections, function(needle, section) { var cmp = needle.generatedLine - section.generatedOffset.generatedLine; if (cmp) { return cmp; } return (needle.generatedColumn - section.generatedOffset.generatedColumn); }); var section = this._sections[sectionIndex]; if (!section) { return { source: null, line: null, column: null, name: null }; } return section.consumer.originalPositionFor({ line: needle.generatedLine - (section.generatedOffset.generatedLine - 1), column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), bias: aArgs.bias }); }; /** * Return true if we have the source content for every source in the source * map, false otherwise. */ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() { return this._sections.every(function (s) { return s.consumer.hasContentsOfAllSources(); }); }; /** * Returns the original source content. The only argument is the url of the * original source file. Returns null if no original source content is * available. */ IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { for (var i = 0; i < this._sections.length; i++) { var section = this._sections[i]; var content = section.consumer.sourceContentFor(aSource, true); if (content) { return content; } } if (nullOnMissing) { return null; } else { throw new Error('"' + aSource + '" is not in the SourceMap.'); } }; /** * Returns the generated line and column information for the original source, * line, and column positions provided. The only argument is an object with * the following properties: * * - source: The filename of the original source. * - line: The line number in the original source. The line number * is 1-based. * - column: The column number in the original source. The column * number is 0-based. * * and an object is returned with the following properties: * * - line: The line number in the generated source, or null. The * line number is 1-based. * - column: The column number in the generated source, or null. * The column number is 0-based. */ IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { for (var i = 0; i < this._sections.length; i++) { var section = this._sections[i]; // Only consider this section if the requested source is in the list of // sources of the consumer. if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { continue; } var generatedPosition = section.consumer.generatedPositionFor(aArgs); if (generatedPosition) { var ret = { line: generatedPosition.line + (section.generatedOffset.generatedLine - 1), column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0) }; return ret; } } return { line: null, column: null }; }; /** * Parse the mappings in a string in to a data structure which we can easily * query (the ordered arrays in the `this.__generatedMappings` and * `this.__originalMappings` properties). */ IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { this.__generatedMappings = []; this.__originalMappings = []; for (var i = 0; i < this._sections.length; i++) { var section = this._sections[i]; var sectionMappings = section.consumer._generatedMappings; for (var j = 0; j < sectionMappings.length; j++) { var mapping = sectionMappings[j]; var source = section.consumer._sources.at(mapping.source); source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); this._sources.add(source); source = this._sources.indexOf(source); var name = null; if (mapping.name) { name = section.consumer._names.at(mapping.name); this._names.add(name); name = this._names.indexOf(name); } // The mappings coming from the consumer for the section have // generated positions relative to the start of the section, so we // need to offset them to be relative to the start of the concatenated // generated file. var adjustedMapping = { source: source, generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1), generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), originalLine: mapping.originalLine, originalColumn: mapping.originalColumn, name: name }; this.__generatedMappings.push(adjustedMapping); if (typeof adjustedMapping.originalLine === 'number') { this.__originalMappings.push(adjustedMapping); } } } quickSort$1(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); quickSort$1(this.__originalMappings, util.compareByOriginalPositions); }; var IndexedSourceMapConsumer_1 = IndexedSourceMapConsumer; var sourceMapConsumer = { SourceMapConsumer: SourceMapConsumer_1, BasicSourceMapConsumer: BasicSourceMapConsumer_1, IndexedSourceMapConsumer: IndexedSourceMapConsumer_1 }; /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ var SourceMapGenerator$1 = sourceMapGenerator.SourceMapGenerator; // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other // operating systems these days (capturing the result). var REGEX_NEWLINE = /(\r?\n)/; // Newline character code for charCodeAt() comparisons var NEWLINE_CODE = 10; // Private symbol for identifying `SourceNode`s when multiple versions of // the source-map library are loaded. This MUST NOT CHANGE across // versions! var isSourceNode = "$$$isSourceNode$$$"; /** * SourceNodes provide a way to abstract over interpolating/concatenating * snippets of generated JavaScript source code while maintaining the line and * column information associated with the original source code. * * @param aLine The original line number. * @param aColumn The original column number. * @param aSource The original source's filename. * @param aChunks Optional. An array of strings which are snippets of * generated JS, or other SourceNodes. * @param aName The original identifier. */ function SourceNode(aLine, aColumn, aSource, aChunks, aName) { this.children = []; this.sourceContents = {}; this.line = aLine == null ? null : aLine; this.column = aColumn == null ? null : aColumn; this.source = aSource == null ? null : aSource; this.name = aName == null ? null : aName; this[isSourceNode] = true; if (aChunks != null) this.add(aChunks); } /** * Creates a SourceNode from generated code and a SourceMapConsumer. * * @param aGeneratedCode The generated code * @param aSourceMapConsumer The SourceMap for the generated code * @param aRelativePath Optional. The path that relative sources in the * SourceMapConsumer should be relative to. */ SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { // The SourceNode we want to fill with the generated code // and the SourceMap var node = new SourceNode(); // All even indices of this array are one line of the generated code, // while all odd indices are the newlines between two adjacent lines // (since `REGEX_NEWLINE` captures its match). // Processed fragments are accessed by calling `shiftNextLine`. var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); var remainingLinesIndex = 0; var shiftNextLine = function() { var lineContents = getNextLine(); // The last line of a file might not have a newline. var newLine = getNextLine() || ""; return lineContents + newLine; function getNextLine() { return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : undefined; } }; // We need to remember the position of "remainingLines" var lastGeneratedLine = 1, lastGeneratedColumn = 0; // The generate SourceNodes we need a code range. // To extract it current and last mapping is used. // Here we store the last mapping. var lastMapping = null; aSourceMapConsumer.eachMapping(function (mapping) { if (lastMapping !== null) { // We add the code from "lastMapping" to "mapping": // First check if there is a new line in between. if (lastGeneratedLine < mapping.generatedLine) { // Associate first line with "lastMapping" addMappingWithCode(lastMapping, shiftNextLine()); lastGeneratedLine++; lastGeneratedColumn = 0; // The remaining code is added without mapping } else { // There is no new line in between. // Associate the code between "lastGeneratedColumn" and // "mapping.generatedColumn" with "lastMapping" var nextLine = remainingLines[remainingLinesIndex] || ''; var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn); remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn); lastGeneratedColumn = mapping.generatedColumn; addMappingWithCode(lastMapping, code); // No more remaining code, continue lastMapping = mapping; return; } } // We add the generated code until the first mapping // to the SourceNode without any mapping. // Each line is added as separate string. while (lastGeneratedLine < mapping.generatedLine) { node.add(shiftNextLine()); lastGeneratedLine++; } if (lastGeneratedColumn < mapping.generatedColumn) { var nextLine = remainingLines[remainingLinesIndex] || ''; node.add(nextLine.substr(0, mapping.generatedColumn)); remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); lastGeneratedColumn = mapping.generatedColumn; } lastMapping = mapping; }, this); // We have processed all mappings. if (remainingLinesIndex < remainingLines.length) { if (lastMapping) { // Associate the remaining code in the current line with "lastMapping" addMappingWithCode(lastMapping, shiftNextLine()); } // and add the remaining lines without any mapping node.add(remainingLines.splice(remainingLinesIndex).join("")); } // Copy sourcesContent into SourceNode aSourceMapConsumer.sources.forEach(function (sourceFile) { var content = aSourceMapConsumer.sourceContentFor(sourceFile); if (content != null) { if (aRelativePath != null) { sourceFile = util.join(aRelativePath, sourceFile); } node.setSourceContent(sourceFile, content); } }); return node; function addMappingWithCode(mapping, code) { if (mapping === null || mapping.source === undefined) { node.add(code); } else { var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source; node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, source, code, mapping.name)); } } }; /** * Add a chunk of generated JS to this source node. * * @param aChunk A string snippet of generated JS code, another instance of * SourceNode, or an array where each member is one of those things. */ SourceNode.prototype.add = function SourceNode_add(aChunk) { if (Array.isArray(aChunk)) { aChunk.forEach(function (chunk) { this.add(chunk); }, this); } else if (aChunk[isSourceNode] || typeof aChunk === "string") { if (aChunk) { this.children.push(aChunk); } } else { throw new TypeError( "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk ); } return this; }; /** * Add a chunk of generated JS to the beginning of this source node. * * @param aChunk A string snippet of generated JS code, another instance of * SourceNode, or an array where each member is one of those things. */ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { if (Array.isArray(aChunk)) { for (var i = aChunk.length-1; i >= 0; i--) { this.prepend(aChunk[i]); } } else if (aChunk[isSourceNode] || typeof aChunk === "string") { this.children.unshift(aChunk); } else { throw new TypeError( "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk ); } return this; }; /** * Walk over the tree of JS snippets in this node and its children. The * walking function is called once for each snippet of JS and is passed that * snippet and the its original associated source's line/column location. * * @param aFn The traversal function. */ SourceNode.prototype.walk = function SourceNode_walk(aFn) { var chunk; for (var i = 0, len = this.children.length; i < len; i++) { chunk = this.children[i]; if (chunk[isSourceNode]) { chunk.walk(aFn); } else { if (chunk !== '') { aFn(chunk, { source: this.source, line: this.line, column: this.column, name: this.name }); } } } }; /** * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between * each of `this.children`. * * @param aSep The separator. */ SourceNode.prototype.join = function SourceNode_join(aSep) { var newChildren; var i; var len = this.children.length; if (len > 0) { newChildren = []; for (i = 0; i < len-1; i++) { newChildren.push(this.children[i]); newChildren.push(aSep); } newChildren.push(this.children[i]); this.children = newChildren; } return this; }; /** * Call String.prototype.replace on the very right-most source snippet. Useful * for trimming whitespace from the end of a source node, etc. * * @param aPattern The pattern to replace. * @param aReplacement The thing to replace the pattern with. */ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { var lastChild = this.children[this.children.length - 1]; if (lastChild[isSourceNode]) { lastChild.replaceRight(aPattern, aReplacement); } else if (typeof lastChild === 'string') { this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); } else { this.children.push(''.replace(aPattern, aReplacement)); } return this; }; /** * Set the source content for a source file. This will be added to the SourceMapGenerator * in the sourcesContent field. * * @param aSourceFile The filename of the source file * @param aSourceContent The content of the source file */ SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) { this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; }; /** * Walk over the tree of SourceNodes. The walking function is called for each * source file content and is passed the filename and source content. * * @param aFn The traversal function. */ SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) { for (var i = 0, len = this.children.length; i < len; i++) { if (this.children[i][isSourceNode]) { this.children[i].walkSourceContents(aFn); } } var sources = Object.keys(this.sourceContents); for (var i = 0, len = sources.length; i < len; i++) { aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); } }; /** * Return the string representation of this source node. Walks over the tree * and concatenates all the various snippets together to one string. */ SourceNode.prototype.toString = function SourceNode_toString() { var str = ""; this.walk(function (chunk) { str += chunk; }); return str; }; /** * Returns the string representation of this source node along with a source * map. */ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { var generated = { code: "", line: 1, column: 0 }; var map = new SourceMapGenerator$1(aArgs); var sourceMappingActive = false; var lastOriginalSource = null; var lastOriginalLine = null; var lastOriginalColumn = null; var lastOriginalName = null; this.walk(function (chunk, original) { generated.code += chunk; if (original.source !== null && original.line !== null && original.column !== null) { if(lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) { map.addMapping({ source: original.source, original: { line: original.line, column: original.column }, generated: { line: generated.line, column: generated.column }, name: original.name }); } lastOriginalSource = original.source; lastOriginalLine = original.line; lastOriginalColumn = original.column; lastOriginalName = original.name; sourceMappingActive = true; } else if (sourceMappingActive) { map.addMapping({ generated: { line: generated.line, column: generated.column } }); lastOriginalSource = null; sourceMappingActive = false; } for (var idx = 0, length = chunk.length; idx < length; idx++) { if (chunk.charCodeAt(idx) === NEWLINE_CODE) { generated.line++; generated.column = 0; // Mappings end at eol if (idx + 1 === length) { lastOriginalSource = null; sourceMappingActive = false; } else if (sourceMappingActive) { map.addMapping({ source: original.source, original: { line: original.line, column: original.column }, generated: { line: generated.line, column: generated.column }, name: original.name }); } } else { generated.column++; } } }); this.walkSourceContents(function (sourceFile, sourceContent) { map.setSourceContent(sourceFile, sourceContent); }); return { code: generated.code, map: map }; }; var SourceNode_1 = SourceNode; var sourceNode = { SourceNode: SourceNode_1 }; /* * Copyright 2009-2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE.txt or: * http://opensource.org/licenses/BSD-3-Clause */ var SourceMapGenerator$2 = sourceMapGenerator.SourceMapGenerator; var SourceMapConsumer$1 = sourceMapConsumer.SourceMapConsumer; var SourceNode$1 = sourceNode.SourceNode; var sourceMap = { SourceMapGenerator: SourceMapGenerator$2, SourceMapConsumer: SourceMapConsumer$1, SourceNode: SourceNode$1 }; var codeGen = createCommonjsModule(function (module, exports) { exports.__esModule = true; var SourceNode = undefined; try { /* istanbul ignore next */ if (typeof undefined !== 'function' || !undefined.amd) { // We don't support this in AMD environments. For these environments, we asusme that // they are running on the browser and thus have no need for the source-map library. var SourceMap = sourceMap; SourceNode = SourceMap.SourceNode; } } catch (err) {} /* NOP */ /* istanbul ignore if: tested but not covered in istanbul due to dist build */ if (!SourceNode) { SourceNode = function (line, column, srcFile, chunks) { this.src = ''; if (chunks) { this.add(chunks); } }; /* istanbul ignore next */ SourceNode.prototype = { add: function add(chunks) { if (utils$2.isArray(chunks)) { chunks = chunks.join(''); } this.src += chunks; }, prepend: function prepend(chunks) { if (utils$2.isArray(chunks)) { chunks = chunks.join(''); } this.src = chunks + this.src; }, toStringWithSourceMap: function toStringWithSourceMap() { return { code: this.toString() }; }, toString: function toString() { return this.src; } }; } function castChunk(chunk, codeGen, loc) { if (utils$2.isArray(chunk)) { var ret = []; for (var i = 0, len = chunk.length; i < len; i++) { ret.push(codeGen.wrap(chunk[i], loc)); } return ret; } else if (typeof chunk === 'boolean' || typeof chunk === 'number') { // Handle primitives that the SourceNode will throw up on return chunk + ''; } return chunk; } function CodeGen(srcFile) { this.srcFile = srcFile; this.source = []; } CodeGen.prototype = { isEmpty: function isEmpty() { return !this.source.length; }, prepend: function prepend(source, loc) { this.source.unshift(this.wrap(source, loc)); }, push: function push(source, loc) { this.source.push(this.wrap(source, loc)); }, merge: function merge() { var source = this.empty(); this.each(function (line) { source.add([' ', line, '\n']); }); return source; }, each: function each(iter) { for (var i = 0, len = this.source.length; i < len; i++) { iter(this.source[i]); } }, empty: function empty() { var loc = this.currentLocation || { start: {} }; return new SourceNode(loc.start.line, loc.start.column, this.srcFile); }, wrap: function wrap(chunk) { var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1]; if (chunk instanceof SourceNode) { return chunk; } chunk = castChunk(chunk, this, loc); return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk); }, functionCall: function functionCall(fn, type, params) { params = this.generateList(params); return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']); }, quotedString: function quotedString(str) { return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4 .replace(/\u2029/g, '\\u2029') + '"'; }, objectLiteral: function objectLiteral(obj) { // istanbul ignore next var _this = this; var pairs = []; Object.keys(obj).forEach(function (key) { var value = castChunk(obj[key], _this); if (value !== 'undefined') { pairs.push([_this.quotedString(key), ':', value]); } }); var ret = this.generateList(pairs); ret.prepend('{'); ret.add('}'); return ret; }, generateList: function generateList(entries) { var ret = this.empty(); for (var i = 0, len = entries.length; i < len; i++) { if (i) { ret.add(','); } ret.add(castChunk(entries[i], this)); } return ret; }, generateArray: function generateArray(entries) { var ret = this.generateList(entries); ret.prepend('['); ret.add(']'); return ret; } }; exports['default'] = CodeGen; module.exports = exports['default']; }); var javascriptCompiler = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _exception2 = _interopRequireDefault(exception); var _codeGen2 = _interopRequireDefault(codeGen); function Literal(value) { this.value = value; } function JavaScriptCompiler() {} JavaScriptCompiler.prototype = { // PUBLIC API: You can override these methods in a subclass to provide // alternative compiled forms for name lookup and buffering semantics nameLookup: function nameLookup(parent, name /*, type */) { return this.internalNameLookup(parent, name); }, depthedLookup: function depthedLookup(name) { return [this.aliasable('container.lookup'), '(depths, "', name, '")']; }, compilerInfo: function compilerInfo() { var revision = base.COMPILER_REVISION, versions = base.REVISION_CHANGES[revision]; return [revision, versions]; }, appendToBuffer: function appendToBuffer(source, location, explicit) { // Force a source as this simplifies the merge logic. if (!utils$2.isArray(source)) { source = [source]; } source = this.source.wrap(source, location); if (this.environment.isSimple) { return ['return ', source, ';']; } else if (explicit) { // This is a case where the buffer operation occurs as a child of another // construct, generally braces. We have to explicitly output these buffer // operations to ensure that the emitted code goes in the correct location. return ['buffer += ', source, ';']; } else { source.appendToBuffer = true; return source; } }, initializeBuffer: function initializeBuffer() { return this.quotedString(''); }, // END PUBLIC API internalNameLookup: function internalNameLookup(parent, name) { this.lookupPropertyFunctionIsUsed = true; return ['lookupProperty(', parent, ',', JSON.stringify(name), ')']; }, lookupPropertyFunctionIsUsed: false, compile: function compile(environment, options, context, asObject) { this.environment = environment; this.options = options; this.stringParams = this.options.stringParams; this.trackIds = this.options.trackIds; this.precompile = !asObject; this.name = this.environment.name; this.isChild = !!context; this.context = context || { decorators: [], programs: [], environments: [] }; this.preamble(); this.stackSlot = 0; this.stackVars = []; this.aliases = {}; this.registers = { list: [] }; this.hashes = []; this.compileStack = []; this.inlineStack = []; this.blockParams = []; this.compileChildren(environment, options); this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat; this.useBlockParams = this.useBlockParams || environment.useBlockParams; var opcodes = environment.opcodes, opcode = undefined, firstLoc = undefined, i = undefined, l = undefined; for (i = 0, l = opcodes.length; i < l; i++) { opcode = opcodes[i]; this.source.currentLocation = opcode.loc; firstLoc = firstLoc || opcode.loc; this[opcode.opcode].apply(this, opcode.args); } // Flush any trailing content that might be pending. this.source.currentLocation = firstLoc; this.pushSource(''); /* istanbul ignore next */ if (this.stackSlot || this.inlineStack.length || this.compileStack.length) { throw new _exception2['default']('Compile completed with content left on stack'); } if (!this.decorators.isEmpty()) { this.useDecorators = true; this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\n']); this.decorators.push('return fn;'); if (asObject) { this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]); } else { this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n'); this.decorators.push('}\n'); this.decorators = this.decorators.merge(); } } else { this.decorators = undefined; } var fn = this.createFunctionContext(asObject); if (!this.isChild) { var ret = { compiler: this.compilerInfo(), main: fn }; if (this.decorators) { ret.main_d = this.decorators; // eslint-disable-line camelcase ret.useDecorators = true; } var _context = this.context; var programs = _context.programs; var decorators = _context.decorators; for (i = 0, l = programs.length; i < l; i++) { if (programs[i]) { ret[i] = programs[i]; if (decorators[i]) { ret[i + '_d'] = decorators[i]; ret.useDecorators = true; } } } if (this.environment.usePartial) { ret.usePartial = true; } if (this.options.data) { ret.useData = true; } if (this.useDepths) { ret.useDepths = true; } if (this.useBlockParams) { ret.useBlockParams = true; } if (this.options.compat) { ret.compat = true; } if (!asObject) { ret.compiler = JSON.stringify(ret.compiler); this.source.currentLocation = { start: { line: 1, column: 0 } }; ret = this.objectLiteral(ret); if (options.srcName) { ret = ret.toStringWithSourceMap({ file: options.destName }); ret.map = ret.map && ret.map.toString(); } else { ret = ret.toString(); } } else { ret.compilerOptions = this.options; } return ret; } else { return fn; } }, preamble: function preamble() { // track the last context pushed into place to allow skipping the // getContext opcode when it would be a noop this.lastContext = 0; this.source = new _codeGen2['default'](this.options.srcName); this.decorators = new _codeGen2['default'](this.options.srcName); }, createFunctionContext: function createFunctionContext(asObject) { // istanbul ignore next var _this = this; var varDeclarations = ''; var locals = this.stackVars.concat(this.registers.list); if (locals.length > 0) { varDeclarations += ', ' + locals.join(', '); } // Generate minimizer alias mappings // // When using true SourceNodes, this will update all references to the given alias // as the source nodes are reused in situ. For the non-source node compilation mode, // aliases will not be used, but this case is already being run on the client and // we aren't concern about minimizing the template size. var aliasCount = 0; Object.keys(this.aliases).forEach(function (alias) { var node = _this.aliases[alias]; if (node.children && node.referenceCount > 1) { varDeclarations += ', alias' + ++aliasCount + '=' + alias; node.children[0] = 'alias' + aliasCount; } }); if (this.lookupPropertyFunctionIsUsed) { varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration(); } var params = ['container', 'depth0', 'helpers', 'partials', 'data']; if (this.useBlockParams || this.useDepths) { params.push('blockParams'); } if (this.useDepths) { params.push('depths'); } // Perform a second pass over the output to merge content when possible var source = this.mergeSource(varDeclarations); if (asObject) { params.push(source); return Function.apply(this, params); } else { return this.source.wrap(['function(', params.join(','), ') {\n ', source, '}']); } }, mergeSource: function mergeSource(varDeclarations) { var isSimple = this.environment.isSimple, appendOnly = !this.forceBuffer, appendFirst = undefined, sourceSeen = undefined, bufferStart = undefined, bufferEnd = undefined; this.source.each(function (line) { if (line.appendToBuffer) { if (bufferStart) { line.prepend(' + '); } else { bufferStart = line; } bufferEnd = line; } else { if (bufferStart) { if (!sourceSeen) { appendFirst = true; } else { bufferStart.prepend('buffer += '); } bufferEnd.add(';'); bufferStart = bufferEnd = undefined; } sourceSeen = true; if (!isSimple) { appendOnly = false; } } }); if (appendOnly) { if (bufferStart) { bufferStart.prepend('return '); bufferEnd.add(';'); } else if (!sourceSeen) { this.source.push('return "";'); } } else { varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer()); if (bufferStart) { bufferStart.prepend('return buffer + '); bufferEnd.add(';'); } else { this.source.push('return buffer;'); } } if (varDeclarations) { this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n')); } return this.source.merge(); }, lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() { return '\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n '.trim(); }, // [blockValue] // // On stack, before: hash, inverse, program, value // On stack, after: return value of blockHelperMissing // // The purpose of this opcode is to take a block of the form // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and // replace it on the stack with the result of properly // invoking blockHelperMissing. blockValue: function blockValue(name) { var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'), params = [this.contextName(0)]; this.setupHelperArgs(name, 0, params); var blockName = this.popStack(); params.splice(1, 0, blockName); this.push(this.source.functionCall(blockHelperMissing, 'call', params)); }, // [ambiguousBlockValue] // // On stack, before: hash, inverse, program, value // Compiler value, before: lastHelper=value of last found helper, if any // On stack, after, if no lastHelper: same as [blockValue] // On stack, after, if lastHelper: value ambiguousBlockValue: function ambiguousBlockValue() { // We're being a bit cheeky and reusing the options value from the prior exec var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'), params = [this.contextName(0)]; this.setupHelperArgs('', 0, params, true); this.flushInline(); var current = this.topStack(); params.splice(1, 0, current); this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']); }, // [appendContent] // // On stack, before: ... // On stack, after: ... // // Appends the string value of `content` to the current buffer appendContent: function appendContent(content) { if (this.pendingContent) { content = this.pendingContent + content; } else { this.pendingLocation = this.source.currentLocation; } this.pendingContent = content; }, // [append] // // On stack, before: value, ... // On stack, after: ... // // Coerces `value` to a String and appends it to the current buffer. // // If `value` is truthy, or 0, it is coerced into a string and appended // Otherwise, the empty string is appended append: function append() { if (this.isInline()) { this.replaceStack(function (current) { return [' != null ? ', current, ' : ""']; }); this.pushSource(this.appendToBuffer(this.popStack())); } else { var local = this.popStack(); this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']); if (this.environment.isSimple) { this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']); } } }, // [appendEscaped] // // On stack, before: value, ... // On stack, after: ... // // Escape `value` and append it to the buffer appendEscaped: function appendEscaped() { this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')'])); }, // [getContext] // // On stack, before: ... // On stack, after: ... // Compiler value, after: lastContext=depth // // Set the value of the `lastContext` compiler value to the depth getContext: function getContext(depth) { this.lastContext = depth; }, // [pushContext] // // On stack, before: ... // On stack, after: currentContext, ... // // Pushes the value of the current context onto the stack. pushContext: function pushContext() { this.pushStackLiteral(this.contextName(this.lastContext)); }, // [lookupOnContext] // // On stack, before: ... // On stack, after: currentContext[name], ... // // Looks up the value of `name` on the current context and pushes // it onto the stack. lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) { var i = 0; if (!scoped && this.options.compat && !this.lastContext) { // The depthed query is expected to handle the undefined logic for the root level that // is implemented below, so we evaluate that directly in compat mode this.push(this.depthedLookup(parts[i++])); } else { this.pushContext(); } this.resolvePath('context', parts, i, falsy, strict); }, // [lookupBlockParam] // // On stack, before: ... // On stack, after: blockParam[name], ... // // Looks up the value of `parts` on the given block param and pushes // it onto the stack. lookupBlockParam: function lookupBlockParam(blockParamId, parts) { this.useBlockParams = true; this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']); this.resolvePath('context', parts, 1); }, // [lookupData] // // On stack, before: ... // On stack, after: data, ... // // Push the data lookup operator lookupData: function lookupData(depth, parts, strict) { if (!depth) { this.pushStackLiteral('data'); } else { this.pushStackLiteral('container.data(data, ' + depth + ')'); } this.resolvePath('data', parts, 0, true, strict); }, resolvePath: function resolvePath(type, parts, i, falsy, strict) { // istanbul ignore next var _this2 = this; if (this.options.strict || this.options.assumeObjects) { this.push(strictLookup(this.options.strict && strict, this, parts, type)); return; } var len = parts.length; for (; i < len; i++) { /* eslint-disable no-loop-func */ this.replaceStack(function (current) { var lookup = _this2.nameLookup(current, parts[i], type); // We want to ensure that zero and false are handled properly if the context (falsy flag) // needs to have the special handling for these values. if (!falsy) { return [' != null ? ', lookup, ' : ', current]; } else { // Otherwise we can use generic falsy handling return [' && ', lookup]; } }); /* eslint-enable no-loop-func */ } }, // [resolvePossibleLambda] // // On stack, before: value, ... // On stack, after: resolved value, ... // // If the `value` is a lambda, replace it on the stack by // the return value of the lambda resolvePossibleLambda: function resolvePossibleLambda() { this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']); }, // [pushStringParam] // // On stack, before: ... // On stack, after: string, currentContext, ... // // This opcode is designed for use in string mode, which // provides the string value of a parameter along with its // depth rather than resolving it immediately. pushStringParam: function pushStringParam(string, type) { this.pushContext(); this.pushString(type); // If it's a subexpression, the string result // will be pushed after this opcode. if (type !== 'SubExpression') { if (typeof string === 'string') { this.pushString(string); } else { this.pushStackLiteral(string); } } }, emptyHash: function emptyHash(omitEmpty) { if (this.trackIds) { this.push('{}'); // hashIds } if (this.stringParams) { this.push('{}'); // hashContexts this.push('{}'); // hashTypes } this.pushStackLiteral(omitEmpty ? 'undefined' : '{}'); }, pushHash: function pushHash() { if (this.hash) { this.hashes.push(this.hash); } this.hash = { values: {}, types: [], contexts: [], ids: [] }; }, popHash: function popHash() { var hash = this.hash; this.hash = this.hashes.pop(); if (this.trackIds) { this.push(this.objectLiteral(hash.ids)); } if (this.stringParams) { this.push(this.objectLiteral(hash.contexts)); this.push(this.objectLiteral(hash.types)); } this.push(this.objectLiteral(hash.values)); }, // [pushString] // // On stack, before: ... // On stack, after: quotedString(string), ... // // Push a quoted version of `string` onto the stack pushString: function pushString(string) { this.pushStackLiteral(this.quotedString(string)); }, // [pushLiteral] // // On stack, before: ... // On stack, after: value, ... // // Pushes a value onto the stack. This operation prevents // the compiler from creating a temporary variable to hold // it. pushLiteral: function pushLiteral(value) { this.pushStackLiteral(value); }, // [pushProgram] // // On stack, before: ... // On stack, after: program(guid), ... // // Push a program expression onto the stack. This takes // a compile-time guid and converts it into a runtime-accessible // expression. pushProgram: function pushProgram(guid) { if (guid != null) { this.pushStackLiteral(this.programExpression(guid)); } else { this.pushStackLiteral(null); } }, // [registerDecorator] // // On stack, before: hash, program, params..., ... // On stack, after: ... // // Pops off the decorator's parameters, invokes the decorator, // and inserts the decorator into the decorators list. registerDecorator: function registerDecorator(paramSize, name) { var foundDecorator = this.nameLookup('decorators', name, 'decorator'), options = this.setupHelperArgs(name, paramSize); this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']); }, // [invokeHelper] // // On stack, before: hash, inverse, program, params..., ... // On stack, after: result of helper invocation // // Pops off the helper's parameters, invokes the helper, // and pushes the helper's return value onto the stack. // // If the helper is not found, `helperMissing` is called. invokeHelper: function invokeHelper(paramSize, name, isSimple) { var nonHelper = this.popStack(), helper = this.setupHelper(paramSize, name); var possibleFunctionCalls = []; if (isSimple) { // direct call to helper possibleFunctionCalls.push(helper.name); } // call a function from the input object possibleFunctionCalls.push(nonHelper); if (!this.options.strict) { possibleFunctionCalls.push(this.aliasable('container.hooks.helperMissing')); } var functionLookupCode = ['(', this.itemsSeparatedBy(possibleFunctionCalls, '||'), ')']; var functionCall = this.source.functionCall(functionLookupCode, 'call', helper.callParams); this.push(functionCall); }, itemsSeparatedBy: function itemsSeparatedBy(items, separator) { var result = []; result.push(items[0]); for (var i = 1; i < items.length; i++) { result.push(separator, items[i]); } return result; }, // [invokeKnownHelper] // // On stack, before: hash, inverse, program, params..., ... // On stack, after: result of helper invocation // // This operation is used when the helper is known to exist, // so a `helperMissing` fallback is not required. invokeKnownHelper: function invokeKnownHelper(paramSize, name) { var helper = this.setupHelper(paramSize, name); this.push(this.source.functionCall(helper.name, 'call', helper.callParams)); }, // [invokeAmbiguous] // // On stack, before: hash, inverse, program, params..., ... // On stack, after: result of disambiguation // // This operation is used when an expression like `{{foo}}` // is provided, but we don't know at compile-time whether it // is a helper or a path. // // This operation emits more code than the other options, // and can be avoided by passing the `knownHelpers` and // `knownHelpersOnly` flags at compile-time. invokeAmbiguous: function invokeAmbiguous(name, helperCall) { this.useRegister('helper'); var nonHelper = this.popStack(); this.emptyHash(); var helper = this.setupHelper(0, name, helperCall); var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper'); var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')']; if (!this.options.strict) { lookup[0] = '(helper = '; lookup.push(' != null ? helper : ', this.aliasable('container.hooks.helperMissing')); } this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']); }, // [invokePartial] // // On stack, before: context, ... // On stack after: result of partial invocation // // This operation pops off a context, invokes a partial with that context, // and pushes the result of the invocation back. invokePartial: function invokePartial(isDynamic, name, indent) { var params = [], options = this.setupParams(name, 1, params); if (isDynamic) { name = this.popStack(); delete options.name; } if (indent) { options.indent = JSON.stringify(indent); } options.helpers = 'helpers'; options.partials = 'partials'; options.decorators = 'container.decorators'; if (!isDynamic) { params.unshift(this.nameLookup('partials', name, 'partial')); } else { params.unshift(name); } if (this.options.compat) { options.depths = 'depths'; } options = this.objectLiteral(options); params.push(options); this.push(this.source.functionCall('container.invokePartial', '', params)); }, // [assignToHash] // // On stack, before: value, ..., hash, ... // On stack, after: ..., hash, ... // // Pops a value off the stack and assigns it to the current hash assignToHash: function assignToHash(key) { var value = this.popStack(), context = undefined, type = undefined, id = undefined; if (this.trackIds) { id = this.popStack(); } if (this.stringParams) { type = this.popStack(); context = this.popStack(); } var hash = this.hash; if (context) { hash.contexts[key] = context; } if (type) { hash.types[key] = type; } if (id) { hash.ids[key] = id; } hash.values[key] = value; }, pushId: function pushId(type, name, child) { if (type === 'BlockParam') { this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : '')); } else if (type === 'PathExpression') { this.pushString(name); } else if (type === 'SubExpression') { this.pushStackLiteral('true'); } else { this.pushStackLiteral('null'); } }, // HELPERS compiler: JavaScriptCompiler, compileChildren: function compileChildren(environment, options) { var children = environment.children, child = undefined, compiler = undefined; for (var i = 0, l = children.length; i < l; i++) { child = children[i]; compiler = new this.compiler(); // eslint-disable-line new-cap var existing = this.matchExistingProgram(child); if (existing == null) { this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children var index = this.context.programs.length; child.index = index; child.name = 'program' + index; this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile); this.context.decorators[index] = compiler.decorators; this.context.environments[index] = child; this.useDepths = this.useDepths || compiler.useDepths; this.useBlockParams = this.useBlockParams || compiler.useBlockParams; child.useDepths = this.useDepths; child.useBlockParams = this.useBlockParams; } else { child.index = existing.index; child.name = 'program' + existing.index; this.useDepths = this.useDepths || existing.useDepths; this.useBlockParams = this.useBlockParams || existing.useBlockParams; } } }, matchExistingProgram: function matchExistingProgram(child) { for (var i = 0, len = this.context.environments.length; i < len; i++) { var environment = this.context.environments[i]; if (environment && environment.equals(child)) { return environment; } } }, programExpression: function programExpression(guid) { var child = this.environment.children[guid], programParams = [child.index, 'data', child.blockParams]; if (this.useBlockParams || this.useDepths) { programParams.push('blockParams'); } if (this.useDepths) { programParams.push('depths'); } return 'container.program(' + programParams.join(', ') + ')'; }, useRegister: function useRegister(name) { if (!this.registers[name]) { this.registers[name] = true; this.registers.list.push(name); } }, push: function push(expr) { if (!(expr instanceof Literal)) { expr = this.source.wrap(expr); } this.inlineStack.push(expr); return expr; }, pushStackLiteral: function pushStackLiteral(item) { this.push(new Literal(item)); }, pushSource: function pushSource(source) { if (this.pendingContent) { this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation)); this.pendingContent = undefined; } if (source) { this.source.push(source); } }, replaceStack: function replaceStack(callback) { var prefix = ['('], stack = undefined, createdStack = undefined, usedLiteral = undefined; /* istanbul ignore next */ if (!this.isInline()) { throw new _exception2['default']('replaceStack on non-inline'); } // We want to merge the inline statement into the replacement statement via ',' var top = this.popStack(true); if (top instanceof Literal) { // Literals do not need to be inlined stack = [top.value]; prefix = ['(', stack]; usedLiteral = true; } else { // Get or create the current stack name for use by the inline createdStack = true; var _name = this.incrStack(); prefix = ['((', this.push(_name), ' = ', top, ')']; stack = this.topStack(); } var item = callback.call(this, stack); if (!usedLiteral) { this.popStack(); } if (createdStack) { this.stackSlot--; } this.push(prefix.concat(item, ')')); }, incrStack: function incrStack() { this.stackSlot++; if (this.stackSlot > this.stackVars.length) { this.stackVars.push('stack' + this.stackSlot); } return this.topStackName(); }, topStackName: function topStackName() { return 'stack' + this.stackSlot; }, flushInline: function flushInline() { var inlineStack = this.inlineStack; this.inlineStack = []; for (var i = 0, len = inlineStack.length; i < len; i++) { var entry = inlineStack[i]; /* istanbul ignore if */ if (entry instanceof Literal) { this.compileStack.push(entry); } else { var stack = this.incrStack(); this.pushSource([stack, ' = ', entry, ';']); this.compileStack.push(stack); } } }, isInline: function isInline() { return this.inlineStack.length; }, popStack: function popStack(wrapped) { var inline = this.isInline(), item = (inline ? this.inlineStack : this.compileStack).pop(); if (!wrapped && item instanceof Literal) { return item.value; } else { if (!inline) { /* istanbul ignore next */ if (!this.stackSlot) { throw new _exception2['default']('Invalid stack pop'); } this.stackSlot--; } return item; } }, topStack: function topStack() { var stack = this.isInline() ? this.inlineStack : this.compileStack, item = stack[stack.length - 1]; /* istanbul ignore if */ if (item instanceof Literal) { return item.value; } else { return item; } }, contextName: function contextName(context) { if (this.useDepths && context) { return 'depths[' + context + ']'; } else { return 'depth' + context; } }, quotedString: function quotedString(str) { return this.source.quotedString(str); }, objectLiteral: function objectLiteral(obj) { return this.source.objectLiteral(obj); }, aliasable: function aliasable(name) { var ret = this.aliases[name]; if (ret) { ret.referenceCount++; return ret; } ret = this.aliases[name] = this.source.wrap(name); ret.aliasable = true; ret.referenceCount = 1; return ret; }, setupHelper: function setupHelper(paramSize, name, blockHelper) { var params = [], paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper); var foundHelper = this.nameLookup('helpers', name, 'helper'), callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})'); return { params: params, paramsInit: paramsInit, name: foundHelper, callParams: [callContext].concat(params) }; }, setupParams: function setupParams(helper, paramSize, params) { var options = {}, contexts = [], types = [], ids = [], objectArgs = !params, param = undefined; if (objectArgs) { params = []; } options.name = this.quotedString(helper); options.hash = this.popStack(); if (this.trackIds) { options.hashIds = this.popStack(); } if (this.stringParams) { options.hashTypes = this.popStack(); options.hashContexts = this.popStack(); } var inverse = this.popStack(), program = this.popStack(); // Avoid setting fn and inverse if neither are set. This allows // helpers to do a check for `if (options.fn)` if (program || inverse) { options.fn = program || 'container.noop'; options.inverse = inverse || 'container.noop'; } // The parameters go on to the stack in order (making sure that they are evaluated in order) // so we need to pop them off the stack in reverse order var i = paramSize; while (i--) { param = this.popStack(); params[i] = param; if (this.trackIds) { ids[i] = this.popStack(); } if (this.stringParams) { types[i] = this.popStack(); contexts[i] = this.popStack(); } } if (objectArgs) { options.args = this.source.generateArray(params); } if (this.trackIds) { options.ids = this.source.generateArray(ids); } if (this.stringParams) { options.types = this.source.generateArray(types); options.contexts = this.source.generateArray(contexts); } if (this.options.data) { options.data = 'data'; } if (this.useBlockParams) { options.blockParams = 'blockParams'; } return options; }, setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) { var options = this.setupParams(helper, paramSize, params); options.loc = JSON.stringify(this.source.currentLocation); options = this.objectLiteral(options); if (useRegister) { this.useRegister('options'); params.push('options'); return ['options=', options]; } else if (params) { params.push(options); return ''; } else { return options; } } }; (function () { var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' '); var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {}; for (var i = 0, l = reservedWords.length; i < l; i++) { compilerWords[reservedWords[i]] = true; } })(); /** * @deprecated May be removed in the next major version */ JavaScriptCompiler.isValidJavaScriptVariableName = function (name) { return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name); }; function strictLookup(requireTerminal, compiler, parts, type) { var stack = compiler.popStack(), i = 0, len = parts.length; if (requireTerminal) { len--; } for (; i < len; i++) { stack = compiler.nameLookup(stack, parts[i], type); } if (requireTerminal) { return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ', ', JSON.stringify(compiler.source.currentLocation), ' )']; } else { return stack; } } exports['default'] = JavaScriptCompiler; module.exports = exports['default']; }); var handlebars = createCommonjsModule(function (module, exports) { exports.__esModule = true; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _handlebarsRuntime2 = _interopRequireDefault(handlebars_runtime); // Compiler imports var _handlebarsCompilerAst2 = _interopRequireDefault(ast); var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(javascriptCompiler); var _handlebarsCompilerVisitor2 = _interopRequireDefault(visitor); var _handlebarsNoConflict2 = _interopRequireDefault(noConflict); var _create = _handlebarsRuntime2['default'].create; function create() { var hb = _create(); hb.compile = function (input, options) { return compiler.compile(input, options, hb); }; hb.precompile = function (input, options) { return compiler.precompile(input, options, hb); }; hb.AST = _handlebarsCompilerAst2['default']; hb.Compiler = compiler.Compiler; hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default']; hb.Parser = base$1.parser; hb.parse = base$1.parse; hb.parseWithoutProcessing = base$1.parseWithoutProcessing; return hb; } var inst = create(); inst.create = create; _handlebarsNoConflict2['default'](inst); inst.Visitor = _handlebarsCompilerVisitor2['default']; inst['default'] = inst; exports['default'] = inst; module.exports = exports['default']; }); var printer = createCommonjsModule(function (module, exports) { exports.__esModule = true; exports.print = print; exports.PrintVisitor = PrintVisitor; // istanbul ignore next function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _visitor2 = _interopRequireDefault(visitor); function print(ast) { return new PrintVisitor().accept(ast); } function PrintVisitor() { this.padding = 0; } PrintVisitor.prototype = new _visitor2['default'](); PrintVisitor.prototype.pad = function (string) { var out = ''; for (var i = 0, l = this.padding; i < l; i++) { out += ' '; } out += string + '\n'; return out; }; PrintVisitor.prototype.Program = function (program) { var out = '', body = program.body, i = undefined, l = undefined; if (program.blockParams) { var blockParams = 'BLOCK PARAMS: ['; for (i = 0, l = program.blockParams.length; i < l; i++) { blockParams += ' ' + program.blockParams[i]; } blockParams += ' ]'; out += this.pad(blockParams); } for (i = 0, l = body.length; i < l; i++) { out += this.accept(body[i]); } this.padding--; return out; }; PrintVisitor.prototype.MustacheStatement = function (mustache) { return this.pad('{{ ' + this.SubExpression(mustache) + ' }}'); }; PrintVisitor.prototype.Decorator = function (mustache) { return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}'); }; PrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function (block) { var out = ''; out += this.pad((block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'); this.padding++; out += this.pad(this.SubExpression(block)); if (block.program) { out += this.pad('PROGRAM:'); this.padding++; out += this.accept(block.program); this.padding--; } if (block.inverse) { if (block.program) { this.padding++; } out += this.pad('{{^}}'); this.padding++; out += this.accept(block.inverse); this.padding--; if (block.program) { this.padding--; } } this.padding--; return out; }; PrintVisitor.prototype.PartialStatement = function (partial) { var content = 'PARTIAL:' + partial.name.original; if (partial.params[0]) { content += ' ' + this.accept(partial.params[0]); } if (partial.hash) { content += ' ' + this.accept(partial.hash); } return this.pad('{{> ' + content + ' }}'); }; PrintVisitor.prototype.PartialBlockStatement = function (partial) { var content = 'PARTIAL BLOCK:' + partial.name.original; if (partial.params[0]) { content += ' ' + this.accept(partial.params[0]); } if (partial.hash) { content += ' ' + this.accept(partial.hash); } content += ' ' + this.pad('PROGRAM:'); this.padding++; content += this.accept(partial.program); this.padding--; return this.pad('{{> ' + content + ' }}'); }; PrintVisitor.prototype.ContentStatement = function (content) { return this.pad("CONTENT[ '" + content.value + "' ]"); }; PrintVisitor.prototype.CommentStatement = function (comment) { return this.pad("{{! '" + comment.value + "' }}"); }; PrintVisitor.prototype.SubExpression = function (sexpr) { var params = sexpr.params, paramStrings = [], hash = undefined; for (var i = 0, l = params.length; i < l; i++) { paramStrings.push(this.accept(params[i])); } params = '[' + paramStrings.join(', ') + ']'; hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : ''; return this.accept(sexpr.path) + ' ' + params + hash; }; PrintVisitor.prototype.PathExpression = function (id) { var path = id.parts.join('/'); return (id.data ? '@' : '') + 'PATH:' + path; }; PrintVisitor.prototype.StringLiteral = function (string) { return '"' + string.value + '"'; }; PrintVisitor.prototype.NumberLiteral = function (number) { return 'NUMBER{' + number.value + '}'; }; PrintVisitor.prototype.BooleanLiteral = function (bool) { return 'BOOLEAN{' + bool.value + '}'; }; PrintVisitor.prototype.UndefinedLiteral = function () { return 'UNDEFINED'; }; PrintVisitor.prototype.NullLiteral = function () { return 'NULL'; }; PrintVisitor.prototype.Hash = function (hash) { var pairs = hash.pairs, joinedPairs = []; for (var i = 0, l = pairs.length; i < l; i++) { joinedPairs.push(this.accept(pairs[i])); } return 'HASH{' + joinedPairs.join(', ') + '}'; }; PrintVisitor.prototype.HashPair = function (pair) { return pair.key + '=' + this.accept(pair.value); }; /* eslint-enable new-cap */ }); // USAGE: // var handlebars = require('handlebars'); /* eslint-disable no-var */ // var local = handlebars.create(); var handlebars$1 = handlebars['default']; handlebars$1.PrintVisitor = printer.PrintVisitor; handlebars$1.print = printer.print; var lib = handlebars$1; // Publish a Node.js require() handler for .handlebars and .hbs files function extension(module, filename) { var fs = fs__default['default']; var templateString = fs.readFileSync(filename, 'utf8'); module.exports = handlebars$1.compile(templateString); } /* istanbul ignore else */ if (typeof commonjsRequire !== 'undefined' && commonjsRequire.extensions) { commonjsRequire.extensions['.handlebars'] = extension; commonjsRequire.extensions['.hbs'] = extension; } /** * Defines an event manager for the citations plugin. */ var CitationEvents = /** @class */ (function (_super) { __extends(CitationEvents, _super); function CitationEvents() { return _super !== null && _super.apply(this, arguments) || this; } CitationEvents.prototype.on = function (name, callback, ctx) { return _super.prototype.on.call(this, name, callback, ctx); }; CitationEvents.prototype.trigger = function (name) { var data = []; for (var _i = 1; _i < arguments.length; _i++) { data[_i - 1] = arguments[_i]; } _super.prototype.trigger.call(this, name, data); }; return CitationEvents; }(obsidian.Events)); var SearchModal = /** @class */ (function (_super) { __extends(SearchModal, _super); function SearchModal(app, plugin) { var _this = _super.call(this, app) || this; _this.limit = 50; _this.plugin = plugin; _this.resultContainerEl.addClass('zoteroModalResults'); _this.inputEl.setAttribute('spellcheck', 'false'); _this.loadingEl = _this.resultContainerEl.parentElement.createEl('div', { cls: 'zoteroModalLoading', }); _this.loadingEl.createEl('div', { cls: 'zoteroModalLoadingAnimation' }); _this.loadingEl.createEl('p', { text: 'Loading citation database. Please wait...', }); return _this; } SearchModal.prototype.onOpen = function () { var _this = this; _super.prototype.onOpen.call(this); this.eventRefs = [ this.plugin.events.on('library-load-start', function () { _this.setLoading(true); }), this.plugin.events.on('library-load-complete', function () { _this.setLoading(false); }), ]; this.setLoading(this.plugin.isLibraryLoading); // Don't immediately register keyevent listeners. If the modal was triggered // by an "Enter" keystroke (e.g. via the Obsidian command dialog), this event // will be received here erroneously. setTimeout(function () { _this.inputEl.addEventListener('keydown', function (ev) { return _this.onInputKeydown(ev); }); _this.inputEl.addEventListener('keyup', function (ev) { return _this.onInputKeyup(ev); }); }, 200); }; SearchModal.prototype.onClose = function () { var _this = this; var _a; (_a = this.eventRefs) === null || _a === void 0 ? void 0 : _a.forEach(function (e) { return _this.plugin.events.offref(e); }); }; SearchModal.prototype.getItems = function () { if (this.plugin.isLibraryLoading) { return []; } return Object.values(this.plugin.library.entries); }; SearchModal.prototype.getItemText = function (item) { return item.title + " " + item.authorString + " " + item.year; }; SearchModal.prototype.setLoading = function (loading) { if (loading) { this.loadingEl.removeClass('d-none'); this.inputEl.disabled = true; this.resultContainerEl.empty(); } else { this.loadingEl.addClass('d-none'); this.inputEl.disabled = false; this.inputEl.focus(); // @ts-ignore: not exposed in API. this.updateSuggestions(); } }; // eslint-disable-next-line @typescript-eslint/no-unused-vars SearchModal.prototype.onChooseItem = function (item, evt) { this.plugin.openLiteratureNote(item.id, false).catch(console.error); }; SearchModal.prototype.renderSuggestion = function (match, el) { el.empty(); var entry = match.item; var entryTitle = entry.title || ''; var container = el.createEl('div', { cls: 'zoteroResult' }); var titleEl = container.createEl('span', { cls: 'zoteroTitle', }); container.createEl('span', { cls: 'zoteroCitekey', text: entry.id }); var authorsCls = entry.authorString ? 'zoteroAuthors' : 'zoteroAuthors zoteroAuthorsEmpty'; var authorsEl = container.createEl('span', { cls: authorsCls, }); // Prepare to highlight string matches for each part of the search item. // Compute offsets of each rendered element's content within the string // returned by `getItemText`. var allMatches = match.match.matches; var authorStringOffset = 1 + entryTitle.length; // Filter a match list to contain only the relevant matches for a given // substring, and with match indices shifted relative to the start of that // substring var shiftMatches = function (matches, start, end) { return matches .map(function (match) { var matchStart = match[0], matchEnd = match[1]; return [ matchStart - start, Math.min(matchEnd - start, end), ]; }) .filter(function (match) { var matchStart = match[0], matchEnd = match[1]; return matchStart >= 0; }); }; // Now highlight matched strings within each element obsidian.renderMatches(titleEl, entryTitle, shiftMatches(allMatches, 0, entryTitle.length)); if (entry.authorString) { obsidian.renderMatches(authorsEl, entry.authorString, shiftMatches(allMatches, authorStringOffset, authorStringOffset + entry.authorString.length)); } }; SearchModal.prototype.onInputKeydown = function (ev) { if (ev.key == 'Tab') { ev.preventDefault(); } }; SearchModal.prototype.onInputKeyup = function (ev) { if (ev.key == 'Enter' || ev.key == 'Tab') { this.chooser.useSelectedItem(ev); } }; return SearchModal; }(obsidian.FuzzySuggestModal)); var OpenNoteModal = /** @class */ (function (_super) { __extends(OpenNoteModal, _super); function OpenNoteModal(app, plugin) { var _this = _super.call(this, app, plugin) || this; _this.setInstructions([ { command: '↑↓', purpose: 'to navigate' }, { command: '↵', purpose: 'to open literature note' }, { command: 'ctrl ↵', purpose: 'to open literature note in a new pane' }, { command: 'tab', purpose: 'open in Zotero' }, { command: 'shift tab', purpose: 'open PDF' }, { command: 'esc', purpose: 'to dismiss' }, ]); return _this; } OpenNoteModal.prototype.onChooseItem = function (item, evt) { if (evt instanceof MouseEvent || evt.key == 'Enter') { var newPane = evt instanceof KeyboardEvent && evt.ctrlKey; this.plugin.openLiteratureNote(item.id, newPane); } else if (evt.key == 'Tab') { if (evt.shiftKey) { var files = item.files || []; var pdfPaths = files.filter(function (path) { return path.toLowerCase().endsWith('pdf'); }); if (pdfPaths.length == 0) { new obsidian.Notice('This reference has no associated PDF files.'); } else { open("file://" + pdfPaths[0]); } } else { open(item.zoteroSelectURI); } } }; return OpenNoteModal; }(SearchModal)); var InsertNoteLinkModal = /** @class */ (function (_super) { __extends(InsertNoteLinkModal, _super); function InsertNoteLinkModal(app, plugin) { var _this = _super.call(this, app, plugin) || this; _this.setInstructions([ { command: '↑↓', purpose: 'to navigate' }, { command: '↵', purpose: 'to insert literature note reference' }, { command: 'esc', purpose: 'to dismiss' }, ]); return _this; } // eslint-disable-next-line @typescript-eslint/no-unused-vars InsertNoteLinkModal.prototype.onChooseItem = function (item, evt) { this.plugin.insertLiteratureNoteLink(item.id).catch(console.error); }; return InsertNoteLinkModal; }(SearchModal)); var InsertNoteContentModal = /** @class */ (function (_super) { __extends(InsertNoteContentModal, _super); function InsertNoteContentModal(app, plugin) { var _this = _super.call(this, app, plugin) || this; _this.setInstructions([ { command: '↑↓', purpose: 'to navigate' }, { command: '↵', purpose: 'to insert literature note content in active pane', }, { command: 'esc', purpose: 'to dismiss' }, ]); return _this; } // eslint-disable-next-line @typescript-eslint/no-unused-vars InsertNoteContentModal.prototype.onChooseItem = function (item, evt) { this.plugin.insertLiteratureNoteContent(item.id).catch(console.error); }; return InsertNoteContentModal; }(SearchModal)); var InsertCitationModal = /** @class */ (function (_super) { __extends(InsertCitationModal, _super); function InsertCitationModal(app, plugin) { var _this = _super.call(this, app, plugin) || this; _this.setInstructions([ { command: '↑↓', purpose: 'to navigate' }, { command: '↵', purpose: 'to insert Markdown citation' }, { command: 'shift ↵', purpose: 'to insert secondary Markdown citation' }, { command: 'esc', purpose: 'to dismiss' }, ]); return _this; } // eslint-disable-next-line @typescript-eslint/no-unused-vars InsertCitationModal.prototype.onChooseItem = function (item, evt) { var isAlternative = evt instanceof KeyboardEvent && evt.shiftKey; this.plugin .insertMarkdownCitation(item.id, isAlternative) .catch(console.error); }; return InsertCitationModal; }(SearchModal)); /* * Generated by PEG.js 0.10.0. * * http://pegjs.org/ */ function peg$subclass(child, parent) { function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); } function peg$SyntaxError(message, expected, found, location) { this.message = message; this.expected = expected; this.found = found; this.location = location; this.name = "SyntaxError"; if (typeof Error.captureStackTrace === "function") { Error.captureStackTrace(this, peg$SyntaxError); } } peg$subclass(peg$SyntaxError, Error); peg$SyntaxError.buildMessage = function(expected, found) { var DESCRIBE_EXPECTATION_FNS = { literal: function(expectation) { return "\"" + literalEscape(expectation.text) + "\""; }, "class": function(expectation) { var escapedParts = "", i; for (i = 0; i < expectation.parts.length; i++) { escapedParts += expectation.parts[i] instanceof Array ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) : classEscape(expectation.parts[i]); } return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; }, any: function(expectation) { return "any character"; }, end: function(expectation) { return "end of input"; }, other: function(expectation) { return expectation.description; } }; function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } function literalEscape(s) { return s .replace(/\\/g, '\\\\') .replace(/"/g, '\\"') .replace(/\0/g, '\\0') .replace(/\t/g, '\\t') .replace(/\n/g, '\\n') .replace(/\r/g, '\\r') .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); } function classEscape(s) { return s .replace(/\\/g, '\\\\') .replace(/\]/g, '\\]') .replace(/\^/g, '\\^') .replace(/-/g, '\\-') .replace(/\0/g, '\\0') .replace(/\t/g, '\\t') .replace(/\n/g, '\\n') .replace(/\r/g, '\\r') .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); } function describeExpectation(expectation) { return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); } function describeExpected(expected) { var descriptions = new Array(expected.length), i, j; for (i = 0; i < expected.length; i++) { descriptions[i] = describeExpectation(expected[i]); } descriptions.sort(); if (descriptions.length > 0) { for (i = 1, j = 1; i < descriptions.length; i++) { if (descriptions[i - 1] !== descriptions[i]) { descriptions[j] = descriptions[i]; j++; } } descriptions.length = j; } switch (descriptions.length) { case 1: return descriptions[0]; case 2: return descriptions[0] + " or " + descriptions[1]; default: return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1]; } } function describeFound(found) { return found ? "\"" + literalEscape(found) + "\"" : "end of input"; } return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; }; function peg$parse(input, options) { options = options !== void 0 ? options : {}; var peg$FAILED = {}, peg$startRuleFunctions = { Bibliography: peg$parseBibliography }, peg$startRuleFunction = peg$parseBibliography, peg$c0 = function(r) { return { kind: 'Bibliography', loc: location(), source: text(), children: r, } }, peg$c1 = "@", peg$c2 = peg$literalExpectation("@", false), peg$c3 = "comment", peg$c4 = peg$literalExpectation("comment", true), peg$c5 = function(v) { return { kind: 'BracedComment', loc: location(), source: text(), value: v.slice(1, -1), } }, peg$c6 = /^[^\n\r]/, peg$c7 = peg$classExpectation(["\n", "\r"], true, false), peg$c8 = /^[\n\r]/, peg$c9 = peg$classExpectation(["\n", "\r"], false, false), peg$c10 = function(v) { return { kind: 'LineComment', loc: location(), source: text(), value: normalizeWhitespace(v), } }, peg$c11 = /^[^@]/, peg$c12 = peg$classExpectation(["@"], true, false), peg$c13 = function(v) { return { kind: 'NonEntryText', loc: location(), source: text(), value: normalizeWhitespace(v), } }, peg$c14 = function(n) { return n; }, peg$c15 = "{", peg$c16 = peg$literalExpectation("{", false), peg$c17 = /^[^{}]/, peg$c18 = peg$classExpectation(["{", "}"], true, false), peg$c19 = "}", peg$c20 = peg$literalExpectation("}", false), peg$c21 = function(comment) { return '{' + comment.join('') + '}' }, peg$c22 = /^[A-Za-z]/, peg$c23 = peg$classExpectation([["A", "Z"], ["a", "z"]], false, false), peg$c24 = /^[({]/, peg$c25 = peg$classExpectation(["(", "{"], false, false), peg$c26 = /^[})]/, peg$c27 = peg$classExpectation(["}", ")"], false, false), peg$c28 = function(type, id, fields) { return { kind: 'Entry', id: id || '', type: type.toLowerCase(), loc: location(), source: text(), fields: fields, } }, peg$c29 = "preamble", peg$c30 = peg$literalExpectation("preamble", true), peg$c31 = function(opener, v, closer) { switch (opener + closer) { case '{}': case '()': break default: throw new Error(`Unbalanced opener-closer for preamble: ${opener}...${closer}`) } return { kind: 'PreambleExpression', loc: location(), source: text(), value: v.reduce((a, b) => a.concat(b), []), } }, peg$c32 = "string", peg$c33 = peg$literalExpectation("string", true), peg$c34 = function(k, v) { return { kind: 'StringDeclaration', loc: location(), source: text(), name: k, value: v.reduce((a, b) => a.concat(b), []), } }, peg$c35 = /^[^ \t\r\n,]/, peg$c36 = peg$classExpectation([" ", "\t", "\r", "\n", ","], true, false), peg$c37 = ",", peg$c38 = peg$literalExpectation(",", false), peg$c39 = function(id) { return id; }, peg$c40 = function(name) { return isVerbatimField(name) && unnestFields.includes(name) }, peg$c41 = function(name, value) { // because this was abused so much, many processors treat double-outer-braces as single return { kind: 'Field', loc: location(), source: text(), name: name, loc: location(), value: [ protect(value) ] } }, peg$c42 = function(name) { return isVerbatimField(name) }, peg$c43 = function(name, value) { return { kind: 'Field', loc: location(), source: text(), name: name, loc: location(), value: [ protect(value) ] } }, peg$c44 = function(name, value) { // because this was abused so much, many processors treat double-outer-braces as single if (unnestFields.includes(name) && Array.isArray(value) && value.length === 1 && value[0].kind === 'Block') { if (options.unnestMode === 'preserve') { value[0].case = 'preserve'; } else { value = value[0].value; } } return handle_markup_switches({ kind: 'Field', loc: location(), source: text(), name: name, value: value, }) }, peg$c45 = /^[_:a-zA-Z0-9\-]/, peg$c46 = peg$classExpectation(["_", ":", ["a", "z"], ["A", "Z"], ["0", "9"], "-"], false, false), peg$c47 = function(name) { return name.toLowerCase() }, peg$c48 = "\"", peg$c49 = peg$literalExpectation("\"", false), peg$c50 = function(v) { v = v || { kind: 'Text', loc: location(), source: text(), value: '', }; v.mode = 'verbatim'; return basicTextConversions(v) }, peg$c51 = function(v) { return basicTextConversions({ kind: 'Text', loc: location(), source: text(), value: v.join('').trim(), mode: 'verbatim', }) }, peg$c52 = function(v) { return v }, peg$c53 = function(v) { return '{' + v.join('') + '}' }, peg$c54 = function() { return math.set(false) }, peg$c55 = function(v) { return v.reduce((a, b) => a.concat(b), []); }, peg$c56 = function(v) { return v; }, peg$c57 = "{\\verb", peg$c58 = peg$literalExpectation("{\\verb", false), peg$c59 = /^[a-zA-Z]/, peg$c60 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false), peg$c61 = /^[^\^_${}\\]/, peg$c62 = peg$classExpectation(["^", "_", "$", "{", "}", "\\"], true, false), peg$c63 = function(v) { return basicTextConversions({ kind: 'Text', loc: location(), source: text(), value: normalizeWhitespace(v), mode: math.on ? 'math' : 'text', }) }, peg$c64 = /^[^\^_${}"\\]/, peg$c65 = peg$classExpectation(["^", "_", "$", "{", "}", "\"", "\\"], true, false), peg$c66 = /^[0-9]/, peg$c67 = peg$classExpectation([["0", "9"]], false, false), peg$c68 = function(v) { return { kind: 'Number', loc: location(), source: text(), value: parseInt(v, 10), } }, peg$c69 = function(v) { return { kind: 'StringReference', loc: location(), source: text(), name: v, } }, peg$c70 = "\\begin{", peg$c71 = peg$literalExpectation("\\begin{", false), peg$c72 = /^[a-zA-Z0-9]/, peg$c73 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false), peg$c74 = "\\end{", peg$c75 = peg$literalExpectation("\\end{", false), peg$c76 = function(env, v, cenv) { return env === cenv }, peg$c77 = function(env, v, cenv) { if (markup[env]) { return { kind: 'Block', loc: location(), source: text(), value: v, markup: { [markup[env]]: true }, } } else { return { kind: 'Environment', loc: location(), source: text(), value: v, env: env, } } }, peg$c78 = "{\\", peg$c79 = peg$literalExpectation("{\\", false), peg$c80 = "\\", peg$c81 = peg$literalExpectation("\\", false), peg$c82 = /^[ij]/, peg$c83 = peg$classExpectation(["i", "j"], false, false), peg$c84 = function(mark, char) { return { kind: 'DiacriticCommand', loc: location(), source: text(), mark: mark, dotless: !!char[1], character: char[1] || char[0], } }, peg$c85 = function(v) { return basicTextConversions({ kind: 'Text', loc: location(), source: text(), value: v.join('').trim(), mode: 'verbatim', }) }, peg$c86 = function(v) { const block = { kind: 'Block', loc: location(), source: text(), value: v, markup: {}, case: 'protect', }; let leadingcmd = block.value.length && (block.value[0].kind.endsWith('Command') || block.value[0].kind === 'Environment') ? block.value[0] : null; let leadingcmdblockarg = leadingcmd && leadingcmd.kind === 'RegularCommand' && leadingcmd.arguments.required.length && leadingcmd.arguments.required[0].kind === 'Block' && leadingcmd.arguments.required[0]; // https://github.com/retorquere/zotero-better-bibtex/issues/541#issuecomment-240156274 if (leadingcmd) { delete block.case; // command with a block cancels out case protection with containing block // if a smallcaps block has set case to 'preserve' we want to keep this if (leadingcmdblockarg && leadingcmdblockarg.case === 'protect') delete leadingcmdblockarg.case; // \sl, \it etc if (markup[leadingcmd.command]) { block.markup[markup[leadingcmd.command]] = true; block.value.shift(); } } return handle_markup_switches(block) }, peg$c87 = function() { return !math.on }, peg$c88 = "$", peg$c89 = peg$literalExpectation("$", false), peg$c90 = "$$", peg$c91 = peg$literalExpectation("$$", false), peg$c92 = function(mode) { return math.set(true) }, peg$c93 = function(mode, v) { return math.set(false) }, peg$c94 = function(mode, v) { return { kind: mode == '$$' ? 'DisplayMath' : 'InlineMath', loc: location(), source: text(), value: v, case: 'protect', markup: {}, } }, peg$c95 = "%", peg$c96 = peg$literalExpectation("%", false), peg$c97 = /^[^\r\n]/, peg$c98 = peg$classExpectation(["\r", "\n"], true, false), peg$c99 = function(v) { return { kind: 'LineComment', loc: location(), source: text(), value: v, } }, peg$c100 = /^[_\^]/, peg$c101 = peg$classExpectation(["_", "^"], false, false), peg$c102 = function(mode, v) { if (v.kind === 'Block') v = v.value; return { kind: mode === '_' ? 'SubscriptCommand' : 'SuperscriptCommand', loc: location(), source: text(), value: v, } }, peg$c103 = function(mark, v) { return { kind: 'RegularCommand', loc: location(), source: text(), command: mark, arguments: { optional: [], required: [ protect(v) ], }, } }, peg$c104 = /^[^A-Za-z0-9\t\r\n]/, peg$c105 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "\t", "\r", "\n"], true, false), peg$c106 = function(v) { return { kind: 'SymbolCommand', loc: location(), source: text(), command: v, } }, peg$c107 = "newcommand", peg$c108 = peg$literalExpectation("newcommand", false), peg$c109 = function(cmd, name) { return name.value.length == 1 && name.value[0].kind === 'RegularCommand' }, peg$c110 = function(cmd, name, optional, def) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: [], required: [name, def], }, } }, peg$c111 = "begin", peg$c112 = peg$literalExpectation("begin", false), peg$c113 = "end", peg$c114 = peg$literalExpectation("end", false), peg$c115 = function(cmd) { return verbatimCommands.includes(cmd) && (has_arguments[cmd] === 2) }, peg$c116 = function(cmd, optional, req1, req2) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [protect(req1), protect(req2)], }, } }, peg$c117 = function(cmd) { return verbatimCommands.includes(cmd) && (has_arguments[cmd] === 1) }, peg$c118 = function(cmd, optional, req) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [protect(req)], }, } }, peg$c119 = function(cmd) { return (has_arguments[cmd] === 2) }, peg$c120 = function(cmd, optional, req1, req2) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [req1, req2], }, } }, peg$c121 = function(cmd) { return (has_arguments[cmd] === 1) }, peg$c122 = function(cmd, optional, req) { let m; if (req.kind === 'Block') { switch (cmd) { case 'textsuperscript': case 'sp': req.markup.sup = true; break case 'textsubscript': case 'sb': req.markup.sub = true; break case 'textsc': req.markup.smallCaps = true; break case 'enquote': case 'mkbibquote': req.markup.enquote = true; break case 'textbf': case 'mkbibbold': req.markup.bold = true; break case 'emph': case 'textit': case 'mkbibitalic': case 'mkbibemph': req.markup.italics = true; break default: if (m = cmd.match(/^((sub)*)section$/)) { req.markup[`h${(m[1].length / 3) + 1}`] = true; } } } // ignore case stuff on bibcyr if (cmd === 'bibcyr') delete req.case; return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [req], } } }, peg$c123 = function(cmd, optional) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [], } } }, peg$c124 = "[", peg$c125 = peg$literalExpectation("[", false), peg$c126 = /^[^\]]/, peg$c127 = peg$classExpectation(["]"], true, false), peg$c128 = "]", peg$c129 = peg$literalExpectation("]", false), peg$c130 = function(v) { return basicTextConversions({ kind: 'Text', // this isn't really correct but I don't need these right now loc: location(), source: text(), value: v, mode: math.on ? 'math' : 'text', }) }, peg$c131 = /^[^ \t\^_${}\\]/, peg$c132 = peg$classExpectation([" ", "\t", "^", "_", "$", "{", "}", "\\"], true, false), peg$c133 = function(v) { return basicTextConversions({ kind: 'Text', loc: location(), source: text(), value: normalizeWhitespace([v]), mode: math.on ? 'math' : 'text', }) }, peg$c134 = /^[a-zA-Z\-_]/, peg$c135 = peg$classExpectation([["a", "z"], ["A", "Z"], "-", "_"], false, false), peg$c136 = /^[a-zA-Z0-9\-&_:]/, peg$c137 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"], "-", "&", "_", ":"], false, false), peg$c138 = /^['`"=~\^.]/, peg$c139 = peg$classExpectation(["'", "`", "\"", "=", "~", "^", "."], false, false), peg$c140 = /^['`"=~\^.cbuvdrHk]/, peg$c141 = peg$classExpectation(["'", "`", "\"", "=", "~", "^", ".", "c", "b", "u", "v", "d", "r", "H", "k"], false, false), peg$c142 = "=", peg$c143 = peg$literalExpectation("=", false), peg$c144 = "#", peg$c145 = peg$literalExpectation("#", false), peg$c146 = /^[\r\n]/, peg$c147 = peg$classExpectation(["\r", "\n"], false, false), peg$c149 = /^[ \t]/, peg$c150 = peg$classExpectation([" ", "\t"], false, false), peg$c151 = peg$otherExpectation("Optional Horizontal Whitespace"), peg$c155 = /^[ \t\n\r]/, peg$c156 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false), peg$c157 = peg$otherExpectation("Optional Whitespace"), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result; if ("startRule" in options) { if (!(options.startRule in peg$startRuleFunctions)) { throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); } peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; } function text() { return input.substring(peg$savedPos, peg$currPos); } function location() { return peg$computeLocation(peg$savedPos, peg$currPos); } function peg$literalExpectation(text, ignoreCase) { return { type: "literal", text: text, ignoreCase: ignoreCase }; } function peg$classExpectation(parts, inverted, ignoreCase) { return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; } function peg$endExpectation() { return { type: "end" }; } function peg$otherExpectation(description) { return { type: "other", description: description }; } function peg$computePosDetails(pos) { var details = peg$posDetailsCache[pos], p; if (details) { return details; } else { p = pos - 1; while (!peg$posDetailsCache[p]) { p--; } details = peg$posDetailsCache[p]; details = { line: details.line, column: details.column }; while (p < pos) { if (input.charCodeAt(p) === 10) { details.line++; details.column = 1; } else { details.column++; } p++; } peg$posDetailsCache[pos] = details; return details; } } function peg$computeLocation(startPos, endPos) { var startPosDetails = peg$computePosDetails(startPos), endPosDetails = peg$computePosDetails(endPos); return { start: { offset: startPos, line: startPosDetails.line, column: startPosDetails.column }, end: { offset: endPos, line: endPosDetails.line, column: endPosDetails.column } }; } function peg$fail(expected) { if (peg$currPos < peg$maxFailPos) { return; } if (peg$currPos > peg$maxFailPos) { peg$maxFailPos = peg$currPos; peg$maxFailExpected = []; } peg$maxFailExpected.push(expected); } function peg$buildStructuredError(expected, found, location) { return new peg$SyntaxError( peg$SyntaxError.buildMessage(expected, found), expected, found, location ); } function peg$parseBibliography() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseNode(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseNode(); } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c0(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseComment() { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { if (input.substr(peg$currPos, 7).toLowerCase() === peg$c3) { s3 = input.substr(peg$currPos, 7); peg$currPos += 7; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c4); } } if (s3 !== peg$FAILED) { s4 = peg$parse__h(); if (s4 !== peg$FAILED) { s5 = peg$parseBracedComment(); if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c5(s5); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { if (input.substr(peg$currPos, 7).toLowerCase() === peg$c3) { s3 = input.substr(peg$currPos, 7); peg$currPos += 7; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c4); } } if (s3 !== peg$FAILED) { s4 = peg$parse__h(); if (s4 !== peg$FAILED) { s5 = []; if (peg$c6.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c6.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } } if (s5 !== peg$FAILED) { s6 = []; if (peg$c8.test(input.charAt(peg$currPos))) { s7 = input.charAt(peg$currPos); peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } while (s7 !== peg$FAILED) { s6.push(s7); if (peg$c8.test(input.charAt(peg$currPos))) { s7 = input.charAt(peg$currPos); peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } } if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c10(s5); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$currPos; if (peg$c11.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c12); } } if (s2 !== peg$FAILED) { s3 = []; if (peg$c6.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c6.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } } if (s3 !== peg$FAILED) { s2 = [s2, s3]; s1 = s2; } else { peg$currPos = s1; s1 = peg$FAILED; } } else { peg$currPos = s1; s1 = peg$FAILED; } if (s1 !== peg$FAILED) { s2 = []; if (peg$c8.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } while (s3 !== peg$FAILED) { s2.push(s3); if (peg$c8.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c13(s1); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } return s0; } function peg$parseNode() { var s0, s1; s0 = peg$currPos; s1 = peg$parseComment(); if (s1 === peg$FAILED) { s1 = peg$parsePreambleExpression(); if (s1 === peg$FAILED) { s1 = peg$parseStringDeclaration(); if (s1 === peg$FAILED) { s1 = peg$parseEntry(); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c14(s1); } s0 = s1; return s0; } function peg$parseBracedComment() { var s0, s1, s2, s3; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; if (peg$c17.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } if (s3 === peg$FAILED) { s3 = peg$parseBracedComment(); } while (s3 !== peg$FAILED) { s2.push(s3); if (peg$c17.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } if (s3 === peg$FAILED) { s3 = peg$parseBracedComment(); } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c21(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseEntry() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { s3 = peg$currPos; s4 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); if (peg$c22.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { s3 = input.substring(s3, peg$currPos); } else { s3 = s4; } if (s3 !== peg$FAILED) { s4 = peg$parse__(); if (s4 !== peg$FAILED) { if (peg$c24.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c25); } } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { s7 = peg$parseEntryId(); if (s7 === peg$FAILED) { s7 = null; } if (s7 !== peg$FAILED) { s8 = peg$parse__(); if (s8 !== peg$FAILED) { s9 = []; s10 = peg$parseField(); while (s10 !== peg$FAILED) { s9.push(s10); s10 = peg$parseField(); } if (s9 !== peg$FAILED) { s10 = peg$parse__(); if (s10 !== peg$FAILED) { if (peg$c26.test(input.charAt(peg$currPos))) { s11 = input.charAt(peg$currPos); peg$currPos++; } else { s11 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c27); } } if (s11 !== peg$FAILED) { s12 = peg$parse__(); if (s12 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c28(s3, s7, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parsePreambleExpression() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { if (input.substr(peg$currPos, 8).toLowerCase() === peg$c29) { s3 = input.substr(peg$currPos, 8); peg$currPos += 8; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c30); } } if (s3 !== peg$FAILED) { s4 = peg$parse__(); if (s4 !== peg$FAILED) { if (peg$c24.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c25); } } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { s7 = []; s8 = peg$parseEnvironment(); if (s8 === peg$FAILED) { s8 = peg$parseBlock(); if (s8 === peg$FAILED) { s8 = peg$parseMath(); if (s8 === peg$FAILED) { s8 = peg$parseCommand(); if (s8 === peg$FAILED) { s8 = peg$parseText(); } } } } while (s8 !== peg$FAILED) { s7.push(s8); s8 = peg$parseEnvironment(); if (s8 === peg$FAILED) { s8 = peg$parseBlock(); if (s8 === peg$FAILED) { s8 = peg$parseMath(); if (s8 === peg$FAILED) { s8 = peg$parseCommand(); if (s8 === peg$FAILED) { s8 = peg$parseText(); } } } } } if (s7 !== peg$FAILED) { s8 = peg$parse__(); if (s8 !== peg$FAILED) { if (peg$c26.test(input.charAt(peg$currPos))) { s9 = input.charAt(peg$currPos); peg$currPos++; } else { s9 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c27); } } if (s9 !== peg$FAILED) { s10 = peg$parse__(); if (s10 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c31(s5, s7, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseStringDeclaration() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { if (input.substr(peg$currPos, 6).toLowerCase() === peg$c32) { s3 = input.substr(peg$currPos, 6); peg$currPos += 6; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c33); } } if (s3 !== peg$FAILED) { s4 = peg$parse__(); if (s4 !== peg$FAILED) { if (peg$c24.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c25); } } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { s7 = peg$parseVariableName(); if (s7 !== peg$FAILED) { s8 = peg$parseFieldSeparator(); if (s8 !== peg$FAILED) { s9 = []; s10 = peg$parseRegularValue(); if (s10 !== peg$FAILED) { while (s10 !== peg$FAILED) { s9.push(s10); s10 = peg$parseRegularValue(); } } else { s9 = peg$FAILED; } if (s9 !== peg$FAILED) { s10 = peg$parse__(); if (s10 !== peg$FAILED) { if (peg$c26.test(input.charAt(peg$currPos))) { s11 = input.charAt(peg$currPos); peg$currPos++; } else { s11 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c27); } } if (s11 !== peg$FAILED) { s12 = peg$parse__(); if (s12 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c34(s7, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseEntryId() { var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { s2 = peg$currPos; s3 = []; if (peg$c35.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c36); } } while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c35.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c36); } } } if (s3 !== peg$FAILED) { s2 = input.substring(s2, peg$currPos); } else { s2 = s3; } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 44) { s4 = peg$c37; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c38); } } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c39(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseField() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; s0 = peg$currPos; s1 = peg$parseFieldName(); if (s1 !== peg$FAILED) { peg$savedPos = peg$currPos; s2 = peg$c40(s1); if (s2) { s2 = void 0; } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$parseFieldSeparator(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { s4 = peg$c15; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s4 !== peg$FAILED) { s5 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { s6 = peg$c15; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } peg$silentFails--; if (s6 !== peg$FAILED) { peg$currPos = s5; s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = peg$parseVerbatimFieldValue(); if (s6 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s7 = peg$c19; peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s7 !== peg$FAILED) { s8 = peg$parseFieldTerminator(); if (s8 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c41(s1, s6); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseFieldName(); if (s1 !== peg$FAILED) { peg$savedPos = peg$currPos; s2 = peg$c42(s1); if (s2) { s2 = void 0; } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$parseFieldSeparator(); if (s3 !== peg$FAILED) { s4 = peg$parseVerbatimFieldValue(); if (s4 !== peg$FAILED) { s5 = peg$parseFieldTerminator(); if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c43(s1, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseFieldName(); if (s1 !== peg$FAILED) { s2 = peg$parseFieldSeparator(); if (s2 !== peg$FAILED) { s3 = peg$parseFieldValue(); if (s3 !== peg$FAILED) { s4 = peg$parseFieldTerminator(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c44(s1, s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } return s0; } function peg$parseFieldName() { var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { s2 = peg$currPos; s3 = []; if (peg$c45.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c46); } } if (s4 !== peg$FAILED) { while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c45.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c46); } } } } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s2 = input.substring(s2, peg$currPos); } else { s2 = s3; } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c47(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseVerbatimFieldValue() { var s0, s1, s2, s3; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { s1 = peg$c48; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c49); } } if (s1 !== peg$FAILED) { s2 = peg$parseTextNoQuotes(); if (s2 === peg$FAILED) { s2 = null; } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { s3 = peg$c48; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c49); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c50(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseVerbatimText(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseVerbatimText(); } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c51(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } return s0; } function peg$parseVerbatimText() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$currPos; s2 = []; if (peg$c17.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } if (s3 !== peg$FAILED) { while (s3 !== peg$FAILED) { s2.push(s3); if (peg$c17.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } } } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s1 = input.substring(s1, peg$currPos); } else { s1 = s2; } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c52(s1); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseVerbatimText(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseVerbatimText(); } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c53(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } return s0; } function peg$parseFieldValue() { var s0, s1, s2, s3; s0 = peg$parseNumber(); if (s0 === peg$FAILED) { s0 = peg$currPos; peg$savedPos = peg$currPos; s1 = peg$c54(); if (s1) { s1 = void 0; } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseRegularValue(); if (s3 === peg$FAILED) { s3 = peg$parseStringValue(); } while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseRegularValue(); if (s3 === peg$FAILED) { s3 = peg$parseStringValue(); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c55(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } return s0; } function peg$parseRegularValue() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { s1 = peg$c48; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c49); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseTextNoQuotes(); } } } } while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseTextNoQuotes(); } } } } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { s3 = peg$c48; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c49); } } if (s3 !== peg$FAILED) { s4 = peg$parseConcat(); if (s4 === peg$FAILED) { s4 = null; } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c56(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.substr(peg$currPos, 6) === peg$c57) { s1 = peg$c57; peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c58); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (peg$c59.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c60); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parseVerbatimText(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parseVerbatimText(); } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s4 = peg$c19; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s4 !== peg$FAILED) { s5 = peg$parseConcat(); if (s5 === peg$FAILED) { s5 = null; } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c51(s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseText(); } } } } while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseText(); } } } } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { s4 = peg$parseConcat(); if (s4 === peg$FAILED) { s4 = null; } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c56(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseStringReference(); if (s1 !== peg$FAILED) { s2 = peg$parseConcat(); if (s2 === peg$FAILED) { s2 = null; } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c56(s1); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } } return s0; } function peg$parseStringValue() { var s0, s1, s2; s0 = peg$currPos; s1 = peg$parseStringReference(); if (s1 !== peg$FAILED) { s2 = peg$parseConcat(); if (s2 === peg$FAILED) { s2 = null; } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c56(s1); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseText() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c61.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c62); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c61.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c62); } } } } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c63(s1); } s0 = s1; return s0; } function peg$parseTextNoQuotes() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c64.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c65); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c64.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c65); } } } } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c63(s1); } s0 = s1; return s0; } function peg$parseNumber() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$currPos; s2 = []; if (peg$c66.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c67); } } if (s3 !== peg$FAILED) { while (s3 !== peg$FAILED) { s2.push(s3); if (peg$c66.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c67); } } } } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s1 = input.substring(s1, peg$currPos); } else { s1 = s2; } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c68(s1); } s0 = s1; return s0; } function peg$parseStringReference() { var s0, s1; s0 = peg$currPos; s1 = peg$parseVariableName(); if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c69(s1); } s0 = s1; return s0; } function peg$parseEnvironment() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; s0 = peg$currPos; if (input.substr(peg$currPos, 7) === peg$c70) { s1 = peg$c70; peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c71); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; s3 = []; if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s4 !== peg$FAILED) { while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } } } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s2 = input.substring(s2, peg$currPos); } else { s2 = s3; } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parseEnvironment(); if (s5 === peg$FAILED) { s5 = peg$parseBlock(); if (s5 === peg$FAILED) { s5 = peg$parseCommand(); if (s5 === peg$FAILED) { s5 = peg$parseMath(); if (s5 === peg$FAILED) { s5 = peg$parseText(); } } } } while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parseEnvironment(); if (s5 === peg$FAILED) { s5 = peg$parseBlock(); if (s5 === peg$FAILED) { s5 = peg$parseCommand(); if (s5 === peg$FAILED) { s5 = peg$parseMath(); if (s5 === peg$FAILED) { s5 = peg$parseText(); } } } } } if (s4 !== peg$FAILED) { if (input.substr(peg$currPos, 5) === peg$c74) { s5 = peg$c74; peg$currPos += 5; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c75); } } if (s5 !== peg$FAILED) { s6 = peg$currPos; s7 = []; if (peg$c72.test(input.charAt(peg$currPos))) { s8 = input.charAt(peg$currPos); peg$currPos++; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s8 !== peg$FAILED) { while (s8 !== peg$FAILED) { s7.push(s8); if (peg$c72.test(input.charAt(peg$currPos))) { s8 = input.charAt(peg$currPos); peg$currPos++; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } } } else { s7 = peg$FAILED; } if (s7 !== peg$FAILED) { s6 = input.substring(s6, peg$currPos); } else { s6 = s7; } if (s6 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s7 = peg$c19; peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s7 !== peg$FAILED) { peg$savedPos = peg$currPos; s8 = peg$c76(s2, s4, s6); if (s8) { s8 = void 0; } else { s8 = peg$FAILED; } if (s8 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c77(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseBlock() { var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; if (input.substr(peg$currPos, 2) === peg$c78) { s1 = peg$c78; peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c79); } } if (s1 !== peg$FAILED) { s2 = peg$parseExtendedDiacritic(); if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s4 === peg$FAILED) { s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s5 = peg$c80; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s5 !== peg$FAILED) { if (peg$c82.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c83); } } if (s6 !== peg$FAILED) { s5 = [s5, s6]; s4 = s5; } else { peg$currPos = s4; s4 = peg$FAILED; } } else { peg$currPos = s4; s4 = peg$FAILED; } } if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s5 = peg$c19; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c84(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.substr(peg$currPos, 6) === peg$c57) { s1 = peg$c57; peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c58); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (peg$c59.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c60); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parseVerbatimText(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parseVerbatimText(); } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s4 = peg$c19; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c85(s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseText(); } } } } while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseText(); } } } } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c86(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } return s0; } function peg$parseMath() { var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; peg$savedPos = peg$currPos; s1 = peg$c87(); if (s1) { s1 = void 0; } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 36) { s2 = peg$c88; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c89); } } if (s2 === peg$FAILED) { if (input.substr(peg$currPos, 2) === peg$c90) { s2 = peg$c90; peg$currPos += 2; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c91); } } } if (s2 !== peg$FAILED) { peg$savedPos = peg$currPos; s3 = peg$c92(); if (s3) { s3 = void 0; } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parseBlock(); if (s5 === peg$FAILED) { s5 = peg$parseCommand(); if (s5 === peg$FAILED) { s5 = peg$parseText(); } } while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parseBlock(); if (s5 === peg$FAILED) { s5 = peg$parseCommand(); if (s5 === peg$FAILED) { s5 = peg$parseText(); } } } if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 36) { s5 = peg$c88; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c89); } } if (s5 === peg$FAILED) { if (input.substr(peg$currPos, 2) === peg$c90) { s5 = peg$c90; peg$currPos += 2; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c91); } } } if (s5 !== peg$FAILED) { peg$savedPos = peg$currPos; s6 = peg$c93(); if (s6) { s6 = void 0; } else { s6 = peg$FAILED; } if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c94(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseLineComment() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 37) { s1 = peg$c95; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c96); } } if (s1 !== peg$FAILED) { s2 = peg$parse__h(); if (s2 !== peg$FAILED) { s3 = peg$currPos; s4 = []; if (peg$c97.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c98); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); if (peg$c97.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c98); } } } } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { s3 = input.substring(s3, peg$currPos); } else { s3 = s4; } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parseEOL(); if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parseEOL(); } } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c99(s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseCommand() { var s0; s0 = peg$parseScriptCommand(); if (s0 === peg$FAILED) { s0 = peg$parseDiacriticCommand(); if (s0 === peg$FAILED) { s0 = peg$parseRegularCommand(); if (s0 === peg$FAILED) { s0 = peg$parseSymbolCommand(); } } } return s0; } function peg$parseScriptCommand() { var s0, s1, s2, s3; s0 = peg$currPos; if (peg$c100.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c101); } } if (s1 !== peg$FAILED) { s2 = peg$parse__h(); if (s2 !== peg$FAILED) { s3 = peg$parseRequiredArgument(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c102(s1, s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseDiacriticCommand() { var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$parseSimpleDiacritic(); if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s4 === peg$FAILED) { s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s5 = peg$c80; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s5 !== peg$FAILED) { if (peg$c82.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c83); } } if (s6 !== peg$FAILED) { s5 = [s5, s6]; s4 = s5; } else { peg$currPos = s4; s4 = peg$FAILED; } } else { peg$currPos = s4; s4 = peg$FAILED; } } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c84(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$parseExtendedDiacritic(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { s3 = peg$c15; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s3 !== peg$FAILED) { if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s4 === peg$FAILED) { s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s5 = peg$c80; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s5 !== peg$FAILED) { if (peg$c82.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c83); } } if (s6 !== peg$FAILED) { s5 = [s5, s6]; s4 = s5; } else { peg$currPos = s4; s4 = peg$FAILED; } } else { peg$currPos = s4; s4 = peg$FAILED; } } if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s5 = peg$c19; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c84(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$parseExtendedDiacritic(); if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { s4 = peg$c15; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } peg$silentFails--; if (s4 !== peg$FAILED) { peg$currPos = s3; s3 = void 0; } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$parseRegularValue(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c103(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } return s0; } function peg$parseSymbolCommand() { var s0, s1, s2, s3; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; if (peg$c104.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c105); } } if (s3 !== peg$FAILED) { s2 = input.substring(s2, peg$currPos); } else { s2 = s3; } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c106(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseRegularCommand() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { if (input.substr(peg$currPos, 10) === peg$c107) { s2 = peg$c107; peg$currPos += 10; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c108); } } if (s2 !== peg$FAILED) { s3 = peg$parseBlock(); if (s3 !== peg$FAILED) { peg$savedPos = peg$currPos; s4 = peg$c109(s2, s3); if (s4) { s4 = void 0; } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { s5 = []; s6 = peg$parseOptionalArgument(); while (s6 !== peg$FAILED) { s5.push(s6); s6 = peg$parseOptionalArgument(); } if (s5 !== peg$FAILED) { s6 = peg$parseRequiredArgument(); if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c110(s2, s3, s5, s6); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { peg$savedPos = peg$currPos; s5 = peg$c115(s4); if (s5) { s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parseOptionalArgument(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parseOptionalArgument(); } if (s6 !== peg$FAILED) { s7 = peg$parse__h(); if (s7 !== peg$FAILED) { s8 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { s9 = peg$c15; peg$currPos++; } else { s9 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } peg$silentFails--; if (s9 !== peg$FAILED) { peg$currPos = s8; s8 = void 0; } else { s8 = peg$FAILED; } if (s8 !== peg$FAILED) { s9 = peg$parseVerbatimFieldValue(); if (s9 !== peg$FAILED) { s10 = peg$parseVerbatimFieldValue(); if (s10 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c116(s4, s6, s9, s10); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { peg$savedPos = peg$currPos; s5 = peg$c117(s4); if (s5) { s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parseOptionalArgument(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parseOptionalArgument(); } if (s6 !== peg$FAILED) { s7 = peg$parse__h(); if (s7 !== peg$FAILED) { s8 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { s9 = peg$c15; peg$currPos++; } else { s9 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } peg$silentFails--; if (s9 !== peg$FAILED) { peg$currPos = s8; s8 = void 0; } else { s8 = peg$FAILED; } if (s8 !== peg$FAILED) { s9 = peg$parseVerbatimFieldValue(); if (s9 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c118(s4, s6, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { peg$savedPos = peg$currPos; s5 = peg$c119(s4); if (s5) { s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parseOptionalArgument(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parseOptionalArgument(); } if (s6 !== peg$FAILED) { s7 = peg$parse__h(); if (s7 !== peg$FAILED) { s8 = peg$parseRequiredArgument(); if (s8 !== peg$FAILED) { s9 = peg$parseRequiredArgument(); if (s9 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c120(s4, s6, s8, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { peg$savedPos = peg$currPos; s5 = peg$c121(s4); if (s5) { s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parseOptionalArgument(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parseOptionalArgument(); } if (s6 !== peg$FAILED) { s7 = peg$parse__h(); if (s7 !== peg$FAILED) { s8 = peg$parseRequiredArgument(); if (s8 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c122(s4, s6, s8); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { s5 = []; s6 = peg$parseOptionalArgument(); while (s6 !== peg$FAILED) { s5.push(s6); s6 = peg$parseOptionalArgument(); } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c123(s4, s5); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } } } } return s0; } function peg$parseOptionalArgument() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { s1 = peg$c124; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c125); } } if (s1 !== peg$FAILED) { s2 = peg$parse__h(); if (s2 !== peg$FAILED) { s3 = peg$currPos; s4 = []; if (peg$c126.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c127); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); if (peg$c126.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c127); } } } } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { s3 = input.substring(s3, peg$currPos); } else { s3 = s4; } if (s3 !== peg$FAILED) { s4 = peg$parse__h(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { s5 = peg$c128; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c129); } } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c130(s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseRequiredArgument() { var s0, s1, s2; s0 = peg$currPos; s1 = peg$parse__h(); if (s1 !== peg$FAILED) { if (peg$c131.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c132); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c133(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseBlock(); if (s1 === peg$FAILED) { s1 = peg$parseCommand(); } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c52(s1); } s0 = s1; } return s0; } function peg$parseVariableName() { var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$currPos; if (peg$c134.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c135); } } if (s2 !== peg$FAILED) { s3 = []; if (peg$c136.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c137); } } while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c136.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c137); } } } if (s3 !== peg$FAILED) { s2 = [s2, s3]; s1 = s2; } else { peg$currPos = s1; s1 = peg$FAILED; } } else { peg$currPos = s1; s1 = peg$FAILED; } if (s1 !== peg$FAILED) { s0 = input.substring(s0, peg$currPos); } else { s0 = s1; } return s0; } function peg$parseSimpleDiacritic() { var s0; if (peg$c138.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c139); } } return s0; } function peg$parseExtendedDiacritic() { var s0; if (peg$c140.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c141); } } return s0; } function peg$parseFieldSeparator() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 61) { s2 = peg$c142; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c143); } } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { s1 = [s1, s2, s3]; s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseFieldTerminator() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 44) { s2 = peg$c37; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c38); } } if (s2 === peg$FAILED) { s2 = null; } if (s2 !== peg$FAILED) { s3 = peg$parse__h(); if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parseLineComment(); if (s5 === peg$FAILED) { s5 = peg$parseEOL(); } while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parseLineComment(); if (s5 === peg$FAILED) { s5 = peg$parseEOL(); } } if (s4 !== peg$FAILED) { s1 = [s1, s2, s3, s4]; s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseConcat() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { s2 = peg$c144; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c145); } } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { s1 = [s1, s2, s3]; s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseEOL() { var s0; if (peg$c146.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c147); } } return s0; } function peg$parse__h() { var s0, s1; peg$silentFails++; s0 = []; if (peg$c149.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c150); } } while (s1 !== peg$FAILED) { s0.push(s1); if (peg$c149.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c150); } } } peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c151); } } return s0; } function peg$parse__() { var s0, s1; peg$silentFails++; s0 = []; if (peg$c155.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c156); } } while (s1 !== peg$FAILED) { s0.push(s1); if (peg$c155.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c156); } } } peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c157); } } return s0; } /* MIT License Copyright (c) 2017 Derek P Sifford, parts copyright (c) 2019 by Emiliano Heyns Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ const markup = { sl: 'italics', em: 'italics', it: 'italics', itshape: 'italics', bf: 'bold', bfseries: 'bold', sc: 'smallCaps', scshape: 'smallCaps', tt: 'fixedWidth', rm: 'roman', sf: 'sansSerif', verb: 'verbatim', }; const unnestFields = (options.unnestFields || []).map(field => field.toLowerCase()); const verbatimFields = (options.verbatimFields || [ 'urlraw', 'url', 'doi', 'file', 'files', 'eprint', 'verba', 'verbb', 'verbc' ]).map(field => typeof field === 'string' ? field.toLowerCase() : field); const verbatimCommands = (options.verbatimCommands || ['texttt', 'url', 'href']); function isVerbatimField(name) { return verbatimFields.find(p => (typeof p === 'string') ? name === p : name.match(p)) } function normalizeWhitespace(textArr) { return textArr.reduce((prev, curr) => { if (/\s/.test(curr)) { if (/\s/.test(prev[prev.length - 1])) { return prev; } else { return prev + ' '; } } return prev + curr; }, ''); } const has_arguments = { ElsevierGlyph: 1, end: 1, begin: 1, bibcyr: 1, bibstring: 1, chsf: 1, cite: 1, cyrchar: 1, ding: 1, emph: 1, enquote: 1, frac: 2, href: 2, hspace: 1, mathrm: 1, mbox: 1, mkbibbold: 1, mkbibemph: 1, mkbibitalic: 1, mkbibquote: 1, newcommand: 2, noopsort: 1, ocirc: 1, section: 1, sb: 1, sp: 1, subsection: 1, subsubsection: 1, subsubsubsection: 1, t: 1, textbf: 1, textit: 1, textrm: 1, textsc: 1, textsubscript: 1, textsuperscript: 1, texttt: 1, url: 1, vphantom: 1, vspace: 1, }; if (options.combiningDiacritics) { for (const cmd of options.combiningDiacritics) { has_arguments[cmd] = 1; } } const math = { on: false, set: function(state) { this.on = state; return true } }; function basicTextConversions(node) { if (node.kind !== 'Text') throw new Error(node.kind + ' is not a Text node') switch (node.mode) { case 'verbatim': break case 'math': node.value = node.value.replace(/~/g, '\u00A0'); break case 'text': node.value = node.value .replace(/---/g, '\u2014') .replace(/--/g, '\u2013') .replace(//g, '\u00BF') .replace(/~/g, '\u00A0') .replace(/``/g, options.markup.enquote.open) .replace(/''/g, options.markup.enquote.close); break default: throw new Error(`Unexpected text mode ${node.mode}`) } return node } function protect(v) { let source; if (Array.isArray(v)) { source = v.map(e => e.source).join(''); } else { v = [ v ]; source = v.source; } return { kind: 'Block', value: v, markup: {}, case: 'protect', source: source, } } function handle_markup_switches(block) { const value = block.value; if (!Array.isArray(value)) return block block.value = []; const pseudo = { block: null, markup: {}, }; function pseudo_block() { pseudo.block = { kind: 'Block', loc: location(), source: '', value: [], markup: JSON.parse(JSON.stringify(pseudo.markup)), pseudo: true, }; block.value.push(pseudo.block); } for (const node of value) { if (node.kind === 'Environment' || node.kind === 'Block') { block.value.push(node); if (Object.keys(pseudo.markup).length) { pseudo_block(); } else { pseudo.block = null; } continue } if (node.kind === 'RegularCommand' && markup[node.command]) { if (pseudo.markup.italics) { // https://github.com/citation-js/bibtex-parser-experiments/commit/cae475f075a05d1c074485a061b08ed245170c7e delete pseudo.markup.italics; if (markup[node.command] !== 'italics') pseudo.markup[markup[node.command]] = true; } else { pseudo.markup[markup[node.command]] = true; } if (Object.keys(pseudo.markup).length) { pseudo_block(); } else { pseudo.block = null; } } if (pseudo.block) { pseudo.block.source += node.source; pseudo.block.value.push(node); } else { block.value.push(node); } } block.value = block.value.filter(node => !(node.pseudo && node.value.length === 0)); return block } peg$result = peg$startRuleFunction(); if (peg$result !== peg$FAILED && peg$currPos === input.length) { return peg$result; } else { if (peg$result !== peg$FAILED && peg$currPos < input.length) { peg$fail(peg$endExpectation()); } throw peg$buildStructuredError( peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) ); } } var grammar = { SyntaxError: peg$SyntaxError, parse: peg$parse }; var chunker = createCommonjsModule(function (module, exports) { // Original work by Henrik Muehe (c) 2010 // // CommonJS port by Mikola Lysenko 2013 // Object.defineProperty(exports, "__esModule", { value: true }); exports.parse = void 0; class ParseError extends Error { constructor(message, parser) { message += ` @ ${parser.pos}`; if (parser.parsing) message += ` in ${JSON.stringify(parser.parsing)}`; super(message); this.name = 'ParseError'; } } // tslint:disable-next-line prefer-template const letter = new RegExp('[' + [ // Letter, Uppercase /\u0041-\u005A\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A/.source, // Letter, Titlecase /\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC/.source, // Letter, Lowercase /\u0061-\u007A\u00B5\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A/.source, // Letter, Modifier /\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F/.source, // Letter, Other /\u00AA\u00BA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u10FD-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source, ].join('') + ']'); class BibtexParser { parse(input, options = {}) { // this._progress = 0 this.pos = 0; this.input = input; this.max_entries = options.max_entries || 0; this.entries = 0; this.parsing = null; this.chunks = []; if (options.async) { return this.bibtexAsync().then(() => this.chunks); } else { this.bibtex(); return this.chunks; } } isWhitespace(s, horizontalOnly = false) { return (s === ' ' || s === '\t' || (!horizontalOnly && (s === '\r' || s === '\n'))); } match(s) { this.skipWhitespace(); if (this.input.substr(this.pos, s.length) !== s) { throw new ParseError(`Token mismatch, expected ${JSON.stringify(s)}, found ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers } this.pos += s.length; this.skipWhitespace(); } tryMatch(s) { this.skipWhitespace(); return (this.input.substr(this.pos, s.length) === s); // this.skipWhitespace() } skipWhitespace() { while (this.pos < this.input.length && this.isWhitespace(this.input[this.pos])) this.pos++; // shady if (this.input[this.pos] === '%') { while (this.pos < this.input.length && this.input[this.pos] !== '\n') this.pos++; while (this.pos < this.input.length && this.isWhitespace(this.input[this.pos])) this.pos++; } } value_braces() { let bracecount = 0; this.match('{'); const start = this.pos; let math = false; while (true) { switch (this.input[this.pos]) { case '\\': this.pos += 1; break; case '{': bracecount++; break; case '}': if (bracecount === 0) { if (math) throw new ParseError('Unclosed math section', this); this.pos++; return this.input.substring(start, this.pos - 1); } bracecount--; break; case '$': math = !math; break; } this.pos++; if (this.pos >= this.input.length) { throw new ParseError(`Unterminated brace-value ${JSON.stringify(this.input.substr(start, 20))}`, this); // tslint:disable-line no-magic-numbers } } } value_quotes() { this.match('"'); const start = this.pos; let bracecount = 0; while (true) { switch (this.input[this.pos]) { case '\\': this.pos += 1; break; case '{': bracecount++; break; case '}': bracecount--; break; case '"': if (bracecount <= 0) { this.pos++; return this.input.substring(start, this.pos - 1); } } this.pos++; if (this.pos >= this.input.length) { throw new ParseError(`Unterminated quote-value ${JSON.stringify(this.input.substr(start, 20))}`, this); // tslint:disable-line no-magic-numbers } } } single_value() { if (this.tryMatch('{')) { return this.value_braces(); } else if (this.tryMatch('"')) { return this.value_quotes(); } else { return this.key(); } } value() { const values = []; values.push(this.single_value()); while (this.tryMatch('#')) { this.match('#'); values.push(this.single_value()); } return values.join(''); } key(allowUnicode = false) { const start = this.pos; while (true) { if (this.pos === this.input.length) { throw new ParseError('Runaway key', this); } if (this.input[this.pos].match(/['a-zA-Z0-9&;_:\\./-]/)) { this.pos++; } else if (allowUnicode && this.input[this.pos].match(letter)) { this.pos++; } else { return this.input.substring(start, this.pos); } } } key_equals_value() { const key = this.key(); if (!this.tryMatch('=')) { throw new ParseError(`... = value expected, equals sign missing: ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers } this.match('='); const val = this.value(); return [key, val]; } key_value_list() { this.key_equals_value(); while (this.tryMatch(',')) { this.match(','); // fixes problems with commas at the end of a list if (this.tryMatch('}')) { break; } this.key_equals_value(); } } entry(d) { this.parsing = this.key(true); this.match(','); this.key_value_list(); } directive() { this.match('@'); return `@${this.key()}`.toLowerCase(); } string() { this.key_equals_value(); } preamble() { this.value(); } comment() { while (this.isWhitespace(this.input[this.pos], true)) this.pos++; if (this.input[this.pos] === '{') { this.value_braces(); return; } while (this.input[this.pos] !== '\n' && this.pos < this.input.length) this.pos++; } /* private progress() { const progress = Math.round((this.pos / this.input.length * 100) / 5) * 5 // tslint:disable-line no-magic-numbers if (this._progress !== progress) { this._progress = progress process.stdout.write(` (${this._progress}%) `) } } */ hasMore() { if (this.max_entries && this.entries >= this.max_entries) return false; return (this.pos < this.input.length); } bibtex() { while (this.hasMore()) { this.parseNext(); } } bibtexAsync() { return this.hasMore() ? (new Promise(resolve => resolve(this.parseNext()))).then(() => this.bibtexAsync()) : Promise.resolve(null); } parseNext() { // this.progress() const chunk = { offset: { pos: this.pos, line: this.input.substring(0, this.pos).split('\n').length - 1, }, error: null, text: null, }; this.skipWhitespace(); if (this.pos >= this.input.length) return; let guard = ''; try { const d = this.directive(); switch (d) { case '@string': this.match('{'); this.string(); this.match('}'); chunk.stringDeclaration = true; break; case '@preamble': this.match('{'); this.preamble(); this.match('}'); chunk.preamble = true; break; case '@comment': this.comment(); chunk.comment = true; break; default: if (this.tryMatch('{')) { guard = '{}'; } else if (this.tryMatch('(')) { guard = '()'; } else { throw new ParseError(`Token mismatch, expected '{' or '(', found ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers } this.match(guard[0]); this.entry(d); this.match(guard[1]); chunk.entry = true; this.entries++; break; } } catch (err) { if (err.name !== 'ParseError') throw err; chunk.error = err.message, // skip ahead to the next @ and try again this.pos = chunk.offset.pos + 1; while (this.pos < this.input.length && this.input[this.pos] !== '@') this.pos++; } const text = this.input.substring(chunk.offset.pos, this.pos); const last = this.chunks.length - 1; if (chunk.error && this.chunks.length && this.chunks[last].error) { this.chunks[last].text += text; } else { chunk.text = text; this.chunks.push(chunk); } } } /** * Reads the bibtex input and splits it into separate chunks of `@string`s, `@comment`s, and bibtex entries. Useful for detecting if a file is bibtex file and for filtering out basic errors that would * make the more sophisticated [[bibtex.parse]] reject the whole file * * @returns array of chunks, with markers for type and errors (if any) found. */ function parse(input, options = {}) { return (new BibtexParser).parse(input, options); } exports.parse = parse; }); var $ = { math: "\\$", text: "\\$" }; var _ = { math: "\\_", text: "\\_" }; var require$$0$1 = { "#": { math: "\\#", text: "\\#" }, $: $, "%": { math: "\\%", text: "\\%" }, "&": { math: "\\&", text: "\\&" }, "/​": { text: "\\slash", commandspacer: true }, "<": { math: "<" }, ">": { math: ">" }, "\\": { math: "\\backslash", text: "\\textbackslash", commandspacer: true }, "^": { math: "\\sphat", text: "\\^" }, _: _, "i︠a︡": { text: "\\t{ia}" }, "{": { math: "\\lbrace", text: "\\{" }, "}": { math: "\\rbrace", text: "\\}" }, "~": { math: "\\sptilde", text: "\\textasciitilde", commandspacer: true }, " ": { math: "~", space: true, text: "~" }, "¡": { text: "\\textexclamdown", commandspacer: true }, "¢": { math: "\\cent", text: "\\textcent", commandspacer: true, textpackages: [ "textcomp" ] }, "£": { math: "\\pounds", text: "\\textsterling", commandspacer: true, textpackages: [ "textcomp" ] }, "¤": { text: "\\textcurrency", commandspacer: true, textpackages: [ "textcomp" ] }, "¥": { math: "\\yen", text: "\\textyen", commandspacer: true, textpackages: [ "textcomp" ] }, "¦": { text: "\\textbrokenbar", commandspacer: true, textpackages: [ "textcomp" ] }, "§": { text: "\\textsection", commandspacer: true, textpackages: [ "textcomp" ] }, "¨": { math: "\\spddot", text: "\\textasciidieresis", commandspacer: true }, "©": { text: "\\textcopyright", commandspacer: true, textpackages: [ "textcomp" ] }, "ª": { text: "\\textordfeminine", commandspacer: true, textpackages: [ "textcomp" ] }, "«": { text: "\\guillemotleft", commandspacer: true }, "¬": { math: "\\lnot" }, "­": { math: "\\-", text: "\\-" }, "®": { math: "\\circledR", text: "\\textregistered", commandspacer: true, textpackages: [ "textcomp" ] }, "¯": { text: "\\textasciimacron", commandspacer: true }, "°": { math: "^\\circ", text: "\\textdegree", commandspacer: true, textpackages: [ "textcomp" ] }, "±": { math: "\\pm" }, "²": { math: "^{2}" }, "³": { math: "^{3}" }, "´": { text: "\\textasciiacute", commandspacer: true }, "µ": { text: "\\textmu", commandspacer: true }, "¶": { text: "\\textparagraph", commandspacer: true, textpackages: [ "textcomp" ] }, "·": { math: "\\cdot" }, "¸": { text: "\\c", commandspacer: true }, "¹": { math: "^{1}" }, "º": { text: "\\textordmasculine", commandspacer: true, textpackages: [ "textcomp" ] }, "»": { text: "\\guillemotright", commandspacer: true }, "¼": { math: "\\frac{1}{4}" }, "½": { math: "\\frac{1}{2}" }, "¾": { math: "\\frac{3}{4}" }, "¿": { text: "\\textquestiondown", commandspacer: true }, "À": { text: "\\`A" }, "Á": { text: "\\'A" }, "Â": { text: "\\^A" }, "Ã": { text: "\\~A" }, "Ä": { text: "\\\"A" }, "Å": { text: "\\AA", commandspacer: true }, "Æ": { text: "\\AE", commandspacer: true }, "Ç": { text: "\\c{C}" }, "È": { text: "\\`E" }, "É": { text: "\\'E" }, "Ê": { text: "\\^E" }, "Ë": { text: "\\\"E" }, "Ì": { text: "\\`I" }, "Í": { text: "\\'I" }, "Î": { text: "\\^I" }, "Ï": { text: "\\\"I" }, "Ð": { text: "\\DH", commandspacer: true }, "Ñ": { text: "\\~N" }, "Ò": { text: "\\`O" }, "Ó": { text: "\\'O" }, "Ô": { text: "\\^O" }, "Õ": { text: "\\~O" }, "Ö": { text: "\\\"O" }, "×": { math: "\\times", text: "\\texttimes", commandspacer: true }, "Ø": { text: "\\O", commandspacer: true }, "Ù": { text: "\\`U" }, "Ú": { text: "\\'U" }, "Û": { text: "\\^U" }, "Ü": { text: "\\\"U" }, "Ý": { text: "\\'Y" }, "Þ": { text: "\\TH", commandspacer: true }, "ß": { text: "\\ss", commandspacer: true }, "à": { text: "\\`a" }, "á": { text: "\\'a" }, "â": { text: "\\^a" }, "ã": { text: "\\~a" }, "ä": { text: "\\\"a" }, "å": { text: "\\aa", commandspacer: true }, "æ": { text: "\\ae", commandspacer: true }, "ç": { text: "\\c{c}" }, "è": { text: "\\`e" }, "é": { text: "\\'e" }, "ê": { text: "\\^e" }, "ë": { text: "\\\"e" }, "ì": { text: "\\`i" }, "í": { text: "\\'i" }, "î": { text: "\\^i" }, "ï": { text: "\\\"i" }, "ð": { math: "\\eth", mathpackages: [ "amssymb", "arevmath" ], text: "\\dh", commandspacer: true }, "ñ": { text: "\\~n" }, "ò": { text: "\\`o" }, "ó": { text: "\\'o" }, "ô": { text: "\\^o" }, "õ": { text: "\\~o" }, "ö": { text: "\\\"o" }, "÷": { math: "\\div" }, "ø": { text: "\\o", commandspacer: true }, "ù": { text: "\\`u" }, "ú": { text: "\\'u" }, "û": { text: "\\^u" }, "ü": { text: "\\\"u" }, "ý": { text: "\\'y" }, "þ": { text: "\\th", commandspacer: true }, "ÿ": { text: "\\\"y" }, "Ā": { text: "\\=A" }, "ā": { text: "\\=a" }, "Ă": { text: "\\u{A}" }, "ă": { text: "\\u{a}" }, "Ą": { text: "\\k{A}" }, "ą": { text: "\\k{a}" }, "Ć": { text: "\\'C" }, "ć": { text: "\\'c" }, "Ĉ": { text: "\\^C" }, "ĉ": { text: "\\^c" }, "Ċ": { text: "\\.C" }, "ċ": { text: "\\.c" }, "Č": { text: "\\v{C}" }, "č": { text: "\\v{c}" }, "Ď": { text: "\\v{D}" }, "ď": { text: "\\v{d}" }, "Đ": { text: "\\DJ", commandspacer: true }, "đ": { text: "\\dj", commandspacer: true }, "Ē": { text: "\\=E" }, "ē": { text: "\\=e" }, "Ĕ": { text: "\\u{E}" }, "ĕ": { text: "\\u{e}" }, "Ė": { text: "\\.E" }, "ė": { text: "\\.e" }, "Ę": { text: "\\k{E}" }, "ę": { text: "\\k{e}" }, "Ě": { text: "\\v{E}" }, "ě": { text: "\\v{e}" }, "Ĝ": { text: "\\^G" }, "ĝ": { text: "\\^g" }, "Ğ": { text: "\\u{G}" }, "ğ": { text: "\\u{g}" }, "Ġ": { text: "\\.G" }, "ġ": { text: "\\.g" }, "Ģ": { text: "\\c{G}" }, "ģ": { text: "\\c{g}" }, "Ĥ": { text: "\\^H" }, "ĥ": { text: "\\^h" }, "Ħ": { text: "{\\fontencoding{LELA}\\selectfont\\char40}" }, "ħ": { math: "\\Elzxh" }, "Ĩ": { text: "\\~I" }, "ĩ": { text: "\\~i" }, "Ī": { text: "\\=I" }, "ī": { text: "\\=i" }, "Ĭ": { text: "\\u{I}" }, "ĭ": { text: "{\\u \\i}" }, "Į": { text: "\\k{I}" }, "į": { text: "\\k{i}" }, "İ": { text: "\\.I" }, "ı": { math: "\\imath", text: "\\i", commandspacer: true }, "IJ": { text: "IJ" }, "ij": { text: "ij" }, "Ĵ": { text: "\\^J" }, "ĵ": { text: "\\^\\j", commandspacer: true }, "Ķ": { text: "\\c{K}" }, "ķ": { text: "\\c{k}" }, "ĸ": { text: "{\\fontencoding{LELA}\\selectfont\\char91}" }, "Ĺ": { text: "\\'L" }, "ĺ": { text: "\\'l" }, "Ļ": { text: "\\c{L}" }, "ļ": { text: "\\c{l}" }, "Ľ": { text: "\\v{L}" }, "ľ": { text: "\\v{l}" }, "Ŀ": { text: "{\\fontencoding{LELA}\\selectfont\\char201}" }, "ŀ": { text: "{\\fontencoding{LELA}\\selectfont\\char202}" }, "Ł": { text: "\\L", commandspacer: true }, "ł": { text: "\\l", commandspacer: true }, "Ń": { text: "\\'N" }, "ń": { text: "\\'n" }, "Ņ": { text: "\\c{N}" }, "ņ": { text: "\\c{n}" }, "Ň": { text: "\\v{N}" }, "ň": { text: "\\v{n}" }, "ʼn": { text: "'n" }, "Ŋ": { text: "\\NG", commandspacer: true }, "ŋ": { text: "\\ng", commandspacer: true }, "Ō": { text: "\\=O" }, "ō": { text: "\\=o" }, "Ŏ": { text: "\\u{O}" }, "ŏ": { text: "\\u{o}" }, "Ő": { text: "\\H{O}" }, "ő": { text: "\\H{o}" }, "Œ": { text: "\\OE", commandspacer: true }, "œ": { text: "\\oe", commandspacer: true }, "Ŕ": { text: "\\'R" }, "ŕ": { text: "\\'r" }, "Ŗ": { text: "\\c{R}" }, "ŗ": { text: "\\c{r}" }, "Ř": { text: "\\v{R}" }, "ř": { text: "\\v{r}" }, "Ś": { text: "\\'S" }, "ś": { text: "\\'s" }, "Ŝ": { text: "\\^S" }, "ŝ": { text: "\\^s" }, "Ş": { text: "\\c{S}" }, "ş": { text: "\\c{s}" }, "Š": { text: "\\v{S}" }, "š": { text: "\\v{s}" }, "Ţ": { text: "\\c{T}" }, "ţ": { text: "\\c{t}" }, "Ť": { text: "\\v{T}" }, "ť": { text: "\\v{t}" }, "Ŧ": { text: "{\\fontencoding{LELA}\\selectfont\\char47}" }, "ŧ": { text: "{\\fontencoding{LELA}\\selectfont\\char63}" }, "Ũ": { text: "\\~U" }, "ũ": { text: "\\~u" }, "Ū": { text: "\\=U" }, "ū": { text: "\\=u" }, "Ŭ": { text: "\\u{U}" }, "ŭ": { text: "\\u{u}" }, "Ů": { text: "\\r{U}" }, "ů": { text: "\\r{u}" }, "Ű": { text: "\\H{U}" }, "ű": { text: "\\H{u}" }, "Ų": { text: "\\k{U}" }, "ų": { text: "\\k{u}" }, "Ŵ": { text: "\\^W" }, "ŵ": { text: "\\^w" }, "Ŷ": { text: "\\^Y" }, "ŷ": { text: "\\^y" }, "Ÿ": { text: "\\\"Y" }, "Ź": { text: "\\'Z" }, "ź": { text: "\\'z" }, "Ż": { text: "\\.Z" }, "ż": { text: "\\.z" }, "Ž": { text: "\\v{Z}" }, "ž": { text: "\\v{z}" }, "ſ": { text: "s" }, "ƒ": { math: "f" }, "ƕ": { text: "\\texthvlig", commandspacer: true }, "ƞ": { text: "\\textnrleg", commandspacer: true }, "ƪ": { text: "\\textesh", commandspacer: true }, "Ƶ": { math: "\\Zbar" }, "ƺ": { text: "{\\fontencoding{LELA}\\selectfont\\char195}" }, "ǂ": { text: "\\textdoublepipe", commandspacer: true }, "Ǎ": { text: "\\v{A}" }, "ǎ": { text: "\\v{a}" }, "Ǐ": { text: "\\v{I}" }, "ǐ": { text: "\\v{i}" }, "Ǒ": { text: "\\v{O}" }, "ǒ": { text: "\\v{o}" }, "Ǔ": { text: "\\v{U}" }, "ǔ": { text: "\\v{u}" }, "Ǧ": { text: "\\v{G}" }, "ǧ": { text: "\\v{g}" }, "Ǩ": { text: "\\v{K}" }, "ǩ": { text: "\\v{k}" }, "Ǫ": { text: "\\k{O}" }, "ǫ": { text: "\\k{o}" }, "ǰ": { text: "\\v{j}" }, "Ǵ": { text: "\\'G" }, "ǵ": { text: "\\'g" }, "Ȩ": { text: "\\c{E}" }, "ȩ": { text: "\\c{e}" }, "ȷ": { math: "\\jmath" }, "ɐ": { math: "\\Elztrna" }, "ɒ": { math: "\\Elztrnsa" }, "ɔ": { math: "\\Elzopeno" }, "ɖ": { math: "\\Elzrtld" }, "ɘ": { text: "{\\fontencoding{LEIP}\\selectfont\\char61}" }, "ə": { math: "\\Elzschwa" }, "ɛ": { math: "\\varepsilon" }, "ɡ": { text: "g" }, "ɣ": { math: "\\Elzpgamma" }, "ɤ": { math: "\\Elzpbgam" }, "ɥ": { math: "\\Elztrnh" }, "ɬ": { math: "\\Elzbtdl" }, "ɭ": { math: "\\Elzrtll" }, "ɯ": { math: "\\Elztrnm" }, "ɰ": { math: "\\Elztrnmlr" }, "ɱ": { math: "\\Elzltlmr" }, "ɲ": { text: "\\Elzltln", commandspacer: true }, "ɳ": { math: "\\Elzrtln" }, "ɷ": { math: "\\Elzclomeg" }, "ɸ": { text: "\\textphi", commandspacer: true }, "ɹ": { math: "\\Elztrnr" }, "ɺ": { math: "\\Elztrnrl" }, "ɻ": { math: "\\Elzrttrnr" }, "ɼ": { math: "\\Elzrl" }, "ɽ": { math: "\\Elzrtlr" }, "ɾ": { math: "\\Elzfhr" }, "ɿ": { text: "{\\fontencoding{LEIP}\\selectfont\\char202}" }, "ʂ": { math: "\\Elzrtls" }, "ʃ": { math: "\\Elzesh" }, "ʇ": { math: "\\Elztrnt" }, "ʈ": { math: "\\Elzrtlt" }, "ʊ": { math: "\\Elzpupsil" }, "ʋ": { math: "\\Elzpscrv" }, "ʌ": { math: "\\Elzinvv" }, "ʍ": { math: "\\Elzinvw" }, "ʎ": { math: "\\Elztrny" }, "ʐ": { math: "\\Elzrtlz" }, "ʒ": { math: "\\Elzyogh" }, "ʔ": { math: "\\Elzglst" }, "ʕ": { math: "\\Elzreglst" }, "ʖ": { math: "\\Elzinglst" }, "ʞ": { text: "\\textturnk", commandspacer: true }, "ʤ": { math: "\\Elzdyogh" }, "ʧ": { math: "\\Elztesh" }, "ʰ": { math: "^{h}", text: "\\textsuperscript{h}" }, "ʲ": { math: "^{j}", text: "\\textsuperscript{j}" }, "ʳ": { math: "^{r}", text: "\\textsuperscript{r}" }, "ʷ": { math: "^{w}", text: "\\textsuperscript{w}" }, "ʸ": { math: "^{y}", text: "\\textsuperscript{y}" }, "ʹ": { text: "'" }, "ʻ": { text: "'" }, "ʼ": { text: "'" }, "ʽ": { text: "'" }, "ʿ": { text: "\\lasp", commandspacer: true, textpackages: [ "mathscinet" ] }, "ˆ": { text: "\\textasciicircum", commandspacer: true }, "ˇ": { text: "\\textasciicaron", commandspacer: true }, "ˈ": { math: "\\Elzverts" }, "ˉ": { text: "-" }, "ˌ": { math: "\\Elzverti" }, "ː": { math: "\\Elzlmrk" }, "ˑ": { math: "\\Elzhlmrk" }, "˒": { math: "\\Elzsbrhr" }, "˓": { math: "\\Elzsblhr" }, "˔": { math: "\\Elzrais" }, "˕": { math: "\\Elzlow" }, "˘": { text: "\\textasciibreve", commandspacer: true }, "˙": { text: "\\textperiodcentered", commandspacer: true, textpackages: [ "textcomp" ] }, "˚": { text: "\\r{}" }, "˛": { text: "\\k{}" }, "˜": { text: "\\texttildelow", commandspacer: true }, "˝": { text: "\\H{}" }, "ˡ": { math: "^{l}", text: "\\textsuperscript{l}" }, "ˢ": { math: "^{s}", text: "\\textsuperscript{s}" }, "ˣ": { math: "^{x}", text: "\\textsuperscript{x}" }, "˥": { text: "\\tone{55}" }, "˦": { text: "\\tone{44}" }, "˧": { text: "\\tone{33}" }, "˨": { text: "\\tone{22}" }, "˩": { text: "\\tone{11}" }, "̀": { math: "\\grave", combiningdiacritic: true, text: "\\`" }, "̀̄": { text: "\\textgravemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̀": { text: "\\textgravemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̀̇": { text: "\\textgravedot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̀": { text: "\\textgravedot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "́": { math: "\\acute", combiningdiacritic: true, text: "\\'" }, "́̄": { text: "\\textacutemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄́": { text: "\\textacutemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "́̌": { text: "\\textacutewedge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̌́": { text: "\\textacutewedge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̂": { math: "\\hat", combiningdiacritic: true, text: "\\^" }, "̂̇": { text: "\\textcircumdot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̂": { text: "\\textcircumdot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̃": { math: "\\tilde", combiningdiacritic: true, text: "\\~" }, "̃̇": { text: "\\texttildedot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̃": { text: "\\texttildedot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄": { math: "\\bar", combiningdiacritic: true, text: "\\=" }, "̅": { math: "\\overline", combiningdiacritic: true }, "̆": { math: "\\breve", combiningdiacritic: true, text: "\\u", commandspacer: true }, "̆̄": { text: "\\textbrevemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̆": { text: "\\textbrevemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇": { math: "\\dot", combiningdiacritic: true, text: "\\." }, "̇́": { text: "\\textdotacute", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "́̇": { text: "\\textdotacute", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̆": { text: "\\textdotbreve", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̆̇": { text: "\\textdotbreve", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̈": { math: "\\ddot", combiningdiacritic: true, text: "\\\"" }, "̉": { math: "\\ovhook" }, "̊": { math: "\\mathring", combiningdiacritic: true, text: "\\r", commandspacer: true }, "̊̄": { text: "\\textringmacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̊": { text: "\\textringmacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̋": { text: "\\H", commandspacer: true, combiningdiacritic: true }, "̌": { math: "\\check", text: "\\v", commandspacer: true, combiningdiacritic: true }, "̍": { text: "\\textvbaraccent", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̎": { text: "\\textdoublevbaraccent", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̏": { text: "\\textdoublegrave", commandspacer: true, combiningdiacritic: true }, "̐": { text: "\\textdotbreve", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̑": { text: "{\\fontencoding{LECO}\\selectfont\\char177}" }, "̒": { math: "\\oturnedcomma" }, "̕": { math: "\\ocommatopright" }, "̖": { text: "\\textsubgrave", commandspacer: true, combiningdiacritic: true }, "̘": { text: "\\textadvancing", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̙": { text: "\\textretracting", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̚": { math: "\\droang", text: "\\textcorner", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̜": { text: "\\textsublhalfring", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̝": { text: "\\textraising", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̞": { text: "\\textlowering", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̟": { text: "\\textsubplus", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̡": { math: "\\Elzpalh" }, "̢": { text: "\\Elzrh", commandspacer: true }, "̣": { text: "\\d", commandspacer: true, combiningdiacritic: true }, "̤": { text: "\\textsubumlaut", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̥": { text: "\\textsubring", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̧": { text: "\\c", commandspacer: true, combiningdiacritic: true }, "̨": { text: "\\k", commandspacer: true, combiningdiacritic: true }, "̩": { text: "\\textsyllabic", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̪": { math: "\\Elzsbbrg", text: "\\textsubbridge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̫": { text: "{\\fontencoding{LECO}\\selectfont\\char203}" }, "̬": { text: "\\textsubwedge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̯": { text: "\\textsubarch", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̰": { math: "\\utilde", text: "\\textsubtilde", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̱": { math: "\\underbar", combiningdiacritic: true, text: "\\textsubbar", commandspacer: true, textpackages: [ "tipa" ] }, "̲": { math: "\\underline" }, "̴": { text: "\\textsuperimposetilde", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̵": { text: "\\Elzxl", commandspacer: true }, "̶": { text: "\\Elzbar", commandspacer: true }, "̷": { text: "{\\fontencoding{LECO}\\selectfont\\char215}" }, "̸": { math: "\\not" }, "̹": { text: "\\textsubrhalfring", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̺": { text: "\\textinvsubbridge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̻": { text: "\\textsubsquare", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̼": { text: "\\textseagull", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̽": { text: "\\textovercross", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "͡": { text: "{\\fontencoding{LECO}\\selectfont\\char225}" }, "ʹ": { text: "'" }, "͵": { text: "," }, ";": { text: ";" }, "Ά": { text: "\\'A" }, "Έ": { text: "\\'E" }, "Ή": { text: "\\'H" }, "Ί": { text: "{\\'{}I}" }, "Ό": { text: "{\\'{}O}" }, "Ύ": { math: "\\mathrm{'Y}" }, "Ώ": { math: "\\mathrm{'\\Omega}" }, "ΐ": { math: "\\acute{\\ddot{\\iota}}" }, "Α": { math: "A" }, "Β": { math: "B" }, "Γ": { math: "\\Gamma" }, "Δ": { math: "\\Delta" }, "Ε": { math: "E" }, "Ζ": { math: "Z" }, "Η": { math: "H" }, "Θ": { math: "\\Theta" }, "Ι": { math: "I" }, "Κ": { math: "K" }, "Λ": { math: "\\Lambda" }, "Μ": { math: "M" }, "Ν": { math: "N" }, "Ξ": { math: "\\Xi" }, "Ο": { math: "O" }, "Π": { math: "\\Pi" }, "Ρ": { math: "P" }, "Σ": { math: "\\Sigma" }, "Τ": { math: "T" }, "Υ": { math: "\\Upsilon" }, "Φ": { math: "\\Phi" }, "Χ": { math: "X" }, "Ψ": { math: "\\Psi" }, "Ω": { math: "\\Omega" }, "Ϊ": { math: "\\mathrm{\\ddot{I}}" }, "Ϋ": { math: "\\mathrm{\\ddot{Y}}" }, "ά": { text: "{\\'$\\alpha$}" }, "έ": { math: "\\acute{\\epsilon}" }, "ή": { math: "\\acute{\\eta}" }, "ί": { math: "\\acute{\\iota}" }, "ΰ": { math: "\\acute{\\ddot{\\upsilon}}" }, "α": { math: "\\alpha" }, "β": { math: "\\beta" }, "γ": { math: "\\gamma" }, "δ": { math: "\\delta" }, "ε": { math: "\\epsilon" }, "ζ": { math: "\\zeta" }, "η": { math: "\\eta" }, "θ": { math: "\\theta", text: "\\texttheta", commandspacer: true }, "ι": { math: "\\iota" }, "κ": { math: "\\kappa" }, "λ": { math: "\\lambda" }, "μ": { math: "\\mu" }, "ν": { math: "\\nu" }, "ξ": { math: "\\xi" }, "ο": { math: "o" }, "π": { math: "\\pi" }, "ρ": { math: "\\rho" }, "ς": { math: "\\varsigma" }, "σ": { math: "\\sigma" }, "τ": { math: "\\tau" }, "υ": { math: "\\upsilon" }, "φ": { math: "\\varphi" }, "χ": { math: "\\chi" }, "ψ": { math: "\\psi" }, "ω": { math: "\\omega" }, "ϊ": { math: "\\ddot{\\iota}" }, "ϋ": { math: "\\ddot{\\upsilon}" }, "ό": { text: "\\'o" }, "ύ": { math: "\\acute{\\upsilon}" }, "ώ": { math: "\\acute{\\omega}" }, "ϐ": { math: "\\varbeta", text: "\\Pisymbol{ppi022}{87}" }, "ϑ": { math: "\\vartheta", text: "\\textvartheta", commandspacer: true }, "ϒ": { math: "\\Upsilon" }, "ϕ": { math: "\\phi" }, "ϖ": { math: "\\varpi" }, "Ϙ": { math: "\\Qoppa" }, "ϙ": { math: "\\qoppa" }, "Ϛ": { math: "\\Stigma" }, "ϛ": { math: "\\stigma" }, "Ϝ": { math: "\\Digamma" }, "ϝ": { math: "\\digamma" }, "Ϟ": { math: "\\Koppa" }, "ϟ": { math: "\\koppa" }, "Ϡ": { math: "\\Sampi" }, "ϡ": { math: "\\sampi" }, "ϰ": { math: "\\varkappa" }, "ϱ": { math: "\\varrho" }, "ϴ": { math: "\\upvarTheta", text: "\\textTheta", commandspacer: true }, "ϵ": { math: "\\epsilon" }, "϶": { math: "\\backepsilon" }, "Ё": { text: "\\cyrchar\\CYRYO", commandspacer: true }, "Ђ": { text: "\\cyrchar\\CYRDJE", commandspacer: true }, "Ѓ": { text: "\\cyrchar{\\'\\CYRG}" }, "Є": { text: "\\cyrchar\\CYRIE", commandspacer: true }, "Ѕ": { text: "\\cyrchar\\CYRDZE", commandspacer: true }, "І": { text: "\\cyrchar\\CYRII", commandspacer: true }, "Ї": { text: "\\cyrchar\\CYRYI", commandspacer: true }, "Ј": { text: "\\cyrchar\\CYRJE", commandspacer: true }, "Љ": { text: "\\cyrchar\\CYRLJE", commandspacer: true }, "Њ": { text: "\\cyrchar\\CYRNJE", commandspacer: true }, "Ћ": { text: "\\cyrchar\\CYRTSHE", commandspacer: true }, "Ќ": { text: "\\cyrchar{\\'\\CYRK}" }, "Ў": { text: "\\cyrchar\\CYRUSHRT", commandspacer: true }, "Џ": { text: "\\cyrchar\\CYRDZHE", commandspacer: true }, "А": { text: "\\cyrchar\\CYRA", commandspacer: true }, "Б": { text: "\\cyrchar\\CYRB", commandspacer: true }, "В": { text: "\\cyrchar\\CYRV", commandspacer: true }, "Г": { text: "\\cyrchar\\CYRG", commandspacer: true }, "Д": { text: "\\cyrchar\\CYRD", commandspacer: true }, "Е": { text: "\\cyrchar\\CYRE", commandspacer: true }, "Ж": { text: "\\cyrchar\\CYRZH", commandspacer: true }, "З": { text: "\\cyrchar\\CYRZ", commandspacer: true }, "И": { text: "\\cyrchar\\CYRI", commandspacer: true }, "Й": { text: "\\cyrchar\\CYRISHRT", commandspacer: true }, "К": { text: "\\cyrchar\\CYRK", commandspacer: true }, "Л": { text: "\\cyrchar\\CYRL", commandspacer: true }, "М": { text: "\\cyrchar\\CYRM", commandspacer: true }, "Н": { text: "\\cyrchar\\CYRN", commandspacer: true }, "О": { text: "\\cyrchar\\CYRO", commandspacer: true }, "П": { text: "\\cyrchar\\CYRP", commandspacer: true }, "Р": { text: "\\cyrchar\\CYRR", commandspacer: true }, "С": { text: "\\cyrchar\\CYRS", commandspacer: true }, "Т": { text: "\\cyrchar\\CYRT", commandspacer: true }, "У": { text: "\\cyrchar\\CYRU", commandspacer: true }, "Ф": { text: "\\cyrchar\\CYRF", commandspacer: true }, "Х": { text: "\\cyrchar\\CYRH", commandspacer: true }, "Ц": { text: "\\cyrchar\\CYRC", commandspacer: true }, "Ч": { text: "\\cyrchar\\CYRCH", commandspacer: true }, "Ш": { text: "\\cyrchar\\CYRSH", commandspacer: true }, "Щ": { text: "\\cyrchar\\CYRSHCH", commandspacer: true }, "Ъ": { text: "\\cyrchar\\CYRHRDSN", commandspacer: true }, "Ы": { text: "\\cyrchar\\CYRERY", commandspacer: true }, "Ь": { text: "\\cyrchar\\CYRSFTSN", commandspacer: true }, "Э": { text: "\\cyrchar\\CYREREV", commandspacer: true }, "Ю": { text: "\\cyrchar\\CYRYU", commandspacer: true }, "Я": { text: "\\cyrchar\\CYRYA", commandspacer: true }, "а": { text: "\\cyrchar\\cyra", commandspacer: true }, "б": { text: "\\cyrchar\\cyrb", commandspacer: true }, "в": { text: "\\cyrchar\\cyrv", commandspacer: true }, "г": { text: "\\cyrchar\\cyrg", commandspacer: true }, "д": { text: "\\cyrchar\\cyrd", commandspacer: true }, "е": { text: "\\cyrchar\\cyre", commandspacer: true }, "ж": { text: "\\cyrchar\\cyrzh", commandspacer: true }, "з": { text: "\\cyrchar\\cyrz", commandspacer: true }, "и": { text: "\\cyrchar\\cyri", commandspacer: true }, "й": { text: "\\cyrchar\\cyrishrt", commandspacer: true }, "к": { text: "\\cyrchar\\cyrk", commandspacer: true }, "л": { text: "\\cyrchar\\cyrl", commandspacer: true }, "м": { text: "\\cyrchar\\cyrm", commandspacer: true }, "н": { text: "\\cyrchar\\cyrn", commandspacer: true }, "о": { text: "\\cyrchar\\cyro", commandspacer: true }, "п": { text: "\\cyrchar\\cyrp", commandspacer: true }, "р": { text: "\\cyrchar\\cyrr", commandspacer: true }, "с": { text: "\\cyrchar\\cyrs", commandspacer: true }, "т": { text: "\\cyrchar\\cyrt", commandspacer: true }, "у": { text: "\\cyrchar\\cyru", commandspacer: true }, "ф": { text: "\\cyrchar\\cyrf", commandspacer: true }, "х": { text: "\\cyrchar\\cyrh", commandspacer: true }, "ц": { text: "\\cyrchar\\cyrc", commandspacer: true }, "ч": { text: "\\cyrchar\\cyrch", commandspacer: true }, "ш": { text: "\\cyrchar\\cyrsh", commandspacer: true }, "щ": { text: "\\cyrchar\\cyrshch", commandspacer: true }, "ъ": { text: "\\cyrchar\\cyrhrdsn", commandspacer: true }, "ы": { text: "\\cyrchar\\cyrery", commandspacer: true }, "ь": { text: "\\cyrchar\\cyrsftsn", commandspacer: true }, "э": { text: "\\cyrchar\\cyrerev", commandspacer: true }, "ю": { text: "\\cyrchar\\cyryu", commandspacer: true }, "я": { text: "\\cyrchar\\cyrya", commandspacer: true }, "ё": { text: "\\cyrchar\\cyryo", commandspacer: true }, "ђ": { text: "\\cyrchar\\cyrdje", commandspacer: true }, "ѓ": { text: "\\cyrchar{\\'\\cyrg}" }, "є": { text: "\\cyrchar\\cyrie", commandspacer: true }, "ѕ": { text: "\\cyrchar\\cyrdze", commandspacer: true }, "і": { text: "\\cyrchar\\cyrii", commandspacer: true }, "ї": { text: "\\cyrchar\\cyryi", commandspacer: true }, "ј": { text: "\\cyrchar\\cyrje", commandspacer: true }, "љ": { text: "\\cyrchar\\cyrlje", commandspacer: true }, "њ": { text: "\\cyrchar\\cyrnje", commandspacer: true }, "ћ": { text: "\\cyrchar\\cyrtshe", commandspacer: true }, "ќ": { text: "\\cyrchar{\\'\\cyrk}" }, "ў": { text: "\\cyrchar\\cyrushrt", commandspacer: true }, "џ": { text: "\\cyrchar\\cyrdzhe", commandspacer: true }, "Ѡ": { text: "\\cyrchar\\CYROMEGA", commandspacer: true }, "ѡ": { text: "\\cyrchar\\cyromega", commandspacer: true }, "Ѣ": { text: "\\cyrchar\\CYRYAT", commandspacer: true }, "Ѥ": { text: "\\cyrchar\\CYRIOTE", commandspacer: true }, "ѥ": { text: "\\cyrchar\\cyriote", commandspacer: true }, "Ѧ": { text: "\\cyrchar\\CYRLYUS", commandspacer: true }, "ѧ": { text: "\\cyrchar\\cyrlyus", commandspacer: true }, "Ѩ": { text: "\\cyrchar\\CYRIOTLYUS", commandspacer: true }, "ѩ": { text: "\\cyrchar\\cyriotlyus", commandspacer: true }, "Ѫ": { text: "\\cyrchar\\CYRBYUS", commandspacer: true }, "Ѭ": { text: "\\cyrchar\\CYRIOTBYUS", commandspacer: true }, "ѭ": { text: "\\cyrchar\\cyriotbyus", commandspacer: true }, "Ѯ": { text: "\\cyrchar\\CYRKSI", commandspacer: true }, "ѯ": { text: "\\cyrchar\\cyrksi", commandspacer: true }, "Ѱ": { text: "\\cyrchar\\CYRPSI", commandspacer: true }, "ѱ": { text: "\\cyrchar\\cyrpsi", commandspacer: true }, "Ѳ": { text: "\\cyrchar\\CYRFITA", commandspacer: true }, "Ѵ": { text: "\\cyrchar\\CYRIZH", commandspacer: true }, "Ѹ": { text: "\\cyrchar\\CYRUK", commandspacer: true }, "ѹ": { text: "\\cyrchar\\cyruk", commandspacer: true }, "Ѻ": { text: "\\cyrchar\\CYROMEGARND", commandspacer: true }, "ѻ": { text: "\\cyrchar\\cyromegarnd", commandspacer: true }, "Ѽ": { text: "\\cyrchar\\CYROMEGATITLO", commandspacer: true }, "ѽ": { text: "\\cyrchar\\cyromegatitlo", commandspacer: true }, "Ѿ": { text: "\\cyrchar\\CYROT", commandspacer: true }, "ѿ": { text: "\\cyrchar\\cyrot", commandspacer: true }, "Ҁ": { text: "\\cyrchar\\CYRKOPPA", commandspacer: true }, "ҁ": { text: "\\cyrchar\\cyrkoppa", commandspacer: true }, "҂": { text: "\\cyrchar\\cyrthousands", commandspacer: true }, "҈": { text: "\\cyrchar\\cyrhundredthousands", commandspacer: true }, "҉": { text: "\\cyrchar\\cyrmillions", commandspacer: true }, "Ҍ": { text: "\\cyrchar\\CYRSEMISFTSN", commandspacer: true }, "ҍ": { text: "\\cyrchar\\cyrsemisftsn", commandspacer: true }, "Ҏ": { text: "\\cyrchar\\CYRRTICK", commandspacer: true }, "ҏ": { text: "\\cyrchar\\cyrrtick", commandspacer: true }, "Ґ": { text: "\\cyrchar\\CYRGUP", commandspacer: true }, "ґ": { text: "\\cyrchar\\cyrgup", commandspacer: true }, "Ғ": { text: "\\cyrchar\\CYRGHCRS", commandspacer: true }, "ғ": { text: "\\cyrchar\\cyrghcrs", commandspacer: true }, "Ҕ": { text: "\\cyrchar\\CYRGHK", commandspacer: true }, "ҕ": { text: "\\cyrchar\\cyrghk", commandspacer: true }, "Җ": { text: "\\cyrchar\\CYRZHDSC", commandspacer: true }, "җ": { text: "\\cyrchar\\cyrzhdsc", commandspacer: true }, "Ҙ": { text: "\\cyrchar\\CYRZDSC", commandspacer: true }, "ҙ": { text: "\\cyrchar\\cyrzdsc", commandspacer: true }, "Қ": { text: "\\cyrchar\\CYRKDSC", commandspacer: true }, "қ": { text: "\\cyrchar\\cyrkdsc", commandspacer: true }, "Ҝ": { text: "\\cyrchar\\CYRKVCRS", commandspacer: true }, "ҝ": { text: "\\cyrchar\\cyrkvcrs", commandspacer: true }, "Ҟ": { text: "\\cyrchar\\CYRKHCRS", commandspacer: true }, "ҟ": { text: "\\cyrchar\\cyrkhcrs", commandspacer: true }, "Ҡ": { text: "\\cyrchar\\CYRKBEAK", commandspacer: true }, "ҡ": { text: "\\cyrchar\\cyrkbeak", commandspacer: true }, "Ң": { text: "\\cyrchar\\CYRNDSC", commandspacer: true }, "ң": { text: "\\cyrchar\\cyrndsc", commandspacer: true }, "Ҥ": { text: "\\cyrchar\\CYRNG", commandspacer: true }, "ҥ": { text: "\\cyrchar\\cyrng", commandspacer: true }, "Ҧ": { text: "\\cyrchar\\CYRPHK", commandspacer: true }, "ҧ": { text: "\\cyrchar\\cyrphk", commandspacer: true }, "Ҩ": { text: "\\cyrchar\\CYRABHHA", commandspacer: true }, "ҩ": { text: "\\cyrchar\\cyrabhha", commandspacer: true }, "Ҫ": { text: "\\cyrchar\\CYRSDSC", commandspacer: true }, "ҫ": { text: "\\cyrchar\\cyrsdsc", commandspacer: true }, "Ҭ": { text: "\\cyrchar\\CYRTDSC", commandspacer: true }, "ҭ": { text: "\\cyrchar\\cyrtdsc", commandspacer: true }, "Ү": { text: "\\cyrchar\\CYRY", commandspacer: true }, "ү": { text: "\\cyrchar\\cyry", commandspacer: true }, "Ұ": { text: "\\cyrchar\\CYRYHCRS", commandspacer: true }, "ұ": { text: "\\cyrchar\\cyryhcrs", commandspacer: true }, "Ҳ": { text: "\\cyrchar\\CYRHDSC", commandspacer: true }, "ҳ": { text: "\\cyrchar\\cyrhdsc", commandspacer: true }, "Ҵ": { text: "\\cyrchar\\CYRTETSE", commandspacer: true }, "ҵ": { text: "\\cyrchar\\cyrtetse", commandspacer: true }, "Ҷ": { text: "\\cyrchar\\CYRCHRDSC", commandspacer: true }, "ҷ": { text: "\\cyrchar\\cyrchrdsc", commandspacer: true }, "Ҹ": { text: "\\cyrchar\\CYRCHVCRS", commandspacer: true }, "ҹ": { text: "\\cyrchar\\cyrchvcrs", commandspacer: true }, "Һ": { text: "\\cyrchar\\CYRSHHA", commandspacer: true }, "һ": { text: "\\cyrchar\\cyrshha", commandspacer: true }, "Ҽ": { text: "\\cyrchar\\CYRABHCH", commandspacer: true }, "ҽ": { text: "\\cyrchar\\cyrabhch", commandspacer: true }, "Ҿ": { text: "\\cyrchar\\CYRABHCHDSC", commandspacer: true }, "ҿ": { text: "\\cyrchar\\cyrabhchdsc", commandspacer: true }, "Ӏ": { text: "\\cyrchar\\CYRpalochka", commandspacer: true }, "Ӄ": { text: "\\cyrchar\\CYRKHK", commandspacer: true }, "ӄ": { text: "\\cyrchar\\cyrkhk", commandspacer: true }, "Ӈ": { text: "\\cyrchar\\CYRNHK", commandspacer: true }, "ӈ": { text: "\\cyrchar\\cyrnhk", commandspacer: true }, "Ӌ": { text: "\\cyrchar\\CYRCHLDSC", commandspacer: true }, "ӌ": { text: "\\cyrchar\\cyrchldsc", commandspacer: true }, "Ӕ": { text: "\\cyrchar\\CYRAE", commandspacer: true }, "ӕ": { text: "\\cyrchar\\cyrae", commandspacer: true }, "Ә": { text: "\\cyrchar\\CYRSCHWA", commandspacer: true }, "ә": { text: "\\cyrchar\\cyrschwa", commandspacer: true }, "Ӡ": { text: "\\cyrchar\\CYRABHDZE", commandspacer: true }, "ӡ": { text: "\\cyrchar\\cyrabhdze", commandspacer: true }, "Ө": { text: "\\cyrchar\\CYROTLD", commandspacer: true }, "ө": { text: "\\cyrchar\\cyrotld", commandspacer: true }, "ࡱ": { math: "\\\\backslash" }, "ᵃ": { math: "^{a}", text: "\\textsuperscript{a}" }, "ᵇ": { math: "^{b}", text: "\\textsuperscript{b}" }, "ᵈ": { math: "^{d}", text: "\\textsuperscript{d}" }, "ᵉ": { math: "^{e}", text: "\\textsuperscript{e}" }, "ᵍ": { math: "^{g}", text: "\\textsuperscript{g}" }, "ᵏ": { math: "^{k}", text: "\\textsuperscript{k}" }, "ᵐ": { math: "^{m}", text: "\\textsuperscript{m}" }, "ᵒ": { math: "^{o}", text: "\\textsuperscript{o}" }, "ᵖ": { math: "^{p}", text: "\\textsuperscript{p}" }, "ᵗ": { math: "^{t}", text: "\\textsuperscript{t}" }, "ᵘ": { math: "^{u}", text: "\\textsuperscript{u}" }, "ᵛ": { math: "^{v}", text: "\\textsuperscript{v}" }, "ᶜ": { math: "^{c}", text: "\\textsuperscript{c}" }, "ᶠ": { math: "^{f}", text: "\\textsuperscript{f}" }, "ᶻ": { math: "^{z}", text: "\\textsuperscript{z}" }, "Ḃ": { text: "\\.B" }, "ḃ": { text: "\\.b" }, "Ḅ": { text: "\\d{B}" }, "ḅ": { text: "\\d{b}" }, "Ḇ": { text: "\\b{B}" }, "ḇ": { text: "\\b{b}" }, "Ḋ": { text: "\\.D" }, "ḋ": { text: "\\.d" }, "Ḍ": { text: "\\d{D}" }, "ḍ": { text: "\\d{d}" }, "Ḏ": { text: "\\b{D}" }, "ḏ": { text: "\\b{d}" }, "Ḑ": { text: "\\c{D}" }, "ḑ": { text: "\\c{d}" }, "Ḝ": { text: "\\c{\\u{E}}" }, "ḝ": { text: "\\c{\\u{e}}" }, "Ḟ": { text: "\\.F" }, "ḟ": { text: "\\.f" }, "Ḡ": { text: "\\=G" }, "ḡ": { text: "\\=g" }, "Ḣ": { text: "\\.H" }, "ḣ": { text: "\\.h" }, "Ḥ": { text: "\\d{H}" }, "ḥ": { text: "\\d{h}" }, "Ḧ": { text: "\\\"H" }, "ḧ": { text: "\\\"h" }, "Ḩ": { text: "\\c{H}" }, "ḩ": { text: "\\c{h}" }, "Ḱ": { text: "\\'K" }, "ḱ": { text: "\\'k" }, "Ḳ": { text: "\\d{K}" }, "ḳ": { text: "\\d{k}" }, "Ḵ": { text: "\\b{K}" }, "ḵ": { text: "\\b{k}" }, "Ḷ": { text: "\\d{L}" }, "ḷ": { text: "\\d{l}" }, "Ḻ": { text: "\\b{L}" }, "ḻ": { text: "\\b{l}" }, "Ḿ": { text: "\\'M" }, "ḿ": { text: "\\'m" }, "Ṁ": { text: "\\.M" }, "ṁ": { text: "\\.m" }, "Ṃ": { text: "\\d{M}" }, "ṃ": { text: "\\d{m}" }, "Ṅ": { text: "\\.N" }, "ṅ": { text: "\\.n" }, "Ṇ": { text: "\\d{N}" }, "ṇ": { text: "\\d{n}" }, "Ṉ": { text: "\\b{N}" }, "ṉ": { text: "\\b{n}" }, "Ṕ": { text: "\\'P" }, "ṕ": { text: "\\'p" }, "Ṗ": { text: "\\.P" }, "ṗ": { text: "\\.p" }, "Ṙ": { text: "\\.R" }, "ṙ": { text: "\\.r" }, "Ṛ": { text: "\\d{R}" }, "ṛ": { text: "\\d{r}" }, "Ṟ": { text: "\\b{R}" }, "ṟ": { text: "\\b{r}" }, "Ṡ": { text: "\\.S" }, "ṡ": { text: "\\.s" }, "Ṣ": { text: "\\d{S}" }, "ṣ": { text: "\\d{s}" }, "Ṫ": { text: "\\.T" }, "ṫ": { text: "\\.t" }, "Ṭ": { text: "\\d{T}" }, "ṭ": { text: "\\d{t}" }, "Ṯ": { text: "\\b{T}" }, "ṯ": { text: "\\b{t}" }, "Ṽ": { text: "\\~V" }, "ṽ": { text: "\\~v" }, "Ṿ": { text: "\\d{V}" }, "ṿ": { text: "\\d{v}" }, "Ẁ": { text: "\\`W" }, "ẁ": { text: "\\`w" }, "Ẃ": { text: "\\'W" }, "ẃ": { text: "\\'w" }, "Ẅ": { text: "\\\"W" }, "ẅ": { text: "\\\"w" }, "Ẇ": { text: "\\.W" }, "ẇ": { text: "\\.w" }, "Ẉ": { text: "\\d{W}" }, "ẉ": { text: "\\d{w}" }, "Ẋ": { text: "\\.X" }, "ẋ": { text: "\\.x" }, "Ẍ": { text: "\\\"X" }, "ẍ": { text: "\\\"x" }, "Ẏ": { text: "\\.Y" }, "ẏ": { text: "\\.y" }, "Ẑ": { text: "\\^Z" }, "ẑ": { text: "\\^z" }, "Ẓ": { text: "\\d{Z}" }, "ẓ": { text: "\\d{z}" }, "Ẕ": { text: "\\b{Z}" }, "ẕ": { text: "\\b{z}" }, "ẖ": { text: "\\b{h}" }, "ẗ": { text: "\\\"t" }, "ẘ": { text: "\\r{w}" }, "ẙ": { text: "\\r{y}" }, "Ạ": { text: "\\d{A}" }, "ạ": { text: "\\d{a}" }, "Ẹ": { text: "\\d{E}" }, "ẹ": { text: "\\d{e}" }, "Ẽ": { text: "\\~E" }, "ẽ": { text: "\\~e" }, "Ị": { text: "\\d{I}" }, "ị": { text: "\\d{i}" }, "Ọ": { text: "\\d{O}" }, "ọ": { text: "\\d{o}" }, "Ụ": { text: "\\d{U}" }, "ụ": { text: "\\d{u}" }, "Ỳ": { text: "\\`Y" }, "ỳ": { text: "\\`y" }, "Ỵ": { text: "\\d{Y}" }, "ỵ": { text: "\\d{y}" }, "Ỹ": { text: "\\~Y" }, "ỹ": { text: "\\~y" }, " ": { text: " ", space: true }, " ": { math: "\\quad", space: true }, " ": { text: "\\hspace{0.6em}", space: true }, " ": { math: "\\quad", space: true, text: "\\hspace{1em}" }, " ": { text: "\\;", space: true }, " ": { text: "\\hspace{0.25em}", space: true }, " ": { text: "\\hspace{0.166em}", space: true }, " ": { text: "\\hphantom{0}", space: true }, " ": { text: "\\hphantom{,}", space: true }, " ": { text: "\\,", space: true }, " ": { math: "\\mkern1mu", space: true }, "​": { text: "\\mbox", commandspacer: true, space: true }, "‌": { text: "{\\aftergroup\\ignorespaces}" }, "‐": { text: "-" }, "‑": { text: "-" }, "‒": { text: "-" }, "–": { text: "\\textendash", commandspacer: true }, "—": { text: "\\textemdash", commandspacer: true }, "―": { math: "\\horizbar", text: "\\rule{1em}{1pt}" }, "‖": { math: "\\Vert" }, "‗": { math: "\\twolowline" }, "‘": { text: "`" }, "’": { text: "'" }, "‚": { text: "," }, "‛": { math: "\\Elzreapos" }, "“": { text: "``" }, "”": { text: "''" }, "„": { text: ",," }, "‟": { text: "\\quotedblbase", commandspacer: true }, "†": { math: "\\dagger", text: "\\textdagger", commandspacer: true, textpackages: [ "textcomp" ] }, "‡": { math: "\\ddagger", text: "\\textdaggerdbl", commandspacer: true, textpackages: [ "textcomp" ] }, "•": { math: "\\bullet", text: "\\textbullet", commandspacer: true, textpackages: [ "textcomp" ] }, "‣": { text: ">" }, "․": { text: "." }, "‥": { math: "\\enleadertwodots", text: ".." }, "…": { math: "\\ldots", text: "\\ldots", commandspacer: true }, "‧": { text: "-" }, " ": { text: " ", space: true }, "‰": { text: "\\textperthousand", commandspacer: true, textpackages: [ "textcomp" ] }, "‱": { text: "\\textpertenthousand", commandspacer: true, textpackages: [ "textcomp" ] }, "′": { math: "{'}" }, "″": { math: "{''}" }, "‴": { math: "{'''}" }, "‵": { math: "\\backprime" }, "‶": { math: "\\backdprime" }, "‷": { math: "\\backtrprime" }, "‸": { math: "\\caretinsert" }, "‹": { text: "\\guilsinglleft", commandspacer: true }, "›": { text: "\\guilsinglright", commandspacer: true }, "‼": { math: "\\Exclam" }, "‾": { text: "-" }, "⁃": { math: "\\hyphenbullet" }, "⁄": { math: "\\fracslash" }, "⁇": { math: "\\Question" }, "⁈": { text: "?!" }, "⁉": { text: "!?" }, "⁊": { text: "7" }, "⁐": { math: "\\closure" }, "⁗": { math: "''''" }, " ": { math: "\\:", space: true, text: "\\:" }, "⁠": { text: "\\nolinebreak", commandspacer: true }, "⁰": { math: "^{0}" }, "ⁱ": { math: "^{i}", text: "\\textsuperscript{i}" }, "⁴": { math: "^{4}" }, "⁵": { math: "^{5}" }, "⁶": { math: "^{6}" }, "⁷": { math: "^{7}" }, "⁸": { math: "^{8}" }, "⁹": { math: "^{9}" }, "⁺": { math: "^{+}" }, "⁻": { math: "^{-}" }, "⁼": { math: "^{=}" }, "⁽": { math: "^{(}" }, "⁾": { math: "^{)}" }, "ⁿ": { math: "^{n}", text: "\\textsuperscript{n}" }, "₀": { math: "_{0}" }, "₁": { math: "_{1}" }, "₂": { math: "_{2}" }, "₃": { math: "_{3}" }, "₄": { math: "_{4}" }, "₅": { math: "_{5}" }, "₆": { math: "_{6}" }, "₇": { math: "_{7}" }, "₈": { math: "_{8}" }, "₉": { math: "_{9}" }, "₊": { math: "_{+}" }, "₋": { math: "_{-}" }, "₌": { math: "_{=}" }, "₍": { math: "_{(}" }, "₎": { math: "_{)}" }, "ₐ": { math: "_{a}", text: "\\textsubscript{a}" }, "ₑ": { math: "_{e}", text: "\\textsubscript{e}" }, "ₒ": { math: "_{o}", text: "\\textsubscript{o}" }, "ₓ": { math: "_{x}", text: "\\textsubscript{x}" }, "ₔ": { text: "\\textsubscript{\\textschwa}", textpackages: [ "tipa" ] }, "ₕ": { math: "_{h}", text: "\\textsubscript{h}" }, "ₖ": { math: "_{k}", text: "\\textsubscript{k}" }, "ₗ": { math: "_{l}", text: "\\textsubscript{l}" }, "ₘ": { math: "_{m}", text: "\\textsubscript{m}" }, "ₙ": { math: "_{n}", text: "\\textsubscript{n}" }, "ₚ": { math: "_{p}", text: "\\textsubscript{p}" }, "ₛ": { math: "_{s}", text: "\\textsubscript{s}" }, "ₜ": { math: "_{t}", text: "\\textsubscript{t}" }, "₧": { text: "\\ensuremath{\\Elzpes}" }, "€": { math: "\\euro", text: "\\texteuro", commandspacer: true }, "⃐": { math: "\\lvec" }, "⃑": { math: "\\rightharpoonup", mathpackages: [ "amsmath", "amssymb" ] }, "⃒": { math: "\\vertoverlay" }, "⃖": { math: "\\LVec" }, "⃗": { math: "\\vec" }, "⃛": { math: "\\dddot" }, "⃜": { math: "\\ddddot" }, "⃝": { math: "\\enclosecircle" }, "⃞": { math: "\\enclosesquare" }, "⃟": { math: "\\enclosediamond" }, "⃡": { math: "\\overleftrightarrow" }, "⃤": { math: "\\enclosetriangle" }, "⃧": { math: "\\annuity" }, "⃨": { math: "\\threeunderdot" }, "⃩": { math: "\\widebridgeabove" }, "⃬": { math: "\\underrightharpoondown" }, "⃭": { math: "\\underleftharpoondown" }, "⃮": { math: "\\underleftarrow" }, "⃯": { math: "\\underrightarrow" }, "⃰": { math: "\\asteraccent" }, "℀": { text: "a/c" }, "℁": { text: "a/s" }, "ℂ": { math: "\\mathbb{C}" }, "℃": { text: "\\textcelsius", commandspacer: true }, "℅": { text: "c/o" }, "℆": { text: "c/u" }, "ℇ": { math: "\\Euler" }, "℉": { text: "F" }, "ℊ": { math: "\\mathscr{g}" }, "ℋ": { math: "\\mathscr{H}" }, "ℌ": { math: "\\mathfrak{H}" }, "ℍ": { math: "\\mathbb{H}" }, "ℎ": { math: "\\Planckconst" }, "ℏ": { math: "\\hslash" }, "ℐ": { math: "\\mathscr{I}" }, "ℑ": { math: "\\mathfrak{I}" }, "ℒ": { math: "\\mathscr{L}" }, "ℓ": { math: "\\mathscr{l}" }, "ℕ": { math: "\\mathbb{N}" }, "№": { text: "\\cyrchar\\textnumero", commandspacer: true }, "℗": { text: "\\textcircledP", commandspacer: true }, "℘": { math: "\\wp" }, "ℙ": { math: "\\mathbb{P}" }, "ℚ": { math: "\\mathbb{Q}" }, "ℛ": { math: "\\mathscr{R}" }, "ℜ": { math: "\\mathfrak{R}" }, "ℝ": { math: "\\mathbb{R}" }, "℞": { math: "\\Elzxrat" }, "℠": { text: "\\textservicemark", commandspacer: true }, "℡": { text: "TEL" }, "™": { text: "\\texttrademark", commandspacer: true, textpackages: [ "textcomp" ] }, "ℤ": { math: "\\mathbb{Z}" }, "Ω": { math: "\\Omega" }, "℧": { math: "\\mho" }, "ℨ": { math: "\\mathfrak{Z}" }, "℩": { text: "\\textriota", commandspacer: true }, "K": { text: "K" }, "Å": { math: "\\Angstroem", text: "\\AA", commandspacer: true }, "ℬ": { math: "\\mathscr{B}" }, "ℭ": { math: "\\mathfrak{C}" }, "℮": { text: "\\textestimated", commandspacer: true }, "ℯ": { math: "\\mathscr{e}" }, "ℰ": { math: "\\mathscr{E}" }, "ℱ": { math: "\\mathscr{F}" }, "Ⅎ": { math: "\\Finv" }, "ℳ": { math: "\\mathscr{M}" }, "ℴ": { math: "\\mathscr{o}" }, "ℵ": { math: "\\aleph" }, "ℶ": { math: "\\beth" }, "ℷ": { math: "\\gimel" }, "ℸ": { math: "\\daleth" }, "ℼ": { math: "\\mathbb{\\pi}" }, "ℽ": { math: "\\mathbb{\\gamma}" }, "ℾ": { math: "\\mathbb{\\Gamma}" }, "ℿ": { math: "\\mathbb{\\Pi}" }, "⅀": { math: "\\mathbb{\\Sigma}" }, "⅁": { math: "\\Game" }, "⅂": { math: "\\sansLturned" }, "⅃": { math: "\\sansLmirrored" }, "⅄": { math: "\\Yup" }, "ⅅ": { math: "\\CapitalDifferentialD" }, "ⅆ": { math: "\\DifferentialD" }, "ⅇ": { math: "\\ExponetialE" }, "ⅈ": { math: "\\ComplexI" }, "ⅉ": { math: "\\ComplexJ" }, "⅊": { math: "\\PropertyLine" }, "⅋": { math: "\\invamp" }, "⅐": { math: "\\frac{1}{7}" }, "⅑": { math: "\\frac{1}{9}" }, "⅒": { math: "\\frac{1}{10}" }, "⅓": { math: "\\frac{1}{3}" }, "⅔": { math: "\\frac{2}{3}" }, "⅕": { math: "\\frac{1}{5}" }, "⅖": { math: "\\frac{2}{5}" }, "⅗": { math: "\\frac{3}{5}" }, "⅘": { math: "\\frac{4}{5}" }, "⅙": { math: "\\frac{1}{6}" }, "⅚": { math: "\\frac{5}{6}" }, "⅛": { math: "\\frac{1}{8}" }, "⅜": { math: "\\frac{3}{8}" }, "⅝": { math: "\\frac{5}{8}" }, "⅞": { math: "\\frac{7}{8}" }, "⅟": { math: "\\frac{1}" }, "Ⅰ": { text: "I" }, "Ⅱ": { text: "II" }, "Ⅲ": { text: "III" }, "Ⅳ": { text: "IV" }, "Ⅴ": { text: "V" }, "Ⅵ": { text: "VI" }, "Ⅶ": { text: "VII" }, "Ⅷ": { text: "VIII" }, "Ⅸ": { text: "IX" }, "Ⅹ": { text: "X" }, "Ⅺ": { text: "XI" }, "Ⅻ": { text: "XII" }, "Ⅼ": { text: "L" }, "Ⅽ": { text: "C" }, "Ⅾ": { text: "D" }, "Ⅿ": { text: "M" }, "ⅰ": { text: "i" }, "ⅱ": { text: "ii" }, "ⅲ": { text: "iii" }, "ⅳ": { text: "iv" }, "ⅴ": { text: "v" }, "ⅵ": { text: "vi" }, "ⅶ": { text: "vii" }, "ⅷ": { text: "viii" }, "ⅸ": { text: "ix" }, "ⅹ": { text: "x" }, "ⅺ": { text: "xi" }, "ⅻ": { text: "xii" }, "ⅼ": { text: "l" }, "ⅽ": { text: "c" }, "ⅾ": { text: "d" }, "ⅿ": { text: "m" }, "↉": { math: "\\frac{0}{3}" }, "←": { math: "\\leftarrow" }, "↑": { math: "\\uparrow" }, "→": { math: "\\rightarrow", text: "\\textrightarrow", commandspacer: true, textpackages: [ "textcomp" ] }, "↓": { math: "\\downarrow" }, "↔": { math: "\\leftrightarrow" }, "↕": { math: "\\updownarrow" }, "↖": { math: "\\nwarrow" }, "↗": { math: "\\nearrow" }, "↘": { math: "\\searrow" }, "↙": { math: "\\swarrow" }, "↚": { math: "\\nleftarrow" }, "↛": { math: "\\nrightarrow" }, "↜": { math: "\\arrowwaveleft" }, "↝": { math: "\\arrowwaveright" }, "↞": { math: "\\twoheadleftarrow" }, "↟": { math: "\\twoheaduparrow" }, "↠": { math: "\\twoheadrightarrow" }, "↡": { math: "\\twoheaddownarrow" }, "↢": { math: "\\leftarrowtail" }, "↣": { math: "\\rightarrowtail" }, "↤": { math: "\\mapsfrom" }, "↥": { math: "\\MapsUp" }, "↦": { math: "\\mapsto" }, "↧": { math: "\\MapsDown" }, "↨": { math: "\\updownarrowbar" }, "↩": { math: "\\hookleftarrow" }, "↪": { math: "\\hookrightarrow" }, "↫": { math: "\\looparrowleft" }, "↬": { math: "\\looparrowright" }, "↭": { math: "\\leftrightsquigarrow" }, "↮": { math: "\\nleftrightarrow" }, "↯": { math: "\\lightning" }, "↰": { math: "\\Lsh" }, "↱": { math: "\\Rsh" }, "↲": { math: "\\dlsh" }, "↳": { text: "\\reflectbox{\\carriagereturn}", textpackages: [ "graphics", "unicode-math" ] }, "↴": { math: "\\linefeed" }, "↵": { math: "\\carriagereturn" }, "↶": { math: "\\curvearrowleft" }, "↷": { math: "\\curvearrowright" }, "↸": { math: "\\barovernorthwestarrow" }, "↹": { math: "\\barleftarrowrightarrowba" }, "↺": { math: "\\circlearrowleft" }, "↻": { math: "\\circlearrowright" }, "↼": { math: "\\leftharpoonup" }, "↽": { math: "\\leftharpoondown" }, "↾": { math: "\\upharpoonright" }, "↿": { math: "\\upharpoonleft" }, "⇀": { math: "\\rightharpoonup", mathpackages: [ "amsmath", "amssymb" ] }, "⇁": { math: "\\rightharpoondown" }, "⇂": { math: "\\downharpoonright" }, "⇃": { math: "\\downharpoonleft" }, "⇄": { math: "\\rightleftarrows" }, "⇅": { math: "\\dblarrowupdown" }, "⇆": { math: "\\leftrightarrows" }, "⇇": { math: "\\leftleftarrows" }, "⇈": { math: "\\upuparrows" }, "⇉": { math: "\\rightrightarrows" }, "⇊": { math: "\\downdownarrows" }, "⇋": { math: "\\leftrightharpoons" }, "⇌": { math: "\\rightleftharpoons" }, "⇍": { math: "\\nLeftarrow" }, "⇎": { math: "\\nLeftrightarrow" }, "⇏": { math: "\\nRightarrow" }, "⇐": { math: "\\Leftarrow" }, "⇑": { math: "\\Uparrow" }, "⇒": { math: "\\Rightarrow" }, "⇓": { math: "\\Downarrow" }, "⇔": { math: "\\Leftrightarrow" }, "⇕": { math: "\\Updownarrow" }, "⇖": { math: "\\Nwarrow" }, "⇗": { math: "\\Nearrow" }, "⇘": { math: "\\Searrow" }, "⇙": { math: "\\Swarrow" }, "⇚": { math: "\\Lleftarrow" }, "⇛": { math: "\\Rrightarrow" }, "⇜": { math: "\\leftsquigarrow" }, "⇝": { math: "\\rightsquigarrow" }, "⇞": { math: "\\nHuparrow" }, "⇟": { math: "\\nHdownarrow" }, "⇠": { math: "\\dashleftarrow" }, "⇡": { math: "\\updasharrow" }, "⇢": { math: "\\dashrightarrow" }, "⇣": { math: "\\downdasharrow" }, "⇤": { math: "\\LeftArrowBar" }, "⇥": { math: "\\RightArrowBar" }, "⇦": { math: "\\leftwhitearrow" }, "⇧": { math: "\\upwhitearrow" }, "⇨": { math: "\\rightwhitearrow" }, "⇩": { math: "\\downwhitearrow" }, "⇪": { math: "\\whitearrowupfrombar" }, "⇴": { math: "\\circleonrightarrow" }, "⇵": { math: "\\DownArrowUpArrow" }, "⇶": { math: "\\rightthreearrows" }, "⇷": { math: "\\nvleftarrow" }, "⇸": { math: "\\pfun" }, "⇹": { math: "\\nvleftrightarrow" }, "⇺": { math: "\\nVleftarrow" }, "⇻": { math: "\\ffun" }, "⇼": { math: "\\nVleftrightarrow" }, "⇽": { math: "\\leftarrowtriangle" }, "⇾": { math: "\\rightarrowtriangle" }, "⇿": { math: "\\leftrightarrowtriangle" }, "∀": { math: "\\forall" }, "∁": { math: "\\complement" }, "∂": { math: "\\partial" }, "∃": { math: "\\exists" }, "∄": { math: "\\nexists" }, "∅": { math: "\\varnothing" }, "∆": { math: "\\increment" }, "∇": { math: "\\nabla" }, "∈": { math: "\\in" }, "∉": { math: "\\not\\in" }, "∊": { math: "\\smallin" }, "∋": { math: "\\ni" }, "∌": { math: "\\not\\ni" }, "∍": { math: "\\smallni" }, "∎": { math: "\\QED" }, "∏": { math: "\\prod" }, "∐": { math: "\\coprod" }, "∑": { math: "\\sum" }, "−": { math: "-", text: "-" }, "∓": { math: "\\mp" }, "∔": { math: "\\dotplus" }, "∕": { text: "/" }, "∖": { math: "\\setminus" }, "∗": { math: "{_\\ast}" }, "∘": { math: "\\circ" }, "∙": { math: "\\bullet" }, "√": { math: "\\surd" }, "∛": { math: "\\sqrt[3]" }, "∜": { math: "\\sqrt[4]" }, "∝": { math: "\\propto" }, "∞": { math: "\\infty" }, "∟": { math: "\\rightangle" }, "∠": { math: "\\angle" }, "∡": { math: "\\measuredangle" }, "∢": { math: "\\sphericalangle" }, "∣": { math: "\\mid" }, "∤": { math: "\\nmid" }, "∥": { math: "\\parallel" }, "∦": { math: "\\nparallel" }, "∧": { math: "\\wedge" }, "∨": { math: "\\vee" }, "∩": { math: "\\cap" }, "∪": { math: "\\cup" }, "∫": { math: "\\int" }, "∬": { math: "{\\int\\!\\int}" }, "∭": { math: "{\\int\\!\\int\\!\\int}" }, "∮": { math: "\\oint" }, "∯": { math: "\\surfintegral" }, "∰": { math: "\\volintegral" }, "∱": { math: "\\clwintegral" }, "∲": { math: "\\lcirclerightint", mathpackages: [ "MnSymbol" ] }, "∳": { math: "\\rcirclerightint", mathpackages: [ "MnSymbol" ] }, "∴": { math: "\\therefore" }, "∵": { math: "\\because" }, "∶": { math: ":" }, "∷": { math: "\\Colon" }, "∸": { math: "\\dotdiv", mathpackages: [ "mathabx" ] }, "∹": { math: "\\eqcolon" }, "∺": { math: "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}" }, "∻": { math: "\\homothetic" }, "∼": { math: "\\sim" }, "∽": { math: "\\backsim" }, "∾": { math: "\\lazysinv" }, "∿": { math: "\\AC" }, "≀": { math: "\\wr" }, "≁": { math: "\\not\\sim" }, "≂": { math: "\\texteqsim", mathpackages: [ "xecjk" ] }, "≂̸": { math: "\\NotEqualTilde" }, "≃": { math: "\\simeq" }, "≄": { math: "\\not\\simeq" }, "≅": { math: "\\cong" }, "≆": { math: "\\approxnotequal" }, "≇": { math: "\\not\\cong" }, "≈": { math: "\\approx" }, "≉": { math: "\\not\\approx" }, "≊": { math: "\\approxeq" }, "≋": { math: "\\tildetrpl" }, "≋̸": { math: "\\not\\apid" }, "≌": { math: "\\allequal" }, "≍": { math: "\\asymp" }, "≎": { math: "\\Bumpeq" }, "≎̸": { math: "\\NotHumpDownHump" }, "≏": { math: "\\bumpeq" }, "≏̸": { math: "\\NotHumpEqual" }, "≐": { math: "\\doteq" }, "≐̸": { math: "\\not\\doteq" }, "≑": { math: "\\doteqdot" }, "≒": { math: "\\fallingdotseq" }, "≓": { math: "\\risingdotseq" }, "≔": { math: "\\coloneq", text: ":=" }, "≕": { math: "=:" }, "≖": { math: "\\eqcirc" }, "≗": { math: "\\circeq" }, "≘": { math: "\\arceq" }, "≙": { math: "\\estimates" }, "≛": { math: "\\starequal" }, "≜": { math: "\\triangleq" }, "≝": { math: "\\eqdef" }, "≞": { math: "\\measeq" }, "≠": { math: "\\neq" }, "≡": { math: "\\equiv" }, "≢": { math: "\\not\\equiv" }, "≣": { math: "\\Equiv" }, "≤": { math: "\\leq" }, "≥": { math: "\\geq" }, "≦": { math: "\\leqq" }, "≧": { math: "\\geqq" }, "≨": { math: "\\lneqq" }, "≨︀": { math: "\\lvertneqq" }, "≩": { math: "\\gneqq" }, "≩︀": { math: "\\gvertneqq" }, "≪": { math: "\\ll" }, "≪̸": { math: "\\NotLessLess" }, "≫": { math: "\\gg" }, "≫̸": { math: "\\NotGreaterGreater" }, "≬": { math: "\\between" }, "≭": { math: "{\\not\\kern-0.3em\\times}" }, "≮": { math: "\\not<" }, "≯": { math: "\\not>" }, "≰": { math: "\\not\\leq" }, "≱": { math: "\\not\\geq" }, "≲": { math: "\\lessequivlnt" }, "≳": { math: "\\greaterequivlnt" }, "≶": { math: "\\lessgtr" }, "≷": { math: "\\gtrless" }, "≸": { math: "\\notlessgreater" }, "≹": { math: "\\notgreaterless" }, "≺": { math: "\\prec" }, "≻": { math: "\\succ" }, "≼": { math: "\\preccurlyeq" }, "≽": { math: "\\succcurlyeq" }, "≾": { math: "\\precapprox" }, "≾̸": { math: "\\NotPrecedesTilde" }, "≿": { math: "\\succapprox" }, "≿̸": { math: "\\NotSucceedsTilde" }, "⊀": { math: "\\not\\prec" }, "⊁": { math: "\\not\\succ" }, "⊂": { math: "\\subset" }, "⊃": { math: "\\supset" }, "⊄": { math: "\\not\\subset" }, "⊅": { math: "\\not\\supset" }, "⊆": { math: "\\subseteq" }, "⊇": { math: "\\supseteq" }, "⊈": { math: "\\not\\subseteq" }, "⊉": { math: "\\not\\supseteq" }, "⊊": { math: "\\subsetneq" }, "⊊︀": { math: "\\varsubsetneqq" }, "⊋": { math: "\\supsetneq" }, "⊋︀": { math: "\\varsupsetneq" }, "⊌": { math: "\\cupleftarrow" }, "⊍": { math: "\\cupdot" }, "⊎": { math: "\\uplus" }, "⊏": { math: "\\sqsubset" }, "⊏̸": { math: "\\NotSquareSubset" }, "⊐": { math: "\\sqsupset" }, "⊐̸": { math: "\\NotSquareSuperset" }, "⊑": { math: "\\sqsubseteq" }, "⊒": { math: "\\sqsupseteq" }, "⊓": { math: "\\sqcap" }, "⊔": { math: "\\sqcup" }, "⊕": { math: "\\oplus" }, "⊖": { math: "\\ominus" }, "⊗": { math: "\\otimes" }, "⊘": { math: "\\oslash" }, "⊙": { math: "\\odot" }, "⊚": { math: "\\circledcirc" }, "⊛": { math: "\\circledast" }, "⊜": { math: "\\circledequal" }, "⊝": { math: "\\circleddash" }, "⊞": { math: "\\boxplus" }, "⊟": { math: "\\boxminus" }, "⊠": { math: "\\boxtimes" }, "⊡": { math: "\\boxdot" }, "⊢": { math: "\\vdash" }, "⊣": { math: "\\dashv" }, "⊤": { math: "\\top" }, "⊥": { math: "\\perp" }, "⊦": { math: "\\assert" }, "⊧": { math: "\\truestate" }, "⊨": { math: "\\forcesextra" }, "⊩": { math: "\\Vdash" }, "⊪": { math: "\\Vvdash" }, "⊫": { math: "\\VDash" }, "⊬": { math: "\\nvdash" }, "⊭": { math: "\\nvDash" }, "⊮": { math: "\\nVdash" }, "⊯": { math: "\\nVDash" }, "⊰": { math: "\\prurel" }, "⊱": { math: "\\scurel" }, "⊲": { math: "\\vartriangleleft" }, "⊳": { math: "\\vartriangleright" }, "⊴": { math: "\\trianglelefteq" }, "⊵": { math: "\\trianglerighteq" }, "⊶": { math: "\\original" }, "⊷": { math: "\\image" }, "⊸": { math: "\\multimap" }, "⊹": { math: "\\hermitconjmatrix" }, "⊺": { math: "\\intercal" }, "⊻": { math: "\\veebar" }, "⊼": { math: "\\barwedge" }, "⊽": { math: "\\barvee" }, "⊾": { math: "\\rightanglearc" }, "⊿": { math: "\\varlrtriangle" }, "⋂": { math: "\\bigcap" }, "⋃": { math: "\\bigcup" }, "⋄": { math: "\\diamond" }, "⋅": { math: "\\cdot" }, "⋆": { math: "\\star" }, "⋇": { math: "\\divideontimes" }, "⋈": { math: "\\bowtie" }, "⋉": { math: "\\ltimes" }, "⋊": { math: "\\rtimes" }, "⋋": { math: "\\leftthreetimes" }, "⋌": { math: "\\rightthreetimes" }, "⋍": { math: "\\backsimeq" }, "⋎": { math: "\\curlyvee" }, "⋏": { math: "\\curlywedge" }, "⋐": { math: "\\Subset" }, "⋑": { math: "\\Supset" }, "⋒": { math: "\\Cap" }, "⋓": { math: "\\Cup" }, "⋔": { math: "\\pitchfork" }, "⋕": { math: "\\hash" }, "⋖": { math: "\\lessdot" }, "⋗": { math: "\\gtrdot" }, "⋘": { math: "\\verymuchless" }, "⋙": { math: "\\verymuchgreater" }, "⋚": { math: "\\lesseqgtr" }, "⋛": { math: "\\gtreqless" }, "⋜": { math: "\\eqless" }, "⋝": { math: "\\eqgtr" }, "⋞": { math: "\\curlyeqprec" }, "⋟": { math: "\\curlyeqsucc" }, "⋠": { math: "\\npreceq" }, "⋡": { math: "\\nsucceq" }, "⋢": { math: "\\not\\sqsubseteq" }, "⋣": { math: "\\not\\sqsupseteq" }, "⋤": { math: "\\sqsubsetneq" }, "⋥": { math: "\\Elzsqspne" }, "⋦": { math: "\\lnsim" }, "⋧": { math: "\\gnsim" }, "⋨": { math: "\\precedesnotsimilar" }, "⋩": { math: "\\succnsim" }, "⋪": { math: "\\ntriangleleft" }, "⋫": { math: "\\ntriangleright" }, "⋬": { math: "\\ntrianglelefteq" }, "⋭": { math: "\\ntrianglerighteq" }, "⋮": { math: "\\vdots" }, "⋯": { math: "\\cdots" }, "⋰": { math: "\\upslopeellipsis" }, "⋱": { math: "\\downslopeellipsis" }, "⋲": { math: "\\disin" }, "⋳": { math: "\\varisins" }, "⋴": { math: "\\isins" }, "⋵": { math: "\\isindot" }, "⋶": { math: "\\barin" }, "⋷": { math: "\\isinobar" }, "⋸": { math: "\\isinvb" }, "⋹": { math: "\\isinE" }, "⋺": { math: "\\nisd" }, "⋻": { math: "\\varnis" }, "⋼": { math: "\\nis" }, "⋽": { math: "\\varniobar" }, "⋾": { math: "\\niobar" }, "⋿": { math: "\\bagmember" }, "⌀": { math: "\\diameter" }, "⌂": { math: "\\house" }, "⌅": { math: "\\varbarwedge", text: "\\barwedge", commandspacer: true }, "⌆": { math: "\\perspcorrespond" }, "⌈": { math: "\\lceil" }, "⌉": { math: "\\rceil" }, "⌊": { math: "\\lfloor" }, "⌋": { math: "\\rfloor" }, "⌐": { math: "\\invneg" }, "⌑": { math: "\\wasylozenge" }, "⌒": { math: "\\profline" }, "⌓": { math: "\\profsurf" }, "⌕": { math: "\\recorder" }, "⌖": { math: "{\\mathchar\"2208}" }, "⌗": { math: "\\viewdata" }, "⌙": { math: "\\turnednot" }, "⌜": { math: "\\ulcorner" }, "⌝": { math: "\\urcorner" }, "⌞": { math: "\\llcorner" }, "⌟": { math: "\\lrcorner" }, "⌠": { math: "\\inttop" }, "⌡": { math: "\\intbottom" }, "⌢": { math: "\\frown" }, "⌣": { math: "\\smile" }, "〈": { math: "\\langle" }, "〉": { math: "\\rangle" }, "⌬": { math: "\\varhexagonlrbonds" }, "⌲": { math: "\\conictaper" }, "⌶": { math: "\\topbot" }, "⌹": { math: "\\APLinv" }, "⌿": { math: "\\notslash" }, "⍀": { math: "\\notbackslash" }, "⍇": { math: "\\APLleftarrowbox" }, "⍈": { math: "\\APLrightarrowbox" }, "⍉": { math: "\\invdiameter" }, "⍐": { math: "\\APLuparrowbox" }, "⍓": { math: "\\APLboxupcaret" }, "⍗": { math: "\\APLdownarrowbox" }, "⍝": { math: "\\APLcomment" }, "⍞": { math: "\\APLinput" }, "⍟": { math: "\\APLlog" }, "⍰": { math: "\\APLboxquestion" }, "⍼": { math: "\\rangledownzigzagarrow" }, "⎔": { math: "\\hexagon" }, "⎛": { math: "\\lparenuend" }, "⎜": { math: "\\lparenextender" }, "⎝": { math: "\\lparenlend" }, "⎞": { math: "\\rparenuend" }, "⎟": { math: "\\rparenextender" }, "⎠": { math: "\\rparenlend" }, "⎡": { math: "\\lbrackuend" }, "⎢": { math: "\\lbrackextender" }, "⎣": { math: "\\Elzdlcorn" }, "⎤": { math: "\\rbrackuend" }, "⎥": { math: "\\rbrackextender" }, "⎦": { math: "\\rbracklend" }, "⎧": { math: "\\lbraceuend" }, "⎨": { math: "\\lbracemid" }, "⎩": { math: "\\lbracelend" }, "⎪": { math: "\\vbraceextender" }, "⎫": { math: "\\rbraceuend" }, "⎬": { math: "\\rbracemid" }, "⎭": { math: "\\rbracelend" }, "⎮": { math: "\\intextender" }, "⎯": { math: "\\harrowextender" }, "⎰": { math: "\\lmoustache" }, "⎱": { math: "\\rmoustache" }, "⎲": { math: "\\sumtop" }, "⎳": { math: "\\sumbottom" }, "⎴": { math: "\\overbracket" }, "⎵": { math: "\\underbracket" }, "⎶": { math: "\\bbrktbrk" }, "⎷": { math: "\\sqrtbottom" }, "⎸": { math: "\\lvboxline" }, "⎹": { math: "\\rvboxline" }, "⏎": { math: "\\varcarriagereturn" }, "⏜": { math: "\\overparen" }, "⏝": { math: "\\underparen" }, "⏞": { math: "\\overbrace" }, "⏟": { math: "\\underbrace" }, "⏠": { math: "\\obrbrak" }, "⏡": { math: "\\ubrbrak" }, "⏢": { math: "\\trapezium" }, "⏣": { math: "\\benzenr" }, "⏤": { math: "\\strns" }, "⏥": { math: "\\fltns" }, "⏦": { math: "\\accurrent" }, "⏧": { math: "\\elinters" }, "␀": { text: "NUL" }, "␁": { text: "SOH" }, "␂": { text: "STX" }, "␃": { text: "ETX" }, "␄": { text: "EOT" }, "␅": { text: "ENQ" }, "␆": { text: "ACK" }, "␇": { text: "BEL" }, "␈": { text: "BS" }, "␉": { text: "HT" }, "␊": { text: "LF" }, "␋": { text: "VT" }, "␌": { text: "FF" }, "␍": { text: "CR" }, "␎": { text: "SO" }, "␏": { text: "SI" }, "␐": { text: "DLE" }, "␑": { text: "DC1" }, "␒": { text: "DC2" }, "␓": { text: "DC3" }, "␔": { text: "DC4" }, "␕": { text: "NAK" }, "␖": { text: "SYN" }, "␗": { text: "ETB" }, "␘": { text: "CAN" }, "␙": { text: "EM" }, "␚": { text: "SUB" }, "␛": { text: "ESC" }, "␜": { text: "FS" }, "␝": { text: "GS" }, "␞": { text: "RS" }, "␟": { text: "US" }, "␠": { text: "SP" }, "␡": { text: "DEL" }, "␣": { text: "\\textvisiblespace", commandspacer: true }, "␤": { text: "NL" }, "␥": { text: "///" }, "␦": { text: "?" }, "①": { text: "\\ding{172}" }, "②": { text: "\\ding{173}" }, "③": { text: "\\ding{174}" }, "④": { text: "\\ding{175}" }, "⑤": { text: "\\ding{176}" }, "⑥": { text: "\\ding{177}" }, "⑦": { text: "\\ding{178}" }, "⑧": { text: "\\ding{179}" }, "⑨": { text: "\\ding{180}" }, "⑩": { text: "\\ding{181}" }, "⑪": { text: "(11)" }, "⑫": { text: "(12)" }, "⑬": { text: "(13)" }, "⑭": { text: "(14)" }, "⑮": { text: "(15)" }, "⑯": { text: "(16)" }, "⑰": { text: "(17)" }, "⑱": { text: "(18)" }, "⑲": { text: "(19)" }, "⑳": { text: "(20)" }, "⑴": { text: "(1)" }, "⑵": { text: "(2)" }, "⑶": { text: "(3)" }, "⑷": { text: "(4)" }, "⑸": { text: "(5)" }, "⑹": { text: "(6)" }, "⑺": { text: "(7)" }, "⑻": { text: "(8)" }, "⑼": { text: "(9)" }, "⑽": { text: "(10)" }, "⑾": { text: "(11)" }, "⑿": { text: "(12)" }, "⒀": { text: "(13)" }, "⒁": { text: "(14)" }, "⒂": { text: "(15)" }, "⒃": { text: "(16)" }, "⒄": { text: "(17)" }, "⒅": { text: "(18)" }, "⒆": { text: "(19)" }, "⒇": { text: "(20)" }, "⒈": { text: "1." }, "⒉": { text: "2." }, "⒊": { text: "3." }, "⒋": { text: "4." }, "⒌": { text: "5." }, "⒍": { text: "6." }, "⒎": { text: "7." }, "⒏": { text: "8." }, "⒐": { text: "9." }, "⒑": { text: "10." }, "⒒": { text: "11." }, "⒓": { text: "12." }, "⒔": { text: "13." }, "⒕": { text: "14." }, "⒖": { text: "15." }, "⒗": { text: "16." }, "⒘": { text: "17." }, "⒙": { text: "18." }, "⒚": { text: "19." }, "⒛": { text: "20." }, "⒜": { text: "(a)" }, "⒝": { text: "(b)" }, "⒞": { text: "(c)" }, "⒟": { text: "(d)" }, "⒠": { text: "(e)" }, "⒡": { text: "(f)" }, "⒢": { text: "(g)" }, "⒣": { text: "(h)" }, "⒤": { text: "(i)" }, "⒥": { text: "(j)" }, "⒦": { text: "(k)" }, "⒧": { text: "(l)" }, "⒨": { text: "(m)" }, "⒩": { text: "(n)" }, "⒪": { text: "(o)" }, "⒫": { text: "(p)" }, "⒬": { text: "(q)" }, "⒭": { text: "(r)" }, "⒮": { text: "(s)" }, "⒯": { text: "(t)" }, "⒰": { text: "(u)" }, "⒱": { text: "(v)" }, "⒲": { text: "(w)" }, "⒳": { text: "(x)" }, "⒴": { text: "(y)" }, "⒵": { text: "(z)" }, "Ⓐ": { text: "(A)" }, "Ⓑ": { text: "(B)" }, "Ⓒ": { text: "(C)" }, "Ⓓ": { text: "(D)" }, "Ⓔ": { text: "(E)" }, "Ⓕ": { text: "(F)" }, "Ⓖ": { text: "(G)" }, "Ⓗ": { text: "(H)" }, "Ⓘ": { text: "(I)" }, "Ⓙ": { text: "(J)" }, "Ⓚ": { text: "(K)" }, "Ⓛ": { text: "(L)" }, "Ⓜ": { text: "(M)" }, "Ⓝ": { text: "(N)" }, "Ⓞ": { text: "(O)" }, "Ⓟ": { text: "(P)" }, "Ⓠ": { text: "(Q)" }, "Ⓡ": { text: "(R)" }, "Ⓢ": { math: "\\circledS" }, "Ⓣ": { text: "(T)" }, "Ⓤ": { text: "(U)" }, "Ⓥ": { text: "(V)" }, "Ⓦ": { text: "(W)" }, "Ⓧ": { text: "(X)" }, "Ⓨ": { text: "(Y)" }, "Ⓩ": { text: "(Z)" }, "ⓐ": { text: "(a)" }, "ⓑ": { text: "(b)" }, "ⓒ": { text: "(c)" }, "ⓓ": { text: "(d)" }, "ⓔ": { text: "(e)" }, "ⓕ": { text: "(f)" }, "ⓖ": { text: "(g)" }, "ⓗ": { text: "(h)" }, "ⓘ": { text: "(i)" }, "ⓙ": { text: "(j)" }, "ⓚ": { text: "(k)" }, "ⓛ": { text: "(l)" }, "ⓜ": { text: "(m)" }, "ⓝ": { text: "(n)" }, "ⓞ": { text: "(o)" }, "ⓟ": { text: "(p)" }, "ⓠ": { text: "(q)" }, "ⓡ": { text: "(r)" }, "ⓢ": { text: "(s)" }, "ⓣ": { text: "(t)" }, "ⓤ": { text: "(u)" }, "ⓥ": { text: "(v)" }, "ⓦ": { text: "(w)" }, "ⓧ": { text: "(x)" }, "ⓨ": { text: "(y)" }, "ⓩ": { text: "(z)" }, "⓪": { text: "(0)" }, "─": { text: "-" }, "━": { text: "=" }, "│": { text: "|" }, "┃": { text: "|" }, "┄": { text: "-" }, "┅": { text: "=" }, "┆": { math: "\\Elzdshfnc" }, "┇": { text: "|" }, "┈": { text: "-" }, "┉": { text: "=" }, "┊": { text: "|" }, "┋": { text: "|" }, "┌": { text: "+" }, "┍": { text: "+" }, "┎": { text: "+" }, "┏": { text: "+" }, "┐": { text: "+" }, "┑": { text: "+" }, "┒": { text: "+" }, "┓": { text: "+" }, "└": { text: "+" }, "┕": { text: "+" }, "┖": { text: "+" }, "┗": { text: "+" }, "┘": { text: "+" }, "┙": { math: "\\Elzsqfnw" }, "┚": { text: "+" }, "┛": { text: "+" }, "├": { text: "+" }, "┝": { text: "+" }, "┞": { text: "+" }, "┟": { text: "+" }, "┠": { text: "+" }, "┡": { text: "+" }, "┢": { text: "+" }, "┣": { text: "+" }, "┤": { text: "+" }, "┥": { text: "+" }, "┦": { text: "+" }, "┧": { text: "+" }, "┨": { text: "+" }, "┩": { text: "+" }, "┪": { text: "+" }, "┫": { text: "+" }, "┬": { text: "+" }, "┭": { text: "+" }, "┮": { text: "+" }, "┯": { text: "+" }, "┰": { text: "+" }, "┱": { text: "+" }, "┲": { text: "+" }, "┳": { text: "+" }, "┴": { text: "+" }, "┵": { text: "+" }, "┶": { text: "+" }, "┷": { text: "+" }, "┸": { text: "+" }, "┹": { text: "+" }, "┺": { text: "+" }, "┻": { text: "+" }, "┼": { text: "+" }, "┽": { text: "+" }, "┾": { text: "+" }, "┿": { text: "+" }, "╀": { text: "+" }, "╁": { text: "+" }, "╂": { text: "+" }, "╃": { text: "+" }, "╄": { text: "+" }, "╅": { text: "+" }, "╆": { text: "+" }, "╇": { text: "+" }, "╈": { text: "+" }, "╉": { text: "+" }, "╊": { text: "+" }, "╋": { text: "+" }, "╌": { text: "-" }, "╍": { text: "=" }, "╎": { text: "|" }, "╏": { text: "|" }, "═": { text: "=" }, "║": { text: "|" }, "╒": { text: "+" }, "╓": { text: "+" }, "╔": { text: "+" }, "╕": { text: "+" }, "╖": { text: "+" }, "╗": { text: "+" }, "╘": { text: "+" }, "╙": { text: "+" }, "╚": { text: "+" }, "╛": { text: "+" }, "╜": { text: "+" }, "╝": { text: "+" }, "╞": { text: "+" }, "╟": { text: "+" }, "╠": { text: "+" }, "╡": { text: "+" }, "╢": { text: "+" }, "╣": { text: "+" }, "╤": { text: "+" }, "╥": { text: "+" }, "╦": { text: "+" }, "╧": { text: "+" }, "╨": { text: "+" }, "╩": { text: "+" }, "╪": { text: "+" }, "╫": { text: "+" }, "╬": { text: "+" }, "╭": { text: "+" }, "╮": { text: "+" }, "╯": { text: "+" }, "╰": { text: "+" }, "╱": { math: "\\diagup" }, "╲": { text: "\\" }, "╳": { text: "X" }, "╼": { text: "-" }, "╽": { text: "|" }, "╾": { text: "-" }, "╿": { text: "|" }, "▀": { math: "\\blockuphalf" }, "▄": { math: "\\blocklowhalf" }, "█": { math: "\\blockfull" }, "▌": { math: "\\blocklefthalf" }, "▐": { math: "\\blockrighthalf" }, "░": { math: "\\blockqtrshaded" }, "▒": { math: "\\blockhalfshaded" }, "▓": { math: "\\blockthreeqtrshaded" }, "■": { math: "\\mdlgblksquare", text: "\\ding{110}" }, "□": { math: "\\square" }, "▢": { math: "\\squoval" }, "▣": { math: "\\blackinwhitesquare" }, "▤": { math: "\\squarehfill" }, "▥": { math: "\\squarevfill" }, "▦": { math: "\\squarehvfill" }, "▧": { math: "\\squarenwsefill" }, "▨": { math: "\\squareneswfill" }, "▩": { math: "\\squarecrossfill" }, "▪": { math: "\\blacksquare" }, "▫": { math: "\\smwhtsquare" }, "▬": { math: "\\hrectangleblack" }, "▭": { math: "\\fbox{~~}" }, "▮": { math: "\\vrectangleblack" }, "▯": { math: "\\Elzvrecto" }, "▰": { math: "\\parallelogramblack" }, "▲": { math: "\\bigblacktriangleup", text: "\\ding{115}" }, "△": { math: "\\bigtriangleup" }, "▴": { math: "\\blacktriangle" }, "▵": { math: "\\vartriangle" }, "▶": { math: "\\RHD" }, "▷": { math: "\\rhd" }, "▸": { math: "\\blacktriangleright" }, "▹": { math: "\\triangleright" }, "►": { math: "\\blackpointerright" }, "▻": { math: "\\whitepointerright" }, "▼": { math: "\\bigblacktriangledown", text: "\\ding{116}" }, "▽": { math: "\\bigtriangledown" }, "▾": { math: "\\blacktriangledown" }, "▿": { math: "\\triangledown" }, "◀": { math: "\\LHD" }, "◁": { math: "\\lhd" }, "◂": { math: "\\blacktriangleleft" }, "◃": { math: "\\triangleleft" }, "◄": { math: "\\blackpointerleft" }, "◅": { math: "\\whitepointerleft" }, "◆": { math: "\\Diamondblack", text: "\\ding{117}" }, "◇": { math: "\\Diamond" }, "◈": { math: "\\blackinwhitediamond" }, "◉": { math: "\\fisheye" }, "◊": { math: "\\lozenge" }, "○": { math: "\\bigcirc" }, "◌": { math: "\\dottedcircle" }, "◍": { math: "\\circlevertfill" }, "◎": { math: "\\bullseye" }, "●": { math: "\\CIRCLE", text: "\\ding{108}" }, "◐": { math: "\\Elzcirfl" }, "◑": { math: "\\Elzcirfr" }, "◒": { math: "\\Elzcirfb" }, "◓": { math: "\\circletophalfblack" }, "◔": { math: "\\circleurquadblack" }, "◕": { math: "\\blackcircleulquadwhite" }, "◖": { math: "\\LEFTCIRCLE" }, "◗": { math: "\\RIGHTCIRCLE", text: "\\ding{119}" }, "◘": { math: "\\Elzrvbull" }, "◙": { math: "\\inversewhitecircle" }, "◚": { math: "\\invwhiteupperhalfcircle" }, "◛": { math: "\\invwhitelowerhalfcircle" }, "◜": { math: "\\ularc" }, "◝": { math: "\\urarc" }, "◞": { math: "\\lrarc" }, "◟": { math: "\\llarc" }, "◠": { math: "\\topsemicircle" }, "◡": { math: "\\botsemicircle" }, "◢": { math: "\\lrblacktriangle" }, "◣": { math: "\\llblacktriangle" }, "◤": { math: "\\ulblacktriangle" }, "◥": { math: "\\urblacktriangle" }, "◦": { math: "\\smwhtcircle" }, "◧": { math: "\\Elzsqfl" }, "◨": { math: "\\Elzsqfr" }, "◩": { math: "\\squareulblack" }, "◪": { math: "\\Elzsqfse" }, "◫": { math: "\\boxbar" }, "◬": { math: "\\trianglecdot" }, "◭": { math: "\\triangleleftblack" }, "◮": { math: "\\trianglerightblack" }, "◯": { math: "\\bigcirc" }, "◰": { math: "\\squareulquad" }, "◱": { math: "\\squarellquad" }, "◲": { math: "\\squarelrquad" }, "◳": { math: "\\squareurquad" }, "◴": { math: "\\circleulquad" }, "◵": { math: "\\circlellquad" }, "◶": { math: "\\circlelrquad" }, "◷": { math: "\\circleurquad" }, "◸": { math: "\\ultriangle" }, "◹": { math: "\\urtriangle" }, "◺": { math: "\\lltriangle" }, "◻": { math: "\\square" }, "◼": { math: "\\blacksquare" }, "◽": { math: "\\mdsmwhtsquare" }, "◾": { math: "\\mdsmblksquare" }, "◿": { math: "\\lrtriangle" }, "★": { math: "\\bigstar", text: "\\ding{72}" }, "☆": { math: "\\bigwhitestar", text: "\\ding{73}" }, "☉": { math: "\\Sun" }, "☎": { text: "\\ding{37}" }, "☐": { math: "\\Square" }, "☑": { math: "\\CheckedBox" }, "☒": { math: "\\XBox" }, "☓": { text: "X" }, "☕": { math: "\\steaming" }, "☛": { text: "\\ding{42}" }, "☞": { math: "\\pointright", text: "\\ding{43}" }, "☠": { math: "\\skull" }, "☡": { math: "\\danger" }, "☢": { math: "\\radiation" }, "☣": { math: "\\biohazard" }, "☯": { math: "\\yinyang" }, "☹": { math: "\\frownie" }, "☺": { math: "\\smiley" }, "☻": { math: "\\blacksmiley" }, "☼": { math: "\\sun" }, "☽": { text: "\\rightmoon", commandspacer: true, textpackages: [ "wasysym" ] }, "☾": { text: "\\leftmoon", commandspacer: true, textpackages: [ "wasysym" ] }, "☿": { math: "\\mercury", text: "\\mercury", commandspacer: true }, "♀": { math: "\\female", text: "\\venus", commandspacer: true }, "♁": { math: "\\earth" }, "♂": { math: "\\male", text: "\\male", commandspacer: true }, "♃": { math: "\\jupiter", text: "\\jupiter", commandspacer: true }, "♄": { math: "\\saturn", text: "\\saturn", commandspacer: true }, "♅": { math: "\\uranus", text: "\\uranus", commandspacer: true }, "♆": { math: "\\neptune", text: "\\neptune", commandspacer: true }, "♇": { math: "\\pluto", text: "\\pluto", commandspacer: true }, "♈": { math: "\\aries", text: "\\aries", commandspacer: true }, "♉": { math: "\\taurus", text: "\\taurus", commandspacer: true }, "♊": { math: "\\gemini", text: "\\gemini", commandspacer: true }, "♋": { math: "\\cancer", text: "\\cancer", commandspacer: true }, "♌": { math: "\\leo", text: "\\leo", commandspacer: true }, "♍": { math: "\\virgo", text: "\\virgo", commandspacer: true }, "♎": { math: "\\libra", text: "\\libra", commandspacer: true }, "♏": { math: "\\scorpio", text: "\\scorpio", commandspacer: true }, "♐": { math: "\\sagittarius", text: "\\sagittarius", commandspacer: true }, "♑": { math: "\\capricornus", text: "\\capricornus", commandspacer: true }, "♒": { math: "\\aquarius", text: "\\aquarius", commandspacer: true }, "♓": { math: "\\pisces", text: "\\pisces", commandspacer: true }, "♠": { math: "\\spadesuit", text: "\\ding{171}" }, "♡": { math: "\\heartsuit" }, "♢": { math: "\\diamond" }, "♣": { math: "\\clubsuit", text: "\\ding{168}" }, "♤": { math: "\\varspadesuit" }, "♥": { math: "\\varheartsuit", text: "\\ding{170}" }, "♦": { math: "\\vardiamondsuit", text: "\\ding{169}" }, "♧": { math: "\\varclubsuit" }, "♩": { math: "\\quarternote", text: "\\quarternote", commandspacer: true }, "♪": { math: "\\eighthnote", text: "\\eighthnote", commandspacer: true }, "♫": { math: "\\twonotes" }, "♬": { math: "\\sixteenthnote" }, "♭": { math: "\\flat" }, "♮": { math: "\\natural" }, "♯": { math: "\\sharp" }, "♻": { math: "\\recycle" }, "♾": { math: "\\acidfree" }, "⚀": { math: "\\dicei" }, "⚁": { math: "\\diceii" }, "⚂": { math: "\\diceiii" }, "⚃": { math: "\\diceiv" }, "⚄": { math: "\\dicev" }, "⚅": { math: "\\dicevi" }, "⚆": { math: "\\circledrightdot" }, "⚇": { math: "\\circledtwodots" }, "⚈": { math: "\\blackcircledrightdot" }, "⚉": { math: "\\blackcircledtwodots" }, "⚓": { math: "\\anchor" }, "⚔": { math: "\\swords" }, "⚠": { math: "\\warning" }, "⚥": { math: "\\Hermaphrodite" }, "⚪": { math: "\\medcirc" }, "⚫": { math: "\\medbullet" }, "⚬": { math: "\\mdsmwhtcircle" }, "⚲": { math: "\\neuter" }, "✁": { text: "\\ding{33}" }, "✂": { text: "\\ding{34}" }, "✃": { text: "\\ding{35}" }, "✄": { text: "\\ding{36}" }, "✆": { text: "\\ding{38}" }, "✇": { text: "\\ding{39}" }, "✈": { text: "\\ding{40}" }, "✉": { text: "\\ding{41}" }, "✌": { text: "\\ding{44}" }, "✍": { text: "\\ding{45}" }, "✎": { math: "\\pencil", text: "\\ding{46}" }, "✏": { text: "\\ding{47}" }, "✐": { text: "\\ding{48}" }, "✑": { text: "\\ding{49}" }, "✒": { text: "\\ding{50}" }, "✓": { math: "\\checkmark", text: "\\ding{51}" }, "✔": { text: "\\ding{52}" }, "✕": { text: "\\ding{53}" }, "✖": { text: "\\ding{54}" }, "✗": { math: "\\ballotx", text: "\\ding{55}" }, "✘": { text: "\\ding{56}" }, "✙": { text: "\\ding{57}" }, "✚": { text: "\\ding{58}" }, "✛": { text: "\\ding{59}" }, "✜": { text: "\\ding{60}" }, "✝": { text: "\\ding{61}" }, "✞": { text: "\\ding{62}" }, "✟": { text: "\\ding{63}" }, "✠": { math: "\\maltese", text: "\\ding{64}" }, "✡": { text: "\\ding{65}" }, "✢": { text: "\\ding{66}" }, "✣": { text: "\\ding{67}" }, "✤": { text: "\\ding{68}" }, "✥": { text: "\\ding{69}" }, "✦": { text: "\\ding{70}" }, "✧": { text: "\\ding{71}" }, "✩": { text: "\\ding{73}" }, "✪": { math: "\\circledstar", text: "\\ding{74}" }, "✫": { text: "\\ding{75}" }, "✬": { text: "\\ding{76}" }, "✭": { text: "\\ding{77}" }, "✮": { text: "\\ding{78}" }, "✯": { text: "\\ding{79}" }, "✰": { text: "\\ding{80}" }, "✱": { text: "\\ding{81}" }, "✲": { text: "\\ding{82}" }, "✳": { text: "\\ding{83}" }, "✴": { text: "\\ding{84}" }, "✵": { text: "\\ding{85}" }, "✶": { math: "\\varstar", text: "\\ding{86}" }, "✷": { text: "\\ding{87}" }, "✸": { text: "\\ding{88}" }, "✹": { text: "\\ding{89}" }, "✺": { text: "\\ding{90}" }, "✻": { text: "\\ding{91}" }, "✼": { text: "\\ding{92}" }, "✽": { math: "\\dingasterisk", text: "\\ding{93}" }, "✾": { text: "\\ding{94}" }, "✿": { text: "\\ding{95}" }, "❀": { text: "\\ding{96}" }, "❁": { text: "\\ding{97}" }, "❂": { text: "\\ding{98}" }, "❃": { text: "\\ding{99}" }, "❄": { text: "\\ding{100}" }, "❅": { text: "\\ding{101}" }, "❆": { text: "\\ding{102}" }, "❇": { text: "\\ding{103}" }, "❈": { text: "\\ding{104}" }, "❉": { text: "\\ding{105}" }, "❊": { text: "\\ding{106}" }, "❋": { text: "\\ding{107}" }, "❍": { text: "\\ding{109}" }, "❏": { text: "\\ding{111}" }, "❐": { text: "\\ding{112}" }, "❑": { text: "\\ding{113}" }, "❒": { text: "\\ding{114}" }, "❖": { text: "\\ding{118}" }, "❘": { text: "\\ding{120}" }, "❙": { text: "\\ding{121}" }, "❚": { text: "\\ding{122}" }, "❛": { text: "\\ding{123}" }, "❜": { text: "\\ding{124}" }, "❝": { text: "\\ding{125}" }, "❞": { text: "\\ding{126}" }, "❡": { text: "\\ding{161}" }, "❢": { text: "\\ding{162}" }, "❣": { text: "\\ding{163}" }, "❤": { text: "\\ding{164}" }, "❥": { text: "\\ding{165}" }, "❦": { text: "\\ding{166}" }, "❧": { text: "\\ding{167}" }, "❲": { math: "\\lbrbrak" }, "❳": { math: "\\rbrbrak" }, "❶": { text: "\\ding{182}" }, "❷": { text: "\\ding{183}" }, "❸": { text: "\\ding{184}" }, "❹": { text: "\\ding{185}" }, "❺": { text: "\\ding{186}" }, "❻": { text: "\\ding{187}" }, "❼": { text: "\\ding{188}" }, "❽": { text: "\\ding{189}" }, "❾": { text: "\\ding{190}" }, "❿": { text: "\\ding{191}" }, "➀": { text: "\\ding{192}" }, "➁": { text: "\\ding{193}" }, "➂": { text: "\\ding{194}" }, "➃": { text: "\\ding{195}" }, "➄": { text: "\\ding{196}" }, "➅": { text: "\\ding{197}" }, "➆": { text: "\\ding{198}" }, "➇": { text: "\\ding{199}" }, "➈": { text: "\\ding{200}" }, "➉": { text: "\\ding{201}" }, "➊": { text: "\\ding{202}" }, "➋": { text: "\\ding{203}" }, "➌": { text: "\\ding{204}" }, "➍": { text: "\\ding{205}" }, "➎": { text: "\\ding{206}" }, "➏": { text: "\\ding{207}" }, "➐": { text: "\\ding{208}" }, "➑": { text: "\\ding{209}" }, "➒": { text: "\\ding{210}" }, "➓": { text: "\\ding{211}" }, "➔": { text: "\\ding{212}" }, "➘": { text: "\\ding{216}" }, "➙": { text: "\\ding{217}" }, "➚": { text: "\\ding{218}" }, "➛": { math: "\\draftingarrow", text: "\\ding{219}" }, "➜": { text: "\\ding{220}" }, "➝": { text: "\\ding{221}" }, "➞": { text: "\\ding{222}" }, "➟": { text: "\\ding{223}" }, "➠": { text: "\\ding{224}" }, "➡": { text: "\\ding{225}" }, "➢": { math: "\\arrowbullet", text: "\\ding{226}" }, "➣": { text: "\\ding{227}" }, "➤": { text: "\\ding{228}" }, "➥": { text: "\\ding{229}" }, "➦": { text: "\\ding{230}" }, "➧": { text: "\\ding{231}" }, "➨": { text: "\\ding{232}" }, "➩": { text: "\\ding{233}" }, "➪": { text: "\\ding{234}" }, "➫": { text: "\\ding{235}" }, "➬": { text: "\\ding{236}" }, "➭": { text: "\\ding{237}" }, "➮": { text: "\\ding{238}" }, "➯": { text: "\\ding{239}" }, "➱": { text: "\\ding{241}" }, "➲": { text: "\\ding{242}" }, "➳": { text: "\\ding{243}" }, "➴": { text: "\\ding{244}" }, "➵": { text: "\\ding{245}" }, "➶": { text: "\\ding{246}" }, "➷": { text: "\\ding{247}" }, "➸": { text: "\\ding{248}" }, "➹": { text: "\\ding{249}" }, "➺": { text: "\\ding{250}" }, "➻": { text: "\\ding{251}" }, "➼": { text: "\\ding{252}" }, "➽": { text: "\\ding{253}" }, "➾": { text: "\\ding{254}" }, "⟀": { math: "\\threedangle" }, "⟁": { math: "\\whiteinwhitetriangle" }, "⟂": { math: "\\perp" }, "⟃": { math: "\\subsetcirc" }, "⟄": { math: "\\supsetcirc" }, "⟅": { math: "\\Lbag" }, "⟆": { math: "\\Rbag" }, "⟇": { math: "\\veedot" }, "⟈": { math: "\\bsolhsub" }, "⟉": { math: "\\suphsol" }, "⟌": { math: "\\longdivision" }, "⟐": { math: "\\Diamonddot" }, "⟑": { math: "\\wedgedot" }, "⟒": { math: "\\upin" }, "⟓": { math: "\\pullback" }, "⟔": { math: "\\pushout" }, "⟕": { math: "\\leftouterjoin" }, "⟖": { math: "\\rightouterjoin" }, "⟗": { math: "\\fullouterjoin" }, "⟘": { math: "\\bigbot" }, "⟙": { math: "\\bigtop" }, "⟚": { math: "\\DashVDash" }, "⟛": { math: "\\dashVdash" }, "⟜": { math: "\\multimapinv" }, "⟝": { math: "\\vlongdash" }, "⟞": { math: "\\longdashv" }, "⟟": { math: "\\cirbot" }, "⟠": { math: "\\lozengeminus" }, "⟡": { math: "\\concavediamond" }, "⟢": { math: "\\concavediamondtickleft" }, "⟣": { math: "\\concavediamondtickright" }, "⟤": { math: "\\whitesquaretickleft" }, "⟥": { math: "\\whitesquaretickright" }, "⟦": { math: "\\llbracket" }, "⟧": { math: "\\rrbracket" }, "⟨": { math: "\\langle" }, "⟩": { math: "\\rangle" }, "⟪": { math: "\\lang" }, "⟫": { math: "\\rang" }, "⟬": { math: "\\Lbrbrak" }, "⟭": { math: "\\Rbrbrak" }, "⟮": { math: "\\lgroup" }, "⟯": { math: "\\rgroup" }, "⟰": { math: "\\UUparrow" }, "⟱": { math: "\\DDownarrow" }, "⟲": { math: "\\acwgapcirclearrow" }, "⟳": { math: "\\cwgapcirclearrow" }, "⟴": { math: "\\rightarrowonoplus" }, "⟵": { math: "\\longleftarrow" }, "⟶": { math: "\\longrightarrow" }, "⟷": { math: "\\longleftrightarrow" }, "⟸": { math: "\\Longleftarrow" }, "⟹": { math: "\\Longrightarrow" }, "⟺": { math: "\\Longleftrightarrow" }, "⟻": { math: "\\longmapsfrom" }, "⟼": { math: "\\longmapsto" }, "⟽": { math: "\\Longmapsfrom" }, "⟾": { math: "\\Longmapsto" }, "⟿": { math: "\\sim\\joinrel\\leadsto" }, "⤀": { math: "\\psur" }, "⤁": { math: "\\nVtwoheadrightarrow" }, "⤂": { math: "\\nvLeftarrow" }, "⤃": { math: "\\nvRightarrow" }, "⤄": { math: "\\nvLeftrightarrow" }, "⤆": { math: "\\Mapsfrom" }, "⤇": { math: "\\Mapsto" }, "⤈": { math: "\\downarrowbarred" }, "⤉": { math: "\\uparrowbarred" }, "⤊": { math: "\\Uuparrow" }, "⤋": { math: "\\Ddownarrow" }, "⤌": { math: "\\leftbkarrow" }, "⤍": { math: "\\rightbkarrow" }, "⤎": { math: "\\leftdbkarrow" }, "⤏": { math: "\\dbkarow" }, "⤐": { math: "\\drbkarow" }, "⤑": { math: "\\rightdotarrow" }, "⤒": { math: "\\UpArrowBar" }, "⤓": { math: "\\DownArrowBar" }, "⤔": { math: "\\pinj" }, "⤕": { math: "\\finj" }, "⤖": { math: "\\bij" }, "⤗": { math: "\\nvtwoheadrightarrowtail" }, "⤘": { math: "\\nVtwoheadrightarrowtail" }, "⤙": { math: "\\lefttail" }, "⤚": { math: "\\righttail" }, "⤛": { math: "\\leftdbltail" }, "⤜": { math: "\\rightdbltail" }, "⤝": { math: "\\diamondleftarrow" }, "⤞": { math: "\\rightarrowdiamond" }, "⤟": { math: "\\diamondleftarrowbar" }, "⤠": { math: "\\barrightarrowdiamond" }, "⤡": { math: "\\nwsearrow" }, "⤢": { math: "\\neswarrow" }, "⤫": { math: "\\rdiagovfdiag" }, "⤬": { math: "\\fdiagovrdiag" }, "⤭": { math: "\\seovnearrow" }, "⤮": { math: "\\neovsearrow" }, "⤯": { math: "\\fdiagovnearrow" }, "⤰": { math: "\\rdiagovsearrow" }, "⤱": { math: "\\neovnwarrow" }, "⤲": { math: "\\nwovnearrow" }, "⤴": { math: "\\uprightcurvearrow" }, "⤵": { math: "\\downrightcurvedarrow" }, "⤸": { math: "\\cwrightarcarrow" }, "⤹": { math: "\\acwleftarcarrow" }, "⤺": { math: "\\acwoverarcarrow" }, "⤻": { math: "\\acwunderarcarrow" }, "⤼": { math: "\\curvearrowrightminus" }, "⤽": { math: "\\curvearrowleftplus" }, "⤾": { math: "\\cwundercurvearrow" }, "⤿": { math: "\\ccwundercurvearrow" }, "⥀": { math: "\\Elolarr" }, "⥁": { math: "\\Elorarr" }, "⥂": { math: "\\ElzRlarr" }, "⥃": { math: "\\leftarrowshortrightarrow" }, "⥄": { math: "\\ElzrLarr" }, "⥅": { math: "\\rightarrowplus" }, "⥆": { math: "\\leftarrowplus" }, "⥇": { math: "\\Elzrarrx" }, "⥈": { math: "\\leftrightarrowcircle" }, "⥉": { math: "\\twoheaduparrowcircle" }, "⥊": { math: "\\leftrightharpoon" }, "⥋": { math: "\\rightleftharpoon" }, "⥌": { math: "\\updownharpoonrightleft" }, "⥍": { math: "\\updownharpoonleftright" }, "⥎": { math: "\\LeftRightVector" }, "⥏": { math: "\\RightUpDownVector" }, "⥐": { math: "\\DownLeftRightVector" }, "⥑": { math: "\\LeftUpDownVector" }, "⥒": { math: "\\LeftVectorBar" }, "⥓": { math: "\\RightVectorBar" }, "⥔": { math: "\\RightUpVectorBar" }, "⥕": { math: "\\RightDownVectorBar" }, "⥖": { math: "\\DownLeftVectorBar" }, "⥗": { math: "\\DownRightVectorBar" }, "⥘": { math: "\\LeftUpVectorBar" }, "⥙": { math: "\\LeftDownVectorBar" }, "⥚": { math: "\\LeftTeeVector" }, "⥛": { math: "\\RightTeeVector" }, "⥜": { math: "\\RightUpTeeVector" }, "⥝": { math: "\\RightDownTeeVector" }, "⥞": { math: "\\DownLeftTeeVector" }, "⥟": { math: "\\DownRightTeeVector" }, "⥠": { math: "\\LeftUpTeeVector" }, "⥡": { math: "\\LeftDownTeeVector" }, "⥢": { math: "\\leftleftharpoons" }, "⥣": { math: "\\upupharpoons" }, "⥤": { math: "\\rightrightharpoons" }, "⥥": { math: "\\downdownharpoons" }, "⥦": { math: "\\leftrightharpoonsup" }, "⥧": { math: "\\leftrightharpoonsdown" }, "⥨": { math: "\\rightleftharpoonsup" }, "⥩": { math: "\\rightleftharpoonsdown" }, "⥪": { math: "\\leftbarharpoon" }, "⥫": { math: "\\barleftharpoon" }, "⥬": { math: "\\rightbarharpoon" }, "⥭": { math: "\\barrightharpoon" }, "⥮": { math: "\\UpEquilibrium" }, "⥯": { math: "\\ReverseUpEquilibrium" }, "⥰": { math: "\\RoundImplies" }, "⥱": { math: "\\equalrightarrow" }, "⥲": { math: "\\similarrightarrow" }, "⥳": { math: "\\leftarrowsimilar" }, "⥴": { math: "\\rightarrowsimilar" }, "⥵": { math: "\\rightarrowapprox" }, "⥶": { math: "\\ltlarr" }, "⥷": { math: "\\leftarrowless" }, "⥸": { math: "\\gtrarr" }, "⥹": { math: "\\subrarr" }, "⥺": { math: "\\leftarrowsubset" }, "⥻": { math: "\\suplarr" }, "⥾": { math: "\\upfishtail" }, "⥿": { math: "\\downfishtail" }, "⦀": { math: "\\Elztfnc" }, "⦁": { math: "\\spot" }, "⦂": { math: "\\typecolon" }, "⦃": { math: "\\lBrace" }, "⦄": { math: "\\rBrace" }, "⦆": { math: "\\Elroang" }, "⦇": { math: "\\limg" }, "⦈": { math: "\\rimg" }, "⦉": { math: "\\lblot" }, "⦊": { math: "\\rblot" }, "⦋": { math: "\\lbrackubar" }, "⦌": { math: "\\rbrackubar" }, "⦍": { math: "\\lbrackultick" }, "⦎": { math: "\\rbracklrtick" }, "⦏": { math: "\\lbracklltick" }, "⦐": { math: "\\rbrackurtick" }, "⦑": { math: "\\langledot" }, "⦒": { math: "\\rangledot" }, "⦓": { math: "<\\kern-0.58em(" }, "⦕": { math: "\\Lparengtr" }, "⦖": { math: "\\Rparenless" }, "⦗": { math: "\\lblkbrbrak" }, "⦘": { math: "\\rblkbrbrak" }, "⦙": { math: "\\Elzddfnc" }, "⦚": { math: "\\vzigzag" }, "⦛": { math: "\\measuredangleleft" }, "⦜": { math: "\\Angle" }, "⦝": { math: "\\rightanglemdot" }, "⦞": { math: "\\angles" }, "⦟": { math: "\\angdnr" }, "⦠": { math: "\\Elzlpargt" }, "⦡": { math: "\\sphericalangleup" }, "⦢": { math: "\\turnangle" }, "⦣": { math: "\\revangle" }, "⦤": { math: "\\angleubar" }, "⦥": { math: "\\revangleubar" }, "⦦": { math: "\\wideangledown" }, "⦧": { math: "\\wideangleup" }, "⦨": { math: "\\measanglerutone" }, "⦩": { math: "\\measanglelutonw" }, "⦪": { math: "\\measanglerdtose" }, "⦫": { math: "\\measangleldtosw" }, "⦬": { math: "\\measangleurtone" }, "⦭": { math: "\\measangleultonw" }, "⦮": { math: "\\measangledrtose" }, "⦯": { math: "\\measangledltosw" }, "⦰": { math: "\\revemptyset" }, "⦱": { math: "\\emptysetobar" }, "⦲": { math: "\\emptysetocirc" }, "⦳": { math: "\\emptysetoarr" }, "⦴": { math: "\\emptysetoarrl" }, "⦷": { math: "\\circledparallel" }, "⦸": { math: "\\circledbslash" }, "⦹": { math: "\\operp" }, "⦺": { math: "\\obot" }, "⦻": { math: "\\olcross" }, "⦼": { math: "\\odotslashdot" }, "⦽": { math: "\\uparrowoncircle" }, "⦾": { math: "\\circledwhitebullet" }, "⦿": { math: "\\circledbullet" }, "⧀": { math: "\\circledless" }, "⧁": { math: "\\circledgtr" }, "⧂": { math: "\\cirscir" }, "⧃": { math: "\\cirE" }, "⧄": { math: "\\boxslash" }, "⧅": { math: "\\boxbslash" }, "⧆": { math: "\\boxast" }, "⧇": { math: "\\boxcircle" }, "⧈": { math: "\\boxbox" }, "⧉": { math: "\\boxonbox" }, "⧊": { math: "\\ElzLap" }, "⧋": { math: "\\Elzdefas" }, "⧌": { math: "\\triangles" }, "⧍": { math: "\\triangleserifs" }, "⧎": { math: "\\rtriltri" }, "⧏": { math: "\\LeftTriangleBar" }, "⧏̸": { math: "\\NotLeftTriangleBar" }, "⧐": { math: "\\RightTriangleBar" }, "⧐̸": { math: "\\NotRightTriangleBar" }, "⧑": { math: "\\lfbowtie" }, "⧒": { math: "\\rfbowtie" }, "⧓": { math: "\\fbowtie" }, "⧔": { math: "\\lftimes" }, "⧕": { math: "\\rftimes" }, "⧖": { math: "\\hourglass" }, "⧗": { math: "\\blackhourglass" }, "⧘": { math: "\\lvzigzag" }, "⧙": { math: "\\rvzigzag" }, "⧚": { math: "\\Lvzigzag" }, "⧛": { math: "\\Rvzigzag" }, "⧝": { math: "\\tieinfty" }, "⧞": { math: "\\nvinfty" }, "⧟": { math: "\\multimapboth" }, "⧠": { math: "\\laplac" }, "⧡": { math: "\\lrtriangleeq" }, "⧢": { math: "\\shuffle" }, "⧣": { math: "\\eparsl" }, "⧤": { math: "\\smeparsl" }, "⧥": { math: "\\eqvparsl" }, "⧦": { math: "\\gleichstark" }, "⧧": { math: "\\thermod" }, "⧨": { math: "\\downtriangleleftblack" }, "⧩": { math: "\\downtrianglerightblack" }, "⧪": { math: "\\blackdiamonddownarrow" }, "⧫": { math: "\\blacklozenge" }, "⧬": { math: "\\circledownarrow" }, "⧭": { math: "\\blackcircledownarrow" }, "⧮": { math: "\\errbarsquare" }, "⧯": { math: "\\errbarblacksquare" }, "⧰": { math: "\\errbardiamond" }, "⧱": { math: "\\errbarblackdiamond" }, "⧲": { math: "\\errbarcircle" }, "⧳": { math: "\\errbarblackcircle" }, "⧴": { math: "\\RuleDelayed" }, "⧵": { math: "\\setminus" }, "⧶": { math: "\\dsol" }, "⧷": { math: "\\rsolbar" }, "⧸": { math: "\\xsol" }, "⧹": { math: "\\zhide" }, "⧺": { math: "\\doubleplus" }, "⧻": { math: "\\tripleplus" }, "⧼": { math: "\\lcurvyangle" }, "⧽": { math: "\\rcurvyangle" }, "⧾": { math: "\\tplus" }, "⧿": { math: "\\tminus" }, "⨀": { math: "\\bigodot" }, "⨁": { math: "\\bigoplus" }, "⨂": { math: "\\bigotimes" }, "⨃": { math: "\\bigcupdot" }, "⨄": { math: "\\Elxuplus" }, "⨅": { math: "\\ElzThr" }, "⨆": { math: "\\Elxsqcup" }, "⨇": { math: "\\ElzInf" }, "⨈": { math: "\\ElzSup" }, "⨉": { math: "\\varprod" }, "⨊": { math: "\\modtwosum" }, "⨋": { math: "\\sumint" }, "⨌": { math: "\\iiiint" }, "⨍": { math: "\\ElzCint" }, "⨎": { math: "\\intBar" }, "⨏": { math: "\\clockoint" }, "⨑": { math: "\\awint" }, "⨒": { math: "\\rppolint" }, "⨓": { math: "\\scpolint" }, "⨔": { math: "\\npolint" }, "⨕": { math: "\\pointint" }, "⨖": { math: "\\sqrint" }, "⨗": { math: "\\intlarhk" }, "⨘": { math: "\\intx" }, "⨙": { math: "\\intcap" }, "⨚": { math: "\\intcup" }, "⨛": { math: "\\upint" }, "⨜": { math: "\\lowint" }, "⨝": { math: "\\Join" }, "⨞": { math: "\\bigtriangleleft" }, "⨟": { math: "\\zcmp" }, "⨠": { math: "\\zpipe" }, "⨡": { math: "\\zproject" }, "⨢": { math: "\\ringplus" }, "⨣": { math: "\\plushat" }, "⨤": { math: "\\simplus" }, "⨦": { math: "\\plussim" }, "⨧": { math: "\\plussubtwo" }, "⨨": { math: "\\plustrif" }, "⨩": { math: "\\commaminus" }, "⨫": { math: "\\minusfdots" }, "⨬": { math: "\\minusrdots" }, "⨯": { math: "\\ElzTimes" }, "⨰": { math: "\\dottimes" }, "⨱": { math: "\\timesbar" }, "⨲": { math: "\\btimes" }, "⨳": { math: "\\smashtimes" }, "⨶": { math: "\\otimeshat" }, "⨷": { math: "\\Otimes" }, "⨸": { math: "\\odiv" }, "⨹": { math: "\\triangleplus" }, "⨺": { math: "\\triangleminus" }, "⨻": { math: "\\triangletimes" }, "⨽": { math: "\\intprodr" }, "⨾": { math: "\\fcmp" }, "⨿": { math: "\\amalg" }, "⩀": { math: "\\capdot" }, "⩁": { math: "\\uminus" }, "⩂": { math: "\\barcup" }, "⩃": { math: "\\barcap" }, "⩄": { math: "\\capwedge" }, "⩅": { math: "\\cupvee" }, "⩆": { math: "\\cupovercap" }, "⩇": { math: "\\capovercup" }, "⩈": { math: "\\cupbarcap" }, "⩉": { math: "\\capbarcup" }, "⩊": { math: "\\twocups" }, "⩋": { math: "\\twocaps" }, "⩌": { math: "\\closedvarcup" }, "⩍": { math: "\\closedvarcap" }, "⩎": { math: "\\Sqcap" }, "⩏": { math: "\\Sqcup" }, "⩐": { math: "\\closedvarcupsmashprod" }, "⩑": { math: "\\wedgeodot" }, "⩒": { math: "\\veeodot" }, "⩓": { math: "\\ElzAnd" }, "⩔": { math: "\\ElzOr" }, "⩖": { math: "\\ElOr" }, "⩗": { math: "\\bigslopedvee" }, "⩘": { math: "\\bigslopedwedge" }, "⩙": { math: "\\veeonwedge" }, "⩚": { math: "\\wedgemidvert" }, "⩛": { math: "\\veemidvert" }, "⩜": { math: "\\midbarwedge" }, "⩝": { math: "\\midbarvee" }, "⩞": { math: "\\perspcorrespond" }, "⩟": { math: "\\Elzminhat" }, "⩠": { math: "\\wedgedoublebar" }, "⩡": { math: "\\varveebar" }, "⩢": { math: "\\doublebarvee" }, "⩤": { math: "\\dsub" }, "⩥": { math: "\\rsub" }, "⩦": { math: "\\eqdot" }, "⩧": { math: "\\dotequiv" }, "⩨": { math: "\\equivVert" }, "⩩": { math: "\\equivVvert" }, "⩪": { math: "\\dotsim" }, "⩫": { math: "\\simrdots" }, "⩬": { math: "\\simminussim" }, "⩭": { math: "\\congdot" }, "⩮": { math: "\\stackrel{*}{=}" }, "⩯": { math: "\\hatapprox" }, "⩰": { math: "\\approxeqq" }, "⩱": { math: "\\eqqplus" }, "⩲": { math: "\\pluseqq" }, "⩳": { math: "\\eqqsim" }, "⩴": { math: "\\Coloneqq" }, "⩵": { math: "\\Equal" }, "⩶": { math: "\\Same" }, "⩷": { math: "\\ddotseq" }, "⩸": { math: "\\equivDD" }, "⩹": { math: "\\ltcir" }, "⩺": { math: "\\gtcir" }, "⩻": { math: "\\ltquest" }, "⩼": { math: "\\gtquest" }, "⩽": { math: "\\leqslant", mathpackages: [ "amssymb" ] }, "⩽̸": { math: "\\nleqslant", mathpackages: [ "amssymb" ] }, "⩾": { math: "\\geqslant", mathpackages: [ "amssymb" ] }, "⩾̸": { math: "\\ngeqslant", mathpackages: [ "amssymb" ] }, "⩿": { math: "\\lesdot" }, "⪀": { math: "\\gesdot" }, "⪁": { math: "\\lesdoto" }, "⪂": { math: "\\gesdoto" }, "⪃": { math: "\\lesdotor" }, "⪄": { math: "\\gesdotol" }, "⪅": { math: "\\lessapprox" }, "⪆": { math: "\\gtrapprox" }, "⪇": { math: "\\lneq" }, "⪈": { math: "\\gneq" }, "⪉": { math: "\\lnapprox" }, "⪊": { math: "\\gnapprox" }, "⪋": { math: "\\lesseqqgtr" }, "⪌": { math: "\\gtreqqless" }, "⪍": { math: "\\lsime" }, "⪎": { math: "\\gsime" }, "⪏": { math: "\\lsimg" }, "⪐": { math: "\\gsiml" }, "⪑": { math: "\\lgE" }, "⪒": { math: "\\glE" }, "⪓": { math: "\\lesges" }, "⪔": { math: "\\gesles" }, "⪕": { math: "\\eqslantless" }, "⪖": { math: "\\eqslantgtr" }, "⪗": { math: "\\elsdot" }, "⪘": { math: "\\egsdot" }, "⪙": { math: "\\eqqless" }, "⪚": { math: "\\eqqgtr" }, "⪛": { math: "\\eqqslantless" }, "⪜": { math: "\\eqqslantgtr" }, "⪝": { math: "\\Pisymbol{ppi020}{117}" }, "⪞": { math: "\\Pisymbol{ppi020}{105}" }, "⪟": { math: "\\simlE" }, "⪠": { math: "\\simgE" }, "⪡": { math: "\\NestedLessLess" }, "⪡̸": { math: "\\NotNestedLessLess" }, "⪢": { math: "\\NestedGreaterGreater" }, "⪢̸": { math: "\\NotNestedGreaterGreater" }, "⪣": { math: "\\partialmeetcontraction" }, "⪤": { math: "\\glj" }, "⪥": { math: "\\gla" }, "⪦": { math: "\\leftslice" }, "⪧": { math: "\\rightslice" }, "⪨": { math: "\\lescc" }, "⪩": { math: "\\gescc" }, "⪪": { math: "\\smt" }, "⪫": { math: "\\lat" }, "⪬": { math: "\\smte" }, "⪭": { math: "\\late" }, "⪮": { math: "\\bumpeqq" }, "⪯": { math: "\\preceq" }, "⪯̸": { math: "\\not\\preceq" }, "⪰": { math: "\\succeq" }, "⪰̸": { math: "\\not\\succeq" }, "⪱": { math: "\\precneq" }, "⪲": { math: "\\succneq" }, "⪳": { math: "\\preceqq" }, "⪴": { math: "\\succeqq" }, "⪵": { math: "\\precneqq" }, "⪶": { math: "\\succneqq" }, "⪷": { math: "\\precapprox" }, "⪸": { math: "\\succapprox" }, "⪹": { math: "\\precnapprox" }, "⪺": { math: "\\succnapprox" }, "⪻": { math: "\\llcurly" }, "⪼": { math: "\\ggcurly" }, "⪽": { math: "\\subsetdot" }, "⪾": { math: "\\supsetdot" }, "⪿": { math: "\\subsetplus" }, "⫀": { math: "\\supsetplus" }, "⫁": { math: "\\submult" }, "⫂": { math: "\\supmult" }, "⫃": { math: "\\subedot" }, "⫄": { math: "\\supedot" }, "⫅": { math: "\\subseteqq" }, "⫅̸": { math: "\\nsubseteqq" }, "⫆": { math: "\\supseteqq" }, "⫆̸": { math: "\\nsupseteqq" }, "⫇": { math: "\\subsim" }, "⫈": { math: "\\supsim" }, "⫉": { math: "\\subsetapprox" }, "⫊": { math: "\\supsetapprox" }, "⫋": { math: "\\subsetneqq" }, "⫌": { math: "\\supsetneqq" }, "⫍": { math: "\\lsqhook" }, "⫎": { math: "\\rsqhook" }, "⫏": { math: "\\csub" }, "⫐": { math: "\\csup" }, "⫑": { math: "\\csube" }, "⫒": { math: "\\csupe" }, "⫓": { math: "\\subsup" }, "⫔": { math: "\\supsub" }, "⫕": { math: "\\subsub" }, "⫖": { math: "\\supsup" }, "⫗": { math: "\\suphsub" }, "⫘": { math: "\\supdsub" }, "⫙": { math: "\\forkv" }, "⫚": { math: "\\topfork" }, "⫛": { math: "\\mlcp" }, "⫝̸": { math: "\\forks" }, "⫝": { math: "\\forksnot" }, "⫝̸": { math: "\\forks" }, "⫞": { math: "\\shortlefttack" }, "⫟": { math: "\\shortdowntack" }, "⫠": { math: "\\shortuptack" }, "⫡": { math: "\\perps" }, "⫢": { math: "\\vDdash" }, "⫣": { math: "\\dashV" }, "⫤": { math: "\\Dashv" }, "⫥": { math: "\\DashV" }, "⫦": { math: "\\varVdash" }, "⫧": { math: "\\Barv" }, "⫨": { math: "\\vBar" }, "⫩": { math: "\\vBarv" }, "⫪": { math: "\\Top" }, "⫬": { math: "\\Not" }, "⫭": { math: "\\bNot" }, "⫮": { math: "\\revnmid" }, "⫯": { math: "\\cirmid" }, "⫰": { math: "\\midcir" }, "⫱": { math: "\\topcir" }, "⫲": { math: "\\nhpar" }, "⫳": { math: "\\parsim" }, "⫴": { math: "\\interleave" }, "⫵": { math: "\\nhVvert" }, "⫶": { math: "\\Elztdcol" }, "⫷": { math: "\\lllnest" }, "⫸": { math: "\\gggnest" }, "⫹": { math: "\\leqqslant" }, "⫺": { math: "\\geqqslant" }, "⫻": { math: "\\trslash" }, "⫼": { math: "\\biginterleave" }, "⫽": { math: "{{/}\\!\\!{/}}" }, "⫽⃥": { math: "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}" }, "⫾": { math: "\\talloblong" }, "⫿": { math: "\\bigtalloblong" }, "⬒": { math: "\\squaretopblack" }, "⬓": { math: "\\squarebotblack" }, "⬔": { math: "\\squareurblack" }, "⬕": { math: "\\squarellblack" }, "⬖": { math: "\\diamondleftblack" }, "⬗": { math: "\\diamondrightblack" }, "⬘": { math: "\\diamondtopblack" }, "⬙": { math: "\\diamondbotblack" }, "⬚": { math: "\\dottedsquare" }, "⬛": { math: "\\blacksquare" }, "⬜": { math: "\\square" }, "⬝": { math: "\\vysmblksquare" }, "⬞": { math: "\\vysmwhtsquare" }, "⬟": { math: "\\pentagonblack" }, "⬠": { math: "\\pentagon" }, "⬡": { math: "\\varhexagon" }, "⬢": { math: "\\varhexagonblack" }, "⬣": { math: "\\hexagonblack" }, "⬤": { math: "\\lgblkcircle" }, "⬥": { math: "\\mdblkdiamond" }, "⬦": { math: "\\mdwhtdiamond" }, "⬧": { math: "\\mdblklozenge" }, "⬨": { math: "\\mdwhtlozenge" }, "⬩": { math: "\\smblkdiamond" }, "⬪": { math: "\\smblklozenge" }, "⬫": { math: "\\smwhtlozenge" }, "⬬": { math: "\\blkhorzoval" }, "⬭": { math: "\\whthorzoval" }, "⬮": { math: "\\blkvertoval" }, "⬯": { math: "\\whtvertoval" }, "⬰": { math: "\\circleonleftarrow" }, "⬱": { math: "\\leftthreearrows" }, "⬲": { math: "\\leftarrowonoplus" }, "⬳": { math: "\\longleftsquigarrow" }, "⬴": { math: "\\nvtwoheadleftarrow" }, "⬵": { math: "\\nVtwoheadleftarrow" }, "⬶": { math: "\\twoheadmapsfrom" }, "⬷": { math: "\\twoheadleftdbkarrow" }, "⬸": { math: "\\leftdotarrow" }, "⬹": { math: "\\nvleftarrowtail" }, "⬺": { math: "\\nVleftarrowtail" }, "⬻": { math: "\\twoheadleftarrowtail" }, "⬼": { math: "\\nvtwoheadleftarrowtail" }, "⬽": { math: "\\nVtwoheadleftarrowtail" }, "⬾": { math: "\\leftarrowx" }, "⬿": { math: "\\leftcurvedarrow" }, "⭀": { math: "\\equalleftarrow" }, "⭁": { math: "\\bsimilarleftarrow" }, "⭂": { math: "\\leftarrowbackapprox" }, "⭃": { math: "\\rightarrowgtr" }, "⭄": { math: "\\rightarrowsupset" }, "⭅": { math: "\\LLeftarrow" }, "⭆": { math: "\\RRightarrow" }, "⭇": { math: "\\bsimilarrightarrow" }, "⭈": { math: "\\rightarrowbackapprox" }, "⭉": { math: "\\similarleftarrow" }, "⭊": { math: "\\leftarrowapprox" }, "⭋": { math: "\\leftarrowbsimilar" }, "⭌": { math: "\\rightarrowbsimilar" }, "⭐": { math: "\\medwhitestar" }, "⭑": { math: "\\medblackstar" }, "⭒": { math: "\\smwhitestar" }, "⭓": { math: "\\rightpentagonblack" }, "⭔": { math: "\\rightpentagon" }, "〈": { math: "\\langle" }, "〉": { math: "\\rangle" }, "〒": { math: "\\postalmark" }, "〔": { math: "\\lbrbrak" }, "〕": { math: "\\rbrbrak" }, "〚": { math: "\\openbracketleft" }, "〛": { math: "\\openbracketright" }, "〰": { math: "\\hzigzag" }, "ff": { text: "ff" }, "fi": { text: "fi" }, "fl": { text: "fl" }, "ffi": { text: "ffi" }, "ffl": { text: "ffl" }, "ſt": { text: "st" }, "st": { text: "st" }, "�": { text: "\\dbend", commandspacer: true }, "𝐀": { math: "\\mathbf{A}" }, "𝐁": { math: "\\mathbf{B}" }, "𝐂": { math: "\\mathbf{C}" }, "𝐃": { math: "\\mathbf{D}" }, "𝐄": { math: "\\mathbf{E}" }, "𝐅": { math: "\\mathbf{F}" }, "𝐆": { math: "\\mathbf{G}" }, "𝐇": { math: "\\mathbf{H}" }, "𝐈": { math: "\\mathbf{I}" }, "𝐉": { math: "\\mathbf{J}" }, "𝐊": { math: "\\mathbf{K}" }, "𝐋": { math: "\\mathbf{L}" }, "𝐌": { math: "\\mathbf{M}" }, "𝐍": { math: "\\mathbf{N}" }, "𝐎": { math: "\\mathbf{O}" }, "𝐏": { math: "\\mathbf{P}" }, "𝐐": { math: "\\mathbf{Q}" }, "𝐑": { math: "\\mathbf{R}" }, "𝐒": { math: "\\mathbf{S}" }, "𝐓": { math: "\\mathbf{T}" }, "𝐔": { math: "\\mathbf{U}" }, "𝐕": { math: "\\mathbf{V}" }, "𝐖": { math: "\\mathbf{W}" }, "𝐗": { math: "\\mathbf{X}" }, "𝐘": { math: "\\mathbf{Y}" }, "𝐙": { math: "\\mathbf{Z}" }, "𝐚": { math: "\\mathbf{a}" }, "𝐛": { math: "\\mathbf{b}" }, "𝐜": { math: "\\mathbf{c}" }, "𝐝": { math: "\\mathbf{d}" }, "𝐞": { math: "\\mathbf{e}" }, "𝐟": { math: "\\mathbf{f}" }, "𝐠": { math: "\\mathbf{g}" }, "𝐡": { math: "\\mathbf{h}" }, "𝐢": { math: "\\mathbf{i}" }, "𝐣": { math: "\\mathbf{j}" }, "𝐤": { math: "\\mathbf{k}" }, "𝐥": { math: "\\mathbf{l}" }, "𝐦": { math: "\\mathbf{m}" }, "𝐧": { math: "\\mathbf{n}" }, "𝐨": { math: "\\mathbf{o}" }, "𝐩": { math: "\\mathbf{p}" }, "𝐪": { math: "\\mathbf{q}" }, "𝐫": { math: "\\mathbf{r}" }, "𝐬": { math: "\\mathbf{s}" }, "𝐭": { math: "\\mathbf{t}" }, "𝐮": { math: "\\mathbf{u}" }, "𝐯": { math: "\\mathbf{v}" }, "𝐰": { math: "\\mathbf{w}" }, "𝐱": { math: "\\mathbf{x}" }, "𝐲": { math: "\\mathbf{y}" }, "𝐳": { math: "\\mathbf{z}" }, "𝐴": { math: "\\mathsl{A}" }, "𝐵": { math: "\\mathsl{B}" }, "𝐶": { math: "\\mathsl{C}" }, "𝐷": { math: "\\mathsl{D}" }, "𝐸": { math: "\\mathsl{E}" }, "𝐹": { math: "\\mathsl{F}" }, "𝐺": { math: "\\mathsl{G}" }, "𝐻": { math: "\\mathsl{H}" }, "𝐼": { math: "\\mathsl{I}" }, "𝐽": { math: "\\mathsl{J}" }, "𝐾": { math: "\\mathsl{K}" }, "𝐿": { math: "\\mathsl{L}" }, "𝑀": { math: "\\mathsl{M}" }, "𝑁": { math: "\\mathsl{N}" }, "𝑂": { math: "\\mathsl{O}" }, "𝑃": { math: "\\mathsl{P}" }, "𝑄": { math: "\\mathsl{Q}" }, "𝑅": { math: "\\mathsl{R}" }, "𝑆": { math: "\\mathsl{S}" }, "𝑇": { math: "\\mathsl{T}" }, "𝑈": { math: "\\mathsl{U}" }, "𝑉": { math: "\\mathsl{V}" }, "𝑊": { math: "\\mathsl{W}" }, "𝑋": { math: "\\mathsl{X}" }, "𝑌": { math: "\\mathsl{Y}" }, "𝑍": { math: "\\mathsl{Z}" }, "𝑎": { math: "\\mathsl{a}" }, "𝑏": { math: "\\mathsl{b}" }, "𝑐": { math: "\\mathsl{c}" }, "𝑑": { math: "\\mathsl{d}" }, "𝑒": { math: "\\mathsl{e}" }, "𝑓": { math: "\\mathsl{f}" }, "𝑔": { math: "\\mathsl{g}" }, "𝑖": { math: "\\mathsl{i}" }, "𝑗": { math: "\\mathsl{j}" }, "𝑘": { math: "\\mathsl{k}" }, "𝑙": { math: "\\mathsl{l}" }, "𝑚": { math: "\\mathsl{m}" }, "𝑛": { math: "\\mathsl{n}" }, "𝑜": { math: "\\mathsl{o}" }, "𝑝": { math: "\\mathsl{p}" }, "𝑞": { math: "\\mathsl{q}" }, "𝑟": { math: "\\mathsl{r}" }, "𝑠": { math: "\\mathsl{s}" }, "𝑡": { math: "\\mathsl{t}" }, "𝑢": { math: "\\mathsl{u}" }, "𝑣": { math: "\\mathsl{v}" }, "𝑤": { math: "\\mathsl{w}" }, "𝑥": { math: "\\mathsl{x}" }, "𝑦": { math: "\\mathsl{y}" }, "𝑧": { math: "\\mathsl{z}" }, "𝑨": { math: "\\mathbit{A}" }, "𝑩": { math: "\\mathbit{B}" }, "𝑪": { math: "\\mathbit{C}" }, "𝑫": { math: "\\mathbit{D}" }, "𝑬": { math: "\\mathbit{E}" }, "𝑭": { math: "\\mathbit{F}" }, "𝑮": { math: "\\mathbit{G}" }, "𝑯": { math: "\\mathbit{H}" }, "𝑰": { math: "\\mathbit{I}" }, "𝑱": { math: "\\mathbit{J}" }, "𝑲": { math: "\\mathbit{K}" }, "𝑳": { math: "\\mathbit{L}" }, "𝑴": { math: "\\mathbit{M}" }, "𝑵": { math: "\\mathbit{N}" }, "𝑶": { math: "\\mathbit{O}" }, "𝑷": { math: "\\mathbit{P}" }, "𝑸": { math: "\\mathbit{Q}" }, "𝑹": { math: "\\mathbit{R}" }, "𝑺": { math: "\\mathbit{S}" }, "𝑻": { math: "\\mathbit{T}" }, "𝑼": { math: "\\mathbit{U}" }, "𝑽": { math: "\\mathbit{V}" }, "𝑾": { math: "\\mathbit{W}" }, "𝑿": { math: "\\mathbit{X}" }, "𝒀": { math: "\\mathbit{Y}" }, "𝒁": { math: "\\mathbit{Z}" }, "𝒂": { math: "\\mathbit{a}" }, "𝒃": { math: "\\mathbit{b}" }, "𝒄": { math: "\\mathbit{c}" }, "𝒅": { math: "\\mathbit{d}" }, "𝒆": { math: "\\mathbit{e}" }, "𝒇": { math: "\\mathbit{f}" }, "𝒈": { math: "\\mathbit{g}" }, "𝒉": { math: "\\mathbit{h}" }, "𝒊": { math: "\\mathbit{i}" }, "𝒋": { math: "\\mathbit{j}" }, "𝒌": { math: "\\mathbit{k}" }, "𝒍": { math: "\\mathbit{l}" }, "𝒎": { math: "\\mathbit{m}" }, "𝒏": { math: "\\mathbit{n}" }, "𝒐": { math: "\\mathbit{o}" }, "𝒑": { math: "\\mathbit{p}" }, "𝒒": { math: "\\mathbit{q}" }, "𝒓": { math: "\\mathbit{r}" }, "𝒔": { math: "\\mathbit{s}" }, "𝒕": { math: "\\mathbit{t}" }, "𝒖": { math: "\\mathbit{u}" }, "𝒗": { math: "\\mathbit{v}" }, "𝒘": { math: "\\mathbit{w}" }, "𝒙": { math: "\\mathbit{x}" }, "𝒚": { math: "\\mathbit{y}" }, "𝒛": { math: "\\mathbit{z}" }, "𝒜": { math: "\\mathscr{A}" }, "𝒞": { math: "\\mathscr{C}" }, "𝒟": { math: "\\mathscr{D}" }, "𝒢": { math: "\\mathscr{G}" }, "𝒥": { math: "\\mathscr{J}" }, "𝒦": { math: "\\mathscr{K}" }, "𝒩": { math: "\\mathscr{N}" }, "𝒪": { math: "\\mathscr{O}" }, "𝒫": { math: "\\mathscr{P}" }, "𝒬": { math: "\\mathscr{Q}" }, "𝒮": { math: "\\mathscr{S}" }, "𝒯": { math: "\\mathscr{T}" }, "𝒰": { math: "\\mathscr{U}" }, "𝒱": { math: "\\mathscr{V}" }, "𝒲": { math: "\\mathscr{W}" }, "𝒳": { math: "\\mathscr{X}" }, "𝒴": { math: "\\mathscr{Y}" }, "𝒵": { math: "\\mathscr{Z}" }, "𝒶": { math: "\\mathscr{a}" }, "𝒷": { math: "\\mathscr{b}" }, "𝒸": { math: "\\mathscr{c}" }, "𝒹": { math: "\\mathscr{d}" }, "𝒻": { math: "\\mathscr{f}" }, "𝒽": { math: "\\mathscr{h}" }, "𝒾": { math: "\\mathscr{i}" }, "𝒿": { math: "\\mathscr{j}" }, "𝓀": { math: "\\mathscr{k}" }, "𝓁": { math: "\\mathscr{l}" }, "𝓂": { math: "\\mathscr{m}" }, "𝓃": { math: "\\mathscr{n}" }, "𝓅": { math: "\\mathscr{p}" }, "𝓆": { math: "\\mathscr{q}" }, "𝓇": { math: "\\mathscr{r}" }, "𝓈": { math: "\\mathscr{s}" }, "𝓉": { math: "\\mathscr{t}" }, "𝓊": { math: "\\mathscr{u}" }, "𝓋": { math: "\\mathscr{v}" }, "𝓌": { math: "\\mathscr{w}" }, "𝓍": { math: "\\mathscr{x}" }, "𝓎": { math: "\\mathscr{y}" }, "𝓏": { math: "\\mathscr{z}" }, "𝓐": { math: "\\mathmit{A}" }, "𝓑": { math: "\\mathmit{B}" }, "𝓒": { math: "\\mathmit{C}" }, "𝓓": { math: "\\mathmit{D}" }, "𝓔": { math: "\\mathmit{E}" }, "𝓕": { math: "\\mathmit{F}" }, "𝓖": { math: "\\mathmit{G}" }, "𝓗": { math: "\\mathmit{H}" }, "𝓘": { math: "\\mathmit{I}" }, "𝓙": { math: "\\mathmit{J}" }, "𝓚": { math: "\\mathmit{K}" }, "𝓛": { math: "\\mathmit{L}" }, "𝓜": { math: "\\mathmit{M}" }, "𝓝": { math: "\\mathmit{N}" }, "𝓞": { math: "\\mathmit{O}" }, "𝓟": { math: "\\mathmit{P}" }, "𝓠": { math: "\\mathmit{Q}" }, "𝓡": { math: "\\mathmit{R}" }, "𝓢": { math: "\\mathmit{S}" }, "𝓣": { math: "\\mathmit{T}" }, "𝓤": { math: "\\mathmit{U}" }, "𝓥": { math: "\\mathmit{V}" }, "𝓦": { math: "\\mathmit{W}" }, "𝓧": { math: "\\mathmit{X}" }, "𝓨": { math: "\\mathmit{Y}" }, "𝓩": { math: "\\mathmit{Z}" }, "𝓪": { math: "\\mathmit{a}" }, "𝓫": { math: "\\mathmit{b}" }, "𝓬": { math: "\\mathmit{c}" }, "𝓭": { math: "\\mathmit{d}" }, "𝓮": { math: "\\mathmit{e}" }, "𝓯": { math: "\\mathmit{f}" }, "𝓰": { math: "\\mathmit{g}" }, "𝓱": { math: "\\mathmit{h}" }, "𝓲": { math: "\\mathmit{i}" }, "𝓳": { math: "\\mathmit{j}" }, "𝓴": { math: "\\mathmit{k}" }, "𝓵": { math: "\\mathmit{l}" }, "𝓶": { math: "\\mathmit{m}" }, "𝓷": { math: "\\mathmit{n}" }, "𝓸": { math: "\\mathmit{o}" }, "𝓹": { math: "\\mathmit{p}" }, "𝓺": { math: "\\mathmit{q}" }, "𝓻": { math: "\\mathmit{r}" }, "𝓼": { math: "\\mathmit{s}" }, "𝓽": { math: "\\mathmit{t}" }, "𝓾": { math: "\\mathmit{u}" }, "𝓿": { math: "\\mathmit{v}" }, "𝔀": { math: "\\mathmit{w}" }, "𝔁": { math: "\\mathmit{x}" }, "𝔂": { math: "\\mathmit{y}" }, "𝔃": { math: "\\mathmit{z}" }, "𝔄": { math: "\\mathfrak{A}" }, "𝔅": { math: "\\mathfrak{B}" }, "𝔇": { math: "\\mathfrak{D}" }, "𝔈": { math: "\\mathfrak{E}" }, "𝔉": { math: "\\mathfrak{F}" }, "𝔊": { math: "\\mathfrak{G}" }, "𝔍": { math: "\\mathfrak{J}" }, "𝔎": { math: "\\mathfrak{K}" }, "𝔏": { math: "\\mathfrak{L}" }, "𝔐": { math: "\\mathfrak{M}" }, "𝔑": { math: "\\mathfrak{N}" }, "𝔒": { math: "\\mathfrak{O}" }, "𝔓": { math: "\\mathfrak{P}" }, "𝔔": { math: "\\mathfrak{Q}" }, "𝔖": { math: "\\mathfrak{S}" }, "𝔗": { math: "\\mathfrak{T}" }, "𝔘": { math: "\\mathfrak{U}" }, "𝔙": { math: "\\mathfrak{V}" }, "𝔚": { math: "\\mathfrak{W}" }, "𝔛": { math: "\\mathfrak{X}" }, "𝔜": { math: "\\mathfrak{Y}" }, "𝔞": { math: "\\mathfrak{a}" }, "𝔟": { math: "\\mathfrak{b}" }, "𝔠": { math: "\\mathfrak{c}" }, "𝔡": { math: "\\mathfrak{d}" }, "𝔢": { math: "\\mathfrak{e}" }, "𝔣": { math: "\\mathfrak{f}" }, "𝔤": { math: "\\mathfrak{g}" }, "𝔥": { math: "\\mathfrak{h}" }, "𝔦": { math: "\\mathfrak{i}" }, "𝔧": { math: "\\mathfrak{j}" }, "𝔨": { math: "\\mathfrak{k}" }, "𝔩": { math: "\\mathfrak{l}" }, "𝔪": { math: "\\mathfrak{m}" }, "𝔫": { math: "\\mathfrak{n}" }, "𝔬": { math: "\\mathfrak{o}" }, "𝔭": { math: "\\mathfrak{p}" }, "𝔮": { math: "\\mathfrak{q}" }, "𝔯": { math: "\\mathfrak{r}" }, "𝔰": { math: "\\mathfrak{s}" }, "𝔱": { math: "\\mathfrak{t}" }, "𝔲": { math: "\\mathfrak{u}" }, "𝔳": { math: "\\mathfrak{v}" }, "𝔴": { math: "\\mathfrak{w}" }, "𝔵": { math: "\\mathfrak{x}" }, "𝔶": { math: "\\mathfrak{y}" }, "𝔷": { math: "\\mathfrak{z}" }, "𝔸": { math: "\\mathbb{A}" }, "𝔹": { math: "\\mathbb{B}" }, "𝔻": { math: "\\mathbb{D}" }, "𝔼": { math: "\\mathbb{E}" }, "𝔽": { math: "\\mathbb{F}" }, "𝔾": { math: "\\mathbb{G}" }, "𝕀": { math: "\\mathbb{I}" }, "𝕁": { math: "\\mathbb{J}" }, "𝕂": { math: "\\mathbb{K}" }, "𝕃": { math: "\\mathbb{L}" }, "𝕄": { math: "\\mathbb{M}" }, "𝕆": { math: "\\mathbb{O}" }, "𝕊": { math: "\\mathbb{S}" }, "𝕋": { math: "\\mathbb{T}" }, "𝕌": { math: "\\mathbb{U}" }, "𝕍": { math: "\\mathbb{V}" }, "𝕎": { math: "\\mathbb{W}" }, "𝕏": { math: "\\mathbb{X}" }, "𝕐": { math: "\\mathbb{Y}" }, "𝕒": { math: "\\mathbb{a}" }, "𝕓": { math: "\\mathbb{b}" }, "𝕔": { math: "\\mathbb{c}" }, "𝕕": { math: "\\mathbb{d}" }, "𝕖": { math: "\\mathbb{e}" }, "𝕗": { math: "\\mathbb{f}" }, "𝕘": { math: "\\mathbb{g}" }, "𝕙": { math: "\\mathbb{h}" }, "𝕚": { math: "\\mathbb{i}" }, "𝕛": { math: "\\mathbb{j}" }, "𝕜": { math: "\\mathbb{k}" }, "𝕝": { math: "\\mathbb{l}" }, "𝕞": { math: "\\mathbb{m}" }, "𝕟": { math: "\\mathbb{n}" }, "𝕠": { math: "\\mathbb{o}" }, "𝕡": { math: "\\mathbb{p}" }, "𝕢": { math: "\\mathbb{q}" }, "𝕣": { math: "\\mathbb{r}" }, "𝕤": { math: "\\mathbb{s}" }, "𝕥": { math: "\\mathbb{t}" }, "𝕦": { math: "\\mathbb{u}" }, "𝕧": { math: "\\mathbb{v}" }, "𝕨": { math: "\\mathbb{w}" }, "𝕩": { math: "\\mathbb{x}" }, "𝕪": { math: "\\mathbb{y}" }, "𝕫": { math: "\\mathbb{z}" }, "𝕬": { math: "\\mathslbb{A}" }, "𝕭": { math: "\\mathslbb{B}" }, "𝕮": { math: "\\mathslbb{C}" }, "𝕯": { math: "\\mathslbb{D}" }, "𝕰": { math: "\\mathslbb{E}" }, "𝕱": { math: "\\mathslbb{F}" }, "𝕲": { math: "\\mathslbb{G}" }, "𝕳": { math: "\\mathslbb{H}" }, "𝕴": { math: "\\mathslbb{I}" }, "𝕵": { math: "\\mathslbb{J}" }, "𝕶": { math: "\\mathslbb{K}" }, "𝕷": { math: "\\mathslbb{L}" }, "𝕸": { math: "\\mathslbb{M}" }, "𝕹": { math: "\\mathslbb{N}" }, "𝕺": { math: "\\mathslbb{O}" }, "𝕻": { math: "\\mathslbb{P}" }, "𝕼": { math: "\\mathslbb{Q}" }, "𝕽": { math: "\\mathslbb{R}" }, "𝕾": { math: "\\mathslbb{S}" }, "𝕿": { math: "\\mathslbb{T}" }, "𝖀": { math: "\\mathslbb{U}" }, "𝖁": { math: "\\mathslbb{V}" }, "𝖂": { math: "\\mathslbb{W}" }, "𝖃": { math: "\\mathslbb{X}" }, "𝖄": { math: "\\mathslbb{Y}" }, "𝖅": { math: "\\mathslbb{Z}" }, "𝖆": { math: "\\mathslbb{a}" }, "𝖇": { math: "\\mathslbb{b}" }, "𝖈": { math: "\\mathslbb{c}" }, "𝖉": { math: "\\mathslbb{d}" }, "𝖊": { math: "\\mathslbb{e}" }, "𝖋": { math: "\\mathslbb{f}" }, "𝖌": { math: "\\mathslbb{g}" }, "𝖍": { math: "\\mathslbb{h}" }, "𝖎": { math: "\\mathslbb{i}" }, "𝖏": { math: "\\mathslbb{j}" }, "𝖐": { math: "\\mathslbb{k}" }, "𝖑": { math: "\\mathslbb{l}" }, "𝖒": { math: "\\mathslbb{m}" }, "𝖓": { math: "\\mathslbb{n}" }, "𝖔": { math: "\\mathslbb{o}" }, "𝖕": { math: "\\mathslbb{p}" }, "𝖖": { math: "\\mathslbb{q}" }, "𝖗": { math: "\\mathslbb{r}" }, "𝖘": { math: "\\mathslbb{s}" }, "𝖙": { math: "\\mathslbb{t}" }, "𝖚": { math: "\\mathslbb{u}" }, "𝖛": { math: "\\mathslbb{v}" }, "𝖜": { math: "\\mathslbb{w}" }, "𝖝": { math: "\\mathslbb{x}" }, "𝖞": { math: "\\mathslbb{y}" }, "𝖟": { math: "\\mathslbb{z}" }, "𝖠": { math: "\\mathsf{A}" }, "𝖡": { math: "\\mathsf{B}" }, "𝖢": { math: "\\mathsf{C}" }, "𝖣": { math: "\\mathsf{D}" }, "𝖤": { math: "\\mathsf{E}" }, "𝖥": { math: "\\mathsf{F}" }, "𝖦": { math: "\\mathsf{G}" }, "𝖧": { math: "\\mathsf{H}" }, "𝖨": { math: "\\mathsf{I}" }, "𝖩": { math: "\\mathsf{J}" }, "𝖪": { math: "\\mathsf{K}" }, "𝖫": { math: "\\mathsf{L}" }, "𝖬": { math: "\\mathsf{M}" }, "𝖭": { math: "\\mathsf{N}" }, "𝖮": { math: "\\mathsf{O}" }, "𝖯": { math: "\\mathsf{P}" }, "𝖰": { math: "\\mathsf{Q}" }, "𝖱": { math: "\\mathsf{R}" }, "𝖲": { math: "\\mathsf{S}" }, "𝖳": { math: "\\mathsf{T}" }, "𝖴": { math: "\\mathsf{U}" }, "𝖵": { math: "\\mathsf{V}" }, "𝖶": { math: "\\mathsf{W}" }, "𝖷": { math: "\\mathsf{X}" }, "𝖸": { math: "\\mathsf{Y}" }, "𝖹": { math: "\\mathsf{Z}" }, "𝖺": { math: "\\mathsf{a}" }, "𝖻": { math: "\\mathsf{b}" }, "𝖼": { math: "\\mathsf{c}" }, "𝖽": { math: "\\mathsf{d}" }, "𝖾": { math: "\\mathsf{e}" }, "𝖿": { math: "\\mathsf{f}" }, "𝗀": { math: "\\mathsf{g}" }, "𝗁": { math: "\\mathsf{h}" }, "𝗂": { math: "\\mathsf{i}" }, "𝗃": { math: "\\mathsf{j}" }, "𝗄": { math: "\\mathsf{k}" }, "𝗅": { math: "\\mathsf{l}" }, "𝗆": { math: "\\mathsf{m}" }, "𝗇": { math: "\\mathsf{n}" }, "𝗈": { math: "\\mathsf{o}" }, "𝗉": { math: "\\mathsf{p}" }, "𝗊": { math: "\\mathsf{q}" }, "𝗋": { math: "\\mathsf{r}" }, "𝗌": { math: "\\mathsf{s}" }, "𝗍": { math: "\\mathsf{t}" }, "𝗎": { math: "\\mathsf{u}" }, "𝗏": { math: "\\mathsf{v}" }, "𝗐": { math: "\\mathsf{w}" }, "𝗑": { math: "\\mathsf{x}" }, "𝗒": { math: "\\mathsf{y}" }, "𝗓": { math: "\\mathsf{z}" }, "𝗔": { math: "\\mathsfbf{A}" }, "𝗕": { math: "\\mathsfbf{B}" }, "𝗖": { math: "\\mathsfbf{C}" }, "𝗗": { math: "\\mathsfbf{D}" }, "𝗘": { math: "\\mathsfbf{E}" }, "𝗙": { math: "\\mathsfbf{F}" }, "𝗚": { math: "\\mathsfbf{G}" }, "𝗛": { math: "\\mathsfbf{H}" }, "𝗜": { math: "\\mathsfbf{I}" }, "𝗝": { math: "\\mathsfbf{J}" }, "𝗞": { math: "\\mathsfbf{K}" }, "𝗟": { math: "\\mathsfbf{L}" }, "𝗠": { math: "\\mathsfbf{M}" }, "𝗡": { math: "\\mathsfbf{N}" }, "𝗢": { math: "\\mathsfbf{O}" }, "𝗣": { math: "\\mathsfbf{P}" }, "𝗤": { math: "\\mathsfbf{Q}" }, "𝗥": { math: "\\mathsfbf{R}" }, "𝗦": { math: "\\mathsfbf{S}" }, "𝗧": { math: "\\mathsfbf{T}" }, "𝗨": { math: "\\mathsfbf{U}" }, "𝗩": { math: "\\mathsfbf{V}" }, "𝗪": { math: "\\mathsfbf{W}" }, "𝗫": { math: "\\mathsfbf{X}" }, "𝗬": { math: "\\mathsfbf{Y}" }, "𝗭": { math: "\\mathsfbf{Z}" }, "𝗮": { math: "\\mathsfbf{a}" }, "𝗯": { math: "\\mathsfbf{b}" }, "𝗰": { math: "\\mathsfbf{c}" }, "𝗱": { math: "\\mathsfbf{d}" }, "𝗲": { math: "\\mathsfbf{e}" }, "𝗳": { math: "\\mathsfbf{f}" }, "𝗴": { math: "\\mathsfbf{g}" }, "𝗵": { math: "\\mathsfbf{h}" }, "𝗶": { math: "\\mathsfbf{i}" }, "𝗷": { math: "\\mathsfbf{j}" }, "𝗸": { math: "\\mathsfbf{k}" }, "𝗹": { math: "\\mathsfbf{l}" }, "𝗺": { math: "\\mathsfbf{m}" }, "𝗻": { math: "\\mathsfbf{n}" }, "𝗼": { math: "\\mathsfbf{o}" }, "𝗽": { math: "\\mathsfbf{p}" }, "𝗾": { math: "\\mathsfbf{q}" }, "𝗿": { math: "\\mathsfbf{r}" }, "𝘀": { math: "\\mathsfbf{s}" }, "𝘁": { math: "\\mathsfbf{t}" }, "𝘂": { math: "\\mathsfbf{u}" }, "𝘃": { math: "\\mathsfbf{v}" }, "𝘄": { math: "\\mathsfbf{w}" }, "𝘅": { math: "\\mathsfbf{x}" }, "𝘆": { math: "\\mathsfbf{y}" }, "𝘇": { math: "\\mathsfbf{z}" }, "𝘈": { math: "\\mathsfsl{A}" }, "𝘉": { math: "\\mathsfsl{B}" }, "𝘊": { math: "\\mathsfsl{C}" }, "𝘋": { math: "\\mathsfsl{D}" }, "𝘌": { math: "\\mathsfsl{E}" }, "𝘍": { math: "\\mathsfsl{F}" }, "𝘎": { math: "\\mathsfsl{G}" }, "𝘏": { math: "\\mathsfsl{H}" }, "𝘐": { math: "\\mathsfsl{I}" }, "𝘑": { math: "\\mathsfsl{J}" }, "𝘒": { math: "\\mathsfsl{K}" }, "𝘓": { math: "\\mathsfsl{L}" }, "𝘔": { math: "\\mathsfsl{M}" }, "𝘕": { math: "\\mathsfsl{N}" }, "𝘖": { math: "\\mathsfsl{O}" }, "𝘗": { math: "\\mathsfsl{P}" }, "𝘘": { math: "\\mathsfsl{Q}" }, "𝘙": { math: "\\mathsfsl{R}" }, "𝘚": { math: "\\mathsfsl{S}" }, "𝘛": { math: "\\mathsfsl{T}" }, "𝘜": { math: "\\mathsfsl{U}" }, "𝘝": { math: "\\mathsfsl{V}" }, "𝘞": { math: "\\mathsfsl{W}" }, "𝘟": { math: "\\mathsfsl{X}" }, "𝘠": { math: "\\mathsfsl{Y}" }, "𝘡": { math: "\\mathsfsl{Z}" }, "𝘢": { math: "\\mathsfsl{a}" }, "𝘣": { math: "\\mathsfsl{b}" }, "𝘤": { math: "\\mathsfsl{c}" }, "𝘥": { math: "\\mathsfsl{d}" }, "𝘦": { math: "\\mathsfsl{e}" }, "𝘧": { math: "\\mathsfsl{f}" }, "𝘨": { math: "\\mathsfsl{g}" }, "𝘩": { math: "\\mathsfsl{h}" }, "𝘪": { math: "\\mathsfsl{i}" }, "𝘫": { math: "\\mathsfsl{j}" }, "𝘬": { math: "\\mathsfsl{k}" }, "𝘭": { math: "\\mathsfsl{l}" }, "𝘮": { math: "\\mathsfsl{m}" }, "𝘯": { math: "\\mathsfsl{n}" }, "𝘰": { math: "\\mathsfsl{o}" }, "𝘱": { math: "\\mathsfsl{p}" }, "𝘲": { math: "\\mathsfsl{q}" }, "𝘳": { math: "\\mathsfsl{r}" }, "𝘴": { math: "\\mathsfsl{s}" }, "𝘵": { math: "\\mathsfsl{t}" }, "𝘶": { math: "\\mathsfsl{u}" }, "𝘷": { math: "\\mathsfsl{v}" }, "𝘸": { math: "\\mathsfsl{w}" }, "𝘹": { math: "\\mathsfsl{x}" }, "𝘺": { math: "\\mathsfsl{y}" }, "𝘻": { math: "\\mathsfsl{z}" }, "𝘼": { math: "\\mathsfbfsl{A}" }, "𝘽": { math: "\\mathsfbfsl{B}" }, "𝘾": { math: "\\mathsfbfsl{C}" }, "𝘿": { math: "\\mathsfbfsl{D}" }, "𝙀": { math: "\\mathsfbfsl{E}" }, "𝙁": { math: "\\mathsfbfsl{F}" }, "𝙂": { math: "\\mathsfbfsl{G}" }, "𝙃": { math: "\\mathsfbfsl{H}" }, "𝙄": { math: "\\mathsfbfsl{I}" }, "𝙅": { math: "\\mathsfbfsl{J}" }, "𝙆": { math: "\\mathsfbfsl{K}" }, "𝙇": { math: "\\mathsfbfsl{L}" }, "𝙈": { math: "\\mathsfbfsl{M}" }, "𝙉": { math: "\\mathsfbfsl{N}" }, "𝙊": { math: "\\mathsfbfsl{O}" }, "𝙋": { math: "\\mathsfbfsl{P}" }, "𝙌": { math: "\\mathsfbfsl{Q}" }, "𝙍": { math: "\\mathsfbfsl{R}" }, "𝙎": { math: "\\mathsfbfsl{S}" }, "𝙏": { math: "\\mathsfbfsl{T}" }, "𝙐": { math: "\\mathsfbfsl{U}" }, "𝙑": { math: "\\mathsfbfsl{V}" }, "𝙒": { math: "\\mathsfbfsl{W}" }, "𝙓": { math: "\\mathsfbfsl{X}" }, "𝙔": { math: "\\mathsfbfsl{Y}" }, "𝙕": { math: "\\mathsfbfsl{Z}" }, "𝙖": { math: "\\mathsfbfsl{a}" }, "𝙗": { math: "\\mathsfbfsl{b}" }, "𝙘": { math: "\\mathsfbfsl{c}" }, "𝙙": { math: "\\mathsfbfsl{d}" }, "𝙚": { math: "\\mathsfbfsl{e}" }, "𝙛": { math: "\\mathsfbfsl{f}" }, "𝙜": { math: "\\mathsfbfsl{g}" }, "𝙝": { math: "\\mathsfbfsl{h}" }, "𝙞": { math: "\\mathsfbfsl{i}" }, "𝙟": { math: "\\mathsfbfsl{j}" }, "𝙠": { math: "\\mathsfbfsl{k}" }, "𝙡": { math: "\\mathsfbfsl{l}" }, "𝙢": { math: "\\mathsfbfsl{m}" }, "𝙣": { math: "\\mathsfbfsl{n}" }, "𝙤": { math: "\\mathsfbfsl{o}" }, "𝙥": { math: "\\mathsfbfsl{p}" }, "𝙦": { math: "\\mathsfbfsl{q}" }, "𝙧": { math: "\\mathsfbfsl{r}" }, "𝙨": { math: "\\mathsfbfsl{s}" }, "𝙩": { math: "\\mathsfbfsl{t}" }, "𝙪": { math: "\\mathsfbfsl{u}" }, "𝙫": { math: "\\mathsfbfsl{v}" }, "𝙬": { math: "\\mathsfbfsl{w}" }, "𝙭": { math: "\\mathsfbfsl{x}" }, "𝙮": { math: "\\mathsfbfsl{y}" }, "𝙯": { math: "\\mathsfbfsl{z}" }, "𝙰": { math: "\\mathtt{A}" }, "𝙱": { math: "\\mathtt{B}" }, "𝙲": { math: "\\mathtt{C}" }, "𝙳": { math: "\\mathtt{D}" }, "𝙴": { math: "\\mathtt{E}" }, "𝙵": { math: "\\mathtt{F}" }, "𝙶": { math: "\\mathtt{G}" }, "𝙷": { math: "\\mathtt{H}" }, "𝙸": { math: "\\mathtt{I}" }, "𝙹": { math: "\\mathtt{J}" }, "𝙺": { math: "\\mathtt{K}" }, "𝙻": { math: "\\mathtt{L}" }, "𝙼": { math: "\\mathtt{M}" }, "𝙽": { math: "\\mathtt{N}" }, "𝙾": { math: "\\mathtt{O}" }, "𝙿": { math: "\\mathtt{P}" }, "𝚀": { math: "\\mathtt{Q}" }, "𝚁": { math: "\\mathtt{R}" }, "𝚂": { math: "\\mathtt{S}" }, "𝚃": { math: "\\mathtt{T}" }, "𝚄": { math: "\\mathtt{U}" }, "𝚅": { math: "\\mathtt{V}" }, "𝚆": { math: "\\mathtt{W}" }, "𝚇": { math: "\\mathtt{X}" }, "𝚈": { math: "\\mathtt{Y}" }, "𝚉": { math: "\\mathtt{Z}" }, "𝚊": { math: "\\mathtt{a}" }, "𝚋": { math: "\\mathtt{b}" }, "𝚌": { math: "\\mathtt{c}" }, "𝚍": { math: "\\mathtt{d}" }, "𝚎": { math: "\\mathtt{e}" }, "𝚏": { math: "\\mathtt{f}" }, "𝚐": { math: "\\mathtt{g}" }, "𝚑": { math: "\\mathtt{h}" }, "𝚒": { math: "\\mathtt{i}" }, "𝚓": { math: "\\mathtt{j}" }, "𝚔": { math: "\\mathtt{k}" }, "𝚕": { math: "\\mathtt{l}" }, "𝚖": { math: "\\mathtt{m}" }, "𝚗": { math: "\\mathtt{n}" }, "𝚘": { math: "\\mathtt{o}" }, "𝚙": { math: "\\mathtt{p}" }, "𝚚": { math: "\\mathtt{q}" }, "𝚛": { math: "\\mathtt{r}" }, "𝚜": { math: "\\mathtt{s}" }, "𝚝": { math: "\\mathtt{t}" }, "𝚞": { math: "\\mathtt{u}" }, "𝚟": { math: "\\mathtt{v}" }, "𝚠": { math: "\\mathtt{w}" }, "𝚡": { math: "\\mathtt{x}" }, "𝚢": { math: "\\mathtt{y}" }, "𝚣": { math: "\\mathtt{z}" }, "𝚤": { math: "\\imath" }, "𝚥": { math: "\\jmath" }, "𝚨": { math: "\\mathbf{A}" }, "𝚩": { math: "\\mathbf{B}" }, "𝚪": { math: "\\mathbf{\\Gamma}" }, "𝚫": { math: "\\mathbf{\\Delta}" }, "𝚬": { math: "\\mathbf{E}" }, "𝚭": { math: "\\mathbf{Z}" }, "𝚮": { math: "\\mathbf{H}" }, "𝚯": { math: "\\mathbf{\\Theta}" }, "𝚰": { math: "\\mathbf{I}" }, "𝚱": { math: "\\mathbf{K}" }, "𝚲": { math: "\\mathbf{\\Lambda}" }, "𝚳": { math: "M" }, "𝚴": { math: "N" }, "𝚵": { math: "\\mathbf{\\Xi}" }, "𝚶": { math: "O" }, "𝚷": { math: "\\mathbf{\\Pi}" }, "𝚸": { math: "\\mathbf{P}" }, "𝚹": { math: "\\mathbf{\\vartheta}" }, "𝚺": { math: "\\mathbf{\\Sigma}" }, "𝚻": { math: "\\mathbf{T}" }, "𝚼": { math: "\\mathbf{\\Upsilon}" }, "𝚽": { math: "\\mathbf{\\Phi}" }, "𝚾": { math: "\\mathbf{X}" }, "𝚿": { math: "\\mathbf{\\Psi}" }, "𝛀": { math: "\\mathbf{\\Omega}" }, "𝛁": { math: "\\mathbf{\\nabla}" }, "𝛂": { math: "\\mathbf{\\alpha}" }, "𝛃": { math: "\\mathbf{\\beta}" }, "𝛄": { math: "\\mathbf{\\gamma}" }, "𝛅": { math: "\\mathbf{\\delta}" }, "𝛆": { math: "\\mathbf{\\epsilon}" }, "𝛇": { math: "\\mathbf{\\zeta}" }, "𝛈": { math: "\\mathbf{\\eta}" }, "𝛉": { math: "\\mathbf{\\theta}" }, "𝛊": { math: "\\mathbf{I}" }, "𝛋": { math: "\\mathbf{K}" }, "𝛌": { math: "\\mathbf{\\lambda}" }, "𝛍": { math: "M" }, "𝛎": { math: "N" }, "𝛏": { math: "\\mathbf{\\xi}" }, "𝛐": { math: "O" }, "𝛑": { math: "\\mathbf{\\pi}" }, "𝛒": { math: "\\mathbf{P}" }, "𝛓": { math: "\\mathbf{\\varsigma}" }, "𝛔": { math: "\\mathbf{\\sigma}" }, "𝛕": { math: "\\mathbf{T}" }, "𝛖": { math: "\\mathbf{\\upsilon}" }, "𝛗": { math: "\\mathbf{\\phi}" }, "𝛘": { math: "\\mathbf{X}" }, "𝛙": { math: "\\mathbf{\\psi}" }, "𝛚": { math: "\\mathbf{\\omega}" }, "𝛛": { math: "\\partial" }, "𝛜": { math: "\\in" }, "𝛝": { math: "\\mathbf{\\vartheta}" }, "𝛞": { math: "\\mathbf{\\varkappa}" }, "𝛟": { math: "\\mathbf{\\phi}" }, "𝛠": { math: "\\mathbf{\\varrho}" }, "𝛡": { math: "\\mathbf{\\varpi}" }, "𝛢": { math: "\\mathsl{A}" }, "𝛣": { math: "\\mathsl{B}" }, "𝛤": { math: "\\mathsl{\\Gamma}" }, "𝛥": { math: "\\mathsl{\\Delta}" }, "𝛦": { math: "\\mathsl{E}" }, "𝛧": { math: "\\mathsl{Z}" }, "𝛨": { math: "\\mathsl{H}" }, "𝛩": { math: "\\mathsl{\\Theta}" }, "𝛪": { math: "\\mathsl{I}" }, "𝛫": { math: "\\mathsl{K}" }, "𝛬": { math: "\\mathsl{\\Lambda}" }, "𝛭": { math: "M" }, "𝛮": { math: "N" }, "𝛯": { math: "\\mathsl{\\Xi}" }, "𝛰": { math: "O" }, "𝛱": { math: "\\mathsl{\\Pi}" }, "𝛲": { math: "\\mathsl{P}" }, "𝛳": { math: "\\mathsl{\\Theta}" }, "𝛴": { math: "\\mathsl{\\Sigma}" }, "𝛵": { math: "\\mathsl{T}" }, "𝛶": { math: "\\mathsl{\\Upsilon}" }, "𝛷": { math: "\\mathsl{\\Phi}" }, "𝛸": { math: "\\mathsl{X}" }, "𝛹": { math: "\\mathsl{\\Psi}" }, "𝛺": { math: "\\mathsl{\\Omega}" }, "𝛻": { math: "\\mathsl{\\nabla}" }, "𝛼": { math: "\\mathsl{A}" }, "𝛽": { math: "\\mathsl{B}" }, "𝛾": { math: "\\mathsl{\\gamma}" }, "𝛿": { math: "\\mathsl{\\delta}" }, "𝜀": { math: "\\mathsl{E}" }, "𝜁": { math: "\\mathsl{Z}" }, "𝜂": { math: "\\mathsl{H}" }, "𝜃": { math: "\\mathsl{\\theta}" }, "𝜄": { math: "\\mathsl{I}" }, "𝜅": { math: "\\mathsl{K}" }, "𝜆": { math: "\\mathsl{\\lambda}" }, "𝜇": { math: "\\mu" }, "𝜈": { math: "\\nu" }, "𝜉": { math: "\\mathsl{\\xi}" }, "𝜊": { math: "o" }, "𝜋": { math: "\\mathsl{\\pi}" }, "𝜌": { math: "\\mathsl{P}" }, "𝜍": { math: "\\mathsl{\\varsigma}" }, "𝜎": { math: "\\mathsl{\\sigma}" }, "𝜏": { math: "\\mathsl{T}" }, "𝜐": { math: "\\mathsl{\\upsilon}" }, "𝜑": { math: "\\mathsl{\\varphi}" }, "𝜒": { math: "\\mathsl{X}" }, "𝜓": { math: "\\mathsl{\\psi}" }, "𝜔": { math: "\\mathsl{\\omega}" }, "𝜕": { math: "\\partial" }, "𝜖": { math: "\\in" }, "𝜗": { math: "\\mathsl{\\vartheta}" }, "𝜘": { math: "\\mathsl{\\varkappa}" }, "𝜙": { math: "\\mathsl{\\phi}" }, "𝜚": { math: "\\mathsl{\\varrho}" }, "𝜛": { math: "\\mathsl{\\varpi}" }, "𝜜": { math: "\\mathbit{A}" }, "𝜝": { math: "\\mathbit{B}" }, "𝜞": { math: "\\mathbit{\\Gamma}" }, "𝜟": { math: "\\mathbit{\\Delta}" }, "𝜠": { math: "\\mathbit{E}" }, "𝜡": { math: "\\mathbit{Z}" }, "𝜢": { math: "\\mathbit{H}" }, "𝜣": { math: "\\mathbit{\\Theta}" }, "𝜤": { math: "\\mathbit{I}" }, "𝜥": { math: "\\mathbit{K}" }, "𝜦": { math: "\\mathbit{\\Lambda}" }, "𝜧": { math: "M" }, "𝜨": { math: "N" }, "𝜩": { math: "\\mathbit{\\Xi}" }, "𝜪": { math: "O" }, "𝜫": { math: "\\mathbit{\\Pi}" }, "𝜬": { math: "\\mathbit{P}" }, "𝜭": { math: "\\mathbit{O}" }, "𝜮": { math: "\\mathbit{\\Sigma}" }, "𝜯": { math: "\\mathbit{T}" }, "𝜰": { math: "\\mathbit{\\Upsilon}" }, "𝜱": { math: "\\mathbit{\\Phi}" }, "𝜲": { math: "\\mathbit{X}" }, "𝜳": { math: "\\mathbit{\\Psi}" }, "𝜴": { math: "\\mathbit{\\Omega}" }, "𝜵": { math: "\\mathbit{\\nabla}" }, "𝜶": { math: "\\mathbit{\\alpha}" }, "𝜷": { math: "\\mathbit{\\beta}" }, "𝜸": { math: "\\mathbit{\\gamma}" }, "𝜹": { math: "\\mathbit{\\delta}" }, "𝜺": { math: "\\mathbit{\\epsilon}" }, "𝜻": { math: "\\mathbit{\\zeta}" }, "𝜼": { math: "\\mathbit{\\eta}" }, "𝜽": { math: "\\mathbit{\\theta}" }, "𝜾": { math: "\\mathbit{\\imath}" }, "𝜿": { math: "\\mathbit{\\kappa}" }, "𝝀": { math: "\\mathbit{\\lambda}" }, "𝝁": { math: "\\mu" }, "𝝂": { math: "N" }, "𝝃": { math: "\\mathbit{\\xi}" }, "𝝄": { math: "O" }, "𝝅": { math: "\\mathbit{\\pi}" }, "𝝆": { math: "\\mathbit{\\rho}" }, "𝝇": { math: "\\mathbit{\\varsigma}" }, "𝝈": { math: "\\mathbit{\\sigma}" }, "𝝉": { math: "\\mathbit{\\tau}" }, "𝝊": { math: "\\mathbit{\\upsilon}" }, "𝝋": { math: "\\mathbit{\\varphi}" }, "𝝌": { math: "\\mathbit{\\chi}" }, "𝝍": { math: "\\mathbit{\\psi}" }, "𝝎": { math: "\\mathbit{\\omega}" }, "𝝏": { math: "\\partial" }, "𝝐": { math: "\\in" }, "𝝑": { math: "\\mathbit{\\vartheta}" }, "𝝒": { math: "\\mathbit{\\varkappa}" }, "𝝓": { math: "\\mathbit{\\phi}" }, "𝝔": { math: "\\mathbit{\\varrho}" }, "𝝕": { math: "\\mathbit{\\varpi}" }, "𝝖": { math: "\\mathsfbf{A}" }, "𝝗": { math: "\\mathsfbf{B}" }, "𝝘": { math: "\\mathsfbf{\\Gamma}" }, "𝝙": { math: "\\mathsfbf{\\Delta}" }, "𝝚": { math: "\\mathsfbf{E}" }, "𝝛": { math: "\\mathsfbf{Z}" }, "𝝜": { math: "\\mathsfbf{H}" }, "𝝝": { math: "\\mathsfbf{\\Theta}" }, "𝝞": { math: "\\mathsfbf{I}" }, "𝝟": { math: "\\mathsfbf{K}" }, "𝝠": { math: "\\mathsfbf{\\Lambda}" }, "𝝡": { math: "M" }, "𝝢": { math: "N" }, "𝝣": { math: "\\mathsfbf{\\Xi}" }, "𝝤": { math: "O" }, "𝝥": { math: "\\mathsfbf{\\Pi}" }, "𝝦": { math: "\\mathsfbf{P}" }, "𝝧": { math: "\\mathsfbf{\\Theta}" }, "𝝨": { math: "\\mathsfbf{\\Sigma}" }, "𝝩": { math: "\\mathsfbf{T}" }, "𝝪": { math: "\\mathsfbf{\\Upsilon}" }, "𝝫": { math: "\\mathsfbf{\\Phi}" }, "𝝬": { math: "\\mathsfbf{X}" }, "𝝭": { math: "\\mathsfbf{\\Psi}" }, "𝝮": { math: "\\mathsfbf{\\Omega}" }, "𝝯": { math: "\\mathsfbf{\\nabla}" }, "𝝰": { math: "\\mathsfbf{\\alpha}" }, "𝝱": { math: "\\mathsfbf{\\beta}" }, "𝝲": { math: "\\mathsfbf{\\gamma}" }, "𝝳": { math: "\\mathsfbf{\\delta}" }, "𝝴": { math: "\\mathsfbf{\\varepsilon}" }, "𝝵": { math: "\\mathsfbf{\\zeta}" }, "𝝶": { math: "\\mathsfbf{\\eta}" }, "𝝷": { math: "\\mathsfbf{\\theta}" }, "𝝸": { math: "\\mathsfbf{\\imath}" }, "𝝹": { math: "\\mathsfbf{\\kappa}" }, "𝝺": { math: "\\mathsfbf{\\lambda}" }, "𝝻": { math: "\\mu" }, "𝝼": { math: "\\nu" }, "𝝽": { math: "\\mathsfbf{\\xi}" }, "𝝾": { math: "o" }, "𝝿": { math: "\\mathsfbf{\\pi}" }, "𝞀": { math: "\\mathsfbf{\\rho}" }, "𝞁": { math: "\\mathsfbf{\\varsigma}" }, "𝞂": { math: "\\mathsfbf{\\sigma}" }, "𝞃": { math: "\\mathsfbf{\\tau}" }, "𝞄": { math: "\\mathsfbf{\\upsilon}" }, "𝞅": { math: "\\mathsfbf{\\varphi}" }, "𝞆": { math: "\\mathsfbf{\\chi}" }, "𝞇": { math: "\\mathsfbf{\\psi}" }, "𝞈": { math: "\\mathsfbf{\\omega}" }, "𝞉": { math: "\\partial" }, "𝞊": { math: "\\in" }, "𝞋": { math: "\\mathsfbf{\\vartheta}" }, "𝞌": { math: "\\mathsfbf{\\varkappa}" }, "𝞍": { math: "\\mathsfbf{\\phi}" }, "𝞎": { math: "\\mathsfbf{\\varrho}" }, "𝞏": { math: "\\mathsfbf{\\varpi}" }, "𝞐": { math: "\\mathsfbfsl{A}" }, "𝞑": { math: "\\mathsfbfsl{B}" }, "𝞒": { math: "\\mathsfbfsl{\\Gamma}" }, "𝞓": { math: "\\mathsfbfsl{\\Delta}" }, "𝞔": { math: "\\mathsfbfsl{E}" }, "𝞕": { math: "\\mathsfbfsl{Z}" }, "𝞖": { math: "\\mathsfbfsl{H}" }, "𝞗": { math: "\\mathsfbfsl{\\Theta}" }, "𝞘": { math: "\\mathsfbfsl{I}" }, "𝞙": { math: "\\mathsfbfsl{K}" }, "𝞚": { math: "\\mathsfbfsl{\\Lambda}" }, "𝞛": { math: "\\mathsfbfsl{M}" }, "𝞜": { math: "\\mathsfbfsl{N}" }, "𝞝": { math: "\\mathsfbfsl{\\Xi}" }, "𝞞": { math: "\\mathsfbfsl{O}" }, "𝞟": { math: "\\mathsfbfsl{\\Pi}" }, "𝞠": { math: "\\mathsfbfsl{P}" }, "𝞡": { math: "\\mathsfbfsl{\\Theta}" }, "𝞢": { math: "\\mathsfbfsl{\\Sigma}" }, "𝞣": { math: "\\mathsfbfsl{T}" }, "𝞤": { math: "\\mathsfbfsl{\\Upsilon}" }, "𝞥": { math: "\\mathsfbfsl{\\Phi}" }, "𝞦": { math: "\\mathsfbfsl{X}" }, "𝞧": { math: "\\mathsfbfsl{\\Psi}" }, "𝞨": { math: "\\mathsfbfsl{\\Omega}" }, "𝞩": { math: "\\mathsfbfsl{\\nabla}" }, "𝞪": { math: "\\mathsfbfsl{\\alpha}" }, "𝞫": { math: "\\mathsfbfsl{\\beta}" }, "𝞬": { math: "\\mathsfbfsl{\\gamma}" }, "𝞭": { math: "\\mathsfbfsl{\\delta}" }, "𝞮": { math: "\\mathsfbfsl{\\varepsilon}" }, "𝞯": { math: "\\mathsfbfsl{\\zeta}" }, "𝞰": { math: "\\mathsfbfsl{\\eta}" }, "𝞱": { math: "\\mathsfbfsl{\\theta}" }, "𝞲": { math: "\\mathsfbfsl{\\imath}" }, "𝞳": { math: "\\mathsfbfsl{\\kappa}" }, "𝞴": { math: "\\mathsfbfsl{\\lambda}" }, "𝞵": { math: "\\mu" }, "𝞶": { math: "\\nu" }, "𝞷": { math: "\\mathsfbfsl{\\xi}" }, "𝞸": { math: "o" }, "𝞹": { math: "\\mathsfbfsl{\\pi}" }, "𝞺": { math: "\\mathsfbfsl{\\rho}" }, "𝞻": { math: "\\mathsfbfsl{\\varsigma}" }, "𝞼": { math: "\\mathsfbfsl{\\sigma}" }, "𝞽": { math: "\\mathsfbfsl{\\tau}" }, "𝞾": { math: "\\mathsfbfsl{\\upsilon}" }, "𝞿": { math: "\\mathsfbfsl{\\varphi}" }, "𝟀": { math: "\\mathsfbfsl{\\chi}" }, "𝟁": { math: "\\mathsfbfsl{\\psi}" }, "𝟂": { math: "\\mathsfbfsl{\\omega}" }, "𝟃": { math: "\\partial" }, "𝟄": { math: "\\in" }, "𝟅": { math: "\\mathsfbfsl{\\vartheta}" }, "𝟆": { math: "\\mathsfbfsl{\\varkappa}" }, "𝟇": { math: "\\mathsfbfsl{\\phi}" }, "𝟈": { math: "\\mathsfbfsl{\\varrho}" }, "𝟉": { math: "\\mathsfbfsl{\\varpi}" }, "𝟊": { math: "\\mbfDigamma" }, "𝟋": { math: "\\mbfdigamma" }, "𝟎": { math: "\\mathbf{0}" }, "𝟏": { math: "\\mathbf{1}" }, "𝟐": { math: "\\mathbf{2}" }, "𝟑": { math: "\\mathbf{3}" }, "𝟒": { math: "\\mathbf{4}" }, "𝟓": { math: "\\mathbf{5}" }, "𝟔": { math: "\\mathbf{6}" }, "𝟕": { math: "\\mathbf{7}" }, "𝟖": { math: "\\mathbf{8}" }, "𝟗": { math: "\\mathbf{9}" }, "𝟘": { math: "\\mathbb{0}" }, "𝟙": { math: "\\mathbb{1}" }, "𝟚": { math: "\\mathbb{2}" }, "𝟛": { math: "\\mathbb{3}" }, "𝟜": { math: "\\mathbb{4}" }, "𝟝": { math: "\\mathbb{5}" }, "𝟞": { math: "\\mathbb{6}" }, "𝟟": { math: "\\mathbb{7}" }, "𝟠": { math: "\\mathbb{8}" }, "𝟡": { math: "\\mathbb{9}" }, "𝟢": { math: "\\mathsf{0}" }, "𝟣": { math: "\\mathsf{1}" }, "𝟤": { math: "\\mathsf{2}" }, "𝟥": { math: "\\mathsf{3}" }, "𝟦": { math: "\\mathsf{4}" }, "𝟧": { math: "\\mathsf{5}" }, "𝟨": { math: "\\mathsf{6}" }, "𝟩": { math: "\\mathsf{7}" }, "𝟪": { math: "\\mathsf{8}" }, "𝟫": { math: "\\mathsf{9}" }, "𝟬": { math: "\\mathsfbf{0}" }, "𝟭": { math: "\\mathsfbf{1}" }, "𝟮": { math: "\\mathsfbf{2}" }, "𝟯": { math: "\\mathsfbf{3}" }, "𝟰": { math: "\\mathsfbf{4}" }, "𝟱": { math: "\\mathsfbf{5}" }, "𝟲": { math: "\\mathsfbf{6}" }, "𝟳": { math: "\\mathsfbf{7}" }, "𝟴": { math: "\\mathsfbf{8}" }, "𝟵": { math: "\\mathsfbf{9}" }, "𝟶": { math: "\\mathtt{0}" }, "𝟷": { math: "\\mathtt{1}" }, "𝟸": { math: "\\mathtt{2}" }, "𝟹": { math: "\\mathtt{3}" }, "𝟺": { math: "\\mathtt{4}" }, "𝟻": { math: "\\mathtt{5}" }, "𝟼": { math: "\\mathtt{6}" }, "𝟽": { math: "\\mathtt{7}" }, "𝟾": { math: "\\mathtt{8}" }, "𝟿": { math: "\\mathtt{9}" } }; var $$1 = { math: "\\$", text: "\\$" }; var _$1 = { math: "\\_", text: "\\_" }; var require$$1 = { "#": { math: "\\#", text: "\\#" }, $: $$1, "%": { math: "\\%", text: "\\%" }, "&": { math: "\\&", text: "\\&" }, "/​": { text: "{\\slash}" }, "<": { math: "<" }, ">": { math: ">" }, "\\": { math: "\\backslash", text: "{\\textbackslash}" }, "^": { math: "\\sphat", text: "\\^" }, _: _$1, "i︠a︡": { text: "\\t{ia}" }, "{": { math: "\\lbrace", text: "\\{" }, "}": { math: "\\rbrace", text: "\\}" }, "~": { math: "\\sptilde", text: "{\\textasciitilde}" }, " ": { math: "~", space: true, text: "~" }, "¡": { text: "{\\textexclamdown}" }, "¢": { math: "\\cent", text: "{\\textcent}", textpackages: [ "textcomp" ] }, "£": { math: "\\pounds", text: "{\\textsterling}", textpackages: [ "textcomp" ] }, "¤": { text: "{\\textcurrency}", textpackages: [ "textcomp" ] }, "¥": { math: "\\yen", text: "{\\textyen}", textpackages: [ "textcomp" ] }, "¦": { text: "{\\textbrokenbar}", textpackages: [ "textcomp" ] }, "§": { text: "{\\textsection}", textpackages: [ "textcomp" ] }, "¨": { math: "\\spddot", text: "{\\textasciidieresis}" }, "©": { text: "{\\textcopyright}", textpackages: [ "textcomp" ] }, "ª": { text: "{\\textordfeminine}", textpackages: [ "textcomp" ] }, "«": { text: "{\\guillemotleft}" }, "¬": { math: "\\lnot" }, "­": { math: "\\-", text: "\\-" }, "®": { math: "\\circledR", text: "{\\textregistered}", textpackages: [ "textcomp" ] }, "¯": { text: "{\\textasciimacron}" }, "°": { math: "^\\circ", text: "{\\textdegree}", textpackages: [ "textcomp" ] }, "±": { math: "\\pm" }, "²": { math: "^{2}" }, "³": { math: "^{3}" }, "´": { text: "{\\textasciiacute}" }, "µ": { text: "{\\textmu}" }, "¶": { text: "{\\textparagraph}", textpackages: [ "textcomp" ] }, "·": { math: "\\cdot" }, "¸": { text: "{\\c}" }, "¹": { math: "^{1}" }, "º": { text: "{\\textordmasculine}", textpackages: [ "textcomp" ] }, "»": { text: "{\\guillemotright}" }, "¼": { math: "\\frac{1}{4}" }, "½": { math: "\\frac{1}{2}" }, "¾": { math: "\\frac{3}{4}" }, "¿": { text: "{\\textquestiondown}" }, "À": { text: "{\\`A}" }, "Á": { text: "{\\'A}" }, "Â": { text: "{\\^A}" }, "Ã": { text: "{\\~A}" }, "Ä": { text: "{\\\"A}" }, "Å": { text: "{\\AA}" }, "Æ": { text: "{\\AE}" }, "Ç": { text: "{\\c C}" }, "È": { text: "{\\`E}" }, "É": { text: "{\\'E}" }, "Ê": { text: "{\\^E}" }, "Ë": { text: "{\\\"E}" }, "Ì": { text: "{\\`I}" }, "Í": { text: "{\\'I}" }, "Î": { text: "{\\^I}" }, "Ï": { text: "{\\\"I}" }, "Ð": { text: "{\\DH}" }, "Ñ": { text: "{\\~N}" }, "Ò": { text: "{\\`O}" }, "Ó": { text: "{\\'O}" }, "Ô": { text: "{\\^O}" }, "Õ": { text: "{\\~O}" }, "Ö": { text: "{\\\"O}" }, "×": { math: "\\times", text: "{\\texttimes}" }, "Ø": { text: "{\\O}" }, "Ù": { text: "{\\`U}" }, "Ú": { text: "{\\'U}" }, "Û": { text: "{\\^U}" }, "Ü": { text: "{\\\"U}" }, "Ý": { text: "{\\'Y}" }, "Þ": { text: "{\\TH}" }, "ß": { text: "{\\ss}" }, "à": { text: "{\\`a}" }, "á": { text: "{\\'a}" }, "â": { text: "{\\^a}" }, "ã": { text: "{\\~a}" }, "ä": { text: "{\\\"a}" }, "å": { text: "{\\aa}" }, "æ": { text: "{\\ae}" }, "ç": { text: "{\\c c}" }, "è": { text: "{\\`e}" }, "é": { text: "{\\'e}" }, "ê": { text: "{\\^e}" }, "ë": { text: "{\\\"e}" }, "ì": { text: "{\\`i}" }, "í": { text: "{\\'i}" }, "î": { text: "{\\^i}" }, "ï": { text: "{\\\"i}" }, "ð": { math: "\\eth", mathpackages: [ "amssymb", "arevmath" ], text: "{\\dh}" }, "ñ": { text: "{\\~n}" }, "ò": { text: "{\\`o}" }, "ó": { text: "{\\'o}" }, "ô": { text: "{\\^o}" }, "õ": { text: "{\\~o}" }, "ö": { text: "{\\\"o}" }, "÷": { math: "\\div" }, "ø": { text: "{\\o}" }, "ù": { text: "{\\`u}" }, "ú": { text: "{\\'u}" }, "û": { text: "{\\^u}" }, "ü": { text: "{\\\"u}" }, "ý": { text: "{\\'y}" }, "þ": { text: "{\\th}" }, "ÿ": { text: "{\\\"y}" }, "Ā": { text: "{\\=A}" }, "ā": { text: "{\\=a}" }, "Ă": { text: "{\\u A}" }, "ă": { text: "{\\u a}" }, "Ą": { text: "{\\k{A}}" }, "ą": { text: "{\\k{a}}" }, "Ć": { text: "{\\'C}" }, "ć": { text: "{\\'c}" }, "Ĉ": { text: "{\\^C}" }, "ĉ": { text: "{\\^c}" }, "Ċ": { text: "{\\.C}" }, "ċ": { text: "{\\.c}" }, "Č": { text: "{\\v C}" }, "č": { text: "{\\v c}" }, "Ď": { text: "{\\v D}" }, "ď": { text: "{\\v d}" }, "Đ": { text: "{\\DJ}" }, "đ": { text: "{\\dj}" }, "Ē": { text: "{\\=E}" }, "ē": { text: "{\\=e}" }, "Ĕ": { text: "{\\u E}" }, "ĕ": { text: "{\\u e}" }, "Ė": { text: "{\\.E}" }, "ė": { text: "{\\.e}" }, "Ę": { text: "{\\k{E}}" }, "ę": { text: "{\\k{e}}" }, "Ě": { text: "{\\v E}" }, "ě": { text: "{\\v e}" }, "Ĝ": { text: "{\\^G}" }, "ĝ": { text: "{\\^g}" }, "Ğ": { text: "{\\u G}" }, "ğ": { text: "{\\u g}" }, "Ġ": { text: "{\\.G}" }, "ġ": { text: "{\\.g}" }, "Ģ": { text: "{\\c G}" }, "ģ": { text: "{\\c g}" }, "Ĥ": { text: "{\\^H}" }, "ĥ": { text: "{\\^h}" }, "Ħ": { text: "{\\fontencoding{LELA}\\selectfont\\char40}" }, "ħ": { math: "\\Elzxh" }, "Ĩ": { text: "{\\~I}" }, "ĩ": { text: "{\\~i}" }, "Ī": { text: "{\\=I}" }, "ī": { text: "{\\=i}" }, "Ĭ": { text: "{\\u I}" }, "ĭ": { text: "{\\u \\i}" }, "Į": { text: "{\\k{I}}" }, "į": { text: "{\\k{i}}" }, "İ": { text: "{\\.I}" }, "ı": { math: "\\imath", text: "{\\i}" }, "IJ": { text: "IJ" }, "ij": { text: "ij" }, "Ĵ": { text: "{\\^J}" }, "ĵ": { text: "{\\^\\j}" }, "Ķ": { text: "{\\c K}" }, "ķ": { text: "{\\c k}" }, "ĸ": { text: "{\\fontencoding{LELA}\\selectfont\\char91}" }, "Ĺ": { text: "{\\'L}" }, "ĺ": { text: "{\\'l}" }, "Ļ": { text: "{\\c L}" }, "ļ": { text: "{\\c l}" }, "Ľ": { text: "{\\v L}" }, "ľ": { text: "{\\v l}" }, "Ŀ": { text: "{\\fontencoding{LELA}\\selectfont\\char201}" }, "ŀ": { text: "{\\fontencoding{LELA}\\selectfont\\char202}" }, "Ł": { text: "{\\L}" }, "ł": { text: "{\\l}" }, "Ń": { text: "{\\'N}" }, "ń": { text: "{\\'n}" }, "Ņ": { text: "{\\c N}" }, "ņ": { text: "{\\c n}" }, "Ň": { text: "{\\v N}" }, "ň": { text: "{\\v n}" }, "ʼn": { text: "'n" }, "Ŋ": { text: "{\\NG}" }, "ŋ": { text: "{\\ng}" }, "Ō": { text: "{\\=O}" }, "ō": { text: "{\\=o}" }, "Ŏ": { text: "{\\u O}" }, "ŏ": { text: "{\\u o}" }, "Ő": { text: "{\\H O}" }, "ő": { text: "{\\H o}" }, "Œ": { text: "{\\OE}" }, "œ": { text: "{\\oe}" }, "Ŕ": { text: "{\\'R}" }, "ŕ": { text: "{\\'r}" }, "Ŗ": { text: "{\\c R}" }, "ŗ": { text: "{\\c r}" }, "Ř": { text: "{\\v R}" }, "ř": { text: "{\\v r}" }, "Ś": { text: "{\\'S}" }, "ś": { text: "{\\'s}" }, "Ŝ": { text: "{\\^S}" }, "ŝ": { text: "{\\^s}" }, "Ş": { text: "{\\c S}" }, "ş": { text: "{\\c s}" }, "Š": { text: "{\\v S}" }, "š": { text: "{\\v s}" }, "Ţ": { text: "{\\c T}" }, "ţ": { text: "{\\c t}" }, "Ť": { text: "{\\v T}" }, "ť": { text: "{\\v t}" }, "Ŧ": { text: "{\\fontencoding{LELA}\\selectfont\\char47}" }, "ŧ": { text: "{\\fontencoding{LELA}\\selectfont\\char63}" }, "Ũ": { text: "{\\~U}" }, "ũ": { text: "{\\~u}" }, "Ū": { text: "{\\=U}" }, "ū": { text: "{\\=u}" }, "Ŭ": { text: "{\\u U}" }, "ŭ": { text: "{\\u u}" }, "Ů": { text: "{\\r{U}}" }, "ů": { text: "{\\r{u}}" }, "Ű": { text: "{\\H U}" }, "ű": { text: "{\\H u}" }, "Ų": { text: "{\\k{U}}" }, "ų": { text: "{\\k{u}}" }, "Ŵ": { text: "{\\^W}" }, "ŵ": { text: "{\\^w}" }, "Ŷ": { text: "{\\^Y}" }, "ŷ": { text: "{\\^y}" }, "Ÿ": { text: "{\\\"Y}" }, "Ź": { text: "{\\'Z}" }, "ź": { text: "{\\'z}" }, "Ż": { text: "{\\.Z}" }, "ż": { text: "{\\.z}" }, "Ž": { text: "{\\v Z}" }, "ž": { text: "{\\v z}" }, "ſ": { text: "s" }, "ƒ": { math: "f" }, "ƕ": { text: "{\\texthvlig}" }, "ƞ": { text: "{\\textnrleg}" }, "ƪ": { text: "{\\textesh}" }, "Ƶ": { math: "\\Zbar" }, "ƺ": { text: "{\\fontencoding{LELA}\\selectfont\\char195}" }, "ǂ": { text: "{\\textdoublepipe}" }, "Ǎ": { text: "{\\v A}" }, "ǎ": { text: "{\\v a}" }, "Ǐ": { text: "{\\v I}" }, "ǐ": { text: "{\\v i}" }, "Ǒ": { text: "{\\v O}" }, "ǒ": { text: "{\\v o}" }, "Ǔ": { text: "{\\v U}" }, "ǔ": { text: "{\\v u}" }, "Ǧ": { text: "{\\v G}" }, "ǧ": { text: "{\\v g}" }, "Ǩ": { text: "{\\v K}" }, "ǩ": { text: "{\\v k}" }, "Ǫ": { text: "{\\k{O}}" }, "ǫ": { text: "{\\k{o}}" }, "ǰ": { text: "{\\v j}" }, "Ǵ": { text: "{\\'G}" }, "ǵ": { text: "{\\'g}" }, "Ȩ": { text: "{\\c E}" }, "ȩ": { text: "{\\c e}" }, "ȷ": { math: "\\jmath" }, "ɐ": { math: "\\Elztrna" }, "ɒ": { math: "\\Elztrnsa" }, "ɔ": { math: "\\Elzopeno" }, "ɖ": { math: "\\Elzrtld" }, "ɘ": { text: "{\\fontencoding{LEIP}\\selectfont\\char61}" }, "ə": { math: "\\Elzschwa" }, "ɛ": { math: "\\varepsilon" }, "ɡ": { text: "g" }, "ɣ": { math: "\\Elzpgamma" }, "ɤ": { math: "\\Elzpbgam" }, "ɥ": { math: "\\Elztrnh" }, "ɬ": { math: "\\Elzbtdl" }, "ɭ": { math: "\\Elzrtll" }, "ɯ": { math: "\\Elztrnm" }, "ɰ": { math: "\\Elztrnmlr" }, "ɱ": { math: "\\Elzltlmr" }, "ɲ": { text: "{\\Elzltln}" }, "ɳ": { math: "\\Elzrtln" }, "ɷ": { math: "\\Elzclomeg" }, "ɸ": { text: "{\\textphi}" }, "ɹ": { math: "\\Elztrnr" }, "ɺ": { math: "\\Elztrnrl" }, "ɻ": { math: "\\Elzrttrnr" }, "ɼ": { math: "\\Elzrl" }, "ɽ": { math: "\\Elzrtlr" }, "ɾ": { math: "\\Elzfhr" }, "ɿ": { text: "{\\fontencoding{LEIP}\\selectfont\\char202}" }, "ʂ": { math: "\\Elzrtls" }, "ʃ": { math: "\\Elzesh" }, "ʇ": { math: "\\Elztrnt" }, "ʈ": { math: "\\Elzrtlt" }, "ʊ": { math: "\\Elzpupsil" }, "ʋ": { math: "\\Elzpscrv" }, "ʌ": { math: "\\Elzinvv" }, "ʍ": { math: "\\Elzinvw" }, "ʎ": { math: "\\Elztrny" }, "ʐ": { math: "\\Elzrtlz" }, "ʒ": { math: "\\Elzyogh" }, "ʔ": { math: "\\Elzglst" }, "ʕ": { math: "\\Elzreglst" }, "ʖ": { math: "\\Elzinglst" }, "ʞ": { text: "{\\textturnk}" }, "ʤ": { math: "\\Elzdyogh" }, "ʧ": { math: "\\Elztesh" }, "ʰ": { math: "^{h}", text: "\\textsuperscript{h}" }, "ʲ": { math: "^{j}", text: "\\textsuperscript{j}" }, "ʳ": { math: "^{r}", text: "\\textsuperscript{r}" }, "ʷ": { math: "^{w}", text: "\\textsuperscript{w}" }, "ʸ": { math: "^{y}", text: "\\textsuperscript{y}" }, "ʹ": { text: "'" }, "ʻ": { text: "'" }, "ʼ": { text: "'" }, "ʽ": { text: "'" }, "ʿ": { text: "{\\lasp}", textpackages: [ "mathscinet" ] }, "ˆ": { text: "{\\textasciicircum}" }, "ˇ": { text: "{\\textasciicaron}" }, "ˈ": { math: "\\Elzverts" }, "ˉ": { text: "-" }, "ˌ": { math: "\\Elzverti" }, "ː": { math: "\\Elzlmrk" }, "ˑ": { math: "\\Elzhlmrk" }, "˒": { math: "\\Elzsbrhr" }, "˓": { math: "\\Elzsblhr" }, "˔": { math: "\\Elzrais" }, "˕": { math: "\\Elzlow" }, "˘": { text: "{\\textasciibreve}" }, "˙": { text: "{\\textperiodcentered}", textpackages: [ "textcomp" ] }, "˚": { text: "{\\r{}}" }, "˛": { text: "{\\k{}}" }, "˜": { text: "{\\texttildelow}" }, "˝": { text: "{\\H{}}" }, "ˡ": { math: "^{l}", text: "\\textsuperscript{l}" }, "ˢ": { math: "^{s}", text: "\\textsuperscript{s}" }, "ˣ": { math: "^{x}", text: "\\textsuperscript{x}" }, "˥": { text: "\\tone{55}" }, "˦": { text: "\\tone{44}" }, "˧": { text: "\\tone{33}" }, "˨": { text: "\\tone{22}" }, "˩": { text: "\\tone{11}" }, "̀": { math: "\\grave", combiningdiacritic: true, text: "\\`" }, "̀̄": { text: "{\\textgravemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̀": { text: "{\\textgravemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̀̇": { text: "{\\textgravedot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̀": { text: "{\\textgravedot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "́": { math: "\\acute", combiningdiacritic: true, text: "\\'" }, "́̄": { text: "{\\textacutemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄́": { text: "{\\textacutemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "́̌": { text: "{\\textacutewedge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̌́": { text: "{\\textacutewedge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̂": { math: "\\hat", combiningdiacritic: true, text: "\\^" }, "̂̇": { text: "{\\textcircumdot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̂": { text: "{\\textcircumdot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̃": { math: "\\tilde", combiningdiacritic: true, text: "\\~" }, "̃̇": { text: "{\\texttildedot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̃": { text: "{\\texttildedot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄": { math: "\\bar", combiningdiacritic: true, text: "\\=" }, "̅": { math: "\\overline", combiningdiacritic: true }, "̆": { math: "\\breve", combiningdiacritic: true, text: "{\\u}" }, "̆̄": { text: "{\\textbrevemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̆": { text: "{\\textbrevemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇": { math: "\\dot", combiningdiacritic: true, text: "\\." }, "̇́": { text: "{\\textdotacute}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "́̇": { text: "{\\textdotacute}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̆": { text: "{\\textdotbreve}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̆̇": { text: "{\\textdotbreve}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̈": { math: "\\ddot", combiningdiacritic: true, text: "\\\"" }, "̉": { math: "\\ovhook" }, "̊": { math: "\\mathring", combiningdiacritic: true, text: "{\\r}" }, "̊̄": { text: "{\\textringmacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̊": { text: "{\\textringmacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̋": { text: "{\\H}", combiningdiacritic: true }, "̌": { math: "\\check", text: "{\\v}", combiningdiacritic: true }, "̍": { text: "{\\textvbaraccent}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̎": { text: "{\\textdoublevbaraccent}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̏": { text: "{\\textdoublegrave}", combiningdiacritic: true }, "̐": { text: "{\\textdotbreve}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̑": { text: "{\\fontencoding{LECO}\\selectfont\\char177}" }, "̒": { math: "\\oturnedcomma" }, "̕": { math: "\\ocommatopright" }, "̖": { text: "{\\textsubgrave}", combiningdiacritic: true }, "̘": { text: "{\\textadvancing}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̙": { text: "{\\textretracting}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̚": { math: "\\droang", text: "{\\textcorner}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̜": { text: "{\\textsublhalfring}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̝": { text: "{\\textraising}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̞": { text: "{\\textlowering}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̟": { text: "{\\textsubplus}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̡": { math: "\\Elzpalh" }, "̢": { text: "{\\Elzrh}" }, "̣": { text: "{\\d}", combiningdiacritic: true }, "̤": { text: "{\\textsubumlaut}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̥": { text: "{\\textsubring}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̧": { text: "{\\c}", combiningdiacritic: true }, "̨": { text: "{\\k}", combiningdiacritic: true }, "̩": { text: "{\\textsyllabic}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̪": { math: "\\Elzsbbrg", text: "{\\textsubbridge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̫": { text: "{\\fontencoding{LECO}\\selectfont\\char203}" }, "̬": { text: "{\\textsubwedge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̯": { text: "{\\textsubarch}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̰": { math: "\\utilde", text: "{\\textsubtilde}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̱": { math: "\\underbar", combiningdiacritic: true, text: "{\\textsubbar}", textpackages: [ "tipa" ] }, "̲": { math: "\\underline" }, "̴": { text: "{\\textsuperimposetilde}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̵": { text: "{\\Elzxl}" }, "̶": { text: "{\\Elzbar}" }, "̷": { text: "{\\fontencoding{LECO}\\selectfont\\char215}" }, "̸": { math: "\\not" }, "̹": { text: "{\\textsubrhalfring}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̺": { text: "{\\textinvsubbridge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̻": { text: "{\\textsubsquare}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̼": { text: "{\\textseagull}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̽": { text: "{\\textovercross}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "͡": { text: "{\\fontencoding{LECO}\\selectfont\\char225}" }, "ʹ": { text: "'" }, "͵": { text: "," }, ";": { text: ";" }, "Ά": { text: "{\\'A}" }, "Έ": { text: "{\\'E}" }, "Ή": { text: "{\\'H}" }, "Ί": { text: "{\\'{}I}" }, "Ό": { text: "{\\'{}O}" }, "Ύ": { math: "\\mathrm{'Y}" }, "Ώ": { math: "\\mathrm{'\\Omega}" }, "ΐ": { math: "\\acute{\\ddot{\\iota}}" }, "Α": { math: "A" }, "Β": { math: "B" }, "Γ": { math: "\\Gamma" }, "Δ": { math: "\\Delta" }, "Ε": { math: "E" }, "Ζ": { math: "Z" }, "Η": { math: "H" }, "Θ": { math: "\\Theta" }, "Ι": { math: "I" }, "Κ": { math: "K" }, "Λ": { math: "\\Lambda" }, "Μ": { math: "M" }, "Ν": { math: "N" }, "Ξ": { math: "\\Xi" }, "Ο": { math: "O" }, "Π": { math: "\\Pi" }, "Ρ": { math: "P" }, "Σ": { math: "\\Sigma" }, "Τ": { math: "T" }, "Υ": { math: "\\Upsilon" }, "Φ": { math: "\\Phi" }, "Χ": { math: "X" }, "Ψ": { math: "\\Psi" }, "Ω": { math: "\\Omega" }, "Ϊ": { math: "\\mathrm{\\ddot{I}}" }, "Ϋ": { math: "\\mathrm{\\ddot{Y}}" }, "ά": { text: "{\\'$\\alpha$}" }, "έ": { math: "\\acute{\\epsilon}" }, "ή": { math: "\\acute{\\eta}" }, "ί": { math: "\\acute{\\iota}" }, "ΰ": { math: "\\acute{\\ddot{\\upsilon}}" }, "α": { math: "\\alpha" }, "β": { math: "\\beta" }, "γ": { math: "\\gamma" }, "δ": { math: "\\delta" }, "ε": { math: "\\epsilon" }, "ζ": { math: "\\zeta" }, "η": { math: "\\eta" }, "θ": { math: "\\theta", text: "{\\texttheta}" }, "ι": { math: "\\iota" }, "κ": { math: "\\kappa" }, "λ": { math: "\\lambda" }, "μ": { math: "\\mu" }, "ν": { math: "\\nu" }, "ξ": { math: "\\xi" }, "ο": { math: "o" }, "π": { math: "\\pi" }, "ρ": { math: "\\rho" }, "ς": { math: "\\varsigma" }, "σ": { math: "\\sigma" }, "τ": { math: "\\tau" }, "υ": { math: "\\upsilon" }, "φ": { math: "\\varphi" }, "χ": { math: "\\chi" }, "ψ": { math: "\\psi" }, "ω": { math: "\\omega" }, "ϊ": { math: "\\ddot{\\iota}" }, "ϋ": { math: "\\ddot{\\upsilon}" }, "ό": { text: "{\\'o}" }, "ύ": { math: "\\acute{\\upsilon}" }, "ώ": { math: "\\acute{\\omega}" }, "ϐ": { math: "\\varbeta", text: "\\Pisymbol{ppi022}{87}" }, "ϑ": { math: "\\vartheta", text: "{\\textvartheta}" }, "ϒ": { math: "\\Upsilon" }, "ϕ": { math: "\\phi" }, "ϖ": { math: "\\varpi" }, "Ϙ": { math: "\\Qoppa" }, "ϙ": { math: "\\qoppa" }, "Ϛ": { math: "\\Stigma" }, "ϛ": { math: "\\stigma" }, "Ϝ": { math: "\\Digamma" }, "ϝ": { math: "\\digamma" }, "Ϟ": { math: "\\Koppa" }, "ϟ": { math: "\\koppa" }, "Ϡ": { math: "\\Sampi" }, "ϡ": { math: "\\sampi" }, "ϰ": { math: "\\varkappa" }, "ϱ": { math: "\\varrho" }, "ϴ": { math: "\\upvarTheta", text: "{\\textTheta}" }, "ϵ": { math: "\\epsilon" }, "϶": { math: "\\backepsilon" }, "Ё": { text: "{\\cyrchar\\CYRYO}" }, "Ђ": { text: "{\\cyrchar\\CYRDJE}" }, "Ѓ": { text: "{\\cyrchar{\\'\\CYRG}}" }, "Є": { text: "{\\cyrchar\\CYRIE}" }, "Ѕ": { text: "{\\cyrchar\\CYRDZE}" }, "І": { text: "{\\cyrchar\\CYRII}" }, "Ї": { text: "{\\cyrchar\\CYRYI}" }, "Ј": { text: "{\\cyrchar\\CYRJE}" }, "Љ": { text: "{\\cyrchar\\CYRLJE}" }, "Њ": { text: "{\\cyrchar\\CYRNJE}" }, "Ћ": { text: "{\\cyrchar\\CYRTSHE}" }, "Ќ": { text: "{\\cyrchar{\\'\\CYRK}}" }, "Ў": { text: "{\\cyrchar\\CYRUSHRT}" }, "Џ": { text: "{\\cyrchar\\CYRDZHE}" }, "А": { text: "{\\cyrchar\\CYRA}" }, "Б": { text: "{\\cyrchar\\CYRB}" }, "В": { text: "{\\cyrchar\\CYRV}" }, "Г": { text: "{\\cyrchar\\CYRG}" }, "Д": { text: "{\\cyrchar\\CYRD}" }, "Е": { text: "{\\cyrchar\\CYRE}" }, "Ж": { text: "{\\cyrchar\\CYRZH}" }, "З": { text: "{\\cyrchar\\CYRZ}" }, "И": { text: "{\\cyrchar\\CYRI}" }, "Й": { text: "{\\cyrchar\\CYRISHRT}" }, "К": { text: "{\\cyrchar\\CYRK}" }, "Л": { text: "{\\cyrchar\\CYRL}" }, "М": { text: "{\\cyrchar\\CYRM}" }, "Н": { text: "{\\cyrchar\\CYRN}" }, "О": { text: "{\\cyrchar\\CYRO}" }, "П": { text: "{\\cyrchar\\CYRP}" }, "Р": { text: "{\\cyrchar\\CYRR}" }, "С": { text: "{\\cyrchar\\CYRS}" }, "Т": { text: "{\\cyrchar\\CYRT}" }, "У": { text: "{\\cyrchar\\CYRU}" }, "Ф": { text: "{\\cyrchar\\CYRF}" }, "Х": { text: "{\\cyrchar\\CYRH}" }, "Ц": { text: "{\\cyrchar\\CYRC}" }, "Ч": { text: "{\\cyrchar\\CYRCH}" }, "Ш": { text: "{\\cyrchar\\CYRSH}" }, "Щ": { text: "{\\cyrchar\\CYRSHCH}" }, "Ъ": { text: "{\\cyrchar\\CYRHRDSN}" }, "Ы": { text: "{\\cyrchar\\CYRERY}" }, "Ь": { text: "{\\cyrchar\\CYRSFTSN}" }, "Э": { text: "{\\cyrchar\\CYREREV}" }, "Ю": { text: "{\\cyrchar\\CYRYU}" }, "Я": { text: "{\\cyrchar\\CYRYA}" }, "а": { text: "{\\cyrchar\\cyra}" }, "б": { text: "{\\cyrchar\\cyrb}" }, "в": { text: "{\\cyrchar\\cyrv}" }, "г": { text: "{\\cyrchar\\cyrg}" }, "д": { text: "{\\cyrchar\\cyrd}" }, "е": { text: "{\\cyrchar\\cyre}" }, "ж": { text: "{\\cyrchar\\cyrzh}" }, "з": { text: "{\\cyrchar\\cyrz}" }, "и": { text: "{\\cyrchar\\cyri}" }, "й": { text: "{\\cyrchar\\cyrishrt}" }, "к": { text: "{\\cyrchar\\cyrk}" }, "л": { text: "{\\cyrchar\\cyrl}" }, "м": { text: "{\\cyrchar\\cyrm}" }, "н": { text: "{\\cyrchar\\cyrn}" }, "о": { text: "{\\cyrchar\\cyro}" }, "п": { text: "{\\cyrchar\\cyrp}" }, "р": { text: "{\\cyrchar\\cyrr}" }, "с": { text: "{\\cyrchar\\cyrs}" }, "т": { text: "{\\cyrchar\\cyrt}" }, "у": { text: "{\\cyrchar\\cyru}" }, "ф": { text: "{\\cyrchar\\cyrf}" }, "х": { text: "{\\cyrchar\\cyrh}" }, "ц": { text: "{\\cyrchar\\cyrc}" }, "ч": { text: "{\\cyrchar\\cyrch}" }, "ш": { text: "{\\cyrchar\\cyrsh}" }, "щ": { text: "{\\cyrchar\\cyrshch}" }, "ъ": { text: "{\\cyrchar\\cyrhrdsn}" }, "ы": { text: "{\\cyrchar\\cyrery}" }, "ь": { text: "{\\cyrchar\\cyrsftsn}" }, "э": { text: "{\\cyrchar\\cyrerev}" }, "ю": { text: "{\\cyrchar\\cyryu}" }, "я": { text: "{\\cyrchar\\cyrya}" }, "ё": { text: "{\\cyrchar\\cyryo}" }, "ђ": { text: "{\\cyrchar\\cyrdje}" }, "ѓ": { text: "{\\cyrchar{\\'\\cyrg}}" }, "є": { text: "{\\cyrchar\\cyrie}" }, "ѕ": { text: "{\\cyrchar\\cyrdze}" }, "і": { text: "{\\cyrchar\\cyrii}" }, "ї": { text: "{\\cyrchar\\cyryi}" }, "ј": { text: "{\\cyrchar\\cyrje}" }, "љ": { text: "{\\cyrchar\\cyrlje}" }, "њ": { text: "{\\cyrchar\\cyrnje}" }, "ћ": { text: "{\\cyrchar\\cyrtshe}" }, "ќ": { text: "{\\cyrchar{\\'\\cyrk}}" }, "ў": { text: "{\\cyrchar\\cyrushrt}" }, "џ": { text: "{\\cyrchar\\cyrdzhe}" }, "Ѡ": { text: "{\\cyrchar\\CYROMEGA}" }, "ѡ": { text: "{\\cyrchar\\cyromega}" }, "Ѣ": { text: "{\\cyrchar\\CYRYAT}" }, "Ѥ": { text: "{\\cyrchar\\CYRIOTE}" }, "ѥ": { text: "{\\cyrchar\\cyriote}" }, "Ѧ": { text: "{\\cyrchar\\CYRLYUS}" }, "ѧ": { text: "{\\cyrchar\\cyrlyus}" }, "Ѩ": { text: "{\\cyrchar\\CYRIOTLYUS}" }, "ѩ": { text: "{\\cyrchar\\cyriotlyus}" }, "Ѫ": { text: "{\\cyrchar\\CYRBYUS}" }, "Ѭ": { text: "{\\cyrchar\\CYRIOTBYUS}" }, "ѭ": { text: "{\\cyrchar\\cyriotbyus}" }, "Ѯ": { text: "{\\cyrchar\\CYRKSI}" }, "ѯ": { text: "{\\cyrchar\\cyrksi}" }, "Ѱ": { text: "{\\cyrchar\\CYRPSI}" }, "ѱ": { text: "{\\cyrchar\\cyrpsi}" }, "Ѳ": { text: "{\\cyrchar\\CYRFITA}" }, "Ѵ": { text: "{\\cyrchar\\CYRIZH}" }, "Ѹ": { text: "{\\cyrchar\\CYRUK}" }, "ѹ": { text: "{\\cyrchar\\cyruk}" }, "Ѻ": { text: "{\\cyrchar\\CYROMEGARND}" }, "ѻ": { text: "{\\cyrchar\\cyromegarnd}" }, "Ѽ": { text: "{\\cyrchar\\CYROMEGATITLO}" }, "ѽ": { text: "{\\cyrchar\\cyromegatitlo}" }, "Ѿ": { text: "{\\cyrchar\\CYROT}" }, "ѿ": { text: "{\\cyrchar\\cyrot}" }, "Ҁ": { text: "{\\cyrchar\\CYRKOPPA}" }, "ҁ": { text: "{\\cyrchar\\cyrkoppa}" }, "҂": { text: "{\\cyrchar\\cyrthousands}" }, "҈": { text: "{\\cyrchar\\cyrhundredthousands}" }, "҉": { text: "{\\cyrchar\\cyrmillions}" }, "Ҍ": { text: "{\\cyrchar\\CYRSEMISFTSN}" }, "ҍ": { text: "{\\cyrchar\\cyrsemisftsn}" }, "Ҏ": { text: "{\\cyrchar\\CYRRTICK}" }, "ҏ": { text: "{\\cyrchar\\cyrrtick}" }, "Ґ": { text: "{\\cyrchar\\CYRGUP}" }, "ґ": { text: "{\\cyrchar\\cyrgup}" }, "Ғ": { text: "{\\cyrchar\\CYRGHCRS}" }, "ғ": { text: "{\\cyrchar\\cyrghcrs}" }, "Ҕ": { text: "{\\cyrchar\\CYRGHK}" }, "ҕ": { text: "{\\cyrchar\\cyrghk}" }, "Җ": { text: "{\\cyrchar\\CYRZHDSC}" }, "җ": { text: "{\\cyrchar\\cyrzhdsc}" }, "Ҙ": { text: "{\\cyrchar\\CYRZDSC}" }, "ҙ": { text: "{\\cyrchar\\cyrzdsc}" }, "Қ": { text: "{\\cyrchar\\CYRKDSC}" }, "қ": { text: "{\\cyrchar\\cyrkdsc}" }, "Ҝ": { text: "{\\cyrchar\\CYRKVCRS}" }, "ҝ": { text: "{\\cyrchar\\cyrkvcrs}" }, "Ҟ": { text: "{\\cyrchar\\CYRKHCRS}" }, "ҟ": { text: "{\\cyrchar\\cyrkhcrs}" }, "Ҡ": { text: "{\\cyrchar\\CYRKBEAK}" }, "ҡ": { text: "{\\cyrchar\\cyrkbeak}" }, "Ң": { text: "{\\cyrchar\\CYRNDSC}" }, "ң": { text: "{\\cyrchar\\cyrndsc}" }, "Ҥ": { text: "{\\cyrchar\\CYRNG}" }, "ҥ": { text: "{\\cyrchar\\cyrng}" }, "Ҧ": { text: "{\\cyrchar\\CYRPHK}" }, "ҧ": { text: "{\\cyrchar\\cyrphk}" }, "Ҩ": { text: "{\\cyrchar\\CYRABHHA}" }, "ҩ": { text: "{\\cyrchar\\cyrabhha}" }, "Ҫ": { text: "{\\cyrchar\\CYRSDSC}" }, "ҫ": { text: "{\\cyrchar\\cyrsdsc}" }, "Ҭ": { text: "{\\cyrchar\\CYRTDSC}" }, "ҭ": { text: "{\\cyrchar\\cyrtdsc}" }, "Ү": { text: "{\\cyrchar\\CYRY}" }, "ү": { text: "{\\cyrchar\\cyry}" }, "Ұ": { text: "{\\cyrchar\\CYRYHCRS}" }, "ұ": { text: "{\\cyrchar\\cyryhcrs}" }, "Ҳ": { text: "{\\cyrchar\\CYRHDSC}" }, "ҳ": { text: "{\\cyrchar\\cyrhdsc}" }, "Ҵ": { text: "{\\cyrchar\\CYRTETSE}" }, "ҵ": { text: "{\\cyrchar\\cyrtetse}" }, "Ҷ": { text: "{\\cyrchar\\CYRCHRDSC}" }, "ҷ": { text: "{\\cyrchar\\cyrchrdsc}" }, "Ҹ": { text: "{\\cyrchar\\CYRCHVCRS}" }, "ҹ": { text: "{\\cyrchar\\cyrchvcrs}" }, "Һ": { text: "{\\cyrchar\\CYRSHHA}" }, "һ": { text: "{\\cyrchar\\cyrshha}" }, "Ҽ": { text: "{\\cyrchar\\CYRABHCH}" }, "ҽ": { text: "{\\cyrchar\\cyrabhch}" }, "Ҿ": { text: "{\\cyrchar\\CYRABHCHDSC}" }, "ҿ": { text: "{\\cyrchar\\cyrabhchdsc}" }, "Ӏ": { text: "{\\cyrchar\\CYRpalochka}" }, "Ӄ": { text: "{\\cyrchar\\CYRKHK}" }, "ӄ": { text: "{\\cyrchar\\cyrkhk}" }, "Ӈ": { text: "{\\cyrchar\\CYRNHK}" }, "ӈ": { text: "{\\cyrchar\\cyrnhk}" }, "Ӌ": { text: "{\\cyrchar\\CYRCHLDSC}" }, "ӌ": { text: "{\\cyrchar\\cyrchldsc}" }, "Ӕ": { text: "{\\cyrchar\\CYRAE}" }, "ӕ": { text: "{\\cyrchar\\cyrae}" }, "Ә": { text: "{\\cyrchar\\CYRSCHWA}" }, "ә": { text: "{\\cyrchar\\cyrschwa}" }, "Ӡ": { text: "{\\cyrchar\\CYRABHDZE}" }, "ӡ": { text: "{\\cyrchar\\cyrabhdze}" }, "Ө": { text: "{\\cyrchar\\CYROTLD}" }, "ө": { text: "{\\cyrchar\\cyrotld}" }, "ࡱ": { math: "\\\\backslash" }, "ᵃ": { math: "^{a}", text: "\\textsuperscript{a}" }, "ᵇ": { math: "^{b}", text: "\\textsuperscript{b}" }, "ᵈ": { math: "^{d}", text: "\\textsuperscript{d}" }, "ᵉ": { math: "^{e}", text: "\\textsuperscript{e}" }, "ᵍ": { math: "^{g}", text: "\\textsuperscript{g}" }, "ᵏ": { math: "^{k}", text: "\\textsuperscript{k}" }, "ᵐ": { math: "^{m}", text: "\\textsuperscript{m}" }, "ᵒ": { math: "^{o}", text: "\\textsuperscript{o}" }, "ᵖ": { math: "^{p}", text: "\\textsuperscript{p}" }, "ᵗ": { math: "^{t}", text: "\\textsuperscript{t}" }, "ᵘ": { math: "^{u}", text: "\\textsuperscript{u}" }, "ᵛ": { math: "^{v}", text: "\\textsuperscript{v}" }, "ᶜ": { math: "^{c}", text: "\\textsuperscript{c}" }, "ᶠ": { math: "^{f}", text: "\\textsuperscript{f}" }, "ᶻ": { math: "^{z}", text: "\\textsuperscript{z}" }, "Ḃ": { text: "{\\.B}" }, "ḃ": { text: "{\\.b}" }, "Ḅ": { text: "{\\d B}" }, "ḅ": { text: "{\\d b}" }, "Ḇ": { text: "{\\b B}" }, "ḇ": { text: "{\\b b}" }, "Ḋ": { text: "{\\.D}" }, "ḋ": { text: "{\\.d}" }, "Ḍ": { text: "{\\d D}" }, "ḍ": { text: "{\\d d}" }, "Ḏ": { text: "{\\b D}" }, "ḏ": { text: "{\\b d}" }, "Ḑ": { text: "{\\c D}" }, "ḑ": { text: "{\\c d}" }, "Ḝ": { text: "{\\c{\\u{E}}}" }, "ḝ": { text: "{\\c{\\u{e}}}" }, "Ḟ": { text: "{\\.F}" }, "ḟ": { text: "{\\.f}" }, "Ḡ": { text: "{\\=G}" }, "ḡ": { text: "{\\=g}" }, "Ḣ": { text: "{\\.H}" }, "ḣ": { text: "{\\.h}" }, "Ḥ": { text: "{\\d H}" }, "ḥ": { text: "{\\d h}" }, "Ḧ": { text: "{\\\"H}" }, "ḧ": { text: "{\\\"h}" }, "Ḩ": { text: "{\\c H}" }, "ḩ": { text: "{\\c h}" }, "Ḱ": { text: "{\\'K}" }, "ḱ": { text: "{\\'k}" }, "Ḳ": { text: "{\\d K}" }, "ḳ": { text: "{\\d k}" }, "Ḵ": { text: "{\\b K}" }, "ḵ": { text: "{\\b k}" }, "Ḷ": { text: "{\\d L}" }, "ḷ": { text: "{\\d l}" }, "Ḻ": { text: "{\\b L}" }, "ḻ": { text: "{\\b l}" }, "Ḿ": { text: "{\\'M}" }, "ḿ": { text: "{\\'m}" }, "Ṁ": { text: "{\\.M}" }, "ṁ": { text: "{\\.m}" }, "Ṃ": { text: "{\\d M}" }, "ṃ": { text: "{\\d m}" }, "Ṅ": { text: "{\\.N}" }, "ṅ": { text: "{\\.n}" }, "Ṇ": { text: "{\\d N}" }, "ṇ": { text: "{\\d n}" }, "Ṉ": { text: "{\\b N}" }, "ṉ": { text: "{\\b n}" }, "Ṕ": { text: "{\\'P}" }, "ṕ": { text: "{\\'p}" }, "Ṗ": { text: "{\\.P}" }, "ṗ": { text: "{\\.p}" }, "Ṙ": { text: "{\\.R}" }, "ṙ": { text: "{\\.r}" }, "Ṛ": { text: "{\\d R}" }, "ṛ": { text: "{\\d r}" }, "Ṟ": { text: "{\\b R}" }, "ṟ": { text: "{\\b r}" }, "Ṡ": { text: "{\\.S}" }, "ṡ": { text: "{\\.s}" }, "Ṣ": { text: "{\\d S}" }, "ṣ": { text: "{\\d s}" }, "Ṫ": { text: "{\\.T}" }, "ṫ": { text: "{\\.t}" }, "Ṭ": { text: "{\\d T}" }, "ṭ": { text: "{\\d t}" }, "Ṯ": { text: "{\\b T}" }, "ṯ": { text: "{\\b t}" }, "Ṽ": { text: "{\\~V}" }, "ṽ": { text: "{\\~v}" }, "Ṿ": { text: "{\\d V}" }, "ṿ": { text: "{\\d v}" }, "Ẁ": { text: "{\\`W}" }, "ẁ": { text: "{\\`w}" }, "Ẃ": { text: "{\\'W}" }, "ẃ": { text: "{\\'w}" }, "Ẅ": { text: "{\\\"W}" }, "ẅ": { text: "{\\\"w}" }, "Ẇ": { text: "{\\.W}" }, "ẇ": { text: "{\\.w}" }, "Ẉ": { text: "{\\d W}" }, "ẉ": { text: "{\\d w}" }, "Ẋ": { text: "{\\.X}" }, "ẋ": { text: "{\\.x}" }, "Ẍ": { text: "{\\\"X}" }, "ẍ": { text: "{\\\"x}" }, "Ẏ": { text: "{\\.Y}" }, "ẏ": { text: "{\\.y}" }, "Ẑ": { text: "{\\^Z}" }, "ẑ": { text: "{\\^z}" }, "Ẓ": { text: "{\\d Z}" }, "ẓ": { text: "{\\d z}" }, "Ẕ": { text: "{\\b Z}" }, "ẕ": { text: "{\\b z}" }, "ẖ": { text: "{\\b h}" }, "ẗ": { text: "{\\\"t}" }, "ẘ": { text: "{\\r{w}}" }, "ẙ": { text: "{\\r{y}}" }, "Ạ": { text: "{\\d A}" }, "ạ": { text: "{\\d a}" }, "Ẹ": { text: "{\\d E}" }, "ẹ": { text: "{\\d e}" }, "Ẽ": { text: "{\\~E}" }, "ẽ": { text: "{\\~e}" }, "Ị": { text: "{\\d I}" }, "ị": { text: "{\\d i}" }, "Ọ": { text: "{\\d O}" }, "ọ": { text: "{\\d o}" }, "Ụ": { text: "{\\d U}" }, "ụ": { text: "{\\d u}" }, "Ỳ": { text: "{\\`Y}" }, "ỳ": { text: "{\\`y}" }, "Ỵ": { text: "{\\d Y}" }, "ỵ": { text: "{\\d y}" }, "Ỹ": { text: "{\\~Y}" }, "ỹ": { text: "{\\~y}" }, " ": { text: " ", space: true }, " ": { math: "\\quad", space: true }, " ": { text: "\\hspace{0.6em}", space: true }, " ": { math: "\\quad", space: true, text: "\\hspace{1em}" }, " ": { text: "\\;", space: true }, " ": { text: "\\hspace{0.25em}", space: true }, " ": { text: "\\hspace{0.166em}", space: true }, " ": { text: "\\hphantom{0}", space: true }, " ": { text: "\\hphantom{,}", space: true }, " ": { text: "\\,", space: true }, " ": { math: "\\mkern1mu", space: true }, "​": { text: "{\\mbox}", space: true }, "‌": { text: "{\\aftergroup\\ignorespaces}" }, "‐": { text: "-" }, "‑": { text: "-" }, "‒": { text: "-" }, "–": { text: "{\\textendash}" }, "—": { text: "{\\textemdash}" }, "―": { math: "\\horizbar", text: "\\rule{1em}{1pt}" }, "‖": { math: "\\Vert" }, "‗": { math: "\\twolowline" }, "‘": { text: "`" }, "’": { text: "'" }, "‚": { text: "," }, "‛": { math: "\\Elzreapos" }, "“": { text: "``" }, "”": { text: "''" }, "„": { text: ",," }, "‟": { text: "{\\quotedblbase}" }, "†": { math: "\\dagger", text: "{\\textdagger}", textpackages: [ "textcomp" ] }, "‡": { math: "\\ddagger", text: "{\\textdaggerdbl}", textpackages: [ "textcomp" ] }, "•": { math: "\\bullet", text: "{\\textbullet}", textpackages: [ "textcomp" ] }, "‣": { text: ">" }, "․": { text: "." }, "‥": { math: "\\enleadertwodots", text: ".." }, "…": { math: "\\ldots", text: "{\\ldots}" }, "‧": { text: "-" }, " ": { text: " ", space: true }, "‰": { text: "{\\textperthousand}", textpackages: [ "textcomp" ] }, "‱": { text: "{\\textpertenthousand}", textpackages: [ "textcomp" ] }, "′": { math: "{'}" }, "″": { math: "{''}" }, "‴": { math: "{'''}" }, "‵": { math: "\\backprime" }, "‶": { math: "\\backdprime" }, "‷": { math: "\\backtrprime" }, "‸": { math: "\\caretinsert" }, "‹": { text: "{\\guilsinglleft}" }, "›": { text: "{\\guilsinglright}" }, "‼": { math: "\\Exclam" }, "‾": { text: "-" }, "⁃": { math: "\\hyphenbullet" }, "⁄": { math: "\\fracslash" }, "⁇": { math: "\\Question" }, "⁈": { text: "?!" }, "⁉": { text: "!?" }, "⁊": { text: "7" }, "⁐": { math: "\\closure" }, "⁗": { math: "''''" }, " ": { math: "\\:", space: true, text: "\\:" }, "⁠": { text: "{\\nolinebreak}" }, "⁰": { math: "^{0}" }, "ⁱ": { math: "^{i}", text: "\\textsuperscript{i}" }, "⁴": { math: "^{4}" }, "⁵": { math: "^{5}" }, "⁶": { math: "^{6}" }, "⁷": { math: "^{7}" }, "⁸": { math: "^{8}" }, "⁹": { math: "^{9}" }, "⁺": { math: "^{+}" }, "⁻": { math: "^{-}" }, "⁼": { math: "^{=}" }, "⁽": { math: "^{(}" }, "⁾": { math: "^{)}" }, "ⁿ": { math: "^{n}", text: "\\textsuperscript{n}" }, "₀": { math: "_{0}" }, "₁": { math: "_{1}" }, "₂": { math: "_{2}" }, "₃": { math: "_{3}" }, "₄": { math: "_{4}" }, "₅": { math: "_{5}" }, "₆": { math: "_{6}" }, "₇": { math: "_{7}" }, "₈": { math: "_{8}" }, "₉": { math: "_{9}" }, "₊": { math: "_{+}" }, "₋": { math: "_{-}" }, "₌": { math: "_{=}" }, "₍": { math: "_{(}" }, "₎": { math: "_{)}" }, "ₐ": { math: "_{a}", text: "\\textsubscript{a}" }, "ₑ": { math: "_{e}", text: "\\textsubscript{e}" }, "ₒ": { math: "_{o}", text: "\\textsubscript{o}" }, "ₓ": { math: "_{x}", text: "\\textsubscript{x}" }, "ₔ": { text: "\\textsubscript{\\textschwa}", textpackages: [ "tipa" ] }, "ₕ": { math: "_{h}", text: "\\textsubscript{h}" }, "ₖ": { math: "_{k}", text: "\\textsubscript{k}" }, "ₗ": { math: "_{l}", text: "\\textsubscript{l}" }, "ₘ": { math: "_{m}", text: "\\textsubscript{m}" }, "ₙ": { math: "_{n}", text: "\\textsubscript{n}" }, "ₚ": { math: "_{p}", text: "\\textsubscript{p}" }, "ₛ": { math: "_{s}", text: "\\textsubscript{s}" }, "ₜ": { math: "_{t}", text: "\\textsubscript{t}" }, "₧": { text: "\\ensuremath{\\Elzpes}" }, "€": { math: "\\euro", text: "{\\texteuro}" }, "⃐": { math: "\\lvec" }, "⃑": { math: "\\rightharpoonup", mathpackages: [ "amsmath", "amssymb" ] }, "⃒": { math: "\\vertoverlay" }, "⃖": { math: "\\LVec" }, "⃗": { math: "\\vec" }, "⃛": { math: "\\dddot" }, "⃜": { math: "\\ddddot" }, "⃝": { math: "\\enclosecircle" }, "⃞": { math: "\\enclosesquare" }, "⃟": { math: "\\enclosediamond" }, "⃡": { math: "\\overleftrightarrow" }, "⃤": { math: "\\enclosetriangle" }, "⃧": { math: "\\annuity" }, "⃨": { math: "\\threeunderdot" }, "⃩": { math: "\\widebridgeabove" }, "⃬": { math: "\\underrightharpoondown" }, "⃭": { math: "\\underleftharpoondown" }, "⃮": { math: "\\underleftarrow" }, "⃯": { math: "\\underrightarrow" }, "⃰": { math: "\\asteraccent" }, "℀": { text: "a/c" }, "℁": { text: "a/s" }, "ℂ": { math: "\\mathbb{C}" }, "℃": { text: "{\\textcelsius}" }, "℅": { text: "c/o" }, "℆": { text: "c/u" }, "ℇ": { math: "\\Euler" }, "℉": { text: "F" }, "ℊ": { math: "\\mathscr{g}" }, "ℋ": { math: "\\mathscr{H}" }, "ℌ": { math: "\\mathfrak{H}" }, "ℍ": { math: "\\mathbb{H}" }, "ℎ": { math: "\\Planckconst" }, "ℏ": { math: "\\hslash" }, "ℐ": { math: "\\mathscr{I}" }, "ℑ": { math: "\\mathfrak{I}" }, "ℒ": { math: "\\mathscr{L}" }, "ℓ": { math: "\\mathscr{l}" }, "ℕ": { math: "\\mathbb{N}" }, "№": { text: "{\\cyrchar\\textnumero}" }, "℗": { text: "{\\textcircledP}" }, "℘": { math: "\\wp" }, "ℙ": { math: "\\mathbb{P}" }, "ℚ": { math: "\\mathbb{Q}" }, "ℛ": { math: "\\mathscr{R}" }, "ℜ": { math: "\\mathfrak{R}" }, "ℝ": { math: "\\mathbb{R}" }, "℞": { math: "\\Elzxrat" }, "℠": { text: "{\\textservicemark}" }, "℡": { text: "TEL" }, "™": { text: "{\\texttrademark}", textpackages: [ "textcomp" ] }, "ℤ": { math: "\\mathbb{Z}" }, "Ω": { math: "\\Omega" }, "℧": { math: "\\mho" }, "ℨ": { math: "\\mathfrak{Z}" }, "℩": { text: "{\\textriota}" }, "K": { text: "K" }, "Å": { math: "\\Angstroem", text: "{\\AA}" }, "ℬ": { math: "\\mathscr{B}" }, "ℭ": { math: "\\mathfrak{C}" }, "℮": { text: "{\\textestimated}" }, "ℯ": { math: "\\mathscr{e}" }, "ℰ": { math: "\\mathscr{E}" }, "ℱ": { math: "\\mathscr{F}" }, "Ⅎ": { math: "\\Finv" }, "ℳ": { math: "\\mathscr{M}" }, "ℴ": { math: "\\mathscr{o}" }, "ℵ": { math: "\\aleph" }, "ℶ": { math: "\\beth" }, "ℷ": { math: "\\gimel" }, "ℸ": { math: "\\daleth" }, "ℼ": { math: "\\mathbb{\\pi}" }, "ℽ": { math: "\\mathbb{\\gamma}" }, "ℾ": { math: "\\mathbb{\\Gamma}" }, "ℿ": { math: "\\mathbb{\\Pi}" }, "⅀": { math: "\\mathbb{\\Sigma}" }, "⅁": { math: "\\Game" }, "⅂": { math: "\\sansLturned" }, "⅃": { math: "\\sansLmirrored" }, "⅄": { math: "\\Yup" }, "ⅅ": { math: "\\CapitalDifferentialD" }, "ⅆ": { math: "\\DifferentialD" }, "ⅇ": { math: "\\ExponetialE" }, "ⅈ": { math: "\\ComplexI" }, "ⅉ": { math: "\\ComplexJ" }, "⅊": { math: "\\PropertyLine" }, "⅋": { math: "\\invamp" }, "⅐": { math: "\\frac{1}{7}" }, "⅑": { math: "\\frac{1}{9}" }, "⅒": { math: "\\frac{1}{10}" }, "⅓": { math: "\\frac{1}{3}" }, "⅔": { math: "\\frac{2}{3}" }, "⅕": { math: "\\frac{1}{5}" }, "⅖": { math: "\\frac{2}{5}" }, "⅗": { math: "\\frac{3}{5}" }, "⅘": { math: "\\frac{4}{5}" }, "⅙": { math: "\\frac{1}{6}" }, "⅚": { math: "\\frac{5}{6}" }, "⅛": { math: "\\frac{1}{8}" }, "⅜": { math: "\\frac{3}{8}" }, "⅝": { math: "\\frac{5}{8}" }, "⅞": { math: "\\frac{7}{8}" }, "⅟": { math: "\\frac{1}" }, "Ⅰ": { text: "I" }, "Ⅱ": { text: "II" }, "Ⅲ": { text: "III" }, "Ⅳ": { text: "IV" }, "Ⅴ": { text: "V" }, "Ⅵ": { text: "VI" }, "Ⅶ": { text: "VII" }, "Ⅷ": { text: "VIII" }, "Ⅸ": { text: "IX" }, "Ⅹ": { text: "X" }, "Ⅺ": { text: "XI" }, "Ⅻ": { text: "XII" }, "Ⅼ": { text: "L" }, "Ⅽ": { text: "C" }, "Ⅾ": { text: "D" }, "Ⅿ": { text: "M" }, "ⅰ": { text: "i" }, "ⅱ": { text: "ii" }, "ⅲ": { text: "iii" }, "ⅳ": { text: "iv" }, "ⅴ": { text: "v" }, "ⅵ": { text: "vi" }, "ⅶ": { text: "vii" }, "ⅷ": { text: "viii" }, "ⅸ": { text: "ix" }, "ⅹ": { text: "x" }, "ⅺ": { text: "xi" }, "ⅻ": { text: "xii" }, "ⅼ": { text: "l" }, "ⅽ": { text: "c" }, "ⅾ": { text: "d" }, "ⅿ": { text: "m" }, "↉": { math: "\\frac{0}{3}" }, "←": { math: "\\leftarrow" }, "↑": { math: "\\uparrow" }, "→": { math: "\\rightarrow", text: "{\\textrightarrow}", textpackages: [ "textcomp" ] }, "↓": { math: "\\downarrow" }, "↔": { math: "\\leftrightarrow" }, "↕": { math: "\\updownarrow" }, "↖": { math: "\\nwarrow" }, "↗": { math: "\\nearrow" }, "↘": { math: "\\searrow" }, "↙": { math: "\\swarrow" }, "↚": { math: "\\nleftarrow" }, "↛": { math: "\\nrightarrow" }, "↜": { math: "\\arrowwaveleft" }, "↝": { math: "\\arrowwaveright" }, "↞": { math: "\\twoheadleftarrow" }, "↟": { math: "\\twoheaduparrow" }, "↠": { math: "\\twoheadrightarrow" }, "↡": { math: "\\twoheaddownarrow" }, "↢": { math: "\\leftarrowtail" }, "↣": { math: "\\rightarrowtail" }, "↤": { math: "\\mapsfrom" }, "↥": { math: "\\MapsUp" }, "↦": { math: "\\mapsto" }, "↧": { math: "\\MapsDown" }, "↨": { math: "\\updownarrowbar" }, "↩": { math: "\\hookleftarrow" }, "↪": { math: "\\hookrightarrow" }, "↫": { math: "\\looparrowleft" }, "↬": { math: "\\looparrowright" }, "↭": { math: "\\leftrightsquigarrow" }, "↮": { math: "\\nleftrightarrow" }, "↯": { math: "\\lightning" }, "↰": { math: "\\Lsh" }, "↱": { math: "\\Rsh" }, "↲": { math: "\\dlsh" }, "↳": { text: "\\reflectbox{\\carriagereturn}", textpackages: [ "graphics", "unicode-math" ] }, "↴": { math: "\\linefeed" }, "↵": { math: "\\carriagereturn" }, "↶": { math: "\\curvearrowleft" }, "↷": { math: "\\curvearrowright" }, "↸": { math: "\\barovernorthwestarrow" }, "↹": { math: "\\barleftarrowrightarrowba" }, "↺": { math: "\\circlearrowleft" }, "↻": { math: "\\circlearrowright" }, "↼": { math: "\\leftharpoonup" }, "↽": { math: "\\leftharpoondown" }, "↾": { math: "\\upharpoonright" }, "↿": { math: "\\upharpoonleft" }, "⇀": { math: "\\rightharpoonup", mathpackages: [ "amsmath", "amssymb" ] }, "⇁": { math: "\\rightharpoondown" }, "⇂": { math: "\\downharpoonright" }, "⇃": { math: "\\downharpoonleft" }, "⇄": { math: "\\rightleftarrows" }, "⇅": { math: "\\dblarrowupdown" }, "⇆": { math: "\\leftrightarrows" }, "⇇": { math: "\\leftleftarrows" }, "⇈": { math: "\\upuparrows" }, "⇉": { math: "\\rightrightarrows" }, "⇊": { math: "\\downdownarrows" }, "⇋": { math: "\\leftrightharpoons" }, "⇌": { math: "\\rightleftharpoons" }, "⇍": { math: "\\nLeftarrow" }, "⇎": { math: "\\nLeftrightarrow" }, "⇏": { math: "\\nRightarrow" }, "⇐": { math: "\\Leftarrow" }, "⇑": { math: "\\Uparrow" }, "⇒": { math: "\\Rightarrow" }, "⇓": { math: "\\Downarrow" }, "⇔": { math: "\\Leftrightarrow" }, "⇕": { math: "\\Updownarrow" }, "⇖": { math: "\\Nwarrow" }, "⇗": { math: "\\Nearrow" }, "⇘": { math: "\\Searrow" }, "⇙": { math: "\\Swarrow" }, "⇚": { math: "\\Lleftarrow" }, "⇛": { math: "\\Rrightarrow" }, "⇜": { math: "\\leftsquigarrow" }, "⇝": { math: "\\rightsquigarrow" }, "⇞": { math: "\\nHuparrow" }, "⇟": { math: "\\nHdownarrow" }, "⇠": { math: "\\dashleftarrow" }, "⇡": { math: "\\updasharrow" }, "⇢": { math: "\\dashrightarrow" }, "⇣": { math: "\\downdasharrow" }, "⇤": { math: "\\LeftArrowBar" }, "⇥": { math: "\\RightArrowBar" }, "⇦": { math: "\\leftwhitearrow" }, "⇧": { math: "\\upwhitearrow" }, "⇨": { math: "\\rightwhitearrow" }, "⇩": { math: "\\downwhitearrow" }, "⇪": { math: "\\whitearrowupfrombar" }, "⇴": { math: "\\circleonrightarrow" }, "⇵": { math: "\\DownArrowUpArrow" }, "⇶": { math: "\\rightthreearrows" }, "⇷": { math: "\\nvleftarrow" }, "⇸": { math: "\\pfun" }, "⇹": { math: "\\nvleftrightarrow" }, "⇺": { math: "\\nVleftarrow" }, "⇻": { math: "\\ffun" }, "⇼": { math: "\\nVleftrightarrow" }, "⇽": { math: "\\leftarrowtriangle" }, "⇾": { math: "\\rightarrowtriangle" }, "⇿": { math: "\\leftrightarrowtriangle" }, "∀": { math: "\\forall" }, "∁": { math: "\\complement" }, "∂": { math: "\\partial" }, "∃": { math: "\\exists" }, "∄": { math: "\\nexists" }, "∅": { math: "\\varnothing" }, "∆": { math: "\\increment" }, "∇": { math: "\\nabla" }, "∈": { math: "\\in" }, "∉": { math: "\\not\\in" }, "∊": { math: "\\smallin" }, "∋": { math: "\\ni" }, "∌": { math: "\\not\\ni" }, "∍": { math: "\\smallni" }, "∎": { math: "\\QED" }, "∏": { math: "\\prod" }, "∐": { math: "\\coprod" }, "∑": { math: "\\sum" }, "−": { math: "-", text: "-" }, "∓": { math: "\\mp" }, "∔": { math: "\\dotplus" }, "∕": { text: "/" }, "∖": { math: "\\setminus" }, "∗": { math: "{_\\ast}" }, "∘": { math: "\\circ" }, "∙": { math: "\\bullet" }, "√": { math: "\\surd" }, "∛": { math: "\\sqrt[3]" }, "∜": { math: "\\sqrt[4]" }, "∝": { math: "\\propto" }, "∞": { math: "\\infty" }, "∟": { math: "\\rightangle" }, "∠": { math: "\\angle" }, "∡": { math: "\\measuredangle" }, "∢": { math: "\\sphericalangle" }, "∣": { math: "\\mid" }, "∤": { math: "\\nmid" }, "∥": { math: "\\parallel" }, "∦": { math: "\\nparallel" }, "∧": { math: "\\wedge" }, "∨": { math: "\\vee" }, "∩": { math: "\\cap" }, "∪": { math: "\\cup" }, "∫": { math: "\\int" }, "∬": { math: "{\\int\\!\\int}" }, "∭": { math: "{\\int\\!\\int\\!\\int}" }, "∮": { math: "\\oint" }, "∯": { math: "\\surfintegral" }, "∰": { math: "\\volintegral" }, "∱": { math: "\\clwintegral" }, "∲": { math: "\\lcirclerightint", mathpackages: [ "MnSymbol" ] }, "∳": { math: "\\rcirclerightint", mathpackages: [ "MnSymbol" ] }, "∴": { math: "\\therefore" }, "∵": { math: "\\because" }, "∶": { math: ":" }, "∷": { math: "\\Colon" }, "∸": { math: "\\dotdiv", mathpackages: [ "mathabx" ] }, "∹": { math: "\\eqcolon" }, "∺": { math: "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}" }, "∻": { math: "\\homothetic" }, "∼": { math: "\\sim" }, "∽": { math: "\\backsim" }, "∾": { math: "\\lazysinv" }, "∿": { math: "\\AC" }, "≀": { math: "\\wr" }, "≁": { math: "\\not\\sim" }, "≂": { math: "\\texteqsim", mathpackages: [ "xecjk" ] }, "≂̸": { math: "\\NotEqualTilde" }, "≃": { math: "\\simeq" }, "≄": { math: "\\not\\simeq" }, "≅": { math: "\\cong" }, "≆": { math: "\\approxnotequal" }, "≇": { math: "\\not\\cong" }, "≈": { math: "\\approx" }, "≉": { math: "\\not\\approx" }, "≊": { math: "\\approxeq" }, "≋": { math: "\\tildetrpl" }, "≋̸": { math: "\\not\\apid" }, "≌": { math: "\\allequal" }, "≍": { math: "\\asymp" }, "≎": { math: "\\Bumpeq" }, "≎̸": { math: "\\NotHumpDownHump" }, "≏": { math: "\\bumpeq" }, "≏̸": { math: "\\NotHumpEqual" }, "≐": { math: "\\doteq" }, "≐̸": { math: "\\not\\doteq" }, "≑": { math: "\\doteqdot" }, "≒": { math: "\\fallingdotseq" }, "≓": { math: "\\risingdotseq" }, "≔": { math: "\\coloneq", text: ":=" }, "≕": { math: "=:" }, "≖": { math: "\\eqcirc" }, "≗": { math: "\\circeq" }, "≘": { math: "\\arceq" }, "≙": { math: "\\estimates" }, "≛": { math: "\\starequal" }, "≜": { math: "\\triangleq" }, "≝": { math: "\\eqdef" }, "≞": { math: "\\measeq" }, "≠": { math: "\\neq" }, "≡": { math: "\\equiv" }, "≢": { math: "\\not\\equiv" }, "≣": { math: "\\Equiv" }, "≤": { math: "\\leq" }, "≥": { math: "\\geq" }, "≦": { math: "\\leqq" }, "≧": { math: "\\geqq" }, "≨": { math: "\\lneqq" }, "≨︀": { math: "\\lvertneqq" }, "≩": { math: "\\gneqq" }, "≩︀": { math: "\\gvertneqq" }, "≪": { math: "\\ll" }, "≪̸": { math: "\\NotLessLess" }, "≫": { math: "\\gg" }, "≫̸": { math: "\\NotGreaterGreater" }, "≬": { math: "\\between" }, "≭": { math: "{\\not\\kern-0.3em\\times}" }, "≮": { math: "\\not<" }, "≯": { math: "\\not>" }, "≰": { math: "\\not\\leq" }, "≱": { math: "\\not\\geq" }, "≲": { math: "\\lessequivlnt" }, "≳": { math: "\\greaterequivlnt" }, "≶": { math: "\\lessgtr" }, "≷": { math: "\\gtrless" }, "≸": { math: "\\notlessgreater" }, "≹": { math: "\\notgreaterless" }, "≺": { math: "\\prec" }, "≻": { math: "\\succ" }, "≼": { math: "\\preccurlyeq" }, "≽": { math: "\\succcurlyeq" }, "≾": { math: "\\precapprox" }, "≾̸": { math: "\\NotPrecedesTilde" }, "≿": { math: "\\succapprox" }, "≿̸": { math: "\\NotSucceedsTilde" }, "⊀": { math: "\\not\\prec" }, "⊁": { math: "\\not\\succ" }, "⊂": { math: "\\subset" }, "⊃": { math: "\\supset" }, "⊄": { math: "\\not\\subset" }, "⊅": { math: "\\not\\supset" }, "⊆": { math: "\\subseteq" }, "⊇": { math: "\\supseteq" }, "⊈": { math: "\\not\\subseteq" }, "⊉": { math: "\\not\\supseteq" }, "⊊": { math: "\\subsetneq" }, "⊊︀": { math: "\\varsubsetneqq" }, "⊋": { math: "\\supsetneq" }, "⊋︀": { math: "\\varsupsetneq" }, "⊌": { math: "\\cupleftarrow" }, "⊍": { math: "\\cupdot" }, "⊎": { math: "\\uplus" }, "⊏": { math: "\\sqsubset" }, "⊏̸": { math: "\\NotSquareSubset" }, "⊐": { math: "\\sqsupset" }, "⊐̸": { math: "\\NotSquareSuperset" }, "⊑": { math: "\\sqsubseteq" }, "⊒": { math: "\\sqsupseteq" }, "⊓": { math: "\\sqcap" }, "⊔": { math: "\\sqcup" }, "⊕": { math: "\\oplus" }, "⊖": { math: "\\ominus" }, "⊗": { math: "\\otimes" }, "⊘": { math: "\\oslash" }, "⊙": { math: "\\odot" }, "⊚": { math: "\\circledcirc" }, "⊛": { math: "\\circledast" }, "⊜": { math: "\\circledequal" }, "⊝": { math: "\\circleddash" }, "⊞": { math: "\\boxplus" }, "⊟": { math: "\\boxminus" }, "⊠": { math: "\\boxtimes" }, "⊡": { math: "\\boxdot" }, "⊢": { math: "\\vdash" }, "⊣": { math: "\\dashv" }, "⊤": { math: "\\top" }, "⊥": { math: "\\perp" }, "⊦": { math: "\\assert" }, "⊧": { math: "\\truestate" }, "⊨": { math: "\\forcesextra" }, "⊩": { math: "\\Vdash" }, "⊪": { math: "\\Vvdash" }, "⊫": { math: "\\VDash" }, "⊬": { math: "\\nvdash" }, "⊭": { math: "\\nvDash" }, "⊮": { math: "\\nVdash" }, "⊯": { math: "\\nVDash" }, "⊰": { math: "\\prurel" }, "⊱": { math: "\\scurel" }, "⊲": { math: "\\vartriangleleft" }, "⊳": { math: "\\vartriangleright" }, "⊴": { math: "\\trianglelefteq" }, "⊵": { math: "\\trianglerighteq" }, "⊶": { math: "\\original" }, "⊷": { math: "\\image" }, "⊸": { math: "\\multimap" }, "⊹": { math: "\\hermitconjmatrix" }, "⊺": { math: "\\intercal" }, "⊻": { math: "\\veebar" }, "⊼": { math: "\\barwedge" }, "⊽": { math: "\\barvee" }, "⊾": { math: "\\rightanglearc" }, "⊿": { math: "\\varlrtriangle" }, "⋂": { math: "\\bigcap" }, "⋃": { math: "\\bigcup" }, "⋄": { math: "\\diamond" }, "⋅": { math: "\\cdot" }, "⋆": { math: "\\star" }, "⋇": { math: "\\divideontimes" }, "⋈": { math: "\\bowtie" }, "⋉": { math: "\\ltimes" }, "⋊": { math: "\\rtimes" }, "⋋": { math: "\\leftthreetimes" }, "⋌": { math: "\\rightthreetimes" }, "⋍": { math: "\\backsimeq" }, "⋎": { math: "\\curlyvee" }, "⋏": { math: "\\curlywedge" }, "⋐": { math: "\\Subset" }, "⋑": { math: "\\Supset" }, "⋒": { math: "\\Cap" }, "⋓": { math: "\\Cup" }, "⋔": { math: "\\pitchfork" }, "⋕": { math: "\\hash" }, "⋖": { math: "\\lessdot" }, "⋗": { math: "\\gtrdot" }, "⋘": { math: "\\verymuchless" }, "⋙": { math: "\\verymuchgreater" }, "⋚": { math: "\\lesseqgtr" }, "⋛": { math: "\\gtreqless" }, "⋜": { math: "\\eqless" }, "⋝": { math: "\\eqgtr" }, "⋞": { math: "\\curlyeqprec" }, "⋟": { math: "\\curlyeqsucc" }, "⋠": { math: "\\npreceq" }, "⋡": { math: "\\nsucceq" }, "⋢": { math: "\\not\\sqsubseteq" }, "⋣": { math: "\\not\\sqsupseteq" }, "⋤": { math: "\\sqsubsetneq" }, "⋥": { math: "\\Elzsqspne" }, "⋦": { math: "\\lnsim" }, "⋧": { math: "\\gnsim" }, "⋨": { math: "\\precedesnotsimilar" }, "⋩": { math: "\\succnsim" }, "⋪": { math: "\\ntriangleleft" }, "⋫": { math: "\\ntriangleright" }, "⋬": { math: "\\ntrianglelefteq" }, "⋭": { math: "\\ntrianglerighteq" }, "⋮": { math: "\\vdots" }, "⋯": { math: "\\cdots" }, "⋰": { math: "\\upslopeellipsis" }, "⋱": { math: "\\downslopeellipsis" }, "⋲": { math: "\\disin" }, "⋳": { math: "\\varisins" }, "⋴": { math: "\\isins" }, "⋵": { math: "\\isindot" }, "⋶": { math: "\\barin" }, "⋷": { math: "\\isinobar" }, "⋸": { math: "\\isinvb" }, "⋹": { math: "\\isinE" }, "⋺": { math: "\\nisd" }, "⋻": { math: "\\varnis" }, "⋼": { math: "\\nis" }, "⋽": { math: "\\varniobar" }, "⋾": { math: "\\niobar" }, "⋿": { math: "\\bagmember" }, "⌀": { math: "\\diameter" }, "⌂": { math: "\\house" }, "⌅": { math: "\\varbarwedge", text: "{\\barwedge}" }, "⌆": { math: "\\perspcorrespond" }, "⌈": { math: "\\lceil" }, "⌉": { math: "\\rceil" }, "⌊": { math: "\\lfloor" }, "⌋": { math: "\\rfloor" }, "⌐": { math: "\\invneg" }, "⌑": { math: "\\wasylozenge" }, "⌒": { math: "\\profline" }, "⌓": { math: "\\profsurf" }, "⌕": { math: "\\recorder" }, "⌖": { math: "{\\mathchar\"2208}" }, "⌗": { math: "\\viewdata" }, "⌙": { math: "\\turnednot" }, "⌜": { math: "\\ulcorner" }, "⌝": { math: "\\urcorner" }, "⌞": { math: "\\llcorner" }, "⌟": { math: "\\lrcorner" }, "⌠": { math: "\\inttop" }, "⌡": { math: "\\intbottom" }, "⌢": { math: "\\frown" }, "⌣": { math: "\\smile" }, "〈": { math: "\\langle" }, "〉": { math: "\\rangle" }, "⌬": { math: "\\varhexagonlrbonds" }, "⌲": { math: "\\conictaper" }, "⌶": { math: "\\topbot" }, "⌹": { math: "\\APLinv" }, "⌿": { math: "\\notslash" }, "⍀": { math: "\\notbackslash" }, "⍇": { math: "\\APLleftarrowbox" }, "⍈": { math: "\\APLrightarrowbox" }, "⍉": { math: "\\invdiameter" }, "⍐": { math: "\\APLuparrowbox" }, "⍓": { math: "\\APLboxupcaret" }, "⍗": { math: "\\APLdownarrowbox" }, "⍝": { math: "\\APLcomment" }, "⍞": { math: "\\APLinput" }, "⍟": { math: "\\APLlog" }, "⍰": { math: "\\APLboxquestion" }, "⍼": { math: "\\rangledownzigzagarrow" }, "⎔": { math: "\\hexagon" }, "⎛": { math: "\\lparenuend" }, "⎜": { math: "\\lparenextender" }, "⎝": { math: "\\lparenlend" }, "⎞": { math: "\\rparenuend" }, "⎟": { math: "\\rparenextender" }, "⎠": { math: "\\rparenlend" }, "⎡": { math: "\\lbrackuend" }, "⎢": { math: "\\lbrackextender" }, "⎣": { math: "\\Elzdlcorn" }, "⎤": { math: "\\rbrackuend" }, "⎥": { math: "\\rbrackextender" }, "⎦": { math: "\\rbracklend" }, "⎧": { math: "\\lbraceuend" }, "⎨": { math: "\\lbracemid" }, "⎩": { math: "\\lbracelend" }, "⎪": { math: "\\vbraceextender" }, "⎫": { math: "\\rbraceuend" }, "⎬": { math: "\\rbracemid" }, "⎭": { math: "\\rbracelend" }, "⎮": { math: "\\intextender" }, "⎯": { math: "\\harrowextender" }, "⎰": { math: "\\lmoustache" }, "⎱": { math: "\\rmoustache" }, "⎲": { math: "\\sumtop" }, "⎳": { math: "\\sumbottom" }, "⎴": { math: "\\overbracket" }, "⎵": { math: "\\underbracket" }, "⎶": { math: "\\bbrktbrk" }, "⎷": { math: "\\sqrtbottom" }, "⎸": { math: "\\lvboxline" }, "⎹": { math: "\\rvboxline" }, "⏎": { math: "\\varcarriagereturn" }, "⏜": { math: "\\overparen" }, "⏝": { math: "\\underparen" }, "⏞": { math: "\\overbrace" }, "⏟": { math: "\\underbrace" }, "⏠": { math: "\\obrbrak" }, "⏡": { math: "\\ubrbrak" }, "⏢": { math: "\\trapezium" }, "⏣": { math: "\\benzenr" }, "⏤": { math: "\\strns" }, "⏥": { math: "\\fltns" }, "⏦": { math: "\\accurrent" }, "⏧": { math: "\\elinters" }, "␀": { text: "NUL" }, "␁": { text: "SOH" }, "␂": { text: "STX" }, "␃": { text: "ETX" }, "␄": { text: "EOT" }, "␅": { text: "ENQ" }, "␆": { text: "ACK" }, "␇": { text: "BEL" }, "␈": { text: "BS" }, "␉": { text: "HT" }, "␊": { text: "LF" }, "␋": { text: "VT" }, "␌": { text: "FF" }, "␍": { text: "CR" }, "␎": { text: "SO" }, "␏": { text: "SI" }, "␐": { text: "DLE" }, "␑": { text: "DC1" }, "␒": { text: "DC2" }, "␓": { text: "DC3" }, "␔": { text: "DC4" }, "␕": { text: "NAK" }, "␖": { text: "SYN" }, "␗": { text: "ETB" }, "␘": { text: "CAN" }, "␙": { text: "EM" }, "␚": { text: "SUB" }, "␛": { text: "ESC" }, "␜": { text: "FS" }, "␝": { text: "GS" }, "␞": { text: "RS" }, "␟": { text: "US" }, "␠": { text: "SP" }, "␡": { text: "DEL" }, "␣": { text: "{\\textvisiblespace}" }, "␤": { text: "NL" }, "␥": { text: "///" }, "␦": { text: "?" }, "①": { text: "\\ding{172}" }, "②": { text: "\\ding{173}" }, "③": { text: "\\ding{174}" }, "④": { text: "\\ding{175}" }, "⑤": { text: "\\ding{176}" }, "⑥": { text: "\\ding{177}" }, "⑦": { text: "\\ding{178}" }, "⑧": { text: "\\ding{179}" }, "⑨": { text: "\\ding{180}" }, "⑩": { text: "\\ding{181}" }, "⑪": { text: "(11)" }, "⑫": { text: "(12)" }, "⑬": { text: "(13)" }, "⑭": { text: "(14)" }, "⑮": { text: "(15)" }, "⑯": { text: "(16)" }, "⑰": { text: "(17)" }, "⑱": { text: "(18)" }, "⑲": { text: "(19)" }, "⑳": { text: "(20)" }, "⑴": { text: "(1)" }, "⑵": { text: "(2)" }, "⑶": { text: "(3)" }, "⑷": { text: "(4)" }, "⑸": { text: "(5)" }, "⑹": { text: "(6)" }, "⑺": { text: "(7)" }, "⑻": { text: "(8)" }, "⑼": { text: "(9)" }, "⑽": { text: "(10)" }, "⑾": { text: "(11)" }, "⑿": { text: "(12)" }, "⒀": { text: "(13)" }, "⒁": { text: "(14)" }, "⒂": { text: "(15)" }, "⒃": { text: "(16)" }, "⒄": { text: "(17)" }, "⒅": { text: "(18)" }, "⒆": { text: "(19)" }, "⒇": { text: "(20)" }, "⒈": { text: "1." }, "⒉": { text: "2." }, "⒊": { text: "3." }, "⒋": { text: "4." }, "⒌": { text: "5." }, "⒍": { text: "6." }, "⒎": { text: "7." }, "⒏": { text: "8." }, "⒐": { text: "9." }, "⒑": { text: "10." }, "⒒": { text: "11." }, "⒓": { text: "12." }, "⒔": { text: "13." }, "⒕": { text: "14." }, "⒖": { text: "15." }, "⒗": { text: "16." }, "⒘": { text: "17." }, "⒙": { text: "18." }, "⒚": { text: "19." }, "⒛": { text: "20." }, "⒜": { text: "(a)" }, "⒝": { text: "(b)" }, "⒞": { text: "(c)" }, "⒟": { text: "(d)" }, "⒠": { text: "(e)" }, "⒡": { text: "(f)" }, "⒢": { text: "(g)" }, "⒣": { text: "(h)" }, "⒤": { text: "(i)" }, "⒥": { text: "(j)" }, "⒦": { text: "(k)" }, "⒧": { text: "(l)" }, "⒨": { text: "(m)" }, "⒩": { text: "(n)" }, "⒪": { text: "(o)" }, "⒫": { text: "(p)" }, "⒬": { text: "(q)" }, "⒭": { text: "(r)" }, "⒮": { text: "(s)" }, "⒯": { text: "(t)" }, "⒰": { text: "(u)" }, "⒱": { text: "(v)" }, "⒲": { text: "(w)" }, "⒳": { text: "(x)" }, "⒴": { text: "(y)" }, "⒵": { text: "(z)" }, "Ⓐ": { text: "(A)" }, "Ⓑ": { text: "(B)" }, "Ⓒ": { text: "(C)" }, "Ⓓ": { text: "(D)" }, "Ⓔ": { text: "(E)" }, "Ⓕ": { text: "(F)" }, "Ⓖ": { text: "(G)" }, "Ⓗ": { text: "(H)" }, "Ⓘ": { text: "(I)" }, "Ⓙ": { text: "(J)" }, "Ⓚ": { text: "(K)" }, "Ⓛ": { text: "(L)" }, "Ⓜ": { text: "(M)" }, "Ⓝ": { text: "(N)" }, "Ⓞ": { text: "(O)" }, "Ⓟ": { text: "(P)" }, "Ⓠ": { text: "(Q)" }, "Ⓡ": { text: "(R)" }, "Ⓢ": { math: "\\circledS" }, "Ⓣ": { text: "(T)" }, "Ⓤ": { text: "(U)" }, "Ⓥ": { text: "(V)" }, "Ⓦ": { text: "(W)" }, "Ⓧ": { text: "(X)" }, "Ⓨ": { text: "(Y)" }, "Ⓩ": { text: "(Z)" }, "ⓐ": { text: "(a)" }, "ⓑ": { text: "(b)" }, "ⓒ": { text: "(c)" }, "ⓓ": { text: "(d)" }, "ⓔ": { text: "(e)" }, "ⓕ": { text: "(f)" }, "ⓖ": { text: "(g)" }, "ⓗ": { text: "(h)" }, "ⓘ": { text: "(i)" }, "ⓙ": { text: "(j)" }, "ⓚ": { text: "(k)" }, "ⓛ": { text: "(l)" }, "ⓜ": { text: "(m)" }, "ⓝ": { text: "(n)" }, "ⓞ": { text: "(o)" }, "ⓟ": { text: "(p)" }, "ⓠ": { text: "(q)" }, "ⓡ": { text: "(r)" }, "ⓢ": { text: "(s)" }, "ⓣ": { text: "(t)" }, "ⓤ": { text: "(u)" }, "ⓥ": { text: "(v)" }, "ⓦ": { text: "(w)" }, "ⓧ": { text: "(x)" }, "ⓨ": { text: "(y)" }, "ⓩ": { text: "(z)" }, "⓪": { text: "(0)" }, "─": { text: "-" }, "━": { text: "=" }, "│": { text: "|" }, "┃": { text: "|" }, "┄": { text: "-" }, "┅": { text: "=" }, "┆": { math: "\\Elzdshfnc" }, "┇": { text: "|" }, "┈": { text: "-" }, "┉": { text: "=" }, "┊": { text: "|" }, "┋": { text: "|" }, "┌": { text: "+" }, "┍": { text: "+" }, "┎": { text: "+" }, "┏": { text: "+" }, "┐": { text: "+" }, "┑": { text: "+" }, "┒": { text: "+" }, "┓": { text: "+" }, "└": { text: "+" }, "┕": { text: "+" }, "┖": { text: "+" }, "┗": { text: "+" }, "┘": { text: "+" }, "┙": { math: "\\Elzsqfnw" }, "┚": { text: "+" }, "┛": { text: "+" }, "├": { text: "+" }, "┝": { text: "+" }, "┞": { text: "+" }, "┟": { text: "+" }, "┠": { text: "+" }, "┡": { text: "+" }, "┢": { text: "+" }, "┣": { text: "+" }, "┤": { text: "+" }, "┥": { text: "+" }, "┦": { text: "+" }, "┧": { text: "+" }, "┨": { text: "+" }, "┩": { text: "+" }, "┪": { text: "+" }, "┫": { text: "+" }, "┬": { text: "+" }, "┭": { text: "+" }, "┮": { text: "+" }, "┯": { text: "+" }, "┰": { text: "+" }, "┱": { text: "+" }, "┲": { text: "+" }, "┳": { text: "+" }, "┴": { text: "+" }, "┵": { text: "+" }, "┶": { text: "+" }, "┷": { text: "+" }, "┸": { text: "+" }, "┹": { text: "+" }, "┺": { text: "+" }, "┻": { text: "+" }, "┼": { text: "+" }, "┽": { text: "+" }, "┾": { text: "+" }, "┿": { text: "+" }, "╀": { text: "+" }, "╁": { text: "+" }, "╂": { text: "+" }, "╃": { text: "+" }, "╄": { text: "+" }, "╅": { text: "+" }, "╆": { text: "+" }, "╇": { text: "+" }, "╈": { text: "+" }, "╉": { text: "+" }, "╊": { text: "+" }, "╋": { text: "+" }, "╌": { text: "-" }, "╍": { text: "=" }, "╎": { text: "|" }, "╏": { text: "|" }, "═": { text: "=" }, "║": { text: "|" }, "╒": { text: "+" }, "╓": { text: "+" }, "╔": { text: "+" }, "╕": { text: "+" }, "╖": { text: "+" }, "╗": { text: "+" }, "╘": { text: "+" }, "╙": { text: "+" }, "╚": { text: "+" }, "╛": { text: "+" }, "╜": { text: "+" }, "╝": { text: "+" }, "╞": { text: "+" }, "╟": { text: "+" }, "╠": { text: "+" }, "╡": { text: "+" }, "╢": { text: "+" }, "╣": { text: "+" }, "╤": { text: "+" }, "╥": { text: "+" }, "╦": { text: "+" }, "╧": { text: "+" }, "╨": { text: "+" }, "╩": { text: "+" }, "╪": { text: "+" }, "╫": { text: "+" }, "╬": { text: "+" }, "╭": { text: "+" }, "╮": { text: "+" }, "╯": { text: "+" }, "╰": { text: "+" }, "╱": { math: "\\diagup" }, "╲": { text: "\\" }, "╳": { text: "X" }, "╼": { text: "-" }, "╽": { text: "|" }, "╾": { text: "-" }, "╿": { text: "|" }, "▀": { math: "\\blockuphalf" }, "▄": { math: "\\blocklowhalf" }, "█": { math: "\\blockfull" }, "▌": { math: "\\blocklefthalf" }, "▐": { math: "\\blockrighthalf" }, "░": { math: "\\blockqtrshaded" }, "▒": { math: "\\blockhalfshaded" }, "▓": { math: "\\blockthreeqtrshaded" }, "■": { math: "\\mdlgblksquare", text: "\\ding{110}" }, "□": { math: "\\square" }, "▢": { math: "\\squoval" }, "▣": { math: "\\blackinwhitesquare" }, "▤": { math: "\\squarehfill" }, "▥": { math: "\\squarevfill" }, "▦": { math: "\\squarehvfill" }, "▧": { math: "\\squarenwsefill" }, "▨": { math: "\\squareneswfill" }, "▩": { math: "\\squarecrossfill" }, "▪": { math: "\\blacksquare" }, "▫": { math: "\\smwhtsquare" }, "▬": { math: "\\hrectangleblack" }, "▭": { math: "\\fbox{~~}" }, "▮": { math: "\\vrectangleblack" }, "▯": { math: "\\Elzvrecto" }, "▰": { math: "\\parallelogramblack" }, "▲": { math: "\\bigblacktriangleup", text: "\\ding{115}" }, "△": { math: "\\bigtriangleup" }, "▴": { math: "\\blacktriangle" }, "▵": { math: "\\vartriangle" }, "▶": { math: "\\RHD" }, "▷": { math: "\\rhd" }, "▸": { math: "\\blacktriangleright" }, "▹": { math: "\\triangleright" }, "►": { math: "\\blackpointerright" }, "▻": { math: "\\whitepointerright" }, "▼": { math: "\\bigblacktriangledown", text: "\\ding{116}" }, "▽": { math: "\\bigtriangledown" }, "▾": { math: "\\blacktriangledown" }, "▿": { math: "\\triangledown" }, "◀": { math: "\\LHD" }, "◁": { math: "\\lhd" }, "◂": { math: "\\blacktriangleleft" }, "◃": { math: "\\triangleleft" }, "◄": { math: "\\blackpointerleft" }, "◅": { math: "\\whitepointerleft" }, "◆": { math: "\\Diamondblack", text: "\\ding{117}" }, "◇": { math: "\\Diamond" }, "◈": { math: "\\blackinwhitediamond" }, "◉": { math: "\\fisheye" }, "◊": { math: "\\lozenge" }, "○": { math: "\\bigcirc" }, "◌": { math: "\\dottedcircle" }, "◍": { math: "\\circlevertfill" }, "◎": { math: "\\bullseye" }, "●": { math: "\\CIRCLE", text: "\\ding{108}" }, "◐": { math: "\\Elzcirfl" }, "◑": { math: "\\Elzcirfr" }, "◒": { math: "\\Elzcirfb" }, "◓": { math: "\\circletophalfblack" }, "◔": { math: "\\circleurquadblack" }, "◕": { math: "\\blackcircleulquadwhite" }, "◖": { math: "\\LEFTCIRCLE" }, "◗": { math: "\\RIGHTCIRCLE", text: "\\ding{119}" }, "◘": { math: "\\Elzrvbull" }, "◙": { math: "\\inversewhitecircle" }, "◚": { math: "\\invwhiteupperhalfcircle" }, "◛": { math: "\\invwhitelowerhalfcircle" }, "◜": { math: "\\ularc" }, "◝": { math: "\\urarc" }, "◞": { math: "\\lrarc" }, "◟": { math: "\\llarc" }, "◠": { math: "\\topsemicircle" }, "◡": { math: "\\botsemicircle" }, "◢": { math: "\\lrblacktriangle" }, "◣": { math: "\\llblacktriangle" }, "◤": { math: "\\ulblacktriangle" }, "◥": { math: "\\urblacktriangle" }, "◦": { math: "\\smwhtcircle" }, "◧": { math: "\\Elzsqfl" }, "◨": { math: "\\Elzsqfr" }, "◩": { math: "\\squareulblack" }, "◪": { math: "\\Elzsqfse" }, "◫": { math: "\\boxbar" }, "◬": { math: "\\trianglecdot" }, "◭": { math: "\\triangleleftblack" }, "◮": { math: "\\trianglerightblack" }, "◯": { math: "\\bigcirc" }, "◰": { math: "\\squareulquad" }, "◱": { math: "\\squarellquad" }, "◲": { math: "\\squarelrquad" }, "◳": { math: "\\squareurquad" }, "◴": { math: "\\circleulquad" }, "◵": { math: "\\circlellquad" }, "◶": { math: "\\circlelrquad" }, "◷": { math: "\\circleurquad" }, "◸": { math: "\\ultriangle" }, "◹": { math: "\\urtriangle" }, "◺": { math: "\\lltriangle" }, "◻": { math: "\\square" }, "◼": { math: "\\blacksquare" }, "◽": { math: "\\mdsmwhtsquare" }, "◾": { math: "\\mdsmblksquare" }, "◿": { math: "\\lrtriangle" }, "★": { math: "\\bigstar", text: "\\ding{72}" }, "☆": { math: "\\bigwhitestar", text: "\\ding{73}" }, "☉": { math: "\\Sun" }, "☎": { text: "\\ding{37}" }, "☐": { math: "\\Square" }, "☑": { math: "\\CheckedBox" }, "☒": { math: "\\XBox" }, "☓": { text: "X" }, "☕": { math: "\\steaming" }, "☛": { text: "\\ding{42}" }, "☞": { math: "\\pointright", text: "\\ding{43}" }, "☠": { math: "\\skull" }, "☡": { math: "\\danger" }, "☢": { math: "\\radiation" }, "☣": { math: "\\biohazard" }, "☯": { math: "\\yinyang" }, "☹": { math: "\\frownie" }, "☺": { math: "\\smiley" }, "☻": { math: "\\blacksmiley" }, "☼": { math: "\\sun" }, "☽": { text: "{\\rightmoon}", textpackages: [ "wasysym" ] }, "☾": { text: "{\\leftmoon}", textpackages: [ "wasysym" ] }, "☿": { math: "\\mercury", text: "{\\mercury}" }, "♀": { math: "\\female", text: "{\\venus}" }, "♁": { math: "\\earth" }, "♂": { math: "\\male", text: "{\\male}" }, "♃": { math: "\\jupiter", text: "{\\jupiter}" }, "♄": { math: "\\saturn", text: "{\\saturn}" }, "♅": { math: "\\uranus", text: "{\\uranus}" }, "♆": { math: "\\neptune", text: "{\\neptune}" }, "♇": { math: "\\pluto", text: "{\\pluto}" }, "♈": { math: "\\aries", text: "{\\aries}" }, "♉": { math: "\\taurus", text: "{\\taurus}" }, "♊": { math: "\\gemini", text: "{\\gemini}" }, "♋": { math: "\\cancer", text: "{\\cancer}" }, "♌": { math: "\\leo", text: "{\\leo}" }, "♍": { math: "\\virgo", text: "{\\virgo}" }, "♎": { math: "\\libra", text: "{\\libra}" }, "♏": { math: "\\scorpio", text: "{\\scorpio}" }, "♐": { math: "\\sagittarius", text: "{\\sagittarius}" }, "♑": { math: "\\capricornus", text: "{\\capricornus}" }, "♒": { math: "\\aquarius", text: "{\\aquarius}" }, "♓": { math: "\\pisces", text: "{\\pisces}" }, "♠": { math: "\\spadesuit", text: "\\ding{171}" }, "♡": { math: "\\heartsuit" }, "♢": { math: "\\diamond" }, "♣": { math: "\\clubsuit", text: "\\ding{168}" }, "♤": { math: "\\varspadesuit" }, "♥": { math: "\\varheartsuit", text: "\\ding{170}" }, "♦": { math: "\\vardiamondsuit", text: "\\ding{169}" }, "♧": { math: "\\varclubsuit" }, "♩": { math: "\\quarternote", text: "{\\quarternote}" }, "♪": { math: "\\eighthnote", text: "{\\eighthnote}" }, "♫": { math: "\\twonotes" }, "♬": { math: "\\sixteenthnote" }, "♭": { math: "\\flat" }, "♮": { math: "\\natural" }, "♯": { math: "\\sharp" }, "♻": { math: "\\recycle" }, "♾": { math: "\\acidfree" }, "⚀": { math: "\\dicei" }, "⚁": { math: "\\diceii" }, "⚂": { math: "\\diceiii" }, "⚃": { math: "\\diceiv" }, "⚄": { math: "\\dicev" }, "⚅": { math: "\\dicevi" }, "⚆": { math: "\\circledrightdot" }, "⚇": { math: "\\circledtwodots" }, "⚈": { math: "\\blackcircledrightdot" }, "⚉": { math: "\\blackcircledtwodots" }, "⚓": { math: "\\anchor" }, "⚔": { math: "\\swords" }, "⚠": { math: "\\warning" }, "⚥": { math: "\\Hermaphrodite" }, "⚪": { math: "\\medcirc" }, "⚫": { math: "\\medbullet" }, "⚬": { math: "\\mdsmwhtcircle" }, "⚲": { math: "\\neuter" }, "✁": { text: "\\ding{33}" }, "✂": { text: "\\ding{34}" }, "✃": { text: "\\ding{35}" }, "✄": { text: "\\ding{36}" }, "✆": { text: "\\ding{38}" }, "✇": { text: "\\ding{39}" }, "✈": { text: "\\ding{40}" }, "✉": { text: "\\ding{41}" }, "✌": { text: "\\ding{44}" }, "✍": { text: "\\ding{45}" }, "✎": { math: "\\pencil", text: "\\ding{46}" }, "✏": { text: "\\ding{47}" }, "✐": { text: "\\ding{48}" }, "✑": { text: "\\ding{49}" }, "✒": { text: "\\ding{50}" }, "✓": { math: "\\checkmark", text: "\\ding{51}" }, "✔": { text: "\\ding{52}" }, "✕": { text: "\\ding{53}" }, "✖": { text: "\\ding{54}" }, "✗": { math: "\\ballotx", text: "\\ding{55}" }, "✘": { text: "\\ding{56}" }, "✙": { text: "\\ding{57}" }, "✚": { text: "\\ding{58}" }, "✛": { text: "\\ding{59}" }, "✜": { text: "\\ding{60}" }, "✝": { text: "\\ding{61}" }, "✞": { text: "\\ding{62}" }, "✟": { text: "\\ding{63}" }, "✠": { math: "\\maltese", text: "\\ding{64}" }, "✡": { text: "\\ding{65}" }, "✢": { text: "\\ding{66}" }, "✣": { text: "\\ding{67}" }, "✤": { text: "\\ding{68}" }, "✥": { text: "\\ding{69}" }, "✦": { text: "\\ding{70}" }, "✧": { text: "\\ding{71}" }, "✩": { text: "\\ding{73}" }, "✪": { math: "\\circledstar", text: "\\ding{74}" }, "✫": { text: "\\ding{75}" }, "✬": { text: "\\ding{76}" }, "✭": { text: "\\ding{77}" }, "✮": { text: "\\ding{78}" }, "✯": { text: "\\ding{79}" }, "✰": { text: "\\ding{80}" }, "✱": { text: "\\ding{81}" }, "✲": { text: "\\ding{82}" }, "✳": { text: "\\ding{83}" }, "✴": { text: "\\ding{84}" }, "✵": { text: "\\ding{85}" }, "✶": { math: "\\varstar", text: "\\ding{86}" }, "✷": { text: "\\ding{87}" }, "✸": { text: "\\ding{88}" }, "✹": { text: "\\ding{89}" }, "✺": { text: "\\ding{90}" }, "✻": { text: "\\ding{91}" }, "✼": { text: "\\ding{92}" }, "✽": { math: "\\dingasterisk", text: "\\ding{93}" }, "✾": { text: "\\ding{94}" }, "✿": { text: "\\ding{95}" }, "❀": { text: "\\ding{96}" }, "❁": { text: "\\ding{97}" }, "❂": { text: "\\ding{98}" }, "❃": { text: "\\ding{99}" }, "❄": { text: "\\ding{100}" }, "❅": { text: "\\ding{101}" }, "❆": { text: "\\ding{102}" }, "❇": { text: "\\ding{103}" }, "❈": { text: "\\ding{104}" }, "❉": { text: "\\ding{105}" }, "❊": { text: "\\ding{106}" }, "❋": { text: "\\ding{107}" }, "❍": { text: "\\ding{109}" }, "❏": { text: "\\ding{111}" }, "❐": { text: "\\ding{112}" }, "❑": { text: "\\ding{113}" }, "❒": { text: "\\ding{114}" }, "❖": { text: "\\ding{118}" }, "❘": { text: "\\ding{120}" }, "❙": { text: "\\ding{121}" }, "❚": { text: "\\ding{122}" }, "❛": { text: "\\ding{123}" }, "❜": { text: "\\ding{124}" }, "❝": { text: "\\ding{125}" }, "❞": { text: "\\ding{126}" }, "❡": { text: "\\ding{161}" }, "❢": { text: "\\ding{162}" }, "❣": { text: "\\ding{163}" }, "❤": { text: "\\ding{164}" }, "❥": { text: "\\ding{165}" }, "❦": { text: "\\ding{166}" }, "❧": { text: "\\ding{167}" }, "❲": { math: "\\lbrbrak" }, "❳": { math: "\\rbrbrak" }, "❶": { text: "\\ding{182}" }, "❷": { text: "\\ding{183}" }, "❸": { text: "\\ding{184}" }, "❹": { text: "\\ding{185}" }, "❺": { text: "\\ding{186}" }, "❻": { text: "\\ding{187}" }, "❼": { text: "\\ding{188}" }, "❽": { text: "\\ding{189}" }, "❾": { text: "\\ding{190}" }, "❿": { text: "\\ding{191}" }, "➀": { text: "\\ding{192}" }, "➁": { text: "\\ding{193}" }, "➂": { text: "\\ding{194}" }, "➃": { text: "\\ding{195}" }, "➄": { text: "\\ding{196}" }, "➅": { text: "\\ding{197}" }, "➆": { text: "\\ding{198}" }, "➇": { text: "\\ding{199}" }, "➈": { text: "\\ding{200}" }, "➉": { text: "\\ding{201}" }, "➊": { text: "\\ding{202}" }, "➋": { text: "\\ding{203}" }, "➌": { text: "\\ding{204}" }, "➍": { text: "\\ding{205}" }, "➎": { text: "\\ding{206}" }, "➏": { text: "\\ding{207}" }, "➐": { text: "\\ding{208}" }, "➑": { text: "\\ding{209}" }, "➒": { text: "\\ding{210}" }, "➓": { text: "\\ding{211}" }, "➔": { text: "\\ding{212}" }, "➘": { text: "\\ding{216}" }, "➙": { text: "\\ding{217}" }, "➚": { text: "\\ding{218}" }, "➛": { math: "\\draftingarrow", text: "\\ding{219}" }, "➜": { text: "\\ding{220}" }, "➝": { text: "\\ding{221}" }, "➞": { text: "\\ding{222}" }, "➟": { text: "\\ding{223}" }, "➠": { text: "\\ding{224}" }, "➡": { text: "\\ding{225}" }, "➢": { math: "\\arrowbullet", text: "\\ding{226}" }, "➣": { text: "\\ding{227}" }, "➤": { text: "\\ding{228}" }, "➥": { text: "\\ding{229}" }, "➦": { text: "\\ding{230}" }, "➧": { text: "\\ding{231}" }, "➨": { text: "\\ding{232}" }, "➩": { text: "\\ding{233}" }, "➪": { text: "\\ding{234}" }, "➫": { text: "\\ding{235}" }, "➬": { text: "\\ding{236}" }, "➭": { text: "\\ding{237}" }, "➮": { text: "\\ding{238}" }, "➯": { text: "\\ding{239}" }, "➱": { text: "\\ding{241}" }, "➲": { text: "\\ding{242}" }, "➳": { text: "\\ding{243}" }, "➴": { text: "\\ding{244}" }, "➵": { text: "\\ding{245}" }, "➶": { text: "\\ding{246}" }, "➷": { text: "\\ding{247}" }, "➸": { text: "\\ding{248}" }, "➹": { text: "\\ding{249}" }, "➺": { text: "\\ding{250}" }, "➻": { text: "\\ding{251}" }, "➼": { text: "\\ding{252}" }, "➽": { text: "\\ding{253}" }, "➾": { text: "\\ding{254}" }, "⟀": { math: "\\threedangle" }, "⟁": { math: "\\whiteinwhitetriangle" }, "⟂": { math: "\\perp" }, "⟃": { math: "\\subsetcirc" }, "⟄": { math: "\\supsetcirc" }, "⟅": { math: "\\Lbag" }, "⟆": { math: "\\Rbag" }, "⟇": { math: "\\veedot" }, "⟈": { math: "\\bsolhsub" }, "⟉": { math: "\\suphsol" }, "⟌": { math: "\\longdivision" }, "⟐": { math: "\\Diamonddot" }, "⟑": { math: "\\wedgedot" }, "⟒": { math: "\\upin" }, "⟓": { math: "\\pullback" }, "⟔": { math: "\\pushout" }, "⟕": { math: "\\leftouterjoin" }, "⟖": { math: "\\rightouterjoin" }, "⟗": { math: "\\fullouterjoin" }, "⟘": { math: "\\bigbot" }, "⟙": { math: "\\bigtop" }, "⟚": { math: "\\DashVDash" }, "⟛": { math: "\\dashVdash" }, "⟜": { math: "\\multimapinv" }, "⟝": { math: "\\vlongdash" }, "⟞": { math: "\\longdashv" }, "⟟": { math: "\\cirbot" }, "⟠": { math: "\\lozengeminus" }, "⟡": { math: "\\concavediamond" }, "⟢": { math: "\\concavediamondtickleft" }, "⟣": { math: "\\concavediamondtickright" }, "⟤": { math: "\\whitesquaretickleft" }, "⟥": { math: "\\whitesquaretickright" }, "⟦": { math: "\\llbracket" }, "⟧": { math: "\\rrbracket" }, "⟨": { math: "\\langle" }, "⟩": { math: "\\rangle" }, "⟪": { math: "\\lang" }, "⟫": { math: "\\rang" }, "⟬": { math: "\\Lbrbrak" }, "⟭": { math: "\\Rbrbrak" }, "⟮": { math: "\\lgroup" }, "⟯": { math: "\\rgroup" }, "⟰": { math: "\\UUparrow" }, "⟱": { math: "\\DDownarrow" }, "⟲": { math: "\\acwgapcirclearrow" }, "⟳": { math: "\\cwgapcirclearrow" }, "⟴": { math: "\\rightarrowonoplus" }, "⟵": { math: "\\longleftarrow" }, "⟶": { math: "\\longrightarrow" }, "⟷": { math: "\\longleftrightarrow" }, "⟸": { math: "\\Longleftarrow" }, "⟹": { math: "\\Longrightarrow" }, "⟺": { math: "\\Longleftrightarrow" }, "⟻": { math: "\\longmapsfrom" }, "⟼": { math: "\\longmapsto" }, "⟽": { math: "\\Longmapsfrom" }, "⟾": { math: "\\Longmapsto" }, "⟿": { math: "\\sim\\joinrel\\leadsto" }, "⤀": { math: "\\psur" }, "⤁": { math: "\\nVtwoheadrightarrow" }, "⤂": { math: "\\nvLeftarrow" }, "⤃": { math: "\\nvRightarrow" }, "⤄": { math: "\\nvLeftrightarrow" }, "⤆": { math: "\\Mapsfrom" }, "⤇": { math: "\\Mapsto" }, "⤈": { math: "\\downarrowbarred" }, "⤉": { math: "\\uparrowbarred" }, "⤊": { math: "\\Uuparrow" }, "⤋": { math: "\\Ddownarrow" }, "⤌": { math: "\\leftbkarrow" }, "⤍": { math: "\\rightbkarrow" }, "⤎": { math: "\\leftdbkarrow" }, "⤏": { math: "\\dbkarow" }, "⤐": { math: "\\drbkarow" }, "⤑": { math: "\\rightdotarrow" }, "⤒": { math: "\\UpArrowBar" }, "⤓": { math: "\\DownArrowBar" }, "⤔": { math: "\\pinj" }, "⤕": { math: "\\finj" }, "⤖": { math: "\\bij" }, "⤗": { math: "\\nvtwoheadrightarrowtail" }, "⤘": { math: "\\nVtwoheadrightarrowtail" }, "⤙": { math: "\\lefttail" }, "⤚": { math: "\\righttail" }, "⤛": { math: "\\leftdbltail" }, "⤜": { math: "\\rightdbltail" }, "⤝": { math: "\\diamondleftarrow" }, "⤞": { math: "\\rightarrowdiamond" }, "⤟": { math: "\\diamondleftarrowbar" }, "⤠": { math: "\\barrightarrowdiamond" }, "⤡": { math: "\\nwsearrow" }, "⤢": { math: "\\neswarrow" }, "⤫": { math: "\\rdiagovfdiag" }, "⤬": { math: "\\fdiagovrdiag" }, "⤭": { math: "\\seovnearrow" }, "⤮": { math: "\\neovsearrow" }, "⤯": { math: "\\fdiagovnearrow" }, "⤰": { math: "\\rdiagovsearrow" }, "⤱": { math: "\\neovnwarrow" }, "⤲": { math: "\\nwovnearrow" }, "⤴": { math: "\\uprightcurvearrow" }, "⤵": { math: "\\downrightcurvedarrow" }, "⤸": { math: "\\cwrightarcarrow" }, "⤹": { math: "\\acwleftarcarrow" }, "⤺": { math: "\\acwoverarcarrow" }, "⤻": { math: "\\acwunderarcarrow" }, "⤼": { math: "\\curvearrowrightminus" }, "⤽": { math: "\\curvearrowleftplus" }, "⤾": { math: "\\cwundercurvearrow" }, "⤿": { math: "\\ccwundercurvearrow" }, "⥀": { math: "\\Elolarr" }, "⥁": { math: "\\Elorarr" }, "⥂": { math: "\\ElzRlarr" }, "⥃": { math: "\\leftarrowshortrightarrow" }, "⥄": { math: "\\ElzrLarr" }, "⥅": { math: "\\rightarrowplus" }, "⥆": { math: "\\leftarrowplus" }, "⥇": { math: "\\Elzrarrx" }, "⥈": { math: "\\leftrightarrowcircle" }, "⥉": { math: "\\twoheaduparrowcircle" }, "⥊": { math: "\\leftrightharpoon" }, "⥋": { math: "\\rightleftharpoon" }, "⥌": { math: "\\updownharpoonrightleft" }, "⥍": { math: "\\updownharpoonleftright" }, "⥎": { math: "\\LeftRightVector" }, "⥏": { math: "\\RightUpDownVector" }, "⥐": { math: "\\DownLeftRightVector" }, "⥑": { math: "\\LeftUpDownVector" }, "⥒": { math: "\\LeftVectorBar" }, "⥓": { math: "\\RightVectorBar" }, "⥔": { math: "\\RightUpVectorBar" }, "⥕": { math: "\\RightDownVectorBar" }, "⥖": { math: "\\DownLeftVectorBar" }, "⥗": { math: "\\DownRightVectorBar" }, "⥘": { math: "\\LeftUpVectorBar" }, "⥙": { math: "\\LeftDownVectorBar" }, "⥚": { math: "\\LeftTeeVector" }, "⥛": { math: "\\RightTeeVector" }, "⥜": { math: "\\RightUpTeeVector" }, "⥝": { math: "\\RightDownTeeVector" }, "⥞": { math: "\\DownLeftTeeVector" }, "⥟": { math: "\\DownRightTeeVector" }, "⥠": { math: "\\LeftUpTeeVector" }, "⥡": { math: "\\LeftDownTeeVector" }, "⥢": { math: "\\leftleftharpoons" }, "⥣": { math: "\\upupharpoons" }, "⥤": { math: "\\rightrightharpoons" }, "⥥": { math: "\\downdownharpoons" }, "⥦": { math: "\\leftrightharpoonsup" }, "⥧": { math: "\\leftrightharpoonsdown" }, "⥨": { math: "\\rightleftharpoonsup" }, "⥩": { math: "\\rightleftharpoonsdown" }, "⥪": { math: "\\leftbarharpoon" }, "⥫": { math: "\\barleftharpoon" }, "⥬": { math: "\\rightbarharpoon" }, "⥭": { math: "\\barrightharpoon" }, "⥮": { math: "\\UpEquilibrium" }, "⥯": { math: "\\ReverseUpEquilibrium" }, "⥰": { math: "\\RoundImplies" }, "⥱": { math: "\\equalrightarrow" }, "⥲": { math: "\\similarrightarrow" }, "⥳": { math: "\\leftarrowsimilar" }, "⥴": { math: "\\rightarrowsimilar" }, "⥵": { math: "\\rightarrowapprox" }, "⥶": { math: "\\ltlarr" }, "⥷": { math: "\\leftarrowless" }, "⥸": { math: "\\gtrarr" }, "⥹": { math: "\\subrarr" }, "⥺": { math: "\\leftarrowsubset" }, "⥻": { math: "\\suplarr" }, "⥾": { math: "\\upfishtail" }, "⥿": { math: "\\downfishtail" }, "⦀": { math: "\\Elztfnc" }, "⦁": { math: "\\spot" }, "⦂": { math: "\\typecolon" }, "⦃": { math: "\\lBrace" }, "⦄": { math: "\\rBrace" }, "⦆": { math: "\\Elroang" }, "⦇": { math: "\\limg" }, "⦈": { math: "\\rimg" }, "⦉": { math: "\\lblot" }, "⦊": { math: "\\rblot" }, "⦋": { math: "\\lbrackubar" }, "⦌": { math: "\\rbrackubar" }, "⦍": { math: "\\lbrackultick" }, "⦎": { math: "\\rbracklrtick" }, "⦏": { math: "\\lbracklltick" }, "⦐": { math: "\\rbrackurtick" }, "⦑": { math: "\\langledot" }, "⦒": { math: "\\rangledot" }, "⦓": { math: "<\\kern-0.58em(" }, "⦕": { math: "\\Lparengtr" }, "⦖": { math: "\\Rparenless" }, "⦗": { math: "\\lblkbrbrak" }, "⦘": { math: "\\rblkbrbrak" }, "⦙": { math: "\\Elzddfnc" }, "⦚": { math: "\\vzigzag" }, "⦛": { math: "\\measuredangleleft" }, "⦜": { math: "\\Angle" }, "⦝": { math: "\\rightanglemdot" }, "⦞": { math: "\\angles" }, "⦟": { math: "\\angdnr" }, "⦠": { math: "\\Elzlpargt" }, "⦡": { math: "\\sphericalangleup" }, "⦢": { math: "\\turnangle" }, "⦣": { math: "\\revangle" }, "⦤": { math: "\\angleubar" }, "⦥": { math: "\\revangleubar" }, "⦦": { math: "\\wideangledown" }, "⦧": { math: "\\wideangleup" }, "⦨": { math: "\\measanglerutone" }, "⦩": { math: "\\measanglelutonw" }, "⦪": { math: "\\measanglerdtose" }, "⦫": { math: "\\measangleldtosw" }, "⦬": { math: "\\measangleurtone" }, "⦭": { math: "\\measangleultonw" }, "⦮": { math: "\\measangledrtose" }, "⦯": { math: "\\measangledltosw" }, "⦰": { math: "\\revemptyset" }, "⦱": { math: "\\emptysetobar" }, "⦲": { math: "\\emptysetocirc" }, "⦳": { math: "\\emptysetoarr" }, "⦴": { math: "\\emptysetoarrl" }, "⦷": { math: "\\circledparallel" }, "⦸": { math: "\\circledbslash" }, "⦹": { math: "\\operp" }, "⦺": { math: "\\obot" }, "⦻": { math: "\\olcross" }, "⦼": { math: "\\odotslashdot" }, "⦽": { math: "\\uparrowoncircle" }, "⦾": { math: "\\circledwhitebullet" }, "⦿": { math: "\\circledbullet" }, "⧀": { math: "\\circledless" }, "⧁": { math: "\\circledgtr" }, "⧂": { math: "\\cirscir" }, "⧃": { math: "\\cirE" }, "⧄": { math: "\\boxslash" }, "⧅": { math: "\\boxbslash" }, "⧆": { math: "\\boxast" }, "⧇": { math: "\\boxcircle" }, "⧈": { math: "\\boxbox" }, "⧉": { math: "\\boxonbox" }, "⧊": { math: "\\ElzLap" }, "⧋": { math: "\\Elzdefas" }, "⧌": { math: "\\triangles" }, "⧍": { math: "\\triangleserifs" }, "⧎": { math: "\\rtriltri" }, "⧏": { math: "\\LeftTriangleBar" }, "⧏̸": { math: "\\NotLeftTriangleBar" }, "⧐": { math: "\\RightTriangleBar" }, "⧐̸": { math: "\\NotRightTriangleBar" }, "⧑": { math: "\\lfbowtie" }, "⧒": { math: "\\rfbowtie" }, "⧓": { math: "\\fbowtie" }, "⧔": { math: "\\lftimes" }, "⧕": { math: "\\rftimes" }, "⧖": { math: "\\hourglass" }, "⧗": { math: "\\blackhourglass" }, "⧘": { math: "\\lvzigzag" }, "⧙": { math: "\\rvzigzag" }, "⧚": { math: "\\Lvzigzag" }, "⧛": { math: "\\Rvzigzag" }, "⧝": { math: "\\tieinfty" }, "⧞": { math: "\\nvinfty" }, "⧟": { math: "\\multimapboth" }, "⧠": { math: "\\laplac" }, "⧡": { math: "\\lrtriangleeq" }, "⧢": { math: "\\shuffle" }, "⧣": { math: "\\eparsl" }, "⧤": { math: "\\smeparsl" }, "⧥": { math: "\\eqvparsl" }, "⧦": { math: "\\gleichstark" }, "⧧": { math: "\\thermod" }, "⧨": { math: "\\downtriangleleftblack" }, "⧩": { math: "\\downtrianglerightblack" }, "⧪": { math: "\\blackdiamonddownarrow" }, "⧫": { math: "\\blacklozenge" }, "⧬": { math: "\\circledownarrow" }, "⧭": { math: "\\blackcircledownarrow" }, "⧮": { math: "\\errbarsquare" }, "⧯": { math: "\\errbarblacksquare" }, "⧰": { math: "\\errbardiamond" }, "⧱": { math: "\\errbarblackdiamond" }, "⧲": { math: "\\errbarcircle" }, "⧳": { math: "\\errbarblackcircle" }, "⧴": { math: "\\RuleDelayed" }, "⧵": { math: "\\setminus" }, "⧶": { math: "\\dsol" }, "⧷": { math: "\\rsolbar" }, "⧸": { math: "\\xsol" }, "⧹": { math: "\\zhide" }, "⧺": { math: "\\doubleplus" }, "⧻": { math: "\\tripleplus" }, "⧼": { math: "\\lcurvyangle" }, "⧽": { math: "\\rcurvyangle" }, "⧾": { math: "\\tplus" }, "⧿": { math: "\\tminus" }, "⨀": { math: "\\bigodot" }, "⨁": { math: "\\bigoplus" }, "⨂": { math: "\\bigotimes" }, "⨃": { math: "\\bigcupdot" }, "⨄": { math: "\\Elxuplus" }, "⨅": { math: "\\ElzThr" }, "⨆": { math: "\\Elxsqcup" }, "⨇": { math: "\\ElzInf" }, "⨈": { math: "\\ElzSup" }, "⨉": { math: "\\varprod" }, "⨊": { math: "\\modtwosum" }, "⨋": { math: "\\sumint" }, "⨌": { math: "\\iiiint" }, "⨍": { math: "\\ElzCint" }, "⨎": { math: "\\intBar" }, "⨏": { math: "\\clockoint" }, "⨑": { math: "\\awint" }, "⨒": { math: "\\rppolint" }, "⨓": { math: "\\scpolint" }, "⨔": { math: "\\npolint" }, "⨕": { math: "\\pointint" }, "⨖": { math: "\\sqrint" }, "⨗": { math: "\\intlarhk" }, "⨘": { math: "\\intx" }, "⨙": { math: "\\intcap" }, "⨚": { math: "\\intcup" }, "⨛": { math: "\\upint" }, "⨜": { math: "\\lowint" }, "⨝": { math: "\\Join" }, "⨞": { math: "\\bigtriangleleft" }, "⨟": { math: "\\zcmp" }, "⨠": { math: "\\zpipe" }, "⨡": { math: "\\zproject" }, "⨢": { math: "\\ringplus" }, "⨣": { math: "\\plushat" }, "⨤": { math: "\\simplus" }, "⨦": { math: "\\plussim" }, "⨧": { math: "\\plussubtwo" }, "⨨": { math: "\\plustrif" }, "⨩": { math: "\\commaminus" }, "⨫": { math: "\\minusfdots" }, "⨬": { math: "\\minusrdots" }, "⨯": { math: "\\ElzTimes" }, "⨰": { math: "\\dottimes" }, "⨱": { math: "\\timesbar" }, "⨲": { math: "\\btimes" }, "⨳": { math: "\\smashtimes" }, "⨶": { math: "\\otimeshat" }, "⨷": { math: "\\Otimes" }, "⨸": { math: "\\odiv" }, "⨹": { math: "\\triangleplus" }, "⨺": { math: "\\triangleminus" }, "⨻": { math: "\\triangletimes" }, "⨽": { math: "\\intprodr" }, "⨾": { math: "\\fcmp" }, "⨿": { math: "\\amalg" }, "⩀": { math: "\\capdot" }, "⩁": { math: "\\uminus" }, "⩂": { math: "\\barcup" }, "⩃": { math: "\\barcap" }, "⩄": { math: "\\capwedge" }, "⩅": { math: "\\cupvee" }, "⩆": { math: "\\cupovercap" }, "⩇": { math: "\\capovercup" }, "⩈": { math: "\\cupbarcap" }, "⩉": { math: "\\capbarcup" }, "⩊": { math: "\\twocups" }, "⩋": { math: "\\twocaps" }, "⩌": { math: "\\closedvarcup" }, "⩍": { math: "\\closedvarcap" }, "⩎": { math: "\\Sqcap" }, "⩏": { math: "\\Sqcup" }, "⩐": { math: "\\closedvarcupsmashprod" }, "⩑": { math: "\\wedgeodot" }, "⩒": { math: "\\veeodot" }, "⩓": { math: "\\ElzAnd" }, "⩔": { math: "\\ElzOr" }, "⩖": { math: "\\ElOr" }, "⩗": { math: "\\bigslopedvee" }, "⩘": { math: "\\bigslopedwedge" }, "⩙": { math: "\\veeonwedge" }, "⩚": { math: "\\wedgemidvert" }, "⩛": { math: "\\veemidvert" }, "⩜": { math: "\\midbarwedge" }, "⩝": { math: "\\midbarvee" }, "⩞": { math: "\\perspcorrespond" }, "⩟": { math: "\\Elzminhat" }, "⩠": { math: "\\wedgedoublebar" }, "⩡": { math: "\\varveebar" }, "⩢": { math: "\\doublebarvee" }, "⩤": { math: "\\dsub" }, "⩥": { math: "\\rsub" }, "⩦": { math: "\\eqdot" }, "⩧": { math: "\\dotequiv" }, "⩨": { math: "\\equivVert" }, "⩩": { math: "\\equivVvert" }, "⩪": { math: "\\dotsim" }, "⩫": { math: "\\simrdots" }, "⩬": { math: "\\simminussim" }, "⩭": { math: "\\congdot" }, "⩮": { math: "\\stackrel{*}{=}" }, "⩯": { math: "\\hatapprox" }, "⩰": { math: "\\approxeqq" }, "⩱": { math: "\\eqqplus" }, "⩲": { math: "\\pluseqq" }, "⩳": { math: "\\eqqsim" }, "⩴": { math: "\\Coloneqq" }, "⩵": { math: "\\Equal" }, "⩶": { math: "\\Same" }, "⩷": { math: "\\ddotseq" }, "⩸": { math: "\\equivDD" }, "⩹": { math: "\\ltcir" }, "⩺": { math: "\\gtcir" }, "⩻": { math: "\\ltquest" }, "⩼": { math: "\\gtquest" }, "⩽": { math: "\\leqslant", mathpackages: [ "amssymb" ] }, "⩽̸": { math: "\\nleqslant", mathpackages: [ "amssymb" ] }, "⩾": { math: "\\geqslant", mathpackages: [ "amssymb" ] }, "⩾̸": { math: "\\ngeqslant", mathpackages: [ "amssymb" ] }, "⩿": { math: "\\lesdot" }, "⪀": { math: "\\gesdot" }, "⪁": { math: "\\lesdoto" }, "⪂": { math: "\\gesdoto" }, "⪃": { math: "\\lesdotor" }, "⪄": { math: "\\gesdotol" }, "⪅": { math: "\\lessapprox" }, "⪆": { math: "\\gtrapprox" }, "⪇": { math: "\\lneq" }, "⪈": { math: "\\gneq" }, "⪉": { math: "\\lnapprox" }, "⪊": { math: "\\gnapprox" }, "⪋": { math: "\\lesseqqgtr" }, "⪌": { math: "\\gtreqqless" }, "⪍": { math: "\\lsime" }, "⪎": { math: "\\gsime" }, "⪏": { math: "\\lsimg" }, "⪐": { math: "\\gsiml" }, "⪑": { math: "\\lgE" }, "⪒": { math: "\\glE" }, "⪓": { math: "\\lesges" }, "⪔": { math: "\\gesles" }, "⪕": { math: "\\eqslantless" }, "⪖": { math: "\\eqslantgtr" }, "⪗": { math: "\\elsdot" }, "⪘": { math: "\\egsdot" }, "⪙": { math: "\\eqqless" }, "⪚": { math: "\\eqqgtr" }, "⪛": { math: "\\eqqslantless" }, "⪜": { math: "\\eqqslantgtr" }, "⪝": { math: "\\Pisymbol{ppi020}{117}" }, "⪞": { math: "\\Pisymbol{ppi020}{105}" }, "⪟": { math: "\\simlE" }, "⪠": { math: "\\simgE" }, "⪡": { math: "\\NestedLessLess" }, "⪡̸": { math: "\\NotNestedLessLess" }, "⪢": { math: "\\NestedGreaterGreater" }, "⪢̸": { math: "\\NotNestedGreaterGreater" }, "⪣": { math: "\\partialmeetcontraction" }, "⪤": { math: "\\glj" }, "⪥": { math: "\\gla" }, "⪦": { math: "\\leftslice" }, "⪧": { math: "\\rightslice" }, "⪨": { math: "\\lescc" }, "⪩": { math: "\\gescc" }, "⪪": { math: "\\smt" }, "⪫": { math: "\\lat" }, "⪬": { math: "\\smte" }, "⪭": { math: "\\late" }, "⪮": { math: "\\bumpeqq" }, "⪯": { math: "\\preceq" }, "⪯̸": { math: "\\not\\preceq" }, "⪰": { math: "\\succeq" }, "⪰̸": { math: "\\not\\succeq" }, "⪱": { math: "\\precneq" }, "⪲": { math: "\\succneq" }, "⪳": { math: "\\preceqq" }, "⪴": { math: "\\succeqq" }, "⪵": { math: "\\precneqq" }, "⪶": { math: "\\succneqq" }, "⪷": { math: "\\precapprox" }, "⪸": { math: "\\succapprox" }, "⪹": { math: "\\precnapprox" }, "⪺": { math: "\\succnapprox" }, "⪻": { math: "\\llcurly" }, "⪼": { math: "\\ggcurly" }, "⪽": { math: "\\subsetdot" }, "⪾": { math: "\\supsetdot" }, "⪿": { math: "\\subsetplus" }, "⫀": { math: "\\supsetplus" }, "⫁": { math: "\\submult" }, "⫂": { math: "\\supmult" }, "⫃": { math: "\\subedot" }, "⫄": { math: "\\supedot" }, "⫅": { math: "\\subseteqq" }, "⫅̸": { math: "\\nsubseteqq" }, "⫆": { math: "\\supseteqq" }, "⫆̸": { math: "\\nsupseteqq" }, "⫇": { math: "\\subsim" }, "⫈": { math: "\\supsim" }, "⫉": { math: "\\subsetapprox" }, "⫊": { math: "\\supsetapprox" }, "⫋": { math: "\\subsetneqq" }, "⫌": { math: "\\supsetneqq" }, "⫍": { math: "\\lsqhook" }, "⫎": { math: "\\rsqhook" }, "⫏": { math: "\\csub" }, "⫐": { math: "\\csup" }, "⫑": { math: "\\csube" }, "⫒": { math: "\\csupe" }, "⫓": { math: "\\subsup" }, "⫔": { math: "\\supsub" }, "⫕": { math: "\\subsub" }, "⫖": { math: "\\supsup" }, "⫗": { math: "\\suphsub" }, "⫘": { math: "\\supdsub" }, "⫙": { math: "\\forkv" }, "⫚": { math: "\\topfork" }, "⫛": { math: "\\mlcp" }, "⫝̸": { math: "\\forks" }, "⫝": { math: "\\forksnot" }, "⫝̸": { math: "\\forks" }, "⫞": { math: "\\shortlefttack" }, "⫟": { math: "\\shortdowntack" }, "⫠": { math: "\\shortuptack" }, "⫡": { math: "\\perps" }, "⫢": { math: "\\vDdash" }, "⫣": { math: "\\dashV" }, "⫤": { math: "\\Dashv" }, "⫥": { math: "\\DashV" }, "⫦": { math: "\\varVdash" }, "⫧": { math: "\\Barv" }, "⫨": { math: "\\vBar" }, "⫩": { math: "\\vBarv" }, "⫪": { math: "\\Top" }, "⫬": { math: "\\Not" }, "⫭": { math: "\\bNot" }, "⫮": { math: "\\revnmid" }, "⫯": { math: "\\cirmid" }, "⫰": { math: "\\midcir" }, "⫱": { math: "\\topcir" }, "⫲": { math: "\\nhpar" }, "⫳": { math: "\\parsim" }, "⫴": { math: "\\interleave" }, "⫵": { math: "\\nhVvert" }, "⫶": { math: "\\Elztdcol" }, "⫷": { math: "\\lllnest" }, "⫸": { math: "\\gggnest" }, "⫹": { math: "\\leqqslant" }, "⫺": { math: "\\geqqslant" }, "⫻": { math: "\\trslash" }, "⫼": { math: "\\biginterleave" }, "⫽": { math: "{{/}\\!\\!{/}}" }, "⫽⃥": { math: "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}" }, "⫾": { math: "\\talloblong" }, "⫿": { math: "\\bigtalloblong" }, "⬒": { math: "\\squaretopblack" }, "⬓": { math: "\\squarebotblack" }, "⬔": { math: "\\squareurblack" }, "⬕": { math: "\\squarellblack" }, "⬖": { math: "\\diamondleftblack" }, "⬗": { math: "\\diamondrightblack" }, "⬘": { math: "\\diamondtopblack" }, "⬙": { math: "\\diamondbotblack" }, "⬚": { math: "\\dottedsquare" }, "⬛": { math: "\\blacksquare" }, "⬜": { math: "\\square" }, "⬝": { math: "\\vysmblksquare" }, "⬞": { math: "\\vysmwhtsquare" }, "⬟": { math: "\\pentagonblack" }, "⬠": { math: "\\pentagon" }, "⬡": { math: "\\varhexagon" }, "⬢": { math: "\\varhexagonblack" }, "⬣": { math: "\\hexagonblack" }, "⬤": { math: "\\lgblkcircle" }, "⬥": { math: "\\mdblkdiamond" }, "⬦": { math: "\\mdwhtdiamond" }, "⬧": { math: "\\mdblklozenge" }, "⬨": { math: "\\mdwhtlozenge" }, "⬩": { math: "\\smblkdiamond" }, "⬪": { math: "\\smblklozenge" }, "⬫": { math: "\\smwhtlozenge" }, "⬬": { math: "\\blkhorzoval" }, "⬭": { math: "\\whthorzoval" }, "⬮": { math: "\\blkvertoval" }, "⬯": { math: "\\whtvertoval" }, "⬰": { math: "\\circleonleftarrow" }, "⬱": { math: "\\leftthreearrows" }, "⬲": { math: "\\leftarrowonoplus" }, "⬳": { math: "\\longleftsquigarrow" }, "⬴": { math: "\\nvtwoheadleftarrow" }, "⬵": { math: "\\nVtwoheadleftarrow" }, "⬶": { math: "\\twoheadmapsfrom" }, "⬷": { math: "\\twoheadleftdbkarrow" }, "⬸": { math: "\\leftdotarrow" }, "⬹": { math: "\\nvleftarrowtail" }, "⬺": { math: "\\nVleftarrowtail" }, "⬻": { math: "\\twoheadleftarrowtail" }, "⬼": { math: "\\nvtwoheadleftarrowtail" }, "⬽": { math: "\\nVtwoheadleftarrowtail" }, "⬾": { math: "\\leftarrowx" }, "⬿": { math: "\\leftcurvedarrow" }, "⭀": { math: "\\equalleftarrow" }, "⭁": { math: "\\bsimilarleftarrow" }, "⭂": { math: "\\leftarrowbackapprox" }, "⭃": { math: "\\rightarrowgtr" }, "⭄": { math: "\\rightarrowsupset" }, "⭅": { math: "\\LLeftarrow" }, "⭆": { math: "\\RRightarrow" }, "⭇": { math: "\\bsimilarrightarrow" }, "⭈": { math: "\\rightarrowbackapprox" }, "⭉": { math: "\\similarleftarrow" }, "⭊": { math: "\\leftarrowapprox" }, "⭋": { math: "\\leftarrowbsimilar" }, "⭌": { math: "\\rightarrowbsimilar" }, "⭐": { math: "\\medwhitestar" }, "⭑": { math: "\\medblackstar" }, "⭒": { math: "\\smwhitestar" }, "⭓": { math: "\\rightpentagonblack" }, "⭔": { math: "\\rightpentagon" }, "〈": { math: "\\langle" }, "〉": { math: "\\rangle" }, "〒": { math: "\\postalmark" }, "〔": { math: "\\lbrbrak" }, "〕": { math: "\\rbrbrak" }, "〚": { math: "\\openbracketleft" }, "〛": { math: "\\openbracketright" }, "〰": { math: "\\hzigzag" }, "ff": { text: "ff" }, "fi": { text: "fi" }, "fl": { text: "fl" }, "ffi": { text: "ffi" }, "ffl": { text: "ffl" }, "ſt": { text: "st" }, "st": { text: "st" }, "�": { text: "{\\dbend}" }, "𝐀": { math: "\\mathbf{A}" }, "𝐁": { math: "\\mathbf{B}" }, "𝐂": { math: "\\mathbf{C}" }, "𝐃": { math: "\\mathbf{D}" }, "𝐄": { math: "\\mathbf{E}" }, "𝐅": { math: "\\mathbf{F}" }, "𝐆": { math: "\\mathbf{G}" }, "𝐇": { math: "\\mathbf{H}" }, "𝐈": { math: "\\mathbf{I}" }, "𝐉": { math: "\\mathbf{J}" }, "𝐊": { math: "\\mathbf{K}" }, "𝐋": { math: "\\mathbf{L}" }, "𝐌": { math: "\\mathbf{M}" }, "𝐍": { math: "\\mathbf{N}" }, "𝐎": { math: "\\mathbf{O}" }, "𝐏": { math: "\\mathbf{P}" }, "𝐐": { math: "\\mathbf{Q}" }, "𝐑": { math: "\\mathbf{R}" }, "𝐒": { math: "\\mathbf{S}" }, "𝐓": { math: "\\mathbf{T}" }, "𝐔": { math: "\\mathbf{U}" }, "𝐕": { math: "\\mathbf{V}" }, "𝐖": { math: "\\mathbf{W}" }, "𝐗": { math: "\\mathbf{X}" }, "𝐘": { math: "\\mathbf{Y}" }, "𝐙": { math: "\\mathbf{Z}" }, "𝐚": { math: "\\mathbf{a}" }, "𝐛": { math: "\\mathbf{b}" }, "𝐜": { math: "\\mathbf{c}" }, "𝐝": { math: "\\mathbf{d}" }, "𝐞": { math: "\\mathbf{e}" }, "𝐟": { math: "\\mathbf{f}" }, "𝐠": { math: "\\mathbf{g}" }, "𝐡": { math: "\\mathbf{h}" }, "𝐢": { math: "\\mathbf{i}" }, "𝐣": { math: "\\mathbf{j}" }, "𝐤": { math: "\\mathbf{k}" }, "𝐥": { math: "\\mathbf{l}" }, "𝐦": { math: "\\mathbf{m}" }, "𝐧": { math: "\\mathbf{n}" }, "𝐨": { math: "\\mathbf{o}" }, "𝐩": { math: "\\mathbf{p}" }, "𝐪": { math: "\\mathbf{q}" }, "𝐫": { math: "\\mathbf{r}" }, "𝐬": { math: "\\mathbf{s}" }, "𝐭": { math: "\\mathbf{t}" }, "𝐮": { math: "\\mathbf{u}" }, "𝐯": { math: "\\mathbf{v}" }, "𝐰": { math: "\\mathbf{w}" }, "𝐱": { math: "\\mathbf{x}" }, "𝐲": { math: "\\mathbf{y}" }, "𝐳": { math: "\\mathbf{z}" }, "𝐴": { math: "\\mathsl{A}" }, "𝐵": { math: "\\mathsl{B}" }, "𝐶": { math: "\\mathsl{C}" }, "𝐷": { math: "\\mathsl{D}" }, "𝐸": { math: "\\mathsl{E}" }, "𝐹": { math: "\\mathsl{F}" }, "𝐺": { math: "\\mathsl{G}" }, "𝐻": { math: "\\mathsl{H}" }, "𝐼": { math: "\\mathsl{I}" }, "𝐽": { math: "\\mathsl{J}" }, "𝐾": { math: "\\mathsl{K}" }, "𝐿": { math: "\\mathsl{L}" }, "𝑀": { math: "\\mathsl{M}" }, "𝑁": { math: "\\mathsl{N}" }, "𝑂": { math: "\\mathsl{O}" }, "𝑃": { math: "\\mathsl{P}" }, "𝑄": { math: "\\mathsl{Q}" }, "𝑅": { math: "\\mathsl{R}" }, "𝑆": { math: "\\mathsl{S}" }, "𝑇": { math: "\\mathsl{T}" }, "𝑈": { math: "\\mathsl{U}" }, "𝑉": { math: "\\mathsl{V}" }, "𝑊": { math: "\\mathsl{W}" }, "𝑋": { math: "\\mathsl{X}" }, "𝑌": { math: "\\mathsl{Y}" }, "𝑍": { math: "\\mathsl{Z}" }, "𝑎": { math: "\\mathsl{a}" }, "𝑏": { math: "\\mathsl{b}" }, "𝑐": { math: "\\mathsl{c}" }, "𝑑": { math: "\\mathsl{d}" }, "𝑒": { math: "\\mathsl{e}" }, "𝑓": { math: "\\mathsl{f}" }, "𝑔": { math: "\\mathsl{g}" }, "𝑖": { math: "\\mathsl{i}" }, "𝑗": { math: "\\mathsl{j}" }, "𝑘": { math: "\\mathsl{k}" }, "𝑙": { math: "\\mathsl{l}" }, "𝑚": { math: "\\mathsl{m}" }, "𝑛": { math: "\\mathsl{n}" }, "𝑜": { math: "\\mathsl{o}" }, "𝑝": { math: "\\mathsl{p}" }, "𝑞": { math: "\\mathsl{q}" }, "𝑟": { math: "\\mathsl{r}" }, "𝑠": { math: "\\mathsl{s}" }, "𝑡": { math: "\\mathsl{t}" }, "𝑢": { math: "\\mathsl{u}" }, "𝑣": { math: "\\mathsl{v}" }, "𝑤": { math: "\\mathsl{w}" }, "𝑥": { math: "\\mathsl{x}" }, "𝑦": { math: "\\mathsl{y}" }, "𝑧": { math: "\\mathsl{z}" }, "𝑨": { math: "\\mathbit{A}" }, "𝑩": { math: "\\mathbit{B}" }, "𝑪": { math: "\\mathbit{C}" }, "𝑫": { math: "\\mathbit{D}" }, "𝑬": { math: "\\mathbit{E}" }, "𝑭": { math: "\\mathbit{F}" }, "𝑮": { math: "\\mathbit{G}" }, "𝑯": { math: "\\mathbit{H}" }, "𝑰": { math: "\\mathbit{I}" }, "𝑱": { math: "\\mathbit{J}" }, "𝑲": { math: "\\mathbit{K}" }, "𝑳": { math: "\\mathbit{L}" }, "𝑴": { math: "\\mathbit{M}" }, "𝑵": { math: "\\mathbit{N}" }, "𝑶": { math: "\\mathbit{O}" }, "𝑷": { math: "\\mathbit{P}" }, "𝑸": { math: "\\mathbit{Q}" }, "𝑹": { math: "\\mathbit{R}" }, "𝑺": { math: "\\mathbit{S}" }, "𝑻": { math: "\\mathbit{T}" }, "𝑼": { math: "\\mathbit{U}" }, "𝑽": { math: "\\mathbit{V}" }, "𝑾": { math: "\\mathbit{W}" }, "𝑿": { math: "\\mathbit{X}" }, "𝒀": { math: "\\mathbit{Y}" }, "𝒁": { math: "\\mathbit{Z}" }, "𝒂": { math: "\\mathbit{a}" }, "𝒃": { math: "\\mathbit{b}" }, "𝒄": { math: "\\mathbit{c}" }, "𝒅": { math: "\\mathbit{d}" }, "𝒆": { math: "\\mathbit{e}" }, "𝒇": { math: "\\mathbit{f}" }, "𝒈": { math: "\\mathbit{g}" }, "𝒉": { math: "\\mathbit{h}" }, "𝒊": { math: "\\mathbit{i}" }, "𝒋": { math: "\\mathbit{j}" }, "𝒌": { math: "\\mathbit{k}" }, "𝒍": { math: "\\mathbit{l}" }, "𝒎": { math: "\\mathbit{m}" }, "𝒏": { math: "\\mathbit{n}" }, "𝒐": { math: "\\mathbit{o}" }, "𝒑": { math: "\\mathbit{p}" }, "𝒒": { math: "\\mathbit{q}" }, "𝒓": { math: "\\mathbit{r}" }, "𝒔": { math: "\\mathbit{s}" }, "𝒕": { math: "\\mathbit{t}" }, "𝒖": { math: "\\mathbit{u}" }, "𝒗": { math: "\\mathbit{v}" }, "𝒘": { math: "\\mathbit{w}" }, "𝒙": { math: "\\mathbit{x}" }, "𝒚": { math: "\\mathbit{y}" }, "𝒛": { math: "\\mathbit{z}" }, "𝒜": { math: "\\mathscr{A}" }, "𝒞": { math: "\\mathscr{C}" }, "𝒟": { math: "\\mathscr{D}" }, "𝒢": { math: "\\mathscr{G}" }, "𝒥": { math: "\\mathscr{J}" }, "𝒦": { math: "\\mathscr{K}" }, "𝒩": { math: "\\mathscr{N}" }, "𝒪": { math: "\\mathscr{O}" }, "𝒫": { math: "\\mathscr{P}" }, "𝒬": { math: "\\mathscr{Q}" }, "𝒮": { math: "\\mathscr{S}" }, "𝒯": { math: "\\mathscr{T}" }, "𝒰": { math: "\\mathscr{U}" }, "𝒱": { math: "\\mathscr{V}" }, "𝒲": { math: "\\mathscr{W}" }, "𝒳": { math: "\\mathscr{X}" }, "𝒴": { math: "\\mathscr{Y}" }, "𝒵": { math: "\\mathscr{Z}" }, "𝒶": { math: "\\mathscr{a}" }, "𝒷": { math: "\\mathscr{b}" }, "𝒸": { math: "\\mathscr{c}" }, "𝒹": { math: "\\mathscr{d}" }, "𝒻": { math: "\\mathscr{f}" }, "𝒽": { math: "\\mathscr{h}" }, "𝒾": { math: "\\mathscr{i}" }, "𝒿": { math: "\\mathscr{j}" }, "𝓀": { math: "\\mathscr{k}" }, "𝓁": { math: "\\mathscr{l}" }, "𝓂": { math: "\\mathscr{m}" }, "𝓃": { math: "\\mathscr{n}" }, "𝓅": { math: "\\mathscr{p}" }, "𝓆": { math: "\\mathscr{q}" }, "𝓇": { math: "\\mathscr{r}" }, "𝓈": { math: "\\mathscr{s}" }, "𝓉": { math: "\\mathscr{t}" }, "𝓊": { math: "\\mathscr{u}" }, "𝓋": { math: "\\mathscr{v}" }, "𝓌": { math: "\\mathscr{w}" }, "𝓍": { math: "\\mathscr{x}" }, "𝓎": { math: "\\mathscr{y}" }, "𝓏": { math: "\\mathscr{z}" }, "𝓐": { math: "\\mathmit{A}" }, "𝓑": { math: "\\mathmit{B}" }, "𝓒": { math: "\\mathmit{C}" }, "𝓓": { math: "\\mathmit{D}" }, "𝓔": { math: "\\mathmit{E}" }, "𝓕": { math: "\\mathmit{F}" }, "𝓖": { math: "\\mathmit{G}" }, "𝓗": { math: "\\mathmit{H}" }, "𝓘": { math: "\\mathmit{I}" }, "𝓙": { math: "\\mathmit{J}" }, "𝓚": { math: "\\mathmit{K}" }, "𝓛": { math: "\\mathmit{L}" }, "𝓜": { math: "\\mathmit{M}" }, "𝓝": { math: "\\mathmit{N}" }, "𝓞": { math: "\\mathmit{O}" }, "𝓟": { math: "\\mathmit{P}" }, "𝓠": { math: "\\mathmit{Q}" }, "𝓡": { math: "\\mathmit{R}" }, "𝓢": { math: "\\mathmit{S}" }, "𝓣": { math: "\\mathmit{T}" }, "𝓤": { math: "\\mathmit{U}" }, "𝓥": { math: "\\mathmit{V}" }, "𝓦": { math: "\\mathmit{W}" }, "𝓧": { math: "\\mathmit{X}" }, "𝓨": { math: "\\mathmit{Y}" }, "𝓩": { math: "\\mathmit{Z}" }, "𝓪": { math: "\\mathmit{a}" }, "𝓫": { math: "\\mathmit{b}" }, "𝓬": { math: "\\mathmit{c}" }, "𝓭": { math: "\\mathmit{d}" }, "𝓮": { math: "\\mathmit{e}" }, "𝓯": { math: "\\mathmit{f}" }, "𝓰": { math: "\\mathmit{g}" }, "𝓱": { math: "\\mathmit{h}" }, "𝓲": { math: "\\mathmit{i}" }, "𝓳": { math: "\\mathmit{j}" }, "𝓴": { math: "\\mathmit{k}" }, "𝓵": { math: "\\mathmit{l}" }, "𝓶": { math: "\\mathmit{m}" }, "𝓷": { math: "\\mathmit{n}" }, "𝓸": { math: "\\mathmit{o}" }, "𝓹": { math: "\\mathmit{p}" }, "𝓺": { math: "\\mathmit{q}" }, "𝓻": { math: "\\mathmit{r}" }, "𝓼": { math: "\\mathmit{s}" }, "𝓽": { math: "\\mathmit{t}" }, "𝓾": { math: "\\mathmit{u}" }, "𝓿": { math: "\\mathmit{v}" }, "𝔀": { math: "\\mathmit{w}" }, "𝔁": { math: "\\mathmit{x}" }, "𝔂": { math: "\\mathmit{y}" }, "𝔃": { math: "\\mathmit{z}" }, "𝔄": { math: "\\mathfrak{A}" }, "𝔅": { math: "\\mathfrak{B}" }, "𝔇": { math: "\\mathfrak{D}" }, "𝔈": { math: "\\mathfrak{E}" }, "𝔉": { math: "\\mathfrak{F}" }, "𝔊": { math: "\\mathfrak{G}" }, "𝔍": { math: "\\mathfrak{J}" }, "𝔎": { math: "\\mathfrak{K}" }, "𝔏": { math: "\\mathfrak{L}" }, "𝔐": { math: "\\mathfrak{M}" }, "𝔑": { math: "\\mathfrak{N}" }, "𝔒": { math: "\\mathfrak{O}" }, "𝔓": { math: "\\mathfrak{P}" }, "𝔔": { math: "\\mathfrak{Q}" }, "𝔖": { math: "\\mathfrak{S}" }, "𝔗": { math: "\\mathfrak{T}" }, "𝔘": { math: "\\mathfrak{U}" }, "𝔙": { math: "\\mathfrak{V}" }, "𝔚": { math: "\\mathfrak{W}" }, "𝔛": { math: "\\mathfrak{X}" }, "𝔜": { math: "\\mathfrak{Y}" }, "𝔞": { math: "\\mathfrak{a}" }, "𝔟": { math: "\\mathfrak{b}" }, "𝔠": { math: "\\mathfrak{c}" }, "𝔡": { math: "\\mathfrak{d}" }, "𝔢": { math: "\\mathfrak{e}" }, "𝔣": { math: "\\mathfrak{f}" }, "𝔤": { math: "\\mathfrak{g}" }, "𝔥": { math: "\\mathfrak{h}" }, "𝔦": { math: "\\mathfrak{i}" }, "𝔧": { math: "\\mathfrak{j}" }, "𝔨": { math: "\\mathfrak{k}" }, "𝔩": { math: "\\mathfrak{l}" }, "𝔪": { math: "\\mathfrak{m}" }, "𝔫": { math: "\\mathfrak{n}" }, "𝔬": { math: "\\mathfrak{o}" }, "𝔭": { math: "\\mathfrak{p}" }, "𝔮": { math: "\\mathfrak{q}" }, "𝔯": { math: "\\mathfrak{r}" }, "𝔰": { math: "\\mathfrak{s}" }, "𝔱": { math: "\\mathfrak{t}" }, "𝔲": { math: "\\mathfrak{u}" }, "𝔳": { math: "\\mathfrak{v}" }, "𝔴": { math: "\\mathfrak{w}" }, "𝔵": { math: "\\mathfrak{x}" }, "𝔶": { math: "\\mathfrak{y}" }, "𝔷": { math: "\\mathfrak{z}" }, "𝔸": { math: "\\mathbb{A}" }, "𝔹": { math: "\\mathbb{B}" }, "𝔻": { math: "\\mathbb{D}" }, "𝔼": { math: "\\mathbb{E}" }, "𝔽": { math: "\\mathbb{F}" }, "𝔾": { math: "\\mathbb{G}" }, "𝕀": { math: "\\mathbb{I}" }, "𝕁": { math: "\\mathbb{J}" }, "𝕂": { math: "\\mathbb{K}" }, "𝕃": { math: "\\mathbb{L}" }, "𝕄": { math: "\\mathbb{M}" }, "𝕆": { math: "\\mathbb{O}" }, "𝕊": { math: "\\mathbb{S}" }, "𝕋": { math: "\\mathbb{T}" }, "𝕌": { math: "\\mathbb{U}" }, "𝕍": { math: "\\mathbb{V}" }, "𝕎": { math: "\\mathbb{W}" }, "𝕏": { math: "\\mathbb{X}" }, "𝕐": { math: "\\mathbb{Y}" }, "𝕒": { math: "\\mathbb{a}" }, "𝕓": { math: "\\mathbb{b}" }, "𝕔": { math: "\\mathbb{c}" }, "𝕕": { math: "\\mathbb{d}" }, "𝕖": { math: "\\mathbb{e}" }, "𝕗": { math: "\\mathbb{f}" }, "𝕘": { math: "\\mathbb{g}" }, "𝕙": { math: "\\mathbb{h}" }, "𝕚": { math: "\\mathbb{i}" }, "𝕛": { math: "\\mathbb{j}" }, "𝕜": { math: "\\mathbb{k}" }, "𝕝": { math: "\\mathbb{l}" }, "𝕞": { math: "\\mathbb{m}" }, "𝕟": { math: "\\mathbb{n}" }, "𝕠": { math: "\\mathbb{o}" }, "𝕡": { math: "\\mathbb{p}" }, "𝕢": { math: "\\mathbb{q}" }, "𝕣": { math: "\\mathbb{r}" }, "𝕤": { math: "\\mathbb{s}" }, "𝕥": { math: "\\mathbb{t}" }, "𝕦": { math: "\\mathbb{u}" }, "𝕧": { math: "\\mathbb{v}" }, "𝕨": { math: "\\mathbb{w}" }, "𝕩": { math: "\\mathbb{x}" }, "𝕪": { math: "\\mathbb{y}" }, "𝕫": { math: "\\mathbb{z}" }, "𝕬": { math: "\\mathslbb{A}" }, "𝕭": { math: "\\mathslbb{B}" }, "𝕮": { math: "\\mathslbb{C}" }, "𝕯": { math: "\\mathslbb{D}" }, "𝕰": { math: "\\mathslbb{E}" }, "𝕱": { math: "\\mathslbb{F}" }, "𝕲": { math: "\\mathslbb{G}" }, "𝕳": { math: "\\mathslbb{H}" }, "𝕴": { math: "\\mathslbb{I}" }, "𝕵": { math: "\\mathslbb{J}" }, "𝕶": { math: "\\mathslbb{K}" }, "𝕷": { math: "\\mathslbb{L}" }, "𝕸": { math: "\\mathslbb{M}" }, "𝕹": { math: "\\mathslbb{N}" }, "𝕺": { math: "\\mathslbb{O}" }, "𝕻": { math: "\\mathslbb{P}" }, "𝕼": { math: "\\mathslbb{Q}" }, "𝕽": { math: "\\mathslbb{R}" }, "𝕾": { math: "\\mathslbb{S}" }, "𝕿": { math: "\\mathslbb{T}" }, "𝖀": { math: "\\mathslbb{U}" }, "𝖁": { math: "\\mathslbb{V}" }, "𝖂": { math: "\\mathslbb{W}" }, "𝖃": { math: "\\mathslbb{X}" }, "𝖄": { math: "\\mathslbb{Y}" }, "𝖅": { math: "\\mathslbb{Z}" }, "𝖆": { math: "\\mathslbb{a}" }, "𝖇": { math: "\\mathslbb{b}" }, "𝖈": { math: "\\mathslbb{c}" }, "𝖉": { math: "\\mathslbb{d}" }, "𝖊": { math: "\\mathslbb{e}" }, "𝖋": { math: "\\mathslbb{f}" }, "𝖌": { math: "\\mathslbb{g}" }, "𝖍": { math: "\\mathslbb{h}" }, "𝖎": { math: "\\mathslbb{i}" }, "𝖏": { math: "\\mathslbb{j}" }, "𝖐": { math: "\\mathslbb{k}" }, "𝖑": { math: "\\mathslbb{l}" }, "𝖒": { math: "\\mathslbb{m}" }, "𝖓": { math: "\\mathslbb{n}" }, "𝖔": { math: "\\mathslbb{o}" }, "𝖕": { math: "\\mathslbb{p}" }, "𝖖": { math: "\\mathslbb{q}" }, "𝖗": { math: "\\mathslbb{r}" }, "𝖘": { math: "\\mathslbb{s}" }, "𝖙": { math: "\\mathslbb{t}" }, "𝖚": { math: "\\mathslbb{u}" }, "𝖛": { math: "\\mathslbb{v}" }, "𝖜": { math: "\\mathslbb{w}" }, "𝖝": { math: "\\mathslbb{x}" }, "𝖞": { math: "\\mathslbb{y}" }, "𝖟": { math: "\\mathslbb{z}" }, "𝖠": { math: "\\mathsf{A}" }, "𝖡": { math: "\\mathsf{B}" }, "𝖢": { math: "\\mathsf{C}" }, "𝖣": { math: "\\mathsf{D}" }, "𝖤": { math: "\\mathsf{E}" }, "𝖥": { math: "\\mathsf{F}" }, "𝖦": { math: "\\mathsf{G}" }, "𝖧": { math: "\\mathsf{H}" }, "𝖨": { math: "\\mathsf{I}" }, "𝖩": { math: "\\mathsf{J}" }, "𝖪": { math: "\\mathsf{K}" }, "𝖫": { math: "\\mathsf{L}" }, "𝖬": { math: "\\mathsf{M}" }, "𝖭": { math: "\\mathsf{N}" }, "𝖮": { math: "\\mathsf{O}" }, "𝖯": { math: "\\mathsf{P}" }, "𝖰": { math: "\\mathsf{Q}" }, "𝖱": { math: "\\mathsf{R}" }, "𝖲": { math: "\\mathsf{S}" }, "𝖳": { math: "\\mathsf{T}" }, "𝖴": { math: "\\mathsf{U}" }, "𝖵": { math: "\\mathsf{V}" }, "𝖶": { math: "\\mathsf{W}" }, "𝖷": { math: "\\mathsf{X}" }, "𝖸": { math: "\\mathsf{Y}" }, "𝖹": { math: "\\mathsf{Z}" }, "𝖺": { math: "\\mathsf{a}" }, "𝖻": { math: "\\mathsf{b}" }, "𝖼": { math: "\\mathsf{c}" }, "𝖽": { math: "\\mathsf{d}" }, "𝖾": { math: "\\mathsf{e}" }, "𝖿": { math: "\\mathsf{f}" }, "𝗀": { math: "\\mathsf{g}" }, "𝗁": { math: "\\mathsf{h}" }, "𝗂": { math: "\\mathsf{i}" }, "𝗃": { math: "\\mathsf{j}" }, "𝗄": { math: "\\mathsf{k}" }, "𝗅": { math: "\\mathsf{l}" }, "𝗆": { math: "\\mathsf{m}" }, "𝗇": { math: "\\mathsf{n}" }, "𝗈": { math: "\\mathsf{o}" }, "𝗉": { math: "\\mathsf{p}" }, "𝗊": { math: "\\mathsf{q}" }, "𝗋": { math: "\\mathsf{r}" }, "𝗌": { math: "\\mathsf{s}" }, "𝗍": { math: "\\mathsf{t}" }, "𝗎": { math: "\\mathsf{u}" }, "𝗏": { math: "\\mathsf{v}" }, "𝗐": { math: "\\mathsf{w}" }, "𝗑": { math: "\\mathsf{x}" }, "𝗒": { math: "\\mathsf{y}" }, "𝗓": { math: "\\mathsf{z}" }, "𝗔": { math: "\\mathsfbf{A}" }, "𝗕": { math: "\\mathsfbf{B}" }, "𝗖": { math: "\\mathsfbf{C}" }, "𝗗": { math: "\\mathsfbf{D}" }, "𝗘": { math: "\\mathsfbf{E}" }, "𝗙": { math: "\\mathsfbf{F}" }, "𝗚": { math: "\\mathsfbf{G}" }, "𝗛": { math: "\\mathsfbf{H}" }, "𝗜": { math: "\\mathsfbf{I}" }, "𝗝": { math: "\\mathsfbf{J}" }, "𝗞": { math: "\\mathsfbf{K}" }, "𝗟": { math: "\\mathsfbf{L}" }, "𝗠": { math: "\\mathsfbf{M}" }, "𝗡": { math: "\\mathsfbf{N}" }, "𝗢": { math: "\\mathsfbf{O}" }, "𝗣": { math: "\\mathsfbf{P}" }, "𝗤": { math: "\\mathsfbf{Q}" }, "𝗥": { math: "\\mathsfbf{R}" }, "𝗦": { math: "\\mathsfbf{S}" }, "𝗧": { math: "\\mathsfbf{T}" }, "𝗨": { math: "\\mathsfbf{U}" }, "𝗩": { math: "\\mathsfbf{V}" }, "𝗪": { math: "\\mathsfbf{W}" }, "𝗫": { math: "\\mathsfbf{X}" }, "𝗬": { math: "\\mathsfbf{Y}" }, "𝗭": { math: "\\mathsfbf{Z}" }, "𝗮": { math: "\\mathsfbf{a}" }, "𝗯": { math: "\\mathsfbf{b}" }, "𝗰": { math: "\\mathsfbf{c}" }, "𝗱": { math: "\\mathsfbf{d}" }, "𝗲": { math: "\\mathsfbf{e}" }, "𝗳": { math: "\\mathsfbf{f}" }, "𝗴": { math: "\\mathsfbf{g}" }, "𝗵": { math: "\\mathsfbf{h}" }, "𝗶": { math: "\\mathsfbf{i}" }, "𝗷": { math: "\\mathsfbf{j}" }, "𝗸": { math: "\\mathsfbf{k}" }, "𝗹": { math: "\\mathsfbf{l}" }, "𝗺": { math: "\\mathsfbf{m}" }, "𝗻": { math: "\\mathsfbf{n}" }, "𝗼": { math: "\\mathsfbf{o}" }, "𝗽": { math: "\\mathsfbf{p}" }, "𝗾": { math: "\\mathsfbf{q}" }, "𝗿": { math: "\\mathsfbf{r}" }, "𝘀": { math: "\\mathsfbf{s}" }, "𝘁": { math: "\\mathsfbf{t}" }, "𝘂": { math: "\\mathsfbf{u}" }, "𝘃": { math: "\\mathsfbf{v}" }, "𝘄": { math: "\\mathsfbf{w}" }, "𝘅": { math: "\\mathsfbf{x}" }, "𝘆": { math: "\\mathsfbf{y}" }, "𝘇": { math: "\\mathsfbf{z}" }, "𝘈": { math: "\\mathsfsl{A}" }, "𝘉": { math: "\\mathsfsl{B}" }, "𝘊": { math: "\\mathsfsl{C}" }, "𝘋": { math: "\\mathsfsl{D}" }, "𝘌": { math: "\\mathsfsl{E}" }, "𝘍": { math: "\\mathsfsl{F}" }, "𝘎": { math: "\\mathsfsl{G}" }, "𝘏": { math: "\\mathsfsl{H}" }, "𝘐": { math: "\\mathsfsl{I}" }, "𝘑": { math: "\\mathsfsl{J}" }, "𝘒": { math: "\\mathsfsl{K}" }, "𝘓": { math: "\\mathsfsl{L}" }, "𝘔": { math: "\\mathsfsl{M}" }, "𝘕": { math: "\\mathsfsl{N}" }, "𝘖": { math: "\\mathsfsl{O}" }, "𝘗": { math: "\\mathsfsl{P}" }, "𝘘": { math: "\\mathsfsl{Q}" }, "𝘙": { math: "\\mathsfsl{R}" }, "𝘚": { math: "\\mathsfsl{S}" }, "𝘛": { math: "\\mathsfsl{T}" }, "𝘜": { math: "\\mathsfsl{U}" }, "𝘝": { math: "\\mathsfsl{V}" }, "𝘞": { math: "\\mathsfsl{W}" }, "𝘟": { math: "\\mathsfsl{X}" }, "𝘠": { math: "\\mathsfsl{Y}" }, "𝘡": { math: "\\mathsfsl{Z}" }, "𝘢": { math: "\\mathsfsl{a}" }, "𝘣": { math: "\\mathsfsl{b}" }, "𝘤": { math: "\\mathsfsl{c}" }, "𝘥": { math: "\\mathsfsl{d}" }, "𝘦": { math: "\\mathsfsl{e}" }, "𝘧": { math: "\\mathsfsl{f}" }, "𝘨": { math: "\\mathsfsl{g}" }, "𝘩": { math: "\\mathsfsl{h}" }, "𝘪": { math: "\\mathsfsl{i}" }, "𝘫": { math: "\\mathsfsl{j}" }, "𝘬": { math: "\\mathsfsl{k}" }, "𝘭": { math: "\\mathsfsl{l}" }, "𝘮": { math: "\\mathsfsl{m}" }, "𝘯": { math: "\\mathsfsl{n}" }, "𝘰": { math: "\\mathsfsl{o}" }, "𝘱": { math: "\\mathsfsl{p}" }, "𝘲": { math: "\\mathsfsl{q}" }, "𝘳": { math: "\\mathsfsl{r}" }, "𝘴": { math: "\\mathsfsl{s}" }, "𝘵": { math: "\\mathsfsl{t}" }, "𝘶": { math: "\\mathsfsl{u}" }, "𝘷": { math: "\\mathsfsl{v}" }, "𝘸": { math: "\\mathsfsl{w}" }, "𝘹": { math: "\\mathsfsl{x}" }, "𝘺": { math: "\\mathsfsl{y}" }, "𝘻": { math: "\\mathsfsl{z}" }, "𝘼": { math: "\\mathsfbfsl{A}" }, "𝘽": { math: "\\mathsfbfsl{B}" }, "𝘾": { math: "\\mathsfbfsl{C}" }, "𝘿": { math: "\\mathsfbfsl{D}" }, "𝙀": { math: "\\mathsfbfsl{E}" }, "𝙁": { math: "\\mathsfbfsl{F}" }, "𝙂": { math: "\\mathsfbfsl{G}" }, "𝙃": { math: "\\mathsfbfsl{H}" }, "𝙄": { math: "\\mathsfbfsl{I}" }, "𝙅": { math: "\\mathsfbfsl{J}" }, "𝙆": { math: "\\mathsfbfsl{K}" }, "𝙇": { math: "\\mathsfbfsl{L}" }, "𝙈": { math: "\\mathsfbfsl{M}" }, "𝙉": { math: "\\mathsfbfsl{N}" }, "𝙊": { math: "\\mathsfbfsl{O}" }, "𝙋": { math: "\\mathsfbfsl{P}" }, "𝙌": { math: "\\mathsfbfsl{Q}" }, "𝙍": { math: "\\mathsfbfsl{R}" }, "𝙎": { math: "\\mathsfbfsl{S}" }, "𝙏": { math: "\\mathsfbfsl{T}" }, "𝙐": { math: "\\mathsfbfsl{U}" }, "𝙑": { math: "\\mathsfbfsl{V}" }, "𝙒": { math: "\\mathsfbfsl{W}" }, "𝙓": { math: "\\mathsfbfsl{X}" }, "𝙔": { math: "\\mathsfbfsl{Y}" }, "𝙕": { math: "\\mathsfbfsl{Z}" }, "𝙖": { math: "\\mathsfbfsl{a}" }, "𝙗": { math: "\\mathsfbfsl{b}" }, "𝙘": { math: "\\mathsfbfsl{c}" }, "𝙙": { math: "\\mathsfbfsl{d}" }, "𝙚": { math: "\\mathsfbfsl{e}" }, "𝙛": { math: "\\mathsfbfsl{f}" }, "𝙜": { math: "\\mathsfbfsl{g}" }, "𝙝": { math: "\\mathsfbfsl{h}" }, "𝙞": { math: "\\mathsfbfsl{i}" }, "𝙟": { math: "\\mathsfbfsl{j}" }, "𝙠": { math: "\\mathsfbfsl{k}" }, "𝙡": { math: "\\mathsfbfsl{l}" }, "𝙢": { math: "\\mathsfbfsl{m}" }, "𝙣": { math: "\\mathsfbfsl{n}" }, "𝙤": { math: "\\mathsfbfsl{o}" }, "𝙥": { math: "\\mathsfbfsl{p}" }, "𝙦": { math: "\\mathsfbfsl{q}" }, "𝙧": { math: "\\mathsfbfsl{r}" }, "𝙨": { math: "\\mathsfbfsl{s}" }, "𝙩": { math: "\\mathsfbfsl{t}" }, "𝙪": { math: "\\mathsfbfsl{u}" }, "𝙫": { math: "\\mathsfbfsl{v}" }, "𝙬": { math: "\\mathsfbfsl{w}" }, "𝙭": { math: "\\mathsfbfsl{x}" }, "𝙮": { math: "\\mathsfbfsl{y}" }, "𝙯": { math: "\\mathsfbfsl{z}" }, "𝙰": { math: "\\mathtt{A}" }, "𝙱": { math: "\\mathtt{B}" }, "𝙲": { math: "\\mathtt{C}" }, "𝙳": { math: "\\mathtt{D}" }, "𝙴": { math: "\\mathtt{E}" }, "𝙵": { math: "\\mathtt{F}" }, "𝙶": { math: "\\mathtt{G}" }, "𝙷": { math: "\\mathtt{H}" }, "𝙸": { math: "\\mathtt{I}" }, "𝙹": { math: "\\mathtt{J}" }, "𝙺": { math: "\\mathtt{K}" }, "𝙻": { math: "\\mathtt{L}" }, "𝙼": { math: "\\mathtt{M}" }, "𝙽": { math: "\\mathtt{N}" }, "𝙾": { math: "\\mathtt{O}" }, "𝙿": { math: "\\mathtt{P}" }, "𝚀": { math: "\\mathtt{Q}" }, "𝚁": { math: "\\mathtt{R}" }, "𝚂": { math: "\\mathtt{S}" }, "𝚃": { math: "\\mathtt{T}" }, "𝚄": { math: "\\mathtt{U}" }, "𝚅": { math: "\\mathtt{V}" }, "𝚆": { math: "\\mathtt{W}" }, "𝚇": { math: "\\mathtt{X}" }, "𝚈": { math: "\\mathtt{Y}" }, "𝚉": { math: "\\mathtt{Z}" }, "𝚊": { math: "\\mathtt{a}" }, "𝚋": { math: "\\mathtt{b}" }, "𝚌": { math: "\\mathtt{c}" }, "𝚍": { math: "\\mathtt{d}" }, "𝚎": { math: "\\mathtt{e}" }, "𝚏": { math: "\\mathtt{f}" }, "𝚐": { math: "\\mathtt{g}" }, "𝚑": { math: "\\mathtt{h}" }, "𝚒": { math: "\\mathtt{i}" }, "𝚓": { math: "\\mathtt{j}" }, "𝚔": { math: "\\mathtt{k}" }, "𝚕": { math: "\\mathtt{l}" }, "𝚖": { math: "\\mathtt{m}" }, "𝚗": { math: "\\mathtt{n}" }, "𝚘": { math: "\\mathtt{o}" }, "𝚙": { math: "\\mathtt{p}" }, "𝚚": { math: "\\mathtt{q}" }, "𝚛": { math: "\\mathtt{r}" }, "𝚜": { math: "\\mathtt{s}" }, "𝚝": { math: "\\mathtt{t}" }, "𝚞": { math: "\\mathtt{u}" }, "𝚟": { math: "\\mathtt{v}" }, "𝚠": { math: "\\mathtt{w}" }, "𝚡": { math: "\\mathtt{x}" }, "𝚢": { math: "\\mathtt{y}" }, "𝚣": { math: "\\mathtt{z}" }, "𝚤": { math: "\\imath" }, "𝚥": { math: "\\jmath" }, "𝚨": { math: "\\mathbf{A}" }, "𝚩": { math: "\\mathbf{B}" }, "𝚪": { math: "\\mathbf{\\Gamma}" }, "𝚫": { math: "\\mathbf{\\Delta}" }, "𝚬": { math: "\\mathbf{E}" }, "𝚭": { math: "\\mathbf{Z}" }, "𝚮": { math: "\\mathbf{H}" }, "𝚯": { math: "\\mathbf{\\Theta}" }, "𝚰": { math: "\\mathbf{I}" }, "𝚱": { math: "\\mathbf{K}" }, "𝚲": { math: "\\mathbf{\\Lambda}" }, "𝚳": { math: "M" }, "𝚴": { math: "N" }, "𝚵": { math: "\\mathbf{\\Xi}" }, "𝚶": { math: "O" }, "𝚷": { math: "\\mathbf{\\Pi}" }, "𝚸": { math: "\\mathbf{P}" }, "𝚹": { math: "\\mathbf{\\vartheta}" }, "𝚺": { math: "\\mathbf{\\Sigma}" }, "𝚻": { math: "\\mathbf{T}" }, "𝚼": { math: "\\mathbf{\\Upsilon}" }, "𝚽": { math: "\\mathbf{\\Phi}" }, "𝚾": { math: "\\mathbf{X}" }, "𝚿": { math: "\\mathbf{\\Psi}" }, "𝛀": { math: "\\mathbf{\\Omega}" }, "𝛁": { math: "\\mathbf{\\nabla}" }, "𝛂": { math: "\\mathbf{\\alpha}" }, "𝛃": { math: "\\mathbf{\\beta}" }, "𝛄": { math: "\\mathbf{\\gamma}" }, "𝛅": { math: "\\mathbf{\\delta}" }, "𝛆": { math: "\\mathbf{\\epsilon}" }, "𝛇": { math: "\\mathbf{\\zeta}" }, "𝛈": { math: "\\mathbf{\\eta}" }, "𝛉": { math: "\\mathbf{\\theta}" }, "𝛊": { math: "\\mathbf{I}" }, "𝛋": { math: "\\mathbf{K}" }, "𝛌": { math: "\\mathbf{\\lambda}" }, "𝛍": { math: "M" }, "𝛎": { math: "N" }, "𝛏": { math: "\\mathbf{\\xi}" }, "𝛐": { math: "O" }, "𝛑": { math: "\\mathbf{\\pi}" }, "𝛒": { math: "\\mathbf{P}" }, "𝛓": { math: "\\mathbf{\\varsigma}" }, "𝛔": { math: "\\mathbf{\\sigma}" }, "𝛕": { math: "\\mathbf{T}" }, "𝛖": { math: "\\mathbf{\\upsilon}" }, "𝛗": { math: "\\mathbf{\\phi}" }, "𝛘": { math: "\\mathbf{X}" }, "𝛙": { math: "\\mathbf{\\psi}" }, "𝛚": { math: "\\mathbf{\\omega}" }, "𝛛": { math: "\\partial" }, "𝛜": { math: "\\in" }, "𝛝": { math: "\\mathbf{\\vartheta}" }, "𝛞": { math: "\\mathbf{\\varkappa}" }, "𝛟": { math: "\\mathbf{\\phi}" }, "𝛠": { math: "\\mathbf{\\varrho}" }, "𝛡": { math: "\\mathbf{\\varpi}" }, "𝛢": { math: "\\mathsl{A}" }, "𝛣": { math: "\\mathsl{B}" }, "𝛤": { math: "\\mathsl{\\Gamma}" }, "𝛥": { math: "\\mathsl{\\Delta}" }, "𝛦": { math: "\\mathsl{E}" }, "𝛧": { math: "\\mathsl{Z}" }, "𝛨": { math: "\\mathsl{H}" }, "𝛩": { math: "\\mathsl{\\Theta}" }, "𝛪": { math: "\\mathsl{I}" }, "𝛫": { math: "\\mathsl{K}" }, "𝛬": { math: "\\mathsl{\\Lambda}" }, "𝛭": { math: "M" }, "𝛮": { math: "N" }, "𝛯": { math: "\\mathsl{\\Xi}" }, "𝛰": { math: "O" }, "𝛱": { math: "\\mathsl{\\Pi}" }, "𝛲": { math: "\\mathsl{P}" }, "𝛳": { math: "\\mathsl{\\Theta}" }, "𝛴": { math: "\\mathsl{\\Sigma}" }, "𝛵": { math: "\\mathsl{T}" }, "𝛶": { math: "\\mathsl{\\Upsilon}" }, "𝛷": { math: "\\mathsl{\\Phi}" }, "𝛸": { math: "\\mathsl{X}" }, "𝛹": { math: "\\mathsl{\\Psi}" }, "𝛺": { math: "\\mathsl{\\Omega}" }, "𝛻": { math: "\\mathsl{\\nabla}" }, "𝛼": { math: "\\mathsl{A}" }, "𝛽": { math: "\\mathsl{B}" }, "𝛾": { math: "\\mathsl{\\gamma}" }, "𝛿": { math: "\\mathsl{\\delta}" }, "𝜀": { math: "\\mathsl{E}" }, "𝜁": { math: "\\mathsl{Z}" }, "𝜂": { math: "\\mathsl{H}" }, "𝜃": { math: "\\mathsl{\\theta}" }, "𝜄": { math: "\\mathsl{I}" }, "𝜅": { math: "\\mathsl{K}" }, "𝜆": { math: "\\mathsl{\\lambda}" }, "𝜇": { math: "\\mu" }, "𝜈": { math: "\\nu" }, "𝜉": { math: "\\mathsl{\\xi}" }, "𝜊": { math: "o" }, "𝜋": { math: "\\mathsl{\\pi}" }, "𝜌": { math: "\\mathsl{P}" }, "𝜍": { math: "\\mathsl{\\varsigma}" }, "𝜎": { math: "\\mathsl{\\sigma}" }, "𝜏": { math: "\\mathsl{T}" }, "𝜐": { math: "\\mathsl{\\upsilon}" }, "𝜑": { math: "\\mathsl{\\varphi}" }, "𝜒": { math: "\\mathsl{X}" }, "𝜓": { math: "\\mathsl{\\psi}" }, "𝜔": { math: "\\mathsl{\\omega}" }, "𝜕": { math: "\\partial" }, "𝜖": { math: "\\in" }, "𝜗": { math: "\\mathsl{\\vartheta}" }, "𝜘": { math: "\\mathsl{\\varkappa}" }, "𝜙": { math: "\\mathsl{\\phi}" }, "𝜚": { math: "\\mathsl{\\varrho}" }, "𝜛": { math: "\\mathsl{\\varpi}" }, "𝜜": { math: "\\mathbit{A}" }, "𝜝": { math: "\\mathbit{B}" }, "𝜞": { math: "\\mathbit{\\Gamma}" }, "𝜟": { math: "\\mathbit{\\Delta}" }, "𝜠": { math: "\\mathbit{E}" }, "𝜡": { math: "\\mathbit{Z}" }, "𝜢": { math: "\\mathbit{H}" }, "𝜣": { math: "\\mathbit{\\Theta}" }, "𝜤": { math: "\\mathbit{I}" }, "𝜥": { math: "\\mathbit{K}" }, "𝜦": { math: "\\mathbit{\\Lambda}" }, "𝜧": { math: "M" }, "𝜨": { math: "N" }, "𝜩": { math: "\\mathbit{\\Xi}" }, "𝜪": { math: "O" }, "𝜫": { math: "\\mathbit{\\Pi}" }, "𝜬": { math: "\\mathbit{P}" }, "𝜭": { math: "\\mathbit{O}" }, "𝜮": { math: "\\mathbit{\\Sigma}" }, "𝜯": { math: "\\mathbit{T}" }, "𝜰": { math: "\\mathbit{\\Upsilon}" }, "𝜱": { math: "\\mathbit{\\Phi}" }, "𝜲": { math: "\\mathbit{X}" }, "𝜳": { math: "\\mathbit{\\Psi}" }, "𝜴": { math: "\\mathbit{\\Omega}" }, "𝜵": { math: "\\mathbit{\\nabla}" }, "𝜶": { math: "\\mathbit{\\alpha}" }, "𝜷": { math: "\\mathbit{\\beta}" }, "𝜸": { math: "\\mathbit{\\gamma}" }, "𝜹": { math: "\\mathbit{\\delta}" }, "𝜺": { math: "\\mathbit{\\epsilon}" }, "𝜻": { math: "\\mathbit{\\zeta}" }, "𝜼": { math: "\\mathbit{\\eta}" }, "𝜽": { math: "\\mathbit{\\theta}" }, "𝜾": { math: "\\mathbit{\\imath}" }, "𝜿": { math: "\\mathbit{\\kappa}" }, "𝝀": { math: "\\mathbit{\\lambda}" }, "𝝁": { math: "\\mu" }, "𝝂": { math: "N" }, "𝝃": { math: "\\mathbit{\\xi}" }, "𝝄": { math: "O" }, "𝝅": { math: "\\mathbit{\\pi}" }, "𝝆": { math: "\\mathbit{\\rho}" }, "𝝇": { math: "\\mathbit{\\varsigma}" }, "𝝈": { math: "\\mathbit{\\sigma}" }, "𝝉": { math: "\\mathbit{\\tau}" }, "𝝊": { math: "\\mathbit{\\upsilon}" }, "𝝋": { math: "\\mathbit{\\varphi}" }, "𝝌": { math: "\\mathbit{\\chi}" }, "𝝍": { math: "\\mathbit{\\psi}" }, "𝝎": { math: "\\mathbit{\\omega}" }, "𝝏": { math: "\\partial" }, "𝝐": { math: "\\in" }, "𝝑": { math: "\\mathbit{\\vartheta}" }, "𝝒": { math: "\\mathbit{\\varkappa}" }, "𝝓": { math: "\\mathbit{\\phi}" }, "𝝔": { math: "\\mathbit{\\varrho}" }, "𝝕": { math: "\\mathbit{\\varpi}" }, "𝝖": { math: "\\mathsfbf{A}" }, "𝝗": { math: "\\mathsfbf{B}" }, "𝝘": { math: "\\mathsfbf{\\Gamma}" }, "𝝙": { math: "\\mathsfbf{\\Delta}" }, "𝝚": { math: "\\mathsfbf{E}" }, "𝝛": { math: "\\mathsfbf{Z}" }, "𝝜": { math: "\\mathsfbf{H}" }, "𝝝": { math: "\\mathsfbf{\\Theta}" }, "𝝞": { math: "\\mathsfbf{I}" }, "𝝟": { math: "\\mathsfbf{K}" }, "𝝠": { math: "\\mathsfbf{\\Lambda}" }, "𝝡": { math: "M" }, "𝝢": { math: "N" }, "𝝣": { math: "\\mathsfbf{\\Xi}" }, "𝝤": { math: "O" }, "𝝥": { math: "\\mathsfbf{\\Pi}" }, "𝝦": { math: "\\mathsfbf{P}" }, "𝝧": { math: "\\mathsfbf{\\Theta}" }, "𝝨": { math: "\\mathsfbf{\\Sigma}" }, "𝝩": { math: "\\mathsfbf{T}" }, "𝝪": { math: "\\mathsfbf{\\Upsilon}" }, "𝝫": { math: "\\mathsfbf{\\Phi}" }, "𝝬": { math: "\\mathsfbf{X}" }, "𝝭": { math: "\\mathsfbf{\\Psi}" }, "𝝮": { math: "\\mathsfbf{\\Omega}" }, "𝝯": { math: "\\mathsfbf{\\nabla}" }, "𝝰": { math: "\\mathsfbf{\\alpha}" }, "𝝱": { math: "\\mathsfbf{\\beta}" }, "𝝲": { math: "\\mathsfbf{\\gamma}" }, "𝝳": { math: "\\mathsfbf{\\delta}" }, "𝝴": { math: "\\mathsfbf{\\varepsilon}" }, "𝝵": { math: "\\mathsfbf{\\zeta}" }, "𝝶": { math: "\\mathsfbf{\\eta}" }, "𝝷": { math: "\\mathsfbf{\\theta}" }, "𝝸": { math: "\\mathsfbf{\\imath}" }, "𝝹": { math: "\\mathsfbf{\\kappa}" }, "𝝺": { math: "\\mathsfbf{\\lambda}" }, "𝝻": { math: "\\mu" }, "𝝼": { math: "\\nu" }, "𝝽": { math: "\\mathsfbf{\\xi}" }, "𝝾": { math: "o" }, "𝝿": { math: "\\mathsfbf{\\pi}" }, "𝞀": { math: "\\mathsfbf{\\rho}" }, "𝞁": { math: "\\mathsfbf{\\varsigma}" }, "𝞂": { math: "\\mathsfbf{\\sigma}" }, "𝞃": { math: "\\mathsfbf{\\tau}" }, "𝞄": { math: "\\mathsfbf{\\upsilon}" }, "𝞅": { math: "\\mathsfbf{\\varphi}" }, "𝞆": { math: "\\mathsfbf{\\chi}" }, "𝞇": { math: "\\mathsfbf{\\psi}" }, "𝞈": { math: "\\mathsfbf{\\omega}" }, "𝞉": { math: "\\partial" }, "𝞊": { math: "\\in" }, "𝞋": { math: "\\mathsfbf{\\vartheta}" }, "𝞌": { math: "\\mathsfbf{\\varkappa}" }, "𝞍": { math: "\\mathsfbf{\\phi}" }, "𝞎": { math: "\\mathsfbf{\\varrho}" }, "𝞏": { math: "\\mathsfbf{\\varpi}" }, "𝞐": { math: "\\mathsfbfsl{A}" }, "𝞑": { math: "\\mathsfbfsl{B}" }, "𝞒": { math: "\\mathsfbfsl{\\Gamma}" }, "𝞓": { math: "\\mathsfbfsl{\\Delta}" }, "𝞔": { math: "\\mathsfbfsl{E}" }, "𝞕": { math: "\\mathsfbfsl{Z}" }, "𝞖": { math: "\\mathsfbfsl{H}" }, "𝞗": { math: "\\mathsfbfsl{\\Theta}" }, "𝞘": { math: "\\mathsfbfsl{I}" }, "𝞙": { math: "\\mathsfbfsl{K}" }, "𝞚": { math: "\\mathsfbfsl{\\Lambda}" }, "𝞛": { math: "\\mathsfbfsl{M}" }, "𝞜": { math: "\\mathsfbfsl{N}" }, "𝞝": { math: "\\mathsfbfsl{\\Xi}" }, "𝞞": { math: "\\mathsfbfsl{O}" }, "𝞟": { math: "\\mathsfbfsl{\\Pi}" }, "𝞠": { math: "\\mathsfbfsl{P}" }, "𝞡": { math: "\\mathsfbfsl{\\Theta}" }, "𝞢": { math: "\\mathsfbfsl{\\Sigma}" }, "𝞣": { math: "\\mathsfbfsl{T}" }, "𝞤": { math: "\\mathsfbfsl{\\Upsilon}" }, "𝞥": { math: "\\mathsfbfsl{\\Phi}" }, "𝞦": { math: "\\mathsfbfsl{X}" }, "𝞧": { math: "\\mathsfbfsl{\\Psi}" }, "𝞨": { math: "\\mathsfbfsl{\\Omega}" }, "𝞩": { math: "\\mathsfbfsl{\\nabla}" }, "𝞪": { math: "\\mathsfbfsl{\\alpha}" }, "𝞫": { math: "\\mathsfbfsl{\\beta}" }, "𝞬": { math: "\\mathsfbfsl{\\gamma}" }, "𝞭": { math: "\\mathsfbfsl{\\delta}" }, "𝞮": { math: "\\mathsfbfsl{\\varepsilon}" }, "𝞯": { math: "\\mathsfbfsl{\\zeta}" }, "𝞰": { math: "\\mathsfbfsl{\\eta}" }, "𝞱": { math: "\\mathsfbfsl{\\theta}" }, "𝞲": { math: "\\mathsfbfsl{\\imath}" }, "𝞳": { math: "\\mathsfbfsl{\\kappa}" }, "𝞴": { math: "\\mathsfbfsl{\\lambda}" }, "𝞵": { math: "\\mu" }, "𝞶": { math: "\\nu" }, "𝞷": { math: "\\mathsfbfsl{\\xi}" }, "𝞸": { math: "o" }, "𝞹": { math: "\\mathsfbfsl{\\pi}" }, "𝞺": { math: "\\mathsfbfsl{\\rho}" }, "𝞻": { math: "\\mathsfbfsl{\\varsigma}" }, "𝞼": { math: "\\mathsfbfsl{\\sigma}" }, "𝞽": { math: "\\mathsfbfsl{\\tau}" }, "𝞾": { math: "\\mathsfbfsl{\\upsilon}" }, "𝞿": { math: "\\mathsfbfsl{\\varphi}" }, "𝟀": { math: "\\mathsfbfsl{\\chi}" }, "𝟁": { math: "\\mathsfbfsl{\\psi}" }, "𝟂": { math: "\\mathsfbfsl{\\omega}" }, "𝟃": { math: "\\partial" }, "𝟄": { math: "\\in" }, "𝟅": { math: "\\mathsfbfsl{\\vartheta}" }, "𝟆": { math: "\\mathsfbfsl{\\varkappa}" }, "𝟇": { math: "\\mathsfbfsl{\\phi}" }, "𝟈": { math: "\\mathsfbfsl{\\varrho}" }, "𝟉": { math: "\\mathsfbfsl{\\varpi}" }, "𝟊": { math: "\\mbfDigamma" }, "𝟋": { math: "\\mbfdigamma" }, "𝟎": { math: "\\mathbf{0}" }, "𝟏": { math: "\\mathbf{1}" }, "𝟐": { math: "\\mathbf{2}" }, "𝟑": { math: "\\mathbf{3}" }, "𝟒": { math: "\\mathbf{4}" }, "𝟓": { math: "\\mathbf{5}" }, "𝟔": { math: "\\mathbf{6}" }, "𝟕": { math: "\\mathbf{7}" }, "𝟖": { math: "\\mathbf{8}" }, "𝟗": { math: "\\mathbf{9}" }, "𝟘": { math: "\\mathbb{0}" }, "𝟙": { math: "\\mathbb{1}" }, "𝟚": { math: "\\mathbb{2}" }, "𝟛": { math: "\\mathbb{3}" }, "𝟜": { math: "\\mathbb{4}" }, "𝟝": { math: "\\mathbb{5}" }, "𝟞": { math: "\\mathbb{6}" }, "𝟟": { math: "\\mathbb{7}" }, "𝟠": { math: "\\mathbb{8}" }, "𝟡": { math: "\\mathbb{9}" }, "𝟢": { math: "\\mathsf{0}" }, "𝟣": { math: "\\mathsf{1}" }, "𝟤": { math: "\\mathsf{2}" }, "𝟥": { math: "\\mathsf{3}" }, "𝟦": { math: "\\mathsf{4}" }, "𝟧": { math: "\\mathsf{5}" }, "𝟨": { math: "\\mathsf{6}" }, "𝟩": { math: "\\mathsf{7}" }, "𝟪": { math: "\\mathsf{8}" }, "𝟫": { math: "\\mathsf{9}" }, "𝟬": { math: "\\mathsfbf{0}" }, "𝟭": { math: "\\mathsfbf{1}" }, "𝟮": { math: "\\mathsfbf{2}" }, "𝟯": { math: "\\mathsfbf{3}" }, "𝟰": { math: "\\mathsfbf{4}" }, "𝟱": { math: "\\mathsfbf{5}" }, "𝟲": { math: "\\mathsfbf{6}" }, "𝟳": { math: "\\mathsfbf{7}" }, "𝟴": { math: "\\mathsfbf{8}" }, "𝟵": { math: "\\mathsfbf{9}" }, "𝟶": { math: "\\mathtt{0}" }, "𝟷": { math: "\\mathtt{1}" }, "𝟸": { math: "\\mathtt{2}" }, "𝟹": { math: "\\mathtt{3}" }, "𝟺": { math: "\\mathtt{4}" }, "𝟻": { math: "\\mathtt{5}" }, "𝟼": { math: "\\mathtt{6}" }, "𝟽": { math: "\\mathtt{7}" }, "𝟾": { math: "\\mathtt{8}" }, "𝟿": { math: "\\mathtt{9}" } }; var $$2 = { math: "\\$", text: "\\$" }; var _$2 = { math: "\\_", text: "\\_" }; var require$$2 = { "#": { math: "\\#", text: "\\#" }, $: $$2, "%": { math: "\\%", text: "\\%" }, "&": { math: "\\&", text: "\\&" }, "/​": { text: "\\slash", commandspacer: true }, "<": { math: "<" }, ">": { math: ">" }, "\\": { math: "\\backslash", text: "\\textbackslash", commandspacer: true }, "^": { math: "\\sphat", text: "\\^" }, _: _$2, "{": { math: "\\lbrace", text: "\\{" }, "}": { math: "\\rbrace", text: "\\}" }, "~": { math: "\\sptilde", text: "\\textasciitilde", commandspacer: true }, " ": { math: "~", space: true, text: "~" }, " ": { text: " ", space: true }, " ": { math: "\\quad", space: true }, " ": { text: "\\hspace{0.6em}", space: true }, " ": { math: "\\quad", space: true, text: "\\hspace{1em}" }, " ": { text: "\\;", space: true }, " ": { text: "\\hspace{0.25em}", space: true }, " ": { text: "\\hspace{0.166em}", space: true }, " ": { text: "\\hphantom{0}", space: true }, " ": { text: "\\hphantom{,}", space: true }, " ": { text: "\\,", space: true }, " ": { math: "\\mkern1mu", space: true }, "​": { text: "\\mbox", commandspacer: true, space: true }, " ": { text: " ", space: true }, " ": { math: "\\:", space: true, text: "\\:" } }; var require$$3 = { "\\#": "#", "\\$": "$", "\\%": "%", "\\&": "&", "\\slash": "/​", "\\textless": "<", "\\textgreater": ">", "\\LaTeX": "LaTeX", "\\textbackslash": "\\", "\\backslash": "\\", "\\": "\\", "\\^": "^", "\\sphat": "^", "\\_": "_", "\\t{ia}": "i︠a︡", "{\\~ w}": "w̃", "\\{": "{", "\\lbrace": "{", "\\textbar": "|", "\\}": "}", "\\rbrace": "}", "\\textasciitilde": "~", "\\sptilde": "~", "\\textexclamdown": "¡", "\\textcent": "¢", "\\cent": "¢", "\\textsterling": "£", "\\pounds": "£", "\\textcurrency": "¤", "\\textyen": "¥", "\\yen": "¥", "\\textbrokenbar": "¦", "\\textsection": "§", "\\textasciidieresis": "¨", "\\spddot": "¨", "\\textcopyright": "©", "\\textordfeminine": "ª", "\\guillemotleft": "«", "\\lnot": "¬", "\\neg": "¬", "\\-": "­", "\\textregistered": "®", "\\circledR": "®", "\\textasciimacron": "¯", "\\textdegree": "°", "^\\circ": "°", "\\pm": "±", "^{2}": "²", "^{3}": "³", "\\textasciiacute": "´", "\\textmu": "µ", "\\textparagraph": "¶", "^{1}": "¹", "\\textordmasculine": "º", "\\guillemotright": "»", "\\frac{1}{4}": "¼", "\\textonequarter": "¼", "\\frac{1}{2}": "½", "\\textonehalf": "½", "\\frac{3}{4}": "¾", "\\textthreequarters": "¾", "\\textquestiondown": "¿", "\\`A": "À", "\\'A": "Á", "\\^A": "Â", "\\~A": "Ã", "\\\"A": "Ä", "\\AA": "Å", "\\r{A}": "Å", "{\\r A}": "Å", "\\AE": "Æ", "\\c{C}": "Ç", "\\`E": "È", "\\'E": "É", "\\^E": "Ê", "\\\"E": "Ë", "\\`I": "Ì", "\\'I": "Í", "\\^I": "Î", "\\\"I": "Ï", "\\DH": "Ð", "\\~N": "Ñ", "\\`O": "Ò", "\\'O": "Ó", "\\^O": "Ô", "\\~O": "Õ", "\\\"O": "Ö", "\\texttimes": "×", "\\times": "×", "\\O": "Ø", "\\`U": "Ù", "\\'U": "Ú", "\\^U": "Û", "\\\"U": "Ü", "\\'Y": "Ý", "\\TH": "Þ", "\\ss": "ß", "\\`a": "à", "\\'a": "á", "\\^a": "â", "\\~a": "ã", "\\\"a": "ä", "\\aa": "å", "\\r{a}": "å", "{\\r a}": "å", "\\ae": "æ", "\\c{c}": "ç", "\\`e": "è", "\\'e": "é", "\\^e": "ê", "\\\"e": "ë", "\\`i": "ì", "\\`\\i": "ì", "\\'i": "í", "\\'\\i": "í", "\\^i": "î", "\\^\\i": "î", "\\\"i": "ï", "\\\"\\i": "ï", "\\dh": "ð", "\\eth": "ð", "\\~n": "ñ", "\\`o": "ò", "\\'o": "ó", "\\^o": "ô", "\\~o": "õ", "\\\"o": "ö", "\\div": "÷", "\\o": "ø", "\\`u": "ù", "\\'u": "ú", "\\^u": "û", "\\\"u": "ü", "\\'y": "ý", "\\th": "þ", "\\\"y": "ÿ", "\\=A": "Ā", "\\=a": "ā", "\\u{A}": "Ă", "\\u{a}": "ă", "\\k{A}": "Ą", "\\k{a}": "ą", "\\'C": "Ć", "\\'c": "ć", "\\^C": "Ĉ", "\\^c": "ĉ", "\\.C": "Ċ", "\\.c": "ċ", "\\v{C}": "Č", "\\v{c}": "č", "\\v{D}": "Ď", "\\v{d}": "ď", "\\DJ": "Đ", "\\dj": "đ", "\\=E": "Ē", "\\=e": "ē", "\\u{E}": "Ĕ", "\\u{e}": "ĕ", "\\.E": "Ė", "\\.e": "ė", "\\k{E}": "Ę", "\\k{e}": "ę", "\\v{E}": "Ě", "\\v{e}": "ě", "\\^G": "Ĝ", "\\^g": "ĝ", "\\u{G}": "Ğ", "\\u{g}": "ğ", "\\.G": "Ġ", "\\.g": "ġ", "\\c{G}": "Ģ", "\\c{g}": "ģ", "\\^H": "Ĥ", "\\^h": "ĥ", "{\\fontencoding{LELA}\\selectfont\\char40}": "Ħ", "\\Elzxh": "ħ", "\\~I": "Ĩ", "\\~i": "ĩ", "\\=I": "Ī", "\\=i": "ī", "\\u{I}": "Ĭ", "{\\u \\i}": "ĭ", "\\k{I}": "Į", "\\k{i}": "į", "\\.I": "İ", "\\i": "ı", "\\imath": "ı", "\\^J": "Ĵ", "\\^\\j": "ĵ", "\\c{K}": "Ķ", "\\c{k}": "ķ", "{\\fontencoding{LELA}\\selectfont\\char91}": "ĸ", "\\'L": "Ĺ", "\\'l": "ĺ", "\\c{L}": "Ļ", "\\c{l}": "ļ", "\\v{L}": "Ľ", "\\v{l}": "ľ", "{\\fontencoding{LELA}\\selectfont\\char201}": "Ŀ", "{\\fontencoding{LELA}\\selectfont\\char202}": "ŀ", "\\L": "Ł", "\\l": "ł", "\\'N": "Ń", "\\'n": "ń", "\\c{N}": "Ņ", "\\c{n}": "ņ", "\\v{N}": "Ň", "\\v{n}": "ň", "\\NG": "Ŋ", "\\ng": "ŋ", "\\=O": "Ō", "\\=o": "ō", "\\u{O}": "Ŏ", "\\u{o}": "ŏ", "\\H{O}": "Ő", "\\H{o}": "ő", "\\OE": "Œ", "\\oe": "œ", "\\'R": "Ŕ", "\\'r": "ŕ", "\\c{R}": "Ŗ", "\\c{r}": "ŗ", "\\v{R}": "Ř", "\\v{r}": "ř", "\\'S": "Ś", "\\'s": "ś", "\\^S": "Ŝ", "\\^s": "ŝ", "\\c{S}": "Ş", "\\c{s}": "ş", "\\v{S}": "Š", "\\v{s}": "š", "\\c{T}": "Ţ", "\\c{t}": "ţ", "\\v{T}": "Ť", "\\v{t}": "ť", "{\\fontencoding{LELA}\\selectfont\\char47}": "Ŧ", "{\\fontencoding{LELA}\\selectfont\\char63}": "ŧ", "\\~U": "Ũ", "\\~u": "ũ", "\\=U": "Ū", "\\=u": "ū", "\\u{U}": "Ŭ", "\\u{u}": "ŭ", "\\r{U}": "Ů", "{\\r U}": "Ů", "\\r{u}": "ů", "\\ocirc{u}": "ů", "{\\r u}": "ů", "\\H{U}": "Ű", "\\H{u}": "ű", "\\k{U}": "Ų", "\\k{u}": "ų", "\\^W": "Ŵ", "\\^w": "ŵ", "\\^Y": "Ŷ", "\\^y": "ŷ", "\\\"Y": "Ÿ", "\\'Z": "Ź", "\\'z": "ź", "\\.Z": "Ż", "\\.z": "ż", "\\v{Z}": "Ž", "\\v{z}": "ž", "\\texthvlig": "ƕ", "\\textnrleg": "ƞ", "\\textesh": "ƪ", "\\Zbar": "Ƶ", "{\\fontencoding{LELA}\\selectfont\\char195}": "ƺ", "\\textdoublepipe": "ǂ", "\\v{A}": "Ǎ", "\\v{a}": "ǎ", "\\v{I}": "Ǐ", "\\v{i}": "ǐ", "\\v{O}": "Ǒ", "\\v{o}": "ǒ", "\\v{U}": "Ǔ", "\\v{u}": "ǔ", "\\v{G}": "Ǧ", "\\v{g}": "ǧ", "\\v{K}": "Ǩ", "\\v{k}": "ǩ", "\\k{O}": "Ǫ", "\\k{o}": "ǫ", "\\v{j}": "ǰ", "\\'G": "Ǵ", "\\'g": "ǵ", "\\c{E}": "Ȩ", "\\c{e}": "ȩ", "\\jmath": "ȷ", "\\Elztrna": "ɐ", "\\Elztrnsa": "ɒ", "\\Elzopeno": "ɔ", "\\Elzrtld": "ɖ", "{\\fontencoding{LEIP}\\selectfont\\char61}": "ɘ", "\\Elzschwa": "ə", "\\varepsilon": "ɛ", "\\Elzpgamma": "ɣ", "\\Elzpbgam": "ɤ", "\\Elztrnh": "ɥ", "\\Elzbtdl": "ɬ", "\\Elzrtll": "ɭ", "\\Elztrnm": "ɯ", "\\Elztrnmlr": "ɰ", "\\Elzltlmr": "ɱ", "\\Elzltln": "ɲ", "\\Elzrtln": "ɳ", "\\Elzclomeg": "ɷ", "\\textphi": "ɸ", "\\Elztrnr": "ɹ", "\\Elztrnrl": "ɺ", "\\Elzrttrnr": "ɻ", "\\Elzrl": "ɼ", "\\Elzrtlr": "ɽ", "\\Elzfhr": "ɾ", "{\\fontencoding{LEIP}\\selectfont\\char202}": "ɿ", "\\Elzrtls": "ʂ", "\\Elzesh": "ʃ", "\\Elztrnt": "ʇ", "\\Elzrtlt": "ʈ", "\\Elzpupsil": "ʊ", "\\Elzpscrv": "ʋ", "\\Elzinvv": "ʌ", "\\Elzinvw": "ʍ", "\\Elztrny": "ʎ", "\\Elzrtlz": "ʐ", "\\Elzyogh": "ʒ", "\\Elzglst": "ʔ", "\\Elzreglst": "ʕ", "\\Elzinglst": "ʖ", "\\textturnk": "ʞ", "\\Elzdyogh": "ʤ", "\\Elztesh": "ʧ", "\\textsuperscript{h}": "ʰ", "^{h}": "ʰ", "\\textsuperscript{j}": "ʲ", "^{j}": "ʲ", "\\textsuperscript{r}": "ʳ", "^{r}": "ʳ", "\\textsuperscript{w}": "ʷ", "^{w}": "ʷ", "\\textsuperscript{y}": "ʸ", "^{y}": "ʸ", "\\lasp": "ʿ", "\\textasciicircum": "ˆ", "\\textasciicaron": "ˇ", "\\Elzverts": "ˈ", "\\Elzverti": "ˌ", "\\Elzlmrk": "ː", "\\Elzhlmrk": "ˑ", "\\Elzsbrhr": "˒", "\\Elzsblhr": "˓", "\\Elzrais": "˔", "\\Elzlow": "˕", "\\textasciibreve": "˘", "\\textperiodcentered": "˙", "\\texttildelow": "˜", "\\textsuperscript{l}": "ˡ", "^{l}": "ˡ", "\\textsuperscript{s}": "ˢ", "^{s}": "ˢ", "\\textsuperscript{x}": "ˣ", "^{x}": "ˣ", "\\tone{55}": "˥", "\\tone{44}": "˦", "\\tone{33}": "˧", "\\tone{22}": "˨", "\\tone{11}": "˩", "\\`": "̀", "\\grave": "̀", "\\textgravemacron": "̀̄", "\\textgravedot": "̀̇", "\\'": "́", "\\acute": "́", "\\textacutemacron": "́̄", "\\textacutewedge": "́̌", "\\hat": "̂", "\\textcircumdot": "̂̇", "\\~": "̃", "\\tilde": "̃", "\\texttildedot": "̃̇", "\\=": "̄", "\\bar": "̄", "\\overline": "̅", "\\u": "̆", "\\breve": "̆", "\\textbrevemacron": "̆̄", "\\.": "̇", "\\dot": "̇", "\\textdotacute": "̇́", "\\\"": "̈", "\\ddot": "̈", "\\ovhook": "̉", "\\r": "̊", "\\mathring": "̊", "\\textringmacron": "̊̄", "\\H": "̋", "\\check": "̌", "\\v": "̌", "\\textvbaraccent": "̍", "\\textdoublevbaraccent": "̎", "\\textdoublegrave": "̏", "\\textdotbreve": "̐", "{\\fontencoding{LECO}\\selectfont\\char177}": "̑", "\\oturnedcomma": "̒", "\\ocommatopright": "̕", "\\textsubgrave": "̖", "\\textadvancing": "̘", "\\textretracting": "̙", "\\droang": "̚", "\\textcorner": "̚", "\\textsublhalfring": "̜", "\\textraising": "̝", "\\textlowering": "̞", "\\textsubplus": "̟", "\\Elzpalh": "̡", "\\Elzrh": "̢", "\\d": "̣", "\\textsubumlaut": "̤", "\\textsubring": "̥", "\\c": "̧", "\\k": "̨", "\\textsyllabic": "̩", "\\Elzsbbrg": "̪", "\\textsubbridge": "̪", "{\\fontencoding{LECO}\\selectfont\\char203}": "̫", "\\textsubwedge": "̬", "\\textsubarch": "̯", "\\utilde": "̰", "\\textsubtilde": "̰", "\\textsubbar": "̱", "\\underbar": "̱", "\\underline": "̲", "\\textsuperimposetilde": "̴", "\\Elzxl": "̵", "\\Elzbar": "̶", "{\\fontencoding{LECO}\\selectfont\\char215}": "̷", "\\not": "̸", "\\textsubrhalfring": "̹", "\\textinvsubbridge": "̺", "\\textsubsquare": "̻", "\\textseagull": "̼", "\\textovercross": "̽", "{\\fontencoding{LECO}\\selectfont\\char225}": "͡", "\\'H": "Ή", "{\\'{}I}": "Ί", "{\\'{}O}": "Ό", "\\mathrm{'Y}": "Ύ", "\\mathrm{'\\Omega}": "Ώ", "\\acute{\\ddot{\\iota}}": "ΐ", "\\Gamma": "Γ", "\\varGamma": "Γ", "\\Delta": "Δ", "\\Theta": "Θ", "\\Lambda": "Λ", "\\Xi": "Ξ", "\\Pi": "Π", "\\Sigma": "Σ", "\\Upsilon": "Υ", "\\Phi": "Φ", "\\Psi": "Ψ", "\\Omega": "Ω", "\\mathrm{\\ddot{I}}": "Ϊ", "\\mathrm{\\ddot{Y}}": "Ϋ", "{\\'$\\alpha$}": "ά", "\\acute{\\epsilon}": "έ", "\\acute{\\eta}": "ή", "\\acute{\\iota}": "ί", "\\acute{\\ddot{\\upsilon}}": "ΰ", "\\alpha": "α", "\\beta": "β", "\\gamma": "γ", "\\delta": "δ", "\\zeta": "ζ", "\\eta": "η", "\\texttheta": "θ", "\\theta": "θ", "\\iota": "ι", "\\kappa": "κ", "\\lambda": "λ", "\\nu": "ν", "\\xi": "ξ", "\\pi": "π", "\\rho": "ρ", "\\varsigma": "ς", "\\sigma": "σ", "\\tau": "τ", "\\upsilon": "υ", "\\varphi": "φ", "\\chi": "χ", "\\psi": "ψ", "\\omega": "ω", "\\ddot{\\iota}": "ϊ", "\\ddot{\\upsilon}": "ϋ", "\\acute{\\upsilon}": "ύ", "\\acute{\\omega}": "ώ", "\\Pisymbol{ppi022}{87}": "ϐ", "\\varbeta": "ϐ", "\\textvartheta": "ϑ", "\\vartheta": "ϑ", "\\phi": "ϕ", "\\varpi": "ϖ", "\\Qoppa": "Ϙ", "\\qoppa": "ϙ", "\\Stigma": "Ϛ", "\\stigma": "ϛ", "\\Digamma": "Ϝ", "\\digamma": "ϝ", "\\Koppa": "Ϟ", "\\koppa": "ϟ", "\\Sampi": "Ϡ", "\\sampi": "ϡ", "\\varkappa": "ϰ", "\\varrho": "ϱ", "\\textTheta": "ϴ", "\\upvarTheta": "ϴ", "\\epsilon": "ϵ", "\\backepsilon": "϶", "\\cyrchar\\CYRYO": "Ё", "\\cyrchar\\CYRDJE": "Ђ", "\\cyrchar{\\'\\CYRG}": "Ѓ", "\\cyrchar\\CYRIE": "Є", "\\cyrchar\\CYRDZE": "Ѕ", "\\cyrchar\\CYRII": "І", "\\cyrchar\\CYRYI": "Ї", "\\cyrchar\\CYRJE": "Ј", "\\cyrchar\\CYRLJE": "Љ", "\\cyrchar\\CYRNJE": "Њ", "\\cyrchar\\CYRTSHE": "Ћ", "\\cyrchar{\\'\\CYRK}": "Ќ", "\\cyrchar\\CYRUSHRT": "Ў", "\\cyrchar\\CYRDZHE": "Џ", "\\cyrchar\\CYRA": "А", "\\cyrchar\\CYRB": "Б", "\\cyrchar\\CYRV": "В", "\\cyrchar\\CYRG": "Г", "\\cyrchar\\CYRD": "Д", "\\cyrchar\\CYRE": "Е", "\\cyrchar\\CYRZH": "Ж", "\\cyrchar\\CYRZ": "З", "\\cyrchar\\CYRI": "И", "\\cyrchar\\CYRISHRT": "Й", "\\cyrchar\\CYRK": "К", "\\cyrchar\\CYRL": "Л", "\\cyrchar\\CYRM": "М", "\\cyrchar\\CYRN": "Н", "\\cyrchar\\CYRO": "О", "\\cyrchar\\CYRP": "П", "\\cyrchar\\CYRR": "Р", "\\cyrchar\\CYRS": "С", "\\cyrchar\\CYRT": "Т", "\\cyrchar\\CYRU": "У", "\\cyrchar\\CYRF": "Ф", "\\cyrchar\\CYRH": "Х", "\\cyrchar\\CYRC": "Ц", "\\cyrchar\\CYRCH": "Ч", "\\cyrchar\\CYRSH": "Ш", "\\cyrchar\\CYRSHCH": "Щ", "\\cyrchar\\CYRHRDSN": "Ъ", "\\bud": "Ъ", "\\cdprime": "Ъ", "\\cyrchar\\CYRERY": "Ы", "\\cyrchar\\CYRSFTSN": "Ь", "\\cprime": "Ь", "\\cyrchar\\CYREREV": "Э", "\\cyrchar\\CYRYU": "Ю", "\\cyrchar\\CYRYA": "Я", "\\cyrchar\\cyra": "а", "\\cyrchar\\cyrb": "б", "\\cyrchar\\cyrv": "в", "\\cyrchar\\cyrg": "г", "\\cyrchar\\cyrd": "д", "\\cyrchar\\cyre": "е", "\\cyrchar\\cyrzh": "ж", "\\cyrchar\\cyrz": "з", "\\cyrchar\\cyri": "и", "\\cyrchar\\cyrishrt": "й", "\\cyrchar\\cyrk": "к", "\\cyrchar\\cyrl": "л", "\\cyrchar\\cyrm": "м", "\\cyrchar\\cyrn": "н", "\\cyrchar\\cyro": "о", "\\cyrchar\\cyrp": "п", "\\cyrchar\\cyrr": "р", "\\cyrchar\\cyrs": "с", "\\cyrchar\\cyrt": "т", "\\cyrchar\\cyru": "у", "\\cyrchar\\cyrf": "ф", "\\cyrchar\\cyrh": "х", "\\cyrchar\\cyrc": "ц", "\\cyrchar\\cyrch": "ч", "\\cyrchar\\cyrsh": "ш", "\\cyrchar\\cyrshch": "щ", "\\cyrchar\\cyrhrdsn": "ъ", "\\cyrchar\\cyrery": "ы", "\\cyrchar\\cyrsftsn": "ь", "\\cyrchar\\cyrerev": "э", "\\cyrchar\\cyryu": "ю", "\\cyrchar\\cyrya": "я", "\\cyrchar\\cyryo": "ё", "\\cyrchar\\cyrdje": "ђ", "\\cyrchar{\\'\\cyrg}": "ѓ", "\\cyrchar\\cyrie": "є", "\\cyrchar\\cyrdze": "ѕ", "\\cyrchar\\cyrii": "і", "\\cyrchar\\cyryi": "ї", "\\cyrchar\\cyrje": "ј", "\\cyrchar\\cyrlje": "љ", "\\cyrchar\\cyrnje": "њ", "\\cyrchar\\cyrtshe": "ћ", "\\cyrchar{\\'\\cyrk}": "ќ", "\\cyrchar\\cyrushrt": "ў", "\\cyrchar\\cyrdzhe": "џ", "\\cyrchar\\CYROMEGA": "Ѡ", "\\cyrchar\\cyromega": "ѡ", "\\cyrchar\\CYRYAT": "Ѣ", "\\cyrchar\\CYRIOTE": "Ѥ", "\\cyrchar\\cyriote": "ѥ", "\\cyrchar\\CYRLYUS": "Ѧ", "\\cyrchar\\cyrlyus": "ѧ", "\\cyrchar\\CYRIOTLYUS": "Ѩ", "\\cyrchar\\cyriotlyus": "ѩ", "\\cyrchar\\CYRBYUS": "Ѫ", "\\cyrchar\\CYRIOTBYUS": "Ѭ", "\\cyrchar\\cyriotbyus": "ѭ", "\\cyrchar\\CYRKSI": "Ѯ", "\\cyrchar\\cyrksi": "ѯ", "\\cyrchar\\CYRPSI": "Ѱ", "\\cyrchar\\cyrpsi": "ѱ", "\\cyrchar\\CYRFITA": "Ѳ", "\\cyrchar\\CYRIZH": "Ѵ", "\\cyrchar\\CYRUK": "Ѹ", "\\cyrchar\\cyruk": "ѹ", "\\cyrchar\\CYROMEGARND": "Ѻ", "\\cyrchar\\cyromegarnd": "ѻ", "\\cyrchar\\CYROMEGATITLO": "Ѽ", "\\cyrchar\\cyromegatitlo": "ѽ", "\\cyrchar\\CYROT": "Ѿ", "\\cyrchar\\cyrot": "ѿ", "\\cyrchar\\CYRKOPPA": "Ҁ", "\\cyrchar\\cyrkoppa": "ҁ", "\\cyrchar\\cyrthousands": "҂", "\\cyrchar\\cyrhundredthousands": "҈", "\\cyrchar\\cyrmillions": "҉", "\\cyrchar\\CYRSEMISFTSN": "Ҍ", "\\cyrchar\\cyrsemisftsn": "ҍ", "\\cyrchar\\CYRRTICK": "Ҏ", "\\cyrchar\\cyrrtick": "ҏ", "\\cyrchar\\CYRGUP": "Ґ", "\\cyrchar\\cyrgup": "ґ", "\\cyrchar\\CYRGHCRS": "Ғ", "\\cyrchar\\cyrghcrs": "ғ", "\\cyrchar\\CYRGHK": "Ҕ", "\\cyrchar\\cyrghk": "ҕ", "\\cyrchar\\CYRZHDSC": "Җ", "\\cyrchar\\cyrzhdsc": "җ", "\\cyrchar\\CYRZDSC": "Ҙ", "\\cyrchar\\cyrzdsc": "ҙ", "\\cyrchar\\CYRKDSC": "Қ", "\\cyrchar\\cyrkdsc": "қ", "\\cyrchar\\CYRKVCRS": "Ҝ", "\\cyrchar\\cyrkvcrs": "ҝ", "\\cyrchar\\CYRKHCRS": "Ҟ", "\\cyrchar\\cyrkhcrs": "ҟ", "\\cyrchar\\CYRKBEAK": "Ҡ", "\\cyrchar\\cyrkbeak": "ҡ", "\\cyrchar\\CYRNDSC": "Ң", "\\cyrchar\\cyrndsc": "ң", "\\cyrchar\\CYRNG": "Ҥ", "\\cyrchar\\cyrng": "ҥ", "\\cyrchar\\CYRPHK": "Ҧ", "\\cyrchar\\cyrphk": "ҧ", "\\cyrchar\\CYRABHHA": "Ҩ", "\\cyrchar\\cyrabhha": "ҩ", "\\cyrchar\\CYRSDSC": "Ҫ", "\\cyrchar\\cyrsdsc": "ҫ", "\\cyrchar\\CYRTDSC": "Ҭ", "\\cyrchar\\cyrtdsc": "ҭ", "\\cyrchar\\CYRY": "Ү", "\\cyrchar\\cyry": "ү", "\\cyrchar\\CYRYHCRS": "Ұ", "\\cyrchar\\cyryhcrs": "ұ", "\\cyrchar\\CYRHDSC": "Ҳ", "\\cyrchar\\cyrhdsc": "ҳ", "\\cyrchar\\CYRTETSE": "Ҵ", "\\cyrchar\\cyrtetse": "ҵ", "\\cyrchar\\CYRCHRDSC": "Ҷ", "\\cyrchar\\cyrchrdsc": "ҷ", "\\cyrchar\\CYRCHVCRS": "Ҹ", "\\cyrchar\\cyrchvcrs": "ҹ", "\\cyrchar\\CYRSHHA": "Һ", "\\cyrchar\\cyrshha": "һ", "\\cyrchar\\CYRABHCH": "Ҽ", "\\cyrchar\\cyrabhch": "ҽ", "\\cyrchar\\CYRABHCHDSC": "Ҿ", "\\cyrchar\\cyrabhchdsc": "ҿ", "\\cyrchar\\CYRpalochka": "Ӏ", "\\cyrchar\\CYRKHK": "Ӄ", "\\cyrchar\\cyrkhk": "ӄ", "\\cyrchar\\CYRNHK": "Ӈ", "\\cyrchar\\cyrnhk": "ӈ", "\\cyrchar\\CYRCHLDSC": "Ӌ", "\\cyrchar\\cyrchldsc": "ӌ", "\\cyrchar\\CYRAE": "Ӕ", "\\cyrchar\\cyrae": "ӕ", "\\cyrchar\\CYRSCHWA": "Ә", "\\cyrchar\\cyrschwa": "ә", "\\cyrchar\\CYRABHDZE": "Ӡ", "\\cyrchar\\cyrabhdze": "ӡ", "\\cyrchar\\CYROTLD": "Ө", "\\cyrchar\\cyrotld": "ө", "\\\\backslash": "ࡱ", "\\textsuperscript{a}": "ᵃ", "^{a}": "ᵃ", "\\textsuperscript{b}": "ᵇ", "^{b}": "ᵇ", "\\textsuperscript{d}": "ᵈ", "^{d}": "ᵈ", "\\textsuperscript{e}": "ᵉ", "^{e}": "ᵉ", "\\textsuperscript{g}": "ᵍ", "^{g}": "ᵍ", "\\textsuperscript{k}": "ᵏ", "^{k}": "ᵏ", "\\textsuperscript{m}": "ᵐ", "^{m}": "ᵐ", "\\textsuperscript{o}": "ᵒ", "^{o}": "ᵒ", "\\textsuperscript{p}": "ᵖ", "^{p}": "ᵖ", "\\textsuperscript{t}": "ᵗ", "^{t}": "ᵗ", "\\textsuperscript{u}": "ᵘ", "^{u}": "ᵘ", "\\textsuperscript{v}": "ᵛ", "^{v}": "ᵛ", "\\textsuperscript{c}": "ᶜ", "^{c}": "ᶜ", "\\textsuperscript{f}": "ᶠ", "^{f}": "ᶠ", "\\textsuperscript{z}": "ᶻ", "^{z}": "ᶻ", "\\.B": "Ḃ", "\\.b": "ḃ", "\\d{B}": "Ḅ", "\\d{b}": "ḅ", "\\b{B}": "Ḇ", "\\b{b}": "ḇ", "\\.D": "Ḋ", "\\.d": "ḋ", "\\d{D}": "Ḍ", "\\d{d}": "ḍ", "\\b{D}": "Ḏ", "\\b{d}": "ḏ", "\\c{D}": "Ḑ", "\\c{d}": "ḑ", "\\c{\\u{E}}": "Ḝ", "\\c{\\u{e}}": "ḝ", "\\.F": "Ḟ", "\\.f": "ḟ", "\\=G": "Ḡ", "\\=g": "ḡ", "\\.H": "Ḣ", "\\.h": "ḣ", "\\d{H}": "Ḥ", "\\d{h}": "ḥ", "\\\"H": "Ḧ", "\\\"h": "ḧ", "\\c{H}": "Ḩ", "\\c{h}": "ḩ", "\\'K": "Ḱ", "\\'k": "ḱ", "\\d{K}": "Ḳ", "\\d{k}": "ḳ", "\\b{K}": "Ḵ", "\\b{k}": "ḵ", "\\d{L}": "Ḷ", "\\d{l}": "ḷ", "\\b{L}": "Ḻ", "\\b{l}": "ḻ", "\\'M": "Ḿ", "\\'m": "ḿ", "\\.M": "Ṁ", "\\.m": "ṁ", "\\d{M}": "Ṃ", "\\d{m}": "ṃ", "\\.N": "Ṅ", "\\.n": "ṅ", "\\d{N}": "Ṇ", "\\d{n}": "ṇ", "\\b{N}": "Ṉ", "\\b{n}": "ṉ", "\\'P": "Ṕ", "\\'p": "ṕ", "\\.P": "Ṗ", "\\.p": "ṗ", "\\.R": "Ṙ", "\\.r": "ṙ", "\\d{R}": "Ṛ", "\\d{r}": "ṛ", "\\b{R}": "Ṟ", "\\b{r}": "ṟ", "\\.S": "Ṡ", "\\.s": "ṡ", "\\d{S}": "Ṣ", "\\d{s}": "ṣ", "\\.T": "Ṫ", "\\.t": "ṫ", "\\d{T}": "Ṭ", "\\d{t}": "ṭ", "\\b{T}": "Ṯ", "\\b{t}": "ṯ", "\\~V": "Ṽ", "\\~v": "ṽ", "\\d{V}": "Ṿ", "\\d{v}": "ṿ", "\\`W": "Ẁ", "\\`w": "ẁ", "\\'W": "Ẃ", "\\'w": "ẃ", "\\\"W": "Ẅ", "\\\"w": "ẅ", "\\.W": "Ẇ", "\\.w": "ẇ", "\\d{W}": "Ẉ", "\\d{w}": "ẉ", "\\.X": "Ẋ", "\\.x": "ẋ", "\\\"X": "Ẍ", "\\\"x": "ẍ", "\\.Y": "Ẏ", "\\.y": "ẏ", "\\^Z": "Ẑ", "\\^z": "ẑ", "\\d{Z}": "Ẓ", "\\d{z}": "ẓ", "\\b{Z}": "Ẕ", "\\b{z}": "ẕ", "\\b{h}": "ẖ", "\\\"t": "ẗ", "\\r{w}": "ẘ", "\\r{y}": "ẙ", "\\d{A}": "Ạ", "\\d{a}": "ạ", "\\d{E}": "Ẹ", "\\d{e}": "ẹ", "\\~E": "Ẽ", "\\~e": "ẽ", "\\d{I}": "Ị", "\\d{i}": "ị", "\\d{O}": "Ọ", "\\d{o}": "ọ", "\\d{U}": "Ụ", "\\d{u}": "ụ", "\\`Y": "Ỳ", "\\`y": "ỳ", "\\d{Y}": "Ỵ", "\\d{y}": "ỵ", "\\~Y": "Ỹ", "\\~y": "ỹ", "\\hspace{0.6em}": " ", "\\hspace{1em}": " ", "\\quad": " ", "\\;": " ", "\\hspace{0.25em}": " ", "\\hspace{0.166em}": " ", "\\hphantom{0}": " ", "\\hphantom{,}": " ", "\\,": " ", "\\mkern1mu": " ", "\\mbox": "​", "{\\aftergroup\\ignorespaces}": "‌", "\\textendash": "–", "\\textemdash": "—", "\\rule{1em}{1pt}": "―", "\\horizbar": "―", "\\Vert": "‖", "\\twolowline": "‗", "\\textquoteleft": "‘", "\\textquoteright": "’", "\\Elzreapos": "‛", "\\textquotedblleft": "“", "\\textquotedblright": "”", "\\quotedblbase": "‟", "\\textdagger": "†", "\\dagger": "†", "\\textdaggerdbl": "‡", "\\ddagger": "‡", "\\textbullet": "•", "\\enleadertwodots": "‥", "\\ldots": "…", "\\textperthousand": "‰", "\\textpertenthousand": "‱", "{'}": "′", "{''}": "″", "{'''}": "‴", "\\backprime": "‵", "\\backdprime": "‶", "\\backtrprime": "‷", "\\caretinsert": "‸", "\\guilsinglleft": "‹", "\\guilsinglright": "›", "\\Exclam": "‼", "\\hyphenbullet": "⁃", "\\fracslash": "⁄", "\\Question": "⁇", "\\closure": "⁐", "\\:": " ", "\\nolinebreak": "⁠", "^{0}": "⁰", "\\textsuperscript{i}": "ⁱ", "^{i}": "ⁱ", "^{4}": "⁴", "^{5}": "⁵", "^{6}": "⁶", "^{7}": "⁷", "^{8}": "⁸", "^{9}": "⁹", "^{+}": "⁺", "^{-}": "⁻", "^{=}": "⁼", "^{(}": "⁽", "^{)}": "⁾", "\\textsuperscript{n}": "ⁿ", "^{n}": "ⁿ", "_{0}": "₀", "_{1}": "₁", "_{2}": "₂", "_{3}": "₃", "_{4}": "₄", "_{5}": "₅", "_{6}": "₆", "_{7}": "₇", "_{8}": "₈", "_{9}": "₉", "_{+}": "₊", "_{-}": "₋", "_{=}": "₌", "_{(}": "₍", "_{)}": "₎", "\\textsubscript{a}": "ₐ", "_{a}": "ₐ", "\\textsubscript{e}": "ₑ", "_{e}": "ₑ", "\\textsubscript{o}": "ₒ", "_{o}": "ₒ", "\\textsubscript{x}": "ₓ", "_{x}": "ₓ", "\\textsubscript{\\textschwa}": "ₔ", "\\textsubscript{h}": "ₕ", "_{h}": "ₕ", "\\textsubscript{k}": "ₖ", "_{k}": "ₖ", "\\textsubscript{l}": "ₗ", "_{l}": "ₗ", "\\textsubscript{m}": "ₘ", "_{m}": "ₘ", "\\textsubscript{n}": "ₙ", "_{n}": "ₙ", "\\textsubscript{p}": "ₚ", "_{p}": "ₚ", "\\textsubscript{s}": "ₛ", "_{s}": "ₛ", "\\textsubscript{t}": "ₜ", "_{t}": "ₜ", "\\ensuremath{\\Elzpes}": "₧", "\\texteuro": "€", "\\euro": "€", "\\lvec": "⃐", "\\vertoverlay": "⃒", "\\LVec": "⃖", "\\vec": "⃗", "\\dddot": "⃛", "\\ddddot": "⃜", "\\enclosecircle": "⃝", "\\enclosesquare": "⃞", "\\enclosediamond": "⃟", "\\overleftrightarrow": "⃡", "\\enclosetriangle": "⃤", "\\annuity": "⃧", "\\threeunderdot": "⃨", "\\widebridgeabove": "⃩", "\\underrightharpoondown": "⃬", "\\underleftharpoondown": "⃭", "\\underleftarrow": "⃮", "\\underrightarrow": "⃯", "\\asteraccent": "⃰", "\\mathbb{C}": "ℂ", "\\textcelsius": "℃", "\\Euler": "ℇ", "\\mathscr{g}": "ℊ", "\\mathscr{H}": "ℋ", "\\mathfrak{H}": "ℌ", "\\mathbb{H}": "ℍ", "\\Planckconst": "ℎ", "\\hslash": "ℏ", "\\mathscr{I}": "ℐ", "\\mathfrak{I}": "ℑ", "\\mathscr{L}": "ℒ", "\\mathscr{l}": "ℓ", "\\mathbb{N}": "ℕ", "\\cyrchar\\textnumero": "№", "\\textcircledP": "℗", "\\wp": "℘", "\\mathbb{P}": "ℙ", "\\mathbb{Q}": "ℚ", "\\mathscr{R}": "ℛ", "\\mathfrak{R}": "ℜ", "\\mathbb{R}": "ℝ", "\\Elzxrat": "℞", "\\textservicemark": "℠", "\\texttrademark": "™", "\\mathbb{Z}": "ℤ", "\\mho": "℧", "\\mathfrak{Z}": "ℨ", "\\textriota": "℩", "\\Angstroem": "Å", "\\mathscr{B}": "ℬ", "\\mathfrak{C}": "ℭ", "\\textestimated": "℮", "\\mathscr{e}": "ℯ", "\\mathscr{E}": "ℰ", "\\mathscr{F}": "ℱ", "\\Finv": "Ⅎ", "\\mathscr{M}": "ℳ", "\\mathscr{o}": "ℴ", "\\aleph": "ℵ", "\\beth": "ℶ", "\\gimel": "ℷ", "\\daleth": "ℸ", "\\mathbb{\\pi}": "ℼ", "\\mathbb{\\gamma}": "ℽ", "\\mathbb{\\Gamma}": "ℾ", "\\mathbb{\\Pi}": "ℿ", "\\mathbb{\\Sigma}": "⅀", "\\Game": "⅁", "\\sansLturned": "⅂", "\\sansLmirrored": "⅃", "\\Yup": "⅄", "\\CapitalDifferentialD": "ⅅ", "\\DifferentialD": "ⅆ", "\\ExponetialE": "ⅇ", "\\ComplexI": "ⅈ", "\\ComplexJ": "ⅉ", "\\PropertyLine": "⅊", "\\invamp": "⅋", "\\frac{1}{7}": "⅐", "\\textfrac{1}{7}": "⅐", "\\frac{1}{9}": "⅑", "\\textfrac{1}{9}": "⅑", "\\frac{1}{10}": "⅒", "\\textfrac{1}{10}": "⅒", "\\frac{1}{3}": "⅓", "\\textfrac{1}{3}": "⅓", "\\frac{2}{3}": "⅔", "\\textfrac{2}{3}": "⅔", "\\frac{1}{5}": "⅕", "\\textfrac{1}{5}": "⅕", "\\frac{2}{5}": "⅖", "\\textfrac{2}{5}": "⅖", "\\frac{3}{5}": "⅗", "\\textfrac{3}{5}": "⅗", "\\frac{4}{5}": "⅘", "\\textfrac{4}{5}": "⅘", "\\frac{1}{6}": "⅙", "\\textfrac{1}{6}": "⅙", "\\frac{5}{6}": "⅚", "\\textfrac{5}{6}": "⅚", "\\frac{1}{8}": "⅛", "\\textfrac{1}{8}": "⅛", "\\frac{3}{8}": "⅜", "\\textfrac{3}{8}": "⅜", "\\frac{5}{8}": "⅝", "\\textfrac{5}{8}": "⅝", "\\frac{7}{8}": "⅞", "\\textfrac{7}{8}": "⅞", "\\frac{1}": "⅟", "\\textfrac{1}": "⅟", "\\frac{0}{3}": "↉", "\\textfrac{0}{3}": "↉", "\\leftarrow": "←", "\\uparrow": "↑", "\\textrightarrow": "→", "\\rightarrow": "→", "\\to": "→", "\\downarrow": "↓", "\\leftrightarrow": "↔", "\\updownarrow": "↕", "\\nwarrow": "↖", "\\nearrow": "↗", "\\searrow": "↘", "\\swarrow": "↙", "\\nleftarrow": "↚", "\\nrightarrow": "↛", "\\arrowwaveleft": "↜", "\\arrowwaveright": "↝", "\\twoheadleftarrow": "↞", "\\twoheaduparrow": "↟", "\\twoheadrightarrow": "↠", "\\twoheaddownarrow": "↡", "\\leftarrowtail": "↢", "\\rightarrowtail": "↣", "\\mapsfrom": "↤", "\\MapsUp": "↥", "\\mapsto": "↦", "\\MapsDown": "↧", "\\updownarrowbar": "↨", "\\hookleftarrow": "↩", "\\hookrightarrow": "↪", "\\looparrowleft": "↫", "\\looparrowright": "↬", "\\leftrightsquigarrow": "↭", "\\nleftrightarrow": "↮", "\\lightning": "↯", "\\Lsh": "↰", "\\Rsh": "↱", "\\dlsh": "↲", "\\reflectbox{\\carriagereturn}": "↳", "\\linefeed": "↴", "\\carriagereturn": "↵", "\\curvearrowleft": "↶", "\\curvearrowright": "↷", "\\barovernorthwestarrow": "↸", "\\barleftarrowrightarrowba": "↹", "\\circlearrowleft": "↺", "\\circlearrowright": "↻", "\\leftharpoonup": "↼", "\\leftharpoondown": "↽", "\\upharpoonright": "↾", "\\upharpoonleft": "↿", "\\rightharpoonup": "⇀", "\\rightharpoondown": "⇁", "\\downharpoonright": "⇂", "\\downharpoonleft": "⇃", "\\rightleftarrows": "⇄", "\\dblarrowupdown": "⇅", "\\leftrightarrows": "⇆", "\\leftleftarrows": "⇇", "\\upuparrows": "⇈", "\\rightrightarrows": "⇉", "\\downdownarrows": "⇊", "\\leftrightharpoons": "⇋", "\\rightleftharpoons": "⇌", "\\nLeftarrow": "⇍", "\\nLeftrightarrow": "⇎", "\\nRightarrow": "⇏", "\\Leftarrow": "⇐", "\\Uparrow": "⇑", "\\Rightarrow": "⇒", "\\Downarrow": "⇓", "\\Leftrightarrow": "⇔", "\\Updownarrow": "⇕", "\\Nwarrow": "⇖", "\\Nearrow": "⇗", "\\Searrow": "⇘", "\\Swarrow": "⇙", "\\Lleftarrow": "⇚", "\\Rrightarrow": "⇛", "\\leftsquigarrow": "⇜", "\\rightsquigarrow": "⇝", "\\nHuparrow": "⇞", "\\nHdownarrow": "⇟", "\\dashleftarrow": "⇠", "\\updasharrow": "⇡", "\\dashrightarrow": "⇢", "\\downdasharrow": "⇣", "\\LeftArrowBar": "⇤", "\\RightArrowBar": "⇥", "\\leftwhitearrow": "⇦", "\\upwhitearrow": "⇧", "\\rightwhitearrow": "⇨", "\\downwhitearrow": "⇩", "\\whitearrowupfrombar": "⇪", "\\circleonrightarrow": "⇴", "\\DownArrowUpArrow": "⇵", "\\rightthreearrows": "⇶", "\\nvleftarrow": "⇷", "\\pfun": "⇸", "\\nvleftrightarrow": "⇹", "\\nVleftarrow": "⇺", "\\ffun": "⇻", "\\nVleftrightarrow": "⇼", "\\leftarrowtriangle": "⇽", "\\rightarrowtriangle": "⇾", "\\leftrightarrowtriangle": "⇿", "\\forall": "∀", "\\complement": "∁", "\\partial": "∂", "\\exists": "∃", "\\nexists": "∄", "\\varnothing": "∅", "\\increment": "∆", "\\nabla": "∇", "\\in": "∈", "\\not\\in": "∉", "\\smallin": "∊", "\\ni": "∋", "\\not\\ni": "∌", "\\smallni": "∍", "\\QED": "∎", "\\prod": "∏", "\\coprod": "∐", "\\sum": "∑", "\\mp": "∓", "\\dotplus": "∔", "\\setminus": "∖", "{_\\ast}": "∗", "\\circ": "∘", "\\bullet": "∙", "\\surd": "√", "\\sqrt[3]": "∛", "\\sqrt[4]": "∜", "\\propto": "∝", "\\infty": "∞", "\\rightangle": "∟", "\\angle": "∠", "\\measuredangle": "∡", "\\sphericalangle": "∢", "\\mid": "∣", "\\nmid": "∤", "\\parallel": "∥", "\\nparallel": "∦", "\\wedge": "∧", "\\vee": "∨", "\\cap": "∩", "\\cup": "∪", "\\int": "∫", "{\\int\\!\\int}": "∬", "{\\int\\!\\int\\!\\int}": "∭", "\\oint": "∮", "\\surfintegral": "∯", "\\volintegral": "∰", "\\clwintegral": "∱", "\\lcirclerightint": "∲", "\\rcirclerightint": "∳", "\\therefore": "∴", "\\because": "∵", "\\Colon": "∷", "\\dotdiv": "∸", "\\eqcolon": "∹", "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}": "∺", "\\homothetic": "∻", "\\sim": "∼", "\\backsim": "∽", "\\lazysinv": "∾", "\\AC": "∿", "\\wr": "≀", "\\not\\sim": "≁", "\\texteqsim": "≂", "\\NotEqualTilde": "≂̸", "\\simeq": "≃", "\\not\\simeq": "≄", "\\cong": "≅", "\\approxnotequal": "≆", "\\not\\cong": "≇", "\\approx": "≈", "\\not\\approx": "≉", "\\approxeq": "≊", "\\tildetrpl": "≋", "\\not\\apid": "≋̸", "\\allequal": "≌", "\\asymp": "≍", "\\Bumpeq": "≎", "\\NotHumpDownHump": "≎̸", "\\bumpeq": "≏", "\\NotHumpEqual": "≏̸", "\\doteq": "≐", "\\not\\doteq": "≐̸", "\\doteqdot": "≑", "\\fallingdotseq": "≒", "\\risingdotseq": "≓", "\\coloneq": "≔", "\\eqcirc": "≖", "\\circeq": "≗", "\\arceq": "≘", "\\estimates": "≙", "\\starequal": "≛", "\\triangleq": "≜", "\\eqdef": "≝", "\\measeq": "≞", "\\neq": "≠", "\\equiv": "≡", "\\not\\equiv": "≢", "\\Equiv": "≣", "\\leq": "≤", "\\le": "≤", "\\geq": "≥", "\\leqq": "≦", "\\geqq": "≧", "\\lneqq": "≨", "\\lvertneqq": "≨︀", "\\gneqq": "≩", "\\gvertneqq": "≩︀", "\\ll": "≪", "\\NotLessLess": "≪̸", "\\gg": "≫", "\\NotGreaterGreater": "≫̸", "\\between": "≬", "{\\not\\kern-0.3em\\times}": "≭", "\\not<": "≮", "\\not>": "≯", "\\not\\leq": "≰", "\\not\\geq": "≱", "\\lessequivlnt": "≲", "\\greaterequivlnt": "≳", "\\lessgtr": "≶", "\\gtrless": "≷", "\\notlessgreater": "≸", "\\notgreaterless": "≹", "\\prec": "≺", "\\succ": "≻", "\\preccurlyeq": "≼", "\\succcurlyeq": "≽", "\\NotPrecedesTilde": "≾̸", "\\NotSucceedsTilde": "≿̸", "\\not\\prec": "⊀", "\\not\\succ": "⊁", "\\subset": "⊂", "\\supset": "⊃", "\\not\\subset": "⊄", "\\not\\supset": "⊅", "\\subseteq": "⊆", "\\supseteq": "⊇", "\\not\\subseteq": "⊈", "\\not\\supseteq": "⊉", "\\subsetneq": "⊊", "\\varsubsetneqq": "⊊︀", "\\supsetneq": "⊋", "\\varsupsetneq": "⊋︀", "\\cupleftarrow": "⊌", "\\cupdot": "⊍", "\\uplus": "⊎", "\\sqsubset": "⊏", "\\NotSquareSubset": "⊏̸", "\\sqsupset": "⊐", "\\NotSquareSuperset": "⊐̸", "\\sqsubseteq": "⊑", "\\sqsupseteq": "⊒", "\\sqcap": "⊓", "\\sqcup": "⊔", "\\oplus": "⊕", "\\ominus": "⊖", "\\otimes": "⊗", "\\oslash": "⊘", "\\odot": "⊙", "\\circledcirc": "⊚", "\\circledast": "⊛", "\\circledequal": "⊜", "\\circleddash": "⊝", "\\boxplus": "⊞", "\\boxminus": "⊟", "\\boxtimes": "⊠", "\\boxdot": "⊡", "\\vdash": "⊢", "\\dashv": "⊣", "\\top": "⊤", "\\assert": "⊦", "\\truestate": "⊧", "\\forcesextra": "⊨", "\\Vdash": "⊩", "\\Vvdash": "⊪", "\\VDash": "⊫", "\\nvdash": "⊬", "\\nvDash": "⊭", "\\nVdash": "⊮", "\\nVDash": "⊯", "\\prurel": "⊰", "\\scurel": "⊱", "\\vartriangleleft": "⊲", "\\vartriangleright": "⊳", "\\trianglelefteq": "⊴", "\\trianglerighteq": "⊵", "\\original": "⊶", "\\image": "⊷", "\\multimap": "⊸", "\\hermitconjmatrix": "⊹", "\\intercal": "⊺", "\\veebar": "⊻", "\\barvee": "⊽", "\\rightanglearc": "⊾", "\\varlrtriangle": "⊿", "\\bigcap": "⋂", "\\bigcup": "⋃", "\\diamond": "⋄", "\\cdot": "⋅", "\\star": "⋆", "\\divideontimes": "⋇", "\\bowtie": "⋈", "\\ltimes": "⋉", "\\rtimes": "⋊", "\\leftthreetimes": "⋋", "\\rightthreetimes": "⋌", "\\backsimeq": "⋍", "\\curlyvee": "⋎", "\\curlywedge": "⋏", "\\Subset": "⋐", "\\Supset": "⋑", "\\Cap": "⋒", "\\Cup": "⋓", "\\pitchfork": "⋔", "\\hash": "⋕", "\\lessdot": "⋖", "\\gtrdot": "⋗", "\\verymuchless": "⋘", "\\verymuchgreater": "⋙", "\\lesseqgtr": "⋚", "\\gtreqless": "⋛", "\\eqless": "⋜", "\\eqgtr": "⋝", "\\curlyeqprec": "⋞", "\\curlyeqsucc": "⋟", "\\npreceq": "⋠", "\\nsucceq": "⋡", "\\not\\sqsubseteq": "⋢", "\\not\\sqsupseteq": "⋣", "\\sqsubsetneq": "⋤", "\\Elzsqspne": "⋥", "\\lnsim": "⋦", "\\gnsim": "⋧", "\\precedesnotsimilar": "⋨", "\\succnsim": "⋩", "\\ntriangleleft": "⋪", "\\ntriangleright": "⋫", "\\ntrianglelefteq": "⋬", "\\ntrianglerighteq": "⋭", "\\vdots": "⋮", "\\cdots": "⋯", "\\upslopeellipsis": "⋰", "\\downslopeellipsis": "⋱", "\\disin": "⋲", "\\varisins": "⋳", "\\isins": "⋴", "\\isindot": "⋵", "\\barin": "⋶", "\\isinobar": "⋷", "\\isinvb": "⋸", "\\isinE": "⋹", "\\nisd": "⋺", "\\varnis": "⋻", "\\nis": "⋼", "\\varniobar": "⋽", "\\niobar": "⋾", "\\bagmember": "⋿", "\\diameter": "⌀", "\\house": "⌂", "\\barwedge": "⌅", "\\varbarwedge": "⌅", "\\perspcorrespond": "⌆", "\\lceil": "⌈", "\\rceil": "⌉", "\\lfloor": "⌊", "\\rfloor": "⌋", "\\invneg": "⌐", "\\wasylozenge": "⌑", "\\profline": "⌒", "\\profsurf": "⌓", "\\recorder": "⌕", "{\\mathchar\"2208}": "⌖", "\\viewdata": "⌗", "\\turnednot": "⌙", "\\ulcorner": "⌜", "\\urcorner": "⌝", "\\llcorner": "⌞", "\\lrcorner": "⌟", "\\inttop": "⌠", "\\intbottom": "⌡", "\\frown": "⌢", "\\smile": "⌣", "\\varhexagonlrbonds": "⌬", "\\conictaper": "⌲", "\\topbot": "⌶", "\\APLinv": "⌹", "\\notslash": "⌿", "\\notbackslash": "⍀", "\\APLleftarrowbox": "⍇", "\\APLrightarrowbox": "⍈", "\\invdiameter": "⍉", "\\APLuparrowbox": "⍐", "\\APLboxupcaret": "⍓", "\\APLdownarrowbox": "⍗", "\\APLcomment": "⍝", "\\APLinput": "⍞", "\\APLlog": "⍟", "\\APLboxquestion": "⍰", "\\rangledownzigzagarrow": "⍼", "\\hexagon": "⎔", "\\lparenuend": "⎛", "\\lparenextender": "⎜", "\\lparenlend": "⎝", "\\rparenuend": "⎞", "\\rparenextender": "⎟", "\\rparenlend": "⎠", "\\lbrackuend": "⎡", "\\lbrackextender": "⎢", "\\Elzdlcorn": "⎣", "\\rbrackuend": "⎤", "\\rbrackextender": "⎥", "\\rbracklend": "⎦", "\\lbraceuend": "⎧", "\\lbracemid": "⎨", "\\lbracelend": "⎩", "\\vbraceextender": "⎪", "\\rbraceuend": "⎫", "\\rbracemid": "⎬", "\\rbracelend": "⎭", "\\intextender": "⎮", "\\harrowextender": "⎯", "\\lmoustache": "⎰", "\\rmoustache": "⎱", "\\sumtop": "⎲", "\\sumbottom": "⎳", "\\overbracket": "⎴", "\\underbracket": "⎵", "\\bbrktbrk": "⎶", "\\sqrtbottom": "⎷", "\\lvboxline": "⎸", "\\rvboxline": "⎹", "\\varcarriagereturn": "⏎", "\\overparen": "⏜", "\\underparen": "⏝", "\\overbrace": "⏞", "\\underbrace": "⏟", "\\obrbrak": "⏠", "\\ubrbrak": "⏡", "\\trapezium": "⏢", "\\benzenr": "⏣", "\\strns": "⏤", "\\fltns": "⏥", "\\accurrent": "⏦", "\\elinters": "⏧", "\\textvisiblespace": "␣", "\\ding{172}": "①", "\\ding{173}": "②", "\\ding{174}": "③", "\\ding{175}": "④", "\\ding{176}": "⑤", "\\ding{177}": "⑥", "\\ding{178}": "⑦", "\\ding{179}": "⑧", "\\ding{180}": "⑨", "\\ding{181}": "⑩", "\\circledS": "Ⓢ", "\\Elzdshfnc": "┆", "\\Elzsqfnw": "┙", "\\diagup": "╱", "\\blockuphalf": "▀", "\\blocklowhalf": "▄", "\\blockfull": "█", "\\blocklefthalf": "▌", "\\blockrighthalf": "▐", "\\blockqtrshaded": "░", "\\blockhalfshaded": "▒", "\\blockthreeqtrshaded": "▓", "\\ding{110}": "■", "\\mdlgblksquare": "■", "\\square": "□", "\\Box": "□", "\\squoval": "▢", "\\blackinwhitesquare": "▣", "\\squarehfill": "▤", "\\squarevfill": "▥", "\\squarehvfill": "▦", "\\squarenwsefill": "▧", "\\squareneswfill": "▨", "\\squarecrossfill": "▩", "\\smwhtsquare": "▫", "\\hrectangleblack": "▬", "\\fbox{~~}": "▭", "\\vrectangleblack": "▮", "\\Elzvrecto": "▯", "\\parallelogramblack": "▰", "\\ding{115}": "▲", "\\bigblacktriangleup": "▲", "\\bigtriangleup": "△", "\\blacktriangle": "▴", "\\vartriangle": "▵", "\\RHD": "▶", "\\rhd": "▷", "\\blacktriangleright": "▸", "\\triangleright": "▹", "\\blackpointerright": "►", "\\whitepointerright": "▻", "\\ding{116}": "▼", "\\bigblacktriangledown": "▼", "\\bigtriangledown": "▽", "\\blacktriangledown": "▾", "\\triangledown": "▿", "\\LHD": "◀", "\\lhd": "◁", "\\blacktriangleleft": "◂", "\\triangleleft": "◃", "\\blackpointerleft": "◄", "\\whitepointerleft": "◅", "\\ding{117}": "◆", "\\Diamondblack": "◆", "\\Diamond": "◇", "\\blackinwhitediamond": "◈", "\\fisheye": "◉", "\\lozenge": "◊", "\\dottedcircle": "◌", "\\circlevertfill": "◍", "\\bullseye": "◎", "\\ding{108}": "●", "\\CIRCLE": "●", "\\Elzcirfl": "◐", "\\Elzcirfr": "◑", "\\Elzcirfb": "◒", "\\circletophalfblack": "◓", "\\circleurquadblack": "◔", "\\blackcircleulquadwhite": "◕", "\\LEFTCIRCLE": "◖", "\\ding{119}": "◗", "\\RIGHTCIRCLE": "◗", "\\Elzrvbull": "◘", "\\inversewhitecircle": "◙", "\\invwhiteupperhalfcircle": "◚", "\\invwhitelowerhalfcircle": "◛", "\\ularc": "◜", "\\urarc": "◝", "\\lrarc": "◞", "\\llarc": "◟", "\\topsemicircle": "◠", "\\botsemicircle": "◡", "\\lrblacktriangle": "◢", "\\llblacktriangle": "◣", "\\ulblacktriangle": "◤", "\\urblacktriangle": "◥", "\\smwhtcircle": "◦", "\\Elzsqfl": "◧", "\\Elzsqfr": "◨", "\\squareulblack": "◩", "\\Elzsqfse": "◪", "\\boxbar": "◫", "\\trianglecdot": "◬", "\\triangleleftblack": "◭", "\\trianglerightblack": "◮", "\\bigcirc": "◯", "\\squareulquad": "◰", "\\squarellquad": "◱", "\\squarelrquad": "◲", "\\squareurquad": "◳", "\\circleulquad": "◴", "\\circlellquad": "◵", "\\circlelrquad": "◶", "\\circleurquad": "◷", "\\ultriangle": "◸", "\\urtriangle": "◹", "\\lltriangle": "◺", "\\mdsmwhtsquare": "◽", "\\mdsmblksquare": "◾", "\\lrtriangle": "◿", "\\ding{72}": "★", "\\bigstar": "★", "\\ding{73}": "☆", "\\bigwhitestar": "☆", "\\Sun": "☉", "\\ding{37}": "☎", "\\Square": "☐", "\\CheckedBox": "☑", "\\XBox": "☒", "\\steaming": "☕", "\\ding{42}": "☛", "\\ding{43}": "☞", "\\pointright": "☞", "\\skull": "☠", "\\danger": "☡", "\\radiation": "☢", "\\biohazard": "☣", "\\yinyang": "☯", "\\frownie": "☹", "\\smiley": "☺", "\\blacksmiley": "☻", "\\sun": "☼", "\\rightmoon": "☽", "\\leftmoon": "☾", "\\mercury": "☿", "\\venus": "♀", "\\female": "♀", "\\earth": "♁", "\\male": "♂", "\\jupiter": "♃", "\\saturn": "♄", "\\uranus": "♅", "\\neptune": "♆", "\\pluto": "♇", "\\aries": "♈", "\\taurus": "♉", "\\gemini": "♊", "\\cancer": "♋", "\\leo": "♌", "\\virgo": "♍", "\\libra": "♎", "\\scorpio": "♏", "\\sagittarius": "♐", "\\capricornus": "♑", "\\aquarius": "♒", "\\pisces": "♓", "\\ding{171}": "♠", "\\spadesuit": "♠", "\\heartsuit": "♡", "\\ding{168}": "♣", "\\clubsuit": "♣", "\\varspadesuit": "♤", "\\ding{170}": "♥", "\\varheartsuit": "♥", "\\ding{169}": "♦", "\\vardiamondsuit": "♦", "\\varclubsuit": "♧", "\\quarternote": "♩", "\\eighthnote": "♪", "\\twonotes": "♫", "\\sixteenthnote": "♬", "\\flat": "♭", "\\natural": "♮", "\\sharp": "♯", "\\recycle": "♻", "\\acidfree": "♾", "\\dicei": "⚀", "\\diceii": "⚁", "\\diceiii": "⚂", "\\diceiv": "⚃", "\\dicev": "⚄", "\\dicevi": "⚅", "\\circledrightdot": "⚆", "\\circledtwodots": "⚇", "\\blackcircledrightdot": "⚈", "\\blackcircledtwodots": "⚉", "\\anchor": "⚓", "\\swords": "⚔", "\\warning": "⚠", "\\Hermaphrodite": "⚥", "\\medcirc": "⚪", "\\medbullet": "⚫", "\\mdsmwhtcircle": "⚬", "\\neuter": "⚲", "\\ding{33}": "✁", "\\ding{34}": "✂", "\\ding{35}": "✃", "\\ding{36}": "✄", "\\ding{38}": "✆", "\\ding{39}": "✇", "\\ding{40}": "✈", "\\ding{41}": "✉", "\\ding{44}": "✌", "\\ding{45}": "✍", "\\ding{46}": "✎", "\\pencil": "✎", "\\ding{47}": "✏", "\\ding{48}": "✐", "\\ding{49}": "✑", "\\ding{50}": "✒", "\\ding{51}": "✓", "\\checkmark": "✓", "\\ding{52}": "✔", "\\ding{53}": "✕", "\\ding{54}": "✖", "\\ding{55}": "✗", "\\ballotx": "✗", "\\ding{56}": "✘", "\\ding{57}": "✙", "\\ding{58}": "✚", "\\ding{59}": "✛", "\\ding{60}": "✜", "\\ding{61}": "✝", "\\ding{62}": "✞", "\\ding{63}": "✟", "\\ding{64}": "✠", "\\maltese": "✠", "\\ding{65}": "✡", "\\ding{66}": "✢", "\\ding{67}": "✣", "\\ding{68}": "✤", "\\ding{69}": "✥", "\\ding{70}": "✦", "\\ding{71}": "✧", "\\ding{74}": "✪", "\\circledstar": "✪", "\\ding{75}": "✫", "\\ding{76}": "✬", "\\ding{77}": "✭", "\\ding{78}": "✮", "\\ding{79}": "✯", "\\ding{80}": "✰", "\\ding{81}": "✱", "\\ding{82}": "✲", "\\ding{83}": "✳", "\\ding{84}": "✴", "\\ding{85}": "✵", "\\ding{86}": "✶", "\\varstar": "✶", "\\ding{87}": "✷", "\\ding{88}": "✸", "\\ding{89}": "✹", "\\ding{90}": "✺", "\\ding{91}": "✻", "\\ding{92}": "✼", "\\ding{93}": "✽", "\\dingasterisk": "✽", "\\ding{94}": "✾", "\\ding{95}": "✿", "\\ding{96}": "❀", "\\ding{97}": "❁", "\\ding{98}": "❂", "\\ding{99}": "❃", "\\ding{100}": "❄", "\\ding{101}": "❅", "\\ding{102}": "❆", "\\ding{103}": "❇", "\\ding{104}": "❈", "\\ding{105}": "❉", "\\ding{106}": "❊", "\\ding{107}": "❋", "\\ding{109}": "❍", "\\ding{111}": "❏", "\\ding{112}": "❐", "\\ding{113}": "❑", "\\ding{114}": "❒", "\\ding{118}": "❖", "\\ding{120}": "❘", "\\ding{121}": "❙", "\\ding{122}": "❚", "\\ding{123}": "❛", "\\ding{124}": "❜", "\\ding{125}": "❝", "\\ding{126}": "❞", "\\ding{161}": "❡", "\\ding{162}": "❢", "\\ding{163}": "❣", "\\ding{164}": "❤", "\\ding{165}": "❥", "\\ding{166}": "❦", "\\ding{167}": "❧", "\\ding{182}": "❶", "\\ding{183}": "❷", "\\ding{184}": "❸", "\\ding{185}": "❹", "\\ding{186}": "❺", "\\ding{187}": "❻", "\\ding{188}": "❼", "\\ding{189}": "❽", "\\ding{190}": "❾", "\\ding{191}": "❿", "\\ding{192}": "➀", "\\ding{193}": "➁", "\\ding{194}": "➂", "\\ding{195}": "➃", "\\ding{196}": "➄", "\\ding{197}": "➅", "\\ding{198}": "➆", "\\ding{199}": "➇", "\\ding{200}": "➈", "\\ding{201}": "➉", "\\ding{202}": "➊", "\\ding{203}": "➋", "\\ding{204}": "➌", "\\ding{205}": "➍", "\\ding{206}": "➎", "\\ding{207}": "➏", "\\ding{208}": "➐", "\\ding{209}": "➑", "\\ding{210}": "➒", "\\ding{211}": "➓", "\\ding{212}": "➔", "\\ding{216}": "➘", "\\ding{217}": "➙", "\\ding{218}": "➚", "\\ding{219}": "➛", "\\draftingarrow": "➛", "\\ding{220}": "➜", "\\ding{221}": "➝", "\\ding{222}": "➞", "\\ding{223}": "➟", "\\ding{224}": "➠", "\\ding{225}": "➡", "\\ding{226}": "➢", "\\arrowbullet": "➢", "\\ding{227}": "➣", "\\ding{228}": "➤", "\\ding{229}": "➥", "\\ding{230}": "➦", "\\ding{231}": "➧", "\\ding{232}": "➨", "\\ding{233}": "➩", "\\ding{234}": "➪", "\\ding{235}": "➫", "\\ding{236}": "➬", "\\ding{237}": "➭", "\\ding{238}": "➮", "\\ding{239}": "➯", "\\ding{241}": "➱", "\\ding{242}": "➲", "\\ding{243}": "➳", "\\ding{244}": "➴", "\\ding{245}": "➵", "\\ding{246}": "➶", "\\ding{247}": "➷", "\\ding{248}": "➸", "\\ding{249}": "➹", "\\ding{250}": "➺", "\\ding{251}": "➻", "\\ding{252}": "➼", "\\ding{253}": "➽", "\\ding{254}": "➾", "\\threedangle": "⟀", "\\whiteinwhitetriangle": "⟁", "\\perp": "⟂", "\\subsetcirc": "⟃", "\\supsetcirc": "⟄", "\\Lbag": "⟅", "\\Rbag": "⟆", "\\veedot": "⟇", "\\bsolhsub": "⟈", "\\suphsol": "⟉", "\\longdivision": "⟌", "\\Diamonddot": "⟐", "\\wedgedot": "⟑", "\\upin": "⟒", "\\pullback": "⟓", "\\pushout": "⟔", "\\leftouterjoin": "⟕", "\\rightouterjoin": "⟖", "\\fullouterjoin": "⟗", "\\bigbot": "⟘", "\\bigtop": "⟙", "\\DashVDash": "⟚", "\\dashVdash": "⟛", "\\multimapinv": "⟜", "\\vlongdash": "⟝", "\\longdashv": "⟞", "\\cirbot": "⟟", "\\lozengeminus": "⟠", "\\concavediamond": "⟡", "\\concavediamondtickleft": "⟢", "\\concavediamondtickright": "⟣", "\\whitesquaretickleft": "⟤", "\\whitesquaretickright": "⟥", "\\llbracket": "⟦", "\\rrbracket": "⟧", "\\langle": "⟨", "\\rangle": "⟩", "\\lang": "⟪", "\\rang": "⟫", "\\Lbrbrak": "⟬", "\\Rbrbrak": "⟭", "\\lgroup": "⟮", "\\rgroup": "⟯", "\\UUparrow": "⟰", "\\DDownarrow": "⟱", "\\acwgapcirclearrow": "⟲", "\\cwgapcirclearrow": "⟳", "\\rightarrowonoplus": "⟴", "\\longleftarrow": "⟵", "\\longrightarrow": "⟶", "\\longleftrightarrow": "⟷", "\\Longleftarrow": "⟸", "\\Longrightarrow": "⟹", "\\Longleftrightarrow": "⟺", "\\longmapsfrom": "⟻", "\\longmapsto": "⟼", "\\Longmapsfrom": "⟽", "\\Longmapsto": "⟾", "\\sim\\joinrel\\leadsto": "⟿", "\\psur": "⤀", "\\nVtwoheadrightarrow": "⤁", "\\nvLeftarrow": "⤂", "\\nvRightarrow": "⤃", "\\nvLeftrightarrow": "⤄", "\\Mapsfrom": "⤆", "\\Mapsto": "⤇", "\\downarrowbarred": "⤈", "\\uparrowbarred": "⤉", "\\Uuparrow": "⤊", "\\Ddownarrow": "⤋", "\\leftbkarrow": "⤌", "\\rightbkarrow": "⤍", "\\leftdbkarrow": "⤎", "\\dbkarow": "⤏", "\\drbkarow": "⤐", "\\rightdotarrow": "⤑", "\\UpArrowBar": "⤒", "\\DownArrowBar": "⤓", "\\pinj": "⤔", "\\finj": "⤕", "\\bij": "⤖", "\\nvtwoheadrightarrowtail": "⤗", "\\nVtwoheadrightarrowtail": "⤘", "\\lefttail": "⤙", "\\righttail": "⤚", "\\leftdbltail": "⤛", "\\rightdbltail": "⤜", "\\diamondleftarrow": "⤝", "\\rightarrowdiamond": "⤞", "\\diamondleftarrowbar": "⤟", "\\barrightarrowdiamond": "⤠", "\\nwsearrow": "⤡", "\\neswarrow": "⤢", "\\rdiagovfdiag": "⤫", "\\fdiagovrdiag": "⤬", "\\seovnearrow": "⤭", "\\neovsearrow": "⤮", "\\fdiagovnearrow": "⤯", "\\rdiagovsearrow": "⤰", "\\neovnwarrow": "⤱", "\\nwovnearrow": "⤲", "\\uprightcurvearrow": "⤴", "\\downrightcurvedarrow": "⤵", "\\cwrightarcarrow": "⤸", "\\acwleftarcarrow": "⤹", "\\acwoverarcarrow": "⤺", "\\acwunderarcarrow": "⤻", "\\curvearrowrightminus": "⤼", "\\curvearrowleftplus": "⤽", "\\cwundercurvearrow": "⤾", "\\ccwundercurvearrow": "⤿", "\\Elolarr": "⥀", "\\Elorarr": "⥁", "\\ElzRlarr": "⥂", "\\leftarrowshortrightarrow": "⥃", "\\ElzrLarr": "⥄", "\\rightarrowplus": "⥅", "\\leftarrowplus": "⥆", "\\Elzrarrx": "⥇", "\\leftrightarrowcircle": "⥈", "\\twoheaduparrowcircle": "⥉", "\\leftrightharpoon": "⥊", "\\rightleftharpoon": "⥋", "\\updownharpoonrightleft": "⥌", "\\updownharpoonleftright": "⥍", "\\LeftRightVector": "⥎", "\\RightUpDownVector": "⥏", "\\DownLeftRightVector": "⥐", "\\LeftUpDownVector": "⥑", "\\LeftVectorBar": "⥒", "\\RightVectorBar": "⥓", "\\RightUpVectorBar": "⥔", "\\RightDownVectorBar": "⥕", "\\DownLeftVectorBar": "⥖", "\\DownRightVectorBar": "⥗", "\\LeftUpVectorBar": "⥘", "\\LeftDownVectorBar": "⥙", "\\LeftTeeVector": "⥚", "\\RightTeeVector": "⥛", "\\RightUpTeeVector": "⥜", "\\RightDownTeeVector": "⥝", "\\DownLeftTeeVector": "⥞", "\\DownRightTeeVector": "⥟", "\\LeftUpTeeVector": "⥠", "\\LeftDownTeeVector": "⥡", "\\leftleftharpoons": "⥢", "\\upupharpoons": "⥣", "\\rightrightharpoons": "⥤", "\\downdownharpoons": "⥥", "\\leftrightharpoonsup": "⥦", "\\leftrightharpoonsdown": "⥧", "\\rightleftharpoonsup": "⥨", "\\rightleftharpoonsdown": "⥩", "\\leftbarharpoon": "⥪", "\\barleftharpoon": "⥫", "\\rightbarharpoon": "⥬", "\\barrightharpoon": "⥭", "\\UpEquilibrium": "⥮", "\\ReverseUpEquilibrium": "⥯", "\\RoundImplies": "⥰", "\\equalrightarrow": "⥱", "\\similarrightarrow": "⥲", "\\leftarrowsimilar": "⥳", "\\rightarrowsimilar": "⥴", "\\rightarrowapprox": "⥵", "\\ltlarr": "⥶", "\\leftarrowless": "⥷", "\\gtrarr": "⥸", "\\subrarr": "⥹", "\\leftarrowsubset": "⥺", "\\suplarr": "⥻", "\\upfishtail": "⥾", "\\downfishtail": "⥿", "\\Elztfnc": "⦀", "\\spot": "⦁", "\\typecolon": "⦂", "\\lBrace": "⦃", "\\rBrace": "⦄", "\\Elroang": "⦆", "\\limg": "⦇", "\\rimg": "⦈", "\\lblot": "⦉", "\\rblot": "⦊", "\\lbrackubar": "⦋", "\\rbrackubar": "⦌", "\\lbrackultick": "⦍", "\\rbracklrtick": "⦎", "\\lbracklltick": "⦏", "\\rbrackurtick": "⦐", "\\langledot": "⦑", "\\rangledot": "⦒", "<\\kern-0.58em(": "⦓", "\\Lparengtr": "⦕", "\\Rparenless": "⦖", "\\lblkbrbrak": "⦗", "\\rblkbrbrak": "⦘", "\\Elzddfnc": "⦙", "\\vzigzag": "⦚", "\\measuredangleleft": "⦛", "\\Angle": "⦜", "\\rightanglemdot": "⦝", "\\angles": "⦞", "\\angdnr": "⦟", "\\Elzlpargt": "⦠", "\\sphericalangleup": "⦡", "\\turnangle": "⦢", "\\revangle": "⦣", "\\angleubar": "⦤", "\\revangleubar": "⦥", "\\wideangledown": "⦦", "\\wideangleup": "⦧", "\\measanglerutone": "⦨", "\\measanglelutonw": "⦩", "\\measanglerdtose": "⦪", "\\measangleldtosw": "⦫", "\\measangleurtone": "⦬", "\\measangleultonw": "⦭", "\\measangledrtose": "⦮", "\\measangledltosw": "⦯", "\\revemptyset": "⦰", "\\emptysetobar": "⦱", "\\emptysetocirc": "⦲", "\\emptysetoarr": "⦳", "\\emptysetoarrl": "⦴", "\\circledparallel": "⦷", "\\circledbslash": "⦸", "\\operp": "⦹", "\\obot": "⦺", "\\olcross": "⦻", "\\odotslashdot": "⦼", "\\uparrowoncircle": "⦽", "\\circledwhitebullet": "⦾", "\\circledbullet": "⦿", "\\circledless": "⧀", "\\circledgtr": "⧁", "\\cirscir": "⧂", "\\cirE": "⧃", "\\boxslash": "⧄", "\\boxbslash": "⧅", "\\boxast": "⧆", "\\boxcircle": "⧇", "\\boxbox": "⧈", "\\boxonbox": "⧉", "\\ElzLap": "⧊", "\\Elzdefas": "⧋", "\\triangles": "⧌", "\\triangleserifs": "⧍", "\\rtriltri": "⧎", "\\LeftTriangleBar": "⧏", "\\NotLeftTriangleBar": "⧏̸", "\\RightTriangleBar": "⧐", "\\NotRightTriangleBar": "⧐̸", "\\lfbowtie": "⧑", "\\rfbowtie": "⧒", "\\fbowtie": "⧓", "\\lftimes": "⧔", "\\rftimes": "⧕", "\\hourglass": "⧖", "\\blackhourglass": "⧗", "\\lvzigzag": "⧘", "\\rvzigzag": "⧙", "\\Lvzigzag": "⧚", "\\Rvzigzag": "⧛", "\\tieinfty": "⧝", "\\nvinfty": "⧞", "\\multimapboth": "⧟", "\\laplac": "⧠", "\\lrtriangleeq": "⧡", "\\shuffle": "⧢", "\\eparsl": "⧣", "\\smeparsl": "⧤", "\\eqvparsl": "⧥", "\\gleichstark": "⧦", "\\thermod": "⧧", "\\downtriangleleftblack": "⧨", "\\downtrianglerightblack": "⧩", "\\blackdiamonddownarrow": "⧪", "\\blacklozenge": "⧫", "\\circledownarrow": "⧬", "\\blackcircledownarrow": "⧭", "\\errbarsquare": "⧮", "\\errbarblacksquare": "⧯", "\\errbardiamond": "⧰", "\\errbarblackdiamond": "⧱", "\\errbarcircle": "⧲", "\\errbarblackcircle": "⧳", "\\RuleDelayed": "⧴", "\\dsol": "⧶", "\\rsolbar": "⧷", "\\xsol": "⧸", "\\zhide": "⧹", "\\doubleplus": "⧺", "\\tripleplus": "⧻", "\\lcurvyangle": "⧼", "\\rcurvyangle": "⧽", "\\tplus": "⧾", "\\tminus": "⧿", "\\bigodot": "⨀", "\\bigoplus": "⨁", "\\bigotimes": "⨂", "\\bigcupdot": "⨃", "\\Elxuplus": "⨄", "\\ElzThr": "⨅", "\\Elxsqcup": "⨆", "\\ElzInf": "⨇", "\\ElzSup": "⨈", "\\varprod": "⨉", "\\modtwosum": "⨊", "\\sumint": "⨋", "\\iiiint": "⨌", "\\ElzCint": "⨍", "\\intBar": "⨎", "\\clockoint": "⨏", "\\awint": "⨑", "\\rppolint": "⨒", "\\scpolint": "⨓", "\\npolint": "⨔", "\\pointint": "⨕", "\\sqrint": "⨖", "\\intlarhk": "⨗", "\\intx": "⨘", "\\intcap": "⨙", "\\intcup": "⨚", "\\upint": "⨛", "\\lowint": "⨜", "\\Join": "⨝", "\\bigtriangleleft": "⨞", "\\zcmp": "⨟", "\\zpipe": "⨠", "\\zproject": "⨡", "\\ringplus": "⨢", "\\plushat": "⨣", "\\simplus": "⨤", "\\plussim": "⨦", "\\plussubtwo": "⨧", "\\plustrif": "⨨", "\\commaminus": "⨩", "\\minusfdots": "⨫", "\\minusrdots": "⨬", "\\ElzTimes": "⨯", "\\dottimes": "⨰", "\\timesbar": "⨱", "\\btimes": "⨲", "\\smashtimes": "⨳", "\\otimeshat": "⨶", "\\Otimes": "⨷", "\\odiv": "⨸", "\\triangleplus": "⨹", "\\triangleminus": "⨺", "\\triangletimes": "⨻", "\\intprodr": "⨽", "\\fcmp": "⨾", "\\amalg": "⨿", "\\capdot": "⩀", "\\uminus": "⩁", "\\barcup": "⩂", "\\barcap": "⩃", "\\capwedge": "⩄", "\\cupvee": "⩅", "\\cupovercap": "⩆", "\\capovercup": "⩇", "\\cupbarcap": "⩈", "\\capbarcup": "⩉", "\\twocups": "⩊", "\\twocaps": "⩋", "\\closedvarcup": "⩌", "\\closedvarcap": "⩍", "\\Sqcap": "⩎", "\\Sqcup": "⩏", "\\closedvarcupsmashprod": "⩐", "\\wedgeodot": "⩑", "\\veeodot": "⩒", "\\ElzAnd": "⩓", "\\ElzOr": "⩔", "\\ElOr": "⩖", "\\bigslopedvee": "⩗", "\\bigslopedwedge": "⩘", "\\veeonwedge": "⩙", "\\wedgemidvert": "⩚", "\\veemidvert": "⩛", "\\midbarwedge": "⩜", "\\midbarvee": "⩝", "\\Elzminhat": "⩟", "\\wedgedoublebar": "⩠", "\\varveebar": "⩡", "\\doublebarvee": "⩢", "\\dsub": "⩤", "\\rsub": "⩥", "\\eqdot": "⩦", "\\dotequiv": "⩧", "\\equivVert": "⩨", "\\equivVvert": "⩩", "\\dotsim": "⩪", "\\simrdots": "⩫", "\\simminussim": "⩬", "\\congdot": "⩭", "\\stackrel{*}{=}": "⩮", "\\hatapprox": "⩯", "\\approxeqq": "⩰", "\\eqqplus": "⩱", "\\pluseqq": "⩲", "\\eqqsim": "⩳", "\\Coloneqq": "⩴", "\\Equal": "⩵", "\\Same": "⩶", "\\ddotseq": "⩷", "\\equivDD": "⩸", "\\ltcir": "⩹", "\\gtcir": "⩺", "\\ltquest": "⩻", "\\gtquest": "⩼", "\\leqslant": "⩽", "\\nleqslant": "⩽̸", "\\geqslant": "⩾", "\\ngeqslant": "⩾̸", "\\lesdot": "⩿", "\\gesdot": "⪀", "\\lesdoto": "⪁", "\\gesdoto": "⪂", "\\lesdotor": "⪃", "\\gesdotol": "⪄", "\\lessapprox": "⪅", "\\gtrapprox": "⪆", "\\lneq": "⪇", "\\gneq": "⪈", "\\lnapprox": "⪉", "\\gnapprox": "⪊", "\\lesseqqgtr": "⪋", "\\gtreqqless": "⪌", "\\lsime": "⪍", "\\gsime": "⪎", "\\lsimg": "⪏", "\\gsiml": "⪐", "\\lgE": "⪑", "\\glE": "⪒", "\\lesges": "⪓", "\\gesles": "⪔", "\\eqslantless": "⪕", "\\eqslantgtr": "⪖", "\\elsdot": "⪗", "\\egsdot": "⪘", "\\eqqless": "⪙", "\\eqqgtr": "⪚", "\\eqqslantless": "⪛", "\\eqqslantgtr": "⪜", "\\Pisymbol{ppi020}{117}": "⪝", "\\Pisymbol{ppi020}{105}": "⪞", "\\simlE": "⪟", "\\simgE": "⪠", "\\NestedLessLess": "⪡", "\\NotNestedLessLess": "⪡̸", "\\NestedGreaterGreater": "⪢", "\\NotNestedGreaterGreater": "⪢̸", "\\partialmeetcontraction": "⪣", "\\glj": "⪤", "\\gla": "⪥", "\\leftslice": "⪦", "\\rightslice": "⪧", "\\lescc": "⪨", "\\gescc": "⪩", "\\smt": "⪪", "\\lat": "⪫", "\\smte": "⪬", "\\late": "⪭", "\\bumpeqq": "⪮", "\\preceq": "⪯", "\\not\\preceq": "⪯̸", "\\succeq": "⪰", "\\not\\succeq": "⪰̸", "\\precneq": "⪱", "\\succneq": "⪲", "\\preceqq": "⪳", "\\succeqq": "⪴", "\\precneqq": "⪵", "\\succneqq": "⪶", "\\precapprox": "⪷", "\\succapprox": "⪸", "\\precnapprox": "⪹", "\\succnapprox": "⪺", "\\llcurly": "⪻", "\\ggcurly": "⪼", "\\subsetdot": "⪽", "\\supsetdot": "⪾", "\\subsetplus": "⪿", "\\supsetplus": "⫀", "\\submult": "⫁", "\\supmult": "⫂", "\\subedot": "⫃", "\\supedot": "⫄", "\\subseteqq": "⫅", "\\nsubseteqq": "⫅̸", "\\supseteqq": "⫆", "\\nsupseteqq": "⫆̸", "\\subsim": "⫇", "\\supsim": "⫈", "\\subsetapprox": "⫉", "\\supsetapprox": "⫊", "\\subsetneqq": "⫋", "\\supsetneqq": "⫌", "\\lsqhook": "⫍", "\\rsqhook": "⫎", "\\csub": "⫏", "\\csup": "⫐", "\\csube": "⫑", "\\csupe": "⫒", "\\subsup": "⫓", "\\supsub": "⫔", "\\subsub": "⫕", "\\supsup": "⫖", "\\suphsub": "⫗", "\\supdsub": "⫘", "\\forkv": "⫙", "\\topfork": "⫚", "\\mlcp": "⫛", "\\forks": "⫝̸", "\\forksnot": "⫝", "\\shortlefttack": "⫞", "\\shortdowntack": "⫟", "\\shortuptack": "⫠", "\\perps": "⫡", "\\vDdash": "⫢", "\\dashV": "⫣", "\\Dashv": "⫤", "\\DashV": "⫥", "\\varVdash": "⫦", "\\Barv": "⫧", "\\vBar": "⫨", "\\vBarv": "⫩", "\\Top": "⫪", "\\Not": "⫬", "\\bNot": "⫭", "\\revnmid": "⫮", "\\cirmid": "⫯", "\\midcir": "⫰", "\\topcir": "⫱", "\\nhpar": "⫲", "\\parsim": "⫳", "\\interleave": "⫴", "\\nhVvert": "⫵", "\\Elztdcol": "⫶", "\\lllnest": "⫷", "\\gggnest": "⫸", "\\leqqslant": "⫹", "\\geqqslant": "⫺", "\\trslash": "⫻", "\\biginterleave": "⫼", "{{/}\\!\\!{/}}": "⫽", "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}": "⫽⃥", "\\talloblong": "⫾", "\\bigtalloblong": "⫿", "\\squaretopblack": "⬒", "\\squarebotblack": "⬓", "\\squareurblack": "⬔", "\\squarellblack": "⬕", "\\diamondleftblack": "⬖", "\\diamondrightblack": "⬗", "\\diamondtopblack": "⬘", "\\diamondbotblack": "⬙", "\\dottedsquare": "⬚", "\\blacksquare": "⬛", "\\vysmblksquare": "⬝", "\\vysmwhtsquare": "⬞", "\\pentagonblack": "⬟", "\\pentagon": "⬠", "\\varhexagon": "⬡", "\\varhexagonblack": "⬢", "\\hexagonblack": "⬣", "\\lgblkcircle": "⬤", "\\mdblkdiamond": "⬥", "\\mdwhtdiamond": "⬦", "\\mdblklozenge": "⬧", "\\mdwhtlozenge": "⬨", "\\smblkdiamond": "⬩", "\\smblklozenge": "⬪", "\\smwhtlozenge": "⬫", "\\blkhorzoval": "⬬", "\\whthorzoval": "⬭", "\\blkvertoval": "⬮", "\\whtvertoval": "⬯", "\\circleonleftarrow": "⬰", "\\leftthreearrows": "⬱", "\\leftarrowonoplus": "⬲", "\\longleftsquigarrow": "⬳", "\\nvtwoheadleftarrow": "⬴", "\\nVtwoheadleftarrow": "⬵", "\\twoheadmapsfrom": "⬶", "\\twoheadleftdbkarrow": "⬷", "\\leftdotarrow": "⬸", "\\nvleftarrowtail": "⬹", "\\nVleftarrowtail": "⬺", "\\twoheadleftarrowtail": "⬻", "\\nvtwoheadleftarrowtail": "⬼", "\\nVtwoheadleftarrowtail": "⬽", "\\leftarrowx": "⬾", "\\leftcurvedarrow": "⬿", "\\equalleftarrow": "⭀", "\\bsimilarleftarrow": "⭁", "\\leftarrowbackapprox": "⭂", "\\rightarrowgtr": "⭃", "\\rightarrowsupset": "⭄", "\\LLeftarrow": "⭅", "\\RRightarrow": "⭆", "\\bsimilarrightarrow": "⭇", "\\rightarrowbackapprox": "⭈", "\\similarleftarrow": "⭉", "\\leftarrowapprox": "⭊", "\\leftarrowbsimilar": "⭋", "\\rightarrowbsimilar": "⭌", "\\medwhitestar": "⭐", "\\medblackstar": "⭑", "\\smwhitestar": "⭒", "\\rightpentagonblack": "⭓", "\\rightpentagon": "⭔", "\\postalmark": "〒", "\\lbrbrak": "〔", "\\rbrbrak": "〕", "\\openbracketleft": "〚", "\\openbracketright": "〛", "\\hzigzag": "〰", "\\dbend": "�", "\\mathbf{A}": "𝐀", "\\mathbf{B}": "𝐁", "\\mathbf{C}": "𝐂", "\\mathbf{D}": "𝐃", "\\mathbf{E}": "𝐄", "\\mathbf{F}": "𝐅", "\\mathbf{G}": "𝐆", "\\mathbf{H}": "𝐇", "\\mathbf{I}": "𝐈", "\\mathbf{J}": "𝐉", "\\mathbf{K}": "𝐊", "\\mathbf{L}": "𝐋", "\\mathbf{M}": "𝐌", "\\mathbf{N}": "𝐍", "\\mathbf{O}": "𝐎", "\\mathbf{P}": "𝐏", "\\mathbf{Q}": "𝐐", "\\mathbf{R}": "𝐑", "\\mathbf{S}": "𝐒", "\\mathbf{T}": "𝐓", "\\mathbf{U}": "𝐔", "\\mathbf{V}": "𝐕", "\\mathbf{W}": "𝐖", "\\mathbf{X}": "𝐗", "\\mathbf{Y}": "𝐘", "\\mathbf{Z}": "𝐙", "\\mathbf{a}": "𝐚", "\\mathbf{b}": "𝐛", "\\mathbf{c}": "𝐜", "\\mathbf{d}": "𝐝", "\\mathbf{e}": "𝐞", "\\mathbf{f}": "𝐟", "\\mathbf{g}": "𝐠", "\\mathbf{h}": "𝐡", "\\mathbf{i}": "𝐢", "\\mathbf{j}": "𝐣", "\\mathbf{k}": "𝐤", "\\mathbf{l}": "𝐥", "\\mathbf{m}": "𝐦", "\\mathbf{n}": "𝐧", "\\mathbf{o}": "𝐨", "\\mathbf{p}": "𝐩", "\\mathbf{q}": "𝐪", "\\mathbf{r}": "𝐫", "\\mathbf{s}": "𝐬", "\\mathbf{t}": "𝐭", "\\mathbf{u}": "𝐮", "\\mathbf{v}": "𝐯", "\\mathbf{w}": "𝐰", "\\mathbf{x}": "𝐱", "\\mathbf{y}": "𝐲", "\\mathbf{z}": "𝐳", "\\mathsl{A}": "𝐴", "\\mathsl{B}": "𝐵", "\\mathsl{C}": "𝐶", "\\mathsl{D}": "𝐷", "\\mathsl{E}": "𝐸", "\\mathsl{F}": "𝐹", "\\mathsl{G}": "𝐺", "\\mathsl{H}": "𝐻", "\\mathsl{I}": "𝐼", "\\mathsl{J}": "𝐽", "\\mathsl{K}": "𝐾", "\\mathsl{L}": "𝐿", "\\mathsl{M}": "𝑀", "\\mathsl{N}": "𝑁", "\\mathsl{O}": "𝑂", "\\mathsl{P}": "𝑃", "\\mathsl{Q}": "𝑄", "\\mathsl{R}": "𝑅", "\\mathsl{S}": "𝑆", "\\mathsl{T}": "𝑇", "\\mathsl{U}": "𝑈", "\\mathsl{V}": "𝑉", "\\mathsl{W}": "𝑊", "\\mathsl{X}": "𝑋", "\\mathsl{Y}": "𝑌", "\\mathsl{Z}": "𝑍", "\\mathsl{a}": "𝑎", "\\mathsl{b}": "𝑏", "\\mathsl{c}": "𝑐", "\\mathsl{d}": "𝑑", "\\mathsl{e}": "𝑒", "\\mathsl{f}": "𝑓", "\\mathsl{g}": "𝑔", "\\mathsl{i}": "𝑖", "\\mathsl{j}": "𝑗", "\\mathsl{k}": "𝑘", "\\mathsl{l}": "𝑙", "\\mathsl{m}": "𝑚", "\\mathsl{n}": "𝑛", "\\mathsl{o}": "𝑜", "\\mathsl{p}": "𝑝", "\\mathsl{q}": "𝑞", "\\mathsl{r}": "𝑟", "\\mathsl{s}": "𝑠", "\\mathsl{t}": "𝑡", "\\mathsl{u}": "𝑢", "\\mathsl{v}": "𝑣", "\\mathsl{w}": "𝑤", "\\mathsl{x}": "𝑥", "\\mathsl{y}": "𝑦", "\\mathsl{z}": "𝑧", "\\mathbit{A}": "𝑨", "\\mathbit{B}": "𝑩", "\\mathbit{C}": "𝑪", "\\mathbit{D}": "𝑫", "\\mathbit{E}": "𝑬", "\\mathbit{F}": "𝑭", "\\mathbit{G}": "𝑮", "\\mathbit{H}": "𝑯", "\\mathbit{I}": "𝑰", "\\mathbit{J}": "𝑱", "\\mathbit{K}": "𝑲", "\\mathbit{L}": "𝑳", "\\mathbit{M}": "𝑴", "\\mathbit{N}": "𝑵", "\\mathbit{O}": "𝑶", "\\mathbit{P}": "𝑷", "\\mathbit{Q}": "𝑸", "\\mathbit{R}": "𝑹", "\\mathbit{S}": "𝑺", "\\mathbit{T}": "𝑻", "\\mathbit{U}": "𝑼", "\\mathbit{V}": "𝑽", "\\mathbit{W}": "𝑾", "\\mathbit{X}": "𝑿", "\\mathbit{Y}": "𝒀", "\\mathbit{Z}": "𝒁", "\\mathbit{a}": "𝒂", "\\mathbit{b}": "𝒃", "\\mathbit{c}": "𝒄", "\\mathbit{d}": "𝒅", "\\mathbit{e}": "𝒆", "\\mathbit{f}": "𝒇", "\\mathbit{g}": "𝒈", "\\mathbit{h}": "𝒉", "\\mathbit{i}": "𝒊", "\\mathbit{j}": "𝒋", "\\mathbit{k}": "𝒌", "\\mathbit{l}": "𝒍", "\\mathbit{m}": "𝒎", "\\mathbit{n}": "𝒏", "\\mathbit{o}": "𝒐", "\\mathbit{p}": "𝒑", "\\mathbit{q}": "𝒒", "\\mathbit{r}": "𝒓", "\\mathbit{s}": "𝒔", "\\mathbit{t}": "𝒕", "\\mathbit{u}": "𝒖", "\\mathbit{v}": "𝒗", "\\mathbit{w}": "𝒘", "\\mathbit{x}": "𝒙", "\\mathbit{y}": "𝒚", "\\mathbit{z}": "𝒛", "\\mathscr{A}": "𝒜", "\\mathscr{C}": "𝒞", "\\mathscr{D}": "𝒟", "\\mathscr{G}": "𝒢", "\\mathscr{J}": "𝒥", "\\mathscr{K}": "𝒦", "\\mathscr{N}": "𝒩", "\\mathscr{O}": "𝒪", "\\mathscr{P}": "𝒫", "\\mathscr{Q}": "𝒬", "\\mathscr{S}": "𝒮", "\\mathscr{T}": "𝒯", "\\mathscr{U}": "𝒰", "\\mathscr{V}": "𝒱", "\\mathscr{W}": "𝒲", "\\mathscr{X}": "𝒳", "\\mathscr{Y}": "𝒴", "\\mathscr{Z}": "𝒵", "\\mathscr{a}": "𝒶", "\\mathscr{b}": "𝒷", "\\mathscr{c}": "𝒸", "\\mathscr{d}": "𝒹", "\\mathscr{f}": "𝒻", "\\mathscr{h}": "𝒽", "\\mathscr{i}": "𝒾", "\\mathscr{j}": "𝒿", "\\mathscr{k}": "𝓀", "\\mathscr{m}": "𝓂", "\\mathscr{n}": "𝓃", "\\mathscr{p}": "𝓅", "\\mathscr{q}": "𝓆", "\\mathscr{r}": "𝓇", "\\mathscr{s}": "𝓈", "\\mathscr{t}": "𝓉", "\\mathscr{u}": "𝓊", "\\mathscr{v}": "𝓋", "\\mathscr{w}": "𝓌", "\\mathscr{x}": "𝓍", "\\mathscr{y}": "𝓎", "\\mathscr{z}": "𝓏", "\\mathmit{A}": "𝓐", "\\mathmit{B}": "𝓑", "\\mathmit{C}": "𝓒", "\\mathmit{D}": "𝓓", "\\mathmit{E}": "𝓔", "\\mathmit{F}": "𝓕", "\\mathmit{G}": "𝓖", "\\mathmit{H}": "𝓗", "\\mathmit{I}": "𝓘", "\\mathmit{J}": "𝓙", "\\mathmit{K}": "𝓚", "\\mathmit{L}": "𝓛", "\\mathmit{M}": "𝓜", "\\mathmit{N}": "𝓝", "\\mathmit{O}": "𝓞", "\\mathmit{P}": "𝓟", "\\mathmit{Q}": "𝓠", "\\mathmit{R}": "𝓡", "\\mathmit{S}": "𝓢", "\\mathmit{T}": "𝓣", "\\mathmit{U}": "𝓤", "\\mathmit{V}": "𝓥", "\\mathmit{W}": "𝓦", "\\mathmit{X}": "𝓧", "\\mathmit{Y}": "𝓨", "\\mathmit{Z}": "𝓩", "\\mathmit{a}": "𝓪", "\\mathmit{b}": "𝓫", "\\mathmit{c}": "𝓬", "\\mathmit{d}": "𝓭", "\\mathmit{e}": "𝓮", "\\mathmit{f}": "𝓯", "\\mathmit{g}": "𝓰", "\\mathmit{h}": "𝓱", "\\mathmit{i}": "𝓲", "\\mathmit{j}": "𝓳", "\\mathmit{k}": "𝓴", "\\mathmit{l}": "𝓵", "\\mathmit{m}": "𝓶", "\\mathmit{n}": "𝓷", "\\mathmit{o}": "𝓸", "\\mathmit{p}": "𝓹", "\\mathmit{q}": "𝓺", "\\mathmit{r}": "𝓻", "\\mathmit{s}": "𝓼", "\\mathmit{t}": "𝓽", "\\mathmit{u}": "𝓾", "\\mathmit{v}": "𝓿", "\\mathmit{w}": "𝔀", "\\mathmit{x}": "𝔁", "\\mathmit{y}": "𝔂", "\\mathmit{z}": "𝔃", "\\mathfrak{A}": "𝔄", "\\mathfrak{B}": "𝔅", "\\mathfrak{D}": "𝔇", "\\mathfrak{E}": "𝔈", "\\mathfrak{F}": "𝔉", "\\mathfrak{G}": "𝔊", "\\mathfrak{J}": "𝔍", "\\mathfrak{K}": "𝔎", "\\mathfrak{L}": "𝔏", "\\mathfrak{M}": "𝔐", "\\mathfrak{N}": "𝔑", "\\mathfrak{O}": "𝔒", "\\mathfrak{P}": "𝔓", "\\mathfrak{Q}": "𝔔", "\\mathfrak{S}": "𝔖", "\\mathfrak{T}": "𝔗", "\\mathfrak{U}": "𝔘", "\\mathfrak{V}": "𝔙", "\\mathfrak{W}": "𝔚", "\\mathfrak{X}": "𝔛", "\\mathfrak{Y}": "𝔜", "\\mathfrak{a}": "𝔞", "\\mathfrak{b}": "𝔟", "\\mathfrak{c}": "𝔠", "\\mathfrak{d}": "𝔡", "\\mathfrak{e}": "𝔢", "\\mathfrak{f}": "𝔣", "\\mathfrak{g}": "𝔤", "\\mathfrak{h}": "𝔥", "\\mathfrak{i}": "𝔦", "\\mathfrak{j}": "𝔧", "\\mathfrak{k}": "𝔨", "\\mathfrak{l}": "𝔩", "\\mathfrak{m}": "𝔪", "\\mathfrak{n}": "𝔫", "\\mathfrak{o}": "𝔬", "\\mathfrak{p}": "𝔭", "\\mathfrak{q}": "𝔮", "\\mathfrak{r}": "𝔯", "\\mathfrak{s}": "𝔰", "\\mathfrak{t}": "𝔱", "\\mathfrak{u}": "𝔲", "\\mathfrak{v}": "𝔳", "\\mathfrak{w}": "𝔴", "\\mathfrak{x}": "𝔵", "\\mathfrak{y}": "𝔶", "\\mathfrak{z}": "𝔷", "\\mathbb{A}": "𝔸", "\\mathbb{B}": "𝔹", "\\mathbb{D}": "𝔻", "\\mathbb{E}": "𝔼", "\\mathbb{F}": "𝔽", "\\mathbb{G}": "𝔾", "\\mathbb{I}": "𝕀", "\\mathbb{J}": "𝕁", "\\mathbb{K}": "𝕂", "\\mathbb{L}": "𝕃", "\\mathbb{M}": "𝕄", "\\mathbb{O}": "𝕆", "\\mathbb{S}": "𝕊", "\\mathbb{T}": "𝕋", "\\mathbb{U}": "𝕌", "\\mathbb{V}": "𝕍", "\\mathbb{W}": "𝕎", "\\mathbb{X}": "𝕏", "\\mathbb{Y}": "𝕐", "\\mathbb{a}": "𝕒", "\\mathbb{b}": "𝕓", "\\mathbb{c}": "𝕔", "\\mathbb{d}": "𝕕", "\\mathbb{e}": "𝕖", "\\mathbb{f}": "𝕗", "\\mathbb{g}": "𝕘", "\\mathbb{h}": "𝕙", "\\mathbb{i}": "𝕚", "\\mathbb{j}": "𝕛", "\\mathbb{k}": "𝕜", "\\mathbb{l}": "𝕝", "\\mathbb{m}": "𝕞", "\\mathbb{n}": "𝕟", "\\mathbb{o}": "𝕠", "\\mathbb{p}": "𝕡", "\\mathbb{q}": "𝕢", "\\mathbb{r}": "𝕣", "\\mathbb{s}": "𝕤", "\\mathbb{t}": "𝕥", "\\mathbb{u}": "𝕦", "\\mathbb{v}": "𝕧", "\\mathbb{w}": "𝕨", "\\mathbb{x}": "𝕩", "\\mathbb{y}": "𝕪", "\\mathbb{z}": "𝕫", "\\mathslbb{A}": "𝕬", "\\mathslbb{B}": "𝕭", "\\mathslbb{C}": "𝕮", "\\mathslbb{D}": "𝕯", "\\mathslbb{E}": "𝕰", "\\mathslbb{F}": "𝕱", "\\mathslbb{G}": "𝕲", "\\mathslbb{H}": "𝕳", "\\mathslbb{I}": "𝕴", "\\mathslbb{J}": "𝕵", "\\mathslbb{K}": "𝕶", "\\mathslbb{L}": "𝕷", "\\mathslbb{M}": "𝕸", "\\mathslbb{N}": "𝕹", "\\mathslbb{O}": "𝕺", "\\mathslbb{P}": "𝕻", "\\mathslbb{Q}": "𝕼", "\\mathslbb{R}": "𝕽", "\\mathslbb{S}": "𝕾", "\\mathslbb{T}": "𝕿", "\\mathslbb{U}": "𝖀", "\\mathslbb{V}": "𝖁", "\\mathslbb{W}": "𝖂", "\\mathslbb{X}": "𝖃", "\\mathslbb{Y}": "𝖄", "\\mathslbb{Z}": "𝖅", "\\mathslbb{a}": "𝖆", "\\mathslbb{b}": "𝖇", "\\mathslbb{c}": "𝖈", "\\mathslbb{d}": "𝖉", "\\mathslbb{e}": "𝖊", "\\mathslbb{f}": "𝖋", "\\mathslbb{g}": "𝖌", "\\mathslbb{h}": "𝖍", "\\mathslbb{i}": "𝖎", "\\mathslbb{j}": "𝖏", "\\mathslbb{k}": "𝖐", "\\mathslbb{l}": "𝖑", "\\mathslbb{m}": "𝖒", "\\mathslbb{n}": "𝖓", "\\mathslbb{o}": "𝖔", "\\mathslbb{p}": "𝖕", "\\mathslbb{q}": "𝖖", "\\mathslbb{r}": "𝖗", "\\mathslbb{s}": "𝖘", "\\mathslbb{t}": "𝖙", "\\mathslbb{u}": "𝖚", "\\mathslbb{v}": "𝖛", "\\mathslbb{w}": "𝖜", "\\mathslbb{x}": "𝖝", "\\mathslbb{y}": "𝖞", "\\mathslbb{z}": "𝖟", "\\mathsf{A}": "𝖠", "\\mathsf{B}": "𝖡", "\\mathsf{C}": "𝖢", "\\mathsf{D}": "𝖣", "\\mathsf{E}": "𝖤", "\\mathsf{F}": "𝖥", "\\mathsf{G}": "𝖦", "\\mathsf{H}": "𝖧", "\\mathsf{I}": "𝖨", "\\mathsf{J}": "𝖩", "\\mathsf{K}": "𝖪", "\\mathsf{L}": "𝖫", "\\mathsf{M}": "𝖬", "\\mathsf{N}": "𝖭", "\\mathsf{O}": "𝖮", "\\mathsf{P}": "𝖯", "\\mathsf{Q}": "𝖰", "\\mathsf{R}": "𝖱", "\\mathsf{S}": "𝖲", "\\mathsf{T}": "𝖳", "\\mathsf{U}": "𝖴", "\\mathsf{V}": "𝖵", "\\mathsf{W}": "𝖶", "\\mathsf{X}": "𝖷", "\\mathsf{Y}": "𝖸", "\\mathsf{Z}": "𝖹", "\\mathsf{a}": "𝖺", "\\mathsf{b}": "𝖻", "\\mathsf{c}": "𝖼", "\\mathsf{d}": "𝖽", "\\mathsf{e}": "𝖾", "\\mathsf{f}": "𝖿", "\\mathsf{g}": "𝗀", "\\mathsf{h}": "𝗁", "\\mathsf{i}": "𝗂", "\\mathsf{j}": "𝗃", "\\mathsf{k}": "𝗄", "\\mathsf{l}": "𝗅", "\\mathsf{m}": "𝗆", "\\mathsf{n}": "𝗇", "\\mathsf{o}": "𝗈", "\\mathsf{p}": "𝗉", "\\mathsf{q}": "𝗊", "\\mathsf{r}": "𝗋", "\\mathsf{s}": "𝗌", "\\mathsf{t}": "𝗍", "\\mathsf{u}": "𝗎", "\\mathsf{v}": "𝗏", "\\mathsf{w}": "𝗐", "\\mathsf{x}": "𝗑", "\\mathsf{y}": "𝗒", "\\mathsf{z}": "𝗓", "\\mathsfbf{A}": "𝗔", "\\mathsfbf{B}": "𝗕", "\\mathsfbf{C}": "𝗖", "\\mathsfbf{D}": "𝗗", "\\mathsfbf{E}": "𝗘", "\\mathsfbf{F}": "𝗙", "\\mathsfbf{G}": "𝗚", "\\mathsfbf{H}": "𝗛", "\\mathsfbf{I}": "𝗜", "\\mathsfbf{J}": "𝗝", "\\mathsfbf{K}": "𝗞", "\\mathsfbf{L}": "𝗟", "\\mathsfbf{M}": "𝗠", "\\mathsfbf{N}": "𝗡", "\\mathsfbf{O}": "𝗢", "\\mathsfbf{P}": "𝗣", "\\mathsfbf{Q}": "𝗤", "\\mathsfbf{R}": "𝗥", "\\mathsfbf{S}": "𝗦", "\\mathsfbf{T}": "𝗧", "\\mathsfbf{U}": "𝗨", "\\mathsfbf{V}": "𝗩", "\\mathsfbf{W}": "𝗪", "\\mathsfbf{X}": "𝗫", "\\mathsfbf{Y}": "𝗬", "\\mathsfbf{Z}": "𝗭", "\\mathsfbf{a}": "𝗮", "\\mathsfbf{b}": "𝗯", "\\mathsfbf{c}": "𝗰", "\\mathsfbf{d}": "𝗱", "\\mathsfbf{e}": "𝗲", "\\mathsfbf{f}": "𝗳", "\\mathsfbf{g}": "𝗴", "\\mathsfbf{h}": "𝗵", "\\mathsfbf{i}": "𝗶", "\\mathsfbf{j}": "𝗷", "\\mathsfbf{k}": "𝗸", "\\mathsfbf{l}": "𝗹", "\\mathsfbf{m}": "𝗺", "\\mathsfbf{n}": "𝗻", "\\mathsfbf{o}": "𝗼", "\\mathsfbf{p}": "𝗽", "\\mathsfbf{q}": "𝗾", "\\mathsfbf{r}": "𝗿", "\\mathsfbf{s}": "𝘀", "\\mathsfbf{t}": "𝘁", "\\mathsfbf{u}": "𝘂", "\\mathsfbf{v}": "𝘃", "\\mathsfbf{w}": "𝘄", "\\mathsfbf{x}": "𝘅", "\\mathsfbf{y}": "𝘆", "\\mathsfbf{z}": "𝘇", "\\mathsfsl{A}": "𝘈", "\\mathsfsl{B}": "𝘉", "\\mathsfsl{C}": "𝘊", "\\mathsfsl{D}": "𝘋", "\\mathsfsl{E}": "𝘌", "\\mathsfsl{F}": "𝘍", "\\mathsfsl{G}": "𝘎", "\\mathsfsl{H}": "𝘏", "\\mathsfsl{I}": "𝘐", "\\mathsfsl{J}": "𝘑", "\\mathsfsl{K}": "𝘒", "\\mathsfsl{L}": "𝘓", "\\mathsfsl{M}": "𝘔", "\\mathsfsl{N}": "𝘕", "\\mathsfsl{O}": "𝘖", "\\mathsfsl{P}": "𝘗", "\\mathsfsl{Q}": "𝘘", "\\mathsfsl{R}": "𝘙", "\\mathsfsl{S}": "𝘚", "\\mathsfsl{T}": "𝘛", "\\mathsfsl{U}": "𝘜", "\\mathsfsl{V}": "𝘝", "\\mathsfsl{W}": "𝘞", "\\mathsfsl{X}": "𝘟", "\\mathsfsl{Y}": "𝘠", "\\mathsfsl{Z}": "𝘡", "\\mathsfsl{a}": "𝘢", "\\mathsfsl{b}": "𝘣", "\\mathsfsl{c}": "𝘤", "\\mathsfsl{d}": "𝘥", "\\mathsfsl{e}": "𝘦", "\\mathsfsl{f}": "𝘧", "\\mathsfsl{g}": "𝘨", "\\mathsfsl{h}": "𝘩", "\\mathsfsl{i}": "𝘪", "\\mathsfsl{j}": "𝘫", "\\mathsfsl{k}": "𝘬", "\\mathsfsl{l}": "𝘭", "\\mathsfsl{m}": "𝘮", "\\mathsfsl{n}": "𝘯", "\\mathsfsl{o}": "𝘰", "\\mathsfsl{p}": "𝘱", "\\mathsfsl{q}": "𝘲", "\\mathsfsl{r}": "𝘳", "\\mathsfsl{s}": "𝘴", "\\mathsfsl{t}": "𝘵", "\\mathsfsl{u}": "𝘶", "\\mathsfsl{v}": "𝘷", "\\mathsfsl{w}": "𝘸", "\\mathsfsl{x}": "𝘹", "\\mathsfsl{y}": "𝘺", "\\mathsfsl{z}": "𝘻", "\\mathsfbfsl{A}": "𝘼", "\\mathsfbfsl{B}": "𝘽", "\\mathsfbfsl{C}": "𝘾", "\\mathsfbfsl{D}": "𝘿", "\\mathsfbfsl{E}": "𝙀", "\\mathsfbfsl{F}": "𝙁", "\\mathsfbfsl{G}": "𝙂", "\\mathsfbfsl{H}": "𝙃", "\\mathsfbfsl{I}": "𝙄", "\\mathsfbfsl{J}": "𝙅", "\\mathsfbfsl{K}": "𝙆", "\\mathsfbfsl{L}": "𝙇", "\\mathsfbfsl{M}": "𝙈", "\\mathsfbfsl{N}": "𝙉", "\\mathsfbfsl{O}": "𝙊", "\\mathsfbfsl{P}": "𝙋", "\\mathsfbfsl{Q}": "𝙌", "\\mathsfbfsl{R}": "𝙍", "\\mathsfbfsl{S}": "𝙎", "\\mathsfbfsl{T}": "𝙏", "\\mathsfbfsl{U}": "𝙐", "\\mathsfbfsl{V}": "𝙑", "\\mathsfbfsl{W}": "𝙒", "\\mathsfbfsl{X}": "𝙓", "\\mathsfbfsl{Y}": "𝙔", "\\mathsfbfsl{Z}": "𝙕", "\\mathsfbfsl{a}": "𝙖", "\\mathsfbfsl{b}": "𝙗", "\\mathsfbfsl{c}": "𝙘", "\\mathsfbfsl{d}": "𝙙", "\\mathsfbfsl{e}": "𝙚", "\\mathsfbfsl{f}": "𝙛", "\\mathsfbfsl{g}": "𝙜", "\\mathsfbfsl{h}": "𝙝", "\\mathsfbfsl{i}": "𝙞", "\\mathsfbfsl{j}": "𝙟", "\\mathsfbfsl{k}": "𝙠", "\\mathsfbfsl{l}": "𝙡", "\\mathsfbfsl{m}": "𝙢", "\\mathsfbfsl{n}": "𝙣", "\\mathsfbfsl{o}": "𝙤", "\\mathsfbfsl{p}": "𝙥", "\\mathsfbfsl{q}": "𝙦", "\\mathsfbfsl{r}": "𝙧", "\\mathsfbfsl{s}": "𝙨", "\\mathsfbfsl{t}": "𝙩", "\\mathsfbfsl{u}": "𝙪", "\\mathsfbfsl{v}": "𝙫", "\\mathsfbfsl{w}": "𝙬", "\\mathsfbfsl{x}": "𝙭", "\\mathsfbfsl{y}": "𝙮", "\\mathsfbfsl{z}": "𝙯", "\\mathtt{A}": "𝙰", "\\mathtt{B}": "𝙱", "\\mathtt{C}": "𝙲", "\\mathtt{D}": "𝙳", "\\mathtt{E}": "𝙴", "\\mathtt{F}": "𝙵", "\\mathtt{G}": "𝙶", "\\mathtt{H}": "𝙷", "\\mathtt{I}": "𝙸", "\\mathtt{J}": "𝙹", "\\mathtt{K}": "𝙺", "\\mathtt{L}": "𝙻", "\\mathtt{M}": "𝙼", "\\mathtt{N}": "𝙽", "\\mathtt{O}": "𝙾", "\\mathtt{P}": "𝙿", "\\mathtt{Q}": "𝚀", "\\mathtt{R}": "𝚁", "\\mathtt{S}": "𝚂", "\\mathtt{T}": "𝚃", "\\mathtt{U}": "𝚄", "\\mathtt{V}": "𝚅", "\\mathtt{W}": "𝚆", "\\mathtt{X}": "𝚇", "\\mathtt{Y}": "𝚈", "\\mathtt{Z}": "𝚉", "\\mathtt{a}": "𝚊", "\\mathtt{b}": "𝚋", "\\mathtt{c}": "𝚌", "\\mathtt{d}": "𝚍", "\\mathtt{e}": "𝚎", "\\mathtt{f}": "𝚏", "\\mathtt{g}": "𝚐", "\\mathtt{h}": "𝚑", "\\mathtt{i}": "𝚒", "\\mathtt{j}": "𝚓", "\\mathtt{k}": "𝚔", "\\mathtt{l}": "𝚕", "\\mathtt{m}": "𝚖", "\\mathtt{n}": "𝚗", "\\mathtt{o}": "𝚘", "\\mathtt{p}": "𝚙", "\\mathtt{q}": "𝚚", "\\mathtt{r}": "𝚛", "\\mathtt{s}": "𝚜", "\\mathtt{t}": "𝚝", "\\mathtt{u}": "𝚞", "\\mathtt{v}": "𝚟", "\\mathtt{w}": "𝚠", "\\mathtt{x}": "𝚡", "\\mathtt{y}": "𝚢", "\\mathtt{z}": "𝚣", "\\mathbf{\\Gamma}": "𝚪", "\\mathbf{\\Delta}": "𝚫", "\\mathbf{\\Theta}": "𝚯", "\\mathbf{\\Lambda}": "𝚲", "\\mathbf{\\Xi}": "𝚵", "\\mathbf{\\Pi}": "𝚷", "\\mathbf{\\vartheta}": "𝚹", "\\mathbf{\\Sigma}": "𝚺", "\\mathbf{\\Upsilon}": "𝚼", "\\mathbf{\\Phi}": "𝚽", "\\mathbf{\\Psi}": "𝚿", "\\mathbf{\\Omega}": "𝛀", "\\mathbf{\\nabla}": "𝛁", "\\mathbf{\\alpha}": "𝛂", "\\mathbf{\\beta}": "𝛃", "\\mathbf{\\gamma}": "𝛄", "\\mathbf{\\delta}": "𝛅", "\\mathbf{\\epsilon}": "𝛆", "\\mathbf{\\zeta}": "𝛇", "\\mathbf{\\eta}": "𝛈", "\\mathbf{\\theta}": "𝛉", "\\mathbf{\\lambda}": "𝛌", "\\mathbf{\\xi}": "𝛏", "\\mathbf{\\pi}": "𝛑", "\\mathbf{\\varsigma}": "𝛓", "\\mathbf{\\sigma}": "𝛔", "\\mathbf{\\upsilon}": "𝛖", "\\mathbf{\\phi}": "𝛗", "\\mathbf{\\psi}": "𝛙", "\\mathbf{\\omega}": "𝛚", "\\mathbf{\\varkappa}": "𝛞", "\\mathbf{\\varrho}": "𝛠", "\\mathbf{\\varpi}": "𝛡", "\\mathsl{\\Gamma}": "𝛤", "\\mathsl{\\Delta}": "𝛥", "\\mathsl{\\Lambda}": "𝛬", "\\mathsl{\\Xi}": "𝛯", "\\mathsl{\\Pi}": "𝛱", "\\mathsl{\\Theta}": "𝛳", "\\mathsl{\\Sigma}": "𝛴", "\\mathsl{\\Upsilon}": "𝛶", "\\mathsl{\\Phi}": "𝛷", "\\mathsl{\\Psi}": "𝛹", "\\mathsl{\\Omega}": "𝛺", "\\mathsl{\\nabla}": "𝛻", "\\mathsl{\\gamma}": "𝛾", "\\mathsl{\\delta}": "𝛿", "\\mathsl{\\theta}": "𝜃", "\\mathsl{\\lambda}": "𝜆", "\\mu": "𝜇", "\\mathsl{\\xi}": "𝜉", "\\mathsl{\\pi}": "𝜋", "\\mathsl{\\varsigma}": "𝜍", "\\mathsl{\\sigma}": "𝜎", "\\mathsl{\\upsilon}": "𝜐", "\\mathsl{\\varphi}": "𝜑", "\\mathsl{\\psi}": "𝜓", "\\mathsl{\\omega}": "𝜔", "\\mathsl{\\vartheta}": "𝜗", "\\mathsl{\\varkappa}": "𝜘", "\\mathsl{\\phi}": "𝜙", "\\mathsl{\\varrho}": "𝜚", "\\mathsl{\\varpi}": "𝜛", "\\mathbit{\\Gamma}": "𝜞", "\\mathbit{\\Delta}": "𝜟", "\\mathbit{\\Theta}": "𝜣", "\\mathbit{\\Lambda}": "𝜦", "\\mathbit{\\Xi}": "𝜩", "\\mathbit{\\Pi}": "𝜫", "\\mathbit{\\Sigma}": "𝜮", "\\mathbit{\\Upsilon}": "𝜰", "\\mathbit{\\Phi}": "𝜱", "\\mathbit{\\Psi}": "𝜳", "\\mathbit{\\Omega}": "𝜴", "\\mathbit{\\nabla}": "𝜵", "\\mathbit{\\alpha}": "𝜶", "\\mathbit{\\beta}": "𝜷", "\\mathbit{\\gamma}": "𝜸", "\\mathbit{\\delta}": "𝜹", "\\mathbit{\\epsilon}": "𝜺", "\\mathbit{\\zeta}": "𝜻", "\\mathbit{\\eta}": "𝜼", "\\mathbit{\\theta}": "𝜽", "\\mathbit{\\imath}": "𝜾", "\\mathbit{\\kappa}": "𝜿", "\\mathbit{\\lambda}": "𝝀", "\\mathbit{\\xi}": "𝝃", "\\mathbit{\\pi}": "𝝅", "\\mathbit{\\rho}": "𝝆", "\\mathbit{\\varsigma}": "𝝇", "\\mathbit{\\sigma}": "𝝈", "\\mathbit{\\tau}": "𝝉", "\\mathbit{\\upsilon}": "𝝊", "\\mathbit{\\varphi}": "𝝋", "\\mathbit{\\chi}": "𝝌", "\\mathbit{\\psi}": "𝝍", "\\mathbit{\\omega}": "𝝎", "\\mathbit{\\vartheta}": "𝝑", "\\mathbit{\\varkappa}": "𝝒", "\\mathbit{\\phi}": "𝝓", "\\mathbit{\\varrho}": "𝝔", "\\mathbit{\\varpi}": "𝝕", "\\mathsfbf{\\Gamma}": "𝝘", "\\mathsfbf{\\Delta}": "𝝙", "\\mathsfbf{\\Theta}": "𝝝", "\\mathsfbf{\\Lambda}": "𝝠", "\\mathsfbf{\\Xi}": "𝝣", "\\mathsfbf{\\Pi}": "𝝥", "\\mathsfbf{\\Sigma}": "𝝨", "\\mathsfbf{\\Upsilon}": "𝝪", "\\mathsfbf{\\Phi}": "𝝫", "\\mathsfbf{\\Psi}": "𝝭", "\\mathsfbf{\\Omega}": "𝝮", "\\mathsfbf{\\nabla}": "𝝯", "\\mathsfbf{\\alpha}": "𝝰", "\\mathsfbf{\\beta}": "𝝱", "\\mathsfbf{\\gamma}": "𝝲", "\\mathsfbf{\\delta}": "𝝳", "\\mathsfbf{\\varepsilon}": "𝝴", "\\mathsfbf{\\zeta}": "𝝵", "\\mathsfbf{\\eta}": "𝝶", "\\mathsfbf{\\theta}": "𝝷", "\\mathsfbf{\\imath}": "𝝸", "\\mathsfbf{\\kappa}": "𝝹", "\\mathsfbf{\\lambda}": "𝝺", "\\mathsfbf{\\xi}": "𝝽", "\\mathsfbf{\\pi}": "𝝿", "\\mathsfbf{\\rho}": "𝞀", "\\mathsfbf{\\varsigma}": "𝞁", "\\mathsfbf{\\sigma}": "𝞂", "\\mathsfbf{\\tau}": "𝞃", "\\mathsfbf{\\upsilon}": "𝞄", "\\mathsfbf{\\varphi}": "𝞅", "\\mathsfbf{\\chi}": "𝞆", "\\mathsfbf{\\psi}": "𝞇", "\\mathsfbf{\\omega}": "𝞈", "\\mathsfbf{\\vartheta}": "𝞋", "\\mathsfbf{\\varkappa}": "𝞌", "\\mathsfbf{\\phi}": "𝞍", "\\mathsfbf{\\varrho}": "𝞎", "\\mathsfbf{\\varpi}": "𝞏", "\\mathsfbfsl{\\Gamma}": "𝞒", "\\mathsfbfsl{\\Delta}": "𝞓", "\\mathsfbfsl{\\Theta}": "𝞗", "\\mathsfbfsl{\\Lambda}": "𝞚", "\\mathsfbfsl{\\Xi}": "𝞝", "\\mathsfbfsl{\\Pi}": "𝞟", "\\mathsfbfsl{\\Sigma}": "𝞢", "\\mathsfbfsl{\\Upsilon}": "𝞤", "\\mathsfbfsl{\\Phi}": "𝞥", "\\mathsfbfsl{\\Psi}": "𝞧", "\\mathsfbfsl{\\Omega}": "𝞨", "\\mathsfbfsl{\\nabla}": "𝞩", "\\mathsfbfsl{\\alpha}": "𝞪", "\\mathsfbfsl{\\beta}": "𝞫", "\\mathsfbfsl{\\gamma}": "𝞬", "\\mathsfbfsl{\\delta}": "𝞭", "\\mathsfbfsl{\\varepsilon}": "𝞮", "\\mathsfbfsl{\\zeta}": "𝞯", "\\mathsfbfsl{\\eta}": "𝞰", "\\mathsfbfsl{\\theta}": "𝞱", "\\mathsfbfsl{\\imath}": "𝞲", "\\mathsfbfsl{\\kappa}": "𝞳", "\\mathsfbfsl{\\lambda}": "𝞴", "\\mathsfbfsl{\\xi}": "𝞷", "\\mathsfbfsl{\\pi}": "𝞹", "\\mathsfbfsl{\\rho}": "𝞺", "\\mathsfbfsl{\\varsigma}": "𝞻", "\\mathsfbfsl{\\sigma}": "𝞼", "\\mathsfbfsl{\\tau}": "𝞽", "\\mathsfbfsl{\\upsilon}": "𝞾", "\\mathsfbfsl{\\varphi}": "𝞿", "\\mathsfbfsl{\\chi}": "𝟀", "\\mathsfbfsl{\\psi}": "𝟁", "\\mathsfbfsl{\\omega}": "𝟂", "\\mathsfbfsl{\\vartheta}": "𝟅", "\\mathsfbfsl{\\varkappa}": "𝟆", "\\mathsfbfsl{\\phi}": "𝟇", "\\mathsfbfsl{\\varrho}": "𝟈", "\\mathsfbfsl{\\varpi}": "𝟉", "\\mbfDigamma": "𝟊", "\\mbfdigamma": "𝟋", "\\mathbf{0}": "𝟎", "\\mathbf{1}": "𝟏", "\\mathbf{2}": "𝟐", "\\mathbf{3}": "𝟑", "\\mathbf{4}": "𝟒", "\\mathbf{5}": "𝟓", "\\mathbf{6}": "𝟔", "\\mathbf{7}": "𝟕", "\\mathbf{8}": "𝟖", "\\mathbf{9}": "𝟗", "\\mathbb{0}": "𝟘", "\\mathbb{1}": "𝟙", "\\mathbb{2}": "𝟚", "\\mathbb{3}": "𝟛", "\\mathbb{4}": "𝟜", "\\mathbb{5}": "𝟝", "\\mathbb{6}": "𝟞", "\\mathbb{7}": "𝟟", "\\mathbb{8}": "𝟠", "\\mathbb{9}": "𝟡", "\\mathsf{0}": "𝟢", "\\mathsf{1}": "𝟣", "\\mathsf{2}": "𝟤", "\\mathsf{3}": "𝟥", "\\mathsf{4}": "𝟦", "\\mathsf{5}": "𝟧", "\\mathsf{6}": "𝟨", "\\mathsf{7}": "𝟩", "\\mathsf{8}": "𝟪", "\\mathsf{9}": "𝟫", "\\mathsfbf{0}": "𝟬", "\\mathsfbf{1}": "𝟭", "\\mathsfbf{2}": "𝟮", "\\mathsfbf{3}": "𝟯", "\\mathsfbf{4}": "𝟰", "\\mathsfbf{5}": "𝟱", "\\mathsfbf{6}": "𝟲", "\\mathsfbf{7}": "𝟳", "\\mathsfbf{8}": "𝟴", "\\mathsfbf{9}": "𝟵", "\\mathtt{0}": "𝟶", "\\mathtt{1}": "𝟷", "\\mathtt{2}": "𝟸", "\\mathtt{3}": "𝟹", "\\mathtt{4}": "𝟺", "\\mathtt{5}": "𝟻", "\\mathtt{6}": "𝟼", "\\mathtt{7}": "𝟽", "\\mathtt{8}": "𝟾", "\\mathtt{9}": "𝟿" }; var commands = [ "acute", "bar", "breve", "c", "d", "ddot", "dot", "grave", "hat", "k", "mathring", "overline", "r", "textacutemacron", "textacutewedge", "textadvancing", "textbrevemacron", "textcircumdot", "textcorner", "textdotacute", "textdotbreve", "textdoublegrave", "textdoublevbaraccent", "textgravedot", "textgravemacron", "textinvsubbridge", "textlowering", "textovercross", "textraising", "textretracting", "textringmacron", "textseagull", "textsubarch", "textsubbar", "textsubbridge", "textsubgrave", "textsublhalfring", "textsubplus", "textsubrhalfring", "textsubring", "textsubsquare", "textsubtilde", "textsubumlaut", "textsubwedge", "textsuperimposetilde", "textsyllabic", "texttildedot", "textvbaraccent", "tilde", "u", "underbar", "v" ]; var tolatex = { "̀": { command: "`", mode: "text" }, "̀̄": { command: "textgravemacron", mode: "text" }, "̀̇": { command: "textgravedot", mode: "text" }, "́": { command: "'", mode: "text" }, "́̄": { command: "textacutemacron", mode: "text" }, "́̇": { command: "textdotacute", mode: "text" }, "́̌": { command: "textacutewedge", mode: "text" }, "̂": { command: "^", mode: "text" }, "̂̇": { command: "textcircumdot", mode: "text" }, "̃": { command: "~", mode: "text" }, "̃̇": { command: "texttildedot", mode: "text" }, "̄": { command: "=", mode: "text" }, "̄̀": { command: "textgravemacron", mode: "text" }, "̄́": { command: "textacutemacron", mode: "text" }, "̄̆": { command: "textbrevemacron", mode: "text" }, "̄̊": { command: "textringmacron", mode: "text" }, "̅": { command: "overline", mode: "math" }, "̆": { command: "u", mode: "text" }, "̆̄": { command: "textbrevemacron", mode: "text" }, "̆̇": { command: "textdotbreve", mode: "text" }, "̇": { command: ".", mode: "text" }, "̇̀": { command: "textgravedot", mode: "text" }, "̇́": { command: "textdotacute", mode: "text" }, "̇̂": { command: "textcircumdot", mode: "text" }, "̇̃": { command: "texttildedot", mode: "text" }, "̇̆": { command: "textdotbreve", mode: "text" }, "̈": { command: "\"", mode: "text" }, "̊": { command: "r", mode: "text" }, "̊̄": { command: "textringmacron", mode: "text" }, "̋": { command: "H", mode: "text" }, "̌": { command: "v", mode: "text" }, "̌́": { command: "textacutewedge", mode: "text" }, "̍": { command: "textvbaraccent", mode: "text" }, "̎": { command: "textdoublevbaraccent", mode: "text" }, "̏": { command: "textdoublegrave", mode: "text" }, "̐": { command: "textdotbreve", mode: "text" }, "̖": { command: "textsubgrave", mode: "text" }, "̘": { command: "textadvancing", mode: "text" }, "̙": { command: "textretracting", mode: "text" }, "̚": { command: "textcorner", mode: "text" }, "̜": { command: "textsublhalfring", mode: "text" }, "̝": { command: "textraising", mode: "text" }, "̞": { command: "textlowering", mode: "text" }, "̟": { command: "textsubplus", mode: "text" }, "̣": { command: "d", mode: "text" }, "̤": { command: "textsubumlaut", mode: "text" }, "̥": { command: "textsubring", mode: "text" }, "̧": { command: "c", mode: "text" }, "̨": { command: "k", mode: "text" }, "̩": { command: "textsyllabic", mode: "text" }, "̪": { command: "textsubbridge", mode: "text" }, "̬": { command: "textsubwedge", mode: "text" }, "̯": { command: "textsubarch", mode: "text" }, "̰": { command: "textsubtilde", mode: "text" }, "̱": { command: "textsubbar", mode: "text" }, "̴": { command: "textsuperimposetilde", mode: "text" }, "̹": { command: "textsubrhalfring", mode: "text" }, "̺": { command: "textinvsubbridge", mode: "text" }, "̻": { command: "textsubsquare", mode: "text" }, "̼": { command: "textseagull", mode: "text" }, "̽": { command: "textovercross", mode: "text" } }; var tounicode = { "\"": "̈", "'": "́", ".": "̇", "=": "̄", H: "̋", "^": "̂", "`": "̀", acute: "́", bar: "̄", breve: "̆", c: "̧", d: "̣", ddot: "̈", dot: "̇", grave: "̀", hat: "̂", k: "̨", mathring: "̊", overline: "̅", r: "̊", textacutemacron: "̄́", textacutewedge: "̌́", textadvancing: "̘", textbrevemacron: "̄̆", textcircumdot: "̇̂", textcorner: "̚", textdotacute: "́̇", textdotbreve: "̐", textdoublegrave: "̏", textdoublevbaraccent: "̎", textgravedot: "̇̀", textgravemacron: "̀̄", textinvsubbridge: "̺", textlowering: "̞", textovercross: "̽", textraising: "̝", textretracting: "̙", textringmacron: "̄̊", textseagull: "̼", textsubarch: "̯", textsubbar: "̱", textsubbridge: "̪", textsubgrave: "̖", textsublhalfring: "̜", textsubplus: "̟", textsubrhalfring: "̹", textsubring: "̥", textsubsquare: "̻", textsubtilde: "̰", textsubumlaut: "̤", textsubwedge: "̬", textsuperimposetilde: "̴", textsyllabic: "̩", texttildedot: "̇̃", textvbaraccent: "̍", tilde: "̃", u: "̆", underbar: "̱", v: "̌", "~": "̃" }; var require$$4 = { commands: commands, tolatex: tolatex, tounicode: tounicode }; var unicode2latex = { ascii: require$$0$1, ascii_bibtex_creator: require$$1, unicode: require$$2, latex: require$$3, diacritics: require$$4, }; var categories = [ { 'name': 'C', 'alias': 'Other', 'isBmpLast': true, 'bmp': '\0-\x1F\x7F-\x9F\xAD\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20C0-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E53-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\u9FFD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7C0\uA7C1\uA7CB-\uA7F4\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF', 'astral': '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCBD\uDCC2-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA0-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD73-\uDD7A\uDDE9-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDF\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDD79\uDDCC\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7B-\uDE7F\uDE87-\uDE8F\uDEA9-\uDEAF\uDEB7-\uDEBF\uDEC3-\uDECF\uDED7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]' }, { 'name': 'Cc', 'alias': 'Control', 'bmp': '\0-\x1F\x7F-\x9F' }, { 'name': 'Cf', 'alias': 'Format', 'bmp': '\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB', 'astral': '\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC38]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]' }, { 'name': 'Cn', 'alias': 'Unassigned', 'bmp': '\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u05FF\u061D\u070E\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u2065\u2072\u2073\u208F\u209D-\u209F\u20C0-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E53-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\u9FFD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7C0\uA7C1\uA7CB-\uA7F4\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD\uFEFE\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFF8\uFFFE\uFFFF', 'astral': '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCC2-\uDCCC\uDCCE\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDB7F][\uDC00-\uDFFF]|\uD80D[\uDC2F\uDC39-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDDE9-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDF\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDD79\uDDCC\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7B-\uDE7F\uDE87-\uDE8F\uDEA9-\uDEAF\uDEB7-\uDEBF\uDEC3-\uDECF\uDED7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00\uDC02-\uDC1F\uDC80-\uDCFF\uDDF0-\uDFFF]|[\uDBBF\uDBFF][\uDFFE\uDFFF]' }, { 'name': 'Co', 'alias': 'Private_Use', 'bmp': '\uE000-\uF8FF', 'astral': '[\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uDBBF\uDBFF][\uDC00-\uDFFD]' }, { 'name': 'Cs', 'alias': 'Surrogate', 'bmp': '\uD800-\uDFFF' }, { 'name': 'L', 'alias': 'Letter', 'bmp': 'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', 'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]' }, { 'name': 'LC', 'alias': 'Cased_Letter', 'bmp': 'A-Za-z\xB5\xC0-\xD6\xD8-\xF6\xF8-\u01BA\u01BC-\u01BF\u01C4-\u0293\u0295-\u02AF\u0370-\u0373\u0376\u0377\u037B-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0560-\u0588\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FD-\u10FF\u13A0-\u13F5\u13F8-\u13FD\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2134\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2C7B\u2C7E-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA640-\uA66D\uA680-\uA69B\uA722-\uA76F\uA771-\uA787\uA78B-\uA78E\uA790-\uA7BF\uA7C2-\uA7CA\uA7F5\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A', 'astral': '\uD801[\uDC00-\uDC4F\uDCB0-\uDCD3\uDCD8-\uDCFB]|\uD803[\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD806[\uDCA0-\uDCDF]|\uD81B[\uDE40-\uDE7F]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDD00-\uDD43]' }, { 'name': 'Ll', 'alias': 'Lowercase_Letter', 'bmp': 'a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C3\uA7C8\uA7CA\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A', 'astral': '\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD81B[\uDE60-\uDE7F]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43]' }, { 'name': 'Lm', 'alias': 'Modifier_Letter', 'bmp': '\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C\uA69D\uA717-\uA71F\uA770\uA788\uA7F8\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3\uAAF4\uAB5C-\uAB5F\uAB69\uFF70\uFF9E\uFF9F', 'astral': '\uD81A[\uDF40-\uDF43]|\uD81B[\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD838[\uDD37-\uDD3D]|\uD83A\uDD4B' }, { 'name': 'Lo', 'alias': 'Other_Letter', 'bmp': '\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', 'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC50-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF4A\uDF50]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD838[\uDD00-\uDD2C\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]' }, { 'name': 'Lt', 'alias': 'Titlecase_Letter', 'bmp': '\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC' }, { 'name': 'Lu', 'alias': 'Uppercase_Letter', 'bmp': 'A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C2\uA7C4-\uA7C7\uA7C9\uA7F5\uFF21-\uFF3A', 'astral': '\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD81B[\uDE40-\uDE5F]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]' }, { 'name': 'M', 'alias': 'Mark', 'bmp': '\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F', 'astral': '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC9-\uDDCC\uDDCE\uDDCF\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDC5E\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDEAB-\uDEB7\uDF1D-\uDF2B]|\uD806[\uDC2C-\uDC3A\uDD30-\uDD35\uDD37\uDD38\uDD3B-\uDD3E\uDD40\uDD42\uDD43\uDDD1-\uDDD7\uDDDA-\uDDE0\uDDE4\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE8A-\uDE99]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDEF3-\uDEF6]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF51-\uDF87\uDF8F-\uDF92\uDFE4\uDFF0\uDFF1]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]' }, { 'name': 'Mc', 'alias': 'Spacing_Mark', 'bmp': '\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BE-\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062-\u1064\u1067-\u106D\u1083\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1A19\u1A1A\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF7\u302E\u302F\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE\uAAEF\uAAF5\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC', 'astral': '\uD804[\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8\uDD2C\uDD45\uDD46\uDD82\uDDB3-\uDDB5\uDDBF\uDDC0\uDDCE\uDE2C-\uDE2E\uDE32\uDE33\uDE35\uDEE0-\uDEE2\uDF02\uDF03\uDF3E\uDF3F\uDF41-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63]|\uD805[\uDC35-\uDC37\uDC40\uDC41\uDC45\uDCB0-\uDCB2\uDCB9\uDCBB-\uDCBE\uDCC1\uDDAF-\uDDB1\uDDB8-\uDDBB\uDDBE\uDE30-\uDE32\uDE3B\uDE3C\uDE3E\uDEAC\uDEAE\uDEAF\uDEB6\uDF20\uDF21\uDF26]|\uD806[\uDC2C-\uDC2E\uDC38\uDD30-\uDD35\uDD37\uDD38\uDD3D\uDD40\uDD42\uDDD1-\uDDD3\uDDDC-\uDDDF\uDDE4\uDE39\uDE57\uDE58\uDE97]|\uD807[\uDC2F\uDC3E\uDCA9\uDCB1\uDCB4\uDD8A-\uDD8E\uDD93\uDD94\uDD96\uDEF5\uDEF6]|\uD81B[\uDF51-\uDF87\uDFF0\uDFF1]|\uD834[\uDD65\uDD66\uDD6D-\uDD72]' }, { 'name': 'Me', 'alias': 'Enclosing_Mark', 'bmp': '\u0488\u0489\u1ABE\u20DD-\u20E0\u20E2-\u20E4\uA670-\uA672' }, { 'name': 'Mn', 'alias': 'Nonspacing_Mark', 'bmp': '\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F', 'astral': '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC01\uDC38-\uDC46\uDC7F-\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDD00-\uDD02\uDD27-\uDD2B\uDD2D-\uDD34\uDD73\uDD80\uDD81\uDDB6-\uDDBE\uDDC9-\uDDCC\uDDCF\uDE2F-\uDE31\uDE34\uDE36\uDE37\uDE3E\uDEDF\uDEE3-\uDEEA\uDF00\uDF01\uDF3B\uDF3C\uDF40\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC38-\uDC3F\uDC42-\uDC44\uDC46\uDC5E\uDCB3-\uDCB8\uDCBA\uDCBF\uDCC0\uDCC2\uDCC3\uDDB2-\uDDB5\uDDBC\uDDBD\uDDBF\uDDC0\uDDDC\uDDDD\uDE33-\uDE3A\uDE3D\uDE3F\uDE40\uDEAB\uDEAD\uDEB0-\uDEB5\uDEB7\uDF1D-\uDF1F\uDF22-\uDF25\uDF27-\uDF2B]|\uD806[\uDC2F-\uDC37\uDC39\uDC3A\uDD3B\uDD3C\uDD3E\uDD43\uDDD4-\uDDD7\uDDDA\uDDDB\uDDE0\uDE01-\uDE0A\uDE33-\uDE38\uDE3B-\uDE3E\uDE47\uDE51-\uDE56\uDE59-\uDE5B\uDE8A-\uDE96\uDE98\uDE99]|\uD807[\uDC30-\uDC36\uDC38-\uDC3D\uDC3F\uDC92-\uDCA7\uDCAA-\uDCB0\uDCB2\uDCB3\uDCB5\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD90\uDD91\uDD95\uDD97\uDEF3\uDEF4]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF8F-\uDF92\uDFE4]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]' }, { 'name': 'N', 'alias': 'Number', 'bmp': '0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19', 'astral': '\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]' }, { 'name': 'Nd', 'alias': 'Decimal_Number', 'bmp': '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19', 'astral': '\uD801[\uDCA0-\uDCA9]|\uD803[\uDD30-\uDD39]|\uD804[\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF39]|\uD806[\uDCE0-\uDCE9\uDD50-\uDD59]|\uD807[\uDC50-\uDC59\uDD50-\uDD59\uDDA0-\uDDA9]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDD50-\uDD59]|\uD83E[\uDFF0-\uDFF9]' }, { 'name': 'Nl', 'alias': 'Letter_Number', 'bmp': '\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF', 'astral': '\uD800[\uDD40-\uDD74\uDF41\uDF4A\uDFD1-\uDFD5]|\uD809[\uDC00-\uDC6E]' }, { 'name': 'No', 'alias': 'Other_Number', 'bmp': '\xB2\xB3\xB9\xBC-\xBE\u09F4-\u09F9\u0B72-\u0B77\u0BF0-\u0BF2\u0C78-\u0C7E\u0D58-\u0D5E\u0D70-\u0D78\u0F2A-\u0F33\u1369-\u137C\u17F0-\u17F9\u19DA\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215F\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA830-\uA835', 'astral': '\uD800[\uDD07-\uDD33\uDD75-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC65\uDDE1-\uDDF4]|\uD805[\uDF3A\uDF3B]|\uD806[\uDCEA-\uDCF2]|\uD807[\uDC5A-\uDC6C\uDFC0-\uDFD4]|\uD81A[\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD83A[\uDCC7-\uDCCF]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]' }, { 'name': 'P', 'alias': 'Punctuation', 'bmp': '!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65', 'astral': '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]' }, { 'name': 'Pc', 'alias': 'Connector_Punctuation', 'bmp': '_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F' }, { 'name': 'Pd', 'alias': 'Dash_Punctuation', 'bmp': '\\-\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D', 'astral': '\uD803\uDEAD' }, { 'name': 'Pe', 'alias': 'Close_Punctuation', 'bmp': '\\)\\]\\}\u0F3B\u0F3D\u169C\u2046\u207E\u208E\u2309\u230B\u232A\u2769\u276B\u276D\u276F\u2771\u2773\u2775\u27C6\u27E7\u27E9\u27EB\u27ED\u27EF\u2984\u2986\u2988\u298A\u298C\u298E\u2990\u2992\u2994\u2996\u2998\u29D9\u29DB\u29FD\u2E23\u2E25\u2E27\u2E29\u3009\u300B\u300D\u300F\u3011\u3015\u3017\u3019\u301B\u301E\u301F\uFD3E\uFE18\uFE36\uFE38\uFE3A\uFE3C\uFE3E\uFE40\uFE42\uFE44\uFE48\uFE5A\uFE5C\uFE5E\uFF09\uFF3D\uFF5D\uFF60\uFF63' }, { 'name': 'Pf', 'alias': 'Final_Punctuation', 'bmp': '\xBB\u2019\u201D\u203A\u2E03\u2E05\u2E0A\u2E0D\u2E1D\u2E21' }, { 'name': 'Pi', 'alias': 'Initial_Punctuation', 'bmp': '\xAB\u2018\u201B\u201C\u201F\u2039\u2E02\u2E04\u2E09\u2E0C\u2E1C\u2E20' }, { 'name': 'Po', 'alias': 'Other_Punctuation', 'bmp': '!-#%-\'\\*,\\.\\/:;\\?@\\\xA1\xA7\xB6\xB7\xBF\u037E\u0387\u055A-\u055F\u0589\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u166E\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u1805\u1807-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203B-\u203E\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205E\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00\u2E01\u2E06-\u2E08\u2E0B\u2E0E-\u2E16\u2E18\u2E19\u2E1B\u2E1E\u2E1F\u2E2A-\u2E2E\u2E30-\u2E39\u2E3C-\u2E3F\u2E41\u2E43-\u2E4F\u2E52\u3001-\u3003\u303D\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFE10-\uFE16\uFE19\uFE30\uFE45\uFE46\uFE49-\uFE4C\uFE50-\uFE52\uFE54-\uFE57\uFE5F-\uFE61\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF07\uFF0A\uFF0C\uFF0E\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3C\uFF61\uFF64\uFF65', 'astral': '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]' }, { 'name': 'Ps', 'alias': 'Open_Punctuation', 'bmp': '\\(\\[\\{\u0F3A\u0F3C\u169B\u201A\u201E\u2045\u207D\u208D\u2308\u230A\u2329\u2768\u276A\u276C\u276E\u2770\u2772\u2774\u27C5\u27E6\u27E8\u27EA\u27EC\u27EE\u2983\u2985\u2987\u2989\u298B\u298D\u298F\u2991\u2993\u2995\u2997\u29D8\u29DA\u29FC\u2E22\u2E24\u2E26\u2E28\u2E42\u3008\u300A\u300C\u300E\u3010\u3014\u3016\u3018\u301A\u301D\uFD3F\uFE17\uFE35\uFE37\uFE39\uFE3B\uFE3D\uFE3F\uFE41\uFE43\uFE47\uFE59\uFE5B\uFE5D\uFF08\uFF3B\uFF5B\uFF5F\uFF62' }, { 'name': 'S', 'alias': 'Symbol', 'bmp': '\\$\\+<->\\^`\\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD', 'astral': '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]' }, { 'name': 'Sc', 'alias': 'Currency_Symbol', 'bmp': '\\$\xA2-\xA5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BF\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6', 'astral': '\uD807[\uDFDD-\uDFE0]|\uD838\uDEFF|\uD83B\uDCB0' }, { 'name': 'Sk', 'alias': 'Modifier_Symbol', 'bmp': '\\^`\xA8\xAF\xB4\xB8\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u309B\u309C\uA700-\uA716\uA720\uA721\uA789\uA78A\uAB5B\uAB6A\uAB6B\uFBB2-\uFBC1\uFF3E\uFF40\uFFE3', 'astral': '\uD83C[\uDFFB-\uDFFF]' }, { 'name': 'Sm', 'alias': 'Math_Symbol', 'bmp': '\\+<->\\|~\xAC\xB1\xD7\xF7\u03F6\u0606-\u0608\u2044\u2052\u207A-\u207C\u208A-\u208C\u2118\u2140-\u2144\u214B\u2190-\u2194\u219A\u219B\u21A0\u21A3\u21A6\u21AE\u21CE\u21CF\u21D2\u21D4\u21F4-\u22FF\u2320\u2321\u237C\u239B-\u23B3\u23DC-\u23E1\u25B7\u25C1\u25F8-\u25FF\u266F\u27C0-\u27C4\u27C7-\u27E5\u27F0-\u27FF\u2900-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2AFF\u2B30-\u2B44\u2B47-\u2B4C\uFB29\uFE62\uFE64-\uFE66\uFF0B\uFF1C-\uFF1E\uFF5C\uFF5E\uFFE2\uFFE9-\uFFEC', 'astral': '\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD83B[\uDEF0\uDEF1]' }, { 'name': 'So', 'alias': 'Other_Symbol', 'bmp': '\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836\uA837\uA839\uAA77-\uAA79\uFDFD\uFFE4\uFFE8\uFFED\uFFEE\uFFFC\uFFFD', 'astral': '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFDC\uDFE1-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838\uDD4F|\uD83B[\uDCAC\uDD2E]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFA]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]' }, { 'name': 'Z', 'alias': 'Separator', 'bmp': ' \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000' }, { 'name': 'Zl', 'alias': 'Line_Separator', 'bmp': '\u2028' }, { 'name': 'Zp', 'alias': 'Paragraph_Separator', 'bmp': '\u2029' }, { 'name': 'Zs', 'alias': 'Space_Separator', 'bmp': ' \xA0\u1680\u2000-\u200A\u202F\u205F\u3000' } ]; var jabref = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.parse = void 0; function decode(s, sep = ';') { s = s.replace(/\n/g, ''); let pos = 0; const records = ['']; while (pos < s.length) { switch (s[pos]) { case '\\': pos++; records[0] += s[pos]; break; case sep: records.unshift(''); break; default: records[0] += s[pos]; } pos++; } return records.reverse().filter(record => record); } const prefixes = { fileDirectory: 'jabref-meta: fileDirectory:', groupsversion: 'jabref-meta: groupsversion:', groupstree: 'jabref-meta: groupstree:', grouping: 'jabref-meta: grouping:', }; /** * Import the JabRef groups from the `@string` comments in which they were stored. You would typically pass the comments parsed by [[bibtex.parse]] in here. * * JabRef knows several group types, and this parser parses most, but not all of them: * * * independent group: the keys listed in the group are the entries that are considered to belong to it * * intersection: the keys listed in the group are considered to belong to the group if they're also in the parent group * * union: the keys listed in the group are considered to belong to the group, and also the keys that are in the parent group * * query: not supported by this parser */ function parse(comments) { const result = { root: [], groups: {}, fileDirectory: '', version: '', }; const levels = []; const decoded = { fileDirectory: null, groupsversion: null, groupstree: null, grouping: null, }; for (const comment of comments) { for (const [meta, prefix] of Object.entries(prefixes)) { if (comment.startsWith(prefix)) { decoded[meta] = decode(comment.substring(prefix.length)); } } } result.version = decoded.groupsversion && decoded.groupsversion[0]; result.fileDirectory = decoded.fileDirectory && decoded.fileDirectory[0]; for (const tree of ['groupstree', 'grouping']) { if (!decoded[tree]) continue; for (const encoded of decoded[tree]) { const fields = decode(encoded); const level_type_name = decode(fields.shift(), ':'); const m = /^([0-9]+) (.+)/.exec(level_type_name[0]); if (!m) break; const level = parseInt(m[1]); const type = m[2]; // test for StaticGroup? if (type === 'AllEntriesGroup') continue; // root const name = level_type_name[1]; const intersection = decode(fields.shift())[0]; const keys = tree === 'grouping' ? [] : fields.map(field => decode(field)[0]); const group = { name, entries: keys, groups: [], }; result.groups[name] = result.groups[name] || group; if (levels.length < level) { levels.push(group); } else { levels[level - 1] = group; } if (level === 1) { result.root.push(group); } else { const parent = levels[level - 2]; switch (intersection) { case '0': // independent break; case '1': // intersect group.entries = group.entries.filter(key => parent.entries.includes(key)); break; case '2': // union group.entries = group.entries.concat(parent.entries.filter(key => !group.entries.includes(key))); break; } levels[level - 2].groups.push(group); } } } return result; } exports.parse = parse; }); var bibtexParser = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.jabref = exports.chunker = exports.ast = exports.parse = void 0; class ParserError extends Error { constructor(message, node) { super(message); // 'Error' breaks prototype chain here Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain this.name = this.constructor.name; this.node = node; } } class TeXError extends Error { constructor(message, node, text) { super(message); // 'Error' breaks prototype chain here Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain this.name = this.constructor.name; this.node = node; this.text = text; } } const charClass = { Lu: categories.filter(cat => ['Uppercase_Letter', 'Titlecase_Letter'].includes(cat.alias)).map(cat => cat.bmp).join(''), Ll: categories.find(cat => cat.alias === 'Lowercase_Letter').bmp, LnotLu: categories.filter(cat => ['Lowercase_Letter', 'Modifier_Letter', 'Other_Letter', 'Nonspacing_Mark', 'Spacing_Mark', 'Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), P: categories.find(cat => cat.alias === 'Punctuation').bmp, L: categories.find(cat => cat.alias === 'Letter').bmp, N: categories.filter(cat => ['Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), AlphaNum: categories.filter(cat => ['Letter', 'Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), LC: categories.find(cat => cat.alias === 'Cased_Letter').bmp, }; const marker = { and: '\u0001', comma: '\u0002', space: '\u0003', literal: '\u0004', markup: '\u0005', re: { and: /./, comma: /./, space: /./, literal: /./, literalName: /./, }, clean(s) { return s.replace(marker.re.space, ' ').replace(marker.re.comma, ', ').replace(marker.re.literal, ''); }, }; marker.re = { and: new RegExp(marker.and, 'g'), comma: new RegExp(marker.comma, 'g'), space: new RegExp(marker.space, 'g'), literal: new RegExp(marker.literal, 'g'), literalName: new RegExp(`^${marker.literal}([^${marker.literal}]*)${marker.literal}$`), }; const preserveCase = { leadingCap: new RegExp(`^[${charClass.Lu}][${charClass.LnotLu}]+[${charClass.P}]?$`), allCaps: new RegExp(`^[${charClass.Lu}${charClass.N}]{2,}$`), allLower: new RegExp(`^[${charClass.Ll}${charClass.N}]{2,}$`), joined: new RegExp(`^[${charClass.Lu}][${charClass.LnotLu}]*([-+][${charClass.L}${charClass.N}]+)*[${charClass.P}]*$`), hasUpper: new RegExp(`[${charClass.Lu}]`), hasLower: new RegExp(`[${charClass.Ll}]`), isNumber: /^[0-9]+$/, hasAlpha: new RegExp(`[${charClass.L}]`), hasAlphaNum: new RegExp(`[${charClass.AlphaNum}]`), notAlphaNum: new RegExp(`[^${charClass.AlphaNum}]`, 'g'), sentenceStart: new RegExp(`(^|([\u2014:?!.]\\s+))[${charClass.Lu}]`, 'g'), markup: /<\/?span[^>]*>/g, acronym: new RegExp(`.*\\.${marker.markup}*[${charClass.Lu}]${marker.markup}*\\.$`), notCaseSensitive: new RegExp(`[^${charClass.LC}]`), isCaseSensitive: new RegExp(`[${charClass.LC}]`), quoted: /("[^"]+")|(“[^“]+“)/g, }; const fields = { creator: [ 'author', 'bookauthor', 'collaborator', 'commentator', 'director', 'editor', 'editora', 'editorb', 'editors', 'holder', 'scriptwriter', 'translator', ], title: [ 'title', 'series', 'shorttitle', 'booktitle', 'type', 'origtitle', 'maintitle', 'eventtitle', ], unnest: [ 'publisher', 'location', ], verbatim: [ 'url', 'doi', 'file', 'files', 'eprint', 'verba', 'verbb', 'verbc', 'groups', ], html: [ 'annotation', 'comment', 'annote', 'review', 'notes', 'note', ], unabbrev: [ 'journal', 'journaltitle', 'journal-full', ], }; const english = [ 'american', 'british', 'canadian', 'english', 'australian', 'newzealand', 'usenglish', 'ukenglish', 'en', 'eng', 'en-au', 'en-bz', 'en-ca', 'en-cb', 'en-gb', 'en-ie', 'en-jm', 'en-nz', 'en-ph', 'en-tt', 'en-us', 'en-za', 'en-zw', 'anglais', ]; class Parser { constructor(options = {}) { this.in_preamble = false; this.preamble = []; this.log = function (str) { }; // tslint:disable-line variable-name only-arrow-functions no-empty for (const [option, value] of Object.entries(options)) { if (typeof value === 'undefined') delete options[option]; } if (options.errorHandler === false) { // tslint:disable-next-line only-arrow-functions no-empty options.errorHandler = function (err) { }; } else if (options.errorHandler === undefined) { // tslint:disable-next-line only-arrow-functions options.errorHandler = function (err) { throw err; }; } if (typeof options.sentenceCase === 'boolean') { options.sentenceCase = options.sentenceCase ? english : []; } else { options.sentenceCase = options.sentenceCase || english; } if (!options.strings) options.strings = {}; if (!options.unabbreviate) options.unabbreviate = {}; if (options.raw) { options.sentenceCase = false; options.caseProtection = false; } this.options = Object.assign({ caseProtection: 'as-needed', verbatimFields: [/^citeulike-linkout-[0-9]+$/, ...fields.verbatim], verbatimCommands: ['url', 'href'], unnestFields: [...fields.title, ...fields.unnest, ...fields.verbatim], unnestMode: 'unwrap', htmlFields: fields.html, guessAlreadySentenceCased: true, markup: {} }, options); const markup_defaults = { enquote: { open: '\u201c', close: '\u201d' }, sub: { open: '', close: '' }, sup: { open: '', close: '' }, bold: { open: '', close: '' }, italics: { open: '', close: '' }, smallCaps: { open: '', close: '' }, caseProtect: { open: '', close: '' }, roman: { open: '', close: '' }, fixedWidth: { open: '', close: '' }, }; // patch in because the options will likely not have enquote and case-protect for (const [markup, { open, close }] of Object.entries(markup_defaults)) { this.options.markup[markup] = this.options.markup[markup] || { open, close }; } for (const i of [1, 2, 3, 4]) { // tslint:disable-line:no-magic-numbers this.options.markup[`h${i}`] = this.options.markup[`h${i}`] || { open: ``, close: `` }; } this.unresolvedStrings = {}; this.errors = []; this.comments = []; this.entries = []; this.strings = {}; this.newcommands = {}; this.default_strings = { JAN: [this.text('01')], FEB: [this.text('02')], MAR: [this.text('03')], APR: [this.text('04')], MAY: [this.text('05')], JUN: [this.text('06')], JUL: [this.text('07')], AUG: [this.text('08')], SEP: [this.text('09')], OCT: [this.text('10')], NOV: [this.text('11')], DEC: [this.text('12')], ACMCS: [this.text('ACM Computing Surveys')], ACTA: [this.text('Acta Informatica')], CACM: [this.text('Communications of the ACM')], IBMJRD: [this.text('IBM Journal of Research and Development')], IBMSJ: [this.text('IBM Systems Journal')], IEEESE: [this.text('IEEE Transactions on Software Engineering')], IEEETC: [this.text('IEEE Transactions on Computers')], IEEETCAD: [this.text('IEEE Transactions on Computer-Aided Design of Integrated Circuits')], IPL: [this.text('Information Processing Letters')], JACM: [this.text('Journal of the ACM')], JCSS: [this.text('Journal of Computer and System Sciences')], SCP: [this.text('Science of Computer Programming')], SICOMP: [this.text('SIAM Journal on Computing')], TOCS: [this.text('ACM Transactions on Computer Systems')], TODS: [this.text('ACM Transactions on Database Systems')], TOG: [this.text('ACM Transactions on Graphics')], TOMS: [this.text('ACM Transactions on Mathematical Software')], TOOIS: [this.text('ACM Transactions on Office Information Systems')], TOPLAS: [this.text('ACM Transactions on Programming Languages and Systems')], TCS: [this.text('Theoretical Computer Science')], }; } ast(input, clean = true) { const _ast = []; for (const chunk of chunker.parse(input)) { let chunk_ast = grammar.parse(chunk.text, Object.assign(Object.assign({}, this.options), { combiningDiacritics: unicode2latex.diacritics.commands })); if (clean) chunk_ast = this.clean(chunk_ast); _ast.push(chunk_ast); } return _ast; } parse(input) { return this.options.async ? this.parseAsync(input) : this.parseSync(input); } parseSync(input) { for (const chunk of chunker.parse(input)) { this.parseChunk(chunk); } return this.parsed(); } async parseAsync(input) { for (const chunk of await chunker.parse(input, { async: true })) { this.parseChunk(chunk); } return this.parsed(); } parsed() { this.field = null; const strings = {}; this.cleaning = { type: 'other' }; for (const [key, value] of Object.entries(this.strings)) { this.field = { name: '@string', text: '', level: 0, preserveRanges: null, words: { upper: 0, lower: 0, other: 0, }, }; this.convert(this.clean(value)); strings[key] = this.field.text; } return { errors: this.errors, entries: this.entries, comments: this.comments, strings, preamble: this.preamble, }; } preserve(start, end, reason) { if (!this.field.preserveRanges) return; if (!end) { this.field.preserveRanges = null; return; } /* this.field.preserveRanges = this.field.preserveRanges.filter(range => range.start < start || range.end > end) if (this.field.preserveRanges.find(range => range.start <= start && range.end >= end)) return */ /* if (this.field.preserveRanges && this.field.preserveRanges.length) { const last = this.field.preserveRanges[this.field.preserveRanges.length - 1] if (start < last.start) throw new Error(JSON.stringify({...last, new: { start, end, reason }, text: this.field.text})) } */ this.field.preserveRanges.push({ start, end, reason }); } parseChunk(chunk) { this.chunk = chunk.text; try { let bib = grammar.parse(chunk.text, Object.assign(Object.assign({}, this.options), { combiningDiacritics: unicode2latex.diacritics.commands })); if (bib.kind !== 'Bibliography') throw new Error(this.show(bib)); bib = this.clean(bib); for (const entity of bib.children) { switch (entity.kind) { case 'Entry': case 'BracedComment': case 'LineComment': case 'PreambleExpression': this.convert(entity); break; case 'StringDeclaration': case 'NonEntryText': break; } } return bib; } catch (err) { if (!err.location) throw err; this.errors.push({ message: err.message, line: err.location.start.line + chunk.offset.line, column: err.location.start.column, source: this.chunk, }); return null; } } show(o) { // tslint:disable-next-line prefer-template let text = JSON.stringify(o); if (this.chunk) text += '\n' + this.chunk.trim(); return text; } text(value = '') { return { kind: 'Text', value, mode: 'text' }; } error(err, returnvalue) { if (typeof this.options.errorHandler === 'function') this.options.errorHandler(err); return returnvalue; } condense(node) { // apply cleaning to resulting children node.value = node.value.map(child => this.clean(child)); // unpack redundant blocks node.value = node.value.reduce((acc, child, i) => { if (child.kind === 'Block' && !child.case && Object.keys(child.markup).length === 0) { acc = acc.concat(child.value); } else { acc.push(child); } return acc; }, []); // condense text nodes to make whole words for sentence casing node.value = node.value.reduce((acc, child, i) => { if (acc.length === 0) { acc.push(child); return acc; } const last = acc[acc.length - 1]; const next = node.value[i + 1]; if (this.options.caseProtection === 'strict' && this.onlyCaseProtected(last) && child.kind === 'Text' && !child.value.match(preserveCase.isCaseSensitive) && this.onlyCaseProtected(next)) { last.value.push(child); delete last.source; return acc; } if (last.kind === 'Block' && child.kind === 'Block' && Object.keys(last.markup).sort().join('/') === Object.keys(child.markup).sort().join('/')) { last.value = last.value.concat(child.value); delete last.source; return acc; } if (last.kind === 'Text' && child.kind === 'Text' && last.mode === child.mode) { last.value += child.value; delete last.source; return acc; } acc.push(child); return acc; }, []); } onlyCaseProtected(node) { return (node === null || node === void 0 ? void 0 : node.kind) === 'Block' && node.case === 'protect' && Object.keys(node.markup).join('/') === ''; } argument(node, kind) { if (!node.arguments || !node.arguments.required.length) return (kind === 'none'); // expect 'n' text arguments if (typeof kind === 'number') { if (node.arguments.required.length !== kind) return false; return node.arguments.required; } // return first argument if it's the only one if (node.arguments.required.length !== 1) return false; // loose checking for text if (kind === 'text') { const first = node.arguments.required[0]; if (first.kind === 'Block' && first.value.length === 1) { if (first.value[0].kind === 'Text') return first.value[0].value; } // fall back to strict kind check kind = 'Text'; } // return first argument if it's the only one and is of the specified kind if (node.arguments.required.length !== 1 || node.arguments.required[0].kind !== kind) return false; switch (kind) { case 'Text': return node.arguments.required[0].value; case 'RegularCommand': case 'Block': return node.arguments.required[0]; } return false; } clean(node) { if (Array.isArray(node)) return node.map(child => this.clean(child)); delete node.loc; switch (node.kind) { case 'InlineMath': case 'DisplayMath': return this.clean_block(node); case 'Environment': return this.clean_environment(node); case 'Block': return this.clean_block(node); case 'Bibliography': return this.clean_bib(node); case 'RegularCommand': return this.clean_command(node); case 'DiacriticCommand': return this.clean_diacritic(node); case 'Entry': return this.clean_entry(node); case 'Field': return this.options.raw ? node : this.clean_field(node); case 'StringDeclaration': return this.clean_stringdecl(node); case 'StringReference': return this.clean_stringref(node); case 'SubscriptCommand': case 'SuperscriptCommand': return this.clean_script(node); case 'SymbolCommand': return this.clean_symbol(node); case 'PreambleExpression': return this.clean_preamble(node); case 'Number': case 'Text': case 'BracedComment': case 'LineComment': return node; default: return this.error(new ParserError(`no cleanup method for ${this.show(node)}`, node), this.text()); } } clean_preamble(node) { this.in_preamble = true; const clean = this.clean(node.value); this.in_preamble = false; return clean; } clean_bib(node) { node.children = node.children.filter(child => child.kind !== 'NonEntryText').map(child => this.clean(child)); return node; } clean_stringdecl(node) { this.strings[node.name.toUpperCase()] = node.value; return node; } clean_stringref(node) { var _a; const name = node.name.toUpperCase(); const _string = this.strings[name] || this.options.strings[name] || this.default_strings[name] || (fields.unabbrev.includes(this.cleaning.name) && ((_a = this.options.unabbreviate[name]) === null || _a === void 0 ? void 0 : _a.text) && [this.text(this.options.unabbreviate[name].text)]); if (!_string) { if (!this.unresolvedStrings[name]) this.errors.push({ message: `Unresolved @string reference ${JSON.stringify(node.name)}` }); this.unresolvedStrings[name] = true; } return this.clean({ kind: 'Block', // if the string isn't found, add it as-is but exempt it from sentence casing case: _string ? undefined : 'preserve', markup: {}, value: _string ? JSON.parse(JSON.stringify(_string)) : [this.text(node.name)], }); } clean_entry(node) { const shortjournals = []; for (const field of node.fields) { if (fields.unabbrev.includes(field.name) && Array.isArray(field.value)) { const abbr = field.value.map(v => v.source).join(''); const journal = this.options.unabbreviate[abbr]; if (journal) { shortjournals.push(Object.assign(Object.assign({}, JSON.parse(JSON.stringify(field))), { name: 'shortjournal' })); field.value = JSON.parse(JSON.stringify(journal.ast)); } } } node.fields = node.fields.concat(shortjournals).map(child => this.clean(child)); return node; } startCleaning(name) { name = name.toLowerCase(); if (fields.title.includes(name)) { this.cleaning = { type: 'title', name }; } else if (fields.creator.includes(name.replace(/s$/, ''))) { this.cleaning = { type: 'creator', name: name.replace(/s$/, '') }; } else { this.cleaning = { type: 'other', name }; } } stripNoCase(node, strip, preserve) { switch (node.kind) { case 'RegularCommand': // a bit cheaty to assume these to be nocased, but it's just more likely to be what people want if (['chsf', 'bibstring', 'cite'].includes(node.command)) strip = true; node.arguments.required.map(arg => this.stripNoCase(arg, strip, preserve)); break; case 'Block': case 'InlineMath': case 'DisplayMath': if (strip && node.case === 'protect') { if (preserve) { node.case = 'preserve'; } else { delete node.case; } } node.value.map(v => this.stripNoCase(v, strip || node.case === 'protect', preserve)); break; case 'Field': if (Array.isArray(node.value)) node.value.map(v => this.stripNoCase(v, strip, preserve)); break; } } isVerbatimField(name) { return !!this.options.verbatimFields.find(p => (typeof p === 'string') ? name === p : name.match(p)); } clean_field(node) { this.startCleaning(node.name); this.stripNoCase(node, !this.options.caseProtection || this.isVerbatimField(node.name), this.options.sentenceCase.length === 0); if (Array.isArray(node.value)) this.condense(node); return node; } clean_script(node) { let m, value, singlechar; // recognize combined forms like \^\circ if (singlechar = unicode2latex.latex[node.source]) return this.text(singlechar); if ((m = node.source.match(/^([\^_])([^{}]+)$/)) && ((singlechar = unicode2latex.latex[`${m[1]}${m[2]}`]) || (singlechar = unicode2latex.latex[`${m[1]}{${m[2]}}`]))) return this.text(singlechar); if ((m = node.source.match(/^([\^_])\{([^{}]+)\}$/)) && ((singlechar = unicode2latex.latex[`${m[1]}${m[2]}`]) || (singlechar = unicode2latex.latex[`${m[1]}{${m[2]}}`]))) return this.text(singlechar); const cmd = node.kind === 'SuperscriptCommand' ? '^' : '_'; if (typeof node.value === 'string' && (singlechar = unicode2latex.latex[`${cmd}${node.value}`] || unicode2latex.latex[`${cmd}{${node.value}}`])) { return this.text(singlechar); } if (typeof node.value === 'string') { value = [this.text(node.value)]; } else if (!Array.isArray(node.value)) { value = [node.value]; } else { value = node.value; } const mode = node.kind === 'SuperscriptCommand' ? 'sup' : 'sub'; return this.clean({ kind: 'Block', markup: { [mode]: true }, value, }); } clean_environment(node) { this.condense(node); return node; } needsProtection(word) { return !word.match(preserveCase.hasUpper) && word.match(preserveCase.hasLower); } clean_block(node) { var _a; this.condense(node); if (this.options.caseProtection !== 'strict' && ((_a = this.cleaning) === null || _a === void 0 ? void 0 : _a.type) === 'title' && node.case === 'protect') { // test whether we can get away with skipping case protection because it contains all words that will be preserved anyway when converting back to Title Case let preserve = true; for (const child of node.value) { if (child.kind === 'Text') { const value = child.value.trim(); preserve = !value.match(preserveCase.isCaseSensitive) || !value.split(/\s+/).find(word => this.needsProtection(word)); } else { preserve = false; } if (!preserve) break; } if (preserve) node.case = 'preserve'; } if (node.kind === 'Block') { for (const [markup, on] of Object.entries(node.markup)) { if (!on) delete node.markup[markup]; } } return node; } clean_diacritic(node) { const char = node.dotless ? `\\${node.character}` : node.character; let unicode = unicode2latex.latex[`\\${node.mark}{${char}}`] || unicode2latex.latex[`\\${node.mark}${char}`] || unicode2latex.latex[`{\\${node.mark} ${char}}`] || unicode2latex.latex[`{\\${node.mark}${char}}`] || unicode2latex.latex[`\\${node.mark} ${char}`]; if (!unicode && !node.dotless && node.character.length === 1 && unicode2latex.diacritics.tounicode[node.mark]) unicode = node.character + unicode2latex.diacritics.tounicode[node.mark]; if (!unicode && !this.in_preamble) return this.error(new TeXError(`Unhandled \\${node.mark}{${char}}`, node, this.chunk), this.text()); return this.text(unicode); } clean_symbol(node) { if (node.command === '\\') return this.text('\n'); return this.text(unicode2latex.latex[`\\${node.command}`] || node.command); } first_text_block(node) { if (!node) return null; if (node.kind === 'Block') { for (const child of node.value) { switch (child.kind) { case 'Text': return child.value ? node : null; case 'Block': const candidate = this.first_text_block(child); if (candidate) return candidate; break; default: return null; } } } else { return null; } } clean_command(node) { var _a; let arg, unicode; if (unicode = unicode2latex.latex[node.source]) return this.text(unicode); switch (node.command) { case 'newcommand': if (((_a = node.arguments) === null || _a === void 0 ? void 0 : _a.required.length) === 2 && node.arguments.required[0].kind === 'Block' && node.arguments.required[0].value.length === 1 && node.arguments.required[0].value[0].kind === 'RegularCommand' && node.arguments.required[1].kind === 'Block') { this.newcommands[node.arguments.required[0].value[0].command] = node.arguments.required[1].value; return this.text(); } // console.log('newcommand?', JSON.stringify(node, null, 2)) break; case 'item': return { kind: 'Markup', value: '
  • ', source: node.source }; case 'frac': if (arg = this.argument(node, 2)) { if (arg[0].kind === 'Text' && arg[1].kind === 'Text' && (unicode = unicode2latex.latex[`\\frac{${arg[0].value}}{${arg[1].value}}`])) return this.text(unicode); return this.clean({ kind: 'Block', case: 'protect', markup: {}, value: [ { kind: 'Block', markup: { sup: true }, value: [arg[0]] }, this.text('\u2044'), { kind: 'Block', markup: { sub: true }, value: [arg[1]] }, ], }); } break; // ignore case 'vspace': case 'vphantom': case 'path': case 'aftergroup': case 'ignorespaces': case 'relax': case 'noopsort': case 'ifdefined': case 'DeclarePrefChars': case 'else': case 'fi': case 'makeatletter': return this.text(); case 'ElsevierGlyph': if (arg = this.argument(node, 'Text')) { if (unicode = unicode2latex.latex[`\\${node.command}{${arg}}`]) return this.text(unicode); return this.text(String.fromCharCode(parseInt(arg, 16))); } break; case 'chsf': if (this.argument(node, 'none')) return this.text(); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'bibstring': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'cite': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'textsuperscript': case 'sp': if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`^{${arg}}`])) return this.text(unicode); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'textsubscript': case 'sb': if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`_{${arg}}`])) return this.text(unicode); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'textsc': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'enquote': case 'mkbibquote': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'textbf': case 'mkbibbold': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'section': case 'subsection': case 'subsubsection': case 'subsubsubsection': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'mkbibitalic': case 'mkbibemph': case 'textit': case 'emph': if (arg = this.argument(node, 'Block')) return this.clean(arg); if (arg = this.argument(node, 'Text')) return this.clean({ kind: 'Block', markup: { italics: true }, value: [this.text(arg)] }); break; case 'bibcyr': if (this.argument(node, 'none')) return this.text(); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'hspace': case 'mathrm': case 'textrm': case 'ocirc': case 'mbox': if (arg = this.argument(node, 'text')) { unicode = unicode2latex.latex[`\\${node.command}{${arg}}`]; return this.text(unicode || (node.command === 'hspace' ? ' ' : arg)); } else if (!node.arguments.required.length) { return this.text(); } else if (arg = this.argument(node, 'Block')) { return this.clean(arg); } break; // just take the URL? Not the label? case 'href': if (arg = this.argument(node, 2)) return this.clean(arg[0]); break; case 'url': if (arg = this.argument(node, 'Text')) return this.text(arg); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'sl': case 'em': case 'it': case 'itshape': case 'bf': case 'bfseries': case 'sc': case 'scshape': case 'tt': case 'rm': case 'sf': case 'verb': // handled in the grammar return this.text(); // wouldn't know what to do with these case 'left': case 'right': return this.text(); case 'par': return this.text('\n\n'); case 'cyr': if (this.argument(node, 'none')) return this.text(); break; case 'polhk': if (unicode = this.argument(node, 'text')) { if (unicode.length === 1) return this.text(unicode + '\u0328'); } if (this.argument(node, 'none')) return this.text('\u0328'); break; default: if (node.kind === 'RegularCommand' && this.newcommands[node.command]) { return this.clean({ kind: 'Block', markup: {}, value: JSON.parse(JSON.stringify(this.newcommands[node.command])), }); } if (unicode2latex.diacritics.tounicode[node.command]) { node.arguments.required = this.clean(node.arguments.required); let block; if (node.arguments.required.length === 1 && node.arguments.required[0].kind === 'Text') { // no idea why I can't just straight return this but typescript just won't shut up block = { kind: 'Block', markup: {}, value: [{ kind: 'DiacriticCommand', mark: node.command, character: node.arguments.required[0].value, dotless: false, loc: node.arguments.required[0].loc, source: node.arguments.required[0].source, }], }; return this.clean(block); } else if (block = this.first_text_block(node.arguments.required[0])) { let fixed = false; block.value = block.value.reduce((value, child) => { if (!fixed && child.kind === 'Text') { fixed = true; value.push({ kind: 'DiacriticCommand', mark: node.command, character: child.value[0] }); value.push(Object.assign(Object.assign({}, child), { value: child.value.substring(1) })); } else { value.push(child); } return value; }, []); return this.clean({ kind: 'Block', markup: {}, value: node.arguments.required, }); } else { // overline without arguments doesn't seem to render in LaTeX if (node.command === 'overline') return this.text(' '); return this.clean({ kind: 'Block', markup: {}, value: [this.text(' ' + unicode2latex.diacritics.tounicode[node.command])].concat(node.arguments.required), }); } } if (unicode = unicode2latex.latex[node.source] || unicode2latex.latex[`${node.source}{}`]) return this.text(unicode); if ((unicode = unicode2latex.latex[`\\${node.command}`] || unicode2latex.latex[`\\${node.command}{}`]) && this.argument(node, 'none')) return this.text(unicode); if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`\\${node.command}{${arg}}`])) return this.text(unicode); break; } if (this.in_preamble) return this.text(node.source); return this.error(new TeXError(`Unhandled command: ${node.command}` + this.show(node), node, this.chunk), this.text()); } preserveCase(word) { // word = word.replace(new RegExp(`"[${this.markup.enquote.open}${this.markup.enquote.close}:()]`, 'g'), '') var _a, _b; if (!word.trim()) return false; if (!word.match(preserveCase.hasAlphaNum)) return true; word = word.replace(/[\/’'”:()]/g, ''); if (word === 'I') return true; if (word.length === 1) return false; if (word.replace(preserveCase.notCaseSensitive) === '') return false; // word = word.replace(preserveCase.notAlphaNum, '') // simple cap at start of field if (word.match(preserveCase.leadingCap) && ((_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.text) === null || _b === void 0 ? void 0 : _b.length) === 0) return false; if (word.match(preserveCase.allCaps)) return true; if (word.length > 1 && word.match(preserveCase.joined)) return false; if (word.match(preserveCase.hasUpper)) return true; if (word.match(preserveCase.isNumber)) return true; return false; } convert(node) { if (Array.isArray(node)) return node.map(child => this.convert(child)); if (this.options.raw && this.field) node = this.text(node.source); switch (node.kind) { case 'Markup': if (this.field) this.field.text += node.value; break; case 'BracedComment': case 'LineComment': this.comments.push(node.value); break; case 'Entry': this.convert_entry(node); break; case 'Number': this.convert_number(node); break; case 'Text': this.convert_text(node); break; case 'Block': case 'InlineMath': case 'DisplayMath': const start = this.field ? this.field.text.length : null; const preserve = typeof start === 'number' && this.field.preserveRanges; this.convert_block(node); if (preserve && (node.case || node.kind.endsWith('Math'))) this.preserve(start, this.field.text.length); // , `convert-block: case=${node.case}, math=${node.kind.endsWith('Math')}`) break; case 'Environment': this.convert_environment(node); break; case 'PreambleExpression': this.preamble.push(node.value.map(preamble => preamble.source).join('\n\n')); break; case 'DisplayMath': case 'InlineMath': case 'StringDeclaration': break; default: return this.error(new ParserError(`no converter for ${node.kind}: ${this.show(node)}`, node), undefined); } } splitOnce(s, sep, fromEnd = false) { const split = fromEnd ? s.lastIndexOf(sep) : s.indexOf(sep); return (split < 0) ? [s, ''] : [s.substr(0, split), s.substr(split + 1)]; } parseName(name) { let parsed = null; const parts = name.split(marker.comma); if (parts.length && !parts.find(p => !p.match(/^[a-z]+(-i)?=/i))) { // extended name format for (const part of parts) { parsed = parsed || {}; const [attr, value] = this.splitOnce(part.replace(marker.re.space, ''), '=').map(v => v.trim()); if (!value) { parsed = null; break; } switch (attr.toLowerCase()) { case 'family': parsed.lastName = value; break; case 'given-i': parsed.initial = value; break; case 'given': parsed.firstName = value; break; case 'prefix': parsed.prefix = value; break; case 'suffix': parsed.suffix = value; break; case 'useprefix': parsed.useprefix = value.toLowerCase() === 'true'; break; case 'juniorcomma': parsed.useprefix = value.toLowerCase() === 'true'; break; default: parsed[attr.toLowerCase()] = value; break; } } } const prefix = /(.+?)\s+(vere|von|van den|van der|van|de|del|della|der|di|da|pietro|vanden|du|st.|st|la|lo|ter|bin|ibn|te|ten|op|ben|al)\s+(.+)/; let m; switch (parsed ? 0 : parts.length) { case 0: // already parsed break; case 1: // name without commas // literal if (marker.re.literalName.test(parts[0])) { parsed = { literal: parts[0] }; } else if (m = parts[0].replace(marker.re.space, ' ').match(prefix)) { // split on prefix parsed = { firstName: m[1], prefix: m[2], lastName: m[3], }; } else { // top-level "firstname lastname" const [firstName, lastName] = this.splitOnce(parts[0], marker.space, true); if (lastName) { parsed = { firstName, lastName }; } else { parsed = { lastName: firstName }; } } break; case 2: // lastname, firstname parsed = { lastName: parts[0], firstName: parts[1], }; break; default: // lastname, suffix, firstname parsed = { lastName: parts[0], suffix: parts[1], firstName: parts.slice(2).join(marker.comma), }; } for (const [k, v] of Object.entries(parsed)) { if (typeof v !== 'string') continue; parsed[k] = marker.clean(v).trim(); } return parsed; } convert_entry(node) { var _a; this.entry = { key: node.id, type: node.type, fields: {}, creators: {}, }; this.entries.push(this.entry); // order these first for language-dependent sentence casing const order = ['langid', 'hyphenation', 'language']; node.fields.sort((a, b) => { const ia = order.indexOf(a.name); const ib = order.indexOf(b.name); if (ia === -1 && ib === -1) return a.name.localeCompare(b.name); // doesn't matter really if (ia === -1) return 1; if (ib === -1) return -1; return ia - ib; }); let sentenceCase = !!this.options.sentenceCase.length; // if sentenceCase is empty, no sentence casing for (const field of node.fields) { if (field.kind !== 'Field') return this.error(new ParserError(`Expected Field, got ${field.kind}`, node), undefined); this.startCleaning(field.name); /* if (this.options.raw && this.fieldType !== 'creator') { this.entry.fields[field.name] = [ field.value.map(v => v.source).join('') ] continue } */ this.field = { name: field.name, text: '', level: 0, words: { upper: 0, lower: 0, other: 0, }, preserveRanges: (sentenceCase && fields.title.includes(field.name)) ? [] : null, html: this.options.htmlFields.includes(field.name), }; this.entry.fields[this.field.name] = this.entry.fields[this.field.name] || []; // special case for 'title = 2020' if (field.value.kind === 'Number') { this.entry.fields[this.field.name].push(field.value.value); this.field = null; continue; } this.convert(field.value); this.field.text = this.field.text.trim(); this.field.text = this.field.text.replace(/<\/([a-z])><\1>/g, ''); this.field.text = this.field.text.replace(/<([a-z])>(\s*)<\/\1>/g, '$1'); if (!this.field.text) continue; // disable sentenceCasing if not an english switch (this.field.name) { case 'langid': case 'hyphenation': sentenceCase = sentenceCase && this.options.sentenceCase.includes(this.field.text.toLowerCase()); break; case 'language': sentenceCase = sentenceCase && !!(this.field.text.toLowerCase().trim().split(/\s*,\s*/).find(lang => this.options.sentenceCase.includes(lang))); break; } // "groups" is a jabref 3.8+ monstrosity if (this.field.name.match(/^(keywords?|groups)$/)) { for (let text of this.field.text.split(marker.comma)) { text = text.trim(); if (text) this.entry.fields[this.field.name].push(text); } } else if (this.cleaning.type === 'creator') { if (!this.entry.creators[this.field.name]) this.entry.creators[this.field.name] = []; // {M. Halle, J. Bresnan, and G. Miller} if (this.field.text.includes(`${marker.comma}${marker.and}`)) { // this.field.text = this.field.text.replace(new RegExp(`${marker.comma}${marker.and}`, 'g'), marker.and).replace(new RegExp(marker.comma), marker.and); } for (const creator of this.field.text.split(marker.and)) { this.entry.fields[this.field.name].push(marker.clean(creator)); this.entry.creators[this.field.name].push(this.parseName(creator)); } } else if (fields.unabbrev.includes(field.name)) { // doesn't get sentence casing anyhow TODO: booktitle does! this.entry.fields[this.field.name].push((((_a = this.options.unabbreviate[this.field.text]) === null || _a === void 0 ? void 0 : _a.text) || this.field.text).normalize('NFC')); } else { if (this.field.preserveRanges) { if (this.options.guessAlreadySentenceCased && Math.max(this.field.words.upper, this.field.words.lower) > (this.field.words.other + Math.min(this.field.words.upper, this.field.words.lower))) { this.preserve(null, null); // , 'mostly sentence cased already') } else { const txt = this.field.text.replace(preserveCase.markup, markup => marker.markup.repeat(markup.length)); let match; preserveCase.sentenceStart.lastIndex = 0; while ((match = preserveCase.sentenceStart.exec(txt))) { // exclude stuff like "U.S. Taxes" if (match.index > 2 && txt.substr(0, match.index + 1).match(preserveCase.acronym)) continue; this.preserve(match.index, match.index + match[0].length); // , `sentenceStart: ${match[0]} at ${match.index}..${match.index + match[0].length}`) } preserveCase.quoted.lastIndex = 0; while ((match = preserveCase.quoted.exec(this.field.text))) { this.preserve(match.index, match.index + match[0].length); // , 'quoted') } } } this.entry.fields[this.field.name].push(this.convertToSentenceCase(this.field.text).normalize('NFC')); } } this.field = null; } convertToSentenceCase(text) { if (!this.field.preserveRanges) return text; // always keep the leading char, but skip markup const lead = text.match(/^(<[^>]+>)*./); if (lead) { this.preserve(lead[0].length - 1, lead[0].length); } else { this.preserve(0, 1); } let sentenceCased = text.toLowerCase().replace(/(([\?!]\s*|^)([\'\"¡¿“‘„«\s]+)?[^\s])/g, x => x.toUpperCase()); for (const { start, end } of this.field.preserveRanges) { sentenceCased = sentenceCased.substring(0, start) + text.substring(start, end) + sentenceCased.substring(end); } if (text !== sentenceCased) this.entry.sentenceCased = true; return sentenceCased; } convert_number(node) { this.field.text += `${node.value}`; } convert_text(node) { if (node.mode === 'verbatim') { this.field.text += node.value.trim(); return; } // heuristic to detect pre-sentencecased text for (const word of node.value.split(/\b/)) { if (word.match(preserveCase.allLower)) { this.field.words.lower++; } else if (word.match(preserveCase.allCaps)) { this.field.words.upper++; } else if (word.match(preserveCase.hasAlpha)) { this.field.words.other++; } } if (this.field.level === 0 && this.cleaning.type === 'creator') { this.field.text += node.value.replace(/\s+and\s+/ig, marker.and).replace(/\s*,\s*/g, marker.comma).replace(/\s+/g, marker.space); return; } if (this.field.level === 0 && this.field.name.match(/^(keywords?|groups)$/)) { this.field.text += node.value.replace(/\s*[;,]\s*/g, marker.comma); return; } if (this.field.html) { this.field.text += node.value.replace(/&/g, '&').replace(//g, '>'); } else if (this.field.preserveRanges) { const words = node.value.split(/(\s+)/); for (const word of words) { const start = this.field.text.length; this.field.text += word; if (this.preserveCase(word)) this.preserve(start, this.field.text.length); // , `word: ${JSON.stringify(word)}`) } } else { this.field.text += node.value; } } convert_environment(node) { this.field.text += { enumerate: '
      ', itemize: '
        ' }[node.env]; this.convert_block(Object.assign(Object.assign({}, node), { kind: 'Block', markup: {} })); this.field.text += { enumerate: '
    ', itemize: '' }[node.env]; } convert_block(node) { const start = this.field.text.length; let prefix = ''; let postfix = ''; if (this.options.caseProtection !== 'strict' && this.cleaning.type === 'other') delete node.case; if (this.cleaning.type === 'creator' && node.case === 'protect') { prefix += marker.literal; postfix = marker.literal + postfix; delete node.case; } if (node.case === 'protect') { prefix += this.options.markup.caseProtect.open; postfix = this.options.markup.caseProtect.close + postfix; } if (node.kind === 'Block') { for (const markup of Object.keys(node.markup)) { if (!this.options.markup[markup]) return this.error(new ParserError(`markup: ${markup}`, node), undefined); prefix += this.options.markup[markup].open; postfix = this.options.markup[markup].close + postfix; } } const end = { withoutPrefix: this.field.text.length, withPrefix: this.field.text.length + prefix.length, }; this.field.text += prefix; this.field.level++; this.convert(node.value); this.field.level--; const added = this.field.text.substring(end.withPrefix); const added_text = added.replace(/<\/?[^>]+>/g, ''); const needsProtection = added_text && ((this.options.caseProtection === 'strict' && added_text.match(preserveCase.isCaseSensitive)) || (this.options.caseProtection === 'as-needed' && added_text.split(/\s+/).find(word => this.needsProtection(word)))); if (!added) { // nothing was added, so remove prefix this.field.text = this.field.text.substring(0, end.withoutPrefix); } else if (this.field.preserveRanges && prefix === this.options.markup.caseProtect.open && !needsProtection) { // something was added that didn't actually need case protection this.field.text = this.field.text.substring(0, end.withoutPrefix) + added; this.field.preserveRanges = this.field.preserveRanges.filter(range => range.start < end.withoutPrefix); } else { this.field.text += postfix; } this.field.text = this.field.text.replace(/<(sup|sub)>([^<>]+)<\/\1>$/i, (m, mode, chars) => { const cmd = mode === 'sup' ? '^' : '_'; let script = ''; for (const char of chars) { const unicode = unicode2latex.latex[`${cmd}${char}`] || unicode2latex.latex[`${cmd}{${char}}`]; script += unicode ? unicode : `<${mode}>${char}`; } script = script.replace(new RegExp(`<${mode}>`, 'g'), ''); return script.length < m.length ? script : m; }); if (node.case && this.field.preserveRanges) this.preserve(start, this.field.text.length); // , 'in convert-block ' + node.source || '') } } /** * parse bibtex. This will try to convert TeX commands into unicode equivalents, and apply `@string` expansion */ function parse(input, options = {}) { const parser = new Parser(options); return parser.parse(input); } exports.parse = parse; function ast(input, options = {}, clean = true) { const parser = new Parser(options); return parser.ast(input, clean); } exports.ast = ast; var chunker_2 = chunker; Object.defineProperty(exports, "chunker", { enumerable: true, get: function () { return chunker_2.parse; } }); Object.defineProperty(exports, "jabref", { enumerable: true, get: function () { return jabref.parse; } }); }); var TEMPLATE_VARIABLES = { citekey: 'Unique citekey', abstract: '', authorString: 'Comma-separated list of author names', containerTitle: 'Title of the container holding the reference (e.g. book title for a book chapter, or the journal title for a journal article)', DOI: '', eprint: '', eprinttype: '', eventPlace: 'Location of event', note: '', page: 'Page or page range', publisher: '', publisherPlace: 'Location of publisher', title: '', titleShort: '', URL: '', year: 'Publication year', zoteroSelectURI: 'URI to open the reference in Zotero', }; var Library = /** @class */ (function () { function Library(entries) { this.entries = entries; } Object.defineProperty(Library.prototype, "size", { get: function () { return Object.keys(this.entries).length; }, enumerable: false, configurable: true }); /** * For the given citekey, find the corresponding `Entry` and return a * collection of template variable assignments. */ Library.prototype.getTemplateVariablesForCitekey = function (citekey) { var _a; var entry = this.entries[citekey]; var shortcuts = { citekey: citekey, abstract: entry.abstract, authorString: entry.authorString, containerTitle: entry.containerTitle, DOI: entry.DOI, eprint: entry.eprint, eprinttype: entry.eprinttype, eventPlace: entry.eventPlace, note: entry.note, page: entry.page, publisher: entry.publisher, publisherPlace: entry.publisherPlace, title: entry.title, titleShort: entry.titleShort, URL: entry.URL, year: (_a = entry.year) === null || _a === void 0 ? void 0 : _a.toString(), zoteroSelectURI: entry.zoteroSelectURI, }; return __assign({ entry: entry.toJSON() }, shortcuts); }; return Library; }()); /** * An `Entry` represents a single reference in a reference database. * Each entry has a unique identifier, known in most reference managers as its * "citekey." */ var Entry = /** @class */ (function () { function Entry() { } Object.defineProperty(Entry.prototype, "year", { get: function () { var _a; return this._year ? parseInt(this._year) : (_a = this.issuedDate) === null || _a === void 0 ? void 0 : _a.getUTCFullYear(); }, enumerable: false, configurable: true }); Object.defineProperty(Entry.prototype, "note", { get: function () { var _a; return (_a = this._note) === null || _a === void 0 ? void 0 : _a.map(function (el) { return el.replace(/(zotero:\/\/.+)/g, '[Link]($1)'); }).join('\n\n'); }, enumerable: false, configurable: true }); Object.defineProperty(Entry.prototype, "zoteroSelectURI", { /** * A URI which will open the relevant entry in the Zotero client. */ get: function () { return "zotero://select/items/@" + this.id; }, enumerable: false, configurable: true }); Entry.prototype.toJSON = function () { var _this = this; var jsonObj = Object.assign({}, this); // add getter values var proto = Object.getPrototypeOf(this); Object.entries(Object.getOwnPropertyDescriptors(proto)) .filter(function (_a) { var descriptor = _a[1]; return typeof descriptor.get == 'function'; }) .forEach(function (_a) { var key = _a[0], descriptor = _a[1]; if (descriptor && key[0] !== '_') { try { var val = _this[key]; jsonObj[key] = val; } catch (error) { return; } } }); return jsonObj; }; return Entry; }()); var EntryCSLAdapter = /** @class */ (function (_super) { __extends(EntryCSLAdapter, _super); function EntryCSLAdapter(data) { var _this = _super.call(this) || this; _this.data = data; _this.eprint = null; _this.eprinttype = null; _this.files = null; return _this; } Object.defineProperty(EntryCSLAdapter.prototype, "id", { get: function () { return this.data.id; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "type", { get: function () { return this.data.type; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "abstract", { get: function () { return this.data.abstract; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "author", { get: function () { return this.data.author; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "authorString", { get: function () { return this.data.author ? this.data.author.map(function (a) { return a.given + " " + a.family; }).join(', ') : null; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "containerTitle", { get: function () { return this.data['container-title']; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "DOI", { get: function () { return this.data.DOI; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "eventPlace", { get: function () { return this.data['event-place']; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "issuedDate", { get: function () { if (!(this.data.issued && this.data.issued['date-parts'] && this.data.issued['date-parts'][0].length > 0)) return null; var _a = this.data.issued['date-parts'][0], year = _a[0], month = _a[1], day = _a[2]; return new Date(Date.UTC(year, (month || 1) - 1, day || 1)); }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "page", { get: function () { return this.data.page; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "publisher", { get: function () { return this.data.publisher; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "publisherPlace", { get: function () { return this.data['publisher-place']; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "title", { get: function () { return this.data.title; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "titleShort", { get: function () { return this.data['title-short']; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "URL", { get: function () { return this.data.URL; }, enumerable: false, configurable: true }); return EntryCSLAdapter; }(Entry)); var BIBLATEX_PROPERTY_MAPPING = { abstract: 'abstract', booktitle: '_containerTitle', date: 'issued', doi: 'DOI', eprint: 'eprint', eprinttype: 'eprinttype', eventtitle: 'event', journal: '_containerTitle', journaltitle: '_containerTitle', location: 'publisherPlace', pages: 'page', shortjournal: 'containerTitleShort', title: 'title', shorttitle: 'titleShort', url: 'URL', venue: 'eventPlace', year: '_year', publisher: 'publisher', note: '_note', }; // BibLaTeX parser returns arrays of property values (allowing for repeated // property entries). For the following fields, just blindly take the first. var BIBLATEX_PROPERTY_TAKE_FIRST = [ 'abstract', 'booktitle', '_containerTitle', 'date', 'doi', 'eprint', 'eprinttype', 'eventtitle', 'journaltitle', 'location', 'pages', 'shortjournal', 'title', 'shorttitle', 'url', 'venue', '_year', 'publisher', ]; var EntryBibLaTeXAdapter = /** @class */ (function (_super) { __extends(EntryBibLaTeXAdapter, _super); function EntryBibLaTeXAdapter(data) { var _this = _super.call(this) || this; _this.data = data; Object.entries(BIBLATEX_PROPERTY_MAPPING).forEach(function (map) { var src = map[0], tgt = map[1]; if (src in _this.data.fields) { var val = _this.data.fields[src]; if (BIBLATEX_PROPERTY_TAKE_FIRST.includes(src)) { val = val[0]; } _this[tgt] = val; } }); return _this; } Object.defineProperty(EntryBibLaTeXAdapter.prototype, "id", { get: function () { return this.data.key; }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "type", { get: function () { return this.data.type; }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "files", { get: function () { // For some reason the bibtex parser doesn't reliably parse file list to // array ; so we'll do it manually / redundantly var ret = []; if (this.data.fields.file) { ret = ret.concat(this.data.fields.file.flatMap(function (x) { return x.split(';'); })); } if (this.data.fields.files) { ret = ret.concat(this.data.fields.files.flatMap(function (x) { return x.split(';'); })); } return ret; }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "authorString", { get: function () { var _a; if (this.data.creators.author) { var names = this.data.creators.author.map(function (name) { if (name.literal) return name.literal; var parts = [name.firstName, name.prefix, name.lastName, name.suffix]; // Drop any null parts and join return parts.filter(function (x) { return x; }).join(' '); }); return names.join(', '); } else { return (_a = this.data.fields.author) === null || _a === void 0 ? void 0 : _a.join(', '); } }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "containerTitle", { get: function () { if (this._containerTitle) { return this._containerTitle; } else if (this.data.fields.eprint) { var prefix = this.data.fields.eprinttype ? this.data.fields.eprinttype + ":" : ''; var suffix = this.data.fields.primaryclass ? " [" + this.data.fields.primaryclass + "]" : ''; return "" + prefix + this.data.fields.eprint + suffix; } }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "issuedDate", { get: function () { return this.issued ? new Date(this.issued) : null; }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "author", { get: function () { var _a; return (_a = this.data.creators.author) === null || _a === void 0 ? void 0 : _a.map(function (a) { return ({ given: a.firstName, family: a.lastName, }); }); }, enumerable: false, configurable: true }); return EntryBibLaTeXAdapter; }(Entry)); var CITATION_DATABASE_FORMAT_LABELS = { 'csl-json': 'CSL-JSON', biblatex: 'BibLaTeX', }; var CitationsPluginSettings = /** @class */ (function () { function CitationsPluginSettings() { this.citationExportFormat = 'csl-json'; this.literatureNoteTitleTemplate = '@{{citekey}}'; this.literatureNoteFolder = 'Reading notes'; this.literatureNoteContentTemplate = '---\n' + 'title: {{title}}\n' + 'authors: {{authorString}}\n' + 'year: {{year}}\n' + '---\n\n'; this.markdownCitationTemplate = '[@{{citekey}}]'; this.alternativeMarkdownCitationTemplate = '@{{citekey}}'; } return CitationsPluginSettings; }()); var CitationSettingTab = /** @class */ (function (_super) { __extends(CitationSettingTab, _super); function CitationSettingTab(app, plugin) { var _this = _super.call(this, app, plugin) || this; _this.plugin = plugin; return _this; } CitationSettingTab.prototype.open = function () { var _this = this; _super.prototype.open.call(this); this.checkCitationExportPath(this.plugin.settings.citationExportPath).then(function () { return _this.showCitationExportPathSuccess(); }); }; CitationSettingTab.prototype.addValueChangeCallback = function (component, settingsKey, cb) { var _this = this; component.onChange(function (value) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { this.plugin.settings[settingsKey] = value; this.plugin.saveSettings().then(function () { if (cb) { cb(value); } }); return [2 /*return*/]; }); }); }); }; CitationSettingTab.prototype.buildValueInput = function (component, settingsKey, cb) { component.setValue(this.plugin.settings[settingsKey]); this.addValueChangeCallback(component, settingsKey, cb); }; CitationSettingTab.prototype.display = function () { var _this = this; var containerEl = this.containerEl; containerEl.empty(); containerEl.setAttr('id', 'zoteroSettingTab'); containerEl.createEl('h2', { text: 'Citation plugin settings' }); new obsidian.Setting(containerEl) .setName('Citation database format') .addDropdown(function (component) { return _this.buildValueInput(component.addOptions(CITATION_DATABASE_FORMAT_LABELS), 'citationExportFormat', function (value) { _this.checkCitationExportPath(_this.plugin.settings.citationExportPath).then(function (success) { if (success) { _this.citationPathSuccessEl.addClass('d-none'); _this.citationPathLoadingEl.removeClass('d-none'); _this.plugin.loadLibrary().then(function () { _this.citationPathLoadingEl.addClass('d-none'); _this.showCitationExportPathSuccess(); }); } }); }); }); // NB: we force reload of the library on path change. new obsidian.Setting(containerEl) .setName('Citation database path') .setDesc('Path to citation library exported by your reference manager. ' + 'Can be an absolute path or a path relative to the current vault root folder. ' + 'Citations will be automatically reloaded whenever this file updates.') .addText(function (input) { return _this.buildValueInput(input.setPlaceholder('/path/to/export.json'), 'citationExportPath', function (value) { _this.checkCitationExportPath(value).then(function (success) { return success && _this.plugin .loadLibrary() .then(function () { return _this.showCitationExportPathSuccess(); }); }); }); }); this.citationPathLoadingEl = containerEl.createEl('p', { cls: 'zoteroSettingCitationPathLoading d-none', text: 'Loading citation database...', }); this.citationPathErrorEl = containerEl.createEl('p', { cls: 'zoteroSettingCitationPathError d-none', text: 'The citation export file cannot be found. Please check the path above.', }); this.citationPathSuccessEl = containerEl.createEl('p', { cls: 'zoteroSettingCitationPathSuccess d-none', text: 'Loaded library with {{n}} references.', }); new obsidian.Setting(containerEl) .setName('Literature note folder') .addText(function (input) { return _this.buildValueInput(input, 'literatureNoteFolder'); }) .setDesc('Save literature note files in this folder within your vault. If empty, notes will be stored in the root directory of the vault.'); containerEl.createEl('h3', { text: 'Template settings' }); var templateInstructionsEl = containerEl.createEl('p'); templateInstructionsEl.append(createSpan({ text: 'The following settings determine how the notes and links created by ' + 'the plugin will be rendered. You may specify a custom template for ' + 'each type of content. Templates are interpreted using ', })); templateInstructionsEl.append(createEl('a', { text: 'Handlebars', href: 'https://handlebarsjs.com/guide/expressions.html', })); templateInstructionsEl.append(createSpan({ text: ' syntax. You can make reference to the following variables:', })); var templateVariableUl = containerEl.createEl('ul', { attr: { id: 'citationTemplateVariables' }, }); Object.entries(TEMPLATE_VARIABLES).forEach(function (variableData) { var key = variableData[0], description = variableData[1], templateVariableItem = templateVariableUl.createEl('li'); templateVariableItem.createEl('span', { cls: 'text-monospace', text: '{{' + key + '}}', }); templateVariableItem.createEl('span', { text: description ? " \u2014 " + description : '', }); }); var templateEntryInstructionsEl = containerEl.createEl('p'); templateEntryInstructionsEl.append(createSpan({ text: 'Advanced users may also refer to the ' }), createSpan({ text: '{{entry}}', cls: 'text-monospace' }), createSpan({ text: ' variable, which contains the full object representation of the ' + 'reference as used internally by the plugin. See the ', }), createEl('a', { text: 'plugin documentation', href: 'http://www.foldl.me/obsidian-citation-plugin/classes/entry.html', }), createSpan({ text: " for information on this object's structure." })); containerEl.createEl('h3', { text: 'Literature note templates' }); new obsidian.Setting(containerEl) .setName('Literature note title template') .addText(function (input) { return _this.buildValueInput(input, 'literatureNoteTitleTemplate'); }); new obsidian.Setting(containerEl) .setName('Literature note content template') .addTextArea(function (input) { return _this.buildValueInput(input, 'literatureNoteContentTemplate'); }); containerEl.createEl('h3', { text: 'Markdown citation templates' }); containerEl.createEl('p', { text: 'You can insert Pandoc-style Markdown citations rather than literature notes by using the "Insert Markdown citation" command. The below options allow customization of the Markdown citation format.', }); new obsidian.Setting(containerEl) .setName('Markdown primary citation template') .addText(function (input) { return _this.buildValueInput(input, 'markdownCitationTemplate'); }); new obsidian.Setting(containerEl) .setName('Markdown secondary citation template') .addText(function (input) { return _this.buildValueInput(input, 'alternativeMarkdownCitationTemplate'); }); }; /** * Returns true iff the path exists; displays error as a side-effect */ CitationSettingTab.prototype.checkCitationExportPath = function (filePath) { return __awaiter(this, void 0, void 0, function () { var e_1; return __generator(this, function (_a) { switch (_a.label) { case 0: this.citationPathLoadingEl.addClass('d-none'); _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, obsidian.FileSystemAdapter.readLocalFile(this.plugin.resolveLibraryPath(filePath))]; case 2: _a.sent(); this.citationPathErrorEl.addClass('d-none'); return [3 /*break*/, 4]; case 3: e_1 = _a.sent(); this.citationPathSuccessEl.addClass('d-none'); this.citationPathErrorEl.removeClass('d-none'); return [2 /*return*/, false]; case 4: return [2 /*return*/, true]; } }); }); }; CitationSettingTab.prototype.showCitationExportPathSuccess = function () { if (!this.plugin.library) return; this.citationPathSuccessEl.setText("Loaded library with " + this.plugin.library.size + " references."); this.citationPathSuccessEl.removeClass('d-none'); }; return CitationSettingTab; }(obsidian.PluginSettingTab)); var messageIds = 0; function onMessage (self, e) { var message = e.data; if (!Array.isArray(message) || message.length < 2) { // Ignore - this message is not for us. return } var messageId = message[0]; var error = message[1]; var result = message[2]; var callback = self._callbacks[messageId]; if (!callback) { // Ignore - user might have created multiple PromiseWorkers. // This message is not for us. return } delete self._callbacks[messageId]; callback(error, result); } function PromiseWorker (worker) { var self = this; self._worker = worker; self._callbacks = {}; worker.addEventListener('message', function (e) { onMessage(self, e); }); } PromiseWorker.prototype.postMessage = function (userMessage) { var self = this; var messageId = messageIds++; var messageToSend = [messageId, userMessage]; return new Promise(function (resolve, reject) { self._callbacks[messageId] = function (error, result) { if (error) { return reject(new Error(error.message)) } resolve(result); }; /* istanbul ignore if */ if (typeof self._worker.controller !== 'undefined') { // service worker, use MessageChannels because e.source is broken in Chrome < 51: // https://bugs.chromium.org/p/chromium/issues/detail?id=543198 var channel = new MessageChannel(); channel.port1.onmessage = function (e) { onMessage(self, e); }; self._worker.controller.postMessage(messageToSend, [channel.port2]); } else { // web worker self._worker.postMessage(messageToSend); } }) }; var promiseWorker = PromiseWorker; /** * Declares properties and methods which are missing from the Obsidian API. */ var NoticeExt = /** @class */ (function (_super) { __extends(NoticeExt, _super); function NoticeExt() { return _super !== null && _super.apply(this, arguments) || this; } NoticeExt.DISAPPEARING_CLASS = 'mod-disappearing'; return NoticeExt; }(obsidian.Notice)); var DISALLOWED_FILENAME_CHARACTERS_RE = /[*"\\/<>:|?]/g; /** * Manages a category of notices to be displayed in the UI. Prevents multiple * notices being shown at the same time. */ var Notifier = /** @class */ (function () { function Notifier(defaultMessage) { this.defaultMessage = defaultMessage; } Notifier.prototype.unload = function () { this.hide(); }; /** * @returns true if the notice was shown, and false otherwise */ Notifier.prototype.show = function (message) { var _this = this; var _a; message = message || this.defaultMessage; if (this.currentNotice) return false; this.currentNotice = new obsidian.Notice(message); // Set up mutation observer to watch for when the notice disappears. (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect(); this.mutationObserver = new MutationObserver(function (changes, observer) { var isDisappearing = changes.some(function (change) { var el = change.target; return (change.type == 'attributes' && el.hasClass(NoticeExt.DISAPPEARING_CLASS)); }); if (isDisappearing) { _this.currentNotice = null; observer.disconnect(); _this.mutationObserver = null; } }); this.mutationObserver.observe(this.currentNotice.noticeEl, { attributeFilter: ['class'], }); }; Notifier.prototype.hide = function () { var _a, _b; (_a = this.currentNotice) === null || _a === void 0 ? void 0 : _a.hide(); (_b = this.mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect(); this.currentNotice = null; this.mutationObserver = null; }; Notifier.DISAPPEARING_CLASS = 'mod-disappearing'; return Notifier; }()); /** * Manages a Worker, recording its state and optionally preventing * message postings before responses to prior messages have been received. */ var WorkerManager = /** @class */ (function () { function WorkerManager(_worker, options) { this._worker = _worker; this.worker = new promiseWorker(this._worker); /** * Only relevant when `blockingChannel` option is true. * Then this property is true iff the worker is currently processing a * received message, and has not yet posted a response. */ this.blocked = false; this.options = __assign(__assign({}, workerManagerDefaultOptions), options); } /** * Attempt to post a message to the worker and return a promise response. * * If `blockingChannel` option is true and the channel is currently blocked, * the message will be discarded and an error will be thrown. */ WorkerManager.prototype.post = function (msg) { return __awaiter(this, void 0, void 0, function () { var _this = this; return __generator(this, function (_a) { if (this.options.blockingChannel && this.blocked) { throw new WorkerManagerBlocked(); } this.blocked = true; return [2 /*return*/, this.worker.postMessage(msg).then(function (result) { _this.blocked = false; return result; }, function (error) { _this.blocked = false; throw error; })]; }); }); }; return WorkerManager; }()); var WorkerManagerBlocked = /** @class */ (function (_super) { __extends(WorkerManagerBlocked, _super); function WorkerManagerBlocked() { var _this = _super.call(this, 'WorkerManager: discarded message because channel is blocked') || this; Object.setPrototypeOf(_this, WorkerManagerBlocked.prototype); return _this; } return WorkerManagerBlocked; }(Error)); var workerManagerDefaultOptions = { blockingChannel: false, }; function funcToSource(fn, sourcemapArg) { var sourcemap = sourcemapArg === undefined ? null : sourcemapArg; var source = fn.toString(); var lines = source.split('\n'); lines.pop(); lines.shift(); var blankPrefixLength = lines[0].search(/\S/); var regex = /(['"])__worker_loader_strict__(['"])/g; for (var i = 0, n = lines.length; i < n; ++i) { lines[i] = lines[i].substring(blankPrefixLength).replace(regex, '$1use strict$2') + '\n'; } if (sourcemap) { lines.push('\/\/# sourceMappingURL=' + sourcemap + '\n'); } return lines; } function createURL(fn, sourcemapArg) { var lines = funcToSource(fn, sourcemapArg); var blob = new Blob(lines, { type: 'application/javascript' }); return URL.createObjectURL(blob); } function createInlineWorkerFactory(fn, sourcemapArg) { var url; return function WorkerFactory(options) { url = url || createURL(fn, sourcemapArg); return new Worker(url, options); }; } var WorkerFactory = createInlineWorkerFactory(/* rollup-plugin-web-worker-loader */function () { (function () { '__worker_loader_strict__'; function isPromise (obj) { // via https://unpkg.com/is-promise@2.1.0/index.js return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function' } function registerPromiseWorker (callback) { function postOutgoingMessage (e, messageId, error, result) { function postMessage (msg) { /* istanbul ignore if */ if (typeof self.postMessage !== 'function') { // service worker e.ports[0].postMessage(msg); } else { // web worker self.postMessage(msg); } } if (error) { /* istanbul ignore else */ if (typeof console !== 'undefined' && 'error' in console) { // This is to make errors easier to debug. I think it's important // enough to just leave here without giving the user an option // to silence it. console.error('Worker caught an error:', error); } postMessage([messageId, { message: error.message }]); } else { postMessage([messageId, null, result]); } } function tryCatchFunc (callback, message) { try { return { res: callback(message) } } catch (e) { return { err: e } } } function handleIncomingMessage (e, callback, messageId, message) { var result = tryCatchFunc(callback, message); if (result.err) { postOutgoingMessage(e, messageId, result.err); } else if (!isPromise(result.res)) { postOutgoingMessage(e, messageId, null, result.res); } else { result.res.then(function (finalResult) { postOutgoingMessage(e, messageId, null, finalResult); }, function (finalError) { postOutgoingMessage(e, messageId, finalError); }); } } function onIncomingMessage (e) { var payload = e.data; if (!Array.isArray(payload) || payload.length !== 2) { // message doens't match communication format; ignore return } var messageId = payload[0]; var message = payload[1]; if (typeof callback !== 'function') { postOutgoingMessage(e, messageId, new Error( 'Please pass a function into register().')); } else { handleIncomingMessage(e, callback, messageId, message); } } self.addEventListener('message', onIncomingMessage); } var register = registerPromiseWorker; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ /* global Reflect, Promise */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function createCommonjsModule(fn, basedir, module) { return module = { path: basedir, exports: {}, require: function (path, base) { return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); } }, fn(module, module.exports), module.exports; } function commonjsRequire () { throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); } /* * Generated by PEG.js 0.10.0. * * http://pegjs.org/ */ function peg$subclass(child, parent) { function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); } function peg$SyntaxError(message, expected, found, location) { this.message = message; this.expected = expected; this.found = found; this.location = location; this.name = "SyntaxError"; if (typeof Error.captureStackTrace === "function") { Error.captureStackTrace(this, peg$SyntaxError); } } peg$subclass(peg$SyntaxError, Error); peg$SyntaxError.buildMessage = function(expected, found) { var DESCRIBE_EXPECTATION_FNS = { literal: function(expectation) { return "\"" + literalEscape(expectation.text) + "\""; }, "class": function(expectation) { var escapedParts = "", i; for (i = 0; i < expectation.parts.length; i++) { escapedParts += expectation.parts[i] instanceof Array ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) : classEscape(expectation.parts[i]); } return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; }, any: function(expectation) { return "any character"; }, end: function(expectation) { return "end of input"; }, other: function(expectation) { return expectation.description; } }; function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); } function literalEscape(s) { return s .replace(/\\/g, '\\\\') .replace(/"/g, '\\"') .replace(/\0/g, '\\0') .replace(/\t/g, '\\t') .replace(/\n/g, '\\n') .replace(/\r/g, '\\r') .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); } function classEscape(s) { return s .replace(/\\/g, '\\\\') .replace(/\]/g, '\\]') .replace(/\^/g, '\\^') .replace(/-/g, '\\-') .replace(/\0/g, '\\0') .replace(/\t/g, '\\t') .replace(/\n/g, '\\n') .replace(/\r/g, '\\r') .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); } function describeExpectation(expectation) { return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); } function describeExpected(expected) { var descriptions = new Array(expected.length), i, j; for (i = 0; i < expected.length; i++) { descriptions[i] = describeExpectation(expected[i]); } descriptions.sort(); if (descriptions.length > 0) { for (i = 1, j = 1; i < descriptions.length; i++) { if (descriptions[i - 1] !== descriptions[i]) { descriptions[j] = descriptions[i]; j++; } } descriptions.length = j; } switch (descriptions.length) { case 1: return descriptions[0]; case 2: return descriptions[0] + " or " + descriptions[1]; default: return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1]; } } function describeFound(found) { return found ? "\"" + literalEscape(found) + "\"" : "end of input"; } return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; }; function peg$parse(input, options) { options = options !== void 0 ? options : {}; var peg$FAILED = {}, peg$startRuleFunctions = { Bibliography: peg$parseBibliography }, peg$startRuleFunction = peg$parseBibliography, peg$c0 = function(r) { return { kind: 'Bibliography', loc: location(), source: text(), children: r, } }, peg$c1 = "@", peg$c2 = peg$literalExpectation("@", false), peg$c3 = "comment", peg$c4 = peg$literalExpectation("comment", true), peg$c5 = function(v) { return { kind: 'BracedComment', loc: location(), source: text(), value: v.slice(1, -1), } }, peg$c6 = /^[^\n\r]/, peg$c7 = peg$classExpectation(["\n", "\r"], true, false), peg$c8 = /^[\n\r]/, peg$c9 = peg$classExpectation(["\n", "\r"], false, false), peg$c10 = function(v) { return { kind: 'LineComment', loc: location(), source: text(), value: normalizeWhitespace(v), } }, peg$c11 = /^[^@]/, peg$c12 = peg$classExpectation(["@"], true, false), peg$c13 = function(v) { return { kind: 'NonEntryText', loc: location(), source: text(), value: normalizeWhitespace(v), } }, peg$c14 = function(n) { return n; }, peg$c15 = "{", peg$c16 = peg$literalExpectation("{", false), peg$c17 = /^[^{}]/, peg$c18 = peg$classExpectation(["{", "}"], true, false), peg$c19 = "}", peg$c20 = peg$literalExpectation("}", false), peg$c21 = function(comment) { return '{' + comment.join('') + '}' }, peg$c22 = /^[A-Za-z]/, peg$c23 = peg$classExpectation([["A", "Z"], ["a", "z"]], false, false), peg$c24 = /^[({]/, peg$c25 = peg$classExpectation(["(", "{"], false, false), peg$c26 = /^[})]/, peg$c27 = peg$classExpectation(["}", ")"], false, false), peg$c28 = function(type, id, fields) { return { kind: 'Entry', id: id || '', type: type.toLowerCase(), loc: location(), source: text(), fields: fields, } }, peg$c29 = "preamble", peg$c30 = peg$literalExpectation("preamble", true), peg$c31 = function(opener, v, closer) { switch (opener + closer) { case '{}': case '()': break default: throw new Error(`Unbalanced opener-closer for preamble: ${opener}...${closer}`) } return { kind: 'PreambleExpression', loc: location(), source: text(), value: v.reduce((a, b) => a.concat(b), []), } }, peg$c32 = "string", peg$c33 = peg$literalExpectation("string", true), peg$c34 = function(k, v) { return { kind: 'StringDeclaration', loc: location(), source: text(), name: k, value: v.reduce((a, b) => a.concat(b), []), } }, peg$c35 = /^[^ \t\r\n,]/, peg$c36 = peg$classExpectation([" ", "\t", "\r", "\n", ","], true, false), peg$c37 = ",", peg$c38 = peg$literalExpectation(",", false), peg$c39 = function(id) { return id; }, peg$c40 = function(name) { return isVerbatimField(name) && unnestFields.includes(name) }, peg$c41 = function(name, value) { // because this was abused so much, many processors treat double-outer-braces as single return { kind: 'Field', loc: location(), source: text(), name: name, loc: location(), value: [ protect(value) ] } }, peg$c42 = function(name) { return isVerbatimField(name) }, peg$c43 = function(name, value) { return { kind: 'Field', loc: location(), source: text(), name: name, loc: location(), value: [ protect(value) ] } }, peg$c44 = function(name, value) { // because this was abused so much, many processors treat double-outer-braces as single if (unnestFields.includes(name) && Array.isArray(value) && value.length === 1 && value[0].kind === 'Block') { if (options.unnestMode === 'preserve') { value[0].case = 'preserve'; } else { value = value[0].value; } } return handle_markup_switches({ kind: 'Field', loc: location(), source: text(), name: name, value: value, }) }, peg$c45 = /^[_:a-zA-Z0-9\-]/, peg$c46 = peg$classExpectation(["_", ":", ["a", "z"], ["A", "Z"], ["0", "9"], "-"], false, false), peg$c47 = function(name) { return name.toLowerCase() }, peg$c48 = "\"", peg$c49 = peg$literalExpectation("\"", false), peg$c50 = function(v) { v = v || { kind: 'Text', loc: location(), source: text(), value: '', }; v.mode = 'verbatim'; return basicTextConversions(v) }, peg$c51 = function(v) { return basicTextConversions({ kind: 'Text', loc: location(), source: text(), value: v.join('').trim(), mode: 'verbatim', }) }, peg$c52 = function(v) { return v }, peg$c53 = function(v) { return '{' + v.join('') + '}' }, peg$c54 = function() { return math.set(false) }, peg$c55 = function(v) { return v.reduce((a, b) => a.concat(b), []); }, peg$c56 = function(v) { return v; }, peg$c57 = "{\\verb", peg$c58 = peg$literalExpectation("{\\verb", false), peg$c59 = /^[a-zA-Z]/, peg$c60 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false), peg$c61 = /^[^\^_${}\\]/, peg$c62 = peg$classExpectation(["^", "_", "$", "{", "}", "\\"], true, false), peg$c63 = function(v) { return basicTextConversions({ kind: 'Text', loc: location(), source: text(), value: normalizeWhitespace(v), mode: math.on ? 'math' : 'text', }) }, peg$c64 = /^[^\^_${}"\\]/, peg$c65 = peg$classExpectation(["^", "_", "$", "{", "}", "\"", "\\"], true, false), peg$c66 = /^[0-9]/, peg$c67 = peg$classExpectation([["0", "9"]], false, false), peg$c68 = function(v) { return { kind: 'Number', loc: location(), source: text(), value: parseInt(v, 10), } }, peg$c69 = function(v) { return { kind: 'StringReference', loc: location(), source: text(), name: v, } }, peg$c70 = "\\begin{", peg$c71 = peg$literalExpectation("\\begin{", false), peg$c72 = /^[a-zA-Z0-9]/, peg$c73 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false), peg$c74 = "\\end{", peg$c75 = peg$literalExpectation("\\end{", false), peg$c76 = function(env, v, cenv) { return env === cenv }, peg$c77 = function(env, v, cenv) { if (markup[env]) { return { kind: 'Block', loc: location(), source: text(), value: v, markup: { [markup[env]]: true }, } } else { return { kind: 'Environment', loc: location(), source: text(), value: v, env: env, } } }, peg$c78 = "{\\", peg$c79 = peg$literalExpectation("{\\", false), peg$c80 = "\\", peg$c81 = peg$literalExpectation("\\", false), peg$c82 = /^[ij]/, peg$c83 = peg$classExpectation(["i", "j"], false, false), peg$c84 = function(mark, char) { return { kind: 'DiacriticCommand', loc: location(), source: text(), mark: mark, dotless: !!char[1], character: char[1] || char[0], } }, peg$c85 = function(v) { return basicTextConversions({ kind: 'Text', loc: location(), source: text(), value: v.join('').trim(), mode: 'verbatim', }) }, peg$c86 = function(v) { const block = { kind: 'Block', loc: location(), source: text(), value: v, markup: {}, case: 'protect', }; let leadingcmd = block.value.length && (block.value[0].kind.endsWith('Command') || block.value[0].kind === 'Environment') ? block.value[0] : null; let leadingcmdblockarg = leadingcmd && leadingcmd.kind === 'RegularCommand' && leadingcmd.arguments.required.length && leadingcmd.arguments.required[0].kind === 'Block' && leadingcmd.arguments.required[0]; // https://github.com/retorquere/zotero-better-bibtex/issues/541#issuecomment-240156274 if (leadingcmd) { delete block.case; // command with a block cancels out case protection with containing block // if a smallcaps block has set case to 'preserve' we want to keep this if (leadingcmdblockarg && leadingcmdblockarg.case === 'protect') delete leadingcmdblockarg.case; // \sl, \it etc if (markup[leadingcmd.command]) { block.markup[markup[leadingcmd.command]] = true; block.value.shift(); } } return handle_markup_switches(block) }, peg$c87 = function() { return !math.on }, peg$c88 = "$", peg$c89 = peg$literalExpectation("$", false), peg$c90 = "$$", peg$c91 = peg$literalExpectation("$$", false), peg$c92 = function(mode) { return math.set(true) }, peg$c93 = function(mode, v) { return math.set(false) }, peg$c94 = function(mode, v) { return { kind: mode == '$$' ? 'DisplayMath' : 'InlineMath', loc: location(), source: text(), value: v, case: 'protect', markup: {}, } }, peg$c95 = "%", peg$c96 = peg$literalExpectation("%", false), peg$c97 = /^[^\r\n]/, peg$c98 = peg$classExpectation(["\r", "\n"], true, false), peg$c99 = function(v) { return { kind: 'LineComment', loc: location(), source: text(), value: v, } }, peg$c100 = /^[_\^]/, peg$c101 = peg$classExpectation(["_", "^"], false, false), peg$c102 = function(mode, v) { if (v.kind === 'Block') v = v.value; return { kind: mode === '_' ? 'SubscriptCommand' : 'SuperscriptCommand', loc: location(), source: text(), value: v, } }, peg$c103 = function(mark, v) { return { kind: 'RegularCommand', loc: location(), source: text(), command: mark, arguments: { optional: [], required: [ protect(v) ], }, } }, peg$c104 = /^[^A-Za-z0-9\t\r\n]/, peg$c105 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "\t", "\r", "\n"], true, false), peg$c106 = function(v) { return { kind: 'SymbolCommand', loc: location(), source: text(), command: v, } }, peg$c107 = "newcommand", peg$c108 = peg$literalExpectation("newcommand", false), peg$c109 = function(cmd, name) { return name.value.length == 1 && name.value[0].kind === 'RegularCommand' }, peg$c110 = function(cmd, name, optional, def) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: [], required: [name, def], }, } }, peg$c111 = "begin", peg$c112 = peg$literalExpectation("begin", false), peg$c113 = "end", peg$c114 = peg$literalExpectation("end", false), peg$c115 = function(cmd) { return verbatimCommands.includes(cmd) && (has_arguments[cmd] === 2) }, peg$c116 = function(cmd, optional, req1, req2) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [protect(req1), protect(req2)], }, } }, peg$c117 = function(cmd) { return verbatimCommands.includes(cmd) && (has_arguments[cmd] === 1) }, peg$c118 = function(cmd, optional, req) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [protect(req)], }, } }, peg$c119 = function(cmd) { return (has_arguments[cmd] === 2) }, peg$c120 = function(cmd, optional, req1, req2) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [req1, req2], }, } }, peg$c121 = function(cmd) { return (has_arguments[cmd] === 1) }, peg$c122 = function(cmd, optional, req) { let m; if (req.kind === 'Block') { switch (cmd) { case 'textsuperscript': case 'sp': req.markup.sup = true; break case 'textsubscript': case 'sb': req.markup.sub = true; break case 'textsc': req.markup.smallCaps = true; break case 'enquote': case 'mkbibquote': req.markup.enquote = true; break case 'textbf': case 'mkbibbold': req.markup.bold = true; break case 'emph': case 'textit': case 'mkbibitalic': case 'mkbibemph': req.markup.italics = true; break default: if (m = cmd.match(/^((sub)*)section$/)) { req.markup[`h${(m[1].length / 3) + 1}`] = true; } } } // ignore case stuff on bibcyr if (cmd === 'bibcyr') delete req.case; return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [req], } } }, peg$c123 = function(cmd, optional) { return { kind: 'RegularCommand', loc: location(), source: text(), command: cmd, arguments: { optional: optional, required: [], } } }, peg$c124 = "[", peg$c125 = peg$literalExpectation("[", false), peg$c126 = /^[^\]]/, peg$c127 = peg$classExpectation(["]"], true, false), peg$c128 = "]", peg$c129 = peg$literalExpectation("]", false), peg$c130 = function(v) { return basicTextConversions({ kind: 'Text', // this isn't really correct but I don't need these right now loc: location(), source: text(), value: v, mode: math.on ? 'math' : 'text', }) }, peg$c131 = /^[^ \t\^_${}\\]/, peg$c132 = peg$classExpectation([" ", "\t", "^", "_", "$", "{", "}", "\\"], true, false), peg$c133 = function(v) { return basicTextConversions({ kind: 'Text', loc: location(), source: text(), value: normalizeWhitespace([v]), mode: math.on ? 'math' : 'text', }) }, peg$c134 = /^[a-zA-Z\-_]/, peg$c135 = peg$classExpectation([["a", "z"], ["A", "Z"], "-", "_"], false, false), peg$c136 = /^[a-zA-Z0-9\-&_:]/, peg$c137 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"], "-", "&", "_", ":"], false, false), peg$c138 = /^['`"=~\^.]/, peg$c139 = peg$classExpectation(["'", "`", "\"", "=", "~", "^", "."], false, false), peg$c140 = /^['`"=~\^.cbuvdrHk]/, peg$c141 = peg$classExpectation(["'", "`", "\"", "=", "~", "^", ".", "c", "b", "u", "v", "d", "r", "H", "k"], false, false), peg$c142 = "=", peg$c143 = peg$literalExpectation("=", false), peg$c144 = "#", peg$c145 = peg$literalExpectation("#", false), peg$c146 = /^[\r\n]/, peg$c147 = peg$classExpectation(["\r", "\n"], false, false), peg$c149 = /^[ \t]/, peg$c150 = peg$classExpectation([" ", "\t"], false, false), peg$c151 = peg$otherExpectation("Optional Horizontal Whitespace"), peg$c155 = /^[ \t\n\r]/, peg$c156 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false), peg$c157 = peg$otherExpectation("Optional Whitespace"), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result; if ("startRule" in options) { if (!(options.startRule in peg$startRuleFunctions)) { throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); } peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; } function text() { return input.substring(peg$savedPos, peg$currPos); } function location() { return peg$computeLocation(peg$savedPos, peg$currPos); } function peg$literalExpectation(text, ignoreCase) { return { type: "literal", text: text, ignoreCase: ignoreCase }; } function peg$classExpectation(parts, inverted, ignoreCase) { return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; } function peg$endExpectation() { return { type: "end" }; } function peg$otherExpectation(description) { return { type: "other", description: description }; } function peg$computePosDetails(pos) { var details = peg$posDetailsCache[pos], p; if (details) { return details; } else { p = pos - 1; while (!peg$posDetailsCache[p]) { p--; } details = peg$posDetailsCache[p]; details = { line: details.line, column: details.column }; while (p < pos) { if (input.charCodeAt(p) === 10) { details.line++; details.column = 1; } else { details.column++; } p++; } peg$posDetailsCache[pos] = details; return details; } } function peg$computeLocation(startPos, endPos) { var startPosDetails = peg$computePosDetails(startPos), endPosDetails = peg$computePosDetails(endPos); return { start: { offset: startPos, line: startPosDetails.line, column: startPosDetails.column }, end: { offset: endPos, line: endPosDetails.line, column: endPosDetails.column } }; } function peg$fail(expected) { if (peg$currPos < peg$maxFailPos) { return; } if (peg$currPos > peg$maxFailPos) { peg$maxFailPos = peg$currPos; peg$maxFailExpected = []; } peg$maxFailExpected.push(expected); } function peg$buildStructuredError(expected, found, location) { return new peg$SyntaxError( peg$SyntaxError.buildMessage(expected, found), expected, found, location ); } function peg$parseBibliography() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseNode(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseNode(); } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c0(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseComment() { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { if (input.substr(peg$currPos, 7).toLowerCase() === peg$c3) { s3 = input.substr(peg$currPos, 7); peg$currPos += 7; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c4); } } if (s3 !== peg$FAILED) { s4 = peg$parse__h(); if (s4 !== peg$FAILED) { s5 = peg$parseBracedComment(); if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c5(s5); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { if (input.substr(peg$currPos, 7).toLowerCase() === peg$c3) { s3 = input.substr(peg$currPos, 7); peg$currPos += 7; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c4); } } if (s3 !== peg$FAILED) { s4 = peg$parse__h(); if (s4 !== peg$FAILED) { s5 = []; if (peg$c6.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c6.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } } if (s5 !== peg$FAILED) { s6 = []; if (peg$c8.test(input.charAt(peg$currPos))) { s7 = input.charAt(peg$currPos); peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } while (s7 !== peg$FAILED) { s6.push(s7); if (peg$c8.test(input.charAt(peg$currPos))) { s7 = input.charAt(peg$currPos); peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } } if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c10(s5); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$currPos; if (peg$c11.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c12); } } if (s2 !== peg$FAILED) { s3 = []; if (peg$c6.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c6.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } } if (s3 !== peg$FAILED) { s2 = [s2, s3]; s1 = s2; } else { peg$currPos = s1; s1 = peg$FAILED; } } else { peg$currPos = s1; s1 = peg$FAILED; } if (s1 !== peg$FAILED) { s2 = []; if (peg$c8.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } while (s3 !== peg$FAILED) { s2.push(s3); if (peg$c8.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c9); } } } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c13(s1); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } return s0; } function peg$parseNode() { var s0, s1; s0 = peg$currPos; s1 = peg$parseComment(); if (s1 === peg$FAILED) { s1 = peg$parsePreambleExpression(); if (s1 === peg$FAILED) { s1 = peg$parseStringDeclaration(); if (s1 === peg$FAILED) { s1 = peg$parseEntry(); } } } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c14(s1); } s0 = s1; return s0; } function peg$parseBracedComment() { var s0, s1, s2, s3; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; if (peg$c17.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } if (s3 === peg$FAILED) { s3 = peg$parseBracedComment(); } while (s3 !== peg$FAILED) { s2.push(s3); if (peg$c17.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } if (s3 === peg$FAILED) { s3 = peg$parseBracedComment(); } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c21(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseEntry() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { s3 = peg$currPos; s4 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); if (peg$c22.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { s3 = input.substring(s3, peg$currPos); } else { s3 = s4; } if (s3 !== peg$FAILED) { s4 = peg$parse__(); if (s4 !== peg$FAILED) { if (peg$c24.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c25); } } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { s7 = peg$parseEntryId(); if (s7 === peg$FAILED) { s7 = null; } if (s7 !== peg$FAILED) { s8 = peg$parse__(); if (s8 !== peg$FAILED) { s9 = []; s10 = peg$parseField(); while (s10 !== peg$FAILED) { s9.push(s10); s10 = peg$parseField(); } if (s9 !== peg$FAILED) { s10 = peg$parse__(); if (s10 !== peg$FAILED) { if (peg$c26.test(input.charAt(peg$currPos))) { s11 = input.charAt(peg$currPos); peg$currPos++; } else { s11 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c27); } } if (s11 !== peg$FAILED) { s12 = peg$parse__(); if (s12 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c28(s3, s7, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parsePreambleExpression() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { if (input.substr(peg$currPos, 8).toLowerCase() === peg$c29) { s3 = input.substr(peg$currPos, 8); peg$currPos += 8; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c30); } } if (s3 !== peg$FAILED) { s4 = peg$parse__(); if (s4 !== peg$FAILED) { if (peg$c24.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c25); } } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { s7 = []; s8 = peg$parseEnvironment(); if (s8 === peg$FAILED) { s8 = peg$parseBlock(); if (s8 === peg$FAILED) { s8 = peg$parseMath(); if (s8 === peg$FAILED) { s8 = peg$parseCommand(); if (s8 === peg$FAILED) { s8 = peg$parseText(); } } } } while (s8 !== peg$FAILED) { s7.push(s8); s8 = peg$parseEnvironment(); if (s8 === peg$FAILED) { s8 = peg$parseBlock(); if (s8 === peg$FAILED) { s8 = peg$parseMath(); if (s8 === peg$FAILED) { s8 = peg$parseCommand(); if (s8 === peg$FAILED) { s8 = peg$parseText(); } } } } } if (s7 !== peg$FAILED) { s8 = peg$parse__(); if (s8 !== peg$FAILED) { if (peg$c26.test(input.charAt(peg$currPos))) { s9 = input.charAt(peg$currPos); peg$currPos++; } else { s9 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c27); } } if (s9 !== peg$FAILED) { s10 = peg$parse__(); if (s10 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c31(s5, s7, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseStringDeclaration() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { s1 = peg$c1; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c2); } } if (s1 !== peg$FAILED) { s2 = peg$parse__(); if (s2 !== peg$FAILED) { if (input.substr(peg$currPos, 6).toLowerCase() === peg$c32) { s3 = input.substr(peg$currPos, 6); peg$currPos += 6; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c33); } } if (s3 !== peg$FAILED) { s4 = peg$parse__(); if (s4 !== peg$FAILED) { if (peg$c24.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c25); } } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { s7 = peg$parseVariableName(); if (s7 !== peg$FAILED) { s8 = peg$parseFieldSeparator(); if (s8 !== peg$FAILED) { s9 = []; s10 = peg$parseRegularValue(); if (s10 !== peg$FAILED) { while (s10 !== peg$FAILED) { s9.push(s10); s10 = peg$parseRegularValue(); } } else { s9 = peg$FAILED; } if (s9 !== peg$FAILED) { s10 = peg$parse__(); if (s10 !== peg$FAILED) { if (peg$c26.test(input.charAt(peg$currPos))) { s11 = input.charAt(peg$currPos); peg$currPos++; } else { s11 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c27); } } if (s11 !== peg$FAILED) { s12 = peg$parse__(); if (s12 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c34(s7, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseEntryId() { var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { s2 = peg$currPos; s3 = []; if (peg$c35.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c36); } } while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c35.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c36); } } } if (s3 !== peg$FAILED) { s2 = input.substring(s2, peg$currPos); } else { s2 = s3; } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 44) { s4 = peg$c37; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c38); } } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c39(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseField() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; s0 = peg$currPos; s1 = peg$parseFieldName(); if (s1 !== peg$FAILED) { peg$savedPos = peg$currPos; s2 = peg$c40(s1); if (s2) { s2 = void 0; } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$parseFieldSeparator(); if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { s4 = peg$c15; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s4 !== peg$FAILED) { s5 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { s6 = peg$c15; peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } peg$silentFails--; if (s6 !== peg$FAILED) { peg$currPos = s5; s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = peg$parseVerbatimFieldValue(); if (s6 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s7 = peg$c19; peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s7 !== peg$FAILED) { s8 = peg$parseFieldTerminator(); if (s8 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c41(s1, s6); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseFieldName(); if (s1 !== peg$FAILED) { peg$savedPos = peg$currPos; s2 = peg$c42(s1); if (s2) { s2 = void 0; } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$parseFieldSeparator(); if (s3 !== peg$FAILED) { s4 = peg$parseVerbatimFieldValue(); if (s4 !== peg$FAILED) { s5 = peg$parseFieldTerminator(); if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c43(s1, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseFieldName(); if (s1 !== peg$FAILED) { s2 = peg$parseFieldSeparator(); if (s2 !== peg$FAILED) { s3 = peg$parseFieldValue(); if (s3 !== peg$FAILED) { s4 = peg$parseFieldTerminator(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c44(s1, s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } return s0; } function peg$parseFieldName() { var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { s2 = peg$currPos; s3 = []; if (peg$c45.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c46); } } if (s4 !== peg$FAILED) { while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c45.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c46); } } } } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s2 = input.substring(s2, peg$currPos); } else { s2 = s3; } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c47(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseVerbatimFieldValue() { var s0, s1, s2, s3; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { s1 = peg$c48; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c49); } } if (s1 !== peg$FAILED) { s2 = peg$parseTextNoQuotes(); if (s2 === peg$FAILED) { s2 = null; } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { s3 = peg$c48; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c49); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c50(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseVerbatimText(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseVerbatimText(); } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c51(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } return s0; } function peg$parseVerbatimText() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$currPos; s2 = []; if (peg$c17.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } if (s3 !== peg$FAILED) { while (s3 !== peg$FAILED) { s2.push(s3); if (peg$c17.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c18); } } } } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s1 = input.substring(s1, peg$currPos); } else { s1 = s2; } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c52(s1); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseVerbatimText(); while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseVerbatimText(); } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c53(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } return s0; } function peg$parseFieldValue() { var s0, s1, s2, s3; s0 = peg$parseNumber(); if (s0 === peg$FAILED) { s0 = peg$currPos; peg$savedPos = peg$currPos; s1 = peg$c54(); if (s1) { s1 = void 0; } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseRegularValue(); if (s3 === peg$FAILED) { s3 = peg$parseStringValue(); } while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseRegularValue(); if (s3 === peg$FAILED) { s3 = peg$parseStringValue(); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c55(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } return s0; } function peg$parseRegularValue() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 34) { s1 = peg$c48; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c49); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseTextNoQuotes(); } } } } while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseTextNoQuotes(); } } } } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { s3 = peg$c48; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c49); } } if (s3 !== peg$FAILED) { s4 = peg$parseConcat(); if (s4 === peg$FAILED) { s4 = null; } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c56(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.substr(peg$currPos, 6) === peg$c57) { s1 = peg$c57; peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c58); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (peg$c59.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c60); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parseVerbatimText(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parseVerbatimText(); } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s4 = peg$c19; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s4 !== peg$FAILED) { s5 = peg$parseConcat(); if (s5 === peg$FAILED) { s5 = null; } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c51(s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseText(); } } } } while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseText(); } } } } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { s4 = peg$parseConcat(); if (s4 === peg$FAILED) { s4 = null; } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c56(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseStringReference(); if (s1 !== peg$FAILED) { s2 = peg$parseConcat(); if (s2 === peg$FAILED) { s2 = null; } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c56(s1); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } } return s0; } function peg$parseStringValue() { var s0, s1, s2; s0 = peg$currPos; s1 = peg$parseStringReference(); if (s1 !== peg$FAILED) { s2 = peg$parseConcat(); if (s2 === peg$FAILED) { s2 = null; } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c56(s1); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseText() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c61.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c62); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c61.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c62); } } } } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c63(s1); } s0 = s1; return s0; } function peg$parseTextNoQuotes() { var s0, s1, s2; s0 = peg$currPos; s1 = []; if (peg$c64.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c65); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); if (peg$c64.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c65); } } } } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c63(s1); } s0 = s1; return s0; } function peg$parseNumber() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$currPos; s2 = []; if (peg$c66.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c67); } } if (s3 !== peg$FAILED) { while (s3 !== peg$FAILED) { s2.push(s3); if (peg$c66.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c67); } } } } else { s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s1 = input.substring(s1, peg$currPos); } else { s1 = s2; } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c68(s1); } s0 = s1; return s0; } function peg$parseStringReference() { var s0, s1; s0 = peg$currPos; s1 = peg$parseVariableName(); if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c69(s1); } s0 = s1; return s0; } function peg$parseEnvironment() { var s0, s1, s2, s3, s4, s5, s6, s7, s8; s0 = peg$currPos; if (input.substr(peg$currPos, 7) === peg$c70) { s1 = peg$c70; peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c71); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; s3 = []; if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s4 !== peg$FAILED) { while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } } } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s2 = input.substring(s2, peg$currPos); } else { s2 = s3; } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parseEnvironment(); if (s5 === peg$FAILED) { s5 = peg$parseBlock(); if (s5 === peg$FAILED) { s5 = peg$parseCommand(); if (s5 === peg$FAILED) { s5 = peg$parseMath(); if (s5 === peg$FAILED) { s5 = peg$parseText(); } } } } while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parseEnvironment(); if (s5 === peg$FAILED) { s5 = peg$parseBlock(); if (s5 === peg$FAILED) { s5 = peg$parseCommand(); if (s5 === peg$FAILED) { s5 = peg$parseMath(); if (s5 === peg$FAILED) { s5 = peg$parseText(); } } } } } if (s4 !== peg$FAILED) { if (input.substr(peg$currPos, 5) === peg$c74) { s5 = peg$c74; peg$currPos += 5; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c75); } } if (s5 !== peg$FAILED) { s6 = peg$currPos; s7 = []; if (peg$c72.test(input.charAt(peg$currPos))) { s8 = input.charAt(peg$currPos); peg$currPos++; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s8 !== peg$FAILED) { while (s8 !== peg$FAILED) { s7.push(s8); if (peg$c72.test(input.charAt(peg$currPos))) { s8 = input.charAt(peg$currPos); peg$currPos++; } else { s8 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } } } else { s7 = peg$FAILED; } if (s7 !== peg$FAILED) { s6 = input.substring(s6, peg$currPos); } else { s6 = s7; } if (s6 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s7 = peg$c19; peg$currPos++; } else { s7 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s7 !== peg$FAILED) { peg$savedPos = peg$currPos; s8 = peg$c76(s2, s4, s6); if (s8) { s8 = void 0; } else { s8 = peg$FAILED; } if (s8 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c77(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseBlock() { var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; if (input.substr(peg$currPos, 2) === peg$c78) { s1 = peg$c78; peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c79); } } if (s1 !== peg$FAILED) { s2 = peg$parseExtendedDiacritic(); if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s4 === peg$FAILED) { s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s5 = peg$c80; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s5 !== peg$FAILED) { if (peg$c82.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c83); } } if (s6 !== peg$FAILED) { s5 = [s5, s6]; s4 = s5; } else { peg$currPos = s4; s4 = peg$FAILED; } } else { peg$currPos = s4; s4 = peg$FAILED; } } if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s5 = peg$c19; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c84(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.substr(peg$currPos, 6) === peg$c57) { s1 = peg$c57; peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c58); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (peg$c59.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c60); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = []; s4 = peg$parseVerbatimText(); while (s4 !== peg$FAILED) { s3.push(s4); s4 = peg$parseVerbatimText(); } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s4 = peg$c19; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c85(s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 123) { s1 = peg$c15; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseText(); } } } } while (s3 !== peg$FAILED) { s2.push(s3); s3 = peg$parseEnvironment(); if (s3 === peg$FAILED) { s3 = peg$parseBlock(); if (s3 === peg$FAILED) { s3 = peg$parseCommand(); if (s3 === peg$FAILED) { s3 = peg$parseMath(); if (s3 === peg$FAILED) { s3 = peg$parseText(); } } } } } if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s3 = peg$c19; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c86(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } return s0; } function peg$parseMath() { var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; peg$savedPos = peg$currPos; s1 = peg$c87(); if (s1) { s1 = void 0; } else { s1 = peg$FAILED; } if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 36) { s2 = peg$c88; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c89); } } if (s2 === peg$FAILED) { if (input.substr(peg$currPos, 2) === peg$c90) { s2 = peg$c90; peg$currPos += 2; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c91); } } } if (s2 !== peg$FAILED) { peg$savedPos = peg$currPos; s3 = peg$c92(); if (s3) { s3 = void 0; } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parseBlock(); if (s5 === peg$FAILED) { s5 = peg$parseCommand(); if (s5 === peg$FAILED) { s5 = peg$parseText(); } } while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parseBlock(); if (s5 === peg$FAILED) { s5 = peg$parseCommand(); if (s5 === peg$FAILED) { s5 = peg$parseText(); } } } if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 36) { s5 = peg$c88; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c89); } } if (s5 === peg$FAILED) { if (input.substr(peg$currPos, 2) === peg$c90) { s5 = peg$c90; peg$currPos += 2; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c91); } } } if (s5 !== peg$FAILED) { peg$savedPos = peg$currPos; s6 = peg$c93(); if (s6) { s6 = void 0; } else { s6 = peg$FAILED; } if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c94(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseLineComment() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 37) { s1 = peg$c95; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c96); } } if (s1 !== peg$FAILED) { s2 = peg$parse__h(); if (s2 !== peg$FAILED) { s3 = peg$currPos; s4 = []; if (peg$c97.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c98); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); if (peg$c97.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c98); } } } } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { s3 = input.substring(s3, peg$currPos); } else { s3 = s4; } if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parseEOL(); if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parseEOL(); } } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c99(s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseCommand() { var s0; s0 = peg$parseScriptCommand(); if (s0 === peg$FAILED) { s0 = peg$parseDiacriticCommand(); if (s0 === peg$FAILED) { s0 = peg$parseRegularCommand(); if (s0 === peg$FAILED) { s0 = peg$parseSymbolCommand(); } } } return s0; } function peg$parseScriptCommand() { var s0, s1, s2, s3; s0 = peg$currPos; if (peg$c100.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c101); } } if (s1 !== peg$FAILED) { s2 = peg$parse__h(); if (s2 !== peg$FAILED) { s3 = peg$parseRequiredArgument(); if (s3 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c102(s1, s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseDiacriticCommand() { var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$parseSimpleDiacritic(); if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s4 === peg$FAILED) { s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s5 = peg$c80; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s5 !== peg$FAILED) { if (peg$c82.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c83); } } if (s6 !== peg$FAILED) { s5 = [s5, s6]; s4 = s5; } else { peg$currPos = s4; s4 = peg$FAILED; } } else { peg$currPos = s4; s4 = peg$FAILED; } } if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c84(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$parseExtendedDiacritic(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 123) { s3 = peg$c15; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } if (s3 !== peg$FAILED) { if (peg$c72.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c73); } } if (s4 === peg$FAILED) { s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s5 = peg$c80; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s5 !== peg$FAILED) { if (peg$c82.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c83); } } if (s6 !== peg$FAILED) { s5 = [s5, s6]; s4 = s5; } else { peg$currPos = s4; s4 = peg$FAILED; } } else { peg$currPos = s4; s4 = peg$FAILED; } } if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 125) { s5 = peg$c19; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c20); } } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c84(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$parseExtendedDiacritic(); if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { s4 = peg$c15; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } peg$silentFails--; if (s4 !== peg$FAILED) { peg$currPos = s3; s3 = void 0; } else { s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$parseRegularValue(); if (s4 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c103(s2, s4); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } return s0; } function peg$parseSymbolCommand() { var s0, s1, s2, s3; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; if (peg$c104.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c105); } } if (s3 !== peg$FAILED) { s2 = input.substring(s2, peg$currPos); } else { s2 = s3; } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c106(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseRegularCommand() { var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { if (input.substr(peg$currPos, 10) === peg$c107) { s2 = peg$c107; peg$currPos += 10; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c108); } } if (s2 !== peg$FAILED) { s3 = peg$parseBlock(); if (s3 !== peg$FAILED) { peg$savedPos = peg$currPos; s4 = peg$c109(s2, s3); if (s4) { s4 = void 0; } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { s5 = []; s6 = peg$parseOptionalArgument(); while (s6 !== peg$FAILED) { s5.push(s6); s6 = peg$parseOptionalArgument(); } if (s5 !== peg$FAILED) { s6 = peg$parseRequiredArgument(); if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c110(s2, s3, s5, s6); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { peg$savedPos = peg$currPos; s5 = peg$c115(s4); if (s5) { s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parseOptionalArgument(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parseOptionalArgument(); } if (s6 !== peg$FAILED) { s7 = peg$parse__h(); if (s7 !== peg$FAILED) { s8 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { s9 = peg$c15; peg$currPos++; } else { s9 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } peg$silentFails--; if (s9 !== peg$FAILED) { peg$currPos = s8; s8 = void 0; } else { s8 = peg$FAILED; } if (s8 !== peg$FAILED) { s9 = peg$parseVerbatimFieldValue(); if (s9 !== peg$FAILED) { s10 = peg$parseVerbatimFieldValue(); if (s10 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c116(s4, s6, s9, s10); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { peg$savedPos = peg$currPos; s5 = peg$c117(s4); if (s5) { s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parseOptionalArgument(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parseOptionalArgument(); } if (s6 !== peg$FAILED) { s7 = peg$parse__h(); if (s7 !== peg$FAILED) { s8 = peg$currPos; peg$silentFails++; if (input.charCodeAt(peg$currPos) === 123) { s9 = peg$c15; peg$currPos++; } else { s9 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c16); } } peg$silentFails--; if (s9 !== peg$FAILED) { peg$currPos = s8; s8 = void 0; } else { s8 = peg$FAILED; } if (s8 !== peg$FAILED) { s9 = peg$parseVerbatimFieldValue(); if (s9 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c118(s4, s6, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { peg$savedPos = peg$currPos; s5 = peg$c119(s4); if (s5) { s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parseOptionalArgument(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parseOptionalArgument(); } if (s6 !== peg$FAILED) { s7 = peg$parse__h(); if (s7 !== peg$FAILED) { s8 = peg$parseRequiredArgument(); if (s8 !== peg$FAILED) { s9 = peg$parseRequiredArgument(); if (s9 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c120(s4, s6, s8, s9); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { peg$savedPos = peg$currPos; s5 = peg$c121(s4); if (s5) { s5 = void 0; } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s6 = []; s7 = peg$parseOptionalArgument(); while (s7 !== peg$FAILED) { s6.push(s7); s7 = peg$parseOptionalArgument(); } if (s6 !== peg$FAILED) { s7 = peg$parse__h(); if (s7 !== peg$FAILED) { s8 = peg$parseRequiredArgument(); if (s8 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c122(s4, s6, s8); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 92) { s1 = peg$c80; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 5) === peg$c111) { s3 = peg$c111; peg$currPos += 5; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c112); } } peg$silentFails--; if (s3 === peg$FAILED) { s2 = void 0; } else { peg$currPos = s2; s2 = peg$FAILED; } if (s2 !== peg$FAILED) { s3 = peg$currPos; peg$silentFails++; if (input.substr(peg$currPos, 3) === peg$c113) { s4 = peg$c113; peg$currPos += 3; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c114); } } peg$silentFails--; if (s4 === peg$FAILED) { s3 = void 0; } else { peg$currPos = s3; s3 = peg$FAILED; } if (s3 !== peg$FAILED) { s4 = peg$currPos; s5 = []; if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } if (s6 !== peg$FAILED) { while (s6 !== peg$FAILED) { s5.push(s6); if (peg$c22.test(input.charAt(peg$currPos))) { s6 = input.charAt(peg$currPos); peg$currPos++; } else { s6 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c23); } } } } else { s5 = peg$FAILED; } if (s5 !== peg$FAILED) { s4 = input.substring(s4, peg$currPos); } else { s4 = s5; } if (s4 !== peg$FAILED) { s5 = []; s6 = peg$parseOptionalArgument(); while (s6 !== peg$FAILED) { s5.push(s6); s6 = peg$parseOptionalArgument(); } if (s5 !== peg$FAILED) { s6 = peg$parse__(); if (s6 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c123(s4, s5); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } } } } } return s0; } function peg$parseOptionalArgument() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { s1 = peg$c124; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c125); } } if (s1 !== peg$FAILED) { s2 = peg$parse__h(); if (s2 !== peg$FAILED) { s3 = peg$currPos; s4 = []; if (peg$c126.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c127); } } if (s5 !== peg$FAILED) { while (s5 !== peg$FAILED) { s4.push(s5); if (peg$c126.test(input.charAt(peg$currPos))) { s5 = input.charAt(peg$currPos); peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c127); } } } } else { s4 = peg$FAILED; } if (s4 !== peg$FAILED) { s3 = input.substring(s3, peg$currPos); } else { s3 = s4; } if (s3 !== peg$FAILED) { s4 = peg$parse__h(); if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { s5 = peg$c128; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c129); } } if (s5 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c130(s3); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseRequiredArgument() { var s0, s1, s2; s0 = peg$currPos; s1 = peg$parse__h(); if (s1 !== peg$FAILED) { if (peg$c131.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c132); } } if (s2 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c133(s2); s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = peg$parseBlock(); if (s1 === peg$FAILED) { s1 = peg$parseCommand(); } if (s1 !== peg$FAILED) { peg$savedPos = s0; s1 = peg$c52(s1); } s0 = s1; } return s0; } function peg$parseVariableName() { var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$currPos; if (peg$c134.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c135); } } if (s2 !== peg$FAILED) { s3 = []; if (peg$c136.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c137); } } while (s4 !== peg$FAILED) { s3.push(s4); if (peg$c136.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c137); } } } if (s3 !== peg$FAILED) { s2 = [s2, s3]; s1 = s2; } else { peg$currPos = s1; s1 = peg$FAILED; } } else { peg$currPos = s1; s1 = peg$FAILED; } if (s1 !== peg$FAILED) { s0 = input.substring(s0, peg$currPos); } else { s0 = s1; } return s0; } function peg$parseSimpleDiacritic() { var s0; if (peg$c138.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c139); } } return s0; } function peg$parseExtendedDiacritic() { var s0; if (peg$c140.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c141); } } return s0; } function peg$parseFieldSeparator() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 61) { s2 = peg$c142; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c143); } } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { s1 = [s1, s2, s3]; s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseFieldTerminator() { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 44) { s2 = peg$c37; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c38); } } if (s2 === peg$FAILED) { s2 = null; } if (s2 !== peg$FAILED) { s3 = peg$parse__h(); if (s3 !== peg$FAILED) { s4 = []; s5 = peg$parseLineComment(); if (s5 === peg$FAILED) { s5 = peg$parseEOL(); } while (s5 !== peg$FAILED) { s4.push(s5); s5 = peg$parseLineComment(); if (s5 === peg$FAILED) { s5 = peg$parseEOL(); } } if (s4 !== peg$FAILED) { s1 = [s1, s2, s3, s4]; s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseConcat() { var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse__(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 35) { s2 = peg$c144; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c145); } } if (s2 !== peg$FAILED) { s3 = peg$parse__(); if (s3 !== peg$FAILED) { s1 = [s1, s2, s3]; s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } } else { peg$currPos = s0; s0 = peg$FAILED; } return s0; } function peg$parseEOL() { var s0; if (peg$c146.test(input.charAt(peg$currPos))) { s0 = input.charAt(peg$currPos); peg$currPos++; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c147); } } return s0; } function peg$parse__h() { var s0, s1; peg$silentFails++; s0 = []; if (peg$c149.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c150); } } while (s1 !== peg$FAILED) { s0.push(s1); if (peg$c149.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c150); } } } peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c151); } } return s0; } function peg$parse__() { var s0, s1; peg$silentFails++; s0 = []; if (peg$c155.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c156); } } while (s1 !== peg$FAILED) { s0.push(s1); if (peg$c155.test(input.charAt(peg$currPos))) { s1 = input.charAt(peg$currPos); peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c156); } } } peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c157); } } return s0; } /* MIT License Copyright (c) 2017 Derek P Sifford, parts copyright (c) 2019 by Emiliano Heyns Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ const markup = { sl: 'italics', em: 'italics', it: 'italics', itshape: 'italics', bf: 'bold', bfseries: 'bold', sc: 'smallCaps', scshape: 'smallCaps', tt: 'fixedWidth', rm: 'roman', sf: 'sansSerif', verb: 'verbatim', }; const unnestFields = (options.unnestFields || []).map(field => field.toLowerCase()); const verbatimFields = (options.verbatimFields || [ 'urlraw', 'url', 'doi', 'file', 'files', 'eprint', 'verba', 'verbb', 'verbc' ]).map(field => typeof field === 'string' ? field.toLowerCase() : field); const verbatimCommands = (options.verbatimCommands || ['texttt', 'url', 'href']); function isVerbatimField(name) { return verbatimFields.find(p => (typeof p === 'string') ? name === p : name.match(p)) } function normalizeWhitespace(textArr) { return textArr.reduce((prev, curr) => { if (/\s/.test(curr)) { if (/\s/.test(prev[prev.length - 1])) { return prev; } else { return prev + ' '; } } return prev + curr; }, ''); } const has_arguments = { ElsevierGlyph: 1, end: 1, begin: 1, bibcyr: 1, bibstring: 1, chsf: 1, cite: 1, cyrchar: 1, ding: 1, emph: 1, enquote: 1, frac: 2, href: 2, hspace: 1, mathrm: 1, mbox: 1, mkbibbold: 1, mkbibemph: 1, mkbibitalic: 1, mkbibquote: 1, newcommand: 2, noopsort: 1, ocirc: 1, section: 1, sb: 1, sp: 1, subsection: 1, subsubsection: 1, subsubsubsection: 1, t: 1, textbf: 1, textit: 1, textrm: 1, textsc: 1, textsubscript: 1, textsuperscript: 1, texttt: 1, url: 1, vphantom: 1, vspace: 1, }; if (options.combiningDiacritics) { for (const cmd of options.combiningDiacritics) { has_arguments[cmd] = 1; } } const math = { on: false, set: function(state) { this.on = state; return true } }; function basicTextConversions(node) { if (node.kind !== 'Text') throw new Error(node.kind + ' is not a Text node') switch (node.mode) { case 'verbatim': break case 'math': node.value = node.value.replace(/~/g, '\u00A0'); break case 'text': node.value = node.value .replace(/---/g, '\u2014') .replace(/--/g, '\u2013') .replace(//g, '\u00BF') .replace(/~/g, '\u00A0') .replace(/``/g, options.markup.enquote.open) .replace(/''/g, options.markup.enquote.close); break default: throw new Error(`Unexpected text mode ${node.mode}`) } return node } function protect(v) { let source; if (Array.isArray(v)) { source = v.map(e => e.source).join(''); } else { v = [ v ]; source = v.source; } return { kind: 'Block', value: v, markup: {}, case: 'protect', source: source, } } function handle_markup_switches(block) { const value = block.value; if (!Array.isArray(value)) return block block.value = []; const pseudo = { block: null, markup: {}, }; function pseudo_block() { pseudo.block = { kind: 'Block', loc: location(), source: '', value: [], markup: JSON.parse(JSON.stringify(pseudo.markup)), pseudo: true, }; block.value.push(pseudo.block); } for (const node of value) { if (node.kind === 'Environment' || node.kind === 'Block') { block.value.push(node); if (Object.keys(pseudo.markup).length) { pseudo_block(); } else { pseudo.block = null; } continue } if (node.kind === 'RegularCommand' && markup[node.command]) { if (pseudo.markup.italics) { // https://github.com/citation-js/bibtex-parser-experiments/commit/cae475f075a05d1c074485a061b08ed245170c7e delete pseudo.markup.italics; if (markup[node.command] !== 'italics') pseudo.markup[markup[node.command]] = true; } else { pseudo.markup[markup[node.command]] = true; } if (Object.keys(pseudo.markup).length) { pseudo_block(); } else { pseudo.block = null; } } if (pseudo.block) { pseudo.block.source += node.source; pseudo.block.value.push(node); } else { block.value.push(node); } } block.value = block.value.filter(node => !(node.pseudo && node.value.length === 0)); return block } peg$result = peg$startRuleFunction(); if (peg$result !== peg$FAILED && peg$currPos === input.length) { return peg$result; } else { if (peg$result !== peg$FAILED && peg$currPos < input.length) { peg$fail(peg$endExpectation()); } throw peg$buildStructuredError( peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) ); } } var grammar = { SyntaxError: peg$SyntaxError, parse: peg$parse }; var chunker = createCommonjsModule(function (module, exports) { // Original work by Henrik Muehe (c) 2010 // // CommonJS port by Mikola Lysenko 2013 // Object.defineProperty(exports, "__esModule", { value: true }); exports.parse = void 0; class ParseError extends Error { constructor(message, parser) { message += ` @ ${parser.pos}`; if (parser.parsing) message += ` in ${JSON.stringify(parser.parsing)}`; super(message); this.name = 'ParseError'; } } // tslint:disable-next-line prefer-template const letter = new RegExp('[' + [ // Letter, Uppercase /\u0041-\u005A\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A/.source, // Letter, Titlecase /\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC/.source, // Letter, Lowercase /\u0061-\u007A\u00B5\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A/.source, // Letter, Modifier /\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F/.source, // Letter, Other /\u00AA\u00BA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u10FD-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source, ].join('') + ']'); class BibtexParser { parse(input, options = {}) { // this._progress = 0 this.pos = 0; this.input = input; this.max_entries = options.max_entries || 0; this.entries = 0; this.parsing = null; this.chunks = []; if (options.async) { return this.bibtexAsync().then(() => this.chunks); } else { this.bibtex(); return this.chunks; } } isWhitespace(s, horizontalOnly = false) { return (s === ' ' || s === '\t' || (!horizontalOnly && (s === '\r' || s === '\n'))); } match(s) { this.skipWhitespace(); if (this.input.substr(this.pos, s.length) !== s) { throw new ParseError(`Token mismatch, expected ${JSON.stringify(s)}, found ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers } this.pos += s.length; this.skipWhitespace(); } tryMatch(s) { this.skipWhitespace(); return (this.input.substr(this.pos, s.length) === s); // this.skipWhitespace() } skipWhitespace() { while (this.pos < this.input.length && this.isWhitespace(this.input[this.pos])) this.pos++; // shady if (this.input[this.pos] === '%') { while (this.pos < this.input.length && this.input[this.pos] !== '\n') this.pos++; while (this.pos < this.input.length && this.isWhitespace(this.input[this.pos])) this.pos++; } } value_braces() { let bracecount = 0; this.match('{'); const start = this.pos; let math = false; while (true) { switch (this.input[this.pos]) { case '\\': this.pos += 1; break; case '{': bracecount++; break; case '}': if (bracecount === 0) { if (math) throw new ParseError('Unclosed math section', this); this.pos++; return this.input.substring(start, this.pos - 1); } bracecount--; break; case '$': math = !math; break; } this.pos++; if (this.pos >= this.input.length) { throw new ParseError(`Unterminated brace-value ${JSON.stringify(this.input.substr(start, 20))}`, this); // tslint:disable-line no-magic-numbers } } } value_quotes() { this.match('"'); const start = this.pos; let bracecount = 0; while (true) { switch (this.input[this.pos]) { case '\\': this.pos += 1; break; case '{': bracecount++; break; case '}': bracecount--; break; case '"': if (bracecount <= 0) { this.pos++; return this.input.substring(start, this.pos - 1); } } this.pos++; if (this.pos >= this.input.length) { throw new ParseError(`Unterminated quote-value ${JSON.stringify(this.input.substr(start, 20))}`, this); // tslint:disable-line no-magic-numbers } } } single_value() { if (this.tryMatch('{')) { return this.value_braces(); } else if (this.tryMatch('"')) { return this.value_quotes(); } else { return this.key(); } } value() { const values = []; values.push(this.single_value()); while (this.tryMatch('#')) { this.match('#'); values.push(this.single_value()); } return values.join(''); } key(allowUnicode = false) { const start = this.pos; while (true) { if (this.pos === this.input.length) { throw new ParseError('Runaway key', this); } if (this.input[this.pos].match(/['a-zA-Z0-9&;_:\\./-]/)) { this.pos++; } else if (allowUnicode && this.input[this.pos].match(letter)) { this.pos++; } else { return this.input.substring(start, this.pos); } } } key_equals_value() { const key = this.key(); if (!this.tryMatch('=')) { throw new ParseError(`... = value expected, equals sign missing: ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers } this.match('='); const val = this.value(); return [key, val]; } key_value_list() { this.key_equals_value(); while (this.tryMatch(',')) { this.match(','); // fixes problems with commas at the end of a list if (this.tryMatch('}')) { break; } this.key_equals_value(); } } entry(d) { this.parsing = this.key(true); this.match(','); this.key_value_list(); } directive() { this.match('@'); return `@${this.key()}`.toLowerCase(); } string() { this.key_equals_value(); } preamble() { this.value(); } comment() { while (this.isWhitespace(this.input[this.pos], true)) this.pos++; if (this.input[this.pos] === '{') { this.value_braces(); return; } while (this.input[this.pos] !== '\n' && this.pos < this.input.length) this.pos++; } /* private progress() { const progress = Math.round((this.pos / this.input.length * 100) / 5) * 5 // tslint:disable-line no-magic-numbers if (this._progress !== progress) { this._progress = progress process.stdout.write(` (${this._progress}%) `) } } */ hasMore() { if (this.max_entries && this.entries >= this.max_entries) return false; return (this.pos < this.input.length); } bibtex() { while (this.hasMore()) { this.parseNext(); } } bibtexAsync() { return this.hasMore() ? (new Promise(resolve => resolve(this.parseNext()))).then(() => this.bibtexAsync()) : Promise.resolve(null); } parseNext() { // this.progress() const chunk = { offset: { pos: this.pos, line: this.input.substring(0, this.pos).split('\n').length - 1, }, error: null, text: null, }; this.skipWhitespace(); if (this.pos >= this.input.length) return; let guard = ''; try { const d = this.directive(); switch (d) { case '@string': this.match('{'); this.string(); this.match('}'); chunk.stringDeclaration = true; break; case '@preamble': this.match('{'); this.preamble(); this.match('}'); chunk.preamble = true; break; case '@comment': this.comment(); chunk.comment = true; break; default: if (this.tryMatch('{')) { guard = '{}'; } else if (this.tryMatch('(')) { guard = '()'; } else { throw new ParseError(`Token mismatch, expected '{' or '(', found ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers } this.match(guard[0]); this.entry(d); this.match(guard[1]); chunk.entry = true; this.entries++; break; } } catch (err) { if (err.name !== 'ParseError') throw err; chunk.error = err.message, // skip ahead to the next @ and try again this.pos = chunk.offset.pos + 1; while (this.pos < this.input.length && this.input[this.pos] !== '@') this.pos++; } const text = this.input.substring(chunk.offset.pos, this.pos); const last = this.chunks.length - 1; if (chunk.error && this.chunks.length && this.chunks[last].error) { this.chunks[last].text += text; } else { chunk.text = text; this.chunks.push(chunk); } } } /** * Reads the bibtex input and splits it into separate chunks of `@string`s, `@comment`s, and bibtex entries. Useful for detecting if a file is bibtex file and for filtering out basic errors that would * make the more sophisticated [[bibtex.parse]] reject the whole file * * @returns array of chunks, with markers for type and errors (if any) found. */ function parse(input, options = {}) { return (new BibtexParser).parse(input, options); } exports.parse = parse; }); var $ = { math: "\\$", text: "\\$" }; var _ = { math: "\\_", text: "\\_" }; var require$$0 = { "#": { math: "\\#", text: "\\#" }, $: $, "%": { math: "\\%", text: "\\%" }, "&": { math: "\\&", text: "\\&" }, "/​": { text: "\\slash", commandspacer: true }, "<": { math: "<" }, ">": { math: ">" }, "\\": { math: "\\backslash", text: "\\textbackslash", commandspacer: true }, "^": { math: "\\sphat", text: "\\^" }, _: _, "i︠a︡": { text: "\\t{ia}" }, "{": { math: "\\lbrace", text: "\\{" }, "}": { math: "\\rbrace", text: "\\}" }, "~": { math: "\\sptilde", text: "\\textasciitilde", commandspacer: true }, " ": { math: "~", space: true, text: "~" }, "¡": { text: "\\textexclamdown", commandspacer: true }, "¢": { math: "\\cent", text: "\\textcent", commandspacer: true, textpackages: [ "textcomp" ] }, "£": { math: "\\pounds", text: "\\textsterling", commandspacer: true, textpackages: [ "textcomp" ] }, "¤": { text: "\\textcurrency", commandspacer: true, textpackages: [ "textcomp" ] }, "¥": { math: "\\yen", text: "\\textyen", commandspacer: true, textpackages: [ "textcomp" ] }, "¦": { text: "\\textbrokenbar", commandspacer: true, textpackages: [ "textcomp" ] }, "§": { text: "\\textsection", commandspacer: true, textpackages: [ "textcomp" ] }, "¨": { math: "\\spddot", text: "\\textasciidieresis", commandspacer: true }, "©": { text: "\\textcopyright", commandspacer: true, textpackages: [ "textcomp" ] }, "ª": { text: "\\textordfeminine", commandspacer: true, textpackages: [ "textcomp" ] }, "«": { text: "\\guillemotleft", commandspacer: true }, "¬": { math: "\\lnot" }, "­": { math: "\\-", text: "\\-" }, "®": { math: "\\circledR", text: "\\textregistered", commandspacer: true, textpackages: [ "textcomp" ] }, "¯": { text: "\\textasciimacron", commandspacer: true }, "°": { math: "^\\circ", text: "\\textdegree", commandspacer: true, textpackages: [ "textcomp" ] }, "±": { math: "\\pm" }, "²": { math: "^{2}" }, "³": { math: "^{3}" }, "´": { text: "\\textasciiacute", commandspacer: true }, "µ": { text: "\\textmu", commandspacer: true }, "¶": { text: "\\textparagraph", commandspacer: true, textpackages: [ "textcomp" ] }, "·": { math: "\\cdot" }, "¸": { text: "\\c", commandspacer: true }, "¹": { math: "^{1}" }, "º": { text: "\\textordmasculine", commandspacer: true, textpackages: [ "textcomp" ] }, "»": { text: "\\guillemotright", commandspacer: true }, "¼": { math: "\\frac{1}{4}" }, "½": { math: "\\frac{1}{2}" }, "¾": { math: "\\frac{3}{4}" }, "¿": { text: "\\textquestiondown", commandspacer: true }, "À": { text: "\\`A" }, "Á": { text: "\\'A" }, "Â": { text: "\\^A" }, "Ã": { text: "\\~A" }, "Ä": { text: "\\\"A" }, "Å": { text: "\\AA", commandspacer: true }, "Æ": { text: "\\AE", commandspacer: true }, "Ç": { text: "\\c{C}" }, "È": { text: "\\`E" }, "É": { text: "\\'E" }, "Ê": { text: "\\^E" }, "Ë": { text: "\\\"E" }, "Ì": { text: "\\`I" }, "Í": { text: "\\'I" }, "Î": { text: "\\^I" }, "Ï": { text: "\\\"I" }, "Ð": { text: "\\DH", commandspacer: true }, "Ñ": { text: "\\~N" }, "Ò": { text: "\\`O" }, "Ó": { text: "\\'O" }, "Ô": { text: "\\^O" }, "Õ": { text: "\\~O" }, "Ö": { text: "\\\"O" }, "×": { math: "\\times", text: "\\texttimes", commandspacer: true }, "Ø": { text: "\\O", commandspacer: true }, "Ù": { text: "\\`U" }, "Ú": { text: "\\'U" }, "Û": { text: "\\^U" }, "Ü": { text: "\\\"U" }, "Ý": { text: "\\'Y" }, "Þ": { text: "\\TH", commandspacer: true }, "ß": { text: "\\ss", commandspacer: true }, "à": { text: "\\`a" }, "á": { text: "\\'a" }, "â": { text: "\\^a" }, "ã": { text: "\\~a" }, "ä": { text: "\\\"a" }, "å": { text: "\\aa", commandspacer: true }, "æ": { text: "\\ae", commandspacer: true }, "ç": { text: "\\c{c}" }, "è": { text: "\\`e" }, "é": { text: "\\'e" }, "ê": { text: "\\^e" }, "ë": { text: "\\\"e" }, "ì": { text: "\\`i" }, "í": { text: "\\'i" }, "î": { text: "\\^i" }, "ï": { text: "\\\"i" }, "ð": { math: "\\eth", mathpackages: [ "amssymb", "arevmath" ], text: "\\dh", commandspacer: true }, "ñ": { text: "\\~n" }, "ò": { text: "\\`o" }, "ó": { text: "\\'o" }, "ô": { text: "\\^o" }, "õ": { text: "\\~o" }, "ö": { text: "\\\"o" }, "÷": { math: "\\div" }, "ø": { text: "\\o", commandspacer: true }, "ù": { text: "\\`u" }, "ú": { text: "\\'u" }, "û": { text: "\\^u" }, "ü": { text: "\\\"u" }, "ý": { text: "\\'y" }, "þ": { text: "\\th", commandspacer: true }, "ÿ": { text: "\\\"y" }, "Ā": { text: "\\=A" }, "ā": { text: "\\=a" }, "Ă": { text: "\\u{A}" }, "ă": { text: "\\u{a}" }, "Ą": { text: "\\k{A}" }, "ą": { text: "\\k{a}" }, "Ć": { text: "\\'C" }, "ć": { text: "\\'c" }, "Ĉ": { text: "\\^C" }, "ĉ": { text: "\\^c" }, "Ċ": { text: "\\.C" }, "ċ": { text: "\\.c" }, "Č": { text: "\\v{C}" }, "č": { text: "\\v{c}" }, "Ď": { text: "\\v{D}" }, "ď": { text: "\\v{d}" }, "Đ": { text: "\\DJ", commandspacer: true }, "đ": { text: "\\dj", commandspacer: true }, "Ē": { text: "\\=E" }, "ē": { text: "\\=e" }, "Ĕ": { text: "\\u{E}" }, "ĕ": { text: "\\u{e}" }, "Ė": { text: "\\.E" }, "ė": { text: "\\.e" }, "Ę": { text: "\\k{E}" }, "ę": { text: "\\k{e}" }, "Ě": { text: "\\v{E}" }, "ě": { text: "\\v{e}" }, "Ĝ": { text: "\\^G" }, "ĝ": { text: "\\^g" }, "Ğ": { text: "\\u{G}" }, "ğ": { text: "\\u{g}" }, "Ġ": { text: "\\.G" }, "ġ": { text: "\\.g" }, "Ģ": { text: "\\c{G}" }, "ģ": { text: "\\c{g}" }, "Ĥ": { text: "\\^H" }, "ĥ": { text: "\\^h" }, "Ħ": { text: "{\\fontencoding{LELA}\\selectfont\\char40}" }, "ħ": { math: "\\Elzxh" }, "Ĩ": { text: "\\~I" }, "ĩ": { text: "\\~i" }, "Ī": { text: "\\=I" }, "ī": { text: "\\=i" }, "Ĭ": { text: "\\u{I}" }, "ĭ": { text: "{\\u \\i}" }, "Į": { text: "\\k{I}" }, "į": { text: "\\k{i}" }, "İ": { text: "\\.I" }, "ı": { math: "\\imath", text: "\\i", commandspacer: true }, "IJ": { text: "IJ" }, "ij": { text: "ij" }, "Ĵ": { text: "\\^J" }, "ĵ": { text: "\\^\\j", commandspacer: true }, "Ķ": { text: "\\c{K}" }, "ķ": { text: "\\c{k}" }, "ĸ": { text: "{\\fontencoding{LELA}\\selectfont\\char91}" }, "Ĺ": { text: "\\'L" }, "ĺ": { text: "\\'l" }, "Ļ": { text: "\\c{L}" }, "ļ": { text: "\\c{l}" }, "Ľ": { text: "\\v{L}" }, "ľ": { text: "\\v{l}" }, "Ŀ": { text: "{\\fontencoding{LELA}\\selectfont\\char201}" }, "ŀ": { text: "{\\fontencoding{LELA}\\selectfont\\char202}" }, "Ł": { text: "\\L", commandspacer: true }, "ł": { text: "\\l", commandspacer: true }, "Ń": { text: "\\'N" }, "ń": { text: "\\'n" }, "Ņ": { text: "\\c{N}" }, "ņ": { text: "\\c{n}" }, "Ň": { text: "\\v{N}" }, "ň": { text: "\\v{n}" }, "ʼn": { text: "'n" }, "Ŋ": { text: "\\NG", commandspacer: true }, "ŋ": { text: "\\ng", commandspacer: true }, "Ō": { text: "\\=O" }, "ō": { text: "\\=o" }, "Ŏ": { text: "\\u{O}" }, "ŏ": { text: "\\u{o}" }, "Ő": { text: "\\H{O}" }, "ő": { text: "\\H{o}" }, "Œ": { text: "\\OE", commandspacer: true }, "œ": { text: "\\oe", commandspacer: true }, "Ŕ": { text: "\\'R" }, "ŕ": { text: "\\'r" }, "Ŗ": { text: "\\c{R}" }, "ŗ": { text: "\\c{r}" }, "Ř": { text: "\\v{R}" }, "ř": { text: "\\v{r}" }, "Ś": { text: "\\'S" }, "ś": { text: "\\'s" }, "Ŝ": { text: "\\^S" }, "ŝ": { text: "\\^s" }, "Ş": { text: "\\c{S}" }, "ş": { text: "\\c{s}" }, "Š": { text: "\\v{S}" }, "š": { text: "\\v{s}" }, "Ţ": { text: "\\c{T}" }, "ţ": { text: "\\c{t}" }, "Ť": { text: "\\v{T}" }, "ť": { text: "\\v{t}" }, "Ŧ": { text: "{\\fontencoding{LELA}\\selectfont\\char47}" }, "ŧ": { text: "{\\fontencoding{LELA}\\selectfont\\char63}" }, "Ũ": { text: "\\~U" }, "ũ": { text: "\\~u" }, "Ū": { text: "\\=U" }, "ū": { text: "\\=u" }, "Ŭ": { text: "\\u{U}" }, "ŭ": { text: "\\u{u}" }, "Ů": { text: "\\r{U}" }, "ů": { text: "\\r{u}" }, "Ű": { text: "\\H{U}" }, "ű": { text: "\\H{u}" }, "Ų": { text: "\\k{U}" }, "ų": { text: "\\k{u}" }, "Ŵ": { text: "\\^W" }, "ŵ": { text: "\\^w" }, "Ŷ": { text: "\\^Y" }, "ŷ": { text: "\\^y" }, "Ÿ": { text: "\\\"Y" }, "Ź": { text: "\\'Z" }, "ź": { text: "\\'z" }, "Ż": { text: "\\.Z" }, "ż": { text: "\\.z" }, "Ž": { text: "\\v{Z}" }, "ž": { text: "\\v{z}" }, "ſ": { text: "s" }, "ƒ": { math: "f" }, "ƕ": { text: "\\texthvlig", commandspacer: true }, "ƞ": { text: "\\textnrleg", commandspacer: true }, "ƪ": { text: "\\textesh", commandspacer: true }, "Ƶ": { math: "\\Zbar" }, "ƺ": { text: "{\\fontencoding{LELA}\\selectfont\\char195}" }, "ǂ": { text: "\\textdoublepipe", commandspacer: true }, "Ǎ": { text: "\\v{A}" }, "ǎ": { text: "\\v{a}" }, "Ǐ": { text: "\\v{I}" }, "ǐ": { text: "\\v{i}" }, "Ǒ": { text: "\\v{O}" }, "ǒ": { text: "\\v{o}" }, "Ǔ": { text: "\\v{U}" }, "ǔ": { text: "\\v{u}" }, "Ǧ": { text: "\\v{G}" }, "ǧ": { text: "\\v{g}" }, "Ǩ": { text: "\\v{K}" }, "ǩ": { text: "\\v{k}" }, "Ǫ": { text: "\\k{O}" }, "ǫ": { text: "\\k{o}" }, "ǰ": { text: "\\v{j}" }, "Ǵ": { text: "\\'G" }, "ǵ": { text: "\\'g" }, "Ȩ": { text: "\\c{E}" }, "ȩ": { text: "\\c{e}" }, "ȷ": { math: "\\jmath" }, "ɐ": { math: "\\Elztrna" }, "ɒ": { math: "\\Elztrnsa" }, "ɔ": { math: "\\Elzopeno" }, "ɖ": { math: "\\Elzrtld" }, "ɘ": { text: "{\\fontencoding{LEIP}\\selectfont\\char61}" }, "ə": { math: "\\Elzschwa" }, "ɛ": { math: "\\varepsilon" }, "ɡ": { text: "g" }, "ɣ": { math: "\\Elzpgamma" }, "ɤ": { math: "\\Elzpbgam" }, "ɥ": { math: "\\Elztrnh" }, "ɬ": { math: "\\Elzbtdl" }, "ɭ": { math: "\\Elzrtll" }, "ɯ": { math: "\\Elztrnm" }, "ɰ": { math: "\\Elztrnmlr" }, "ɱ": { math: "\\Elzltlmr" }, "ɲ": { text: "\\Elzltln", commandspacer: true }, "ɳ": { math: "\\Elzrtln" }, "ɷ": { math: "\\Elzclomeg" }, "ɸ": { text: "\\textphi", commandspacer: true }, "ɹ": { math: "\\Elztrnr" }, "ɺ": { math: "\\Elztrnrl" }, "ɻ": { math: "\\Elzrttrnr" }, "ɼ": { math: "\\Elzrl" }, "ɽ": { math: "\\Elzrtlr" }, "ɾ": { math: "\\Elzfhr" }, "ɿ": { text: "{\\fontencoding{LEIP}\\selectfont\\char202}" }, "ʂ": { math: "\\Elzrtls" }, "ʃ": { math: "\\Elzesh" }, "ʇ": { math: "\\Elztrnt" }, "ʈ": { math: "\\Elzrtlt" }, "ʊ": { math: "\\Elzpupsil" }, "ʋ": { math: "\\Elzpscrv" }, "ʌ": { math: "\\Elzinvv" }, "ʍ": { math: "\\Elzinvw" }, "ʎ": { math: "\\Elztrny" }, "ʐ": { math: "\\Elzrtlz" }, "ʒ": { math: "\\Elzyogh" }, "ʔ": { math: "\\Elzglst" }, "ʕ": { math: "\\Elzreglst" }, "ʖ": { math: "\\Elzinglst" }, "ʞ": { text: "\\textturnk", commandspacer: true }, "ʤ": { math: "\\Elzdyogh" }, "ʧ": { math: "\\Elztesh" }, "ʰ": { math: "^{h}", text: "\\textsuperscript{h}" }, "ʲ": { math: "^{j}", text: "\\textsuperscript{j}" }, "ʳ": { math: "^{r}", text: "\\textsuperscript{r}" }, "ʷ": { math: "^{w}", text: "\\textsuperscript{w}" }, "ʸ": { math: "^{y}", text: "\\textsuperscript{y}" }, "ʹ": { text: "'" }, "ʻ": { text: "'" }, "ʼ": { text: "'" }, "ʽ": { text: "'" }, "ʿ": { text: "\\lasp", commandspacer: true, textpackages: [ "mathscinet" ] }, "ˆ": { text: "\\textasciicircum", commandspacer: true }, "ˇ": { text: "\\textasciicaron", commandspacer: true }, "ˈ": { math: "\\Elzverts" }, "ˉ": { text: "-" }, "ˌ": { math: "\\Elzverti" }, "ː": { math: "\\Elzlmrk" }, "ˑ": { math: "\\Elzhlmrk" }, "˒": { math: "\\Elzsbrhr" }, "˓": { math: "\\Elzsblhr" }, "˔": { math: "\\Elzrais" }, "˕": { math: "\\Elzlow" }, "˘": { text: "\\textasciibreve", commandspacer: true }, "˙": { text: "\\textperiodcentered", commandspacer: true, textpackages: [ "textcomp" ] }, "˚": { text: "\\r{}" }, "˛": { text: "\\k{}" }, "˜": { text: "\\texttildelow", commandspacer: true }, "˝": { text: "\\H{}" }, "ˡ": { math: "^{l}", text: "\\textsuperscript{l}" }, "ˢ": { math: "^{s}", text: "\\textsuperscript{s}" }, "ˣ": { math: "^{x}", text: "\\textsuperscript{x}" }, "˥": { text: "\\tone{55}" }, "˦": { text: "\\tone{44}" }, "˧": { text: "\\tone{33}" }, "˨": { text: "\\tone{22}" }, "˩": { text: "\\tone{11}" }, "̀": { math: "\\grave", combiningdiacritic: true, text: "\\`" }, "̀̄": { text: "\\textgravemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̀": { text: "\\textgravemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̀̇": { text: "\\textgravedot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̀": { text: "\\textgravedot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "́": { math: "\\acute", combiningdiacritic: true, text: "\\'" }, "́̄": { text: "\\textacutemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄́": { text: "\\textacutemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "́̌": { text: "\\textacutewedge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̌́": { text: "\\textacutewedge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̂": { math: "\\hat", combiningdiacritic: true, text: "\\^" }, "̂̇": { text: "\\textcircumdot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̂": { text: "\\textcircumdot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̃": { math: "\\tilde", combiningdiacritic: true, text: "\\~" }, "̃̇": { text: "\\texttildedot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̃": { text: "\\texttildedot", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄": { math: "\\bar", combiningdiacritic: true, text: "\\=" }, "̅": { math: "\\overline", combiningdiacritic: true }, "̆": { math: "\\breve", combiningdiacritic: true, text: "\\u", commandspacer: true }, "̆̄": { text: "\\textbrevemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̆": { text: "\\textbrevemacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇": { math: "\\dot", combiningdiacritic: true, text: "\\." }, "̇́": { text: "\\textdotacute", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "́̇": { text: "\\textdotacute", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̆": { text: "\\textdotbreve", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̆̇": { text: "\\textdotbreve", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̈": { math: "\\ddot", combiningdiacritic: true, text: "\\\"" }, "̉": { math: "\\ovhook" }, "̊": { math: "\\mathring", combiningdiacritic: true, text: "\\r", commandspacer: true }, "̊̄": { text: "\\textringmacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̊": { text: "\\textringmacron", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̋": { text: "\\H", commandspacer: true, combiningdiacritic: true }, "̌": { math: "\\check", text: "\\v", commandspacer: true, combiningdiacritic: true }, "̍": { text: "\\textvbaraccent", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̎": { text: "\\textdoublevbaraccent", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̏": { text: "\\textdoublegrave", commandspacer: true, combiningdiacritic: true }, "̐": { text: "\\textdotbreve", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̑": { text: "{\\fontencoding{LECO}\\selectfont\\char177}" }, "̒": { math: "\\oturnedcomma" }, "̕": { math: "\\ocommatopright" }, "̖": { text: "\\textsubgrave", commandspacer: true, combiningdiacritic: true }, "̘": { text: "\\textadvancing", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̙": { text: "\\textretracting", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̚": { math: "\\droang", text: "\\textcorner", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̜": { text: "\\textsublhalfring", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̝": { text: "\\textraising", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̞": { text: "\\textlowering", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̟": { text: "\\textsubplus", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̡": { math: "\\Elzpalh" }, "̢": { text: "\\Elzrh", commandspacer: true }, "̣": { text: "\\d", commandspacer: true, combiningdiacritic: true }, "̤": { text: "\\textsubumlaut", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̥": { text: "\\textsubring", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̧": { text: "\\c", commandspacer: true, combiningdiacritic: true }, "̨": { text: "\\k", commandspacer: true, combiningdiacritic: true }, "̩": { text: "\\textsyllabic", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̪": { math: "\\Elzsbbrg", text: "\\textsubbridge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̫": { text: "{\\fontencoding{LECO}\\selectfont\\char203}" }, "̬": { text: "\\textsubwedge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̯": { text: "\\textsubarch", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̰": { math: "\\utilde", text: "\\textsubtilde", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̱": { math: "\\underbar", combiningdiacritic: true, text: "\\textsubbar", commandspacer: true, textpackages: [ "tipa" ] }, "̲": { math: "\\underline" }, "̴": { text: "\\textsuperimposetilde", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̵": { text: "\\Elzxl", commandspacer: true }, "̶": { text: "\\Elzbar", commandspacer: true }, "̷": { text: "{\\fontencoding{LECO}\\selectfont\\char215}" }, "̸": { math: "\\not" }, "̹": { text: "\\textsubrhalfring", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̺": { text: "\\textinvsubbridge", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̻": { text: "\\textsubsquare", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̼": { text: "\\textseagull", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "̽": { text: "\\textovercross", commandspacer: true, combiningdiacritic: true, textpackages: [ "tipa" ] }, "͡": { text: "{\\fontencoding{LECO}\\selectfont\\char225}" }, "ʹ": { text: "'" }, "͵": { text: "," }, ";": { text: ";" }, "Ά": { text: "\\'A" }, "Έ": { text: "\\'E" }, "Ή": { text: "\\'H" }, "Ί": { text: "{\\'{}I}" }, "Ό": { text: "{\\'{}O}" }, "Ύ": { math: "\\mathrm{'Y}" }, "Ώ": { math: "\\mathrm{'\\Omega}" }, "ΐ": { math: "\\acute{\\ddot{\\iota}}" }, "Α": { math: "A" }, "Β": { math: "B" }, "Γ": { math: "\\Gamma" }, "Δ": { math: "\\Delta" }, "Ε": { math: "E" }, "Ζ": { math: "Z" }, "Η": { math: "H" }, "Θ": { math: "\\Theta" }, "Ι": { math: "I" }, "Κ": { math: "K" }, "Λ": { math: "\\Lambda" }, "Μ": { math: "M" }, "Ν": { math: "N" }, "Ξ": { math: "\\Xi" }, "Ο": { math: "O" }, "Π": { math: "\\Pi" }, "Ρ": { math: "P" }, "Σ": { math: "\\Sigma" }, "Τ": { math: "T" }, "Υ": { math: "\\Upsilon" }, "Φ": { math: "\\Phi" }, "Χ": { math: "X" }, "Ψ": { math: "\\Psi" }, "Ω": { math: "\\Omega" }, "Ϊ": { math: "\\mathrm{\\ddot{I}}" }, "Ϋ": { math: "\\mathrm{\\ddot{Y}}" }, "ά": { text: "{\\'$\\alpha$}" }, "έ": { math: "\\acute{\\epsilon}" }, "ή": { math: "\\acute{\\eta}" }, "ί": { math: "\\acute{\\iota}" }, "ΰ": { math: "\\acute{\\ddot{\\upsilon}}" }, "α": { math: "\\alpha" }, "β": { math: "\\beta" }, "γ": { math: "\\gamma" }, "δ": { math: "\\delta" }, "ε": { math: "\\epsilon" }, "ζ": { math: "\\zeta" }, "η": { math: "\\eta" }, "θ": { math: "\\theta", text: "\\texttheta", commandspacer: true }, "ι": { math: "\\iota" }, "κ": { math: "\\kappa" }, "λ": { math: "\\lambda" }, "μ": { math: "\\mu" }, "ν": { math: "\\nu" }, "ξ": { math: "\\xi" }, "ο": { math: "o" }, "π": { math: "\\pi" }, "ρ": { math: "\\rho" }, "ς": { math: "\\varsigma" }, "σ": { math: "\\sigma" }, "τ": { math: "\\tau" }, "υ": { math: "\\upsilon" }, "φ": { math: "\\varphi" }, "χ": { math: "\\chi" }, "ψ": { math: "\\psi" }, "ω": { math: "\\omega" }, "ϊ": { math: "\\ddot{\\iota}" }, "ϋ": { math: "\\ddot{\\upsilon}" }, "ό": { text: "\\'o" }, "ύ": { math: "\\acute{\\upsilon}" }, "ώ": { math: "\\acute{\\omega}" }, "ϐ": { math: "\\varbeta", text: "\\Pisymbol{ppi022}{87}" }, "ϑ": { math: "\\vartheta", text: "\\textvartheta", commandspacer: true }, "ϒ": { math: "\\Upsilon" }, "ϕ": { math: "\\phi" }, "ϖ": { math: "\\varpi" }, "Ϙ": { math: "\\Qoppa" }, "ϙ": { math: "\\qoppa" }, "Ϛ": { math: "\\Stigma" }, "ϛ": { math: "\\stigma" }, "Ϝ": { math: "\\Digamma" }, "ϝ": { math: "\\digamma" }, "Ϟ": { math: "\\Koppa" }, "ϟ": { math: "\\koppa" }, "Ϡ": { math: "\\Sampi" }, "ϡ": { math: "\\sampi" }, "ϰ": { math: "\\varkappa" }, "ϱ": { math: "\\varrho" }, "ϴ": { math: "\\upvarTheta", text: "\\textTheta", commandspacer: true }, "ϵ": { math: "\\epsilon" }, "϶": { math: "\\backepsilon" }, "Ё": { text: "\\cyrchar\\CYRYO", commandspacer: true }, "Ђ": { text: "\\cyrchar\\CYRDJE", commandspacer: true }, "Ѓ": { text: "\\cyrchar{\\'\\CYRG}" }, "Є": { text: "\\cyrchar\\CYRIE", commandspacer: true }, "Ѕ": { text: "\\cyrchar\\CYRDZE", commandspacer: true }, "І": { text: "\\cyrchar\\CYRII", commandspacer: true }, "Ї": { text: "\\cyrchar\\CYRYI", commandspacer: true }, "Ј": { text: "\\cyrchar\\CYRJE", commandspacer: true }, "Љ": { text: "\\cyrchar\\CYRLJE", commandspacer: true }, "Њ": { text: "\\cyrchar\\CYRNJE", commandspacer: true }, "Ћ": { text: "\\cyrchar\\CYRTSHE", commandspacer: true }, "Ќ": { text: "\\cyrchar{\\'\\CYRK}" }, "Ў": { text: "\\cyrchar\\CYRUSHRT", commandspacer: true }, "Џ": { text: "\\cyrchar\\CYRDZHE", commandspacer: true }, "А": { text: "\\cyrchar\\CYRA", commandspacer: true }, "Б": { text: "\\cyrchar\\CYRB", commandspacer: true }, "В": { text: "\\cyrchar\\CYRV", commandspacer: true }, "Г": { text: "\\cyrchar\\CYRG", commandspacer: true }, "Д": { text: "\\cyrchar\\CYRD", commandspacer: true }, "Е": { text: "\\cyrchar\\CYRE", commandspacer: true }, "Ж": { text: "\\cyrchar\\CYRZH", commandspacer: true }, "З": { text: "\\cyrchar\\CYRZ", commandspacer: true }, "И": { text: "\\cyrchar\\CYRI", commandspacer: true }, "Й": { text: "\\cyrchar\\CYRISHRT", commandspacer: true }, "К": { text: "\\cyrchar\\CYRK", commandspacer: true }, "Л": { text: "\\cyrchar\\CYRL", commandspacer: true }, "М": { text: "\\cyrchar\\CYRM", commandspacer: true }, "Н": { text: "\\cyrchar\\CYRN", commandspacer: true }, "О": { text: "\\cyrchar\\CYRO", commandspacer: true }, "П": { text: "\\cyrchar\\CYRP", commandspacer: true }, "Р": { text: "\\cyrchar\\CYRR", commandspacer: true }, "С": { text: "\\cyrchar\\CYRS", commandspacer: true }, "Т": { text: "\\cyrchar\\CYRT", commandspacer: true }, "У": { text: "\\cyrchar\\CYRU", commandspacer: true }, "Ф": { text: "\\cyrchar\\CYRF", commandspacer: true }, "Х": { text: "\\cyrchar\\CYRH", commandspacer: true }, "Ц": { text: "\\cyrchar\\CYRC", commandspacer: true }, "Ч": { text: "\\cyrchar\\CYRCH", commandspacer: true }, "Ш": { text: "\\cyrchar\\CYRSH", commandspacer: true }, "Щ": { text: "\\cyrchar\\CYRSHCH", commandspacer: true }, "Ъ": { text: "\\cyrchar\\CYRHRDSN", commandspacer: true }, "Ы": { text: "\\cyrchar\\CYRERY", commandspacer: true }, "Ь": { text: "\\cyrchar\\CYRSFTSN", commandspacer: true }, "Э": { text: "\\cyrchar\\CYREREV", commandspacer: true }, "Ю": { text: "\\cyrchar\\CYRYU", commandspacer: true }, "Я": { text: "\\cyrchar\\CYRYA", commandspacer: true }, "а": { text: "\\cyrchar\\cyra", commandspacer: true }, "б": { text: "\\cyrchar\\cyrb", commandspacer: true }, "в": { text: "\\cyrchar\\cyrv", commandspacer: true }, "г": { text: "\\cyrchar\\cyrg", commandspacer: true }, "д": { text: "\\cyrchar\\cyrd", commandspacer: true }, "е": { text: "\\cyrchar\\cyre", commandspacer: true }, "ж": { text: "\\cyrchar\\cyrzh", commandspacer: true }, "з": { text: "\\cyrchar\\cyrz", commandspacer: true }, "и": { text: "\\cyrchar\\cyri", commandspacer: true }, "й": { text: "\\cyrchar\\cyrishrt", commandspacer: true }, "к": { text: "\\cyrchar\\cyrk", commandspacer: true }, "л": { text: "\\cyrchar\\cyrl", commandspacer: true }, "м": { text: "\\cyrchar\\cyrm", commandspacer: true }, "н": { text: "\\cyrchar\\cyrn", commandspacer: true }, "о": { text: "\\cyrchar\\cyro", commandspacer: true }, "п": { text: "\\cyrchar\\cyrp", commandspacer: true }, "р": { text: "\\cyrchar\\cyrr", commandspacer: true }, "с": { text: "\\cyrchar\\cyrs", commandspacer: true }, "т": { text: "\\cyrchar\\cyrt", commandspacer: true }, "у": { text: "\\cyrchar\\cyru", commandspacer: true }, "ф": { text: "\\cyrchar\\cyrf", commandspacer: true }, "х": { text: "\\cyrchar\\cyrh", commandspacer: true }, "ц": { text: "\\cyrchar\\cyrc", commandspacer: true }, "ч": { text: "\\cyrchar\\cyrch", commandspacer: true }, "ш": { text: "\\cyrchar\\cyrsh", commandspacer: true }, "щ": { text: "\\cyrchar\\cyrshch", commandspacer: true }, "ъ": { text: "\\cyrchar\\cyrhrdsn", commandspacer: true }, "ы": { text: "\\cyrchar\\cyrery", commandspacer: true }, "ь": { text: "\\cyrchar\\cyrsftsn", commandspacer: true }, "э": { text: "\\cyrchar\\cyrerev", commandspacer: true }, "ю": { text: "\\cyrchar\\cyryu", commandspacer: true }, "я": { text: "\\cyrchar\\cyrya", commandspacer: true }, "ё": { text: "\\cyrchar\\cyryo", commandspacer: true }, "ђ": { text: "\\cyrchar\\cyrdje", commandspacer: true }, "ѓ": { text: "\\cyrchar{\\'\\cyrg}" }, "є": { text: "\\cyrchar\\cyrie", commandspacer: true }, "ѕ": { text: "\\cyrchar\\cyrdze", commandspacer: true }, "і": { text: "\\cyrchar\\cyrii", commandspacer: true }, "ї": { text: "\\cyrchar\\cyryi", commandspacer: true }, "ј": { text: "\\cyrchar\\cyrje", commandspacer: true }, "љ": { text: "\\cyrchar\\cyrlje", commandspacer: true }, "њ": { text: "\\cyrchar\\cyrnje", commandspacer: true }, "ћ": { text: "\\cyrchar\\cyrtshe", commandspacer: true }, "ќ": { text: "\\cyrchar{\\'\\cyrk}" }, "ў": { text: "\\cyrchar\\cyrushrt", commandspacer: true }, "џ": { text: "\\cyrchar\\cyrdzhe", commandspacer: true }, "Ѡ": { text: "\\cyrchar\\CYROMEGA", commandspacer: true }, "ѡ": { text: "\\cyrchar\\cyromega", commandspacer: true }, "Ѣ": { text: "\\cyrchar\\CYRYAT", commandspacer: true }, "Ѥ": { text: "\\cyrchar\\CYRIOTE", commandspacer: true }, "ѥ": { text: "\\cyrchar\\cyriote", commandspacer: true }, "Ѧ": { text: "\\cyrchar\\CYRLYUS", commandspacer: true }, "ѧ": { text: "\\cyrchar\\cyrlyus", commandspacer: true }, "Ѩ": { text: "\\cyrchar\\CYRIOTLYUS", commandspacer: true }, "ѩ": { text: "\\cyrchar\\cyriotlyus", commandspacer: true }, "Ѫ": { text: "\\cyrchar\\CYRBYUS", commandspacer: true }, "Ѭ": { text: "\\cyrchar\\CYRIOTBYUS", commandspacer: true }, "ѭ": { text: "\\cyrchar\\cyriotbyus", commandspacer: true }, "Ѯ": { text: "\\cyrchar\\CYRKSI", commandspacer: true }, "ѯ": { text: "\\cyrchar\\cyrksi", commandspacer: true }, "Ѱ": { text: "\\cyrchar\\CYRPSI", commandspacer: true }, "ѱ": { text: "\\cyrchar\\cyrpsi", commandspacer: true }, "Ѳ": { text: "\\cyrchar\\CYRFITA", commandspacer: true }, "Ѵ": { text: "\\cyrchar\\CYRIZH", commandspacer: true }, "Ѹ": { text: "\\cyrchar\\CYRUK", commandspacer: true }, "ѹ": { text: "\\cyrchar\\cyruk", commandspacer: true }, "Ѻ": { text: "\\cyrchar\\CYROMEGARND", commandspacer: true }, "ѻ": { text: "\\cyrchar\\cyromegarnd", commandspacer: true }, "Ѽ": { text: "\\cyrchar\\CYROMEGATITLO", commandspacer: true }, "ѽ": { text: "\\cyrchar\\cyromegatitlo", commandspacer: true }, "Ѿ": { text: "\\cyrchar\\CYROT", commandspacer: true }, "ѿ": { text: "\\cyrchar\\cyrot", commandspacer: true }, "Ҁ": { text: "\\cyrchar\\CYRKOPPA", commandspacer: true }, "ҁ": { text: "\\cyrchar\\cyrkoppa", commandspacer: true }, "҂": { text: "\\cyrchar\\cyrthousands", commandspacer: true }, "҈": { text: "\\cyrchar\\cyrhundredthousands", commandspacer: true }, "҉": { text: "\\cyrchar\\cyrmillions", commandspacer: true }, "Ҍ": { text: "\\cyrchar\\CYRSEMISFTSN", commandspacer: true }, "ҍ": { text: "\\cyrchar\\cyrsemisftsn", commandspacer: true }, "Ҏ": { text: "\\cyrchar\\CYRRTICK", commandspacer: true }, "ҏ": { text: "\\cyrchar\\cyrrtick", commandspacer: true }, "Ґ": { text: "\\cyrchar\\CYRGUP", commandspacer: true }, "ґ": { text: "\\cyrchar\\cyrgup", commandspacer: true }, "Ғ": { text: "\\cyrchar\\CYRGHCRS", commandspacer: true }, "ғ": { text: "\\cyrchar\\cyrghcrs", commandspacer: true }, "Ҕ": { text: "\\cyrchar\\CYRGHK", commandspacer: true }, "ҕ": { text: "\\cyrchar\\cyrghk", commandspacer: true }, "Җ": { text: "\\cyrchar\\CYRZHDSC", commandspacer: true }, "җ": { text: "\\cyrchar\\cyrzhdsc", commandspacer: true }, "Ҙ": { text: "\\cyrchar\\CYRZDSC", commandspacer: true }, "ҙ": { text: "\\cyrchar\\cyrzdsc", commandspacer: true }, "Қ": { text: "\\cyrchar\\CYRKDSC", commandspacer: true }, "қ": { text: "\\cyrchar\\cyrkdsc", commandspacer: true }, "Ҝ": { text: "\\cyrchar\\CYRKVCRS", commandspacer: true }, "ҝ": { text: "\\cyrchar\\cyrkvcrs", commandspacer: true }, "Ҟ": { text: "\\cyrchar\\CYRKHCRS", commandspacer: true }, "ҟ": { text: "\\cyrchar\\cyrkhcrs", commandspacer: true }, "Ҡ": { text: "\\cyrchar\\CYRKBEAK", commandspacer: true }, "ҡ": { text: "\\cyrchar\\cyrkbeak", commandspacer: true }, "Ң": { text: "\\cyrchar\\CYRNDSC", commandspacer: true }, "ң": { text: "\\cyrchar\\cyrndsc", commandspacer: true }, "Ҥ": { text: "\\cyrchar\\CYRNG", commandspacer: true }, "ҥ": { text: "\\cyrchar\\cyrng", commandspacer: true }, "Ҧ": { text: "\\cyrchar\\CYRPHK", commandspacer: true }, "ҧ": { text: "\\cyrchar\\cyrphk", commandspacer: true }, "Ҩ": { text: "\\cyrchar\\CYRABHHA", commandspacer: true }, "ҩ": { text: "\\cyrchar\\cyrabhha", commandspacer: true }, "Ҫ": { text: "\\cyrchar\\CYRSDSC", commandspacer: true }, "ҫ": { text: "\\cyrchar\\cyrsdsc", commandspacer: true }, "Ҭ": { text: "\\cyrchar\\CYRTDSC", commandspacer: true }, "ҭ": { text: "\\cyrchar\\cyrtdsc", commandspacer: true }, "Ү": { text: "\\cyrchar\\CYRY", commandspacer: true }, "ү": { text: "\\cyrchar\\cyry", commandspacer: true }, "Ұ": { text: "\\cyrchar\\CYRYHCRS", commandspacer: true }, "ұ": { text: "\\cyrchar\\cyryhcrs", commandspacer: true }, "Ҳ": { text: "\\cyrchar\\CYRHDSC", commandspacer: true }, "ҳ": { text: "\\cyrchar\\cyrhdsc", commandspacer: true }, "Ҵ": { text: "\\cyrchar\\CYRTETSE", commandspacer: true }, "ҵ": { text: "\\cyrchar\\cyrtetse", commandspacer: true }, "Ҷ": { text: "\\cyrchar\\CYRCHRDSC", commandspacer: true }, "ҷ": { text: "\\cyrchar\\cyrchrdsc", commandspacer: true }, "Ҹ": { text: "\\cyrchar\\CYRCHVCRS", commandspacer: true }, "ҹ": { text: "\\cyrchar\\cyrchvcrs", commandspacer: true }, "Һ": { text: "\\cyrchar\\CYRSHHA", commandspacer: true }, "һ": { text: "\\cyrchar\\cyrshha", commandspacer: true }, "Ҽ": { text: "\\cyrchar\\CYRABHCH", commandspacer: true }, "ҽ": { text: "\\cyrchar\\cyrabhch", commandspacer: true }, "Ҿ": { text: "\\cyrchar\\CYRABHCHDSC", commandspacer: true }, "ҿ": { text: "\\cyrchar\\cyrabhchdsc", commandspacer: true }, "Ӏ": { text: "\\cyrchar\\CYRpalochka", commandspacer: true }, "Ӄ": { text: "\\cyrchar\\CYRKHK", commandspacer: true }, "ӄ": { text: "\\cyrchar\\cyrkhk", commandspacer: true }, "Ӈ": { text: "\\cyrchar\\CYRNHK", commandspacer: true }, "ӈ": { text: "\\cyrchar\\cyrnhk", commandspacer: true }, "Ӌ": { text: "\\cyrchar\\CYRCHLDSC", commandspacer: true }, "ӌ": { text: "\\cyrchar\\cyrchldsc", commandspacer: true }, "Ӕ": { text: "\\cyrchar\\CYRAE", commandspacer: true }, "ӕ": { text: "\\cyrchar\\cyrae", commandspacer: true }, "Ә": { text: "\\cyrchar\\CYRSCHWA", commandspacer: true }, "ә": { text: "\\cyrchar\\cyrschwa", commandspacer: true }, "Ӡ": { text: "\\cyrchar\\CYRABHDZE", commandspacer: true }, "ӡ": { text: "\\cyrchar\\cyrabhdze", commandspacer: true }, "Ө": { text: "\\cyrchar\\CYROTLD", commandspacer: true }, "ө": { text: "\\cyrchar\\cyrotld", commandspacer: true }, "ࡱ": { math: "\\\\backslash" }, "ᵃ": { math: "^{a}", text: "\\textsuperscript{a}" }, "ᵇ": { math: "^{b}", text: "\\textsuperscript{b}" }, "ᵈ": { math: "^{d}", text: "\\textsuperscript{d}" }, "ᵉ": { math: "^{e}", text: "\\textsuperscript{e}" }, "ᵍ": { math: "^{g}", text: "\\textsuperscript{g}" }, "ᵏ": { math: "^{k}", text: "\\textsuperscript{k}" }, "ᵐ": { math: "^{m}", text: "\\textsuperscript{m}" }, "ᵒ": { math: "^{o}", text: "\\textsuperscript{o}" }, "ᵖ": { math: "^{p}", text: "\\textsuperscript{p}" }, "ᵗ": { math: "^{t}", text: "\\textsuperscript{t}" }, "ᵘ": { math: "^{u}", text: "\\textsuperscript{u}" }, "ᵛ": { math: "^{v}", text: "\\textsuperscript{v}" }, "ᶜ": { math: "^{c}", text: "\\textsuperscript{c}" }, "ᶠ": { math: "^{f}", text: "\\textsuperscript{f}" }, "ᶻ": { math: "^{z}", text: "\\textsuperscript{z}" }, "Ḃ": { text: "\\.B" }, "ḃ": { text: "\\.b" }, "Ḅ": { text: "\\d{B}" }, "ḅ": { text: "\\d{b}" }, "Ḇ": { text: "\\b{B}" }, "ḇ": { text: "\\b{b}" }, "Ḋ": { text: "\\.D" }, "ḋ": { text: "\\.d" }, "Ḍ": { text: "\\d{D}" }, "ḍ": { text: "\\d{d}" }, "Ḏ": { text: "\\b{D}" }, "ḏ": { text: "\\b{d}" }, "Ḑ": { text: "\\c{D}" }, "ḑ": { text: "\\c{d}" }, "Ḝ": { text: "\\c{\\u{E}}" }, "ḝ": { text: "\\c{\\u{e}}" }, "Ḟ": { text: "\\.F" }, "ḟ": { text: "\\.f" }, "Ḡ": { text: "\\=G" }, "ḡ": { text: "\\=g" }, "Ḣ": { text: "\\.H" }, "ḣ": { text: "\\.h" }, "Ḥ": { text: "\\d{H}" }, "ḥ": { text: "\\d{h}" }, "Ḧ": { text: "\\\"H" }, "ḧ": { text: "\\\"h" }, "Ḩ": { text: "\\c{H}" }, "ḩ": { text: "\\c{h}" }, "Ḱ": { text: "\\'K" }, "ḱ": { text: "\\'k" }, "Ḳ": { text: "\\d{K}" }, "ḳ": { text: "\\d{k}" }, "Ḵ": { text: "\\b{K}" }, "ḵ": { text: "\\b{k}" }, "Ḷ": { text: "\\d{L}" }, "ḷ": { text: "\\d{l}" }, "Ḻ": { text: "\\b{L}" }, "ḻ": { text: "\\b{l}" }, "Ḿ": { text: "\\'M" }, "ḿ": { text: "\\'m" }, "Ṁ": { text: "\\.M" }, "ṁ": { text: "\\.m" }, "Ṃ": { text: "\\d{M}" }, "ṃ": { text: "\\d{m}" }, "Ṅ": { text: "\\.N" }, "ṅ": { text: "\\.n" }, "Ṇ": { text: "\\d{N}" }, "ṇ": { text: "\\d{n}" }, "Ṉ": { text: "\\b{N}" }, "ṉ": { text: "\\b{n}" }, "Ṕ": { text: "\\'P" }, "ṕ": { text: "\\'p" }, "Ṗ": { text: "\\.P" }, "ṗ": { text: "\\.p" }, "Ṙ": { text: "\\.R" }, "ṙ": { text: "\\.r" }, "Ṛ": { text: "\\d{R}" }, "ṛ": { text: "\\d{r}" }, "Ṟ": { text: "\\b{R}" }, "ṟ": { text: "\\b{r}" }, "Ṡ": { text: "\\.S" }, "ṡ": { text: "\\.s" }, "Ṣ": { text: "\\d{S}" }, "ṣ": { text: "\\d{s}" }, "Ṫ": { text: "\\.T" }, "ṫ": { text: "\\.t" }, "Ṭ": { text: "\\d{T}" }, "ṭ": { text: "\\d{t}" }, "Ṯ": { text: "\\b{T}" }, "ṯ": { text: "\\b{t}" }, "Ṽ": { text: "\\~V" }, "ṽ": { text: "\\~v" }, "Ṿ": { text: "\\d{V}" }, "ṿ": { text: "\\d{v}" }, "Ẁ": { text: "\\`W" }, "ẁ": { text: "\\`w" }, "Ẃ": { text: "\\'W" }, "ẃ": { text: "\\'w" }, "Ẅ": { text: "\\\"W" }, "ẅ": { text: "\\\"w" }, "Ẇ": { text: "\\.W" }, "ẇ": { text: "\\.w" }, "Ẉ": { text: "\\d{W}" }, "ẉ": { text: "\\d{w}" }, "Ẋ": { text: "\\.X" }, "ẋ": { text: "\\.x" }, "Ẍ": { text: "\\\"X" }, "ẍ": { text: "\\\"x" }, "Ẏ": { text: "\\.Y" }, "ẏ": { text: "\\.y" }, "Ẑ": { text: "\\^Z" }, "ẑ": { text: "\\^z" }, "Ẓ": { text: "\\d{Z}" }, "ẓ": { text: "\\d{z}" }, "Ẕ": { text: "\\b{Z}" }, "ẕ": { text: "\\b{z}" }, "ẖ": { text: "\\b{h}" }, "ẗ": { text: "\\\"t" }, "ẘ": { text: "\\r{w}" }, "ẙ": { text: "\\r{y}" }, "Ạ": { text: "\\d{A}" }, "ạ": { text: "\\d{a}" }, "Ẹ": { text: "\\d{E}" }, "ẹ": { text: "\\d{e}" }, "Ẽ": { text: "\\~E" }, "ẽ": { text: "\\~e" }, "Ị": { text: "\\d{I}" }, "ị": { text: "\\d{i}" }, "Ọ": { text: "\\d{O}" }, "ọ": { text: "\\d{o}" }, "Ụ": { text: "\\d{U}" }, "ụ": { text: "\\d{u}" }, "Ỳ": { text: "\\`Y" }, "ỳ": { text: "\\`y" }, "Ỵ": { text: "\\d{Y}" }, "ỵ": { text: "\\d{y}" }, "Ỹ": { text: "\\~Y" }, "ỹ": { text: "\\~y" }, " ": { text: " ", space: true }, " ": { math: "\\quad", space: true }, " ": { text: "\\hspace{0.6em}", space: true }, " ": { math: "\\quad", space: true, text: "\\hspace{1em}" }, " ": { text: "\\;", space: true }, " ": { text: "\\hspace{0.25em}", space: true }, " ": { text: "\\hspace{0.166em}", space: true }, " ": { text: "\\hphantom{0}", space: true }, " ": { text: "\\hphantom{,}", space: true }, " ": { text: "\\,", space: true }, " ": { math: "\\mkern1mu", space: true }, "​": { text: "\\mbox", commandspacer: true, space: true }, "‌": { text: "{\\aftergroup\\ignorespaces}" }, "‐": { text: "-" }, "‑": { text: "-" }, "‒": { text: "-" }, "–": { text: "\\textendash", commandspacer: true }, "—": { text: "\\textemdash", commandspacer: true }, "―": { math: "\\horizbar", text: "\\rule{1em}{1pt}" }, "‖": { math: "\\Vert" }, "‗": { math: "\\twolowline" }, "‘": { text: "`" }, "’": { text: "'" }, "‚": { text: "," }, "‛": { math: "\\Elzreapos" }, "“": { text: "``" }, "”": { text: "''" }, "„": { text: ",," }, "‟": { text: "\\quotedblbase", commandspacer: true }, "†": { math: "\\dagger", text: "\\textdagger", commandspacer: true, textpackages: [ "textcomp" ] }, "‡": { math: "\\ddagger", text: "\\textdaggerdbl", commandspacer: true, textpackages: [ "textcomp" ] }, "•": { math: "\\bullet", text: "\\textbullet", commandspacer: true, textpackages: [ "textcomp" ] }, "‣": { text: ">" }, "․": { text: "." }, "‥": { math: "\\enleadertwodots", text: ".." }, "…": { math: "\\ldots", text: "\\ldots", commandspacer: true }, "‧": { text: "-" }, " ": { text: " ", space: true }, "‰": { text: "\\textperthousand", commandspacer: true, textpackages: [ "textcomp" ] }, "‱": { text: "\\textpertenthousand", commandspacer: true, textpackages: [ "textcomp" ] }, "′": { math: "{'}" }, "″": { math: "{''}" }, "‴": { math: "{'''}" }, "‵": { math: "\\backprime" }, "‶": { math: "\\backdprime" }, "‷": { math: "\\backtrprime" }, "‸": { math: "\\caretinsert" }, "‹": { text: "\\guilsinglleft", commandspacer: true }, "›": { text: "\\guilsinglright", commandspacer: true }, "‼": { math: "\\Exclam" }, "‾": { text: "-" }, "⁃": { math: "\\hyphenbullet" }, "⁄": { math: "\\fracslash" }, "⁇": { math: "\\Question" }, "⁈": { text: "?!" }, "⁉": { text: "!?" }, "⁊": { text: "7" }, "⁐": { math: "\\closure" }, "⁗": { math: "''''" }, " ": { math: "\\:", space: true, text: "\\:" }, "⁠": { text: "\\nolinebreak", commandspacer: true }, "⁰": { math: "^{0}" }, "ⁱ": { math: "^{i}", text: "\\textsuperscript{i}" }, "⁴": { math: "^{4}" }, "⁵": { math: "^{5}" }, "⁶": { math: "^{6}" }, "⁷": { math: "^{7}" }, "⁸": { math: "^{8}" }, "⁹": { math: "^{9}" }, "⁺": { math: "^{+}" }, "⁻": { math: "^{-}" }, "⁼": { math: "^{=}" }, "⁽": { math: "^{(}" }, "⁾": { math: "^{)}" }, "ⁿ": { math: "^{n}", text: "\\textsuperscript{n}" }, "₀": { math: "_{0}" }, "₁": { math: "_{1}" }, "₂": { math: "_{2}" }, "₃": { math: "_{3}" }, "₄": { math: "_{4}" }, "₅": { math: "_{5}" }, "₆": { math: "_{6}" }, "₇": { math: "_{7}" }, "₈": { math: "_{8}" }, "₉": { math: "_{9}" }, "₊": { math: "_{+}" }, "₋": { math: "_{-}" }, "₌": { math: "_{=}" }, "₍": { math: "_{(}" }, "₎": { math: "_{)}" }, "ₐ": { math: "_{a}", text: "\\textsubscript{a}" }, "ₑ": { math: "_{e}", text: "\\textsubscript{e}" }, "ₒ": { math: "_{o}", text: "\\textsubscript{o}" }, "ₓ": { math: "_{x}", text: "\\textsubscript{x}" }, "ₔ": { text: "\\textsubscript{\\textschwa}", textpackages: [ "tipa" ] }, "ₕ": { math: "_{h}", text: "\\textsubscript{h}" }, "ₖ": { math: "_{k}", text: "\\textsubscript{k}" }, "ₗ": { math: "_{l}", text: "\\textsubscript{l}" }, "ₘ": { math: "_{m}", text: "\\textsubscript{m}" }, "ₙ": { math: "_{n}", text: "\\textsubscript{n}" }, "ₚ": { math: "_{p}", text: "\\textsubscript{p}" }, "ₛ": { math: "_{s}", text: "\\textsubscript{s}" }, "ₜ": { math: "_{t}", text: "\\textsubscript{t}" }, "₧": { text: "\\ensuremath{\\Elzpes}" }, "€": { math: "\\euro", text: "\\texteuro", commandspacer: true }, "⃐": { math: "\\lvec" }, "⃑": { math: "\\rightharpoonup", mathpackages: [ "amsmath", "amssymb" ] }, "⃒": { math: "\\vertoverlay" }, "⃖": { math: "\\LVec" }, "⃗": { math: "\\vec" }, "⃛": { math: "\\dddot" }, "⃜": { math: "\\ddddot" }, "⃝": { math: "\\enclosecircle" }, "⃞": { math: "\\enclosesquare" }, "⃟": { math: "\\enclosediamond" }, "⃡": { math: "\\overleftrightarrow" }, "⃤": { math: "\\enclosetriangle" }, "⃧": { math: "\\annuity" }, "⃨": { math: "\\threeunderdot" }, "⃩": { math: "\\widebridgeabove" }, "⃬": { math: "\\underrightharpoondown" }, "⃭": { math: "\\underleftharpoondown" }, "⃮": { math: "\\underleftarrow" }, "⃯": { math: "\\underrightarrow" }, "⃰": { math: "\\asteraccent" }, "℀": { text: "a/c" }, "℁": { text: "a/s" }, "ℂ": { math: "\\mathbb{C}" }, "℃": { text: "\\textcelsius", commandspacer: true }, "℅": { text: "c/o" }, "℆": { text: "c/u" }, "ℇ": { math: "\\Euler" }, "℉": { text: "F" }, "ℊ": { math: "\\mathscr{g}" }, "ℋ": { math: "\\mathscr{H}" }, "ℌ": { math: "\\mathfrak{H}" }, "ℍ": { math: "\\mathbb{H}" }, "ℎ": { math: "\\Planckconst" }, "ℏ": { math: "\\hslash" }, "ℐ": { math: "\\mathscr{I}" }, "ℑ": { math: "\\mathfrak{I}" }, "ℒ": { math: "\\mathscr{L}" }, "ℓ": { math: "\\mathscr{l}" }, "ℕ": { math: "\\mathbb{N}" }, "№": { text: "\\cyrchar\\textnumero", commandspacer: true }, "℗": { text: "\\textcircledP", commandspacer: true }, "℘": { math: "\\wp" }, "ℙ": { math: "\\mathbb{P}" }, "ℚ": { math: "\\mathbb{Q}" }, "ℛ": { math: "\\mathscr{R}" }, "ℜ": { math: "\\mathfrak{R}" }, "ℝ": { math: "\\mathbb{R}" }, "℞": { math: "\\Elzxrat" }, "℠": { text: "\\textservicemark", commandspacer: true }, "℡": { text: "TEL" }, "™": { text: "\\texttrademark", commandspacer: true, textpackages: [ "textcomp" ] }, "ℤ": { math: "\\mathbb{Z}" }, "Ω": { math: "\\Omega" }, "℧": { math: "\\mho" }, "ℨ": { math: "\\mathfrak{Z}" }, "℩": { text: "\\textriota", commandspacer: true }, "K": { text: "K" }, "Å": { math: "\\Angstroem", text: "\\AA", commandspacer: true }, "ℬ": { math: "\\mathscr{B}" }, "ℭ": { math: "\\mathfrak{C}" }, "℮": { text: "\\textestimated", commandspacer: true }, "ℯ": { math: "\\mathscr{e}" }, "ℰ": { math: "\\mathscr{E}" }, "ℱ": { math: "\\mathscr{F}" }, "Ⅎ": { math: "\\Finv" }, "ℳ": { math: "\\mathscr{M}" }, "ℴ": { math: "\\mathscr{o}" }, "ℵ": { math: "\\aleph" }, "ℶ": { math: "\\beth" }, "ℷ": { math: "\\gimel" }, "ℸ": { math: "\\daleth" }, "ℼ": { math: "\\mathbb{\\pi}" }, "ℽ": { math: "\\mathbb{\\gamma}" }, "ℾ": { math: "\\mathbb{\\Gamma}" }, "ℿ": { math: "\\mathbb{\\Pi}" }, "⅀": { math: "\\mathbb{\\Sigma}" }, "⅁": { math: "\\Game" }, "⅂": { math: "\\sansLturned" }, "⅃": { math: "\\sansLmirrored" }, "⅄": { math: "\\Yup" }, "ⅅ": { math: "\\CapitalDifferentialD" }, "ⅆ": { math: "\\DifferentialD" }, "ⅇ": { math: "\\ExponetialE" }, "ⅈ": { math: "\\ComplexI" }, "ⅉ": { math: "\\ComplexJ" }, "⅊": { math: "\\PropertyLine" }, "⅋": { math: "\\invamp" }, "⅐": { math: "\\frac{1}{7}" }, "⅑": { math: "\\frac{1}{9}" }, "⅒": { math: "\\frac{1}{10}" }, "⅓": { math: "\\frac{1}{3}" }, "⅔": { math: "\\frac{2}{3}" }, "⅕": { math: "\\frac{1}{5}" }, "⅖": { math: "\\frac{2}{5}" }, "⅗": { math: "\\frac{3}{5}" }, "⅘": { math: "\\frac{4}{5}" }, "⅙": { math: "\\frac{1}{6}" }, "⅚": { math: "\\frac{5}{6}" }, "⅛": { math: "\\frac{1}{8}" }, "⅜": { math: "\\frac{3}{8}" }, "⅝": { math: "\\frac{5}{8}" }, "⅞": { math: "\\frac{7}{8}" }, "⅟": { math: "\\frac{1}" }, "Ⅰ": { text: "I" }, "Ⅱ": { text: "II" }, "Ⅲ": { text: "III" }, "Ⅳ": { text: "IV" }, "Ⅴ": { text: "V" }, "Ⅵ": { text: "VI" }, "Ⅶ": { text: "VII" }, "Ⅷ": { text: "VIII" }, "Ⅸ": { text: "IX" }, "Ⅹ": { text: "X" }, "Ⅺ": { text: "XI" }, "Ⅻ": { text: "XII" }, "Ⅼ": { text: "L" }, "Ⅽ": { text: "C" }, "Ⅾ": { text: "D" }, "Ⅿ": { text: "M" }, "ⅰ": { text: "i" }, "ⅱ": { text: "ii" }, "ⅲ": { text: "iii" }, "ⅳ": { text: "iv" }, "ⅴ": { text: "v" }, "ⅵ": { text: "vi" }, "ⅶ": { text: "vii" }, "ⅷ": { text: "viii" }, "ⅸ": { text: "ix" }, "ⅹ": { text: "x" }, "ⅺ": { text: "xi" }, "ⅻ": { text: "xii" }, "ⅼ": { text: "l" }, "ⅽ": { text: "c" }, "ⅾ": { text: "d" }, "ⅿ": { text: "m" }, "↉": { math: "\\frac{0}{3}" }, "←": { math: "\\leftarrow" }, "↑": { math: "\\uparrow" }, "→": { math: "\\rightarrow", text: "\\textrightarrow", commandspacer: true, textpackages: [ "textcomp" ] }, "↓": { math: "\\downarrow" }, "↔": { math: "\\leftrightarrow" }, "↕": { math: "\\updownarrow" }, "↖": { math: "\\nwarrow" }, "↗": { math: "\\nearrow" }, "↘": { math: "\\searrow" }, "↙": { math: "\\swarrow" }, "↚": { math: "\\nleftarrow" }, "↛": { math: "\\nrightarrow" }, "↜": { math: "\\arrowwaveleft" }, "↝": { math: "\\arrowwaveright" }, "↞": { math: "\\twoheadleftarrow" }, "↟": { math: "\\twoheaduparrow" }, "↠": { math: "\\twoheadrightarrow" }, "↡": { math: "\\twoheaddownarrow" }, "↢": { math: "\\leftarrowtail" }, "↣": { math: "\\rightarrowtail" }, "↤": { math: "\\mapsfrom" }, "↥": { math: "\\MapsUp" }, "↦": { math: "\\mapsto" }, "↧": { math: "\\MapsDown" }, "↨": { math: "\\updownarrowbar" }, "↩": { math: "\\hookleftarrow" }, "↪": { math: "\\hookrightarrow" }, "↫": { math: "\\looparrowleft" }, "↬": { math: "\\looparrowright" }, "↭": { math: "\\leftrightsquigarrow" }, "↮": { math: "\\nleftrightarrow" }, "↯": { math: "\\lightning" }, "↰": { math: "\\Lsh" }, "↱": { math: "\\Rsh" }, "↲": { math: "\\dlsh" }, "↳": { text: "\\reflectbox{\\carriagereturn}", textpackages: [ "graphics", "unicode-math" ] }, "↴": { math: "\\linefeed" }, "↵": { math: "\\carriagereturn" }, "↶": { math: "\\curvearrowleft" }, "↷": { math: "\\curvearrowright" }, "↸": { math: "\\barovernorthwestarrow" }, "↹": { math: "\\barleftarrowrightarrowba" }, "↺": { math: "\\circlearrowleft" }, "↻": { math: "\\circlearrowright" }, "↼": { math: "\\leftharpoonup" }, "↽": { math: "\\leftharpoondown" }, "↾": { math: "\\upharpoonright" }, "↿": { math: "\\upharpoonleft" }, "⇀": { math: "\\rightharpoonup", mathpackages: [ "amsmath", "amssymb" ] }, "⇁": { math: "\\rightharpoondown" }, "⇂": { math: "\\downharpoonright" }, "⇃": { math: "\\downharpoonleft" }, "⇄": { math: "\\rightleftarrows" }, "⇅": { math: "\\dblarrowupdown" }, "⇆": { math: "\\leftrightarrows" }, "⇇": { math: "\\leftleftarrows" }, "⇈": { math: "\\upuparrows" }, "⇉": { math: "\\rightrightarrows" }, "⇊": { math: "\\downdownarrows" }, "⇋": { math: "\\leftrightharpoons" }, "⇌": { math: "\\rightleftharpoons" }, "⇍": { math: "\\nLeftarrow" }, "⇎": { math: "\\nLeftrightarrow" }, "⇏": { math: "\\nRightarrow" }, "⇐": { math: "\\Leftarrow" }, "⇑": { math: "\\Uparrow" }, "⇒": { math: "\\Rightarrow" }, "⇓": { math: "\\Downarrow" }, "⇔": { math: "\\Leftrightarrow" }, "⇕": { math: "\\Updownarrow" }, "⇖": { math: "\\Nwarrow" }, "⇗": { math: "\\Nearrow" }, "⇘": { math: "\\Searrow" }, "⇙": { math: "\\Swarrow" }, "⇚": { math: "\\Lleftarrow" }, "⇛": { math: "\\Rrightarrow" }, "⇜": { math: "\\leftsquigarrow" }, "⇝": { math: "\\rightsquigarrow" }, "⇞": { math: "\\nHuparrow" }, "⇟": { math: "\\nHdownarrow" }, "⇠": { math: "\\dashleftarrow" }, "⇡": { math: "\\updasharrow" }, "⇢": { math: "\\dashrightarrow" }, "⇣": { math: "\\downdasharrow" }, "⇤": { math: "\\LeftArrowBar" }, "⇥": { math: "\\RightArrowBar" }, "⇦": { math: "\\leftwhitearrow" }, "⇧": { math: "\\upwhitearrow" }, "⇨": { math: "\\rightwhitearrow" }, "⇩": { math: "\\downwhitearrow" }, "⇪": { math: "\\whitearrowupfrombar" }, "⇴": { math: "\\circleonrightarrow" }, "⇵": { math: "\\DownArrowUpArrow" }, "⇶": { math: "\\rightthreearrows" }, "⇷": { math: "\\nvleftarrow" }, "⇸": { math: "\\pfun" }, "⇹": { math: "\\nvleftrightarrow" }, "⇺": { math: "\\nVleftarrow" }, "⇻": { math: "\\ffun" }, "⇼": { math: "\\nVleftrightarrow" }, "⇽": { math: "\\leftarrowtriangle" }, "⇾": { math: "\\rightarrowtriangle" }, "⇿": { math: "\\leftrightarrowtriangle" }, "∀": { math: "\\forall" }, "∁": { math: "\\complement" }, "∂": { math: "\\partial" }, "∃": { math: "\\exists" }, "∄": { math: "\\nexists" }, "∅": { math: "\\varnothing" }, "∆": { math: "\\increment" }, "∇": { math: "\\nabla" }, "∈": { math: "\\in" }, "∉": { math: "\\not\\in" }, "∊": { math: "\\smallin" }, "∋": { math: "\\ni" }, "∌": { math: "\\not\\ni" }, "∍": { math: "\\smallni" }, "∎": { math: "\\QED" }, "∏": { math: "\\prod" }, "∐": { math: "\\coprod" }, "∑": { math: "\\sum" }, "−": { math: "-", text: "-" }, "∓": { math: "\\mp" }, "∔": { math: "\\dotplus" }, "∕": { text: "/" }, "∖": { math: "\\setminus" }, "∗": { math: "{_\\ast}" }, "∘": { math: "\\circ" }, "∙": { math: "\\bullet" }, "√": { math: "\\surd" }, "∛": { math: "\\sqrt[3]" }, "∜": { math: "\\sqrt[4]" }, "∝": { math: "\\propto" }, "∞": { math: "\\infty" }, "∟": { math: "\\rightangle" }, "∠": { math: "\\angle" }, "∡": { math: "\\measuredangle" }, "∢": { math: "\\sphericalangle" }, "∣": { math: "\\mid" }, "∤": { math: "\\nmid" }, "∥": { math: "\\parallel" }, "∦": { math: "\\nparallel" }, "∧": { math: "\\wedge" }, "∨": { math: "\\vee" }, "∩": { math: "\\cap" }, "∪": { math: "\\cup" }, "∫": { math: "\\int" }, "∬": { math: "{\\int\\!\\int}" }, "∭": { math: "{\\int\\!\\int\\!\\int}" }, "∮": { math: "\\oint" }, "∯": { math: "\\surfintegral" }, "∰": { math: "\\volintegral" }, "∱": { math: "\\clwintegral" }, "∲": { math: "\\lcirclerightint", mathpackages: [ "MnSymbol" ] }, "∳": { math: "\\rcirclerightint", mathpackages: [ "MnSymbol" ] }, "∴": { math: "\\therefore" }, "∵": { math: "\\because" }, "∶": { math: ":" }, "∷": { math: "\\Colon" }, "∸": { math: "\\dotdiv", mathpackages: [ "mathabx" ] }, "∹": { math: "\\eqcolon" }, "∺": { math: "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}" }, "∻": { math: "\\homothetic" }, "∼": { math: "\\sim" }, "∽": { math: "\\backsim" }, "∾": { math: "\\lazysinv" }, "∿": { math: "\\AC" }, "≀": { math: "\\wr" }, "≁": { math: "\\not\\sim" }, "≂": { math: "\\texteqsim", mathpackages: [ "xecjk" ] }, "≂̸": { math: "\\NotEqualTilde" }, "≃": { math: "\\simeq" }, "≄": { math: "\\not\\simeq" }, "≅": { math: "\\cong" }, "≆": { math: "\\approxnotequal" }, "≇": { math: "\\not\\cong" }, "≈": { math: "\\approx" }, "≉": { math: "\\not\\approx" }, "≊": { math: "\\approxeq" }, "≋": { math: "\\tildetrpl" }, "≋̸": { math: "\\not\\apid" }, "≌": { math: "\\allequal" }, "≍": { math: "\\asymp" }, "≎": { math: "\\Bumpeq" }, "≎̸": { math: "\\NotHumpDownHump" }, "≏": { math: "\\bumpeq" }, "≏̸": { math: "\\NotHumpEqual" }, "≐": { math: "\\doteq" }, "≐̸": { math: "\\not\\doteq" }, "≑": { math: "\\doteqdot" }, "≒": { math: "\\fallingdotseq" }, "≓": { math: "\\risingdotseq" }, "≔": { math: "\\coloneq", text: ":=" }, "≕": { math: "=:" }, "≖": { math: "\\eqcirc" }, "≗": { math: "\\circeq" }, "≘": { math: "\\arceq" }, "≙": { math: "\\estimates" }, "≛": { math: "\\starequal" }, "≜": { math: "\\triangleq" }, "≝": { math: "\\eqdef" }, "≞": { math: "\\measeq" }, "≠": { math: "\\neq" }, "≡": { math: "\\equiv" }, "≢": { math: "\\not\\equiv" }, "≣": { math: "\\Equiv" }, "≤": { math: "\\leq" }, "≥": { math: "\\geq" }, "≦": { math: "\\leqq" }, "≧": { math: "\\geqq" }, "≨": { math: "\\lneqq" }, "≨︀": { math: "\\lvertneqq" }, "≩": { math: "\\gneqq" }, "≩︀": { math: "\\gvertneqq" }, "≪": { math: "\\ll" }, "≪̸": { math: "\\NotLessLess" }, "≫": { math: "\\gg" }, "≫̸": { math: "\\NotGreaterGreater" }, "≬": { math: "\\between" }, "≭": { math: "{\\not\\kern-0.3em\\times}" }, "≮": { math: "\\not<" }, "≯": { math: "\\not>" }, "≰": { math: "\\not\\leq" }, "≱": { math: "\\not\\geq" }, "≲": { math: "\\lessequivlnt" }, "≳": { math: "\\greaterequivlnt" }, "≶": { math: "\\lessgtr" }, "≷": { math: "\\gtrless" }, "≸": { math: "\\notlessgreater" }, "≹": { math: "\\notgreaterless" }, "≺": { math: "\\prec" }, "≻": { math: "\\succ" }, "≼": { math: "\\preccurlyeq" }, "≽": { math: "\\succcurlyeq" }, "≾": { math: "\\precapprox" }, "≾̸": { math: "\\NotPrecedesTilde" }, "≿": { math: "\\succapprox" }, "≿̸": { math: "\\NotSucceedsTilde" }, "⊀": { math: "\\not\\prec" }, "⊁": { math: "\\not\\succ" }, "⊂": { math: "\\subset" }, "⊃": { math: "\\supset" }, "⊄": { math: "\\not\\subset" }, "⊅": { math: "\\not\\supset" }, "⊆": { math: "\\subseteq" }, "⊇": { math: "\\supseteq" }, "⊈": { math: "\\not\\subseteq" }, "⊉": { math: "\\not\\supseteq" }, "⊊": { math: "\\subsetneq" }, "⊊︀": { math: "\\varsubsetneqq" }, "⊋": { math: "\\supsetneq" }, "⊋︀": { math: "\\varsupsetneq" }, "⊌": { math: "\\cupleftarrow" }, "⊍": { math: "\\cupdot" }, "⊎": { math: "\\uplus" }, "⊏": { math: "\\sqsubset" }, "⊏̸": { math: "\\NotSquareSubset" }, "⊐": { math: "\\sqsupset" }, "⊐̸": { math: "\\NotSquareSuperset" }, "⊑": { math: "\\sqsubseteq" }, "⊒": { math: "\\sqsupseteq" }, "⊓": { math: "\\sqcap" }, "⊔": { math: "\\sqcup" }, "⊕": { math: "\\oplus" }, "⊖": { math: "\\ominus" }, "⊗": { math: "\\otimes" }, "⊘": { math: "\\oslash" }, "⊙": { math: "\\odot" }, "⊚": { math: "\\circledcirc" }, "⊛": { math: "\\circledast" }, "⊜": { math: "\\circledequal" }, "⊝": { math: "\\circleddash" }, "⊞": { math: "\\boxplus" }, "⊟": { math: "\\boxminus" }, "⊠": { math: "\\boxtimes" }, "⊡": { math: "\\boxdot" }, "⊢": { math: "\\vdash" }, "⊣": { math: "\\dashv" }, "⊤": { math: "\\top" }, "⊥": { math: "\\perp" }, "⊦": { math: "\\assert" }, "⊧": { math: "\\truestate" }, "⊨": { math: "\\forcesextra" }, "⊩": { math: "\\Vdash" }, "⊪": { math: "\\Vvdash" }, "⊫": { math: "\\VDash" }, "⊬": { math: "\\nvdash" }, "⊭": { math: "\\nvDash" }, "⊮": { math: "\\nVdash" }, "⊯": { math: "\\nVDash" }, "⊰": { math: "\\prurel" }, "⊱": { math: "\\scurel" }, "⊲": { math: "\\vartriangleleft" }, "⊳": { math: "\\vartriangleright" }, "⊴": { math: "\\trianglelefteq" }, "⊵": { math: "\\trianglerighteq" }, "⊶": { math: "\\original" }, "⊷": { math: "\\image" }, "⊸": { math: "\\multimap" }, "⊹": { math: "\\hermitconjmatrix" }, "⊺": { math: "\\intercal" }, "⊻": { math: "\\veebar" }, "⊼": { math: "\\barwedge" }, "⊽": { math: "\\barvee" }, "⊾": { math: "\\rightanglearc" }, "⊿": { math: "\\varlrtriangle" }, "⋂": { math: "\\bigcap" }, "⋃": { math: "\\bigcup" }, "⋄": { math: "\\diamond" }, "⋅": { math: "\\cdot" }, "⋆": { math: "\\star" }, "⋇": { math: "\\divideontimes" }, "⋈": { math: "\\bowtie" }, "⋉": { math: "\\ltimes" }, "⋊": { math: "\\rtimes" }, "⋋": { math: "\\leftthreetimes" }, "⋌": { math: "\\rightthreetimes" }, "⋍": { math: "\\backsimeq" }, "⋎": { math: "\\curlyvee" }, "⋏": { math: "\\curlywedge" }, "⋐": { math: "\\Subset" }, "⋑": { math: "\\Supset" }, "⋒": { math: "\\Cap" }, "⋓": { math: "\\Cup" }, "⋔": { math: "\\pitchfork" }, "⋕": { math: "\\hash" }, "⋖": { math: "\\lessdot" }, "⋗": { math: "\\gtrdot" }, "⋘": { math: "\\verymuchless" }, "⋙": { math: "\\verymuchgreater" }, "⋚": { math: "\\lesseqgtr" }, "⋛": { math: "\\gtreqless" }, "⋜": { math: "\\eqless" }, "⋝": { math: "\\eqgtr" }, "⋞": { math: "\\curlyeqprec" }, "⋟": { math: "\\curlyeqsucc" }, "⋠": { math: "\\npreceq" }, "⋡": { math: "\\nsucceq" }, "⋢": { math: "\\not\\sqsubseteq" }, "⋣": { math: "\\not\\sqsupseteq" }, "⋤": { math: "\\sqsubsetneq" }, "⋥": { math: "\\Elzsqspne" }, "⋦": { math: "\\lnsim" }, "⋧": { math: "\\gnsim" }, "⋨": { math: "\\precedesnotsimilar" }, "⋩": { math: "\\succnsim" }, "⋪": { math: "\\ntriangleleft" }, "⋫": { math: "\\ntriangleright" }, "⋬": { math: "\\ntrianglelefteq" }, "⋭": { math: "\\ntrianglerighteq" }, "⋮": { math: "\\vdots" }, "⋯": { math: "\\cdots" }, "⋰": { math: "\\upslopeellipsis" }, "⋱": { math: "\\downslopeellipsis" }, "⋲": { math: "\\disin" }, "⋳": { math: "\\varisins" }, "⋴": { math: "\\isins" }, "⋵": { math: "\\isindot" }, "⋶": { math: "\\barin" }, "⋷": { math: "\\isinobar" }, "⋸": { math: "\\isinvb" }, "⋹": { math: "\\isinE" }, "⋺": { math: "\\nisd" }, "⋻": { math: "\\varnis" }, "⋼": { math: "\\nis" }, "⋽": { math: "\\varniobar" }, "⋾": { math: "\\niobar" }, "⋿": { math: "\\bagmember" }, "⌀": { math: "\\diameter" }, "⌂": { math: "\\house" }, "⌅": { math: "\\varbarwedge", text: "\\barwedge", commandspacer: true }, "⌆": { math: "\\perspcorrespond" }, "⌈": { math: "\\lceil" }, "⌉": { math: "\\rceil" }, "⌊": { math: "\\lfloor" }, "⌋": { math: "\\rfloor" }, "⌐": { math: "\\invneg" }, "⌑": { math: "\\wasylozenge" }, "⌒": { math: "\\profline" }, "⌓": { math: "\\profsurf" }, "⌕": { math: "\\recorder" }, "⌖": { math: "{\\mathchar\"2208}" }, "⌗": { math: "\\viewdata" }, "⌙": { math: "\\turnednot" }, "⌜": { math: "\\ulcorner" }, "⌝": { math: "\\urcorner" }, "⌞": { math: "\\llcorner" }, "⌟": { math: "\\lrcorner" }, "⌠": { math: "\\inttop" }, "⌡": { math: "\\intbottom" }, "⌢": { math: "\\frown" }, "⌣": { math: "\\smile" }, "〈": { math: "\\langle" }, "〉": { math: "\\rangle" }, "⌬": { math: "\\varhexagonlrbonds" }, "⌲": { math: "\\conictaper" }, "⌶": { math: "\\topbot" }, "⌹": { math: "\\APLinv" }, "⌿": { math: "\\notslash" }, "⍀": { math: "\\notbackslash" }, "⍇": { math: "\\APLleftarrowbox" }, "⍈": { math: "\\APLrightarrowbox" }, "⍉": { math: "\\invdiameter" }, "⍐": { math: "\\APLuparrowbox" }, "⍓": { math: "\\APLboxupcaret" }, "⍗": { math: "\\APLdownarrowbox" }, "⍝": { math: "\\APLcomment" }, "⍞": { math: "\\APLinput" }, "⍟": { math: "\\APLlog" }, "⍰": { math: "\\APLboxquestion" }, "⍼": { math: "\\rangledownzigzagarrow" }, "⎔": { math: "\\hexagon" }, "⎛": { math: "\\lparenuend" }, "⎜": { math: "\\lparenextender" }, "⎝": { math: "\\lparenlend" }, "⎞": { math: "\\rparenuend" }, "⎟": { math: "\\rparenextender" }, "⎠": { math: "\\rparenlend" }, "⎡": { math: "\\lbrackuend" }, "⎢": { math: "\\lbrackextender" }, "⎣": { math: "\\Elzdlcorn" }, "⎤": { math: "\\rbrackuend" }, "⎥": { math: "\\rbrackextender" }, "⎦": { math: "\\rbracklend" }, "⎧": { math: "\\lbraceuend" }, "⎨": { math: "\\lbracemid" }, "⎩": { math: "\\lbracelend" }, "⎪": { math: "\\vbraceextender" }, "⎫": { math: "\\rbraceuend" }, "⎬": { math: "\\rbracemid" }, "⎭": { math: "\\rbracelend" }, "⎮": { math: "\\intextender" }, "⎯": { math: "\\harrowextender" }, "⎰": { math: "\\lmoustache" }, "⎱": { math: "\\rmoustache" }, "⎲": { math: "\\sumtop" }, "⎳": { math: "\\sumbottom" }, "⎴": { math: "\\overbracket" }, "⎵": { math: "\\underbracket" }, "⎶": { math: "\\bbrktbrk" }, "⎷": { math: "\\sqrtbottom" }, "⎸": { math: "\\lvboxline" }, "⎹": { math: "\\rvboxline" }, "⏎": { math: "\\varcarriagereturn" }, "⏜": { math: "\\overparen" }, "⏝": { math: "\\underparen" }, "⏞": { math: "\\overbrace" }, "⏟": { math: "\\underbrace" }, "⏠": { math: "\\obrbrak" }, "⏡": { math: "\\ubrbrak" }, "⏢": { math: "\\trapezium" }, "⏣": { math: "\\benzenr" }, "⏤": { math: "\\strns" }, "⏥": { math: "\\fltns" }, "⏦": { math: "\\accurrent" }, "⏧": { math: "\\elinters" }, "␀": { text: "NUL" }, "␁": { text: "SOH" }, "␂": { text: "STX" }, "␃": { text: "ETX" }, "␄": { text: "EOT" }, "␅": { text: "ENQ" }, "␆": { text: "ACK" }, "␇": { text: "BEL" }, "␈": { text: "BS" }, "␉": { text: "HT" }, "␊": { text: "LF" }, "␋": { text: "VT" }, "␌": { text: "FF" }, "␍": { text: "CR" }, "␎": { text: "SO" }, "␏": { text: "SI" }, "␐": { text: "DLE" }, "␑": { text: "DC1" }, "␒": { text: "DC2" }, "␓": { text: "DC3" }, "␔": { text: "DC4" }, "␕": { text: "NAK" }, "␖": { text: "SYN" }, "␗": { text: "ETB" }, "␘": { text: "CAN" }, "␙": { text: "EM" }, "␚": { text: "SUB" }, "␛": { text: "ESC" }, "␜": { text: "FS" }, "␝": { text: "GS" }, "␞": { text: "RS" }, "␟": { text: "US" }, "␠": { text: "SP" }, "␡": { text: "DEL" }, "␣": { text: "\\textvisiblespace", commandspacer: true }, "␤": { text: "NL" }, "␥": { text: "///" }, "␦": { text: "?" }, "①": { text: "\\ding{172}" }, "②": { text: "\\ding{173}" }, "③": { text: "\\ding{174}" }, "④": { text: "\\ding{175}" }, "⑤": { text: "\\ding{176}" }, "⑥": { text: "\\ding{177}" }, "⑦": { text: "\\ding{178}" }, "⑧": { text: "\\ding{179}" }, "⑨": { text: "\\ding{180}" }, "⑩": { text: "\\ding{181}" }, "⑪": { text: "(11)" }, "⑫": { text: "(12)" }, "⑬": { text: "(13)" }, "⑭": { text: "(14)" }, "⑮": { text: "(15)" }, "⑯": { text: "(16)" }, "⑰": { text: "(17)" }, "⑱": { text: "(18)" }, "⑲": { text: "(19)" }, "⑳": { text: "(20)" }, "⑴": { text: "(1)" }, "⑵": { text: "(2)" }, "⑶": { text: "(3)" }, "⑷": { text: "(4)" }, "⑸": { text: "(5)" }, "⑹": { text: "(6)" }, "⑺": { text: "(7)" }, "⑻": { text: "(8)" }, "⑼": { text: "(9)" }, "⑽": { text: "(10)" }, "⑾": { text: "(11)" }, "⑿": { text: "(12)" }, "⒀": { text: "(13)" }, "⒁": { text: "(14)" }, "⒂": { text: "(15)" }, "⒃": { text: "(16)" }, "⒄": { text: "(17)" }, "⒅": { text: "(18)" }, "⒆": { text: "(19)" }, "⒇": { text: "(20)" }, "⒈": { text: "1." }, "⒉": { text: "2." }, "⒊": { text: "3." }, "⒋": { text: "4." }, "⒌": { text: "5." }, "⒍": { text: "6." }, "⒎": { text: "7." }, "⒏": { text: "8." }, "⒐": { text: "9." }, "⒑": { text: "10." }, "⒒": { text: "11." }, "⒓": { text: "12." }, "⒔": { text: "13." }, "⒕": { text: "14." }, "⒖": { text: "15." }, "⒗": { text: "16." }, "⒘": { text: "17." }, "⒙": { text: "18." }, "⒚": { text: "19." }, "⒛": { text: "20." }, "⒜": { text: "(a)" }, "⒝": { text: "(b)" }, "⒞": { text: "(c)" }, "⒟": { text: "(d)" }, "⒠": { text: "(e)" }, "⒡": { text: "(f)" }, "⒢": { text: "(g)" }, "⒣": { text: "(h)" }, "⒤": { text: "(i)" }, "⒥": { text: "(j)" }, "⒦": { text: "(k)" }, "⒧": { text: "(l)" }, "⒨": { text: "(m)" }, "⒩": { text: "(n)" }, "⒪": { text: "(o)" }, "⒫": { text: "(p)" }, "⒬": { text: "(q)" }, "⒭": { text: "(r)" }, "⒮": { text: "(s)" }, "⒯": { text: "(t)" }, "⒰": { text: "(u)" }, "⒱": { text: "(v)" }, "⒲": { text: "(w)" }, "⒳": { text: "(x)" }, "⒴": { text: "(y)" }, "⒵": { text: "(z)" }, "Ⓐ": { text: "(A)" }, "Ⓑ": { text: "(B)" }, "Ⓒ": { text: "(C)" }, "Ⓓ": { text: "(D)" }, "Ⓔ": { text: "(E)" }, "Ⓕ": { text: "(F)" }, "Ⓖ": { text: "(G)" }, "Ⓗ": { text: "(H)" }, "Ⓘ": { text: "(I)" }, "Ⓙ": { text: "(J)" }, "Ⓚ": { text: "(K)" }, "Ⓛ": { text: "(L)" }, "Ⓜ": { text: "(M)" }, "Ⓝ": { text: "(N)" }, "Ⓞ": { text: "(O)" }, "Ⓟ": { text: "(P)" }, "Ⓠ": { text: "(Q)" }, "Ⓡ": { text: "(R)" }, "Ⓢ": { math: "\\circledS" }, "Ⓣ": { text: "(T)" }, "Ⓤ": { text: "(U)" }, "Ⓥ": { text: "(V)" }, "Ⓦ": { text: "(W)" }, "Ⓧ": { text: "(X)" }, "Ⓨ": { text: "(Y)" }, "Ⓩ": { text: "(Z)" }, "ⓐ": { text: "(a)" }, "ⓑ": { text: "(b)" }, "ⓒ": { text: "(c)" }, "ⓓ": { text: "(d)" }, "ⓔ": { text: "(e)" }, "ⓕ": { text: "(f)" }, "ⓖ": { text: "(g)" }, "ⓗ": { text: "(h)" }, "ⓘ": { text: "(i)" }, "ⓙ": { text: "(j)" }, "ⓚ": { text: "(k)" }, "ⓛ": { text: "(l)" }, "ⓜ": { text: "(m)" }, "ⓝ": { text: "(n)" }, "ⓞ": { text: "(o)" }, "ⓟ": { text: "(p)" }, "ⓠ": { text: "(q)" }, "ⓡ": { text: "(r)" }, "ⓢ": { text: "(s)" }, "ⓣ": { text: "(t)" }, "ⓤ": { text: "(u)" }, "ⓥ": { text: "(v)" }, "ⓦ": { text: "(w)" }, "ⓧ": { text: "(x)" }, "ⓨ": { text: "(y)" }, "ⓩ": { text: "(z)" }, "⓪": { text: "(0)" }, "─": { text: "-" }, "━": { text: "=" }, "│": { text: "|" }, "┃": { text: "|" }, "┄": { text: "-" }, "┅": { text: "=" }, "┆": { math: "\\Elzdshfnc" }, "┇": { text: "|" }, "┈": { text: "-" }, "┉": { text: "=" }, "┊": { text: "|" }, "┋": { text: "|" }, "┌": { text: "+" }, "┍": { text: "+" }, "┎": { text: "+" }, "┏": { text: "+" }, "┐": { text: "+" }, "┑": { text: "+" }, "┒": { text: "+" }, "┓": { text: "+" }, "└": { text: "+" }, "┕": { text: "+" }, "┖": { text: "+" }, "┗": { text: "+" }, "┘": { text: "+" }, "┙": { math: "\\Elzsqfnw" }, "┚": { text: "+" }, "┛": { text: "+" }, "├": { text: "+" }, "┝": { text: "+" }, "┞": { text: "+" }, "┟": { text: "+" }, "┠": { text: "+" }, "┡": { text: "+" }, "┢": { text: "+" }, "┣": { text: "+" }, "┤": { text: "+" }, "┥": { text: "+" }, "┦": { text: "+" }, "┧": { text: "+" }, "┨": { text: "+" }, "┩": { text: "+" }, "┪": { text: "+" }, "┫": { text: "+" }, "┬": { text: "+" }, "┭": { text: "+" }, "┮": { text: "+" }, "┯": { text: "+" }, "┰": { text: "+" }, "┱": { text: "+" }, "┲": { text: "+" }, "┳": { text: "+" }, "┴": { text: "+" }, "┵": { text: "+" }, "┶": { text: "+" }, "┷": { text: "+" }, "┸": { text: "+" }, "┹": { text: "+" }, "┺": { text: "+" }, "┻": { text: "+" }, "┼": { text: "+" }, "┽": { text: "+" }, "┾": { text: "+" }, "┿": { text: "+" }, "╀": { text: "+" }, "╁": { text: "+" }, "╂": { text: "+" }, "╃": { text: "+" }, "╄": { text: "+" }, "╅": { text: "+" }, "╆": { text: "+" }, "╇": { text: "+" }, "╈": { text: "+" }, "╉": { text: "+" }, "╊": { text: "+" }, "╋": { text: "+" }, "╌": { text: "-" }, "╍": { text: "=" }, "╎": { text: "|" }, "╏": { text: "|" }, "═": { text: "=" }, "║": { text: "|" }, "╒": { text: "+" }, "╓": { text: "+" }, "╔": { text: "+" }, "╕": { text: "+" }, "╖": { text: "+" }, "╗": { text: "+" }, "╘": { text: "+" }, "╙": { text: "+" }, "╚": { text: "+" }, "╛": { text: "+" }, "╜": { text: "+" }, "╝": { text: "+" }, "╞": { text: "+" }, "╟": { text: "+" }, "╠": { text: "+" }, "╡": { text: "+" }, "╢": { text: "+" }, "╣": { text: "+" }, "╤": { text: "+" }, "╥": { text: "+" }, "╦": { text: "+" }, "╧": { text: "+" }, "╨": { text: "+" }, "╩": { text: "+" }, "╪": { text: "+" }, "╫": { text: "+" }, "╬": { text: "+" }, "╭": { text: "+" }, "╮": { text: "+" }, "╯": { text: "+" }, "╰": { text: "+" }, "╱": { math: "\\diagup" }, "╲": { text: "\\" }, "╳": { text: "X" }, "╼": { text: "-" }, "╽": { text: "|" }, "╾": { text: "-" }, "╿": { text: "|" }, "▀": { math: "\\blockuphalf" }, "▄": { math: "\\blocklowhalf" }, "█": { math: "\\blockfull" }, "▌": { math: "\\blocklefthalf" }, "▐": { math: "\\blockrighthalf" }, "░": { math: "\\blockqtrshaded" }, "▒": { math: "\\blockhalfshaded" }, "▓": { math: "\\blockthreeqtrshaded" }, "■": { math: "\\mdlgblksquare", text: "\\ding{110}" }, "□": { math: "\\square" }, "▢": { math: "\\squoval" }, "▣": { math: "\\blackinwhitesquare" }, "▤": { math: "\\squarehfill" }, "▥": { math: "\\squarevfill" }, "▦": { math: "\\squarehvfill" }, "▧": { math: "\\squarenwsefill" }, "▨": { math: "\\squareneswfill" }, "▩": { math: "\\squarecrossfill" }, "▪": { math: "\\blacksquare" }, "▫": { math: "\\smwhtsquare" }, "▬": { math: "\\hrectangleblack" }, "▭": { math: "\\fbox{~~}" }, "▮": { math: "\\vrectangleblack" }, "▯": { math: "\\Elzvrecto" }, "▰": { math: "\\parallelogramblack" }, "▲": { math: "\\bigblacktriangleup", text: "\\ding{115}" }, "△": { math: "\\bigtriangleup" }, "▴": { math: "\\blacktriangle" }, "▵": { math: "\\vartriangle" }, "▶": { math: "\\RHD" }, "▷": { math: "\\rhd" }, "▸": { math: "\\blacktriangleright" }, "▹": { math: "\\triangleright" }, "►": { math: "\\blackpointerright" }, "▻": { math: "\\whitepointerright" }, "▼": { math: "\\bigblacktriangledown", text: "\\ding{116}" }, "▽": { math: "\\bigtriangledown" }, "▾": { math: "\\blacktriangledown" }, "▿": { math: "\\triangledown" }, "◀": { math: "\\LHD" }, "◁": { math: "\\lhd" }, "◂": { math: "\\blacktriangleleft" }, "◃": { math: "\\triangleleft" }, "◄": { math: "\\blackpointerleft" }, "◅": { math: "\\whitepointerleft" }, "◆": { math: "\\Diamondblack", text: "\\ding{117}" }, "◇": { math: "\\Diamond" }, "◈": { math: "\\blackinwhitediamond" }, "◉": { math: "\\fisheye" }, "◊": { math: "\\lozenge" }, "○": { math: "\\bigcirc" }, "◌": { math: "\\dottedcircle" }, "◍": { math: "\\circlevertfill" }, "◎": { math: "\\bullseye" }, "●": { math: "\\CIRCLE", text: "\\ding{108}" }, "◐": { math: "\\Elzcirfl" }, "◑": { math: "\\Elzcirfr" }, "◒": { math: "\\Elzcirfb" }, "◓": { math: "\\circletophalfblack" }, "◔": { math: "\\circleurquadblack" }, "◕": { math: "\\blackcircleulquadwhite" }, "◖": { math: "\\LEFTCIRCLE" }, "◗": { math: "\\RIGHTCIRCLE", text: "\\ding{119}" }, "◘": { math: "\\Elzrvbull" }, "◙": { math: "\\inversewhitecircle" }, "◚": { math: "\\invwhiteupperhalfcircle" }, "◛": { math: "\\invwhitelowerhalfcircle" }, "◜": { math: "\\ularc" }, "◝": { math: "\\urarc" }, "◞": { math: "\\lrarc" }, "◟": { math: "\\llarc" }, "◠": { math: "\\topsemicircle" }, "◡": { math: "\\botsemicircle" }, "◢": { math: "\\lrblacktriangle" }, "◣": { math: "\\llblacktriangle" }, "◤": { math: "\\ulblacktriangle" }, "◥": { math: "\\urblacktriangle" }, "◦": { math: "\\smwhtcircle" }, "◧": { math: "\\Elzsqfl" }, "◨": { math: "\\Elzsqfr" }, "◩": { math: "\\squareulblack" }, "◪": { math: "\\Elzsqfse" }, "◫": { math: "\\boxbar" }, "◬": { math: "\\trianglecdot" }, "◭": { math: "\\triangleleftblack" }, "◮": { math: "\\trianglerightblack" }, "◯": { math: "\\bigcirc" }, "◰": { math: "\\squareulquad" }, "◱": { math: "\\squarellquad" }, "◲": { math: "\\squarelrquad" }, "◳": { math: "\\squareurquad" }, "◴": { math: "\\circleulquad" }, "◵": { math: "\\circlellquad" }, "◶": { math: "\\circlelrquad" }, "◷": { math: "\\circleurquad" }, "◸": { math: "\\ultriangle" }, "◹": { math: "\\urtriangle" }, "◺": { math: "\\lltriangle" }, "◻": { math: "\\square" }, "◼": { math: "\\blacksquare" }, "◽": { math: "\\mdsmwhtsquare" }, "◾": { math: "\\mdsmblksquare" }, "◿": { math: "\\lrtriangle" }, "★": { math: "\\bigstar", text: "\\ding{72}" }, "☆": { math: "\\bigwhitestar", text: "\\ding{73}" }, "☉": { math: "\\Sun" }, "☎": { text: "\\ding{37}" }, "☐": { math: "\\Square" }, "☑": { math: "\\CheckedBox" }, "☒": { math: "\\XBox" }, "☓": { text: "X" }, "☕": { math: "\\steaming" }, "☛": { text: "\\ding{42}" }, "☞": { math: "\\pointright", text: "\\ding{43}" }, "☠": { math: "\\skull" }, "☡": { math: "\\danger" }, "☢": { math: "\\radiation" }, "☣": { math: "\\biohazard" }, "☯": { math: "\\yinyang" }, "☹": { math: "\\frownie" }, "☺": { math: "\\smiley" }, "☻": { math: "\\blacksmiley" }, "☼": { math: "\\sun" }, "☽": { text: "\\rightmoon", commandspacer: true, textpackages: [ "wasysym" ] }, "☾": { text: "\\leftmoon", commandspacer: true, textpackages: [ "wasysym" ] }, "☿": { math: "\\mercury", text: "\\mercury", commandspacer: true }, "♀": { math: "\\female", text: "\\venus", commandspacer: true }, "♁": { math: "\\earth" }, "♂": { math: "\\male", text: "\\male", commandspacer: true }, "♃": { math: "\\jupiter", text: "\\jupiter", commandspacer: true }, "♄": { math: "\\saturn", text: "\\saturn", commandspacer: true }, "♅": { math: "\\uranus", text: "\\uranus", commandspacer: true }, "♆": { math: "\\neptune", text: "\\neptune", commandspacer: true }, "♇": { math: "\\pluto", text: "\\pluto", commandspacer: true }, "♈": { math: "\\aries", text: "\\aries", commandspacer: true }, "♉": { math: "\\taurus", text: "\\taurus", commandspacer: true }, "♊": { math: "\\gemini", text: "\\gemini", commandspacer: true }, "♋": { math: "\\cancer", text: "\\cancer", commandspacer: true }, "♌": { math: "\\leo", text: "\\leo", commandspacer: true }, "♍": { math: "\\virgo", text: "\\virgo", commandspacer: true }, "♎": { math: "\\libra", text: "\\libra", commandspacer: true }, "♏": { math: "\\scorpio", text: "\\scorpio", commandspacer: true }, "♐": { math: "\\sagittarius", text: "\\sagittarius", commandspacer: true }, "♑": { math: "\\capricornus", text: "\\capricornus", commandspacer: true }, "♒": { math: "\\aquarius", text: "\\aquarius", commandspacer: true }, "♓": { math: "\\pisces", text: "\\pisces", commandspacer: true }, "♠": { math: "\\spadesuit", text: "\\ding{171}" }, "♡": { math: "\\heartsuit" }, "♢": { math: "\\diamond" }, "♣": { math: "\\clubsuit", text: "\\ding{168}" }, "♤": { math: "\\varspadesuit" }, "♥": { math: "\\varheartsuit", text: "\\ding{170}" }, "♦": { math: "\\vardiamondsuit", text: "\\ding{169}" }, "♧": { math: "\\varclubsuit" }, "♩": { math: "\\quarternote", text: "\\quarternote", commandspacer: true }, "♪": { math: "\\eighthnote", text: "\\eighthnote", commandspacer: true }, "♫": { math: "\\twonotes" }, "♬": { math: "\\sixteenthnote" }, "♭": { math: "\\flat" }, "♮": { math: "\\natural" }, "♯": { math: "\\sharp" }, "♻": { math: "\\recycle" }, "♾": { math: "\\acidfree" }, "⚀": { math: "\\dicei" }, "⚁": { math: "\\diceii" }, "⚂": { math: "\\diceiii" }, "⚃": { math: "\\diceiv" }, "⚄": { math: "\\dicev" }, "⚅": { math: "\\dicevi" }, "⚆": { math: "\\circledrightdot" }, "⚇": { math: "\\circledtwodots" }, "⚈": { math: "\\blackcircledrightdot" }, "⚉": { math: "\\blackcircledtwodots" }, "⚓": { math: "\\anchor" }, "⚔": { math: "\\swords" }, "⚠": { math: "\\warning" }, "⚥": { math: "\\Hermaphrodite" }, "⚪": { math: "\\medcirc" }, "⚫": { math: "\\medbullet" }, "⚬": { math: "\\mdsmwhtcircle" }, "⚲": { math: "\\neuter" }, "✁": { text: "\\ding{33}" }, "✂": { text: "\\ding{34}" }, "✃": { text: "\\ding{35}" }, "✄": { text: "\\ding{36}" }, "✆": { text: "\\ding{38}" }, "✇": { text: "\\ding{39}" }, "✈": { text: "\\ding{40}" }, "✉": { text: "\\ding{41}" }, "✌": { text: "\\ding{44}" }, "✍": { text: "\\ding{45}" }, "✎": { math: "\\pencil", text: "\\ding{46}" }, "✏": { text: "\\ding{47}" }, "✐": { text: "\\ding{48}" }, "✑": { text: "\\ding{49}" }, "✒": { text: "\\ding{50}" }, "✓": { math: "\\checkmark", text: "\\ding{51}" }, "✔": { text: "\\ding{52}" }, "✕": { text: "\\ding{53}" }, "✖": { text: "\\ding{54}" }, "✗": { math: "\\ballotx", text: "\\ding{55}" }, "✘": { text: "\\ding{56}" }, "✙": { text: "\\ding{57}" }, "✚": { text: "\\ding{58}" }, "✛": { text: "\\ding{59}" }, "✜": { text: "\\ding{60}" }, "✝": { text: "\\ding{61}" }, "✞": { text: "\\ding{62}" }, "✟": { text: "\\ding{63}" }, "✠": { math: "\\maltese", text: "\\ding{64}" }, "✡": { text: "\\ding{65}" }, "✢": { text: "\\ding{66}" }, "✣": { text: "\\ding{67}" }, "✤": { text: "\\ding{68}" }, "✥": { text: "\\ding{69}" }, "✦": { text: "\\ding{70}" }, "✧": { text: "\\ding{71}" }, "✩": { text: "\\ding{73}" }, "✪": { math: "\\circledstar", text: "\\ding{74}" }, "✫": { text: "\\ding{75}" }, "✬": { text: "\\ding{76}" }, "✭": { text: "\\ding{77}" }, "✮": { text: "\\ding{78}" }, "✯": { text: "\\ding{79}" }, "✰": { text: "\\ding{80}" }, "✱": { text: "\\ding{81}" }, "✲": { text: "\\ding{82}" }, "✳": { text: "\\ding{83}" }, "✴": { text: "\\ding{84}" }, "✵": { text: "\\ding{85}" }, "✶": { math: "\\varstar", text: "\\ding{86}" }, "✷": { text: "\\ding{87}" }, "✸": { text: "\\ding{88}" }, "✹": { text: "\\ding{89}" }, "✺": { text: "\\ding{90}" }, "✻": { text: "\\ding{91}" }, "✼": { text: "\\ding{92}" }, "✽": { math: "\\dingasterisk", text: "\\ding{93}" }, "✾": { text: "\\ding{94}" }, "✿": { text: "\\ding{95}" }, "❀": { text: "\\ding{96}" }, "❁": { text: "\\ding{97}" }, "❂": { text: "\\ding{98}" }, "❃": { text: "\\ding{99}" }, "❄": { text: "\\ding{100}" }, "❅": { text: "\\ding{101}" }, "❆": { text: "\\ding{102}" }, "❇": { text: "\\ding{103}" }, "❈": { text: "\\ding{104}" }, "❉": { text: "\\ding{105}" }, "❊": { text: "\\ding{106}" }, "❋": { text: "\\ding{107}" }, "❍": { text: "\\ding{109}" }, "❏": { text: "\\ding{111}" }, "❐": { text: "\\ding{112}" }, "❑": { text: "\\ding{113}" }, "❒": { text: "\\ding{114}" }, "❖": { text: "\\ding{118}" }, "❘": { text: "\\ding{120}" }, "❙": { text: "\\ding{121}" }, "❚": { text: "\\ding{122}" }, "❛": { text: "\\ding{123}" }, "❜": { text: "\\ding{124}" }, "❝": { text: "\\ding{125}" }, "❞": { text: "\\ding{126}" }, "❡": { text: "\\ding{161}" }, "❢": { text: "\\ding{162}" }, "❣": { text: "\\ding{163}" }, "❤": { text: "\\ding{164}" }, "❥": { text: "\\ding{165}" }, "❦": { text: "\\ding{166}" }, "❧": { text: "\\ding{167}" }, "❲": { math: "\\lbrbrak" }, "❳": { math: "\\rbrbrak" }, "❶": { text: "\\ding{182}" }, "❷": { text: "\\ding{183}" }, "❸": { text: "\\ding{184}" }, "❹": { text: "\\ding{185}" }, "❺": { text: "\\ding{186}" }, "❻": { text: "\\ding{187}" }, "❼": { text: "\\ding{188}" }, "❽": { text: "\\ding{189}" }, "❾": { text: "\\ding{190}" }, "❿": { text: "\\ding{191}" }, "➀": { text: "\\ding{192}" }, "➁": { text: "\\ding{193}" }, "➂": { text: "\\ding{194}" }, "➃": { text: "\\ding{195}" }, "➄": { text: "\\ding{196}" }, "➅": { text: "\\ding{197}" }, "➆": { text: "\\ding{198}" }, "➇": { text: "\\ding{199}" }, "➈": { text: "\\ding{200}" }, "➉": { text: "\\ding{201}" }, "➊": { text: "\\ding{202}" }, "➋": { text: "\\ding{203}" }, "➌": { text: "\\ding{204}" }, "➍": { text: "\\ding{205}" }, "➎": { text: "\\ding{206}" }, "➏": { text: "\\ding{207}" }, "➐": { text: "\\ding{208}" }, "➑": { text: "\\ding{209}" }, "➒": { text: "\\ding{210}" }, "➓": { text: "\\ding{211}" }, "➔": { text: "\\ding{212}" }, "➘": { text: "\\ding{216}" }, "➙": { text: "\\ding{217}" }, "➚": { text: "\\ding{218}" }, "➛": { math: "\\draftingarrow", text: "\\ding{219}" }, "➜": { text: "\\ding{220}" }, "➝": { text: "\\ding{221}" }, "➞": { text: "\\ding{222}" }, "➟": { text: "\\ding{223}" }, "➠": { text: "\\ding{224}" }, "➡": { text: "\\ding{225}" }, "➢": { math: "\\arrowbullet", text: "\\ding{226}" }, "➣": { text: "\\ding{227}" }, "➤": { text: "\\ding{228}" }, "➥": { text: "\\ding{229}" }, "➦": { text: "\\ding{230}" }, "➧": { text: "\\ding{231}" }, "➨": { text: "\\ding{232}" }, "➩": { text: "\\ding{233}" }, "➪": { text: "\\ding{234}" }, "➫": { text: "\\ding{235}" }, "➬": { text: "\\ding{236}" }, "➭": { text: "\\ding{237}" }, "➮": { text: "\\ding{238}" }, "➯": { text: "\\ding{239}" }, "➱": { text: "\\ding{241}" }, "➲": { text: "\\ding{242}" }, "➳": { text: "\\ding{243}" }, "➴": { text: "\\ding{244}" }, "➵": { text: "\\ding{245}" }, "➶": { text: "\\ding{246}" }, "➷": { text: "\\ding{247}" }, "➸": { text: "\\ding{248}" }, "➹": { text: "\\ding{249}" }, "➺": { text: "\\ding{250}" }, "➻": { text: "\\ding{251}" }, "➼": { text: "\\ding{252}" }, "➽": { text: "\\ding{253}" }, "➾": { text: "\\ding{254}" }, "⟀": { math: "\\threedangle" }, "⟁": { math: "\\whiteinwhitetriangle" }, "⟂": { math: "\\perp" }, "⟃": { math: "\\subsetcirc" }, "⟄": { math: "\\supsetcirc" }, "⟅": { math: "\\Lbag" }, "⟆": { math: "\\Rbag" }, "⟇": { math: "\\veedot" }, "⟈": { math: "\\bsolhsub" }, "⟉": { math: "\\suphsol" }, "⟌": { math: "\\longdivision" }, "⟐": { math: "\\Diamonddot" }, "⟑": { math: "\\wedgedot" }, "⟒": { math: "\\upin" }, "⟓": { math: "\\pullback" }, "⟔": { math: "\\pushout" }, "⟕": { math: "\\leftouterjoin" }, "⟖": { math: "\\rightouterjoin" }, "⟗": { math: "\\fullouterjoin" }, "⟘": { math: "\\bigbot" }, "⟙": { math: "\\bigtop" }, "⟚": { math: "\\DashVDash" }, "⟛": { math: "\\dashVdash" }, "⟜": { math: "\\multimapinv" }, "⟝": { math: "\\vlongdash" }, "⟞": { math: "\\longdashv" }, "⟟": { math: "\\cirbot" }, "⟠": { math: "\\lozengeminus" }, "⟡": { math: "\\concavediamond" }, "⟢": { math: "\\concavediamondtickleft" }, "⟣": { math: "\\concavediamondtickright" }, "⟤": { math: "\\whitesquaretickleft" }, "⟥": { math: "\\whitesquaretickright" }, "⟦": { math: "\\llbracket" }, "⟧": { math: "\\rrbracket" }, "⟨": { math: "\\langle" }, "⟩": { math: "\\rangle" }, "⟪": { math: "\\lang" }, "⟫": { math: "\\rang" }, "⟬": { math: "\\Lbrbrak" }, "⟭": { math: "\\Rbrbrak" }, "⟮": { math: "\\lgroup" }, "⟯": { math: "\\rgroup" }, "⟰": { math: "\\UUparrow" }, "⟱": { math: "\\DDownarrow" }, "⟲": { math: "\\acwgapcirclearrow" }, "⟳": { math: "\\cwgapcirclearrow" }, "⟴": { math: "\\rightarrowonoplus" }, "⟵": { math: "\\longleftarrow" }, "⟶": { math: "\\longrightarrow" }, "⟷": { math: "\\longleftrightarrow" }, "⟸": { math: "\\Longleftarrow" }, "⟹": { math: "\\Longrightarrow" }, "⟺": { math: "\\Longleftrightarrow" }, "⟻": { math: "\\longmapsfrom" }, "⟼": { math: "\\longmapsto" }, "⟽": { math: "\\Longmapsfrom" }, "⟾": { math: "\\Longmapsto" }, "⟿": { math: "\\sim\\joinrel\\leadsto" }, "⤀": { math: "\\psur" }, "⤁": { math: "\\nVtwoheadrightarrow" }, "⤂": { math: "\\nvLeftarrow" }, "⤃": { math: "\\nvRightarrow" }, "⤄": { math: "\\nvLeftrightarrow" }, "⤆": { math: "\\Mapsfrom" }, "⤇": { math: "\\Mapsto" }, "⤈": { math: "\\downarrowbarred" }, "⤉": { math: "\\uparrowbarred" }, "⤊": { math: "\\Uuparrow" }, "⤋": { math: "\\Ddownarrow" }, "⤌": { math: "\\leftbkarrow" }, "⤍": { math: "\\rightbkarrow" }, "⤎": { math: "\\leftdbkarrow" }, "⤏": { math: "\\dbkarow" }, "⤐": { math: "\\drbkarow" }, "⤑": { math: "\\rightdotarrow" }, "⤒": { math: "\\UpArrowBar" }, "⤓": { math: "\\DownArrowBar" }, "⤔": { math: "\\pinj" }, "⤕": { math: "\\finj" }, "⤖": { math: "\\bij" }, "⤗": { math: "\\nvtwoheadrightarrowtail" }, "⤘": { math: "\\nVtwoheadrightarrowtail" }, "⤙": { math: "\\lefttail" }, "⤚": { math: "\\righttail" }, "⤛": { math: "\\leftdbltail" }, "⤜": { math: "\\rightdbltail" }, "⤝": { math: "\\diamondleftarrow" }, "⤞": { math: "\\rightarrowdiamond" }, "⤟": { math: "\\diamondleftarrowbar" }, "⤠": { math: "\\barrightarrowdiamond" }, "⤡": { math: "\\nwsearrow" }, "⤢": { math: "\\neswarrow" }, "⤫": { math: "\\rdiagovfdiag" }, "⤬": { math: "\\fdiagovrdiag" }, "⤭": { math: "\\seovnearrow" }, "⤮": { math: "\\neovsearrow" }, "⤯": { math: "\\fdiagovnearrow" }, "⤰": { math: "\\rdiagovsearrow" }, "⤱": { math: "\\neovnwarrow" }, "⤲": { math: "\\nwovnearrow" }, "⤴": { math: "\\uprightcurvearrow" }, "⤵": { math: "\\downrightcurvedarrow" }, "⤸": { math: "\\cwrightarcarrow" }, "⤹": { math: "\\acwleftarcarrow" }, "⤺": { math: "\\acwoverarcarrow" }, "⤻": { math: "\\acwunderarcarrow" }, "⤼": { math: "\\curvearrowrightminus" }, "⤽": { math: "\\curvearrowleftplus" }, "⤾": { math: "\\cwundercurvearrow" }, "⤿": { math: "\\ccwundercurvearrow" }, "⥀": { math: "\\Elolarr" }, "⥁": { math: "\\Elorarr" }, "⥂": { math: "\\ElzRlarr" }, "⥃": { math: "\\leftarrowshortrightarrow" }, "⥄": { math: "\\ElzrLarr" }, "⥅": { math: "\\rightarrowplus" }, "⥆": { math: "\\leftarrowplus" }, "⥇": { math: "\\Elzrarrx" }, "⥈": { math: "\\leftrightarrowcircle" }, "⥉": { math: "\\twoheaduparrowcircle" }, "⥊": { math: "\\leftrightharpoon" }, "⥋": { math: "\\rightleftharpoon" }, "⥌": { math: "\\updownharpoonrightleft" }, "⥍": { math: "\\updownharpoonleftright" }, "⥎": { math: "\\LeftRightVector" }, "⥏": { math: "\\RightUpDownVector" }, "⥐": { math: "\\DownLeftRightVector" }, "⥑": { math: "\\LeftUpDownVector" }, "⥒": { math: "\\LeftVectorBar" }, "⥓": { math: "\\RightVectorBar" }, "⥔": { math: "\\RightUpVectorBar" }, "⥕": { math: "\\RightDownVectorBar" }, "⥖": { math: "\\DownLeftVectorBar" }, "⥗": { math: "\\DownRightVectorBar" }, "⥘": { math: "\\LeftUpVectorBar" }, "⥙": { math: "\\LeftDownVectorBar" }, "⥚": { math: "\\LeftTeeVector" }, "⥛": { math: "\\RightTeeVector" }, "⥜": { math: "\\RightUpTeeVector" }, "⥝": { math: "\\RightDownTeeVector" }, "⥞": { math: "\\DownLeftTeeVector" }, "⥟": { math: "\\DownRightTeeVector" }, "⥠": { math: "\\LeftUpTeeVector" }, "⥡": { math: "\\LeftDownTeeVector" }, "⥢": { math: "\\leftleftharpoons" }, "⥣": { math: "\\upupharpoons" }, "⥤": { math: "\\rightrightharpoons" }, "⥥": { math: "\\downdownharpoons" }, "⥦": { math: "\\leftrightharpoonsup" }, "⥧": { math: "\\leftrightharpoonsdown" }, "⥨": { math: "\\rightleftharpoonsup" }, "⥩": { math: "\\rightleftharpoonsdown" }, "⥪": { math: "\\leftbarharpoon" }, "⥫": { math: "\\barleftharpoon" }, "⥬": { math: "\\rightbarharpoon" }, "⥭": { math: "\\barrightharpoon" }, "⥮": { math: "\\UpEquilibrium" }, "⥯": { math: "\\ReverseUpEquilibrium" }, "⥰": { math: "\\RoundImplies" }, "⥱": { math: "\\equalrightarrow" }, "⥲": { math: "\\similarrightarrow" }, "⥳": { math: "\\leftarrowsimilar" }, "⥴": { math: "\\rightarrowsimilar" }, "⥵": { math: "\\rightarrowapprox" }, "⥶": { math: "\\ltlarr" }, "⥷": { math: "\\leftarrowless" }, "⥸": { math: "\\gtrarr" }, "⥹": { math: "\\subrarr" }, "⥺": { math: "\\leftarrowsubset" }, "⥻": { math: "\\suplarr" }, "⥾": { math: "\\upfishtail" }, "⥿": { math: "\\downfishtail" }, "⦀": { math: "\\Elztfnc" }, "⦁": { math: "\\spot" }, "⦂": { math: "\\typecolon" }, "⦃": { math: "\\lBrace" }, "⦄": { math: "\\rBrace" }, "⦆": { math: "\\Elroang" }, "⦇": { math: "\\limg" }, "⦈": { math: "\\rimg" }, "⦉": { math: "\\lblot" }, "⦊": { math: "\\rblot" }, "⦋": { math: "\\lbrackubar" }, "⦌": { math: "\\rbrackubar" }, "⦍": { math: "\\lbrackultick" }, "⦎": { math: "\\rbracklrtick" }, "⦏": { math: "\\lbracklltick" }, "⦐": { math: "\\rbrackurtick" }, "⦑": { math: "\\langledot" }, "⦒": { math: "\\rangledot" }, "⦓": { math: "<\\kern-0.58em(" }, "⦕": { math: "\\Lparengtr" }, "⦖": { math: "\\Rparenless" }, "⦗": { math: "\\lblkbrbrak" }, "⦘": { math: "\\rblkbrbrak" }, "⦙": { math: "\\Elzddfnc" }, "⦚": { math: "\\vzigzag" }, "⦛": { math: "\\measuredangleleft" }, "⦜": { math: "\\Angle" }, "⦝": { math: "\\rightanglemdot" }, "⦞": { math: "\\angles" }, "⦟": { math: "\\angdnr" }, "⦠": { math: "\\Elzlpargt" }, "⦡": { math: "\\sphericalangleup" }, "⦢": { math: "\\turnangle" }, "⦣": { math: "\\revangle" }, "⦤": { math: "\\angleubar" }, "⦥": { math: "\\revangleubar" }, "⦦": { math: "\\wideangledown" }, "⦧": { math: "\\wideangleup" }, "⦨": { math: "\\measanglerutone" }, "⦩": { math: "\\measanglelutonw" }, "⦪": { math: "\\measanglerdtose" }, "⦫": { math: "\\measangleldtosw" }, "⦬": { math: "\\measangleurtone" }, "⦭": { math: "\\measangleultonw" }, "⦮": { math: "\\measangledrtose" }, "⦯": { math: "\\measangledltosw" }, "⦰": { math: "\\revemptyset" }, "⦱": { math: "\\emptysetobar" }, "⦲": { math: "\\emptysetocirc" }, "⦳": { math: "\\emptysetoarr" }, "⦴": { math: "\\emptysetoarrl" }, "⦷": { math: "\\circledparallel" }, "⦸": { math: "\\circledbslash" }, "⦹": { math: "\\operp" }, "⦺": { math: "\\obot" }, "⦻": { math: "\\olcross" }, "⦼": { math: "\\odotslashdot" }, "⦽": { math: "\\uparrowoncircle" }, "⦾": { math: "\\circledwhitebullet" }, "⦿": { math: "\\circledbullet" }, "⧀": { math: "\\circledless" }, "⧁": { math: "\\circledgtr" }, "⧂": { math: "\\cirscir" }, "⧃": { math: "\\cirE" }, "⧄": { math: "\\boxslash" }, "⧅": { math: "\\boxbslash" }, "⧆": { math: "\\boxast" }, "⧇": { math: "\\boxcircle" }, "⧈": { math: "\\boxbox" }, "⧉": { math: "\\boxonbox" }, "⧊": { math: "\\ElzLap" }, "⧋": { math: "\\Elzdefas" }, "⧌": { math: "\\triangles" }, "⧍": { math: "\\triangleserifs" }, "⧎": { math: "\\rtriltri" }, "⧏": { math: "\\LeftTriangleBar" }, "⧏̸": { math: "\\NotLeftTriangleBar" }, "⧐": { math: "\\RightTriangleBar" }, "⧐̸": { math: "\\NotRightTriangleBar" }, "⧑": { math: "\\lfbowtie" }, "⧒": { math: "\\rfbowtie" }, "⧓": { math: "\\fbowtie" }, "⧔": { math: "\\lftimes" }, "⧕": { math: "\\rftimes" }, "⧖": { math: "\\hourglass" }, "⧗": { math: "\\blackhourglass" }, "⧘": { math: "\\lvzigzag" }, "⧙": { math: "\\rvzigzag" }, "⧚": { math: "\\Lvzigzag" }, "⧛": { math: "\\Rvzigzag" }, "⧝": { math: "\\tieinfty" }, "⧞": { math: "\\nvinfty" }, "⧟": { math: "\\multimapboth" }, "⧠": { math: "\\laplac" }, "⧡": { math: "\\lrtriangleeq" }, "⧢": { math: "\\shuffle" }, "⧣": { math: "\\eparsl" }, "⧤": { math: "\\smeparsl" }, "⧥": { math: "\\eqvparsl" }, "⧦": { math: "\\gleichstark" }, "⧧": { math: "\\thermod" }, "⧨": { math: "\\downtriangleleftblack" }, "⧩": { math: "\\downtrianglerightblack" }, "⧪": { math: "\\blackdiamonddownarrow" }, "⧫": { math: "\\blacklozenge" }, "⧬": { math: "\\circledownarrow" }, "⧭": { math: "\\blackcircledownarrow" }, "⧮": { math: "\\errbarsquare" }, "⧯": { math: "\\errbarblacksquare" }, "⧰": { math: "\\errbardiamond" }, "⧱": { math: "\\errbarblackdiamond" }, "⧲": { math: "\\errbarcircle" }, "⧳": { math: "\\errbarblackcircle" }, "⧴": { math: "\\RuleDelayed" }, "⧵": { math: "\\setminus" }, "⧶": { math: "\\dsol" }, "⧷": { math: "\\rsolbar" }, "⧸": { math: "\\xsol" }, "⧹": { math: "\\zhide" }, "⧺": { math: "\\doubleplus" }, "⧻": { math: "\\tripleplus" }, "⧼": { math: "\\lcurvyangle" }, "⧽": { math: "\\rcurvyangle" }, "⧾": { math: "\\tplus" }, "⧿": { math: "\\tminus" }, "⨀": { math: "\\bigodot" }, "⨁": { math: "\\bigoplus" }, "⨂": { math: "\\bigotimes" }, "⨃": { math: "\\bigcupdot" }, "⨄": { math: "\\Elxuplus" }, "⨅": { math: "\\ElzThr" }, "⨆": { math: "\\Elxsqcup" }, "⨇": { math: "\\ElzInf" }, "⨈": { math: "\\ElzSup" }, "⨉": { math: "\\varprod" }, "⨊": { math: "\\modtwosum" }, "⨋": { math: "\\sumint" }, "⨌": { math: "\\iiiint" }, "⨍": { math: "\\ElzCint" }, "⨎": { math: "\\intBar" }, "⨏": { math: "\\clockoint" }, "⨑": { math: "\\awint" }, "⨒": { math: "\\rppolint" }, "⨓": { math: "\\scpolint" }, "⨔": { math: "\\npolint" }, "⨕": { math: "\\pointint" }, "⨖": { math: "\\sqrint" }, "⨗": { math: "\\intlarhk" }, "⨘": { math: "\\intx" }, "⨙": { math: "\\intcap" }, "⨚": { math: "\\intcup" }, "⨛": { math: "\\upint" }, "⨜": { math: "\\lowint" }, "⨝": { math: "\\Join" }, "⨞": { math: "\\bigtriangleleft" }, "⨟": { math: "\\zcmp" }, "⨠": { math: "\\zpipe" }, "⨡": { math: "\\zproject" }, "⨢": { math: "\\ringplus" }, "⨣": { math: "\\plushat" }, "⨤": { math: "\\simplus" }, "⨦": { math: "\\plussim" }, "⨧": { math: "\\plussubtwo" }, "⨨": { math: "\\plustrif" }, "⨩": { math: "\\commaminus" }, "⨫": { math: "\\minusfdots" }, "⨬": { math: "\\minusrdots" }, "⨯": { math: "\\ElzTimes" }, "⨰": { math: "\\dottimes" }, "⨱": { math: "\\timesbar" }, "⨲": { math: "\\btimes" }, "⨳": { math: "\\smashtimes" }, "⨶": { math: "\\otimeshat" }, "⨷": { math: "\\Otimes" }, "⨸": { math: "\\odiv" }, "⨹": { math: "\\triangleplus" }, "⨺": { math: "\\triangleminus" }, "⨻": { math: "\\triangletimes" }, "⨽": { math: "\\intprodr" }, "⨾": { math: "\\fcmp" }, "⨿": { math: "\\amalg" }, "⩀": { math: "\\capdot" }, "⩁": { math: "\\uminus" }, "⩂": { math: "\\barcup" }, "⩃": { math: "\\barcap" }, "⩄": { math: "\\capwedge" }, "⩅": { math: "\\cupvee" }, "⩆": { math: "\\cupovercap" }, "⩇": { math: "\\capovercup" }, "⩈": { math: "\\cupbarcap" }, "⩉": { math: "\\capbarcup" }, "⩊": { math: "\\twocups" }, "⩋": { math: "\\twocaps" }, "⩌": { math: "\\closedvarcup" }, "⩍": { math: "\\closedvarcap" }, "⩎": { math: "\\Sqcap" }, "⩏": { math: "\\Sqcup" }, "⩐": { math: "\\closedvarcupsmashprod" }, "⩑": { math: "\\wedgeodot" }, "⩒": { math: "\\veeodot" }, "⩓": { math: "\\ElzAnd" }, "⩔": { math: "\\ElzOr" }, "⩖": { math: "\\ElOr" }, "⩗": { math: "\\bigslopedvee" }, "⩘": { math: "\\bigslopedwedge" }, "⩙": { math: "\\veeonwedge" }, "⩚": { math: "\\wedgemidvert" }, "⩛": { math: "\\veemidvert" }, "⩜": { math: "\\midbarwedge" }, "⩝": { math: "\\midbarvee" }, "⩞": { math: "\\perspcorrespond" }, "⩟": { math: "\\Elzminhat" }, "⩠": { math: "\\wedgedoublebar" }, "⩡": { math: "\\varveebar" }, "⩢": { math: "\\doublebarvee" }, "⩤": { math: "\\dsub" }, "⩥": { math: "\\rsub" }, "⩦": { math: "\\eqdot" }, "⩧": { math: "\\dotequiv" }, "⩨": { math: "\\equivVert" }, "⩩": { math: "\\equivVvert" }, "⩪": { math: "\\dotsim" }, "⩫": { math: "\\simrdots" }, "⩬": { math: "\\simminussim" }, "⩭": { math: "\\congdot" }, "⩮": { math: "\\stackrel{*}{=}" }, "⩯": { math: "\\hatapprox" }, "⩰": { math: "\\approxeqq" }, "⩱": { math: "\\eqqplus" }, "⩲": { math: "\\pluseqq" }, "⩳": { math: "\\eqqsim" }, "⩴": { math: "\\Coloneqq" }, "⩵": { math: "\\Equal" }, "⩶": { math: "\\Same" }, "⩷": { math: "\\ddotseq" }, "⩸": { math: "\\equivDD" }, "⩹": { math: "\\ltcir" }, "⩺": { math: "\\gtcir" }, "⩻": { math: "\\ltquest" }, "⩼": { math: "\\gtquest" }, "⩽": { math: "\\leqslant", mathpackages: [ "amssymb" ] }, "⩽̸": { math: "\\nleqslant", mathpackages: [ "amssymb" ] }, "⩾": { math: "\\geqslant", mathpackages: [ "amssymb" ] }, "⩾̸": { math: "\\ngeqslant", mathpackages: [ "amssymb" ] }, "⩿": { math: "\\lesdot" }, "⪀": { math: "\\gesdot" }, "⪁": { math: "\\lesdoto" }, "⪂": { math: "\\gesdoto" }, "⪃": { math: "\\lesdotor" }, "⪄": { math: "\\gesdotol" }, "⪅": { math: "\\lessapprox" }, "⪆": { math: "\\gtrapprox" }, "⪇": { math: "\\lneq" }, "⪈": { math: "\\gneq" }, "⪉": { math: "\\lnapprox" }, "⪊": { math: "\\gnapprox" }, "⪋": { math: "\\lesseqqgtr" }, "⪌": { math: "\\gtreqqless" }, "⪍": { math: "\\lsime" }, "⪎": { math: "\\gsime" }, "⪏": { math: "\\lsimg" }, "⪐": { math: "\\gsiml" }, "⪑": { math: "\\lgE" }, "⪒": { math: "\\glE" }, "⪓": { math: "\\lesges" }, "⪔": { math: "\\gesles" }, "⪕": { math: "\\eqslantless" }, "⪖": { math: "\\eqslantgtr" }, "⪗": { math: "\\elsdot" }, "⪘": { math: "\\egsdot" }, "⪙": { math: "\\eqqless" }, "⪚": { math: "\\eqqgtr" }, "⪛": { math: "\\eqqslantless" }, "⪜": { math: "\\eqqslantgtr" }, "⪝": { math: "\\Pisymbol{ppi020}{117}" }, "⪞": { math: "\\Pisymbol{ppi020}{105}" }, "⪟": { math: "\\simlE" }, "⪠": { math: "\\simgE" }, "⪡": { math: "\\NestedLessLess" }, "⪡̸": { math: "\\NotNestedLessLess" }, "⪢": { math: "\\NestedGreaterGreater" }, "⪢̸": { math: "\\NotNestedGreaterGreater" }, "⪣": { math: "\\partialmeetcontraction" }, "⪤": { math: "\\glj" }, "⪥": { math: "\\gla" }, "⪦": { math: "\\leftslice" }, "⪧": { math: "\\rightslice" }, "⪨": { math: "\\lescc" }, "⪩": { math: "\\gescc" }, "⪪": { math: "\\smt" }, "⪫": { math: "\\lat" }, "⪬": { math: "\\smte" }, "⪭": { math: "\\late" }, "⪮": { math: "\\bumpeqq" }, "⪯": { math: "\\preceq" }, "⪯̸": { math: "\\not\\preceq" }, "⪰": { math: "\\succeq" }, "⪰̸": { math: "\\not\\succeq" }, "⪱": { math: "\\precneq" }, "⪲": { math: "\\succneq" }, "⪳": { math: "\\preceqq" }, "⪴": { math: "\\succeqq" }, "⪵": { math: "\\precneqq" }, "⪶": { math: "\\succneqq" }, "⪷": { math: "\\precapprox" }, "⪸": { math: "\\succapprox" }, "⪹": { math: "\\precnapprox" }, "⪺": { math: "\\succnapprox" }, "⪻": { math: "\\llcurly" }, "⪼": { math: "\\ggcurly" }, "⪽": { math: "\\subsetdot" }, "⪾": { math: "\\supsetdot" }, "⪿": { math: "\\subsetplus" }, "⫀": { math: "\\supsetplus" }, "⫁": { math: "\\submult" }, "⫂": { math: "\\supmult" }, "⫃": { math: "\\subedot" }, "⫄": { math: "\\supedot" }, "⫅": { math: "\\subseteqq" }, "⫅̸": { math: "\\nsubseteqq" }, "⫆": { math: "\\supseteqq" }, "⫆̸": { math: "\\nsupseteqq" }, "⫇": { math: "\\subsim" }, "⫈": { math: "\\supsim" }, "⫉": { math: "\\subsetapprox" }, "⫊": { math: "\\supsetapprox" }, "⫋": { math: "\\subsetneqq" }, "⫌": { math: "\\supsetneqq" }, "⫍": { math: "\\lsqhook" }, "⫎": { math: "\\rsqhook" }, "⫏": { math: "\\csub" }, "⫐": { math: "\\csup" }, "⫑": { math: "\\csube" }, "⫒": { math: "\\csupe" }, "⫓": { math: "\\subsup" }, "⫔": { math: "\\supsub" }, "⫕": { math: "\\subsub" }, "⫖": { math: "\\supsup" }, "⫗": { math: "\\suphsub" }, "⫘": { math: "\\supdsub" }, "⫙": { math: "\\forkv" }, "⫚": { math: "\\topfork" }, "⫛": { math: "\\mlcp" }, "⫝̸": { math: "\\forks" }, "⫝": { math: "\\forksnot" }, "⫝̸": { math: "\\forks" }, "⫞": { math: "\\shortlefttack" }, "⫟": { math: "\\shortdowntack" }, "⫠": { math: "\\shortuptack" }, "⫡": { math: "\\perps" }, "⫢": { math: "\\vDdash" }, "⫣": { math: "\\dashV" }, "⫤": { math: "\\Dashv" }, "⫥": { math: "\\DashV" }, "⫦": { math: "\\varVdash" }, "⫧": { math: "\\Barv" }, "⫨": { math: "\\vBar" }, "⫩": { math: "\\vBarv" }, "⫪": { math: "\\Top" }, "⫬": { math: "\\Not" }, "⫭": { math: "\\bNot" }, "⫮": { math: "\\revnmid" }, "⫯": { math: "\\cirmid" }, "⫰": { math: "\\midcir" }, "⫱": { math: "\\topcir" }, "⫲": { math: "\\nhpar" }, "⫳": { math: "\\parsim" }, "⫴": { math: "\\interleave" }, "⫵": { math: "\\nhVvert" }, "⫶": { math: "\\Elztdcol" }, "⫷": { math: "\\lllnest" }, "⫸": { math: "\\gggnest" }, "⫹": { math: "\\leqqslant" }, "⫺": { math: "\\geqqslant" }, "⫻": { math: "\\trslash" }, "⫼": { math: "\\biginterleave" }, "⫽": { math: "{{/}\\!\\!{/}}" }, "⫽⃥": { math: "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}" }, "⫾": { math: "\\talloblong" }, "⫿": { math: "\\bigtalloblong" }, "⬒": { math: "\\squaretopblack" }, "⬓": { math: "\\squarebotblack" }, "⬔": { math: "\\squareurblack" }, "⬕": { math: "\\squarellblack" }, "⬖": { math: "\\diamondleftblack" }, "⬗": { math: "\\diamondrightblack" }, "⬘": { math: "\\diamondtopblack" }, "⬙": { math: "\\diamondbotblack" }, "⬚": { math: "\\dottedsquare" }, "⬛": { math: "\\blacksquare" }, "⬜": { math: "\\square" }, "⬝": { math: "\\vysmblksquare" }, "⬞": { math: "\\vysmwhtsquare" }, "⬟": { math: "\\pentagonblack" }, "⬠": { math: "\\pentagon" }, "⬡": { math: "\\varhexagon" }, "⬢": { math: "\\varhexagonblack" }, "⬣": { math: "\\hexagonblack" }, "⬤": { math: "\\lgblkcircle" }, "⬥": { math: "\\mdblkdiamond" }, "⬦": { math: "\\mdwhtdiamond" }, "⬧": { math: "\\mdblklozenge" }, "⬨": { math: "\\mdwhtlozenge" }, "⬩": { math: "\\smblkdiamond" }, "⬪": { math: "\\smblklozenge" }, "⬫": { math: "\\smwhtlozenge" }, "⬬": { math: "\\blkhorzoval" }, "⬭": { math: "\\whthorzoval" }, "⬮": { math: "\\blkvertoval" }, "⬯": { math: "\\whtvertoval" }, "⬰": { math: "\\circleonleftarrow" }, "⬱": { math: "\\leftthreearrows" }, "⬲": { math: "\\leftarrowonoplus" }, "⬳": { math: "\\longleftsquigarrow" }, "⬴": { math: "\\nvtwoheadleftarrow" }, "⬵": { math: "\\nVtwoheadleftarrow" }, "⬶": { math: "\\twoheadmapsfrom" }, "⬷": { math: "\\twoheadleftdbkarrow" }, "⬸": { math: "\\leftdotarrow" }, "⬹": { math: "\\nvleftarrowtail" }, "⬺": { math: "\\nVleftarrowtail" }, "⬻": { math: "\\twoheadleftarrowtail" }, "⬼": { math: "\\nvtwoheadleftarrowtail" }, "⬽": { math: "\\nVtwoheadleftarrowtail" }, "⬾": { math: "\\leftarrowx" }, "⬿": { math: "\\leftcurvedarrow" }, "⭀": { math: "\\equalleftarrow" }, "⭁": { math: "\\bsimilarleftarrow" }, "⭂": { math: "\\leftarrowbackapprox" }, "⭃": { math: "\\rightarrowgtr" }, "⭄": { math: "\\rightarrowsupset" }, "⭅": { math: "\\LLeftarrow" }, "⭆": { math: "\\RRightarrow" }, "⭇": { math: "\\bsimilarrightarrow" }, "⭈": { math: "\\rightarrowbackapprox" }, "⭉": { math: "\\similarleftarrow" }, "⭊": { math: "\\leftarrowapprox" }, "⭋": { math: "\\leftarrowbsimilar" }, "⭌": { math: "\\rightarrowbsimilar" }, "⭐": { math: "\\medwhitestar" }, "⭑": { math: "\\medblackstar" }, "⭒": { math: "\\smwhitestar" }, "⭓": { math: "\\rightpentagonblack" }, "⭔": { math: "\\rightpentagon" }, "〈": { math: "\\langle" }, "〉": { math: "\\rangle" }, "〒": { math: "\\postalmark" }, "〔": { math: "\\lbrbrak" }, "〕": { math: "\\rbrbrak" }, "〚": { math: "\\openbracketleft" }, "〛": { math: "\\openbracketright" }, "〰": { math: "\\hzigzag" }, "ff": { text: "ff" }, "fi": { text: "fi" }, "fl": { text: "fl" }, "ffi": { text: "ffi" }, "ffl": { text: "ffl" }, "ſt": { text: "st" }, "st": { text: "st" }, "�": { text: "\\dbend", commandspacer: true }, "𝐀": { math: "\\mathbf{A}" }, "𝐁": { math: "\\mathbf{B}" }, "𝐂": { math: "\\mathbf{C}" }, "𝐃": { math: "\\mathbf{D}" }, "𝐄": { math: "\\mathbf{E}" }, "𝐅": { math: "\\mathbf{F}" }, "𝐆": { math: "\\mathbf{G}" }, "𝐇": { math: "\\mathbf{H}" }, "𝐈": { math: "\\mathbf{I}" }, "𝐉": { math: "\\mathbf{J}" }, "𝐊": { math: "\\mathbf{K}" }, "𝐋": { math: "\\mathbf{L}" }, "𝐌": { math: "\\mathbf{M}" }, "𝐍": { math: "\\mathbf{N}" }, "𝐎": { math: "\\mathbf{O}" }, "𝐏": { math: "\\mathbf{P}" }, "𝐐": { math: "\\mathbf{Q}" }, "𝐑": { math: "\\mathbf{R}" }, "𝐒": { math: "\\mathbf{S}" }, "𝐓": { math: "\\mathbf{T}" }, "𝐔": { math: "\\mathbf{U}" }, "𝐕": { math: "\\mathbf{V}" }, "𝐖": { math: "\\mathbf{W}" }, "𝐗": { math: "\\mathbf{X}" }, "𝐘": { math: "\\mathbf{Y}" }, "𝐙": { math: "\\mathbf{Z}" }, "𝐚": { math: "\\mathbf{a}" }, "𝐛": { math: "\\mathbf{b}" }, "𝐜": { math: "\\mathbf{c}" }, "𝐝": { math: "\\mathbf{d}" }, "𝐞": { math: "\\mathbf{e}" }, "𝐟": { math: "\\mathbf{f}" }, "𝐠": { math: "\\mathbf{g}" }, "𝐡": { math: "\\mathbf{h}" }, "𝐢": { math: "\\mathbf{i}" }, "𝐣": { math: "\\mathbf{j}" }, "𝐤": { math: "\\mathbf{k}" }, "𝐥": { math: "\\mathbf{l}" }, "𝐦": { math: "\\mathbf{m}" }, "𝐧": { math: "\\mathbf{n}" }, "𝐨": { math: "\\mathbf{o}" }, "𝐩": { math: "\\mathbf{p}" }, "𝐪": { math: "\\mathbf{q}" }, "𝐫": { math: "\\mathbf{r}" }, "𝐬": { math: "\\mathbf{s}" }, "𝐭": { math: "\\mathbf{t}" }, "𝐮": { math: "\\mathbf{u}" }, "𝐯": { math: "\\mathbf{v}" }, "𝐰": { math: "\\mathbf{w}" }, "𝐱": { math: "\\mathbf{x}" }, "𝐲": { math: "\\mathbf{y}" }, "𝐳": { math: "\\mathbf{z}" }, "𝐴": { math: "\\mathsl{A}" }, "𝐵": { math: "\\mathsl{B}" }, "𝐶": { math: "\\mathsl{C}" }, "𝐷": { math: "\\mathsl{D}" }, "𝐸": { math: "\\mathsl{E}" }, "𝐹": { math: "\\mathsl{F}" }, "𝐺": { math: "\\mathsl{G}" }, "𝐻": { math: "\\mathsl{H}" }, "𝐼": { math: "\\mathsl{I}" }, "𝐽": { math: "\\mathsl{J}" }, "𝐾": { math: "\\mathsl{K}" }, "𝐿": { math: "\\mathsl{L}" }, "𝑀": { math: "\\mathsl{M}" }, "𝑁": { math: "\\mathsl{N}" }, "𝑂": { math: "\\mathsl{O}" }, "𝑃": { math: "\\mathsl{P}" }, "𝑄": { math: "\\mathsl{Q}" }, "𝑅": { math: "\\mathsl{R}" }, "𝑆": { math: "\\mathsl{S}" }, "𝑇": { math: "\\mathsl{T}" }, "𝑈": { math: "\\mathsl{U}" }, "𝑉": { math: "\\mathsl{V}" }, "𝑊": { math: "\\mathsl{W}" }, "𝑋": { math: "\\mathsl{X}" }, "𝑌": { math: "\\mathsl{Y}" }, "𝑍": { math: "\\mathsl{Z}" }, "𝑎": { math: "\\mathsl{a}" }, "𝑏": { math: "\\mathsl{b}" }, "𝑐": { math: "\\mathsl{c}" }, "𝑑": { math: "\\mathsl{d}" }, "𝑒": { math: "\\mathsl{e}" }, "𝑓": { math: "\\mathsl{f}" }, "𝑔": { math: "\\mathsl{g}" }, "𝑖": { math: "\\mathsl{i}" }, "𝑗": { math: "\\mathsl{j}" }, "𝑘": { math: "\\mathsl{k}" }, "𝑙": { math: "\\mathsl{l}" }, "𝑚": { math: "\\mathsl{m}" }, "𝑛": { math: "\\mathsl{n}" }, "𝑜": { math: "\\mathsl{o}" }, "𝑝": { math: "\\mathsl{p}" }, "𝑞": { math: "\\mathsl{q}" }, "𝑟": { math: "\\mathsl{r}" }, "𝑠": { math: "\\mathsl{s}" }, "𝑡": { math: "\\mathsl{t}" }, "𝑢": { math: "\\mathsl{u}" }, "𝑣": { math: "\\mathsl{v}" }, "𝑤": { math: "\\mathsl{w}" }, "𝑥": { math: "\\mathsl{x}" }, "𝑦": { math: "\\mathsl{y}" }, "𝑧": { math: "\\mathsl{z}" }, "𝑨": { math: "\\mathbit{A}" }, "𝑩": { math: "\\mathbit{B}" }, "𝑪": { math: "\\mathbit{C}" }, "𝑫": { math: "\\mathbit{D}" }, "𝑬": { math: "\\mathbit{E}" }, "𝑭": { math: "\\mathbit{F}" }, "𝑮": { math: "\\mathbit{G}" }, "𝑯": { math: "\\mathbit{H}" }, "𝑰": { math: "\\mathbit{I}" }, "𝑱": { math: "\\mathbit{J}" }, "𝑲": { math: "\\mathbit{K}" }, "𝑳": { math: "\\mathbit{L}" }, "𝑴": { math: "\\mathbit{M}" }, "𝑵": { math: "\\mathbit{N}" }, "𝑶": { math: "\\mathbit{O}" }, "𝑷": { math: "\\mathbit{P}" }, "𝑸": { math: "\\mathbit{Q}" }, "𝑹": { math: "\\mathbit{R}" }, "𝑺": { math: "\\mathbit{S}" }, "𝑻": { math: "\\mathbit{T}" }, "𝑼": { math: "\\mathbit{U}" }, "𝑽": { math: "\\mathbit{V}" }, "𝑾": { math: "\\mathbit{W}" }, "𝑿": { math: "\\mathbit{X}" }, "𝒀": { math: "\\mathbit{Y}" }, "𝒁": { math: "\\mathbit{Z}" }, "𝒂": { math: "\\mathbit{a}" }, "𝒃": { math: "\\mathbit{b}" }, "𝒄": { math: "\\mathbit{c}" }, "𝒅": { math: "\\mathbit{d}" }, "𝒆": { math: "\\mathbit{e}" }, "𝒇": { math: "\\mathbit{f}" }, "𝒈": { math: "\\mathbit{g}" }, "𝒉": { math: "\\mathbit{h}" }, "𝒊": { math: "\\mathbit{i}" }, "𝒋": { math: "\\mathbit{j}" }, "𝒌": { math: "\\mathbit{k}" }, "𝒍": { math: "\\mathbit{l}" }, "𝒎": { math: "\\mathbit{m}" }, "𝒏": { math: "\\mathbit{n}" }, "𝒐": { math: "\\mathbit{o}" }, "𝒑": { math: "\\mathbit{p}" }, "𝒒": { math: "\\mathbit{q}" }, "𝒓": { math: "\\mathbit{r}" }, "𝒔": { math: "\\mathbit{s}" }, "𝒕": { math: "\\mathbit{t}" }, "𝒖": { math: "\\mathbit{u}" }, "𝒗": { math: "\\mathbit{v}" }, "𝒘": { math: "\\mathbit{w}" }, "𝒙": { math: "\\mathbit{x}" }, "𝒚": { math: "\\mathbit{y}" }, "𝒛": { math: "\\mathbit{z}" }, "𝒜": { math: "\\mathscr{A}" }, "𝒞": { math: "\\mathscr{C}" }, "𝒟": { math: "\\mathscr{D}" }, "𝒢": { math: "\\mathscr{G}" }, "𝒥": { math: "\\mathscr{J}" }, "𝒦": { math: "\\mathscr{K}" }, "𝒩": { math: "\\mathscr{N}" }, "𝒪": { math: "\\mathscr{O}" }, "𝒫": { math: "\\mathscr{P}" }, "𝒬": { math: "\\mathscr{Q}" }, "𝒮": { math: "\\mathscr{S}" }, "𝒯": { math: "\\mathscr{T}" }, "𝒰": { math: "\\mathscr{U}" }, "𝒱": { math: "\\mathscr{V}" }, "𝒲": { math: "\\mathscr{W}" }, "𝒳": { math: "\\mathscr{X}" }, "𝒴": { math: "\\mathscr{Y}" }, "𝒵": { math: "\\mathscr{Z}" }, "𝒶": { math: "\\mathscr{a}" }, "𝒷": { math: "\\mathscr{b}" }, "𝒸": { math: "\\mathscr{c}" }, "𝒹": { math: "\\mathscr{d}" }, "𝒻": { math: "\\mathscr{f}" }, "𝒽": { math: "\\mathscr{h}" }, "𝒾": { math: "\\mathscr{i}" }, "𝒿": { math: "\\mathscr{j}" }, "𝓀": { math: "\\mathscr{k}" }, "𝓁": { math: "\\mathscr{l}" }, "𝓂": { math: "\\mathscr{m}" }, "𝓃": { math: "\\mathscr{n}" }, "𝓅": { math: "\\mathscr{p}" }, "𝓆": { math: "\\mathscr{q}" }, "𝓇": { math: "\\mathscr{r}" }, "𝓈": { math: "\\mathscr{s}" }, "𝓉": { math: "\\mathscr{t}" }, "𝓊": { math: "\\mathscr{u}" }, "𝓋": { math: "\\mathscr{v}" }, "𝓌": { math: "\\mathscr{w}" }, "𝓍": { math: "\\mathscr{x}" }, "𝓎": { math: "\\mathscr{y}" }, "𝓏": { math: "\\mathscr{z}" }, "𝓐": { math: "\\mathmit{A}" }, "𝓑": { math: "\\mathmit{B}" }, "𝓒": { math: "\\mathmit{C}" }, "𝓓": { math: "\\mathmit{D}" }, "𝓔": { math: "\\mathmit{E}" }, "𝓕": { math: "\\mathmit{F}" }, "𝓖": { math: "\\mathmit{G}" }, "𝓗": { math: "\\mathmit{H}" }, "𝓘": { math: "\\mathmit{I}" }, "𝓙": { math: "\\mathmit{J}" }, "𝓚": { math: "\\mathmit{K}" }, "𝓛": { math: "\\mathmit{L}" }, "𝓜": { math: "\\mathmit{M}" }, "𝓝": { math: "\\mathmit{N}" }, "𝓞": { math: "\\mathmit{O}" }, "𝓟": { math: "\\mathmit{P}" }, "𝓠": { math: "\\mathmit{Q}" }, "𝓡": { math: "\\mathmit{R}" }, "𝓢": { math: "\\mathmit{S}" }, "𝓣": { math: "\\mathmit{T}" }, "𝓤": { math: "\\mathmit{U}" }, "𝓥": { math: "\\mathmit{V}" }, "𝓦": { math: "\\mathmit{W}" }, "𝓧": { math: "\\mathmit{X}" }, "𝓨": { math: "\\mathmit{Y}" }, "𝓩": { math: "\\mathmit{Z}" }, "𝓪": { math: "\\mathmit{a}" }, "𝓫": { math: "\\mathmit{b}" }, "𝓬": { math: "\\mathmit{c}" }, "𝓭": { math: "\\mathmit{d}" }, "𝓮": { math: "\\mathmit{e}" }, "𝓯": { math: "\\mathmit{f}" }, "𝓰": { math: "\\mathmit{g}" }, "𝓱": { math: "\\mathmit{h}" }, "𝓲": { math: "\\mathmit{i}" }, "𝓳": { math: "\\mathmit{j}" }, "𝓴": { math: "\\mathmit{k}" }, "𝓵": { math: "\\mathmit{l}" }, "𝓶": { math: "\\mathmit{m}" }, "𝓷": { math: "\\mathmit{n}" }, "𝓸": { math: "\\mathmit{o}" }, "𝓹": { math: "\\mathmit{p}" }, "𝓺": { math: "\\mathmit{q}" }, "𝓻": { math: "\\mathmit{r}" }, "𝓼": { math: "\\mathmit{s}" }, "𝓽": { math: "\\mathmit{t}" }, "𝓾": { math: "\\mathmit{u}" }, "𝓿": { math: "\\mathmit{v}" }, "𝔀": { math: "\\mathmit{w}" }, "𝔁": { math: "\\mathmit{x}" }, "𝔂": { math: "\\mathmit{y}" }, "𝔃": { math: "\\mathmit{z}" }, "𝔄": { math: "\\mathfrak{A}" }, "𝔅": { math: "\\mathfrak{B}" }, "𝔇": { math: "\\mathfrak{D}" }, "𝔈": { math: "\\mathfrak{E}" }, "𝔉": { math: "\\mathfrak{F}" }, "𝔊": { math: "\\mathfrak{G}" }, "𝔍": { math: "\\mathfrak{J}" }, "𝔎": { math: "\\mathfrak{K}" }, "𝔏": { math: "\\mathfrak{L}" }, "𝔐": { math: "\\mathfrak{M}" }, "𝔑": { math: "\\mathfrak{N}" }, "𝔒": { math: "\\mathfrak{O}" }, "𝔓": { math: "\\mathfrak{P}" }, "𝔔": { math: "\\mathfrak{Q}" }, "𝔖": { math: "\\mathfrak{S}" }, "𝔗": { math: "\\mathfrak{T}" }, "𝔘": { math: "\\mathfrak{U}" }, "𝔙": { math: "\\mathfrak{V}" }, "𝔚": { math: "\\mathfrak{W}" }, "𝔛": { math: "\\mathfrak{X}" }, "𝔜": { math: "\\mathfrak{Y}" }, "𝔞": { math: "\\mathfrak{a}" }, "𝔟": { math: "\\mathfrak{b}" }, "𝔠": { math: "\\mathfrak{c}" }, "𝔡": { math: "\\mathfrak{d}" }, "𝔢": { math: "\\mathfrak{e}" }, "𝔣": { math: "\\mathfrak{f}" }, "𝔤": { math: "\\mathfrak{g}" }, "𝔥": { math: "\\mathfrak{h}" }, "𝔦": { math: "\\mathfrak{i}" }, "𝔧": { math: "\\mathfrak{j}" }, "𝔨": { math: "\\mathfrak{k}" }, "𝔩": { math: "\\mathfrak{l}" }, "𝔪": { math: "\\mathfrak{m}" }, "𝔫": { math: "\\mathfrak{n}" }, "𝔬": { math: "\\mathfrak{o}" }, "𝔭": { math: "\\mathfrak{p}" }, "𝔮": { math: "\\mathfrak{q}" }, "𝔯": { math: "\\mathfrak{r}" }, "𝔰": { math: "\\mathfrak{s}" }, "𝔱": { math: "\\mathfrak{t}" }, "𝔲": { math: "\\mathfrak{u}" }, "𝔳": { math: "\\mathfrak{v}" }, "𝔴": { math: "\\mathfrak{w}" }, "𝔵": { math: "\\mathfrak{x}" }, "𝔶": { math: "\\mathfrak{y}" }, "𝔷": { math: "\\mathfrak{z}" }, "𝔸": { math: "\\mathbb{A}" }, "𝔹": { math: "\\mathbb{B}" }, "𝔻": { math: "\\mathbb{D}" }, "𝔼": { math: "\\mathbb{E}" }, "𝔽": { math: "\\mathbb{F}" }, "𝔾": { math: "\\mathbb{G}" }, "𝕀": { math: "\\mathbb{I}" }, "𝕁": { math: "\\mathbb{J}" }, "𝕂": { math: "\\mathbb{K}" }, "𝕃": { math: "\\mathbb{L}" }, "𝕄": { math: "\\mathbb{M}" }, "𝕆": { math: "\\mathbb{O}" }, "𝕊": { math: "\\mathbb{S}" }, "𝕋": { math: "\\mathbb{T}" }, "𝕌": { math: "\\mathbb{U}" }, "𝕍": { math: "\\mathbb{V}" }, "𝕎": { math: "\\mathbb{W}" }, "𝕏": { math: "\\mathbb{X}" }, "𝕐": { math: "\\mathbb{Y}" }, "𝕒": { math: "\\mathbb{a}" }, "𝕓": { math: "\\mathbb{b}" }, "𝕔": { math: "\\mathbb{c}" }, "𝕕": { math: "\\mathbb{d}" }, "𝕖": { math: "\\mathbb{e}" }, "𝕗": { math: "\\mathbb{f}" }, "𝕘": { math: "\\mathbb{g}" }, "𝕙": { math: "\\mathbb{h}" }, "𝕚": { math: "\\mathbb{i}" }, "𝕛": { math: "\\mathbb{j}" }, "𝕜": { math: "\\mathbb{k}" }, "𝕝": { math: "\\mathbb{l}" }, "𝕞": { math: "\\mathbb{m}" }, "𝕟": { math: "\\mathbb{n}" }, "𝕠": { math: "\\mathbb{o}" }, "𝕡": { math: "\\mathbb{p}" }, "𝕢": { math: "\\mathbb{q}" }, "𝕣": { math: "\\mathbb{r}" }, "𝕤": { math: "\\mathbb{s}" }, "𝕥": { math: "\\mathbb{t}" }, "𝕦": { math: "\\mathbb{u}" }, "𝕧": { math: "\\mathbb{v}" }, "𝕨": { math: "\\mathbb{w}" }, "𝕩": { math: "\\mathbb{x}" }, "𝕪": { math: "\\mathbb{y}" }, "𝕫": { math: "\\mathbb{z}" }, "𝕬": { math: "\\mathslbb{A}" }, "𝕭": { math: "\\mathslbb{B}" }, "𝕮": { math: "\\mathslbb{C}" }, "𝕯": { math: "\\mathslbb{D}" }, "𝕰": { math: "\\mathslbb{E}" }, "𝕱": { math: "\\mathslbb{F}" }, "𝕲": { math: "\\mathslbb{G}" }, "𝕳": { math: "\\mathslbb{H}" }, "𝕴": { math: "\\mathslbb{I}" }, "𝕵": { math: "\\mathslbb{J}" }, "𝕶": { math: "\\mathslbb{K}" }, "𝕷": { math: "\\mathslbb{L}" }, "𝕸": { math: "\\mathslbb{M}" }, "𝕹": { math: "\\mathslbb{N}" }, "𝕺": { math: "\\mathslbb{O}" }, "𝕻": { math: "\\mathslbb{P}" }, "𝕼": { math: "\\mathslbb{Q}" }, "𝕽": { math: "\\mathslbb{R}" }, "𝕾": { math: "\\mathslbb{S}" }, "𝕿": { math: "\\mathslbb{T}" }, "𝖀": { math: "\\mathslbb{U}" }, "𝖁": { math: "\\mathslbb{V}" }, "𝖂": { math: "\\mathslbb{W}" }, "𝖃": { math: "\\mathslbb{X}" }, "𝖄": { math: "\\mathslbb{Y}" }, "𝖅": { math: "\\mathslbb{Z}" }, "𝖆": { math: "\\mathslbb{a}" }, "𝖇": { math: "\\mathslbb{b}" }, "𝖈": { math: "\\mathslbb{c}" }, "𝖉": { math: "\\mathslbb{d}" }, "𝖊": { math: "\\mathslbb{e}" }, "𝖋": { math: "\\mathslbb{f}" }, "𝖌": { math: "\\mathslbb{g}" }, "𝖍": { math: "\\mathslbb{h}" }, "𝖎": { math: "\\mathslbb{i}" }, "𝖏": { math: "\\mathslbb{j}" }, "𝖐": { math: "\\mathslbb{k}" }, "𝖑": { math: "\\mathslbb{l}" }, "𝖒": { math: "\\mathslbb{m}" }, "𝖓": { math: "\\mathslbb{n}" }, "𝖔": { math: "\\mathslbb{o}" }, "𝖕": { math: "\\mathslbb{p}" }, "𝖖": { math: "\\mathslbb{q}" }, "𝖗": { math: "\\mathslbb{r}" }, "𝖘": { math: "\\mathslbb{s}" }, "𝖙": { math: "\\mathslbb{t}" }, "𝖚": { math: "\\mathslbb{u}" }, "𝖛": { math: "\\mathslbb{v}" }, "𝖜": { math: "\\mathslbb{w}" }, "𝖝": { math: "\\mathslbb{x}" }, "𝖞": { math: "\\mathslbb{y}" }, "𝖟": { math: "\\mathslbb{z}" }, "𝖠": { math: "\\mathsf{A}" }, "𝖡": { math: "\\mathsf{B}" }, "𝖢": { math: "\\mathsf{C}" }, "𝖣": { math: "\\mathsf{D}" }, "𝖤": { math: "\\mathsf{E}" }, "𝖥": { math: "\\mathsf{F}" }, "𝖦": { math: "\\mathsf{G}" }, "𝖧": { math: "\\mathsf{H}" }, "𝖨": { math: "\\mathsf{I}" }, "𝖩": { math: "\\mathsf{J}" }, "𝖪": { math: "\\mathsf{K}" }, "𝖫": { math: "\\mathsf{L}" }, "𝖬": { math: "\\mathsf{M}" }, "𝖭": { math: "\\mathsf{N}" }, "𝖮": { math: "\\mathsf{O}" }, "𝖯": { math: "\\mathsf{P}" }, "𝖰": { math: "\\mathsf{Q}" }, "𝖱": { math: "\\mathsf{R}" }, "𝖲": { math: "\\mathsf{S}" }, "𝖳": { math: "\\mathsf{T}" }, "𝖴": { math: "\\mathsf{U}" }, "𝖵": { math: "\\mathsf{V}" }, "𝖶": { math: "\\mathsf{W}" }, "𝖷": { math: "\\mathsf{X}" }, "𝖸": { math: "\\mathsf{Y}" }, "𝖹": { math: "\\mathsf{Z}" }, "𝖺": { math: "\\mathsf{a}" }, "𝖻": { math: "\\mathsf{b}" }, "𝖼": { math: "\\mathsf{c}" }, "𝖽": { math: "\\mathsf{d}" }, "𝖾": { math: "\\mathsf{e}" }, "𝖿": { math: "\\mathsf{f}" }, "𝗀": { math: "\\mathsf{g}" }, "𝗁": { math: "\\mathsf{h}" }, "𝗂": { math: "\\mathsf{i}" }, "𝗃": { math: "\\mathsf{j}" }, "𝗄": { math: "\\mathsf{k}" }, "𝗅": { math: "\\mathsf{l}" }, "𝗆": { math: "\\mathsf{m}" }, "𝗇": { math: "\\mathsf{n}" }, "𝗈": { math: "\\mathsf{o}" }, "𝗉": { math: "\\mathsf{p}" }, "𝗊": { math: "\\mathsf{q}" }, "𝗋": { math: "\\mathsf{r}" }, "𝗌": { math: "\\mathsf{s}" }, "𝗍": { math: "\\mathsf{t}" }, "𝗎": { math: "\\mathsf{u}" }, "𝗏": { math: "\\mathsf{v}" }, "𝗐": { math: "\\mathsf{w}" }, "𝗑": { math: "\\mathsf{x}" }, "𝗒": { math: "\\mathsf{y}" }, "𝗓": { math: "\\mathsf{z}" }, "𝗔": { math: "\\mathsfbf{A}" }, "𝗕": { math: "\\mathsfbf{B}" }, "𝗖": { math: "\\mathsfbf{C}" }, "𝗗": { math: "\\mathsfbf{D}" }, "𝗘": { math: "\\mathsfbf{E}" }, "𝗙": { math: "\\mathsfbf{F}" }, "𝗚": { math: "\\mathsfbf{G}" }, "𝗛": { math: "\\mathsfbf{H}" }, "𝗜": { math: "\\mathsfbf{I}" }, "𝗝": { math: "\\mathsfbf{J}" }, "𝗞": { math: "\\mathsfbf{K}" }, "𝗟": { math: "\\mathsfbf{L}" }, "𝗠": { math: "\\mathsfbf{M}" }, "𝗡": { math: "\\mathsfbf{N}" }, "𝗢": { math: "\\mathsfbf{O}" }, "𝗣": { math: "\\mathsfbf{P}" }, "𝗤": { math: "\\mathsfbf{Q}" }, "𝗥": { math: "\\mathsfbf{R}" }, "𝗦": { math: "\\mathsfbf{S}" }, "𝗧": { math: "\\mathsfbf{T}" }, "𝗨": { math: "\\mathsfbf{U}" }, "𝗩": { math: "\\mathsfbf{V}" }, "𝗪": { math: "\\mathsfbf{W}" }, "𝗫": { math: "\\mathsfbf{X}" }, "𝗬": { math: "\\mathsfbf{Y}" }, "𝗭": { math: "\\mathsfbf{Z}" }, "𝗮": { math: "\\mathsfbf{a}" }, "𝗯": { math: "\\mathsfbf{b}" }, "𝗰": { math: "\\mathsfbf{c}" }, "𝗱": { math: "\\mathsfbf{d}" }, "𝗲": { math: "\\mathsfbf{e}" }, "𝗳": { math: "\\mathsfbf{f}" }, "𝗴": { math: "\\mathsfbf{g}" }, "𝗵": { math: "\\mathsfbf{h}" }, "𝗶": { math: "\\mathsfbf{i}" }, "𝗷": { math: "\\mathsfbf{j}" }, "𝗸": { math: "\\mathsfbf{k}" }, "𝗹": { math: "\\mathsfbf{l}" }, "𝗺": { math: "\\mathsfbf{m}" }, "𝗻": { math: "\\mathsfbf{n}" }, "𝗼": { math: "\\mathsfbf{o}" }, "𝗽": { math: "\\mathsfbf{p}" }, "𝗾": { math: "\\mathsfbf{q}" }, "𝗿": { math: "\\mathsfbf{r}" }, "𝘀": { math: "\\mathsfbf{s}" }, "𝘁": { math: "\\mathsfbf{t}" }, "𝘂": { math: "\\mathsfbf{u}" }, "𝘃": { math: "\\mathsfbf{v}" }, "𝘄": { math: "\\mathsfbf{w}" }, "𝘅": { math: "\\mathsfbf{x}" }, "𝘆": { math: "\\mathsfbf{y}" }, "𝘇": { math: "\\mathsfbf{z}" }, "𝘈": { math: "\\mathsfsl{A}" }, "𝘉": { math: "\\mathsfsl{B}" }, "𝘊": { math: "\\mathsfsl{C}" }, "𝘋": { math: "\\mathsfsl{D}" }, "𝘌": { math: "\\mathsfsl{E}" }, "𝘍": { math: "\\mathsfsl{F}" }, "𝘎": { math: "\\mathsfsl{G}" }, "𝘏": { math: "\\mathsfsl{H}" }, "𝘐": { math: "\\mathsfsl{I}" }, "𝘑": { math: "\\mathsfsl{J}" }, "𝘒": { math: "\\mathsfsl{K}" }, "𝘓": { math: "\\mathsfsl{L}" }, "𝘔": { math: "\\mathsfsl{M}" }, "𝘕": { math: "\\mathsfsl{N}" }, "𝘖": { math: "\\mathsfsl{O}" }, "𝘗": { math: "\\mathsfsl{P}" }, "𝘘": { math: "\\mathsfsl{Q}" }, "𝘙": { math: "\\mathsfsl{R}" }, "𝘚": { math: "\\mathsfsl{S}" }, "𝘛": { math: "\\mathsfsl{T}" }, "𝘜": { math: "\\mathsfsl{U}" }, "𝘝": { math: "\\mathsfsl{V}" }, "𝘞": { math: "\\mathsfsl{W}" }, "𝘟": { math: "\\mathsfsl{X}" }, "𝘠": { math: "\\mathsfsl{Y}" }, "𝘡": { math: "\\mathsfsl{Z}" }, "𝘢": { math: "\\mathsfsl{a}" }, "𝘣": { math: "\\mathsfsl{b}" }, "𝘤": { math: "\\mathsfsl{c}" }, "𝘥": { math: "\\mathsfsl{d}" }, "𝘦": { math: "\\mathsfsl{e}" }, "𝘧": { math: "\\mathsfsl{f}" }, "𝘨": { math: "\\mathsfsl{g}" }, "𝘩": { math: "\\mathsfsl{h}" }, "𝘪": { math: "\\mathsfsl{i}" }, "𝘫": { math: "\\mathsfsl{j}" }, "𝘬": { math: "\\mathsfsl{k}" }, "𝘭": { math: "\\mathsfsl{l}" }, "𝘮": { math: "\\mathsfsl{m}" }, "𝘯": { math: "\\mathsfsl{n}" }, "𝘰": { math: "\\mathsfsl{o}" }, "𝘱": { math: "\\mathsfsl{p}" }, "𝘲": { math: "\\mathsfsl{q}" }, "𝘳": { math: "\\mathsfsl{r}" }, "𝘴": { math: "\\mathsfsl{s}" }, "𝘵": { math: "\\mathsfsl{t}" }, "𝘶": { math: "\\mathsfsl{u}" }, "𝘷": { math: "\\mathsfsl{v}" }, "𝘸": { math: "\\mathsfsl{w}" }, "𝘹": { math: "\\mathsfsl{x}" }, "𝘺": { math: "\\mathsfsl{y}" }, "𝘻": { math: "\\mathsfsl{z}" }, "𝘼": { math: "\\mathsfbfsl{A}" }, "𝘽": { math: "\\mathsfbfsl{B}" }, "𝘾": { math: "\\mathsfbfsl{C}" }, "𝘿": { math: "\\mathsfbfsl{D}" }, "𝙀": { math: "\\mathsfbfsl{E}" }, "𝙁": { math: "\\mathsfbfsl{F}" }, "𝙂": { math: "\\mathsfbfsl{G}" }, "𝙃": { math: "\\mathsfbfsl{H}" }, "𝙄": { math: "\\mathsfbfsl{I}" }, "𝙅": { math: "\\mathsfbfsl{J}" }, "𝙆": { math: "\\mathsfbfsl{K}" }, "𝙇": { math: "\\mathsfbfsl{L}" }, "𝙈": { math: "\\mathsfbfsl{M}" }, "𝙉": { math: "\\mathsfbfsl{N}" }, "𝙊": { math: "\\mathsfbfsl{O}" }, "𝙋": { math: "\\mathsfbfsl{P}" }, "𝙌": { math: "\\mathsfbfsl{Q}" }, "𝙍": { math: "\\mathsfbfsl{R}" }, "𝙎": { math: "\\mathsfbfsl{S}" }, "𝙏": { math: "\\mathsfbfsl{T}" }, "𝙐": { math: "\\mathsfbfsl{U}" }, "𝙑": { math: "\\mathsfbfsl{V}" }, "𝙒": { math: "\\mathsfbfsl{W}" }, "𝙓": { math: "\\mathsfbfsl{X}" }, "𝙔": { math: "\\mathsfbfsl{Y}" }, "𝙕": { math: "\\mathsfbfsl{Z}" }, "𝙖": { math: "\\mathsfbfsl{a}" }, "𝙗": { math: "\\mathsfbfsl{b}" }, "𝙘": { math: "\\mathsfbfsl{c}" }, "𝙙": { math: "\\mathsfbfsl{d}" }, "𝙚": { math: "\\mathsfbfsl{e}" }, "𝙛": { math: "\\mathsfbfsl{f}" }, "𝙜": { math: "\\mathsfbfsl{g}" }, "𝙝": { math: "\\mathsfbfsl{h}" }, "𝙞": { math: "\\mathsfbfsl{i}" }, "𝙟": { math: "\\mathsfbfsl{j}" }, "𝙠": { math: "\\mathsfbfsl{k}" }, "𝙡": { math: "\\mathsfbfsl{l}" }, "𝙢": { math: "\\mathsfbfsl{m}" }, "𝙣": { math: "\\mathsfbfsl{n}" }, "𝙤": { math: "\\mathsfbfsl{o}" }, "𝙥": { math: "\\mathsfbfsl{p}" }, "𝙦": { math: "\\mathsfbfsl{q}" }, "𝙧": { math: "\\mathsfbfsl{r}" }, "𝙨": { math: "\\mathsfbfsl{s}" }, "𝙩": { math: "\\mathsfbfsl{t}" }, "𝙪": { math: "\\mathsfbfsl{u}" }, "𝙫": { math: "\\mathsfbfsl{v}" }, "𝙬": { math: "\\mathsfbfsl{w}" }, "𝙭": { math: "\\mathsfbfsl{x}" }, "𝙮": { math: "\\mathsfbfsl{y}" }, "𝙯": { math: "\\mathsfbfsl{z}" }, "𝙰": { math: "\\mathtt{A}" }, "𝙱": { math: "\\mathtt{B}" }, "𝙲": { math: "\\mathtt{C}" }, "𝙳": { math: "\\mathtt{D}" }, "𝙴": { math: "\\mathtt{E}" }, "𝙵": { math: "\\mathtt{F}" }, "𝙶": { math: "\\mathtt{G}" }, "𝙷": { math: "\\mathtt{H}" }, "𝙸": { math: "\\mathtt{I}" }, "𝙹": { math: "\\mathtt{J}" }, "𝙺": { math: "\\mathtt{K}" }, "𝙻": { math: "\\mathtt{L}" }, "𝙼": { math: "\\mathtt{M}" }, "𝙽": { math: "\\mathtt{N}" }, "𝙾": { math: "\\mathtt{O}" }, "𝙿": { math: "\\mathtt{P}" }, "𝚀": { math: "\\mathtt{Q}" }, "𝚁": { math: "\\mathtt{R}" }, "𝚂": { math: "\\mathtt{S}" }, "𝚃": { math: "\\mathtt{T}" }, "𝚄": { math: "\\mathtt{U}" }, "𝚅": { math: "\\mathtt{V}" }, "𝚆": { math: "\\mathtt{W}" }, "𝚇": { math: "\\mathtt{X}" }, "𝚈": { math: "\\mathtt{Y}" }, "𝚉": { math: "\\mathtt{Z}" }, "𝚊": { math: "\\mathtt{a}" }, "𝚋": { math: "\\mathtt{b}" }, "𝚌": { math: "\\mathtt{c}" }, "𝚍": { math: "\\mathtt{d}" }, "𝚎": { math: "\\mathtt{e}" }, "𝚏": { math: "\\mathtt{f}" }, "𝚐": { math: "\\mathtt{g}" }, "𝚑": { math: "\\mathtt{h}" }, "𝚒": { math: "\\mathtt{i}" }, "𝚓": { math: "\\mathtt{j}" }, "𝚔": { math: "\\mathtt{k}" }, "𝚕": { math: "\\mathtt{l}" }, "𝚖": { math: "\\mathtt{m}" }, "𝚗": { math: "\\mathtt{n}" }, "𝚘": { math: "\\mathtt{o}" }, "𝚙": { math: "\\mathtt{p}" }, "𝚚": { math: "\\mathtt{q}" }, "𝚛": { math: "\\mathtt{r}" }, "𝚜": { math: "\\mathtt{s}" }, "𝚝": { math: "\\mathtt{t}" }, "𝚞": { math: "\\mathtt{u}" }, "𝚟": { math: "\\mathtt{v}" }, "𝚠": { math: "\\mathtt{w}" }, "𝚡": { math: "\\mathtt{x}" }, "𝚢": { math: "\\mathtt{y}" }, "𝚣": { math: "\\mathtt{z}" }, "𝚤": { math: "\\imath" }, "𝚥": { math: "\\jmath" }, "𝚨": { math: "\\mathbf{A}" }, "𝚩": { math: "\\mathbf{B}" }, "𝚪": { math: "\\mathbf{\\Gamma}" }, "𝚫": { math: "\\mathbf{\\Delta}" }, "𝚬": { math: "\\mathbf{E}" }, "𝚭": { math: "\\mathbf{Z}" }, "𝚮": { math: "\\mathbf{H}" }, "𝚯": { math: "\\mathbf{\\Theta}" }, "𝚰": { math: "\\mathbf{I}" }, "𝚱": { math: "\\mathbf{K}" }, "𝚲": { math: "\\mathbf{\\Lambda}" }, "𝚳": { math: "M" }, "𝚴": { math: "N" }, "𝚵": { math: "\\mathbf{\\Xi}" }, "𝚶": { math: "O" }, "𝚷": { math: "\\mathbf{\\Pi}" }, "𝚸": { math: "\\mathbf{P}" }, "𝚹": { math: "\\mathbf{\\vartheta}" }, "𝚺": { math: "\\mathbf{\\Sigma}" }, "𝚻": { math: "\\mathbf{T}" }, "𝚼": { math: "\\mathbf{\\Upsilon}" }, "𝚽": { math: "\\mathbf{\\Phi}" }, "𝚾": { math: "\\mathbf{X}" }, "𝚿": { math: "\\mathbf{\\Psi}" }, "𝛀": { math: "\\mathbf{\\Omega}" }, "𝛁": { math: "\\mathbf{\\nabla}" }, "𝛂": { math: "\\mathbf{\\alpha}" }, "𝛃": { math: "\\mathbf{\\beta}" }, "𝛄": { math: "\\mathbf{\\gamma}" }, "𝛅": { math: "\\mathbf{\\delta}" }, "𝛆": { math: "\\mathbf{\\epsilon}" }, "𝛇": { math: "\\mathbf{\\zeta}" }, "𝛈": { math: "\\mathbf{\\eta}" }, "𝛉": { math: "\\mathbf{\\theta}" }, "𝛊": { math: "\\mathbf{I}" }, "𝛋": { math: "\\mathbf{K}" }, "𝛌": { math: "\\mathbf{\\lambda}" }, "𝛍": { math: "M" }, "𝛎": { math: "N" }, "𝛏": { math: "\\mathbf{\\xi}" }, "𝛐": { math: "O" }, "𝛑": { math: "\\mathbf{\\pi}" }, "𝛒": { math: "\\mathbf{P}" }, "𝛓": { math: "\\mathbf{\\varsigma}" }, "𝛔": { math: "\\mathbf{\\sigma}" }, "𝛕": { math: "\\mathbf{T}" }, "𝛖": { math: "\\mathbf{\\upsilon}" }, "𝛗": { math: "\\mathbf{\\phi}" }, "𝛘": { math: "\\mathbf{X}" }, "𝛙": { math: "\\mathbf{\\psi}" }, "𝛚": { math: "\\mathbf{\\omega}" }, "𝛛": { math: "\\partial" }, "𝛜": { math: "\\in" }, "𝛝": { math: "\\mathbf{\\vartheta}" }, "𝛞": { math: "\\mathbf{\\varkappa}" }, "𝛟": { math: "\\mathbf{\\phi}" }, "𝛠": { math: "\\mathbf{\\varrho}" }, "𝛡": { math: "\\mathbf{\\varpi}" }, "𝛢": { math: "\\mathsl{A}" }, "𝛣": { math: "\\mathsl{B}" }, "𝛤": { math: "\\mathsl{\\Gamma}" }, "𝛥": { math: "\\mathsl{\\Delta}" }, "𝛦": { math: "\\mathsl{E}" }, "𝛧": { math: "\\mathsl{Z}" }, "𝛨": { math: "\\mathsl{H}" }, "𝛩": { math: "\\mathsl{\\Theta}" }, "𝛪": { math: "\\mathsl{I}" }, "𝛫": { math: "\\mathsl{K}" }, "𝛬": { math: "\\mathsl{\\Lambda}" }, "𝛭": { math: "M" }, "𝛮": { math: "N" }, "𝛯": { math: "\\mathsl{\\Xi}" }, "𝛰": { math: "O" }, "𝛱": { math: "\\mathsl{\\Pi}" }, "𝛲": { math: "\\mathsl{P}" }, "𝛳": { math: "\\mathsl{\\Theta}" }, "𝛴": { math: "\\mathsl{\\Sigma}" }, "𝛵": { math: "\\mathsl{T}" }, "𝛶": { math: "\\mathsl{\\Upsilon}" }, "𝛷": { math: "\\mathsl{\\Phi}" }, "𝛸": { math: "\\mathsl{X}" }, "𝛹": { math: "\\mathsl{\\Psi}" }, "𝛺": { math: "\\mathsl{\\Omega}" }, "𝛻": { math: "\\mathsl{\\nabla}" }, "𝛼": { math: "\\mathsl{A}" }, "𝛽": { math: "\\mathsl{B}" }, "𝛾": { math: "\\mathsl{\\gamma}" }, "𝛿": { math: "\\mathsl{\\delta}" }, "𝜀": { math: "\\mathsl{E}" }, "𝜁": { math: "\\mathsl{Z}" }, "𝜂": { math: "\\mathsl{H}" }, "𝜃": { math: "\\mathsl{\\theta}" }, "𝜄": { math: "\\mathsl{I}" }, "𝜅": { math: "\\mathsl{K}" }, "𝜆": { math: "\\mathsl{\\lambda}" }, "𝜇": { math: "\\mu" }, "𝜈": { math: "\\nu" }, "𝜉": { math: "\\mathsl{\\xi}" }, "𝜊": { math: "o" }, "𝜋": { math: "\\mathsl{\\pi}" }, "𝜌": { math: "\\mathsl{P}" }, "𝜍": { math: "\\mathsl{\\varsigma}" }, "𝜎": { math: "\\mathsl{\\sigma}" }, "𝜏": { math: "\\mathsl{T}" }, "𝜐": { math: "\\mathsl{\\upsilon}" }, "𝜑": { math: "\\mathsl{\\varphi}" }, "𝜒": { math: "\\mathsl{X}" }, "𝜓": { math: "\\mathsl{\\psi}" }, "𝜔": { math: "\\mathsl{\\omega}" }, "𝜕": { math: "\\partial" }, "𝜖": { math: "\\in" }, "𝜗": { math: "\\mathsl{\\vartheta}" }, "𝜘": { math: "\\mathsl{\\varkappa}" }, "𝜙": { math: "\\mathsl{\\phi}" }, "𝜚": { math: "\\mathsl{\\varrho}" }, "𝜛": { math: "\\mathsl{\\varpi}" }, "𝜜": { math: "\\mathbit{A}" }, "𝜝": { math: "\\mathbit{B}" }, "𝜞": { math: "\\mathbit{\\Gamma}" }, "𝜟": { math: "\\mathbit{\\Delta}" }, "𝜠": { math: "\\mathbit{E}" }, "𝜡": { math: "\\mathbit{Z}" }, "𝜢": { math: "\\mathbit{H}" }, "𝜣": { math: "\\mathbit{\\Theta}" }, "𝜤": { math: "\\mathbit{I}" }, "𝜥": { math: "\\mathbit{K}" }, "𝜦": { math: "\\mathbit{\\Lambda}" }, "𝜧": { math: "M" }, "𝜨": { math: "N" }, "𝜩": { math: "\\mathbit{\\Xi}" }, "𝜪": { math: "O" }, "𝜫": { math: "\\mathbit{\\Pi}" }, "𝜬": { math: "\\mathbit{P}" }, "𝜭": { math: "\\mathbit{O}" }, "𝜮": { math: "\\mathbit{\\Sigma}" }, "𝜯": { math: "\\mathbit{T}" }, "𝜰": { math: "\\mathbit{\\Upsilon}" }, "𝜱": { math: "\\mathbit{\\Phi}" }, "𝜲": { math: "\\mathbit{X}" }, "𝜳": { math: "\\mathbit{\\Psi}" }, "𝜴": { math: "\\mathbit{\\Omega}" }, "𝜵": { math: "\\mathbit{\\nabla}" }, "𝜶": { math: "\\mathbit{\\alpha}" }, "𝜷": { math: "\\mathbit{\\beta}" }, "𝜸": { math: "\\mathbit{\\gamma}" }, "𝜹": { math: "\\mathbit{\\delta}" }, "𝜺": { math: "\\mathbit{\\epsilon}" }, "𝜻": { math: "\\mathbit{\\zeta}" }, "𝜼": { math: "\\mathbit{\\eta}" }, "𝜽": { math: "\\mathbit{\\theta}" }, "𝜾": { math: "\\mathbit{\\imath}" }, "𝜿": { math: "\\mathbit{\\kappa}" }, "𝝀": { math: "\\mathbit{\\lambda}" }, "𝝁": { math: "\\mu" }, "𝝂": { math: "N" }, "𝝃": { math: "\\mathbit{\\xi}" }, "𝝄": { math: "O" }, "𝝅": { math: "\\mathbit{\\pi}" }, "𝝆": { math: "\\mathbit{\\rho}" }, "𝝇": { math: "\\mathbit{\\varsigma}" }, "𝝈": { math: "\\mathbit{\\sigma}" }, "𝝉": { math: "\\mathbit{\\tau}" }, "𝝊": { math: "\\mathbit{\\upsilon}" }, "𝝋": { math: "\\mathbit{\\varphi}" }, "𝝌": { math: "\\mathbit{\\chi}" }, "𝝍": { math: "\\mathbit{\\psi}" }, "𝝎": { math: "\\mathbit{\\omega}" }, "𝝏": { math: "\\partial" }, "𝝐": { math: "\\in" }, "𝝑": { math: "\\mathbit{\\vartheta}" }, "𝝒": { math: "\\mathbit{\\varkappa}" }, "𝝓": { math: "\\mathbit{\\phi}" }, "𝝔": { math: "\\mathbit{\\varrho}" }, "𝝕": { math: "\\mathbit{\\varpi}" }, "𝝖": { math: "\\mathsfbf{A}" }, "𝝗": { math: "\\mathsfbf{B}" }, "𝝘": { math: "\\mathsfbf{\\Gamma}" }, "𝝙": { math: "\\mathsfbf{\\Delta}" }, "𝝚": { math: "\\mathsfbf{E}" }, "𝝛": { math: "\\mathsfbf{Z}" }, "𝝜": { math: "\\mathsfbf{H}" }, "𝝝": { math: "\\mathsfbf{\\Theta}" }, "𝝞": { math: "\\mathsfbf{I}" }, "𝝟": { math: "\\mathsfbf{K}" }, "𝝠": { math: "\\mathsfbf{\\Lambda}" }, "𝝡": { math: "M" }, "𝝢": { math: "N" }, "𝝣": { math: "\\mathsfbf{\\Xi}" }, "𝝤": { math: "O" }, "𝝥": { math: "\\mathsfbf{\\Pi}" }, "𝝦": { math: "\\mathsfbf{P}" }, "𝝧": { math: "\\mathsfbf{\\Theta}" }, "𝝨": { math: "\\mathsfbf{\\Sigma}" }, "𝝩": { math: "\\mathsfbf{T}" }, "𝝪": { math: "\\mathsfbf{\\Upsilon}" }, "𝝫": { math: "\\mathsfbf{\\Phi}" }, "𝝬": { math: "\\mathsfbf{X}" }, "𝝭": { math: "\\mathsfbf{\\Psi}" }, "𝝮": { math: "\\mathsfbf{\\Omega}" }, "𝝯": { math: "\\mathsfbf{\\nabla}" }, "𝝰": { math: "\\mathsfbf{\\alpha}" }, "𝝱": { math: "\\mathsfbf{\\beta}" }, "𝝲": { math: "\\mathsfbf{\\gamma}" }, "𝝳": { math: "\\mathsfbf{\\delta}" }, "𝝴": { math: "\\mathsfbf{\\varepsilon}" }, "𝝵": { math: "\\mathsfbf{\\zeta}" }, "𝝶": { math: "\\mathsfbf{\\eta}" }, "𝝷": { math: "\\mathsfbf{\\theta}" }, "𝝸": { math: "\\mathsfbf{\\imath}" }, "𝝹": { math: "\\mathsfbf{\\kappa}" }, "𝝺": { math: "\\mathsfbf{\\lambda}" }, "𝝻": { math: "\\mu" }, "𝝼": { math: "\\nu" }, "𝝽": { math: "\\mathsfbf{\\xi}" }, "𝝾": { math: "o" }, "𝝿": { math: "\\mathsfbf{\\pi}" }, "𝞀": { math: "\\mathsfbf{\\rho}" }, "𝞁": { math: "\\mathsfbf{\\varsigma}" }, "𝞂": { math: "\\mathsfbf{\\sigma}" }, "𝞃": { math: "\\mathsfbf{\\tau}" }, "𝞄": { math: "\\mathsfbf{\\upsilon}" }, "𝞅": { math: "\\mathsfbf{\\varphi}" }, "𝞆": { math: "\\mathsfbf{\\chi}" }, "𝞇": { math: "\\mathsfbf{\\psi}" }, "𝞈": { math: "\\mathsfbf{\\omega}" }, "𝞉": { math: "\\partial" }, "𝞊": { math: "\\in" }, "𝞋": { math: "\\mathsfbf{\\vartheta}" }, "𝞌": { math: "\\mathsfbf{\\varkappa}" }, "𝞍": { math: "\\mathsfbf{\\phi}" }, "𝞎": { math: "\\mathsfbf{\\varrho}" }, "𝞏": { math: "\\mathsfbf{\\varpi}" }, "𝞐": { math: "\\mathsfbfsl{A}" }, "𝞑": { math: "\\mathsfbfsl{B}" }, "𝞒": { math: "\\mathsfbfsl{\\Gamma}" }, "𝞓": { math: "\\mathsfbfsl{\\Delta}" }, "𝞔": { math: "\\mathsfbfsl{E}" }, "𝞕": { math: "\\mathsfbfsl{Z}" }, "𝞖": { math: "\\mathsfbfsl{H}" }, "𝞗": { math: "\\mathsfbfsl{\\Theta}" }, "𝞘": { math: "\\mathsfbfsl{I}" }, "𝞙": { math: "\\mathsfbfsl{K}" }, "𝞚": { math: "\\mathsfbfsl{\\Lambda}" }, "𝞛": { math: "\\mathsfbfsl{M}" }, "𝞜": { math: "\\mathsfbfsl{N}" }, "𝞝": { math: "\\mathsfbfsl{\\Xi}" }, "𝞞": { math: "\\mathsfbfsl{O}" }, "𝞟": { math: "\\mathsfbfsl{\\Pi}" }, "𝞠": { math: "\\mathsfbfsl{P}" }, "𝞡": { math: "\\mathsfbfsl{\\Theta}" }, "𝞢": { math: "\\mathsfbfsl{\\Sigma}" }, "𝞣": { math: "\\mathsfbfsl{T}" }, "𝞤": { math: "\\mathsfbfsl{\\Upsilon}" }, "𝞥": { math: "\\mathsfbfsl{\\Phi}" }, "𝞦": { math: "\\mathsfbfsl{X}" }, "𝞧": { math: "\\mathsfbfsl{\\Psi}" }, "𝞨": { math: "\\mathsfbfsl{\\Omega}" }, "𝞩": { math: "\\mathsfbfsl{\\nabla}" }, "𝞪": { math: "\\mathsfbfsl{\\alpha}" }, "𝞫": { math: "\\mathsfbfsl{\\beta}" }, "𝞬": { math: "\\mathsfbfsl{\\gamma}" }, "𝞭": { math: "\\mathsfbfsl{\\delta}" }, "𝞮": { math: "\\mathsfbfsl{\\varepsilon}" }, "𝞯": { math: "\\mathsfbfsl{\\zeta}" }, "𝞰": { math: "\\mathsfbfsl{\\eta}" }, "𝞱": { math: "\\mathsfbfsl{\\theta}" }, "𝞲": { math: "\\mathsfbfsl{\\imath}" }, "𝞳": { math: "\\mathsfbfsl{\\kappa}" }, "𝞴": { math: "\\mathsfbfsl{\\lambda}" }, "𝞵": { math: "\\mu" }, "𝞶": { math: "\\nu" }, "𝞷": { math: "\\mathsfbfsl{\\xi}" }, "𝞸": { math: "o" }, "𝞹": { math: "\\mathsfbfsl{\\pi}" }, "𝞺": { math: "\\mathsfbfsl{\\rho}" }, "𝞻": { math: "\\mathsfbfsl{\\varsigma}" }, "𝞼": { math: "\\mathsfbfsl{\\sigma}" }, "𝞽": { math: "\\mathsfbfsl{\\tau}" }, "𝞾": { math: "\\mathsfbfsl{\\upsilon}" }, "𝞿": { math: "\\mathsfbfsl{\\varphi}" }, "𝟀": { math: "\\mathsfbfsl{\\chi}" }, "𝟁": { math: "\\mathsfbfsl{\\psi}" }, "𝟂": { math: "\\mathsfbfsl{\\omega}" }, "𝟃": { math: "\\partial" }, "𝟄": { math: "\\in" }, "𝟅": { math: "\\mathsfbfsl{\\vartheta}" }, "𝟆": { math: "\\mathsfbfsl{\\varkappa}" }, "𝟇": { math: "\\mathsfbfsl{\\phi}" }, "𝟈": { math: "\\mathsfbfsl{\\varrho}" }, "𝟉": { math: "\\mathsfbfsl{\\varpi}" }, "𝟊": { math: "\\mbfDigamma" }, "𝟋": { math: "\\mbfdigamma" }, "𝟎": { math: "\\mathbf{0}" }, "𝟏": { math: "\\mathbf{1}" }, "𝟐": { math: "\\mathbf{2}" }, "𝟑": { math: "\\mathbf{3}" }, "𝟒": { math: "\\mathbf{4}" }, "𝟓": { math: "\\mathbf{5}" }, "𝟔": { math: "\\mathbf{6}" }, "𝟕": { math: "\\mathbf{7}" }, "𝟖": { math: "\\mathbf{8}" }, "𝟗": { math: "\\mathbf{9}" }, "𝟘": { math: "\\mathbb{0}" }, "𝟙": { math: "\\mathbb{1}" }, "𝟚": { math: "\\mathbb{2}" }, "𝟛": { math: "\\mathbb{3}" }, "𝟜": { math: "\\mathbb{4}" }, "𝟝": { math: "\\mathbb{5}" }, "𝟞": { math: "\\mathbb{6}" }, "𝟟": { math: "\\mathbb{7}" }, "𝟠": { math: "\\mathbb{8}" }, "𝟡": { math: "\\mathbb{9}" }, "𝟢": { math: "\\mathsf{0}" }, "𝟣": { math: "\\mathsf{1}" }, "𝟤": { math: "\\mathsf{2}" }, "𝟥": { math: "\\mathsf{3}" }, "𝟦": { math: "\\mathsf{4}" }, "𝟧": { math: "\\mathsf{5}" }, "𝟨": { math: "\\mathsf{6}" }, "𝟩": { math: "\\mathsf{7}" }, "𝟪": { math: "\\mathsf{8}" }, "𝟫": { math: "\\mathsf{9}" }, "𝟬": { math: "\\mathsfbf{0}" }, "𝟭": { math: "\\mathsfbf{1}" }, "𝟮": { math: "\\mathsfbf{2}" }, "𝟯": { math: "\\mathsfbf{3}" }, "𝟰": { math: "\\mathsfbf{4}" }, "𝟱": { math: "\\mathsfbf{5}" }, "𝟲": { math: "\\mathsfbf{6}" }, "𝟳": { math: "\\mathsfbf{7}" }, "𝟴": { math: "\\mathsfbf{8}" }, "𝟵": { math: "\\mathsfbf{9}" }, "𝟶": { math: "\\mathtt{0}" }, "𝟷": { math: "\\mathtt{1}" }, "𝟸": { math: "\\mathtt{2}" }, "𝟹": { math: "\\mathtt{3}" }, "𝟺": { math: "\\mathtt{4}" }, "𝟻": { math: "\\mathtt{5}" }, "𝟼": { math: "\\mathtt{6}" }, "𝟽": { math: "\\mathtt{7}" }, "𝟾": { math: "\\mathtt{8}" }, "𝟿": { math: "\\mathtt{9}" } }; var $$1 = { math: "\\$", text: "\\$" }; var _$1 = { math: "\\_", text: "\\_" }; var require$$1 = { "#": { math: "\\#", text: "\\#" }, $: $$1, "%": { math: "\\%", text: "\\%" }, "&": { math: "\\&", text: "\\&" }, "/​": { text: "{\\slash}" }, "<": { math: "<" }, ">": { math: ">" }, "\\": { math: "\\backslash", text: "{\\textbackslash}" }, "^": { math: "\\sphat", text: "\\^" }, _: _$1, "i︠a︡": { text: "\\t{ia}" }, "{": { math: "\\lbrace", text: "\\{" }, "}": { math: "\\rbrace", text: "\\}" }, "~": { math: "\\sptilde", text: "{\\textasciitilde}" }, " ": { math: "~", space: true, text: "~" }, "¡": { text: "{\\textexclamdown}" }, "¢": { math: "\\cent", text: "{\\textcent}", textpackages: [ "textcomp" ] }, "£": { math: "\\pounds", text: "{\\textsterling}", textpackages: [ "textcomp" ] }, "¤": { text: "{\\textcurrency}", textpackages: [ "textcomp" ] }, "¥": { math: "\\yen", text: "{\\textyen}", textpackages: [ "textcomp" ] }, "¦": { text: "{\\textbrokenbar}", textpackages: [ "textcomp" ] }, "§": { text: "{\\textsection}", textpackages: [ "textcomp" ] }, "¨": { math: "\\spddot", text: "{\\textasciidieresis}" }, "©": { text: "{\\textcopyright}", textpackages: [ "textcomp" ] }, "ª": { text: "{\\textordfeminine}", textpackages: [ "textcomp" ] }, "«": { text: "{\\guillemotleft}" }, "¬": { math: "\\lnot" }, "­": { math: "\\-", text: "\\-" }, "®": { math: "\\circledR", text: "{\\textregistered}", textpackages: [ "textcomp" ] }, "¯": { text: "{\\textasciimacron}" }, "°": { math: "^\\circ", text: "{\\textdegree}", textpackages: [ "textcomp" ] }, "±": { math: "\\pm" }, "²": { math: "^{2}" }, "³": { math: "^{3}" }, "´": { text: "{\\textasciiacute}" }, "µ": { text: "{\\textmu}" }, "¶": { text: "{\\textparagraph}", textpackages: [ "textcomp" ] }, "·": { math: "\\cdot" }, "¸": { text: "{\\c}" }, "¹": { math: "^{1}" }, "º": { text: "{\\textordmasculine}", textpackages: [ "textcomp" ] }, "»": { text: "{\\guillemotright}" }, "¼": { math: "\\frac{1}{4}" }, "½": { math: "\\frac{1}{2}" }, "¾": { math: "\\frac{3}{4}" }, "¿": { text: "{\\textquestiondown}" }, "À": { text: "{\\`A}" }, "Á": { text: "{\\'A}" }, "Â": { text: "{\\^A}" }, "Ã": { text: "{\\~A}" }, "Ä": { text: "{\\\"A}" }, "Å": { text: "{\\AA}" }, "Æ": { text: "{\\AE}" }, "Ç": { text: "{\\c C}" }, "È": { text: "{\\`E}" }, "É": { text: "{\\'E}" }, "Ê": { text: "{\\^E}" }, "Ë": { text: "{\\\"E}" }, "Ì": { text: "{\\`I}" }, "Í": { text: "{\\'I}" }, "Î": { text: "{\\^I}" }, "Ï": { text: "{\\\"I}" }, "Ð": { text: "{\\DH}" }, "Ñ": { text: "{\\~N}" }, "Ò": { text: "{\\`O}" }, "Ó": { text: "{\\'O}" }, "Ô": { text: "{\\^O}" }, "Õ": { text: "{\\~O}" }, "Ö": { text: "{\\\"O}" }, "×": { math: "\\times", text: "{\\texttimes}" }, "Ø": { text: "{\\O}" }, "Ù": { text: "{\\`U}" }, "Ú": { text: "{\\'U}" }, "Û": { text: "{\\^U}" }, "Ü": { text: "{\\\"U}" }, "Ý": { text: "{\\'Y}" }, "Þ": { text: "{\\TH}" }, "ß": { text: "{\\ss}" }, "à": { text: "{\\`a}" }, "á": { text: "{\\'a}" }, "â": { text: "{\\^a}" }, "ã": { text: "{\\~a}" }, "ä": { text: "{\\\"a}" }, "å": { text: "{\\aa}" }, "æ": { text: "{\\ae}" }, "ç": { text: "{\\c c}" }, "è": { text: "{\\`e}" }, "é": { text: "{\\'e}" }, "ê": { text: "{\\^e}" }, "ë": { text: "{\\\"e}" }, "ì": { text: "{\\`i}" }, "í": { text: "{\\'i}" }, "î": { text: "{\\^i}" }, "ï": { text: "{\\\"i}" }, "ð": { math: "\\eth", mathpackages: [ "amssymb", "arevmath" ], text: "{\\dh}" }, "ñ": { text: "{\\~n}" }, "ò": { text: "{\\`o}" }, "ó": { text: "{\\'o}" }, "ô": { text: "{\\^o}" }, "õ": { text: "{\\~o}" }, "ö": { text: "{\\\"o}" }, "÷": { math: "\\div" }, "ø": { text: "{\\o}" }, "ù": { text: "{\\`u}" }, "ú": { text: "{\\'u}" }, "û": { text: "{\\^u}" }, "ü": { text: "{\\\"u}" }, "ý": { text: "{\\'y}" }, "þ": { text: "{\\th}" }, "ÿ": { text: "{\\\"y}" }, "Ā": { text: "{\\=A}" }, "ā": { text: "{\\=a}" }, "Ă": { text: "{\\u A}" }, "ă": { text: "{\\u a}" }, "Ą": { text: "{\\k{A}}" }, "ą": { text: "{\\k{a}}" }, "Ć": { text: "{\\'C}" }, "ć": { text: "{\\'c}" }, "Ĉ": { text: "{\\^C}" }, "ĉ": { text: "{\\^c}" }, "Ċ": { text: "{\\.C}" }, "ċ": { text: "{\\.c}" }, "Č": { text: "{\\v C}" }, "č": { text: "{\\v c}" }, "Ď": { text: "{\\v D}" }, "ď": { text: "{\\v d}" }, "Đ": { text: "{\\DJ}" }, "đ": { text: "{\\dj}" }, "Ē": { text: "{\\=E}" }, "ē": { text: "{\\=e}" }, "Ĕ": { text: "{\\u E}" }, "ĕ": { text: "{\\u e}" }, "Ė": { text: "{\\.E}" }, "ė": { text: "{\\.e}" }, "Ę": { text: "{\\k{E}}" }, "ę": { text: "{\\k{e}}" }, "Ě": { text: "{\\v E}" }, "ě": { text: "{\\v e}" }, "Ĝ": { text: "{\\^G}" }, "ĝ": { text: "{\\^g}" }, "Ğ": { text: "{\\u G}" }, "ğ": { text: "{\\u g}" }, "Ġ": { text: "{\\.G}" }, "ġ": { text: "{\\.g}" }, "Ģ": { text: "{\\c G}" }, "ģ": { text: "{\\c g}" }, "Ĥ": { text: "{\\^H}" }, "ĥ": { text: "{\\^h}" }, "Ħ": { text: "{\\fontencoding{LELA}\\selectfont\\char40}" }, "ħ": { math: "\\Elzxh" }, "Ĩ": { text: "{\\~I}" }, "ĩ": { text: "{\\~i}" }, "Ī": { text: "{\\=I}" }, "ī": { text: "{\\=i}" }, "Ĭ": { text: "{\\u I}" }, "ĭ": { text: "{\\u \\i}" }, "Į": { text: "{\\k{I}}" }, "į": { text: "{\\k{i}}" }, "İ": { text: "{\\.I}" }, "ı": { math: "\\imath", text: "{\\i}" }, "IJ": { text: "IJ" }, "ij": { text: "ij" }, "Ĵ": { text: "{\\^J}" }, "ĵ": { text: "{\\^\\j}" }, "Ķ": { text: "{\\c K}" }, "ķ": { text: "{\\c k}" }, "ĸ": { text: "{\\fontencoding{LELA}\\selectfont\\char91}" }, "Ĺ": { text: "{\\'L}" }, "ĺ": { text: "{\\'l}" }, "Ļ": { text: "{\\c L}" }, "ļ": { text: "{\\c l}" }, "Ľ": { text: "{\\v L}" }, "ľ": { text: "{\\v l}" }, "Ŀ": { text: "{\\fontencoding{LELA}\\selectfont\\char201}" }, "ŀ": { text: "{\\fontencoding{LELA}\\selectfont\\char202}" }, "Ł": { text: "{\\L}" }, "ł": { text: "{\\l}" }, "Ń": { text: "{\\'N}" }, "ń": { text: "{\\'n}" }, "Ņ": { text: "{\\c N}" }, "ņ": { text: "{\\c n}" }, "Ň": { text: "{\\v N}" }, "ň": { text: "{\\v n}" }, "ʼn": { text: "'n" }, "Ŋ": { text: "{\\NG}" }, "ŋ": { text: "{\\ng}" }, "Ō": { text: "{\\=O}" }, "ō": { text: "{\\=o}" }, "Ŏ": { text: "{\\u O}" }, "ŏ": { text: "{\\u o}" }, "Ő": { text: "{\\H O}" }, "ő": { text: "{\\H o}" }, "Œ": { text: "{\\OE}" }, "œ": { text: "{\\oe}" }, "Ŕ": { text: "{\\'R}" }, "ŕ": { text: "{\\'r}" }, "Ŗ": { text: "{\\c R}" }, "ŗ": { text: "{\\c r}" }, "Ř": { text: "{\\v R}" }, "ř": { text: "{\\v r}" }, "Ś": { text: "{\\'S}" }, "ś": { text: "{\\'s}" }, "Ŝ": { text: "{\\^S}" }, "ŝ": { text: "{\\^s}" }, "Ş": { text: "{\\c S}" }, "ş": { text: "{\\c s}" }, "Š": { text: "{\\v S}" }, "š": { text: "{\\v s}" }, "Ţ": { text: "{\\c T}" }, "ţ": { text: "{\\c t}" }, "Ť": { text: "{\\v T}" }, "ť": { text: "{\\v t}" }, "Ŧ": { text: "{\\fontencoding{LELA}\\selectfont\\char47}" }, "ŧ": { text: "{\\fontencoding{LELA}\\selectfont\\char63}" }, "Ũ": { text: "{\\~U}" }, "ũ": { text: "{\\~u}" }, "Ū": { text: "{\\=U}" }, "ū": { text: "{\\=u}" }, "Ŭ": { text: "{\\u U}" }, "ŭ": { text: "{\\u u}" }, "Ů": { text: "{\\r{U}}" }, "ů": { text: "{\\r{u}}" }, "Ű": { text: "{\\H U}" }, "ű": { text: "{\\H u}" }, "Ų": { text: "{\\k{U}}" }, "ų": { text: "{\\k{u}}" }, "Ŵ": { text: "{\\^W}" }, "ŵ": { text: "{\\^w}" }, "Ŷ": { text: "{\\^Y}" }, "ŷ": { text: "{\\^y}" }, "Ÿ": { text: "{\\\"Y}" }, "Ź": { text: "{\\'Z}" }, "ź": { text: "{\\'z}" }, "Ż": { text: "{\\.Z}" }, "ż": { text: "{\\.z}" }, "Ž": { text: "{\\v Z}" }, "ž": { text: "{\\v z}" }, "ſ": { text: "s" }, "ƒ": { math: "f" }, "ƕ": { text: "{\\texthvlig}" }, "ƞ": { text: "{\\textnrleg}" }, "ƪ": { text: "{\\textesh}" }, "Ƶ": { math: "\\Zbar" }, "ƺ": { text: "{\\fontencoding{LELA}\\selectfont\\char195}" }, "ǂ": { text: "{\\textdoublepipe}" }, "Ǎ": { text: "{\\v A}" }, "ǎ": { text: "{\\v a}" }, "Ǐ": { text: "{\\v I}" }, "ǐ": { text: "{\\v i}" }, "Ǒ": { text: "{\\v O}" }, "ǒ": { text: "{\\v o}" }, "Ǔ": { text: "{\\v U}" }, "ǔ": { text: "{\\v u}" }, "Ǧ": { text: "{\\v G}" }, "ǧ": { text: "{\\v g}" }, "Ǩ": { text: "{\\v K}" }, "ǩ": { text: "{\\v k}" }, "Ǫ": { text: "{\\k{O}}" }, "ǫ": { text: "{\\k{o}}" }, "ǰ": { text: "{\\v j}" }, "Ǵ": { text: "{\\'G}" }, "ǵ": { text: "{\\'g}" }, "Ȩ": { text: "{\\c E}" }, "ȩ": { text: "{\\c e}" }, "ȷ": { math: "\\jmath" }, "ɐ": { math: "\\Elztrna" }, "ɒ": { math: "\\Elztrnsa" }, "ɔ": { math: "\\Elzopeno" }, "ɖ": { math: "\\Elzrtld" }, "ɘ": { text: "{\\fontencoding{LEIP}\\selectfont\\char61}" }, "ə": { math: "\\Elzschwa" }, "ɛ": { math: "\\varepsilon" }, "ɡ": { text: "g" }, "ɣ": { math: "\\Elzpgamma" }, "ɤ": { math: "\\Elzpbgam" }, "ɥ": { math: "\\Elztrnh" }, "ɬ": { math: "\\Elzbtdl" }, "ɭ": { math: "\\Elzrtll" }, "ɯ": { math: "\\Elztrnm" }, "ɰ": { math: "\\Elztrnmlr" }, "ɱ": { math: "\\Elzltlmr" }, "ɲ": { text: "{\\Elzltln}" }, "ɳ": { math: "\\Elzrtln" }, "ɷ": { math: "\\Elzclomeg" }, "ɸ": { text: "{\\textphi}" }, "ɹ": { math: "\\Elztrnr" }, "ɺ": { math: "\\Elztrnrl" }, "ɻ": { math: "\\Elzrttrnr" }, "ɼ": { math: "\\Elzrl" }, "ɽ": { math: "\\Elzrtlr" }, "ɾ": { math: "\\Elzfhr" }, "ɿ": { text: "{\\fontencoding{LEIP}\\selectfont\\char202}" }, "ʂ": { math: "\\Elzrtls" }, "ʃ": { math: "\\Elzesh" }, "ʇ": { math: "\\Elztrnt" }, "ʈ": { math: "\\Elzrtlt" }, "ʊ": { math: "\\Elzpupsil" }, "ʋ": { math: "\\Elzpscrv" }, "ʌ": { math: "\\Elzinvv" }, "ʍ": { math: "\\Elzinvw" }, "ʎ": { math: "\\Elztrny" }, "ʐ": { math: "\\Elzrtlz" }, "ʒ": { math: "\\Elzyogh" }, "ʔ": { math: "\\Elzglst" }, "ʕ": { math: "\\Elzreglst" }, "ʖ": { math: "\\Elzinglst" }, "ʞ": { text: "{\\textturnk}" }, "ʤ": { math: "\\Elzdyogh" }, "ʧ": { math: "\\Elztesh" }, "ʰ": { math: "^{h}", text: "\\textsuperscript{h}" }, "ʲ": { math: "^{j}", text: "\\textsuperscript{j}" }, "ʳ": { math: "^{r}", text: "\\textsuperscript{r}" }, "ʷ": { math: "^{w}", text: "\\textsuperscript{w}" }, "ʸ": { math: "^{y}", text: "\\textsuperscript{y}" }, "ʹ": { text: "'" }, "ʻ": { text: "'" }, "ʼ": { text: "'" }, "ʽ": { text: "'" }, "ʿ": { text: "{\\lasp}", textpackages: [ "mathscinet" ] }, "ˆ": { text: "{\\textasciicircum}" }, "ˇ": { text: "{\\textasciicaron}" }, "ˈ": { math: "\\Elzverts" }, "ˉ": { text: "-" }, "ˌ": { math: "\\Elzverti" }, "ː": { math: "\\Elzlmrk" }, "ˑ": { math: "\\Elzhlmrk" }, "˒": { math: "\\Elzsbrhr" }, "˓": { math: "\\Elzsblhr" }, "˔": { math: "\\Elzrais" }, "˕": { math: "\\Elzlow" }, "˘": { text: "{\\textasciibreve}" }, "˙": { text: "{\\textperiodcentered}", textpackages: [ "textcomp" ] }, "˚": { text: "{\\r{}}" }, "˛": { text: "{\\k{}}" }, "˜": { text: "{\\texttildelow}" }, "˝": { text: "{\\H{}}" }, "ˡ": { math: "^{l}", text: "\\textsuperscript{l}" }, "ˢ": { math: "^{s}", text: "\\textsuperscript{s}" }, "ˣ": { math: "^{x}", text: "\\textsuperscript{x}" }, "˥": { text: "\\tone{55}" }, "˦": { text: "\\tone{44}" }, "˧": { text: "\\tone{33}" }, "˨": { text: "\\tone{22}" }, "˩": { text: "\\tone{11}" }, "̀": { math: "\\grave", combiningdiacritic: true, text: "\\`" }, "̀̄": { text: "{\\textgravemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̀": { text: "{\\textgravemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̀̇": { text: "{\\textgravedot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̀": { text: "{\\textgravedot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "́": { math: "\\acute", combiningdiacritic: true, text: "\\'" }, "́̄": { text: "{\\textacutemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄́": { text: "{\\textacutemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "́̌": { text: "{\\textacutewedge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̌́": { text: "{\\textacutewedge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̂": { math: "\\hat", combiningdiacritic: true, text: "\\^" }, "̂̇": { text: "{\\textcircumdot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̂": { text: "{\\textcircumdot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̃": { math: "\\tilde", combiningdiacritic: true, text: "\\~" }, "̃̇": { text: "{\\texttildedot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̃": { text: "{\\texttildedot}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄": { math: "\\bar", combiningdiacritic: true, text: "\\=" }, "̅": { math: "\\overline", combiningdiacritic: true }, "̆": { math: "\\breve", combiningdiacritic: true, text: "{\\u}" }, "̆̄": { text: "{\\textbrevemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̆": { text: "{\\textbrevemacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇": { math: "\\dot", combiningdiacritic: true, text: "\\." }, "̇́": { text: "{\\textdotacute}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "́̇": { text: "{\\textdotacute}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̇̆": { text: "{\\textdotbreve}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̆̇": { text: "{\\textdotbreve}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̈": { math: "\\ddot", combiningdiacritic: true, text: "\\\"" }, "̉": { math: "\\ovhook" }, "̊": { math: "\\mathring", combiningdiacritic: true, text: "{\\r}" }, "̊̄": { text: "{\\textringmacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̄̊": { text: "{\\textringmacron}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̋": { text: "{\\H}", combiningdiacritic: true }, "̌": { math: "\\check", text: "{\\v}", combiningdiacritic: true }, "̍": { text: "{\\textvbaraccent}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̎": { text: "{\\textdoublevbaraccent}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̏": { text: "{\\textdoublegrave}", combiningdiacritic: true }, "̐": { text: "{\\textdotbreve}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̑": { text: "{\\fontencoding{LECO}\\selectfont\\char177}" }, "̒": { math: "\\oturnedcomma" }, "̕": { math: "\\ocommatopright" }, "̖": { text: "{\\textsubgrave}", combiningdiacritic: true }, "̘": { text: "{\\textadvancing}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̙": { text: "{\\textretracting}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̚": { math: "\\droang", text: "{\\textcorner}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̜": { text: "{\\textsublhalfring}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̝": { text: "{\\textraising}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̞": { text: "{\\textlowering}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̟": { text: "{\\textsubplus}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̡": { math: "\\Elzpalh" }, "̢": { text: "{\\Elzrh}" }, "̣": { text: "{\\d}", combiningdiacritic: true }, "̤": { text: "{\\textsubumlaut}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̥": { text: "{\\textsubring}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̧": { text: "{\\c}", combiningdiacritic: true }, "̨": { text: "{\\k}", combiningdiacritic: true }, "̩": { text: "{\\textsyllabic}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̪": { math: "\\Elzsbbrg", text: "{\\textsubbridge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̫": { text: "{\\fontencoding{LECO}\\selectfont\\char203}" }, "̬": { text: "{\\textsubwedge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̯": { text: "{\\textsubarch}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̰": { math: "\\utilde", text: "{\\textsubtilde}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̱": { math: "\\underbar", combiningdiacritic: true, text: "{\\textsubbar}", textpackages: [ "tipa" ] }, "̲": { math: "\\underline" }, "̴": { text: "{\\textsuperimposetilde}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̵": { text: "{\\Elzxl}" }, "̶": { text: "{\\Elzbar}" }, "̷": { text: "{\\fontencoding{LECO}\\selectfont\\char215}" }, "̸": { math: "\\not" }, "̹": { text: "{\\textsubrhalfring}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̺": { text: "{\\textinvsubbridge}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̻": { text: "{\\textsubsquare}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̼": { text: "{\\textseagull}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "̽": { text: "{\\textovercross}", combiningdiacritic: true, textpackages: [ "tipa" ] }, "͡": { text: "{\\fontencoding{LECO}\\selectfont\\char225}" }, "ʹ": { text: "'" }, "͵": { text: "," }, ";": { text: ";" }, "Ά": { text: "{\\'A}" }, "Έ": { text: "{\\'E}" }, "Ή": { text: "{\\'H}" }, "Ί": { text: "{\\'{}I}" }, "Ό": { text: "{\\'{}O}" }, "Ύ": { math: "\\mathrm{'Y}" }, "Ώ": { math: "\\mathrm{'\\Omega}" }, "ΐ": { math: "\\acute{\\ddot{\\iota}}" }, "Α": { math: "A" }, "Β": { math: "B" }, "Γ": { math: "\\Gamma" }, "Δ": { math: "\\Delta" }, "Ε": { math: "E" }, "Ζ": { math: "Z" }, "Η": { math: "H" }, "Θ": { math: "\\Theta" }, "Ι": { math: "I" }, "Κ": { math: "K" }, "Λ": { math: "\\Lambda" }, "Μ": { math: "M" }, "Ν": { math: "N" }, "Ξ": { math: "\\Xi" }, "Ο": { math: "O" }, "Π": { math: "\\Pi" }, "Ρ": { math: "P" }, "Σ": { math: "\\Sigma" }, "Τ": { math: "T" }, "Υ": { math: "\\Upsilon" }, "Φ": { math: "\\Phi" }, "Χ": { math: "X" }, "Ψ": { math: "\\Psi" }, "Ω": { math: "\\Omega" }, "Ϊ": { math: "\\mathrm{\\ddot{I}}" }, "Ϋ": { math: "\\mathrm{\\ddot{Y}}" }, "ά": { text: "{\\'$\\alpha$}" }, "έ": { math: "\\acute{\\epsilon}" }, "ή": { math: "\\acute{\\eta}" }, "ί": { math: "\\acute{\\iota}" }, "ΰ": { math: "\\acute{\\ddot{\\upsilon}}" }, "α": { math: "\\alpha" }, "β": { math: "\\beta" }, "γ": { math: "\\gamma" }, "δ": { math: "\\delta" }, "ε": { math: "\\epsilon" }, "ζ": { math: "\\zeta" }, "η": { math: "\\eta" }, "θ": { math: "\\theta", text: "{\\texttheta}" }, "ι": { math: "\\iota" }, "κ": { math: "\\kappa" }, "λ": { math: "\\lambda" }, "μ": { math: "\\mu" }, "ν": { math: "\\nu" }, "ξ": { math: "\\xi" }, "ο": { math: "o" }, "π": { math: "\\pi" }, "ρ": { math: "\\rho" }, "ς": { math: "\\varsigma" }, "σ": { math: "\\sigma" }, "τ": { math: "\\tau" }, "υ": { math: "\\upsilon" }, "φ": { math: "\\varphi" }, "χ": { math: "\\chi" }, "ψ": { math: "\\psi" }, "ω": { math: "\\omega" }, "ϊ": { math: "\\ddot{\\iota}" }, "ϋ": { math: "\\ddot{\\upsilon}" }, "ό": { text: "{\\'o}" }, "ύ": { math: "\\acute{\\upsilon}" }, "ώ": { math: "\\acute{\\omega}" }, "ϐ": { math: "\\varbeta", text: "\\Pisymbol{ppi022}{87}" }, "ϑ": { math: "\\vartheta", text: "{\\textvartheta}" }, "ϒ": { math: "\\Upsilon" }, "ϕ": { math: "\\phi" }, "ϖ": { math: "\\varpi" }, "Ϙ": { math: "\\Qoppa" }, "ϙ": { math: "\\qoppa" }, "Ϛ": { math: "\\Stigma" }, "ϛ": { math: "\\stigma" }, "Ϝ": { math: "\\Digamma" }, "ϝ": { math: "\\digamma" }, "Ϟ": { math: "\\Koppa" }, "ϟ": { math: "\\koppa" }, "Ϡ": { math: "\\Sampi" }, "ϡ": { math: "\\sampi" }, "ϰ": { math: "\\varkappa" }, "ϱ": { math: "\\varrho" }, "ϴ": { math: "\\upvarTheta", text: "{\\textTheta}" }, "ϵ": { math: "\\epsilon" }, "϶": { math: "\\backepsilon" }, "Ё": { text: "{\\cyrchar\\CYRYO}" }, "Ђ": { text: "{\\cyrchar\\CYRDJE}" }, "Ѓ": { text: "{\\cyrchar{\\'\\CYRG}}" }, "Є": { text: "{\\cyrchar\\CYRIE}" }, "Ѕ": { text: "{\\cyrchar\\CYRDZE}" }, "І": { text: "{\\cyrchar\\CYRII}" }, "Ї": { text: "{\\cyrchar\\CYRYI}" }, "Ј": { text: "{\\cyrchar\\CYRJE}" }, "Љ": { text: "{\\cyrchar\\CYRLJE}" }, "Њ": { text: "{\\cyrchar\\CYRNJE}" }, "Ћ": { text: "{\\cyrchar\\CYRTSHE}" }, "Ќ": { text: "{\\cyrchar{\\'\\CYRK}}" }, "Ў": { text: "{\\cyrchar\\CYRUSHRT}" }, "Џ": { text: "{\\cyrchar\\CYRDZHE}" }, "А": { text: "{\\cyrchar\\CYRA}" }, "Б": { text: "{\\cyrchar\\CYRB}" }, "В": { text: "{\\cyrchar\\CYRV}" }, "Г": { text: "{\\cyrchar\\CYRG}" }, "Д": { text: "{\\cyrchar\\CYRD}" }, "Е": { text: "{\\cyrchar\\CYRE}" }, "Ж": { text: "{\\cyrchar\\CYRZH}" }, "З": { text: "{\\cyrchar\\CYRZ}" }, "И": { text: "{\\cyrchar\\CYRI}" }, "Й": { text: "{\\cyrchar\\CYRISHRT}" }, "К": { text: "{\\cyrchar\\CYRK}" }, "Л": { text: "{\\cyrchar\\CYRL}" }, "М": { text: "{\\cyrchar\\CYRM}" }, "Н": { text: "{\\cyrchar\\CYRN}" }, "О": { text: "{\\cyrchar\\CYRO}" }, "П": { text: "{\\cyrchar\\CYRP}" }, "Р": { text: "{\\cyrchar\\CYRR}" }, "С": { text: "{\\cyrchar\\CYRS}" }, "Т": { text: "{\\cyrchar\\CYRT}" }, "У": { text: "{\\cyrchar\\CYRU}" }, "Ф": { text: "{\\cyrchar\\CYRF}" }, "Х": { text: "{\\cyrchar\\CYRH}" }, "Ц": { text: "{\\cyrchar\\CYRC}" }, "Ч": { text: "{\\cyrchar\\CYRCH}" }, "Ш": { text: "{\\cyrchar\\CYRSH}" }, "Щ": { text: "{\\cyrchar\\CYRSHCH}" }, "Ъ": { text: "{\\cyrchar\\CYRHRDSN}" }, "Ы": { text: "{\\cyrchar\\CYRERY}" }, "Ь": { text: "{\\cyrchar\\CYRSFTSN}" }, "Э": { text: "{\\cyrchar\\CYREREV}" }, "Ю": { text: "{\\cyrchar\\CYRYU}" }, "Я": { text: "{\\cyrchar\\CYRYA}" }, "а": { text: "{\\cyrchar\\cyra}" }, "б": { text: "{\\cyrchar\\cyrb}" }, "в": { text: "{\\cyrchar\\cyrv}" }, "г": { text: "{\\cyrchar\\cyrg}" }, "д": { text: "{\\cyrchar\\cyrd}" }, "е": { text: "{\\cyrchar\\cyre}" }, "ж": { text: "{\\cyrchar\\cyrzh}" }, "з": { text: "{\\cyrchar\\cyrz}" }, "и": { text: "{\\cyrchar\\cyri}" }, "й": { text: "{\\cyrchar\\cyrishrt}" }, "к": { text: "{\\cyrchar\\cyrk}" }, "л": { text: "{\\cyrchar\\cyrl}" }, "м": { text: "{\\cyrchar\\cyrm}" }, "н": { text: "{\\cyrchar\\cyrn}" }, "о": { text: "{\\cyrchar\\cyro}" }, "п": { text: "{\\cyrchar\\cyrp}" }, "р": { text: "{\\cyrchar\\cyrr}" }, "с": { text: "{\\cyrchar\\cyrs}" }, "т": { text: "{\\cyrchar\\cyrt}" }, "у": { text: "{\\cyrchar\\cyru}" }, "ф": { text: "{\\cyrchar\\cyrf}" }, "х": { text: "{\\cyrchar\\cyrh}" }, "ц": { text: "{\\cyrchar\\cyrc}" }, "ч": { text: "{\\cyrchar\\cyrch}" }, "ш": { text: "{\\cyrchar\\cyrsh}" }, "щ": { text: "{\\cyrchar\\cyrshch}" }, "ъ": { text: "{\\cyrchar\\cyrhrdsn}" }, "ы": { text: "{\\cyrchar\\cyrery}" }, "ь": { text: "{\\cyrchar\\cyrsftsn}" }, "э": { text: "{\\cyrchar\\cyrerev}" }, "ю": { text: "{\\cyrchar\\cyryu}" }, "я": { text: "{\\cyrchar\\cyrya}" }, "ё": { text: "{\\cyrchar\\cyryo}" }, "ђ": { text: "{\\cyrchar\\cyrdje}" }, "ѓ": { text: "{\\cyrchar{\\'\\cyrg}}" }, "є": { text: "{\\cyrchar\\cyrie}" }, "ѕ": { text: "{\\cyrchar\\cyrdze}" }, "і": { text: "{\\cyrchar\\cyrii}" }, "ї": { text: "{\\cyrchar\\cyryi}" }, "ј": { text: "{\\cyrchar\\cyrje}" }, "љ": { text: "{\\cyrchar\\cyrlje}" }, "њ": { text: "{\\cyrchar\\cyrnje}" }, "ћ": { text: "{\\cyrchar\\cyrtshe}" }, "ќ": { text: "{\\cyrchar{\\'\\cyrk}}" }, "ў": { text: "{\\cyrchar\\cyrushrt}" }, "џ": { text: "{\\cyrchar\\cyrdzhe}" }, "Ѡ": { text: "{\\cyrchar\\CYROMEGA}" }, "ѡ": { text: "{\\cyrchar\\cyromega}" }, "Ѣ": { text: "{\\cyrchar\\CYRYAT}" }, "Ѥ": { text: "{\\cyrchar\\CYRIOTE}" }, "ѥ": { text: "{\\cyrchar\\cyriote}" }, "Ѧ": { text: "{\\cyrchar\\CYRLYUS}" }, "ѧ": { text: "{\\cyrchar\\cyrlyus}" }, "Ѩ": { text: "{\\cyrchar\\CYRIOTLYUS}" }, "ѩ": { text: "{\\cyrchar\\cyriotlyus}" }, "Ѫ": { text: "{\\cyrchar\\CYRBYUS}" }, "Ѭ": { text: "{\\cyrchar\\CYRIOTBYUS}" }, "ѭ": { text: "{\\cyrchar\\cyriotbyus}" }, "Ѯ": { text: "{\\cyrchar\\CYRKSI}" }, "ѯ": { text: "{\\cyrchar\\cyrksi}" }, "Ѱ": { text: "{\\cyrchar\\CYRPSI}" }, "ѱ": { text: "{\\cyrchar\\cyrpsi}" }, "Ѳ": { text: "{\\cyrchar\\CYRFITA}" }, "Ѵ": { text: "{\\cyrchar\\CYRIZH}" }, "Ѹ": { text: "{\\cyrchar\\CYRUK}" }, "ѹ": { text: "{\\cyrchar\\cyruk}" }, "Ѻ": { text: "{\\cyrchar\\CYROMEGARND}" }, "ѻ": { text: "{\\cyrchar\\cyromegarnd}" }, "Ѽ": { text: "{\\cyrchar\\CYROMEGATITLO}" }, "ѽ": { text: "{\\cyrchar\\cyromegatitlo}" }, "Ѿ": { text: "{\\cyrchar\\CYROT}" }, "ѿ": { text: "{\\cyrchar\\cyrot}" }, "Ҁ": { text: "{\\cyrchar\\CYRKOPPA}" }, "ҁ": { text: "{\\cyrchar\\cyrkoppa}" }, "҂": { text: "{\\cyrchar\\cyrthousands}" }, "҈": { text: "{\\cyrchar\\cyrhundredthousands}" }, "҉": { text: "{\\cyrchar\\cyrmillions}" }, "Ҍ": { text: "{\\cyrchar\\CYRSEMISFTSN}" }, "ҍ": { text: "{\\cyrchar\\cyrsemisftsn}" }, "Ҏ": { text: "{\\cyrchar\\CYRRTICK}" }, "ҏ": { text: "{\\cyrchar\\cyrrtick}" }, "Ґ": { text: "{\\cyrchar\\CYRGUP}" }, "ґ": { text: "{\\cyrchar\\cyrgup}" }, "Ғ": { text: "{\\cyrchar\\CYRGHCRS}" }, "ғ": { text: "{\\cyrchar\\cyrghcrs}" }, "Ҕ": { text: "{\\cyrchar\\CYRGHK}" }, "ҕ": { text: "{\\cyrchar\\cyrghk}" }, "Җ": { text: "{\\cyrchar\\CYRZHDSC}" }, "җ": { text: "{\\cyrchar\\cyrzhdsc}" }, "Ҙ": { text: "{\\cyrchar\\CYRZDSC}" }, "ҙ": { text: "{\\cyrchar\\cyrzdsc}" }, "Қ": { text: "{\\cyrchar\\CYRKDSC}" }, "қ": { text: "{\\cyrchar\\cyrkdsc}" }, "Ҝ": { text: "{\\cyrchar\\CYRKVCRS}" }, "ҝ": { text: "{\\cyrchar\\cyrkvcrs}" }, "Ҟ": { text: "{\\cyrchar\\CYRKHCRS}" }, "ҟ": { text: "{\\cyrchar\\cyrkhcrs}" }, "Ҡ": { text: "{\\cyrchar\\CYRKBEAK}" }, "ҡ": { text: "{\\cyrchar\\cyrkbeak}" }, "Ң": { text: "{\\cyrchar\\CYRNDSC}" }, "ң": { text: "{\\cyrchar\\cyrndsc}" }, "Ҥ": { text: "{\\cyrchar\\CYRNG}" }, "ҥ": { text: "{\\cyrchar\\cyrng}" }, "Ҧ": { text: "{\\cyrchar\\CYRPHK}" }, "ҧ": { text: "{\\cyrchar\\cyrphk}" }, "Ҩ": { text: "{\\cyrchar\\CYRABHHA}" }, "ҩ": { text: "{\\cyrchar\\cyrabhha}" }, "Ҫ": { text: "{\\cyrchar\\CYRSDSC}" }, "ҫ": { text: "{\\cyrchar\\cyrsdsc}" }, "Ҭ": { text: "{\\cyrchar\\CYRTDSC}" }, "ҭ": { text: "{\\cyrchar\\cyrtdsc}" }, "Ү": { text: "{\\cyrchar\\CYRY}" }, "ү": { text: "{\\cyrchar\\cyry}" }, "Ұ": { text: "{\\cyrchar\\CYRYHCRS}" }, "ұ": { text: "{\\cyrchar\\cyryhcrs}" }, "Ҳ": { text: "{\\cyrchar\\CYRHDSC}" }, "ҳ": { text: "{\\cyrchar\\cyrhdsc}" }, "Ҵ": { text: "{\\cyrchar\\CYRTETSE}" }, "ҵ": { text: "{\\cyrchar\\cyrtetse}" }, "Ҷ": { text: "{\\cyrchar\\CYRCHRDSC}" }, "ҷ": { text: "{\\cyrchar\\cyrchrdsc}" }, "Ҹ": { text: "{\\cyrchar\\CYRCHVCRS}" }, "ҹ": { text: "{\\cyrchar\\cyrchvcrs}" }, "Һ": { text: "{\\cyrchar\\CYRSHHA}" }, "һ": { text: "{\\cyrchar\\cyrshha}" }, "Ҽ": { text: "{\\cyrchar\\CYRABHCH}" }, "ҽ": { text: "{\\cyrchar\\cyrabhch}" }, "Ҿ": { text: "{\\cyrchar\\CYRABHCHDSC}" }, "ҿ": { text: "{\\cyrchar\\cyrabhchdsc}" }, "Ӏ": { text: "{\\cyrchar\\CYRpalochka}" }, "Ӄ": { text: "{\\cyrchar\\CYRKHK}" }, "ӄ": { text: "{\\cyrchar\\cyrkhk}" }, "Ӈ": { text: "{\\cyrchar\\CYRNHK}" }, "ӈ": { text: "{\\cyrchar\\cyrnhk}" }, "Ӌ": { text: "{\\cyrchar\\CYRCHLDSC}" }, "ӌ": { text: "{\\cyrchar\\cyrchldsc}" }, "Ӕ": { text: "{\\cyrchar\\CYRAE}" }, "ӕ": { text: "{\\cyrchar\\cyrae}" }, "Ә": { text: "{\\cyrchar\\CYRSCHWA}" }, "ә": { text: "{\\cyrchar\\cyrschwa}" }, "Ӡ": { text: "{\\cyrchar\\CYRABHDZE}" }, "ӡ": { text: "{\\cyrchar\\cyrabhdze}" }, "Ө": { text: "{\\cyrchar\\CYROTLD}" }, "ө": { text: "{\\cyrchar\\cyrotld}" }, "ࡱ": { math: "\\\\backslash" }, "ᵃ": { math: "^{a}", text: "\\textsuperscript{a}" }, "ᵇ": { math: "^{b}", text: "\\textsuperscript{b}" }, "ᵈ": { math: "^{d}", text: "\\textsuperscript{d}" }, "ᵉ": { math: "^{e}", text: "\\textsuperscript{e}" }, "ᵍ": { math: "^{g}", text: "\\textsuperscript{g}" }, "ᵏ": { math: "^{k}", text: "\\textsuperscript{k}" }, "ᵐ": { math: "^{m}", text: "\\textsuperscript{m}" }, "ᵒ": { math: "^{o}", text: "\\textsuperscript{o}" }, "ᵖ": { math: "^{p}", text: "\\textsuperscript{p}" }, "ᵗ": { math: "^{t}", text: "\\textsuperscript{t}" }, "ᵘ": { math: "^{u}", text: "\\textsuperscript{u}" }, "ᵛ": { math: "^{v}", text: "\\textsuperscript{v}" }, "ᶜ": { math: "^{c}", text: "\\textsuperscript{c}" }, "ᶠ": { math: "^{f}", text: "\\textsuperscript{f}" }, "ᶻ": { math: "^{z}", text: "\\textsuperscript{z}" }, "Ḃ": { text: "{\\.B}" }, "ḃ": { text: "{\\.b}" }, "Ḅ": { text: "{\\d B}" }, "ḅ": { text: "{\\d b}" }, "Ḇ": { text: "{\\b B}" }, "ḇ": { text: "{\\b b}" }, "Ḋ": { text: "{\\.D}" }, "ḋ": { text: "{\\.d}" }, "Ḍ": { text: "{\\d D}" }, "ḍ": { text: "{\\d d}" }, "Ḏ": { text: "{\\b D}" }, "ḏ": { text: "{\\b d}" }, "Ḑ": { text: "{\\c D}" }, "ḑ": { text: "{\\c d}" }, "Ḝ": { text: "{\\c{\\u{E}}}" }, "ḝ": { text: "{\\c{\\u{e}}}" }, "Ḟ": { text: "{\\.F}" }, "ḟ": { text: "{\\.f}" }, "Ḡ": { text: "{\\=G}" }, "ḡ": { text: "{\\=g}" }, "Ḣ": { text: "{\\.H}" }, "ḣ": { text: "{\\.h}" }, "Ḥ": { text: "{\\d H}" }, "ḥ": { text: "{\\d h}" }, "Ḧ": { text: "{\\\"H}" }, "ḧ": { text: "{\\\"h}" }, "Ḩ": { text: "{\\c H}" }, "ḩ": { text: "{\\c h}" }, "Ḱ": { text: "{\\'K}" }, "ḱ": { text: "{\\'k}" }, "Ḳ": { text: "{\\d K}" }, "ḳ": { text: "{\\d k}" }, "Ḵ": { text: "{\\b K}" }, "ḵ": { text: "{\\b k}" }, "Ḷ": { text: "{\\d L}" }, "ḷ": { text: "{\\d l}" }, "Ḻ": { text: "{\\b L}" }, "ḻ": { text: "{\\b l}" }, "Ḿ": { text: "{\\'M}" }, "ḿ": { text: "{\\'m}" }, "Ṁ": { text: "{\\.M}" }, "ṁ": { text: "{\\.m}" }, "Ṃ": { text: "{\\d M}" }, "ṃ": { text: "{\\d m}" }, "Ṅ": { text: "{\\.N}" }, "ṅ": { text: "{\\.n}" }, "Ṇ": { text: "{\\d N}" }, "ṇ": { text: "{\\d n}" }, "Ṉ": { text: "{\\b N}" }, "ṉ": { text: "{\\b n}" }, "Ṕ": { text: "{\\'P}" }, "ṕ": { text: "{\\'p}" }, "Ṗ": { text: "{\\.P}" }, "ṗ": { text: "{\\.p}" }, "Ṙ": { text: "{\\.R}" }, "ṙ": { text: "{\\.r}" }, "Ṛ": { text: "{\\d R}" }, "ṛ": { text: "{\\d r}" }, "Ṟ": { text: "{\\b R}" }, "ṟ": { text: "{\\b r}" }, "Ṡ": { text: "{\\.S}" }, "ṡ": { text: "{\\.s}" }, "Ṣ": { text: "{\\d S}" }, "ṣ": { text: "{\\d s}" }, "Ṫ": { text: "{\\.T}" }, "ṫ": { text: "{\\.t}" }, "Ṭ": { text: "{\\d T}" }, "ṭ": { text: "{\\d t}" }, "Ṯ": { text: "{\\b T}" }, "ṯ": { text: "{\\b t}" }, "Ṽ": { text: "{\\~V}" }, "ṽ": { text: "{\\~v}" }, "Ṿ": { text: "{\\d V}" }, "ṿ": { text: "{\\d v}" }, "Ẁ": { text: "{\\`W}" }, "ẁ": { text: "{\\`w}" }, "Ẃ": { text: "{\\'W}" }, "ẃ": { text: "{\\'w}" }, "Ẅ": { text: "{\\\"W}" }, "ẅ": { text: "{\\\"w}" }, "Ẇ": { text: "{\\.W}" }, "ẇ": { text: "{\\.w}" }, "Ẉ": { text: "{\\d W}" }, "ẉ": { text: "{\\d w}" }, "Ẋ": { text: "{\\.X}" }, "ẋ": { text: "{\\.x}" }, "Ẍ": { text: "{\\\"X}" }, "ẍ": { text: "{\\\"x}" }, "Ẏ": { text: "{\\.Y}" }, "ẏ": { text: "{\\.y}" }, "Ẑ": { text: "{\\^Z}" }, "ẑ": { text: "{\\^z}" }, "Ẓ": { text: "{\\d Z}" }, "ẓ": { text: "{\\d z}" }, "Ẕ": { text: "{\\b Z}" }, "ẕ": { text: "{\\b z}" }, "ẖ": { text: "{\\b h}" }, "ẗ": { text: "{\\\"t}" }, "ẘ": { text: "{\\r{w}}" }, "ẙ": { text: "{\\r{y}}" }, "Ạ": { text: "{\\d A}" }, "ạ": { text: "{\\d a}" }, "Ẹ": { text: "{\\d E}" }, "ẹ": { text: "{\\d e}" }, "Ẽ": { text: "{\\~E}" }, "ẽ": { text: "{\\~e}" }, "Ị": { text: "{\\d I}" }, "ị": { text: "{\\d i}" }, "Ọ": { text: "{\\d O}" }, "ọ": { text: "{\\d o}" }, "Ụ": { text: "{\\d U}" }, "ụ": { text: "{\\d u}" }, "Ỳ": { text: "{\\`Y}" }, "ỳ": { text: "{\\`y}" }, "Ỵ": { text: "{\\d Y}" }, "ỵ": { text: "{\\d y}" }, "Ỹ": { text: "{\\~Y}" }, "ỹ": { text: "{\\~y}" }, " ": { text: " ", space: true }, " ": { math: "\\quad", space: true }, " ": { text: "\\hspace{0.6em}", space: true }, " ": { math: "\\quad", space: true, text: "\\hspace{1em}" }, " ": { text: "\\;", space: true }, " ": { text: "\\hspace{0.25em}", space: true }, " ": { text: "\\hspace{0.166em}", space: true }, " ": { text: "\\hphantom{0}", space: true }, " ": { text: "\\hphantom{,}", space: true }, " ": { text: "\\,", space: true }, " ": { math: "\\mkern1mu", space: true }, "​": { text: "{\\mbox}", space: true }, "‌": { text: "{\\aftergroup\\ignorespaces}" }, "‐": { text: "-" }, "‑": { text: "-" }, "‒": { text: "-" }, "–": { text: "{\\textendash}" }, "—": { text: "{\\textemdash}" }, "―": { math: "\\horizbar", text: "\\rule{1em}{1pt}" }, "‖": { math: "\\Vert" }, "‗": { math: "\\twolowline" }, "‘": { text: "`" }, "’": { text: "'" }, "‚": { text: "," }, "‛": { math: "\\Elzreapos" }, "“": { text: "``" }, "”": { text: "''" }, "„": { text: ",," }, "‟": { text: "{\\quotedblbase}" }, "†": { math: "\\dagger", text: "{\\textdagger}", textpackages: [ "textcomp" ] }, "‡": { math: "\\ddagger", text: "{\\textdaggerdbl}", textpackages: [ "textcomp" ] }, "•": { math: "\\bullet", text: "{\\textbullet}", textpackages: [ "textcomp" ] }, "‣": { text: ">" }, "․": { text: "." }, "‥": { math: "\\enleadertwodots", text: ".." }, "…": { math: "\\ldots", text: "{\\ldots}" }, "‧": { text: "-" }, " ": { text: " ", space: true }, "‰": { text: "{\\textperthousand}", textpackages: [ "textcomp" ] }, "‱": { text: "{\\textpertenthousand}", textpackages: [ "textcomp" ] }, "′": { math: "{'}" }, "″": { math: "{''}" }, "‴": { math: "{'''}" }, "‵": { math: "\\backprime" }, "‶": { math: "\\backdprime" }, "‷": { math: "\\backtrprime" }, "‸": { math: "\\caretinsert" }, "‹": { text: "{\\guilsinglleft}" }, "›": { text: "{\\guilsinglright}" }, "‼": { math: "\\Exclam" }, "‾": { text: "-" }, "⁃": { math: "\\hyphenbullet" }, "⁄": { math: "\\fracslash" }, "⁇": { math: "\\Question" }, "⁈": { text: "?!" }, "⁉": { text: "!?" }, "⁊": { text: "7" }, "⁐": { math: "\\closure" }, "⁗": { math: "''''" }, " ": { math: "\\:", space: true, text: "\\:" }, "⁠": { text: "{\\nolinebreak}" }, "⁰": { math: "^{0}" }, "ⁱ": { math: "^{i}", text: "\\textsuperscript{i}" }, "⁴": { math: "^{4}" }, "⁵": { math: "^{5}" }, "⁶": { math: "^{6}" }, "⁷": { math: "^{7}" }, "⁸": { math: "^{8}" }, "⁹": { math: "^{9}" }, "⁺": { math: "^{+}" }, "⁻": { math: "^{-}" }, "⁼": { math: "^{=}" }, "⁽": { math: "^{(}" }, "⁾": { math: "^{)}" }, "ⁿ": { math: "^{n}", text: "\\textsuperscript{n}" }, "₀": { math: "_{0}" }, "₁": { math: "_{1}" }, "₂": { math: "_{2}" }, "₃": { math: "_{3}" }, "₄": { math: "_{4}" }, "₅": { math: "_{5}" }, "₆": { math: "_{6}" }, "₇": { math: "_{7}" }, "₈": { math: "_{8}" }, "₉": { math: "_{9}" }, "₊": { math: "_{+}" }, "₋": { math: "_{-}" }, "₌": { math: "_{=}" }, "₍": { math: "_{(}" }, "₎": { math: "_{)}" }, "ₐ": { math: "_{a}", text: "\\textsubscript{a}" }, "ₑ": { math: "_{e}", text: "\\textsubscript{e}" }, "ₒ": { math: "_{o}", text: "\\textsubscript{o}" }, "ₓ": { math: "_{x}", text: "\\textsubscript{x}" }, "ₔ": { text: "\\textsubscript{\\textschwa}", textpackages: [ "tipa" ] }, "ₕ": { math: "_{h}", text: "\\textsubscript{h}" }, "ₖ": { math: "_{k}", text: "\\textsubscript{k}" }, "ₗ": { math: "_{l}", text: "\\textsubscript{l}" }, "ₘ": { math: "_{m}", text: "\\textsubscript{m}" }, "ₙ": { math: "_{n}", text: "\\textsubscript{n}" }, "ₚ": { math: "_{p}", text: "\\textsubscript{p}" }, "ₛ": { math: "_{s}", text: "\\textsubscript{s}" }, "ₜ": { math: "_{t}", text: "\\textsubscript{t}" }, "₧": { text: "\\ensuremath{\\Elzpes}" }, "€": { math: "\\euro", text: "{\\texteuro}" }, "⃐": { math: "\\lvec" }, "⃑": { math: "\\rightharpoonup", mathpackages: [ "amsmath", "amssymb" ] }, "⃒": { math: "\\vertoverlay" }, "⃖": { math: "\\LVec" }, "⃗": { math: "\\vec" }, "⃛": { math: "\\dddot" }, "⃜": { math: "\\ddddot" }, "⃝": { math: "\\enclosecircle" }, "⃞": { math: "\\enclosesquare" }, "⃟": { math: "\\enclosediamond" }, "⃡": { math: "\\overleftrightarrow" }, "⃤": { math: "\\enclosetriangle" }, "⃧": { math: "\\annuity" }, "⃨": { math: "\\threeunderdot" }, "⃩": { math: "\\widebridgeabove" }, "⃬": { math: "\\underrightharpoondown" }, "⃭": { math: "\\underleftharpoondown" }, "⃮": { math: "\\underleftarrow" }, "⃯": { math: "\\underrightarrow" }, "⃰": { math: "\\asteraccent" }, "℀": { text: "a/c" }, "℁": { text: "a/s" }, "ℂ": { math: "\\mathbb{C}" }, "℃": { text: "{\\textcelsius}" }, "℅": { text: "c/o" }, "℆": { text: "c/u" }, "ℇ": { math: "\\Euler" }, "℉": { text: "F" }, "ℊ": { math: "\\mathscr{g}" }, "ℋ": { math: "\\mathscr{H}" }, "ℌ": { math: "\\mathfrak{H}" }, "ℍ": { math: "\\mathbb{H}" }, "ℎ": { math: "\\Planckconst" }, "ℏ": { math: "\\hslash" }, "ℐ": { math: "\\mathscr{I}" }, "ℑ": { math: "\\mathfrak{I}" }, "ℒ": { math: "\\mathscr{L}" }, "ℓ": { math: "\\mathscr{l}" }, "ℕ": { math: "\\mathbb{N}" }, "№": { text: "{\\cyrchar\\textnumero}" }, "℗": { text: "{\\textcircledP}" }, "℘": { math: "\\wp" }, "ℙ": { math: "\\mathbb{P}" }, "ℚ": { math: "\\mathbb{Q}" }, "ℛ": { math: "\\mathscr{R}" }, "ℜ": { math: "\\mathfrak{R}" }, "ℝ": { math: "\\mathbb{R}" }, "℞": { math: "\\Elzxrat" }, "℠": { text: "{\\textservicemark}" }, "℡": { text: "TEL" }, "™": { text: "{\\texttrademark}", textpackages: [ "textcomp" ] }, "ℤ": { math: "\\mathbb{Z}" }, "Ω": { math: "\\Omega" }, "℧": { math: "\\mho" }, "ℨ": { math: "\\mathfrak{Z}" }, "℩": { text: "{\\textriota}" }, "K": { text: "K" }, "Å": { math: "\\Angstroem", text: "{\\AA}" }, "ℬ": { math: "\\mathscr{B}" }, "ℭ": { math: "\\mathfrak{C}" }, "℮": { text: "{\\textestimated}" }, "ℯ": { math: "\\mathscr{e}" }, "ℰ": { math: "\\mathscr{E}" }, "ℱ": { math: "\\mathscr{F}" }, "Ⅎ": { math: "\\Finv" }, "ℳ": { math: "\\mathscr{M}" }, "ℴ": { math: "\\mathscr{o}" }, "ℵ": { math: "\\aleph" }, "ℶ": { math: "\\beth" }, "ℷ": { math: "\\gimel" }, "ℸ": { math: "\\daleth" }, "ℼ": { math: "\\mathbb{\\pi}" }, "ℽ": { math: "\\mathbb{\\gamma}" }, "ℾ": { math: "\\mathbb{\\Gamma}" }, "ℿ": { math: "\\mathbb{\\Pi}" }, "⅀": { math: "\\mathbb{\\Sigma}" }, "⅁": { math: "\\Game" }, "⅂": { math: "\\sansLturned" }, "⅃": { math: "\\sansLmirrored" }, "⅄": { math: "\\Yup" }, "ⅅ": { math: "\\CapitalDifferentialD" }, "ⅆ": { math: "\\DifferentialD" }, "ⅇ": { math: "\\ExponetialE" }, "ⅈ": { math: "\\ComplexI" }, "ⅉ": { math: "\\ComplexJ" }, "⅊": { math: "\\PropertyLine" }, "⅋": { math: "\\invamp" }, "⅐": { math: "\\frac{1}{7}" }, "⅑": { math: "\\frac{1}{9}" }, "⅒": { math: "\\frac{1}{10}" }, "⅓": { math: "\\frac{1}{3}" }, "⅔": { math: "\\frac{2}{3}" }, "⅕": { math: "\\frac{1}{5}" }, "⅖": { math: "\\frac{2}{5}" }, "⅗": { math: "\\frac{3}{5}" }, "⅘": { math: "\\frac{4}{5}" }, "⅙": { math: "\\frac{1}{6}" }, "⅚": { math: "\\frac{5}{6}" }, "⅛": { math: "\\frac{1}{8}" }, "⅜": { math: "\\frac{3}{8}" }, "⅝": { math: "\\frac{5}{8}" }, "⅞": { math: "\\frac{7}{8}" }, "⅟": { math: "\\frac{1}" }, "Ⅰ": { text: "I" }, "Ⅱ": { text: "II" }, "Ⅲ": { text: "III" }, "Ⅳ": { text: "IV" }, "Ⅴ": { text: "V" }, "Ⅵ": { text: "VI" }, "Ⅶ": { text: "VII" }, "Ⅷ": { text: "VIII" }, "Ⅸ": { text: "IX" }, "Ⅹ": { text: "X" }, "Ⅺ": { text: "XI" }, "Ⅻ": { text: "XII" }, "Ⅼ": { text: "L" }, "Ⅽ": { text: "C" }, "Ⅾ": { text: "D" }, "Ⅿ": { text: "M" }, "ⅰ": { text: "i" }, "ⅱ": { text: "ii" }, "ⅲ": { text: "iii" }, "ⅳ": { text: "iv" }, "ⅴ": { text: "v" }, "ⅵ": { text: "vi" }, "ⅶ": { text: "vii" }, "ⅷ": { text: "viii" }, "ⅸ": { text: "ix" }, "ⅹ": { text: "x" }, "ⅺ": { text: "xi" }, "ⅻ": { text: "xii" }, "ⅼ": { text: "l" }, "ⅽ": { text: "c" }, "ⅾ": { text: "d" }, "ⅿ": { text: "m" }, "↉": { math: "\\frac{0}{3}" }, "←": { math: "\\leftarrow" }, "↑": { math: "\\uparrow" }, "→": { math: "\\rightarrow", text: "{\\textrightarrow}", textpackages: [ "textcomp" ] }, "↓": { math: "\\downarrow" }, "↔": { math: "\\leftrightarrow" }, "↕": { math: "\\updownarrow" }, "↖": { math: "\\nwarrow" }, "↗": { math: "\\nearrow" }, "↘": { math: "\\searrow" }, "↙": { math: "\\swarrow" }, "↚": { math: "\\nleftarrow" }, "↛": { math: "\\nrightarrow" }, "↜": { math: "\\arrowwaveleft" }, "↝": { math: "\\arrowwaveright" }, "↞": { math: "\\twoheadleftarrow" }, "↟": { math: "\\twoheaduparrow" }, "↠": { math: "\\twoheadrightarrow" }, "↡": { math: "\\twoheaddownarrow" }, "↢": { math: "\\leftarrowtail" }, "↣": { math: "\\rightarrowtail" }, "↤": { math: "\\mapsfrom" }, "↥": { math: "\\MapsUp" }, "↦": { math: "\\mapsto" }, "↧": { math: "\\MapsDown" }, "↨": { math: "\\updownarrowbar" }, "↩": { math: "\\hookleftarrow" }, "↪": { math: "\\hookrightarrow" }, "↫": { math: "\\looparrowleft" }, "↬": { math: "\\looparrowright" }, "↭": { math: "\\leftrightsquigarrow" }, "↮": { math: "\\nleftrightarrow" }, "↯": { math: "\\lightning" }, "↰": { math: "\\Lsh" }, "↱": { math: "\\Rsh" }, "↲": { math: "\\dlsh" }, "↳": { text: "\\reflectbox{\\carriagereturn}", textpackages: [ "graphics", "unicode-math" ] }, "↴": { math: "\\linefeed" }, "↵": { math: "\\carriagereturn" }, "↶": { math: "\\curvearrowleft" }, "↷": { math: "\\curvearrowright" }, "↸": { math: "\\barovernorthwestarrow" }, "↹": { math: "\\barleftarrowrightarrowba" }, "↺": { math: "\\circlearrowleft" }, "↻": { math: "\\circlearrowright" }, "↼": { math: "\\leftharpoonup" }, "↽": { math: "\\leftharpoondown" }, "↾": { math: "\\upharpoonright" }, "↿": { math: "\\upharpoonleft" }, "⇀": { math: "\\rightharpoonup", mathpackages: [ "amsmath", "amssymb" ] }, "⇁": { math: "\\rightharpoondown" }, "⇂": { math: "\\downharpoonright" }, "⇃": { math: "\\downharpoonleft" }, "⇄": { math: "\\rightleftarrows" }, "⇅": { math: "\\dblarrowupdown" }, "⇆": { math: "\\leftrightarrows" }, "⇇": { math: "\\leftleftarrows" }, "⇈": { math: "\\upuparrows" }, "⇉": { math: "\\rightrightarrows" }, "⇊": { math: "\\downdownarrows" }, "⇋": { math: "\\leftrightharpoons" }, "⇌": { math: "\\rightleftharpoons" }, "⇍": { math: "\\nLeftarrow" }, "⇎": { math: "\\nLeftrightarrow" }, "⇏": { math: "\\nRightarrow" }, "⇐": { math: "\\Leftarrow" }, "⇑": { math: "\\Uparrow" }, "⇒": { math: "\\Rightarrow" }, "⇓": { math: "\\Downarrow" }, "⇔": { math: "\\Leftrightarrow" }, "⇕": { math: "\\Updownarrow" }, "⇖": { math: "\\Nwarrow" }, "⇗": { math: "\\Nearrow" }, "⇘": { math: "\\Searrow" }, "⇙": { math: "\\Swarrow" }, "⇚": { math: "\\Lleftarrow" }, "⇛": { math: "\\Rrightarrow" }, "⇜": { math: "\\leftsquigarrow" }, "⇝": { math: "\\rightsquigarrow" }, "⇞": { math: "\\nHuparrow" }, "⇟": { math: "\\nHdownarrow" }, "⇠": { math: "\\dashleftarrow" }, "⇡": { math: "\\updasharrow" }, "⇢": { math: "\\dashrightarrow" }, "⇣": { math: "\\downdasharrow" }, "⇤": { math: "\\LeftArrowBar" }, "⇥": { math: "\\RightArrowBar" }, "⇦": { math: "\\leftwhitearrow" }, "⇧": { math: "\\upwhitearrow" }, "⇨": { math: "\\rightwhitearrow" }, "⇩": { math: "\\downwhitearrow" }, "⇪": { math: "\\whitearrowupfrombar" }, "⇴": { math: "\\circleonrightarrow" }, "⇵": { math: "\\DownArrowUpArrow" }, "⇶": { math: "\\rightthreearrows" }, "⇷": { math: "\\nvleftarrow" }, "⇸": { math: "\\pfun" }, "⇹": { math: "\\nvleftrightarrow" }, "⇺": { math: "\\nVleftarrow" }, "⇻": { math: "\\ffun" }, "⇼": { math: "\\nVleftrightarrow" }, "⇽": { math: "\\leftarrowtriangle" }, "⇾": { math: "\\rightarrowtriangle" }, "⇿": { math: "\\leftrightarrowtriangle" }, "∀": { math: "\\forall" }, "∁": { math: "\\complement" }, "∂": { math: "\\partial" }, "∃": { math: "\\exists" }, "∄": { math: "\\nexists" }, "∅": { math: "\\varnothing" }, "∆": { math: "\\increment" }, "∇": { math: "\\nabla" }, "∈": { math: "\\in" }, "∉": { math: "\\not\\in" }, "∊": { math: "\\smallin" }, "∋": { math: "\\ni" }, "∌": { math: "\\not\\ni" }, "∍": { math: "\\smallni" }, "∎": { math: "\\QED" }, "∏": { math: "\\prod" }, "∐": { math: "\\coprod" }, "∑": { math: "\\sum" }, "−": { math: "-", text: "-" }, "∓": { math: "\\mp" }, "∔": { math: "\\dotplus" }, "∕": { text: "/" }, "∖": { math: "\\setminus" }, "∗": { math: "{_\\ast}" }, "∘": { math: "\\circ" }, "∙": { math: "\\bullet" }, "√": { math: "\\surd" }, "∛": { math: "\\sqrt[3]" }, "∜": { math: "\\sqrt[4]" }, "∝": { math: "\\propto" }, "∞": { math: "\\infty" }, "∟": { math: "\\rightangle" }, "∠": { math: "\\angle" }, "∡": { math: "\\measuredangle" }, "∢": { math: "\\sphericalangle" }, "∣": { math: "\\mid" }, "∤": { math: "\\nmid" }, "∥": { math: "\\parallel" }, "∦": { math: "\\nparallel" }, "∧": { math: "\\wedge" }, "∨": { math: "\\vee" }, "∩": { math: "\\cap" }, "∪": { math: "\\cup" }, "∫": { math: "\\int" }, "∬": { math: "{\\int\\!\\int}" }, "∭": { math: "{\\int\\!\\int\\!\\int}" }, "∮": { math: "\\oint" }, "∯": { math: "\\surfintegral" }, "∰": { math: "\\volintegral" }, "∱": { math: "\\clwintegral" }, "∲": { math: "\\lcirclerightint", mathpackages: [ "MnSymbol" ] }, "∳": { math: "\\rcirclerightint", mathpackages: [ "MnSymbol" ] }, "∴": { math: "\\therefore" }, "∵": { math: "\\because" }, "∶": { math: ":" }, "∷": { math: "\\Colon" }, "∸": { math: "\\dotdiv", mathpackages: [ "mathabx" ] }, "∹": { math: "\\eqcolon" }, "∺": { math: "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}" }, "∻": { math: "\\homothetic" }, "∼": { math: "\\sim" }, "∽": { math: "\\backsim" }, "∾": { math: "\\lazysinv" }, "∿": { math: "\\AC" }, "≀": { math: "\\wr" }, "≁": { math: "\\not\\sim" }, "≂": { math: "\\texteqsim", mathpackages: [ "xecjk" ] }, "≂̸": { math: "\\NotEqualTilde" }, "≃": { math: "\\simeq" }, "≄": { math: "\\not\\simeq" }, "≅": { math: "\\cong" }, "≆": { math: "\\approxnotequal" }, "≇": { math: "\\not\\cong" }, "≈": { math: "\\approx" }, "≉": { math: "\\not\\approx" }, "≊": { math: "\\approxeq" }, "≋": { math: "\\tildetrpl" }, "≋̸": { math: "\\not\\apid" }, "≌": { math: "\\allequal" }, "≍": { math: "\\asymp" }, "≎": { math: "\\Bumpeq" }, "≎̸": { math: "\\NotHumpDownHump" }, "≏": { math: "\\bumpeq" }, "≏̸": { math: "\\NotHumpEqual" }, "≐": { math: "\\doteq" }, "≐̸": { math: "\\not\\doteq" }, "≑": { math: "\\doteqdot" }, "≒": { math: "\\fallingdotseq" }, "≓": { math: "\\risingdotseq" }, "≔": { math: "\\coloneq", text: ":=" }, "≕": { math: "=:" }, "≖": { math: "\\eqcirc" }, "≗": { math: "\\circeq" }, "≘": { math: "\\arceq" }, "≙": { math: "\\estimates" }, "≛": { math: "\\starequal" }, "≜": { math: "\\triangleq" }, "≝": { math: "\\eqdef" }, "≞": { math: "\\measeq" }, "≠": { math: "\\neq" }, "≡": { math: "\\equiv" }, "≢": { math: "\\not\\equiv" }, "≣": { math: "\\Equiv" }, "≤": { math: "\\leq" }, "≥": { math: "\\geq" }, "≦": { math: "\\leqq" }, "≧": { math: "\\geqq" }, "≨": { math: "\\lneqq" }, "≨︀": { math: "\\lvertneqq" }, "≩": { math: "\\gneqq" }, "≩︀": { math: "\\gvertneqq" }, "≪": { math: "\\ll" }, "≪̸": { math: "\\NotLessLess" }, "≫": { math: "\\gg" }, "≫̸": { math: "\\NotGreaterGreater" }, "≬": { math: "\\between" }, "≭": { math: "{\\not\\kern-0.3em\\times}" }, "≮": { math: "\\not<" }, "≯": { math: "\\not>" }, "≰": { math: "\\not\\leq" }, "≱": { math: "\\not\\geq" }, "≲": { math: "\\lessequivlnt" }, "≳": { math: "\\greaterequivlnt" }, "≶": { math: "\\lessgtr" }, "≷": { math: "\\gtrless" }, "≸": { math: "\\notlessgreater" }, "≹": { math: "\\notgreaterless" }, "≺": { math: "\\prec" }, "≻": { math: "\\succ" }, "≼": { math: "\\preccurlyeq" }, "≽": { math: "\\succcurlyeq" }, "≾": { math: "\\precapprox" }, "≾̸": { math: "\\NotPrecedesTilde" }, "≿": { math: "\\succapprox" }, "≿̸": { math: "\\NotSucceedsTilde" }, "⊀": { math: "\\not\\prec" }, "⊁": { math: "\\not\\succ" }, "⊂": { math: "\\subset" }, "⊃": { math: "\\supset" }, "⊄": { math: "\\not\\subset" }, "⊅": { math: "\\not\\supset" }, "⊆": { math: "\\subseteq" }, "⊇": { math: "\\supseteq" }, "⊈": { math: "\\not\\subseteq" }, "⊉": { math: "\\not\\supseteq" }, "⊊": { math: "\\subsetneq" }, "⊊︀": { math: "\\varsubsetneqq" }, "⊋": { math: "\\supsetneq" }, "⊋︀": { math: "\\varsupsetneq" }, "⊌": { math: "\\cupleftarrow" }, "⊍": { math: "\\cupdot" }, "⊎": { math: "\\uplus" }, "⊏": { math: "\\sqsubset" }, "⊏̸": { math: "\\NotSquareSubset" }, "⊐": { math: "\\sqsupset" }, "⊐̸": { math: "\\NotSquareSuperset" }, "⊑": { math: "\\sqsubseteq" }, "⊒": { math: "\\sqsupseteq" }, "⊓": { math: "\\sqcap" }, "⊔": { math: "\\sqcup" }, "⊕": { math: "\\oplus" }, "⊖": { math: "\\ominus" }, "⊗": { math: "\\otimes" }, "⊘": { math: "\\oslash" }, "⊙": { math: "\\odot" }, "⊚": { math: "\\circledcirc" }, "⊛": { math: "\\circledast" }, "⊜": { math: "\\circledequal" }, "⊝": { math: "\\circleddash" }, "⊞": { math: "\\boxplus" }, "⊟": { math: "\\boxminus" }, "⊠": { math: "\\boxtimes" }, "⊡": { math: "\\boxdot" }, "⊢": { math: "\\vdash" }, "⊣": { math: "\\dashv" }, "⊤": { math: "\\top" }, "⊥": { math: "\\perp" }, "⊦": { math: "\\assert" }, "⊧": { math: "\\truestate" }, "⊨": { math: "\\forcesextra" }, "⊩": { math: "\\Vdash" }, "⊪": { math: "\\Vvdash" }, "⊫": { math: "\\VDash" }, "⊬": { math: "\\nvdash" }, "⊭": { math: "\\nvDash" }, "⊮": { math: "\\nVdash" }, "⊯": { math: "\\nVDash" }, "⊰": { math: "\\prurel" }, "⊱": { math: "\\scurel" }, "⊲": { math: "\\vartriangleleft" }, "⊳": { math: "\\vartriangleright" }, "⊴": { math: "\\trianglelefteq" }, "⊵": { math: "\\trianglerighteq" }, "⊶": { math: "\\original" }, "⊷": { math: "\\image" }, "⊸": { math: "\\multimap" }, "⊹": { math: "\\hermitconjmatrix" }, "⊺": { math: "\\intercal" }, "⊻": { math: "\\veebar" }, "⊼": { math: "\\barwedge" }, "⊽": { math: "\\barvee" }, "⊾": { math: "\\rightanglearc" }, "⊿": { math: "\\varlrtriangle" }, "⋂": { math: "\\bigcap" }, "⋃": { math: "\\bigcup" }, "⋄": { math: "\\diamond" }, "⋅": { math: "\\cdot" }, "⋆": { math: "\\star" }, "⋇": { math: "\\divideontimes" }, "⋈": { math: "\\bowtie" }, "⋉": { math: "\\ltimes" }, "⋊": { math: "\\rtimes" }, "⋋": { math: "\\leftthreetimes" }, "⋌": { math: "\\rightthreetimes" }, "⋍": { math: "\\backsimeq" }, "⋎": { math: "\\curlyvee" }, "⋏": { math: "\\curlywedge" }, "⋐": { math: "\\Subset" }, "⋑": { math: "\\Supset" }, "⋒": { math: "\\Cap" }, "⋓": { math: "\\Cup" }, "⋔": { math: "\\pitchfork" }, "⋕": { math: "\\hash" }, "⋖": { math: "\\lessdot" }, "⋗": { math: "\\gtrdot" }, "⋘": { math: "\\verymuchless" }, "⋙": { math: "\\verymuchgreater" }, "⋚": { math: "\\lesseqgtr" }, "⋛": { math: "\\gtreqless" }, "⋜": { math: "\\eqless" }, "⋝": { math: "\\eqgtr" }, "⋞": { math: "\\curlyeqprec" }, "⋟": { math: "\\curlyeqsucc" }, "⋠": { math: "\\npreceq" }, "⋡": { math: "\\nsucceq" }, "⋢": { math: "\\not\\sqsubseteq" }, "⋣": { math: "\\not\\sqsupseteq" }, "⋤": { math: "\\sqsubsetneq" }, "⋥": { math: "\\Elzsqspne" }, "⋦": { math: "\\lnsim" }, "⋧": { math: "\\gnsim" }, "⋨": { math: "\\precedesnotsimilar" }, "⋩": { math: "\\succnsim" }, "⋪": { math: "\\ntriangleleft" }, "⋫": { math: "\\ntriangleright" }, "⋬": { math: "\\ntrianglelefteq" }, "⋭": { math: "\\ntrianglerighteq" }, "⋮": { math: "\\vdots" }, "⋯": { math: "\\cdots" }, "⋰": { math: "\\upslopeellipsis" }, "⋱": { math: "\\downslopeellipsis" }, "⋲": { math: "\\disin" }, "⋳": { math: "\\varisins" }, "⋴": { math: "\\isins" }, "⋵": { math: "\\isindot" }, "⋶": { math: "\\barin" }, "⋷": { math: "\\isinobar" }, "⋸": { math: "\\isinvb" }, "⋹": { math: "\\isinE" }, "⋺": { math: "\\nisd" }, "⋻": { math: "\\varnis" }, "⋼": { math: "\\nis" }, "⋽": { math: "\\varniobar" }, "⋾": { math: "\\niobar" }, "⋿": { math: "\\bagmember" }, "⌀": { math: "\\diameter" }, "⌂": { math: "\\house" }, "⌅": { math: "\\varbarwedge", text: "{\\barwedge}" }, "⌆": { math: "\\perspcorrespond" }, "⌈": { math: "\\lceil" }, "⌉": { math: "\\rceil" }, "⌊": { math: "\\lfloor" }, "⌋": { math: "\\rfloor" }, "⌐": { math: "\\invneg" }, "⌑": { math: "\\wasylozenge" }, "⌒": { math: "\\profline" }, "⌓": { math: "\\profsurf" }, "⌕": { math: "\\recorder" }, "⌖": { math: "{\\mathchar\"2208}" }, "⌗": { math: "\\viewdata" }, "⌙": { math: "\\turnednot" }, "⌜": { math: "\\ulcorner" }, "⌝": { math: "\\urcorner" }, "⌞": { math: "\\llcorner" }, "⌟": { math: "\\lrcorner" }, "⌠": { math: "\\inttop" }, "⌡": { math: "\\intbottom" }, "⌢": { math: "\\frown" }, "⌣": { math: "\\smile" }, "〈": { math: "\\langle" }, "〉": { math: "\\rangle" }, "⌬": { math: "\\varhexagonlrbonds" }, "⌲": { math: "\\conictaper" }, "⌶": { math: "\\topbot" }, "⌹": { math: "\\APLinv" }, "⌿": { math: "\\notslash" }, "⍀": { math: "\\notbackslash" }, "⍇": { math: "\\APLleftarrowbox" }, "⍈": { math: "\\APLrightarrowbox" }, "⍉": { math: "\\invdiameter" }, "⍐": { math: "\\APLuparrowbox" }, "⍓": { math: "\\APLboxupcaret" }, "⍗": { math: "\\APLdownarrowbox" }, "⍝": { math: "\\APLcomment" }, "⍞": { math: "\\APLinput" }, "⍟": { math: "\\APLlog" }, "⍰": { math: "\\APLboxquestion" }, "⍼": { math: "\\rangledownzigzagarrow" }, "⎔": { math: "\\hexagon" }, "⎛": { math: "\\lparenuend" }, "⎜": { math: "\\lparenextender" }, "⎝": { math: "\\lparenlend" }, "⎞": { math: "\\rparenuend" }, "⎟": { math: "\\rparenextender" }, "⎠": { math: "\\rparenlend" }, "⎡": { math: "\\lbrackuend" }, "⎢": { math: "\\lbrackextender" }, "⎣": { math: "\\Elzdlcorn" }, "⎤": { math: "\\rbrackuend" }, "⎥": { math: "\\rbrackextender" }, "⎦": { math: "\\rbracklend" }, "⎧": { math: "\\lbraceuend" }, "⎨": { math: "\\lbracemid" }, "⎩": { math: "\\lbracelend" }, "⎪": { math: "\\vbraceextender" }, "⎫": { math: "\\rbraceuend" }, "⎬": { math: "\\rbracemid" }, "⎭": { math: "\\rbracelend" }, "⎮": { math: "\\intextender" }, "⎯": { math: "\\harrowextender" }, "⎰": { math: "\\lmoustache" }, "⎱": { math: "\\rmoustache" }, "⎲": { math: "\\sumtop" }, "⎳": { math: "\\sumbottom" }, "⎴": { math: "\\overbracket" }, "⎵": { math: "\\underbracket" }, "⎶": { math: "\\bbrktbrk" }, "⎷": { math: "\\sqrtbottom" }, "⎸": { math: "\\lvboxline" }, "⎹": { math: "\\rvboxline" }, "⏎": { math: "\\varcarriagereturn" }, "⏜": { math: "\\overparen" }, "⏝": { math: "\\underparen" }, "⏞": { math: "\\overbrace" }, "⏟": { math: "\\underbrace" }, "⏠": { math: "\\obrbrak" }, "⏡": { math: "\\ubrbrak" }, "⏢": { math: "\\trapezium" }, "⏣": { math: "\\benzenr" }, "⏤": { math: "\\strns" }, "⏥": { math: "\\fltns" }, "⏦": { math: "\\accurrent" }, "⏧": { math: "\\elinters" }, "␀": { text: "NUL" }, "␁": { text: "SOH" }, "␂": { text: "STX" }, "␃": { text: "ETX" }, "␄": { text: "EOT" }, "␅": { text: "ENQ" }, "␆": { text: "ACK" }, "␇": { text: "BEL" }, "␈": { text: "BS" }, "␉": { text: "HT" }, "␊": { text: "LF" }, "␋": { text: "VT" }, "␌": { text: "FF" }, "␍": { text: "CR" }, "␎": { text: "SO" }, "␏": { text: "SI" }, "␐": { text: "DLE" }, "␑": { text: "DC1" }, "␒": { text: "DC2" }, "␓": { text: "DC3" }, "␔": { text: "DC4" }, "␕": { text: "NAK" }, "␖": { text: "SYN" }, "␗": { text: "ETB" }, "␘": { text: "CAN" }, "␙": { text: "EM" }, "␚": { text: "SUB" }, "␛": { text: "ESC" }, "␜": { text: "FS" }, "␝": { text: "GS" }, "␞": { text: "RS" }, "␟": { text: "US" }, "␠": { text: "SP" }, "␡": { text: "DEL" }, "␣": { text: "{\\textvisiblespace}" }, "␤": { text: "NL" }, "␥": { text: "///" }, "␦": { text: "?" }, "①": { text: "\\ding{172}" }, "②": { text: "\\ding{173}" }, "③": { text: "\\ding{174}" }, "④": { text: "\\ding{175}" }, "⑤": { text: "\\ding{176}" }, "⑥": { text: "\\ding{177}" }, "⑦": { text: "\\ding{178}" }, "⑧": { text: "\\ding{179}" }, "⑨": { text: "\\ding{180}" }, "⑩": { text: "\\ding{181}" }, "⑪": { text: "(11)" }, "⑫": { text: "(12)" }, "⑬": { text: "(13)" }, "⑭": { text: "(14)" }, "⑮": { text: "(15)" }, "⑯": { text: "(16)" }, "⑰": { text: "(17)" }, "⑱": { text: "(18)" }, "⑲": { text: "(19)" }, "⑳": { text: "(20)" }, "⑴": { text: "(1)" }, "⑵": { text: "(2)" }, "⑶": { text: "(3)" }, "⑷": { text: "(4)" }, "⑸": { text: "(5)" }, "⑹": { text: "(6)" }, "⑺": { text: "(7)" }, "⑻": { text: "(8)" }, "⑼": { text: "(9)" }, "⑽": { text: "(10)" }, "⑾": { text: "(11)" }, "⑿": { text: "(12)" }, "⒀": { text: "(13)" }, "⒁": { text: "(14)" }, "⒂": { text: "(15)" }, "⒃": { text: "(16)" }, "⒄": { text: "(17)" }, "⒅": { text: "(18)" }, "⒆": { text: "(19)" }, "⒇": { text: "(20)" }, "⒈": { text: "1." }, "⒉": { text: "2." }, "⒊": { text: "3." }, "⒋": { text: "4." }, "⒌": { text: "5." }, "⒍": { text: "6." }, "⒎": { text: "7." }, "⒏": { text: "8." }, "⒐": { text: "9." }, "⒑": { text: "10." }, "⒒": { text: "11." }, "⒓": { text: "12." }, "⒔": { text: "13." }, "⒕": { text: "14." }, "⒖": { text: "15." }, "⒗": { text: "16." }, "⒘": { text: "17." }, "⒙": { text: "18." }, "⒚": { text: "19." }, "⒛": { text: "20." }, "⒜": { text: "(a)" }, "⒝": { text: "(b)" }, "⒞": { text: "(c)" }, "⒟": { text: "(d)" }, "⒠": { text: "(e)" }, "⒡": { text: "(f)" }, "⒢": { text: "(g)" }, "⒣": { text: "(h)" }, "⒤": { text: "(i)" }, "⒥": { text: "(j)" }, "⒦": { text: "(k)" }, "⒧": { text: "(l)" }, "⒨": { text: "(m)" }, "⒩": { text: "(n)" }, "⒪": { text: "(o)" }, "⒫": { text: "(p)" }, "⒬": { text: "(q)" }, "⒭": { text: "(r)" }, "⒮": { text: "(s)" }, "⒯": { text: "(t)" }, "⒰": { text: "(u)" }, "⒱": { text: "(v)" }, "⒲": { text: "(w)" }, "⒳": { text: "(x)" }, "⒴": { text: "(y)" }, "⒵": { text: "(z)" }, "Ⓐ": { text: "(A)" }, "Ⓑ": { text: "(B)" }, "Ⓒ": { text: "(C)" }, "Ⓓ": { text: "(D)" }, "Ⓔ": { text: "(E)" }, "Ⓕ": { text: "(F)" }, "Ⓖ": { text: "(G)" }, "Ⓗ": { text: "(H)" }, "Ⓘ": { text: "(I)" }, "Ⓙ": { text: "(J)" }, "Ⓚ": { text: "(K)" }, "Ⓛ": { text: "(L)" }, "Ⓜ": { text: "(M)" }, "Ⓝ": { text: "(N)" }, "Ⓞ": { text: "(O)" }, "Ⓟ": { text: "(P)" }, "Ⓠ": { text: "(Q)" }, "Ⓡ": { text: "(R)" }, "Ⓢ": { math: "\\circledS" }, "Ⓣ": { text: "(T)" }, "Ⓤ": { text: "(U)" }, "Ⓥ": { text: "(V)" }, "Ⓦ": { text: "(W)" }, "Ⓧ": { text: "(X)" }, "Ⓨ": { text: "(Y)" }, "Ⓩ": { text: "(Z)" }, "ⓐ": { text: "(a)" }, "ⓑ": { text: "(b)" }, "ⓒ": { text: "(c)" }, "ⓓ": { text: "(d)" }, "ⓔ": { text: "(e)" }, "ⓕ": { text: "(f)" }, "ⓖ": { text: "(g)" }, "ⓗ": { text: "(h)" }, "ⓘ": { text: "(i)" }, "ⓙ": { text: "(j)" }, "ⓚ": { text: "(k)" }, "ⓛ": { text: "(l)" }, "ⓜ": { text: "(m)" }, "ⓝ": { text: "(n)" }, "ⓞ": { text: "(o)" }, "ⓟ": { text: "(p)" }, "ⓠ": { text: "(q)" }, "ⓡ": { text: "(r)" }, "ⓢ": { text: "(s)" }, "ⓣ": { text: "(t)" }, "ⓤ": { text: "(u)" }, "ⓥ": { text: "(v)" }, "ⓦ": { text: "(w)" }, "ⓧ": { text: "(x)" }, "ⓨ": { text: "(y)" }, "ⓩ": { text: "(z)" }, "⓪": { text: "(0)" }, "─": { text: "-" }, "━": { text: "=" }, "│": { text: "|" }, "┃": { text: "|" }, "┄": { text: "-" }, "┅": { text: "=" }, "┆": { math: "\\Elzdshfnc" }, "┇": { text: "|" }, "┈": { text: "-" }, "┉": { text: "=" }, "┊": { text: "|" }, "┋": { text: "|" }, "┌": { text: "+" }, "┍": { text: "+" }, "┎": { text: "+" }, "┏": { text: "+" }, "┐": { text: "+" }, "┑": { text: "+" }, "┒": { text: "+" }, "┓": { text: "+" }, "└": { text: "+" }, "┕": { text: "+" }, "┖": { text: "+" }, "┗": { text: "+" }, "┘": { text: "+" }, "┙": { math: "\\Elzsqfnw" }, "┚": { text: "+" }, "┛": { text: "+" }, "├": { text: "+" }, "┝": { text: "+" }, "┞": { text: "+" }, "┟": { text: "+" }, "┠": { text: "+" }, "┡": { text: "+" }, "┢": { text: "+" }, "┣": { text: "+" }, "┤": { text: "+" }, "┥": { text: "+" }, "┦": { text: "+" }, "┧": { text: "+" }, "┨": { text: "+" }, "┩": { text: "+" }, "┪": { text: "+" }, "┫": { text: "+" }, "┬": { text: "+" }, "┭": { text: "+" }, "┮": { text: "+" }, "┯": { text: "+" }, "┰": { text: "+" }, "┱": { text: "+" }, "┲": { text: "+" }, "┳": { text: "+" }, "┴": { text: "+" }, "┵": { text: "+" }, "┶": { text: "+" }, "┷": { text: "+" }, "┸": { text: "+" }, "┹": { text: "+" }, "┺": { text: "+" }, "┻": { text: "+" }, "┼": { text: "+" }, "┽": { text: "+" }, "┾": { text: "+" }, "┿": { text: "+" }, "╀": { text: "+" }, "╁": { text: "+" }, "╂": { text: "+" }, "╃": { text: "+" }, "╄": { text: "+" }, "╅": { text: "+" }, "╆": { text: "+" }, "╇": { text: "+" }, "╈": { text: "+" }, "╉": { text: "+" }, "╊": { text: "+" }, "╋": { text: "+" }, "╌": { text: "-" }, "╍": { text: "=" }, "╎": { text: "|" }, "╏": { text: "|" }, "═": { text: "=" }, "║": { text: "|" }, "╒": { text: "+" }, "╓": { text: "+" }, "╔": { text: "+" }, "╕": { text: "+" }, "╖": { text: "+" }, "╗": { text: "+" }, "╘": { text: "+" }, "╙": { text: "+" }, "╚": { text: "+" }, "╛": { text: "+" }, "╜": { text: "+" }, "╝": { text: "+" }, "╞": { text: "+" }, "╟": { text: "+" }, "╠": { text: "+" }, "╡": { text: "+" }, "╢": { text: "+" }, "╣": { text: "+" }, "╤": { text: "+" }, "╥": { text: "+" }, "╦": { text: "+" }, "╧": { text: "+" }, "╨": { text: "+" }, "╩": { text: "+" }, "╪": { text: "+" }, "╫": { text: "+" }, "╬": { text: "+" }, "╭": { text: "+" }, "╮": { text: "+" }, "╯": { text: "+" }, "╰": { text: "+" }, "╱": { math: "\\diagup" }, "╲": { text: "\\" }, "╳": { text: "X" }, "╼": { text: "-" }, "╽": { text: "|" }, "╾": { text: "-" }, "╿": { text: "|" }, "▀": { math: "\\blockuphalf" }, "▄": { math: "\\blocklowhalf" }, "█": { math: "\\blockfull" }, "▌": { math: "\\blocklefthalf" }, "▐": { math: "\\blockrighthalf" }, "░": { math: "\\blockqtrshaded" }, "▒": { math: "\\blockhalfshaded" }, "▓": { math: "\\blockthreeqtrshaded" }, "■": { math: "\\mdlgblksquare", text: "\\ding{110}" }, "□": { math: "\\square" }, "▢": { math: "\\squoval" }, "▣": { math: "\\blackinwhitesquare" }, "▤": { math: "\\squarehfill" }, "▥": { math: "\\squarevfill" }, "▦": { math: "\\squarehvfill" }, "▧": { math: "\\squarenwsefill" }, "▨": { math: "\\squareneswfill" }, "▩": { math: "\\squarecrossfill" }, "▪": { math: "\\blacksquare" }, "▫": { math: "\\smwhtsquare" }, "▬": { math: "\\hrectangleblack" }, "▭": { math: "\\fbox{~~}" }, "▮": { math: "\\vrectangleblack" }, "▯": { math: "\\Elzvrecto" }, "▰": { math: "\\parallelogramblack" }, "▲": { math: "\\bigblacktriangleup", text: "\\ding{115}" }, "△": { math: "\\bigtriangleup" }, "▴": { math: "\\blacktriangle" }, "▵": { math: "\\vartriangle" }, "▶": { math: "\\RHD" }, "▷": { math: "\\rhd" }, "▸": { math: "\\blacktriangleright" }, "▹": { math: "\\triangleright" }, "►": { math: "\\blackpointerright" }, "▻": { math: "\\whitepointerright" }, "▼": { math: "\\bigblacktriangledown", text: "\\ding{116}" }, "▽": { math: "\\bigtriangledown" }, "▾": { math: "\\blacktriangledown" }, "▿": { math: "\\triangledown" }, "◀": { math: "\\LHD" }, "◁": { math: "\\lhd" }, "◂": { math: "\\blacktriangleleft" }, "◃": { math: "\\triangleleft" }, "◄": { math: "\\blackpointerleft" }, "◅": { math: "\\whitepointerleft" }, "◆": { math: "\\Diamondblack", text: "\\ding{117}" }, "◇": { math: "\\Diamond" }, "◈": { math: "\\blackinwhitediamond" }, "◉": { math: "\\fisheye" }, "◊": { math: "\\lozenge" }, "○": { math: "\\bigcirc" }, "◌": { math: "\\dottedcircle" }, "◍": { math: "\\circlevertfill" }, "◎": { math: "\\bullseye" }, "●": { math: "\\CIRCLE", text: "\\ding{108}" }, "◐": { math: "\\Elzcirfl" }, "◑": { math: "\\Elzcirfr" }, "◒": { math: "\\Elzcirfb" }, "◓": { math: "\\circletophalfblack" }, "◔": { math: "\\circleurquadblack" }, "◕": { math: "\\blackcircleulquadwhite" }, "◖": { math: "\\LEFTCIRCLE" }, "◗": { math: "\\RIGHTCIRCLE", text: "\\ding{119}" }, "◘": { math: "\\Elzrvbull" }, "◙": { math: "\\inversewhitecircle" }, "◚": { math: "\\invwhiteupperhalfcircle" }, "◛": { math: "\\invwhitelowerhalfcircle" }, "◜": { math: "\\ularc" }, "◝": { math: "\\urarc" }, "◞": { math: "\\lrarc" }, "◟": { math: "\\llarc" }, "◠": { math: "\\topsemicircle" }, "◡": { math: "\\botsemicircle" }, "◢": { math: "\\lrblacktriangle" }, "◣": { math: "\\llblacktriangle" }, "◤": { math: "\\ulblacktriangle" }, "◥": { math: "\\urblacktriangle" }, "◦": { math: "\\smwhtcircle" }, "◧": { math: "\\Elzsqfl" }, "◨": { math: "\\Elzsqfr" }, "◩": { math: "\\squareulblack" }, "◪": { math: "\\Elzsqfse" }, "◫": { math: "\\boxbar" }, "◬": { math: "\\trianglecdot" }, "◭": { math: "\\triangleleftblack" }, "◮": { math: "\\trianglerightblack" }, "◯": { math: "\\bigcirc" }, "◰": { math: "\\squareulquad" }, "◱": { math: "\\squarellquad" }, "◲": { math: "\\squarelrquad" }, "◳": { math: "\\squareurquad" }, "◴": { math: "\\circleulquad" }, "◵": { math: "\\circlellquad" }, "◶": { math: "\\circlelrquad" }, "◷": { math: "\\circleurquad" }, "◸": { math: "\\ultriangle" }, "◹": { math: "\\urtriangle" }, "◺": { math: "\\lltriangle" }, "◻": { math: "\\square" }, "◼": { math: "\\blacksquare" }, "◽": { math: "\\mdsmwhtsquare" }, "◾": { math: "\\mdsmblksquare" }, "◿": { math: "\\lrtriangle" }, "★": { math: "\\bigstar", text: "\\ding{72}" }, "☆": { math: "\\bigwhitestar", text: "\\ding{73}" }, "☉": { math: "\\Sun" }, "☎": { text: "\\ding{37}" }, "☐": { math: "\\Square" }, "☑": { math: "\\CheckedBox" }, "☒": { math: "\\XBox" }, "☓": { text: "X" }, "☕": { math: "\\steaming" }, "☛": { text: "\\ding{42}" }, "☞": { math: "\\pointright", text: "\\ding{43}" }, "☠": { math: "\\skull" }, "☡": { math: "\\danger" }, "☢": { math: "\\radiation" }, "☣": { math: "\\biohazard" }, "☯": { math: "\\yinyang" }, "☹": { math: "\\frownie" }, "☺": { math: "\\smiley" }, "☻": { math: "\\blacksmiley" }, "☼": { math: "\\sun" }, "☽": { text: "{\\rightmoon}", textpackages: [ "wasysym" ] }, "☾": { text: "{\\leftmoon}", textpackages: [ "wasysym" ] }, "☿": { math: "\\mercury", text: "{\\mercury}" }, "♀": { math: "\\female", text: "{\\venus}" }, "♁": { math: "\\earth" }, "♂": { math: "\\male", text: "{\\male}" }, "♃": { math: "\\jupiter", text: "{\\jupiter}" }, "♄": { math: "\\saturn", text: "{\\saturn}" }, "♅": { math: "\\uranus", text: "{\\uranus}" }, "♆": { math: "\\neptune", text: "{\\neptune}" }, "♇": { math: "\\pluto", text: "{\\pluto}" }, "♈": { math: "\\aries", text: "{\\aries}" }, "♉": { math: "\\taurus", text: "{\\taurus}" }, "♊": { math: "\\gemini", text: "{\\gemini}" }, "♋": { math: "\\cancer", text: "{\\cancer}" }, "♌": { math: "\\leo", text: "{\\leo}" }, "♍": { math: "\\virgo", text: "{\\virgo}" }, "♎": { math: "\\libra", text: "{\\libra}" }, "♏": { math: "\\scorpio", text: "{\\scorpio}" }, "♐": { math: "\\sagittarius", text: "{\\sagittarius}" }, "♑": { math: "\\capricornus", text: "{\\capricornus}" }, "♒": { math: "\\aquarius", text: "{\\aquarius}" }, "♓": { math: "\\pisces", text: "{\\pisces}" }, "♠": { math: "\\spadesuit", text: "\\ding{171}" }, "♡": { math: "\\heartsuit" }, "♢": { math: "\\diamond" }, "♣": { math: "\\clubsuit", text: "\\ding{168}" }, "♤": { math: "\\varspadesuit" }, "♥": { math: "\\varheartsuit", text: "\\ding{170}" }, "♦": { math: "\\vardiamondsuit", text: "\\ding{169}" }, "♧": { math: "\\varclubsuit" }, "♩": { math: "\\quarternote", text: "{\\quarternote}" }, "♪": { math: "\\eighthnote", text: "{\\eighthnote}" }, "♫": { math: "\\twonotes" }, "♬": { math: "\\sixteenthnote" }, "♭": { math: "\\flat" }, "♮": { math: "\\natural" }, "♯": { math: "\\sharp" }, "♻": { math: "\\recycle" }, "♾": { math: "\\acidfree" }, "⚀": { math: "\\dicei" }, "⚁": { math: "\\diceii" }, "⚂": { math: "\\diceiii" }, "⚃": { math: "\\diceiv" }, "⚄": { math: "\\dicev" }, "⚅": { math: "\\dicevi" }, "⚆": { math: "\\circledrightdot" }, "⚇": { math: "\\circledtwodots" }, "⚈": { math: "\\blackcircledrightdot" }, "⚉": { math: "\\blackcircledtwodots" }, "⚓": { math: "\\anchor" }, "⚔": { math: "\\swords" }, "⚠": { math: "\\warning" }, "⚥": { math: "\\Hermaphrodite" }, "⚪": { math: "\\medcirc" }, "⚫": { math: "\\medbullet" }, "⚬": { math: "\\mdsmwhtcircle" }, "⚲": { math: "\\neuter" }, "✁": { text: "\\ding{33}" }, "✂": { text: "\\ding{34}" }, "✃": { text: "\\ding{35}" }, "✄": { text: "\\ding{36}" }, "✆": { text: "\\ding{38}" }, "✇": { text: "\\ding{39}" }, "✈": { text: "\\ding{40}" }, "✉": { text: "\\ding{41}" }, "✌": { text: "\\ding{44}" }, "✍": { text: "\\ding{45}" }, "✎": { math: "\\pencil", text: "\\ding{46}" }, "✏": { text: "\\ding{47}" }, "✐": { text: "\\ding{48}" }, "✑": { text: "\\ding{49}" }, "✒": { text: "\\ding{50}" }, "✓": { math: "\\checkmark", text: "\\ding{51}" }, "✔": { text: "\\ding{52}" }, "✕": { text: "\\ding{53}" }, "✖": { text: "\\ding{54}" }, "✗": { math: "\\ballotx", text: "\\ding{55}" }, "✘": { text: "\\ding{56}" }, "✙": { text: "\\ding{57}" }, "✚": { text: "\\ding{58}" }, "✛": { text: "\\ding{59}" }, "✜": { text: "\\ding{60}" }, "✝": { text: "\\ding{61}" }, "✞": { text: "\\ding{62}" }, "✟": { text: "\\ding{63}" }, "✠": { math: "\\maltese", text: "\\ding{64}" }, "✡": { text: "\\ding{65}" }, "✢": { text: "\\ding{66}" }, "✣": { text: "\\ding{67}" }, "✤": { text: "\\ding{68}" }, "✥": { text: "\\ding{69}" }, "✦": { text: "\\ding{70}" }, "✧": { text: "\\ding{71}" }, "✩": { text: "\\ding{73}" }, "✪": { math: "\\circledstar", text: "\\ding{74}" }, "✫": { text: "\\ding{75}" }, "✬": { text: "\\ding{76}" }, "✭": { text: "\\ding{77}" }, "✮": { text: "\\ding{78}" }, "✯": { text: "\\ding{79}" }, "✰": { text: "\\ding{80}" }, "✱": { text: "\\ding{81}" }, "✲": { text: "\\ding{82}" }, "✳": { text: "\\ding{83}" }, "✴": { text: "\\ding{84}" }, "✵": { text: "\\ding{85}" }, "✶": { math: "\\varstar", text: "\\ding{86}" }, "✷": { text: "\\ding{87}" }, "✸": { text: "\\ding{88}" }, "✹": { text: "\\ding{89}" }, "✺": { text: "\\ding{90}" }, "✻": { text: "\\ding{91}" }, "✼": { text: "\\ding{92}" }, "✽": { math: "\\dingasterisk", text: "\\ding{93}" }, "✾": { text: "\\ding{94}" }, "✿": { text: "\\ding{95}" }, "❀": { text: "\\ding{96}" }, "❁": { text: "\\ding{97}" }, "❂": { text: "\\ding{98}" }, "❃": { text: "\\ding{99}" }, "❄": { text: "\\ding{100}" }, "❅": { text: "\\ding{101}" }, "❆": { text: "\\ding{102}" }, "❇": { text: "\\ding{103}" }, "❈": { text: "\\ding{104}" }, "❉": { text: "\\ding{105}" }, "❊": { text: "\\ding{106}" }, "❋": { text: "\\ding{107}" }, "❍": { text: "\\ding{109}" }, "❏": { text: "\\ding{111}" }, "❐": { text: "\\ding{112}" }, "❑": { text: "\\ding{113}" }, "❒": { text: "\\ding{114}" }, "❖": { text: "\\ding{118}" }, "❘": { text: "\\ding{120}" }, "❙": { text: "\\ding{121}" }, "❚": { text: "\\ding{122}" }, "❛": { text: "\\ding{123}" }, "❜": { text: "\\ding{124}" }, "❝": { text: "\\ding{125}" }, "❞": { text: "\\ding{126}" }, "❡": { text: "\\ding{161}" }, "❢": { text: "\\ding{162}" }, "❣": { text: "\\ding{163}" }, "❤": { text: "\\ding{164}" }, "❥": { text: "\\ding{165}" }, "❦": { text: "\\ding{166}" }, "❧": { text: "\\ding{167}" }, "❲": { math: "\\lbrbrak" }, "❳": { math: "\\rbrbrak" }, "❶": { text: "\\ding{182}" }, "❷": { text: "\\ding{183}" }, "❸": { text: "\\ding{184}" }, "❹": { text: "\\ding{185}" }, "❺": { text: "\\ding{186}" }, "❻": { text: "\\ding{187}" }, "❼": { text: "\\ding{188}" }, "❽": { text: "\\ding{189}" }, "❾": { text: "\\ding{190}" }, "❿": { text: "\\ding{191}" }, "➀": { text: "\\ding{192}" }, "➁": { text: "\\ding{193}" }, "➂": { text: "\\ding{194}" }, "➃": { text: "\\ding{195}" }, "➄": { text: "\\ding{196}" }, "➅": { text: "\\ding{197}" }, "➆": { text: "\\ding{198}" }, "➇": { text: "\\ding{199}" }, "➈": { text: "\\ding{200}" }, "➉": { text: "\\ding{201}" }, "➊": { text: "\\ding{202}" }, "➋": { text: "\\ding{203}" }, "➌": { text: "\\ding{204}" }, "➍": { text: "\\ding{205}" }, "➎": { text: "\\ding{206}" }, "➏": { text: "\\ding{207}" }, "➐": { text: "\\ding{208}" }, "➑": { text: "\\ding{209}" }, "➒": { text: "\\ding{210}" }, "➓": { text: "\\ding{211}" }, "➔": { text: "\\ding{212}" }, "➘": { text: "\\ding{216}" }, "➙": { text: "\\ding{217}" }, "➚": { text: "\\ding{218}" }, "➛": { math: "\\draftingarrow", text: "\\ding{219}" }, "➜": { text: "\\ding{220}" }, "➝": { text: "\\ding{221}" }, "➞": { text: "\\ding{222}" }, "➟": { text: "\\ding{223}" }, "➠": { text: "\\ding{224}" }, "➡": { text: "\\ding{225}" }, "➢": { math: "\\arrowbullet", text: "\\ding{226}" }, "➣": { text: "\\ding{227}" }, "➤": { text: "\\ding{228}" }, "➥": { text: "\\ding{229}" }, "➦": { text: "\\ding{230}" }, "➧": { text: "\\ding{231}" }, "➨": { text: "\\ding{232}" }, "➩": { text: "\\ding{233}" }, "➪": { text: "\\ding{234}" }, "➫": { text: "\\ding{235}" }, "➬": { text: "\\ding{236}" }, "➭": { text: "\\ding{237}" }, "➮": { text: "\\ding{238}" }, "➯": { text: "\\ding{239}" }, "➱": { text: "\\ding{241}" }, "➲": { text: "\\ding{242}" }, "➳": { text: "\\ding{243}" }, "➴": { text: "\\ding{244}" }, "➵": { text: "\\ding{245}" }, "➶": { text: "\\ding{246}" }, "➷": { text: "\\ding{247}" }, "➸": { text: "\\ding{248}" }, "➹": { text: "\\ding{249}" }, "➺": { text: "\\ding{250}" }, "➻": { text: "\\ding{251}" }, "➼": { text: "\\ding{252}" }, "➽": { text: "\\ding{253}" }, "➾": { text: "\\ding{254}" }, "⟀": { math: "\\threedangle" }, "⟁": { math: "\\whiteinwhitetriangle" }, "⟂": { math: "\\perp" }, "⟃": { math: "\\subsetcirc" }, "⟄": { math: "\\supsetcirc" }, "⟅": { math: "\\Lbag" }, "⟆": { math: "\\Rbag" }, "⟇": { math: "\\veedot" }, "⟈": { math: "\\bsolhsub" }, "⟉": { math: "\\suphsol" }, "⟌": { math: "\\longdivision" }, "⟐": { math: "\\Diamonddot" }, "⟑": { math: "\\wedgedot" }, "⟒": { math: "\\upin" }, "⟓": { math: "\\pullback" }, "⟔": { math: "\\pushout" }, "⟕": { math: "\\leftouterjoin" }, "⟖": { math: "\\rightouterjoin" }, "⟗": { math: "\\fullouterjoin" }, "⟘": { math: "\\bigbot" }, "⟙": { math: "\\bigtop" }, "⟚": { math: "\\DashVDash" }, "⟛": { math: "\\dashVdash" }, "⟜": { math: "\\multimapinv" }, "⟝": { math: "\\vlongdash" }, "⟞": { math: "\\longdashv" }, "⟟": { math: "\\cirbot" }, "⟠": { math: "\\lozengeminus" }, "⟡": { math: "\\concavediamond" }, "⟢": { math: "\\concavediamondtickleft" }, "⟣": { math: "\\concavediamondtickright" }, "⟤": { math: "\\whitesquaretickleft" }, "⟥": { math: "\\whitesquaretickright" }, "⟦": { math: "\\llbracket" }, "⟧": { math: "\\rrbracket" }, "⟨": { math: "\\langle" }, "⟩": { math: "\\rangle" }, "⟪": { math: "\\lang" }, "⟫": { math: "\\rang" }, "⟬": { math: "\\Lbrbrak" }, "⟭": { math: "\\Rbrbrak" }, "⟮": { math: "\\lgroup" }, "⟯": { math: "\\rgroup" }, "⟰": { math: "\\UUparrow" }, "⟱": { math: "\\DDownarrow" }, "⟲": { math: "\\acwgapcirclearrow" }, "⟳": { math: "\\cwgapcirclearrow" }, "⟴": { math: "\\rightarrowonoplus" }, "⟵": { math: "\\longleftarrow" }, "⟶": { math: "\\longrightarrow" }, "⟷": { math: "\\longleftrightarrow" }, "⟸": { math: "\\Longleftarrow" }, "⟹": { math: "\\Longrightarrow" }, "⟺": { math: "\\Longleftrightarrow" }, "⟻": { math: "\\longmapsfrom" }, "⟼": { math: "\\longmapsto" }, "⟽": { math: "\\Longmapsfrom" }, "⟾": { math: "\\Longmapsto" }, "⟿": { math: "\\sim\\joinrel\\leadsto" }, "⤀": { math: "\\psur" }, "⤁": { math: "\\nVtwoheadrightarrow" }, "⤂": { math: "\\nvLeftarrow" }, "⤃": { math: "\\nvRightarrow" }, "⤄": { math: "\\nvLeftrightarrow" }, "⤆": { math: "\\Mapsfrom" }, "⤇": { math: "\\Mapsto" }, "⤈": { math: "\\downarrowbarred" }, "⤉": { math: "\\uparrowbarred" }, "⤊": { math: "\\Uuparrow" }, "⤋": { math: "\\Ddownarrow" }, "⤌": { math: "\\leftbkarrow" }, "⤍": { math: "\\rightbkarrow" }, "⤎": { math: "\\leftdbkarrow" }, "⤏": { math: "\\dbkarow" }, "⤐": { math: "\\drbkarow" }, "⤑": { math: "\\rightdotarrow" }, "⤒": { math: "\\UpArrowBar" }, "⤓": { math: "\\DownArrowBar" }, "⤔": { math: "\\pinj" }, "⤕": { math: "\\finj" }, "⤖": { math: "\\bij" }, "⤗": { math: "\\nvtwoheadrightarrowtail" }, "⤘": { math: "\\nVtwoheadrightarrowtail" }, "⤙": { math: "\\lefttail" }, "⤚": { math: "\\righttail" }, "⤛": { math: "\\leftdbltail" }, "⤜": { math: "\\rightdbltail" }, "⤝": { math: "\\diamondleftarrow" }, "⤞": { math: "\\rightarrowdiamond" }, "⤟": { math: "\\diamondleftarrowbar" }, "⤠": { math: "\\barrightarrowdiamond" }, "⤡": { math: "\\nwsearrow" }, "⤢": { math: "\\neswarrow" }, "⤫": { math: "\\rdiagovfdiag" }, "⤬": { math: "\\fdiagovrdiag" }, "⤭": { math: "\\seovnearrow" }, "⤮": { math: "\\neovsearrow" }, "⤯": { math: "\\fdiagovnearrow" }, "⤰": { math: "\\rdiagovsearrow" }, "⤱": { math: "\\neovnwarrow" }, "⤲": { math: "\\nwovnearrow" }, "⤴": { math: "\\uprightcurvearrow" }, "⤵": { math: "\\downrightcurvedarrow" }, "⤸": { math: "\\cwrightarcarrow" }, "⤹": { math: "\\acwleftarcarrow" }, "⤺": { math: "\\acwoverarcarrow" }, "⤻": { math: "\\acwunderarcarrow" }, "⤼": { math: "\\curvearrowrightminus" }, "⤽": { math: "\\curvearrowleftplus" }, "⤾": { math: "\\cwundercurvearrow" }, "⤿": { math: "\\ccwundercurvearrow" }, "⥀": { math: "\\Elolarr" }, "⥁": { math: "\\Elorarr" }, "⥂": { math: "\\ElzRlarr" }, "⥃": { math: "\\leftarrowshortrightarrow" }, "⥄": { math: "\\ElzrLarr" }, "⥅": { math: "\\rightarrowplus" }, "⥆": { math: "\\leftarrowplus" }, "⥇": { math: "\\Elzrarrx" }, "⥈": { math: "\\leftrightarrowcircle" }, "⥉": { math: "\\twoheaduparrowcircle" }, "⥊": { math: "\\leftrightharpoon" }, "⥋": { math: "\\rightleftharpoon" }, "⥌": { math: "\\updownharpoonrightleft" }, "⥍": { math: "\\updownharpoonleftright" }, "⥎": { math: "\\LeftRightVector" }, "⥏": { math: "\\RightUpDownVector" }, "⥐": { math: "\\DownLeftRightVector" }, "⥑": { math: "\\LeftUpDownVector" }, "⥒": { math: "\\LeftVectorBar" }, "⥓": { math: "\\RightVectorBar" }, "⥔": { math: "\\RightUpVectorBar" }, "⥕": { math: "\\RightDownVectorBar" }, "⥖": { math: "\\DownLeftVectorBar" }, "⥗": { math: "\\DownRightVectorBar" }, "⥘": { math: "\\LeftUpVectorBar" }, "⥙": { math: "\\LeftDownVectorBar" }, "⥚": { math: "\\LeftTeeVector" }, "⥛": { math: "\\RightTeeVector" }, "⥜": { math: "\\RightUpTeeVector" }, "⥝": { math: "\\RightDownTeeVector" }, "⥞": { math: "\\DownLeftTeeVector" }, "⥟": { math: "\\DownRightTeeVector" }, "⥠": { math: "\\LeftUpTeeVector" }, "⥡": { math: "\\LeftDownTeeVector" }, "⥢": { math: "\\leftleftharpoons" }, "⥣": { math: "\\upupharpoons" }, "⥤": { math: "\\rightrightharpoons" }, "⥥": { math: "\\downdownharpoons" }, "⥦": { math: "\\leftrightharpoonsup" }, "⥧": { math: "\\leftrightharpoonsdown" }, "⥨": { math: "\\rightleftharpoonsup" }, "⥩": { math: "\\rightleftharpoonsdown" }, "⥪": { math: "\\leftbarharpoon" }, "⥫": { math: "\\barleftharpoon" }, "⥬": { math: "\\rightbarharpoon" }, "⥭": { math: "\\barrightharpoon" }, "⥮": { math: "\\UpEquilibrium" }, "⥯": { math: "\\ReverseUpEquilibrium" }, "⥰": { math: "\\RoundImplies" }, "⥱": { math: "\\equalrightarrow" }, "⥲": { math: "\\similarrightarrow" }, "⥳": { math: "\\leftarrowsimilar" }, "⥴": { math: "\\rightarrowsimilar" }, "⥵": { math: "\\rightarrowapprox" }, "⥶": { math: "\\ltlarr" }, "⥷": { math: "\\leftarrowless" }, "⥸": { math: "\\gtrarr" }, "⥹": { math: "\\subrarr" }, "⥺": { math: "\\leftarrowsubset" }, "⥻": { math: "\\suplarr" }, "⥾": { math: "\\upfishtail" }, "⥿": { math: "\\downfishtail" }, "⦀": { math: "\\Elztfnc" }, "⦁": { math: "\\spot" }, "⦂": { math: "\\typecolon" }, "⦃": { math: "\\lBrace" }, "⦄": { math: "\\rBrace" }, "⦆": { math: "\\Elroang" }, "⦇": { math: "\\limg" }, "⦈": { math: "\\rimg" }, "⦉": { math: "\\lblot" }, "⦊": { math: "\\rblot" }, "⦋": { math: "\\lbrackubar" }, "⦌": { math: "\\rbrackubar" }, "⦍": { math: "\\lbrackultick" }, "⦎": { math: "\\rbracklrtick" }, "⦏": { math: "\\lbracklltick" }, "⦐": { math: "\\rbrackurtick" }, "⦑": { math: "\\langledot" }, "⦒": { math: "\\rangledot" }, "⦓": { math: "<\\kern-0.58em(" }, "⦕": { math: "\\Lparengtr" }, "⦖": { math: "\\Rparenless" }, "⦗": { math: "\\lblkbrbrak" }, "⦘": { math: "\\rblkbrbrak" }, "⦙": { math: "\\Elzddfnc" }, "⦚": { math: "\\vzigzag" }, "⦛": { math: "\\measuredangleleft" }, "⦜": { math: "\\Angle" }, "⦝": { math: "\\rightanglemdot" }, "⦞": { math: "\\angles" }, "⦟": { math: "\\angdnr" }, "⦠": { math: "\\Elzlpargt" }, "⦡": { math: "\\sphericalangleup" }, "⦢": { math: "\\turnangle" }, "⦣": { math: "\\revangle" }, "⦤": { math: "\\angleubar" }, "⦥": { math: "\\revangleubar" }, "⦦": { math: "\\wideangledown" }, "⦧": { math: "\\wideangleup" }, "⦨": { math: "\\measanglerutone" }, "⦩": { math: "\\measanglelutonw" }, "⦪": { math: "\\measanglerdtose" }, "⦫": { math: "\\measangleldtosw" }, "⦬": { math: "\\measangleurtone" }, "⦭": { math: "\\measangleultonw" }, "⦮": { math: "\\measangledrtose" }, "⦯": { math: "\\measangledltosw" }, "⦰": { math: "\\revemptyset" }, "⦱": { math: "\\emptysetobar" }, "⦲": { math: "\\emptysetocirc" }, "⦳": { math: "\\emptysetoarr" }, "⦴": { math: "\\emptysetoarrl" }, "⦷": { math: "\\circledparallel" }, "⦸": { math: "\\circledbslash" }, "⦹": { math: "\\operp" }, "⦺": { math: "\\obot" }, "⦻": { math: "\\olcross" }, "⦼": { math: "\\odotslashdot" }, "⦽": { math: "\\uparrowoncircle" }, "⦾": { math: "\\circledwhitebullet" }, "⦿": { math: "\\circledbullet" }, "⧀": { math: "\\circledless" }, "⧁": { math: "\\circledgtr" }, "⧂": { math: "\\cirscir" }, "⧃": { math: "\\cirE" }, "⧄": { math: "\\boxslash" }, "⧅": { math: "\\boxbslash" }, "⧆": { math: "\\boxast" }, "⧇": { math: "\\boxcircle" }, "⧈": { math: "\\boxbox" }, "⧉": { math: "\\boxonbox" }, "⧊": { math: "\\ElzLap" }, "⧋": { math: "\\Elzdefas" }, "⧌": { math: "\\triangles" }, "⧍": { math: "\\triangleserifs" }, "⧎": { math: "\\rtriltri" }, "⧏": { math: "\\LeftTriangleBar" }, "⧏̸": { math: "\\NotLeftTriangleBar" }, "⧐": { math: "\\RightTriangleBar" }, "⧐̸": { math: "\\NotRightTriangleBar" }, "⧑": { math: "\\lfbowtie" }, "⧒": { math: "\\rfbowtie" }, "⧓": { math: "\\fbowtie" }, "⧔": { math: "\\lftimes" }, "⧕": { math: "\\rftimes" }, "⧖": { math: "\\hourglass" }, "⧗": { math: "\\blackhourglass" }, "⧘": { math: "\\lvzigzag" }, "⧙": { math: "\\rvzigzag" }, "⧚": { math: "\\Lvzigzag" }, "⧛": { math: "\\Rvzigzag" }, "⧝": { math: "\\tieinfty" }, "⧞": { math: "\\nvinfty" }, "⧟": { math: "\\multimapboth" }, "⧠": { math: "\\laplac" }, "⧡": { math: "\\lrtriangleeq" }, "⧢": { math: "\\shuffle" }, "⧣": { math: "\\eparsl" }, "⧤": { math: "\\smeparsl" }, "⧥": { math: "\\eqvparsl" }, "⧦": { math: "\\gleichstark" }, "⧧": { math: "\\thermod" }, "⧨": { math: "\\downtriangleleftblack" }, "⧩": { math: "\\downtrianglerightblack" }, "⧪": { math: "\\blackdiamonddownarrow" }, "⧫": { math: "\\blacklozenge" }, "⧬": { math: "\\circledownarrow" }, "⧭": { math: "\\blackcircledownarrow" }, "⧮": { math: "\\errbarsquare" }, "⧯": { math: "\\errbarblacksquare" }, "⧰": { math: "\\errbardiamond" }, "⧱": { math: "\\errbarblackdiamond" }, "⧲": { math: "\\errbarcircle" }, "⧳": { math: "\\errbarblackcircle" }, "⧴": { math: "\\RuleDelayed" }, "⧵": { math: "\\setminus" }, "⧶": { math: "\\dsol" }, "⧷": { math: "\\rsolbar" }, "⧸": { math: "\\xsol" }, "⧹": { math: "\\zhide" }, "⧺": { math: "\\doubleplus" }, "⧻": { math: "\\tripleplus" }, "⧼": { math: "\\lcurvyangle" }, "⧽": { math: "\\rcurvyangle" }, "⧾": { math: "\\tplus" }, "⧿": { math: "\\tminus" }, "⨀": { math: "\\bigodot" }, "⨁": { math: "\\bigoplus" }, "⨂": { math: "\\bigotimes" }, "⨃": { math: "\\bigcupdot" }, "⨄": { math: "\\Elxuplus" }, "⨅": { math: "\\ElzThr" }, "⨆": { math: "\\Elxsqcup" }, "⨇": { math: "\\ElzInf" }, "⨈": { math: "\\ElzSup" }, "⨉": { math: "\\varprod" }, "⨊": { math: "\\modtwosum" }, "⨋": { math: "\\sumint" }, "⨌": { math: "\\iiiint" }, "⨍": { math: "\\ElzCint" }, "⨎": { math: "\\intBar" }, "⨏": { math: "\\clockoint" }, "⨑": { math: "\\awint" }, "⨒": { math: "\\rppolint" }, "⨓": { math: "\\scpolint" }, "⨔": { math: "\\npolint" }, "⨕": { math: "\\pointint" }, "⨖": { math: "\\sqrint" }, "⨗": { math: "\\intlarhk" }, "⨘": { math: "\\intx" }, "⨙": { math: "\\intcap" }, "⨚": { math: "\\intcup" }, "⨛": { math: "\\upint" }, "⨜": { math: "\\lowint" }, "⨝": { math: "\\Join" }, "⨞": { math: "\\bigtriangleleft" }, "⨟": { math: "\\zcmp" }, "⨠": { math: "\\zpipe" }, "⨡": { math: "\\zproject" }, "⨢": { math: "\\ringplus" }, "⨣": { math: "\\plushat" }, "⨤": { math: "\\simplus" }, "⨦": { math: "\\plussim" }, "⨧": { math: "\\plussubtwo" }, "⨨": { math: "\\plustrif" }, "⨩": { math: "\\commaminus" }, "⨫": { math: "\\minusfdots" }, "⨬": { math: "\\minusrdots" }, "⨯": { math: "\\ElzTimes" }, "⨰": { math: "\\dottimes" }, "⨱": { math: "\\timesbar" }, "⨲": { math: "\\btimes" }, "⨳": { math: "\\smashtimes" }, "⨶": { math: "\\otimeshat" }, "⨷": { math: "\\Otimes" }, "⨸": { math: "\\odiv" }, "⨹": { math: "\\triangleplus" }, "⨺": { math: "\\triangleminus" }, "⨻": { math: "\\triangletimes" }, "⨽": { math: "\\intprodr" }, "⨾": { math: "\\fcmp" }, "⨿": { math: "\\amalg" }, "⩀": { math: "\\capdot" }, "⩁": { math: "\\uminus" }, "⩂": { math: "\\barcup" }, "⩃": { math: "\\barcap" }, "⩄": { math: "\\capwedge" }, "⩅": { math: "\\cupvee" }, "⩆": { math: "\\cupovercap" }, "⩇": { math: "\\capovercup" }, "⩈": { math: "\\cupbarcap" }, "⩉": { math: "\\capbarcup" }, "⩊": { math: "\\twocups" }, "⩋": { math: "\\twocaps" }, "⩌": { math: "\\closedvarcup" }, "⩍": { math: "\\closedvarcap" }, "⩎": { math: "\\Sqcap" }, "⩏": { math: "\\Sqcup" }, "⩐": { math: "\\closedvarcupsmashprod" }, "⩑": { math: "\\wedgeodot" }, "⩒": { math: "\\veeodot" }, "⩓": { math: "\\ElzAnd" }, "⩔": { math: "\\ElzOr" }, "⩖": { math: "\\ElOr" }, "⩗": { math: "\\bigslopedvee" }, "⩘": { math: "\\bigslopedwedge" }, "⩙": { math: "\\veeonwedge" }, "⩚": { math: "\\wedgemidvert" }, "⩛": { math: "\\veemidvert" }, "⩜": { math: "\\midbarwedge" }, "⩝": { math: "\\midbarvee" }, "⩞": { math: "\\perspcorrespond" }, "⩟": { math: "\\Elzminhat" }, "⩠": { math: "\\wedgedoublebar" }, "⩡": { math: "\\varveebar" }, "⩢": { math: "\\doublebarvee" }, "⩤": { math: "\\dsub" }, "⩥": { math: "\\rsub" }, "⩦": { math: "\\eqdot" }, "⩧": { math: "\\dotequiv" }, "⩨": { math: "\\equivVert" }, "⩩": { math: "\\equivVvert" }, "⩪": { math: "\\dotsim" }, "⩫": { math: "\\simrdots" }, "⩬": { math: "\\simminussim" }, "⩭": { math: "\\congdot" }, "⩮": { math: "\\stackrel{*}{=}" }, "⩯": { math: "\\hatapprox" }, "⩰": { math: "\\approxeqq" }, "⩱": { math: "\\eqqplus" }, "⩲": { math: "\\pluseqq" }, "⩳": { math: "\\eqqsim" }, "⩴": { math: "\\Coloneqq" }, "⩵": { math: "\\Equal" }, "⩶": { math: "\\Same" }, "⩷": { math: "\\ddotseq" }, "⩸": { math: "\\equivDD" }, "⩹": { math: "\\ltcir" }, "⩺": { math: "\\gtcir" }, "⩻": { math: "\\ltquest" }, "⩼": { math: "\\gtquest" }, "⩽": { math: "\\leqslant", mathpackages: [ "amssymb" ] }, "⩽̸": { math: "\\nleqslant", mathpackages: [ "amssymb" ] }, "⩾": { math: "\\geqslant", mathpackages: [ "amssymb" ] }, "⩾̸": { math: "\\ngeqslant", mathpackages: [ "amssymb" ] }, "⩿": { math: "\\lesdot" }, "⪀": { math: "\\gesdot" }, "⪁": { math: "\\lesdoto" }, "⪂": { math: "\\gesdoto" }, "⪃": { math: "\\lesdotor" }, "⪄": { math: "\\gesdotol" }, "⪅": { math: "\\lessapprox" }, "⪆": { math: "\\gtrapprox" }, "⪇": { math: "\\lneq" }, "⪈": { math: "\\gneq" }, "⪉": { math: "\\lnapprox" }, "⪊": { math: "\\gnapprox" }, "⪋": { math: "\\lesseqqgtr" }, "⪌": { math: "\\gtreqqless" }, "⪍": { math: "\\lsime" }, "⪎": { math: "\\gsime" }, "⪏": { math: "\\lsimg" }, "⪐": { math: "\\gsiml" }, "⪑": { math: "\\lgE" }, "⪒": { math: "\\glE" }, "⪓": { math: "\\lesges" }, "⪔": { math: "\\gesles" }, "⪕": { math: "\\eqslantless" }, "⪖": { math: "\\eqslantgtr" }, "⪗": { math: "\\elsdot" }, "⪘": { math: "\\egsdot" }, "⪙": { math: "\\eqqless" }, "⪚": { math: "\\eqqgtr" }, "⪛": { math: "\\eqqslantless" }, "⪜": { math: "\\eqqslantgtr" }, "⪝": { math: "\\Pisymbol{ppi020}{117}" }, "⪞": { math: "\\Pisymbol{ppi020}{105}" }, "⪟": { math: "\\simlE" }, "⪠": { math: "\\simgE" }, "⪡": { math: "\\NestedLessLess" }, "⪡̸": { math: "\\NotNestedLessLess" }, "⪢": { math: "\\NestedGreaterGreater" }, "⪢̸": { math: "\\NotNestedGreaterGreater" }, "⪣": { math: "\\partialmeetcontraction" }, "⪤": { math: "\\glj" }, "⪥": { math: "\\gla" }, "⪦": { math: "\\leftslice" }, "⪧": { math: "\\rightslice" }, "⪨": { math: "\\lescc" }, "⪩": { math: "\\gescc" }, "⪪": { math: "\\smt" }, "⪫": { math: "\\lat" }, "⪬": { math: "\\smte" }, "⪭": { math: "\\late" }, "⪮": { math: "\\bumpeqq" }, "⪯": { math: "\\preceq" }, "⪯̸": { math: "\\not\\preceq" }, "⪰": { math: "\\succeq" }, "⪰̸": { math: "\\not\\succeq" }, "⪱": { math: "\\precneq" }, "⪲": { math: "\\succneq" }, "⪳": { math: "\\preceqq" }, "⪴": { math: "\\succeqq" }, "⪵": { math: "\\precneqq" }, "⪶": { math: "\\succneqq" }, "⪷": { math: "\\precapprox" }, "⪸": { math: "\\succapprox" }, "⪹": { math: "\\precnapprox" }, "⪺": { math: "\\succnapprox" }, "⪻": { math: "\\llcurly" }, "⪼": { math: "\\ggcurly" }, "⪽": { math: "\\subsetdot" }, "⪾": { math: "\\supsetdot" }, "⪿": { math: "\\subsetplus" }, "⫀": { math: "\\supsetplus" }, "⫁": { math: "\\submult" }, "⫂": { math: "\\supmult" }, "⫃": { math: "\\subedot" }, "⫄": { math: "\\supedot" }, "⫅": { math: "\\subseteqq" }, "⫅̸": { math: "\\nsubseteqq" }, "⫆": { math: "\\supseteqq" }, "⫆̸": { math: "\\nsupseteqq" }, "⫇": { math: "\\subsim" }, "⫈": { math: "\\supsim" }, "⫉": { math: "\\subsetapprox" }, "⫊": { math: "\\supsetapprox" }, "⫋": { math: "\\subsetneqq" }, "⫌": { math: "\\supsetneqq" }, "⫍": { math: "\\lsqhook" }, "⫎": { math: "\\rsqhook" }, "⫏": { math: "\\csub" }, "⫐": { math: "\\csup" }, "⫑": { math: "\\csube" }, "⫒": { math: "\\csupe" }, "⫓": { math: "\\subsup" }, "⫔": { math: "\\supsub" }, "⫕": { math: "\\subsub" }, "⫖": { math: "\\supsup" }, "⫗": { math: "\\suphsub" }, "⫘": { math: "\\supdsub" }, "⫙": { math: "\\forkv" }, "⫚": { math: "\\topfork" }, "⫛": { math: "\\mlcp" }, "⫝̸": { math: "\\forks" }, "⫝": { math: "\\forksnot" }, "⫝̸": { math: "\\forks" }, "⫞": { math: "\\shortlefttack" }, "⫟": { math: "\\shortdowntack" }, "⫠": { math: "\\shortuptack" }, "⫡": { math: "\\perps" }, "⫢": { math: "\\vDdash" }, "⫣": { math: "\\dashV" }, "⫤": { math: "\\Dashv" }, "⫥": { math: "\\DashV" }, "⫦": { math: "\\varVdash" }, "⫧": { math: "\\Barv" }, "⫨": { math: "\\vBar" }, "⫩": { math: "\\vBarv" }, "⫪": { math: "\\Top" }, "⫬": { math: "\\Not" }, "⫭": { math: "\\bNot" }, "⫮": { math: "\\revnmid" }, "⫯": { math: "\\cirmid" }, "⫰": { math: "\\midcir" }, "⫱": { math: "\\topcir" }, "⫲": { math: "\\nhpar" }, "⫳": { math: "\\parsim" }, "⫴": { math: "\\interleave" }, "⫵": { math: "\\nhVvert" }, "⫶": { math: "\\Elztdcol" }, "⫷": { math: "\\lllnest" }, "⫸": { math: "\\gggnest" }, "⫹": { math: "\\leqqslant" }, "⫺": { math: "\\geqqslant" }, "⫻": { math: "\\trslash" }, "⫼": { math: "\\biginterleave" }, "⫽": { math: "{{/}\\!\\!{/}}" }, "⫽⃥": { math: "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}" }, "⫾": { math: "\\talloblong" }, "⫿": { math: "\\bigtalloblong" }, "⬒": { math: "\\squaretopblack" }, "⬓": { math: "\\squarebotblack" }, "⬔": { math: "\\squareurblack" }, "⬕": { math: "\\squarellblack" }, "⬖": { math: "\\diamondleftblack" }, "⬗": { math: "\\diamondrightblack" }, "⬘": { math: "\\diamondtopblack" }, "⬙": { math: "\\diamondbotblack" }, "⬚": { math: "\\dottedsquare" }, "⬛": { math: "\\blacksquare" }, "⬜": { math: "\\square" }, "⬝": { math: "\\vysmblksquare" }, "⬞": { math: "\\vysmwhtsquare" }, "⬟": { math: "\\pentagonblack" }, "⬠": { math: "\\pentagon" }, "⬡": { math: "\\varhexagon" }, "⬢": { math: "\\varhexagonblack" }, "⬣": { math: "\\hexagonblack" }, "⬤": { math: "\\lgblkcircle" }, "⬥": { math: "\\mdblkdiamond" }, "⬦": { math: "\\mdwhtdiamond" }, "⬧": { math: "\\mdblklozenge" }, "⬨": { math: "\\mdwhtlozenge" }, "⬩": { math: "\\smblkdiamond" }, "⬪": { math: "\\smblklozenge" }, "⬫": { math: "\\smwhtlozenge" }, "⬬": { math: "\\blkhorzoval" }, "⬭": { math: "\\whthorzoval" }, "⬮": { math: "\\blkvertoval" }, "⬯": { math: "\\whtvertoval" }, "⬰": { math: "\\circleonleftarrow" }, "⬱": { math: "\\leftthreearrows" }, "⬲": { math: "\\leftarrowonoplus" }, "⬳": { math: "\\longleftsquigarrow" }, "⬴": { math: "\\nvtwoheadleftarrow" }, "⬵": { math: "\\nVtwoheadleftarrow" }, "⬶": { math: "\\twoheadmapsfrom" }, "⬷": { math: "\\twoheadleftdbkarrow" }, "⬸": { math: "\\leftdotarrow" }, "⬹": { math: "\\nvleftarrowtail" }, "⬺": { math: "\\nVleftarrowtail" }, "⬻": { math: "\\twoheadleftarrowtail" }, "⬼": { math: "\\nvtwoheadleftarrowtail" }, "⬽": { math: "\\nVtwoheadleftarrowtail" }, "⬾": { math: "\\leftarrowx" }, "⬿": { math: "\\leftcurvedarrow" }, "⭀": { math: "\\equalleftarrow" }, "⭁": { math: "\\bsimilarleftarrow" }, "⭂": { math: "\\leftarrowbackapprox" }, "⭃": { math: "\\rightarrowgtr" }, "⭄": { math: "\\rightarrowsupset" }, "⭅": { math: "\\LLeftarrow" }, "⭆": { math: "\\RRightarrow" }, "⭇": { math: "\\bsimilarrightarrow" }, "⭈": { math: "\\rightarrowbackapprox" }, "⭉": { math: "\\similarleftarrow" }, "⭊": { math: "\\leftarrowapprox" }, "⭋": { math: "\\leftarrowbsimilar" }, "⭌": { math: "\\rightarrowbsimilar" }, "⭐": { math: "\\medwhitestar" }, "⭑": { math: "\\medblackstar" }, "⭒": { math: "\\smwhitestar" }, "⭓": { math: "\\rightpentagonblack" }, "⭔": { math: "\\rightpentagon" }, "〈": { math: "\\langle" }, "〉": { math: "\\rangle" }, "〒": { math: "\\postalmark" }, "〔": { math: "\\lbrbrak" }, "〕": { math: "\\rbrbrak" }, "〚": { math: "\\openbracketleft" }, "〛": { math: "\\openbracketright" }, "〰": { math: "\\hzigzag" }, "ff": { text: "ff" }, "fi": { text: "fi" }, "fl": { text: "fl" }, "ffi": { text: "ffi" }, "ffl": { text: "ffl" }, "ſt": { text: "st" }, "st": { text: "st" }, "�": { text: "{\\dbend}" }, "𝐀": { math: "\\mathbf{A}" }, "𝐁": { math: "\\mathbf{B}" }, "𝐂": { math: "\\mathbf{C}" }, "𝐃": { math: "\\mathbf{D}" }, "𝐄": { math: "\\mathbf{E}" }, "𝐅": { math: "\\mathbf{F}" }, "𝐆": { math: "\\mathbf{G}" }, "𝐇": { math: "\\mathbf{H}" }, "𝐈": { math: "\\mathbf{I}" }, "𝐉": { math: "\\mathbf{J}" }, "𝐊": { math: "\\mathbf{K}" }, "𝐋": { math: "\\mathbf{L}" }, "𝐌": { math: "\\mathbf{M}" }, "𝐍": { math: "\\mathbf{N}" }, "𝐎": { math: "\\mathbf{O}" }, "𝐏": { math: "\\mathbf{P}" }, "𝐐": { math: "\\mathbf{Q}" }, "𝐑": { math: "\\mathbf{R}" }, "𝐒": { math: "\\mathbf{S}" }, "𝐓": { math: "\\mathbf{T}" }, "𝐔": { math: "\\mathbf{U}" }, "𝐕": { math: "\\mathbf{V}" }, "𝐖": { math: "\\mathbf{W}" }, "𝐗": { math: "\\mathbf{X}" }, "𝐘": { math: "\\mathbf{Y}" }, "𝐙": { math: "\\mathbf{Z}" }, "𝐚": { math: "\\mathbf{a}" }, "𝐛": { math: "\\mathbf{b}" }, "𝐜": { math: "\\mathbf{c}" }, "𝐝": { math: "\\mathbf{d}" }, "𝐞": { math: "\\mathbf{e}" }, "𝐟": { math: "\\mathbf{f}" }, "𝐠": { math: "\\mathbf{g}" }, "𝐡": { math: "\\mathbf{h}" }, "𝐢": { math: "\\mathbf{i}" }, "𝐣": { math: "\\mathbf{j}" }, "𝐤": { math: "\\mathbf{k}" }, "𝐥": { math: "\\mathbf{l}" }, "𝐦": { math: "\\mathbf{m}" }, "𝐧": { math: "\\mathbf{n}" }, "𝐨": { math: "\\mathbf{o}" }, "𝐩": { math: "\\mathbf{p}" }, "𝐪": { math: "\\mathbf{q}" }, "𝐫": { math: "\\mathbf{r}" }, "𝐬": { math: "\\mathbf{s}" }, "𝐭": { math: "\\mathbf{t}" }, "𝐮": { math: "\\mathbf{u}" }, "𝐯": { math: "\\mathbf{v}" }, "𝐰": { math: "\\mathbf{w}" }, "𝐱": { math: "\\mathbf{x}" }, "𝐲": { math: "\\mathbf{y}" }, "𝐳": { math: "\\mathbf{z}" }, "𝐴": { math: "\\mathsl{A}" }, "𝐵": { math: "\\mathsl{B}" }, "𝐶": { math: "\\mathsl{C}" }, "𝐷": { math: "\\mathsl{D}" }, "𝐸": { math: "\\mathsl{E}" }, "𝐹": { math: "\\mathsl{F}" }, "𝐺": { math: "\\mathsl{G}" }, "𝐻": { math: "\\mathsl{H}" }, "𝐼": { math: "\\mathsl{I}" }, "𝐽": { math: "\\mathsl{J}" }, "𝐾": { math: "\\mathsl{K}" }, "𝐿": { math: "\\mathsl{L}" }, "𝑀": { math: "\\mathsl{M}" }, "𝑁": { math: "\\mathsl{N}" }, "𝑂": { math: "\\mathsl{O}" }, "𝑃": { math: "\\mathsl{P}" }, "𝑄": { math: "\\mathsl{Q}" }, "𝑅": { math: "\\mathsl{R}" }, "𝑆": { math: "\\mathsl{S}" }, "𝑇": { math: "\\mathsl{T}" }, "𝑈": { math: "\\mathsl{U}" }, "𝑉": { math: "\\mathsl{V}" }, "𝑊": { math: "\\mathsl{W}" }, "𝑋": { math: "\\mathsl{X}" }, "𝑌": { math: "\\mathsl{Y}" }, "𝑍": { math: "\\mathsl{Z}" }, "𝑎": { math: "\\mathsl{a}" }, "𝑏": { math: "\\mathsl{b}" }, "𝑐": { math: "\\mathsl{c}" }, "𝑑": { math: "\\mathsl{d}" }, "𝑒": { math: "\\mathsl{e}" }, "𝑓": { math: "\\mathsl{f}" }, "𝑔": { math: "\\mathsl{g}" }, "𝑖": { math: "\\mathsl{i}" }, "𝑗": { math: "\\mathsl{j}" }, "𝑘": { math: "\\mathsl{k}" }, "𝑙": { math: "\\mathsl{l}" }, "𝑚": { math: "\\mathsl{m}" }, "𝑛": { math: "\\mathsl{n}" }, "𝑜": { math: "\\mathsl{o}" }, "𝑝": { math: "\\mathsl{p}" }, "𝑞": { math: "\\mathsl{q}" }, "𝑟": { math: "\\mathsl{r}" }, "𝑠": { math: "\\mathsl{s}" }, "𝑡": { math: "\\mathsl{t}" }, "𝑢": { math: "\\mathsl{u}" }, "𝑣": { math: "\\mathsl{v}" }, "𝑤": { math: "\\mathsl{w}" }, "𝑥": { math: "\\mathsl{x}" }, "𝑦": { math: "\\mathsl{y}" }, "𝑧": { math: "\\mathsl{z}" }, "𝑨": { math: "\\mathbit{A}" }, "𝑩": { math: "\\mathbit{B}" }, "𝑪": { math: "\\mathbit{C}" }, "𝑫": { math: "\\mathbit{D}" }, "𝑬": { math: "\\mathbit{E}" }, "𝑭": { math: "\\mathbit{F}" }, "𝑮": { math: "\\mathbit{G}" }, "𝑯": { math: "\\mathbit{H}" }, "𝑰": { math: "\\mathbit{I}" }, "𝑱": { math: "\\mathbit{J}" }, "𝑲": { math: "\\mathbit{K}" }, "𝑳": { math: "\\mathbit{L}" }, "𝑴": { math: "\\mathbit{M}" }, "𝑵": { math: "\\mathbit{N}" }, "𝑶": { math: "\\mathbit{O}" }, "𝑷": { math: "\\mathbit{P}" }, "𝑸": { math: "\\mathbit{Q}" }, "𝑹": { math: "\\mathbit{R}" }, "𝑺": { math: "\\mathbit{S}" }, "𝑻": { math: "\\mathbit{T}" }, "𝑼": { math: "\\mathbit{U}" }, "𝑽": { math: "\\mathbit{V}" }, "𝑾": { math: "\\mathbit{W}" }, "𝑿": { math: "\\mathbit{X}" }, "𝒀": { math: "\\mathbit{Y}" }, "𝒁": { math: "\\mathbit{Z}" }, "𝒂": { math: "\\mathbit{a}" }, "𝒃": { math: "\\mathbit{b}" }, "𝒄": { math: "\\mathbit{c}" }, "𝒅": { math: "\\mathbit{d}" }, "𝒆": { math: "\\mathbit{e}" }, "𝒇": { math: "\\mathbit{f}" }, "𝒈": { math: "\\mathbit{g}" }, "𝒉": { math: "\\mathbit{h}" }, "𝒊": { math: "\\mathbit{i}" }, "𝒋": { math: "\\mathbit{j}" }, "𝒌": { math: "\\mathbit{k}" }, "𝒍": { math: "\\mathbit{l}" }, "𝒎": { math: "\\mathbit{m}" }, "𝒏": { math: "\\mathbit{n}" }, "𝒐": { math: "\\mathbit{o}" }, "𝒑": { math: "\\mathbit{p}" }, "𝒒": { math: "\\mathbit{q}" }, "𝒓": { math: "\\mathbit{r}" }, "𝒔": { math: "\\mathbit{s}" }, "𝒕": { math: "\\mathbit{t}" }, "𝒖": { math: "\\mathbit{u}" }, "𝒗": { math: "\\mathbit{v}" }, "𝒘": { math: "\\mathbit{w}" }, "𝒙": { math: "\\mathbit{x}" }, "𝒚": { math: "\\mathbit{y}" }, "𝒛": { math: "\\mathbit{z}" }, "𝒜": { math: "\\mathscr{A}" }, "𝒞": { math: "\\mathscr{C}" }, "𝒟": { math: "\\mathscr{D}" }, "𝒢": { math: "\\mathscr{G}" }, "𝒥": { math: "\\mathscr{J}" }, "𝒦": { math: "\\mathscr{K}" }, "𝒩": { math: "\\mathscr{N}" }, "𝒪": { math: "\\mathscr{O}" }, "𝒫": { math: "\\mathscr{P}" }, "𝒬": { math: "\\mathscr{Q}" }, "𝒮": { math: "\\mathscr{S}" }, "𝒯": { math: "\\mathscr{T}" }, "𝒰": { math: "\\mathscr{U}" }, "𝒱": { math: "\\mathscr{V}" }, "𝒲": { math: "\\mathscr{W}" }, "𝒳": { math: "\\mathscr{X}" }, "𝒴": { math: "\\mathscr{Y}" }, "𝒵": { math: "\\mathscr{Z}" }, "𝒶": { math: "\\mathscr{a}" }, "𝒷": { math: "\\mathscr{b}" }, "𝒸": { math: "\\mathscr{c}" }, "𝒹": { math: "\\mathscr{d}" }, "𝒻": { math: "\\mathscr{f}" }, "𝒽": { math: "\\mathscr{h}" }, "𝒾": { math: "\\mathscr{i}" }, "𝒿": { math: "\\mathscr{j}" }, "𝓀": { math: "\\mathscr{k}" }, "𝓁": { math: "\\mathscr{l}" }, "𝓂": { math: "\\mathscr{m}" }, "𝓃": { math: "\\mathscr{n}" }, "𝓅": { math: "\\mathscr{p}" }, "𝓆": { math: "\\mathscr{q}" }, "𝓇": { math: "\\mathscr{r}" }, "𝓈": { math: "\\mathscr{s}" }, "𝓉": { math: "\\mathscr{t}" }, "𝓊": { math: "\\mathscr{u}" }, "𝓋": { math: "\\mathscr{v}" }, "𝓌": { math: "\\mathscr{w}" }, "𝓍": { math: "\\mathscr{x}" }, "𝓎": { math: "\\mathscr{y}" }, "𝓏": { math: "\\mathscr{z}" }, "𝓐": { math: "\\mathmit{A}" }, "𝓑": { math: "\\mathmit{B}" }, "𝓒": { math: "\\mathmit{C}" }, "𝓓": { math: "\\mathmit{D}" }, "𝓔": { math: "\\mathmit{E}" }, "𝓕": { math: "\\mathmit{F}" }, "𝓖": { math: "\\mathmit{G}" }, "𝓗": { math: "\\mathmit{H}" }, "𝓘": { math: "\\mathmit{I}" }, "𝓙": { math: "\\mathmit{J}" }, "𝓚": { math: "\\mathmit{K}" }, "𝓛": { math: "\\mathmit{L}" }, "𝓜": { math: "\\mathmit{M}" }, "𝓝": { math: "\\mathmit{N}" }, "𝓞": { math: "\\mathmit{O}" }, "𝓟": { math: "\\mathmit{P}" }, "𝓠": { math: "\\mathmit{Q}" }, "𝓡": { math: "\\mathmit{R}" }, "𝓢": { math: "\\mathmit{S}" }, "𝓣": { math: "\\mathmit{T}" }, "𝓤": { math: "\\mathmit{U}" }, "𝓥": { math: "\\mathmit{V}" }, "𝓦": { math: "\\mathmit{W}" }, "𝓧": { math: "\\mathmit{X}" }, "𝓨": { math: "\\mathmit{Y}" }, "𝓩": { math: "\\mathmit{Z}" }, "𝓪": { math: "\\mathmit{a}" }, "𝓫": { math: "\\mathmit{b}" }, "𝓬": { math: "\\mathmit{c}" }, "𝓭": { math: "\\mathmit{d}" }, "𝓮": { math: "\\mathmit{e}" }, "𝓯": { math: "\\mathmit{f}" }, "𝓰": { math: "\\mathmit{g}" }, "𝓱": { math: "\\mathmit{h}" }, "𝓲": { math: "\\mathmit{i}" }, "𝓳": { math: "\\mathmit{j}" }, "𝓴": { math: "\\mathmit{k}" }, "𝓵": { math: "\\mathmit{l}" }, "𝓶": { math: "\\mathmit{m}" }, "𝓷": { math: "\\mathmit{n}" }, "𝓸": { math: "\\mathmit{o}" }, "𝓹": { math: "\\mathmit{p}" }, "𝓺": { math: "\\mathmit{q}" }, "𝓻": { math: "\\mathmit{r}" }, "𝓼": { math: "\\mathmit{s}" }, "𝓽": { math: "\\mathmit{t}" }, "𝓾": { math: "\\mathmit{u}" }, "𝓿": { math: "\\mathmit{v}" }, "𝔀": { math: "\\mathmit{w}" }, "𝔁": { math: "\\mathmit{x}" }, "𝔂": { math: "\\mathmit{y}" }, "𝔃": { math: "\\mathmit{z}" }, "𝔄": { math: "\\mathfrak{A}" }, "𝔅": { math: "\\mathfrak{B}" }, "𝔇": { math: "\\mathfrak{D}" }, "𝔈": { math: "\\mathfrak{E}" }, "𝔉": { math: "\\mathfrak{F}" }, "𝔊": { math: "\\mathfrak{G}" }, "𝔍": { math: "\\mathfrak{J}" }, "𝔎": { math: "\\mathfrak{K}" }, "𝔏": { math: "\\mathfrak{L}" }, "𝔐": { math: "\\mathfrak{M}" }, "𝔑": { math: "\\mathfrak{N}" }, "𝔒": { math: "\\mathfrak{O}" }, "𝔓": { math: "\\mathfrak{P}" }, "𝔔": { math: "\\mathfrak{Q}" }, "𝔖": { math: "\\mathfrak{S}" }, "𝔗": { math: "\\mathfrak{T}" }, "𝔘": { math: "\\mathfrak{U}" }, "𝔙": { math: "\\mathfrak{V}" }, "𝔚": { math: "\\mathfrak{W}" }, "𝔛": { math: "\\mathfrak{X}" }, "𝔜": { math: "\\mathfrak{Y}" }, "𝔞": { math: "\\mathfrak{a}" }, "𝔟": { math: "\\mathfrak{b}" }, "𝔠": { math: "\\mathfrak{c}" }, "𝔡": { math: "\\mathfrak{d}" }, "𝔢": { math: "\\mathfrak{e}" }, "𝔣": { math: "\\mathfrak{f}" }, "𝔤": { math: "\\mathfrak{g}" }, "𝔥": { math: "\\mathfrak{h}" }, "𝔦": { math: "\\mathfrak{i}" }, "𝔧": { math: "\\mathfrak{j}" }, "𝔨": { math: "\\mathfrak{k}" }, "𝔩": { math: "\\mathfrak{l}" }, "𝔪": { math: "\\mathfrak{m}" }, "𝔫": { math: "\\mathfrak{n}" }, "𝔬": { math: "\\mathfrak{o}" }, "𝔭": { math: "\\mathfrak{p}" }, "𝔮": { math: "\\mathfrak{q}" }, "𝔯": { math: "\\mathfrak{r}" }, "𝔰": { math: "\\mathfrak{s}" }, "𝔱": { math: "\\mathfrak{t}" }, "𝔲": { math: "\\mathfrak{u}" }, "𝔳": { math: "\\mathfrak{v}" }, "𝔴": { math: "\\mathfrak{w}" }, "𝔵": { math: "\\mathfrak{x}" }, "𝔶": { math: "\\mathfrak{y}" }, "𝔷": { math: "\\mathfrak{z}" }, "𝔸": { math: "\\mathbb{A}" }, "𝔹": { math: "\\mathbb{B}" }, "𝔻": { math: "\\mathbb{D}" }, "𝔼": { math: "\\mathbb{E}" }, "𝔽": { math: "\\mathbb{F}" }, "𝔾": { math: "\\mathbb{G}" }, "𝕀": { math: "\\mathbb{I}" }, "𝕁": { math: "\\mathbb{J}" }, "𝕂": { math: "\\mathbb{K}" }, "𝕃": { math: "\\mathbb{L}" }, "𝕄": { math: "\\mathbb{M}" }, "𝕆": { math: "\\mathbb{O}" }, "𝕊": { math: "\\mathbb{S}" }, "𝕋": { math: "\\mathbb{T}" }, "𝕌": { math: "\\mathbb{U}" }, "𝕍": { math: "\\mathbb{V}" }, "𝕎": { math: "\\mathbb{W}" }, "𝕏": { math: "\\mathbb{X}" }, "𝕐": { math: "\\mathbb{Y}" }, "𝕒": { math: "\\mathbb{a}" }, "𝕓": { math: "\\mathbb{b}" }, "𝕔": { math: "\\mathbb{c}" }, "𝕕": { math: "\\mathbb{d}" }, "𝕖": { math: "\\mathbb{e}" }, "𝕗": { math: "\\mathbb{f}" }, "𝕘": { math: "\\mathbb{g}" }, "𝕙": { math: "\\mathbb{h}" }, "𝕚": { math: "\\mathbb{i}" }, "𝕛": { math: "\\mathbb{j}" }, "𝕜": { math: "\\mathbb{k}" }, "𝕝": { math: "\\mathbb{l}" }, "𝕞": { math: "\\mathbb{m}" }, "𝕟": { math: "\\mathbb{n}" }, "𝕠": { math: "\\mathbb{o}" }, "𝕡": { math: "\\mathbb{p}" }, "𝕢": { math: "\\mathbb{q}" }, "𝕣": { math: "\\mathbb{r}" }, "𝕤": { math: "\\mathbb{s}" }, "𝕥": { math: "\\mathbb{t}" }, "𝕦": { math: "\\mathbb{u}" }, "𝕧": { math: "\\mathbb{v}" }, "𝕨": { math: "\\mathbb{w}" }, "𝕩": { math: "\\mathbb{x}" }, "𝕪": { math: "\\mathbb{y}" }, "𝕫": { math: "\\mathbb{z}" }, "𝕬": { math: "\\mathslbb{A}" }, "𝕭": { math: "\\mathslbb{B}" }, "𝕮": { math: "\\mathslbb{C}" }, "𝕯": { math: "\\mathslbb{D}" }, "𝕰": { math: "\\mathslbb{E}" }, "𝕱": { math: "\\mathslbb{F}" }, "𝕲": { math: "\\mathslbb{G}" }, "𝕳": { math: "\\mathslbb{H}" }, "𝕴": { math: "\\mathslbb{I}" }, "𝕵": { math: "\\mathslbb{J}" }, "𝕶": { math: "\\mathslbb{K}" }, "𝕷": { math: "\\mathslbb{L}" }, "𝕸": { math: "\\mathslbb{M}" }, "𝕹": { math: "\\mathslbb{N}" }, "𝕺": { math: "\\mathslbb{O}" }, "𝕻": { math: "\\mathslbb{P}" }, "𝕼": { math: "\\mathslbb{Q}" }, "𝕽": { math: "\\mathslbb{R}" }, "𝕾": { math: "\\mathslbb{S}" }, "𝕿": { math: "\\mathslbb{T}" }, "𝖀": { math: "\\mathslbb{U}" }, "𝖁": { math: "\\mathslbb{V}" }, "𝖂": { math: "\\mathslbb{W}" }, "𝖃": { math: "\\mathslbb{X}" }, "𝖄": { math: "\\mathslbb{Y}" }, "𝖅": { math: "\\mathslbb{Z}" }, "𝖆": { math: "\\mathslbb{a}" }, "𝖇": { math: "\\mathslbb{b}" }, "𝖈": { math: "\\mathslbb{c}" }, "𝖉": { math: "\\mathslbb{d}" }, "𝖊": { math: "\\mathslbb{e}" }, "𝖋": { math: "\\mathslbb{f}" }, "𝖌": { math: "\\mathslbb{g}" }, "𝖍": { math: "\\mathslbb{h}" }, "𝖎": { math: "\\mathslbb{i}" }, "𝖏": { math: "\\mathslbb{j}" }, "𝖐": { math: "\\mathslbb{k}" }, "𝖑": { math: "\\mathslbb{l}" }, "𝖒": { math: "\\mathslbb{m}" }, "𝖓": { math: "\\mathslbb{n}" }, "𝖔": { math: "\\mathslbb{o}" }, "𝖕": { math: "\\mathslbb{p}" }, "𝖖": { math: "\\mathslbb{q}" }, "𝖗": { math: "\\mathslbb{r}" }, "𝖘": { math: "\\mathslbb{s}" }, "𝖙": { math: "\\mathslbb{t}" }, "𝖚": { math: "\\mathslbb{u}" }, "𝖛": { math: "\\mathslbb{v}" }, "𝖜": { math: "\\mathslbb{w}" }, "𝖝": { math: "\\mathslbb{x}" }, "𝖞": { math: "\\mathslbb{y}" }, "𝖟": { math: "\\mathslbb{z}" }, "𝖠": { math: "\\mathsf{A}" }, "𝖡": { math: "\\mathsf{B}" }, "𝖢": { math: "\\mathsf{C}" }, "𝖣": { math: "\\mathsf{D}" }, "𝖤": { math: "\\mathsf{E}" }, "𝖥": { math: "\\mathsf{F}" }, "𝖦": { math: "\\mathsf{G}" }, "𝖧": { math: "\\mathsf{H}" }, "𝖨": { math: "\\mathsf{I}" }, "𝖩": { math: "\\mathsf{J}" }, "𝖪": { math: "\\mathsf{K}" }, "𝖫": { math: "\\mathsf{L}" }, "𝖬": { math: "\\mathsf{M}" }, "𝖭": { math: "\\mathsf{N}" }, "𝖮": { math: "\\mathsf{O}" }, "𝖯": { math: "\\mathsf{P}" }, "𝖰": { math: "\\mathsf{Q}" }, "𝖱": { math: "\\mathsf{R}" }, "𝖲": { math: "\\mathsf{S}" }, "𝖳": { math: "\\mathsf{T}" }, "𝖴": { math: "\\mathsf{U}" }, "𝖵": { math: "\\mathsf{V}" }, "𝖶": { math: "\\mathsf{W}" }, "𝖷": { math: "\\mathsf{X}" }, "𝖸": { math: "\\mathsf{Y}" }, "𝖹": { math: "\\mathsf{Z}" }, "𝖺": { math: "\\mathsf{a}" }, "𝖻": { math: "\\mathsf{b}" }, "𝖼": { math: "\\mathsf{c}" }, "𝖽": { math: "\\mathsf{d}" }, "𝖾": { math: "\\mathsf{e}" }, "𝖿": { math: "\\mathsf{f}" }, "𝗀": { math: "\\mathsf{g}" }, "𝗁": { math: "\\mathsf{h}" }, "𝗂": { math: "\\mathsf{i}" }, "𝗃": { math: "\\mathsf{j}" }, "𝗄": { math: "\\mathsf{k}" }, "𝗅": { math: "\\mathsf{l}" }, "𝗆": { math: "\\mathsf{m}" }, "𝗇": { math: "\\mathsf{n}" }, "𝗈": { math: "\\mathsf{o}" }, "𝗉": { math: "\\mathsf{p}" }, "𝗊": { math: "\\mathsf{q}" }, "𝗋": { math: "\\mathsf{r}" }, "𝗌": { math: "\\mathsf{s}" }, "𝗍": { math: "\\mathsf{t}" }, "𝗎": { math: "\\mathsf{u}" }, "𝗏": { math: "\\mathsf{v}" }, "𝗐": { math: "\\mathsf{w}" }, "𝗑": { math: "\\mathsf{x}" }, "𝗒": { math: "\\mathsf{y}" }, "𝗓": { math: "\\mathsf{z}" }, "𝗔": { math: "\\mathsfbf{A}" }, "𝗕": { math: "\\mathsfbf{B}" }, "𝗖": { math: "\\mathsfbf{C}" }, "𝗗": { math: "\\mathsfbf{D}" }, "𝗘": { math: "\\mathsfbf{E}" }, "𝗙": { math: "\\mathsfbf{F}" }, "𝗚": { math: "\\mathsfbf{G}" }, "𝗛": { math: "\\mathsfbf{H}" }, "𝗜": { math: "\\mathsfbf{I}" }, "𝗝": { math: "\\mathsfbf{J}" }, "𝗞": { math: "\\mathsfbf{K}" }, "𝗟": { math: "\\mathsfbf{L}" }, "𝗠": { math: "\\mathsfbf{M}" }, "𝗡": { math: "\\mathsfbf{N}" }, "𝗢": { math: "\\mathsfbf{O}" }, "𝗣": { math: "\\mathsfbf{P}" }, "𝗤": { math: "\\mathsfbf{Q}" }, "𝗥": { math: "\\mathsfbf{R}" }, "𝗦": { math: "\\mathsfbf{S}" }, "𝗧": { math: "\\mathsfbf{T}" }, "𝗨": { math: "\\mathsfbf{U}" }, "𝗩": { math: "\\mathsfbf{V}" }, "𝗪": { math: "\\mathsfbf{W}" }, "𝗫": { math: "\\mathsfbf{X}" }, "𝗬": { math: "\\mathsfbf{Y}" }, "𝗭": { math: "\\mathsfbf{Z}" }, "𝗮": { math: "\\mathsfbf{a}" }, "𝗯": { math: "\\mathsfbf{b}" }, "𝗰": { math: "\\mathsfbf{c}" }, "𝗱": { math: "\\mathsfbf{d}" }, "𝗲": { math: "\\mathsfbf{e}" }, "𝗳": { math: "\\mathsfbf{f}" }, "𝗴": { math: "\\mathsfbf{g}" }, "𝗵": { math: "\\mathsfbf{h}" }, "𝗶": { math: "\\mathsfbf{i}" }, "𝗷": { math: "\\mathsfbf{j}" }, "𝗸": { math: "\\mathsfbf{k}" }, "𝗹": { math: "\\mathsfbf{l}" }, "𝗺": { math: "\\mathsfbf{m}" }, "𝗻": { math: "\\mathsfbf{n}" }, "𝗼": { math: "\\mathsfbf{o}" }, "𝗽": { math: "\\mathsfbf{p}" }, "𝗾": { math: "\\mathsfbf{q}" }, "𝗿": { math: "\\mathsfbf{r}" }, "𝘀": { math: "\\mathsfbf{s}" }, "𝘁": { math: "\\mathsfbf{t}" }, "𝘂": { math: "\\mathsfbf{u}" }, "𝘃": { math: "\\mathsfbf{v}" }, "𝘄": { math: "\\mathsfbf{w}" }, "𝘅": { math: "\\mathsfbf{x}" }, "𝘆": { math: "\\mathsfbf{y}" }, "𝘇": { math: "\\mathsfbf{z}" }, "𝘈": { math: "\\mathsfsl{A}" }, "𝘉": { math: "\\mathsfsl{B}" }, "𝘊": { math: "\\mathsfsl{C}" }, "𝘋": { math: "\\mathsfsl{D}" }, "𝘌": { math: "\\mathsfsl{E}" }, "𝘍": { math: "\\mathsfsl{F}" }, "𝘎": { math: "\\mathsfsl{G}" }, "𝘏": { math: "\\mathsfsl{H}" }, "𝘐": { math: "\\mathsfsl{I}" }, "𝘑": { math: "\\mathsfsl{J}" }, "𝘒": { math: "\\mathsfsl{K}" }, "𝘓": { math: "\\mathsfsl{L}" }, "𝘔": { math: "\\mathsfsl{M}" }, "𝘕": { math: "\\mathsfsl{N}" }, "𝘖": { math: "\\mathsfsl{O}" }, "𝘗": { math: "\\mathsfsl{P}" }, "𝘘": { math: "\\mathsfsl{Q}" }, "𝘙": { math: "\\mathsfsl{R}" }, "𝘚": { math: "\\mathsfsl{S}" }, "𝘛": { math: "\\mathsfsl{T}" }, "𝘜": { math: "\\mathsfsl{U}" }, "𝘝": { math: "\\mathsfsl{V}" }, "𝘞": { math: "\\mathsfsl{W}" }, "𝘟": { math: "\\mathsfsl{X}" }, "𝘠": { math: "\\mathsfsl{Y}" }, "𝘡": { math: "\\mathsfsl{Z}" }, "𝘢": { math: "\\mathsfsl{a}" }, "𝘣": { math: "\\mathsfsl{b}" }, "𝘤": { math: "\\mathsfsl{c}" }, "𝘥": { math: "\\mathsfsl{d}" }, "𝘦": { math: "\\mathsfsl{e}" }, "𝘧": { math: "\\mathsfsl{f}" }, "𝘨": { math: "\\mathsfsl{g}" }, "𝘩": { math: "\\mathsfsl{h}" }, "𝘪": { math: "\\mathsfsl{i}" }, "𝘫": { math: "\\mathsfsl{j}" }, "𝘬": { math: "\\mathsfsl{k}" }, "𝘭": { math: "\\mathsfsl{l}" }, "𝘮": { math: "\\mathsfsl{m}" }, "𝘯": { math: "\\mathsfsl{n}" }, "𝘰": { math: "\\mathsfsl{o}" }, "𝘱": { math: "\\mathsfsl{p}" }, "𝘲": { math: "\\mathsfsl{q}" }, "𝘳": { math: "\\mathsfsl{r}" }, "𝘴": { math: "\\mathsfsl{s}" }, "𝘵": { math: "\\mathsfsl{t}" }, "𝘶": { math: "\\mathsfsl{u}" }, "𝘷": { math: "\\mathsfsl{v}" }, "𝘸": { math: "\\mathsfsl{w}" }, "𝘹": { math: "\\mathsfsl{x}" }, "𝘺": { math: "\\mathsfsl{y}" }, "𝘻": { math: "\\mathsfsl{z}" }, "𝘼": { math: "\\mathsfbfsl{A}" }, "𝘽": { math: "\\mathsfbfsl{B}" }, "𝘾": { math: "\\mathsfbfsl{C}" }, "𝘿": { math: "\\mathsfbfsl{D}" }, "𝙀": { math: "\\mathsfbfsl{E}" }, "𝙁": { math: "\\mathsfbfsl{F}" }, "𝙂": { math: "\\mathsfbfsl{G}" }, "𝙃": { math: "\\mathsfbfsl{H}" }, "𝙄": { math: "\\mathsfbfsl{I}" }, "𝙅": { math: "\\mathsfbfsl{J}" }, "𝙆": { math: "\\mathsfbfsl{K}" }, "𝙇": { math: "\\mathsfbfsl{L}" }, "𝙈": { math: "\\mathsfbfsl{M}" }, "𝙉": { math: "\\mathsfbfsl{N}" }, "𝙊": { math: "\\mathsfbfsl{O}" }, "𝙋": { math: "\\mathsfbfsl{P}" }, "𝙌": { math: "\\mathsfbfsl{Q}" }, "𝙍": { math: "\\mathsfbfsl{R}" }, "𝙎": { math: "\\mathsfbfsl{S}" }, "𝙏": { math: "\\mathsfbfsl{T}" }, "𝙐": { math: "\\mathsfbfsl{U}" }, "𝙑": { math: "\\mathsfbfsl{V}" }, "𝙒": { math: "\\mathsfbfsl{W}" }, "𝙓": { math: "\\mathsfbfsl{X}" }, "𝙔": { math: "\\mathsfbfsl{Y}" }, "𝙕": { math: "\\mathsfbfsl{Z}" }, "𝙖": { math: "\\mathsfbfsl{a}" }, "𝙗": { math: "\\mathsfbfsl{b}" }, "𝙘": { math: "\\mathsfbfsl{c}" }, "𝙙": { math: "\\mathsfbfsl{d}" }, "𝙚": { math: "\\mathsfbfsl{e}" }, "𝙛": { math: "\\mathsfbfsl{f}" }, "𝙜": { math: "\\mathsfbfsl{g}" }, "𝙝": { math: "\\mathsfbfsl{h}" }, "𝙞": { math: "\\mathsfbfsl{i}" }, "𝙟": { math: "\\mathsfbfsl{j}" }, "𝙠": { math: "\\mathsfbfsl{k}" }, "𝙡": { math: "\\mathsfbfsl{l}" }, "𝙢": { math: "\\mathsfbfsl{m}" }, "𝙣": { math: "\\mathsfbfsl{n}" }, "𝙤": { math: "\\mathsfbfsl{o}" }, "𝙥": { math: "\\mathsfbfsl{p}" }, "𝙦": { math: "\\mathsfbfsl{q}" }, "𝙧": { math: "\\mathsfbfsl{r}" }, "𝙨": { math: "\\mathsfbfsl{s}" }, "𝙩": { math: "\\mathsfbfsl{t}" }, "𝙪": { math: "\\mathsfbfsl{u}" }, "𝙫": { math: "\\mathsfbfsl{v}" }, "𝙬": { math: "\\mathsfbfsl{w}" }, "𝙭": { math: "\\mathsfbfsl{x}" }, "𝙮": { math: "\\mathsfbfsl{y}" }, "𝙯": { math: "\\mathsfbfsl{z}" }, "𝙰": { math: "\\mathtt{A}" }, "𝙱": { math: "\\mathtt{B}" }, "𝙲": { math: "\\mathtt{C}" }, "𝙳": { math: "\\mathtt{D}" }, "𝙴": { math: "\\mathtt{E}" }, "𝙵": { math: "\\mathtt{F}" }, "𝙶": { math: "\\mathtt{G}" }, "𝙷": { math: "\\mathtt{H}" }, "𝙸": { math: "\\mathtt{I}" }, "𝙹": { math: "\\mathtt{J}" }, "𝙺": { math: "\\mathtt{K}" }, "𝙻": { math: "\\mathtt{L}" }, "𝙼": { math: "\\mathtt{M}" }, "𝙽": { math: "\\mathtt{N}" }, "𝙾": { math: "\\mathtt{O}" }, "𝙿": { math: "\\mathtt{P}" }, "𝚀": { math: "\\mathtt{Q}" }, "𝚁": { math: "\\mathtt{R}" }, "𝚂": { math: "\\mathtt{S}" }, "𝚃": { math: "\\mathtt{T}" }, "𝚄": { math: "\\mathtt{U}" }, "𝚅": { math: "\\mathtt{V}" }, "𝚆": { math: "\\mathtt{W}" }, "𝚇": { math: "\\mathtt{X}" }, "𝚈": { math: "\\mathtt{Y}" }, "𝚉": { math: "\\mathtt{Z}" }, "𝚊": { math: "\\mathtt{a}" }, "𝚋": { math: "\\mathtt{b}" }, "𝚌": { math: "\\mathtt{c}" }, "𝚍": { math: "\\mathtt{d}" }, "𝚎": { math: "\\mathtt{e}" }, "𝚏": { math: "\\mathtt{f}" }, "𝚐": { math: "\\mathtt{g}" }, "𝚑": { math: "\\mathtt{h}" }, "𝚒": { math: "\\mathtt{i}" }, "𝚓": { math: "\\mathtt{j}" }, "𝚔": { math: "\\mathtt{k}" }, "𝚕": { math: "\\mathtt{l}" }, "𝚖": { math: "\\mathtt{m}" }, "𝚗": { math: "\\mathtt{n}" }, "𝚘": { math: "\\mathtt{o}" }, "𝚙": { math: "\\mathtt{p}" }, "𝚚": { math: "\\mathtt{q}" }, "𝚛": { math: "\\mathtt{r}" }, "𝚜": { math: "\\mathtt{s}" }, "𝚝": { math: "\\mathtt{t}" }, "𝚞": { math: "\\mathtt{u}" }, "𝚟": { math: "\\mathtt{v}" }, "𝚠": { math: "\\mathtt{w}" }, "𝚡": { math: "\\mathtt{x}" }, "𝚢": { math: "\\mathtt{y}" }, "𝚣": { math: "\\mathtt{z}" }, "𝚤": { math: "\\imath" }, "𝚥": { math: "\\jmath" }, "𝚨": { math: "\\mathbf{A}" }, "𝚩": { math: "\\mathbf{B}" }, "𝚪": { math: "\\mathbf{\\Gamma}" }, "𝚫": { math: "\\mathbf{\\Delta}" }, "𝚬": { math: "\\mathbf{E}" }, "𝚭": { math: "\\mathbf{Z}" }, "𝚮": { math: "\\mathbf{H}" }, "𝚯": { math: "\\mathbf{\\Theta}" }, "𝚰": { math: "\\mathbf{I}" }, "𝚱": { math: "\\mathbf{K}" }, "𝚲": { math: "\\mathbf{\\Lambda}" }, "𝚳": { math: "M" }, "𝚴": { math: "N" }, "𝚵": { math: "\\mathbf{\\Xi}" }, "𝚶": { math: "O" }, "𝚷": { math: "\\mathbf{\\Pi}" }, "𝚸": { math: "\\mathbf{P}" }, "𝚹": { math: "\\mathbf{\\vartheta}" }, "𝚺": { math: "\\mathbf{\\Sigma}" }, "𝚻": { math: "\\mathbf{T}" }, "𝚼": { math: "\\mathbf{\\Upsilon}" }, "𝚽": { math: "\\mathbf{\\Phi}" }, "𝚾": { math: "\\mathbf{X}" }, "𝚿": { math: "\\mathbf{\\Psi}" }, "𝛀": { math: "\\mathbf{\\Omega}" }, "𝛁": { math: "\\mathbf{\\nabla}" }, "𝛂": { math: "\\mathbf{\\alpha}" }, "𝛃": { math: "\\mathbf{\\beta}" }, "𝛄": { math: "\\mathbf{\\gamma}" }, "𝛅": { math: "\\mathbf{\\delta}" }, "𝛆": { math: "\\mathbf{\\epsilon}" }, "𝛇": { math: "\\mathbf{\\zeta}" }, "𝛈": { math: "\\mathbf{\\eta}" }, "𝛉": { math: "\\mathbf{\\theta}" }, "𝛊": { math: "\\mathbf{I}" }, "𝛋": { math: "\\mathbf{K}" }, "𝛌": { math: "\\mathbf{\\lambda}" }, "𝛍": { math: "M" }, "𝛎": { math: "N" }, "𝛏": { math: "\\mathbf{\\xi}" }, "𝛐": { math: "O" }, "𝛑": { math: "\\mathbf{\\pi}" }, "𝛒": { math: "\\mathbf{P}" }, "𝛓": { math: "\\mathbf{\\varsigma}" }, "𝛔": { math: "\\mathbf{\\sigma}" }, "𝛕": { math: "\\mathbf{T}" }, "𝛖": { math: "\\mathbf{\\upsilon}" }, "𝛗": { math: "\\mathbf{\\phi}" }, "𝛘": { math: "\\mathbf{X}" }, "𝛙": { math: "\\mathbf{\\psi}" }, "𝛚": { math: "\\mathbf{\\omega}" }, "𝛛": { math: "\\partial" }, "𝛜": { math: "\\in" }, "𝛝": { math: "\\mathbf{\\vartheta}" }, "𝛞": { math: "\\mathbf{\\varkappa}" }, "𝛟": { math: "\\mathbf{\\phi}" }, "𝛠": { math: "\\mathbf{\\varrho}" }, "𝛡": { math: "\\mathbf{\\varpi}" }, "𝛢": { math: "\\mathsl{A}" }, "𝛣": { math: "\\mathsl{B}" }, "𝛤": { math: "\\mathsl{\\Gamma}" }, "𝛥": { math: "\\mathsl{\\Delta}" }, "𝛦": { math: "\\mathsl{E}" }, "𝛧": { math: "\\mathsl{Z}" }, "𝛨": { math: "\\mathsl{H}" }, "𝛩": { math: "\\mathsl{\\Theta}" }, "𝛪": { math: "\\mathsl{I}" }, "𝛫": { math: "\\mathsl{K}" }, "𝛬": { math: "\\mathsl{\\Lambda}" }, "𝛭": { math: "M" }, "𝛮": { math: "N" }, "𝛯": { math: "\\mathsl{\\Xi}" }, "𝛰": { math: "O" }, "𝛱": { math: "\\mathsl{\\Pi}" }, "𝛲": { math: "\\mathsl{P}" }, "𝛳": { math: "\\mathsl{\\Theta}" }, "𝛴": { math: "\\mathsl{\\Sigma}" }, "𝛵": { math: "\\mathsl{T}" }, "𝛶": { math: "\\mathsl{\\Upsilon}" }, "𝛷": { math: "\\mathsl{\\Phi}" }, "𝛸": { math: "\\mathsl{X}" }, "𝛹": { math: "\\mathsl{\\Psi}" }, "𝛺": { math: "\\mathsl{\\Omega}" }, "𝛻": { math: "\\mathsl{\\nabla}" }, "𝛼": { math: "\\mathsl{A}" }, "𝛽": { math: "\\mathsl{B}" }, "𝛾": { math: "\\mathsl{\\gamma}" }, "𝛿": { math: "\\mathsl{\\delta}" }, "𝜀": { math: "\\mathsl{E}" }, "𝜁": { math: "\\mathsl{Z}" }, "𝜂": { math: "\\mathsl{H}" }, "𝜃": { math: "\\mathsl{\\theta}" }, "𝜄": { math: "\\mathsl{I}" }, "𝜅": { math: "\\mathsl{K}" }, "𝜆": { math: "\\mathsl{\\lambda}" }, "𝜇": { math: "\\mu" }, "𝜈": { math: "\\nu" }, "𝜉": { math: "\\mathsl{\\xi}" }, "𝜊": { math: "o" }, "𝜋": { math: "\\mathsl{\\pi}" }, "𝜌": { math: "\\mathsl{P}" }, "𝜍": { math: "\\mathsl{\\varsigma}" }, "𝜎": { math: "\\mathsl{\\sigma}" }, "𝜏": { math: "\\mathsl{T}" }, "𝜐": { math: "\\mathsl{\\upsilon}" }, "𝜑": { math: "\\mathsl{\\varphi}" }, "𝜒": { math: "\\mathsl{X}" }, "𝜓": { math: "\\mathsl{\\psi}" }, "𝜔": { math: "\\mathsl{\\omega}" }, "𝜕": { math: "\\partial" }, "𝜖": { math: "\\in" }, "𝜗": { math: "\\mathsl{\\vartheta}" }, "𝜘": { math: "\\mathsl{\\varkappa}" }, "𝜙": { math: "\\mathsl{\\phi}" }, "𝜚": { math: "\\mathsl{\\varrho}" }, "𝜛": { math: "\\mathsl{\\varpi}" }, "𝜜": { math: "\\mathbit{A}" }, "𝜝": { math: "\\mathbit{B}" }, "𝜞": { math: "\\mathbit{\\Gamma}" }, "𝜟": { math: "\\mathbit{\\Delta}" }, "𝜠": { math: "\\mathbit{E}" }, "𝜡": { math: "\\mathbit{Z}" }, "𝜢": { math: "\\mathbit{H}" }, "𝜣": { math: "\\mathbit{\\Theta}" }, "𝜤": { math: "\\mathbit{I}" }, "𝜥": { math: "\\mathbit{K}" }, "𝜦": { math: "\\mathbit{\\Lambda}" }, "𝜧": { math: "M" }, "𝜨": { math: "N" }, "𝜩": { math: "\\mathbit{\\Xi}" }, "𝜪": { math: "O" }, "𝜫": { math: "\\mathbit{\\Pi}" }, "𝜬": { math: "\\mathbit{P}" }, "𝜭": { math: "\\mathbit{O}" }, "𝜮": { math: "\\mathbit{\\Sigma}" }, "𝜯": { math: "\\mathbit{T}" }, "𝜰": { math: "\\mathbit{\\Upsilon}" }, "𝜱": { math: "\\mathbit{\\Phi}" }, "𝜲": { math: "\\mathbit{X}" }, "𝜳": { math: "\\mathbit{\\Psi}" }, "𝜴": { math: "\\mathbit{\\Omega}" }, "𝜵": { math: "\\mathbit{\\nabla}" }, "𝜶": { math: "\\mathbit{\\alpha}" }, "𝜷": { math: "\\mathbit{\\beta}" }, "𝜸": { math: "\\mathbit{\\gamma}" }, "𝜹": { math: "\\mathbit{\\delta}" }, "𝜺": { math: "\\mathbit{\\epsilon}" }, "𝜻": { math: "\\mathbit{\\zeta}" }, "𝜼": { math: "\\mathbit{\\eta}" }, "𝜽": { math: "\\mathbit{\\theta}" }, "𝜾": { math: "\\mathbit{\\imath}" }, "𝜿": { math: "\\mathbit{\\kappa}" }, "𝝀": { math: "\\mathbit{\\lambda}" }, "𝝁": { math: "\\mu" }, "𝝂": { math: "N" }, "𝝃": { math: "\\mathbit{\\xi}" }, "𝝄": { math: "O" }, "𝝅": { math: "\\mathbit{\\pi}" }, "𝝆": { math: "\\mathbit{\\rho}" }, "𝝇": { math: "\\mathbit{\\varsigma}" }, "𝝈": { math: "\\mathbit{\\sigma}" }, "𝝉": { math: "\\mathbit{\\tau}" }, "𝝊": { math: "\\mathbit{\\upsilon}" }, "𝝋": { math: "\\mathbit{\\varphi}" }, "𝝌": { math: "\\mathbit{\\chi}" }, "𝝍": { math: "\\mathbit{\\psi}" }, "𝝎": { math: "\\mathbit{\\omega}" }, "𝝏": { math: "\\partial" }, "𝝐": { math: "\\in" }, "𝝑": { math: "\\mathbit{\\vartheta}" }, "𝝒": { math: "\\mathbit{\\varkappa}" }, "𝝓": { math: "\\mathbit{\\phi}" }, "𝝔": { math: "\\mathbit{\\varrho}" }, "𝝕": { math: "\\mathbit{\\varpi}" }, "𝝖": { math: "\\mathsfbf{A}" }, "𝝗": { math: "\\mathsfbf{B}" }, "𝝘": { math: "\\mathsfbf{\\Gamma}" }, "𝝙": { math: "\\mathsfbf{\\Delta}" }, "𝝚": { math: "\\mathsfbf{E}" }, "𝝛": { math: "\\mathsfbf{Z}" }, "𝝜": { math: "\\mathsfbf{H}" }, "𝝝": { math: "\\mathsfbf{\\Theta}" }, "𝝞": { math: "\\mathsfbf{I}" }, "𝝟": { math: "\\mathsfbf{K}" }, "𝝠": { math: "\\mathsfbf{\\Lambda}" }, "𝝡": { math: "M" }, "𝝢": { math: "N" }, "𝝣": { math: "\\mathsfbf{\\Xi}" }, "𝝤": { math: "O" }, "𝝥": { math: "\\mathsfbf{\\Pi}" }, "𝝦": { math: "\\mathsfbf{P}" }, "𝝧": { math: "\\mathsfbf{\\Theta}" }, "𝝨": { math: "\\mathsfbf{\\Sigma}" }, "𝝩": { math: "\\mathsfbf{T}" }, "𝝪": { math: "\\mathsfbf{\\Upsilon}" }, "𝝫": { math: "\\mathsfbf{\\Phi}" }, "𝝬": { math: "\\mathsfbf{X}" }, "𝝭": { math: "\\mathsfbf{\\Psi}" }, "𝝮": { math: "\\mathsfbf{\\Omega}" }, "𝝯": { math: "\\mathsfbf{\\nabla}" }, "𝝰": { math: "\\mathsfbf{\\alpha}" }, "𝝱": { math: "\\mathsfbf{\\beta}" }, "𝝲": { math: "\\mathsfbf{\\gamma}" }, "𝝳": { math: "\\mathsfbf{\\delta}" }, "𝝴": { math: "\\mathsfbf{\\varepsilon}" }, "𝝵": { math: "\\mathsfbf{\\zeta}" }, "𝝶": { math: "\\mathsfbf{\\eta}" }, "𝝷": { math: "\\mathsfbf{\\theta}" }, "𝝸": { math: "\\mathsfbf{\\imath}" }, "𝝹": { math: "\\mathsfbf{\\kappa}" }, "𝝺": { math: "\\mathsfbf{\\lambda}" }, "𝝻": { math: "\\mu" }, "𝝼": { math: "\\nu" }, "𝝽": { math: "\\mathsfbf{\\xi}" }, "𝝾": { math: "o" }, "𝝿": { math: "\\mathsfbf{\\pi}" }, "𝞀": { math: "\\mathsfbf{\\rho}" }, "𝞁": { math: "\\mathsfbf{\\varsigma}" }, "𝞂": { math: "\\mathsfbf{\\sigma}" }, "𝞃": { math: "\\mathsfbf{\\tau}" }, "𝞄": { math: "\\mathsfbf{\\upsilon}" }, "𝞅": { math: "\\mathsfbf{\\varphi}" }, "𝞆": { math: "\\mathsfbf{\\chi}" }, "𝞇": { math: "\\mathsfbf{\\psi}" }, "𝞈": { math: "\\mathsfbf{\\omega}" }, "𝞉": { math: "\\partial" }, "𝞊": { math: "\\in" }, "𝞋": { math: "\\mathsfbf{\\vartheta}" }, "𝞌": { math: "\\mathsfbf{\\varkappa}" }, "𝞍": { math: "\\mathsfbf{\\phi}" }, "𝞎": { math: "\\mathsfbf{\\varrho}" }, "𝞏": { math: "\\mathsfbf{\\varpi}" }, "𝞐": { math: "\\mathsfbfsl{A}" }, "𝞑": { math: "\\mathsfbfsl{B}" }, "𝞒": { math: "\\mathsfbfsl{\\Gamma}" }, "𝞓": { math: "\\mathsfbfsl{\\Delta}" }, "𝞔": { math: "\\mathsfbfsl{E}" }, "𝞕": { math: "\\mathsfbfsl{Z}" }, "𝞖": { math: "\\mathsfbfsl{H}" }, "𝞗": { math: "\\mathsfbfsl{\\Theta}" }, "𝞘": { math: "\\mathsfbfsl{I}" }, "𝞙": { math: "\\mathsfbfsl{K}" }, "𝞚": { math: "\\mathsfbfsl{\\Lambda}" }, "𝞛": { math: "\\mathsfbfsl{M}" }, "𝞜": { math: "\\mathsfbfsl{N}" }, "𝞝": { math: "\\mathsfbfsl{\\Xi}" }, "𝞞": { math: "\\mathsfbfsl{O}" }, "𝞟": { math: "\\mathsfbfsl{\\Pi}" }, "𝞠": { math: "\\mathsfbfsl{P}" }, "𝞡": { math: "\\mathsfbfsl{\\Theta}" }, "𝞢": { math: "\\mathsfbfsl{\\Sigma}" }, "𝞣": { math: "\\mathsfbfsl{T}" }, "𝞤": { math: "\\mathsfbfsl{\\Upsilon}" }, "𝞥": { math: "\\mathsfbfsl{\\Phi}" }, "𝞦": { math: "\\mathsfbfsl{X}" }, "𝞧": { math: "\\mathsfbfsl{\\Psi}" }, "𝞨": { math: "\\mathsfbfsl{\\Omega}" }, "𝞩": { math: "\\mathsfbfsl{\\nabla}" }, "𝞪": { math: "\\mathsfbfsl{\\alpha}" }, "𝞫": { math: "\\mathsfbfsl{\\beta}" }, "𝞬": { math: "\\mathsfbfsl{\\gamma}" }, "𝞭": { math: "\\mathsfbfsl{\\delta}" }, "𝞮": { math: "\\mathsfbfsl{\\varepsilon}" }, "𝞯": { math: "\\mathsfbfsl{\\zeta}" }, "𝞰": { math: "\\mathsfbfsl{\\eta}" }, "𝞱": { math: "\\mathsfbfsl{\\theta}" }, "𝞲": { math: "\\mathsfbfsl{\\imath}" }, "𝞳": { math: "\\mathsfbfsl{\\kappa}" }, "𝞴": { math: "\\mathsfbfsl{\\lambda}" }, "𝞵": { math: "\\mu" }, "𝞶": { math: "\\nu" }, "𝞷": { math: "\\mathsfbfsl{\\xi}" }, "𝞸": { math: "o" }, "𝞹": { math: "\\mathsfbfsl{\\pi}" }, "𝞺": { math: "\\mathsfbfsl{\\rho}" }, "𝞻": { math: "\\mathsfbfsl{\\varsigma}" }, "𝞼": { math: "\\mathsfbfsl{\\sigma}" }, "𝞽": { math: "\\mathsfbfsl{\\tau}" }, "𝞾": { math: "\\mathsfbfsl{\\upsilon}" }, "𝞿": { math: "\\mathsfbfsl{\\varphi}" }, "𝟀": { math: "\\mathsfbfsl{\\chi}" }, "𝟁": { math: "\\mathsfbfsl{\\psi}" }, "𝟂": { math: "\\mathsfbfsl{\\omega}" }, "𝟃": { math: "\\partial" }, "𝟄": { math: "\\in" }, "𝟅": { math: "\\mathsfbfsl{\\vartheta}" }, "𝟆": { math: "\\mathsfbfsl{\\varkappa}" }, "𝟇": { math: "\\mathsfbfsl{\\phi}" }, "𝟈": { math: "\\mathsfbfsl{\\varrho}" }, "𝟉": { math: "\\mathsfbfsl{\\varpi}" }, "𝟊": { math: "\\mbfDigamma" }, "𝟋": { math: "\\mbfdigamma" }, "𝟎": { math: "\\mathbf{0}" }, "𝟏": { math: "\\mathbf{1}" }, "𝟐": { math: "\\mathbf{2}" }, "𝟑": { math: "\\mathbf{3}" }, "𝟒": { math: "\\mathbf{4}" }, "𝟓": { math: "\\mathbf{5}" }, "𝟔": { math: "\\mathbf{6}" }, "𝟕": { math: "\\mathbf{7}" }, "𝟖": { math: "\\mathbf{8}" }, "𝟗": { math: "\\mathbf{9}" }, "𝟘": { math: "\\mathbb{0}" }, "𝟙": { math: "\\mathbb{1}" }, "𝟚": { math: "\\mathbb{2}" }, "𝟛": { math: "\\mathbb{3}" }, "𝟜": { math: "\\mathbb{4}" }, "𝟝": { math: "\\mathbb{5}" }, "𝟞": { math: "\\mathbb{6}" }, "𝟟": { math: "\\mathbb{7}" }, "𝟠": { math: "\\mathbb{8}" }, "𝟡": { math: "\\mathbb{9}" }, "𝟢": { math: "\\mathsf{0}" }, "𝟣": { math: "\\mathsf{1}" }, "𝟤": { math: "\\mathsf{2}" }, "𝟥": { math: "\\mathsf{3}" }, "𝟦": { math: "\\mathsf{4}" }, "𝟧": { math: "\\mathsf{5}" }, "𝟨": { math: "\\mathsf{6}" }, "𝟩": { math: "\\mathsf{7}" }, "𝟪": { math: "\\mathsf{8}" }, "𝟫": { math: "\\mathsf{9}" }, "𝟬": { math: "\\mathsfbf{0}" }, "𝟭": { math: "\\mathsfbf{1}" }, "𝟮": { math: "\\mathsfbf{2}" }, "𝟯": { math: "\\mathsfbf{3}" }, "𝟰": { math: "\\mathsfbf{4}" }, "𝟱": { math: "\\mathsfbf{5}" }, "𝟲": { math: "\\mathsfbf{6}" }, "𝟳": { math: "\\mathsfbf{7}" }, "𝟴": { math: "\\mathsfbf{8}" }, "𝟵": { math: "\\mathsfbf{9}" }, "𝟶": { math: "\\mathtt{0}" }, "𝟷": { math: "\\mathtt{1}" }, "𝟸": { math: "\\mathtt{2}" }, "𝟹": { math: "\\mathtt{3}" }, "𝟺": { math: "\\mathtt{4}" }, "𝟻": { math: "\\mathtt{5}" }, "𝟼": { math: "\\mathtt{6}" }, "𝟽": { math: "\\mathtt{7}" }, "𝟾": { math: "\\mathtt{8}" }, "𝟿": { math: "\\mathtt{9}" } }; var $$2 = { math: "\\$", text: "\\$" }; var _$2 = { math: "\\_", text: "\\_" }; var require$$2 = { "#": { math: "\\#", text: "\\#" }, $: $$2, "%": { math: "\\%", text: "\\%" }, "&": { math: "\\&", text: "\\&" }, "/​": { text: "\\slash", commandspacer: true }, "<": { math: "<" }, ">": { math: ">" }, "\\": { math: "\\backslash", text: "\\textbackslash", commandspacer: true }, "^": { math: "\\sphat", text: "\\^" }, _: _$2, "{": { math: "\\lbrace", text: "\\{" }, "}": { math: "\\rbrace", text: "\\}" }, "~": { math: "\\sptilde", text: "\\textasciitilde", commandspacer: true }, " ": { math: "~", space: true, text: "~" }, " ": { text: " ", space: true }, " ": { math: "\\quad", space: true }, " ": { text: "\\hspace{0.6em}", space: true }, " ": { math: "\\quad", space: true, text: "\\hspace{1em}" }, " ": { text: "\\;", space: true }, " ": { text: "\\hspace{0.25em}", space: true }, " ": { text: "\\hspace{0.166em}", space: true }, " ": { text: "\\hphantom{0}", space: true }, " ": { text: "\\hphantom{,}", space: true }, " ": { text: "\\,", space: true }, " ": { math: "\\mkern1mu", space: true }, "​": { text: "\\mbox", commandspacer: true, space: true }, " ": { text: " ", space: true }, " ": { math: "\\:", space: true, text: "\\:" } }; var require$$3 = { "\\#": "#", "\\$": "$", "\\%": "%", "\\&": "&", "\\slash": "/​", "\\textless": "<", "\\textgreater": ">", "\\LaTeX": "LaTeX", "\\textbackslash": "\\", "\\backslash": "\\", "\\": "\\", "\\^": "^", "\\sphat": "^", "\\_": "_", "\\t{ia}": "i︠a︡", "{\\~ w}": "w̃", "\\{": "{", "\\lbrace": "{", "\\textbar": "|", "\\}": "}", "\\rbrace": "}", "\\textasciitilde": "~", "\\sptilde": "~", "\\textexclamdown": "¡", "\\textcent": "¢", "\\cent": "¢", "\\textsterling": "£", "\\pounds": "£", "\\textcurrency": "¤", "\\textyen": "¥", "\\yen": "¥", "\\textbrokenbar": "¦", "\\textsection": "§", "\\textasciidieresis": "¨", "\\spddot": "¨", "\\textcopyright": "©", "\\textordfeminine": "ª", "\\guillemotleft": "«", "\\lnot": "¬", "\\neg": "¬", "\\-": "­", "\\textregistered": "®", "\\circledR": "®", "\\textasciimacron": "¯", "\\textdegree": "°", "^\\circ": "°", "\\pm": "±", "^{2}": "²", "^{3}": "³", "\\textasciiacute": "´", "\\textmu": "µ", "\\textparagraph": "¶", "^{1}": "¹", "\\textordmasculine": "º", "\\guillemotright": "»", "\\frac{1}{4}": "¼", "\\textonequarter": "¼", "\\frac{1}{2}": "½", "\\textonehalf": "½", "\\frac{3}{4}": "¾", "\\textthreequarters": "¾", "\\textquestiondown": "¿", "\\`A": "À", "\\'A": "Á", "\\^A": "Â", "\\~A": "Ã", "\\\"A": "Ä", "\\AA": "Å", "\\r{A}": "Å", "{\\r A}": "Å", "\\AE": "Æ", "\\c{C}": "Ç", "\\`E": "È", "\\'E": "É", "\\^E": "Ê", "\\\"E": "Ë", "\\`I": "Ì", "\\'I": "Í", "\\^I": "Î", "\\\"I": "Ï", "\\DH": "Ð", "\\~N": "Ñ", "\\`O": "Ò", "\\'O": "Ó", "\\^O": "Ô", "\\~O": "Õ", "\\\"O": "Ö", "\\texttimes": "×", "\\times": "×", "\\O": "Ø", "\\`U": "Ù", "\\'U": "Ú", "\\^U": "Û", "\\\"U": "Ü", "\\'Y": "Ý", "\\TH": "Þ", "\\ss": "ß", "\\`a": "à", "\\'a": "á", "\\^a": "â", "\\~a": "ã", "\\\"a": "ä", "\\aa": "å", "\\r{a}": "å", "{\\r a}": "å", "\\ae": "æ", "\\c{c}": "ç", "\\`e": "è", "\\'e": "é", "\\^e": "ê", "\\\"e": "ë", "\\`i": "ì", "\\`\\i": "ì", "\\'i": "í", "\\'\\i": "í", "\\^i": "î", "\\^\\i": "î", "\\\"i": "ï", "\\\"\\i": "ï", "\\dh": "ð", "\\eth": "ð", "\\~n": "ñ", "\\`o": "ò", "\\'o": "ó", "\\^o": "ô", "\\~o": "õ", "\\\"o": "ö", "\\div": "÷", "\\o": "ø", "\\`u": "ù", "\\'u": "ú", "\\^u": "û", "\\\"u": "ü", "\\'y": "ý", "\\th": "þ", "\\\"y": "ÿ", "\\=A": "Ā", "\\=a": "ā", "\\u{A}": "Ă", "\\u{a}": "ă", "\\k{A}": "Ą", "\\k{a}": "ą", "\\'C": "Ć", "\\'c": "ć", "\\^C": "Ĉ", "\\^c": "ĉ", "\\.C": "Ċ", "\\.c": "ċ", "\\v{C}": "Č", "\\v{c}": "č", "\\v{D}": "Ď", "\\v{d}": "ď", "\\DJ": "Đ", "\\dj": "đ", "\\=E": "Ē", "\\=e": "ē", "\\u{E}": "Ĕ", "\\u{e}": "ĕ", "\\.E": "Ė", "\\.e": "ė", "\\k{E}": "Ę", "\\k{e}": "ę", "\\v{E}": "Ě", "\\v{e}": "ě", "\\^G": "Ĝ", "\\^g": "ĝ", "\\u{G}": "Ğ", "\\u{g}": "ğ", "\\.G": "Ġ", "\\.g": "ġ", "\\c{G}": "Ģ", "\\c{g}": "ģ", "\\^H": "Ĥ", "\\^h": "ĥ", "{\\fontencoding{LELA}\\selectfont\\char40}": "Ħ", "\\Elzxh": "ħ", "\\~I": "Ĩ", "\\~i": "ĩ", "\\=I": "Ī", "\\=i": "ī", "\\u{I}": "Ĭ", "{\\u \\i}": "ĭ", "\\k{I}": "Į", "\\k{i}": "į", "\\.I": "İ", "\\i": "ı", "\\imath": "ı", "\\^J": "Ĵ", "\\^\\j": "ĵ", "\\c{K}": "Ķ", "\\c{k}": "ķ", "{\\fontencoding{LELA}\\selectfont\\char91}": "ĸ", "\\'L": "Ĺ", "\\'l": "ĺ", "\\c{L}": "Ļ", "\\c{l}": "ļ", "\\v{L}": "Ľ", "\\v{l}": "ľ", "{\\fontencoding{LELA}\\selectfont\\char201}": "Ŀ", "{\\fontencoding{LELA}\\selectfont\\char202}": "ŀ", "\\L": "Ł", "\\l": "ł", "\\'N": "Ń", "\\'n": "ń", "\\c{N}": "Ņ", "\\c{n}": "ņ", "\\v{N}": "Ň", "\\v{n}": "ň", "\\NG": "Ŋ", "\\ng": "ŋ", "\\=O": "Ō", "\\=o": "ō", "\\u{O}": "Ŏ", "\\u{o}": "ŏ", "\\H{O}": "Ő", "\\H{o}": "ő", "\\OE": "Œ", "\\oe": "œ", "\\'R": "Ŕ", "\\'r": "ŕ", "\\c{R}": "Ŗ", "\\c{r}": "ŗ", "\\v{R}": "Ř", "\\v{r}": "ř", "\\'S": "Ś", "\\'s": "ś", "\\^S": "Ŝ", "\\^s": "ŝ", "\\c{S}": "Ş", "\\c{s}": "ş", "\\v{S}": "Š", "\\v{s}": "š", "\\c{T}": "Ţ", "\\c{t}": "ţ", "\\v{T}": "Ť", "\\v{t}": "ť", "{\\fontencoding{LELA}\\selectfont\\char47}": "Ŧ", "{\\fontencoding{LELA}\\selectfont\\char63}": "ŧ", "\\~U": "Ũ", "\\~u": "ũ", "\\=U": "Ū", "\\=u": "ū", "\\u{U}": "Ŭ", "\\u{u}": "ŭ", "\\r{U}": "Ů", "{\\r U}": "Ů", "\\r{u}": "ů", "\\ocirc{u}": "ů", "{\\r u}": "ů", "\\H{U}": "Ű", "\\H{u}": "ű", "\\k{U}": "Ų", "\\k{u}": "ų", "\\^W": "Ŵ", "\\^w": "ŵ", "\\^Y": "Ŷ", "\\^y": "ŷ", "\\\"Y": "Ÿ", "\\'Z": "Ź", "\\'z": "ź", "\\.Z": "Ż", "\\.z": "ż", "\\v{Z}": "Ž", "\\v{z}": "ž", "\\texthvlig": "ƕ", "\\textnrleg": "ƞ", "\\textesh": "ƪ", "\\Zbar": "Ƶ", "{\\fontencoding{LELA}\\selectfont\\char195}": "ƺ", "\\textdoublepipe": "ǂ", "\\v{A}": "Ǎ", "\\v{a}": "ǎ", "\\v{I}": "Ǐ", "\\v{i}": "ǐ", "\\v{O}": "Ǒ", "\\v{o}": "ǒ", "\\v{U}": "Ǔ", "\\v{u}": "ǔ", "\\v{G}": "Ǧ", "\\v{g}": "ǧ", "\\v{K}": "Ǩ", "\\v{k}": "ǩ", "\\k{O}": "Ǫ", "\\k{o}": "ǫ", "\\v{j}": "ǰ", "\\'G": "Ǵ", "\\'g": "ǵ", "\\c{E}": "Ȩ", "\\c{e}": "ȩ", "\\jmath": "ȷ", "\\Elztrna": "ɐ", "\\Elztrnsa": "ɒ", "\\Elzopeno": "ɔ", "\\Elzrtld": "ɖ", "{\\fontencoding{LEIP}\\selectfont\\char61}": "ɘ", "\\Elzschwa": "ə", "\\varepsilon": "ɛ", "\\Elzpgamma": "ɣ", "\\Elzpbgam": "ɤ", "\\Elztrnh": "ɥ", "\\Elzbtdl": "ɬ", "\\Elzrtll": "ɭ", "\\Elztrnm": "ɯ", "\\Elztrnmlr": "ɰ", "\\Elzltlmr": "ɱ", "\\Elzltln": "ɲ", "\\Elzrtln": "ɳ", "\\Elzclomeg": "ɷ", "\\textphi": "ɸ", "\\Elztrnr": "ɹ", "\\Elztrnrl": "ɺ", "\\Elzrttrnr": "ɻ", "\\Elzrl": "ɼ", "\\Elzrtlr": "ɽ", "\\Elzfhr": "ɾ", "{\\fontencoding{LEIP}\\selectfont\\char202}": "ɿ", "\\Elzrtls": "ʂ", "\\Elzesh": "ʃ", "\\Elztrnt": "ʇ", "\\Elzrtlt": "ʈ", "\\Elzpupsil": "ʊ", "\\Elzpscrv": "ʋ", "\\Elzinvv": "ʌ", "\\Elzinvw": "ʍ", "\\Elztrny": "ʎ", "\\Elzrtlz": "ʐ", "\\Elzyogh": "ʒ", "\\Elzglst": "ʔ", "\\Elzreglst": "ʕ", "\\Elzinglst": "ʖ", "\\textturnk": "ʞ", "\\Elzdyogh": "ʤ", "\\Elztesh": "ʧ", "\\textsuperscript{h}": "ʰ", "^{h}": "ʰ", "\\textsuperscript{j}": "ʲ", "^{j}": "ʲ", "\\textsuperscript{r}": "ʳ", "^{r}": "ʳ", "\\textsuperscript{w}": "ʷ", "^{w}": "ʷ", "\\textsuperscript{y}": "ʸ", "^{y}": "ʸ", "\\lasp": "ʿ", "\\textasciicircum": "ˆ", "\\textasciicaron": "ˇ", "\\Elzverts": "ˈ", "\\Elzverti": "ˌ", "\\Elzlmrk": "ː", "\\Elzhlmrk": "ˑ", "\\Elzsbrhr": "˒", "\\Elzsblhr": "˓", "\\Elzrais": "˔", "\\Elzlow": "˕", "\\textasciibreve": "˘", "\\textperiodcentered": "˙", "\\texttildelow": "˜", "\\textsuperscript{l}": "ˡ", "^{l}": "ˡ", "\\textsuperscript{s}": "ˢ", "^{s}": "ˢ", "\\textsuperscript{x}": "ˣ", "^{x}": "ˣ", "\\tone{55}": "˥", "\\tone{44}": "˦", "\\tone{33}": "˧", "\\tone{22}": "˨", "\\tone{11}": "˩", "\\`": "̀", "\\grave": "̀", "\\textgravemacron": "̀̄", "\\textgravedot": "̀̇", "\\'": "́", "\\acute": "́", "\\textacutemacron": "́̄", "\\textacutewedge": "́̌", "\\hat": "̂", "\\textcircumdot": "̂̇", "\\~": "̃", "\\tilde": "̃", "\\texttildedot": "̃̇", "\\=": "̄", "\\bar": "̄", "\\overline": "̅", "\\u": "̆", "\\breve": "̆", "\\textbrevemacron": "̆̄", "\\.": "̇", "\\dot": "̇", "\\textdotacute": "̇́", "\\\"": "̈", "\\ddot": "̈", "\\ovhook": "̉", "\\r": "̊", "\\mathring": "̊", "\\textringmacron": "̊̄", "\\H": "̋", "\\check": "̌", "\\v": "̌", "\\textvbaraccent": "̍", "\\textdoublevbaraccent": "̎", "\\textdoublegrave": "̏", "\\textdotbreve": "̐", "{\\fontencoding{LECO}\\selectfont\\char177}": "̑", "\\oturnedcomma": "̒", "\\ocommatopright": "̕", "\\textsubgrave": "̖", "\\textadvancing": "̘", "\\textretracting": "̙", "\\droang": "̚", "\\textcorner": "̚", "\\textsublhalfring": "̜", "\\textraising": "̝", "\\textlowering": "̞", "\\textsubplus": "̟", "\\Elzpalh": "̡", "\\Elzrh": "̢", "\\d": "̣", "\\textsubumlaut": "̤", "\\textsubring": "̥", "\\c": "̧", "\\k": "̨", "\\textsyllabic": "̩", "\\Elzsbbrg": "̪", "\\textsubbridge": "̪", "{\\fontencoding{LECO}\\selectfont\\char203}": "̫", "\\textsubwedge": "̬", "\\textsubarch": "̯", "\\utilde": "̰", "\\textsubtilde": "̰", "\\textsubbar": "̱", "\\underbar": "̱", "\\underline": "̲", "\\textsuperimposetilde": "̴", "\\Elzxl": "̵", "\\Elzbar": "̶", "{\\fontencoding{LECO}\\selectfont\\char215}": "̷", "\\not": "̸", "\\textsubrhalfring": "̹", "\\textinvsubbridge": "̺", "\\textsubsquare": "̻", "\\textseagull": "̼", "\\textovercross": "̽", "{\\fontencoding{LECO}\\selectfont\\char225}": "͡", "\\'H": "Ή", "{\\'{}I}": "Ί", "{\\'{}O}": "Ό", "\\mathrm{'Y}": "Ύ", "\\mathrm{'\\Omega}": "Ώ", "\\acute{\\ddot{\\iota}}": "ΐ", "\\Gamma": "Γ", "\\varGamma": "Γ", "\\Delta": "Δ", "\\Theta": "Θ", "\\Lambda": "Λ", "\\Xi": "Ξ", "\\Pi": "Π", "\\Sigma": "Σ", "\\Upsilon": "Υ", "\\Phi": "Φ", "\\Psi": "Ψ", "\\Omega": "Ω", "\\mathrm{\\ddot{I}}": "Ϊ", "\\mathrm{\\ddot{Y}}": "Ϋ", "{\\'$\\alpha$}": "ά", "\\acute{\\epsilon}": "έ", "\\acute{\\eta}": "ή", "\\acute{\\iota}": "ί", "\\acute{\\ddot{\\upsilon}}": "ΰ", "\\alpha": "α", "\\beta": "β", "\\gamma": "γ", "\\delta": "δ", "\\zeta": "ζ", "\\eta": "η", "\\texttheta": "θ", "\\theta": "θ", "\\iota": "ι", "\\kappa": "κ", "\\lambda": "λ", "\\nu": "ν", "\\xi": "ξ", "\\pi": "π", "\\rho": "ρ", "\\varsigma": "ς", "\\sigma": "σ", "\\tau": "τ", "\\upsilon": "υ", "\\varphi": "φ", "\\chi": "χ", "\\psi": "ψ", "\\omega": "ω", "\\ddot{\\iota}": "ϊ", "\\ddot{\\upsilon}": "ϋ", "\\acute{\\upsilon}": "ύ", "\\acute{\\omega}": "ώ", "\\Pisymbol{ppi022}{87}": "ϐ", "\\varbeta": "ϐ", "\\textvartheta": "ϑ", "\\vartheta": "ϑ", "\\phi": "ϕ", "\\varpi": "ϖ", "\\Qoppa": "Ϙ", "\\qoppa": "ϙ", "\\Stigma": "Ϛ", "\\stigma": "ϛ", "\\Digamma": "Ϝ", "\\digamma": "ϝ", "\\Koppa": "Ϟ", "\\koppa": "ϟ", "\\Sampi": "Ϡ", "\\sampi": "ϡ", "\\varkappa": "ϰ", "\\varrho": "ϱ", "\\textTheta": "ϴ", "\\upvarTheta": "ϴ", "\\epsilon": "ϵ", "\\backepsilon": "϶", "\\cyrchar\\CYRYO": "Ё", "\\cyrchar\\CYRDJE": "Ђ", "\\cyrchar{\\'\\CYRG}": "Ѓ", "\\cyrchar\\CYRIE": "Є", "\\cyrchar\\CYRDZE": "Ѕ", "\\cyrchar\\CYRII": "І", "\\cyrchar\\CYRYI": "Ї", "\\cyrchar\\CYRJE": "Ј", "\\cyrchar\\CYRLJE": "Љ", "\\cyrchar\\CYRNJE": "Њ", "\\cyrchar\\CYRTSHE": "Ћ", "\\cyrchar{\\'\\CYRK}": "Ќ", "\\cyrchar\\CYRUSHRT": "Ў", "\\cyrchar\\CYRDZHE": "Џ", "\\cyrchar\\CYRA": "А", "\\cyrchar\\CYRB": "Б", "\\cyrchar\\CYRV": "В", "\\cyrchar\\CYRG": "Г", "\\cyrchar\\CYRD": "Д", "\\cyrchar\\CYRE": "Е", "\\cyrchar\\CYRZH": "Ж", "\\cyrchar\\CYRZ": "З", "\\cyrchar\\CYRI": "И", "\\cyrchar\\CYRISHRT": "Й", "\\cyrchar\\CYRK": "К", "\\cyrchar\\CYRL": "Л", "\\cyrchar\\CYRM": "М", "\\cyrchar\\CYRN": "Н", "\\cyrchar\\CYRO": "О", "\\cyrchar\\CYRP": "П", "\\cyrchar\\CYRR": "Р", "\\cyrchar\\CYRS": "С", "\\cyrchar\\CYRT": "Т", "\\cyrchar\\CYRU": "У", "\\cyrchar\\CYRF": "Ф", "\\cyrchar\\CYRH": "Х", "\\cyrchar\\CYRC": "Ц", "\\cyrchar\\CYRCH": "Ч", "\\cyrchar\\CYRSH": "Ш", "\\cyrchar\\CYRSHCH": "Щ", "\\cyrchar\\CYRHRDSN": "Ъ", "\\bud": "Ъ", "\\cdprime": "Ъ", "\\cyrchar\\CYRERY": "Ы", "\\cyrchar\\CYRSFTSN": "Ь", "\\cprime": "Ь", "\\cyrchar\\CYREREV": "Э", "\\cyrchar\\CYRYU": "Ю", "\\cyrchar\\CYRYA": "Я", "\\cyrchar\\cyra": "а", "\\cyrchar\\cyrb": "б", "\\cyrchar\\cyrv": "в", "\\cyrchar\\cyrg": "г", "\\cyrchar\\cyrd": "д", "\\cyrchar\\cyre": "е", "\\cyrchar\\cyrzh": "ж", "\\cyrchar\\cyrz": "з", "\\cyrchar\\cyri": "и", "\\cyrchar\\cyrishrt": "й", "\\cyrchar\\cyrk": "к", "\\cyrchar\\cyrl": "л", "\\cyrchar\\cyrm": "м", "\\cyrchar\\cyrn": "н", "\\cyrchar\\cyro": "о", "\\cyrchar\\cyrp": "п", "\\cyrchar\\cyrr": "р", "\\cyrchar\\cyrs": "с", "\\cyrchar\\cyrt": "т", "\\cyrchar\\cyru": "у", "\\cyrchar\\cyrf": "ф", "\\cyrchar\\cyrh": "х", "\\cyrchar\\cyrc": "ц", "\\cyrchar\\cyrch": "ч", "\\cyrchar\\cyrsh": "ш", "\\cyrchar\\cyrshch": "щ", "\\cyrchar\\cyrhrdsn": "ъ", "\\cyrchar\\cyrery": "ы", "\\cyrchar\\cyrsftsn": "ь", "\\cyrchar\\cyrerev": "э", "\\cyrchar\\cyryu": "ю", "\\cyrchar\\cyrya": "я", "\\cyrchar\\cyryo": "ё", "\\cyrchar\\cyrdje": "ђ", "\\cyrchar{\\'\\cyrg}": "ѓ", "\\cyrchar\\cyrie": "є", "\\cyrchar\\cyrdze": "ѕ", "\\cyrchar\\cyrii": "і", "\\cyrchar\\cyryi": "ї", "\\cyrchar\\cyrje": "ј", "\\cyrchar\\cyrlje": "љ", "\\cyrchar\\cyrnje": "њ", "\\cyrchar\\cyrtshe": "ћ", "\\cyrchar{\\'\\cyrk}": "ќ", "\\cyrchar\\cyrushrt": "ў", "\\cyrchar\\cyrdzhe": "џ", "\\cyrchar\\CYROMEGA": "Ѡ", "\\cyrchar\\cyromega": "ѡ", "\\cyrchar\\CYRYAT": "Ѣ", "\\cyrchar\\CYRIOTE": "Ѥ", "\\cyrchar\\cyriote": "ѥ", "\\cyrchar\\CYRLYUS": "Ѧ", "\\cyrchar\\cyrlyus": "ѧ", "\\cyrchar\\CYRIOTLYUS": "Ѩ", "\\cyrchar\\cyriotlyus": "ѩ", "\\cyrchar\\CYRBYUS": "Ѫ", "\\cyrchar\\CYRIOTBYUS": "Ѭ", "\\cyrchar\\cyriotbyus": "ѭ", "\\cyrchar\\CYRKSI": "Ѯ", "\\cyrchar\\cyrksi": "ѯ", "\\cyrchar\\CYRPSI": "Ѱ", "\\cyrchar\\cyrpsi": "ѱ", "\\cyrchar\\CYRFITA": "Ѳ", "\\cyrchar\\CYRIZH": "Ѵ", "\\cyrchar\\CYRUK": "Ѹ", "\\cyrchar\\cyruk": "ѹ", "\\cyrchar\\CYROMEGARND": "Ѻ", "\\cyrchar\\cyromegarnd": "ѻ", "\\cyrchar\\CYROMEGATITLO": "Ѽ", "\\cyrchar\\cyromegatitlo": "ѽ", "\\cyrchar\\CYROT": "Ѿ", "\\cyrchar\\cyrot": "ѿ", "\\cyrchar\\CYRKOPPA": "Ҁ", "\\cyrchar\\cyrkoppa": "ҁ", "\\cyrchar\\cyrthousands": "҂", "\\cyrchar\\cyrhundredthousands": "҈", "\\cyrchar\\cyrmillions": "҉", "\\cyrchar\\CYRSEMISFTSN": "Ҍ", "\\cyrchar\\cyrsemisftsn": "ҍ", "\\cyrchar\\CYRRTICK": "Ҏ", "\\cyrchar\\cyrrtick": "ҏ", "\\cyrchar\\CYRGUP": "Ґ", "\\cyrchar\\cyrgup": "ґ", "\\cyrchar\\CYRGHCRS": "Ғ", "\\cyrchar\\cyrghcrs": "ғ", "\\cyrchar\\CYRGHK": "Ҕ", "\\cyrchar\\cyrghk": "ҕ", "\\cyrchar\\CYRZHDSC": "Җ", "\\cyrchar\\cyrzhdsc": "җ", "\\cyrchar\\CYRZDSC": "Ҙ", "\\cyrchar\\cyrzdsc": "ҙ", "\\cyrchar\\CYRKDSC": "Қ", "\\cyrchar\\cyrkdsc": "қ", "\\cyrchar\\CYRKVCRS": "Ҝ", "\\cyrchar\\cyrkvcrs": "ҝ", "\\cyrchar\\CYRKHCRS": "Ҟ", "\\cyrchar\\cyrkhcrs": "ҟ", "\\cyrchar\\CYRKBEAK": "Ҡ", "\\cyrchar\\cyrkbeak": "ҡ", "\\cyrchar\\CYRNDSC": "Ң", "\\cyrchar\\cyrndsc": "ң", "\\cyrchar\\CYRNG": "Ҥ", "\\cyrchar\\cyrng": "ҥ", "\\cyrchar\\CYRPHK": "Ҧ", "\\cyrchar\\cyrphk": "ҧ", "\\cyrchar\\CYRABHHA": "Ҩ", "\\cyrchar\\cyrabhha": "ҩ", "\\cyrchar\\CYRSDSC": "Ҫ", "\\cyrchar\\cyrsdsc": "ҫ", "\\cyrchar\\CYRTDSC": "Ҭ", "\\cyrchar\\cyrtdsc": "ҭ", "\\cyrchar\\CYRY": "Ү", "\\cyrchar\\cyry": "ү", "\\cyrchar\\CYRYHCRS": "Ұ", "\\cyrchar\\cyryhcrs": "ұ", "\\cyrchar\\CYRHDSC": "Ҳ", "\\cyrchar\\cyrhdsc": "ҳ", "\\cyrchar\\CYRTETSE": "Ҵ", "\\cyrchar\\cyrtetse": "ҵ", "\\cyrchar\\CYRCHRDSC": "Ҷ", "\\cyrchar\\cyrchrdsc": "ҷ", "\\cyrchar\\CYRCHVCRS": "Ҹ", "\\cyrchar\\cyrchvcrs": "ҹ", "\\cyrchar\\CYRSHHA": "Һ", "\\cyrchar\\cyrshha": "һ", "\\cyrchar\\CYRABHCH": "Ҽ", "\\cyrchar\\cyrabhch": "ҽ", "\\cyrchar\\CYRABHCHDSC": "Ҿ", "\\cyrchar\\cyrabhchdsc": "ҿ", "\\cyrchar\\CYRpalochka": "Ӏ", "\\cyrchar\\CYRKHK": "Ӄ", "\\cyrchar\\cyrkhk": "ӄ", "\\cyrchar\\CYRNHK": "Ӈ", "\\cyrchar\\cyrnhk": "ӈ", "\\cyrchar\\CYRCHLDSC": "Ӌ", "\\cyrchar\\cyrchldsc": "ӌ", "\\cyrchar\\CYRAE": "Ӕ", "\\cyrchar\\cyrae": "ӕ", "\\cyrchar\\CYRSCHWA": "Ә", "\\cyrchar\\cyrschwa": "ә", "\\cyrchar\\CYRABHDZE": "Ӡ", "\\cyrchar\\cyrabhdze": "ӡ", "\\cyrchar\\CYROTLD": "Ө", "\\cyrchar\\cyrotld": "ө", "\\\\backslash": "ࡱ", "\\textsuperscript{a}": "ᵃ", "^{a}": "ᵃ", "\\textsuperscript{b}": "ᵇ", "^{b}": "ᵇ", "\\textsuperscript{d}": "ᵈ", "^{d}": "ᵈ", "\\textsuperscript{e}": "ᵉ", "^{e}": "ᵉ", "\\textsuperscript{g}": "ᵍ", "^{g}": "ᵍ", "\\textsuperscript{k}": "ᵏ", "^{k}": "ᵏ", "\\textsuperscript{m}": "ᵐ", "^{m}": "ᵐ", "\\textsuperscript{o}": "ᵒ", "^{o}": "ᵒ", "\\textsuperscript{p}": "ᵖ", "^{p}": "ᵖ", "\\textsuperscript{t}": "ᵗ", "^{t}": "ᵗ", "\\textsuperscript{u}": "ᵘ", "^{u}": "ᵘ", "\\textsuperscript{v}": "ᵛ", "^{v}": "ᵛ", "\\textsuperscript{c}": "ᶜ", "^{c}": "ᶜ", "\\textsuperscript{f}": "ᶠ", "^{f}": "ᶠ", "\\textsuperscript{z}": "ᶻ", "^{z}": "ᶻ", "\\.B": "Ḃ", "\\.b": "ḃ", "\\d{B}": "Ḅ", "\\d{b}": "ḅ", "\\b{B}": "Ḇ", "\\b{b}": "ḇ", "\\.D": "Ḋ", "\\.d": "ḋ", "\\d{D}": "Ḍ", "\\d{d}": "ḍ", "\\b{D}": "Ḏ", "\\b{d}": "ḏ", "\\c{D}": "Ḑ", "\\c{d}": "ḑ", "\\c{\\u{E}}": "Ḝ", "\\c{\\u{e}}": "ḝ", "\\.F": "Ḟ", "\\.f": "ḟ", "\\=G": "Ḡ", "\\=g": "ḡ", "\\.H": "Ḣ", "\\.h": "ḣ", "\\d{H}": "Ḥ", "\\d{h}": "ḥ", "\\\"H": "Ḧ", "\\\"h": "ḧ", "\\c{H}": "Ḩ", "\\c{h}": "ḩ", "\\'K": "Ḱ", "\\'k": "ḱ", "\\d{K}": "Ḳ", "\\d{k}": "ḳ", "\\b{K}": "Ḵ", "\\b{k}": "ḵ", "\\d{L}": "Ḷ", "\\d{l}": "ḷ", "\\b{L}": "Ḻ", "\\b{l}": "ḻ", "\\'M": "Ḿ", "\\'m": "ḿ", "\\.M": "Ṁ", "\\.m": "ṁ", "\\d{M}": "Ṃ", "\\d{m}": "ṃ", "\\.N": "Ṅ", "\\.n": "ṅ", "\\d{N}": "Ṇ", "\\d{n}": "ṇ", "\\b{N}": "Ṉ", "\\b{n}": "ṉ", "\\'P": "Ṕ", "\\'p": "ṕ", "\\.P": "Ṗ", "\\.p": "ṗ", "\\.R": "Ṙ", "\\.r": "ṙ", "\\d{R}": "Ṛ", "\\d{r}": "ṛ", "\\b{R}": "Ṟ", "\\b{r}": "ṟ", "\\.S": "Ṡ", "\\.s": "ṡ", "\\d{S}": "Ṣ", "\\d{s}": "ṣ", "\\.T": "Ṫ", "\\.t": "ṫ", "\\d{T}": "Ṭ", "\\d{t}": "ṭ", "\\b{T}": "Ṯ", "\\b{t}": "ṯ", "\\~V": "Ṽ", "\\~v": "ṽ", "\\d{V}": "Ṿ", "\\d{v}": "ṿ", "\\`W": "Ẁ", "\\`w": "ẁ", "\\'W": "Ẃ", "\\'w": "ẃ", "\\\"W": "Ẅ", "\\\"w": "ẅ", "\\.W": "Ẇ", "\\.w": "ẇ", "\\d{W}": "Ẉ", "\\d{w}": "ẉ", "\\.X": "Ẋ", "\\.x": "ẋ", "\\\"X": "Ẍ", "\\\"x": "ẍ", "\\.Y": "Ẏ", "\\.y": "ẏ", "\\^Z": "Ẑ", "\\^z": "ẑ", "\\d{Z}": "Ẓ", "\\d{z}": "ẓ", "\\b{Z}": "Ẕ", "\\b{z}": "ẕ", "\\b{h}": "ẖ", "\\\"t": "ẗ", "\\r{w}": "ẘ", "\\r{y}": "ẙ", "\\d{A}": "Ạ", "\\d{a}": "ạ", "\\d{E}": "Ẹ", "\\d{e}": "ẹ", "\\~E": "Ẽ", "\\~e": "ẽ", "\\d{I}": "Ị", "\\d{i}": "ị", "\\d{O}": "Ọ", "\\d{o}": "ọ", "\\d{U}": "Ụ", "\\d{u}": "ụ", "\\`Y": "Ỳ", "\\`y": "ỳ", "\\d{Y}": "Ỵ", "\\d{y}": "ỵ", "\\~Y": "Ỹ", "\\~y": "ỹ", "\\hspace{0.6em}": " ", "\\hspace{1em}": " ", "\\quad": " ", "\\;": " ", "\\hspace{0.25em}": " ", "\\hspace{0.166em}": " ", "\\hphantom{0}": " ", "\\hphantom{,}": " ", "\\,": " ", "\\mkern1mu": " ", "\\mbox": "​", "{\\aftergroup\\ignorespaces}": "‌", "\\textendash": "–", "\\textemdash": "—", "\\rule{1em}{1pt}": "―", "\\horizbar": "―", "\\Vert": "‖", "\\twolowline": "‗", "\\textquoteleft": "‘", "\\textquoteright": "’", "\\Elzreapos": "‛", "\\textquotedblleft": "“", "\\textquotedblright": "”", "\\quotedblbase": "‟", "\\textdagger": "†", "\\dagger": "†", "\\textdaggerdbl": "‡", "\\ddagger": "‡", "\\textbullet": "•", "\\enleadertwodots": "‥", "\\ldots": "…", "\\textperthousand": "‰", "\\textpertenthousand": "‱", "{'}": "′", "{''}": "″", "{'''}": "‴", "\\backprime": "‵", "\\backdprime": "‶", "\\backtrprime": "‷", "\\caretinsert": "‸", "\\guilsinglleft": "‹", "\\guilsinglright": "›", "\\Exclam": "‼", "\\hyphenbullet": "⁃", "\\fracslash": "⁄", "\\Question": "⁇", "\\closure": "⁐", "\\:": " ", "\\nolinebreak": "⁠", "^{0}": "⁰", "\\textsuperscript{i}": "ⁱ", "^{i}": "ⁱ", "^{4}": "⁴", "^{5}": "⁵", "^{6}": "⁶", "^{7}": "⁷", "^{8}": "⁸", "^{9}": "⁹", "^{+}": "⁺", "^{-}": "⁻", "^{=}": "⁼", "^{(}": "⁽", "^{)}": "⁾", "\\textsuperscript{n}": "ⁿ", "^{n}": "ⁿ", "_{0}": "₀", "_{1}": "₁", "_{2}": "₂", "_{3}": "₃", "_{4}": "₄", "_{5}": "₅", "_{6}": "₆", "_{7}": "₇", "_{8}": "₈", "_{9}": "₉", "_{+}": "₊", "_{-}": "₋", "_{=}": "₌", "_{(}": "₍", "_{)}": "₎", "\\textsubscript{a}": "ₐ", "_{a}": "ₐ", "\\textsubscript{e}": "ₑ", "_{e}": "ₑ", "\\textsubscript{o}": "ₒ", "_{o}": "ₒ", "\\textsubscript{x}": "ₓ", "_{x}": "ₓ", "\\textsubscript{\\textschwa}": "ₔ", "\\textsubscript{h}": "ₕ", "_{h}": "ₕ", "\\textsubscript{k}": "ₖ", "_{k}": "ₖ", "\\textsubscript{l}": "ₗ", "_{l}": "ₗ", "\\textsubscript{m}": "ₘ", "_{m}": "ₘ", "\\textsubscript{n}": "ₙ", "_{n}": "ₙ", "\\textsubscript{p}": "ₚ", "_{p}": "ₚ", "\\textsubscript{s}": "ₛ", "_{s}": "ₛ", "\\textsubscript{t}": "ₜ", "_{t}": "ₜ", "\\ensuremath{\\Elzpes}": "₧", "\\texteuro": "€", "\\euro": "€", "\\lvec": "⃐", "\\vertoverlay": "⃒", "\\LVec": "⃖", "\\vec": "⃗", "\\dddot": "⃛", "\\ddddot": "⃜", "\\enclosecircle": "⃝", "\\enclosesquare": "⃞", "\\enclosediamond": "⃟", "\\overleftrightarrow": "⃡", "\\enclosetriangle": "⃤", "\\annuity": "⃧", "\\threeunderdot": "⃨", "\\widebridgeabove": "⃩", "\\underrightharpoondown": "⃬", "\\underleftharpoondown": "⃭", "\\underleftarrow": "⃮", "\\underrightarrow": "⃯", "\\asteraccent": "⃰", "\\mathbb{C}": "ℂ", "\\textcelsius": "℃", "\\Euler": "ℇ", "\\mathscr{g}": "ℊ", "\\mathscr{H}": "ℋ", "\\mathfrak{H}": "ℌ", "\\mathbb{H}": "ℍ", "\\Planckconst": "ℎ", "\\hslash": "ℏ", "\\mathscr{I}": "ℐ", "\\mathfrak{I}": "ℑ", "\\mathscr{L}": "ℒ", "\\mathscr{l}": "ℓ", "\\mathbb{N}": "ℕ", "\\cyrchar\\textnumero": "№", "\\textcircledP": "℗", "\\wp": "℘", "\\mathbb{P}": "ℙ", "\\mathbb{Q}": "ℚ", "\\mathscr{R}": "ℛ", "\\mathfrak{R}": "ℜ", "\\mathbb{R}": "ℝ", "\\Elzxrat": "℞", "\\textservicemark": "℠", "\\texttrademark": "™", "\\mathbb{Z}": "ℤ", "\\mho": "℧", "\\mathfrak{Z}": "ℨ", "\\textriota": "℩", "\\Angstroem": "Å", "\\mathscr{B}": "ℬ", "\\mathfrak{C}": "ℭ", "\\textestimated": "℮", "\\mathscr{e}": "ℯ", "\\mathscr{E}": "ℰ", "\\mathscr{F}": "ℱ", "\\Finv": "Ⅎ", "\\mathscr{M}": "ℳ", "\\mathscr{o}": "ℴ", "\\aleph": "ℵ", "\\beth": "ℶ", "\\gimel": "ℷ", "\\daleth": "ℸ", "\\mathbb{\\pi}": "ℼ", "\\mathbb{\\gamma}": "ℽ", "\\mathbb{\\Gamma}": "ℾ", "\\mathbb{\\Pi}": "ℿ", "\\mathbb{\\Sigma}": "⅀", "\\Game": "⅁", "\\sansLturned": "⅂", "\\sansLmirrored": "⅃", "\\Yup": "⅄", "\\CapitalDifferentialD": "ⅅ", "\\DifferentialD": "ⅆ", "\\ExponetialE": "ⅇ", "\\ComplexI": "ⅈ", "\\ComplexJ": "ⅉ", "\\PropertyLine": "⅊", "\\invamp": "⅋", "\\frac{1}{7}": "⅐", "\\textfrac{1}{7}": "⅐", "\\frac{1}{9}": "⅑", "\\textfrac{1}{9}": "⅑", "\\frac{1}{10}": "⅒", "\\textfrac{1}{10}": "⅒", "\\frac{1}{3}": "⅓", "\\textfrac{1}{3}": "⅓", "\\frac{2}{3}": "⅔", "\\textfrac{2}{3}": "⅔", "\\frac{1}{5}": "⅕", "\\textfrac{1}{5}": "⅕", "\\frac{2}{5}": "⅖", "\\textfrac{2}{5}": "⅖", "\\frac{3}{5}": "⅗", "\\textfrac{3}{5}": "⅗", "\\frac{4}{5}": "⅘", "\\textfrac{4}{5}": "⅘", "\\frac{1}{6}": "⅙", "\\textfrac{1}{6}": "⅙", "\\frac{5}{6}": "⅚", "\\textfrac{5}{6}": "⅚", "\\frac{1}{8}": "⅛", "\\textfrac{1}{8}": "⅛", "\\frac{3}{8}": "⅜", "\\textfrac{3}{8}": "⅜", "\\frac{5}{8}": "⅝", "\\textfrac{5}{8}": "⅝", "\\frac{7}{8}": "⅞", "\\textfrac{7}{8}": "⅞", "\\frac{1}": "⅟", "\\textfrac{1}": "⅟", "\\frac{0}{3}": "↉", "\\textfrac{0}{3}": "↉", "\\leftarrow": "←", "\\uparrow": "↑", "\\textrightarrow": "→", "\\rightarrow": "→", "\\to": "→", "\\downarrow": "↓", "\\leftrightarrow": "↔", "\\updownarrow": "↕", "\\nwarrow": "↖", "\\nearrow": "↗", "\\searrow": "↘", "\\swarrow": "↙", "\\nleftarrow": "↚", "\\nrightarrow": "↛", "\\arrowwaveleft": "↜", "\\arrowwaveright": "↝", "\\twoheadleftarrow": "↞", "\\twoheaduparrow": "↟", "\\twoheadrightarrow": "↠", "\\twoheaddownarrow": "↡", "\\leftarrowtail": "↢", "\\rightarrowtail": "↣", "\\mapsfrom": "↤", "\\MapsUp": "↥", "\\mapsto": "↦", "\\MapsDown": "↧", "\\updownarrowbar": "↨", "\\hookleftarrow": "↩", "\\hookrightarrow": "↪", "\\looparrowleft": "↫", "\\looparrowright": "↬", "\\leftrightsquigarrow": "↭", "\\nleftrightarrow": "↮", "\\lightning": "↯", "\\Lsh": "↰", "\\Rsh": "↱", "\\dlsh": "↲", "\\reflectbox{\\carriagereturn}": "↳", "\\linefeed": "↴", "\\carriagereturn": "↵", "\\curvearrowleft": "↶", "\\curvearrowright": "↷", "\\barovernorthwestarrow": "↸", "\\barleftarrowrightarrowba": "↹", "\\circlearrowleft": "↺", "\\circlearrowright": "↻", "\\leftharpoonup": "↼", "\\leftharpoondown": "↽", "\\upharpoonright": "↾", "\\upharpoonleft": "↿", "\\rightharpoonup": "⇀", "\\rightharpoondown": "⇁", "\\downharpoonright": "⇂", "\\downharpoonleft": "⇃", "\\rightleftarrows": "⇄", "\\dblarrowupdown": "⇅", "\\leftrightarrows": "⇆", "\\leftleftarrows": "⇇", "\\upuparrows": "⇈", "\\rightrightarrows": "⇉", "\\downdownarrows": "⇊", "\\leftrightharpoons": "⇋", "\\rightleftharpoons": "⇌", "\\nLeftarrow": "⇍", "\\nLeftrightarrow": "⇎", "\\nRightarrow": "⇏", "\\Leftarrow": "⇐", "\\Uparrow": "⇑", "\\Rightarrow": "⇒", "\\Downarrow": "⇓", "\\Leftrightarrow": "⇔", "\\Updownarrow": "⇕", "\\Nwarrow": "⇖", "\\Nearrow": "⇗", "\\Searrow": "⇘", "\\Swarrow": "⇙", "\\Lleftarrow": "⇚", "\\Rrightarrow": "⇛", "\\leftsquigarrow": "⇜", "\\rightsquigarrow": "⇝", "\\nHuparrow": "⇞", "\\nHdownarrow": "⇟", "\\dashleftarrow": "⇠", "\\updasharrow": "⇡", "\\dashrightarrow": "⇢", "\\downdasharrow": "⇣", "\\LeftArrowBar": "⇤", "\\RightArrowBar": "⇥", "\\leftwhitearrow": "⇦", "\\upwhitearrow": "⇧", "\\rightwhitearrow": "⇨", "\\downwhitearrow": "⇩", "\\whitearrowupfrombar": "⇪", "\\circleonrightarrow": "⇴", "\\DownArrowUpArrow": "⇵", "\\rightthreearrows": "⇶", "\\nvleftarrow": "⇷", "\\pfun": "⇸", "\\nvleftrightarrow": "⇹", "\\nVleftarrow": "⇺", "\\ffun": "⇻", "\\nVleftrightarrow": "⇼", "\\leftarrowtriangle": "⇽", "\\rightarrowtriangle": "⇾", "\\leftrightarrowtriangle": "⇿", "\\forall": "∀", "\\complement": "∁", "\\partial": "∂", "\\exists": "∃", "\\nexists": "∄", "\\varnothing": "∅", "\\increment": "∆", "\\nabla": "∇", "\\in": "∈", "\\not\\in": "∉", "\\smallin": "∊", "\\ni": "∋", "\\not\\ni": "∌", "\\smallni": "∍", "\\QED": "∎", "\\prod": "∏", "\\coprod": "∐", "\\sum": "∑", "\\mp": "∓", "\\dotplus": "∔", "\\setminus": "∖", "{_\\ast}": "∗", "\\circ": "∘", "\\bullet": "∙", "\\surd": "√", "\\sqrt[3]": "∛", "\\sqrt[4]": "∜", "\\propto": "∝", "\\infty": "∞", "\\rightangle": "∟", "\\angle": "∠", "\\measuredangle": "∡", "\\sphericalangle": "∢", "\\mid": "∣", "\\nmid": "∤", "\\parallel": "∥", "\\nparallel": "∦", "\\wedge": "∧", "\\vee": "∨", "\\cap": "∩", "\\cup": "∪", "\\int": "∫", "{\\int\\!\\int}": "∬", "{\\int\\!\\int\\!\\int}": "∭", "\\oint": "∮", "\\surfintegral": "∯", "\\volintegral": "∰", "\\clwintegral": "∱", "\\lcirclerightint": "∲", "\\rcirclerightint": "∳", "\\therefore": "∴", "\\because": "∵", "\\Colon": "∷", "\\dotdiv": "∸", "\\eqcolon": "∹", "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}": "∺", "\\homothetic": "∻", "\\sim": "∼", "\\backsim": "∽", "\\lazysinv": "∾", "\\AC": "∿", "\\wr": "≀", "\\not\\sim": "≁", "\\texteqsim": "≂", "\\NotEqualTilde": "≂̸", "\\simeq": "≃", "\\not\\simeq": "≄", "\\cong": "≅", "\\approxnotequal": "≆", "\\not\\cong": "≇", "\\approx": "≈", "\\not\\approx": "≉", "\\approxeq": "≊", "\\tildetrpl": "≋", "\\not\\apid": "≋̸", "\\allequal": "≌", "\\asymp": "≍", "\\Bumpeq": "≎", "\\NotHumpDownHump": "≎̸", "\\bumpeq": "≏", "\\NotHumpEqual": "≏̸", "\\doteq": "≐", "\\not\\doteq": "≐̸", "\\doteqdot": "≑", "\\fallingdotseq": "≒", "\\risingdotseq": "≓", "\\coloneq": "≔", "\\eqcirc": "≖", "\\circeq": "≗", "\\arceq": "≘", "\\estimates": "≙", "\\starequal": "≛", "\\triangleq": "≜", "\\eqdef": "≝", "\\measeq": "≞", "\\neq": "≠", "\\equiv": "≡", "\\not\\equiv": "≢", "\\Equiv": "≣", "\\leq": "≤", "\\le": "≤", "\\geq": "≥", "\\leqq": "≦", "\\geqq": "≧", "\\lneqq": "≨", "\\lvertneqq": "≨︀", "\\gneqq": "≩", "\\gvertneqq": "≩︀", "\\ll": "≪", "\\NotLessLess": "≪̸", "\\gg": "≫", "\\NotGreaterGreater": "≫̸", "\\between": "≬", "{\\not\\kern-0.3em\\times}": "≭", "\\not<": "≮", "\\not>": "≯", "\\not\\leq": "≰", "\\not\\geq": "≱", "\\lessequivlnt": "≲", "\\greaterequivlnt": "≳", "\\lessgtr": "≶", "\\gtrless": "≷", "\\notlessgreater": "≸", "\\notgreaterless": "≹", "\\prec": "≺", "\\succ": "≻", "\\preccurlyeq": "≼", "\\succcurlyeq": "≽", "\\NotPrecedesTilde": "≾̸", "\\NotSucceedsTilde": "≿̸", "\\not\\prec": "⊀", "\\not\\succ": "⊁", "\\subset": "⊂", "\\supset": "⊃", "\\not\\subset": "⊄", "\\not\\supset": "⊅", "\\subseteq": "⊆", "\\supseteq": "⊇", "\\not\\subseteq": "⊈", "\\not\\supseteq": "⊉", "\\subsetneq": "⊊", "\\varsubsetneqq": "⊊︀", "\\supsetneq": "⊋", "\\varsupsetneq": "⊋︀", "\\cupleftarrow": "⊌", "\\cupdot": "⊍", "\\uplus": "⊎", "\\sqsubset": "⊏", "\\NotSquareSubset": "⊏̸", "\\sqsupset": "⊐", "\\NotSquareSuperset": "⊐̸", "\\sqsubseteq": "⊑", "\\sqsupseteq": "⊒", "\\sqcap": "⊓", "\\sqcup": "⊔", "\\oplus": "⊕", "\\ominus": "⊖", "\\otimes": "⊗", "\\oslash": "⊘", "\\odot": "⊙", "\\circledcirc": "⊚", "\\circledast": "⊛", "\\circledequal": "⊜", "\\circleddash": "⊝", "\\boxplus": "⊞", "\\boxminus": "⊟", "\\boxtimes": "⊠", "\\boxdot": "⊡", "\\vdash": "⊢", "\\dashv": "⊣", "\\top": "⊤", "\\assert": "⊦", "\\truestate": "⊧", "\\forcesextra": "⊨", "\\Vdash": "⊩", "\\Vvdash": "⊪", "\\VDash": "⊫", "\\nvdash": "⊬", "\\nvDash": "⊭", "\\nVdash": "⊮", "\\nVDash": "⊯", "\\prurel": "⊰", "\\scurel": "⊱", "\\vartriangleleft": "⊲", "\\vartriangleright": "⊳", "\\trianglelefteq": "⊴", "\\trianglerighteq": "⊵", "\\original": "⊶", "\\image": "⊷", "\\multimap": "⊸", "\\hermitconjmatrix": "⊹", "\\intercal": "⊺", "\\veebar": "⊻", "\\barvee": "⊽", "\\rightanglearc": "⊾", "\\varlrtriangle": "⊿", "\\bigcap": "⋂", "\\bigcup": "⋃", "\\diamond": "⋄", "\\cdot": "⋅", "\\star": "⋆", "\\divideontimes": "⋇", "\\bowtie": "⋈", "\\ltimes": "⋉", "\\rtimes": "⋊", "\\leftthreetimes": "⋋", "\\rightthreetimes": "⋌", "\\backsimeq": "⋍", "\\curlyvee": "⋎", "\\curlywedge": "⋏", "\\Subset": "⋐", "\\Supset": "⋑", "\\Cap": "⋒", "\\Cup": "⋓", "\\pitchfork": "⋔", "\\hash": "⋕", "\\lessdot": "⋖", "\\gtrdot": "⋗", "\\verymuchless": "⋘", "\\verymuchgreater": "⋙", "\\lesseqgtr": "⋚", "\\gtreqless": "⋛", "\\eqless": "⋜", "\\eqgtr": "⋝", "\\curlyeqprec": "⋞", "\\curlyeqsucc": "⋟", "\\npreceq": "⋠", "\\nsucceq": "⋡", "\\not\\sqsubseteq": "⋢", "\\not\\sqsupseteq": "⋣", "\\sqsubsetneq": "⋤", "\\Elzsqspne": "⋥", "\\lnsim": "⋦", "\\gnsim": "⋧", "\\precedesnotsimilar": "⋨", "\\succnsim": "⋩", "\\ntriangleleft": "⋪", "\\ntriangleright": "⋫", "\\ntrianglelefteq": "⋬", "\\ntrianglerighteq": "⋭", "\\vdots": "⋮", "\\cdots": "⋯", "\\upslopeellipsis": "⋰", "\\downslopeellipsis": "⋱", "\\disin": "⋲", "\\varisins": "⋳", "\\isins": "⋴", "\\isindot": "⋵", "\\barin": "⋶", "\\isinobar": "⋷", "\\isinvb": "⋸", "\\isinE": "⋹", "\\nisd": "⋺", "\\varnis": "⋻", "\\nis": "⋼", "\\varniobar": "⋽", "\\niobar": "⋾", "\\bagmember": "⋿", "\\diameter": "⌀", "\\house": "⌂", "\\barwedge": "⌅", "\\varbarwedge": "⌅", "\\perspcorrespond": "⌆", "\\lceil": "⌈", "\\rceil": "⌉", "\\lfloor": "⌊", "\\rfloor": "⌋", "\\invneg": "⌐", "\\wasylozenge": "⌑", "\\profline": "⌒", "\\profsurf": "⌓", "\\recorder": "⌕", "{\\mathchar\"2208}": "⌖", "\\viewdata": "⌗", "\\turnednot": "⌙", "\\ulcorner": "⌜", "\\urcorner": "⌝", "\\llcorner": "⌞", "\\lrcorner": "⌟", "\\inttop": "⌠", "\\intbottom": "⌡", "\\frown": "⌢", "\\smile": "⌣", "\\varhexagonlrbonds": "⌬", "\\conictaper": "⌲", "\\topbot": "⌶", "\\APLinv": "⌹", "\\notslash": "⌿", "\\notbackslash": "⍀", "\\APLleftarrowbox": "⍇", "\\APLrightarrowbox": "⍈", "\\invdiameter": "⍉", "\\APLuparrowbox": "⍐", "\\APLboxupcaret": "⍓", "\\APLdownarrowbox": "⍗", "\\APLcomment": "⍝", "\\APLinput": "⍞", "\\APLlog": "⍟", "\\APLboxquestion": "⍰", "\\rangledownzigzagarrow": "⍼", "\\hexagon": "⎔", "\\lparenuend": "⎛", "\\lparenextender": "⎜", "\\lparenlend": "⎝", "\\rparenuend": "⎞", "\\rparenextender": "⎟", "\\rparenlend": "⎠", "\\lbrackuend": "⎡", "\\lbrackextender": "⎢", "\\Elzdlcorn": "⎣", "\\rbrackuend": "⎤", "\\rbrackextender": "⎥", "\\rbracklend": "⎦", "\\lbraceuend": "⎧", "\\lbracemid": "⎨", "\\lbracelend": "⎩", "\\vbraceextender": "⎪", "\\rbraceuend": "⎫", "\\rbracemid": "⎬", "\\rbracelend": "⎭", "\\intextender": "⎮", "\\harrowextender": "⎯", "\\lmoustache": "⎰", "\\rmoustache": "⎱", "\\sumtop": "⎲", "\\sumbottom": "⎳", "\\overbracket": "⎴", "\\underbracket": "⎵", "\\bbrktbrk": "⎶", "\\sqrtbottom": "⎷", "\\lvboxline": "⎸", "\\rvboxline": "⎹", "\\varcarriagereturn": "⏎", "\\overparen": "⏜", "\\underparen": "⏝", "\\overbrace": "⏞", "\\underbrace": "⏟", "\\obrbrak": "⏠", "\\ubrbrak": "⏡", "\\trapezium": "⏢", "\\benzenr": "⏣", "\\strns": "⏤", "\\fltns": "⏥", "\\accurrent": "⏦", "\\elinters": "⏧", "\\textvisiblespace": "␣", "\\ding{172}": "①", "\\ding{173}": "②", "\\ding{174}": "③", "\\ding{175}": "④", "\\ding{176}": "⑤", "\\ding{177}": "⑥", "\\ding{178}": "⑦", "\\ding{179}": "⑧", "\\ding{180}": "⑨", "\\ding{181}": "⑩", "\\circledS": "Ⓢ", "\\Elzdshfnc": "┆", "\\Elzsqfnw": "┙", "\\diagup": "╱", "\\blockuphalf": "▀", "\\blocklowhalf": "▄", "\\blockfull": "█", "\\blocklefthalf": "▌", "\\blockrighthalf": "▐", "\\blockqtrshaded": "░", "\\blockhalfshaded": "▒", "\\blockthreeqtrshaded": "▓", "\\ding{110}": "■", "\\mdlgblksquare": "■", "\\square": "□", "\\Box": "□", "\\squoval": "▢", "\\blackinwhitesquare": "▣", "\\squarehfill": "▤", "\\squarevfill": "▥", "\\squarehvfill": "▦", "\\squarenwsefill": "▧", "\\squareneswfill": "▨", "\\squarecrossfill": "▩", "\\smwhtsquare": "▫", "\\hrectangleblack": "▬", "\\fbox{~~}": "▭", "\\vrectangleblack": "▮", "\\Elzvrecto": "▯", "\\parallelogramblack": "▰", "\\ding{115}": "▲", "\\bigblacktriangleup": "▲", "\\bigtriangleup": "△", "\\blacktriangle": "▴", "\\vartriangle": "▵", "\\RHD": "▶", "\\rhd": "▷", "\\blacktriangleright": "▸", "\\triangleright": "▹", "\\blackpointerright": "►", "\\whitepointerright": "▻", "\\ding{116}": "▼", "\\bigblacktriangledown": "▼", "\\bigtriangledown": "▽", "\\blacktriangledown": "▾", "\\triangledown": "▿", "\\LHD": "◀", "\\lhd": "◁", "\\blacktriangleleft": "◂", "\\triangleleft": "◃", "\\blackpointerleft": "◄", "\\whitepointerleft": "◅", "\\ding{117}": "◆", "\\Diamondblack": "◆", "\\Diamond": "◇", "\\blackinwhitediamond": "◈", "\\fisheye": "◉", "\\lozenge": "◊", "\\dottedcircle": "◌", "\\circlevertfill": "◍", "\\bullseye": "◎", "\\ding{108}": "●", "\\CIRCLE": "●", "\\Elzcirfl": "◐", "\\Elzcirfr": "◑", "\\Elzcirfb": "◒", "\\circletophalfblack": "◓", "\\circleurquadblack": "◔", "\\blackcircleulquadwhite": "◕", "\\LEFTCIRCLE": "◖", "\\ding{119}": "◗", "\\RIGHTCIRCLE": "◗", "\\Elzrvbull": "◘", "\\inversewhitecircle": "◙", "\\invwhiteupperhalfcircle": "◚", "\\invwhitelowerhalfcircle": "◛", "\\ularc": "◜", "\\urarc": "◝", "\\lrarc": "◞", "\\llarc": "◟", "\\topsemicircle": "◠", "\\botsemicircle": "◡", "\\lrblacktriangle": "◢", "\\llblacktriangle": "◣", "\\ulblacktriangle": "◤", "\\urblacktriangle": "◥", "\\smwhtcircle": "◦", "\\Elzsqfl": "◧", "\\Elzsqfr": "◨", "\\squareulblack": "◩", "\\Elzsqfse": "◪", "\\boxbar": "◫", "\\trianglecdot": "◬", "\\triangleleftblack": "◭", "\\trianglerightblack": "◮", "\\bigcirc": "◯", "\\squareulquad": "◰", "\\squarellquad": "◱", "\\squarelrquad": "◲", "\\squareurquad": "◳", "\\circleulquad": "◴", "\\circlellquad": "◵", "\\circlelrquad": "◶", "\\circleurquad": "◷", "\\ultriangle": "◸", "\\urtriangle": "◹", "\\lltriangle": "◺", "\\mdsmwhtsquare": "◽", "\\mdsmblksquare": "◾", "\\lrtriangle": "◿", "\\ding{72}": "★", "\\bigstar": "★", "\\ding{73}": "☆", "\\bigwhitestar": "☆", "\\Sun": "☉", "\\ding{37}": "☎", "\\Square": "☐", "\\CheckedBox": "☑", "\\XBox": "☒", "\\steaming": "☕", "\\ding{42}": "☛", "\\ding{43}": "☞", "\\pointright": "☞", "\\skull": "☠", "\\danger": "☡", "\\radiation": "☢", "\\biohazard": "☣", "\\yinyang": "☯", "\\frownie": "☹", "\\smiley": "☺", "\\blacksmiley": "☻", "\\sun": "☼", "\\rightmoon": "☽", "\\leftmoon": "☾", "\\mercury": "☿", "\\venus": "♀", "\\female": "♀", "\\earth": "♁", "\\male": "♂", "\\jupiter": "♃", "\\saturn": "♄", "\\uranus": "♅", "\\neptune": "♆", "\\pluto": "♇", "\\aries": "♈", "\\taurus": "♉", "\\gemini": "♊", "\\cancer": "♋", "\\leo": "♌", "\\virgo": "♍", "\\libra": "♎", "\\scorpio": "♏", "\\sagittarius": "♐", "\\capricornus": "♑", "\\aquarius": "♒", "\\pisces": "♓", "\\ding{171}": "♠", "\\spadesuit": "♠", "\\heartsuit": "♡", "\\ding{168}": "♣", "\\clubsuit": "♣", "\\varspadesuit": "♤", "\\ding{170}": "♥", "\\varheartsuit": "♥", "\\ding{169}": "♦", "\\vardiamondsuit": "♦", "\\varclubsuit": "♧", "\\quarternote": "♩", "\\eighthnote": "♪", "\\twonotes": "♫", "\\sixteenthnote": "♬", "\\flat": "♭", "\\natural": "♮", "\\sharp": "♯", "\\recycle": "♻", "\\acidfree": "♾", "\\dicei": "⚀", "\\diceii": "⚁", "\\diceiii": "⚂", "\\diceiv": "⚃", "\\dicev": "⚄", "\\dicevi": "⚅", "\\circledrightdot": "⚆", "\\circledtwodots": "⚇", "\\blackcircledrightdot": "⚈", "\\blackcircledtwodots": "⚉", "\\anchor": "⚓", "\\swords": "⚔", "\\warning": "⚠", "\\Hermaphrodite": "⚥", "\\medcirc": "⚪", "\\medbullet": "⚫", "\\mdsmwhtcircle": "⚬", "\\neuter": "⚲", "\\ding{33}": "✁", "\\ding{34}": "✂", "\\ding{35}": "✃", "\\ding{36}": "✄", "\\ding{38}": "✆", "\\ding{39}": "✇", "\\ding{40}": "✈", "\\ding{41}": "✉", "\\ding{44}": "✌", "\\ding{45}": "✍", "\\ding{46}": "✎", "\\pencil": "✎", "\\ding{47}": "✏", "\\ding{48}": "✐", "\\ding{49}": "✑", "\\ding{50}": "✒", "\\ding{51}": "✓", "\\checkmark": "✓", "\\ding{52}": "✔", "\\ding{53}": "✕", "\\ding{54}": "✖", "\\ding{55}": "✗", "\\ballotx": "✗", "\\ding{56}": "✘", "\\ding{57}": "✙", "\\ding{58}": "✚", "\\ding{59}": "✛", "\\ding{60}": "✜", "\\ding{61}": "✝", "\\ding{62}": "✞", "\\ding{63}": "✟", "\\ding{64}": "✠", "\\maltese": "✠", "\\ding{65}": "✡", "\\ding{66}": "✢", "\\ding{67}": "✣", "\\ding{68}": "✤", "\\ding{69}": "✥", "\\ding{70}": "✦", "\\ding{71}": "✧", "\\ding{74}": "✪", "\\circledstar": "✪", "\\ding{75}": "✫", "\\ding{76}": "✬", "\\ding{77}": "✭", "\\ding{78}": "✮", "\\ding{79}": "✯", "\\ding{80}": "✰", "\\ding{81}": "✱", "\\ding{82}": "✲", "\\ding{83}": "✳", "\\ding{84}": "✴", "\\ding{85}": "✵", "\\ding{86}": "✶", "\\varstar": "✶", "\\ding{87}": "✷", "\\ding{88}": "✸", "\\ding{89}": "✹", "\\ding{90}": "✺", "\\ding{91}": "✻", "\\ding{92}": "✼", "\\ding{93}": "✽", "\\dingasterisk": "✽", "\\ding{94}": "✾", "\\ding{95}": "✿", "\\ding{96}": "❀", "\\ding{97}": "❁", "\\ding{98}": "❂", "\\ding{99}": "❃", "\\ding{100}": "❄", "\\ding{101}": "❅", "\\ding{102}": "❆", "\\ding{103}": "❇", "\\ding{104}": "❈", "\\ding{105}": "❉", "\\ding{106}": "❊", "\\ding{107}": "❋", "\\ding{109}": "❍", "\\ding{111}": "❏", "\\ding{112}": "❐", "\\ding{113}": "❑", "\\ding{114}": "❒", "\\ding{118}": "❖", "\\ding{120}": "❘", "\\ding{121}": "❙", "\\ding{122}": "❚", "\\ding{123}": "❛", "\\ding{124}": "❜", "\\ding{125}": "❝", "\\ding{126}": "❞", "\\ding{161}": "❡", "\\ding{162}": "❢", "\\ding{163}": "❣", "\\ding{164}": "❤", "\\ding{165}": "❥", "\\ding{166}": "❦", "\\ding{167}": "❧", "\\ding{182}": "❶", "\\ding{183}": "❷", "\\ding{184}": "❸", "\\ding{185}": "❹", "\\ding{186}": "❺", "\\ding{187}": "❻", "\\ding{188}": "❼", "\\ding{189}": "❽", "\\ding{190}": "❾", "\\ding{191}": "❿", "\\ding{192}": "➀", "\\ding{193}": "➁", "\\ding{194}": "➂", "\\ding{195}": "➃", "\\ding{196}": "➄", "\\ding{197}": "➅", "\\ding{198}": "➆", "\\ding{199}": "➇", "\\ding{200}": "➈", "\\ding{201}": "➉", "\\ding{202}": "➊", "\\ding{203}": "➋", "\\ding{204}": "➌", "\\ding{205}": "➍", "\\ding{206}": "➎", "\\ding{207}": "➏", "\\ding{208}": "➐", "\\ding{209}": "➑", "\\ding{210}": "➒", "\\ding{211}": "➓", "\\ding{212}": "➔", "\\ding{216}": "➘", "\\ding{217}": "➙", "\\ding{218}": "➚", "\\ding{219}": "➛", "\\draftingarrow": "➛", "\\ding{220}": "➜", "\\ding{221}": "➝", "\\ding{222}": "➞", "\\ding{223}": "➟", "\\ding{224}": "➠", "\\ding{225}": "➡", "\\ding{226}": "➢", "\\arrowbullet": "➢", "\\ding{227}": "➣", "\\ding{228}": "➤", "\\ding{229}": "➥", "\\ding{230}": "➦", "\\ding{231}": "➧", "\\ding{232}": "➨", "\\ding{233}": "➩", "\\ding{234}": "➪", "\\ding{235}": "➫", "\\ding{236}": "➬", "\\ding{237}": "➭", "\\ding{238}": "➮", "\\ding{239}": "➯", "\\ding{241}": "➱", "\\ding{242}": "➲", "\\ding{243}": "➳", "\\ding{244}": "➴", "\\ding{245}": "➵", "\\ding{246}": "➶", "\\ding{247}": "➷", "\\ding{248}": "➸", "\\ding{249}": "➹", "\\ding{250}": "➺", "\\ding{251}": "➻", "\\ding{252}": "➼", "\\ding{253}": "➽", "\\ding{254}": "➾", "\\threedangle": "⟀", "\\whiteinwhitetriangle": "⟁", "\\perp": "⟂", "\\subsetcirc": "⟃", "\\supsetcirc": "⟄", "\\Lbag": "⟅", "\\Rbag": "⟆", "\\veedot": "⟇", "\\bsolhsub": "⟈", "\\suphsol": "⟉", "\\longdivision": "⟌", "\\Diamonddot": "⟐", "\\wedgedot": "⟑", "\\upin": "⟒", "\\pullback": "⟓", "\\pushout": "⟔", "\\leftouterjoin": "⟕", "\\rightouterjoin": "⟖", "\\fullouterjoin": "⟗", "\\bigbot": "⟘", "\\bigtop": "⟙", "\\DashVDash": "⟚", "\\dashVdash": "⟛", "\\multimapinv": "⟜", "\\vlongdash": "⟝", "\\longdashv": "⟞", "\\cirbot": "⟟", "\\lozengeminus": "⟠", "\\concavediamond": "⟡", "\\concavediamondtickleft": "⟢", "\\concavediamondtickright": "⟣", "\\whitesquaretickleft": "⟤", "\\whitesquaretickright": "⟥", "\\llbracket": "⟦", "\\rrbracket": "⟧", "\\langle": "⟨", "\\rangle": "⟩", "\\lang": "⟪", "\\rang": "⟫", "\\Lbrbrak": "⟬", "\\Rbrbrak": "⟭", "\\lgroup": "⟮", "\\rgroup": "⟯", "\\UUparrow": "⟰", "\\DDownarrow": "⟱", "\\acwgapcirclearrow": "⟲", "\\cwgapcirclearrow": "⟳", "\\rightarrowonoplus": "⟴", "\\longleftarrow": "⟵", "\\longrightarrow": "⟶", "\\longleftrightarrow": "⟷", "\\Longleftarrow": "⟸", "\\Longrightarrow": "⟹", "\\Longleftrightarrow": "⟺", "\\longmapsfrom": "⟻", "\\longmapsto": "⟼", "\\Longmapsfrom": "⟽", "\\Longmapsto": "⟾", "\\sim\\joinrel\\leadsto": "⟿", "\\psur": "⤀", "\\nVtwoheadrightarrow": "⤁", "\\nvLeftarrow": "⤂", "\\nvRightarrow": "⤃", "\\nvLeftrightarrow": "⤄", "\\Mapsfrom": "⤆", "\\Mapsto": "⤇", "\\downarrowbarred": "⤈", "\\uparrowbarred": "⤉", "\\Uuparrow": "⤊", "\\Ddownarrow": "⤋", "\\leftbkarrow": "⤌", "\\rightbkarrow": "⤍", "\\leftdbkarrow": "⤎", "\\dbkarow": "⤏", "\\drbkarow": "⤐", "\\rightdotarrow": "⤑", "\\UpArrowBar": "⤒", "\\DownArrowBar": "⤓", "\\pinj": "⤔", "\\finj": "⤕", "\\bij": "⤖", "\\nvtwoheadrightarrowtail": "⤗", "\\nVtwoheadrightarrowtail": "⤘", "\\lefttail": "⤙", "\\righttail": "⤚", "\\leftdbltail": "⤛", "\\rightdbltail": "⤜", "\\diamondleftarrow": "⤝", "\\rightarrowdiamond": "⤞", "\\diamondleftarrowbar": "⤟", "\\barrightarrowdiamond": "⤠", "\\nwsearrow": "⤡", "\\neswarrow": "⤢", "\\rdiagovfdiag": "⤫", "\\fdiagovrdiag": "⤬", "\\seovnearrow": "⤭", "\\neovsearrow": "⤮", "\\fdiagovnearrow": "⤯", "\\rdiagovsearrow": "⤰", "\\neovnwarrow": "⤱", "\\nwovnearrow": "⤲", "\\uprightcurvearrow": "⤴", "\\downrightcurvedarrow": "⤵", "\\cwrightarcarrow": "⤸", "\\acwleftarcarrow": "⤹", "\\acwoverarcarrow": "⤺", "\\acwunderarcarrow": "⤻", "\\curvearrowrightminus": "⤼", "\\curvearrowleftplus": "⤽", "\\cwundercurvearrow": "⤾", "\\ccwundercurvearrow": "⤿", "\\Elolarr": "⥀", "\\Elorarr": "⥁", "\\ElzRlarr": "⥂", "\\leftarrowshortrightarrow": "⥃", "\\ElzrLarr": "⥄", "\\rightarrowplus": "⥅", "\\leftarrowplus": "⥆", "\\Elzrarrx": "⥇", "\\leftrightarrowcircle": "⥈", "\\twoheaduparrowcircle": "⥉", "\\leftrightharpoon": "⥊", "\\rightleftharpoon": "⥋", "\\updownharpoonrightleft": "⥌", "\\updownharpoonleftright": "⥍", "\\LeftRightVector": "⥎", "\\RightUpDownVector": "⥏", "\\DownLeftRightVector": "⥐", "\\LeftUpDownVector": "⥑", "\\LeftVectorBar": "⥒", "\\RightVectorBar": "⥓", "\\RightUpVectorBar": "⥔", "\\RightDownVectorBar": "⥕", "\\DownLeftVectorBar": "⥖", "\\DownRightVectorBar": "⥗", "\\LeftUpVectorBar": "⥘", "\\LeftDownVectorBar": "⥙", "\\LeftTeeVector": "⥚", "\\RightTeeVector": "⥛", "\\RightUpTeeVector": "⥜", "\\RightDownTeeVector": "⥝", "\\DownLeftTeeVector": "⥞", "\\DownRightTeeVector": "⥟", "\\LeftUpTeeVector": "⥠", "\\LeftDownTeeVector": "⥡", "\\leftleftharpoons": "⥢", "\\upupharpoons": "⥣", "\\rightrightharpoons": "⥤", "\\downdownharpoons": "⥥", "\\leftrightharpoonsup": "⥦", "\\leftrightharpoonsdown": "⥧", "\\rightleftharpoonsup": "⥨", "\\rightleftharpoonsdown": "⥩", "\\leftbarharpoon": "⥪", "\\barleftharpoon": "⥫", "\\rightbarharpoon": "⥬", "\\barrightharpoon": "⥭", "\\UpEquilibrium": "⥮", "\\ReverseUpEquilibrium": "⥯", "\\RoundImplies": "⥰", "\\equalrightarrow": "⥱", "\\similarrightarrow": "⥲", "\\leftarrowsimilar": "⥳", "\\rightarrowsimilar": "⥴", "\\rightarrowapprox": "⥵", "\\ltlarr": "⥶", "\\leftarrowless": "⥷", "\\gtrarr": "⥸", "\\subrarr": "⥹", "\\leftarrowsubset": "⥺", "\\suplarr": "⥻", "\\upfishtail": "⥾", "\\downfishtail": "⥿", "\\Elztfnc": "⦀", "\\spot": "⦁", "\\typecolon": "⦂", "\\lBrace": "⦃", "\\rBrace": "⦄", "\\Elroang": "⦆", "\\limg": "⦇", "\\rimg": "⦈", "\\lblot": "⦉", "\\rblot": "⦊", "\\lbrackubar": "⦋", "\\rbrackubar": "⦌", "\\lbrackultick": "⦍", "\\rbracklrtick": "⦎", "\\lbracklltick": "⦏", "\\rbrackurtick": "⦐", "\\langledot": "⦑", "\\rangledot": "⦒", "<\\kern-0.58em(": "⦓", "\\Lparengtr": "⦕", "\\Rparenless": "⦖", "\\lblkbrbrak": "⦗", "\\rblkbrbrak": "⦘", "\\Elzddfnc": "⦙", "\\vzigzag": "⦚", "\\measuredangleleft": "⦛", "\\Angle": "⦜", "\\rightanglemdot": "⦝", "\\angles": "⦞", "\\angdnr": "⦟", "\\Elzlpargt": "⦠", "\\sphericalangleup": "⦡", "\\turnangle": "⦢", "\\revangle": "⦣", "\\angleubar": "⦤", "\\revangleubar": "⦥", "\\wideangledown": "⦦", "\\wideangleup": "⦧", "\\measanglerutone": "⦨", "\\measanglelutonw": "⦩", "\\measanglerdtose": "⦪", "\\measangleldtosw": "⦫", "\\measangleurtone": "⦬", "\\measangleultonw": "⦭", "\\measangledrtose": "⦮", "\\measangledltosw": "⦯", "\\revemptyset": "⦰", "\\emptysetobar": "⦱", "\\emptysetocirc": "⦲", "\\emptysetoarr": "⦳", "\\emptysetoarrl": "⦴", "\\circledparallel": "⦷", "\\circledbslash": "⦸", "\\operp": "⦹", "\\obot": "⦺", "\\olcross": "⦻", "\\odotslashdot": "⦼", "\\uparrowoncircle": "⦽", "\\circledwhitebullet": "⦾", "\\circledbullet": "⦿", "\\circledless": "⧀", "\\circledgtr": "⧁", "\\cirscir": "⧂", "\\cirE": "⧃", "\\boxslash": "⧄", "\\boxbslash": "⧅", "\\boxast": "⧆", "\\boxcircle": "⧇", "\\boxbox": "⧈", "\\boxonbox": "⧉", "\\ElzLap": "⧊", "\\Elzdefas": "⧋", "\\triangles": "⧌", "\\triangleserifs": "⧍", "\\rtriltri": "⧎", "\\LeftTriangleBar": "⧏", "\\NotLeftTriangleBar": "⧏̸", "\\RightTriangleBar": "⧐", "\\NotRightTriangleBar": "⧐̸", "\\lfbowtie": "⧑", "\\rfbowtie": "⧒", "\\fbowtie": "⧓", "\\lftimes": "⧔", "\\rftimes": "⧕", "\\hourglass": "⧖", "\\blackhourglass": "⧗", "\\lvzigzag": "⧘", "\\rvzigzag": "⧙", "\\Lvzigzag": "⧚", "\\Rvzigzag": "⧛", "\\tieinfty": "⧝", "\\nvinfty": "⧞", "\\multimapboth": "⧟", "\\laplac": "⧠", "\\lrtriangleeq": "⧡", "\\shuffle": "⧢", "\\eparsl": "⧣", "\\smeparsl": "⧤", "\\eqvparsl": "⧥", "\\gleichstark": "⧦", "\\thermod": "⧧", "\\downtriangleleftblack": "⧨", "\\downtrianglerightblack": "⧩", "\\blackdiamonddownarrow": "⧪", "\\blacklozenge": "⧫", "\\circledownarrow": "⧬", "\\blackcircledownarrow": "⧭", "\\errbarsquare": "⧮", "\\errbarblacksquare": "⧯", "\\errbardiamond": "⧰", "\\errbarblackdiamond": "⧱", "\\errbarcircle": "⧲", "\\errbarblackcircle": "⧳", "\\RuleDelayed": "⧴", "\\dsol": "⧶", "\\rsolbar": "⧷", "\\xsol": "⧸", "\\zhide": "⧹", "\\doubleplus": "⧺", "\\tripleplus": "⧻", "\\lcurvyangle": "⧼", "\\rcurvyangle": "⧽", "\\tplus": "⧾", "\\tminus": "⧿", "\\bigodot": "⨀", "\\bigoplus": "⨁", "\\bigotimes": "⨂", "\\bigcupdot": "⨃", "\\Elxuplus": "⨄", "\\ElzThr": "⨅", "\\Elxsqcup": "⨆", "\\ElzInf": "⨇", "\\ElzSup": "⨈", "\\varprod": "⨉", "\\modtwosum": "⨊", "\\sumint": "⨋", "\\iiiint": "⨌", "\\ElzCint": "⨍", "\\intBar": "⨎", "\\clockoint": "⨏", "\\awint": "⨑", "\\rppolint": "⨒", "\\scpolint": "⨓", "\\npolint": "⨔", "\\pointint": "⨕", "\\sqrint": "⨖", "\\intlarhk": "⨗", "\\intx": "⨘", "\\intcap": "⨙", "\\intcup": "⨚", "\\upint": "⨛", "\\lowint": "⨜", "\\Join": "⨝", "\\bigtriangleleft": "⨞", "\\zcmp": "⨟", "\\zpipe": "⨠", "\\zproject": "⨡", "\\ringplus": "⨢", "\\plushat": "⨣", "\\simplus": "⨤", "\\plussim": "⨦", "\\plussubtwo": "⨧", "\\plustrif": "⨨", "\\commaminus": "⨩", "\\minusfdots": "⨫", "\\minusrdots": "⨬", "\\ElzTimes": "⨯", "\\dottimes": "⨰", "\\timesbar": "⨱", "\\btimes": "⨲", "\\smashtimes": "⨳", "\\otimeshat": "⨶", "\\Otimes": "⨷", "\\odiv": "⨸", "\\triangleplus": "⨹", "\\triangleminus": "⨺", "\\triangletimes": "⨻", "\\intprodr": "⨽", "\\fcmp": "⨾", "\\amalg": "⨿", "\\capdot": "⩀", "\\uminus": "⩁", "\\barcup": "⩂", "\\barcap": "⩃", "\\capwedge": "⩄", "\\cupvee": "⩅", "\\cupovercap": "⩆", "\\capovercup": "⩇", "\\cupbarcap": "⩈", "\\capbarcup": "⩉", "\\twocups": "⩊", "\\twocaps": "⩋", "\\closedvarcup": "⩌", "\\closedvarcap": "⩍", "\\Sqcap": "⩎", "\\Sqcup": "⩏", "\\closedvarcupsmashprod": "⩐", "\\wedgeodot": "⩑", "\\veeodot": "⩒", "\\ElzAnd": "⩓", "\\ElzOr": "⩔", "\\ElOr": "⩖", "\\bigslopedvee": "⩗", "\\bigslopedwedge": "⩘", "\\veeonwedge": "⩙", "\\wedgemidvert": "⩚", "\\veemidvert": "⩛", "\\midbarwedge": "⩜", "\\midbarvee": "⩝", "\\Elzminhat": "⩟", "\\wedgedoublebar": "⩠", "\\varveebar": "⩡", "\\doublebarvee": "⩢", "\\dsub": "⩤", "\\rsub": "⩥", "\\eqdot": "⩦", "\\dotequiv": "⩧", "\\equivVert": "⩨", "\\equivVvert": "⩩", "\\dotsim": "⩪", "\\simrdots": "⩫", "\\simminussim": "⩬", "\\congdot": "⩭", "\\stackrel{*}{=}": "⩮", "\\hatapprox": "⩯", "\\approxeqq": "⩰", "\\eqqplus": "⩱", "\\pluseqq": "⩲", "\\eqqsim": "⩳", "\\Coloneqq": "⩴", "\\Equal": "⩵", "\\Same": "⩶", "\\ddotseq": "⩷", "\\equivDD": "⩸", "\\ltcir": "⩹", "\\gtcir": "⩺", "\\ltquest": "⩻", "\\gtquest": "⩼", "\\leqslant": "⩽", "\\nleqslant": "⩽̸", "\\geqslant": "⩾", "\\ngeqslant": "⩾̸", "\\lesdot": "⩿", "\\gesdot": "⪀", "\\lesdoto": "⪁", "\\gesdoto": "⪂", "\\lesdotor": "⪃", "\\gesdotol": "⪄", "\\lessapprox": "⪅", "\\gtrapprox": "⪆", "\\lneq": "⪇", "\\gneq": "⪈", "\\lnapprox": "⪉", "\\gnapprox": "⪊", "\\lesseqqgtr": "⪋", "\\gtreqqless": "⪌", "\\lsime": "⪍", "\\gsime": "⪎", "\\lsimg": "⪏", "\\gsiml": "⪐", "\\lgE": "⪑", "\\glE": "⪒", "\\lesges": "⪓", "\\gesles": "⪔", "\\eqslantless": "⪕", "\\eqslantgtr": "⪖", "\\elsdot": "⪗", "\\egsdot": "⪘", "\\eqqless": "⪙", "\\eqqgtr": "⪚", "\\eqqslantless": "⪛", "\\eqqslantgtr": "⪜", "\\Pisymbol{ppi020}{117}": "⪝", "\\Pisymbol{ppi020}{105}": "⪞", "\\simlE": "⪟", "\\simgE": "⪠", "\\NestedLessLess": "⪡", "\\NotNestedLessLess": "⪡̸", "\\NestedGreaterGreater": "⪢", "\\NotNestedGreaterGreater": "⪢̸", "\\partialmeetcontraction": "⪣", "\\glj": "⪤", "\\gla": "⪥", "\\leftslice": "⪦", "\\rightslice": "⪧", "\\lescc": "⪨", "\\gescc": "⪩", "\\smt": "⪪", "\\lat": "⪫", "\\smte": "⪬", "\\late": "⪭", "\\bumpeqq": "⪮", "\\preceq": "⪯", "\\not\\preceq": "⪯̸", "\\succeq": "⪰", "\\not\\succeq": "⪰̸", "\\precneq": "⪱", "\\succneq": "⪲", "\\preceqq": "⪳", "\\succeqq": "⪴", "\\precneqq": "⪵", "\\succneqq": "⪶", "\\precapprox": "⪷", "\\succapprox": "⪸", "\\precnapprox": "⪹", "\\succnapprox": "⪺", "\\llcurly": "⪻", "\\ggcurly": "⪼", "\\subsetdot": "⪽", "\\supsetdot": "⪾", "\\subsetplus": "⪿", "\\supsetplus": "⫀", "\\submult": "⫁", "\\supmult": "⫂", "\\subedot": "⫃", "\\supedot": "⫄", "\\subseteqq": "⫅", "\\nsubseteqq": "⫅̸", "\\supseteqq": "⫆", "\\nsupseteqq": "⫆̸", "\\subsim": "⫇", "\\supsim": "⫈", "\\subsetapprox": "⫉", "\\supsetapprox": "⫊", "\\subsetneqq": "⫋", "\\supsetneqq": "⫌", "\\lsqhook": "⫍", "\\rsqhook": "⫎", "\\csub": "⫏", "\\csup": "⫐", "\\csube": "⫑", "\\csupe": "⫒", "\\subsup": "⫓", "\\supsub": "⫔", "\\subsub": "⫕", "\\supsup": "⫖", "\\suphsub": "⫗", "\\supdsub": "⫘", "\\forkv": "⫙", "\\topfork": "⫚", "\\mlcp": "⫛", "\\forks": "⫝̸", "\\forksnot": "⫝", "\\shortlefttack": "⫞", "\\shortdowntack": "⫟", "\\shortuptack": "⫠", "\\perps": "⫡", "\\vDdash": "⫢", "\\dashV": "⫣", "\\Dashv": "⫤", "\\DashV": "⫥", "\\varVdash": "⫦", "\\Barv": "⫧", "\\vBar": "⫨", "\\vBarv": "⫩", "\\Top": "⫪", "\\Not": "⫬", "\\bNot": "⫭", "\\revnmid": "⫮", "\\cirmid": "⫯", "\\midcir": "⫰", "\\topcir": "⫱", "\\nhpar": "⫲", "\\parsim": "⫳", "\\interleave": "⫴", "\\nhVvert": "⫵", "\\Elztdcol": "⫶", "\\lllnest": "⫷", "\\gggnest": "⫸", "\\leqqslant": "⫹", "\\geqqslant": "⫺", "\\trslash": "⫻", "\\biginterleave": "⫼", "{{/}\\!\\!{/}}": "⫽", "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}": "⫽⃥", "\\talloblong": "⫾", "\\bigtalloblong": "⫿", "\\squaretopblack": "⬒", "\\squarebotblack": "⬓", "\\squareurblack": "⬔", "\\squarellblack": "⬕", "\\diamondleftblack": "⬖", "\\diamondrightblack": "⬗", "\\diamondtopblack": "⬘", "\\diamondbotblack": "⬙", "\\dottedsquare": "⬚", "\\blacksquare": "⬛", "\\vysmblksquare": "⬝", "\\vysmwhtsquare": "⬞", "\\pentagonblack": "⬟", "\\pentagon": "⬠", "\\varhexagon": "⬡", "\\varhexagonblack": "⬢", "\\hexagonblack": "⬣", "\\lgblkcircle": "⬤", "\\mdblkdiamond": "⬥", "\\mdwhtdiamond": "⬦", "\\mdblklozenge": "⬧", "\\mdwhtlozenge": "⬨", "\\smblkdiamond": "⬩", "\\smblklozenge": "⬪", "\\smwhtlozenge": "⬫", "\\blkhorzoval": "⬬", "\\whthorzoval": "⬭", "\\blkvertoval": "⬮", "\\whtvertoval": "⬯", "\\circleonleftarrow": "⬰", "\\leftthreearrows": "⬱", "\\leftarrowonoplus": "⬲", "\\longleftsquigarrow": "⬳", "\\nvtwoheadleftarrow": "⬴", "\\nVtwoheadleftarrow": "⬵", "\\twoheadmapsfrom": "⬶", "\\twoheadleftdbkarrow": "⬷", "\\leftdotarrow": "⬸", "\\nvleftarrowtail": "⬹", "\\nVleftarrowtail": "⬺", "\\twoheadleftarrowtail": "⬻", "\\nvtwoheadleftarrowtail": "⬼", "\\nVtwoheadleftarrowtail": "⬽", "\\leftarrowx": "⬾", "\\leftcurvedarrow": "⬿", "\\equalleftarrow": "⭀", "\\bsimilarleftarrow": "⭁", "\\leftarrowbackapprox": "⭂", "\\rightarrowgtr": "⭃", "\\rightarrowsupset": "⭄", "\\LLeftarrow": "⭅", "\\RRightarrow": "⭆", "\\bsimilarrightarrow": "⭇", "\\rightarrowbackapprox": "⭈", "\\similarleftarrow": "⭉", "\\leftarrowapprox": "⭊", "\\leftarrowbsimilar": "⭋", "\\rightarrowbsimilar": "⭌", "\\medwhitestar": "⭐", "\\medblackstar": "⭑", "\\smwhitestar": "⭒", "\\rightpentagonblack": "⭓", "\\rightpentagon": "⭔", "\\postalmark": "〒", "\\lbrbrak": "〔", "\\rbrbrak": "〕", "\\openbracketleft": "〚", "\\openbracketright": "〛", "\\hzigzag": "〰", "\\dbend": "�", "\\mathbf{A}": "𝐀", "\\mathbf{B}": "𝐁", "\\mathbf{C}": "𝐂", "\\mathbf{D}": "𝐃", "\\mathbf{E}": "𝐄", "\\mathbf{F}": "𝐅", "\\mathbf{G}": "𝐆", "\\mathbf{H}": "𝐇", "\\mathbf{I}": "𝐈", "\\mathbf{J}": "𝐉", "\\mathbf{K}": "𝐊", "\\mathbf{L}": "𝐋", "\\mathbf{M}": "𝐌", "\\mathbf{N}": "𝐍", "\\mathbf{O}": "𝐎", "\\mathbf{P}": "𝐏", "\\mathbf{Q}": "𝐐", "\\mathbf{R}": "𝐑", "\\mathbf{S}": "𝐒", "\\mathbf{T}": "𝐓", "\\mathbf{U}": "𝐔", "\\mathbf{V}": "𝐕", "\\mathbf{W}": "𝐖", "\\mathbf{X}": "𝐗", "\\mathbf{Y}": "𝐘", "\\mathbf{Z}": "𝐙", "\\mathbf{a}": "𝐚", "\\mathbf{b}": "𝐛", "\\mathbf{c}": "𝐜", "\\mathbf{d}": "𝐝", "\\mathbf{e}": "𝐞", "\\mathbf{f}": "𝐟", "\\mathbf{g}": "𝐠", "\\mathbf{h}": "𝐡", "\\mathbf{i}": "𝐢", "\\mathbf{j}": "𝐣", "\\mathbf{k}": "𝐤", "\\mathbf{l}": "𝐥", "\\mathbf{m}": "𝐦", "\\mathbf{n}": "𝐧", "\\mathbf{o}": "𝐨", "\\mathbf{p}": "𝐩", "\\mathbf{q}": "𝐪", "\\mathbf{r}": "𝐫", "\\mathbf{s}": "𝐬", "\\mathbf{t}": "𝐭", "\\mathbf{u}": "𝐮", "\\mathbf{v}": "𝐯", "\\mathbf{w}": "𝐰", "\\mathbf{x}": "𝐱", "\\mathbf{y}": "𝐲", "\\mathbf{z}": "𝐳", "\\mathsl{A}": "𝐴", "\\mathsl{B}": "𝐵", "\\mathsl{C}": "𝐶", "\\mathsl{D}": "𝐷", "\\mathsl{E}": "𝐸", "\\mathsl{F}": "𝐹", "\\mathsl{G}": "𝐺", "\\mathsl{H}": "𝐻", "\\mathsl{I}": "𝐼", "\\mathsl{J}": "𝐽", "\\mathsl{K}": "𝐾", "\\mathsl{L}": "𝐿", "\\mathsl{M}": "𝑀", "\\mathsl{N}": "𝑁", "\\mathsl{O}": "𝑂", "\\mathsl{P}": "𝑃", "\\mathsl{Q}": "𝑄", "\\mathsl{R}": "𝑅", "\\mathsl{S}": "𝑆", "\\mathsl{T}": "𝑇", "\\mathsl{U}": "𝑈", "\\mathsl{V}": "𝑉", "\\mathsl{W}": "𝑊", "\\mathsl{X}": "𝑋", "\\mathsl{Y}": "𝑌", "\\mathsl{Z}": "𝑍", "\\mathsl{a}": "𝑎", "\\mathsl{b}": "𝑏", "\\mathsl{c}": "𝑐", "\\mathsl{d}": "𝑑", "\\mathsl{e}": "𝑒", "\\mathsl{f}": "𝑓", "\\mathsl{g}": "𝑔", "\\mathsl{i}": "𝑖", "\\mathsl{j}": "𝑗", "\\mathsl{k}": "𝑘", "\\mathsl{l}": "𝑙", "\\mathsl{m}": "𝑚", "\\mathsl{n}": "𝑛", "\\mathsl{o}": "𝑜", "\\mathsl{p}": "𝑝", "\\mathsl{q}": "𝑞", "\\mathsl{r}": "𝑟", "\\mathsl{s}": "𝑠", "\\mathsl{t}": "𝑡", "\\mathsl{u}": "𝑢", "\\mathsl{v}": "𝑣", "\\mathsl{w}": "𝑤", "\\mathsl{x}": "𝑥", "\\mathsl{y}": "𝑦", "\\mathsl{z}": "𝑧", "\\mathbit{A}": "𝑨", "\\mathbit{B}": "𝑩", "\\mathbit{C}": "𝑪", "\\mathbit{D}": "𝑫", "\\mathbit{E}": "𝑬", "\\mathbit{F}": "𝑭", "\\mathbit{G}": "𝑮", "\\mathbit{H}": "𝑯", "\\mathbit{I}": "𝑰", "\\mathbit{J}": "𝑱", "\\mathbit{K}": "𝑲", "\\mathbit{L}": "𝑳", "\\mathbit{M}": "𝑴", "\\mathbit{N}": "𝑵", "\\mathbit{O}": "𝑶", "\\mathbit{P}": "𝑷", "\\mathbit{Q}": "𝑸", "\\mathbit{R}": "𝑹", "\\mathbit{S}": "𝑺", "\\mathbit{T}": "𝑻", "\\mathbit{U}": "𝑼", "\\mathbit{V}": "𝑽", "\\mathbit{W}": "𝑾", "\\mathbit{X}": "𝑿", "\\mathbit{Y}": "𝒀", "\\mathbit{Z}": "𝒁", "\\mathbit{a}": "𝒂", "\\mathbit{b}": "𝒃", "\\mathbit{c}": "𝒄", "\\mathbit{d}": "𝒅", "\\mathbit{e}": "𝒆", "\\mathbit{f}": "𝒇", "\\mathbit{g}": "𝒈", "\\mathbit{h}": "𝒉", "\\mathbit{i}": "𝒊", "\\mathbit{j}": "𝒋", "\\mathbit{k}": "𝒌", "\\mathbit{l}": "𝒍", "\\mathbit{m}": "𝒎", "\\mathbit{n}": "𝒏", "\\mathbit{o}": "𝒐", "\\mathbit{p}": "𝒑", "\\mathbit{q}": "𝒒", "\\mathbit{r}": "𝒓", "\\mathbit{s}": "𝒔", "\\mathbit{t}": "𝒕", "\\mathbit{u}": "𝒖", "\\mathbit{v}": "𝒗", "\\mathbit{w}": "𝒘", "\\mathbit{x}": "𝒙", "\\mathbit{y}": "𝒚", "\\mathbit{z}": "𝒛", "\\mathscr{A}": "𝒜", "\\mathscr{C}": "𝒞", "\\mathscr{D}": "𝒟", "\\mathscr{G}": "𝒢", "\\mathscr{J}": "𝒥", "\\mathscr{K}": "𝒦", "\\mathscr{N}": "𝒩", "\\mathscr{O}": "𝒪", "\\mathscr{P}": "𝒫", "\\mathscr{Q}": "𝒬", "\\mathscr{S}": "𝒮", "\\mathscr{T}": "𝒯", "\\mathscr{U}": "𝒰", "\\mathscr{V}": "𝒱", "\\mathscr{W}": "𝒲", "\\mathscr{X}": "𝒳", "\\mathscr{Y}": "𝒴", "\\mathscr{Z}": "𝒵", "\\mathscr{a}": "𝒶", "\\mathscr{b}": "𝒷", "\\mathscr{c}": "𝒸", "\\mathscr{d}": "𝒹", "\\mathscr{f}": "𝒻", "\\mathscr{h}": "𝒽", "\\mathscr{i}": "𝒾", "\\mathscr{j}": "𝒿", "\\mathscr{k}": "𝓀", "\\mathscr{m}": "𝓂", "\\mathscr{n}": "𝓃", "\\mathscr{p}": "𝓅", "\\mathscr{q}": "𝓆", "\\mathscr{r}": "𝓇", "\\mathscr{s}": "𝓈", "\\mathscr{t}": "𝓉", "\\mathscr{u}": "𝓊", "\\mathscr{v}": "𝓋", "\\mathscr{w}": "𝓌", "\\mathscr{x}": "𝓍", "\\mathscr{y}": "𝓎", "\\mathscr{z}": "𝓏", "\\mathmit{A}": "𝓐", "\\mathmit{B}": "𝓑", "\\mathmit{C}": "𝓒", "\\mathmit{D}": "𝓓", "\\mathmit{E}": "𝓔", "\\mathmit{F}": "𝓕", "\\mathmit{G}": "𝓖", "\\mathmit{H}": "𝓗", "\\mathmit{I}": "𝓘", "\\mathmit{J}": "𝓙", "\\mathmit{K}": "𝓚", "\\mathmit{L}": "𝓛", "\\mathmit{M}": "𝓜", "\\mathmit{N}": "𝓝", "\\mathmit{O}": "𝓞", "\\mathmit{P}": "𝓟", "\\mathmit{Q}": "𝓠", "\\mathmit{R}": "𝓡", "\\mathmit{S}": "𝓢", "\\mathmit{T}": "𝓣", "\\mathmit{U}": "𝓤", "\\mathmit{V}": "𝓥", "\\mathmit{W}": "𝓦", "\\mathmit{X}": "𝓧", "\\mathmit{Y}": "𝓨", "\\mathmit{Z}": "𝓩", "\\mathmit{a}": "𝓪", "\\mathmit{b}": "𝓫", "\\mathmit{c}": "𝓬", "\\mathmit{d}": "𝓭", "\\mathmit{e}": "𝓮", "\\mathmit{f}": "𝓯", "\\mathmit{g}": "𝓰", "\\mathmit{h}": "𝓱", "\\mathmit{i}": "𝓲", "\\mathmit{j}": "𝓳", "\\mathmit{k}": "𝓴", "\\mathmit{l}": "𝓵", "\\mathmit{m}": "𝓶", "\\mathmit{n}": "𝓷", "\\mathmit{o}": "𝓸", "\\mathmit{p}": "𝓹", "\\mathmit{q}": "𝓺", "\\mathmit{r}": "𝓻", "\\mathmit{s}": "𝓼", "\\mathmit{t}": "𝓽", "\\mathmit{u}": "𝓾", "\\mathmit{v}": "𝓿", "\\mathmit{w}": "𝔀", "\\mathmit{x}": "𝔁", "\\mathmit{y}": "𝔂", "\\mathmit{z}": "𝔃", "\\mathfrak{A}": "𝔄", "\\mathfrak{B}": "𝔅", "\\mathfrak{D}": "𝔇", "\\mathfrak{E}": "𝔈", "\\mathfrak{F}": "𝔉", "\\mathfrak{G}": "𝔊", "\\mathfrak{J}": "𝔍", "\\mathfrak{K}": "𝔎", "\\mathfrak{L}": "𝔏", "\\mathfrak{M}": "𝔐", "\\mathfrak{N}": "𝔑", "\\mathfrak{O}": "𝔒", "\\mathfrak{P}": "𝔓", "\\mathfrak{Q}": "𝔔", "\\mathfrak{S}": "𝔖", "\\mathfrak{T}": "𝔗", "\\mathfrak{U}": "𝔘", "\\mathfrak{V}": "𝔙", "\\mathfrak{W}": "𝔚", "\\mathfrak{X}": "𝔛", "\\mathfrak{Y}": "𝔜", "\\mathfrak{a}": "𝔞", "\\mathfrak{b}": "𝔟", "\\mathfrak{c}": "𝔠", "\\mathfrak{d}": "𝔡", "\\mathfrak{e}": "𝔢", "\\mathfrak{f}": "𝔣", "\\mathfrak{g}": "𝔤", "\\mathfrak{h}": "𝔥", "\\mathfrak{i}": "𝔦", "\\mathfrak{j}": "𝔧", "\\mathfrak{k}": "𝔨", "\\mathfrak{l}": "𝔩", "\\mathfrak{m}": "𝔪", "\\mathfrak{n}": "𝔫", "\\mathfrak{o}": "𝔬", "\\mathfrak{p}": "𝔭", "\\mathfrak{q}": "𝔮", "\\mathfrak{r}": "𝔯", "\\mathfrak{s}": "𝔰", "\\mathfrak{t}": "𝔱", "\\mathfrak{u}": "𝔲", "\\mathfrak{v}": "𝔳", "\\mathfrak{w}": "𝔴", "\\mathfrak{x}": "𝔵", "\\mathfrak{y}": "𝔶", "\\mathfrak{z}": "𝔷", "\\mathbb{A}": "𝔸", "\\mathbb{B}": "𝔹", "\\mathbb{D}": "𝔻", "\\mathbb{E}": "𝔼", "\\mathbb{F}": "𝔽", "\\mathbb{G}": "𝔾", "\\mathbb{I}": "𝕀", "\\mathbb{J}": "𝕁", "\\mathbb{K}": "𝕂", "\\mathbb{L}": "𝕃", "\\mathbb{M}": "𝕄", "\\mathbb{O}": "𝕆", "\\mathbb{S}": "𝕊", "\\mathbb{T}": "𝕋", "\\mathbb{U}": "𝕌", "\\mathbb{V}": "𝕍", "\\mathbb{W}": "𝕎", "\\mathbb{X}": "𝕏", "\\mathbb{Y}": "𝕐", "\\mathbb{a}": "𝕒", "\\mathbb{b}": "𝕓", "\\mathbb{c}": "𝕔", "\\mathbb{d}": "𝕕", "\\mathbb{e}": "𝕖", "\\mathbb{f}": "𝕗", "\\mathbb{g}": "𝕘", "\\mathbb{h}": "𝕙", "\\mathbb{i}": "𝕚", "\\mathbb{j}": "𝕛", "\\mathbb{k}": "𝕜", "\\mathbb{l}": "𝕝", "\\mathbb{m}": "𝕞", "\\mathbb{n}": "𝕟", "\\mathbb{o}": "𝕠", "\\mathbb{p}": "𝕡", "\\mathbb{q}": "𝕢", "\\mathbb{r}": "𝕣", "\\mathbb{s}": "𝕤", "\\mathbb{t}": "𝕥", "\\mathbb{u}": "𝕦", "\\mathbb{v}": "𝕧", "\\mathbb{w}": "𝕨", "\\mathbb{x}": "𝕩", "\\mathbb{y}": "𝕪", "\\mathbb{z}": "𝕫", "\\mathslbb{A}": "𝕬", "\\mathslbb{B}": "𝕭", "\\mathslbb{C}": "𝕮", "\\mathslbb{D}": "𝕯", "\\mathslbb{E}": "𝕰", "\\mathslbb{F}": "𝕱", "\\mathslbb{G}": "𝕲", "\\mathslbb{H}": "𝕳", "\\mathslbb{I}": "𝕴", "\\mathslbb{J}": "𝕵", "\\mathslbb{K}": "𝕶", "\\mathslbb{L}": "𝕷", "\\mathslbb{M}": "𝕸", "\\mathslbb{N}": "𝕹", "\\mathslbb{O}": "𝕺", "\\mathslbb{P}": "𝕻", "\\mathslbb{Q}": "𝕼", "\\mathslbb{R}": "𝕽", "\\mathslbb{S}": "𝕾", "\\mathslbb{T}": "𝕿", "\\mathslbb{U}": "𝖀", "\\mathslbb{V}": "𝖁", "\\mathslbb{W}": "𝖂", "\\mathslbb{X}": "𝖃", "\\mathslbb{Y}": "𝖄", "\\mathslbb{Z}": "𝖅", "\\mathslbb{a}": "𝖆", "\\mathslbb{b}": "𝖇", "\\mathslbb{c}": "𝖈", "\\mathslbb{d}": "𝖉", "\\mathslbb{e}": "𝖊", "\\mathslbb{f}": "𝖋", "\\mathslbb{g}": "𝖌", "\\mathslbb{h}": "𝖍", "\\mathslbb{i}": "𝖎", "\\mathslbb{j}": "𝖏", "\\mathslbb{k}": "𝖐", "\\mathslbb{l}": "𝖑", "\\mathslbb{m}": "𝖒", "\\mathslbb{n}": "𝖓", "\\mathslbb{o}": "𝖔", "\\mathslbb{p}": "𝖕", "\\mathslbb{q}": "𝖖", "\\mathslbb{r}": "𝖗", "\\mathslbb{s}": "𝖘", "\\mathslbb{t}": "𝖙", "\\mathslbb{u}": "𝖚", "\\mathslbb{v}": "𝖛", "\\mathslbb{w}": "𝖜", "\\mathslbb{x}": "𝖝", "\\mathslbb{y}": "𝖞", "\\mathslbb{z}": "𝖟", "\\mathsf{A}": "𝖠", "\\mathsf{B}": "𝖡", "\\mathsf{C}": "𝖢", "\\mathsf{D}": "𝖣", "\\mathsf{E}": "𝖤", "\\mathsf{F}": "𝖥", "\\mathsf{G}": "𝖦", "\\mathsf{H}": "𝖧", "\\mathsf{I}": "𝖨", "\\mathsf{J}": "𝖩", "\\mathsf{K}": "𝖪", "\\mathsf{L}": "𝖫", "\\mathsf{M}": "𝖬", "\\mathsf{N}": "𝖭", "\\mathsf{O}": "𝖮", "\\mathsf{P}": "𝖯", "\\mathsf{Q}": "𝖰", "\\mathsf{R}": "𝖱", "\\mathsf{S}": "𝖲", "\\mathsf{T}": "𝖳", "\\mathsf{U}": "𝖴", "\\mathsf{V}": "𝖵", "\\mathsf{W}": "𝖶", "\\mathsf{X}": "𝖷", "\\mathsf{Y}": "𝖸", "\\mathsf{Z}": "𝖹", "\\mathsf{a}": "𝖺", "\\mathsf{b}": "𝖻", "\\mathsf{c}": "𝖼", "\\mathsf{d}": "𝖽", "\\mathsf{e}": "𝖾", "\\mathsf{f}": "𝖿", "\\mathsf{g}": "𝗀", "\\mathsf{h}": "𝗁", "\\mathsf{i}": "𝗂", "\\mathsf{j}": "𝗃", "\\mathsf{k}": "𝗄", "\\mathsf{l}": "𝗅", "\\mathsf{m}": "𝗆", "\\mathsf{n}": "𝗇", "\\mathsf{o}": "𝗈", "\\mathsf{p}": "𝗉", "\\mathsf{q}": "𝗊", "\\mathsf{r}": "𝗋", "\\mathsf{s}": "𝗌", "\\mathsf{t}": "𝗍", "\\mathsf{u}": "𝗎", "\\mathsf{v}": "𝗏", "\\mathsf{w}": "𝗐", "\\mathsf{x}": "𝗑", "\\mathsf{y}": "𝗒", "\\mathsf{z}": "𝗓", "\\mathsfbf{A}": "𝗔", "\\mathsfbf{B}": "𝗕", "\\mathsfbf{C}": "𝗖", "\\mathsfbf{D}": "𝗗", "\\mathsfbf{E}": "𝗘", "\\mathsfbf{F}": "𝗙", "\\mathsfbf{G}": "𝗚", "\\mathsfbf{H}": "𝗛", "\\mathsfbf{I}": "𝗜", "\\mathsfbf{J}": "𝗝", "\\mathsfbf{K}": "𝗞", "\\mathsfbf{L}": "𝗟", "\\mathsfbf{M}": "𝗠", "\\mathsfbf{N}": "𝗡", "\\mathsfbf{O}": "𝗢", "\\mathsfbf{P}": "𝗣", "\\mathsfbf{Q}": "𝗤", "\\mathsfbf{R}": "𝗥", "\\mathsfbf{S}": "𝗦", "\\mathsfbf{T}": "𝗧", "\\mathsfbf{U}": "𝗨", "\\mathsfbf{V}": "𝗩", "\\mathsfbf{W}": "𝗪", "\\mathsfbf{X}": "𝗫", "\\mathsfbf{Y}": "𝗬", "\\mathsfbf{Z}": "𝗭", "\\mathsfbf{a}": "𝗮", "\\mathsfbf{b}": "𝗯", "\\mathsfbf{c}": "𝗰", "\\mathsfbf{d}": "𝗱", "\\mathsfbf{e}": "𝗲", "\\mathsfbf{f}": "𝗳", "\\mathsfbf{g}": "𝗴", "\\mathsfbf{h}": "𝗵", "\\mathsfbf{i}": "𝗶", "\\mathsfbf{j}": "𝗷", "\\mathsfbf{k}": "𝗸", "\\mathsfbf{l}": "𝗹", "\\mathsfbf{m}": "𝗺", "\\mathsfbf{n}": "𝗻", "\\mathsfbf{o}": "𝗼", "\\mathsfbf{p}": "𝗽", "\\mathsfbf{q}": "𝗾", "\\mathsfbf{r}": "𝗿", "\\mathsfbf{s}": "𝘀", "\\mathsfbf{t}": "𝘁", "\\mathsfbf{u}": "𝘂", "\\mathsfbf{v}": "𝘃", "\\mathsfbf{w}": "𝘄", "\\mathsfbf{x}": "𝘅", "\\mathsfbf{y}": "𝘆", "\\mathsfbf{z}": "𝘇", "\\mathsfsl{A}": "𝘈", "\\mathsfsl{B}": "𝘉", "\\mathsfsl{C}": "𝘊", "\\mathsfsl{D}": "𝘋", "\\mathsfsl{E}": "𝘌", "\\mathsfsl{F}": "𝘍", "\\mathsfsl{G}": "𝘎", "\\mathsfsl{H}": "𝘏", "\\mathsfsl{I}": "𝘐", "\\mathsfsl{J}": "𝘑", "\\mathsfsl{K}": "𝘒", "\\mathsfsl{L}": "𝘓", "\\mathsfsl{M}": "𝘔", "\\mathsfsl{N}": "𝘕", "\\mathsfsl{O}": "𝘖", "\\mathsfsl{P}": "𝘗", "\\mathsfsl{Q}": "𝘘", "\\mathsfsl{R}": "𝘙", "\\mathsfsl{S}": "𝘚", "\\mathsfsl{T}": "𝘛", "\\mathsfsl{U}": "𝘜", "\\mathsfsl{V}": "𝘝", "\\mathsfsl{W}": "𝘞", "\\mathsfsl{X}": "𝘟", "\\mathsfsl{Y}": "𝘠", "\\mathsfsl{Z}": "𝘡", "\\mathsfsl{a}": "𝘢", "\\mathsfsl{b}": "𝘣", "\\mathsfsl{c}": "𝘤", "\\mathsfsl{d}": "𝘥", "\\mathsfsl{e}": "𝘦", "\\mathsfsl{f}": "𝘧", "\\mathsfsl{g}": "𝘨", "\\mathsfsl{h}": "𝘩", "\\mathsfsl{i}": "𝘪", "\\mathsfsl{j}": "𝘫", "\\mathsfsl{k}": "𝘬", "\\mathsfsl{l}": "𝘭", "\\mathsfsl{m}": "𝘮", "\\mathsfsl{n}": "𝘯", "\\mathsfsl{o}": "𝘰", "\\mathsfsl{p}": "𝘱", "\\mathsfsl{q}": "𝘲", "\\mathsfsl{r}": "𝘳", "\\mathsfsl{s}": "𝘴", "\\mathsfsl{t}": "𝘵", "\\mathsfsl{u}": "𝘶", "\\mathsfsl{v}": "𝘷", "\\mathsfsl{w}": "𝘸", "\\mathsfsl{x}": "𝘹", "\\mathsfsl{y}": "𝘺", "\\mathsfsl{z}": "𝘻", "\\mathsfbfsl{A}": "𝘼", "\\mathsfbfsl{B}": "𝘽", "\\mathsfbfsl{C}": "𝘾", "\\mathsfbfsl{D}": "𝘿", "\\mathsfbfsl{E}": "𝙀", "\\mathsfbfsl{F}": "𝙁", "\\mathsfbfsl{G}": "𝙂", "\\mathsfbfsl{H}": "𝙃", "\\mathsfbfsl{I}": "𝙄", "\\mathsfbfsl{J}": "𝙅", "\\mathsfbfsl{K}": "𝙆", "\\mathsfbfsl{L}": "𝙇", "\\mathsfbfsl{M}": "𝙈", "\\mathsfbfsl{N}": "𝙉", "\\mathsfbfsl{O}": "𝙊", "\\mathsfbfsl{P}": "𝙋", "\\mathsfbfsl{Q}": "𝙌", "\\mathsfbfsl{R}": "𝙍", "\\mathsfbfsl{S}": "𝙎", "\\mathsfbfsl{T}": "𝙏", "\\mathsfbfsl{U}": "𝙐", "\\mathsfbfsl{V}": "𝙑", "\\mathsfbfsl{W}": "𝙒", "\\mathsfbfsl{X}": "𝙓", "\\mathsfbfsl{Y}": "𝙔", "\\mathsfbfsl{Z}": "𝙕", "\\mathsfbfsl{a}": "𝙖", "\\mathsfbfsl{b}": "𝙗", "\\mathsfbfsl{c}": "𝙘", "\\mathsfbfsl{d}": "𝙙", "\\mathsfbfsl{e}": "𝙚", "\\mathsfbfsl{f}": "𝙛", "\\mathsfbfsl{g}": "𝙜", "\\mathsfbfsl{h}": "𝙝", "\\mathsfbfsl{i}": "𝙞", "\\mathsfbfsl{j}": "𝙟", "\\mathsfbfsl{k}": "𝙠", "\\mathsfbfsl{l}": "𝙡", "\\mathsfbfsl{m}": "𝙢", "\\mathsfbfsl{n}": "𝙣", "\\mathsfbfsl{o}": "𝙤", "\\mathsfbfsl{p}": "𝙥", "\\mathsfbfsl{q}": "𝙦", "\\mathsfbfsl{r}": "𝙧", "\\mathsfbfsl{s}": "𝙨", "\\mathsfbfsl{t}": "𝙩", "\\mathsfbfsl{u}": "𝙪", "\\mathsfbfsl{v}": "𝙫", "\\mathsfbfsl{w}": "𝙬", "\\mathsfbfsl{x}": "𝙭", "\\mathsfbfsl{y}": "𝙮", "\\mathsfbfsl{z}": "𝙯", "\\mathtt{A}": "𝙰", "\\mathtt{B}": "𝙱", "\\mathtt{C}": "𝙲", "\\mathtt{D}": "𝙳", "\\mathtt{E}": "𝙴", "\\mathtt{F}": "𝙵", "\\mathtt{G}": "𝙶", "\\mathtt{H}": "𝙷", "\\mathtt{I}": "𝙸", "\\mathtt{J}": "𝙹", "\\mathtt{K}": "𝙺", "\\mathtt{L}": "𝙻", "\\mathtt{M}": "𝙼", "\\mathtt{N}": "𝙽", "\\mathtt{O}": "𝙾", "\\mathtt{P}": "𝙿", "\\mathtt{Q}": "𝚀", "\\mathtt{R}": "𝚁", "\\mathtt{S}": "𝚂", "\\mathtt{T}": "𝚃", "\\mathtt{U}": "𝚄", "\\mathtt{V}": "𝚅", "\\mathtt{W}": "𝚆", "\\mathtt{X}": "𝚇", "\\mathtt{Y}": "𝚈", "\\mathtt{Z}": "𝚉", "\\mathtt{a}": "𝚊", "\\mathtt{b}": "𝚋", "\\mathtt{c}": "𝚌", "\\mathtt{d}": "𝚍", "\\mathtt{e}": "𝚎", "\\mathtt{f}": "𝚏", "\\mathtt{g}": "𝚐", "\\mathtt{h}": "𝚑", "\\mathtt{i}": "𝚒", "\\mathtt{j}": "𝚓", "\\mathtt{k}": "𝚔", "\\mathtt{l}": "𝚕", "\\mathtt{m}": "𝚖", "\\mathtt{n}": "𝚗", "\\mathtt{o}": "𝚘", "\\mathtt{p}": "𝚙", "\\mathtt{q}": "𝚚", "\\mathtt{r}": "𝚛", "\\mathtt{s}": "𝚜", "\\mathtt{t}": "𝚝", "\\mathtt{u}": "𝚞", "\\mathtt{v}": "𝚟", "\\mathtt{w}": "𝚠", "\\mathtt{x}": "𝚡", "\\mathtt{y}": "𝚢", "\\mathtt{z}": "𝚣", "\\mathbf{\\Gamma}": "𝚪", "\\mathbf{\\Delta}": "𝚫", "\\mathbf{\\Theta}": "𝚯", "\\mathbf{\\Lambda}": "𝚲", "\\mathbf{\\Xi}": "𝚵", "\\mathbf{\\Pi}": "𝚷", "\\mathbf{\\vartheta}": "𝚹", "\\mathbf{\\Sigma}": "𝚺", "\\mathbf{\\Upsilon}": "𝚼", "\\mathbf{\\Phi}": "𝚽", "\\mathbf{\\Psi}": "𝚿", "\\mathbf{\\Omega}": "𝛀", "\\mathbf{\\nabla}": "𝛁", "\\mathbf{\\alpha}": "𝛂", "\\mathbf{\\beta}": "𝛃", "\\mathbf{\\gamma}": "𝛄", "\\mathbf{\\delta}": "𝛅", "\\mathbf{\\epsilon}": "𝛆", "\\mathbf{\\zeta}": "𝛇", "\\mathbf{\\eta}": "𝛈", "\\mathbf{\\theta}": "𝛉", "\\mathbf{\\lambda}": "𝛌", "\\mathbf{\\xi}": "𝛏", "\\mathbf{\\pi}": "𝛑", "\\mathbf{\\varsigma}": "𝛓", "\\mathbf{\\sigma}": "𝛔", "\\mathbf{\\upsilon}": "𝛖", "\\mathbf{\\phi}": "𝛗", "\\mathbf{\\psi}": "𝛙", "\\mathbf{\\omega}": "𝛚", "\\mathbf{\\varkappa}": "𝛞", "\\mathbf{\\varrho}": "𝛠", "\\mathbf{\\varpi}": "𝛡", "\\mathsl{\\Gamma}": "𝛤", "\\mathsl{\\Delta}": "𝛥", "\\mathsl{\\Lambda}": "𝛬", "\\mathsl{\\Xi}": "𝛯", "\\mathsl{\\Pi}": "𝛱", "\\mathsl{\\Theta}": "𝛳", "\\mathsl{\\Sigma}": "𝛴", "\\mathsl{\\Upsilon}": "𝛶", "\\mathsl{\\Phi}": "𝛷", "\\mathsl{\\Psi}": "𝛹", "\\mathsl{\\Omega}": "𝛺", "\\mathsl{\\nabla}": "𝛻", "\\mathsl{\\gamma}": "𝛾", "\\mathsl{\\delta}": "𝛿", "\\mathsl{\\theta}": "𝜃", "\\mathsl{\\lambda}": "𝜆", "\\mu": "𝜇", "\\mathsl{\\xi}": "𝜉", "\\mathsl{\\pi}": "𝜋", "\\mathsl{\\varsigma}": "𝜍", "\\mathsl{\\sigma}": "𝜎", "\\mathsl{\\upsilon}": "𝜐", "\\mathsl{\\varphi}": "𝜑", "\\mathsl{\\psi}": "𝜓", "\\mathsl{\\omega}": "𝜔", "\\mathsl{\\vartheta}": "𝜗", "\\mathsl{\\varkappa}": "𝜘", "\\mathsl{\\phi}": "𝜙", "\\mathsl{\\varrho}": "𝜚", "\\mathsl{\\varpi}": "𝜛", "\\mathbit{\\Gamma}": "𝜞", "\\mathbit{\\Delta}": "𝜟", "\\mathbit{\\Theta}": "𝜣", "\\mathbit{\\Lambda}": "𝜦", "\\mathbit{\\Xi}": "𝜩", "\\mathbit{\\Pi}": "𝜫", "\\mathbit{\\Sigma}": "𝜮", "\\mathbit{\\Upsilon}": "𝜰", "\\mathbit{\\Phi}": "𝜱", "\\mathbit{\\Psi}": "𝜳", "\\mathbit{\\Omega}": "𝜴", "\\mathbit{\\nabla}": "𝜵", "\\mathbit{\\alpha}": "𝜶", "\\mathbit{\\beta}": "𝜷", "\\mathbit{\\gamma}": "𝜸", "\\mathbit{\\delta}": "𝜹", "\\mathbit{\\epsilon}": "𝜺", "\\mathbit{\\zeta}": "𝜻", "\\mathbit{\\eta}": "𝜼", "\\mathbit{\\theta}": "𝜽", "\\mathbit{\\imath}": "𝜾", "\\mathbit{\\kappa}": "𝜿", "\\mathbit{\\lambda}": "𝝀", "\\mathbit{\\xi}": "𝝃", "\\mathbit{\\pi}": "𝝅", "\\mathbit{\\rho}": "𝝆", "\\mathbit{\\varsigma}": "𝝇", "\\mathbit{\\sigma}": "𝝈", "\\mathbit{\\tau}": "𝝉", "\\mathbit{\\upsilon}": "𝝊", "\\mathbit{\\varphi}": "𝝋", "\\mathbit{\\chi}": "𝝌", "\\mathbit{\\psi}": "𝝍", "\\mathbit{\\omega}": "𝝎", "\\mathbit{\\vartheta}": "𝝑", "\\mathbit{\\varkappa}": "𝝒", "\\mathbit{\\phi}": "𝝓", "\\mathbit{\\varrho}": "𝝔", "\\mathbit{\\varpi}": "𝝕", "\\mathsfbf{\\Gamma}": "𝝘", "\\mathsfbf{\\Delta}": "𝝙", "\\mathsfbf{\\Theta}": "𝝝", "\\mathsfbf{\\Lambda}": "𝝠", "\\mathsfbf{\\Xi}": "𝝣", "\\mathsfbf{\\Pi}": "𝝥", "\\mathsfbf{\\Sigma}": "𝝨", "\\mathsfbf{\\Upsilon}": "𝝪", "\\mathsfbf{\\Phi}": "𝝫", "\\mathsfbf{\\Psi}": "𝝭", "\\mathsfbf{\\Omega}": "𝝮", "\\mathsfbf{\\nabla}": "𝝯", "\\mathsfbf{\\alpha}": "𝝰", "\\mathsfbf{\\beta}": "𝝱", "\\mathsfbf{\\gamma}": "𝝲", "\\mathsfbf{\\delta}": "𝝳", "\\mathsfbf{\\varepsilon}": "𝝴", "\\mathsfbf{\\zeta}": "𝝵", "\\mathsfbf{\\eta}": "𝝶", "\\mathsfbf{\\theta}": "𝝷", "\\mathsfbf{\\imath}": "𝝸", "\\mathsfbf{\\kappa}": "𝝹", "\\mathsfbf{\\lambda}": "𝝺", "\\mathsfbf{\\xi}": "𝝽", "\\mathsfbf{\\pi}": "𝝿", "\\mathsfbf{\\rho}": "𝞀", "\\mathsfbf{\\varsigma}": "𝞁", "\\mathsfbf{\\sigma}": "𝞂", "\\mathsfbf{\\tau}": "𝞃", "\\mathsfbf{\\upsilon}": "𝞄", "\\mathsfbf{\\varphi}": "𝞅", "\\mathsfbf{\\chi}": "𝞆", "\\mathsfbf{\\psi}": "𝞇", "\\mathsfbf{\\omega}": "𝞈", "\\mathsfbf{\\vartheta}": "𝞋", "\\mathsfbf{\\varkappa}": "𝞌", "\\mathsfbf{\\phi}": "𝞍", "\\mathsfbf{\\varrho}": "𝞎", "\\mathsfbf{\\varpi}": "𝞏", "\\mathsfbfsl{\\Gamma}": "𝞒", "\\mathsfbfsl{\\Delta}": "𝞓", "\\mathsfbfsl{\\Theta}": "𝞗", "\\mathsfbfsl{\\Lambda}": "𝞚", "\\mathsfbfsl{\\Xi}": "𝞝", "\\mathsfbfsl{\\Pi}": "𝞟", "\\mathsfbfsl{\\Sigma}": "𝞢", "\\mathsfbfsl{\\Upsilon}": "𝞤", "\\mathsfbfsl{\\Phi}": "𝞥", "\\mathsfbfsl{\\Psi}": "𝞧", "\\mathsfbfsl{\\Omega}": "𝞨", "\\mathsfbfsl{\\nabla}": "𝞩", "\\mathsfbfsl{\\alpha}": "𝞪", "\\mathsfbfsl{\\beta}": "𝞫", "\\mathsfbfsl{\\gamma}": "𝞬", "\\mathsfbfsl{\\delta}": "𝞭", "\\mathsfbfsl{\\varepsilon}": "𝞮", "\\mathsfbfsl{\\zeta}": "𝞯", "\\mathsfbfsl{\\eta}": "𝞰", "\\mathsfbfsl{\\theta}": "𝞱", "\\mathsfbfsl{\\imath}": "𝞲", "\\mathsfbfsl{\\kappa}": "𝞳", "\\mathsfbfsl{\\lambda}": "𝞴", "\\mathsfbfsl{\\xi}": "𝞷", "\\mathsfbfsl{\\pi}": "𝞹", "\\mathsfbfsl{\\rho}": "𝞺", "\\mathsfbfsl{\\varsigma}": "𝞻", "\\mathsfbfsl{\\sigma}": "𝞼", "\\mathsfbfsl{\\tau}": "𝞽", "\\mathsfbfsl{\\upsilon}": "𝞾", "\\mathsfbfsl{\\varphi}": "𝞿", "\\mathsfbfsl{\\chi}": "𝟀", "\\mathsfbfsl{\\psi}": "𝟁", "\\mathsfbfsl{\\omega}": "𝟂", "\\mathsfbfsl{\\vartheta}": "𝟅", "\\mathsfbfsl{\\varkappa}": "𝟆", "\\mathsfbfsl{\\phi}": "𝟇", "\\mathsfbfsl{\\varrho}": "𝟈", "\\mathsfbfsl{\\varpi}": "𝟉", "\\mbfDigamma": "𝟊", "\\mbfdigamma": "𝟋", "\\mathbf{0}": "𝟎", "\\mathbf{1}": "𝟏", "\\mathbf{2}": "𝟐", "\\mathbf{3}": "𝟑", "\\mathbf{4}": "𝟒", "\\mathbf{5}": "𝟓", "\\mathbf{6}": "𝟔", "\\mathbf{7}": "𝟕", "\\mathbf{8}": "𝟖", "\\mathbf{9}": "𝟗", "\\mathbb{0}": "𝟘", "\\mathbb{1}": "𝟙", "\\mathbb{2}": "𝟚", "\\mathbb{3}": "𝟛", "\\mathbb{4}": "𝟜", "\\mathbb{5}": "𝟝", "\\mathbb{6}": "𝟞", "\\mathbb{7}": "𝟟", "\\mathbb{8}": "𝟠", "\\mathbb{9}": "𝟡", "\\mathsf{0}": "𝟢", "\\mathsf{1}": "𝟣", "\\mathsf{2}": "𝟤", "\\mathsf{3}": "𝟥", "\\mathsf{4}": "𝟦", "\\mathsf{5}": "𝟧", "\\mathsf{6}": "𝟨", "\\mathsf{7}": "𝟩", "\\mathsf{8}": "𝟪", "\\mathsf{9}": "𝟫", "\\mathsfbf{0}": "𝟬", "\\mathsfbf{1}": "𝟭", "\\mathsfbf{2}": "𝟮", "\\mathsfbf{3}": "𝟯", "\\mathsfbf{4}": "𝟰", "\\mathsfbf{5}": "𝟱", "\\mathsfbf{6}": "𝟲", "\\mathsfbf{7}": "𝟳", "\\mathsfbf{8}": "𝟴", "\\mathsfbf{9}": "𝟵", "\\mathtt{0}": "𝟶", "\\mathtt{1}": "𝟷", "\\mathtt{2}": "𝟸", "\\mathtt{3}": "𝟹", "\\mathtt{4}": "𝟺", "\\mathtt{5}": "𝟻", "\\mathtt{6}": "𝟼", "\\mathtt{7}": "𝟽", "\\mathtt{8}": "𝟾", "\\mathtt{9}": "𝟿" }; var commands = [ "acute", "bar", "breve", "c", "d", "ddot", "dot", "grave", "hat", "k", "mathring", "overline", "r", "textacutemacron", "textacutewedge", "textadvancing", "textbrevemacron", "textcircumdot", "textcorner", "textdotacute", "textdotbreve", "textdoublegrave", "textdoublevbaraccent", "textgravedot", "textgravemacron", "textinvsubbridge", "textlowering", "textovercross", "textraising", "textretracting", "textringmacron", "textseagull", "textsubarch", "textsubbar", "textsubbridge", "textsubgrave", "textsublhalfring", "textsubplus", "textsubrhalfring", "textsubring", "textsubsquare", "textsubtilde", "textsubumlaut", "textsubwedge", "textsuperimposetilde", "textsyllabic", "texttildedot", "textvbaraccent", "tilde", "u", "underbar", "v" ]; var tolatex = { "̀": { command: "`", mode: "text" }, "̀̄": { command: "textgravemacron", mode: "text" }, "̀̇": { command: "textgravedot", mode: "text" }, "́": { command: "'", mode: "text" }, "́̄": { command: "textacutemacron", mode: "text" }, "́̇": { command: "textdotacute", mode: "text" }, "́̌": { command: "textacutewedge", mode: "text" }, "̂": { command: "^", mode: "text" }, "̂̇": { command: "textcircumdot", mode: "text" }, "̃": { command: "~", mode: "text" }, "̃̇": { command: "texttildedot", mode: "text" }, "̄": { command: "=", mode: "text" }, "̄̀": { command: "textgravemacron", mode: "text" }, "̄́": { command: "textacutemacron", mode: "text" }, "̄̆": { command: "textbrevemacron", mode: "text" }, "̄̊": { command: "textringmacron", mode: "text" }, "̅": { command: "overline", mode: "math" }, "̆": { command: "u", mode: "text" }, "̆̄": { command: "textbrevemacron", mode: "text" }, "̆̇": { command: "textdotbreve", mode: "text" }, "̇": { command: ".", mode: "text" }, "̇̀": { command: "textgravedot", mode: "text" }, "̇́": { command: "textdotacute", mode: "text" }, "̇̂": { command: "textcircumdot", mode: "text" }, "̇̃": { command: "texttildedot", mode: "text" }, "̇̆": { command: "textdotbreve", mode: "text" }, "̈": { command: "\"", mode: "text" }, "̊": { command: "r", mode: "text" }, "̊̄": { command: "textringmacron", mode: "text" }, "̋": { command: "H", mode: "text" }, "̌": { command: "v", mode: "text" }, "̌́": { command: "textacutewedge", mode: "text" }, "̍": { command: "textvbaraccent", mode: "text" }, "̎": { command: "textdoublevbaraccent", mode: "text" }, "̏": { command: "textdoublegrave", mode: "text" }, "̐": { command: "textdotbreve", mode: "text" }, "̖": { command: "textsubgrave", mode: "text" }, "̘": { command: "textadvancing", mode: "text" }, "̙": { command: "textretracting", mode: "text" }, "̚": { command: "textcorner", mode: "text" }, "̜": { command: "textsublhalfring", mode: "text" }, "̝": { command: "textraising", mode: "text" }, "̞": { command: "textlowering", mode: "text" }, "̟": { command: "textsubplus", mode: "text" }, "̣": { command: "d", mode: "text" }, "̤": { command: "textsubumlaut", mode: "text" }, "̥": { command: "textsubring", mode: "text" }, "̧": { command: "c", mode: "text" }, "̨": { command: "k", mode: "text" }, "̩": { command: "textsyllabic", mode: "text" }, "̪": { command: "textsubbridge", mode: "text" }, "̬": { command: "textsubwedge", mode: "text" }, "̯": { command: "textsubarch", mode: "text" }, "̰": { command: "textsubtilde", mode: "text" }, "̱": { command: "textsubbar", mode: "text" }, "̴": { command: "textsuperimposetilde", mode: "text" }, "̹": { command: "textsubrhalfring", mode: "text" }, "̺": { command: "textinvsubbridge", mode: "text" }, "̻": { command: "textsubsquare", mode: "text" }, "̼": { command: "textseagull", mode: "text" }, "̽": { command: "textovercross", mode: "text" } }; var tounicode = { "\"": "̈", "'": "́", ".": "̇", "=": "̄", H: "̋", "^": "̂", "`": "̀", acute: "́", bar: "̄", breve: "̆", c: "̧", d: "̣", ddot: "̈", dot: "̇", grave: "̀", hat: "̂", k: "̨", mathring: "̊", overline: "̅", r: "̊", textacutemacron: "̄́", textacutewedge: "̌́", textadvancing: "̘", textbrevemacron: "̄̆", textcircumdot: "̇̂", textcorner: "̚", textdotacute: "́̇", textdotbreve: "̐", textdoublegrave: "̏", textdoublevbaraccent: "̎", textgravedot: "̇̀", textgravemacron: "̀̄", textinvsubbridge: "̺", textlowering: "̞", textovercross: "̽", textraising: "̝", textretracting: "̙", textringmacron: "̄̊", textseagull: "̼", textsubarch: "̯", textsubbar: "̱", textsubbridge: "̪", textsubgrave: "̖", textsublhalfring: "̜", textsubplus: "̟", textsubrhalfring: "̹", textsubring: "̥", textsubsquare: "̻", textsubtilde: "̰", textsubumlaut: "̤", textsubwedge: "̬", textsuperimposetilde: "̴", textsyllabic: "̩", texttildedot: "̇̃", textvbaraccent: "̍", tilde: "̃", u: "̆", underbar: "̱", v: "̌", "~": "̃" }; var require$$4 = { commands: commands, tolatex: tolatex, tounicode: tounicode }; var unicode2latex = { ascii: require$$0, ascii_bibtex_creator: require$$1, unicode: require$$2, latex: require$$3, diacritics: require$$4, }; var categories = [ { 'name': 'C', 'alias': 'Other', 'isBmpLast': true, 'bmp': '\0-\x1F\x7F-\x9F\xAD\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20C0-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E53-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\u9FFD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7C0\uA7C1\uA7CB-\uA7F4\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF', 'astral': '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCBD\uDCC2-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA0-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD73-\uDD7A\uDDE9-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDF\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDD79\uDDCC\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7B-\uDE7F\uDE87-\uDE8F\uDEA9-\uDEAF\uDEB7-\uDEBF\uDEC3-\uDECF\uDED7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]' }, { 'name': 'Cc', 'alias': 'Control', 'bmp': '\0-\x1F\x7F-\x9F' }, { 'name': 'Cf', 'alias': 'Format', 'bmp': '\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB', 'astral': '\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC38]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]' }, { 'name': 'Cn', 'alias': 'Unassigned', 'bmp': '\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u05FF\u061D\u070E\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u2065\u2072\u2073\u208F\u209D-\u209F\u20C0-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E53-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\u9FFD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7C0\uA7C1\uA7CB-\uA7F4\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD\uFEFE\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFF8\uFFFE\uFFFF', 'astral': '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCC2-\uDCCC\uDCCE\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDB7F][\uDC00-\uDFFF]|\uD80D[\uDC2F\uDC39-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDDE9-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDF\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDD79\uDDCC\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7B-\uDE7F\uDE87-\uDE8F\uDEA9-\uDEAF\uDEB7-\uDEBF\uDEC3-\uDECF\uDED7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00\uDC02-\uDC1F\uDC80-\uDCFF\uDDF0-\uDFFF]|[\uDBBF\uDBFF][\uDFFE\uDFFF]' }, { 'name': 'Co', 'alias': 'Private_Use', 'bmp': '\uE000-\uF8FF', 'astral': '[\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uDBBF\uDBFF][\uDC00-\uDFFD]' }, { 'name': 'Cs', 'alias': 'Surrogate', 'bmp': '\uD800-\uDFFF' }, { 'name': 'L', 'alias': 'Letter', 'bmp': 'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', 'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]' }, { 'name': 'LC', 'alias': 'Cased_Letter', 'bmp': 'A-Za-z\xB5\xC0-\xD6\xD8-\xF6\xF8-\u01BA\u01BC-\u01BF\u01C4-\u0293\u0295-\u02AF\u0370-\u0373\u0376\u0377\u037B-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0560-\u0588\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FD-\u10FF\u13A0-\u13F5\u13F8-\u13FD\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2134\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2C7B\u2C7E-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA640-\uA66D\uA680-\uA69B\uA722-\uA76F\uA771-\uA787\uA78B-\uA78E\uA790-\uA7BF\uA7C2-\uA7CA\uA7F5\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A', 'astral': '\uD801[\uDC00-\uDC4F\uDCB0-\uDCD3\uDCD8-\uDCFB]|\uD803[\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD806[\uDCA0-\uDCDF]|\uD81B[\uDE40-\uDE7F]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDD00-\uDD43]' }, { 'name': 'Ll', 'alias': 'Lowercase_Letter', 'bmp': 'a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C3\uA7C8\uA7CA\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A', 'astral': '\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD81B[\uDE60-\uDE7F]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43]' }, { 'name': 'Lm', 'alias': 'Modifier_Letter', 'bmp': '\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C\uA69D\uA717-\uA71F\uA770\uA788\uA7F8\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3\uAAF4\uAB5C-\uAB5F\uAB69\uFF70\uFF9E\uFF9F', 'astral': '\uD81A[\uDF40-\uDF43]|\uD81B[\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD838[\uDD37-\uDD3D]|\uD83A\uDD4B' }, { 'name': 'Lo', 'alias': 'Other_Letter', 'bmp': '\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', 'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC50-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF4A\uDF50]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD838[\uDD00-\uDD2C\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]' }, { 'name': 'Lt', 'alias': 'Titlecase_Letter', 'bmp': '\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC' }, { 'name': 'Lu', 'alias': 'Uppercase_Letter', 'bmp': 'A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C2\uA7C4-\uA7C7\uA7C9\uA7F5\uFF21-\uFF3A', 'astral': '\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD81B[\uDE40-\uDE5F]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]' }, { 'name': 'M', 'alias': 'Mark', 'bmp': '\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F', 'astral': '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC9-\uDDCC\uDDCE\uDDCF\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDC5E\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDEAB-\uDEB7\uDF1D-\uDF2B]|\uD806[\uDC2C-\uDC3A\uDD30-\uDD35\uDD37\uDD38\uDD3B-\uDD3E\uDD40\uDD42\uDD43\uDDD1-\uDDD7\uDDDA-\uDDE0\uDDE4\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE8A-\uDE99]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDEF3-\uDEF6]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF51-\uDF87\uDF8F-\uDF92\uDFE4\uDFF0\uDFF1]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]' }, { 'name': 'Mc', 'alias': 'Spacing_Mark', 'bmp': '\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BE-\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062-\u1064\u1067-\u106D\u1083\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1A19\u1A1A\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF7\u302E\u302F\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE\uAAEF\uAAF5\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC', 'astral': '\uD804[\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8\uDD2C\uDD45\uDD46\uDD82\uDDB3-\uDDB5\uDDBF\uDDC0\uDDCE\uDE2C-\uDE2E\uDE32\uDE33\uDE35\uDEE0-\uDEE2\uDF02\uDF03\uDF3E\uDF3F\uDF41-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63]|\uD805[\uDC35-\uDC37\uDC40\uDC41\uDC45\uDCB0-\uDCB2\uDCB9\uDCBB-\uDCBE\uDCC1\uDDAF-\uDDB1\uDDB8-\uDDBB\uDDBE\uDE30-\uDE32\uDE3B\uDE3C\uDE3E\uDEAC\uDEAE\uDEAF\uDEB6\uDF20\uDF21\uDF26]|\uD806[\uDC2C-\uDC2E\uDC38\uDD30-\uDD35\uDD37\uDD38\uDD3D\uDD40\uDD42\uDDD1-\uDDD3\uDDDC-\uDDDF\uDDE4\uDE39\uDE57\uDE58\uDE97]|\uD807[\uDC2F\uDC3E\uDCA9\uDCB1\uDCB4\uDD8A-\uDD8E\uDD93\uDD94\uDD96\uDEF5\uDEF6]|\uD81B[\uDF51-\uDF87\uDFF0\uDFF1]|\uD834[\uDD65\uDD66\uDD6D-\uDD72]' }, { 'name': 'Me', 'alias': 'Enclosing_Mark', 'bmp': '\u0488\u0489\u1ABE\u20DD-\u20E0\u20E2-\u20E4\uA670-\uA672' }, { 'name': 'Mn', 'alias': 'Nonspacing_Mark', 'bmp': '\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F', 'astral': '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC01\uDC38-\uDC46\uDC7F-\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDD00-\uDD02\uDD27-\uDD2B\uDD2D-\uDD34\uDD73\uDD80\uDD81\uDDB6-\uDDBE\uDDC9-\uDDCC\uDDCF\uDE2F-\uDE31\uDE34\uDE36\uDE37\uDE3E\uDEDF\uDEE3-\uDEEA\uDF00\uDF01\uDF3B\uDF3C\uDF40\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC38-\uDC3F\uDC42-\uDC44\uDC46\uDC5E\uDCB3-\uDCB8\uDCBA\uDCBF\uDCC0\uDCC2\uDCC3\uDDB2-\uDDB5\uDDBC\uDDBD\uDDBF\uDDC0\uDDDC\uDDDD\uDE33-\uDE3A\uDE3D\uDE3F\uDE40\uDEAB\uDEAD\uDEB0-\uDEB5\uDEB7\uDF1D-\uDF1F\uDF22-\uDF25\uDF27-\uDF2B]|\uD806[\uDC2F-\uDC37\uDC39\uDC3A\uDD3B\uDD3C\uDD3E\uDD43\uDDD4-\uDDD7\uDDDA\uDDDB\uDDE0\uDE01-\uDE0A\uDE33-\uDE38\uDE3B-\uDE3E\uDE47\uDE51-\uDE56\uDE59-\uDE5B\uDE8A-\uDE96\uDE98\uDE99]|\uD807[\uDC30-\uDC36\uDC38-\uDC3D\uDC3F\uDC92-\uDCA7\uDCAA-\uDCB0\uDCB2\uDCB3\uDCB5\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD90\uDD91\uDD95\uDD97\uDEF3\uDEF4]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF8F-\uDF92\uDFE4]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]' }, { 'name': 'N', 'alias': 'Number', 'bmp': '0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19', 'astral': '\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]' }, { 'name': 'Nd', 'alias': 'Decimal_Number', 'bmp': '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19', 'astral': '\uD801[\uDCA0-\uDCA9]|\uD803[\uDD30-\uDD39]|\uD804[\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF39]|\uD806[\uDCE0-\uDCE9\uDD50-\uDD59]|\uD807[\uDC50-\uDC59\uDD50-\uDD59\uDDA0-\uDDA9]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDD50-\uDD59]|\uD83E[\uDFF0-\uDFF9]' }, { 'name': 'Nl', 'alias': 'Letter_Number', 'bmp': '\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF', 'astral': '\uD800[\uDD40-\uDD74\uDF41\uDF4A\uDFD1-\uDFD5]|\uD809[\uDC00-\uDC6E]' }, { 'name': 'No', 'alias': 'Other_Number', 'bmp': '\xB2\xB3\xB9\xBC-\xBE\u09F4-\u09F9\u0B72-\u0B77\u0BF0-\u0BF2\u0C78-\u0C7E\u0D58-\u0D5E\u0D70-\u0D78\u0F2A-\u0F33\u1369-\u137C\u17F0-\u17F9\u19DA\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215F\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA830-\uA835', 'astral': '\uD800[\uDD07-\uDD33\uDD75-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC65\uDDE1-\uDDF4]|\uD805[\uDF3A\uDF3B]|\uD806[\uDCEA-\uDCF2]|\uD807[\uDC5A-\uDC6C\uDFC0-\uDFD4]|\uD81A[\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD83A[\uDCC7-\uDCCF]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]' }, { 'name': 'P', 'alias': 'Punctuation', 'bmp': '!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65', 'astral': '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]' }, { 'name': 'Pc', 'alias': 'Connector_Punctuation', 'bmp': '_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F' }, { 'name': 'Pd', 'alias': 'Dash_Punctuation', 'bmp': '\\-\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D', 'astral': '\uD803\uDEAD' }, { 'name': 'Pe', 'alias': 'Close_Punctuation', 'bmp': '\\)\\]\\}\u0F3B\u0F3D\u169C\u2046\u207E\u208E\u2309\u230B\u232A\u2769\u276B\u276D\u276F\u2771\u2773\u2775\u27C6\u27E7\u27E9\u27EB\u27ED\u27EF\u2984\u2986\u2988\u298A\u298C\u298E\u2990\u2992\u2994\u2996\u2998\u29D9\u29DB\u29FD\u2E23\u2E25\u2E27\u2E29\u3009\u300B\u300D\u300F\u3011\u3015\u3017\u3019\u301B\u301E\u301F\uFD3E\uFE18\uFE36\uFE38\uFE3A\uFE3C\uFE3E\uFE40\uFE42\uFE44\uFE48\uFE5A\uFE5C\uFE5E\uFF09\uFF3D\uFF5D\uFF60\uFF63' }, { 'name': 'Pf', 'alias': 'Final_Punctuation', 'bmp': '\xBB\u2019\u201D\u203A\u2E03\u2E05\u2E0A\u2E0D\u2E1D\u2E21' }, { 'name': 'Pi', 'alias': 'Initial_Punctuation', 'bmp': '\xAB\u2018\u201B\u201C\u201F\u2039\u2E02\u2E04\u2E09\u2E0C\u2E1C\u2E20' }, { 'name': 'Po', 'alias': 'Other_Punctuation', 'bmp': '!-#%-\'\\*,\\.\\/:;\\?@\\\xA1\xA7\xB6\xB7\xBF\u037E\u0387\u055A-\u055F\u0589\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u166E\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u1805\u1807-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203B-\u203E\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205E\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00\u2E01\u2E06-\u2E08\u2E0B\u2E0E-\u2E16\u2E18\u2E19\u2E1B\u2E1E\u2E1F\u2E2A-\u2E2E\u2E30-\u2E39\u2E3C-\u2E3F\u2E41\u2E43-\u2E4F\u2E52\u3001-\u3003\u303D\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFE10-\uFE16\uFE19\uFE30\uFE45\uFE46\uFE49-\uFE4C\uFE50-\uFE52\uFE54-\uFE57\uFE5F-\uFE61\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF07\uFF0A\uFF0C\uFF0E\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3C\uFF61\uFF64\uFF65', 'astral': '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]' }, { 'name': 'Ps', 'alias': 'Open_Punctuation', 'bmp': '\\(\\[\\{\u0F3A\u0F3C\u169B\u201A\u201E\u2045\u207D\u208D\u2308\u230A\u2329\u2768\u276A\u276C\u276E\u2770\u2772\u2774\u27C5\u27E6\u27E8\u27EA\u27EC\u27EE\u2983\u2985\u2987\u2989\u298B\u298D\u298F\u2991\u2993\u2995\u2997\u29D8\u29DA\u29FC\u2E22\u2E24\u2E26\u2E28\u2E42\u3008\u300A\u300C\u300E\u3010\u3014\u3016\u3018\u301A\u301D\uFD3F\uFE17\uFE35\uFE37\uFE39\uFE3B\uFE3D\uFE3F\uFE41\uFE43\uFE47\uFE59\uFE5B\uFE5D\uFF08\uFF3B\uFF5B\uFF5F\uFF62' }, { 'name': 'S', 'alias': 'Symbol', 'bmp': '\\$\\+<->\\^`\\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD', 'astral': '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]' }, { 'name': 'Sc', 'alias': 'Currency_Symbol', 'bmp': '\\$\xA2-\xA5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BF\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6', 'astral': '\uD807[\uDFDD-\uDFE0]|\uD838\uDEFF|\uD83B\uDCB0' }, { 'name': 'Sk', 'alias': 'Modifier_Symbol', 'bmp': '\\^`\xA8\xAF\xB4\xB8\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u309B\u309C\uA700-\uA716\uA720\uA721\uA789\uA78A\uAB5B\uAB6A\uAB6B\uFBB2-\uFBC1\uFF3E\uFF40\uFFE3', 'astral': '\uD83C[\uDFFB-\uDFFF]' }, { 'name': 'Sm', 'alias': 'Math_Symbol', 'bmp': '\\+<->\\|~\xAC\xB1\xD7\xF7\u03F6\u0606-\u0608\u2044\u2052\u207A-\u207C\u208A-\u208C\u2118\u2140-\u2144\u214B\u2190-\u2194\u219A\u219B\u21A0\u21A3\u21A6\u21AE\u21CE\u21CF\u21D2\u21D4\u21F4-\u22FF\u2320\u2321\u237C\u239B-\u23B3\u23DC-\u23E1\u25B7\u25C1\u25F8-\u25FF\u266F\u27C0-\u27C4\u27C7-\u27E5\u27F0-\u27FF\u2900-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2AFF\u2B30-\u2B44\u2B47-\u2B4C\uFB29\uFE62\uFE64-\uFE66\uFF0B\uFF1C-\uFF1E\uFF5C\uFF5E\uFFE2\uFFE9-\uFFEC', 'astral': '\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD83B[\uDEF0\uDEF1]' }, { 'name': 'So', 'alias': 'Other_Symbol', 'bmp': '\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836\uA837\uA839\uAA77-\uAA79\uFDFD\uFFE4\uFFE8\uFFED\uFFEE\uFFFC\uFFFD', 'astral': '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFDC\uDFE1-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838\uDD4F|\uD83B[\uDCAC\uDD2E]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFA]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]' }, { 'name': 'Z', 'alias': 'Separator', 'bmp': ' \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000' }, { 'name': 'Zl', 'alias': 'Line_Separator', 'bmp': '\u2028' }, { 'name': 'Zp', 'alias': 'Paragraph_Separator', 'bmp': '\u2029' }, { 'name': 'Zs', 'alias': 'Space_Separator', 'bmp': ' \xA0\u1680\u2000-\u200A\u202F\u205F\u3000' } ]; var jabref = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.parse = void 0; function decode(s, sep = ';') { s = s.replace(/\n/g, ''); let pos = 0; const records = ['']; while (pos < s.length) { switch (s[pos]) { case '\\': pos++; records[0] += s[pos]; break; case sep: records.unshift(''); break; default: records[0] += s[pos]; } pos++; } return records.reverse().filter(record => record); } const prefixes = { fileDirectory: 'jabref-meta: fileDirectory:', groupsversion: 'jabref-meta: groupsversion:', groupstree: 'jabref-meta: groupstree:', grouping: 'jabref-meta: grouping:', }; /** * Import the JabRef groups from the `@string` comments in which they were stored. You would typically pass the comments parsed by [[bibtex.parse]] in here. * * JabRef knows several group types, and this parser parses most, but not all of them: * * * independent group: the keys listed in the group are the entries that are considered to belong to it * * intersection: the keys listed in the group are considered to belong to the group if they're also in the parent group * * union: the keys listed in the group are considered to belong to the group, and also the keys that are in the parent group * * query: not supported by this parser */ function parse(comments) { const result = { root: [], groups: {}, fileDirectory: '', version: '', }; const levels = []; const decoded = { fileDirectory: null, groupsversion: null, groupstree: null, grouping: null, }; for (const comment of comments) { for (const [meta, prefix] of Object.entries(prefixes)) { if (comment.startsWith(prefix)) { decoded[meta] = decode(comment.substring(prefix.length)); } } } result.version = decoded.groupsversion && decoded.groupsversion[0]; result.fileDirectory = decoded.fileDirectory && decoded.fileDirectory[0]; for (const tree of ['groupstree', 'grouping']) { if (!decoded[tree]) continue; for (const encoded of decoded[tree]) { const fields = decode(encoded); const level_type_name = decode(fields.shift(), ':'); const m = /^([0-9]+) (.+)/.exec(level_type_name[0]); if (!m) break; const level = parseInt(m[1]); const type = m[2]; // test for StaticGroup? if (type === 'AllEntriesGroup') continue; // root const name = level_type_name[1]; const intersection = decode(fields.shift())[0]; const keys = tree === 'grouping' ? [] : fields.map(field => decode(field)[0]); const group = { name, entries: keys, groups: [], }; result.groups[name] = result.groups[name] || group; if (levels.length < level) { levels.push(group); } else { levels[level - 1] = group; } if (level === 1) { result.root.push(group); } else { const parent = levels[level - 2]; switch (intersection) { case '0': // independent break; case '1': // intersect group.entries = group.entries.filter(key => parent.entries.includes(key)); break; case '2': // union group.entries = group.entries.concat(parent.entries.filter(key => !group.entries.includes(key))); break; } levels[level - 2].groups.push(group); } } } return result; } exports.parse = parse; }); var bibtexParser = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.jabref = exports.chunker = exports.ast = exports.parse = void 0; class ParserError extends Error { constructor(message, node) { super(message); // 'Error' breaks prototype chain here Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain this.name = this.constructor.name; this.node = node; } } class TeXError extends Error { constructor(message, node, text) { super(message); // 'Error' breaks prototype chain here Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain this.name = this.constructor.name; this.node = node; this.text = text; } } const charClass = { Lu: categories.filter(cat => ['Uppercase_Letter', 'Titlecase_Letter'].includes(cat.alias)).map(cat => cat.bmp).join(''), Ll: categories.find(cat => cat.alias === 'Lowercase_Letter').bmp, LnotLu: categories.filter(cat => ['Lowercase_Letter', 'Modifier_Letter', 'Other_Letter', 'Nonspacing_Mark', 'Spacing_Mark', 'Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), P: categories.find(cat => cat.alias === 'Punctuation').bmp, L: categories.find(cat => cat.alias === 'Letter').bmp, N: categories.filter(cat => ['Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), AlphaNum: categories.filter(cat => ['Letter', 'Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), LC: categories.find(cat => cat.alias === 'Cased_Letter').bmp, }; const marker = { and: '\u0001', comma: '\u0002', space: '\u0003', literal: '\u0004', markup: '\u0005', re: { and: /./, comma: /./, space: /./, literal: /./, literalName: /./, }, clean(s) { return s.replace(marker.re.space, ' ').replace(marker.re.comma, ', ').replace(marker.re.literal, ''); }, }; marker.re = { and: new RegExp(marker.and, 'g'), comma: new RegExp(marker.comma, 'g'), space: new RegExp(marker.space, 'g'), literal: new RegExp(marker.literal, 'g'), literalName: new RegExp(`^${marker.literal}([^${marker.literal}]*)${marker.literal}$`), }; const preserveCase = { leadingCap: new RegExp(`^[${charClass.Lu}][${charClass.LnotLu}]+[${charClass.P}]?$`), allCaps: new RegExp(`^[${charClass.Lu}${charClass.N}]{2,}$`), allLower: new RegExp(`^[${charClass.Ll}${charClass.N}]{2,}$`), joined: new RegExp(`^[${charClass.Lu}][${charClass.LnotLu}]*([-+][${charClass.L}${charClass.N}]+)*[${charClass.P}]*$`), hasUpper: new RegExp(`[${charClass.Lu}]`), hasLower: new RegExp(`[${charClass.Ll}]`), isNumber: /^[0-9]+$/, hasAlpha: new RegExp(`[${charClass.L}]`), hasAlphaNum: new RegExp(`[${charClass.AlphaNum}]`), notAlphaNum: new RegExp(`[^${charClass.AlphaNum}]`, 'g'), sentenceStart: new RegExp(`(^|([\u2014:?!.]\\s+))[${charClass.Lu}]`, 'g'), markup: /<\/?span[^>]*>/g, acronym: new RegExp(`.*\\.${marker.markup}*[${charClass.Lu}]${marker.markup}*\\.$`), notCaseSensitive: new RegExp(`[^${charClass.LC}]`), isCaseSensitive: new RegExp(`[${charClass.LC}]`), quoted: /("[^"]+")|(“[^“]+“)/g, }; const fields = { creator: [ 'author', 'bookauthor', 'collaborator', 'commentator', 'director', 'editor', 'editora', 'editorb', 'editors', 'holder', 'scriptwriter', 'translator', ], title: [ 'title', 'series', 'shorttitle', 'booktitle', 'type', 'origtitle', 'maintitle', 'eventtitle', ], unnest: [ 'publisher', 'location', ], verbatim: [ 'url', 'doi', 'file', 'files', 'eprint', 'verba', 'verbb', 'verbc', 'groups', ], html: [ 'annotation', 'comment', 'annote', 'review', 'notes', 'note', ], unabbrev: [ 'journal', 'journaltitle', 'journal-full', ], }; const english = [ 'american', 'british', 'canadian', 'english', 'australian', 'newzealand', 'usenglish', 'ukenglish', 'en', 'eng', 'en-au', 'en-bz', 'en-ca', 'en-cb', 'en-gb', 'en-ie', 'en-jm', 'en-nz', 'en-ph', 'en-tt', 'en-us', 'en-za', 'en-zw', 'anglais', ]; class Parser { constructor(options = {}) { this.in_preamble = false; this.preamble = []; this.log = function (str) { }; // tslint:disable-line variable-name only-arrow-functions no-empty for (const [option, value] of Object.entries(options)) { if (typeof value === 'undefined') delete options[option]; } if (options.errorHandler === false) { // tslint:disable-next-line only-arrow-functions no-empty options.errorHandler = function (err) { }; } else if (options.errorHandler === undefined) { // tslint:disable-next-line only-arrow-functions options.errorHandler = function (err) { throw err; }; } if (typeof options.sentenceCase === 'boolean') { options.sentenceCase = options.sentenceCase ? english : []; } else { options.sentenceCase = options.sentenceCase || english; } if (!options.strings) options.strings = {}; if (!options.unabbreviate) options.unabbreviate = {}; if (options.raw) { options.sentenceCase = false; options.caseProtection = false; } this.options = Object.assign({ caseProtection: 'as-needed', verbatimFields: [/^citeulike-linkout-[0-9]+$/, ...fields.verbatim], verbatimCommands: ['url', 'href'], unnestFields: [...fields.title, ...fields.unnest, ...fields.verbatim], unnestMode: 'unwrap', htmlFields: fields.html, guessAlreadySentenceCased: true, markup: {} }, options); const markup_defaults = { enquote: { open: '\u201c', close: '\u201d' }, sub: { open: '', close: '' }, sup: { open: '', close: '' }, bold: { open: '', close: '' }, italics: { open: '', close: '' }, smallCaps: { open: '', close: '' }, caseProtect: { open: '', close: '' }, roman: { open: '', close: '' }, fixedWidth: { open: '', close: '' }, }; // patch in because the options will likely not have enquote and case-protect for (const [markup, { open, close }] of Object.entries(markup_defaults)) { this.options.markup[markup] = this.options.markup[markup] || { open, close }; } for (const i of [1, 2, 3, 4]) { // tslint:disable-line:no-magic-numbers this.options.markup[`h${i}`] = this.options.markup[`h${i}`] || { open: ``, close: `` }; } this.unresolvedStrings = {}; this.errors = []; this.comments = []; this.entries = []; this.strings = {}; this.newcommands = {}; this.default_strings = { JAN: [this.text('01')], FEB: [this.text('02')], MAR: [this.text('03')], APR: [this.text('04')], MAY: [this.text('05')], JUN: [this.text('06')], JUL: [this.text('07')], AUG: [this.text('08')], SEP: [this.text('09')], OCT: [this.text('10')], NOV: [this.text('11')], DEC: [this.text('12')], ACMCS: [this.text('ACM Computing Surveys')], ACTA: [this.text('Acta Informatica')], CACM: [this.text('Communications of the ACM')], IBMJRD: [this.text('IBM Journal of Research and Development')], IBMSJ: [this.text('IBM Systems Journal')], IEEESE: [this.text('IEEE Transactions on Software Engineering')], IEEETC: [this.text('IEEE Transactions on Computers')], IEEETCAD: [this.text('IEEE Transactions on Computer-Aided Design of Integrated Circuits')], IPL: [this.text('Information Processing Letters')], JACM: [this.text('Journal of the ACM')], JCSS: [this.text('Journal of Computer and System Sciences')], SCP: [this.text('Science of Computer Programming')], SICOMP: [this.text('SIAM Journal on Computing')], TOCS: [this.text('ACM Transactions on Computer Systems')], TODS: [this.text('ACM Transactions on Database Systems')], TOG: [this.text('ACM Transactions on Graphics')], TOMS: [this.text('ACM Transactions on Mathematical Software')], TOOIS: [this.text('ACM Transactions on Office Information Systems')], TOPLAS: [this.text('ACM Transactions on Programming Languages and Systems')], TCS: [this.text('Theoretical Computer Science')], }; } ast(input, clean = true) { const _ast = []; for (const chunk of chunker.parse(input)) { let chunk_ast = grammar.parse(chunk.text, Object.assign(Object.assign({}, this.options), { combiningDiacritics: unicode2latex.diacritics.commands })); if (clean) chunk_ast = this.clean(chunk_ast); _ast.push(chunk_ast); } return _ast; } parse(input) { return this.options.async ? this.parseAsync(input) : this.parseSync(input); } parseSync(input) { for (const chunk of chunker.parse(input)) { this.parseChunk(chunk); } return this.parsed(); } async parseAsync(input) { for (const chunk of await chunker.parse(input, { async: true })) { this.parseChunk(chunk); } return this.parsed(); } parsed() { this.field = null; const strings = {}; this.cleaning = { type: 'other' }; for (const [key, value] of Object.entries(this.strings)) { this.field = { name: '@string', text: '', level: 0, preserveRanges: null, words: { upper: 0, lower: 0, other: 0, }, }; this.convert(this.clean(value)); strings[key] = this.field.text; } return { errors: this.errors, entries: this.entries, comments: this.comments, strings, preamble: this.preamble, }; } preserve(start, end, reason) { if (!this.field.preserveRanges) return; if (!end) { this.field.preserveRanges = null; return; } /* this.field.preserveRanges = this.field.preserveRanges.filter(range => range.start < start || range.end > end) if (this.field.preserveRanges.find(range => range.start <= start && range.end >= end)) return */ /* if (this.field.preserveRanges && this.field.preserveRanges.length) { const last = this.field.preserveRanges[this.field.preserveRanges.length - 1] if (start < last.start) throw new Error(JSON.stringify({...last, new: { start, end, reason }, text: this.field.text})) } */ this.field.preserveRanges.push({ start, end, reason }); } parseChunk(chunk) { this.chunk = chunk.text; try { let bib = grammar.parse(chunk.text, Object.assign(Object.assign({}, this.options), { combiningDiacritics: unicode2latex.diacritics.commands })); if (bib.kind !== 'Bibliography') throw new Error(this.show(bib)); bib = this.clean(bib); for (const entity of bib.children) { switch (entity.kind) { case 'Entry': case 'BracedComment': case 'LineComment': case 'PreambleExpression': this.convert(entity); break; case 'StringDeclaration': case 'NonEntryText': break; } } return bib; } catch (err) { if (!err.location) throw err; this.errors.push({ message: err.message, line: err.location.start.line + chunk.offset.line, column: err.location.start.column, source: this.chunk, }); return null; } } show(o) { // tslint:disable-next-line prefer-template let text = JSON.stringify(o); if (this.chunk) text += '\n' + this.chunk.trim(); return text; } text(value = '') { return { kind: 'Text', value, mode: 'text' }; } error(err, returnvalue) { if (typeof this.options.errorHandler === 'function') this.options.errorHandler(err); return returnvalue; } condense(node) { // apply cleaning to resulting children node.value = node.value.map(child => this.clean(child)); // unpack redundant blocks node.value = node.value.reduce((acc, child, i) => { if (child.kind === 'Block' && !child.case && Object.keys(child.markup).length === 0) { acc = acc.concat(child.value); } else { acc.push(child); } return acc; }, []); // condense text nodes to make whole words for sentence casing node.value = node.value.reduce((acc, child, i) => { if (acc.length === 0) { acc.push(child); return acc; } const last = acc[acc.length - 1]; const next = node.value[i + 1]; if (this.options.caseProtection === 'strict' && this.onlyCaseProtected(last) && child.kind === 'Text' && !child.value.match(preserveCase.isCaseSensitive) && this.onlyCaseProtected(next)) { last.value.push(child); delete last.source; return acc; } if (last.kind === 'Block' && child.kind === 'Block' && Object.keys(last.markup).sort().join('/') === Object.keys(child.markup).sort().join('/')) { last.value = last.value.concat(child.value); delete last.source; return acc; } if (last.kind === 'Text' && child.kind === 'Text' && last.mode === child.mode) { last.value += child.value; delete last.source; return acc; } acc.push(child); return acc; }, []); } onlyCaseProtected(node) { return (node === null || node === void 0 ? void 0 : node.kind) === 'Block' && node.case === 'protect' && Object.keys(node.markup).join('/') === ''; } argument(node, kind) { if (!node.arguments || !node.arguments.required.length) return (kind === 'none'); // expect 'n' text arguments if (typeof kind === 'number') { if (node.arguments.required.length !== kind) return false; return node.arguments.required; } // return first argument if it's the only one if (node.arguments.required.length !== 1) return false; // loose checking for text if (kind === 'text') { const first = node.arguments.required[0]; if (first.kind === 'Block' && first.value.length === 1) { if (first.value[0].kind === 'Text') return first.value[0].value; } // fall back to strict kind check kind = 'Text'; } // return first argument if it's the only one and is of the specified kind if (node.arguments.required.length !== 1 || node.arguments.required[0].kind !== kind) return false; switch (kind) { case 'Text': return node.arguments.required[0].value; case 'RegularCommand': case 'Block': return node.arguments.required[0]; } return false; } clean(node) { if (Array.isArray(node)) return node.map(child => this.clean(child)); delete node.loc; switch (node.kind) { case 'InlineMath': case 'DisplayMath': return this.clean_block(node); case 'Environment': return this.clean_environment(node); case 'Block': return this.clean_block(node); case 'Bibliography': return this.clean_bib(node); case 'RegularCommand': return this.clean_command(node); case 'DiacriticCommand': return this.clean_diacritic(node); case 'Entry': return this.clean_entry(node); case 'Field': return this.options.raw ? node : this.clean_field(node); case 'StringDeclaration': return this.clean_stringdecl(node); case 'StringReference': return this.clean_stringref(node); case 'SubscriptCommand': case 'SuperscriptCommand': return this.clean_script(node); case 'SymbolCommand': return this.clean_symbol(node); case 'PreambleExpression': return this.clean_preamble(node); case 'Number': case 'Text': case 'BracedComment': case 'LineComment': return node; default: return this.error(new ParserError(`no cleanup method for ${this.show(node)}`, node), this.text()); } } clean_preamble(node) { this.in_preamble = true; const clean = this.clean(node.value); this.in_preamble = false; return clean; } clean_bib(node) { node.children = node.children.filter(child => child.kind !== 'NonEntryText').map(child => this.clean(child)); return node; } clean_stringdecl(node) { this.strings[node.name.toUpperCase()] = node.value; return node; } clean_stringref(node) { var _a; const name = node.name.toUpperCase(); const _string = this.strings[name] || this.options.strings[name] || this.default_strings[name] || (fields.unabbrev.includes(this.cleaning.name) && ((_a = this.options.unabbreviate[name]) === null || _a === void 0 ? void 0 : _a.text) && [this.text(this.options.unabbreviate[name].text)]); if (!_string) { if (!this.unresolvedStrings[name]) this.errors.push({ message: `Unresolved @string reference ${JSON.stringify(node.name)}` }); this.unresolvedStrings[name] = true; } return this.clean({ kind: 'Block', // if the string isn't found, add it as-is but exempt it from sentence casing case: _string ? undefined : 'preserve', markup: {}, value: _string ? JSON.parse(JSON.stringify(_string)) : [this.text(node.name)], }); } clean_entry(node) { const shortjournals = []; for (const field of node.fields) { if (fields.unabbrev.includes(field.name) && Array.isArray(field.value)) { const abbr = field.value.map(v => v.source).join(''); const journal = this.options.unabbreviate[abbr]; if (journal) { shortjournals.push(Object.assign(Object.assign({}, JSON.parse(JSON.stringify(field))), { name: 'shortjournal' })); field.value = JSON.parse(JSON.stringify(journal.ast)); } } } node.fields = node.fields.concat(shortjournals).map(child => this.clean(child)); return node; } startCleaning(name) { name = name.toLowerCase(); if (fields.title.includes(name)) { this.cleaning = { type: 'title', name }; } else if (fields.creator.includes(name.replace(/s$/, ''))) { this.cleaning = { type: 'creator', name: name.replace(/s$/, '') }; } else { this.cleaning = { type: 'other', name }; } } stripNoCase(node, strip, preserve) { switch (node.kind) { case 'RegularCommand': // a bit cheaty to assume these to be nocased, but it's just more likely to be what people want if (['chsf', 'bibstring', 'cite'].includes(node.command)) strip = true; node.arguments.required.map(arg => this.stripNoCase(arg, strip, preserve)); break; case 'Block': case 'InlineMath': case 'DisplayMath': if (strip && node.case === 'protect') { if (preserve) { node.case = 'preserve'; } else { delete node.case; } } node.value.map(v => this.stripNoCase(v, strip || node.case === 'protect', preserve)); break; case 'Field': if (Array.isArray(node.value)) node.value.map(v => this.stripNoCase(v, strip, preserve)); break; } } isVerbatimField(name) { return !!this.options.verbatimFields.find(p => (typeof p === 'string') ? name === p : name.match(p)); } clean_field(node) { this.startCleaning(node.name); this.stripNoCase(node, !this.options.caseProtection || this.isVerbatimField(node.name), this.options.sentenceCase.length === 0); if (Array.isArray(node.value)) this.condense(node); return node; } clean_script(node) { let m, value, singlechar; // recognize combined forms like \^\circ if (singlechar = unicode2latex.latex[node.source]) return this.text(singlechar); if ((m = node.source.match(/^([\^_])([^{}]+)$/)) && ((singlechar = unicode2latex.latex[`${m[1]}${m[2]}`]) || (singlechar = unicode2latex.latex[`${m[1]}{${m[2]}}`]))) return this.text(singlechar); if ((m = node.source.match(/^([\^_])\{([^{}]+)\}$/)) && ((singlechar = unicode2latex.latex[`${m[1]}${m[2]}`]) || (singlechar = unicode2latex.latex[`${m[1]}{${m[2]}}`]))) return this.text(singlechar); const cmd = node.kind === 'SuperscriptCommand' ? '^' : '_'; if (typeof node.value === 'string' && (singlechar = unicode2latex.latex[`${cmd}${node.value}`] || unicode2latex.latex[`${cmd}{${node.value}}`])) { return this.text(singlechar); } if (typeof node.value === 'string') { value = [this.text(node.value)]; } else if (!Array.isArray(node.value)) { value = [node.value]; } else { value = node.value; } const mode = node.kind === 'SuperscriptCommand' ? 'sup' : 'sub'; return this.clean({ kind: 'Block', markup: { [mode]: true }, value, }); } clean_environment(node) { this.condense(node); return node; } needsProtection(word) { return !word.match(preserveCase.hasUpper) && word.match(preserveCase.hasLower); } clean_block(node) { var _a; this.condense(node); if (this.options.caseProtection !== 'strict' && ((_a = this.cleaning) === null || _a === void 0 ? void 0 : _a.type) === 'title' && node.case === 'protect') { // test whether we can get away with skipping case protection because it contains all words that will be preserved anyway when converting back to Title Case let preserve = true; for (const child of node.value) { if (child.kind === 'Text') { const value = child.value.trim(); preserve = !value.match(preserveCase.isCaseSensitive) || !value.split(/\s+/).find(word => this.needsProtection(word)); } else { preserve = false; } if (!preserve) break; } if (preserve) node.case = 'preserve'; } if (node.kind === 'Block') { for (const [markup, on] of Object.entries(node.markup)) { if (!on) delete node.markup[markup]; } } return node; } clean_diacritic(node) { const char = node.dotless ? `\\${node.character}` : node.character; let unicode = unicode2latex.latex[`\\${node.mark}{${char}}`] || unicode2latex.latex[`\\${node.mark}${char}`] || unicode2latex.latex[`{\\${node.mark} ${char}}`] || unicode2latex.latex[`{\\${node.mark}${char}}`] || unicode2latex.latex[`\\${node.mark} ${char}`]; if (!unicode && !node.dotless && node.character.length === 1 && unicode2latex.diacritics.tounicode[node.mark]) unicode = node.character + unicode2latex.diacritics.tounicode[node.mark]; if (!unicode && !this.in_preamble) return this.error(new TeXError(`Unhandled \\${node.mark}{${char}}`, node, this.chunk), this.text()); return this.text(unicode); } clean_symbol(node) { if (node.command === '\\') return this.text('\n'); return this.text(unicode2latex.latex[`\\${node.command}`] || node.command); } first_text_block(node) { if (!node) return null; if (node.kind === 'Block') { for (const child of node.value) { switch (child.kind) { case 'Text': return child.value ? node : null; case 'Block': const candidate = this.first_text_block(child); if (candidate) return candidate; break; default: return null; } } } else { return null; } } clean_command(node) { var _a; let arg, unicode; if (unicode = unicode2latex.latex[node.source]) return this.text(unicode); switch (node.command) { case 'newcommand': if (((_a = node.arguments) === null || _a === void 0 ? void 0 : _a.required.length) === 2 && node.arguments.required[0].kind === 'Block' && node.arguments.required[0].value.length === 1 && node.arguments.required[0].value[0].kind === 'RegularCommand' && node.arguments.required[1].kind === 'Block') { this.newcommands[node.arguments.required[0].value[0].command] = node.arguments.required[1].value; return this.text(); } // console.log('newcommand?', JSON.stringify(node, null, 2)) break; case 'item': return { kind: 'Markup', value: '
  • ', source: node.source }; case 'frac': if (arg = this.argument(node, 2)) { if (arg[0].kind === 'Text' && arg[1].kind === 'Text' && (unicode = unicode2latex.latex[`\\frac{${arg[0].value}}{${arg[1].value}}`])) return this.text(unicode); return this.clean({ kind: 'Block', case: 'protect', markup: {}, value: [ { kind: 'Block', markup: { sup: true }, value: [arg[0]] }, this.text('\u2044'), { kind: 'Block', markup: { sub: true }, value: [arg[1]] }, ], }); } break; // ignore case 'vspace': case 'vphantom': case 'path': case 'aftergroup': case 'ignorespaces': case 'relax': case 'noopsort': case 'ifdefined': case 'DeclarePrefChars': case 'else': case 'fi': case 'makeatletter': return this.text(); case 'ElsevierGlyph': if (arg = this.argument(node, 'Text')) { if (unicode = unicode2latex.latex[`\\${node.command}{${arg}}`]) return this.text(unicode); return this.text(String.fromCharCode(parseInt(arg, 16))); } break; case 'chsf': if (this.argument(node, 'none')) return this.text(); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'bibstring': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'cite': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'textsuperscript': case 'sp': if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`^{${arg}}`])) return this.text(unicode); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'textsubscript': case 'sb': if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`_{${arg}}`])) return this.text(unicode); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'textsc': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'enquote': case 'mkbibquote': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'textbf': case 'mkbibbold': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'section': case 'subsection': case 'subsubsection': case 'subsubsubsection': if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'mkbibitalic': case 'mkbibemph': case 'textit': case 'emph': if (arg = this.argument(node, 'Block')) return this.clean(arg); if (arg = this.argument(node, 'Text')) return this.clean({ kind: 'Block', markup: { italics: true }, value: [this.text(arg)] }); break; case 'bibcyr': if (this.argument(node, 'none')) return this.text(); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'hspace': case 'mathrm': case 'textrm': case 'ocirc': case 'mbox': if (arg = this.argument(node, 'text')) { unicode = unicode2latex.latex[`\\${node.command}{${arg}}`]; return this.text(unicode || (node.command === 'hspace' ? ' ' : arg)); } else if (!node.arguments.required.length) { return this.text(); } else if (arg = this.argument(node, 'Block')) { return this.clean(arg); } break; // just take the URL? Not the label? case 'href': if (arg = this.argument(node, 2)) return this.clean(arg[0]); break; case 'url': if (arg = this.argument(node, 'Text')) return this.text(arg); if (arg = this.argument(node, 'Block')) return this.clean(arg); break; case 'sl': case 'em': case 'it': case 'itshape': case 'bf': case 'bfseries': case 'sc': case 'scshape': case 'tt': case 'rm': case 'sf': case 'verb': // handled in the grammar return this.text(); // wouldn't know what to do with these case 'left': case 'right': return this.text(); case 'par': return this.text('\n\n'); case 'cyr': if (this.argument(node, 'none')) return this.text(); break; case 'polhk': if (unicode = this.argument(node, 'text')) { if (unicode.length === 1) return this.text(unicode + '\u0328'); } if (this.argument(node, 'none')) return this.text('\u0328'); break; default: if (node.kind === 'RegularCommand' && this.newcommands[node.command]) { return this.clean({ kind: 'Block', markup: {}, value: JSON.parse(JSON.stringify(this.newcommands[node.command])), }); } if (unicode2latex.diacritics.tounicode[node.command]) { node.arguments.required = this.clean(node.arguments.required); let block; if (node.arguments.required.length === 1 && node.arguments.required[0].kind === 'Text') { // no idea why I can't just straight return this but typescript just won't shut up block = { kind: 'Block', markup: {}, value: [{ kind: 'DiacriticCommand', mark: node.command, character: node.arguments.required[0].value, dotless: false, loc: node.arguments.required[0].loc, source: node.arguments.required[0].source, }], }; return this.clean(block); } else if (block = this.first_text_block(node.arguments.required[0])) { let fixed = false; block.value = block.value.reduce((value, child) => { if (!fixed && child.kind === 'Text') { fixed = true; value.push({ kind: 'DiacriticCommand', mark: node.command, character: child.value[0] }); value.push(Object.assign(Object.assign({}, child), { value: child.value.substring(1) })); } else { value.push(child); } return value; }, []); return this.clean({ kind: 'Block', markup: {}, value: node.arguments.required, }); } else { // overline without arguments doesn't seem to render in LaTeX if (node.command === 'overline') return this.text(' '); return this.clean({ kind: 'Block', markup: {}, value: [this.text(' ' + unicode2latex.diacritics.tounicode[node.command])].concat(node.arguments.required), }); } } if (unicode = unicode2latex.latex[node.source] || unicode2latex.latex[`${node.source}{}`]) return this.text(unicode); if ((unicode = unicode2latex.latex[`\\${node.command}`] || unicode2latex.latex[`\\${node.command}{}`]) && this.argument(node, 'none')) return this.text(unicode); if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`\\${node.command}{${arg}}`])) return this.text(unicode); break; } if (this.in_preamble) return this.text(node.source); return this.error(new TeXError(`Unhandled command: ${node.command}` + this.show(node), node, this.chunk), this.text()); } preserveCase(word) { // word = word.replace(new RegExp(`"[${this.markup.enquote.open}${this.markup.enquote.close}:()]`, 'g'), '') var _a, _b; if (!word.trim()) return false; if (!word.match(preserveCase.hasAlphaNum)) return true; word = word.replace(/[\/’'”:()]/g, ''); if (word === 'I') return true; if (word.length === 1) return false; if (word.replace(preserveCase.notCaseSensitive) === '') return false; // word = word.replace(preserveCase.notAlphaNum, '') // simple cap at start of field if (word.match(preserveCase.leadingCap) && ((_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.text) === null || _b === void 0 ? void 0 : _b.length) === 0) return false; if (word.match(preserveCase.allCaps)) return true; if (word.length > 1 && word.match(preserveCase.joined)) return false; if (word.match(preserveCase.hasUpper)) return true; if (word.match(preserveCase.isNumber)) return true; return false; } convert(node) { if (Array.isArray(node)) return node.map(child => this.convert(child)); if (this.options.raw && this.field) node = this.text(node.source); switch (node.kind) { case 'Markup': if (this.field) this.field.text += node.value; break; case 'BracedComment': case 'LineComment': this.comments.push(node.value); break; case 'Entry': this.convert_entry(node); break; case 'Number': this.convert_number(node); break; case 'Text': this.convert_text(node); break; case 'Block': case 'InlineMath': case 'DisplayMath': const start = this.field ? this.field.text.length : null; const preserve = typeof start === 'number' && this.field.preserveRanges; this.convert_block(node); if (preserve && (node.case || node.kind.endsWith('Math'))) this.preserve(start, this.field.text.length); // , `convert-block: case=${node.case}, math=${node.kind.endsWith('Math')}`) break; case 'Environment': this.convert_environment(node); break; case 'PreambleExpression': this.preamble.push(node.value.map(preamble => preamble.source).join('\n\n')); break; case 'DisplayMath': case 'InlineMath': case 'StringDeclaration': break; default: return this.error(new ParserError(`no converter for ${node.kind}: ${this.show(node)}`, node), undefined); } } splitOnce(s, sep, fromEnd = false) { const split = fromEnd ? s.lastIndexOf(sep) : s.indexOf(sep); return (split < 0) ? [s, ''] : [s.substr(0, split), s.substr(split + 1)]; } parseName(name) { let parsed = null; const parts = name.split(marker.comma); if (parts.length && !parts.find(p => !p.match(/^[a-z]+(-i)?=/i))) { // extended name format for (const part of parts) { parsed = parsed || {}; const [attr, value] = this.splitOnce(part.replace(marker.re.space, ''), '=').map(v => v.trim()); if (!value) { parsed = null; break; } switch (attr.toLowerCase()) { case 'family': parsed.lastName = value; break; case 'given-i': parsed.initial = value; break; case 'given': parsed.firstName = value; break; case 'prefix': parsed.prefix = value; break; case 'suffix': parsed.suffix = value; break; case 'useprefix': parsed.useprefix = value.toLowerCase() === 'true'; break; case 'juniorcomma': parsed.useprefix = value.toLowerCase() === 'true'; break; default: parsed[attr.toLowerCase()] = value; break; } } } const prefix = /(.+?)\s+(vere|von|van den|van der|van|de|del|della|der|di|da|pietro|vanden|du|st.|st|la|lo|ter|bin|ibn|te|ten|op|ben|al)\s+(.+)/; let m; switch (parsed ? 0 : parts.length) { case 0: // already parsed break; case 1: // name without commas // literal if (marker.re.literalName.test(parts[0])) { parsed = { literal: parts[0] }; } else if (m = parts[0].replace(marker.re.space, ' ').match(prefix)) { // split on prefix parsed = { firstName: m[1], prefix: m[2], lastName: m[3], }; } else { // top-level "firstname lastname" const [firstName, lastName] = this.splitOnce(parts[0], marker.space, true); if (lastName) { parsed = { firstName, lastName }; } else { parsed = { lastName: firstName }; } } break; case 2: // lastname, firstname parsed = { lastName: parts[0], firstName: parts[1], }; break; default: // lastname, suffix, firstname parsed = { lastName: parts[0], suffix: parts[1], firstName: parts.slice(2).join(marker.comma), }; } for (const [k, v] of Object.entries(parsed)) { if (typeof v !== 'string') continue; parsed[k] = marker.clean(v).trim(); } return parsed; } convert_entry(node) { var _a; this.entry = { key: node.id, type: node.type, fields: {}, creators: {}, }; this.entries.push(this.entry); // order these first for language-dependent sentence casing const order = ['langid', 'hyphenation', 'language']; node.fields.sort((a, b) => { const ia = order.indexOf(a.name); const ib = order.indexOf(b.name); if (ia === -1 && ib === -1) return a.name.localeCompare(b.name); // doesn't matter really if (ia === -1) return 1; if (ib === -1) return -1; return ia - ib; }); let sentenceCase = !!this.options.sentenceCase.length; // if sentenceCase is empty, no sentence casing for (const field of node.fields) { if (field.kind !== 'Field') return this.error(new ParserError(`Expected Field, got ${field.kind}`, node), undefined); this.startCleaning(field.name); /* if (this.options.raw && this.fieldType !== 'creator') { this.entry.fields[field.name] = [ field.value.map(v => v.source).join('') ] continue } */ this.field = { name: field.name, text: '', level: 0, words: { upper: 0, lower: 0, other: 0, }, preserveRanges: (sentenceCase && fields.title.includes(field.name)) ? [] : null, html: this.options.htmlFields.includes(field.name), }; this.entry.fields[this.field.name] = this.entry.fields[this.field.name] || []; // special case for 'title = 2020' if (field.value.kind === 'Number') { this.entry.fields[this.field.name].push(field.value.value); this.field = null; continue; } this.convert(field.value); this.field.text = this.field.text.trim(); this.field.text = this.field.text.replace(/<\/([a-z])><\1>/g, ''); this.field.text = this.field.text.replace(/<([a-z])>(\s*)<\/\1>/g, '$1'); if (!this.field.text) continue; // disable sentenceCasing if not an english switch (this.field.name) { case 'langid': case 'hyphenation': sentenceCase = sentenceCase && this.options.sentenceCase.includes(this.field.text.toLowerCase()); break; case 'language': sentenceCase = sentenceCase && !!(this.field.text.toLowerCase().trim().split(/\s*,\s*/).find(lang => this.options.sentenceCase.includes(lang))); break; } // "groups" is a jabref 3.8+ monstrosity if (this.field.name.match(/^(keywords?|groups)$/)) { for (let text of this.field.text.split(marker.comma)) { text = text.trim(); if (text) this.entry.fields[this.field.name].push(text); } } else if (this.cleaning.type === 'creator') { if (!this.entry.creators[this.field.name]) this.entry.creators[this.field.name] = []; // {M. Halle, J. Bresnan, and G. Miller} if (this.field.text.includes(`${marker.comma}${marker.and}`)) { // this.field.text = this.field.text.replace(new RegExp(`${marker.comma}${marker.and}`, 'g'), marker.and).replace(new RegExp(marker.comma), marker.and); } for (const creator of this.field.text.split(marker.and)) { this.entry.fields[this.field.name].push(marker.clean(creator)); this.entry.creators[this.field.name].push(this.parseName(creator)); } } else if (fields.unabbrev.includes(field.name)) { // doesn't get sentence casing anyhow TODO: booktitle does! this.entry.fields[this.field.name].push((((_a = this.options.unabbreviate[this.field.text]) === null || _a === void 0 ? void 0 : _a.text) || this.field.text).normalize('NFC')); } else { if (this.field.preserveRanges) { if (this.options.guessAlreadySentenceCased && Math.max(this.field.words.upper, this.field.words.lower) > (this.field.words.other + Math.min(this.field.words.upper, this.field.words.lower))) { this.preserve(null, null); // , 'mostly sentence cased already') } else { const txt = this.field.text.replace(preserveCase.markup, markup => marker.markup.repeat(markup.length)); let match; preserveCase.sentenceStart.lastIndex = 0; while ((match = preserveCase.sentenceStart.exec(txt))) { // exclude stuff like "U.S. Taxes" if (match.index > 2 && txt.substr(0, match.index + 1).match(preserveCase.acronym)) continue; this.preserve(match.index, match.index + match[0].length); // , `sentenceStart: ${match[0]} at ${match.index}..${match.index + match[0].length}`) } preserveCase.quoted.lastIndex = 0; while ((match = preserveCase.quoted.exec(this.field.text))) { this.preserve(match.index, match.index + match[0].length); // , 'quoted') } } } this.entry.fields[this.field.name].push(this.convertToSentenceCase(this.field.text).normalize('NFC')); } } this.field = null; } convertToSentenceCase(text) { if (!this.field.preserveRanges) return text; // always keep the leading char, but skip markup const lead = text.match(/^(<[^>]+>)*./); if (lead) { this.preserve(lead[0].length - 1, lead[0].length); } else { this.preserve(0, 1); } let sentenceCased = text.toLowerCase().replace(/(([\?!]\s*|^)([\'\"¡¿“‘„«\s]+)?[^\s])/g, x => x.toUpperCase()); for (const { start, end } of this.field.preserveRanges) { sentenceCased = sentenceCased.substring(0, start) + text.substring(start, end) + sentenceCased.substring(end); } if (text !== sentenceCased) this.entry.sentenceCased = true; return sentenceCased; } convert_number(node) { this.field.text += `${node.value}`; } convert_text(node) { if (node.mode === 'verbatim') { this.field.text += node.value.trim(); return; } // heuristic to detect pre-sentencecased text for (const word of node.value.split(/\b/)) { if (word.match(preserveCase.allLower)) { this.field.words.lower++; } else if (word.match(preserveCase.allCaps)) { this.field.words.upper++; } else if (word.match(preserveCase.hasAlpha)) { this.field.words.other++; } } if (this.field.level === 0 && this.cleaning.type === 'creator') { this.field.text += node.value.replace(/\s+and\s+/ig, marker.and).replace(/\s*,\s*/g, marker.comma).replace(/\s+/g, marker.space); return; } if (this.field.level === 0 && this.field.name.match(/^(keywords?|groups)$/)) { this.field.text += node.value.replace(/\s*[;,]\s*/g, marker.comma); return; } if (this.field.html) { this.field.text += node.value.replace(/&/g, '&').replace(//g, '>'); } else if (this.field.preserveRanges) { const words = node.value.split(/(\s+)/); for (const word of words) { const start = this.field.text.length; this.field.text += word; if (this.preserveCase(word)) this.preserve(start, this.field.text.length); // , `word: ${JSON.stringify(word)}`) } } else { this.field.text += node.value; } } convert_environment(node) { this.field.text += { enumerate: '
      ', itemize: '
        ' }[node.env]; this.convert_block(Object.assign(Object.assign({}, node), { kind: 'Block', markup: {} })); this.field.text += { enumerate: '
    ', itemize: '' }[node.env]; } convert_block(node) { const start = this.field.text.length; let prefix = ''; let postfix = ''; if (this.options.caseProtection !== 'strict' && this.cleaning.type === 'other') delete node.case; if (this.cleaning.type === 'creator' && node.case === 'protect') { prefix += marker.literal; postfix = marker.literal + postfix; delete node.case; } if (node.case === 'protect') { prefix += this.options.markup.caseProtect.open; postfix = this.options.markup.caseProtect.close + postfix; } if (node.kind === 'Block') { for (const markup of Object.keys(node.markup)) { if (!this.options.markup[markup]) return this.error(new ParserError(`markup: ${markup}`, node), undefined); prefix += this.options.markup[markup].open; postfix = this.options.markup[markup].close + postfix; } } const end = { withoutPrefix: this.field.text.length, withPrefix: this.field.text.length + prefix.length, }; this.field.text += prefix; this.field.level++; this.convert(node.value); this.field.level--; const added = this.field.text.substring(end.withPrefix); const added_text = added.replace(/<\/?[^>]+>/g, ''); const needsProtection = added_text && ((this.options.caseProtection === 'strict' && added_text.match(preserveCase.isCaseSensitive)) || (this.options.caseProtection === 'as-needed' && added_text.split(/\s+/).find(word => this.needsProtection(word)))); if (!added) { // nothing was added, so remove prefix this.field.text = this.field.text.substring(0, end.withoutPrefix); } else if (this.field.preserveRanges && prefix === this.options.markup.caseProtect.open && !needsProtection) { // something was added that didn't actually need case protection this.field.text = this.field.text.substring(0, end.withoutPrefix) + added; this.field.preserveRanges = this.field.preserveRanges.filter(range => range.start < end.withoutPrefix); } else { this.field.text += postfix; } this.field.text = this.field.text.replace(/<(sup|sub)>([^<>]+)<\/\1>$/i, (m, mode, chars) => { const cmd = mode === 'sup' ? '^' : '_'; let script = ''; for (const char of chars) { const unicode = unicode2latex.latex[`${cmd}${char}`] || unicode2latex.latex[`${cmd}{${char}}`]; script += unicode ? unicode : `<${mode}>${char}`; } script = script.replace(new RegExp(`<${mode}>`, 'g'), ''); return script.length < m.length ? script : m; }); if (node.case && this.field.preserveRanges) this.preserve(start, this.field.text.length); // , 'in convert-block ' + node.source || '') } } /** * parse bibtex. This will try to convert TeX commands into unicode equivalents, and apply `@string` expansion */ function parse(input, options = {}) { const parser = new Parser(options); return parser.parse(input); } exports.parse = parse; function ast(input, options = {}, clean = true) { const parser = new Parser(options); return parser.ast(input, clean); } exports.ast = ast; var chunker_2 = chunker; Object.defineProperty(exports, "chunker", { enumerable: true, get: function () { return chunker_2.parse; } }); Object.defineProperty(exports, "jabref", { enumerable: true, get: function () { return jabref.parse; } }); }); var Library = /** @class */ (function () { function Library(entries) { this.entries = entries; } Object.defineProperty(Library.prototype, "size", { get: function () { return Object.keys(this.entries).length; }, enumerable: false, configurable: true }); /** * For the given citekey, find the corresponding `Entry` and return a * collection of template variable assignments. */ Library.prototype.getTemplateVariablesForCitekey = function (citekey) { var _a; var entry = this.entries[citekey]; var shortcuts = { citekey: citekey, abstract: entry.abstract, authorString: entry.authorString, containerTitle: entry.containerTitle, DOI: entry.DOI, eprint: entry.eprint, eprinttype: entry.eprinttype, eventPlace: entry.eventPlace, note: entry.note, page: entry.page, publisher: entry.publisher, publisherPlace: entry.publisherPlace, title: entry.title, titleShort: entry.titleShort, URL: entry.URL, year: (_a = entry.year) === null || _a === void 0 ? void 0 : _a.toString(), zoteroSelectURI: entry.zoteroSelectURI, }; return __assign({ entry: entry.toJSON() }, shortcuts); }; return Library; }()); /** * Load reference entries from the given raw database data. * * Returns a list of `EntryData`, which should be wrapped with the relevant * adapter and used to instantiate a `Library`. */ function loadEntries(databaseRaw, databaseType) { var libraryArray; if (databaseType == 'csl-json') { libraryArray = JSON.parse(databaseRaw); } else if (databaseType == 'biblatex') { var options = { errorHandler: function (err) { console.warn('Citation plugin: non-fatal error loading BibLaTeX entry:', err); }, }; var parsed = bibtexParser.parse(databaseRaw, options); parsed.errors.forEach(function (error) { console.error("Citation plugin: fatal error loading BibLaTeX entry" + (" (line " + error.line + ", column " + error.column + "):"), error.message); }); libraryArray = parsed.entries; } return libraryArray; } /** * An `Entry` represents a single reference in a reference database. * Each entry has a unique identifier, known in most reference managers as its * "citekey." */ var Entry = /** @class */ (function () { function Entry() { } Object.defineProperty(Entry.prototype, "year", { get: function () { var _a; return this._year ? parseInt(this._year) : (_a = this.issuedDate) === null || _a === void 0 ? void 0 : _a.getUTCFullYear(); }, enumerable: false, configurable: true }); Object.defineProperty(Entry.prototype, "note", { get: function () { var _a; return (_a = this._note) === null || _a === void 0 ? void 0 : _a.map(function (el) { return el.replace(/(zotero:\/\/.+)/g, '[Link]($1)'); }).join('\n\n'); }, enumerable: false, configurable: true }); Object.defineProperty(Entry.prototype, "zoteroSelectURI", { /** * A URI which will open the relevant entry in the Zotero client. */ get: function () { return "zotero://select/items/@" + this.id; }, enumerable: false, configurable: true }); Entry.prototype.toJSON = function () { var _this = this; var jsonObj = Object.assign({}, this); // add getter values var proto = Object.getPrototypeOf(this); Object.entries(Object.getOwnPropertyDescriptors(proto)) .filter(function (_a) { var descriptor = _a[1]; return typeof descriptor.get == 'function'; }) .forEach(function (_a) { var key = _a[0], descriptor = _a[1]; if (descriptor && key[0] !== '_') { try { var val = _this[key]; jsonObj[key] = val; } catch (error) { return; } } }); return jsonObj; }; return Entry; }()); var EntryCSLAdapter = /** @class */ (function (_super) { __extends(EntryCSLAdapter, _super); function EntryCSLAdapter(data) { var _this = _super.call(this) || this; _this.data = data; _this.eprint = null; _this.eprinttype = null; _this.files = null; return _this; } Object.defineProperty(EntryCSLAdapter.prototype, "id", { get: function () { return this.data.id; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "type", { get: function () { return this.data.type; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "abstract", { get: function () { return this.data.abstract; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "author", { get: function () { return this.data.author; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "authorString", { get: function () { return this.data.author ? this.data.author.map(function (a) { return a.given + " " + a.family; }).join(', ') : null; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "containerTitle", { get: function () { return this.data['container-title']; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "DOI", { get: function () { return this.data.DOI; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "eventPlace", { get: function () { return this.data['event-place']; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "issuedDate", { get: function () { if (!(this.data.issued && this.data.issued['date-parts'] && this.data.issued['date-parts'][0].length > 0)) return null; var _a = this.data.issued['date-parts'][0], year = _a[0], month = _a[1], day = _a[2]; return new Date(Date.UTC(year, (month || 1) - 1, day || 1)); }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "page", { get: function () { return this.data.page; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "publisher", { get: function () { return this.data.publisher; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "publisherPlace", { get: function () { return this.data['publisher-place']; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "title", { get: function () { return this.data.title; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "titleShort", { get: function () { return this.data['title-short']; }, enumerable: false, configurable: true }); Object.defineProperty(EntryCSLAdapter.prototype, "URL", { get: function () { return this.data.URL; }, enumerable: false, configurable: true }); return EntryCSLAdapter; }(Entry)); var BIBLATEX_PROPERTY_MAPPING = { abstract: 'abstract', booktitle: '_containerTitle', date: 'issued', doi: 'DOI', eprint: 'eprint', eprinttype: 'eprinttype', eventtitle: 'event', journal: '_containerTitle', journaltitle: '_containerTitle', location: 'publisherPlace', pages: 'page', shortjournal: 'containerTitleShort', title: 'title', shorttitle: 'titleShort', url: 'URL', venue: 'eventPlace', year: '_year', publisher: 'publisher', note: '_note', }; // BibLaTeX parser returns arrays of property values (allowing for repeated // property entries). For the following fields, just blindly take the first. var BIBLATEX_PROPERTY_TAKE_FIRST = [ 'abstract', 'booktitle', '_containerTitle', 'date', 'doi', 'eprint', 'eprinttype', 'eventtitle', 'journaltitle', 'location', 'pages', 'shortjournal', 'title', 'shorttitle', 'url', 'venue', '_year', 'publisher', ]; var EntryBibLaTeXAdapter = /** @class */ (function (_super) { __extends(EntryBibLaTeXAdapter, _super); function EntryBibLaTeXAdapter(data) { var _this = _super.call(this) || this; _this.data = data; Object.entries(BIBLATEX_PROPERTY_MAPPING).forEach(function (map) { var src = map[0], tgt = map[1]; if (src in _this.data.fields) { var val = _this.data.fields[src]; if (BIBLATEX_PROPERTY_TAKE_FIRST.includes(src)) { val = val[0]; } _this[tgt] = val; } }); return _this; } Object.defineProperty(EntryBibLaTeXAdapter.prototype, "id", { get: function () { return this.data.key; }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "type", { get: function () { return this.data.type; }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "files", { get: function () { // For some reason the bibtex parser doesn't reliably parse file list to // array ; so we'll do it manually / redundantly var ret = []; if (this.data.fields.file) { ret = ret.concat(this.data.fields.file.flatMap(function (x) { return x.split(';'); })); } if (this.data.fields.files) { ret = ret.concat(this.data.fields.files.flatMap(function (x) { return x.split(';'); })); } return ret; }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "authorString", { get: function () { var _a; if (this.data.creators.author) { var names = this.data.creators.author.map(function (name) { if (name.literal) return name.literal; var parts = [name.firstName, name.prefix, name.lastName, name.suffix]; // Drop any null parts and join return parts.filter(function (x) { return x; }).join(' '); }); return names.join(', '); } else { return (_a = this.data.fields.author) === null || _a === void 0 ? void 0 : _a.join(', '); } }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "containerTitle", { get: function () { if (this._containerTitle) { return this._containerTitle; } else if (this.data.fields.eprint) { var prefix = this.data.fields.eprinttype ? this.data.fields.eprinttype + ":" : ''; var suffix = this.data.fields.primaryclass ? " [" + this.data.fields.primaryclass + "]" : ''; return "" + prefix + this.data.fields.eprint + suffix; } }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "issuedDate", { get: function () { return this.issued ? new Date(this.issued) : null; }, enumerable: false, configurable: true }); Object.defineProperty(EntryBibLaTeXAdapter.prototype, "author", { get: function () { var _a; return (_a = this.data.creators.author) === null || _a === void 0 ? void 0 : _a.map(function (a) { return ({ given: a.firstName, family: a.lastName, }); }); }, enumerable: false, configurable: true }); return EntryBibLaTeXAdapter; }(Entry)); register(function (msg) { return loadEntries(msg.databaseRaw, msg.databaseType); }); }()); }, 'data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyJ3b3JrZXI6Ly93ZWItd29ya2VyL25vZGVfbW9kdWxlcy9wcm9taXNlLXdvcmtlci9yZWdpc3Rlci5qcyIsIndvcmtlcjovL3dlYi13b3JrZXIvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIndvcmtlcjovL3dlYi13b3JrZXIvbm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvZ3JhbW1hci5qcyIsIndvcmtlcjovL3dlYi13b3JrZXIvbm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvY2h1bmtlci5qcyIsIndvcmtlcjovL3dlYi13b3JrZXIvbm9kZV9tb2R1bGVzL3VuaWNvZGUybGF0ZXgvaW5kZXguanMiLCJ3b3JrZXI6Ly93ZWItd29ya2VyL25vZGVfbW9kdWxlcy94cmVnZXhwL3Rvb2xzL291dHB1dC9jYXRlZ29yaWVzLmpzIiwid29ya2VyOi8vd2ViLXdvcmtlci9ub2RlX21vZHVsZXMvQHJldG9ycXVlcmUvYmlidGV4LXBhcnNlci9qYWJyZWYuanMiLCJ3b3JrZXI6Ly93ZWItd29ya2VyL25vZGVfbW9kdWxlcy9AcmV0b3JxdWVyZS9iaWJ0ZXgtcGFyc2VyL2luZGV4LmpzIiwic3JjL3R5cGVzLnRzIiwic3JjL3dvcmtlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gaXNQcm9taXNlIChvYmopIHtcbiAgLy8gdmlhIGh0dHBzOi8vdW5wa2cuY29tL2lzLXByb21pc2VAMi4xLjAvaW5kZXguanNcbiAgcmV0dXJuICEhb2JqICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJQcm9taXNlV29ya2VyIChjYWxsYmFjaykge1xuICBmdW5jdGlvbiBwb3N0T3V0Z29pbmdNZXNzYWdlIChlLCBtZXNzYWdlSWQsIGVycm9yLCByZXN1bHQpIHtcbiAgICBmdW5jdGlvbiBwb3N0TWVzc2FnZSAobXNnKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICh0eXBlb2Ygc2VsZi5wb3N0TWVzc2FnZSAhPT0gJ2Z1bmN0aW9uJykgeyAvLyBzZXJ2aWNlIHdvcmtlclxuICAgICAgICBlLnBvcnRzWzBdLnBvc3RNZXNzYWdlKG1zZylcbiAgICAgIH0gZWxzZSB7IC8vIHdlYiB3b3JrZXJcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShtc2cpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgJ2Vycm9yJyBpbiBjb25zb2xlKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgdG8gbWFrZSBlcnJvcnMgZWFzaWVyIHRvIGRlYnVnLiBJIHRoaW5rIGl0J3MgaW1wb3J0YW50XG4gICAgICAgIC8vIGVub3VnaCB0byBqdXN0IGxlYXZlIGhlcmUgd2l0aG91dCBnaXZpbmcgdGhlIHVzZXIgYW4gb3B0aW9uXG4gICAgICAgIC8vIHRvIHNpbGVuY2UgaXQuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dvcmtlciBjYXVnaHQgYW4gZXJyb3I6JywgZXJyb3IpXG4gICAgICB9XG4gICAgICBwb3N0TWVzc2FnZShbbWVzc2FnZUlkLCB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2VcbiAgICAgIH1dKVxuICAgIH0gZWxzZSB7XG4gICAgICBwb3N0TWVzc2FnZShbbWVzc2FnZUlkLCBudWxsLCByZXN1bHRdKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoRnVuYyAoY2FsbGJhY2ssIG1lc3NhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgcmVzOiBjYWxsYmFjayhtZXNzYWdlKSB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHsgZXJyOiBlIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVJbmNvbWluZ01lc3NhZ2UgKGUsIGNhbGxiYWNrLCBtZXNzYWdlSWQsIG1lc3NhZ2UpIHtcbiAgICB2YXIgcmVzdWx0ID0gdHJ5Q2F0Y2hGdW5jKGNhbGxiYWNrLCBtZXNzYWdlKVxuXG4gICAgaWYgKHJlc3VsdC5lcnIpIHtcbiAgICAgIHBvc3RPdXRnb2luZ01lc3NhZ2UoZSwgbWVzc2FnZUlkLCByZXN1bHQuZXJyKVxuICAgIH0gZWxzZSBpZiAoIWlzUHJvbWlzZShyZXN1bHQucmVzKSkge1xuICAgICAgcG9zdE91dGdvaW5nTWVzc2FnZShlLCBtZXNzYWdlSWQsIG51bGwsIHJlc3VsdC5yZXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5yZXMudGhlbihmdW5jdGlvbiAoZmluYWxSZXN1bHQpIHtcbiAgICAgICAgcG9zdE91dGdvaW5nTWVzc2FnZShlLCBtZXNzYWdlSWQsIG51bGwsIGZpbmFsUmVzdWx0KVxuICAgICAgfSwgZnVuY3Rpb24gKGZpbmFsRXJyb3IpIHtcbiAgICAgICAgcG9zdE91dGdvaW5nTWVzc2FnZShlLCBtZXNzYWdlSWQsIGZpbmFsRXJyb3IpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uSW5jb21pbmdNZXNzYWdlIChlKSB7XG4gICAgdmFyIHBheWxvYWQgPSBlLmRhdGFcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGF5bG9hZCkgfHwgcGF5bG9hZC5sZW5ndGggIT09IDIpIHtcbiAgICAgIC8vIG1lc3NhZ2UgZG9lbnMndCBtYXRjaCBjb21tdW5pY2F0aW9uIGZvcm1hdDsgaWdub3JlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdmFyIG1lc3NhZ2VJZCA9IHBheWxvYWRbMF1cbiAgICB2YXIgbWVzc2FnZSA9IHBheWxvYWRbMV1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBvc3RPdXRnb2luZ01lc3NhZ2UoZSwgbWVzc2FnZUlkLCBuZXcgRXJyb3IoXG4gICAgICAgICdQbGVhc2UgcGFzcyBhIGZ1bmN0aW9uIGludG8gcmVnaXN0ZXIoKS4nKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlSW5jb21pbmdNZXNzYWdlKGUsIGNhbGxiYWNrLCBtZXNzYWdlSWQsIG1lc3NhZ2UpXG4gICAgfVxuICB9XG5cbiAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25JbmNvbWluZ01lc3NhZ2UpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXJQcm9taXNlV29ya2VyXG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByaXZhdGVNYXAuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHByaXZhdGVNYXAsIHZhbHVlKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZU1hcC5zZXQocmVjZWl2ZXIsIHZhbHVlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG4iLCIvKlxuICogR2VuZXJhdGVkIGJ5IFBFRy5qcyAwLjEwLjAuXG4gKlxuICogaHR0cDovL3BlZ2pzLm9yZy9cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gcGVnJHN1YmNsYXNzKGNoaWxkLCBwYXJlbnQpIHtcbiAgZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9XG4gIGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTtcbiAgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTtcbn1cblxuZnVuY3Rpb24gcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgdGhpcy5tZXNzYWdlICA9IG1lc3NhZ2U7XG4gIHRoaXMuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgdGhpcy5mb3VuZCAgICA9IGZvdW5kO1xuICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4gIHRoaXMubmFtZSAgICAgPSBcIlN5bnRheEVycm9yXCI7XG5cbiAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgcGVnJFN5bnRheEVycm9yKTtcbiAgfVxufVxuXG5wZWckc3ViY2xhc3MocGVnJFN5bnRheEVycm9yLCBFcnJvcik7XG5cbnBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UgPSBmdW5jdGlvbihleHBlY3RlZCwgZm91bmQpIHtcbiAgdmFyIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOUyA9IHtcbiAgICAgICAgbGl0ZXJhbDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGV4cGVjdGF0aW9uLnRleHQpICsgXCJcXFwiXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjbGFzc1wiOiBmdW5jdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgIHZhciBlc2NhcGVkUGFydHMgPSBcIlwiLFxuICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGF0aW9uLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlc2NhcGVkUGFydHMgKz0gZXhwZWN0YXRpb24ucGFydHNbaV0gaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICAgICAgICA/IGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldWzBdKSArIFwiLVwiICsgY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV1bMV0pXG4gICAgICAgICAgICAgIDogY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBcIltcIiArIChleHBlY3RhdGlvbi5pbnZlcnRlZCA/IFwiXlwiIDogXCJcIikgKyBlc2NhcGVkUGFydHMgKyBcIl1cIjtcbiAgICAgICAgfSxcblxuICAgICAgICBhbnk6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiYW55IGNoYXJhY3RlclwiO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVuZDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJlbmQgb2YgaW5wdXRcIjtcbiAgICAgICAgfSxcblxuICAgICAgICBvdGhlcjogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24uZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgZnVuY3Rpb24gaGV4KGNoKSB7XG4gICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBsaXRlcmFsRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAgJ1xcXFxcIicpXG4gICAgICAucmVwbGFjZSgvXFwwL2csICdcXFxcMCcpXG4gICAgICAucmVwbGFjZSgvXFx0L2csICdcXFxcdCcpXG4gICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCAgICAgICAgICBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4MCcgKyBoZXgoY2gpOyB9KVxuICAgICAgLnJlcGxhY2UoL1tcXHgxMC1cXHgxRlxceDdGLVxceDlGXS9nLCBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4JyAgKyBoZXgoY2gpOyB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsYXNzRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cXF0vZywgJ1xcXFxdJylcbiAgICAgIC5yZXBsYWNlKC9cXF4vZywgJ1xcXFxeJylcbiAgICAgIC5yZXBsYWNlKC8tL2csICAnXFxcXC0nKVxuICAgICAgLnJlcGxhY2UoL1xcMC9nLCAnXFxcXDAnKVxuICAgICAgLnJlcGxhY2UoL1xcdC9nLCAnXFxcXHQnKVxuICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKVxuICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgICAgICAgICAgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceDAnICsgaGV4KGNoKTsgfSlcbiAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceCcgICsgaGV4KGNoKTsgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgcmV0dXJuIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOU1tleHBlY3RhdGlvbi50eXBlXShleHBlY3RhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkKSB7XG4gICAgdmFyIGRlc2NyaXB0aW9ucyA9IG5ldyBBcnJheShleHBlY3RlZC5sZW5ndGgpLFxuICAgICAgICBpLCBqO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXNjcmlwdGlvbnNbaV0gPSBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGVkW2ldKTtcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbnMuc29ydCgpO1xuXG4gICAgaWYgKGRlc2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2kgLSAxXSAhPT0gZGVzY3JpcHRpb25zW2ldKSB7XG4gICAgICAgICAgZGVzY3JpcHRpb25zW2pdID0gZGVzY3JpcHRpb25zW2ldO1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVzY3JpcHRpb25zLmxlbmd0aCA9IGo7XG4gICAgfVxuXG4gICAgc3dpdGNoIChkZXNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF07XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc1swXSArIFwiIG9yIFwiICsgZGVzY3JpcHRpb25zWzFdO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zLnNsaWNlKDAsIC0xKS5qb2luKFwiLCBcIilcbiAgICAgICAgICArIFwiLCBvciBcIlxuICAgICAgICAgICsgZGVzY3JpcHRpb25zW2Rlc2NyaXB0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUZvdW5kKGZvdW5kKSB7XG4gICAgcmV0dXJuIGZvdW5kID8gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGZvdW5kKSArIFwiXFxcIlwiIDogXCJlbmQgb2YgaW5wdXRcIjtcbiAgfVxuXG4gIHJldHVybiBcIkV4cGVjdGVkIFwiICsgZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkgKyBcIiBidXQgXCIgKyBkZXNjcmliZUZvdW5kKGZvdW5kKSArIFwiIGZvdW5kLlwiO1xufTtcblxuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDoge307XG5cbiAgdmFyIHBlZyRGQUlMRUQgPSB7fSxcblxuICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyA9IHsgQmlibGlvZ3JhcGh5OiBwZWckcGFyc2VCaWJsaW9ncmFwaHkgfSxcbiAgICAgIHBlZyRzdGFydFJ1bGVGdW5jdGlvbiAgPSBwZWckcGFyc2VCaWJsaW9ncmFwaHksXG5cbiAgICAgIHBlZyRjMCA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0JpYmxpb2dyYXBoeScsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiByLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMSA9IFwiQFwiLFxuICAgICAgcGVnJGMyID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIkBcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMzID0gXCJjb21tZW50XCIsXG4gICAgICBwZWckYzQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiY29tbWVudFwiLCB0cnVlKSxcbiAgICAgIHBlZyRjNSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0JyYWNlZENvbW1lbnQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdi5zbGljZSgxLCAtMSksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM2ID0gL15bXlxcblxccl0vLFxuICAgICAgcGVnJGM3ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiXFxuXCIsIFwiXFxyXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzggPSAvXltcXG5cXHJdLyxcbiAgICAgIHBlZyRjOSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcblwiLCBcIlxcclwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTAgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdMaW5lQ29tbWVudCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVXaGl0ZXNwYWNlKHYpLFxuICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgcGVnJGMxMSA9IC9eW15AXS8sXG4gICAgICBwZWckYzEyID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiQFwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMyA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ05vbkVudHJ5VGV4dCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVXaGl0ZXNwYWNlKHYpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTQgPSBmdW5jdGlvbihuKSB7IHJldHVybiBuOyB9LFxuICAgICAgcGVnJGMxNSA9IFwie1wiLFxuICAgICAgcGVnJGMxNiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ7XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTcgPSAvXltee31dLyxcbiAgICAgIHBlZyRjMTggPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJ7XCIsIFwifVwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxOSA9IFwifVwiLFxuICAgICAgcGVnJGMyMCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ9XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMjEgPSBmdW5jdGlvbihjb21tZW50KSB7IHJldHVybiAneycgKyBjb21tZW50LmpvaW4oJycpICsgJ30nIH0sXG4gICAgICBwZWckYzIyID0gL15bQS1aYS16XS8sXG4gICAgICBwZWckYzIzID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIkFcIiwgXCJaXCJdLCBbXCJhXCIsIFwielwiXV0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzI0ID0gL15bKHtdLyxcbiAgICAgIHBlZyRjMjUgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCIoXCIsIFwie1wiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMjYgPSAvXlt9KV0vLFxuICAgICAgcGVnJGMyNyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIn1cIiwgXCIpXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMyOCA9IGZ1bmN0aW9uKHR5cGUsIGlkLCBmaWVsZHMpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0VudHJ5JyxcbiAgICAgICAgICAgIGlkOiBpZCB8fCAnJyxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZHMsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMyOSA9IFwicHJlYW1ibGVcIixcbiAgICAgIHBlZyRjMzAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwicHJlYW1ibGVcIiwgdHJ1ZSksXG4gICAgICBwZWckYzMxID0gZnVuY3Rpb24ob3BlbmVyLCB2LCBjbG9zZXIpIHtcbiAgICAgICAgICBzd2l0Y2ggKG9wZW5lciArIGNsb3Nlcikge1xuICAgICAgICAgICAgY2FzZSAne30nOlxuICAgICAgICAgICAgY2FzZSAnKCknOlxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmJhbGFuY2VkIG9wZW5lci1jbG9zZXIgZm9yIHByZWFtYmxlOiAke29wZW5lcn0uLi4ke2Nsb3Nlcn1gKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1ByZWFtYmxlRXhwcmVzc2lvbicsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzMyID0gXCJzdHJpbmdcIixcbiAgICAgIHBlZyRjMzMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwic3RyaW5nXCIsIHRydWUpLFxuICAgICAgcGVnJGMzNCA9IGZ1bmN0aW9uKGssIHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1N0cmluZ0RlY2xhcmF0aW9uJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbmFtZTogayxcbiAgICAgICAgICAgIHZhbHVlOiB2LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzM1ID0gL15bXiBcXHRcXHJcXG4sXS8sXG4gICAgICBwZWckYzM2ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiIFwiLCBcIlxcdFwiLCBcIlxcclwiLCBcIlxcblwiLCBcIixcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMzcgPSBcIixcIixcbiAgICAgIHBlZyRjMzggPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiLFwiLCBmYWxzZSksXG4gICAgICBwZWckYzM5ID0gZnVuY3Rpb24oaWQpIHsgcmV0dXJuIGlkOyB9LFxuICAgICAgcGVnJGM0MCA9IGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJuIGlzVmVyYmF0aW1GaWVsZChuYW1lKSAmJiB1bm5lc3RGaWVsZHMuaW5jbHVkZXMobmFtZSkgfSxcbiAgICAgIHBlZyRjNDEgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyB3YXMgYWJ1c2VkIHNvIG11Y2gsIG1hbnkgcHJvY2Vzc29ycyB0cmVhdCBkb3VibGUtb3V0ZXItYnJhY2VzIGFzIHNpbmdsZVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnRmllbGQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgdmFsdWU6IFsgcHJvdGVjdCh2YWx1ZSkgXVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNDIgPSBmdW5jdGlvbihuYW1lKSB7IHJldHVybiBpc1ZlcmJhdGltRmllbGQobmFtZSkgfSxcbiAgICAgIHBlZyRjNDMgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnRmllbGQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgdmFsdWU6IFsgcHJvdGVjdCh2YWx1ZSkgXVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNDQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyB3YXMgYWJ1c2VkIHNvIG11Y2gsIG1hbnkgcHJvY2Vzc29ycyB0cmVhdCBkb3VibGUtb3V0ZXItYnJhY2VzIGFzIHNpbmdsZVxuICAgICAgICAgIGlmICh1bm5lc3RGaWVsZHMuaW5jbHVkZXMobmFtZSkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAxICYmIHZhbHVlWzBdLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVubmVzdE1vZGUgPT09ICdwcmVzZXJ2ZScpIHtcbiAgICAgICAgICAgICAgdmFsdWVbMF0uY2FzZSA9ICdwcmVzZXJ2ZSdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMF0udmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlX21hcmt1cF9zd2l0Y2hlcyh7XG4gICAgICAgICAgICBraW5kOiAnRmllbGQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzQ1ID0gL15bXzphLXpBLVowLTlcXC1dLyxcbiAgICAgIHBlZyRjNDYgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJfXCIsIFwiOlwiLCBbXCJhXCIsIFwielwiXSwgW1wiQVwiLCBcIlpcIl0sIFtcIjBcIiwgXCI5XCJdLCBcIi1cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzQ3ID0gZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpIH0sXG4gICAgICBwZWckYzQ4ID0gXCJcXFwiXCIsXG4gICAgICBwZWckYzQ5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXCJcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM1MCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICB2ID0gdiB8fCB7XG4gICAgICAgICAgICBraW5kOiAnVGV4dCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgdi5tb2RlID0gJ3ZlcmJhdGltJ1xuICAgICAgICAgIHJldHVybiBiYXNpY1RleHRDb252ZXJzaW9ucyh2KVxuICAgICAgICB9LFxuICAgICAgcGVnJGM1MSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAga2luZDogJ1RleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdi5qb2luKCcnKS50cmltKCksXG4gICAgICAgICAgICBtb2RlOiAndmVyYmF0aW0nLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzUyID0gZnVuY3Rpb24odikgeyByZXR1cm4gdiB9LFxuICAgICAgcGVnJGM1MyA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuICd7JyArIHYuam9pbignJykgKyAnfScgfSxcbiAgICAgIHBlZyRjNTQgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG1hdGguc2V0KGZhbHNlKSB9LFxuICAgICAgcGVnJGM1NSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gdi5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSk7XG4gICAgICAgIH0sXG4gICAgICBwZWckYzU2ID0gZnVuY3Rpb24odikgeyByZXR1cm4gdjsgfSxcbiAgICAgIHBlZyRjNTcgPSBcIntcXFxcdmVyYlwiLFxuICAgICAgcGVnJGM1OCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ7XFxcXHZlcmJcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM1OSA9IC9eW2EtekEtWl0vLFxuICAgICAgcGVnJGM2MCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJhXCIsIFwielwiXSwgW1wiQVwiLCBcIlpcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM2MSA9IC9eW15cXF5fJHt9XFxcXF0vLFxuICAgICAgcGVnJGM2MiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIl5cIiwgXCJfXCIsIFwiJFwiLCBcIntcIiwgXCJ9XCIsIFwiXFxcXFwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGM2MyA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAga2luZDogJ1RleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplV2hpdGVzcGFjZSh2KSxcbiAgICAgICAgICAgIG1vZGU6IG1hdGgub24gPyAnbWF0aCcgOiAndGV4dCcsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNjQgPSAvXlteXFxeXyR7fVwiXFxcXF0vLFxuICAgICAgcGVnJGM2NSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIl5cIiwgXCJfXCIsIFwiJFwiLCBcIntcIiwgXCJ9XCIsIFwiXFxcIlwiLCBcIlxcXFxcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjYgPSAvXlswLTldLyxcbiAgICAgIHBlZyRjNjcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiMFwiLCBcIjlcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM2OCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ051bWJlcicsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludCh2LCAxMCksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM2OSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1N0cmluZ1JlZmVyZW5jZScsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIG5hbWU6IHYsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM3MCA9IFwiXFxcXGJlZ2lue1wiLFxuICAgICAgcGVnJGM3MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcYmVnaW57XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNzIgPSAvXlthLXpBLVowLTldLyxcbiAgICAgIHBlZyRjNzMgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdLCBbXCIwXCIsIFwiOVwiXV0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzc0ID0gXCJcXFxcZW5ke1wiLFxuICAgICAgcGVnJGM3NSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcZW5ke1wiLCBmYWxzZSksXG4gICAgICBwZWckYzc2ID0gZnVuY3Rpb24oZW52LCB2LCBjZW52KSB7IHJldHVybiBlbnYgPT09IGNlbnYgfSxcbiAgICAgIHBlZyRjNzcgPSBmdW5jdGlvbihlbnYsIHYsIGNlbnYpIHtcbiAgICAgICAgICBpZiAobWFya3VwW2Vudl0pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgICBtYXJrdXA6IHsgW21hcmt1cFtlbnZdXTogdHJ1ZSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBraW5kOiAnRW52aXJvbm1lbnQnLFxuICAgICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgICAgZW52OiBlbnYsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM3OCA9IFwie1xcXFxcIixcbiAgICAgIHBlZyRjNzkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwie1xcXFxcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM4MCA9IFwiXFxcXFwiLFxuICAgICAgcGVnJGM4MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjODIgPSAvXltpal0vLFxuICAgICAgcGVnJGM4MyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcImlcIiwgXCJqXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM4NCA9IGZ1bmN0aW9uKG1hcmssIGNoYXIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0RpYWNyaXRpY0NvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBtYXJrOiBtYXJrLFxuICAgICAgICAgICAgZG90bGVzczogISFjaGFyWzFdLFxuICAgICAgICAgICAgY2hhcmFjdGVyOiBjaGFyWzFdIHx8IGNoYXJbMF0sXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM4NSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICAgIHJldHVybiBiYXNpY1RleHRDb252ZXJzaW9ucyh7XG4gICAgICAgICAgICAgIGtpbmQ6ICdUZXh0JyxcbiAgICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgICAgdmFsdWU6IHYuam9pbignJykudHJpbSgpLFxuICAgICAgICAgICAgICBtb2RlOiAndmVyYmF0aW0nLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgIHBlZyRjODYgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgY29uc3QgYmxvY2sgPSB7XG4gICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIG1hcmt1cDoge30sXG4gICAgICAgICAgICBjYXNlOiAncHJvdGVjdCcsXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGxlYWRpbmdjbWQgPSBibG9jay52YWx1ZS5sZW5ndGggJiYgKGJsb2NrLnZhbHVlWzBdLmtpbmQuZW5kc1dpdGgoJ0NvbW1hbmQnKSB8fCBibG9jay52YWx1ZVswXS5raW5kID09PSAnRW52aXJvbm1lbnQnKSA/IGJsb2NrLnZhbHVlWzBdIDogbnVsbFxuICAgICAgICAgIGxldCBsZWFkaW5nY21kYmxvY2thcmcgPSBsZWFkaW5nY21kXG4gICAgICAgICAgICAmJiBsZWFkaW5nY21kLmtpbmQgPT09ICdSZWd1bGFyQ29tbWFuZCdcbiAgICAgICAgICAgICYmIGxlYWRpbmdjbWQuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGVhZGluZ2NtZC5hcmd1bWVudHMucmVxdWlyZWRbMF0ua2luZCA9PT0gJ0Jsb2NrJ1xuICAgICAgICAgICAgJiYgbGVhZGluZ2NtZC5hcmd1bWVudHMucmVxdWlyZWRbMF1cblxuICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXRvcnF1ZXJlL3pvdGVyby1iZXR0ZXItYmlidGV4L2lzc3Vlcy81NDEjaXNzdWVjb21tZW50LTI0MDE1NjI3NFxuICAgICAgICAgIGlmIChsZWFkaW5nY21kKSB7XG4gICAgICAgICAgICBkZWxldGUgYmxvY2suY2FzZVxuXG4gICAgICAgICAgICAvLyBjb21tYW5kIHdpdGggYSBibG9jayBjYW5jZWxzIG91dCBjYXNlIHByb3RlY3Rpb24gd2l0aCBjb250YWluaW5nIGJsb2NrXG4gICAgICAgICAgICAvLyBpZiBhIHNtYWxsY2FwcyBibG9jayBoYXMgc2V0IGNhc2UgdG8gJ3ByZXNlcnZlJyB3ZSB3YW50IHRvIGtlZXAgdGhpc1xuICAgICAgICAgICAgaWYgKGxlYWRpbmdjbWRibG9ja2FyZyAmJiBsZWFkaW5nY21kYmxvY2thcmcuY2FzZSA9PT0gJ3Byb3RlY3QnKSBkZWxldGUgbGVhZGluZ2NtZGJsb2NrYXJnLmNhc2VcblxuICAgICAgICAgICAgLy8gXFxzbCwgXFxpdCBldGNcbiAgICAgICAgICAgIGlmIChtYXJrdXBbbGVhZGluZ2NtZC5jb21tYW5kXSkge1xuICAgICAgICAgICAgICBibG9jay5tYXJrdXBbbWFya3VwW2xlYWRpbmdjbWQuY29tbWFuZF1dID0gdHJ1ZVxuICAgICAgICAgICAgICBibG9jay52YWx1ZS5zaGlmdCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZV9tYXJrdXBfc3dpdGNoZXMoYmxvY2spXG4gICAgICAgIH0sXG4gICAgICBwZWckYzg3ID0gZnVuY3Rpb24oKSB7IHJldHVybiAhbWF0aC5vbiB9LFxuICAgICAgcGVnJGM4OCA9IFwiJFwiLFxuICAgICAgcGVnJGM4OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIkXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTAgPSBcIiQkXCIsXG4gICAgICBwZWckYzkxID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiQkXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTIgPSBmdW5jdGlvbihtb2RlKSB7IHJldHVybiBtYXRoLnNldCh0cnVlKSB9LFxuICAgICAgcGVnJGM5MyA9IGZ1bmN0aW9uKG1vZGUsIHYpIHsgcmV0dXJuIG1hdGguc2V0KGZhbHNlKSB9LFxuICAgICAgcGVnJGM5NCA9IGZ1bmN0aW9uKG1vZGUsIHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogbW9kZSA9PSAnJCQnID8gJ0Rpc3BsYXlNYXRoJyA6ICdJbmxpbmVNYXRoJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICBjYXNlOiAncHJvdGVjdCcsXG4gICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjOTUgPSBcIiVcIixcbiAgICAgIHBlZyRjOTYgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJVwiLCBmYWxzZSksXG4gICAgICBwZWckYzk3ID0gL15bXlxcclxcbl0vLFxuICAgICAgcGVnJGM5OCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcclwiLCBcIlxcblwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGM5OSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0xpbmVDb21tZW50JyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMDAgPSAvXltfXFxeXS8sXG4gICAgICBwZWckYzEwMSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIl9cIiwgXCJeXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMDIgPSBmdW5jdGlvbihtb2RlLCB2KSB7XG4gICAgICAgICAgaWYgKHYua2luZCA9PT0gJ0Jsb2NrJykgdiA9IHYudmFsdWVcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiBtb2RlID09PSAnXycgPyAnU3Vic2NyaXB0Q29tbWFuZCcgOiAnU3VwZXJzY3JpcHRDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMDMgPSBmdW5jdGlvbihtYXJrLCB2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdSZWd1bGFyQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IG1hcmssXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IFtdLFxuICAgICAgICAgICAgICByZXF1aXJlZDogWyBwcm90ZWN0KHYpIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTA0ID0gL15bXkEtWmEtejAtOVxcdFxcclxcbl0vLFxuICAgICAgcGVnJGMxMDUgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiQVwiLCBcIlpcIl0sIFtcImFcIiwgXCJ6XCJdLCBbXCIwXCIsIFwiOVwiXSwgXCJcXHRcIiwgXCJcXHJcIiwgXCJcXG5cIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTA2ID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnU3ltYm9sQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IHYsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMDcgPSBcIm5ld2NvbW1hbmRcIixcbiAgICAgIHBlZyRjMTA4ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIm5ld2NvbW1hbmRcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMDkgPSBmdW5jdGlvbihjbWQsIG5hbWUpIHsgcmV0dXJuIG5hbWUudmFsdWUubGVuZ3RoID09IDEgJiYgbmFtZS52YWx1ZVswXS5raW5kID09PSAnUmVndWxhckNvbW1hbmQnIH0sXG4gICAgICBwZWckYzExMCA9IGZ1bmN0aW9uKGNtZCwgbmFtZSwgb3B0aW9uYWwsIGRlZikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IFtdLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW25hbWUsIGRlZl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTExID0gXCJiZWdpblwiLFxuICAgICAgcGVnJGMxMTIgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiYmVnaW5cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMTMgPSBcImVuZFwiLFxuICAgICAgcGVnJGMxMTQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiZW5kXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTE1ID0gZnVuY3Rpb24oY21kKSB7IHJldHVybiB2ZXJiYXRpbUNvbW1hbmRzLmluY2x1ZGVzKGNtZCkgJiYgKGhhc19hcmd1bWVudHNbY21kXSA9PT0gMikgfSxcbiAgICAgIHBlZyRjMTE2ID0gZnVuY3Rpb24oY21kLCBvcHRpb25hbCwgcmVxMSwgcmVxMikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW3Byb3RlY3QocmVxMSksIHByb3RlY3QocmVxMildLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzExNyA9IGZ1bmN0aW9uKGNtZCkgeyByZXR1cm4gdmVyYmF0aW1Db21tYW5kcy5pbmNsdWRlcyhjbWQpICYmIChoYXNfYXJndW1lbnRzW2NtZF0gPT09IDEpIH0sXG4gICAgICBwZWckYzExOCA9IGZ1bmN0aW9uKGNtZCwgb3B0aW9uYWwsIHJlcSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW3Byb3RlY3QocmVxKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTE5ID0gZnVuY3Rpb24oY21kKSB7IHJldHVybiAoaGFzX2FyZ3VtZW50c1tjbWRdID09PSAyKSB9LFxuICAgICAgcGVnJGMxMjAgPSBmdW5jdGlvbihjbWQsIG9wdGlvbmFsLCByZXExLCByZXEyKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdSZWd1bGFyQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNtZCxcbiAgICAgICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgICAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBbcmVxMSwgcmVxMl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTIxID0gZnVuY3Rpb24oY21kKSB7IHJldHVybiAoaGFzX2FyZ3VtZW50c1tjbWRdID09PSAxKSB9LFxuICAgICAgcGVnJGMxMjIgPSBmdW5jdGlvbihjbWQsIG9wdGlvbmFsLCByZXEpIHtcbiAgICAgICAgICBsZXQgbVxuICAgICAgICAgIGlmIChyZXEua2luZCA9PT0gJ0Jsb2NrJykge1xuICAgICAgICAgICAgc3dpdGNoIChjbWQpIHtcbiAgICAgICAgICAgICAgY2FzZSAndGV4dHN1cGVyc2NyaXB0JzpcbiAgICAgICAgICAgICAgY2FzZSAnc3AnOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuc3VwID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ3RleHRzdWJzY3JpcHQnOlxuICAgICAgICAgICAgICBjYXNlICdzYic6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5zdWIgPSB0cnVlXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSAndGV4dHNjJzpcbiAgICAgICAgICAgICAgICByZXEubWFya3VwLnNtYWxsQ2FwcyA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdlbnF1b3RlJzpcbiAgICAgICAgICAgICAgY2FzZSAnbWtiaWJxdW90ZSc6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5lbnF1b3RlID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ3RleHRiZic6XG4gICAgICAgICAgICAgIGNhc2UgJ21rYmliYm9sZCc6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5ib2xkID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ2VtcGgnOlxuICAgICAgICAgICAgICBjYXNlICd0ZXh0aXQnOlxuICAgICAgICAgICAgICBjYXNlICdta2JpYml0YWxpYyc6XG4gICAgICAgICAgICAgIGNhc2UgJ21rYmliZW1waCc6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5pdGFsaWNzID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKG0gPSBjbWQubWF0Y2goL14oKHN1YikqKXNlY3Rpb24kLykpIHtcbiAgICAgICAgICAgICAgICAgIHJlcS5tYXJrdXBbYGgkeyhtWzFdLmxlbmd0aCAvIDMpICsgMX1gXSA9IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaWdub3JlIGNhc2Ugc3R1ZmYgb24gYmliY3lyXG4gICAgICAgICAgaWYgKGNtZCA9PT0gJ2JpYmN5cicpIGRlbGV0ZSByZXEuY2FzZVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdSZWd1bGFyQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNtZCxcbiAgICAgICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgICAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBbcmVxXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEyMyA9IGZ1bmN0aW9uKGNtZCwgb3B0aW9uYWwpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1JlZ3VsYXJDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgY29tbWFuZDogY21kLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtdLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTI0ID0gXCJbXCIsXG4gICAgICBwZWckYzEyNSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJbXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTI2ID0gL15bXlxcXV0vLFxuICAgICAgcGVnJGMxMjcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJdXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzEyOCA9IFwiXVwiLFxuICAgICAgcGVnJGMxMjkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXVwiLCBmYWxzZSksXG4gICAgICBwZWckYzEzMCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAga2luZDogJ1RleHQnLCAvLyB0aGlzIGlzbid0IHJlYWxseSBjb3JyZWN0IGJ1dCBJIGRvbid0IG5lZWQgdGhlc2UgcmlnaHQgbm93XG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgbW9kZTogbWF0aC5vbiA/ICdtYXRoJyA6ICd0ZXh0JyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMzEgPSAvXlteIFxcdFxcXl8ke31cXFxcXS8sXG4gICAgICBwZWckYzEzMiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIiwgXCJeXCIsIFwiX1wiLCBcIiRcIiwgXCJ7XCIsIFwifVwiLCBcIlxcXFxcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTMzID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBiYXNpY1RleHRDb252ZXJzaW9ucyh7XG4gICAgICAgICAgICBraW5kOiAnVGV4dCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVXaGl0ZXNwYWNlKFt2XSksXG4gICAgICAgICAgICBtb2RlOiBtYXRoLm9uID8gJ21hdGgnIDogJ3RleHQnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzEzNCA9IC9eW2EtekEtWlxcLV9dLyxcbiAgICAgIHBlZyRjMTM1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgXCItXCIsIFwiX1wiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTM2ID0gL15bYS16QS1aMC05XFwtJl86XS8sXG4gICAgICBwZWckYzEzNyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJhXCIsIFwielwiXSwgW1wiQVwiLCBcIlpcIl0sIFtcIjBcIiwgXCI5XCJdLCBcIi1cIiwgXCImXCIsIFwiX1wiLCBcIjpcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzEzOCA9IC9eWydgXCI9flxcXi5dLyxcbiAgICAgIHBlZyRjMTM5ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiJ1wiLCBcImBcIiwgXCJcXFwiXCIsIFwiPVwiLCBcIn5cIiwgXCJeXCIsIFwiLlwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQwID0gL15bJ2BcIj1+XFxeLmNidXZkckhrXS8sXG4gICAgICBwZWckYzE0MSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIidcIiwgXCJgXCIsIFwiXFxcIlwiLCBcIj1cIiwgXCJ+XCIsIFwiXlwiLCBcIi5cIiwgXCJjXCIsIFwiYlwiLCBcInVcIiwgXCJ2XCIsIFwiZFwiLCBcInJcIiwgXCJIXCIsIFwia1wiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQyID0gXCI9XCIsXG4gICAgICBwZWckYzE0MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI9XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQ0ID0gXCIjXCIsXG4gICAgICBwZWckYzE0NSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIjXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQ2ID0gL15bXFxyXFxuXS8sXG4gICAgICBwZWckYzE0NyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcclwiLCBcIlxcblwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQ4ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJNYW5kYXRvcnkgSG9yaXpvbnRhbCBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNDkgPSAvXlsgXFx0XS8sXG4gICAgICBwZWckYzE1MCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE1MSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiT3B0aW9uYWwgSG9yaXpvbnRhbCBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNTIgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIk1hbmRhdG9yeSBWZXJ0aWNhbCBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNTMgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIk9wdGlvbmFsIFZlcnRpY2FsIFdoaXRlc3BhY2VcIiksXG4gICAgICBwZWckYzE1NCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiTWFuZGF0b3J5IFdoaXRlc3BhY2VcIiksXG4gICAgICBwZWckYzE1NSA9IC9eWyBcXHRcXG5cXHJdLyxcbiAgICAgIHBlZyRjMTU2ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiIFwiLCBcIlxcdFwiLCBcIlxcblwiLCBcIlxcclwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTU3ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJPcHRpb25hbCBXaGl0ZXNwYWNlXCIpLFxuXG4gICAgICBwZWckY3VyclBvcyAgICAgICAgICA9IDAsXG4gICAgICBwZWckc2F2ZWRQb3MgICAgICAgICA9IDAsXG4gICAgICBwZWckcG9zRGV0YWlsc0NhY2hlICA9IFt7IGxpbmU6IDEsIGNvbHVtbjogMSB9XSxcbiAgICAgIHBlZyRtYXhGYWlsUG9zICAgICAgID0gMCxcbiAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQgID0gW10sXG4gICAgICBwZWckc2lsZW50RmFpbHMgICAgICA9IDAsXG5cbiAgICAgIHBlZyRyZXN1bHQ7XG5cbiAgaWYgKFwic3RhcnRSdWxlXCIgaW4gb3B0aW9ucykge1xuICAgIGlmICghKG9wdGlvbnMuc3RhcnRSdWxlIGluIHBlZyRzdGFydFJ1bGVGdW5jdGlvbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBzdGFydCBwYXJzaW5nIGZyb20gcnVsZSBcXFwiXCIgKyBvcHRpb25zLnN0YXJ0UnVsZSArIFwiXFxcIi5cIik7XG4gICAgfVxuXG4gICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uID0gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uc1tvcHRpb25zLnN0YXJ0UnVsZV07XG4gIH1cblxuICBmdW5jdGlvbiB0ZXh0KCkge1xuICAgIHJldHVybiBpbnB1dC5zdWJzdHJpbmcocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gIH1cblxuICBmdW5jdGlvbiBsb2NhdGlvbigpIHtcbiAgICByZXR1cm4gcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cGVjdGVkKGRlc2NyaXB0aW9uLCBsb2NhdGlvbikge1xuICAgIGxvY2F0aW9uID0gbG9jYXRpb24gIT09IHZvaWQgMCA/IGxvY2F0aW9uIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKVxuXG4gICAgdGhyb3cgcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKFxuICAgICAgW3BlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKV0sXG4gICAgICBpbnB1dC5zdWJzdHJpbmcocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyksXG4gICAgICBsb2NhdGlvblxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBlcnJvcihtZXNzYWdlLCBsb2NhdGlvbikge1xuICAgIGxvY2F0aW9uID0gbG9jYXRpb24gIT09IHZvaWQgMCA/IGxvY2F0aW9uIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKVxuXG4gICAgdGhyb3cgcGVnJGJ1aWxkU2ltcGxlRXJyb3IobWVzc2FnZSwgbG9jYXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbih0ZXh0LCBpZ25vcmVDYXNlKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJsaXRlcmFsXCIsIHRleHQ6IHRleHQsIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRjbGFzc0V4cGVjdGF0aW9uKHBhcnRzLCBpbnZlcnRlZCwgaWdub3JlQ2FzZSkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiY2xhc3NcIiwgcGFydHM6IHBhcnRzLCBpbnZlcnRlZDogaW52ZXJ0ZWQsIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRhbnlFeHBlY3RhdGlvbigpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImFueVwiIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckZW5kRXhwZWN0YXRpb24oKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJlbmRcIiB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJG90aGVyRXhwZWN0YXRpb24oZGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4geyB0eXBlOiBcIm90aGVyXCIsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKHBvcykge1xuICAgIHZhciBkZXRhaWxzID0gcGVnJHBvc0RldGFpbHNDYWNoZVtwb3NdLCBwO1xuXG4gICAgaWYgKGRldGFpbHMpIHtcbiAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgIH0gZWxzZSB7XG4gICAgICBwID0gcG9zIC0gMTtcbiAgICAgIHdoaWxlICghcGVnJHBvc0RldGFpbHNDYWNoZVtwXSkge1xuICAgICAgICBwLS07XG4gICAgICB9XG5cbiAgICAgIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3BdO1xuICAgICAgZGV0YWlscyA9IHtcbiAgICAgICAgbGluZTogICBkZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogZGV0YWlscy5jb2x1bW5cbiAgICAgIH07XG5cbiAgICAgIHdoaWxlIChwIDwgcG9zKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHApID09PSAxMCkge1xuICAgICAgICAgIGRldGFpbHMubGluZSsrO1xuICAgICAgICAgIGRldGFpbHMuY29sdW1uID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZXRhaWxzLmNvbHVtbisrO1xuICAgICAgICB9XG5cbiAgICAgICAgcCsrO1xuICAgICAgfVxuXG4gICAgICBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc10gPSBkZXRhaWxzO1xuICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNvbXB1dGVMb2NhdGlvbihzdGFydFBvcywgZW5kUG9zKSB7XG4gICAgdmFyIHN0YXJ0UG9zRGV0YWlscyA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhzdGFydFBvcyksXG4gICAgICAgIGVuZFBvc0RldGFpbHMgICA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhlbmRQb3MpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIG9mZnNldDogc3RhcnRQb3MsXG4gICAgICAgIGxpbmU6ICAgc3RhcnRQb3NEZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogc3RhcnRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgfSxcbiAgICAgIGVuZDoge1xuICAgICAgICBvZmZzZXQ6IGVuZFBvcyxcbiAgICAgICAgbGluZTogICBlbmRQb3NEZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogZW5kUG9zRGV0YWlscy5jb2x1bW5cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGZhaWwoZXhwZWN0ZWQpIHtcbiAgICBpZiAocGVnJGN1cnJQb3MgPCBwZWckbWF4RmFpbFBvcykgeyByZXR1cm47IH1cblxuICAgIGlmIChwZWckY3VyclBvcyA+IHBlZyRtYXhGYWlsUG9zKSB7XG4gICAgICBwZWckbWF4RmFpbFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCA9IFtdO1xuICAgIH1cblxuICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQucHVzaChleHBlY3RlZCk7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbikge1xuICAgIHJldHVybiBuZXcgcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIG51bGwsIG51bGwsIGxvY2F0aW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihleHBlY3RlZCwgZm91bmQsIGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBwZWckU3ludGF4RXJyb3IoXG4gICAgICBwZWckU3ludGF4RXJyb3IuYnVpbGRNZXNzYWdlKGV4cGVjdGVkLCBmb3VuZCksXG4gICAgICBleHBlY3RlZCxcbiAgICAgIGZvdW5kLFxuICAgICAgbG9jYXRpb25cbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQmlibGlvZ3JhcGh5KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfXygpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIHMzID0gcGVnJHBhcnNlTm9kZSgpO1xuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZU5vZGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGMwKHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQ29tbWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDY0KSB7XG4gICAgICBzMSA9IHBlZyRjMTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlX18oKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA3KS50b0xvd2VyQ2FzZSgpID09PSBwZWckYzMpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQnJhY2VkQ29tbWVudCgpO1xuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjNShzNSk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjQpIHtcbiAgICAgICAgczEgPSBwZWckYzE7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNykudG9Mb3dlckNhc2UoKSA9PT0gcGVnJGMzKSB7XG4gICAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSA3O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgIGlmIChwZWckYzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3KTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgczcgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdoaWxlIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJGM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgczcgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOSk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMChzNSk7XG4gICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChwZWckYzExLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gW107XG4gICAgICAgICAgaWYgKHBlZyRjNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgIGlmIChwZWckYzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgIGlmIChwZWckYzgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgICBpZiAocGVnJGM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxMyhzMSk7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZU5vZGUoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VDb21tZW50KCk7XG4gICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRwYXJzZVByZWFtYmxlRXhwcmVzc2lvbigpO1xuICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlU3RyaW5nRGVjbGFyYXRpb24oKTtcbiAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczEgPSBwZWckcGFyc2VFbnRyeSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjMTQoczEpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQnJhY2VkQ29tbWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICBzMSA9IHBlZyRjMTU7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIGlmIChwZWckYzE3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VCcmFjZWRDb21tZW50KCk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIGlmIChwZWckYzE3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE4KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlQnJhY2VkQ29tbWVudCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjMTk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGMyMShzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVudHJ5KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTEsIHMxMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzE7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgczQgPSBbXTtcbiAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cmluZyhzMywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjMjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyNSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlRW50cnlJZCgpO1xuICAgICAgICAgICAgICAgIGlmIChzNyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczcgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VGaWVsZCgpO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkucHVzaChzMTApO1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZUZpZWxkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjcpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMjgoczMsIHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVByZWFtYmxlRXhwcmVzc2lvbigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzE7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgOCkudG9Mb3dlckNhc2UoKSA9PT0gcGVnJGMyOSkge1xuICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA4KTtcbiAgICAgICAgICBwZWckY3VyclBvcyArPSA4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzApOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjMjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyNSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM3ID0gW107XG4gICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczggPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczggPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3LnB1c2goczgpO1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjcpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMzMShzNSwgczcsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU3RyaW5nRGVjbGFyYXRpb24oKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMSwgczEyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDY0KSB7XG4gICAgICBzMSA9IHBlZyRjMTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlX18oKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA2KS50b0xvd2VyQ2FzZSgpID09PSBwZWckYzMyKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzMyk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAocGVnJGMyNC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI1KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VWYXJpYWJsZU5hbWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlRmllbGRTZXBhcmF0b3IoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM5LnB1c2goczEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZVJlZ3VsYXJWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjcpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMzQoczcsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRW50cnlJZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9fKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgczMgPSBbXTtcbiAgICAgIGlmIChwZWckYzM1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzYpOyB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgIGlmIChwZWckYzM1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM2KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBpbnB1dC5zdWJzdHJpbmcoczIsIHBlZyRjdXJyUG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gczM7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjMzc7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzgpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMzkoczIpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzODtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VGaWVsZE5hbWUoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgczIgPSBwZWckYzQwKHMxKTtcbiAgICAgIGlmIChzMikge1xuICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZUZpZWxkU2VwYXJhdG9yKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjMTU7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckYzE1O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM1O1xuICAgICAgICAgICAgICBzNSA9IHZvaWQgMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZVZlcmJhdGltRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzE5O1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlRmllbGRUZXJtaW5hdG9yKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0MShzMSwgczYpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IHBlZyRwYXJzZUZpZWxkTmFtZSgpO1xuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMiA9IHBlZyRjNDIoczEpO1xuICAgICAgICBpZiAoczIpIHtcbiAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VGaWVsZFNlcGFyYXRvcigpO1xuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUZpZWxkVGVybWluYXRvcigpO1xuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDMoczEsIHM0KTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VGaWVsZE5hbWUoKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSBwZWckcGFyc2VGaWVsZFNlcGFyYXRvcigpO1xuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VGaWVsZFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VGaWVsZFRlcm1pbmF0b3IoKTtcbiAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzQ0KHMxLCBzMyk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUZpZWxkTmFtZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9fKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgczMgPSBbXTtcbiAgICAgIGlmIChwZWckYzQ1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDYpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgaWYgKHBlZyRjNDUudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ2KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gaW5wdXQuc3Vic3RyaW5nKHMyLCBwZWckY3VyclBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHMzO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjNDcoczIpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVZlcmJhdGltRmllbGRWYWx1ZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzQpIHtcbiAgICAgIHMxID0gcGVnJGM0ODtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZVRleHROb1F1b3RlcygpO1xuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICAgICAgczMgPSBwZWckYzQ4O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjNTAoczIpO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBbXTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VWZXJiYXRpbVRleHQoKTtcbiAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VWZXJiYXRpbVRleHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzUxKHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckY3VyclBvcztcbiAgICBzMiA9IFtdO1xuICAgIGlmIChwZWckYzE3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxOCk7IH1cbiAgICB9XG4gICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIGlmIChwZWckYzE3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE4KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IGlucHV0LnN1YnN0cmluZyhzMSwgcGVnJGN1cnJQb3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHMyO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzUyKHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICBzMSA9IHBlZyRjMTU7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IFtdO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjMTk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNTMoczIpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZFZhbHVlKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJHBhcnNlTnVtYmVyKCk7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IHBlZyRjNTQoKTtcbiAgICAgIGlmIChzMSkge1xuICAgICAgICBzMSA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IFtdO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZVJlZ3VsYXJWYWx1ZSgpO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZVN0cmluZ1ZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlU3RyaW5nVmFsdWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzU1KHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlUmVndWxhclZhbHVlKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICBzMSA9IHBlZyRjNDg7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDkpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0Tm9RdW90ZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0Tm9RdW90ZXMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjNDg7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ5KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlQ29uY2F0KCk7XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNTYoczIpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNTcpIHtcbiAgICAgICAgczEgPSBwZWckYzU3O1xuICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIGlmIChwZWckYzU5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzYwKTsgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckYzE5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VDb25jYXQoKTtcbiAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM1MShzMyk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VDb25jYXQoKTtcbiAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczQgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM1NihzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHMxID0gcGVnJHBhcnNlU3RyaW5nUmVmZXJlbmNlKCk7XG4gICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZUNvbmNhdCgpO1xuICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzU2KHMxKTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTdHJpbmdWYWx1ZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VTdHJpbmdSZWZlcmVuY2UoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlQ29uY2F0KCk7XG4gICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjNTYoczEpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVRleHQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgaWYgKHBlZyRjNjEudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzYyKTsgfVxuICAgIH1cbiAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgaWYgKHBlZyRjNjEudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjIpOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzYzKHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVRleHROb1F1b3RlcygpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBpZiAocGVnJGM2NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjUpOyB9XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICBpZiAocGVnJGM2NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2NSk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjNjMoczEpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlTnVtYmVyKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckY3VyclBvcztcbiAgICBzMiA9IFtdO1xuICAgIGlmIChwZWckYzY2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2Nyk7IH1cbiAgICB9XG4gICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIGlmIChwZWckYzY2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzY3KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IGlucHV0LnN1YnN0cmluZyhzMSwgcGVnJGN1cnJQb3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHMyO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzY4KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVN0cmluZ1JlZmVyZW5jZSgpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZVZhcmlhYmxlTmFtZSgpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjNjkoczEpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRW52aXJvbm1lbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczg7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpID09PSBwZWckYzcwKSB7XG4gICAgICBzMSA9IHBlZyRjNzA7XG4gICAgICBwZWckY3VyclBvcyArPSA3O1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNzEpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgIHMzID0gW107XG4gICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgIGlmIChwZWckYzcyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IGlucHV0LnN1YnN0cmluZyhzMiwgcGVnJGN1cnJQb3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBzMztcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgIHMzID0gcGVnJGMxOTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBbXTtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDUpID09PSBwZWckYzc0KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGM3NDtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzc1KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIHM3ID0gW107XG4gICAgICAgICAgICAgIGlmIChwZWckYzcyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzOCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczcucHVzaChzOCk7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczYgPSBpbnB1dC5zdWJzdHJpbmcoczYsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHM3O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjMTk7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRjNzYoczIsIHM0LCBzNik7XG4gICAgICAgICAgICAgICAgICBpZiAoczgpIHtcbiAgICAgICAgICAgICAgICAgICAgczggPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM3NyhzMiwgczQsIHM2KTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VCbG9jaygpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczY7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzc4KSB7XG4gICAgICBzMSA9IHBlZyRjNzg7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNzkpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VFeHRlbmRlZERpYWNyaXRpYygpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGM4MDtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChwZWckYzgyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgzKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gW3M1LCBzNl07XG4gICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM0O1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjODQoczIsIHM0KTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNTcpIHtcbiAgICAgICAgczEgPSBwZWckYzU3O1xuICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIGlmIChwZWckYzU5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzYwKTsgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckYzE5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGM4NShzMyk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICBzMSA9IHBlZyRjMTU7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gW107XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRjMTk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzg2KHMyKTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VNYXRoKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckYzg3KCk7XG4gICAgaWYgKHMxKSB7XG4gICAgICBzMSA9IHZvaWQgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzYpIHtcbiAgICAgICAgczIgPSBwZWckYzg4O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODkpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTApIHtcbiAgICAgICAgICBzMiA9IHBlZyRjOTA7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkxKTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMzID0gcGVnJGM5MihzMik7XG4gICAgICAgIGlmIChzMykge1xuICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzYpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckYzg4O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODkpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTApIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjOTA7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkxKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJGM5MyhzMiwgczQpO1xuICAgICAgICAgICAgICBpZiAoczYpIHtcbiAgICAgICAgICAgICAgICBzNiA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzk0KHMyLCBzNCk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUxpbmVDb21tZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM3KSB7XG4gICAgICBzMSA9IHBlZyRjOTU7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOTYpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzNCA9IFtdO1xuICAgICAgICBpZiAocGVnJGM5Ny50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5OCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgaWYgKHBlZyRjOTcudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5OCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyaW5nKHMzLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIHM1ID0gcGVnJHBhcnNlRU9MKCk7XG4gICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlRU9MKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM5OShzMyk7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNvbW1hbmQoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgczAgPSBwZWckcGFyc2VTY3JpcHRDb21tYW5kKCk7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRwYXJzZURpYWNyaXRpY0NvbW1hbmQoKTtcbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRwYXJzZVJlZ3VsYXJDb21tYW5kKCk7XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMwID0gcGVnJHBhcnNlU3ltYm9sQ29tbWFuZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU2NyaXB0Q29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChwZWckYzEwMC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTAxKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGMxMDIoczEsIHMzKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRGlhY3JpdGljQ29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczY7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZVNpbXBsZURpYWNyaXRpYygpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGM4MDtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChwZWckYzgyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgzKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gW3M1LCBzNl07XG4gICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM0O1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzg0KHMyLCBzNCk7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlRXh0ZW5kZWREaWFjcml0aWMoKTtcbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJGMxNTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjODA7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzgyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IFtzNSwgczZdO1xuICAgICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzg0KHMyLCBzNCk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gcGVnJHBhcnNlRXh0ZW5kZWREaWFjcml0aWMoKTtcbiAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxNTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzEwMyhzMiwgczQpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTeW1ib2xDb21tYW5kKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAocGVnJGMxMDQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMDUpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBpbnB1dC5zdWJzdHJpbmcoczIsIHBlZyRjdXJyUG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gczM7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGMxMDYoczIpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVJlZ3VsYXJDb21tYW5kKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICBzMSA9IHBlZyRjODA7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMTApID09PSBwZWckYzEwNykge1xuICAgICAgICBzMiA9IHBlZyRjMTA3O1xuICAgICAgICBwZWckY3VyclBvcyArPSAxMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwOCk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHM0ID0gcGVnJGMxMDkoczIsIHMzKTtcbiAgICAgICAgICBpZiAoczQpIHtcbiAgICAgICAgICAgIHM0ID0gdm9pZCAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZVJlcXVpcmVkQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzExMChzMiwgczMsIHM1LCBzNik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGMxMTEpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjMTExO1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTIpOyB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gdm9pZCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMykgPT09IHBlZyRjMTEzKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjMTEzO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExNCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gaW5wdXQuc3Vic3RyaW5nKHM0LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHM1O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjMTE1KHM0KTtcbiAgICAgICAgICAgICAgaWYgKHM1KSB7XG4gICAgICAgICAgICAgICAgczUgPSB2b2lkIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM2ID0gW107XG4gICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNi5wdXNoKHM3KTtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczggPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckYzE1O1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzODtcbiAgICAgICAgICAgICAgICAgICAgICBzOCA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZVZlcmJhdGltRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzExNihzNCwgczYsIHM5LCBzMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNSkgPT09IHBlZyRjMTExKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjMTExO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExMik7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAzKSA9PT0gcGVnJGMxMTMpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckYzExMztcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExNCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczQgPSBpbnB1dC5zdWJzdHJpbmcoczQsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNCA9IHM1O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxMTcoczQpO1xuICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgczUgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGMxNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgczggPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRwYXJzZVZlcmJhdGltRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTE4KHM0LCBzNiwgczkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGMxMTEpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExMik7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMyID0gdm9pZCAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAzKSA9PT0gcGVnJGMxMTMpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRjMTEzO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5zdWJzdHJpbmcoczQsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxMTkoczQpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM1KSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gW107XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNi5wdXNoKHM3KTtcbiAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMjAoczQsIHM2LCBzOCwgczkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNSkgPT09IHBlZyRjMTExKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA1O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTEyKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDMpID09PSBwZWckYzExMykge1xuICAgICAgICAgICAgICAgICAgczQgPSBwZWckYzExMztcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczQgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LnN1YnN0cmluZyhzNCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzEyMShzNCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgICAgIHM1ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTIyKHM0LCBzNiwgczgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDUpID09PSBwZWckYzExMSkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTIpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMykgPT09IHBlZyRjMTEzKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGMxMTM7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuc3Vic3RyaW5nKHM0LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMjMoczQsIHM1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkxKSB7XG4gICAgICBzMSA9IHBlZyRjMTI0O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyNSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHM0ID0gW107XG4gICAgICAgIGlmIChwZWckYzEyNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjcpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIGlmIChwZWckYzEyNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyNyk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyaW5nKHMzLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mykge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjMTI4O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTI5KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjMTMwKHMzKTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9faCgpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKHBlZyRjMTMxLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTMyKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMTMzKHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjNTIoczEpO1xuICAgICAgfVxuICAgICAgczAgPSBzMTtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VWYXJpYWJsZU5hbWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckY3VyclBvcztcbiAgICBpZiAocGVnJGMxMzQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzNSk7IH1cbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMyA9IFtdO1xuICAgICAgaWYgKHBlZyRjMTM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTM3KTsgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICBpZiAocGVnJGMxMzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTM3KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBbczIsIHMzXTtcbiAgICAgICAgczEgPSBzMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHMxO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVNpbXBsZURpYWNyaXRpYygpIHtcbiAgICB2YXIgczA7XG5cbiAgICBpZiAocGVnJGMxMzgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzOSk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFeHRlbmRlZERpYWNyaXRpYygpIHtcbiAgICB2YXIgczA7XG5cbiAgICBpZiAocGVnJGMxNDAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0MSk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZFNlcGFyYXRvcigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlX18oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjEpIHtcbiAgICAgICAgczIgPSBwZWckYzE0MjtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Myk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMxID0gW3MxLCBzMiwgczNdO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZFRlcm1pbmF0b3IoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczU7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlX18oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgczIgPSBwZWckYzM3O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gW107XG4gICAgICAgICAgczUgPSBwZWckcGFyc2VMaW5lQ29tbWVudCgpO1xuICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VFT0woKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlTGluZUNvbW1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVPTCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gW3MxLCBzMiwgczMsIHM0XTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQ29uY2F0KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfXygpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNSkge1xuICAgICAgICBzMiA9IHBlZyRjMTQ0O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ1KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczEgPSBbczEsIHMyLCBzM107XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVPTCgpIHtcbiAgICB2YXIgczA7XG5cbiAgICBpZiAocGVnJGMxNDYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Nyk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfaCgpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGMxNDkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1MCk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAucHVzaChzMSk7XG4gICAgICAgIGlmIChwZWckYzE0OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTApOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDgpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlX19oKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzE0OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUwKTsgfVxuICAgIH1cbiAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwLnB1c2goczEpO1xuICAgICAgaWYgKHBlZyRjMTQ5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUwKTsgfVxuICAgICAgfVxuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTEpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlX3YoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTQ2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDcpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICBpZiAocGVnJGMxNDYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ3KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUyKTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV9fdigpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGMxNDYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Nyk7IH1cbiAgICB9XG4gICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMC5wdXNoKHMxKTtcbiAgICAgIGlmIChwZWckYzE0Ni50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Nyk7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUzKTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV8oKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTU1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTYpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICBpZiAocGVnJGMxNTUudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU0KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV9fKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzE1NS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgIH1cbiAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwLnB1c2goczEpO1xuICAgICAgaWYgKHBlZyRjMTU1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgICAgfVxuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTcpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cblxuICAgIC8qXG4gICAgICBNSVQgTGljZW5zZVxuXG4gICAgICBDb3B5cmlnaHQgKGMpIDIwMTcgRGVyZWsgUCBTaWZmb3JkLCBwYXJ0cyBjb3B5cmlnaHQgKGMpIDIwMTkgYnkgRW1pbGlhbm8gSGV5bnNcblxuICAgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICAgICAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICAgICAgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICAgICAgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICAgICAgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gICAgICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gICAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAgICAgIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbiAgICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAgICAgIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICAgICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gICAgICBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gICAgICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICAgICAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAgICAgIFNPRlRXQVJFLlxuICAgICovXG5cbiAgICBjb25zdCBtYXJrdXAgPSB7XG4gICAgICBzbDogJ2l0YWxpY3MnLFxuICAgICAgZW06ICdpdGFsaWNzJyxcbiAgICAgIGl0OiAnaXRhbGljcycsXG4gICAgICBpdHNoYXBlOiAnaXRhbGljcycsXG5cbiAgICAgIGJmOiAnYm9sZCcsXG4gICAgICBiZnNlcmllczogJ2JvbGQnLFxuXG4gICAgICBzYzogJ3NtYWxsQ2FwcycsXG4gICAgICBzY3NoYXBlOiAnc21hbGxDYXBzJyxcblxuICAgICAgdHQ6ICdmaXhlZFdpZHRoJyxcbiAgICAgIHJtOiAncm9tYW4nLFxuICAgICAgc2Y6ICdzYW5zU2VyaWYnLFxuICAgICAgdmVyYjogJ3ZlcmJhdGltJyxcbiAgICB9XG5cbiAgICBjb25zdCB1bm5lc3RGaWVsZHMgPSAob3B0aW9ucy51bm5lc3RGaWVsZHMgfHwgW10pLm1hcChmaWVsZCA9PiBmaWVsZC50b0xvd2VyQ2FzZSgpKVxuICAgIGNvbnN0IHZlcmJhdGltRmllbGRzID0gKG9wdGlvbnMudmVyYmF0aW1GaWVsZHMgfHwgWyAndXJscmF3JywgJ3VybCcsICdkb2knLCAnZmlsZScsICdmaWxlcycsICdlcHJpbnQnLCAndmVyYmEnLCAndmVyYmInLCAndmVyYmMnIF0pLm1hcChmaWVsZCA9PiB0eXBlb2YgZmllbGQgPT09ICdzdHJpbmcnID8gZmllbGQudG9Mb3dlckNhc2UoKSA6IGZpZWxkKVxuICAgIGNvbnN0IHZlcmJhdGltQ29tbWFuZHMgPSAob3B0aW9ucy52ZXJiYXRpbUNvbW1hbmRzIHx8IFsndGV4dHR0JywgJ3VybCcsICdocmVmJ10pXG5cbiAgICBmdW5jdGlvbiBpc1ZlcmJhdGltRmllbGQobmFtZSkge1xuICAgICAgcmV0dXJuIHZlcmJhdGltRmllbGRzLmZpbmQocCA9PiAodHlwZW9mIHAgPT09ICdzdHJpbmcnKSA/IG5hbWUgPT09IHAgOiBuYW1lLm1hdGNoKHApKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVdoaXRlc3BhY2UodGV4dEFycikge1xuICAgICAgcmV0dXJuIHRleHRBcnIucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGlmICgvXFxzLy50ZXN0KGN1cnIpKSB7XG4gICAgICAgICAgaWYgKC9cXHMvLnRlc3QocHJldltwcmV2Lmxlbmd0aCAtIDFdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2ICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldiArIGN1cnI7XG4gICAgICB9LCAnJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzX2FyZ3VtZW50cyA9IHtcbiAgICAgIEVsc2V2aWVyR2x5cGg6IDEsXG4gICAgICBlbmQ6IDEsXG4gICAgICBiZWdpbjogMSxcbiAgICAgIGJpYmN5cjogMSxcbiAgICAgIGJpYnN0cmluZzogMSxcbiAgICAgIGNoc2Y6IDEsXG4gICAgICBjaXRlOiAxLFxuICAgICAgY3lyY2hhcjogMSxcbiAgICAgIGRpbmc6IDEsXG4gICAgICBlbXBoOiAxLFxuICAgICAgZW5xdW90ZTogMSxcbiAgICAgIGZyYWM6IDIsXG4gICAgICBocmVmOiAyLFxuICAgICAgaHNwYWNlOiAxLFxuICAgICAgbWF0aHJtOiAxLFxuICAgICAgbWJveDogMSxcbiAgICAgIG1rYmliYm9sZDogMSxcbiAgICAgIG1rYmliZW1waDogMSxcbiAgICAgIG1rYmliaXRhbGljOiAxLFxuICAgICAgbWtiaWJxdW90ZTogMSxcbiAgICAgIG5ld2NvbW1hbmQ6IDIsXG4gICAgICBub29wc29ydDogMSxcbiAgICAgIG9jaXJjOiAxLFxuICAgICAgc2VjdGlvbjogMSxcbiAgICAgIHNiOiAxLFxuICAgICAgc3A6IDEsXG4gICAgICBzdWJzZWN0aW9uOiAxLFxuICAgICAgc3Vic3Vic2VjdGlvbjogMSxcbiAgICAgIHN1YnN1YnN1YnNlY3Rpb246IDEsXG4gICAgICB0OiAxLFxuICAgICAgdGV4dGJmOiAxLFxuICAgICAgdGV4dGl0OiAxLFxuICAgICAgdGV4dHJtOiAxLFxuICAgICAgdGV4dHNjOiAxLFxuICAgICAgdGV4dHN1YnNjcmlwdDogMSxcbiAgICAgIHRleHRzdXBlcnNjcmlwdDogMSxcbiAgICAgIHRleHR0dDogMSxcbiAgICAgIHVybDogMSxcbiAgICAgIHZwaGFudG9tOiAxLFxuICAgICAgdnNwYWNlOiAxLFxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbWJpbmluZ0RpYWNyaXRpY3MpIHtcbiAgICAgIGZvciAoY29uc3QgY21kIG9mIG9wdGlvbnMuY29tYmluaW5nRGlhY3JpdGljcykge1xuICAgICAgICBoYXNfYXJndW1lbnRzW2NtZF0gPSAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2F5KCkge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShhcmd1bWVudHMpLCBudWxsLCAyKSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGVlayhuKSB7XG4gICAgICByZXR1cm4gaW5wdXQuc3Vic3RyKHBlZyRzYXZlZFBvcywgbilcbiAgICB9XG5cbiAgICBjb25zdCBtYXRoID0ge1xuICAgICAgb246IGZhbHNlLFxuXG4gICAgICBzZXQ6IGZ1bmN0aW9uKHN0YXRlKSB7XG4gICAgICAgIHRoaXMub24gPSBzdGF0ZVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJhc2ljVGV4dENvbnZlcnNpb25zKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLmtpbmQgIT09ICdUZXh0JykgdGhyb3cgbmV3IEVycm9yKG5vZGUua2luZCArICcgaXMgbm90IGEgVGV4dCBub2RlJylcblxuICAgICAgc3dpdGNoIChub2RlLm1vZGUpIHtcbiAgICAgICAgY2FzZSAndmVyYmF0aW0nOlxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnbWF0aCc6XG4gICAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWUucmVwbGFjZSgvfi9nLCAnXFx1MDBBMCcpXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1ZVxuICAgICAgICAgICAgLnJlcGxhY2UoLy0tLS9nLCAnXFx1MjAxNCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvLS0vZywgJ1xcdTIwMTMnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLzwvZywgJ1xcdTAwQTEnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLz4vZywgJ1xcdTAwQkYnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL34vZywgJ1xcdTAwQTAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL2BgL2csIG9wdGlvbnMubWFya3VwLmVucXVvdGUub3BlbilcbiAgICAgICAgICAgIC5yZXBsYWNlKC8nJy9nLCBvcHRpb25zLm1hcmt1cC5lbnF1b3RlLmNsb3NlKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdGV4dCBtb2RlICR7bm9kZS5tb2RlfWApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub2RlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvdGVjdCh2KSB7XG4gICAgICBsZXQgc291cmNlXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICBzb3VyY2UgPSB2Lm1hcChlID0+IGUuc291cmNlKS5qb2luKCcnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IFsgdiBdXG4gICAgICAgIHNvdXJjZSA9IHYuc291cmNlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgIHZhbHVlOiB2LFxuICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICBjYXNlOiAncHJvdGVjdCcsXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZV9tYXJrdXBfc3dpdGNoZXMoYmxvY2spIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYmxvY2sudmFsdWVcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiBibG9ja1xuXG4gICAgICBibG9jay52YWx1ZSA9IFtdXG5cbiAgICAgIGNvbnN0IHBzZXVkbyA9IHtcbiAgICAgICAgYmxvY2s6IG51bGwsXG4gICAgICAgIG1hcmt1cDoge30sXG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBwc2V1ZG9fYmxvY2soKSB7XG4gICAgICAgIHBzZXVkby5ibG9jayA9IHtcbiAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICBzb3VyY2U6ICcnLFxuICAgICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgICBtYXJrdXA6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHNldWRvLm1hcmt1cCkpLFxuICAgICAgICAgIHBzZXVkbzogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgICBibG9jay52YWx1ZS5wdXNoKHBzZXVkby5ibG9jaylcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB2YWx1ZSkge1xuICAgICAgICBpZiAobm9kZS5raW5kID09PSAnRW52aXJvbm1lbnQnIHx8IG5vZGUua2luZCA9PT0gJ0Jsb2NrJykge1xuICAgICAgICAgIGJsb2NrLnZhbHVlLnB1c2gobm9kZSlcblxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwc2V1ZG8ubWFya3VwKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBzZXVkb19ibG9jaygpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBzZXVkby5ibG9jayA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdSZWd1bGFyQ29tbWFuZCcgJiYgbWFya3VwW25vZGUuY29tbWFuZF0pIHtcbiAgICAgICAgICBpZiAocHNldWRvLm1hcmt1cC5pdGFsaWNzKSB7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jaXRhdGlvbi1qcy9iaWJ0ZXgtcGFyc2VyLWV4cGVyaW1lbnRzL2NvbW1pdC9jYWU0NzVmMDc1YTA1ZDFjMDc0NDg1YTA2MWIwOGVkMjQ1MTcwYzdlXG4gICAgICAgICAgICBkZWxldGUgcHNldWRvLm1hcmt1cC5pdGFsaWNzXG4gICAgICAgICAgICBpZiAobWFya3VwW25vZGUuY29tbWFuZF0gIT09ICdpdGFsaWNzJykgcHNldWRvLm1hcmt1cFttYXJrdXBbbm9kZS5jb21tYW5kXV0gPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBzZXVkby5tYXJrdXBbbWFya3VwW25vZGUuY29tbWFuZF1dID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwc2V1ZG8ubWFya3VwKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBzZXVkb19ibG9jaygpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBwc2V1ZG8uYmxvY2sgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBzZXVkby5ibG9jaykge1xuICAgICAgICAgIHBzZXVkby5ibG9jay5zb3VyY2UgKz0gbm9kZS5zb3VyY2VcbiAgICAgICAgICBwc2V1ZG8uYmxvY2sudmFsdWUucHVzaChub2RlKVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmxvY2sudmFsdWUucHVzaChub2RlKVxuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYmxvY2sudmFsdWUgPSBibG9jay52YWx1ZS5maWx0ZXIobm9kZSA9PiAhKG5vZGUucHNldWRvICYmIG5vZGUudmFsdWUubGVuZ3RoID09PSAwKSlcblxuICAgICAgcmV0dXJuIGJsb2NrXG4gICAgfVxuXG5cbiAgcGVnJHJlc3VsdCA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbigpO1xuXG4gIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICByZXR1cm4gcGVnJHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgcGVnJGZhaWwocGVnJGVuZEV4cGVjdGF0aW9uKCkpO1xuICAgIH1cblxuICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihcbiAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQsXG4gICAgICBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aCA/IGlucHV0LmNoYXJBdChwZWckbWF4RmFpbFBvcykgOiBudWxsLFxuICAgICAgcGVnJG1heEZhaWxQb3MgPCBpbnB1dC5sZW5ndGhcbiAgICAgICAgPyBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRtYXhGYWlsUG9zLCBwZWckbWF4RmFpbFBvcyArIDEpXG4gICAgICAgIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckbWF4RmFpbFBvcywgcGVnJG1heEZhaWxQb3MpXG4gICAgKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU3ludGF4RXJyb3I6IHBlZyRTeW50YXhFcnJvcixcbiAgcGFyc2U6ICAgICAgIHBlZyRwYXJzZVxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuLy8gT3JpZ2luYWwgd29yayBieSBIZW5yaWsgTXVlaGUgKGMpIDIwMTBcbi8vXG4vLyBDb21tb25KUyBwb3J0IGJ5IE1pa29sYSBMeXNlbmtvIDIwMTNcbi8vXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnBhcnNlID0gdm9pZCAwO1xuY2xhc3MgUGFyc2VFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBwYXJzZXIpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgIEAgJHtwYXJzZXIucG9zfWA7XG4gICAgICAgIGlmIChwYXJzZXIucGFyc2luZylcbiAgICAgICAgICAgIG1lc3NhZ2UgKz0gYCBpbiAke0pTT04uc3RyaW5naWZ5KHBhcnNlci5wYXJzaW5nKX1gO1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ1BhcnNlRXJyb3InO1xuICAgIH1cbn1cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBwcmVmZXItdGVtcGxhdGVcbmNvbnN0IGxldHRlciA9IG5ldyBSZWdFeHAoJ1snICsgW1xuICAgIC8vIExldHRlciwgVXBwZXJjYXNlXG4gICAgL1xcdTAwNDEtXFx1MDA1QVxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBERVxcdTAxMDBcXHUwMTAyXFx1MDEwNFxcdTAxMDZcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMTBFXFx1MDExMFxcdTAxMTJcXHUwMTE0XFx1MDExNlxcdTAxMThcXHUwMTFBXFx1MDExQ1xcdTAxMUVcXHUwMTIwXFx1MDEyMlxcdTAxMjRcXHUwMTI2XFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEyRVxcdTAxMzBcXHUwMTMyXFx1MDEzNFxcdTAxMzZcXHUwMTM5XFx1MDEzQlxcdTAxM0RcXHUwMTNGXFx1MDE0MVxcdTAxNDNcXHUwMTQ1XFx1MDE0N1xcdTAxNEFcXHUwMTRDXFx1MDE0RVxcdTAxNTBcXHUwMTUyXFx1MDE1NFxcdTAxNTZcXHUwMTU4XFx1MDE1QVxcdTAxNUNcXHUwMTVFXFx1MDE2MFxcdTAxNjJcXHUwMTY0XFx1MDE2NlxcdTAxNjhcXHUwMTZBXFx1MDE2Q1xcdTAxNkVcXHUwMTcwXFx1MDE3MlxcdTAxNzRcXHUwMTc2XFx1MDE3OC1cXHUwMTc5XFx1MDE3QlxcdTAxN0RcXHUwMTgxLVxcdTAxODJcXHUwMTg0XFx1MDE4Ni1cXHUwMTg3XFx1MDE4OS1cXHUwMThCXFx1MDE4RS1cXHUwMTkxXFx1MDE5My1cXHUwMTk0XFx1MDE5Ni1cXHUwMTk4XFx1MDE5Qy1cXHUwMTlEXFx1MDE5Ri1cXHUwMUEwXFx1MDFBMlxcdTAxQTRcXHUwMUE2LVxcdTAxQTdcXHUwMUE5XFx1MDFBQ1xcdTAxQUUtXFx1MDFBRlxcdTAxQjEtXFx1MDFCM1xcdTAxQjVcXHUwMUI3LVxcdTAxQjhcXHUwMUJDXFx1MDFDNFxcdTAxQzdcXHUwMUNBXFx1MDFDRFxcdTAxQ0ZcXHUwMUQxXFx1MDFEM1xcdTAxRDVcXHUwMUQ3XFx1MDFEOVxcdTAxREJcXHUwMURFXFx1MDFFMFxcdTAxRTJcXHUwMUU0XFx1MDFFNlxcdTAxRThcXHUwMUVBXFx1MDFFQ1xcdTAxRUVcXHUwMUYxXFx1MDFGNFxcdTAxRjYtXFx1MDFGOFxcdTAxRkFcXHUwMUZDXFx1MDFGRVxcdTAyMDBcXHUwMjAyXFx1MDIwNFxcdTAyMDZcXHUwMjA4XFx1MDIwQVxcdTAyMENcXHUwMjBFXFx1MDIxMFxcdTAyMTJcXHUwMjE0XFx1MDIxNlxcdTAyMThcXHUwMjFBXFx1MDIxQ1xcdTAyMUVcXHUwMjIwXFx1MDIyMlxcdTAyMjRcXHUwMjI2XFx1MDIyOFxcdTAyMkFcXHUwMjJDXFx1MDIyRVxcdTAyMzBcXHUwMjMyXFx1MDIzQS1cXHUwMjNCXFx1MDIzRC1cXHUwMjNFXFx1MDI0MVxcdTAyNDMtXFx1MDI0NlxcdTAyNDhcXHUwMjRBXFx1MDI0Q1xcdTAyNEVcXHUwMzcwXFx1MDM3MlxcdTAzNzZcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzOEZcXHUwMzkxLVxcdTAzQTFcXHUwM0EzLVxcdTAzQUJcXHUwM0NGXFx1MDNEMi1cXHUwM0Q0XFx1MDNEOFxcdTAzREFcXHUwM0RDXFx1MDNERVxcdTAzRTBcXHUwM0UyXFx1MDNFNFxcdTAzRTZcXHUwM0U4XFx1MDNFQVxcdTAzRUNcXHUwM0VFXFx1MDNGNFxcdTAzRjdcXHUwM0Y5LVxcdTAzRkFcXHUwM0ZELVxcdTA0MkZcXHUwNDYwXFx1MDQ2MlxcdTA0NjRcXHUwNDY2XFx1MDQ2OFxcdTA0NkFcXHUwNDZDXFx1MDQ2RVxcdTA0NzBcXHUwNDcyXFx1MDQ3NFxcdTA0NzZcXHUwNDc4XFx1MDQ3QVxcdTA0N0NcXHUwNDdFXFx1MDQ4MFxcdTA0OEFcXHUwNDhDXFx1MDQ4RVxcdTA0OTBcXHUwNDkyXFx1MDQ5NFxcdTA0OTZcXHUwNDk4XFx1MDQ5QVxcdTA0OUNcXHUwNDlFXFx1MDRBMFxcdTA0QTJcXHUwNEE0XFx1MDRBNlxcdTA0QThcXHUwNEFBXFx1MDRBQ1xcdTA0QUVcXHUwNEIwXFx1MDRCMlxcdTA0QjRcXHUwNEI2XFx1MDRCOFxcdTA0QkFcXHUwNEJDXFx1MDRCRVxcdTA0QzAtXFx1MDRDMVxcdTA0QzNcXHUwNEM1XFx1MDRDN1xcdTA0QzlcXHUwNENCXFx1MDRDRFxcdTA0RDBcXHUwNEQyXFx1MDRENFxcdTA0RDZcXHUwNEQ4XFx1MDREQVxcdTA0RENcXHUwNERFXFx1MDRFMFxcdTA0RTJcXHUwNEU0XFx1MDRFNlxcdTA0RThcXHUwNEVBXFx1MDRFQ1xcdTA0RUVcXHUwNEYwXFx1MDRGMlxcdTA0RjRcXHUwNEY2XFx1MDRGOFxcdTA0RkFcXHUwNEZDXFx1MDRGRVxcdTA1MDBcXHUwNTAyXFx1MDUwNFxcdTA1MDZcXHUwNTA4XFx1MDUwQVxcdTA1MENcXHUwNTBFXFx1MDUxMFxcdTA1MTJcXHUwNTE0XFx1MDUxNlxcdTA1MThcXHUwNTFBXFx1MDUxQ1xcdTA1MUVcXHUwNTIwXFx1MDUyMlxcdTA1MjRcXHUwNTI2XFx1MDUyOFxcdTA1MkFcXHUwNTJDXFx1MDUyRVxcdTA1MzEtXFx1MDU1NlxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTNBMC1cXHUxM0Y1XFx1MUUwMFxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTFFMDhcXHUxRTBBXFx1MUUwQ1xcdTFFMEVcXHUxRTEwXFx1MUUxMlxcdTFFMTRcXHUxRTE2XFx1MUUxOFxcdTFFMUFcXHUxRTFDXFx1MUUxRVxcdTFFMjBcXHUxRTIyXFx1MUUyNFxcdTFFMjZcXHUxRTI4XFx1MUUyQVxcdTFFMkNcXHUxRTJFXFx1MUUzMFxcdTFFMzJcXHUxRTM0XFx1MUUzNlxcdTFFMzhcXHUxRTNBXFx1MUUzQ1xcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTFFNDRcXHUxRTQ2XFx1MUU0OFxcdTFFNEFcXHUxRTRDXFx1MUU0RVxcdTFFNTBcXHUxRTUyXFx1MUU1NFxcdTFFNTZcXHUxRTU4XFx1MUU1QVxcdTFFNUNcXHUxRTVFXFx1MUU2MFxcdTFFNjJcXHUxRTY0XFx1MUU2NlxcdTFFNjhcXHUxRTZBXFx1MUU2Q1xcdTFFNkVcXHUxRTcwXFx1MUU3MlxcdTFFNzRcXHUxRTc2XFx1MUU3OFxcdTFFN0FcXHUxRTdDXFx1MUU3RVxcdTFFODBcXHUxRTgyXFx1MUU4NFxcdTFFODZcXHUxRTg4XFx1MUU4QVxcdTFFOENcXHUxRThFXFx1MUU5MFxcdTFFOTJcXHUxRTk0XFx1MUU5RVxcdTFFQTBcXHUxRUEyXFx1MUVBNFxcdTFFQTZcXHUxRUE4XFx1MUVBQVxcdTFFQUNcXHUxRUFFXFx1MUVCMFxcdTFFQjJcXHUxRUI0XFx1MUVCNlxcdTFFQjhcXHUxRUJBXFx1MUVCQ1xcdTFFQkVcXHUxRUMwXFx1MUVDMlxcdTFFQzRcXHUxRUM2XFx1MUVDOFxcdTFFQ0FcXHUxRUNDXFx1MUVDRVxcdTFFRDBcXHUxRUQyXFx1MUVENFxcdTFFRDZcXHUxRUQ4XFx1MUVEQVxcdTFFRENcXHUxRURFXFx1MUVFMFxcdTFFRTJcXHUxRUU0XFx1MUVFNlxcdTFFRThcXHUxRUVBXFx1MUVFQ1xcdTFFRUVcXHUxRUYwXFx1MUVGMlxcdTFFRjRcXHUxRUY2XFx1MUVGOFxcdTFFRkFcXHUxRUZDXFx1MUVGRVxcdTFGMDgtXFx1MUYwRlxcdTFGMTgtXFx1MUYxRFxcdTFGMjgtXFx1MUYyRlxcdTFGMzgtXFx1MUYzRlxcdTFGNDgtXFx1MUY0RFxcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUZcXHUxRjY4LVxcdTFGNkZcXHUxRkI4LVxcdTFGQkJcXHUxRkM4LVxcdTFGQ0JcXHUxRkQ4LVxcdTFGREJcXHUxRkU4LVxcdTFGRUNcXHUxRkY4LVxcdTFGRkJcXHUyMTAyXFx1MjEwN1xcdTIxMEItXFx1MjEwRFxcdTIxMTAtXFx1MjExMlxcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTMwLVxcdTIxMzNcXHUyMTNFLVxcdTIxM0ZcXHUyMTQ1XFx1MjE4M1xcdTJDMDAtXFx1MkMyRVxcdTJDNjBcXHUyQzYyLVxcdTJDNjRcXHUyQzY3XFx1MkM2OVxcdTJDNkJcXHUyQzZELVxcdTJDNzBcXHUyQzcyXFx1MkM3NVxcdTJDN0UtXFx1MkM4MFxcdTJDODJcXHUyQzg0XFx1MkM4NlxcdTJDODhcXHUyQzhBXFx1MkM4Q1xcdTJDOEVcXHUyQzkwXFx1MkM5MlxcdTJDOTRcXHUyQzk2XFx1MkM5OFxcdTJDOUFcXHUyQzlDXFx1MkM5RVxcdTJDQTBcXHUyQ0EyXFx1MkNBNFxcdTJDQTZcXHUyQ0E4XFx1MkNBQVxcdTJDQUNcXHUyQ0FFXFx1MkNCMFxcdTJDQjJcXHUyQ0I0XFx1MkNCNlxcdTJDQjhcXHUyQ0JBXFx1MkNCQ1xcdTJDQkVcXHUyQ0MwXFx1MkNDMlxcdTJDQzRcXHUyQ0M2XFx1MkNDOFxcdTJDQ0FcXHUyQ0NDXFx1MkNDRVxcdTJDRDBcXHUyQ0QyXFx1MkNENFxcdTJDRDZcXHUyQ0Q4XFx1MkNEQVxcdTJDRENcXHUyQ0RFXFx1MkNFMFxcdTJDRTJcXHUyQ0VCXFx1MkNFRFxcdTJDRjJcXHVBNjQwXFx1QTY0MlxcdUE2NDRcXHVBNjQ2XFx1QTY0OFxcdUE2NEFcXHVBNjRDXFx1QTY0RVxcdUE2NTBcXHVBNjUyXFx1QTY1NFxcdUE2NTZcXHVBNjU4XFx1QTY1QVxcdUE2NUNcXHVBNjVFXFx1QTY2MFxcdUE2NjJcXHVBNjY0XFx1QTY2NlxcdUE2NjhcXHVBNjZBXFx1QTY2Q1xcdUE2ODBcXHVBNjgyXFx1QTY4NFxcdUE2ODZcXHVBNjg4XFx1QTY4QVxcdUE2OENcXHVBNjhFXFx1QTY5MFxcdUE2OTJcXHVBNjk0XFx1QTY5NlxcdUE2OThcXHVBNjlBXFx1QTcyMlxcdUE3MjRcXHVBNzI2XFx1QTcyOFxcdUE3MkFcXHVBNzJDXFx1QTcyRVxcdUE3MzJcXHVBNzM0XFx1QTczNlxcdUE3MzhcXHVBNzNBXFx1QTczQ1xcdUE3M0VcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBNzQ2XFx1QTc0OFxcdUE3NEFcXHVBNzRDXFx1QTc0RVxcdUE3NTBcXHVBNzUyXFx1QTc1NFxcdUE3NTZcXHVBNzU4XFx1QTc1QVxcdUE3NUNcXHVBNzVFXFx1QTc2MFxcdUE3NjJcXHVBNzY0XFx1QTc2NlxcdUE3NjhcXHVBNzZBXFx1QTc2Q1xcdUE3NkVcXHVBNzc5XFx1QTc3QlxcdUE3N0QtXFx1QTc3RVxcdUE3ODBcXHVBNzgyXFx1QTc4NFxcdUE3ODZcXHVBNzhCXFx1QTc4RFxcdUE3OTBcXHVBNzkyXFx1QTc5NlxcdUE3OThcXHVBNzlBXFx1QTc5Q1xcdUE3OUVcXHVBN0EwXFx1QTdBMlxcdUE3QTRcXHVBN0E2XFx1QTdBOFxcdUE3QUEtXFx1QTdBRFxcdUE3QjAtXFx1QTdCNFxcdUE3QjZcXHVGRjIxLVxcdUZGM0EvLnNvdXJjZSxcbiAgICAvLyBMZXR0ZXIsIFRpdGxlY2FzZVxuICAgIC9cXHUwMUM1XFx1MDFDOFxcdTAxQ0JcXHUwMUYyXFx1MUY4OC1cXHUxRjhGXFx1MUY5OC1cXHUxRjlGXFx1MUZBOC1cXHUxRkFGXFx1MUZCQ1xcdTFGQ0NcXHUxRkZDLy5zb3VyY2UsXG4gICAgLy8gTGV0dGVyLCBMb3dlcmNhc2VcbiAgICAvXFx1MDA2MS1cXHUwMDdBXFx1MDBCNVxcdTAwREYtXFx1MDBGNlxcdTAwRjgtXFx1MDBGRlxcdTAxMDFcXHUwMTAzXFx1MDEwNVxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMTBGXFx1MDExMVxcdTAxMTNcXHUwMTE1XFx1MDExN1xcdTAxMTlcXHUwMTFCXFx1MDExRFxcdTAxMUZcXHUwMTIxXFx1MDEyM1xcdTAxMjVcXHUwMTI3XFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx1MDEyRlxcdTAxMzFcXHUwMTMzXFx1MDEzNVxcdTAxMzctXFx1MDEzOFxcdTAxM0FcXHUwMTNDXFx1MDEzRVxcdTAxNDBcXHUwMTQyXFx1MDE0NFxcdTAxNDZcXHUwMTQ4LVxcdTAxNDlcXHUwMTRCXFx1MDE0RFxcdTAxNEZcXHUwMTUxXFx1MDE1M1xcdTAxNTVcXHUwMTU3XFx1MDE1OVxcdTAxNUJcXHUwMTVEXFx1MDE1RlxcdTAxNjFcXHUwMTYzXFx1MDE2NVxcdTAxNjdcXHUwMTY5XFx1MDE2QlxcdTAxNkRcXHUwMTZGXFx1MDE3MVxcdTAxNzNcXHUwMTc1XFx1MDE3N1xcdTAxN0FcXHUwMTdDXFx1MDE3RS1cXHUwMTgwXFx1MDE4M1xcdTAxODVcXHUwMTg4XFx1MDE4Qy1cXHUwMThEXFx1MDE5MlxcdTAxOTVcXHUwMTk5LVxcdTAxOUJcXHUwMTlFXFx1MDFBMVxcdTAxQTNcXHUwMUE1XFx1MDFBOFxcdTAxQUEtXFx1MDFBQlxcdTAxQURcXHUwMUIwXFx1MDFCNFxcdTAxQjZcXHUwMUI5LVxcdTAxQkFcXHUwMUJELVxcdTAxQkZcXHUwMUM2XFx1MDFDOVxcdTAxQ0NcXHUwMUNFXFx1MDFEMFxcdTAxRDJcXHUwMUQ0XFx1MDFENlxcdTAxRDhcXHUwMURBXFx1MDFEQy1cXHUwMUREXFx1MDFERlxcdTAxRTFcXHUwMUUzXFx1MDFFNVxcdTAxRTdcXHUwMUU5XFx1MDFFQlxcdTAxRURcXHUwMUVGLVxcdTAxRjBcXHUwMUYzXFx1MDFGNVxcdTAxRjlcXHUwMUZCXFx1MDFGRFxcdTAxRkZcXHUwMjAxXFx1MDIwM1xcdTAyMDVcXHUwMjA3XFx1MDIwOVxcdTAyMEJcXHUwMjBEXFx1MDIwRlxcdTAyMTFcXHUwMjEzXFx1MDIxNVxcdTAyMTdcXHUwMjE5XFx1MDIxQlxcdTAyMURcXHUwMjFGXFx1MDIyMVxcdTAyMjNcXHUwMjI1XFx1MDIyN1xcdTAyMjlcXHUwMjJCXFx1MDIyRFxcdTAyMkZcXHUwMjMxXFx1MDIzMy1cXHUwMjM5XFx1MDIzQ1xcdTAyM0YtXFx1MDI0MFxcdTAyNDJcXHUwMjQ3XFx1MDI0OVxcdTAyNEJcXHUwMjREXFx1MDI0Ri1cXHUwMjkzXFx1MDI5NS1cXHUwMkFGXFx1MDM3MVxcdTAzNzNcXHUwMzc3XFx1MDM3Qi1cXHUwMzdEXFx1MDM5MFxcdTAzQUMtXFx1MDNDRVxcdTAzRDAtXFx1MDNEMVxcdTAzRDUtXFx1MDNEN1xcdTAzRDlcXHUwM0RCXFx1MDNERFxcdTAzREZcXHUwM0UxXFx1MDNFM1xcdTAzRTVcXHUwM0U3XFx1MDNFOVxcdTAzRUJcXHUwM0VEXFx1MDNFRi1cXHUwM0YzXFx1MDNGNVxcdTAzRjhcXHUwM0ZCLVxcdTAzRkNcXHUwNDMwLVxcdTA0NUZcXHUwNDYxXFx1MDQ2M1xcdTA0NjVcXHUwNDY3XFx1MDQ2OVxcdTA0NkJcXHUwNDZEXFx1MDQ2RlxcdTA0NzFcXHUwNDczXFx1MDQ3NVxcdTA0NzdcXHUwNDc5XFx1MDQ3QlxcdTA0N0RcXHUwNDdGXFx1MDQ4MVxcdTA0OEJcXHUwNDhEXFx1MDQ4RlxcdTA0OTFcXHUwNDkzXFx1MDQ5NVxcdTA0OTdcXHUwNDk5XFx1MDQ5QlxcdTA0OURcXHUwNDlGXFx1MDRBMVxcdTA0QTNcXHUwNEE1XFx1MDRBN1xcdTA0QTlcXHUwNEFCXFx1MDRBRFxcdTA0QUZcXHUwNEIxXFx1MDRCM1xcdTA0QjVcXHUwNEI3XFx1MDRCOVxcdTA0QkJcXHUwNEJEXFx1MDRCRlxcdTA0QzJcXHUwNEM0XFx1MDRDNlxcdTA0QzhcXHUwNENBXFx1MDRDQ1xcdTA0Q0UtXFx1MDRDRlxcdTA0RDFcXHUwNEQzXFx1MDRENVxcdTA0RDdcXHUwNEQ5XFx1MDREQlxcdTA0RERcXHUwNERGXFx1MDRFMVxcdTA0RTNcXHUwNEU1XFx1MDRFN1xcdTA0RTlcXHUwNEVCXFx1MDRFRFxcdTA0RUZcXHUwNEYxXFx1MDRGM1xcdTA0RjVcXHUwNEY3XFx1MDRGOVxcdTA0RkJcXHUwNEZEXFx1MDRGRlxcdTA1MDFcXHUwNTAzXFx1MDUwNVxcdTA1MDdcXHUwNTA5XFx1MDUwQlxcdTA1MERcXHUwNTBGXFx1MDUxMVxcdTA1MTNcXHUwNTE1XFx1MDUxN1xcdTA1MTlcXHUwNTFCXFx1MDUxRFxcdTA1MUZcXHUwNTIxXFx1MDUyM1xcdTA1MjVcXHUwNTI3XFx1MDUyOVxcdTA1MkJcXHUwNTJEXFx1MDUyRlxcdTA1NjEtXFx1MDU4N1xcdTEzRjgtXFx1MTNGRFxcdTFEMDAtXFx1MUQyQlxcdTFENkItXFx1MUQ3N1xcdTFENzktXFx1MUQ5QVxcdTFFMDFcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUxRTA5XFx1MUUwQlxcdTFFMERcXHUxRTBGXFx1MUUxMVxcdTFFMTNcXHUxRTE1XFx1MUUxN1xcdTFFMTlcXHUxRTFCXFx1MUUxRFxcdTFFMUZcXHUxRTIxXFx1MUUyM1xcdTFFMjVcXHUxRTI3XFx1MUUyOVxcdTFFMkJcXHUxRTJEXFx1MUUyRlxcdTFFMzFcXHUxRTMzXFx1MUUzNVxcdTFFMzdcXHUxRTM5XFx1MUUzQlxcdTFFM0RcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUxRTQ1XFx1MUU0N1xcdTFFNDlcXHUxRTRCXFx1MUU0RFxcdTFFNEZcXHUxRTUxXFx1MUU1M1xcdTFFNTVcXHUxRTU3XFx1MUU1OVxcdTFFNUJcXHUxRTVEXFx1MUU1RlxcdTFFNjFcXHUxRTYzXFx1MUU2NVxcdTFFNjdcXHUxRTY5XFx1MUU2QlxcdTFFNkRcXHUxRTZGXFx1MUU3MVxcdTFFNzNcXHUxRTc1XFx1MUU3N1xcdTFFNzlcXHUxRTdCXFx1MUU3RFxcdTFFN0ZcXHUxRTgxXFx1MUU4M1xcdTFFODVcXHUxRTg3XFx1MUU4OVxcdTFFOEJcXHUxRThEXFx1MUU4RlxcdTFFOTFcXHUxRTkzXFx1MUU5NS1cXHUxRTlEXFx1MUU5RlxcdTFFQTFcXHUxRUEzXFx1MUVBNVxcdTFFQTdcXHUxRUE5XFx1MUVBQlxcdTFFQURcXHUxRUFGXFx1MUVCMVxcdTFFQjNcXHUxRUI1XFx1MUVCN1xcdTFFQjlcXHUxRUJCXFx1MUVCRFxcdTFFQkZcXHUxRUMxXFx1MUVDM1xcdTFFQzVcXHUxRUM3XFx1MUVDOVxcdTFFQ0JcXHUxRUNEXFx1MUVDRlxcdTFFRDFcXHUxRUQzXFx1MUVENVxcdTFFRDdcXHUxRUQ5XFx1MUVEQlxcdTFFRERcXHUxRURGXFx1MUVFMVxcdTFFRTNcXHUxRUU1XFx1MUVFN1xcdTFFRTlcXHUxRUVCXFx1MUVFRFxcdTFFRUZcXHUxRUYxXFx1MUVGM1xcdTFFRjVcXHUxRUY3XFx1MUVGOVxcdTFFRkJcXHUxRUZEXFx1MUVGRi1cXHUxRjA3XFx1MUYxMC1cXHUxRjE1XFx1MUYyMC1cXHUxRjI3XFx1MUYzMC1cXHUxRjM3XFx1MUY0MC1cXHUxRjQ1XFx1MUY1MC1cXHUxRjU3XFx1MUY2MC1cXHUxRjY3XFx1MUY3MC1cXHUxRjdEXFx1MUY4MC1cXHUxRjg3XFx1MUY5MC1cXHUxRjk3XFx1MUZBMC1cXHUxRkE3XFx1MUZCMC1cXHUxRkI0XFx1MUZCNi1cXHUxRkI3XFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDN1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEN1xcdTFGRTAtXFx1MUZFN1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGN1xcdTIxMEFcXHUyMTBFLVxcdTIxMEZcXHUyMTEzXFx1MjEyRlxcdTIxMzRcXHUyMTM5XFx1MjEzQy1cXHUyMTNEXFx1MjE0Ni1cXHUyMTQ5XFx1MjE0RVxcdTIxODRcXHUyQzMwLVxcdTJDNUVcXHUyQzYxXFx1MkM2NS1cXHUyQzY2XFx1MkM2OFxcdTJDNkFcXHUyQzZDXFx1MkM3MVxcdTJDNzMtXFx1MkM3NFxcdTJDNzYtXFx1MkM3QlxcdTJDODFcXHUyQzgzXFx1MkM4NVxcdTJDODdcXHUyQzg5XFx1MkM4QlxcdTJDOERcXHUyQzhGXFx1MkM5MVxcdTJDOTNcXHUyQzk1XFx1MkM5N1xcdTJDOTlcXHUyQzlCXFx1MkM5RFxcdTJDOUZcXHUyQ0ExXFx1MkNBM1xcdTJDQTVcXHUyQ0E3XFx1MkNBOVxcdTJDQUJcXHUyQ0FEXFx1MkNBRlxcdTJDQjFcXHUyQ0IzXFx1MkNCNVxcdTJDQjdcXHUyQ0I5XFx1MkNCQlxcdTJDQkRcXHUyQ0JGXFx1MkNDMVxcdTJDQzNcXHUyQ0M1XFx1MkNDN1xcdTJDQzlcXHUyQ0NCXFx1MkNDRFxcdTJDQ0ZcXHUyQ0QxXFx1MkNEM1xcdTJDRDVcXHUyQ0Q3XFx1MkNEOVxcdTJDREJcXHUyQ0REXFx1MkNERlxcdTJDRTFcXHUyQ0UzLVxcdTJDRTRcXHUyQ0VDXFx1MkNFRVxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdUE2NDFcXHVBNjQzXFx1QTY0NVxcdUE2NDdcXHVBNjQ5XFx1QTY0QlxcdUE2NERcXHVBNjRGXFx1QTY1MVxcdUE2NTNcXHVBNjU1XFx1QTY1N1xcdUE2NTlcXHVBNjVCXFx1QTY1RFxcdUE2NUZcXHVBNjYxXFx1QTY2M1xcdUE2NjVcXHVBNjY3XFx1QTY2OVxcdUE2NkJcXHVBNjZEXFx1QTY4MVxcdUE2ODNcXHVBNjg1XFx1QTY4N1xcdUE2ODlcXHVBNjhCXFx1QTY4RFxcdUE2OEZcXHVBNjkxXFx1QTY5M1xcdUE2OTVcXHVBNjk3XFx1QTY5OVxcdUE2OUJcXHVBNzIzXFx1QTcyNVxcdUE3MjdcXHVBNzI5XFx1QTcyQlxcdUE3MkRcXHVBNzJGLVxcdUE3MzFcXHVBNzMzXFx1QTczNVxcdUE3MzdcXHVBNzM5XFx1QTczQlxcdUE3M0RcXHVBNzNGXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTc0N1xcdUE3NDlcXHVBNzRCXFx1QTc0RFxcdUE3NEZcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHVBNzU3XFx1QTc1OVxcdUE3NUJcXHVBNzVEXFx1QTc1RlxcdUE3NjFcXHVBNzYzXFx1QTc2NVxcdUE3NjdcXHVBNzY5XFx1QTc2QlxcdUE3NkRcXHVBNzZGXFx1QTc3MS1cXHVBNzc4XFx1QTc3QVxcdUE3N0NcXHVBNzdGXFx1QTc4MVxcdUE3ODNcXHVBNzg1XFx1QTc4N1xcdUE3OENcXHVBNzhFXFx1QTc5MVxcdUE3OTMtXFx1QTc5NVxcdUE3OTdcXHVBNzk5XFx1QTc5QlxcdUE3OURcXHVBNzlGXFx1QTdBMVxcdUE3QTNcXHVBN0E1XFx1QTdBN1xcdUE3QTlcXHVBN0I1XFx1QTdCN1xcdUE3RkFcXHVBQjMwLVxcdUFCNUFcXHVBQjYwLVxcdUFCNjVcXHVBQjcwLVxcdUFCQkZcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGRjQxLVxcdUZGNUEvLnNvdXJjZSxcbiAgICAvLyBMZXR0ZXIsIE1vZGlmaWVyXG4gICAgL1xcdTAyQjAtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3NFxcdTAzN0FcXHUwNTU5XFx1MDY0MFxcdTA2RTUtXFx1MDZFNlxcdTA3RjQtXFx1MDdGNVxcdTA3RkFcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwOTcxXFx1MEU0NlxcdTBFQzZcXHUxMEZDXFx1MTdEN1xcdTE4NDNcXHUxQUE3XFx1MUM3OC1cXHUxQzdEXFx1MUQyQy1cXHUxRDZBXFx1MUQ3OFxcdTFEOUItXFx1MURCRlxcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MkM3Qy1cXHUyQzdEXFx1MkQ2RlxcdTJFMkZcXHUzMDA1XFx1MzAzMS1cXHUzMDM1XFx1MzAzQlxcdTMwOUQtXFx1MzA5RVxcdTMwRkMtXFx1MzBGRVxcdUEwMTVcXHVBNEY4LVxcdUE0RkRcXHVBNjBDXFx1QTY3RlxcdUE2OUMtXFx1QTY5RFxcdUE3MTctXFx1QTcxRlxcdUE3NzBcXHVBNzg4XFx1QTdGOC1cXHVBN0Y5XFx1QTlDRlxcdUE5RTZcXHVBQTcwXFx1QUFERFxcdUFBRjMtXFx1QUFGNFxcdUFCNUMtXFx1QUI1RlxcdUZGNzBcXHVGRjlFLVxcdUZGOUYvLnNvdXJjZSxcbiAgICAvLyBMZXR0ZXIsIE90aGVyXG4gICAgL1xcdTAwQUFcXHUwMEJBXFx1MDFCQlxcdTAxQzAtXFx1MDFDM1xcdTAyOTRcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2M0ZcXHUwNjQxLVxcdTA2NEFcXHUwNjZFLVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFRS1cXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDgwMC1cXHUwODE1XFx1MDg0MC1cXHUwODU4XFx1MDhBMC1cXHUwOEI0XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcyLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGLVxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDLVxcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwLVxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGLVxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyLVxcdTBBMzNcXHUwQTM1LVxcdTBBMzZcXHUwQTM4LVxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMi1cXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwLVxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRi1cXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMi1cXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUMtXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OS1cXHUwQjlBXFx1MEI5Q1xcdTBCOUUtXFx1MEI5RlxcdTBCQTMtXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM2MC1cXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwLVxcdTBDRTFcXHUwQ0YxLVxcdTBDRjJcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyLVxcdTBFMzNcXHUwRTQwLVxcdTBFNDVcXHUwRTgxLVxcdTBFODJcXHUwRTg0XFx1MEU4Ny1cXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUEtXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjItXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1LVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBEMC1cXHUxMEZBXFx1MTBGRC1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkYxLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0RDXFx1MTgyMC1cXHUxODQyXFx1MTg0NC1cXHUxODc3XFx1MTg4MC1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUUtXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3N1xcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGMVxcdTFDRjUtXFx1MUNGNlxcdTIxMzUtXFx1MjEzOFxcdTJEMzAtXFx1MkQ2N1xcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDZcXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGRDVcXHVBMDAwLVxcdUEwMTRcXHVBMDE2LVxcdUE0OENcXHVBNEQwLVxcdUE0RjdcXHVBNTAwLVxcdUE2MEJcXHVBNjEwLVxcdUE2MUZcXHVBNjJBLVxcdUE2MkJcXHVBNjZFXFx1QTZBMC1cXHVBNkU1XFx1QTc4RlxcdUE3RjdcXHVBN0ZCLVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5RTAtXFx1QTlFNFxcdUE5RTctXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE2RlxcdUFBNzEtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNS1cXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRENcXHVBQUUwLVxcdUFBRUFcXHVBQUYyXFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwLVxcdUZCNDFcXHVGQjQzLVxcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjY2LVxcdUZGNkZcXHVGRjcxLVxcdUZGOURcXHVGRkEwLVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGREMvLnNvdXJjZSxcbl0uam9pbignJykgKyAnXScpO1xuY2xhc3MgQmlidGV4UGFyc2VyIHtcbiAgICBwYXJzZShpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIC8vIHRoaXMuX3Byb2dyZXNzID0gMFxuICAgICAgICB0aGlzLnBvcyA9IDA7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5tYXhfZW50cmllcyA9IG9wdGlvbnMubWF4X2VudHJpZXMgfHwgMDtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gMDtcbiAgICAgICAgdGhpcy5wYXJzaW5nID0gbnVsbDtcbiAgICAgICAgdGhpcy5jaHVua3MgPSBbXTtcbiAgICAgICAgaWYgKG9wdGlvbnMuYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJpYnRleEFzeW5jKCkudGhlbigoKSA9PiB0aGlzLmNodW5rcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJpYnRleCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2h1bmtzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzV2hpdGVzcGFjZShzLCBob3Jpem9udGFsT25seSA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiAocyA9PT0gJyAnIHx8IHMgPT09ICdcXHQnIHx8ICghaG9yaXpvbnRhbE9ubHkgJiYgKHMgPT09ICdcXHInIHx8IHMgPT09ICdcXG4nKSkpO1xuICAgIH1cbiAgICBtYXRjaChzKSB7XG4gICAgICAgIHRoaXMuc2tpcFdoaXRlc3BhY2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCBzLmxlbmd0aCkgIT09IHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGBUb2tlbiBtaXNtYXRjaCwgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShzKX0sIGZvdW5kICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pbnB1dC5zdWJzdHIodGhpcy5wb3MsIDIwKSl9Li4uYCwgdGhpcyk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9zICs9IHMubGVuZ3RoO1xuICAgICAgICB0aGlzLnNraXBXaGl0ZXNwYWNlKCk7XG4gICAgfVxuICAgIHRyeU1hdGNoKHMpIHtcbiAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICByZXR1cm4gKHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCBzLmxlbmd0aCkgPT09IHMpO1xuICAgICAgICAvLyB0aGlzLnNraXBXaGl0ZXNwYWNlKClcbiAgICB9XG4gICAgc2tpcFdoaXRlc3BhY2UoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMuaW5wdXQubGVuZ3RoICYmIHRoaXMuaXNXaGl0ZXNwYWNlKHRoaXMuaW5wdXRbdGhpcy5wb3NdKSlcbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgIC8vIHNoYWR5XG4gICAgICAgIGlmICh0aGlzLmlucHV0W3RoaXMucG9zXSA9PT0gJyUnKSB7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aCAmJiB0aGlzLmlucHV0W3RoaXMucG9zXSAhPT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMuaW5wdXQubGVuZ3RoICYmIHRoaXMuaXNXaGl0ZXNwYWNlKHRoaXMuaW5wdXRbdGhpcy5wb3NdKSlcbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlX2JyYWNlcygpIHtcbiAgICAgICAgbGV0IGJyYWNlY291bnQgPSAwO1xuICAgICAgICB0aGlzLm1hdGNoKCd7Jyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgICAgIGxldCBtYXRoID0gZmFsc2U7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuaW5wdXRbdGhpcy5wb3NdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgICAgICAgICAgICBicmFjZWNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ30nOlxuICAgICAgICAgICAgICAgICAgICBpZiAoYnJhY2Vjb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IoJ1VuY2xvc2VkIG1hdGggc2VjdGlvbicsIHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmFjZWNvdW50LS07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJyQnOlxuICAgICAgICAgICAgICAgICAgICBtYXRoID0gIW1hdGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA+PSB0aGlzLmlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGBVbnRlcm1pbmF0ZWQgYnJhY2UtdmFsdWUgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmlucHV0LnN1YnN0cihzdGFydCwgMjApKX1gLCB0aGlzKTsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWVfcXVvdGVzKCkge1xuICAgICAgICB0aGlzLm1hdGNoKCdcIicpO1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBsZXQgYnJhY2Vjb3VudCA9IDA7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuaW5wdXRbdGhpcy5wb3NdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgICAgICAgICAgICBicmFjZWNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ30nOlxuICAgICAgICAgICAgICAgICAgICBicmFjZWNvdW50LS07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJyYWNlY291bnQgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA+PSB0aGlzLmlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGBVbnRlcm1pbmF0ZWQgcXVvdGUtdmFsdWUgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmlucHV0LnN1YnN0cihzdGFydCwgMjApKX1gLCB0aGlzKTsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2luZ2xlX3ZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy50cnlNYXRjaCgneycpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZV9icmFjZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnRyeU1hdGNoKCdcIicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZV9xdW90ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmtleSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlKCkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgdmFsdWVzLnB1c2godGhpcy5zaW5nbGVfdmFsdWUoKSk7XG4gICAgICAgIHdoaWxlICh0aGlzLnRyeU1hdGNoKCcjJykpIHtcbiAgICAgICAgICAgIHRoaXMubWF0Y2goJyMnKTtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHRoaXMuc2luZ2xlX3ZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZXMuam9pbignJyk7XG4gICAgfVxuICAgIGtleShhbGxvd1VuaWNvZGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucG9zID09PSB0aGlzLmlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdSdW5hd2F5IGtleScsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRbdGhpcy5wb3NdLm1hdGNoKC9bJ2EtekEtWjAtOSY7XzpcXFxcLi8tXS8pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFsbG93VW5pY29kZSAmJiB0aGlzLmlucHV0W3RoaXMucG9zXS5tYXRjaChsZXR0ZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGtleV9lcXVhbHNfdmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMua2V5KCk7XG4gICAgICAgIGlmICghdGhpcy50cnlNYXRjaCgnPScpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihgLi4uID0gdmFsdWUgZXhwZWN0ZWQsIGVxdWFscyBzaWduIG1pc3Npbmc6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pbnB1dC5zdWJzdHIodGhpcy5wb3MsIDIwKSl9Li4uYCwgdGhpcyk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWF0Y2goJz0nKTtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZSgpO1xuICAgICAgICByZXR1cm4gW2tleSwgdmFsXTtcbiAgICB9XG4gICAga2V5X3ZhbHVlX2xpc3QoKSB7XG4gICAgICAgIHRoaXMua2V5X2VxdWFsc192YWx1ZSgpO1xuICAgICAgICB3aGlsZSAodGhpcy50cnlNYXRjaCgnLCcpKSB7XG4gICAgICAgICAgICB0aGlzLm1hdGNoKCcsJyk7XG4gICAgICAgICAgICAvLyBmaXhlcyBwcm9ibGVtcyB3aXRoIGNvbW1hcyBhdCB0aGUgZW5kIG9mIGEgbGlzdFxuICAgICAgICAgICAgaWYgKHRoaXMudHJ5TWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5rZXlfZXF1YWxzX3ZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZW50cnkoZCkge1xuICAgICAgICB0aGlzLnBhcnNpbmcgPSB0aGlzLmtleSh0cnVlKTtcbiAgICAgICAgdGhpcy5tYXRjaCgnLCcpO1xuICAgICAgICB0aGlzLmtleV92YWx1ZV9saXN0KCk7XG4gICAgfVxuICAgIGRpcmVjdGl2ZSgpIHtcbiAgICAgICAgdGhpcy5tYXRjaCgnQCcpO1xuICAgICAgICByZXR1cm4gYEAke3RoaXMua2V5KCl9YC50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBzdHJpbmcoKSB7XG4gICAgICAgIHRoaXMua2V5X2VxdWFsc192YWx1ZSgpO1xuICAgIH1cbiAgICBwcmVhbWJsZSgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSgpO1xuICAgIH1cbiAgICBjb21tZW50KCkge1xuICAgICAgICB3aGlsZSAodGhpcy5pc1doaXRlc3BhY2UodGhpcy5pbnB1dFt0aGlzLnBvc10sIHRydWUpKVxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRbdGhpcy5wb3NdID09PSAneycpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVfYnJhY2VzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMuaW5wdXRbdGhpcy5wb3NdICE9PSAnXFxuJyAmJiB0aGlzLnBvcyA8IHRoaXMuaW5wdXQubGVuZ3RoKVxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICB9XG4gICAgLypcbiAgICBwcml2YXRlIHByb2dyZXNzKCkge1xuICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLnJvdW5kKCh0aGlzLnBvcyAvIHRoaXMuaW5wdXQubGVuZ3RoICogMTAwKSAvIDUpICogNSAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIGlmICh0aGlzLl9wcm9ncmVzcyAhPT0gcHJvZ3Jlc3MpIHtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSBwcm9ncmVzc1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgICgke3RoaXMuX3Byb2dyZXNzfSUpIGApXG4gICAgICB9XG4gICAgfVxuICAgICovXG4gICAgaGFzTW9yZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWF4X2VudHJpZXMgJiYgdGhpcy5lbnRyaWVzID49IHRoaXMubWF4X2VudHJpZXMpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiAodGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aCk7XG4gICAgfVxuICAgIGJpYnRleCgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaGFzTW9yZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlTmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJpYnRleEFzeW5jKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNNb3JlKCkgPyAobmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKHRoaXMucGFyc2VOZXh0KCkpKSkudGhlbigoKSA9PiB0aGlzLmJpYnRleEFzeW5jKCkpIDogUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgIH1cbiAgICBwYXJzZU5leHQoKSB7XG4gICAgICAgIC8vIHRoaXMucHJvZ3Jlc3MoKVxuICAgICAgICBjb25zdCBjaHVuayA9IHtcbiAgICAgICAgICAgIG9mZnNldDoge1xuICAgICAgICAgICAgICAgIHBvczogdGhpcy5wb3MsXG4gICAgICAgICAgICAgICAgbGluZTogdGhpcy5pbnB1dC5zdWJzdHJpbmcoMCwgdGhpcy5wb3MpLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgdGV4dDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5pbnB1dC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBndWFyZCA9ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuZGlyZWN0aXZlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdAc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCgneycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoKCd9Jyk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rLnN0cmluZ0RlY2xhcmF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQHByZWFtYmxlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCgneycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWFtYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2goJ30nKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmsucHJlYW1ibGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdAY29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICBjaHVuay5jb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJ5TWF0Y2goJ3snKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmQgPSAne30nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudHJ5TWF0Y2goJygnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmQgPSAnKCknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IoYFRva2VuIG1pc21hdGNoLCBleHBlY3RlZCAneycgb3IgJygnLCBmb3VuZCAke0pTT04uc3RyaW5naWZ5KHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCAyMCkpfS4uLmAsIHRoaXMpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoKGd1YXJkWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyeShkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaChndWFyZFsxXSk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rLmVudHJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzKys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIubmFtZSAhPT0gJ1BhcnNlRXJyb3InKVxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIGNodW5rLmVycm9yID0gZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgLy8gc2tpcCBhaGVhZCB0byB0aGUgbmV4dCBAIGFuZCB0cnkgYWdhaW5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcyA9IGNodW5rLm9mZnNldC5wb3MgKyAxO1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgdGhpcy5pbnB1dC5sZW5ndGggJiYgdGhpcy5pbnB1dFt0aGlzLnBvc10gIT09ICdAJylcbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRleHQgPSB0aGlzLmlucHV0LnN1YnN0cmluZyhjaHVuay5vZmZzZXQucG9zLCB0aGlzLnBvcyk7XG4gICAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLmNodW5rcy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoY2h1bmsuZXJyb3IgJiYgdGhpcy5jaHVua3MubGVuZ3RoICYmIHRoaXMuY2h1bmtzW2xhc3RdLmVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmNodW5rc1tsYXN0XS50ZXh0ICs9IHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjaHVuay50ZXh0ID0gdGV4dDtcbiAgICAgICAgICAgIHRoaXMuY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBSZWFkcyB0aGUgYmlidGV4IGlucHV0IGFuZCBzcGxpdHMgaXQgaW50byBzZXBhcmF0ZSBjaHVua3Mgb2YgYEBzdHJpbmdgcywgYEBjb21tZW50YHMsIGFuZCBiaWJ0ZXggZW50cmllcy4gVXNlZnVsIGZvciBkZXRlY3RpbmcgaWYgYSBmaWxlIGlzIGJpYnRleCBmaWxlIGFuZCBmb3IgZmlsdGVyaW5nIG91dCBiYXNpYyBlcnJvcnMgdGhhdCB3b3VsZFxuICogbWFrZSB0aGUgbW9yZSBzb3BoaXN0aWNhdGVkIFtbYmlidGV4LnBhcnNlXV0gcmVqZWN0IHRoZSB3aG9sZSBmaWxlXG4gKlxuICogQHJldHVybnMgYXJyYXkgb2YgY2h1bmtzLCB3aXRoIG1hcmtlcnMgZm9yIHR5cGUgYW5kIGVycm9ycyAoaWYgYW55KSBmb3VuZC5cbiAqL1xuZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiAobmV3IEJpYnRleFBhcnNlcikucGFyc2UoaW5wdXQsIG9wdGlvbnMpO1xufVxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2h1bmtlci5qcy5tYXAiLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXNjaWk6IHJlcXVpcmUoJy4vdGFibGVzL2FzY2lpLmpzb24nKSxcbiAgYXNjaWlfYmlidGV4X2NyZWF0b3I6IHJlcXVpcmUoJy4vdGFibGVzL2FzY2lpLWJpYnRleC1jcmVhdG9yLmpzb24nKSxcbiAgdW5pY29kZTogcmVxdWlyZSgnLi90YWJsZXMvdW5pY29kZS5qc29uJyksXG4gIGxhdGV4OiByZXF1aXJlKCcuL3RhYmxlcy9sYXRleC5qc29uJyksXG4gIGRpYWNyaXRpY3M6IHJlcXVpcmUoJy4vdGFibGVzL2RpYWNyaXRpY3MuanNvbicpLFxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gW1xuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnQycsXG4gICAgICAgICdhbGlhcyc6ICdPdGhlcicsXG4gICAgICAgICdpc0JtcExhc3QnOiB0cnVlLFxuICAgICAgICAnYm1wJzogJ1xcMC1cXHgxRlxceDdGLVxceDlGXFx4QURcXHUwMzc4XFx1MDM3OVxcdTAzODAtXFx1MDM4M1xcdTAzOEJcXHUwMzhEXFx1MDNBMlxcdTA1MzBcXHUwNTU3XFx1MDU1OFxcdTA1OEJcXHUwNThDXFx1MDU5MFxcdTA1QzgtXFx1MDVDRlxcdTA1RUItXFx1MDVFRVxcdTA1RjUtXFx1MDYwNVxcdTA2MUNcXHUwNjFEXFx1MDZERFxcdTA3MEVcXHUwNzBGXFx1MDc0QlxcdTA3NENcXHUwN0IyLVxcdTA3QkZcXHUwN0ZCXFx1MDdGQ1xcdTA4MkVcXHUwODJGXFx1MDgzRlxcdTA4NUNcXHUwODVEXFx1MDg1RlxcdTA4NkItXFx1MDg5RlxcdTA4QjVcXHUwOEM4LVxcdTA4RDJcXHUwOEUyXFx1MDk4NFxcdTA5OERcXHUwOThFXFx1MDk5MVxcdTA5OTJcXHUwOUE5XFx1MDlCMVxcdTA5QjMtXFx1MDlCNVxcdTA5QkFcXHUwOUJCXFx1MDlDNVxcdTA5QzZcXHUwOUM5XFx1MDlDQVxcdTA5Q0YtXFx1MDlENlxcdTA5RDgtXFx1MDlEQlxcdTA5REVcXHUwOUU0XFx1MDlFNVxcdTA5RkZcXHUwQTAwXFx1MEEwNFxcdTBBMEItXFx1MEEwRVxcdTBBMTFcXHUwQTEyXFx1MEEyOVxcdTBBMzFcXHUwQTM0XFx1MEEzN1xcdTBBM0FcXHUwQTNCXFx1MEEzRFxcdTBBNDMtXFx1MEE0NlxcdTBBNDlcXHUwQTRBXFx1MEE0RS1cXHUwQTUwXFx1MEE1Mi1cXHUwQTU4XFx1MEE1RFxcdTBBNUYtXFx1MEE2NVxcdTBBNzctXFx1MEE4MFxcdTBBODRcXHUwQThFXFx1MEE5MlxcdTBBQTlcXHUwQUIxXFx1MEFCNFxcdTBBQkFcXHUwQUJCXFx1MEFDNlxcdTBBQ0FcXHUwQUNFXFx1MEFDRlxcdTBBRDEtXFx1MEFERlxcdTBBRTRcXHUwQUU1XFx1MEFGMi1cXHUwQUY4XFx1MEIwMFxcdTBCMDRcXHUwQjBEXFx1MEIwRVxcdTBCMTFcXHUwQjEyXFx1MEIyOVxcdTBCMzFcXHUwQjM0XFx1MEIzQVxcdTBCM0JcXHUwQjQ1XFx1MEI0NlxcdTBCNDlcXHUwQjRBXFx1MEI0RS1cXHUwQjU0XFx1MEI1OC1cXHUwQjVCXFx1MEI1RVxcdTBCNjRcXHUwQjY1XFx1MEI3OC1cXHUwQjgxXFx1MEI4NFxcdTBCOEItXFx1MEI4RFxcdTBCOTFcXHUwQjk2LVxcdTBCOThcXHUwQjlCXFx1MEI5RFxcdTBCQTAtXFx1MEJBMlxcdTBCQTUtXFx1MEJBN1xcdTBCQUItXFx1MEJBRFxcdTBCQkEtXFx1MEJCRFxcdTBCQzMtXFx1MEJDNVxcdTBCQzlcXHUwQkNFXFx1MEJDRlxcdTBCRDEtXFx1MEJENlxcdTBCRDgtXFx1MEJFNVxcdTBCRkItXFx1MEJGRlxcdTBDMERcXHUwQzExXFx1MEMyOVxcdTBDM0EtXFx1MEMzQ1xcdTBDNDVcXHUwQzQ5XFx1MEM0RS1cXHUwQzU0XFx1MEM1N1xcdTBDNUItXFx1MEM1RlxcdTBDNjRcXHUwQzY1XFx1MEM3MC1cXHUwQzc2XFx1MEM4RFxcdTBDOTFcXHUwQ0E5XFx1MENCNFxcdTBDQkFcXHUwQ0JCXFx1MENDNVxcdTBDQzlcXHUwQ0NFLVxcdTBDRDRcXHUwQ0Q3LVxcdTBDRERcXHUwQ0RGXFx1MENFNFxcdTBDRTVcXHUwQ0YwXFx1MENGMy1cXHUwQ0ZGXFx1MEQwRFxcdTBEMTFcXHUwRDQ1XFx1MEQ0OVxcdTBENTAtXFx1MEQ1M1xcdTBENjRcXHUwRDY1XFx1MEQ4MFxcdTBEODRcXHUwRDk3LVxcdTBEOTlcXHUwREIyXFx1MERCQ1xcdTBEQkVcXHUwREJGXFx1MERDNy1cXHUwREM5XFx1MERDQi1cXHUwRENFXFx1MERENVxcdTBERDdcXHUwREUwLVxcdTBERTVcXHUwREYwXFx1MERGMVxcdTBERjUtXFx1MEUwMFxcdTBFM0ItXFx1MEUzRVxcdTBFNUMtXFx1MEU4MFxcdTBFODNcXHUwRTg1XFx1MEU4QlxcdTBFQTRcXHUwRUE2XFx1MEVCRVxcdTBFQkZcXHUwRUM1XFx1MEVDN1xcdTBFQ0VcXHUwRUNGXFx1MEVEQVxcdTBFREJcXHUwRUUwLVxcdTBFRkZcXHUwRjQ4XFx1MEY2RC1cXHUwRjcwXFx1MEY5OFxcdTBGQkRcXHUwRkNEXFx1MEZEQi1cXHUwRkZGXFx1MTBDNlxcdTEwQzgtXFx1MTBDQ1xcdTEwQ0VcXHUxMENGXFx1MTI0OVxcdTEyNEVcXHUxMjRGXFx1MTI1N1xcdTEyNTlcXHUxMjVFXFx1MTI1RlxcdTEyODlcXHUxMjhFXFx1MTI4RlxcdTEyQjFcXHUxMkI2XFx1MTJCN1xcdTEyQkZcXHUxMkMxXFx1MTJDNlxcdTEyQzdcXHUxMkQ3XFx1MTMxMVxcdTEzMTZcXHUxMzE3XFx1MTM1QlxcdTEzNUNcXHUxMzdELVxcdTEzN0ZcXHUxMzlBLVxcdTEzOUZcXHUxM0Y2XFx1MTNGN1xcdTEzRkVcXHUxM0ZGXFx1MTY5RC1cXHUxNjlGXFx1MTZGOS1cXHUxNkZGXFx1MTcwRFxcdTE3MTUtXFx1MTcxRlxcdTE3MzctXFx1MTczRlxcdTE3NTQtXFx1MTc1RlxcdTE3NkRcXHUxNzcxXFx1MTc3NC1cXHUxNzdGXFx1MTdERVxcdTE3REZcXHUxN0VBLVxcdTE3RUZcXHUxN0ZBLVxcdTE3RkZcXHUxODBFXFx1MTgwRlxcdTE4MUEtXFx1MTgxRlxcdTE4NzktXFx1MTg3RlxcdTE4QUItXFx1MThBRlxcdTE4RjYtXFx1MThGRlxcdTE5MUZcXHUxOTJDLVxcdTE5MkZcXHUxOTNDLVxcdTE5M0ZcXHUxOTQxLVxcdTE5NDNcXHUxOTZFXFx1MTk2RlxcdTE5NzUtXFx1MTk3RlxcdTE5QUMtXFx1MTlBRlxcdTE5Q0EtXFx1MTlDRlxcdTE5REItXFx1MTlERFxcdTFBMUNcXHUxQTFEXFx1MUE1RlxcdTFBN0RcXHUxQTdFXFx1MUE4QS1cXHUxQThGXFx1MUE5QS1cXHUxQTlGXFx1MUFBRVxcdTFBQUZcXHUxQUMxLVxcdTFBRkZcXHUxQjRDLVxcdTFCNEZcXHUxQjdELVxcdTFCN0ZcXHUxQkY0LVxcdTFCRkJcXHUxQzM4LVxcdTFDM0FcXHUxQzRBLVxcdTFDNENcXHUxQzg5LVxcdTFDOEZcXHUxQ0JCXFx1MUNCQ1xcdTFDQzgtXFx1MUNDRlxcdTFDRkItXFx1MUNGRlxcdTFERkFcXHUxRjE2XFx1MUYxN1xcdTFGMUVcXHUxRjFGXFx1MUY0NlxcdTFGNDdcXHUxRjRFXFx1MUY0RlxcdTFGNThcXHUxRjVBXFx1MUY1Q1xcdTFGNUVcXHUxRjdFXFx1MUY3RlxcdTFGQjVcXHUxRkM1XFx1MUZENFxcdTFGRDVcXHUxRkRDXFx1MUZGMFxcdTFGRjFcXHUxRkY1XFx1MUZGRlxcdTIwMEItXFx1MjAwRlxcdTIwMkEtXFx1MjAyRVxcdTIwNjAtXFx1MjA2RlxcdTIwNzJcXHUyMDczXFx1MjA4RlxcdTIwOUQtXFx1MjA5RlxcdTIwQzAtXFx1MjBDRlxcdTIwRjEtXFx1MjBGRlxcdTIxOEMtXFx1MjE4RlxcdTI0MjctXFx1MjQzRlxcdTI0NEItXFx1MjQ1RlxcdTJCNzRcXHUyQjc1XFx1MkI5NlxcdTJDMkZcXHUyQzVGXFx1MkNGNC1cXHUyQ0Y4XFx1MkQyNlxcdTJEMjgtXFx1MkQyQ1xcdTJEMkVcXHUyRDJGXFx1MkQ2OC1cXHUyRDZFXFx1MkQ3MS1cXHUyRDdFXFx1MkQ5Ny1cXHUyRDlGXFx1MkRBN1xcdTJEQUZcXHUyREI3XFx1MkRCRlxcdTJEQzdcXHUyRENGXFx1MkREN1xcdTJEREZcXHUyRTUzLVxcdTJFN0ZcXHUyRTlBXFx1MkVGNC1cXHUyRUZGXFx1MkZENi1cXHUyRkVGXFx1MkZGQy1cXHUyRkZGXFx1MzA0MFxcdTMwOTdcXHUzMDk4XFx1MzEwMC1cXHUzMTA0XFx1MzEzMFxcdTMxOEZcXHUzMUU0LVxcdTMxRUZcXHUzMjFGXFx1OUZGRC1cXHU5RkZGXFx1QTQ4RC1cXHVBNDhGXFx1QTRDNy1cXHVBNENGXFx1QTYyQy1cXHVBNjNGXFx1QTZGOC1cXHVBNkZGXFx1QTdDMFxcdUE3QzFcXHVBN0NCLVxcdUE3RjRcXHVBODJELVxcdUE4MkZcXHVBODNBLVxcdUE4M0ZcXHVBODc4LVxcdUE4N0ZcXHVBOEM2LVxcdUE4Q0RcXHVBOERBLVxcdUE4REZcXHVBOTU0LVxcdUE5NUVcXHVBOTdELVxcdUE5N0ZcXHVBOUNFXFx1QTlEQS1cXHVBOUREXFx1QTlGRlxcdUFBMzctXFx1QUEzRlxcdUFBNEVcXHVBQTRGXFx1QUE1QVxcdUFBNUJcXHVBQUMzLVxcdUFBREFcXHVBQUY3LVxcdUFCMDBcXHVBQjA3XFx1QUIwOFxcdUFCMEZcXHVBQjEwXFx1QUIxNy1cXHVBQjFGXFx1QUIyN1xcdUFCMkZcXHVBQjZDLVxcdUFCNkZcXHVBQkVFXFx1QUJFRlxcdUFCRkEtXFx1QUJGRlxcdUQ3QTQtXFx1RDdBRlxcdUQ3QzctXFx1RDdDQVxcdUQ3RkMtXFx1RjhGRlxcdUZBNkVcXHVGQTZGXFx1RkFEQS1cXHVGQUZGXFx1RkIwNy1cXHVGQjEyXFx1RkIxOC1cXHVGQjFDXFx1RkIzN1xcdUZCM0RcXHVGQjNGXFx1RkI0MlxcdUZCNDVcXHVGQkMyLVxcdUZCRDJcXHVGRDQwLVxcdUZENEZcXHVGRDkwXFx1RkQ5MVxcdUZEQzgtXFx1RkRFRlxcdUZERkVcXHVGREZGXFx1RkUxQS1cXHVGRTFGXFx1RkU1M1xcdUZFNjdcXHVGRTZDLVxcdUZFNkZcXHVGRTc1XFx1RkVGRC1cXHVGRjAwXFx1RkZCRi1cXHVGRkMxXFx1RkZDOFxcdUZGQzlcXHVGRkQwXFx1RkZEMVxcdUZGRDhcXHVGRkQ5XFx1RkZERC1cXHVGRkRGXFx1RkZFN1xcdUZGRUYtXFx1RkZGQlxcdUZGRkVcXHVGRkZGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURDMENcXHVEQzI3XFx1REMzQlxcdURDM0VcXHVEQzRFXFx1REM0RlxcdURDNUUtXFx1REM3RlxcdURDRkItXFx1RENGRlxcdUREMDMtXFx1REQwNlxcdUREMzQtXFx1REQzNlxcdUREOEZcXHVERDlELVxcdUREOUZcXHVEREExLVxcdUREQ0ZcXHVEREZFLVxcdURFN0ZcXHVERTlELVxcdURFOUZcXHVERUQxLVxcdURFREZcXHVERUZDLVxcdURFRkZcXHVERjI0LVxcdURGMkNcXHVERjRCLVxcdURGNEZcXHVERjdCLVxcdURGN0ZcXHVERjlFXFx1REZDNC1cXHVERkM3XFx1REZENi1cXHVERkZGXXxcXHVEODAxW1xcdURDOUVcXHVEQzlGXFx1RENBQS1cXHVEQ0FGXFx1RENENC1cXHVEQ0Q3XFx1RENGQy1cXHVEQ0ZGXFx1REQyOC1cXHVERDJGXFx1REQ2NC1cXHVERDZFXFx1REQ3MC1cXHVEREZGXFx1REYzNy1cXHVERjNGXFx1REY1Ni1cXHVERjVGXFx1REY2OC1cXHVERkZGXXxcXHVEODAyW1xcdURDMDZcXHVEQzA3XFx1REMwOVxcdURDMzZcXHVEQzM5LVxcdURDM0JcXHVEQzNEXFx1REMzRVxcdURDNTZcXHVEQzlGLVxcdURDQTZcXHVEQ0IwLVxcdURDREZcXHVEQ0YzXFx1RENGNi1cXHVEQ0ZBXFx1REQxQy1cXHVERDFFXFx1REQzQS1cXHVERDNFXFx1REQ0MC1cXHVERDdGXFx1RERCOC1cXHVEREJCXFx1REREMFxcdURERDFcXHVERTA0XFx1REUwNy1cXHVERTBCXFx1REUxNFxcdURFMThcXHVERTM2XFx1REUzN1xcdURFM0ItXFx1REUzRVxcdURFNDktXFx1REU0RlxcdURFNTktXFx1REU1RlxcdURFQTAtXFx1REVCRlxcdURFRTctXFx1REVFQVxcdURFRjctXFx1REVGRlxcdURGMzYtXFx1REYzOFxcdURGNTZcXHVERjU3XFx1REY3My1cXHVERjc3XFx1REY5Mi1cXHVERjk4XFx1REY5RC1cXHVERkE4XFx1REZCMC1cXHVERkZGXXxcXHVEODAzW1xcdURDNDktXFx1REM3RlxcdURDQjMtXFx1RENCRlxcdURDRjMtXFx1RENGOVxcdUREMjgtXFx1REQyRlxcdUREM0EtXFx1REU1RlxcdURFN0ZcXHVERUFBXFx1REVBRVxcdURFQUZcXHVERUIyLVxcdURFRkZcXHVERjI4LVxcdURGMkZcXHVERjVBLVxcdURGQUZcXHVERkNDLVxcdURGREZcXHVERkY3LVxcdURGRkZdfFxcdUQ4MDRbXFx1REM0RS1cXHVEQzUxXFx1REM3MC1cXHVEQzdFXFx1RENCRFxcdURDQzItXFx1RENDRlxcdURDRTktXFx1RENFRlxcdURDRkEtXFx1RENGRlxcdUREMzVcXHVERDQ4LVxcdURENEZcXHVERDc3LVxcdUREN0ZcXHVEREUwXFx1RERGNS1cXHVEREZGXFx1REUxMlxcdURFM0YtXFx1REU3RlxcdURFODdcXHVERTg5XFx1REU4RVxcdURFOUVcXHVERUFBLVxcdURFQUZcXHVERUVCLVxcdURFRUZcXHVERUZBLVxcdURFRkZcXHVERjA0XFx1REYwRFxcdURGMEVcXHVERjExXFx1REYxMlxcdURGMjlcXHVERjMxXFx1REYzNFxcdURGM0FcXHVERjQ1XFx1REY0NlxcdURGNDlcXHVERjRBXFx1REY0RVxcdURGNEZcXHVERjUxLVxcdURGNTZcXHVERjU4LVxcdURGNUNcXHVERjY0XFx1REY2NVxcdURGNkQtXFx1REY2RlxcdURGNzUtXFx1REZGRl18XFx1RDgwNVtcXHVEQzVDXFx1REM2Mi1cXHVEQzdGXFx1RENDOC1cXHVEQ0NGXFx1RENEQS1cXHVERDdGXFx1RERCNlxcdUREQjdcXHVERERFLVxcdURERkZcXHVERTQ1LVxcdURFNEZcXHVERTVBLVxcdURFNUZcXHVERTZELVxcdURFN0ZcXHVERUI5LVxcdURFQkZcXHVERUNBLVxcdURFRkZcXHVERjFCXFx1REYxQ1xcdURGMkMtXFx1REYyRlxcdURGNDAtXFx1REZGRl18XFx1RDgwNltcXHVEQzNDLVxcdURDOUZcXHVEQ0YzLVxcdURDRkVcXHVERDA3XFx1REQwOFxcdUREMEFcXHVERDBCXFx1REQxNFxcdUREMTdcXHVERDM2XFx1REQzOVxcdUREM0FcXHVERDQ3LVxcdURENEZcXHVERDVBLVxcdUREOUZcXHVEREE4XFx1RERBOVxcdURERDhcXHVEREQ5XFx1RERFNS1cXHVEREZGXFx1REU0OC1cXHVERTRGXFx1REVBMy1cXHVERUJGXFx1REVGOS1cXHVERkZGXXxcXHVEODA3W1xcdURDMDlcXHVEQzM3XFx1REM0Ni1cXHVEQzRGXFx1REM2RC1cXHVEQzZGXFx1REM5MFxcdURDOTFcXHVEQ0E4XFx1RENCNy1cXHVEQ0ZGXFx1REQwN1xcdUREMEFcXHVERDM3LVxcdUREMzlcXHVERDNCXFx1REQzRVxcdURENDgtXFx1REQ0RlxcdURENUEtXFx1REQ1RlxcdURENjZcXHVERDY5XFx1REQ4RlxcdUREOTJcXHVERDk5LVxcdUREOUZcXHVEREFBLVxcdURFREZcXHVERUY5LVxcdURGQUZcXHVERkIxLVxcdURGQkZcXHVERkYyLVxcdURGRkVdfFxcdUQ4MDhbXFx1REY5QS1cXHVERkZGXXxcXHVEODA5W1xcdURDNkZcXHVEQzc1LVxcdURDN0ZcXHVERDQ0LVxcdURGRkZdfFtcXHVEODBBXFx1RDgwQlxcdUQ4MEUtXFx1RDgxMFxcdUQ4MTItXFx1RDgxOVxcdUQ4MjQtXFx1RDgyQlxcdUQ4MkRcXHVEODJFXFx1RDgzMC1cXHVEODMzXFx1RDgzN1xcdUQ4MzlcXHVEODNGXFx1RDg3Qi1cXHVEODdEXFx1RDg3RlxcdUQ4ODUtXFx1REIzRlxcdURCNDEtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMkYtXFx1REZGRl18XFx1RDgxMVtcXHVERTQ3LVxcdURGRkZdfFxcdUQ4MUFbXFx1REUzOS1cXHVERTNGXFx1REU1RlxcdURFNkEtXFx1REU2RFxcdURFNzAtXFx1REVDRlxcdURFRUVcXHVERUVGXFx1REVGNi1cXHVERUZGXFx1REY0Ni1cXHVERjRGXFx1REY1QVxcdURGNjJcXHVERjc4LVxcdURGN0NcXHVERjkwLVxcdURGRkZdfFxcdUQ4MUJbXFx1REMwMC1cXHVERTNGXFx1REU5Qi1cXHVERUZGXFx1REY0Qi1cXHVERjRFXFx1REY4OC1cXHVERjhFXFx1REZBMC1cXHVERkRGXFx1REZFNS1cXHVERkVGXFx1REZGMi1cXHVERkZGXXxcXHVEODIxW1xcdURGRjgtXFx1REZGRl18XFx1RDgyM1tcXHVEQ0Q2LVxcdURDRkZcXHVERDA5LVxcdURGRkZdfFxcdUQ4MkNbXFx1REQxRi1cXHVERDRGXFx1REQ1My1cXHVERDYzXFx1REQ2OC1cXHVERDZGXFx1REVGQy1cXHVERkZGXXxcXHVEODJGW1xcdURDNkItXFx1REM2RlxcdURDN0QtXFx1REM3RlxcdURDODktXFx1REM4RlxcdURDOUFcXHVEQzlCXFx1RENBMC1cXHVERkZGXXxcXHVEODM0W1xcdURDRjYtXFx1RENGRlxcdUREMjdcXHVERDI4XFx1REQ3My1cXHVERDdBXFx1RERFOS1cXHVEREZGXFx1REU0Ni1cXHVERURGXFx1REVGNC1cXHVERUZGXFx1REY1Ny1cXHVERjVGXFx1REY3OS1cXHVERkZGXXxcXHVEODM1W1xcdURDNTVcXHVEQzlEXFx1RENBMFxcdURDQTFcXHVEQ0EzXFx1RENBNFxcdURDQTdcXHVEQ0E4XFx1RENBRFxcdURDQkFcXHVEQ0JDXFx1RENDNFxcdUREMDZcXHVERDBCXFx1REQwQ1xcdUREMTVcXHVERDFEXFx1REQzQVxcdUREM0ZcXHVERDQ1XFx1REQ0Ny1cXHVERDQ5XFx1REQ1MVxcdURFQTZcXHVERUE3XFx1REZDQ1xcdURGQ0RdfFxcdUQ4MzZbXFx1REU4Qy1cXHVERTlBXFx1REVBMFxcdURFQjAtXFx1REZGRl18XFx1RDgzOFtcXHVEQzA3XFx1REMxOVxcdURDMUFcXHVEQzIyXFx1REMyNVxcdURDMkItXFx1RENGRlxcdUREMkQtXFx1REQyRlxcdUREM0VcXHVERDNGXFx1REQ0QS1cXHVERDREXFx1REQ1MC1cXHVERUJGXFx1REVGQS1cXHVERUZFXFx1REYwMC1cXHVERkZGXXxcXHVEODNBW1xcdURDQzVcXHVEQ0M2XFx1RENENy1cXHVEQ0ZGXFx1REQ0Qy1cXHVERDRGXFx1REQ1QS1cXHVERDVEXFx1REQ2MC1cXHVERkZGXXxcXHVEODNCW1xcdURDMDAtXFx1REM3MFxcdURDQjUtXFx1REQwMFxcdUREM0UtXFx1RERGRlxcdURFMDRcXHVERTIwXFx1REUyM1xcdURFMjVcXHVERTI2XFx1REUyOFxcdURFMzNcXHVERTM4XFx1REUzQVxcdURFM0MtXFx1REU0MVxcdURFNDMtXFx1REU0NlxcdURFNDhcXHVERTRBXFx1REU0Q1xcdURFNTBcXHVERTUzXFx1REU1NVxcdURFNTZcXHVERTU4XFx1REU1QVxcdURFNUNcXHVERTVFXFx1REU2MFxcdURFNjNcXHVERTY1XFx1REU2NlxcdURFNkJcXHVERTczXFx1REU3OFxcdURFN0RcXHVERTdGXFx1REU4QVxcdURFOUMtXFx1REVBMFxcdURFQTRcXHVERUFBXFx1REVCQy1cXHVERUVGXFx1REVGMi1cXHVERkZGXXxcXHVEODNDW1xcdURDMkMtXFx1REMyRlxcdURDOTQtXFx1REM5RlxcdURDQUZcXHVEQ0IwXFx1RENDMFxcdURDRDBcXHVEQ0Y2LVxcdURDRkZcXHVEREFFLVxcdURERTVcXHVERTAzLVxcdURFMEZcXHVERTNDLVxcdURFM0ZcXHVERTQ5LVxcdURFNEZcXHVERTUyLVxcdURFNUZcXHVERTY2LVxcdURFRkZdfFxcdUQ4M0RbXFx1REVEOC1cXHVERURGXFx1REVFRC1cXHVERUVGXFx1REVGRC1cXHVERUZGXFx1REY3NC1cXHVERjdGXFx1REZEOS1cXHVERkRGXFx1REZFQy1cXHVERkZGXXxcXHVEODNFW1xcdURDMEMtXFx1REMwRlxcdURDNDgtXFx1REM0RlxcdURDNUEtXFx1REM1RlxcdURDODgtXFx1REM4RlxcdURDQUVcXHVEQ0FGXFx1RENCMi1cXHVEQ0ZGXFx1REQ3OVxcdUREQ0NcXHVERTU0LVxcdURFNUZcXHVERTZFXFx1REU2RlxcdURFNzUtXFx1REU3N1xcdURFN0ItXFx1REU3RlxcdURFODctXFx1REU4RlxcdURFQTktXFx1REVBRlxcdURFQjctXFx1REVCRlxcdURFQzMtXFx1REVDRlxcdURFRDctXFx1REVGRlxcdURGOTNcXHVERkNCLVxcdURGRUZcXHVERkZBLVxcdURGRkZdfFxcdUQ4NjlbXFx1REVERS1cXHVERUZGXXxcXHVEODZEW1xcdURGMzUtXFx1REYzRl18XFx1RDg2RVtcXHVEQzFFXFx1REMxRl18XFx1RDg3M1tcXHVERUEyLVxcdURFQUZdfFxcdUQ4N0FbXFx1REZFMS1cXHVERkZGXXxcXHVEODdFW1xcdURFMUUtXFx1REZGRl18XFx1RDg4NFtcXHVERjRCLVxcdURGRkZdfFxcdURCNDBbXFx1REMwMC1cXHVEQ0ZGXFx1RERGMC1cXHVERkZGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnQ2MnLFxuICAgICAgICAnYWxpYXMnOiAnQ29udHJvbCcsXG4gICAgICAgICdibXAnOiAnXFwwLVxceDFGXFx4N0YtXFx4OUYnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0NmJyxcbiAgICAgICAgJ2FsaWFzJzogJ0Zvcm1hdCcsXG4gICAgICAgICdibXAnOiAnXFx4QURcXHUwNjAwLVxcdTA2MDVcXHUwNjFDXFx1MDZERFxcdTA3MEZcXHUwOEUyXFx1MTgwRVxcdTIwMEItXFx1MjAwRlxcdTIwMkEtXFx1MjAyRVxcdTIwNjAtXFx1MjA2NFxcdTIwNjYtXFx1MjA2RlxcdUZFRkZcXHVGRkY5LVxcdUZGRkInLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDRbXFx1RENCRFxcdURDQ0RdfFxcdUQ4MERbXFx1REMzMC1cXHVEQzM4XXxcXHVEODJGW1xcdURDQTAtXFx1RENBM118XFx1RDgzNFtcXHVERDczLVxcdUREN0FdfFxcdURCNDBbXFx1REMwMVxcdURDMjAtXFx1REM3Rl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0NuJyxcbiAgICAgICAgJ2FsaWFzJzogJ1VuYXNzaWduZWQnLFxuICAgICAgICAnYm1wJzogJ1xcdTAzNzhcXHUwMzc5XFx1MDM4MC1cXHUwMzgzXFx1MDM4QlxcdTAzOERcXHUwM0EyXFx1MDUzMFxcdTA1NTdcXHUwNTU4XFx1MDU4QlxcdTA1OENcXHUwNTkwXFx1MDVDOC1cXHUwNUNGXFx1MDVFQi1cXHUwNUVFXFx1MDVGNS1cXHUwNUZGXFx1MDYxRFxcdTA3MEVcXHUwNzRCXFx1MDc0Q1xcdTA3QjItXFx1MDdCRlxcdTA3RkJcXHUwN0ZDXFx1MDgyRVxcdTA4MkZcXHUwODNGXFx1MDg1Q1xcdTA4NURcXHUwODVGXFx1MDg2Qi1cXHUwODlGXFx1MDhCNVxcdTA4QzgtXFx1MDhEMlxcdTA5ODRcXHUwOThEXFx1MDk4RVxcdTA5OTFcXHUwOTkyXFx1MDlBOVxcdTA5QjFcXHUwOUIzLVxcdTA5QjVcXHUwOUJBXFx1MDlCQlxcdTA5QzVcXHUwOUM2XFx1MDlDOVxcdTA5Q0FcXHUwOUNGLVxcdTA5RDZcXHUwOUQ4LVxcdTA5REJcXHUwOURFXFx1MDlFNFxcdTA5RTVcXHUwOUZGXFx1MEEwMFxcdTBBMDRcXHUwQTBCLVxcdTBBMEVcXHUwQTExXFx1MEExMlxcdTBBMjlcXHUwQTMxXFx1MEEzNFxcdTBBMzdcXHUwQTNBXFx1MEEzQlxcdTBBM0RcXHUwQTQzLVxcdTBBNDZcXHUwQTQ5XFx1MEE0QVxcdTBBNEUtXFx1MEE1MFxcdTBBNTItXFx1MEE1OFxcdTBBNURcXHUwQTVGLVxcdTBBNjVcXHUwQTc3LVxcdTBBODBcXHUwQTg0XFx1MEE4RVxcdTBBOTJcXHUwQUE5XFx1MEFCMVxcdTBBQjRcXHUwQUJBXFx1MEFCQlxcdTBBQzZcXHUwQUNBXFx1MEFDRVxcdTBBQ0ZcXHUwQUQxLVxcdTBBREZcXHUwQUU0XFx1MEFFNVxcdTBBRjItXFx1MEFGOFxcdTBCMDBcXHUwQjA0XFx1MEIwRFxcdTBCMEVcXHUwQjExXFx1MEIxMlxcdTBCMjlcXHUwQjMxXFx1MEIzNFxcdTBCM0FcXHUwQjNCXFx1MEI0NVxcdTBCNDZcXHUwQjQ5XFx1MEI0QVxcdTBCNEUtXFx1MEI1NFxcdTBCNTgtXFx1MEI1QlxcdTBCNUVcXHUwQjY0XFx1MEI2NVxcdTBCNzgtXFx1MEI4MVxcdTBCODRcXHUwQjhCLVxcdTBCOERcXHUwQjkxXFx1MEI5Ni1cXHUwQjk4XFx1MEI5QlxcdTBCOURcXHUwQkEwLVxcdTBCQTJcXHUwQkE1LVxcdTBCQTdcXHUwQkFCLVxcdTBCQURcXHUwQkJBLVxcdTBCQkRcXHUwQkMzLVxcdTBCQzVcXHUwQkM5XFx1MEJDRVxcdTBCQ0ZcXHUwQkQxLVxcdTBCRDZcXHUwQkQ4LVxcdTBCRTVcXHUwQkZCLVxcdTBCRkZcXHUwQzBEXFx1MEMxMVxcdTBDMjlcXHUwQzNBLVxcdTBDM0NcXHUwQzQ1XFx1MEM0OVxcdTBDNEUtXFx1MEM1NFxcdTBDNTdcXHUwQzVCLVxcdTBDNUZcXHUwQzY0XFx1MEM2NVxcdTBDNzAtXFx1MEM3NlxcdTBDOERcXHUwQzkxXFx1MENBOVxcdTBDQjRcXHUwQ0JBXFx1MENCQlxcdTBDQzVcXHUwQ0M5XFx1MENDRS1cXHUwQ0Q0XFx1MENENy1cXHUwQ0REXFx1MENERlxcdTBDRTRcXHUwQ0U1XFx1MENGMFxcdTBDRjMtXFx1MENGRlxcdTBEMERcXHUwRDExXFx1MEQ0NVxcdTBENDlcXHUwRDUwLVxcdTBENTNcXHUwRDY0XFx1MEQ2NVxcdTBEODBcXHUwRDg0XFx1MEQ5Ny1cXHUwRDk5XFx1MERCMlxcdTBEQkNcXHUwREJFXFx1MERCRlxcdTBEQzctXFx1MERDOVxcdTBEQ0ItXFx1MERDRVxcdTBERDVcXHUwREQ3XFx1MERFMC1cXHUwREU1XFx1MERGMFxcdTBERjFcXHUwREY1LVxcdTBFMDBcXHUwRTNCLVxcdTBFM0VcXHUwRTVDLVxcdTBFODBcXHUwRTgzXFx1MEU4NVxcdTBFOEJcXHUwRUE0XFx1MEVBNlxcdTBFQkVcXHUwRUJGXFx1MEVDNVxcdTBFQzdcXHUwRUNFXFx1MEVDRlxcdTBFREFcXHUwRURCXFx1MEVFMC1cXHUwRUZGXFx1MEY0OFxcdTBGNkQtXFx1MEY3MFxcdTBGOThcXHUwRkJEXFx1MEZDRFxcdTBGREItXFx1MEZGRlxcdTEwQzZcXHUxMEM4LVxcdTEwQ0NcXHUxMENFXFx1MTBDRlxcdTEyNDlcXHUxMjRFXFx1MTI0RlxcdTEyNTdcXHUxMjU5XFx1MTI1RVxcdTEyNUZcXHUxMjg5XFx1MTI4RVxcdTEyOEZcXHUxMkIxXFx1MTJCNlxcdTEyQjdcXHUxMkJGXFx1MTJDMVxcdTEyQzZcXHUxMkM3XFx1MTJEN1xcdTEzMTFcXHUxMzE2XFx1MTMxN1xcdTEzNUJcXHUxMzVDXFx1MTM3RC1cXHUxMzdGXFx1MTM5QS1cXHUxMzlGXFx1MTNGNlxcdTEzRjdcXHUxM0ZFXFx1MTNGRlxcdTE2OUQtXFx1MTY5RlxcdTE2RjktXFx1MTZGRlxcdTE3MERcXHUxNzE1LVxcdTE3MUZcXHUxNzM3LVxcdTE3M0ZcXHUxNzU0LVxcdTE3NUZcXHUxNzZEXFx1MTc3MVxcdTE3NzQtXFx1MTc3RlxcdTE3REVcXHUxN0RGXFx1MTdFQS1cXHUxN0VGXFx1MTdGQS1cXHUxN0ZGXFx1MTgwRlxcdTE4MUEtXFx1MTgxRlxcdTE4NzktXFx1MTg3RlxcdTE4QUItXFx1MThBRlxcdTE4RjYtXFx1MThGRlxcdTE5MUZcXHUxOTJDLVxcdTE5MkZcXHUxOTNDLVxcdTE5M0ZcXHUxOTQxLVxcdTE5NDNcXHUxOTZFXFx1MTk2RlxcdTE5NzUtXFx1MTk3RlxcdTE5QUMtXFx1MTlBRlxcdTE5Q0EtXFx1MTlDRlxcdTE5REItXFx1MTlERFxcdTFBMUNcXHUxQTFEXFx1MUE1RlxcdTFBN0RcXHUxQTdFXFx1MUE4QS1cXHUxQThGXFx1MUE5QS1cXHUxQTlGXFx1MUFBRVxcdTFBQUZcXHUxQUMxLVxcdTFBRkZcXHUxQjRDLVxcdTFCNEZcXHUxQjdELVxcdTFCN0ZcXHUxQkY0LVxcdTFCRkJcXHUxQzM4LVxcdTFDM0FcXHUxQzRBLVxcdTFDNENcXHUxQzg5LVxcdTFDOEZcXHUxQ0JCXFx1MUNCQ1xcdTFDQzgtXFx1MUNDRlxcdTFDRkItXFx1MUNGRlxcdTFERkFcXHUxRjE2XFx1MUYxN1xcdTFGMUVcXHUxRjFGXFx1MUY0NlxcdTFGNDdcXHUxRjRFXFx1MUY0RlxcdTFGNThcXHUxRjVBXFx1MUY1Q1xcdTFGNUVcXHUxRjdFXFx1MUY3RlxcdTFGQjVcXHUxRkM1XFx1MUZENFxcdTFGRDVcXHUxRkRDXFx1MUZGMFxcdTFGRjFcXHUxRkY1XFx1MUZGRlxcdTIwNjVcXHUyMDcyXFx1MjA3M1xcdTIwOEZcXHUyMDlELVxcdTIwOUZcXHUyMEMwLVxcdTIwQ0ZcXHUyMEYxLVxcdTIwRkZcXHUyMThDLVxcdTIxOEZcXHUyNDI3LVxcdTI0M0ZcXHUyNDRCLVxcdTI0NUZcXHUyQjc0XFx1MkI3NVxcdTJCOTZcXHUyQzJGXFx1MkM1RlxcdTJDRjQtXFx1MkNGOFxcdTJEMjZcXHUyRDI4LVxcdTJEMkNcXHUyRDJFXFx1MkQyRlxcdTJENjgtXFx1MkQ2RVxcdTJENzEtXFx1MkQ3RVxcdTJEOTctXFx1MkQ5RlxcdTJEQTdcXHUyREFGXFx1MkRCN1xcdTJEQkZcXHUyREM3XFx1MkRDRlxcdTJERDdcXHUyRERGXFx1MkU1My1cXHUyRTdGXFx1MkU5QVxcdTJFRjQtXFx1MkVGRlxcdTJGRDYtXFx1MkZFRlxcdTJGRkMtXFx1MkZGRlxcdTMwNDBcXHUzMDk3XFx1MzA5OFxcdTMxMDAtXFx1MzEwNFxcdTMxMzBcXHUzMThGXFx1MzFFNC1cXHUzMUVGXFx1MzIxRlxcdTlGRkQtXFx1OUZGRlxcdUE0OEQtXFx1QTQ4RlxcdUE0QzctXFx1QTRDRlxcdUE2MkMtXFx1QTYzRlxcdUE2RjgtXFx1QTZGRlxcdUE3QzBcXHVBN0MxXFx1QTdDQi1cXHVBN0Y0XFx1QTgyRC1cXHVBODJGXFx1QTgzQS1cXHVBODNGXFx1QTg3OC1cXHVBODdGXFx1QThDNi1cXHVBOENEXFx1QThEQS1cXHVBOERGXFx1QTk1NC1cXHVBOTVFXFx1QTk3RC1cXHVBOTdGXFx1QTlDRVxcdUE5REEtXFx1QTlERFxcdUE5RkZcXHVBQTM3LVxcdUFBM0ZcXHVBQTRFXFx1QUE0RlxcdUFBNUFcXHVBQTVCXFx1QUFDMy1cXHVBQURBXFx1QUFGNy1cXHVBQjAwXFx1QUIwN1xcdUFCMDhcXHVBQjBGXFx1QUIxMFxcdUFCMTctXFx1QUIxRlxcdUFCMjdcXHVBQjJGXFx1QUI2Qy1cXHVBQjZGXFx1QUJFRVxcdUFCRUZcXHVBQkZBLVxcdUFCRkZcXHVEN0E0LVxcdUQ3QUZcXHVEN0M3LVxcdUQ3Q0FcXHVEN0ZDLVxcdUQ3RkZcXHVGQTZFXFx1RkE2RlxcdUZBREEtXFx1RkFGRlxcdUZCMDctXFx1RkIxMlxcdUZCMTgtXFx1RkIxQ1xcdUZCMzdcXHVGQjNEXFx1RkIzRlxcdUZCNDJcXHVGQjQ1XFx1RkJDMi1cXHVGQkQyXFx1RkQ0MC1cXHVGRDRGXFx1RkQ5MFxcdUZEOTFcXHVGREM4LVxcdUZERUZcXHVGREZFXFx1RkRGRlxcdUZFMUEtXFx1RkUxRlxcdUZFNTNcXHVGRTY3XFx1RkU2Qy1cXHVGRTZGXFx1RkU3NVxcdUZFRkRcXHVGRUZFXFx1RkYwMFxcdUZGQkYtXFx1RkZDMVxcdUZGQzhcXHVGRkM5XFx1RkZEMFxcdUZGRDFcXHVGRkQ4XFx1RkZEOVxcdUZGREQtXFx1RkZERlxcdUZGRTdcXHVGRkVGLVxcdUZGRjhcXHVGRkZFXFx1RkZGRicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEQzBDXFx1REMyN1xcdURDM0JcXHVEQzNFXFx1REM0RVxcdURDNEZcXHVEQzVFLVxcdURDN0ZcXHVEQ0ZCLVxcdURDRkZcXHVERDAzLVxcdUREMDZcXHVERDM0LVxcdUREMzZcXHVERDhGXFx1REQ5RC1cXHVERDlGXFx1RERBMS1cXHVERENGXFx1RERGRS1cXHVERTdGXFx1REU5RC1cXHVERTlGXFx1REVEMS1cXHVERURGXFx1REVGQy1cXHVERUZGXFx1REYyNC1cXHVERjJDXFx1REY0Qi1cXHVERjRGXFx1REY3Qi1cXHVERjdGXFx1REY5RVxcdURGQzQtXFx1REZDN1xcdURGRDYtXFx1REZGRl18XFx1RDgwMVtcXHVEQzlFXFx1REM5RlxcdURDQUEtXFx1RENBRlxcdURDRDQtXFx1RENEN1xcdURDRkMtXFx1RENGRlxcdUREMjgtXFx1REQyRlxcdURENjQtXFx1REQ2RVxcdURENzAtXFx1RERGRlxcdURGMzctXFx1REYzRlxcdURGNTYtXFx1REY1RlxcdURGNjgtXFx1REZGRl18XFx1RDgwMltcXHVEQzA2XFx1REMwN1xcdURDMDlcXHVEQzM2XFx1REMzOS1cXHVEQzNCXFx1REMzRFxcdURDM0VcXHVEQzU2XFx1REM5Ri1cXHVEQ0E2XFx1RENCMC1cXHVEQ0RGXFx1RENGM1xcdURDRjYtXFx1RENGQVxcdUREMUMtXFx1REQxRVxcdUREM0EtXFx1REQzRVxcdURENDAtXFx1REQ3RlxcdUREQjgtXFx1RERCQlxcdURERDBcXHVEREQxXFx1REUwNFxcdURFMDctXFx1REUwQlxcdURFMTRcXHVERTE4XFx1REUzNlxcdURFMzdcXHVERTNCLVxcdURFM0VcXHVERTQ5LVxcdURFNEZcXHVERTU5LVxcdURFNUZcXHVERUEwLVxcdURFQkZcXHVERUU3LVxcdURFRUFcXHVERUY3LVxcdURFRkZcXHVERjM2LVxcdURGMzhcXHVERjU2XFx1REY1N1xcdURGNzMtXFx1REY3N1xcdURGOTItXFx1REY5OFxcdURGOUQtXFx1REZBOFxcdURGQjAtXFx1REZGRl18XFx1RDgwM1tcXHVEQzQ5LVxcdURDN0ZcXHVEQ0IzLVxcdURDQkZcXHVEQ0YzLVxcdURDRjlcXHVERDI4LVxcdUREMkZcXHVERDNBLVxcdURFNUZcXHVERTdGXFx1REVBQVxcdURFQUVcXHVERUFGXFx1REVCMi1cXHVERUZGXFx1REYyOC1cXHVERjJGXFx1REY1QS1cXHVERkFGXFx1REZDQy1cXHVERkRGXFx1REZGNy1cXHVERkZGXXxcXHVEODA0W1xcdURDNEUtXFx1REM1MVxcdURDNzAtXFx1REM3RVxcdURDQzItXFx1RENDQ1xcdURDQ0VcXHVEQ0NGXFx1RENFOS1cXHVEQ0VGXFx1RENGQS1cXHVEQ0ZGXFx1REQzNVxcdURENDgtXFx1REQ0RlxcdURENzctXFx1REQ3RlxcdURERTBcXHVEREY1LVxcdURERkZcXHVERTEyXFx1REUzRi1cXHVERTdGXFx1REU4N1xcdURFODlcXHVERThFXFx1REU5RVxcdURFQUEtXFx1REVBRlxcdURFRUItXFx1REVFRlxcdURFRkEtXFx1REVGRlxcdURGMDRcXHVERjBEXFx1REYwRVxcdURGMTFcXHVERjEyXFx1REYyOVxcdURGMzFcXHVERjM0XFx1REYzQVxcdURGNDVcXHVERjQ2XFx1REY0OVxcdURGNEFcXHVERjRFXFx1REY0RlxcdURGNTEtXFx1REY1NlxcdURGNTgtXFx1REY1Q1xcdURGNjRcXHVERjY1XFx1REY2RC1cXHVERjZGXFx1REY3NS1cXHVERkZGXXxcXHVEODA1W1xcdURDNUNcXHVEQzYyLVxcdURDN0ZcXHVEQ0M4LVxcdURDQ0ZcXHVEQ0RBLVxcdUREN0ZcXHVEREI2XFx1RERCN1xcdUREREUtXFx1RERGRlxcdURFNDUtXFx1REU0RlxcdURFNUEtXFx1REU1RlxcdURFNkQtXFx1REU3RlxcdURFQjktXFx1REVCRlxcdURFQ0EtXFx1REVGRlxcdURGMUJcXHVERjFDXFx1REYyQy1cXHVERjJGXFx1REY0MC1cXHVERkZGXXxcXHVEODA2W1xcdURDM0MtXFx1REM5RlxcdURDRjMtXFx1RENGRVxcdUREMDdcXHVERDA4XFx1REQwQVxcdUREMEJcXHVERDE0XFx1REQxN1xcdUREMzZcXHVERDM5XFx1REQzQVxcdURENDctXFx1REQ0RlxcdURENUEtXFx1REQ5RlxcdUREQThcXHVEREE5XFx1REREOFxcdURERDlcXHVEREU1LVxcdURERkZcXHVERTQ4LVxcdURFNEZcXHVERUEzLVxcdURFQkZcXHVERUY5LVxcdURGRkZdfFxcdUQ4MDdbXFx1REMwOVxcdURDMzdcXHVEQzQ2LVxcdURDNEZcXHVEQzZELVxcdURDNkZcXHVEQzkwXFx1REM5MVxcdURDQThcXHVEQ0I3LVxcdURDRkZcXHVERDA3XFx1REQwQVxcdUREMzctXFx1REQzOVxcdUREM0JcXHVERDNFXFx1REQ0OC1cXHVERDRGXFx1REQ1QS1cXHVERDVGXFx1REQ2NlxcdURENjlcXHVERDhGXFx1REQ5MlxcdUREOTktXFx1REQ5RlxcdUREQUEtXFx1REVERlxcdURFRjktXFx1REZBRlxcdURGQjEtXFx1REZCRlxcdURGRjItXFx1REZGRV18XFx1RDgwOFtcXHVERjlBLVxcdURGRkZdfFxcdUQ4MDlbXFx1REM2RlxcdURDNzUtXFx1REM3RlxcdURENDQtXFx1REZGRl18W1xcdUQ4MEFcXHVEODBCXFx1RDgwRS1cXHVEODEwXFx1RDgxMi1cXHVEODE5XFx1RDgyNC1cXHVEODJCXFx1RDgyRFxcdUQ4MkVcXHVEODMwLVxcdUQ4MzNcXHVEODM3XFx1RDgzOVxcdUQ4M0ZcXHVEODdCLVxcdUQ4N0RcXHVEODdGXFx1RDg4NS1cXHVEQjNGXFx1REI0MS1cXHVEQjdGXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMyRlxcdURDMzktXFx1REZGRl18XFx1RDgxMVtcXHVERTQ3LVxcdURGRkZdfFxcdUQ4MUFbXFx1REUzOS1cXHVERTNGXFx1REU1RlxcdURFNkEtXFx1REU2RFxcdURFNzAtXFx1REVDRlxcdURFRUVcXHVERUVGXFx1REVGNi1cXHVERUZGXFx1REY0Ni1cXHVERjRGXFx1REY1QVxcdURGNjJcXHVERjc4LVxcdURGN0NcXHVERjkwLVxcdURGRkZdfFxcdUQ4MUJbXFx1REMwMC1cXHVERTNGXFx1REU5Qi1cXHVERUZGXFx1REY0Qi1cXHVERjRFXFx1REY4OC1cXHVERjhFXFx1REZBMC1cXHVERkRGXFx1REZFNS1cXHVERkVGXFx1REZGMi1cXHVERkZGXXxcXHVEODIxW1xcdURGRjgtXFx1REZGRl18XFx1RDgyM1tcXHVEQ0Q2LVxcdURDRkZcXHVERDA5LVxcdURGRkZdfFxcdUQ4MkNbXFx1REQxRi1cXHVERDRGXFx1REQ1My1cXHVERDYzXFx1REQ2OC1cXHVERDZGXFx1REVGQy1cXHVERkZGXXxcXHVEODJGW1xcdURDNkItXFx1REM2RlxcdURDN0QtXFx1REM3RlxcdURDODktXFx1REM4RlxcdURDOUFcXHVEQzlCXFx1RENBNC1cXHVERkZGXXxcXHVEODM0W1xcdURDRjYtXFx1RENGRlxcdUREMjdcXHVERDI4XFx1RERFOS1cXHVEREZGXFx1REU0Ni1cXHVERURGXFx1REVGNC1cXHVERUZGXFx1REY1Ny1cXHVERjVGXFx1REY3OS1cXHVERkZGXXxcXHVEODM1W1xcdURDNTVcXHVEQzlEXFx1RENBMFxcdURDQTFcXHVEQ0EzXFx1RENBNFxcdURDQTdcXHVEQ0E4XFx1RENBRFxcdURDQkFcXHVEQ0JDXFx1RENDNFxcdUREMDZcXHVERDBCXFx1REQwQ1xcdUREMTVcXHVERDFEXFx1REQzQVxcdUREM0ZcXHVERDQ1XFx1REQ0Ny1cXHVERDQ5XFx1REQ1MVxcdURFQTZcXHVERUE3XFx1REZDQ1xcdURGQ0RdfFxcdUQ4MzZbXFx1REU4Qy1cXHVERTlBXFx1REVBMFxcdURFQjAtXFx1REZGRl18XFx1RDgzOFtcXHVEQzA3XFx1REMxOVxcdURDMUFcXHVEQzIyXFx1REMyNVxcdURDMkItXFx1RENGRlxcdUREMkQtXFx1REQyRlxcdUREM0VcXHVERDNGXFx1REQ0QS1cXHVERDREXFx1REQ1MC1cXHVERUJGXFx1REVGQS1cXHVERUZFXFx1REYwMC1cXHVERkZGXXxcXHVEODNBW1xcdURDQzVcXHVEQ0M2XFx1RENENy1cXHVEQ0ZGXFx1REQ0Qy1cXHVERDRGXFx1REQ1QS1cXHVERDVEXFx1REQ2MC1cXHVERkZGXXxcXHVEODNCW1xcdURDMDAtXFx1REM3MFxcdURDQjUtXFx1REQwMFxcdUREM0UtXFx1RERGRlxcdURFMDRcXHVERTIwXFx1REUyM1xcdURFMjVcXHVERTI2XFx1REUyOFxcdURFMzNcXHVERTM4XFx1REUzQVxcdURFM0MtXFx1REU0MVxcdURFNDMtXFx1REU0NlxcdURFNDhcXHVERTRBXFx1REU0Q1xcdURFNTBcXHVERTUzXFx1REU1NVxcdURFNTZcXHVERTU4XFx1REU1QVxcdURFNUNcXHVERTVFXFx1REU2MFxcdURFNjNcXHVERTY1XFx1REU2NlxcdURFNkJcXHVERTczXFx1REU3OFxcdURFN0RcXHVERTdGXFx1REU4QVxcdURFOUMtXFx1REVBMFxcdURFQTRcXHVERUFBXFx1REVCQy1cXHVERUVGXFx1REVGMi1cXHVERkZGXXxcXHVEODNDW1xcdURDMkMtXFx1REMyRlxcdURDOTQtXFx1REM5RlxcdURDQUZcXHVEQ0IwXFx1RENDMFxcdURDRDBcXHVEQ0Y2LVxcdURDRkZcXHVEREFFLVxcdURERTVcXHVERTAzLVxcdURFMEZcXHVERTNDLVxcdURFM0ZcXHVERTQ5LVxcdURFNEZcXHVERTUyLVxcdURFNUZcXHVERTY2LVxcdURFRkZdfFxcdUQ4M0RbXFx1REVEOC1cXHVERURGXFx1REVFRC1cXHVERUVGXFx1REVGRC1cXHVERUZGXFx1REY3NC1cXHVERjdGXFx1REZEOS1cXHVERkRGXFx1REZFQy1cXHVERkZGXXxcXHVEODNFW1xcdURDMEMtXFx1REMwRlxcdURDNDgtXFx1REM0RlxcdURDNUEtXFx1REM1RlxcdURDODgtXFx1REM4RlxcdURDQUVcXHVEQ0FGXFx1RENCMi1cXHVEQ0ZGXFx1REQ3OVxcdUREQ0NcXHVERTU0LVxcdURFNUZcXHVERTZFXFx1REU2RlxcdURFNzUtXFx1REU3N1xcdURFN0ItXFx1REU3RlxcdURFODctXFx1REU4RlxcdURFQTktXFx1REVBRlxcdURFQjctXFx1REVCRlxcdURFQzMtXFx1REVDRlxcdURFRDctXFx1REVGRlxcdURGOTNcXHVERkNCLVxcdURGRUZcXHVERkZBLVxcdURGRkZdfFxcdUQ4NjlbXFx1REVERS1cXHVERUZGXXxcXHVEODZEW1xcdURGMzUtXFx1REYzRl18XFx1RDg2RVtcXHVEQzFFXFx1REMxRl18XFx1RDg3M1tcXHVERUEyLVxcdURFQUZdfFxcdUQ4N0FbXFx1REZFMS1cXHVERkZGXXxcXHVEODdFW1xcdURFMUUtXFx1REZGRl18XFx1RDg4NFtcXHVERjRCLVxcdURGRkZdfFxcdURCNDBbXFx1REMwMFxcdURDMDItXFx1REMxRlxcdURDODAtXFx1RENGRlxcdURERjAtXFx1REZGRl18W1xcdURCQkZcXHVEQkZGXVtcXHVERkZFXFx1REZGRl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0NvJyxcbiAgICAgICAgJ2FsaWFzJzogJ1ByaXZhdGVfVXNlJyxcbiAgICAgICAgJ2JtcCc6ICdcXHVFMDAwLVxcdUY4RkYnLFxuICAgICAgICAnYXN0cmFsJzogJ1tcXHVEQjgwLVxcdURCQkVcXHVEQkMwLVxcdURCRkVdW1xcdURDMDAtXFx1REZGRl18W1xcdURCQkZcXHVEQkZGXVtcXHVEQzAwLVxcdURGRkRdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdDcycsXG4gICAgICAgICdhbGlhcyc6ICdTdXJyb2dhdGUnLFxuICAgICAgICAnYm1wJzogJ1xcdUQ4MDAtXFx1REZGRidcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTCcsXG4gICAgICAgICdhbGlhcyc6ICdMZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ0EtWmEtelxceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYwLVxcdTA1ODhcXHUwNUQwLVxcdTA1RUFcXHUwNUVGLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEM3XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDQtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4Ni1cXHUwRThBXFx1MEU4Qy1cXHUwRUEzXFx1MEVBNVxcdTBFQTctXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzhcXHUxODgwLVxcdTE4ODRcXHUxODg3LVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUM4MC1cXHUxQzg4XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YzXFx1MUNGNVxcdTFDRjZcXHUxQ0ZBXFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxODNcXHUyMTg0XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNVxcdTMwMDZcXHUzMDMxLVxcdTMwMzVcXHUzMDNCXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCRlxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCRlxcdTRFMDAtXFx1OUZGQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkU1XFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0JGXFx1QTdDMi1cXHVBN0NBXFx1QTdGNS1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2OVxcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0MFxcdURGNDItXFx1REY0OVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRl18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdURDODAtXFx1RENCMlxcdURDQzAtXFx1RENGMlxcdUREMDAtXFx1REQyM1xcdURFODAtXFx1REVBOVxcdURFQjBcXHVERUIxXFx1REYwMC1cXHVERjFDXFx1REYyN1xcdURGMzAtXFx1REY0NVxcdURGQjAtXFx1REZDNFxcdURGRTAtXFx1REZGNl18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDQ0XFx1REQ0N1xcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1Ri1cXHVEQzYxXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1REQ4MC1cXHVEREFFXFx1REREOC1cXHVERERCXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFODAtXFx1REVBQVxcdURFQjhcXHVERjAwLVxcdURGMUFdfFxcdUQ4MDZbXFx1REMwMC1cXHVEQzJCXFx1RENBMC1cXHVEQ0RGXFx1RENGRi1cXHVERDA2XFx1REQwOVxcdUREMEMtXFx1REQxM1xcdUREMTVcXHVERDE2XFx1REQxOC1cXHVERDJGXFx1REQzRlxcdURENDFcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdURFRTAtXFx1REVGMlxcdURGQjBdfFxcdUQ4MDhbXFx1REMwMC1cXHVERjk5XXxcXHVEODA5W1xcdURDODAtXFx1REQ0M118W1xcdUQ4MENcXHVEODFDLVxcdUQ4MjBcXHVEODIyXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXFx1RDg3NC1cXHVEODc5XFx1RDg4MC1cXHVEODgzXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjQwLVxcdURGNDNcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REU0MC1cXHVERTdGXFx1REYwMC1cXHVERjRBXFx1REY1MFxcdURGOTMtXFx1REY5RlxcdURGRTBcXHVERkUxXFx1REZFM118XFx1RDgyMVtcXHVEQzAwLVxcdURGRjddfFxcdUQ4MjNbXFx1REMwMC1cXHVEQ0Q1XFx1REQwMC1cXHVERDA4XXxcXHVEODJDW1xcdURDMDAtXFx1REQxRVxcdURENTAtXFx1REQ1MlxcdURENjQtXFx1REQ2N1xcdURENzAtXFx1REVGQl18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzOFtcXHVERDAwLVxcdUREMkNcXHVERDM3LVxcdUREM0RcXHVERDRFXFx1REVDMC1cXHVERUVCXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNFxcdUREMDAtXFx1REQ0M1xcdURENEJdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRERcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFcXHVERUIwLVxcdURGRkZdfFxcdUQ4N0FbXFx1REMwMC1cXHVERkUwXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF18XFx1RDg4NFtcXHVEQzAwLVxcdURGNEFdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMQycsXG4gICAgICAgICdhbGlhcyc6ICdDYXNlZF9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ0EtWmEtelxceEI1XFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAxQkFcXHUwMUJDLVxcdTAxQkZcXHUwMUM0LVxcdTAyOTNcXHUwMjk1LVxcdTAyQUZcXHUwMzcwLVxcdTAzNzNcXHUwMzc2XFx1MDM3N1xcdTAzN0ItXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NjAtXFx1MDU4OFxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGRC1cXHUxMEZGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MUM4MC1cXHUxQzg4XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUQwMC1cXHUxRDJCXFx1MUQ2Qi1cXHUxRDc3XFx1MUQ3OS1cXHUxRDlBXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzNFxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE4M1xcdTIxODRcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDN0JcXHUyQzdFLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1QTY0MC1cXHVBNjZEXFx1QTY4MC1cXHVBNjlCXFx1QTcyMi1cXHVBNzZGXFx1QTc3MS1cXHVBNzg3XFx1QTc4Qi1cXHVBNzhFXFx1QTc5MC1cXHVBN0JGXFx1QTdDMi1cXHVBN0NBXFx1QTdGNVxcdUE3RjZcXHVBN0ZBXFx1QUIzMC1cXHVBQjVBXFx1QUI2MC1cXHVBQjY4XFx1QUI3MC1cXHVBQkJGXFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAxW1xcdURDMDAtXFx1REM0RlxcdURDQjAtXFx1RENEM1xcdURDRDgtXFx1RENGQl18XFx1RDgwM1tcXHVEQzgwLVxcdURDQjJcXHVEQ0MwLVxcdURDRjJdfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0RGXXxcXHVEODFCW1xcdURFNDAtXFx1REU3Rl18XFx1RDgzNVtcXHVEQzAwLVxcdURDNTRcXHVEQzU2LVxcdURDOUNcXHVEQzlFXFx1REM5RlxcdURDQTJcXHVEQ0E1XFx1RENBNlxcdURDQTktXFx1RENBQ1xcdURDQUUtXFx1RENCOVxcdURDQkJcXHVEQ0JELVxcdURDQzNcXHVEQ0M1LVxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDFFLVxcdUREMzlcXHVERDNCLVxcdUREM0VcXHVERDQwLVxcdURENDRcXHVERDQ2XFx1REQ0QS1cXHVERDUwXFx1REQ1Mi1cXHVERUE1XFx1REVBOC1cXHVERUMwXFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUZBXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjM0XFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjZFXFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERkE4XFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkNCXXxcXHVEODNBW1xcdUREMDAtXFx1REQ0M10nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0xsJyxcbiAgICAgICAgJ2FsaWFzJzogJ0xvd2VyY2FzZV9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ2EtelxceEI1XFx4REYtXFx4RjZcXHhGOC1cXHhGRlxcdTAxMDFcXHUwMTAzXFx1MDEwNVxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMTBGXFx1MDExMVxcdTAxMTNcXHUwMTE1XFx1MDExN1xcdTAxMTlcXHUwMTFCXFx1MDExRFxcdTAxMUZcXHUwMTIxXFx1MDEyM1xcdTAxMjVcXHUwMTI3XFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx1MDEyRlxcdTAxMzFcXHUwMTMzXFx1MDEzNVxcdTAxMzdcXHUwMTM4XFx1MDEzQVxcdTAxM0NcXHUwMTNFXFx1MDE0MFxcdTAxNDJcXHUwMTQ0XFx1MDE0NlxcdTAxNDhcXHUwMTQ5XFx1MDE0QlxcdTAxNERcXHUwMTRGXFx1MDE1MVxcdTAxNTNcXHUwMTU1XFx1MDE1N1xcdTAxNTlcXHUwMTVCXFx1MDE1RFxcdTAxNUZcXHUwMTYxXFx1MDE2M1xcdTAxNjVcXHUwMTY3XFx1MDE2OVxcdTAxNkJcXHUwMTZEXFx1MDE2RlxcdTAxNzFcXHUwMTczXFx1MDE3NVxcdTAxNzdcXHUwMTdBXFx1MDE3Q1xcdTAxN0UtXFx1MDE4MFxcdTAxODNcXHUwMTg1XFx1MDE4OFxcdTAxOENcXHUwMThEXFx1MDE5MlxcdTAxOTVcXHUwMTk5LVxcdTAxOUJcXHUwMTlFXFx1MDFBMVxcdTAxQTNcXHUwMUE1XFx1MDFBOFxcdTAxQUFcXHUwMUFCXFx1MDFBRFxcdTAxQjBcXHUwMUI0XFx1MDFCNlxcdTAxQjlcXHUwMUJBXFx1MDFCRC1cXHUwMUJGXFx1MDFDNlxcdTAxQzlcXHUwMUNDXFx1MDFDRVxcdTAxRDBcXHUwMUQyXFx1MDFENFxcdTAxRDZcXHUwMUQ4XFx1MDFEQVxcdTAxRENcXHUwMUREXFx1MDFERlxcdTAxRTFcXHUwMUUzXFx1MDFFNVxcdTAxRTdcXHUwMUU5XFx1MDFFQlxcdTAxRURcXHUwMUVGXFx1MDFGMFxcdTAxRjNcXHUwMUY1XFx1MDFGOVxcdTAxRkJcXHUwMUZEXFx1MDFGRlxcdTAyMDFcXHUwMjAzXFx1MDIwNVxcdTAyMDdcXHUwMjA5XFx1MDIwQlxcdTAyMERcXHUwMjBGXFx1MDIxMVxcdTAyMTNcXHUwMjE1XFx1MDIxN1xcdTAyMTlcXHUwMjFCXFx1MDIxRFxcdTAyMUZcXHUwMjIxXFx1MDIyM1xcdTAyMjVcXHUwMjI3XFx1MDIyOVxcdTAyMkJcXHUwMjJEXFx1MDIyRlxcdTAyMzFcXHUwMjMzLVxcdTAyMzlcXHUwMjNDXFx1MDIzRlxcdTAyNDBcXHUwMjQyXFx1MDI0N1xcdTAyNDlcXHUwMjRCXFx1MDI0RFxcdTAyNEYtXFx1MDI5M1xcdTAyOTUtXFx1MDJBRlxcdTAzNzFcXHUwMzczXFx1MDM3N1xcdTAzN0ItXFx1MDM3RFxcdTAzOTBcXHUwM0FDLVxcdTAzQ0VcXHUwM0QwXFx1MDNEMVxcdTAzRDUtXFx1MDNEN1xcdTAzRDlcXHUwM0RCXFx1MDNERFxcdTAzREZcXHUwM0UxXFx1MDNFM1xcdTAzRTVcXHUwM0U3XFx1MDNFOVxcdTAzRUJcXHUwM0VEXFx1MDNFRi1cXHUwM0YzXFx1MDNGNVxcdTAzRjhcXHUwM0ZCXFx1MDNGQ1xcdTA0MzAtXFx1MDQ1RlxcdTA0NjFcXHUwNDYzXFx1MDQ2NVxcdTA0NjdcXHUwNDY5XFx1MDQ2QlxcdTA0NkRcXHUwNDZGXFx1MDQ3MVxcdTA0NzNcXHUwNDc1XFx1MDQ3N1xcdTA0NzlcXHUwNDdCXFx1MDQ3RFxcdTA0N0ZcXHUwNDgxXFx1MDQ4QlxcdTA0OERcXHUwNDhGXFx1MDQ5MVxcdTA0OTNcXHUwNDk1XFx1MDQ5N1xcdTA0OTlcXHUwNDlCXFx1MDQ5RFxcdTA0OUZcXHUwNEExXFx1MDRBM1xcdTA0QTVcXHUwNEE3XFx1MDRBOVxcdTA0QUJcXHUwNEFEXFx1MDRBRlxcdTA0QjFcXHUwNEIzXFx1MDRCNVxcdTA0QjdcXHUwNEI5XFx1MDRCQlxcdTA0QkRcXHUwNEJGXFx1MDRDMlxcdTA0QzRcXHUwNEM2XFx1MDRDOFxcdTA0Q0FcXHUwNENDXFx1MDRDRVxcdTA0Q0ZcXHUwNEQxXFx1MDREM1xcdTA0RDVcXHUwNEQ3XFx1MDREOVxcdTA0REJcXHUwNEREXFx1MDRERlxcdTA0RTFcXHUwNEUzXFx1MDRFNVxcdTA0RTdcXHUwNEU5XFx1MDRFQlxcdTA0RURcXHUwNEVGXFx1MDRGMVxcdTA0RjNcXHUwNEY1XFx1MDRGN1xcdTA0RjlcXHUwNEZCXFx1MDRGRFxcdTA0RkZcXHUwNTAxXFx1MDUwM1xcdTA1MDVcXHUwNTA3XFx1MDUwOVxcdTA1MEJcXHUwNTBEXFx1MDUwRlxcdTA1MTFcXHUwNTEzXFx1MDUxNVxcdTA1MTdcXHUwNTE5XFx1MDUxQlxcdTA1MURcXHUwNTFGXFx1MDUyMVxcdTA1MjNcXHUwNTI1XFx1MDUyN1xcdTA1MjlcXHUwNTJCXFx1MDUyRFxcdTA1MkZcXHUwNTYwLVxcdTA1ODhcXHUxMEQwLVxcdTEwRkFcXHUxMEZELVxcdTEwRkZcXHUxM0Y4LVxcdTEzRkRcXHUxQzgwLVxcdTFDODhcXHUxRDAwLVxcdTFEMkJcXHUxRDZCLVxcdTFENzdcXHUxRDc5LVxcdTFEOUFcXHUxRTAxXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MUUwOVxcdTFFMEJcXHUxRTBEXFx1MUUwRlxcdTFFMTFcXHUxRTEzXFx1MUUxNVxcdTFFMTdcXHUxRTE5XFx1MUUxQlxcdTFFMURcXHUxRTFGXFx1MUUyMVxcdTFFMjNcXHUxRTI1XFx1MUUyN1xcdTFFMjlcXHUxRTJCXFx1MUUyRFxcdTFFMkZcXHUxRTMxXFx1MUUzM1xcdTFFMzVcXHUxRTM3XFx1MUUzOVxcdTFFM0JcXHUxRTNEXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MUU0NVxcdTFFNDdcXHUxRTQ5XFx1MUU0QlxcdTFFNERcXHUxRTRGXFx1MUU1MVxcdTFFNTNcXHUxRTU1XFx1MUU1N1xcdTFFNTlcXHUxRTVCXFx1MUU1RFxcdTFFNUZcXHUxRTYxXFx1MUU2M1xcdTFFNjVcXHUxRTY3XFx1MUU2OVxcdTFFNkJcXHUxRTZEXFx1MUU2RlxcdTFFNzFcXHUxRTczXFx1MUU3NVxcdTFFNzdcXHUxRTc5XFx1MUU3QlxcdTFFN0RcXHUxRTdGXFx1MUU4MVxcdTFFODNcXHUxRTg1XFx1MUU4N1xcdTFFODlcXHUxRThCXFx1MUU4RFxcdTFFOEZcXHUxRTkxXFx1MUU5M1xcdTFFOTUtXFx1MUU5RFxcdTFFOUZcXHUxRUExXFx1MUVBM1xcdTFFQTVcXHUxRUE3XFx1MUVBOVxcdTFFQUJcXHUxRUFEXFx1MUVBRlxcdTFFQjFcXHUxRUIzXFx1MUVCNVxcdTFFQjdcXHUxRUI5XFx1MUVCQlxcdTFFQkRcXHUxRUJGXFx1MUVDMVxcdTFFQzNcXHUxRUM1XFx1MUVDN1xcdTFFQzlcXHUxRUNCXFx1MUVDRFxcdTFFQ0ZcXHUxRUQxXFx1MUVEM1xcdTFFRDVcXHUxRUQ3XFx1MUVEOVxcdTFFREJcXHUxRUREXFx1MUVERlxcdTFFRTFcXHUxRUUzXFx1MUVFNVxcdTFFRTdcXHUxRUU5XFx1MUVFQlxcdTFFRURcXHUxRUVGXFx1MUVGMVxcdTFFRjNcXHUxRUY1XFx1MUVGN1xcdTFFRjlcXHUxRUZCXFx1MUVGRFxcdTFFRkYtXFx1MUYwN1xcdTFGMTAtXFx1MUYxNVxcdTFGMjAtXFx1MUYyN1xcdTFGMzAtXFx1MUYzN1xcdTFGNDAtXFx1MUY0NVxcdTFGNTAtXFx1MUY1N1xcdTFGNjAtXFx1MUY2N1xcdTFGNzAtXFx1MUY3RFxcdTFGODAtXFx1MUY4N1xcdTFGOTAtXFx1MUY5N1xcdTFGQTAtXFx1MUZBN1xcdTFGQjAtXFx1MUZCNFxcdTFGQjZcXHUxRkI3XFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzZcXHUxRkM3XFx1MUZEMC1cXHUxRkQzXFx1MUZENlxcdTFGRDdcXHUxRkUwLVxcdTFGRTdcXHUxRkYyLVxcdTFGRjRcXHUxRkY2XFx1MUZGN1xcdTIxMEFcXHUyMTBFXFx1MjEwRlxcdTIxMTNcXHUyMTJGXFx1MjEzNFxcdTIxMzlcXHUyMTNDXFx1MjEzRFxcdTIxNDYtXFx1MjE0OVxcdTIxNEVcXHUyMTg0XFx1MkMzMC1cXHUyQzVFXFx1MkM2MVxcdTJDNjVcXHUyQzY2XFx1MkM2OFxcdTJDNkFcXHUyQzZDXFx1MkM3MVxcdTJDNzNcXHUyQzc0XFx1MkM3Ni1cXHUyQzdCXFx1MkM4MVxcdTJDODNcXHUyQzg1XFx1MkM4N1xcdTJDODlcXHUyQzhCXFx1MkM4RFxcdTJDOEZcXHUyQzkxXFx1MkM5M1xcdTJDOTVcXHUyQzk3XFx1MkM5OVxcdTJDOUJcXHUyQzlEXFx1MkM5RlxcdTJDQTFcXHUyQ0EzXFx1MkNBNVxcdTJDQTdcXHUyQ0E5XFx1MkNBQlxcdTJDQURcXHUyQ0FGXFx1MkNCMVxcdTJDQjNcXHUyQ0I1XFx1MkNCN1xcdTJDQjlcXHUyQ0JCXFx1MkNCRFxcdTJDQkZcXHUyQ0MxXFx1MkNDM1xcdTJDQzVcXHUyQ0M3XFx1MkNDOVxcdTJDQ0JcXHUyQ0NEXFx1MkNDRlxcdTJDRDFcXHUyQ0QzXFx1MkNENVxcdTJDRDdcXHUyQ0Q5XFx1MkNEQlxcdTJDRERcXHUyQ0RGXFx1MkNFMVxcdTJDRTNcXHUyQ0U0XFx1MkNFQ1xcdTJDRUVcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHVBNjQxXFx1QTY0M1xcdUE2NDVcXHVBNjQ3XFx1QTY0OVxcdUE2NEJcXHVBNjREXFx1QTY0RlxcdUE2NTFcXHVBNjUzXFx1QTY1NVxcdUE2NTdcXHVBNjU5XFx1QTY1QlxcdUE2NURcXHVBNjVGXFx1QTY2MVxcdUE2NjNcXHVBNjY1XFx1QTY2N1xcdUE2NjlcXHVBNjZCXFx1QTY2RFxcdUE2ODFcXHVBNjgzXFx1QTY4NVxcdUE2ODdcXHVBNjg5XFx1QTY4QlxcdUE2OERcXHVBNjhGXFx1QTY5MVxcdUE2OTNcXHVBNjk1XFx1QTY5N1xcdUE2OTlcXHVBNjlCXFx1QTcyM1xcdUE3MjVcXHVBNzI3XFx1QTcyOVxcdUE3MkJcXHVBNzJEXFx1QTcyRi1cXHVBNzMxXFx1QTczM1xcdUE3MzVcXHVBNzM3XFx1QTczOVxcdUE3M0JcXHVBNzNEXFx1QTczRlxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3NDdcXHVBNzQ5XFx1QTc0QlxcdUE3NERcXHVBNzRGXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1QTc1N1xcdUE3NTlcXHVBNzVCXFx1QTc1RFxcdUE3NUZcXHVBNzYxXFx1QTc2M1xcdUE3NjVcXHVBNzY3XFx1QTc2OVxcdUE3NkJcXHVBNzZEXFx1QTc2RlxcdUE3NzEtXFx1QTc3OFxcdUE3N0FcXHVBNzdDXFx1QTc3RlxcdUE3ODFcXHVBNzgzXFx1QTc4NVxcdUE3ODdcXHVBNzhDXFx1QTc4RVxcdUE3OTFcXHVBNzkzLVxcdUE3OTVcXHVBNzk3XFx1QTc5OVxcdUE3OUJcXHVBNzlEXFx1QTc5RlxcdUE3QTFcXHVBN0EzXFx1QTdBNVxcdUE3QTdcXHVBN0E5XFx1QTdBRlxcdUE3QjVcXHVBN0I3XFx1QTdCOVxcdUE3QkJcXHVBN0JEXFx1QTdCRlxcdUE3QzNcXHVBN0M4XFx1QTdDQVxcdUE3RjZcXHVBN0ZBXFx1QUIzMC1cXHVBQjVBXFx1QUI2MC1cXHVBQjY4XFx1QUI3MC1cXHVBQkJGXFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkY0MS1cXHVGRjVBJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAxW1xcdURDMjgtXFx1REM0RlxcdURDRDgtXFx1RENGQl18XFx1RDgwM1tcXHVEQ0MwLVxcdURDRjJdfFxcdUQ4MDZbXFx1RENDMC1cXHVEQ0RGXXxcXHVEODFCW1xcdURFNjAtXFx1REU3Rl18XFx1RDgzNVtcXHVEQzFBLVxcdURDMzNcXHVEQzRFLVxcdURDNTRcXHVEQzU2LVxcdURDNjdcXHVEQzgyLVxcdURDOUJcXHVEQ0I2LVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVEQ0NGXFx1RENFQS1cXHVERDAzXFx1REQxRS1cXHVERDM3XFx1REQ1Mi1cXHVERDZCXFx1REQ4Ni1cXHVERDlGXFx1RERCQS1cXHVEREQzXFx1RERFRS1cXHVERTA3XFx1REUyMi1cXHVERTNCXFx1REU1Ni1cXHVERTZGXFx1REU4QS1cXHVERUE1XFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUUxXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjFCXFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjU1XFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERjhGXFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkM5XFx1REZDQl18XFx1RDgzQVtcXHVERDIyLVxcdURENDNdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMbScsXG4gICAgICAgICdhbGlhcyc6ICdNb2RpZmllcl9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ1xcdTAyQjAtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3NFxcdTAzN0FcXHUwNTU5XFx1MDY0MFxcdTA2RTVcXHUwNkU2XFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDk3MVxcdTBFNDZcXHUwRUM2XFx1MTBGQ1xcdTE3RDdcXHUxODQzXFx1MUFBN1xcdTFDNzgtXFx1MUM3RFxcdTFEMkMtXFx1MUQ2QVxcdTFENzhcXHUxRDlCLVxcdTFEQkZcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTJDN0NcXHUyQzdEXFx1MkQ2RlxcdTJFMkZcXHUzMDA1XFx1MzAzMS1cXHUzMDM1XFx1MzAzQlxcdTMwOURcXHUzMDlFXFx1MzBGQy1cXHUzMEZFXFx1QTAxNVxcdUE0RjgtXFx1QTRGRFxcdUE2MENcXHVBNjdGXFx1QTY5Q1xcdUE2OURcXHVBNzE3LVxcdUE3MUZcXHVBNzcwXFx1QTc4OFxcdUE3RjhcXHVBN0Y5XFx1QTlDRlxcdUE5RTZcXHVBQTcwXFx1QUFERFxcdUFBRjNcXHVBQUY0XFx1QUI1Qy1cXHVBQjVGXFx1QUI2OVxcdUZGNzBcXHVGRjlFXFx1RkY5RicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgxQVtcXHVERjQwLVxcdURGNDNdfFxcdUQ4MUJbXFx1REY5My1cXHVERjlGXFx1REZFMFxcdURGRTFcXHVERkUzXXxcXHVEODM4W1xcdUREMzctXFx1REQzRF18XFx1RDgzQVxcdURENEInXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0xvJyxcbiAgICAgICAgJ2FsaWFzJzogJ090aGVyX0xldHRlcicsXG4gICAgICAgICdibXAnOiAnXFx4QUFcXHhCQVxcdTAxQkJcXHUwMUMwLVxcdTAxQzNcXHUwMjk0XFx1MDVEMC1cXHUwNUVBXFx1MDVFRi1cXHUwNUYyXFx1MDYyMC1cXHUwNjNGXFx1MDY0MS1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwODAwLVxcdTA4MTVcXHUwODQwLVxcdTA4NThcXHUwODYwLVxcdTA4NkFcXHUwOEEwLVxcdTA4QjRcXHUwOEI2LVxcdTA4QzdcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzItXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTA5RkNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM2MFxcdTBDNjFcXHUwQzgwXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNC1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDU0LVxcdTBENTZcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDVcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg2LVxcdTBFOEFcXHUwRThDLVxcdTBFQTNcXHUwRUE1XFx1MEVBNy1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTEwMC1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkYxLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0RDXFx1MTgyMC1cXHUxODQyXFx1MTg0NC1cXHUxODc4XFx1MTg4MC1cXHUxODg0XFx1MTg4Ny1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzc3XFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YzXFx1MUNGNVxcdTFDRjZcXHUxQ0ZBXFx1MjEzNS1cXHUyMTM4XFx1MkQzMC1cXHUyRDY3XFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MzAwNlxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCRlxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCRlxcdTRFMDAtXFx1OUZGQ1xcdUEwMDAtXFx1QTAxNFxcdUEwMTYtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGN1xcdUE1MDAtXFx1QTYwQlxcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY2RVxcdUE2QTAtXFx1QTZFNVxcdUE3OEZcXHVBN0Y3XFx1QTdGQi1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlFMC1cXHVBOUU0XFx1QTlFNy1cXHVBOUVGXFx1QTlGQS1cXHVBOUZFXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTZGXFx1QUE3MS1cXHVBQTc2XFx1QUE3QVxcdUFBN0UtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQlxcdUFBRENcXHVBQUUwLVxcdUFBRUFcXHVBQUYyXFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkY2Ni1cXHVGRjZGXFx1RkY3MS1cXHVGRjlEXFx1RkZBMC1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REYwMC1cXHVERjFGXFx1REYyRC1cXHVERjQwXFx1REY0Mi1cXHVERjQ5XFx1REY1MC1cXHVERjc1XFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXXxcXHVEODAxW1xcdURDNTAtXFx1REM5RFxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1RENFMC1cXHVEQ0YyXFx1RENGNFxcdURDRjVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDBcXHVERTEwLVxcdURFMTNcXHVERTE1LVxcdURFMTdcXHVERTE5LVxcdURFMzVcXHVERTYwLVxcdURFN0NcXHVERTgwLVxcdURFOUNcXHVERUMwLVxcdURFQzdcXHVERUM5LVxcdURFRTRcXHVERjAwLVxcdURGMzVcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNzJcXHVERjgwLVxcdURGOTFdfFxcdUQ4MDNbXFx1REMwMC1cXHVEQzQ4XFx1REQwMC1cXHVERDIzXFx1REU4MC1cXHVERUE5XFx1REVCMFxcdURFQjFcXHVERjAwLVxcdURGMUNcXHVERjI3XFx1REYzMC1cXHVERjQ1XFx1REZCMC1cXHVERkM0XFx1REZFMC1cXHVERkY2XXxcXHVEODA0W1xcdURDMDMtXFx1REMzN1xcdURDODMtXFx1RENBRlxcdURDRDAtXFx1RENFOFxcdUREMDMtXFx1REQyNlxcdURENDRcXHVERDQ3XFx1REQ1MC1cXHVERDcyXFx1REQ3NlxcdUREODMtXFx1RERCMlxcdUREQzEtXFx1RERDNFxcdUREREFcXHVERERDXFx1REUwMC1cXHVERTExXFx1REUxMy1cXHVERTJCXFx1REU4MC1cXHVERTg2XFx1REU4OFxcdURFOEEtXFx1REU4RFxcdURFOEYtXFx1REU5RFxcdURFOUYtXFx1REVBOFxcdURFQjAtXFx1REVERVxcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNEXFx1REY1MFxcdURGNUQtXFx1REY2MV18XFx1RDgwNVtcXHVEQzAwLVxcdURDMzRcXHVEQzQ3LVxcdURDNEFcXHVEQzVGLVxcdURDNjFcXHVEQzgwLVxcdURDQUZcXHVEQ0M0XFx1RENDNVxcdURDQzdcXHVERDgwLVxcdUREQUVcXHVEREQ4LVxcdUREREJcXHVERTAwLVxcdURFMkZcXHVERTQ0XFx1REU4MC1cXHVERUFBXFx1REVCOFxcdURGMDAtXFx1REYxQV18XFx1RDgwNltcXHVEQzAwLVxcdURDMkJcXHVEQ0ZGLVxcdUREMDZcXHVERDA5XFx1REQwQy1cXHVERDEzXFx1REQxNVxcdUREMTZcXHVERDE4LVxcdUREMkZcXHVERDNGXFx1REQ0MVxcdUREQTAtXFx1RERBN1xcdUREQUEtXFx1REREMFxcdURERTFcXHVEREUzXFx1REUwMFxcdURFMEItXFx1REUzMlxcdURFM0FcXHVERTUwXFx1REU1Qy1cXHVERTg5XFx1REU5RFxcdURFQzAtXFx1REVGOF18XFx1RDgwN1tcXHVEQzAwLVxcdURDMDhcXHVEQzBBLVxcdURDMkVcXHVEQzQwXFx1REM3Mi1cXHVEQzhGXFx1REQwMC1cXHVERDA2XFx1REQwOFxcdUREMDlcXHVERDBCLVxcdUREMzBcXHVERDQ2XFx1REQ2MC1cXHVERDY1XFx1REQ2N1xcdURENjhcXHVERDZBLVxcdUREODlcXHVERDk4XFx1REVFMC1cXHVERUYyXFx1REZCMF18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4MjJcXHVEODQwLVxcdUQ4NjhcXHVEODZBLVxcdUQ4NkNcXHVEODZGLVxcdUQ4NzJcXHVEODc0LVxcdUQ4NzlcXHVEODgwLVxcdUQ4ODNdW1xcdURDMDAtXFx1REZGRl18XFx1RDgwRFtcXHVEQzAwLVxcdURDMkVdfFxcdUQ4MTFbXFx1REMwMC1cXHVERTQ2XXxcXHVEODFBW1xcdURDMDAtXFx1REUzOFxcdURFNDAtXFx1REU1RVxcdURFRDAtXFx1REVFRFxcdURGMDAtXFx1REYyRlxcdURGNjMtXFx1REY3N1xcdURGN0QtXFx1REY4Rl18XFx1RDgxQltcXHVERjAwLVxcdURGNEFcXHVERjUwXXxcXHVEODIxW1xcdURDMDAtXFx1REZGN118XFx1RDgyM1tcXHVEQzAwLVxcdURDRDVcXHVERDAwLVxcdUREMDhdfFxcdUQ4MkNbXFx1REMwMC1cXHVERDFFXFx1REQ1MC1cXHVERDUyXFx1REQ2NC1cXHVERDY3XFx1REQ3MC1cXHVERUZCXXxcXHVEODJGW1xcdURDMDAtXFx1REM2QVxcdURDNzAtXFx1REM3Q1xcdURDODAtXFx1REM4OFxcdURDOTAtXFx1REM5OV18XFx1RDgzOFtcXHVERDAwLVxcdUREMkNcXHVERDRFXFx1REVDMC1cXHVERUVCXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNF18XFx1RDgzQltcXHVERTAwLVxcdURFMDNcXHVERTA1LVxcdURFMUZcXHVERTIxXFx1REUyMlxcdURFMjRcXHVERTI3XFx1REUyOS1cXHVERTMyXFx1REUzNC1cXHVERTM3XFx1REUzOVxcdURFM0JcXHVERTQyXFx1REU0N1xcdURFNDlcXHVERTRCXFx1REU0RC1cXHVERTRGXFx1REU1MVxcdURFNTJcXHVERTU0XFx1REU1N1xcdURFNTlcXHVERTVCXFx1REU1RFxcdURFNUZcXHVERTYxXFx1REU2MlxcdURFNjRcXHVERTY3LVxcdURFNkFcXHVERTZDLVxcdURFNzJcXHVERTc0LVxcdURFNzdcXHVERTc5LVxcdURFN0NcXHVERTdFXFx1REU4MC1cXHVERTg5XFx1REU4Qi1cXHVERTlCXFx1REVBMS1cXHVERUEzXFx1REVBNS1cXHVERUE5XFx1REVBQi1cXHVERUJCXXxcXHVEODY5W1xcdURDMDAtXFx1REVERFxcdURGMDAtXFx1REZGRl18XFx1RDg2RFtcXHVEQzAwLVxcdURGMzRcXHVERjQwLVxcdURGRkZdfFxcdUQ4NkVbXFx1REMwMC1cXHVEQzFEXFx1REMyMC1cXHVERkZGXXxcXHVEODczW1xcdURDMDAtXFx1REVBMVxcdURFQjAtXFx1REZGRl18XFx1RDg3QVtcXHVEQzAwLVxcdURGRTBdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXXxcXHVEODg0W1xcdURDMDAtXFx1REY0QV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0x0JyxcbiAgICAgICAgJ2FsaWFzJzogJ1RpdGxlY2FzZV9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ1xcdTAxQzVcXHUwMUM4XFx1MDFDQlxcdTAxRjJcXHUxRjg4LVxcdTFGOEZcXHUxRjk4LVxcdTFGOUZcXHUxRkE4LVxcdTFGQUZcXHUxRkJDXFx1MUZDQ1xcdTFGRkMnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0x1JyxcbiAgICAgICAgJ2FsaWFzJzogJ1VwcGVyY2FzZV9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ0EtWlxceEMwLVxceEQ2XFx4RDgtXFx4REVcXHUwMTAwXFx1MDEwMlxcdTAxMDRcXHUwMTA2XFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDEwRVxcdTAxMTBcXHUwMTEyXFx1MDExNFxcdTAxMTZcXHUwMTE4XFx1MDExQVxcdTAxMUNcXHUwMTFFXFx1MDEyMFxcdTAxMjJcXHUwMTI0XFx1MDEyNlxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMkVcXHUwMTMwXFx1MDEzMlxcdTAxMzRcXHUwMTM2XFx1MDEzOVxcdTAxM0JcXHUwMTNEXFx1MDEzRlxcdTAxNDFcXHUwMTQzXFx1MDE0NVxcdTAxNDdcXHUwMTRBXFx1MDE0Q1xcdTAxNEVcXHUwMTUwXFx1MDE1MlxcdTAxNTRcXHUwMTU2XFx1MDE1OFxcdTAxNUFcXHUwMTVDXFx1MDE1RVxcdTAxNjBcXHUwMTYyXFx1MDE2NFxcdTAxNjZcXHUwMTY4XFx1MDE2QVxcdTAxNkNcXHUwMTZFXFx1MDE3MFxcdTAxNzJcXHUwMTc0XFx1MDE3NlxcdTAxNzhcXHUwMTc5XFx1MDE3QlxcdTAxN0RcXHUwMTgxXFx1MDE4MlxcdTAxODRcXHUwMTg2XFx1MDE4N1xcdTAxODktXFx1MDE4QlxcdTAxOEUtXFx1MDE5MVxcdTAxOTNcXHUwMTk0XFx1MDE5Ni1cXHUwMTk4XFx1MDE5Q1xcdTAxOURcXHUwMTlGXFx1MDFBMFxcdTAxQTJcXHUwMUE0XFx1MDFBNlxcdTAxQTdcXHUwMUE5XFx1MDFBQ1xcdTAxQUVcXHUwMUFGXFx1MDFCMS1cXHUwMUIzXFx1MDFCNVxcdTAxQjdcXHUwMUI4XFx1MDFCQ1xcdTAxQzRcXHUwMUM3XFx1MDFDQVxcdTAxQ0RcXHUwMUNGXFx1MDFEMVxcdTAxRDNcXHUwMUQ1XFx1MDFEN1xcdTAxRDlcXHUwMURCXFx1MDFERVxcdTAxRTBcXHUwMUUyXFx1MDFFNFxcdTAxRTZcXHUwMUU4XFx1MDFFQVxcdTAxRUNcXHUwMUVFXFx1MDFGMVxcdTAxRjRcXHUwMUY2LVxcdTAxRjhcXHUwMUZBXFx1MDFGQ1xcdTAxRkVcXHUwMjAwXFx1MDIwMlxcdTAyMDRcXHUwMjA2XFx1MDIwOFxcdTAyMEFcXHUwMjBDXFx1MDIwRVxcdTAyMTBcXHUwMjEyXFx1MDIxNFxcdTAyMTZcXHUwMjE4XFx1MDIxQVxcdTAyMUNcXHUwMjFFXFx1MDIyMFxcdTAyMjJcXHUwMjI0XFx1MDIyNlxcdTAyMjhcXHUwMjJBXFx1MDIyQ1xcdTAyMkVcXHUwMjMwXFx1MDIzMlxcdTAyM0FcXHUwMjNCXFx1MDIzRFxcdTAyM0VcXHUwMjQxXFx1MDI0My1cXHUwMjQ2XFx1MDI0OFxcdTAyNEFcXHUwMjRDXFx1MDI0RVxcdTAzNzBcXHUwMzcyXFx1MDM3NlxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEVcXHUwMzhGXFx1MDM5MS1cXHUwM0ExXFx1MDNBMy1cXHUwM0FCXFx1MDNDRlxcdTAzRDItXFx1MDNENFxcdTAzRDhcXHUwM0RBXFx1MDNEQ1xcdTAzREVcXHUwM0UwXFx1MDNFMlxcdTAzRTRcXHUwM0U2XFx1MDNFOFxcdTAzRUFcXHUwM0VDXFx1MDNFRVxcdTAzRjRcXHUwM0Y3XFx1MDNGOVxcdTAzRkFcXHUwM0ZELVxcdTA0MkZcXHUwNDYwXFx1MDQ2MlxcdTA0NjRcXHUwNDY2XFx1MDQ2OFxcdTA0NkFcXHUwNDZDXFx1MDQ2RVxcdTA0NzBcXHUwNDcyXFx1MDQ3NFxcdTA0NzZcXHUwNDc4XFx1MDQ3QVxcdTA0N0NcXHUwNDdFXFx1MDQ4MFxcdTA0OEFcXHUwNDhDXFx1MDQ4RVxcdTA0OTBcXHUwNDkyXFx1MDQ5NFxcdTA0OTZcXHUwNDk4XFx1MDQ5QVxcdTA0OUNcXHUwNDlFXFx1MDRBMFxcdTA0QTJcXHUwNEE0XFx1MDRBNlxcdTA0QThcXHUwNEFBXFx1MDRBQ1xcdTA0QUVcXHUwNEIwXFx1MDRCMlxcdTA0QjRcXHUwNEI2XFx1MDRCOFxcdTA0QkFcXHUwNEJDXFx1MDRCRVxcdTA0QzBcXHUwNEMxXFx1MDRDM1xcdTA0QzVcXHUwNEM3XFx1MDRDOVxcdTA0Q0JcXHUwNENEXFx1MDREMFxcdTA0RDJcXHUwNEQ0XFx1MDRENlxcdTA0RDhcXHUwNERBXFx1MDREQ1xcdTA0REVcXHUwNEUwXFx1MDRFMlxcdTA0RTRcXHUwNEU2XFx1MDRFOFxcdTA0RUFcXHUwNEVDXFx1MDRFRVxcdTA0RjBcXHUwNEYyXFx1MDRGNFxcdTA0RjZcXHUwNEY4XFx1MDRGQVxcdTA0RkNcXHUwNEZFXFx1MDUwMFxcdTA1MDJcXHUwNTA0XFx1MDUwNlxcdTA1MDhcXHUwNTBBXFx1MDUwQ1xcdTA1MEVcXHUwNTEwXFx1MDUxMlxcdTA1MTRcXHUwNTE2XFx1MDUxOFxcdTA1MUFcXHUwNTFDXFx1MDUxRVxcdTA1MjBcXHUwNTIyXFx1MDUyNFxcdTA1MjZcXHUwNTI4XFx1MDUyQVxcdTA1MkNcXHUwNTJFXFx1MDUzMS1cXHUwNTU2XFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxM0EwLVxcdTEzRjVcXHUxQzkwLVxcdTFDQkFcXHUxQ0JELVxcdTFDQkZcXHUxRTAwXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MUUwOFxcdTFFMEFcXHUxRTBDXFx1MUUwRVxcdTFFMTBcXHUxRTEyXFx1MUUxNFxcdTFFMTZcXHUxRTE4XFx1MUUxQVxcdTFFMUNcXHUxRTFFXFx1MUUyMFxcdTFFMjJcXHUxRTI0XFx1MUUyNlxcdTFFMjhcXHUxRTJBXFx1MUUyQ1xcdTFFMkVcXHUxRTMwXFx1MUUzMlxcdTFFMzRcXHUxRTM2XFx1MUUzOFxcdTFFM0FcXHUxRTNDXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MUU0NFxcdTFFNDZcXHUxRTQ4XFx1MUU0QVxcdTFFNENcXHUxRTRFXFx1MUU1MFxcdTFFNTJcXHUxRTU0XFx1MUU1NlxcdTFFNThcXHUxRTVBXFx1MUU1Q1xcdTFFNUVcXHUxRTYwXFx1MUU2MlxcdTFFNjRcXHUxRTY2XFx1MUU2OFxcdTFFNkFcXHUxRTZDXFx1MUU2RVxcdTFFNzBcXHUxRTcyXFx1MUU3NFxcdTFFNzZcXHUxRTc4XFx1MUU3QVxcdTFFN0NcXHUxRTdFXFx1MUU4MFxcdTFFODJcXHUxRTg0XFx1MUU4NlxcdTFFODhcXHUxRThBXFx1MUU4Q1xcdTFFOEVcXHUxRTkwXFx1MUU5MlxcdTFFOTRcXHUxRTlFXFx1MUVBMFxcdTFFQTJcXHUxRUE0XFx1MUVBNlxcdTFFQThcXHUxRUFBXFx1MUVBQ1xcdTFFQUVcXHUxRUIwXFx1MUVCMlxcdTFFQjRcXHUxRUI2XFx1MUVCOFxcdTFFQkFcXHUxRUJDXFx1MUVCRVxcdTFFQzBcXHUxRUMyXFx1MUVDNFxcdTFFQzZcXHUxRUM4XFx1MUVDQVxcdTFFQ0NcXHUxRUNFXFx1MUVEMFxcdTFFRDJcXHUxRUQ0XFx1MUVENlxcdTFFRDhcXHUxRURBXFx1MUVEQ1xcdTFFREVcXHUxRUUwXFx1MUVFMlxcdTFFRTRcXHUxRUU2XFx1MUVFOFxcdTFFRUFcXHUxRUVDXFx1MUVFRVxcdTFFRjBcXHUxRUYyXFx1MUVGNFxcdTFFRjZcXHUxRUY4XFx1MUVGQVxcdTFFRkNcXHUxRUZFXFx1MUYwOC1cXHUxRjBGXFx1MUYxOC1cXHUxRjFEXFx1MUYyOC1cXHUxRjJGXFx1MUYzOC1cXHUxRjNGXFx1MUY0OC1cXHUxRjREXFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1RlxcdTFGNjgtXFx1MUY2RlxcdTFGQjgtXFx1MUZCQlxcdTFGQzgtXFx1MUZDQlxcdTFGRDgtXFx1MUZEQlxcdTFGRTgtXFx1MUZFQ1xcdTFGRjgtXFx1MUZGQlxcdTIxMDJcXHUyMTA3XFx1MjEwQi1cXHUyMTBEXFx1MjExMC1cXHUyMTEyXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMzAtXFx1MjEzM1xcdTIxM0VcXHUyMTNGXFx1MjE0NVxcdTIxODNcXHUyQzAwLVxcdTJDMkVcXHUyQzYwXFx1MkM2Mi1cXHUyQzY0XFx1MkM2N1xcdTJDNjlcXHUyQzZCXFx1MkM2RC1cXHUyQzcwXFx1MkM3MlxcdTJDNzVcXHUyQzdFLVxcdTJDODBcXHUyQzgyXFx1MkM4NFxcdTJDODZcXHUyQzg4XFx1MkM4QVxcdTJDOENcXHUyQzhFXFx1MkM5MFxcdTJDOTJcXHUyQzk0XFx1MkM5NlxcdTJDOThcXHUyQzlBXFx1MkM5Q1xcdTJDOUVcXHUyQ0EwXFx1MkNBMlxcdTJDQTRcXHUyQ0E2XFx1MkNBOFxcdTJDQUFcXHUyQ0FDXFx1MkNBRVxcdTJDQjBcXHUyQ0IyXFx1MkNCNFxcdTJDQjZcXHUyQ0I4XFx1MkNCQVxcdTJDQkNcXHUyQ0JFXFx1MkNDMFxcdTJDQzJcXHUyQ0M0XFx1MkNDNlxcdTJDQzhcXHUyQ0NBXFx1MkNDQ1xcdTJDQ0VcXHUyQ0QwXFx1MkNEMlxcdTJDRDRcXHUyQ0Q2XFx1MkNEOFxcdTJDREFcXHUyQ0RDXFx1MkNERVxcdTJDRTBcXHUyQ0UyXFx1MkNFQlxcdTJDRURcXHUyQ0YyXFx1QTY0MFxcdUE2NDJcXHVBNjQ0XFx1QTY0NlxcdUE2NDhcXHVBNjRBXFx1QTY0Q1xcdUE2NEVcXHVBNjUwXFx1QTY1MlxcdUE2NTRcXHVBNjU2XFx1QTY1OFxcdUE2NUFcXHVBNjVDXFx1QTY1RVxcdUE2NjBcXHVBNjYyXFx1QTY2NFxcdUE2NjZcXHVBNjY4XFx1QTY2QVxcdUE2NkNcXHVBNjgwXFx1QTY4MlxcdUE2ODRcXHVBNjg2XFx1QTY4OFxcdUE2OEFcXHVBNjhDXFx1QTY4RVxcdUE2OTBcXHVBNjkyXFx1QTY5NFxcdUE2OTZcXHVBNjk4XFx1QTY5QVxcdUE3MjJcXHVBNzI0XFx1QTcyNlxcdUE3MjhcXHVBNzJBXFx1QTcyQ1xcdUE3MkVcXHVBNzMyXFx1QTczNFxcdUE3MzZcXHVBNzM4XFx1QTczQVxcdUE3M0NcXHVBNzNFXFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTc0NlxcdUE3NDhcXHVBNzRBXFx1QTc0Q1xcdUE3NEVcXHVBNzUwXFx1QTc1MlxcdUE3NTRcXHVBNzU2XFx1QTc1OFxcdUE3NUFcXHVBNzVDXFx1QTc1RVxcdUE3NjBcXHVBNzYyXFx1QTc2NFxcdUE3NjZcXHVBNzY4XFx1QTc2QVxcdUE3NkNcXHVBNzZFXFx1QTc3OVxcdUE3N0JcXHVBNzdEXFx1QTc3RVxcdUE3ODBcXHVBNzgyXFx1QTc4NFxcdUE3ODZcXHVBNzhCXFx1QTc4RFxcdUE3OTBcXHVBNzkyXFx1QTc5NlxcdUE3OThcXHVBNzlBXFx1QTc5Q1xcdUE3OUVcXHVBN0EwXFx1QTdBMlxcdUE3QTRcXHVBN0E2XFx1QTdBOFxcdUE3QUEtXFx1QTdBRVxcdUE3QjAtXFx1QTdCNFxcdUE3QjZcXHVBN0I4XFx1QTdCQVxcdUE3QkNcXHVBN0JFXFx1QTdDMlxcdUE3QzQtXFx1QTdDN1xcdUE3QzlcXHVBN0Y1XFx1RkYyMS1cXHVGRjNBJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAxW1xcdURDMDAtXFx1REMyN1xcdURDQjAtXFx1RENEM118XFx1RDgwM1tcXHVEQzgwLVxcdURDQjJdfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0JGXXxcXHVEODFCW1xcdURFNDAtXFx1REU1Rl18XFx1RDgzNVtcXHVEQzAwLVxcdURDMTlcXHVEQzM0LVxcdURDNERcXHVEQzY4LVxcdURDODFcXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjVcXHVEQ0QwLVxcdURDRTlcXHVERDA0XFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMzhcXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENkMtXFx1REQ4NVxcdUREQTAtXFx1RERCOVxcdURERDQtXFx1RERFRFxcdURFMDgtXFx1REUyMVxcdURFM0MtXFx1REU1NVxcdURFNzAtXFx1REU4OVxcdURFQTgtXFx1REVDMFxcdURFRTItXFx1REVGQVxcdURGMUMtXFx1REYzNFxcdURGNTYtXFx1REY2RVxcdURGOTAtXFx1REZBOFxcdURGQ0FdfFxcdUQ4M0FbXFx1REQwMC1cXHVERDIxXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTScsXG4gICAgICAgICdhbGlhcyc6ICdNYXJrJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMzAwLVxcdTAzNkZcXHUwNDgzLVxcdTA0ODlcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNjEwLVxcdTA2MUFcXHUwNjRCLVxcdTA2NUZcXHUwNjcwXFx1MDZENi1cXHUwNkRDXFx1MDZERi1cXHUwNkU0XFx1MDZFN1xcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExXFx1MDczMC1cXHUwNzRBXFx1MDdBNi1cXHUwN0IwXFx1MDdFQi1cXHUwN0YzXFx1MDdGRFxcdTA4MTYtXFx1MDgxOVxcdTA4MUItXFx1MDgyM1xcdTA4MjUtXFx1MDgyN1xcdTA4MjktXFx1MDgyRFxcdTA4NTktXFx1MDg1QlxcdTA4RDMtXFx1MDhFMVxcdTA4RTMtXFx1MDkwM1xcdTA5M0EtXFx1MDkzQ1xcdTA5M0UtXFx1MDk0RlxcdTA5NTEtXFx1MDk1N1xcdTA5NjJcXHUwOTYzXFx1MDk4MS1cXHUwOTgzXFx1MDlCQ1xcdTA5QkUtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNEXFx1MDlEN1xcdTA5RTJcXHUwOUUzXFx1MDlGRVxcdTBBMDEtXFx1MEEwM1xcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTcwXFx1MEE3MVxcdTBBNzVcXHUwQTgxLVxcdTBBODNcXHUwQUJDXFx1MEFCRS1cXHUwQUM1XFx1MEFDNy1cXHUwQUM5XFx1MEFDQi1cXHUwQUNEXFx1MEFFMlxcdTBBRTNcXHUwQUZBLVxcdTBBRkZcXHUwQjAxLVxcdTBCMDNcXHUwQjNDXFx1MEIzRS1cXHUwQjQ0XFx1MEI0N1xcdTBCNDhcXHUwQjRCLVxcdTBCNERcXHUwQjU1LVxcdTBCNTdcXHUwQjYyXFx1MEI2M1xcdTBCODJcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQ3XFx1MEMwMC1cXHUwQzA0XFx1MEMzRS1cXHUwQzQ0XFx1MEM0Ni1cXHUwQzQ4XFx1MEM0QS1cXHUwQzREXFx1MEM1NVxcdTBDNTZcXHUwQzYyXFx1MEM2M1xcdTBDODEtXFx1MEM4M1xcdTBDQkNcXHUwQ0JFLVxcdTBDQzRcXHUwQ0M2LVxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0RcXHUwQ0Q1XFx1MENENlxcdTBDRTJcXHUwQ0UzXFx1MEQwMC1cXHUwRDAzXFx1MEQzQlxcdTBEM0NcXHUwRDNFLVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENERcXHUwRDU3XFx1MEQ2MlxcdTBENjNcXHUwRDgxLVxcdTBEODNcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERjJcXHUwREYzXFx1MEUzMVxcdTBFMzQtXFx1MEUzQVxcdTBFNDctXFx1MEU0RVxcdTBFQjFcXHUwRUI0LVxcdTBFQkNcXHUwRUM4LVxcdTBFQ0RcXHUwRjE4XFx1MEYxOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGM0VcXHUwRjNGXFx1MEY3MS1cXHUwRjg0XFx1MEY4NlxcdTBGODdcXHUwRjhELVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAyQi1cXHUxMDNFXFx1MTA1Ni1cXHUxMDU5XFx1MTA1RS1cXHUxMDYwXFx1MTA2Mi1cXHUxMDY0XFx1MTA2Ny1cXHUxMDZEXFx1MTA3MS1cXHUxMDc0XFx1MTA4Mi1cXHUxMDhEXFx1MTA4RlxcdTEwOUEtXFx1MTA5RFxcdTEzNUQtXFx1MTM1RlxcdTE3MTItXFx1MTcxNFxcdTE3MzItXFx1MTczNFxcdTE3NTJcXHUxNzUzXFx1MTc3MlxcdTE3NzNcXHUxN0I0LVxcdTE3RDNcXHUxN0REXFx1MTgwQi1cXHUxODBEXFx1MTg4NVxcdTE4ODZcXHUxOEE5XFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MUExNy1cXHUxQTFCXFx1MUE1NS1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3RlxcdTFBQjAtXFx1MUFDMFxcdTFCMDAtXFx1MUIwNFxcdTFCMzQtXFx1MUI0NFxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUI4MlxcdTFCQTEtXFx1MUJBRFxcdTFCRTYtXFx1MUJGM1xcdTFDMjQtXFx1MUMzN1xcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNFOFxcdTFDRURcXHUxQ0Y0XFx1MUNGNy1cXHUxQ0Y5XFx1MURDMC1cXHUxREY5XFx1MURGQi1cXHUxREZGXFx1MjBEMC1cXHUyMEYwXFx1MkNFRi1cXHUyQ0YxXFx1MkQ3RlxcdTJERTAtXFx1MkRGRlxcdTMwMkEtXFx1MzAyRlxcdTMwOTlcXHUzMDlBXFx1QTY2Ri1cXHVBNjcyXFx1QTY3NC1cXHVBNjdEXFx1QTY5RVxcdUE2OUZcXHVBNkYwXFx1QTZGMVxcdUE4MDJcXHVBODA2XFx1QTgwQlxcdUE4MjMtXFx1QTgyN1xcdUE4MkNcXHVBODgwXFx1QTg4MVxcdUE4QjQtXFx1QThDNVxcdUE4RTAtXFx1QThGMVxcdUE4RkZcXHVBOTI2LVxcdUE5MkRcXHVBOTQ3LVxcdUE5NTNcXHVBOTgwLVxcdUE5ODNcXHVBOUIzLVxcdUE5QzBcXHVBOUU1XFx1QUEyOS1cXHVBQTM2XFx1QUE0M1xcdUFBNENcXHVBQTREXFx1QUE3Qi1cXHVBQTdEXFx1QUFCMFxcdUFBQjItXFx1QUFCNFxcdUFBQjdcXHVBQUI4XFx1QUFCRVxcdUFBQkZcXHVBQUMxXFx1QUFFQi1cXHVBQUVGXFx1QUFGNVxcdUFBRjZcXHVBQkUzLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUZCMUVcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMkYnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1RERGRFxcdURFRTBcXHVERjc2LVxcdURGN0FdfFxcdUQ4MDJbXFx1REUwMS1cXHVERTAzXFx1REUwNVxcdURFMDZcXHVERTBDLVxcdURFMEZcXHVERTM4LVxcdURFM0FcXHVERTNGXFx1REVFNVxcdURFRTZdfFxcdUQ4MDNbXFx1REQyNC1cXHVERDI3XFx1REVBQlxcdURFQUNcXHVERjQ2LVxcdURGNTBdfFxcdUQ4MDRbXFx1REMwMC1cXHVEQzAyXFx1REMzOC1cXHVEQzQ2XFx1REM3Ri1cXHVEQzgyXFx1RENCMC1cXHVEQ0JBXFx1REQwMC1cXHVERDAyXFx1REQyNy1cXHVERDM0XFx1REQ0NVxcdURENDZcXHVERDczXFx1REQ4MC1cXHVERDgyXFx1RERCMy1cXHVEREMwXFx1RERDOS1cXHVERENDXFx1RERDRVxcdUREQ0ZcXHVERTJDLVxcdURFMzdcXHVERTNFXFx1REVERi1cXHVERUVBXFx1REYwMC1cXHVERjAzXFx1REYzQlxcdURGM0NcXHVERjNFLVxcdURGNDRcXHVERjQ3XFx1REY0OFxcdURGNEItXFx1REY0RFxcdURGNTdcXHVERjYyXFx1REY2M1xcdURGNjYtXFx1REY2Q1xcdURGNzAtXFx1REY3NF18XFx1RDgwNVtcXHVEQzM1LVxcdURDNDZcXHVEQzVFXFx1RENCMC1cXHVEQ0MzXFx1RERBRi1cXHVEREI1XFx1RERCOC1cXHVEREMwXFx1REREQ1xcdURERERcXHVERTMwLVxcdURFNDBcXHVERUFCLVxcdURFQjdcXHVERjFELVxcdURGMkJdfFxcdUQ4MDZbXFx1REMyQy1cXHVEQzNBXFx1REQzMC1cXHVERDM1XFx1REQzN1xcdUREMzhcXHVERDNCLVxcdUREM0VcXHVERDQwXFx1REQ0MlxcdURENDNcXHVEREQxLVxcdURERDdcXHVERERBLVxcdURERTBcXHVEREU0XFx1REUwMS1cXHVERTBBXFx1REUzMy1cXHVERTM5XFx1REUzQi1cXHVERTNFXFx1REU0N1xcdURFNTEtXFx1REU1QlxcdURFOEEtXFx1REU5OV18XFx1RDgwN1tcXHVEQzJGLVxcdURDMzZcXHVEQzM4LVxcdURDM0ZcXHVEQzkyLVxcdURDQTdcXHVEQ0E5LVxcdURDQjZcXHVERDMxLVxcdUREMzZcXHVERDNBXFx1REQzQ1xcdUREM0RcXHVERDNGLVxcdURENDVcXHVERDQ3XFx1REQ4QS1cXHVERDhFXFx1REQ5MFxcdUREOTFcXHVERDkzLVxcdUREOTdcXHVERUYzLVxcdURFRjZdfFxcdUQ4MUFbXFx1REVGMC1cXHVERUY0XFx1REYzMC1cXHVERjM2XXxcXHVEODFCW1xcdURGNEZcXHVERjUxLVxcdURGODdcXHVERjhGLVxcdURGOTJcXHVERkU0XFx1REZGMFxcdURGRjFdfFxcdUQ4MkZbXFx1REM5RFxcdURDOUVdfFxcdUQ4MzRbXFx1REQ2NS1cXHVERDY5XFx1REQ2RC1cXHVERDcyXFx1REQ3Qi1cXHVERDgyXFx1REQ4NS1cXHVERDhCXFx1RERBQS1cXHVEREFEXFx1REU0Mi1cXHVERTQ0XXxcXHVEODM2W1xcdURFMDAtXFx1REUzNlxcdURFM0ItXFx1REU2Q1xcdURFNzVcXHVERTg0XFx1REU5Qi1cXHVERTlGXFx1REVBMS1cXHVERUFGXXxcXHVEODM4W1xcdURDMDAtXFx1REMwNlxcdURDMDgtXFx1REMxOFxcdURDMUItXFx1REMyMVxcdURDMjNcXHVEQzI0XFx1REMyNi1cXHVEQzJBXFx1REQzMC1cXHVERDM2XFx1REVFQy1cXHVERUVGXXxcXHVEODNBW1xcdURDRDAtXFx1RENENlxcdURENDQtXFx1REQ0QV18XFx1REI0MFtcXHVERDAwLVxcdURERUZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdNYycsXG4gICAgICAgICdhbGlhcyc6ICdTcGFjaW5nX01hcmsnLFxuICAgICAgICAnYm1wJzogJ1xcdTA5MDNcXHUwOTNCXFx1MDkzRS1cXHUwOTQwXFx1MDk0OS1cXHUwOTRDXFx1MDk0RVxcdTA5NEZcXHUwOTgyXFx1MDk4M1xcdTA5QkUtXFx1MDlDMFxcdTA5QzdcXHUwOUM4XFx1MDlDQlxcdTA5Q0NcXHUwOUQ3XFx1MEEwM1xcdTBBM0UtXFx1MEE0MFxcdTBBODNcXHUwQUJFLVxcdTBBQzBcXHUwQUM5XFx1MEFDQlxcdTBBQ0NcXHUwQjAyXFx1MEIwM1xcdTBCM0VcXHUwQjQwXFx1MEI0N1xcdTBCNDhcXHUwQjRCXFx1MEI0Q1xcdTBCNTdcXHUwQkJFXFx1MEJCRlxcdTBCQzFcXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNDXFx1MEJEN1xcdTBDMDEtXFx1MEMwM1xcdTBDNDEtXFx1MEM0NFxcdTBDODJcXHUwQzgzXFx1MENCRVxcdTBDQzAtXFx1MENDNFxcdTBDQzdcXHUwQ0M4XFx1MENDQVxcdTBDQ0JcXHUwQ0Q1XFx1MENENlxcdTBEMDJcXHUwRDAzXFx1MEQzRS1cXHUwRDQwXFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDRDXFx1MEQ1N1xcdTBEODJcXHUwRDgzXFx1MERDRi1cXHUwREQxXFx1MEREOC1cXHUwRERGXFx1MERGMlxcdTBERjNcXHUwRjNFXFx1MEYzRlxcdTBGN0ZcXHUxMDJCXFx1MTAyQ1xcdTEwMzFcXHUxMDM4XFx1MTAzQlxcdTEwM0NcXHUxMDU2XFx1MTA1N1xcdTEwNjItXFx1MTA2NFxcdTEwNjctXFx1MTA2RFxcdTEwODNcXHUxMDg0XFx1MTA4Ny1cXHUxMDhDXFx1MTA4RlxcdTEwOUEtXFx1MTA5Q1xcdTE3QjZcXHUxN0JFLVxcdTE3QzVcXHUxN0M3XFx1MTdDOFxcdTE5MjMtXFx1MTkyNlxcdTE5MjktXFx1MTkyQlxcdTE5MzBcXHUxOTMxXFx1MTkzMy1cXHUxOTM4XFx1MUExOVxcdTFBMUFcXHUxQTU1XFx1MUE1N1xcdTFBNjFcXHUxQTYzXFx1MUE2NFxcdTFBNkQtXFx1MUE3MlxcdTFCMDRcXHUxQjM1XFx1MUIzQlxcdTFCM0QtXFx1MUI0MVxcdTFCNDNcXHUxQjQ0XFx1MUI4MlxcdTFCQTFcXHUxQkE2XFx1MUJBN1xcdTFCQUFcXHUxQkU3XFx1MUJFQS1cXHUxQkVDXFx1MUJFRVxcdTFCRjJcXHUxQkYzXFx1MUMyNC1cXHUxQzJCXFx1MUMzNFxcdTFDMzVcXHUxQ0UxXFx1MUNGN1xcdTMwMkVcXHUzMDJGXFx1QTgyM1xcdUE4MjRcXHVBODI3XFx1QTg4MFxcdUE4ODFcXHVBOEI0LVxcdUE4QzNcXHVBOTUyXFx1QTk1M1xcdUE5ODNcXHVBOUI0XFx1QTlCNVxcdUE5QkFcXHVBOUJCXFx1QTlCRS1cXHVBOUMwXFx1QUEyRlxcdUFBMzBcXHVBQTMzXFx1QUEzNFxcdUFBNERcXHVBQTdCXFx1QUE3RFxcdUFBRUJcXHVBQUVFXFx1QUFFRlxcdUFBRjVcXHVBQkUzXFx1QUJFNFxcdUFCRTZcXHVBQkU3XFx1QUJFOVxcdUFCRUFcXHVBQkVDJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODA0W1xcdURDMDBcXHVEQzAyXFx1REM4MlxcdURDQjAtXFx1RENCMlxcdURDQjdcXHVEQ0I4XFx1REQyQ1xcdURENDVcXHVERDQ2XFx1REQ4MlxcdUREQjMtXFx1RERCNVxcdUREQkZcXHVEREMwXFx1RERDRVxcdURFMkMtXFx1REUyRVxcdURFMzJcXHVERTMzXFx1REUzNVxcdURFRTAtXFx1REVFMlxcdURGMDJcXHVERjAzXFx1REYzRVxcdURGM0ZcXHVERjQxLVxcdURGNDRcXHVERjQ3XFx1REY0OFxcdURGNEItXFx1REY0RFxcdURGNTdcXHVERjYyXFx1REY2M118XFx1RDgwNVtcXHVEQzM1LVxcdURDMzdcXHVEQzQwXFx1REM0MVxcdURDNDVcXHVEQ0IwLVxcdURDQjJcXHVEQ0I5XFx1RENCQi1cXHVEQ0JFXFx1RENDMVxcdUREQUYtXFx1RERCMVxcdUREQjgtXFx1RERCQlxcdUREQkVcXHVERTMwLVxcdURFMzJcXHVERTNCXFx1REUzQ1xcdURFM0VcXHVERUFDXFx1REVBRVxcdURFQUZcXHVERUI2XFx1REYyMFxcdURGMjFcXHVERjI2XXxcXHVEODA2W1xcdURDMkMtXFx1REMyRVxcdURDMzhcXHVERDMwLVxcdUREMzVcXHVERDM3XFx1REQzOFxcdUREM0RcXHVERDQwXFx1REQ0MlxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERlxcdURERTRcXHVERTM5XFx1REU1N1xcdURFNThcXHVERTk3XXxcXHVEODA3W1xcdURDMkZcXHVEQzNFXFx1RENBOVxcdURDQjFcXHVEQ0I0XFx1REQ4QS1cXHVERDhFXFx1REQ5M1xcdUREOTRcXHVERDk2XFx1REVGNVxcdURFRjZdfFxcdUQ4MUJbXFx1REY1MS1cXHVERjg3XFx1REZGMFxcdURGRjFdfFxcdUQ4MzRbXFx1REQ2NVxcdURENjZcXHVERDZELVxcdURENzJdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdNZScsXG4gICAgICAgICdhbGlhcyc6ICdFbmNsb3NpbmdfTWFyaycsXG4gICAgICAgICdibXAnOiAnXFx1MDQ4OFxcdTA0ODlcXHUxQUJFXFx1MjBERC1cXHUyMEUwXFx1MjBFMi1cXHUyMEU0XFx1QTY3MC1cXHVBNjcyJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdNbicsXG4gICAgICAgICdhbGlhcyc6ICdOb25zcGFjaW5nX01hcmsnLFxuICAgICAgICAnYm1wJzogJ1xcdTAzMDAtXFx1MDM2RlxcdTA0ODMtXFx1MDQ4N1xcdTA1OTEtXFx1MDVCRFxcdTA1QkZcXHUwNUMxXFx1MDVDMlxcdTA1QzRcXHUwNUM1XFx1MDVDN1xcdTA2MTAtXFx1MDYxQVxcdTA2NEItXFx1MDY1RlxcdTA2NzBcXHUwNkQ2LVxcdTA2RENcXHUwNkRGLVxcdTA2RTRcXHUwNkU3XFx1MDZFOFxcdTA2RUEtXFx1MDZFRFxcdTA3MTFcXHUwNzMwLVxcdTA3NEFcXHUwN0E2LVxcdTA3QjBcXHUwN0VCLVxcdTA3RjNcXHUwN0ZEXFx1MDgxNi1cXHUwODE5XFx1MDgxQi1cXHUwODIzXFx1MDgyNS1cXHUwODI3XFx1MDgyOS1cXHUwODJEXFx1MDg1OS1cXHUwODVCXFx1MDhEMy1cXHUwOEUxXFx1MDhFMy1cXHUwOTAyXFx1MDkzQVxcdTA5M0NcXHUwOTQxLVxcdTA5NDhcXHUwOTREXFx1MDk1MS1cXHUwOTU3XFx1MDk2MlxcdTA5NjNcXHUwOTgxXFx1MDlCQ1xcdTA5QzEtXFx1MDlDNFxcdTA5Q0RcXHUwOUUyXFx1MDlFM1xcdTA5RkVcXHUwQTAxXFx1MEEwMlxcdTBBM0NcXHUwQTQxXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0Qi1cXHUwQTREXFx1MEE1MVxcdTBBNzBcXHUwQTcxXFx1MEE3NVxcdTBBODFcXHUwQTgyXFx1MEFCQ1xcdTBBQzEtXFx1MEFDNVxcdTBBQzdcXHUwQUM4XFx1MEFDRFxcdTBBRTJcXHUwQUUzXFx1MEFGQS1cXHUwQUZGXFx1MEIwMVxcdTBCM0NcXHUwQjNGXFx1MEI0MS1cXHUwQjQ0XFx1MEI0RFxcdTBCNTVcXHUwQjU2XFx1MEI2MlxcdTBCNjNcXHUwQjgyXFx1MEJDMFxcdTBCQ0RcXHUwQzAwXFx1MEMwNFxcdTBDM0UtXFx1MEM0MFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM2MlxcdTBDNjNcXHUwQzgxXFx1MENCQ1xcdTBDQkZcXHUwQ0M2XFx1MENDQ1xcdTBDQ0RcXHUwQ0UyXFx1MENFM1xcdTBEMDBcXHUwRDAxXFx1MEQzQlxcdTBEM0NcXHUwRDQxLVxcdTBENDRcXHUwRDREXFx1MEQ2MlxcdTBENjNcXHUwRDgxXFx1MERDQVxcdTBERDItXFx1MERENFxcdTBERDZcXHUwRTMxXFx1MEUzNC1cXHUwRTNBXFx1MEU0Ny1cXHUwRTRFXFx1MEVCMVxcdTBFQjQtXFx1MEVCQ1xcdTBFQzgtXFx1MEVDRFxcdTBGMThcXHUwRjE5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEY3MS1cXHUwRjdFXFx1MEY4MC1cXHUwRjg0XFx1MEY4NlxcdTBGODdcXHUwRjhELVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAyRC1cXHUxMDMwXFx1MTAzMi1cXHUxMDM3XFx1MTAzOVxcdTEwM0FcXHUxMDNEXFx1MTAzRVxcdTEwNThcXHUxMDU5XFx1MTA1RS1cXHUxMDYwXFx1MTA3MS1cXHUxMDc0XFx1MTA4MlxcdTEwODVcXHUxMDg2XFx1MTA4RFxcdTEwOURcXHUxMzVELVxcdTEzNUZcXHUxNzEyLVxcdTE3MTRcXHUxNzMyLVxcdTE3MzRcXHUxNzUyXFx1MTc1M1xcdTE3NzJcXHUxNzczXFx1MTdCNFxcdTE3QjVcXHUxN0I3LVxcdTE3QkRcXHUxN0M2XFx1MTdDOS1cXHUxN0QzXFx1MTdERFxcdTE4MEItXFx1MTgwRFxcdTE4ODVcXHUxODg2XFx1MThBOVxcdTE5MjAtXFx1MTkyMlxcdTE5MjdcXHUxOTI4XFx1MTkzMlxcdTE5MzktXFx1MTkzQlxcdTFBMTdcXHUxQTE4XFx1MUExQlxcdTFBNTZcXHUxQTU4LVxcdTFBNUVcXHUxQTYwXFx1MUE2MlxcdTFBNjUtXFx1MUE2Q1xcdTFBNzMtXFx1MUE3Q1xcdTFBN0ZcXHUxQUIwLVxcdTFBQkRcXHUxQUJGXFx1MUFDMFxcdTFCMDAtXFx1MUIwM1xcdTFCMzRcXHUxQjM2LVxcdTFCM0FcXHUxQjNDXFx1MUI0MlxcdTFCNkItXFx1MUI3M1xcdTFCODBcXHUxQjgxXFx1MUJBMi1cXHUxQkE1XFx1MUJBOFxcdTFCQTlcXHUxQkFCLVxcdTFCQURcXHUxQkU2XFx1MUJFOFxcdTFCRTlcXHUxQkVEXFx1MUJFRi1cXHUxQkYxXFx1MUMyQy1cXHUxQzMzXFx1MUMzNlxcdTFDMzdcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRTBcXHUxQ0UyLVxcdTFDRThcXHUxQ0VEXFx1MUNGNFxcdTFDRjhcXHUxQ0Y5XFx1MURDMC1cXHUxREY5XFx1MURGQi1cXHUxREZGXFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTJDRUYtXFx1MkNGMVxcdTJEN0ZcXHUyREUwLVxcdTJERkZcXHUzMDJBLVxcdTMwMkRcXHUzMDk5XFx1MzA5QVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjlFXFx1QTY5RlxcdUE2RjBcXHVBNkYxXFx1QTgwMlxcdUE4MDZcXHVBODBCXFx1QTgyNVxcdUE4MjZcXHVBODJDXFx1QThDNFxcdUE4QzVcXHVBOEUwLVxcdUE4RjFcXHVBOEZGXFx1QTkyNi1cXHVBOTJEXFx1QTk0Ny1cXHVBOTUxXFx1QTk4MC1cXHVBOTgyXFx1QTlCM1xcdUE5QjYtXFx1QTlCOVxcdUE5QkNcXHVBOUJEXFx1QTlFNVxcdUFBMjktXFx1QUEyRVxcdUFBMzFcXHVBQTMyXFx1QUEzNVxcdUFBMzZcXHVBQTQzXFx1QUE0Q1xcdUFBN0NcXHVBQUIwXFx1QUFCMi1cXHVBQUI0XFx1QUFCN1xcdUFBQjhcXHVBQUJFXFx1QUFCRlxcdUFBQzFcXHVBQUVDXFx1QUFFRFxcdUFBRjZcXHVBQkU1XFx1QUJFOFxcdUFCRURcXHVGQjFFXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTJGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURERkRcXHVERUUwXFx1REY3Ni1cXHVERjdBXXxcXHVEODAyW1xcdURFMDEtXFx1REUwM1xcdURFMDVcXHVERTA2XFx1REUwQy1cXHVERTBGXFx1REUzOC1cXHVERTNBXFx1REUzRlxcdURFRTVcXHVERUU2XXxcXHVEODAzW1xcdUREMjQtXFx1REQyN1xcdURFQUJcXHVERUFDXFx1REY0Ni1cXHVERjUwXXxcXHVEODA0W1xcdURDMDFcXHVEQzM4LVxcdURDNDZcXHVEQzdGLVxcdURDODFcXHVEQ0IzLVxcdURDQjZcXHVEQ0I5XFx1RENCQVxcdUREMDAtXFx1REQwMlxcdUREMjctXFx1REQyQlxcdUREMkQtXFx1REQzNFxcdURENzNcXHVERDgwXFx1REQ4MVxcdUREQjYtXFx1RERCRVxcdUREQzktXFx1RERDQ1xcdUREQ0ZcXHVERTJGLVxcdURFMzFcXHVERTM0XFx1REUzNlxcdURFMzdcXHVERTNFXFx1REVERlxcdURFRTMtXFx1REVFQVxcdURGMDBcXHVERjAxXFx1REYzQlxcdURGM0NcXHVERjQwXFx1REY2Ni1cXHVERjZDXFx1REY3MC1cXHVERjc0XXxcXHVEODA1W1xcdURDMzgtXFx1REMzRlxcdURDNDItXFx1REM0NFxcdURDNDZcXHVEQzVFXFx1RENCMy1cXHVEQ0I4XFx1RENCQVxcdURDQkZcXHVEQ0MwXFx1RENDMlxcdURDQzNcXHVEREIyLVxcdUREQjVcXHVEREJDXFx1RERCRFxcdUREQkZcXHVEREMwXFx1REREQ1xcdURERERcXHVERTMzLVxcdURFM0FcXHVERTNEXFx1REUzRlxcdURFNDBcXHVERUFCXFx1REVBRFxcdURFQjAtXFx1REVCNVxcdURFQjdcXHVERjFELVxcdURGMUZcXHVERjIyLVxcdURGMjVcXHVERjI3LVxcdURGMkJdfFxcdUQ4MDZbXFx1REMyRi1cXHVEQzM3XFx1REMzOVxcdURDM0FcXHVERDNCXFx1REQzQ1xcdUREM0VcXHVERDQzXFx1RERENC1cXHVEREQ3XFx1REREQVxcdUREREJcXHVEREUwXFx1REUwMS1cXHVERTBBXFx1REUzMy1cXHVERTM4XFx1REUzQi1cXHVERTNFXFx1REU0N1xcdURFNTEtXFx1REU1NlxcdURFNTktXFx1REU1QlxcdURFOEEtXFx1REU5NlxcdURFOThcXHVERTk5XXxcXHVEODA3W1xcdURDMzAtXFx1REMzNlxcdURDMzgtXFx1REMzRFxcdURDM0ZcXHVEQzkyLVxcdURDQTdcXHVEQ0FBLVxcdURDQjBcXHVEQ0IyXFx1RENCM1xcdURDQjVcXHVEQ0I2XFx1REQzMS1cXHVERDM2XFx1REQzQVxcdUREM0NcXHVERDNEXFx1REQzRi1cXHVERDQ1XFx1REQ0N1xcdUREOTBcXHVERDkxXFx1REQ5NVxcdUREOTdcXHVERUYzXFx1REVGNF18XFx1RDgxQVtcXHVERUYwLVxcdURFRjRcXHVERjMwLVxcdURGMzZdfFxcdUQ4MUJbXFx1REY0RlxcdURGOEYtXFx1REY5MlxcdURGRTRdfFxcdUQ4MkZbXFx1REM5RFxcdURDOUVdfFxcdUQ4MzRbXFx1REQ2Ny1cXHVERDY5XFx1REQ3Qi1cXHVERDgyXFx1REQ4NS1cXHVERDhCXFx1RERBQS1cXHVEREFEXFx1REU0Mi1cXHVERTQ0XXxcXHVEODM2W1xcdURFMDAtXFx1REUzNlxcdURFM0ItXFx1REU2Q1xcdURFNzVcXHVERTg0XFx1REU5Qi1cXHVERTlGXFx1REVBMS1cXHVERUFGXXxcXHVEODM4W1xcdURDMDAtXFx1REMwNlxcdURDMDgtXFx1REMxOFxcdURDMUItXFx1REMyMVxcdURDMjNcXHVEQzI0XFx1REMyNi1cXHVEQzJBXFx1REQzMC1cXHVERDM2XFx1REVFQy1cXHVERUVGXXxcXHVEODNBW1xcdURDRDAtXFx1RENENlxcdURENDQtXFx1REQ0QV18XFx1REI0MFtcXHVERDAwLVxcdURERUZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdOJyxcbiAgICAgICAgJ2FsaWFzJzogJ051bWJlcicsXG4gICAgICAgICdibXAnOiAnMC05XFx4QjJcXHhCM1xceEI5XFx4QkMtXFx4QkVcXHUwNjYwLVxcdTA2NjlcXHUwNkYwLVxcdTA2RjlcXHUwN0MwLVxcdTA3QzlcXHUwOTY2LVxcdTA5NkZcXHUwOUU2LVxcdTA5RUZcXHUwOUY0LVxcdTA5RjlcXHUwQTY2LVxcdTBBNkZcXHUwQUU2LVxcdTBBRUZcXHUwQjY2LVxcdTBCNkZcXHUwQjcyLVxcdTBCNzdcXHUwQkU2LVxcdTBCRjJcXHUwQzY2LVxcdTBDNkZcXHUwQzc4LVxcdTBDN0VcXHUwQ0U2LVxcdTBDRUZcXHUwRDU4LVxcdTBENUVcXHUwRDY2LVxcdTBENzhcXHUwREU2LVxcdTBERUZcXHUwRTUwLVxcdTBFNTlcXHUwRUQwLVxcdTBFRDlcXHUwRjIwLVxcdTBGMzNcXHUxMDQwLVxcdTEwNDlcXHUxMDkwLVxcdTEwOTlcXHUxMzY5LVxcdTEzN0NcXHUxNkVFLVxcdTE2RjBcXHUxN0UwLVxcdTE3RTlcXHUxN0YwLVxcdTE3RjlcXHUxODEwLVxcdTE4MTlcXHUxOTQ2LVxcdTE5NEZcXHUxOUQwLVxcdTE5REFcXHUxQTgwLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQjUwLVxcdTFCNTlcXHUxQkIwLVxcdTFCQjlcXHUxQzQwLVxcdTFDNDlcXHUxQzUwLVxcdTFDNTlcXHUyMDcwXFx1MjA3NC1cXHUyMDc5XFx1MjA4MC1cXHUyMDg5XFx1MjE1MC1cXHUyMTgyXFx1MjE4NS1cXHUyMTg5XFx1MjQ2MC1cXHUyNDlCXFx1MjRFQS1cXHUyNEZGXFx1Mjc3Ni1cXHUyNzkzXFx1MkNGRFxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDM4LVxcdTMwM0FcXHUzMTkyLVxcdTMxOTVcXHUzMjIwLVxcdTMyMjlcXHUzMjQ4LVxcdTMyNEZcXHUzMjUxLVxcdTMyNUZcXHUzMjgwLVxcdTMyODlcXHUzMkIxLVxcdTMyQkZcXHVBNjIwLVxcdUE2MjlcXHVBNkU2LVxcdUE2RUZcXHVBODMwLVxcdUE4MzVcXHVBOEQwLVxcdUE4RDlcXHVBOTAwLVxcdUE5MDlcXHVBOUQwLVxcdUE5RDlcXHVBOUYwLVxcdUE5RjlcXHVBQTUwLVxcdUFBNTlcXHVBQkYwLVxcdUFCRjlcXHVGRjEwLVxcdUZGMTknLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQwNy1cXHVERDMzXFx1REQ0MC1cXHVERDc4XFx1REQ4QVxcdUREOEJcXHVERUUxLVxcdURFRkJcXHVERjIwLVxcdURGMjNcXHVERjQxXFx1REY0QVxcdURGRDEtXFx1REZENV18XFx1RDgwMVtcXHVEQ0EwLVxcdURDQTldfFxcdUQ4MDJbXFx1REM1OC1cXHVEQzVGXFx1REM3OS1cXHVEQzdGXFx1RENBNy1cXHVEQ0FGXFx1RENGQi1cXHVEQ0ZGXFx1REQxNi1cXHVERDFCXFx1RERCQ1xcdUREQkRcXHVEREMwLVxcdUREQ0ZcXHVEREQyLVxcdURERkZcXHVERTQwLVxcdURFNDhcXHVERTdEXFx1REU3RVxcdURFOUQtXFx1REU5RlxcdURFRUItXFx1REVFRlxcdURGNTgtXFx1REY1RlxcdURGNzgtXFx1REY3RlxcdURGQTktXFx1REZBRl18XFx1RDgwM1tcXHVEQ0ZBLVxcdURDRkZcXHVERDMwLVxcdUREMzlcXHVERTYwLVxcdURFN0VcXHVERjFELVxcdURGMjZcXHVERjUxLVxcdURGNTRcXHVERkM1LVxcdURGQ0JdfFxcdUQ4MDRbXFx1REM1Mi1cXHVEQzZGXFx1RENGMC1cXHVEQ0Y5XFx1REQzNi1cXHVERDNGXFx1REREMC1cXHVEREQ5XFx1RERFMS1cXHVEREY0XFx1REVGMC1cXHVERUY5XXxcXHVEODA1W1xcdURDNTAtXFx1REM1OVxcdURDRDAtXFx1RENEOVxcdURFNTAtXFx1REU1OVxcdURFQzAtXFx1REVDOVxcdURGMzAtXFx1REYzQl18XFx1RDgwNltcXHVEQ0UwLVxcdURDRjJcXHVERDUwLVxcdURENTldfFxcdUQ4MDdbXFx1REM1MC1cXHVEQzZDXFx1REQ1MC1cXHVERDU5XFx1RERBMC1cXHVEREE5XFx1REZDMC1cXHVERkQ0XXxcXHVEODA5W1xcdURDMDAtXFx1REM2RV18XFx1RDgxQVtcXHVERTYwLVxcdURFNjlcXHVERjUwLVxcdURGNTlcXHVERjVCLVxcdURGNjFdfFxcdUQ4MUJbXFx1REU4MC1cXHVERTk2XXxcXHVEODM0W1xcdURFRTAtXFx1REVGM1xcdURGNjAtXFx1REY3OF18XFx1RDgzNVtcXHVERkNFLVxcdURGRkZdfFxcdUQ4MzhbXFx1REQ0MC1cXHVERDQ5XFx1REVGMC1cXHVERUY5XXxcXHVEODNBW1xcdURDQzctXFx1RENDRlxcdURENTAtXFx1REQ1OV18XFx1RDgzQltcXHVEQzcxLVxcdURDQUJcXHVEQ0FELVxcdURDQUZcXHVEQ0IxLVxcdURDQjRcXHVERDAxLVxcdUREMkRcXHVERDJGLVxcdUREM0RdfFxcdUQ4M0NbXFx1REQwMC1cXHVERDBDXXxcXHVEODNFW1xcdURGRjAtXFx1REZGOV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ05kJyxcbiAgICAgICAgJ2FsaWFzJzogJ0RlY2ltYWxfTnVtYmVyJyxcbiAgICAgICAgJ2JtcCc6ICcwLTlcXHUwNjYwLVxcdTA2NjlcXHUwNkYwLVxcdTA2RjlcXHUwN0MwLVxcdTA3QzlcXHUwOTY2LVxcdTA5NkZcXHUwOUU2LVxcdTA5RUZcXHUwQTY2LVxcdTBBNkZcXHUwQUU2LVxcdTBBRUZcXHUwQjY2LVxcdTBCNkZcXHUwQkU2LVxcdTBCRUZcXHUwQzY2LVxcdTBDNkZcXHUwQ0U2LVxcdTBDRUZcXHUwRDY2LVxcdTBENkZcXHUwREU2LVxcdTBERUZcXHUwRTUwLVxcdTBFNTlcXHUwRUQwLVxcdTBFRDlcXHUwRjIwLVxcdTBGMjlcXHUxMDQwLVxcdTEwNDlcXHUxMDkwLVxcdTEwOTlcXHUxN0UwLVxcdTE3RTlcXHUxODEwLVxcdTE4MTlcXHUxOTQ2LVxcdTE5NEZcXHUxOUQwLVxcdTE5RDlcXHUxQTgwLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQjUwLVxcdTFCNTlcXHUxQkIwLVxcdTFCQjlcXHUxQzQwLVxcdTFDNDlcXHUxQzUwLVxcdTFDNTlcXHVBNjIwLVxcdUE2MjlcXHVBOEQwLVxcdUE4RDlcXHVBOTAwLVxcdUE5MDlcXHVBOUQwLVxcdUE5RDlcXHVBOUYwLVxcdUE5RjlcXHVBQTUwLVxcdUFBNTlcXHVBQkYwLVxcdUFCRjlcXHVGRjEwLVxcdUZGMTknLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDFbXFx1RENBMC1cXHVEQ0E5XXxcXHVEODAzW1xcdUREMzAtXFx1REQzOV18XFx1RDgwNFtcXHVEQzY2LVxcdURDNkZcXHVEQ0YwLVxcdURDRjlcXHVERDM2LVxcdUREM0ZcXHVEREQwLVxcdURERDlcXHVERUYwLVxcdURFRjldfFxcdUQ4MDVbXFx1REM1MC1cXHVEQzU5XFx1RENEMC1cXHVEQ0Q5XFx1REU1MC1cXHVERTU5XFx1REVDMC1cXHVERUM5XFx1REYzMC1cXHVERjM5XXxcXHVEODA2W1xcdURDRTAtXFx1RENFOVxcdURENTAtXFx1REQ1OV18XFx1RDgwN1tcXHVEQzUwLVxcdURDNTlcXHVERDUwLVxcdURENTlcXHVEREEwLVxcdUREQTldfFxcdUQ4MUFbXFx1REU2MC1cXHVERTY5XFx1REY1MC1cXHVERjU5XXxcXHVEODM1W1xcdURGQ0UtXFx1REZGRl18XFx1RDgzOFtcXHVERDQwLVxcdURENDlcXHVERUYwLVxcdURFRjldfFxcdUQ4M0FbXFx1REQ1MC1cXHVERDU5XXxcXHVEODNFW1xcdURGRjAtXFx1REZGOV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ05sJyxcbiAgICAgICAgJ2FsaWFzJzogJ0xldHRlcl9OdW1iZXInLFxuICAgICAgICAnYm1wJzogJ1xcdTE2RUUtXFx1MTZGMFxcdTIxNjAtXFx1MjE4MlxcdTIxODUtXFx1MjE4OFxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDM4LVxcdTMwM0FcXHVBNkU2LVxcdUE2RUYnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQ0MC1cXHVERDc0XFx1REY0MVxcdURGNEFcXHVERkQxLVxcdURGRDVdfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTm8nLFxuICAgICAgICAnYWxpYXMnOiAnT3RoZXJfTnVtYmVyJyxcbiAgICAgICAgJ2JtcCc6ICdcXHhCMlxceEIzXFx4QjlcXHhCQy1cXHhCRVxcdTA5RjQtXFx1MDlGOVxcdTBCNzItXFx1MEI3N1xcdTBCRjAtXFx1MEJGMlxcdTBDNzgtXFx1MEM3RVxcdTBENTgtXFx1MEQ1RVxcdTBENzAtXFx1MEQ3OFxcdTBGMkEtXFx1MEYzM1xcdTEzNjktXFx1MTM3Q1xcdTE3RjAtXFx1MTdGOVxcdTE5REFcXHUyMDcwXFx1MjA3NC1cXHUyMDc5XFx1MjA4MC1cXHUyMDg5XFx1MjE1MC1cXHUyMTVGXFx1MjE4OVxcdTI0NjAtXFx1MjQ5QlxcdTI0RUEtXFx1MjRGRlxcdTI3NzYtXFx1Mjc5M1xcdTJDRkRcXHUzMTkyLVxcdTMxOTVcXHUzMjIwLVxcdTMyMjlcXHUzMjQ4LVxcdTMyNEZcXHUzMjUxLVxcdTMyNUZcXHUzMjgwLVxcdTMyODlcXHUzMkIxLVxcdTMyQkZcXHVBODMwLVxcdUE4MzUnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQwNy1cXHVERDMzXFx1REQ3NS1cXHVERDc4XFx1REQ4QVxcdUREOEJcXHVERUUxLVxcdURFRkJcXHVERjIwLVxcdURGMjNdfFxcdUQ4MDJbXFx1REM1OC1cXHVEQzVGXFx1REM3OS1cXHVEQzdGXFx1RENBNy1cXHVEQ0FGXFx1RENGQi1cXHVEQ0ZGXFx1REQxNi1cXHVERDFCXFx1RERCQ1xcdUREQkRcXHVEREMwLVxcdUREQ0ZcXHVEREQyLVxcdURERkZcXHVERTQwLVxcdURFNDhcXHVERTdEXFx1REU3RVxcdURFOUQtXFx1REU5RlxcdURFRUItXFx1REVFRlxcdURGNTgtXFx1REY1RlxcdURGNzgtXFx1REY3RlxcdURGQTktXFx1REZBRl18XFx1RDgwM1tcXHVEQ0ZBLVxcdURDRkZcXHVERTYwLVxcdURFN0VcXHVERjFELVxcdURGMjZcXHVERjUxLVxcdURGNTRcXHVERkM1LVxcdURGQ0JdfFxcdUQ4MDRbXFx1REM1Mi1cXHVEQzY1XFx1RERFMS1cXHVEREY0XXxcXHVEODA1W1xcdURGM0FcXHVERjNCXXxcXHVEODA2W1xcdURDRUEtXFx1RENGMl18XFx1RDgwN1tcXHVEQzVBLVxcdURDNkNcXHVERkMwLVxcdURGRDRdfFxcdUQ4MUFbXFx1REY1Qi1cXHVERjYxXXxcXHVEODFCW1xcdURFODAtXFx1REU5Nl18XFx1RDgzNFtcXHVERUUwLVxcdURFRjNcXHVERjYwLVxcdURGNzhdfFxcdUQ4M0FbXFx1RENDNy1cXHVEQ0NGXXxcXHVEODNCW1xcdURDNzEtXFx1RENBQlxcdURDQUQtXFx1RENBRlxcdURDQjEtXFx1RENCNFxcdUREMDEtXFx1REQyRFxcdUREMkYtXFx1REQzRF18XFx1RDgzQ1tcXHVERDAwLVxcdUREMENdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdQJyxcbiAgICAgICAgJ2FsaWFzJzogJ1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICchLSMlLVxcXFwqLC1cXFxcLzo7XFxcXD9AXFxcXFstXFxcXF1fXFxcXHtcXFxcfVxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTA5RkRcXHUwQTc2XFx1MEFGMFxcdTBDNzdcXHUwQzg0XFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjNBLVxcdTBGM0RcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTQwMFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNEZcXHUyRTUyXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODAzW1xcdURFQURcXHVERjU1LVxcdURGNTldfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOFxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQzRCLVxcdURDNEZcXHVEQzVBXFx1REM1QlxcdURDNURcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REU2MC1cXHVERTZDXFx1REYzQy1cXHVERjNFXXxcXHVEODA2W1xcdURDM0JcXHVERDQ0LVxcdURENDZcXHVEREUyXFx1REUzRi1cXHVERTQ2XFx1REU5QS1cXHVERTlDXFx1REU5RS1cXHVERUEyXXxcXHVEODA3W1xcdURDNDEtXFx1REM0NVxcdURDNzBcXHVEQzcxXFx1REVGN1xcdURFRjhcXHVERkZGXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODFCW1xcdURFOTctXFx1REU5QVxcdURGRTJdfFxcdUQ4MkZcXHVEQzlGfFxcdUQ4MzZbXFx1REU4Ny1cXHVERThCXXxcXHVEODNBW1xcdURENUVcXHVERDVGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUGMnLFxuICAgICAgICAnYWxpYXMnOiAnQ29ubmVjdG9yX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdfXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1RkUzM1xcdUZFMzRcXHVGRTRELVxcdUZFNEZcXHVGRjNGJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdQZCcsXG4gICAgICAgICdhbGlhcyc6ICdEYXNoX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcLVxcdTA1OEFcXHUwNUJFXFx1MTQwMFxcdTE4MDZcXHUyMDEwLVxcdTIwMTVcXHUyRTE3XFx1MkUxQVxcdTJFM0FcXHUyRTNCXFx1MkU0MFxcdTMwMUNcXHUzMDMwXFx1MzBBMFxcdUZFMzFcXHVGRTMyXFx1RkU1OFxcdUZFNjNcXHVGRjBEJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAzXFx1REVBRCdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUGUnLFxuICAgICAgICAnYWxpYXMnOiAnQ2xvc2VfUHVuY3R1YXRpb24nLFxuICAgICAgICAnYm1wJzogJ1xcXFwpXFxcXF1cXFxcfVxcdTBGM0JcXHUwRjNEXFx1MTY5Q1xcdTIwNDZcXHUyMDdFXFx1MjA4RVxcdTIzMDlcXHUyMzBCXFx1MjMyQVxcdTI3NjlcXHUyNzZCXFx1Mjc2RFxcdTI3NkZcXHUyNzcxXFx1Mjc3M1xcdTI3NzVcXHUyN0M2XFx1MjdFN1xcdTI3RTlcXHUyN0VCXFx1MjdFRFxcdTI3RUZcXHUyOTg0XFx1Mjk4NlxcdTI5ODhcXHUyOThBXFx1Mjk4Q1xcdTI5OEVcXHUyOTkwXFx1Mjk5MlxcdTI5OTRcXHUyOTk2XFx1Mjk5OFxcdTI5RDlcXHUyOURCXFx1MjlGRFxcdTJFMjNcXHUyRTI1XFx1MkUyN1xcdTJFMjlcXHUzMDA5XFx1MzAwQlxcdTMwMERcXHUzMDBGXFx1MzAxMVxcdTMwMTVcXHUzMDE3XFx1MzAxOVxcdTMwMUJcXHUzMDFFXFx1MzAxRlxcdUZEM0VcXHVGRTE4XFx1RkUzNlxcdUZFMzhcXHVGRTNBXFx1RkUzQ1xcdUZFM0VcXHVGRTQwXFx1RkU0MlxcdUZFNDRcXHVGRTQ4XFx1RkU1QVxcdUZFNUNcXHVGRTVFXFx1RkYwOVxcdUZGM0RcXHVGRjVEXFx1RkY2MFxcdUZGNjMnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BmJyxcbiAgICAgICAgJ2FsaWFzJzogJ0ZpbmFsX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdcXHhCQlxcdTIwMTlcXHUyMDFEXFx1MjAzQVxcdTJFMDNcXHUyRTA1XFx1MkUwQVxcdTJFMERcXHUyRTFEXFx1MkUyMSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUGknLFxuICAgICAgICAnYWxpYXMnOiAnSW5pdGlhbF9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnXFx4QUJcXHUyMDE4XFx1MjAxQlxcdTIwMUNcXHUyMDFGXFx1MjAzOVxcdTJFMDJcXHUyRTA0XFx1MkUwOVxcdTJFMENcXHUyRTFDXFx1MkUyMCdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUG8nLFxuICAgICAgICAnYWxpYXMnOiAnT3RoZXJfUHVuY3R1YXRpb24nLFxuICAgICAgICAnYm1wJzogJyEtIyUtXFwnXFxcXCosXFxcXC5cXFxcLzo7XFxcXD9AXFxcXFxceEExXFx4QTdcXHhCNlxceEI3XFx4QkZcXHUwMzdFXFx1MDM4N1xcdTA1NUEtXFx1MDU1RlxcdTA1ODlcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTA5RkRcXHUwQTc2XFx1MEFGMFxcdTBDNzdcXHUwQzg0XFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTY2RVxcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODA1XFx1MTgwNy1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTZcXHUyMDE3XFx1MjAyMC1cXHUyMDI3XFx1MjAzMC1cXHUyMDM4XFx1MjAzQi1cXHUyMDNFXFx1MjA0MS1cXHUyMDQzXFx1MjA0Ny1cXHUyMDUxXFx1MjA1M1xcdTIwNTUtXFx1MjA1RVxcdTJDRjktXFx1MkNGQ1xcdTJDRkVcXHUyQ0ZGXFx1MkQ3MFxcdTJFMDBcXHUyRTAxXFx1MkUwNi1cXHUyRTA4XFx1MkUwQlxcdTJFMEUtXFx1MkUxNlxcdTJFMThcXHUyRTE5XFx1MkUxQlxcdTJFMUVcXHUyRTFGXFx1MkUyQS1cXHUyRTJFXFx1MkUzMC1cXHUyRTM5XFx1MkUzQy1cXHUyRTNGXFx1MkU0MVxcdTJFNDMtXFx1MkU0RlxcdTJFNTJcXHUzMDAxLVxcdTMwMDNcXHUzMDNEXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkUxMC1cXHVGRTE2XFx1RkUxOVxcdUZFMzBcXHVGRTQ1XFx1RkU0NlxcdUZFNDktXFx1RkU0Q1xcdUZFNTAtXFx1RkU1MlxcdUZFNTQtXFx1RkU1N1xcdUZFNUYtXFx1RkU2MVxcdUZFNjhcXHVGRTZBXFx1RkU2QlxcdUZGMDEtXFx1RkYwM1xcdUZGMDUtXFx1RkYwN1xcdUZGMEFcXHVGRjBDXFx1RkYwRVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQ1xcdUZGNjFcXHVGRjY0XFx1RkY2NScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODAzW1xcdURGNTUtXFx1REY1OV18XFx1RDgwNFtcXHVEQzQ3LVxcdURDNERcXHVEQ0JCXFx1RENCQ1xcdURDQkUtXFx1RENDMVxcdURENDAtXFx1REQ0M1xcdURENzRcXHVERDc1XFx1RERDNS1cXHVEREM4XFx1RERDRFxcdUREREJcXHVERERELVxcdUREREZcXHVERTM4LVxcdURFM0RcXHVERUE5XXxcXHVEODA1W1xcdURDNEItXFx1REM0RlxcdURDNUFcXHVEQzVCXFx1REM1RFxcdURDQzZcXHVEREMxLVxcdURERDdcXHVERTQxLVxcdURFNDNcXHVERTYwLVxcdURFNkNcXHVERjNDLVxcdURGM0VdfFxcdUQ4MDZbXFx1REMzQlxcdURENDQtXFx1REQ0NlxcdURERTJcXHVERTNGLVxcdURFNDZcXHVERTlBLVxcdURFOUNcXHVERTlFLVxcdURFQTJdfFxcdUQ4MDdbXFx1REM0MS1cXHVEQzQ1XFx1REM3MFxcdURDNzFcXHVERUY3XFx1REVGOFxcdURGRkZdfFxcdUQ4MDlbXFx1REM3MC1cXHVEQzc0XXxcXHVEODFBW1xcdURFNkVcXHVERTZGXFx1REVGNVxcdURGMzctXFx1REYzQlxcdURGNDRdfFxcdUQ4MUJbXFx1REU5Ny1cXHVERTlBXFx1REZFMl18XFx1RDgyRlxcdURDOUZ8XFx1RDgzNltcXHVERTg3LVxcdURFOEJdfFxcdUQ4M0FbXFx1REQ1RVxcdURENUZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdQcycsXG4gICAgICAgICdhbGlhcyc6ICdPcGVuX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcKFxcXFxbXFxcXHtcXHUwRjNBXFx1MEYzQ1xcdTE2OUJcXHUyMDFBXFx1MjAxRVxcdTIwNDVcXHUyMDdEXFx1MjA4RFxcdTIzMDhcXHUyMzBBXFx1MjMyOVxcdTI3NjhcXHUyNzZBXFx1Mjc2Q1xcdTI3NkVcXHUyNzcwXFx1Mjc3MlxcdTI3NzRcXHUyN0M1XFx1MjdFNlxcdTI3RThcXHUyN0VBXFx1MjdFQ1xcdTI3RUVcXHUyOTgzXFx1Mjk4NVxcdTI5ODdcXHUyOTg5XFx1Mjk4QlxcdTI5OERcXHUyOThGXFx1Mjk5MVxcdTI5OTNcXHUyOTk1XFx1Mjk5N1xcdTI5RDhcXHUyOURBXFx1MjlGQ1xcdTJFMjJcXHUyRTI0XFx1MkUyNlxcdTJFMjhcXHUyRTQyXFx1MzAwOFxcdTMwMEFcXHUzMDBDXFx1MzAwRVxcdTMwMTBcXHUzMDE0XFx1MzAxNlxcdTMwMThcXHUzMDFBXFx1MzAxRFxcdUZEM0ZcXHVGRTE3XFx1RkUzNVxcdUZFMzdcXHVGRTM5XFx1RkUzQlxcdUZFM0RcXHVGRTNGXFx1RkU0MVxcdUZFNDNcXHVGRTQ3XFx1RkU1OVxcdUZFNUJcXHVGRTVEXFx1RkYwOFxcdUZGM0JcXHVGRjVCXFx1RkY1RlxcdUZGNjInXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1MnLFxuICAgICAgICAnYWxpYXMnOiAnU3ltYm9sJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcJFxcXFwrPC0+XFxcXF5gXFxcXHx+XFx4QTItXFx4QTZcXHhBOFxceEE5XFx4QUNcXHhBRS1cXHhCMVxceEI0XFx4QjhcXHhEN1xceEY3XFx1MDJDMi1cXHUwMkM1XFx1MDJEMi1cXHUwMkRGXFx1MDJFNS1cXHUwMkVCXFx1MDJFRFxcdTAyRUYtXFx1MDJGRlxcdTAzNzVcXHUwMzg0XFx1MDM4NVxcdTAzRjZcXHUwNDgyXFx1MDU4RC1cXHUwNThGXFx1MDYwNi1cXHUwNjA4XFx1MDYwQlxcdTA2MEVcXHUwNjBGXFx1MDZERVxcdTA2RTlcXHUwNkZEXFx1MDZGRVxcdTA3RjZcXHUwN0ZFXFx1MDdGRlxcdTA5RjJcXHUwOUYzXFx1MDlGQVxcdTA5RkJcXHUwQUYxXFx1MEI3MFxcdTBCRjMtXFx1MEJGQVxcdTBDN0ZcXHUwRDRGXFx1MEQ3OVxcdTBFM0ZcXHUwRjAxLVxcdTBGMDNcXHUwRjEzXFx1MEYxNS1cXHUwRjE3XFx1MEYxQS1cXHUwRjFGXFx1MEYzNFxcdTBGMzZcXHUwRjM4XFx1MEZCRS1cXHUwRkM1XFx1MEZDNy1cXHUwRkNDXFx1MEZDRVxcdTBGQ0ZcXHUwRkQ1LVxcdTBGRDhcXHUxMDlFXFx1MTA5RlxcdTEzOTAtXFx1MTM5OVxcdTE2NkRcXHUxN0RCXFx1MTk0MFxcdTE5REUtXFx1MTlGRlxcdTFCNjEtXFx1MUI2QVxcdTFCNzQtXFx1MUI3Q1xcdTFGQkRcXHUxRkJGLVxcdTFGQzFcXHUxRkNELVxcdTFGQ0ZcXHUxRkRELVxcdTFGREZcXHUxRkVELVxcdTFGRUZcXHUxRkZEXFx1MUZGRVxcdTIwNDRcXHUyMDUyXFx1MjA3QS1cXHUyMDdDXFx1MjA4QS1cXHUyMDhDXFx1MjBBMC1cXHUyMEJGXFx1MjEwMFxcdTIxMDFcXHUyMTAzLVxcdTIxMDZcXHUyMTA4XFx1MjEwOVxcdTIxMTRcXHUyMTE2LVxcdTIxMThcXHUyMTFFLVxcdTIxMjNcXHUyMTI1XFx1MjEyN1xcdTIxMjlcXHUyMTJFXFx1MjEzQVxcdTIxM0JcXHUyMTQwLVxcdTIxNDRcXHUyMTRBLVxcdTIxNERcXHUyMTRGXFx1MjE4QVxcdTIxOEJcXHUyMTkwLVxcdTIzMDdcXHUyMzBDLVxcdTIzMjhcXHUyMzJCLVxcdTI0MjZcXHUyNDQwLVxcdTI0NEFcXHUyNDlDLVxcdTI0RTlcXHUyNTAwLVxcdTI3NjdcXHUyNzk0LVxcdTI3QzRcXHUyN0M3LVxcdTI3RTVcXHUyN0YwLVxcdTI5ODJcXHUyOTk5LVxcdTI5RDdcXHUyOURDLVxcdTI5RkJcXHUyOUZFLVxcdTJCNzNcXHUyQjc2LVxcdTJCOTVcXHUyQjk3LVxcdTJCRkZcXHUyQ0U1LVxcdTJDRUFcXHUyRTUwXFx1MkU1MVxcdTJFODAtXFx1MkU5OVxcdTJFOUItXFx1MkVGM1xcdTJGMDAtXFx1MkZENVxcdTJGRjAtXFx1MkZGQlxcdTMwMDRcXHUzMDEyXFx1MzAxM1xcdTMwMjBcXHUzMDM2XFx1MzAzN1xcdTMwM0VcXHUzMDNGXFx1MzA5QlxcdTMwOUNcXHUzMTkwXFx1MzE5MVxcdTMxOTYtXFx1MzE5RlxcdTMxQzAtXFx1MzFFM1xcdTMyMDAtXFx1MzIxRVxcdTMyMkEtXFx1MzI0N1xcdTMyNTBcXHUzMjYwLVxcdTMyN0ZcXHUzMjhBLVxcdTMyQjBcXHUzMkMwLVxcdTMzRkZcXHU0REMwLVxcdTRERkZcXHVBNDkwLVxcdUE0QzZcXHVBNzAwLVxcdUE3MTZcXHVBNzIwXFx1QTcyMVxcdUE3ODlcXHVBNzhBXFx1QTgyOC1cXHVBODJCXFx1QTgzNi1cXHVBODM5XFx1QUE3Ny1cXHVBQTc5XFx1QUI1QlxcdUFCNkFcXHVBQjZCXFx1RkIyOVxcdUZCQjItXFx1RkJDMVxcdUZERkNcXHVGREZEXFx1RkU2MlxcdUZFNjQtXFx1RkU2NlxcdUZFNjlcXHVGRjA0XFx1RkYwQlxcdUZGMUMtXFx1RkYxRVxcdUZGM0VcXHVGRjQwXFx1RkY1Q1xcdUZGNUVcXHVGRkUwLVxcdUZGRTZcXHVGRkU4LVxcdUZGRUVcXHVGRkZDXFx1RkZGRCcsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVERDM3LVxcdUREM0ZcXHVERDc5LVxcdUREODlcXHVERDhDLVxcdUREOEVcXHVERDkwLVxcdUREOUNcXHVEREEwXFx1REREMC1cXHVEREZDXXxcXHVEODAyW1xcdURDNzdcXHVEQzc4XFx1REVDOF18XFx1RDgwNVxcdURGM0Z8XFx1RDgwN1tcXHVERkQ1LVxcdURGRjFdfFxcdUQ4MUFbXFx1REYzQy1cXHVERjNGXFx1REY0NV18XFx1RDgyRlxcdURDOUN8XFx1RDgzNFtcXHVEQzAwLVxcdURDRjVcXHVERDAwLVxcdUREMjZcXHVERDI5LVxcdURENjRcXHVERDZBLVxcdURENkNcXHVERDgzXFx1REQ4NFxcdUREOEMtXFx1RERBOVxcdUREQUUtXFx1RERFOFxcdURFMDAtXFx1REU0MVxcdURFNDVcXHVERjAwLVxcdURGNTZdfFxcdUQ4MzVbXFx1REVDMVxcdURFREJcXHVERUZCXFx1REYxNVxcdURGMzVcXHVERjRGXFx1REY2RlxcdURGODlcXHVERkE5XFx1REZDM118XFx1RDgzNltcXHVEQzAwLVxcdURERkZcXHVERTM3LVxcdURFM0FcXHVERTZELVxcdURFNzRcXHVERTc2LVxcdURFODNcXHVERTg1XFx1REU4Nl18XFx1RDgzOFtcXHVERDRGXFx1REVGRl18XFx1RDgzQltcXHVEQ0FDXFx1RENCMFxcdUREMkVcXHVERUYwXFx1REVGMV18XFx1RDgzQ1tcXHVEQzAwLVxcdURDMkJcXHVEQzMwLVxcdURDOTNcXHVEQ0EwLVxcdURDQUVcXHVEQ0IxLVxcdURDQkZcXHVEQ0MxLVxcdURDQ0ZcXHVEQ0QxLVxcdURDRjVcXHVERDBELVxcdUREQURcXHVEREU2LVxcdURFMDJcXHVERTEwLVxcdURFM0JcXHVERTQwLVxcdURFNDhcXHVERTUwXFx1REU1MVxcdURFNjAtXFx1REU2NVxcdURGMDAtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURFRDdcXHVERUUwLVxcdURFRUNcXHVERUYwLVxcdURFRkNcXHVERjAwLVxcdURGNzNcXHVERjgwLVxcdURGRDhcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REMwMC1cXHVEQzBCXFx1REMxMC1cXHVEQzQ3XFx1REM1MC1cXHVEQzU5XFx1REM2MC1cXHVEQzg3XFx1REM5MC1cXHVEQ0FEXFx1RENCMFxcdURDQjFcXHVERDAwLVxcdURENzhcXHVERDdBLVxcdUREQ0JcXHVERENELVxcdURFNTNcXHVERTYwLVxcdURFNkRcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZcXHVERjAwLVxcdURGOTJcXHVERjk0LVxcdURGQ0FdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTYycsXG4gICAgICAgICdhbGlhcyc6ICdDdXJyZW5jeV9TeW1ib2wnLFxuICAgICAgICAnYm1wJzogJ1xcXFwkXFx4QTItXFx4QTVcXHUwNThGXFx1MDYwQlxcdTA3RkVcXHUwN0ZGXFx1MDlGMlxcdTA5RjNcXHUwOUZCXFx1MEFGMVxcdTBCRjlcXHUwRTNGXFx1MTdEQlxcdTIwQTAtXFx1MjBCRlxcdUE4MzhcXHVGREZDXFx1RkU2OVxcdUZGMDRcXHVGRkUwXFx1RkZFMVxcdUZGRTVcXHVGRkU2JyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODA3W1xcdURGREQtXFx1REZFMF18XFx1RDgzOFxcdURFRkZ8XFx1RDgzQlxcdURDQjAnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1NrJyxcbiAgICAgICAgJ2FsaWFzJzogJ01vZGlmaWVyX1N5bWJvbCcsXG4gICAgICAgICdibXAnOiAnXFxcXF5gXFx4QThcXHhBRlxceEI0XFx4QjhcXHUwMkMyLVxcdTAyQzVcXHUwMkQyLVxcdTAyREZcXHUwMkU1LVxcdTAyRUJcXHUwMkVEXFx1MDJFRi1cXHUwMkZGXFx1MDM3NVxcdTAzODRcXHUwMzg1XFx1MUZCRFxcdTFGQkYtXFx1MUZDMVxcdTFGQ0QtXFx1MUZDRlxcdTFGREQtXFx1MUZERlxcdTFGRUQtXFx1MUZFRlxcdTFGRkRcXHUxRkZFXFx1MzA5QlxcdTMwOUNcXHVBNzAwLVxcdUE3MTZcXHVBNzIwXFx1QTcyMVxcdUE3ODlcXHVBNzhBXFx1QUI1QlxcdUFCNkFcXHVBQjZCXFx1RkJCMi1cXHVGQkMxXFx1RkYzRVxcdUZGNDBcXHVGRkUzJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODNDW1xcdURGRkItXFx1REZGRl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1NtJyxcbiAgICAgICAgJ2FsaWFzJzogJ01hdGhfU3ltYm9sJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcKzwtPlxcXFx8flxceEFDXFx4QjFcXHhEN1xceEY3XFx1MDNGNlxcdTA2MDYtXFx1MDYwOFxcdTIwNDRcXHUyMDUyXFx1MjA3QS1cXHUyMDdDXFx1MjA4QS1cXHUyMDhDXFx1MjExOFxcdTIxNDAtXFx1MjE0NFxcdTIxNEJcXHUyMTkwLVxcdTIxOTRcXHUyMTlBXFx1MjE5QlxcdTIxQTBcXHUyMUEzXFx1MjFBNlxcdTIxQUVcXHUyMUNFXFx1MjFDRlxcdTIxRDJcXHUyMUQ0XFx1MjFGNC1cXHUyMkZGXFx1MjMyMFxcdTIzMjFcXHUyMzdDXFx1MjM5Qi1cXHUyM0IzXFx1MjNEQy1cXHUyM0UxXFx1MjVCN1xcdTI1QzFcXHUyNUY4LVxcdTI1RkZcXHUyNjZGXFx1MjdDMC1cXHUyN0M0XFx1MjdDNy1cXHUyN0U1XFx1MjdGMC1cXHUyN0ZGXFx1MjkwMC1cXHUyOTgyXFx1Mjk5OS1cXHUyOUQ3XFx1MjlEQy1cXHUyOUZCXFx1MjlGRS1cXHUyQUZGXFx1MkIzMC1cXHUyQjQ0XFx1MkI0Ny1cXHUyQjRDXFx1RkIyOVxcdUZFNjJcXHVGRTY0LVxcdUZFNjZcXHVGRjBCXFx1RkYxQy1cXHVGRjFFXFx1RkY1Q1xcdUZGNUVcXHVGRkUyXFx1RkZFOS1cXHVGRkVDJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODM1W1xcdURFQzFcXHVERURCXFx1REVGQlxcdURGMTVcXHVERjM1XFx1REY0RlxcdURGNkZcXHVERjg5XFx1REZBOVxcdURGQzNdfFxcdUQ4M0JbXFx1REVGMFxcdURFRjFdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTbycsXG4gICAgICAgICdhbGlhcyc6ICdPdGhlcl9TeW1ib2wnLFxuICAgICAgICAnYm1wJzogJ1xceEE2XFx4QTlcXHhBRVxceEIwXFx1MDQ4MlxcdTA1OERcXHUwNThFXFx1MDYwRVxcdTA2MEZcXHUwNkRFXFx1MDZFOVxcdTA2RkRcXHUwNkZFXFx1MDdGNlxcdTA5RkFcXHUwQjcwXFx1MEJGMy1cXHUwQkY4XFx1MEJGQVxcdTBDN0ZcXHUwRDRGXFx1MEQ3OVxcdTBGMDEtXFx1MEYwM1xcdTBGMTNcXHUwRjE1LVxcdTBGMTdcXHUwRjFBLVxcdTBGMUZcXHUwRjM0XFx1MEYzNlxcdTBGMzhcXHUwRkJFLVxcdTBGQzVcXHUwRkM3LVxcdTBGQ0NcXHUwRkNFXFx1MEZDRlxcdTBGRDUtXFx1MEZEOFxcdTEwOUVcXHUxMDlGXFx1MTM5MC1cXHUxMzk5XFx1MTY2RFxcdTE5NDBcXHUxOURFLVxcdTE5RkZcXHUxQjYxLVxcdTFCNkFcXHUxQjc0LVxcdTFCN0NcXHUyMTAwXFx1MjEwMVxcdTIxMDMtXFx1MjEwNlxcdTIxMDhcXHUyMTA5XFx1MjExNFxcdTIxMTZcXHUyMTE3XFx1MjExRS1cXHUyMTIzXFx1MjEyNVxcdTIxMjdcXHUyMTI5XFx1MjEyRVxcdTIxM0FcXHUyMTNCXFx1MjE0QVxcdTIxNENcXHUyMTREXFx1MjE0RlxcdTIxOEFcXHUyMThCXFx1MjE5NS1cXHUyMTk5XFx1MjE5Qy1cXHUyMTlGXFx1MjFBMVxcdTIxQTJcXHUyMUE0XFx1MjFBNVxcdTIxQTctXFx1MjFBRFxcdTIxQUYtXFx1MjFDRFxcdTIxRDBcXHUyMUQxXFx1MjFEM1xcdTIxRDUtXFx1MjFGM1xcdTIzMDAtXFx1MjMwN1xcdTIzMEMtXFx1MjMxRlxcdTIzMjItXFx1MjMyOFxcdTIzMkItXFx1MjM3QlxcdTIzN0QtXFx1MjM5QVxcdTIzQjQtXFx1MjNEQlxcdTIzRTItXFx1MjQyNlxcdTI0NDAtXFx1MjQ0QVxcdTI0OUMtXFx1MjRFOVxcdTI1MDAtXFx1MjVCNlxcdTI1QjgtXFx1MjVDMFxcdTI1QzItXFx1MjVGN1xcdTI2MDAtXFx1MjY2RVxcdTI2NzAtXFx1Mjc2N1xcdTI3OTQtXFx1MjdCRlxcdTI4MDAtXFx1MjhGRlxcdTJCMDAtXFx1MkIyRlxcdTJCNDVcXHUyQjQ2XFx1MkI0RC1cXHUyQjczXFx1MkI3Ni1cXHUyQjk1XFx1MkI5Ny1cXHUyQkZGXFx1MkNFNS1cXHUyQ0VBXFx1MkU1MFxcdTJFNTFcXHUyRTgwLVxcdTJFOTlcXHUyRTlCLVxcdTJFRjNcXHUyRjAwLVxcdTJGRDVcXHUyRkYwLVxcdTJGRkJcXHUzMDA0XFx1MzAxMlxcdTMwMTNcXHUzMDIwXFx1MzAzNlxcdTMwMzdcXHUzMDNFXFx1MzAzRlxcdTMxOTBcXHUzMTkxXFx1MzE5Ni1cXHUzMTlGXFx1MzFDMC1cXHUzMUUzXFx1MzIwMC1cXHUzMjFFXFx1MzIyQS1cXHUzMjQ3XFx1MzI1MFxcdTMyNjAtXFx1MzI3RlxcdTMyOEEtXFx1MzJCMFxcdTMyQzAtXFx1MzNGRlxcdTREQzAtXFx1NERGRlxcdUE0OTAtXFx1QTRDNlxcdUE4MjgtXFx1QTgyQlxcdUE4MzZcXHVBODM3XFx1QTgzOVxcdUFBNzctXFx1QUE3OVxcdUZERkRcXHVGRkU0XFx1RkZFOFxcdUZGRURcXHVGRkVFXFx1RkZGQ1xcdUZGRkQnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQzNy1cXHVERDNGXFx1REQ3OS1cXHVERDg5XFx1REQ4Qy1cXHVERDhFXFx1REQ5MC1cXHVERDlDXFx1RERBMFxcdURERDAtXFx1RERGQ118XFx1RDgwMltcXHVEQzc3XFx1REM3OFxcdURFQzhdfFxcdUQ4MDVcXHVERjNGfFxcdUQ4MDdbXFx1REZENS1cXHVERkRDXFx1REZFMS1cXHVERkYxXXxcXHVEODFBW1xcdURGM0MtXFx1REYzRlxcdURGNDVdfFxcdUQ4MkZcXHVEQzlDfFxcdUQ4MzRbXFx1REMwMC1cXHVEQ0Y1XFx1REQwMC1cXHVERDI2XFx1REQyOS1cXHVERDY0XFx1REQ2QS1cXHVERDZDXFx1REQ4M1xcdUREODRcXHVERDhDLVxcdUREQTlcXHVEREFFLVxcdURERThcXHVERTAwLVxcdURFNDFcXHVERTQ1XFx1REYwMC1cXHVERjU2XXxcXHVEODM2W1xcdURDMDAtXFx1RERGRlxcdURFMzctXFx1REUzQVxcdURFNkQtXFx1REU3NFxcdURFNzYtXFx1REU4M1xcdURFODVcXHVERTg2XXxcXHVEODM4XFx1REQ0RnxcXHVEODNCW1xcdURDQUNcXHVERDJFXXxcXHVEODNDW1xcdURDMDAtXFx1REMyQlxcdURDMzAtXFx1REM5M1xcdURDQTAtXFx1RENBRVxcdURDQjEtXFx1RENCRlxcdURDQzEtXFx1RENDRlxcdURDRDEtXFx1RENGNVxcdUREMEQtXFx1RERBRFxcdURERTYtXFx1REUwMlxcdURFMTAtXFx1REUzQlxcdURFNDAtXFx1REU0OFxcdURFNTBcXHVERTUxXFx1REU2MC1cXHVERTY1XFx1REYwMC1cXHVERkZBXXxcXHVEODNEW1xcdURDMDAtXFx1REVEN1xcdURFRTAtXFx1REVFQ1xcdURFRjAtXFx1REVGQ1xcdURGMDAtXFx1REY3M1xcdURGODAtXFx1REZEOFxcdURGRTAtXFx1REZFQl18XFx1RDgzRVtcXHVEQzAwLVxcdURDMEJcXHVEQzEwLVxcdURDNDdcXHVEQzUwLVxcdURDNTlcXHVEQzYwLVxcdURDODdcXHVEQzkwLVxcdURDQURcXHVEQ0IwXFx1RENCMVxcdUREMDAtXFx1REQ3OFxcdUREN0EtXFx1RERDQlxcdUREQ0QtXFx1REU1M1xcdURFNjAtXFx1REU2RFxcdURFNzAtXFx1REU3NFxcdURFNzgtXFx1REU3QVxcdURFODAtXFx1REU4NlxcdURFOTAtXFx1REVBOFxcdURFQjAtXFx1REVCNlxcdURFQzAtXFx1REVDMlxcdURFRDAtXFx1REVENlxcdURGMDAtXFx1REY5MlxcdURGOTQtXFx1REZDQV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1onLFxuICAgICAgICAnYWxpYXMnOiAnU2VwYXJhdG9yJyxcbiAgICAgICAgJ2JtcCc6ICcgXFx4QTBcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyOFxcdTIwMjlcXHUyMDJGXFx1MjA1RlxcdTMwMDAnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1psJyxcbiAgICAgICAgJ2FsaWFzJzogJ0xpbmVfU2VwYXJhdG9yJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUyMDI4J1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdacCcsXG4gICAgICAgICdhbGlhcyc6ICdQYXJhZ3JhcGhfU2VwYXJhdG9yJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUyMDI5J1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdacycsXG4gICAgICAgICdhbGlhcyc6ICdTcGFjZV9TZXBhcmF0b3InLFxuICAgICAgICAnYm1wJzogJyBcXHhBMFxcdTE2ODBcXHUyMDAwLVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDAnXG4gICAgfVxuXTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZSA9IHZvaWQgMDtcbmZ1bmN0aW9uIGRlY29kZShzLCBzZXAgPSAnOycpIHtcbiAgICBzID0gcy5yZXBsYWNlKC9cXG4vZywgJycpO1xuICAgIGxldCBwb3MgPSAwO1xuICAgIGNvbnN0IHJlY29yZHMgPSBbJyddO1xuICAgIHdoaWxlIChwb3MgPCBzLmxlbmd0aCkge1xuICAgICAgICBzd2l0Y2ggKHNbcG9zXSkge1xuICAgICAgICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICAgICAgcmVjb3Jkc1swXSArPSBzW3Bvc107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHNlcDpcbiAgICAgICAgICAgICAgICByZWNvcmRzLnVuc2hpZnQoJycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZWNvcmRzWzBdICs9IHNbcG9zXTtcbiAgICAgICAgfVxuICAgICAgICBwb3MrKztcbiAgICB9XG4gICAgcmV0dXJuIHJlY29yZHMucmV2ZXJzZSgpLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkKTtcbn1cbmNvbnN0IHByZWZpeGVzID0ge1xuICAgIGZpbGVEaXJlY3Rvcnk6ICdqYWJyZWYtbWV0YTogZmlsZURpcmVjdG9yeTonLFxuICAgIGdyb3Vwc3ZlcnNpb246ICdqYWJyZWYtbWV0YTogZ3JvdXBzdmVyc2lvbjonLFxuICAgIGdyb3Vwc3RyZWU6ICdqYWJyZWYtbWV0YTogZ3JvdXBzdHJlZTonLFxuICAgIGdyb3VwaW5nOiAnamFicmVmLW1ldGE6IGdyb3VwaW5nOicsXG59O1xuLyoqXG4gKiBJbXBvcnQgdGhlIEphYlJlZiBncm91cHMgZnJvbSB0aGUgYEBzdHJpbmdgIGNvbW1lbnRzIGluIHdoaWNoIHRoZXkgd2VyZSBzdG9yZWQuIFlvdSB3b3VsZCB0eXBpY2FsbHkgcGFzcyB0aGUgY29tbWVudHMgcGFyc2VkIGJ5IFtbYmlidGV4LnBhcnNlXV0gaW4gaGVyZS5cbiAqXG4gKiBKYWJSZWYga25vd3Mgc2V2ZXJhbCBncm91cCB0eXBlcywgYW5kIHRoaXMgcGFyc2VyIHBhcnNlcyBtb3N0LCBidXQgbm90IGFsbCBvZiB0aGVtOlxuICpcbiAqICogaW5kZXBlbmRlbnQgZ3JvdXA6IHRoZSBrZXlzIGxpc3RlZCBpbiB0aGUgZ3JvdXAgYXJlIHRoZSBlbnRyaWVzIHRoYXQgYXJlIGNvbnNpZGVyZWQgdG8gYmVsb25nIHRvIGl0XG4gKiAqIGludGVyc2VjdGlvbjogdGhlIGtleXMgbGlzdGVkIGluIHRoZSBncm91cCBhcmUgY29uc2lkZXJlZCB0byBiZWxvbmcgdG8gdGhlIGdyb3VwIGlmIHRoZXkncmUgYWxzbyBpbiB0aGUgcGFyZW50IGdyb3VwXG4gKiAqIHVuaW9uOiB0aGUga2V5cyBsaXN0ZWQgaW4gdGhlIGdyb3VwIGFyZSBjb25zaWRlcmVkIHRvIGJlbG9uZyB0byB0aGUgZ3JvdXAsIGFuZCBhbHNvIHRoZSBrZXlzIHRoYXQgYXJlIGluIHRoZSBwYXJlbnQgZ3JvdXBcbiAqICogcXVlcnk6IG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwYXJzZXJcbiAqL1xuZnVuY3Rpb24gcGFyc2UoY29tbWVudHMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHJvb3Q6IFtdLFxuICAgICAgICBncm91cHM6IHt9LFxuICAgICAgICBmaWxlRGlyZWN0b3J5OiAnJyxcbiAgICAgICAgdmVyc2lvbjogJycsXG4gICAgfTtcbiAgICBjb25zdCBsZXZlbHMgPSBbXTtcbiAgICBjb25zdCBkZWNvZGVkID0ge1xuICAgICAgICBmaWxlRGlyZWN0b3J5OiBudWxsLFxuICAgICAgICBncm91cHN2ZXJzaW9uOiBudWxsLFxuICAgICAgICBncm91cHN0cmVlOiBudWxsLFxuICAgICAgICBncm91cGluZzogbnVsbCxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBjb21tZW50cykge1xuICAgICAgICBmb3IgKGNvbnN0IFttZXRhLCBwcmVmaXhdIG9mIE9iamVjdC5lbnRyaWVzKHByZWZpeGVzKSkge1xuICAgICAgICAgICAgaWYgKGNvbW1lbnQuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgICAgICAgICAgZGVjb2RlZFttZXRhXSA9IGRlY29kZShjb21tZW50LnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LnZlcnNpb24gPSBkZWNvZGVkLmdyb3Vwc3ZlcnNpb24gJiYgZGVjb2RlZC5ncm91cHN2ZXJzaW9uWzBdO1xuICAgIHJlc3VsdC5maWxlRGlyZWN0b3J5ID0gZGVjb2RlZC5maWxlRGlyZWN0b3J5ICYmIGRlY29kZWQuZmlsZURpcmVjdG9yeVswXTtcbiAgICBmb3IgKGNvbnN0IHRyZWUgb2YgWydncm91cHN0cmVlJywgJ2dyb3VwaW5nJ10pIHtcbiAgICAgICAgaWYgKCFkZWNvZGVkW3RyZWVdKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgZW5jb2RlZCBvZiBkZWNvZGVkW3RyZWVdKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZHMgPSBkZWNvZGUoZW5jb2RlZCk7XG4gICAgICAgICAgICBjb25zdCBsZXZlbF90eXBlX25hbWUgPSBkZWNvZGUoZmllbGRzLnNoaWZ0KCksICc6Jyk7XG4gICAgICAgICAgICBjb25zdCBtID0gL14oWzAtOV0rKSAoLispLy5leGVjKGxldmVsX3R5cGVfbmFtZVswXSk7XG4gICAgICAgICAgICBpZiAoIW0pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjb25zdCBsZXZlbCA9IHBhcnNlSW50KG1bMV0pO1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IG1bMl07IC8vIHRlc3QgZm9yIFN0YXRpY0dyb3VwP1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdBbGxFbnRyaWVzR3JvdXAnKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyByb290XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gbGV2ZWxfdHlwZV9uYW1lWzFdO1xuICAgICAgICAgICAgY29uc3QgaW50ZXJzZWN0aW9uID0gZGVjb2RlKGZpZWxkcy5zaGlmdCgpKVswXTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSB0cmVlID09PSAnZ3JvdXBpbmcnID8gW10gOiBmaWVsZHMubWFwKGZpZWxkID0+IGRlY29kZShmaWVsZClbMF0pO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBlbnRyaWVzOiBrZXlzLFxuICAgICAgICAgICAgICAgIGdyb3VwczogW10sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVzdWx0Lmdyb3Vwc1tuYW1lXSA9IHJlc3VsdC5ncm91cHNbbmFtZV0gfHwgZ3JvdXA7XG4gICAgICAgICAgICBpZiAobGV2ZWxzLmxlbmd0aCA8IGxldmVsKSB7XG4gICAgICAgICAgICAgICAgbGV2ZWxzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV2ZWxzW2xldmVsIC0gMV0gPSBncm91cDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZXZlbCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5yb290LnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gbGV2ZWxzW2xldmVsIC0gMl07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnMCc6IC8vIGluZGVwZW5kZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnMSc6IC8vIGludGVyc2VjdFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZW50cmllcyA9IGdyb3VwLmVudHJpZXMuZmlsdGVyKGtleSA9PiBwYXJlbnQuZW50cmllcy5pbmNsdWRlcyhrZXkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICcyJzogLy8gdW5pb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmVudHJpZXMgPSBncm91cC5lbnRyaWVzLmNvbmNhdChwYXJlbnQuZW50cmllcy5maWx0ZXIoa2V5ID0+ICFncm91cC5lbnRyaWVzLmluY2x1ZGVzKGtleSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXZlbHNbbGV2ZWwgLSAyXS5ncm91cHMucHVzaChncm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWphYnJlZi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuamFicmVmID0gZXhwb3J0cy5jaHVua2VyID0gZXhwb3J0cy5hc3QgPSBleHBvcnRzLnBhcnNlID0gdm9pZCAwO1xuY29uc3QgYmlidGV4ID0gcmVxdWlyZShcIi4vZ3JhbW1hclwiKTtcbmNvbnN0IGNodW5rZXJfMSA9IHJlcXVpcmUoXCIuL2NodW5rZXJcIik7XG5jb25zdCB1bmljb2RlMmxhdGV4XzEgPSByZXF1aXJlKFwidW5pY29kZTJsYXRleFwiKTtcbmNsYXNzIFBhcnNlckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIG5vZGUpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7IC8vICdFcnJvcicgYnJlYWtzIHByb3RvdHlwZSBjaGFpbiBoZXJlXG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBuZXcudGFyZ2V0LnByb3RvdHlwZSk7IC8vIHJlc3RvcmUgcHJvdG90eXBlIGNoYWluXG4gICAgICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB9XG59XG5jbGFzcyBUZVhFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBub2RlLCB0ZXh0KSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpOyAvLyAnRXJyb3InIGJyZWFrcyBwcm90b3R5cGUgY2hhaW4gaGVyZVxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOyAvLyByZXN0b3JlIHByb3RvdHlwZSBjaGFpblxuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgfVxufVxuY29uc3QgY2hhckNhdGVnb3JpZXMgPSByZXF1aXJlKFwieHJlZ2V4cC90b29scy9vdXRwdXQvY2F0ZWdvcmllc1wiKTtcbmNvbnN0IGNoYXJDbGFzcyA9IHtcbiAgICBMdTogY2hhckNhdGVnb3JpZXMuZmlsdGVyKGNhdCA9PiBbJ1VwcGVyY2FzZV9MZXR0ZXInLCAnVGl0bGVjYXNlX0xldHRlciddLmluY2x1ZGVzKGNhdC5hbGlhcykpLm1hcChjYXQgPT4gY2F0LmJtcCkuam9pbignJyksXG4gICAgTGw6IGNoYXJDYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5hbGlhcyA9PT0gJ0xvd2VyY2FzZV9MZXR0ZXInKS5ibXAsXG4gICAgTG5vdEx1OiBjaGFyQ2F0ZWdvcmllcy5maWx0ZXIoY2F0ID0+IFsnTG93ZXJjYXNlX0xldHRlcicsICdNb2RpZmllcl9MZXR0ZXInLCAnT3RoZXJfTGV0dGVyJywgJ05vbnNwYWNpbmdfTWFyaycsICdTcGFjaW5nX01hcmsnLCAnRGVjaW1hbF9OdW1iZXInLCAnTGV0dGVyX051bWJlciddLmluY2x1ZGVzKGNhdC5hbGlhcykpLm1hcChjYXQgPT4gY2F0LmJtcCkuam9pbignJyksXG4gICAgUDogY2hhckNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmFsaWFzID09PSAnUHVuY3R1YXRpb24nKS5ibXAsXG4gICAgTDogY2hhckNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmFsaWFzID09PSAnTGV0dGVyJykuYm1wLFxuICAgIE46IGNoYXJDYXRlZ29yaWVzLmZpbHRlcihjYXQgPT4gWydEZWNpbWFsX051bWJlcicsICdMZXR0ZXJfTnVtYmVyJ10uaW5jbHVkZXMoY2F0LmFsaWFzKSkubWFwKGNhdCA9PiBjYXQuYm1wKS5qb2luKCcnKSxcbiAgICBBbHBoYU51bTogY2hhckNhdGVnb3JpZXMuZmlsdGVyKGNhdCA9PiBbJ0xldHRlcicsICdEZWNpbWFsX051bWJlcicsICdMZXR0ZXJfTnVtYmVyJ10uaW5jbHVkZXMoY2F0LmFsaWFzKSkubWFwKGNhdCA9PiBjYXQuYm1wKS5qb2luKCcnKSxcbiAgICBMQzogY2hhckNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmFsaWFzID09PSAnQ2FzZWRfTGV0dGVyJykuYm1wLFxufTtcbmNvbnN0IG1hcmtlciA9IHtcbiAgICBhbmQ6ICdcXHUwMDAxJyxcbiAgICBjb21tYTogJ1xcdTAwMDInLFxuICAgIHNwYWNlOiAnXFx1MDAwMycsXG4gICAgbGl0ZXJhbDogJ1xcdTAwMDQnLFxuICAgIG1hcmt1cDogJ1xcdTAwMDUnLFxuICAgIHJlOiB7XG4gICAgICAgIGFuZDogLy4vLFxuICAgICAgICBjb21tYTogLy4vLFxuICAgICAgICBzcGFjZTogLy4vLFxuICAgICAgICBsaXRlcmFsOiAvLi8sXG4gICAgICAgIGxpdGVyYWxOYW1lOiAvLi8sXG4gICAgfSxcbiAgICBjbGVhbihzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UobWFya2VyLnJlLnNwYWNlLCAnICcpLnJlcGxhY2UobWFya2VyLnJlLmNvbW1hLCAnLCAnKS5yZXBsYWNlKG1hcmtlci5yZS5saXRlcmFsLCAnJyk7XG4gICAgfSxcbn07XG5tYXJrZXIucmUgPSB7XG4gICAgYW5kOiBuZXcgUmVnRXhwKG1hcmtlci5hbmQsICdnJyksXG4gICAgY29tbWE6IG5ldyBSZWdFeHAobWFya2VyLmNvbW1hLCAnZycpLFxuICAgIHNwYWNlOiBuZXcgUmVnRXhwKG1hcmtlci5zcGFjZSwgJ2cnKSxcbiAgICBsaXRlcmFsOiBuZXcgUmVnRXhwKG1hcmtlci5saXRlcmFsLCAnZycpLFxuICAgIGxpdGVyYWxOYW1lOiBuZXcgUmVnRXhwKGBeJHttYXJrZXIubGl0ZXJhbH0oW14ke21hcmtlci5saXRlcmFsfV0qKSR7bWFya2VyLmxpdGVyYWx9JGApLFxufTtcbmNvbnN0IHByZXNlcnZlQ2FzZSA9IHtcbiAgICBsZWFkaW5nQ2FwOiBuZXcgUmVnRXhwKGBeWyR7Y2hhckNsYXNzLkx1fV1bJHtjaGFyQ2xhc3MuTG5vdEx1fV0rWyR7Y2hhckNsYXNzLlB9XT8kYCksXG4gICAgYWxsQ2FwczogbmV3IFJlZ0V4cChgXlske2NoYXJDbGFzcy5MdX0ke2NoYXJDbGFzcy5OfV17Mix9JGApLFxuICAgIGFsbExvd2VyOiBuZXcgUmVnRXhwKGBeWyR7Y2hhckNsYXNzLkxsfSR7Y2hhckNsYXNzLk59XXsyLH0kYCksXG4gICAgam9pbmVkOiBuZXcgUmVnRXhwKGBeWyR7Y2hhckNsYXNzLkx1fV1bJHtjaGFyQ2xhc3MuTG5vdEx1fV0qKFstK11bJHtjaGFyQ2xhc3MuTH0ke2NoYXJDbGFzcy5OfV0rKSpbJHtjaGFyQ2xhc3MuUH1dKiRgKSxcbiAgICBoYXNVcHBlcjogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkx1fV1gKSxcbiAgICBoYXNMb3dlcjogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkxsfV1gKSxcbiAgICBpc051bWJlcjogL15bMC05XSskLyxcbiAgICBoYXNBbHBoYTogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkx9XWApLFxuICAgIGhhc0FscGhhTnVtOiBuZXcgUmVnRXhwKGBbJHtjaGFyQ2xhc3MuQWxwaGFOdW19XWApLFxuICAgIG5vdEFscGhhTnVtOiBuZXcgUmVnRXhwKGBbXiR7Y2hhckNsYXNzLkFscGhhTnVtfV1gLCAnZycpLFxuICAgIHNlbnRlbmNlU3RhcnQ6IG5ldyBSZWdFeHAoYChefChbXFx1MjAxNDo/IS5dXFxcXHMrKSlbJHtjaGFyQ2xhc3MuTHV9XWAsICdnJyksXG4gICAgbWFya3VwOiAvPFxcLz9zcGFuW14+XSo+L2csXG4gICAgYWNyb255bTogbmV3IFJlZ0V4cChgLipcXFxcLiR7bWFya2VyLm1hcmt1cH0qWyR7Y2hhckNsYXNzLkx1fV0ke21hcmtlci5tYXJrdXB9KlxcXFwuJGApLFxuICAgIG5vdENhc2VTZW5zaXRpdmU6IG5ldyBSZWdFeHAoYFteJHtjaGFyQ2xhc3MuTEN9XWApLFxuICAgIGlzQ2FzZVNlbnNpdGl2ZTogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkxDfV1gKSxcbiAgICBxdW90ZWQ6IC8oXCJbXlwiXStcIil8KOKAnFte4oCcXSvigJwpL2csXG59O1xuY29uc3QgZmllbGRzID0ge1xuICAgIGNyZWF0b3I6IFtcbiAgICAgICAgJ2F1dGhvcicsXG4gICAgICAgICdib29rYXV0aG9yJyxcbiAgICAgICAgJ2NvbGxhYm9yYXRvcicsXG4gICAgICAgICdjb21tZW50YXRvcicsXG4gICAgICAgICdkaXJlY3RvcicsXG4gICAgICAgICdlZGl0b3InLFxuICAgICAgICAnZWRpdG9yYScsXG4gICAgICAgICdlZGl0b3JiJyxcbiAgICAgICAgJ2VkaXRvcnMnLFxuICAgICAgICAnaG9sZGVyJyxcbiAgICAgICAgJ3NjcmlwdHdyaXRlcicsXG4gICAgICAgICd0cmFuc2xhdG9yJyxcbiAgICBdLFxuICAgIHRpdGxlOiBbXG4gICAgICAgICd0aXRsZScsXG4gICAgICAgICdzZXJpZXMnLFxuICAgICAgICAnc2hvcnR0aXRsZScsXG4gICAgICAgICdib29rdGl0bGUnLFxuICAgICAgICAndHlwZScsXG4gICAgICAgICdvcmlndGl0bGUnLFxuICAgICAgICAnbWFpbnRpdGxlJyxcbiAgICAgICAgJ2V2ZW50dGl0bGUnLFxuICAgIF0sXG4gICAgdW5uZXN0OiBbXG4gICAgICAgICdwdWJsaXNoZXInLFxuICAgICAgICAnbG9jYXRpb24nLFxuICAgIF0sXG4gICAgdmVyYmF0aW06IFtcbiAgICAgICAgJ3VybCcsXG4gICAgICAgICdkb2knLFxuICAgICAgICAnZmlsZScsXG4gICAgICAgICdmaWxlcycsXG4gICAgICAgICdlcHJpbnQnLFxuICAgICAgICAndmVyYmEnLFxuICAgICAgICAndmVyYmInLFxuICAgICAgICAndmVyYmMnLFxuICAgICAgICAnZ3JvdXBzJyxcbiAgICBdLFxuICAgIGh0bWw6IFtcbiAgICAgICAgJ2Fubm90YXRpb24nLFxuICAgICAgICAnY29tbWVudCcsXG4gICAgICAgICdhbm5vdGUnLFxuICAgICAgICAncmV2aWV3JyxcbiAgICAgICAgJ25vdGVzJyxcbiAgICAgICAgJ25vdGUnLFxuICAgIF0sXG4gICAgdW5hYmJyZXY6IFtcbiAgICAgICAgJ2pvdXJuYWwnLFxuICAgICAgICAnam91cm5hbHRpdGxlJyxcbiAgICAgICAgJ2pvdXJuYWwtZnVsbCcsXG4gICAgXSxcbn07XG5jb25zdCBlbmdsaXNoID0gW1xuICAgICdhbWVyaWNhbicsXG4gICAgJ2JyaXRpc2gnLFxuICAgICdjYW5hZGlhbicsXG4gICAgJ2VuZ2xpc2gnLFxuICAgICdhdXN0cmFsaWFuJyxcbiAgICAnbmV3emVhbGFuZCcsXG4gICAgJ3VzZW5nbGlzaCcsXG4gICAgJ3VrZW5nbGlzaCcsXG4gICAgJ2VuJyxcbiAgICAnZW5nJyxcbiAgICAnZW4tYXUnLFxuICAgICdlbi1ieicsXG4gICAgJ2VuLWNhJyxcbiAgICAnZW4tY2InLFxuICAgICdlbi1nYicsXG4gICAgJ2VuLWllJyxcbiAgICAnZW4tam0nLFxuICAgICdlbi1ueicsXG4gICAgJ2VuLXBoJyxcbiAgICAnZW4tdHQnLFxuICAgICdlbi11cycsXG4gICAgJ2VuLXphJyxcbiAgICAnZW4tencnLFxuICAgICdhbmdsYWlzJyxcbl07XG5jbGFzcyBQYXJzZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgICAgICB0aGlzLmluX3ByZWFtYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJlYW1ibGUgPSBbXTtcbiAgICAgICAgdGhpcy5sb2cgPSBmdW5jdGlvbiAoc3RyKSB7IH07IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgdmFyaWFibGUtbmFtZSBvbmx5LWFycm93LWZ1bmN0aW9ucyBuby1lbXB0eVxuICAgICAgICBmb3IgKGNvbnN0IFtvcHRpb24sIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnNbb3B0aW9uXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5lcnJvckhhbmRsZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgb25seS1hcnJvdy1mdW5jdGlvbnMgbm8tZW1wdHlcbiAgICAgICAgICAgIG9wdGlvbnMuZXJyb3JIYW5kbGVyID0gZnVuY3Rpb24gKGVycikgeyB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZXJyb3JIYW5kbGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBvbmx5LWFycm93LWZ1bmN0aW9uc1xuICAgICAgICAgICAgb3B0aW9ucy5lcnJvckhhbmRsZXIgPSBmdW5jdGlvbiAoZXJyKSB7IHRocm93IGVycjsgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuc2VudGVuY2VDYXNlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuc2VudGVuY2VDYXNlID0gb3B0aW9ucy5zZW50ZW5jZUNhc2UgPyBlbmdsaXNoIDogW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zLnNlbnRlbmNlQ2FzZSA9IG9wdGlvbnMuc2VudGVuY2VDYXNlIHx8IGVuZ2xpc2g7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvcHRpb25zLnN0cmluZ3MpXG4gICAgICAgICAgICBvcHRpb25zLnN0cmluZ3MgPSB7fTtcbiAgICAgICAgaWYgKCFvcHRpb25zLnVuYWJicmV2aWF0ZSlcbiAgICAgICAgICAgIG9wdGlvbnMudW5hYmJyZXZpYXRlID0ge307XG4gICAgICAgIGlmIChvcHRpb25zLnJhdykge1xuICAgICAgICAgICAgb3B0aW9ucy5zZW50ZW5jZUNhc2UgPSBmYWxzZTtcbiAgICAgICAgICAgIG9wdGlvbnMuY2FzZVByb3RlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHsgY2FzZVByb3RlY3Rpb246ICdhcy1uZWVkZWQnLCB2ZXJiYXRpbUZpZWxkczogWy9eY2l0ZXVsaWtlLWxpbmtvdXQtWzAtOV0rJC8sIC4uLmZpZWxkcy52ZXJiYXRpbV0sIHZlcmJhdGltQ29tbWFuZHM6IFsndXJsJywgJ2hyZWYnXSwgdW5uZXN0RmllbGRzOiBbLi4uZmllbGRzLnRpdGxlLCAuLi5maWVsZHMudW5uZXN0LCAuLi5maWVsZHMudmVyYmF0aW1dLCB1bm5lc3RNb2RlOiAndW53cmFwJywgaHRtbEZpZWxkczogZmllbGRzLmh0bWwsIGd1ZXNzQWxyZWFkeVNlbnRlbmNlQ2FzZWQ6IHRydWUsIG1hcmt1cDoge30gfSwgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IG1hcmt1cF9kZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIGVucXVvdGU6IHsgb3BlbjogJ1xcdTIwMWMnLCBjbG9zZTogJ1xcdTIwMWQnIH0sXG4gICAgICAgICAgICBzdWI6IHsgb3BlbjogJzxzdWI+JywgY2xvc2U6ICc8L3N1Yj4nIH0sXG4gICAgICAgICAgICBzdXA6IHsgb3BlbjogJzxzdXA+JywgY2xvc2U6ICc8L3N1cD4nIH0sXG4gICAgICAgICAgICBib2xkOiB7IG9wZW46ICc8Yj4nLCBjbG9zZTogJzwvYj4nIH0sXG4gICAgICAgICAgICBpdGFsaWNzOiB7IG9wZW46ICc8aT4nLCBjbG9zZTogJzwvaT4nIH0sXG4gICAgICAgICAgICBzbWFsbENhcHM6IHsgb3BlbjogJzxzcGFuIHN0eWxlPVwiZm9udC12YXJpYW50OnNtYWxsLWNhcHM7XCI+JywgY2xvc2U6ICc8L3NwYW4+JyB9LFxuICAgICAgICAgICAgY2FzZVByb3RlY3Q6IHsgb3BlbjogJzxzcGFuIGNsYXNzPVwibm9jYXNlXCI+JywgY2xvc2U6ICc8L3NwYW4+JyB9LFxuICAgICAgICAgICAgcm9tYW46IHsgb3BlbjogJycsIGNsb3NlOiAnJyB9LFxuICAgICAgICAgICAgZml4ZWRXaWR0aDogeyBvcGVuOiAnJywgY2xvc2U6ICcnIH0sXG4gICAgICAgIH07XG4gICAgICAgIC8vIHBhdGNoIGluIGJlY2F1c2UgdGhlIG9wdGlvbnMgd2lsbCBsaWtlbHkgbm90IGhhdmUgZW5xdW90ZSBhbmQgY2FzZS1wcm90ZWN0XG4gICAgICAgIGZvciAoY29uc3QgW21hcmt1cCwgeyBvcGVuLCBjbG9zZSB9XSBvZiBPYmplY3QuZW50cmllcyhtYXJrdXBfZGVmYXVsdHMpKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubWFya3VwW21hcmt1cF0gPSB0aGlzLm9wdGlvbnMubWFya3VwW21hcmt1cF0gfHwgeyBvcGVuLCBjbG9zZSB9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiBbMSwgMiwgMywgNF0pIHsgLy8gdHNsaW50OmRpc2FibGUtbGluZTpuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubWFya3VwW2BoJHtpfWBdID0gdGhpcy5vcHRpb25zLm1hcmt1cFtgaCR7aX1gXSB8fCB7IG9wZW46IGA8aCR7aX0+YCwgY2xvc2U6IGA8L2gke2l9PmAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVucmVzb2x2ZWRTdHJpbmdzID0ge307XG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIHRoaXMuY29tbWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gW107XG4gICAgICAgIHRoaXMuc3RyaW5ncyA9IHt9O1xuICAgICAgICB0aGlzLm5ld2NvbW1hbmRzID0ge307XG4gICAgICAgIHRoaXMuZGVmYXVsdF9zdHJpbmdzID0ge1xuICAgICAgICAgICAgSkFOOiBbdGhpcy50ZXh0KCcwMScpXSxcbiAgICAgICAgICAgIEZFQjogW3RoaXMudGV4dCgnMDInKV0sXG4gICAgICAgICAgICBNQVI6IFt0aGlzLnRleHQoJzAzJyldLFxuICAgICAgICAgICAgQVBSOiBbdGhpcy50ZXh0KCcwNCcpXSxcbiAgICAgICAgICAgIE1BWTogW3RoaXMudGV4dCgnMDUnKV0sXG4gICAgICAgICAgICBKVU46IFt0aGlzLnRleHQoJzA2JyldLFxuICAgICAgICAgICAgSlVMOiBbdGhpcy50ZXh0KCcwNycpXSxcbiAgICAgICAgICAgIEFVRzogW3RoaXMudGV4dCgnMDgnKV0sXG4gICAgICAgICAgICBTRVA6IFt0aGlzLnRleHQoJzA5JyldLFxuICAgICAgICAgICAgT0NUOiBbdGhpcy50ZXh0KCcxMCcpXSxcbiAgICAgICAgICAgIE5PVjogW3RoaXMudGV4dCgnMTEnKV0sXG4gICAgICAgICAgICBERUM6IFt0aGlzLnRleHQoJzEyJyldLFxuICAgICAgICAgICAgQUNNQ1M6IFt0aGlzLnRleHQoJ0FDTSBDb21wdXRpbmcgU3VydmV5cycpXSxcbiAgICAgICAgICAgIEFDVEE6IFt0aGlzLnRleHQoJ0FjdGEgSW5mb3JtYXRpY2EnKV0sXG4gICAgICAgICAgICBDQUNNOiBbdGhpcy50ZXh0KCdDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNJyldLFxuICAgICAgICAgICAgSUJNSlJEOiBbdGhpcy50ZXh0KCdJQk0gSm91cm5hbCBvZiBSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQnKV0sXG4gICAgICAgICAgICBJQk1TSjogW3RoaXMudGV4dCgnSUJNIFN5c3RlbXMgSm91cm5hbCcpXSxcbiAgICAgICAgICAgIElFRUVTRTogW3RoaXMudGV4dCgnSUVFRSBUcmFuc2FjdGlvbnMgb24gU29mdHdhcmUgRW5naW5lZXJpbmcnKV0sXG4gICAgICAgICAgICBJRUVFVEM6IFt0aGlzLnRleHQoJ0lFRUUgVHJhbnNhY3Rpb25zIG9uIENvbXB1dGVycycpXSxcbiAgICAgICAgICAgIElFRUVUQ0FEOiBbdGhpcy50ZXh0KCdJRUVFIFRyYW5zYWN0aW9ucyBvbiBDb21wdXRlci1BaWRlZCBEZXNpZ24gb2YgSW50ZWdyYXRlZCBDaXJjdWl0cycpXSxcbiAgICAgICAgICAgIElQTDogW3RoaXMudGV4dCgnSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBMZXR0ZXJzJyldLFxuICAgICAgICAgICAgSkFDTTogW3RoaXMudGV4dCgnSm91cm5hbCBvZiB0aGUgQUNNJyldLFxuICAgICAgICAgICAgSkNTUzogW3RoaXMudGV4dCgnSm91cm5hbCBvZiBDb21wdXRlciBhbmQgU3lzdGVtIFNjaWVuY2VzJyldLFxuICAgICAgICAgICAgU0NQOiBbdGhpcy50ZXh0KCdTY2llbmNlIG9mIENvbXB1dGVyIFByb2dyYW1taW5nJyldLFxuICAgICAgICAgICAgU0lDT01QOiBbdGhpcy50ZXh0KCdTSUFNIEpvdXJuYWwgb24gQ29tcHV0aW5nJyldLFxuICAgICAgICAgICAgVE9DUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBDb21wdXRlciBTeXN0ZW1zJyldLFxuICAgICAgICAgICAgVE9EUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBEYXRhYmFzZSBTeXN0ZW1zJyldLFxuICAgICAgICAgICAgVE9HOiBbdGhpcy50ZXh0KCdBQ00gVHJhbnNhY3Rpb25zIG9uIEdyYXBoaWNzJyldLFxuICAgICAgICAgICAgVE9NUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBNYXRoZW1hdGljYWwgU29mdHdhcmUnKV0sXG4gICAgICAgICAgICBUT09JUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBPZmZpY2UgSW5mb3JtYXRpb24gU3lzdGVtcycpXSxcbiAgICAgICAgICAgIFRPUExBUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBQcm9ncmFtbWluZyBMYW5ndWFnZXMgYW5kIFN5c3RlbXMnKV0sXG4gICAgICAgICAgICBUQ1M6IFt0aGlzLnRleHQoJ1RoZW9yZXRpY2FsIENvbXB1dGVyIFNjaWVuY2UnKV0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzdChpbnB1dCwgY2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IF9hc3QgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua2VyXzEucGFyc2UoaW5wdXQpKSB7XG4gICAgICAgICAgICBsZXQgY2h1bmtfYXN0ID0gYmlidGV4LnBhcnNlKGNodW5rLnRleHQsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKSwgeyBjb21iaW5pbmdEaWFjcml0aWNzOiB1bmljb2RlMmxhdGV4XzEuZGlhY3JpdGljcy5jb21tYW5kcyB9KSk7XG4gICAgICAgICAgICBpZiAoY2xlYW4pXG4gICAgICAgICAgICAgICAgY2h1bmtfYXN0ID0gdGhpcy5jbGVhbihjaHVua19hc3QpO1xuICAgICAgICAgICAgX2FzdC5wdXNoKGNodW5rX2FzdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9hc3Q7XG4gICAgfVxuICAgIHBhcnNlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXN5bmMgPyB0aGlzLnBhcnNlQXN5bmMoaW5wdXQpIDogdGhpcy5wYXJzZVN5bmMoaW5wdXQpO1xuICAgIH1cbiAgICBwYXJzZVN5bmMoaW5wdXQpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua2VyXzEucGFyc2UoaW5wdXQpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlQ2h1bmsoY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlZCgpO1xuICAgIH1cbiAgICBhc3luYyBwYXJzZUFzeW5jKGlucHV0KSB7XG4gICAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgYXdhaXQgY2h1bmtlcl8xLnBhcnNlKGlucHV0LCB7IGFzeW5jOiB0cnVlIH0pKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlQ2h1bmsoY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlZCgpO1xuICAgIH1cbiAgICBwYXJzZWQoKSB7XG4gICAgICAgIHRoaXMuZmllbGQgPSBudWxsO1xuICAgICAgICBjb25zdCBzdHJpbmdzID0ge307XG4gICAgICAgIHRoaXMuY2xlYW5pbmcgPSB7IHR5cGU6ICdvdGhlcicgfTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zdHJpbmdzKSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZCA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQHN0cmluZycsXG4gICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgcHJlc2VydmVSYW5nZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdXBwZXI6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxvd2VyOiAwLFxuICAgICAgICAgICAgICAgICAgICBvdGhlcjogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuY29udmVydCh0aGlzLmNsZWFuKHZhbHVlKSk7XG4gICAgICAgICAgICBzdHJpbmdzW2tleV0gPSB0aGlzLmZpZWxkLnRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVycm9yczogdGhpcy5lcnJvcnMsXG4gICAgICAgICAgICBlbnRyaWVzOiB0aGlzLmVudHJpZXMsXG4gICAgICAgICAgICBjb21tZW50czogdGhpcy5jb21tZW50cyxcbiAgICAgICAgICAgIHN0cmluZ3MsXG4gICAgICAgICAgICBwcmVhbWJsZTogdGhpcy5wcmVhbWJsZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJlc2VydmUoc3RhcnQsIGVuZCwgcmVhc29uKSB7XG4gICAgICAgIGlmICghdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFlbmQpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8qXG4gICAgICAgIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMgPSB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzLmZpbHRlcihyYW5nZSA9PiByYW5nZS5zdGFydCA8IHN0YXJ0IHx8IHJhbmdlLmVuZCA+IGVuZClcbiAgICAgICAgaWYgKHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMuZmluZChyYW5nZSA9PiByYW5nZS5zdGFydCA8PSBzdGFydCAmJiByYW5nZS5lbmQgPj0gZW5kKSkgcmV0dXJuXG4gICAgICAgICovXG4gICAgICAgIC8qXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzICYmIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgbGFzdCA9IHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXNbdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcy5sZW5ndGggLSAxXVxuICAgICAgICAgIGlmIChzdGFydCA8IGxhc3Quc3RhcnQpIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7Li4ubGFzdCwgbmV3OiB7IHN0YXJ0LCBlbmQsIHJlYXNvbiB9LCB0ZXh0OiB0aGlzLmZpZWxkLnRleHR9KSlcbiAgICAgICAgfVxuICAgICAgICAqL1xuICAgICAgICB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzLnB1c2goeyBzdGFydCwgZW5kLCByZWFzb24gfSk7XG4gICAgfVxuICAgIHBhcnNlQ2h1bmsoY2h1bmspIHtcbiAgICAgICAgdGhpcy5jaHVuayA9IGNodW5rLnRleHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgYmliID0gYmlidGV4LnBhcnNlKGNodW5rLnRleHQsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKSwgeyBjb21iaW5pbmdEaWFjcml0aWNzOiB1bmljb2RlMmxhdGV4XzEuZGlhY3JpdGljcy5jb21tYW5kcyB9KSk7XG4gICAgICAgICAgICBpZiAoYmliLmtpbmQgIT09ICdCaWJsaW9ncmFwaHknKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLnNob3coYmliKSk7XG4gICAgICAgICAgICBiaWIgPSB0aGlzLmNsZWFuKGJpYik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiBiaWIuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGVudGl0eS5raW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VudHJ5JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQnJhY2VkQ29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0xpbmVDb21tZW50JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUHJlYW1ibGVFeHByZXNzaW9uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udmVydChlbnRpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1N0cmluZ0RlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTm9uRW50cnlUZXh0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBiaWI7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKCFlcnIubG9jYXRpb24pXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgdGhpcy5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbGluZTogZXJyLmxvY2F0aW9uLnN0YXJ0LmxpbmUgKyBjaHVuay5vZmZzZXQubGluZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGVyci5sb2NhdGlvbi5zdGFydC5jb2x1bW4sXG4gICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLmNodW5rLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzaG93KG8pIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIHByZWZlci10ZW1wbGF0ZVxuICAgICAgICBsZXQgdGV4dCA9IEpTT04uc3RyaW5naWZ5KG8pO1xuICAgICAgICBpZiAodGhpcy5jaHVuaylcbiAgICAgICAgICAgIHRleHQgKz0gJ1xcbicgKyB0aGlzLmNodW5rLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICAgIHRleHQodmFsdWUgPSAnJykge1xuICAgICAgICByZXR1cm4geyBraW5kOiAnVGV4dCcsIHZhbHVlLCBtb2RlOiAndGV4dCcgfTtcbiAgICB9XG4gICAgZXJyb3IoZXJyLCByZXR1cm52YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5lcnJvckhhbmRsZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICAgIHJldHVybiByZXR1cm52YWx1ZTtcbiAgICB9XG4gICAgY29uZGVuc2Uobm9kZSkge1xuICAgICAgICAvLyBhcHBseSBjbGVhbmluZyB0byByZXN1bHRpbmcgY2hpbGRyZW5cbiAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWUubWFwKGNoaWxkID0+IHRoaXMuY2xlYW4oY2hpbGQpKTtcbiAgICAgICAgLy8gdW5wYWNrIHJlZHVuZGFudCBibG9ja3NcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWUucmVkdWNlKChhY2MsIGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hpbGQua2luZCA9PT0gJ0Jsb2NrJyAmJiAhY2hpbGQuY2FzZSAmJiBPYmplY3Qua2V5cyhjaGlsZC5tYXJrdXApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQoY2hpbGQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWNjLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICAvLyBjb25kZW5zZSB0ZXh0IG5vZGVzIHRvIG1ha2Ugd2hvbGUgd29yZHMgZm9yIHNlbnRlbmNlIGNhc2luZ1xuICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1ZS5yZWR1Y2UoKGFjYywgY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChhY2MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYWNjLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gYWNjW2FjYy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBub2RlLnZhbHVlW2kgKyAxXTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FzZVByb3RlY3Rpb24gPT09ICdzdHJpY3QnICYmIHRoaXMub25seUNhc2VQcm90ZWN0ZWQobGFzdCkgJiYgY2hpbGQua2luZCA9PT0gJ1RleHQnICYmICFjaGlsZC52YWx1ZS5tYXRjaChwcmVzZXJ2ZUNhc2UuaXNDYXNlU2Vuc2l0aXZlKSAmJiB0aGlzLm9ubHlDYXNlUHJvdGVjdGVkKG5leHQpKSB7XG4gICAgICAgICAgICAgICAgbGFzdC52YWx1ZS5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbGFzdC5zb3VyY2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0LmtpbmQgPT09ICdCbG9jaycgJiYgY2hpbGQua2luZCA9PT0gJ0Jsb2NrJyAmJiBPYmplY3Qua2V5cyhsYXN0Lm1hcmt1cCkuc29ydCgpLmpvaW4oJy8nKSA9PT0gT2JqZWN0LmtleXMoY2hpbGQubWFya3VwKS5zb3J0KCkuam9pbignLycpKSB7XG4gICAgICAgICAgICAgICAgbGFzdC52YWx1ZSA9IGxhc3QudmFsdWUuY29uY2F0KGNoaWxkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbGFzdC5zb3VyY2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0LmtpbmQgPT09ICdUZXh0JyAmJiBjaGlsZC5raW5kID09PSAnVGV4dCcgJiYgbGFzdC5tb2RlID09PSBjaGlsZC5tb2RlKSB7XG4gICAgICAgICAgICAgICAgbGFzdC52YWx1ZSArPSBjaGlsZC52YWx1ZTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbGFzdC5zb3VyY2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjYy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG4gICAgb25seUNhc2VQcm90ZWN0ZWQobm9kZSkge1xuICAgICAgICByZXR1cm4gKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZS5raW5kKSA9PT0gJ0Jsb2NrJyAmJiBub2RlLmNhc2UgPT09ICdwcm90ZWN0JyAmJiBPYmplY3Qua2V5cyhub2RlLm1hcmt1cCkuam9pbignLycpID09PSAnJztcbiAgICB9XG4gICAgYXJndW1lbnQobm9kZSwga2luZCkge1xuICAgICAgICBpZiAoIW5vZGUuYXJndW1lbnRzIHx8ICFub2RlLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gKGtpbmQgPT09ICdub25lJyk7XG4gICAgICAgIC8vIGV4cGVjdCAnbicgdGV4dCBhcmd1bWVudHNcbiAgICAgICAgaWYgKHR5cGVvZiBraW5kID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgaWYgKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aCAhPT0ga2luZClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHMucmVxdWlyZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmV0dXJuIGZpcnN0IGFyZ3VtZW50IGlmIGl0J3MgdGhlIG9ubHkgb25lXG4gICAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGggIT09IDEpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIGxvb3NlIGNoZWNraW5nIGZvciB0ZXh0XG4gICAgICAgIGlmIChraW5kID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF07XG4gICAgICAgICAgICBpZiAoZmlyc3Qua2luZCA9PT0gJ0Jsb2NrJyAmJiBmaXJzdC52YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3QudmFsdWVbMF0ua2luZCA9PT0gJ1RleHQnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3QudmFsdWVbMF0udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmYWxsIGJhY2sgdG8gc3RyaWN0IGtpbmQgY2hlY2tcbiAgICAgICAgICAgIGtpbmQgPSAnVGV4dCc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmV0dXJuIGZpcnN0IGFyZ3VtZW50IGlmIGl0J3MgdGhlIG9ubHkgb25lIGFuZCBpcyBvZiB0aGUgc3BlY2lmaWVkIGtpbmRcbiAgICAgICAgaWYgKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aCAhPT0gMSB8fCBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5raW5kICE9PSBraW5kKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgJ1JlZ3VsYXJDb21tYW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjbGVhbihub2RlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUubWFwKGNoaWxkID0+IHRoaXMuY2xlYW4oY2hpbGQpKTtcbiAgICAgICAgZGVsZXRlIG5vZGUubG9jO1xuICAgICAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgICAgICAgY2FzZSAnSW5saW5lTWF0aCc6XG4gICAgICAgICAgICBjYXNlICdEaXNwbGF5TWF0aCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fYmxvY2sobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdFbnZpcm9ubWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fZW52aXJvbm1lbnQobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fYmxvY2sobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdCaWJsaW9ncmFwaHknOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2JpYihub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1JlZ3VsYXJDb21tYW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9jb21tYW5kKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnRGlhY3JpdGljQ29tbWFuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fZGlhY3JpdGljKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnRW50cnknOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2VudHJ5KG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnRmllbGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmF3ID8gbm9kZSA6IHRoaXMuY2xlYW5fZmllbGQobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdTdHJpbmdEZWNsYXJhdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fc3RyaW5nZGVjbChub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1N0cmluZ1JlZmVyZW5jZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fc3RyaW5ncmVmKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnU3Vic2NyaXB0Q29tbWFuZCc6XG4gICAgICAgICAgICBjYXNlICdTdXBlcnNjcmlwdENvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3NjcmlwdChub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1N5bWJvbENvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3N5bWJvbChub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1ByZWFtYmxlRXhwcmVzc2lvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fcHJlYW1ibGUobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgICAgICAgY2FzZSAnVGV4dCc6XG4gICAgICAgICAgICBjYXNlICdCcmFjZWRDb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0xpbmVDb21tZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFBhcnNlckVycm9yKGBubyBjbGVhbnVwIG1ldGhvZCBmb3IgJHt0aGlzLnNob3cobm9kZSl9YCwgbm9kZSksIHRoaXMudGV4dCgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGVhbl9wcmVhbWJsZShub2RlKSB7XG4gICAgICAgIHRoaXMuaW5fcHJlYW1ibGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBjbGVhbiA9IHRoaXMuY2xlYW4obm9kZS52YWx1ZSk7XG4gICAgICAgIHRoaXMuaW5fcHJlYW1ibGUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNsZWFuO1xuICAgIH1cbiAgICBjbGVhbl9iaWIobm9kZSkge1xuICAgICAgICBub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gY2hpbGQua2luZCAhPT0gJ05vbkVudHJ5VGV4dCcpLm1hcChjaGlsZCA9PiB0aGlzLmNsZWFuKGNoaWxkKSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBjbGVhbl9zdHJpbmdkZWNsKG5vZGUpIHtcbiAgICAgICAgdGhpcy5zdHJpbmdzW25vZGUubmFtZS50b1VwcGVyQ2FzZSgpXSA9IG5vZGUudmFsdWU7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBjbGVhbl9zdHJpbmdyZWYobm9kZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBub2RlLm5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgY29uc3QgX3N0cmluZyA9IHRoaXMuc3RyaW5nc1tuYW1lXVxuICAgICAgICAgICAgfHwgdGhpcy5vcHRpb25zLnN0cmluZ3NbbmFtZV1cbiAgICAgICAgICAgIHx8IHRoaXMuZGVmYXVsdF9zdHJpbmdzW25hbWVdXG4gICAgICAgICAgICB8fCAoZmllbGRzLnVuYWJicmV2LmluY2x1ZGVzKHRoaXMuY2xlYW5pbmcubmFtZSkgJiYgKChfYSA9IHRoaXMub3B0aW9ucy51bmFiYnJldmlhdGVbbmFtZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSAmJiBbdGhpcy50ZXh0KHRoaXMub3B0aW9ucy51bmFiYnJldmlhdGVbbmFtZV0udGV4dCldKTtcbiAgICAgICAgaWYgKCFfc3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudW5yZXNvbHZlZFN0cmluZ3NbbmFtZV0pXG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMucHVzaCh7IG1lc3NhZ2U6IGBVbnJlc29sdmVkIEBzdHJpbmcgcmVmZXJlbmNlICR7SlNPTi5zdHJpbmdpZnkobm9kZS5uYW1lKX1gIH0pO1xuICAgICAgICAgICAgdGhpcy51bnJlc29sdmVkU3RyaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oe1xuICAgICAgICAgICAga2luZDogJ0Jsb2NrJyxcbiAgICAgICAgICAgIC8vIGlmIHRoZSBzdHJpbmcgaXNuJ3QgZm91bmQsIGFkZCBpdCBhcy1pcyBidXQgZXhlbXB0IGl0IGZyb20gc2VudGVuY2UgY2FzaW5nXG4gICAgICAgICAgICBjYXNlOiBfc3RyaW5nID8gdW5kZWZpbmVkIDogJ3ByZXNlcnZlJyxcbiAgICAgICAgICAgIG1hcmt1cDoge30sXG4gICAgICAgICAgICB2YWx1ZTogX3N0cmluZyA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3N0cmluZykpIDogW3RoaXMudGV4dChub2RlLm5hbWUpXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNsZWFuX2VudHJ5KG5vZGUpIHtcbiAgICAgICAgY29uc3Qgc2hvcnRqb3VybmFscyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIG5vZGUuZmllbGRzKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRzLnVuYWJicmV2LmluY2x1ZGVzKGZpZWxkLm5hbWUpICYmIEFycmF5LmlzQXJyYXkoZmllbGQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWJiciA9IGZpZWxkLnZhbHVlLm1hcCh2ID0+IHYuc291cmNlKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBqb3VybmFsID0gdGhpcy5vcHRpb25zLnVuYWJicmV2aWF0ZVthYmJyXTtcbiAgICAgICAgICAgICAgICBpZiAoam91cm5hbCkge1xuICAgICAgICAgICAgICAgICAgICBzaG9ydGpvdXJuYWxzLnB1c2goT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZpZWxkKSkpLCB7IG5hbWU6ICdzaG9ydGpvdXJuYWwnIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGpvdXJuYWwuYXN0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5vZGUuZmllbGRzID0gbm9kZS5maWVsZHMuY29uY2F0KHNob3J0am91cm5hbHMpLm1hcChjaGlsZCA9PiB0aGlzLmNsZWFuKGNoaWxkKSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBzdGFydENsZWFuaW5nKG5hbWUpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGZpZWxkcy50aXRsZS5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbmluZyA9IHsgdHlwZTogJ3RpdGxlJywgbmFtZSB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpZWxkcy5jcmVhdG9yLmluY2x1ZGVzKG5hbWUucmVwbGFjZSgvcyQvLCAnJykpKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFuaW5nID0geyB0eXBlOiAnY3JlYXRvcicsIG5hbWU6IG5hbWUucmVwbGFjZSgvcyQvLCAnJykgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW5pbmcgPSB7IHR5cGU6ICdvdGhlcicsIG5hbWUgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdHJpcE5vQ2FzZShub2RlLCBzdHJpcCwgcHJlc2VydmUpIHtcbiAgICAgICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ1JlZ3VsYXJDb21tYW5kJzpcbiAgICAgICAgICAgICAgICAvLyBhIGJpdCBjaGVhdHkgdG8gYXNzdW1lIHRoZXNlIHRvIGJlIG5vY2FzZWQsIGJ1dCBpdCdzIGp1c3QgbW9yZSBsaWtlbHkgdG8gYmUgd2hhdCBwZW9wbGUgd2FudFxuICAgICAgICAgICAgICAgIGlmIChbJ2Noc2YnLCAnYmlic3RyaW5nJywgJ2NpdGUnXS5pbmNsdWRlcyhub2RlLmNvbW1hbmQpKVxuICAgICAgICAgICAgICAgICAgICBzdHJpcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgbm9kZS5hcmd1bWVudHMucmVxdWlyZWQubWFwKGFyZyA9PiB0aGlzLnN0cmlwTm9DYXNlKGFyZywgc3RyaXAsIHByZXNlcnZlKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgICBjYXNlICdJbmxpbmVNYXRoJzpcbiAgICAgICAgICAgIGNhc2UgJ0Rpc3BsYXlNYXRoJzpcbiAgICAgICAgICAgICAgICBpZiAoc3RyaXAgJiYgbm9kZS5jYXNlID09PSAncHJvdGVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNhc2UgPSAncHJlc2VydmUnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5vZGUuY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBub2RlLnZhbHVlLm1hcCh2ID0+IHRoaXMuc3RyaXBOb0Nhc2Uodiwgc3RyaXAgfHwgbm9kZS5jYXNlID09PSAncHJvdGVjdCcsIHByZXNlcnZlKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdGaWVsZCc6XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS52YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIG5vZGUudmFsdWUubWFwKHYgPT4gdGhpcy5zdHJpcE5vQ2FzZSh2LCBzdHJpcCwgcHJlc2VydmUpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc1ZlcmJhdGltRmllbGQobmFtZSkge1xuICAgICAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMudmVyYmF0aW1GaWVsZHMuZmluZChwID0+ICh0eXBlb2YgcCA9PT0gJ3N0cmluZycpID8gbmFtZSA9PT0gcCA6IG5hbWUubWF0Y2gocCkpO1xuICAgIH1cbiAgICBjbGVhbl9maWVsZChub2RlKSB7XG4gICAgICAgIHRoaXMuc3RhcnRDbGVhbmluZyhub2RlLm5hbWUpO1xuICAgICAgICB0aGlzLnN0cmlwTm9DYXNlKG5vZGUsICF0aGlzLm9wdGlvbnMuY2FzZVByb3RlY3Rpb24gfHwgdGhpcy5pc1ZlcmJhdGltRmllbGQobm9kZS5uYW1lKSwgdGhpcy5vcHRpb25zLnNlbnRlbmNlQ2FzZS5sZW5ndGggPT09IDApO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlLnZhbHVlKSlcbiAgICAgICAgICAgIHRoaXMuY29uZGVuc2Uobm9kZSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBjbGVhbl9zY3JpcHQobm9kZSkge1xuICAgICAgICBsZXQgbSwgdmFsdWUsIHNpbmdsZWNoYXI7XG4gICAgICAgIC8vIHJlY29nbml6ZSBjb21iaW5lZCBmb3JtcyBsaWtlIFxcXlxcY2lyY1xuICAgICAgICBpZiAoc2luZ2xlY2hhciA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtub2RlLnNvdXJjZV0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHNpbmdsZWNoYXIpO1xuICAgICAgICBpZiAoKG0gPSBub2RlLnNvdXJjZS5tYXRjaCgvXihbXFxeX10pKFtee31dKykkLykpICYmICgoc2luZ2xlY2hhciA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHttWzFdfSR7bVsyXX1gXSkgfHwgKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7bVsxXX17JHttWzJdfX1gXSkpKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChzaW5nbGVjaGFyKTtcbiAgICAgICAgaWYgKChtID0gbm9kZS5zb3VyY2UubWF0Y2goL14oW1xcXl9dKVxceyhbXnt9XSspXFx9JC8pKSAmJiAoKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7bVsxXX0ke21bMl19YF0pIHx8IChzaW5nbGVjaGFyID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake21bMV19eyR7bVsyXX19YF0pKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoc2luZ2xlY2hhcik7XG4gICAgICAgIGNvbnN0IGNtZCA9IG5vZGUua2luZCA9PT0gJ1N1cGVyc2NyaXB0Q29tbWFuZCcgPyAnXicgOiAnXyc7XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7Y21kfSR7bm9kZS52YWx1ZX1gXSB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7Y21kfXske25vZGUudmFsdWV9fWBdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChzaW5nbGVjaGFyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG5vZGUudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFt0aGlzLnRleHQobm9kZS52YWx1ZSldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KG5vZGUudmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFtub2RlLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RlID0gbm9kZS5raW5kID09PSAnU3VwZXJzY3JpcHRDb21tYW5kJyA/ICdzdXAnIDogJ3N1Yic7XG4gICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICBtYXJrdXA6IHsgW21vZGVdOiB0cnVlIH0sXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNsZWFuX2Vudmlyb25tZW50KG5vZGUpIHtcbiAgICAgICAgdGhpcy5jb25kZW5zZShub2RlKTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIG5lZWRzUHJvdGVjdGlvbih3b3JkKSB7XG4gICAgICAgIHJldHVybiAhd29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaGFzVXBwZXIpICYmIHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmhhc0xvd2VyKTtcbiAgICB9XG4gICAgY2xlYW5fYmxvY2sobm9kZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuY29uZGVuc2Uobm9kZSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FzZVByb3RlY3Rpb24gIT09ICdzdHJpY3QnICYmICgoX2EgPSB0aGlzLmNsZWFuaW5nKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZSkgPT09ICd0aXRsZScgJiYgbm9kZS5jYXNlID09PSAncHJvdGVjdCcpIHtcbiAgICAgICAgICAgIC8vIHRlc3Qgd2hldGhlciB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBza2lwcGluZyBjYXNlIHByb3RlY3Rpb24gYmVjYXVzZSBpdCBjb250YWlucyBhbGwgd29yZHMgdGhhdCB3aWxsIGJlIHByZXNlcnZlZCBhbnl3YXkgd2hlbiBjb252ZXJ0aW5nIGJhY2sgdG8gVGl0bGUgQ2FzZVxuICAgICAgICAgICAgbGV0IHByZXNlcnZlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5raW5kID09PSAnVGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjaGlsZC52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIHByZXNlcnZlID0gIXZhbHVlLm1hdGNoKHByZXNlcnZlQ2FzZS5pc0Nhc2VTZW5zaXRpdmUpIHx8ICF2YWx1ZS5zcGxpdCgvXFxzKy8pLmZpbmQod29yZCA9PiB0aGlzLm5lZWRzUHJvdGVjdGlvbih3b3JkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXByZXNlcnZlKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcmVzZXJ2ZSlcbiAgICAgICAgICAgICAgICBub2RlLmNhc2UgPSAncHJlc2VydmUnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21hcmt1cCwgb25dIG9mIE9iamVjdC5lbnRyaWVzKG5vZGUubWFya3VwKSkge1xuICAgICAgICAgICAgICAgIGlmICghb24pXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBub2RlLm1hcmt1cFttYXJrdXBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBjbGVhbl9kaWFjcml0aWMobm9kZSkge1xuICAgICAgICBjb25zdCBjaGFyID0gbm9kZS5kb3RsZXNzID8gYFxcXFwke25vZGUuY2hhcmFjdGVyfWAgOiBub2RlLmNoYXJhY3RlcjtcbiAgICAgICAgbGV0IHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUubWFya317JHtjaGFyfX1gXVxuICAgICAgICAgICAgfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLm1hcmt9JHtjaGFyfWBdXG4gICAgICAgICAgICB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYHtcXFxcJHtub2RlLm1hcmt9ICR7Y2hhcn19YF1cbiAgICAgICAgICAgIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtge1xcXFwke25vZGUubWFya30ke2NoYXJ9fWBdXG4gICAgICAgICAgICB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUubWFya30gJHtjaGFyfWBdO1xuICAgICAgICBpZiAoIXVuaWNvZGUgJiYgIW5vZGUuZG90bGVzcyAmJiBub2RlLmNoYXJhY3Rlci5sZW5ndGggPT09IDEgJiYgdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MudG91bmljb2RlW25vZGUubWFya10pXG4gICAgICAgICAgICB1bmljb2RlID0gbm9kZS5jaGFyYWN0ZXIgKyB1bmljb2RlMmxhdGV4XzEuZGlhY3JpdGljcy50b3VuaWNvZGVbbm9kZS5tYXJrXTtcbiAgICAgICAgaWYgKCF1bmljb2RlICYmICF0aGlzLmluX3ByZWFtYmxlKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFRlWEVycm9yKGBVbmhhbmRsZWQgXFxcXCR7bm9kZS5tYXJrfXske2NoYXJ9fWAsIG5vZGUsIHRoaXMuY2h1bmspLCB0aGlzLnRleHQoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgfVxuICAgIGNsZWFuX3N5bWJvbChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmNvbW1hbmQgPT09ICdcXFxcJylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoJ1xcbicpO1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfWBdIHx8IG5vZGUuY29tbWFuZCk7XG4gICAgfVxuICAgIGZpcnN0X3RleHRfYmxvY2sobm9kZSkge1xuICAgICAgICBpZiAoIW5vZGUpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKG5vZGUua2luZCA9PT0gJ0Jsb2NrJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjaGlsZC5raW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnZhbHVlID8gbm9kZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHRoaXMuZmlyc3RfdGV4dF9ibG9jayhjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNsZWFuX2NvbW1hbmQobm9kZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGxldCBhcmcsIHVuaWNvZGU7XG4gICAgICAgIGlmICh1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W25vZGUuc291cmNlXSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgICAgIHN3aXRjaCAobm9kZS5jb21tYW5kKSB7XG4gICAgICAgICAgICBjYXNlICduZXdjb21tYW5kJzpcbiAgICAgICAgICAgICAgICBpZiAoKChfYSA9IG5vZGUuYXJndW1lbnRzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVxdWlyZWQubGVuZ3RoKSA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5raW5kID09PSAnQmxvY2snXG4gICAgICAgICAgICAgICAgICAgICYmIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdLnZhbHVlLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZVswXS5raW5kID09PSAnUmVndWxhckNvbW1hbmQnXG4gICAgICAgICAgICAgICAgICAgICYmIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzFdLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdjb21tYW5kc1tub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZVswXS5jb21tYW5kXSA9IG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzFdLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCduZXdjb21tYW5kPycsIEpTT04uc3RyaW5naWZ5KG5vZGUsIG51bGwsIDIpKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ01hcmt1cCcsIHZhbHVlOiAnPGxpPicsIHNvdXJjZTogbm9kZS5zb3VyY2UgfTtcbiAgICAgICAgICAgIGNhc2UgJ2ZyYWMnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsIDIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdbMF0ua2luZCA9PT0gJ1RleHQnICYmIGFyZ1sxXS5raW5kID09PSAnVGV4dCcgJiYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFxmcmFjeyR7YXJnWzBdLnZhbHVlfX17JHthcmdbMV0udmFsdWV9fWBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlOiAncHJvdGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtpbmQ6ICdCbG9jaycsIG1hcmt1cDogeyBzdXA6IHRydWUgfSwgdmFsdWU6IFthcmdbMF1dIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0KCdcXHUyMDQ0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBraW5kOiAnQmxvY2snLCBtYXJrdXA6IHsgc3ViOiB0cnVlIH0sIHZhbHVlOiBbYXJnWzFdXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICBjYXNlICd2c3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAndnBoYW50b20nOlxuICAgICAgICAgICAgY2FzZSAncGF0aCc6XG4gICAgICAgICAgICBjYXNlICdhZnRlcmdyb3VwJzpcbiAgICAgICAgICAgIGNhc2UgJ2lnbm9yZXNwYWNlcyc6XG4gICAgICAgICAgICBjYXNlICdyZWxheCc6XG4gICAgICAgICAgICBjYXNlICdub29wc29ydCc6XG4gICAgICAgICAgICBjYXNlICdpZmRlZmluZWQnOlxuICAgICAgICAgICAgY2FzZSAnRGVjbGFyZVByZWZDaGFycyc6XG4gICAgICAgICAgICBjYXNlICdlbHNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2ZpJzpcbiAgICAgICAgICAgIGNhc2UgJ21ha2VhdGxldHRlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpO1xuICAgICAgICAgICAgY2FzZSAnRWxzZXZpZXJHbHlwaCc6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ1RleHQnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfXske2FyZ319YF0pXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYXJnLCAxNikpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjaHNmJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiaWJzdHJpbmcnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2l0ZSc6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXh0c3VwZXJzY3JpcHQnOlxuICAgICAgICAgICAgY2FzZSAnc3AnOlxuICAgICAgICAgICAgICAgIGlmICgoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKSAmJiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXnske2FyZ319YF0pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGV4dHN1YnNjcmlwdCc6XG4gICAgICAgICAgICBjYXNlICdzYic6XG4gICAgICAgICAgICAgICAgaWYgKChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdUZXh0JykpICYmICh1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2BfeyR7YXJnfX1gXSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXh0c2MnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW5xdW90ZSc6XG4gICAgICAgICAgICBjYXNlICdta2JpYnF1b3RlJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RleHRiZic6XG4gICAgICAgICAgICBjYXNlICdta2JpYmJvbGQnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2VjdGlvbic6XG4gICAgICAgICAgICBjYXNlICdzdWJzZWN0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ3N1YnN1YnNlY3Rpb24nOlxuICAgICAgICAgICAgY2FzZSAnc3Vic3Vic3Vic2VjdGlvbic6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdta2JpYml0YWxpYyc6XG4gICAgICAgICAgICBjYXNlICdta2JpYmVtcGgnOlxuICAgICAgICAgICAgY2FzZSAndGV4dGl0JzpcbiAgICAgICAgICAgIGNhc2UgJ2VtcGgnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdUZXh0JykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHsga2luZDogJ0Jsb2NrJywgbWFya3VwOiB7IGl0YWxpY3M6IHRydWUgfSwgdmFsdWU6IFt0aGlzLnRleHQoYXJnKV0gfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiaWJjeXInOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFyZ3VtZW50KG5vZGUsICdub25lJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdtYXRocm0nOlxuICAgICAgICAgICAgY2FzZSAndGV4dHJtJzpcbiAgICAgICAgICAgIGNhc2UgJ29jaXJjJzpcbiAgICAgICAgICAgIGNhc2UgJ21ib3gnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfXske2FyZ319YF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSB8fCAobm9kZS5jb21tYW5kID09PSAnaHNwYWNlJyA/ICcgJyA6IGFyZykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghbm9kZS5hcmd1bWVudHMucmVxdWlyZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIGp1c3QgdGFrZSB0aGUgVVJMPyBOb3QgdGhlIGxhYmVsP1xuICAgICAgICAgICAgY2FzZSAnaHJlZic6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgMikpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZ1swXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1cmwnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdUZXh0JykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoYXJnKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NsJzpcbiAgICAgICAgICAgIGNhc2UgJ2VtJzpcbiAgICAgICAgICAgIGNhc2UgJ2l0JzpcbiAgICAgICAgICAgIGNhc2UgJ2l0c2hhcGUnOlxuICAgICAgICAgICAgY2FzZSAnYmYnOlxuICAgICAgICAgICAgY2FzZSAnYmZzZXJpZXMnOlxuICAgICAgICAgICAgY2FzZSAnc2MnOlxuICAgICAgICAgICAgY2FzZSAnc2NzaGFwZSc6XG4gICAgICAgICAgICBjYXNlICd0dCc6XG4gICAgICAgICAgICBjYXNlICdybSc6XG4gICAgICAgICAgICBjYXNlICdzZic6XG4gICAgICAgICAgICBjYXNlICd2ZXJiJzpcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGVkIGluIHRoZSBncmFtbWFyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpO1xuICAgICAgICAgICAgLy8gd291bGRuJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdGhlc2VcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgIGNhc2UgJ3Bhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgnXFxuXFxuJyk7XG4gICAgICAgICAgICBjYXNlICdjeXInOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFyZ3VtZW50KG5vZGUsICdub25lJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BvbGhrJzpcbiAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ3RleHQnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZS5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUgKyAnXFx1MDMyOCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCdcXHUwMzI4Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdSZWd1bGFyQ29tbWFuZCcgJiYgdGhpcy5uZXdjb21tYW5kc1tub2RlLmNvbW1hbmRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5uZXdjb21tYW5kc1tub2RlLmNvbW1hbmRdKSksXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MudG91bmljb2RlW25vZGUuY29tbWFuZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hcmd1bWVudHMucmVxdWlyZWQgPSB0aGlzLmNsZWFuKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5hcmd1bWVudHMucmVxdWlyZWQubGVuZ3RoID09PSAxICYmIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdLmtpbmQgPT09ICdUZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gaWRlYSB3aHkgSSBjYW4ndCBqdXN0IHN0cmFpZ2h0IHJldHVybiB0aGlzIGJ1dCB0eXBlc2NyaXB0IGp1c3Qgd29uJ3Qgc2h1dCB1cFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ0Jsb2NrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ0RpYWNyaXRpY0NvbW1hbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyazogbm9kZS5jb21tYW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyOiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdGxlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5sb2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYmxvY2spO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrID0gdGhpcy5maXJzdF90ZXh0X2Jsb2NrKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpeGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay52YWx1ZSA9IGJsb2NrLnZhbHVlLnJlZHVjZSgodmFsdWUsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXhlZCAmJiBjaGlsZC5raW5kID09PSAnVGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wdXNoKHsga2luZDogJ0RpYWNyaXRpY0NvbW1hbmQnLCBtYXJrOiBub2RlLmNvbW1hbmQsIGNoYXJhY3RlcjogY2hpbGQudmFsdWVbMF0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnB1c2goT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjaGlsZCksIHsgdmFsdWU6IGNoaWxkLnZhbHVlLnN1YnN0cmluZygxKSB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbm9kZS5hcmd1bWVudHMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJsaW5lIHdpdGhvdXQgYXJndW1lbnRzIGRvZXNuJ3Qgc2VlbSB0byByZW5kZXIgaW4gTGFUZVhcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmNvbW1hbmQgPT09ICdvdmVybGluZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgnICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW3RoaXMudGV4dCgnICcgKyB1bmljb2RlMmxhdGV4XzEuZGlhY3JpdGljcy50b3VuaWNvZGVbbm9kZS5jb21tYW5kXSldLmNvbmNhdChub2RlLmFyZ3VtZW50cy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtub2RlLnNvdXJjZV0gfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake25vZGUuc291cmNlfXt9YF0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgICAgICAgICAgICAgaWYgKCh1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLmNvbW1hbmR9YF0gfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLmNvbW1hbmR9e31gXSkgJiYgdGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGlmICgoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKSAmJiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfXske2FyZ319YF0pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluX3ByZWFtYmxlKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChub2RlLnNvdXJjZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBUZVhFcnJvcihgVW5oYW5kbGVkIGNvbW1hbmQ6ICR7bm9kZS5jb21tYW5kfWAgKyB0aGlzLnNob3cobm9kZSksIG5vZGUsIHRoaXMuY2h1bmspLCB0aGlzLnRleHQoKSk7XG4gICAgfVxuICAgIHByZXNlcnZlQ2FzZSh3b3JkKSB7XG4gICAgICAgIC8vIHdvcmQgPSB3b3JkLnJlcGxhY2UobmV3IFJlZ0V4cChgXCJbJHt0aGlzLm1hcmt1cC5lbnF1b3RlLm9wZW59JHt0aGlzLm1hcmt1cC5lbnF1b3RlLmNsb3NlfTooKV1gLCAnZycpLCAnJylcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKCF3b3JkLnRyaW0oKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCF3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5oYXNBbHBoYU51bSkpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgd29yZCA9IHdvcmQucmVwbGFjZSgvW1xcL+KAmSfigJ06KCldL2csICcnKTtcbiAgICAgICAgaWYgKHdvcmQgPT09ICdJJylcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh3b3JkLnJlcGxhY2UocHJlc2VydmVDYXNlLm5vdENhc2VTZW5zaXRpdmUpID09PSAnJylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gd29yZCA9IHdvcmQucmVwbGFjZShwcmVzZXJ2ZUNhc2Uubm90QWxwaGFOdW0sICcnKVxuICAgICAgICAvLyBzaW1wbGUgY2FwIGF0IHN0YXJ0IG9mIGZpZWxkXG4gICAgICAgIGlmICh3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5sZWFkaW5nQ2FwKSAmJiAoKF9iID0gKF9hID0gdGhpcy5maWVsZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuYWxsQ2FwcykpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHdvcmQubGVuZ3RoID4gMSAmJiB3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5qb2luZWQpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaGFzVXBwZXIpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5pc051bWJlcikpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb252ZXJ0KG5vZGUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5tYXAoY2hpbGQgPT4gdGhpcy5jb252ZXJ0KGNoaWxkKSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmF3ICYmIHRoaXMuZmllbGQpXG4gICAgICAgICAgICBub2RlID0gdGhpcy50ZXh0KG5vZGUuc291cmNlKTtcbiAgICAgICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ01hcmt1cCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSBub2RlLnZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQnJhY2VkQ29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICdMaW5lQ29tbWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tZW50cy5wdXNoKG5vZGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRW50cnknOlxuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydF9lbnRyeShub2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ051bWJlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0X251bWJlcihub2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydF90ZXh0KG5vZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgICAgY2FzZSAnSW5saW5lTWF0aCc6XG4gICAgICAgICAgICBjYXNlICdEaXNwbGF5TWF0aCc6XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmZpZWxkID8gdGhpcy5maWVsZC50ZXh0Lmxlbmd0aCA6IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlc2VydmUgPSB0eXBlb2Ygc3RhcnQgPT09ICdudW1iZXInICYmIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0X2Jsb2NrKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZSAmJiAobm9kZS5jYXNlIHx8IG5vZGUua2luZC5lbmRzV2l0aCgnTWF0aCcpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZShzdGFydCwgdGhpcy5maWVsZC50ZXh0Lmxlbmd0aCk7IC8vICwgYGNvbnZlcnQtYmxvY2s6IGNhc2U9JHtub2RlLmNhc2V9LCBtYXRoPSR7bm9kZS5raW5kLmVuZHNXaXRoKCdNYXRoJyl9YClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Vudmlyb25tZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRfZW52aXJvbm1lbnQobm9kZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQcmVhbWJsZUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgICAgIHRoaXMucHJlYW1ibGUucHVzaChub2RlLnZhbHVlLm1hcChwcmVhbWJsZSA9PiBwcmVhbWJsZS5zb3VyY2UpLmpvaW4oJ1xcblxcbicpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Rpc3BsYXlNYXRoJzpcbiAgICAgICAgICAgIGNhc2UgJ0lubGluZU1hdGgnOlxuICAgICAgICAgICAgY2FzZSAnU3RyaW5nRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihuZXcgUGFyc2VyRXJyb3IoYG5vIGNvbnZlcnRlciBmb3IgJHtub2RlLmtpbmR9OiAke3RoaXMuc2hvdyhub2RlKX1gLCBub2RlKSwgdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzcGxpdE9uY2Uocywgc2VwLCBmcm9tRW5kID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgc3BsaXQgPSBmcm9tRW5kID8gcy5sYXN0SW5kZXhPZihzZXApIDogcy5pbmRleE9mKHNlcCk7XG4gICAgICAgIHJldHVybiAoc3BsaXQgPCAwKSA/IFtzLCAnJ10gOiBbcy5zdWJzdHIoMCwgc3BsaXQpLCBzLnN1YnN0cihzcGxpdCArIDEpXTtcbiAgICB9XG4gICAgcGFyc2VOYW1lKG5hbWUpIHtcbiAgICAgICAgbGV0IHBhcnNlZCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdChtYXJrZXIuY29tbWEpO1xuICAgICAgICBpZiAocGFydHMubGVuZ3RoICYmICFwYXJ0cy5maW5kKHAgPT4gIXAubWF0Y2goL15bYS16XSsoLWkpPz0vaSkpKSB7IC8vIGV4dGVuZGVkIG5hbWUgZm9ybWF0XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWQgPSBwYXJzZWQgfHwge307XG4gICAgICAgICAgICAgICAgY29uc3QgW2F0dHIsIHZhbHVlXSA9IHRoaXMuc3BsaXRPbmNlKHBhcnQucmVwbGFjZShtYXJrZXIucmUuc3BhY2UsICcnKSwgJz0nKS5tYXAodiA9PiB2LnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3dpdGNoIChhdHRyLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFtaWx5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5sYXN0TmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dpdmVuLWknOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLmluaXRpYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdnaXZlbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQuZmlyc3ROYW1lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlZml4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wcmVmaXggPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzdWZmaXgnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnN1ZmZpeCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VzZXByZWZpeCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQudXNlcHJlZml4ID0gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2p1bmlvcmNvbW1hJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC51c2VwcmVmaXggPSB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFthdHRyLnRvTG93ZXJDYXNlKCldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJlZml4ID0gLyguKz8pXFxzKyh2ZXJlfHZvbnx2YW4gZGVufHZhbiBkZXJ8dmFufGRlfGRlbHxkZWxsYXxkZXJ8ZGl8ZGF8cGlldHJvfHZhbmRlbnxkdXxzdC58c3R8bGF8bG98dGVyfGJpbnxpYm58dGV8dGVufG9wfGJlbnxhbClcXHMrKC4rKS87XG4gICAgICAgIGxldCBtO1xuICAgICAgICBzd2l0Y2ggKHBhcnNlZCA/IDAgOiBwYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IHBhcnNlZFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAxOiAvLyBuYW1lIHdpdGhvdXQgY29tbWFzXG4gICAgICAgICAgICAgICAgLy8gbGl0ZXJhbFxuICAgICAgICAgICAgICAgIGlmIChtYXJrZXIucmUubGl0ZXJhbE5hbWUudGVzdChwYXJ0c1swXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0geyBsaXRlcmFsOiBwYXJ0c1swXSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtID0gcGFydHNbMF0ucmVwbGFjZShtYXJrZXIucmUuc3BhY2UsICcgJykubWF0Y2gocHJlZml4KSkgeyAvLyBzcGxpdCBvbiBwcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBtWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiBtWzJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IG1bM10sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyB0b3AtbGV2ZWwgXCJmaXJzdG5hbWUgbGFzdG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbZmlyc3ROYW1lLCBsYXN0TmFtZV0gPSB0aGlzLnNwbGl0T25jZShwYXJ0c1swXSwgbWFya2VyLnNwYWNlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQgPSB7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IHsgbGFzdE5hbWU6IGZpcnN0TmFtZSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyOiAvLyBsYXN0bmFtZSwgZmlyc3RuYW1lXG4gICAgICAgICAgICAgICAgcGFyc2VkID0ge1xuICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogcGFydHNbMF0sXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogcGFydHNbMV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIGxhc3RuYW1lLCBzdWZmaXgsIGZpcnN0bmFtZVxuICAgICAgICAgICAgICAgIHBhcnNlZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHBhcnRzWzBdLFxuICAgICAgICAgICAgICAgICAgICBzdWZmaXg6IHBhcnRzWzFdLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHBhcnRzLnNsaWNlKDIpLmpvaW4obWFya2VyLmNvbW1hKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcnNlZCkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBwYXJzZWRba10gPSBtYXJrZXIuY2xlYW4odikudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfVxuICAgIGNvbnZlcnRfZW50cnkobm9kZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuZW50cnkgPSB7XG4gICAgICAgICAgICBrZXk6IG5vZGUuaWQsXG4gICAgICAgICAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgICAgICAgICBmaWVsZHM6IHt9LFxuICAgICAgICAgICAgY3JlYXRvcnM6IHt9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmVudHJpZXMucHVzaCh0aGlzLmVudHJ5KTtcbiAgICAgICAgLy8gb3JkZXIgdGhlc2UgZmlyc3QgZm9yIGxhbmd1YWdlLWRlcGVuZGVudCBzZW50ZW5jZSBjYXNpbmdcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ2xhbmdpZCcsICdoeXBoZW5hdGlvbicsICdsYW5ndWFnZSddO1xuICAgICAgICBub2RlLmZpZWxkcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpYSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IGliID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGlhID09PSAtMSAmJiBpYiA9PT0gLTEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7IC8vIGRvZXNuJ3QgbWF0dGVyIHJlYWxseVxuICAgICAgICAgICAgaWYgKGlhID09PSAtMSlcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIGlmIChpYiA9PT0gLTEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgcmV0dXJuIGlhIC0gaWI7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgc2VudGVuY2VDYXNlID0gISF0aGlzLm9wdGlvbnMuc2VudGVuY2VDYXNlLmxlbmd0aDsgLy8gaWYgc2VudGVuY2VDYXNlIGlzIGVtcHR5LCBubyBzZW50ZW5jZSBjYXNpbmdcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBub2RlLmZpZWxkcykge1xuICAgICAgICAgICAgaWYgKGZpZWxkLmtpbmQgIT09ICdGaWVsZCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFBhcnNlckVycm9yKGBFeHBlY3RlZCBGaWVsZCwgZ290ICR7ZmllbGQua2luZH1gLCBub2RlKSwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDbGVhbmluZyhmaWVsZC5uYW1lKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhdyAmJiB0aGlzLmZpZWxkVHlwZSAhPT0gJ2NyZWF0b3InKSB7XG4gICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW2ZpZWxkLm5hbWVdID0gWyBmaWVsZC52YWx1ZS5tYXAodiA9PiB2LnNvdXJjZSkuam9pbignJykgXVxuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuZmllbGQgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgICAgICB3b3Jkczoge1xuICAgICAgICAgICAgICAgICAgICB1cHBlcjogMCxcbiAgICAgICAgICAgICAgICAgICAgbG93ZXI6IDAsXG4gICAgICAgICAgICAgICAgICAgIG90aGVyOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJlc2VydmVSYW5nZXM6IChzZW50ZW5jZUNhc2UgJiYgZmllbGRzLnRpdGxlLmluY2x1ZGVzKGZpZWxkLm5hbWUpKSA/IFtdIDogbnVsbCxcbiAgICAgICAgICAgICAgICBodG1sOiB0aGlzLm9wdGlvbnMuaHRtbEZpZWxkcy5pbmNsdWRlcyhmaWVsZC5uYW1lKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdID0gdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXSB8fCBbXTtcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgJ3RpdGxlID0gMjAyMCdcbiAgICAgICAgICAgIGlmIChmaWVsZC52YWx1ZS5raW5kID09PSAnTnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0ucHVzaChmaWVsZC52YWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnQoZmllbGQudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ID0gdGhpcy5maWVsZC50ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCA9IHRoaXMuZmllbGQudGV4dC5yZXBsYWNlKC88XFwvKFthLXpdKT48XFwxPi9nLCAnJyk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZSgvPChbYS16XSk+KFxccyopPFxcL1xcMT4vZywgJyQxJyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQudGV4dClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIC8vIGRpc2FibGUgc2VudGVuY2VDYXNpbmcgaWYgbm90IGFuIGVuZ2xpc2hcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5maWVsZC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnbGFuZ2lkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdoeXBoZW5hdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHNlbnRlbmNlQ2FzZSA9IHNlbnRlbmNlQ2FzZSAmJiB0aGlzLm9wdGlvbnMuc2VudGVuY2VDYXNlLmluY2x1ZGVzKHRoaXMuZmllbGQudGV4dC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2UnOlxuICAgICAgICAgICAgICAgICAgICBzZW50ZW5jZUNhc2UgPSBzZW50ZW5jZUNhc2UgJiYgISEodGhpcy5maWVsZC50ZXh0LnRvTG93ZXJDYXNlKCkudHJpbSgpLnNwbGl0KC9cXHMqLFxccyovKS5maW5kKGxhbmcgPT4gdGhpcy5vcHRpb25zLnNlbnRlbmNlQ2FzZS5pbmNsdWRlcyhsYW5nKSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFwiZ3JvdXBzXCIgaXMgYSBqYWJyZWYgMy44KyBtb25zdHJvc2l0eVxuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQubmFtZS5tYXRjaCgvXihrZXl3b3Jkcz98Z3JvdXBzKSQvKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHRleHQgb2YgdGhpcy5maWVsZC50ZXh0LnNwbGl0KG1hcmtlci5jb21tYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0ucHVzaCh0ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNsZWFuaW5nLnR5cGUgPT09ICdjcmVhdG9yJykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbnRyeS5jcmVhdG9yc1t0aGlzLmZpZWxkLm5hbWVdKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmNyZWF0b3JzW3RoaXMuZmllbGQubmFtZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAvLyB7TS4gSGFsbGUsIEouIEJyZXNuYW4sIGFuZCBHLiBNaWxsZXJ9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQudGV4dC5pbmNsdWRlcyhgJHttYXJrZXIuY29tbWF9JHttYXJrZXIuYW5kfWApKSB7IC8vXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCA9IHRoaXMuZmllbGQudGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7bWFya2VyLmNvbW1hfSR7bWFya2VyLmFuZH1gLCAnZycpLCBtYXJrZXIuYW5kKS5yZXBsYWNlKG5ldyBSZWdFeHAobWFya2VyLmNvbW1hKSwgbWFya2VyLmFuZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY3JlYXRvciBvZiB0aGlzLmZpZWxkLnRleHQuc3BsaXQobWFya2VyLmFuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXS5wdXNoKG1hcmtlci5jbGVhbihjcmVhdG9yKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuY3JlYXRvcnNbdGhpcy5maWVsZC5uYW1lXS5wdXNoKHRoaXMucGFyc2VOYW1lKGNyZWF0b3IpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChmaWVsZHMudW5hYmJyZXYuaW5jbHVkZXMoZmllbGQubmFtZSkpIHsgLy8gZG9lc24ndCBnZXQgc2VudGVuY2UgY2FzaW5nIGFueWhvdyBUT0RPOiBib29rdGl0bGUgZG9lcyFcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdLnB1c2goKCgoX2EgPSB0aGlzLm9wdGlvbnMudW5hYmJyZXZpYXRlW3RoaXMuZmllbGQudGV4dF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCB0aGlzLmZpZWxkLnRleHQpLm5vcm1hbGl6ZSgnTkZDJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ndWVzc0FscmVhZHlTZW50ZW5jZUNhc2VkICYmIE1hdGgubWF4KHRoaXMuZmllbGQud29yZHMudXBwZXIsIHRoaXMuZmllbGQud29yZHMubG93ZXIpID4gKHRoaXMuZmllbGQud29yZHMub3RoZXIgKyBNYXRoLm1pbih0aGlzLmZpZWxkLndvcmRzLnVwcGVyLCB0aGlzLmZpZWxkLndvcmRzLmxvd2VyKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VydmUobnVsbCwgbnVsbCk7IC8vICwgJ21vc3RseSBzZW50ZW5jZSBjYXNlZCBhbHJlYWR5JylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR4dCA9IHRoaXMuZmllbGQudGV4dC5yZXBsYWNlKHByZXNlcnZlQ2FzZS5tYXJrdXAsIG1hcmt1cCA9PiBtYXJrZXIubWFya3VwLnJlcGVhdChtYXJrdXAubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUNhc2Uuc2VudGVuY2VTdGFydC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChtYXRjaCA9IHByZXNlcnZlQ2FzZS5zZW50ZW5jZVN0YXJ0LmV4ZWModHh0KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGNsdWRlIHN0dWZmIGxpa2UgXCJVLlMuIFRheGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2guaW5kZXggPiAyICYmIHR4dC5zdWJzdHIoMCwgbWF0Y2guaW5kZXggKyAxKS5tYXRjaChwcmVzZXJ2ZUNhc2UuYWNyb255bSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VydmUobWF0Y2guaW5kZXgsIG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKTsgLy8gLCBgc2VudGVuY2VTdGFydDogJHttYXRjaFswXX0gYXQgJHttYXRjaC5pbmRleH0uLiR7bWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGh9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQ2FzZS5xdW90ZWQubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBwcmVzZXJ2ZUNhc2UucXVvdGVkLmV4ZWModGhpcy5maWVsZC50ZXh0KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlKG1hdGNoLmluZGV4LCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7IC8vICwgJ3F1b3RlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXS5wdXNoKHRoaXMuY29udmVydFRvU2VudGVuY2VDYXNlKHRoaXMuZmllbGQudGV4dCkubm9ybWFsaXplKCdORkMnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWVsZCA9IG51bGw7XG4gICAgfVxuICAgIGNvbnZlcnRUb1NlbnRlbmNlQ2FzZSh0ZXh0KSB7XG4gICAgICAgIGlmICghdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcylcbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAvLyBhbHdheXMga2VlcCB0aGUgbGVhZGluZyBjaGFyLCBidXQgc2tpcCBtYXJrdXBcbiAgICAgICAgY29uc3QgbGVhZCA9IHRleHQubWF0Y2goL14oPFtePl0rPikqLi8pO1xuICAgICAgICBpZiAobGVhZCkge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZShsZWFkWzBdLmxlbmd0aCAtIDEsIGxlYWRbMF0ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJlc2VydmUoMCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNlbnRlbmNlQ2FzZWQgPSB0ZXh0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKChbXFw/IV1cXHMqfF4pKFtcXCdcXFwiwqHCv+KAnOKAmOKAnsKrXFxzXSspP1teXFxzXSkvZywgeCA9PiB4LnRvVXBwZXJDYXNlKCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgc3RhcnQsIGVuZCB9IG9mIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpIHtcbiAgICAgICAgICAgIHNlbnRlbmNlQ2FzZWQgPSBzZW50ZW5jZUNhc2VkLnN1YnN0cmluZygwLCBzdGFydCkgKyB0ZXh0LnN1YnN0cmluZyhzdGFydCwgZW5kKSArIHNlbnRlbmNlQ2FzZWQuc3Vic3RyaW5nKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRleHQgIT09IHNlbnRlbmNlQ2FzZWQpXG4gICAgICAgICAgICB0aGlzLmVudHJ5LnNlbnRlbmNlQ2FzZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gc2VudGVuY2VDYXNlZDtcbiAgICB9XG4gICAgY29udmVydF9udW1iZXIobm9kZSkge1xuICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gYCR7bm9kZS52YWx1ZX1gO1xuICAgIH1cbiAgICBjb252ZXJ0X3RleHQobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5tb2RlID09PSAndmVyYmF0aW0nKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gbm9kZS52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaGV1cmlzdGljIHRvIGRldGVjdCBwcmUtc2VudGVuY2VjYXNlZCB0ZXh0XG4gICAgICAgIGZvciAoY29uc3Qgd29yZCBvZiBub2RlLnZhbHVlLnNwbGl0KC9cXGIvKSkge1xuICAgICAgICAgICAgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmFsbExvd2VyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQud29yZHMubG93ZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmFsbENhcHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC53b3Jkcy51cHBlcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaGFzQWxwaGEpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC53b3Jkcy5vdGhlcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmxldmVsID09PSAwICYmIHRoaXMuY2xlYW5pbmcudHlwZSA9PT0gJ2NyZWF0b3InKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gbm9kZS52YWx1ZS5yZXBsYWNlKC9cXHMrYW5kXFxzKy9pZywgbWFya2VyLmFuZCkucmVwbGFjZSgvXFxzKixcXHMqL2csIG1hcmtlci5jb21tYSkucmVwbGFjZSgvXFxzKy9nLCBtYXJrZXIuc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmxldmVsID09PSAwICYmIHRoaXMuZmllbGQubmFtZS5tYXRjaCgvXihrZXl3b3Jkcz98Z3JvdXBzKSQvKSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWUucmVwbGFjZSgvXFxzKls7LF1cXHMqL2csIG1hcmtlci5jb21tYSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmllbGQuaHRtbCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWUucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gbm9kZS52YWx1ZS5zcGxpdCgvKFxccyspLyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZmllbGQudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IHdvcmQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJlc2VydmVDYXNlKHdvcmQpKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlKHN0YXJ0LCB0aGlzLmZpZWxkLnRleHQubGVuZ3RoKTsgLy8gLCBgd29yZDogJHtKU09OLnN0cmluZ2lmeSh3b3JkKX1gKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29udmVydF9lbnZpcm9ubWVudChub2RlKSB7XG4gICAgICAgIHRoaXMuZmllbGQudGV4dCArPSB7IGVudW1lcmF0ZTogJzxvbD4nLCBpdGVtaXplOiAnPHVsPicgfVtub2RlLmVudl07XG4gICAgICAgIHRoaXMuY29udmVydF9ibG9jayhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5vZGUpLCB7IGtpbmQ6ICdCbG9jaycsIG1hcmt1cDoge30gfSkpO1xuICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0geyBlbnVtZXJhdGU6ICc8L29sPicsIGl0ZW1pemU6ICc8L3VsPicgfVtub2RlLmVudl07XG4gICAgfVxuICAgIGNvbnZlcnRfYmxvY2sobm9kZSkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZmllbGQudGV4dC5sZW5ndGg7XG4gICAgICAgIGxldCBwcmVmaXggPSAnJztcbiAgICAgICAgbGV0IHBvc3RmaXggPSAnJztcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jYXNlUHJvdGVjdGlvbiAhPT0gJ3N0cmljdCcgJiYgdGhpcy5jbGVhbmluZy50eXBlID09PSAnb3RoZXInKVxuICAgICAgICAgICAgZGVsZXRlIG5vZGUuY2FzZTtcbiAgICAgICAgaWYgKHRoaXMuY2xlYW5pbmcudHlwZSA9PT0gJ2NyZWF0b3InICYmIG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnKSB7XG4gICAgICAgICAgICBwcmVmaXggKz0gbWFya2VyLmxpdGVyYWw7XG4gICAgICAgICAgICBwb3N0Zml4ID0gbWFya2VyLmxpdGVyYWwgKyBwb3N0Zml4O1xuICAgICAgICAgICAgZGVsZXRlIG5vZGUuY2FzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5jYXNlID09PSAncHJvdGVjdCcpIHtcbiAgICAgICAgICAgIHByZWZpeCArPSB0aGlzLm9wdGlvbnMubWFya3VwLmNhc2VQcm90ZWN0Lm9wZW47XG4gICAgICAgICAgICBwb3N0Zml4ID0gdGhpcy5vcHRpb25zLm1hcmt1cC5jYXNlUHJvdGVjdC5jbG9zZSArIHBvc3RmaXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUua2luZCA9PT0gJ0Jsb2NrJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXJrdXAgb2YgT2JqZWN0LmtleXMobm9kZS5tYXJrdXApKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMubWFya3VwW21hcmt1cF0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBQYXJzZXJFcnJvcihgbWFya3VwOiAke21hcmt1cH1gLCBub2RlKSwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICBwcmVmaXggKz0gdGhpcy5vcHRpb25zLm1hcmt1cFttYXJrdXBdLm9wZW47XG4gICAgICAgICAgICAgICAgcG9zdGZpeCA9IHRoaXMub3B0aW9ucy5tYXJrdXBbbWFya3VwXS5jbG9zZSArIHBvc3RmaXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW5kID0ge1xuICAgICAgICAgICAgd2l0aG91dFByZWZpeDogdGhpcy5maWVsZC50ZXh0Lmxlbmd0aCxcbiAgICAgICAgICAgIHdpdGhQcmVmaXg6IHRoaXMuZmllbGQudGV4dC5sZW5ndGggKyBwcmVmaXgubGVuZ3RoLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gcHJlZml4O1xuICAgICAgICB0aGlzLmZpZWxkLmxldmVsKys7XG4gICAgICAgIHRoaXMuY29udmVydChub2RlLnZhbHVlKTtcbiAgICAgICAgdGhpcy5maWVsZC5sZXZlbC0tO1xuICAgICAgICBjb25zdCBhZGRlZCA9IHRoaXMuZmllbGQudGV4dC5zdWJzdHJpbmcoZW5kLndpdGhQcmVmaXgpO1xuICAgICAgICBjb25zdCBhZGRlZF90ZXh0ID0gYWRkZWQucmVwbGFjZSgvPFxcLz9bXj5dKz4vZywgJycpO1xuICAgICAgICBjb25zdCBuZWVkc1Byb3RlY3Rpb24gPSBhZGRlZF90ZXh0ICYmICgodGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uID09PSAnc3RyaWN0JyAmJiBhZGRlZF90ZXh0Lm1hdGNoKHByZXNlcnZlQ2FzZS5pc0Nhc2VTZW5zaXRpdmUpKVxuICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uID09PSAnYXMtbmVlZGVkJyAmJiBhZGRlZF90ZXh0LnNwbGl0KC9cXHMrLykuZmluZCh3b3JkID0+IHRoaXMubmVlZHNQcm90ZWN0aW9uKHdvcmQpKSkpO1xuICAgICAgICBpZiAoIWFkZGVkKSB7IC8vIG5vdGhpbmcgd2FzIGFkZGVkLCBzbyByZW1vdmUgcHJlZml4XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQuc3Vic3RyaW5nKDAsIGVuZC53aXRob3V0UHJlZml4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzICYmIHByZWZpeCA9PT0gdGhpcy5vcHRpb25zLm1hcmt1cC5jYXNlUHJvdGVjdC5vcGVuICYmICFuZWVkc1Byb3RlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIHNvbWV0aGluZyB3YXMgYWRkZWQgdGhhdCBkaWRuJ3QgYWN0dWFsbHkgbmVlZCBjYXNlIHByb3RlY3Rpb25cbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCA9IHRoaXMuZmllbGQudGV4dC5zdWJzdHJpbmcoMCwgZW5kLndpdGhvdXRQcmVmaXgpICsgYWRkZWQ7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzID0gdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcy5maWx0ZXIocmFuZ2UgPT4gcmFuZ2Uuc3RhcnQgPCBlbmQud2l0aG91dFByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gcG9zdGZpeDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZSgvPChzdXB8c3ViKT4oW148Pl0rKTxcXC9cXDE+JC9pLCAobSwgbW9kZSwgY2hhcnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNtZCA9IG1vZGUgPT09ICdzdXAnID8gJ14nIDogJ18nO1xuICAgICAgICAgICAgbGV0IHNjcmlwdCA9ICcnO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaGFyIG9mIGNoYXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHtjbWR9JHtjaGFyfWBdIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHtjbWR9eyR7Y2hhcn19YF07XG4gICAgICAgICAgICAgICAgc2NyaXB0ICs9IHVuaWNvZGUgPyB1bmljb2RlIDogYDwke21vZGV9PiR7Y2hhcn08LyR7bW9kZX0+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHttb2RlfT48JHttb2RlfT5gLCAnZycpLCAnJyk7XG4gICAgICAgICAgICByZXR1cm4gc2NyaXB0Lmxlbmd0aCA8IG0ubGVuZ3RoID8gc2NyaXB0IDogbTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChub2RlLmNhc2UgJiYgdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcylcbiAgICAgICAgICAgIHRoaXMucHJlc2VydmUoc3RhcnQsIHRoaXMuZmllbGQudGV4dC5sZW5ndGgpOyAvLyAsICdpbiBjb252ZXJ0LWJsb2NrICcgKyBub2RlLnNvdXJjZSB8fCAnPHNvdXJjZT4nKVxuICAgIH1cbn1cbi8qKlxuICogcGFyc2UgYmlidGV4LiBUaGlzIHdpbGwgdHJ5IHRvIGNvbnZlcnQgVGVYIGNvbW1hbmRzIGludG8gdW5pY29kZSBlcXVpdmFsZW50cywgYW5kIGFwcGx5IGBAc3RyaW5nYCBleHBhbnNpb25cbiAqL1xuZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIob3B0aW9ucyk7XG4gICAgcmV0dXJuIHBhcnNlci5wYXJzZShpbnB1dCk7XG59XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5mdW5jdGlvbiBhc3QoaW5wdXQsIG9wdGlvbnMgPSB7fSwgY2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihvcHRpb25zKTtcbiAgICByZXR1cm4gcGFyc2VyLmFzdChpbnB1dCwgY2xlYW4pO1xufVxuZXhwb3J0cy5hc3QgPSBhc3Q7XG52YXIgY2h1bmtlcl8yID0gcmVxdWlyZShcIi4vY2h1bmtlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNodW5rZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNodW5rZXJfMi5wYXJzZTsgfSB9KTtcbnZhciBqYWJyZWZfMSA9IHJlcXVpcmUoXCIuL2phYnJlZlwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImphYnJlZlwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gamFicmVmXzEucGFyc2U7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgKiBhcyBCaWJUZVhQYXJzZXIgZnJvbSAnQHJldG9ycXVlcmUvYmlidGV4LXBhcnNlcic7XG5pbXBvcnQgeyBFbnRyeSBhcyBFbnRyeURhdGFCaWJMYVRlWCB9IGZyb20gJ0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXInO1xuLy8gQWxzbyBtYWtlIEVudHJ5RGF0YUJpYkxhVGVYIGF2YWlsYWJsZSB0byBvdGhlciBtb2R1bGVzXG5leHBvcnQgeyBFbnRyeSBhcyBFbnRyeURhdGFCaWJMYVRlWCB9IGZyb20gJ0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXInO1xuXG4vLyBUcmljazogYWxsb3cgc3RyaW5nIGluZGV4aW5nIG9udG8gb2JqZWN0IHByb3BlcnRpZXNcbmV4cG9ydCBpbnRlcmZhY2UgSUluZGV4YWJsZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuY29uc3QgZGF0YWJhc2VUeXBlcyA9IFsnY3NsLWpzb24nLCAnYmlibGF0ZXgnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIERhdGFiYXNlVHlwZSA9IHR5cGVvZiBkYXRhYmFzZVR5cGVzW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBURU1QTEFURV9WQVJJQUJMRVMgPSB7XG4gIGNpdGVrZXk6ICdVbmlxdWUgY2l0ZWtleScsXG4gIGFic3RyYWN0OiAnJyxcbiAgYXV0aG9yU3RyaW5nOiAnQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYXV0aG9yIG5hbWVzJyxcbiAgY29udGFpbmVyVGl0bGU6XG4gICAgJ1RpdGxlIG9mIHRoZSBjb250YWluZXIgaG9sZGluZyB0aGUgcmVmZXJlbmNlIChlLmcuIGJvb2sgdGl0bGUgZm9yIGEgYm9vayBjaGFwdGVyLCBvciB0aGUgam91cm5hbCB0aXRsZSBmb3IgYSBqb3VybmFsIGFydGljbGUpJyxcbiAgRE9JOiAnJyxcbiAgZXByaW50OiAnJyxcbiAgZXByaW50dHlwZTogJycsXG4gIGV2ZW50UGxhY2U6ICdMb2NhdGlvbiBvZiBldmVudCcsXG4gIG5vdGU6ICcnLFxuICBwYWdlOiAnUGFnZSBvciBwYWdlIHJhbmdlJyxcbiAgcHVibGlzaGVyOiAnJyxcbiAgcHVibGlzaGVyUGxhY2U6ICdMb2NhdGlvbiBvZiBwdWJsaXNoZXInLFxuICB0aXRsZTogJycsXG4gIHRpdGxlU2hvcnQ6ICcnLFxuICBVUkw6ICcnLFxuICB5ZWFyOiAnUHVibGljYXRpb24geWVhcicsXG4gIHpvdGVyb1NlbGVjdFVSSTogJ1VSSSB0byBvcGVuIHRoZSByZWZlcmVuY2UgaW4gWm90ZXJvJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBMaWJyYXJ5IHtcbiAgY29uc3RydWN0b3IocHVibGljIGVudHJpZXM6IHsgW2NpdGVrZXk6IHN0cmluZ106IEVudHJ5IH0pIHt9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5lbnRyaWVzKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogRm9yIHRoZSBnaXZlbiBjaXRla2V5LCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGBFbnRyeWAgYW5kIHJldHVybiBhXG4gICAqIGNvbGxlY3Rpb24gb2YgdGVtcGxhdGUgdmFyaWFibGUgYXNzaWdubWVudHMuXG4gICAqL1xuICBnZXRUZW1wbGF0ZVZhcmlhYmxlc0ZvckNpdGVrZXkoY2l0ZWtleTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgY29uc3QgZW50cnk6IEVudHJ5ID0gdGhpcy5lbnRyaWVzW2NpdGVrZXldO1xuICAgIGNvbnN0IHNob3J0Y3V0cyA9IHtcbiAgICAgIGNpdGVrZXk6IGNpdGVrZXksXG5cbiAgICAgIGFic3RyYWN0OiBlbnRyeS5hYnN0cmFjdCxcbiAgICAgIGF1dGhvclN0cmluZzogZW50cnkuYXV0aG9yU3RyaW5nLFxuICAgICAgY29udGFpbmVyVGl0bGU6IGVudHJ5LmNvbnRhaW5lclRpdGxlLFxuICAgICAgRE9JOiBlbnRyeS5ET0ksXG4gICAgICBlcHJpbnQ6IGVudHJ5LmVwcmludCxcbiAgICAgIGVwcmludHR5cGU6IGVudHJ5LmVwcmludHR5cGUsXG4gICAgICBldmVudFBsYWNlOiBlbnRyeS5ldmVudFBsYWNlLFxuICAgICAgbm90ZTogZW50cnkubm90ZSxcbiAgICAgIHBhZ2U6IGVudHJ5LnBhZ2UsXG4gICAgICBwdWJsaXNoZXI6IGVudHJ5LnB1Ymxpc2hlcixcbiAgICAgIHB1Ymxpc2hlclBsYWNlOiBlbnRyeS5wdWJsaXNoZXJQbGFjZSxcbiAgICAgIHRpdGxlOiBlbnRyeS50aXRsZSxcbiAgICAgIHRpdGxlU2hvcnQ6IGVudHJ5LnRpdGxlU2hvcnQsXG4gICAgICBVUkw6IGVudHJ5LlVSTCxcbiAgICAgIHllYXI6IGVudHJ5LnllYXI/LnRvU3RyaW5nKCksXG4gICAgICB6b3Rlcm9TZWxlY3RVUkk6IGVudHJ5LnpvdGVyb1NlbGVjdFVSSSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHsgZW50cnk6IGVudHJ5LnRvSlNPTigpLCAuLi5zaG9ydGN1dHMgfTtcbiAgfVxufVxuXG4vKipcbiAqIExvYWQgcmVmZXJlbmNlIGVudHJpZXMgZnJvbSB0aGUgZ2l2ZW4gcmF3IGRhdGFiYXNlIGRhdGEuXG4gKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgYEVudHJ5RGF0YWAsIHdoaWNoIHNob3VsZCBiZSB3cmFwcGVkIHdpdGggdGhlIHJlbGV2YW50XG4gKiBhZGFwdGVyIGFuZCB1c2VkIHRvIGluc3RhbnRpYXRlIGEgYExpYnJhcnlgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudHJpZXMoXG4gIGRhdGFiYXNlUmF3OiBzdHJpbmcsXG4gIGRhdGFiYXNlVHlwZTogRGF0YWJhc2VUeXBlLFxuKTogRW50cnlEYXRhW10ge1xuICBsZXQgbGlicmFyeUFycmF5OiBFbnRyeURhdGFbXTtcblxuICBpZiAoZGF0YWJhc2VUeXBlID09ICdjc2wtanNvbicpIHtcbiAgICBsaWJyYXJ5QXJyYXkgPSBKU09OLnBhcnNlKGRhdGFiYXNlUmF3KTtcbiAgfSBlbHNlIGlmIChkYXRhYmFzZVR5cGUgPT0gJ2JpYmxhdGV4Jykge1xuICAgIGNvbnN0IG9wdGlvbnM6IEJpYlRlWFBhcnNlci5QYXJzZXJPcHRpb25zID0ge1xuICAgICAgZXJyb3JIYW5kbGVyOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnQ2l0YXRpb24gcGx1Z2luOiBub24tZmF0YWwgZXJyb3IgbG9hZGluZyBCaWJMYVRlWCBlbnRyeTonLFxuICAgICAgICAgIGVycixcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHBhcnNlZCA9IEJpYlRlWFBhcnNlci5wYXJzZShcbiAgICAgIGRhdGFiYXNlUmF3LFxuICAgICAgb3B0aW9ucyxcbiAgICApIGFzIEJpYlRlWFBhcnNlci5CaWJsaW9ncmFwaHk7XG5cbiAgICBwYXJzZWQuZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgQ2l0YXRpb24gcGx1Z2luOiBmYXRhbCBlcnJvciBsb2FkaW5nIEJpYkxhVGVYIGVudHJ5YCArXG4gICAgICAgICAgYCAobGluZSAke2Vycm9yLmxpbmV9LCBjb2x1bW4gJHtlcnJvci5jb2x1bW59KTpgLFxuICAgICAgICBlcnJvci5tZXNzYWdlLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGxpYnJhcnlBcnJheSA9IHBhcnNlZC5lbnRyaWVzO1xuICB9XG5cbiAgcmV0dXJuIGxpYnJhcnlBcnJheTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3Ige1xuICBnaXZlbj86IHN0cmluZztcbiAgZmFtaWx5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGBFbnRyeWAgcmVwcmVzZW50cyBhIHNpbmdsZSByZWZlcmVuY2UgaW4gYSByZWZlcmVuY2UgZGF0YWJhc2UuXG4gKiBFYWNoIGVudHJ5IGhhcyBhIHVuaXF1ZSBpZGVudGlmaWVyLCBrbm93biBpbiBtb3N0IHJlZmVyZW5jZSBtYW5hZ2VycyBhcyBpdHNcbiAqIFwiY2l0ZWtleS5cIlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50cnkge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBlbnRyeSAoYWxzbyB0aGUgY2l0ZWtleSkuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaWQ6IHN0cmluZztcblxuICBwdWJsaWMgYWJzdHJhY3QgdHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBhYnN0cmFjdD86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IGF1dGhvcj86IEF1dGhvcltdO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGF1dGhvcnMsIGVhY2ggb2YgdGhlIGZvcm1hdCBgPGZpcnN0bmFtZT4gPGxhc3RuYW1lPmAuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYXV0aG9yU3RyaW5nPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciB0aGlzIHJlZmVyZW5jZSAtLSBpbiB0aGUgY2FzZSBvZiBhIGJvb2tcbiAgICogY2hhcHRlciByZWZlcmVuY2UsIHRoZSBuYW1lIG9mIHRoZSBib29rOyBpbiB0aGUgY2FzZSBvZiBhIGpvdXJuYWwgYXJ0aWNsZSxcbiAgICogdGhlIG5hbWUgb2YgdGhlIGpvdXJuYWwuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY29udGFpbmVyVGl0bGU/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IERPST86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IGZpbGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIG9mIGlzc3VlLiBNYW55IHJlZmVyZW5jZXMgZG8gbm90IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgbW9udGhcbiAgICogYW5kIGRheSBvZiBpc3N1ZTsgaW4gdGhpcyBjYXNlLCB0aGUgYGlzc3VlZERhdGVgIHdpbGwgY29udGFpbiBkdW1teSBtaW5pbXVtXG4gICAqIHZhbHVlcyBmb3IgdGhvc2UgZWxlbWVudHMuIChBIHJlZmVyZW5jZSB3aGljaCBpcyBvbmx5IGVuY29kZWQgYXMgYmVpbmdcbiAgICogaXNzdWVkIGluIDIwMDEgaXMgcmVwcmVzZW50ZWQgaGVyZSB3aXRoIGEgZGF0ZSAyMDAxLTAxLTAxIDAwOjAwOjAwIFVUQy4pXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNzdWVkRGF0ZT86IERhdGU7XG5cbiAgLyoqXG4gICAqIFBhZ2Ugb3IgcGFnZSByYW5nZSBvZiB0aGUgcmVmZXJlbmNlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHBhZ2U/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCB0aXRsZT86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHRpdGxlU2hvcnQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBVUkw/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IGV2ZW50UGxhY2U/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IHB1Ymxpc2hlcj86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHB1Ymxpc2hlclBsYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCaWJMYVRlWC1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZXByaW50Pzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgZXByaW50dHlwZT86IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX3llYXI/OiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgeWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl95ZWFyXG4gICAgICA/IHBhcnNlSW50KHRoaXMuX3llYXIpXG4gICAgICA6IHRoaXMuaXNzdWVkRGF0ZT8uZ2V0VVRDRnVsbFllYXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbm90ZT86IHN0cmluZ1tdO1xuXG4gIHB1YmxpYyBnZXQgbm90ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ub3RlXG4gICAgICA/Lm1hcCgoZWwpID0+IGVsLnJlcGxhY2UoLyh6b3Rlcm86XFwvXFwvLispL2csICdbTGlua10oJDEpJykpXG4gICAgICAuam9pbignXFxuXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogQSBVUkkgd2hpY2ggd2lsbCBvcGVuIHRoZSByZWxldmFudCBlbnRyeSBpbiB0aGUgWm90ZXJvIGNsaWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgem90ZXJvU2VsZWN0VVJJKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB6b3Rlcm86Ly9zZWxlY3QvaXRlbXMvQCR7dGhpcy5pZH1gO1xuICB9XG5cbiAgdG9KU09OKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBqc29uT2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMpO1xuXG4gICAgLy8gYWRkIGdldHRlciB2YWx1ZXNcbiAgICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtcbiAgICBPYmplY3QuZW50cmllcyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm90bykpXG4gICAgICAuZmlsdGVyKChbLCBkZXNjcmlwdG9yXSkgPT4gdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ID09ICdmdW5jdGlvbicpXG4gICAgICAuZm9yRWFjaCgoW2tleSwgZGVzY3JpcHRvcl0pID0+IHtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IgJiYga2V5WzBdICE9PSAnXycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gKHRoaXMgYXMgSUluZGV4YWJsZSlba2V5XTtcbiAgICAgICAgICAgIGpzb25PYmpba2V5XSA9IHZhbDtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4ganNvbk9iajtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFbnRyeURhdGEgPSBFbnRyeURhdGFDU0wgfCBFbnRyeURhdGFCaWJMYVRlWDtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRyeURhdGFDU0wge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3Q/OiBzdHJpbmc7XG4gIGF1dGhvcj86IEF1dGhvcltdO1xuICAnY29udGFpbmVyLXRpdGxlJz86IHN0cmluZztcbiAgRE9JPzogc3RyaW5nO1xuICAnZXZlbnQtcGxhY2UnPzogc3RyaW5nO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBpc3N1ZWQ/OiB7ICdkYXRlLXBhcnRzJzogW2FueVtdXSB9O1xuICBwYWdlPzogc3RyaW5nO1xuICBwdWJsaXNoZXI/OiBzdHJpbmc7XG4gICdwdWJsaXNoZXItcGxhY2UnPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgJ3RpdGxlLXNob3J0Jz86IHN0cmluZztcbiAgVVJMPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRW50cnlDU0xBZGFwdGVyIGV4dGVuZHMgRW50cnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IEVudHJ5RGF0YUNTTCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBlcHJpbnQ6IHN0cmluZyA9IG51bGw7XG4gIGVwcmludHR5cGU6IHN0cmluZyA9IG51bGw7XG4gIGZpbGVzOiBzdHJpbmdbXSA9IG51bGw7XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEuaWQ7XG4gIH1cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50eXBlO1xuICB9XG5cbiAgZ2V0IGFic3RyYWN0KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEuYWJzdHJhY3Q7XG4gIH1cbiAgZ2V0IGF1dGhvcigpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmF1dGhvcjtcbiAgfVxuXG4gIGdldCBhdXRob3JTdHJpbmcoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5hdXRob3JcbiAgICAgID8gdGhpcy5kYXRhLmF1dGhvci5tYXAoKGEpID0+IGAke2EuZ2l2ZW59ICR7YS5mYW1pbHl9YCkuam9pbignLCAnKVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbnRhaW5lclRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbJ2NvbnRhaW5lci10aXRsZSddO1xuICB9XG5cbiAgZ2V0IERPSSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLkRPSTtcbiAgfVxuXG4gIGdldCBldmVudFBsYWNlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbJ2V2ZW50LXBsYWNlJ107XG4gIH1cblxuICBnZXQgaXNzdWVkRGF0ZSgpIHtcbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICB0aGlzLmRhdGEuaXNzdWVkICYmXG4gICAgICAgIHRoaXMuZGF0YS5pc3N1ZWRbJ2RhdGUtcGFydHMnXSAmJlxuICAgICAgICB0aGlzLmRhdGEuaXNzdWVkWydkYXRlLXBhcnRzJ11bMF0ubGVuZ3RoID4gMFxuICAgICAgKVxuICAgIClcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgW3llYXIsIG1vbnRoLCBkYXldID0gdGhpcy5kYXRhLmlzc3VlZFsnZGF0ZS1wYXJ0cyddWzBdO1xuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCAobW9udGggfHwgMSkgLSAxLCBkYXkgfHwgMSkpO1xuICB9XG5cbiAgZ2V0IHBhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5wYWdlO1xuICB9XG5cbiAgZ2V0IHB1Ymxpc2hlcigpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnB1Ymxpc2hlcjtcbiAgfVxuXG4gIGdldCBwdWJsaXNoZXJQbGFjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhWydwdWJsaXNoZXItcGxhY2UnXTtcbiAgfVxuXG4gIGdldCB0aXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnRpdGxlO1xuICB9XG5cbiAgZ2V0IHRpdGxlU2hvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVsndGl0bGUtc2hvcnQnXTtcbiAgfVxuXG4gIGdldCBVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5VUkw7XG4gIH1cbn1cblxuY29uc3QgQklCTEFURVhfUFJPUEVSVFlfTUFQUElORzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgYWJzdHJhY3Q6ICdhYnN0cmFjdCcsXG4gIGJvb2t0aXRsZTogJ19jb250YWluZXJUaXRsZScsXG4gIGRhdGU6ICdpc3N1ZWQnLFxuICBkb2k6ICdET0knLFxuICBlcHJpbnQ6ICdlcHJpbnQnLFxuICBlcHJpbnR0eXBlOiAnZXByaW50dHlwZScsXG4gIGV2ZW50dGl0bGU6ICdldmVudCcsXG4gIGpvdXJuYWw6ICdfY29udGFpbmVyVGl0bGUnLFxuICBqb3VybmFsdGl0bGU6ICdfY29udGFpbmVyVGl0bGUnLFxuICBsb2NhdGlvbjogJ3B1Ymxpc2hlclBsYWNlJyxcbiAgcGFnZXM6ICdwYWdlJyxcbiAgc2hvcnRqb3VybmFsOiAnY29udGFpbmVyVGl0bGVTaG9ydCcsXG4gIHRpdGxlOiAndGl0bGUnLFxuICBzaG9ydHRpdGxlOiAndGl0bGVTaG9ydCcsXG4gIHVybDogJ1VSTCcsXG4gIHZlbnVlOiAnZXZlbnRQbGFjZScsXG4gIHllYXI6ICdfeWVhcicsXG4gIHB1Ymxpc2hlcjogJ3B1Ymxpc2hlcicsXG4gIG5vdGU6ICdfbm90ZScsXG59O1xuXG4vLyBCaWJMYVRlWCBwYXJzZXIgcmV0dXJucyBhcnJheXMgb2YgcHJvcGVydHkgdmFsdWVzIChhbGxvd2luZyBmb3IgcmVwZWF0ZWRcbi8vIHByb3BlcnR5IGVudHJpZXMpLiBGb3IgdGhlIGZvbGxvd2luZyBmaWVsZHMsIGp1c3QgYmxpbmRseSB0YWtlIHRoZSBmaXJzdC5cbmNvbnN0IEJJQkxBVEVYX1BST1BFUlRZX1RBS0VfRklSU1Q6IHN0cmluZ1tdID0gW1xuICAnYWJzdHJhY3QnLFxuICAnYm9va3RpdGxlJyxcbiAgJ19jb250YWluZXJUaXRsZScsXG4gICdkYXRlJyxcbiAgJ2RvaScsXG4gICdlcHJpbnQnLFxuICAnZXByaW50dHlwZScsXG4gICdldmVudHRpdGxlJyxcbiAgJ2pvdXJuYWx0aXRsZScsXG4gICdsb2NhdGlvbicsXG4gICdwYWdlcycsXG4gICdzaG9ydGpvdXJuYWwnLFxuICAndGl0bGUnLFxuICAnc2hvcnR0aXRsZScsXG4gICd1cmwnLFxuICAndmVudWUnLFxuICAnX3llYXInLFxuICAncHVibGlzaGVyJyxcbl07XG5cbmV4cG9ydCBjbGFzcyBFbnRyeUJpYkxhVGVYQWRhcHRlciBleHRlbmRzIEVudHJ5IHtcbiAgYWJzdHJhY3Q/OiBzdHJpbmc7XG4gIF9jb250YWluZXJUaXRsZT86IHN0cmluZztcbiAgY29udGFpbmVyVGl0bGVTaG9ydD86IHN0cmluZztcbiAgRE9JPzogc3RyaW5nO1xuICBlcHJpbnQ/OiBzdHJpbmc7XG4gIGVwcmludHR5cGU/OiBzdHJpbmc7XG4gIGV2ZW50Pzogc3RyaW5nO1xuICBldmVudFBsYWNlPzogc3RyaW5nO1xuICBpc3N1ZWQ/OiBzdHJpbmc7XG4gIHBhZ2U/OiBzdHJpbmc7XG4gIHB1Ymxpc2hlcj86IHN0cmluZztcbiAgcHVibGlzaGVyUGxhY2U/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB0aXRsZVNob3J0Pzogc3RyaW5nO1xuICBVUkw/OiBzdHJpbmc7XG4gIF95ZWFyPzogc3RyaW5nO1xuICBfbm90ZT86IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogRW50cnlEYXRhQmliTGFUZVgpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgT2JqZWN0LmVudHJpZXMoQklCTEFURVhfUFJPUEVSVFlfTUFQUElORykuZm9yRWFjaChcbiAgICAgIChtYXA6IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgICAgY29uc3QgW3NyYywgdGd0XSA9IG1hcDtcbiAgICAgICAgaWYgKHNyYyBpbiB0aGlzLmRhdGEuZmllbGRzKSB7XG4gICAgICAgICAgbGV0IHZhbCA9IHRoaXMuZGF0YS5maWVsZHNbc3JjXTtcbiAgICAgICAgICBpZiAoQklCTEFURVhfUFJPUEVSVFlfVEFLRV9GSVJTVC5pbmNsdWRlcyhzcmMpKSB7XG4gICAgICAgICAgICB2YWwgPSAodmFsIGFzIGFueVtdKVswXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAodGhpcyBhcyBJSW5kZXhhYmxlKVt0Z3RdID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5rZXk7XG4gIH1cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50eXBlO1xuICB9XG5cbiAgZ2V0IGZpbGVzKCk6IHN0cmluZ1tdIHtcbiAgICAvLyBGb3Igc29tZSByZWFzb24gdGhlIGJpYnRleCBwYXJzZXIgZG9lc24ndCByZWxpYWJseSBwYXJzZSBmaWxlIGxpc3QgdG9cbiAgICAvLyBhcnJheSA7IHNvIHdlJ2xsIGRvIGl0IG1hbnVhbGx5IC8gcmVkdW5kYW50bHlcbiAgICBsZXQgcmV0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGEuZmllbGRzLmZpbGUpIHtcbiAgICAgIHJldCA9IHJldC5jb25jYXQodGhpcy5kYXRhLmZpZWxkcy5maWxlLmZsYXRNYXAoKHgpID0+IHguc3BsaXQoJzsnKSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhLmZpZWxkcy5maWxlcykge1xuICAgICAgcmV0ID0gcmV0LmNvbmNhdCh0aGlzLmRhdGEuZmllbGRzLmZpbGVzLmZsYXRNYXAoKHgpID0+IHguc3BsaXQoJzsnKSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBnZXQgYXV0aG9yU3RyaW5nKCkge1xuICAgIGlmICh0aGlzLmRhdGEuY3JlYXRvcnMuYXV0aG9yKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IHRoaXMuZGF0YS5jcmVhdG9ycy5hdXRob3IubWFwKChuYW1lKSA9PiB7XG4gICAgICAgIGlmIChuYW1lLmxpdGVyYWwpIHJldHVybiBuYW1lLmxpdGVyYWw7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW25hbWUuZmlyc3ROYW1lLCBuYW1lLnByZWZpeCwgbmFtZS5sYXN0TmFtZSwgbmFtZS5zdWZmaXhdO1xuICAgICAgICAvLyBEcm9wIGFueSBudWxsIHBhcnRzIGFuZCBqb2luXG4gICAgICAgIHJldHVybiBwYXJ0cy5maWx0ZXIoKHgpID0+IHgpLmpvaW4oJyAnKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5hbWVzLmpvaW4oJywgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzLmF1dGhvcj8uam9pbignLCAnKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29udGFpbmVyVGl0bGUoKSB7XG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lclRpdGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyVGl0bGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuZmllbGRzLmVwcmludCkge1xuICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5kYXRhLmZpZWxkcy5lcHJpbnR0eXBlXG4gICAgICAgID8gYCR7dGhpcy5kYXRhLmZpZWxkcy5lcHJpbnR0eXBlfTpgXG4gICAgICAgIDogJyc7XG4gICAgICBjb25zdCBzdWZmaXggPSB0aGlzLmRhdGEuZmllbGRzLnByaW1hcnljbGFzc1xuICAgICAgICA/IGAgWyR7dGhpcy5kYXRhLmZpZWxkcy5wcmltYXJ5Y2xhc3N9XWBcbiAgICAgICAgOiAnJztcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHt0aGlzLmRhdGEuZmllbGRzLmVwcmludH0ke3N1ZmZpeH1gO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc3N1ZWREYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmlzc3VlZCA/IG5ldyBEYXRlKHRoaXMuaXNzdWVkKSA6IG51bGw7XG4gIH1cblxuICBnZXQgYXV0aG9yKCk6IEF1dGhvcltdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmNyZWF0b3JzLmF1dGhvcj8ubWFwKChhKSA9PiAoe1xuICAgICAgZ2l2ZW46IGEuZmlyc3ROYW1lLFxuICAgICAgZmFtaWx5OiBhLmxhc3ROYW1lLFxuICAgIH0pKTtcbiAgfVxufVxuIiwiaW1wb3J0IHJlZ2lzdGVyUHJvbWlzZVdvcmtlciBmcm9tICdwcm9taXNlLXdvcmtlci9yZWdpc3Rlcic7XG5cbmltcG9ydCB7IERhdGFiYXNlVHlwZSwgRW50cnlEYXRhLCBsb2FkRW50cmllcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5yZWdpc3RlclByb21pc2VXb3JrZXIoXG4gIChtc2c6IHsgZGF0YWJhc2VSYXc6IHN0cmluZzsgZGF0YWJhc2VUeXBlOiBEYXRhYmFzZVR5cGUgfSk6IEVudHJ5RGF0YVtdID0+IHtcbiAgICByZXR1cm4gbG9hZEVudHJpZXMobXNnLmRhdGFiYXNlUmF3LCBtc2cuZGF0YWJhc2VUeXBlKTtcbiAgfSxcbik7XG4iXSwibmFtZXMiOlsiY2hhckNhdGVnb3JpZXMiLCJjaHVua2VyXzEiLCJiaWJ0ZXgiLCJ1bmljb2RlMmxhdGV4XzEiLCJqYWJyZWZfMSIsIkJpYlRlWFBhcnNlci5wYXJzZSIsInJlZ2lzdGVyUHJvbWlzZVdvcmtlciJdLCJtYXBwaW5ncyI6Ijs7O0VBRUEsU0FBUyxTQUFTLEVBQUUsR0FBRyxFQUFFO0VBQ3pCO0VBQ0EsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVO0VBQzFHLENBQUM7QUFDRDtFQUNBLFNBQVMscUJBQXFCLEVBQUUsUUFBUSxFQUFFO0VBQzFDLEVBQUUsU0FBUyxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7RUFDN0QsSUFBSSxTQUFTLFdBQVcsRUFBRSxHQUFHLEVBQUU7RUFDL0I7RUFDQSxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtFQUNsRCxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBQztFQUNuQyxPQUFPLE1BQU07RUFDYixRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFDO0VBQzdCLE9BQU87RUFDUCxLQUFLO0VBQ0wsSUFBSSxJQUFJLEtBQUssRUFBRTtFQUNmO0VBQ0EsTUFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO0VBQ2hFO0VBQ0E7RUFDQTtFQUNBLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxL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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN4RixJQUFJLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNoRSxJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNqRSxJQUFJLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMxSCxJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzdDLElBQUksUUFBUSxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDN0MsSUFBSSxRQUFRLEVBQUUsVUFBVTtFQUN4QixJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVDLElBQUksV0FBVyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdEQsSUFBSSxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENB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'); /* eslint-enable */ var CitationPlugin = /** @class */ (function (_super) { __extends(CitationPlugin, _super); function CitationPlugin() { var _this = _super !== null && _super.apply(this, arguments) || this; // Template compilation options _this.templateSettings = { noEscape: true, }; _this.loadWorker = new WorkerManager(new WorkerFactory(), { blockingChannel: true, }); _this.events = new CitationEvents(); _this.loadErrorNotifier = new Notifier('Unable to load citations. Please update Citations plugin settings.'); _this.literatureNoteErrorNotifier = new Notifier('Unable to access literature note. Please check that the literature note folder exists, or update the Citations plugin settings.'); return _this; } Object.defineProperty(CitationPlugin.prototype, "editor", { get: function () { var view = this.app.workspace.activeLeaf.view; if (!(view instanceof obsidian.MarkdownView)) return null; var sourceView = view.sourceMode; return sourceView.cmEditor; }, enumerable: false, configurable: true }); CitationPlugin.prototype.loadSettings = function () { return __awaiter(this, void 0, void 0, function () { var loadedSettings, toLoad; var _this = this; return __generator(this, function (_a) { switch (_a.label) { case 0: this.settings = new CitationsPluginSettings(); return [4 /*yield*/, this.loadData()]; case 1: loadedSettings = _a.sent(); if (!loadedSettings) return [2 /*return*/]; toLoad = [ 'citationExportPath', 'citationExportFormat', 'literatureNoteTitleTemplate', 'literatureNoteFolder', 'literatureNoteContentTemplate', 'markdownCitationTemplate', 'alternativeMarkdownCitationTemplate', ]; toLoad.forEach(function (setting) { if (setting in loadedSettings) { _this.settings[setting] = loadedSettings[setting]; } }); return [2 /*return*/]; } }); }); }; CitationPlugin.prototype.saveSettings = function () { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.saveData(this.settings)]; case 1: _a.sent(); return [2 /*return*/]; } }); }); }; CitationPlugin.prototype.onload = function () { var _this = this; this.loadSettings().then(function () { return _this.init(); }); }; CitationPlugin.prototype.init = function () { return __awaiter(this, void 0, void 0, function () { var watchOptions; var _this = this; return __generator(this, function (_a) { if (this.settings.citationExportPath) { // Load library for the first time this.loadLibrary(); // Set up a watcher to refresh whenever the export is updated try { watchOptions = { awaitWriteFinish: { stabilityThreshold: 500, }, }; watch_1(this.resolveLibraryPath(this.settings.citationExportPath), watchOptions) .on('change', function () { _this.loadLibrary(); }); } catch (_b) { this.loadErrorNotifier.show(); } } this.addCommand({ id: 'open-literature-note', name: 'Open literature note', hotkeys: [{ modifiers: ['Ctrl', 'Shift'], key: 'o' }], callback: function () { var modal = new OpenNoteModal(_this.app, _this); modal.open(); }, }); this.addCommand({ id: 'update-bib-data', name: 'Refresh citation database', hotkeys: [{ modifiers: ['Ctrl', 'Shift'], key: 'r' }], callback: function () { _this.loadLibrary(); }, }); this.addCommand({ id: 'insert-citation', name: 'Insert literature note link', hotkeys: [{ modifiers: ['Ctrl', 'Shift'], key: 'e' }], callback: function () { var modal = new InsertNoteLinkModal(_this.app, _this); modal.open(); }, }); this.addCommand({ id: 'insert-literature-note-content', name: 'Insert literature note content in the current pane', callback: function () { var modal = new InsertNoteContentModal(_this.app, _this); modal.open(); }, }); this.addCommand({ id: 'insert-markdown-citation', name: 'Insert Markdown citation', callback: function () { var modal = new InsertCitationModal(_this.app, _this); modal.open(); }, }); this.addSettingTab(new CitationSettingTab(this.app, this)); return [2 /*return*/]; }); }); }; /** * Resolve a provided library path, allowing for relative paths rooted at * the vault directory. */ CitationPlugin.prototype.resolveLibraryPath = function (rawPath) { var vaultRoot = this.app.vault.adapter instanceof obsidian.FileSystemAdapter ? this.app.vault.adapter.getBasePath() : '/'; return sysPath.resolve(vaultRoot, rawPath); }; CitationPlugin.prototype.loadLibrary = function () { return __awaiter(this, void 0, void 0, function () { var filePath; var _this = this; return __generator(this, function (_a) { console.debug('Citation plugin: Reloading library'); if (this.settings.citationExportPath) { filePath = this.resolveLibraryPath(this.settings.citationExportPath); // Unload current library. this.events.trigger('library-load-start'); this.library = null; return [2 /*return*/, obsidian.FileSystemAdapter.readLocalFile(filePath) .then(function (buffer) { // If there is a remaining error message, hide it _this.loadErrorNotifier.hide(); // Decode file as UTF-8. var dataView = new DataView(buffer); var decoder = new TextDecoder('utf8'); var value = decoder.decode(dataView); return _this.loadWorker.post({ databaseRaw: value, databaseType: _this.settings.citationExportFormat, }); }) .then(function (entries) { var adapter; var idKey; switch (_this.settings.citationExportFormat) { case 'biblatex': adapter = EntryBibLaTeXAdapter; idKey = 'key'; break; case 'csl-json': adapter = EntryCSLAdapter; idKey = 'id'; break; } _this.library = new Library(Object.fromEntries(entries.map(function (e) { return [e[idKey], new adapter(e)]; }))); console.debug("Citation plugin: successfully loaded library with " + _this.library.size + " entries."); _this.events.trigger('library-load-complete'); return _this.library; }) .catch(function (e) { if (e instanceof WorkerManagerBlocked) { // Silently catch WorkerManager error, which will be thrown if the // library is already being loaded return; } console.error(e); _this.loadErrorNotifier.show(); return null; })]; } else { console.warn('Citations plugin: citation export path is not set. Please update plugin settings.'); } return [2 /*return*/]; }); }); }; Object.defineProperty(CitationPlugin.prototype, "isLibraryLoading", { /** * Returns true iff the library is currently being loaded on the worker thread. */ get: function () { return this.loadWorker.blocked; }, enumerable: false, configurable: true }); Object.defineProperty(CitationPlugin.prototype, "literatureNoteTitleTemplate", { get: function () { return lib.compile(this.settings.literatureNoteTitleTemplate, this.templateSettings); }, enumerable: false, configurable: true }); Object.defineProperty(CitationPlugin.prototype, "literatureNoteContentTemplate", { get: function () { return lib.compile(this.settings.literatureNoteContentTemplate, this.templateSettings); }, enumerable: false, configurable: true }); Object.defineProperty(CitationPlugin.prototype, "markdownCitationTemplate", { get: function () { return lib.compile(this.settings.markdownCitationTemplate, this.templateSettings); }, enumerable: false, configurable: true }); Object.defineProperty(CitationPlugin.prototype, "alternativeMarkdownCitationTemplate", { get: function () { return lib.compile(this.settings.alternativeMarkdownCitationTemplate, this.templateSettings); }, enumerable: false, configurable: true }); CitationPlugin.prototype.getTitleForCitekey = function (citekey) { var unsafeTitle = this.literatureNoteTitleTemplate(this.library.getTemplateVariablesForCitekey(citekey)); return unsafeTitle.replace(DISALLOWED_FILENAME_CHARACTERS_RE, '_'); }; CitationPlugin.prototype.getPathForCitekey = function (citekey) { var title = this.getTitleForCitekey(citekey); // TODO escape note title return sysPath.join(this.settings.literatureNoteFolder, title + ".md"); }; CitationPlugin.prototype.getInitialContentForCitekey = function (citekey) { return this.literatureNoteContentTemplate(this.library.getTemplateVariablesForCitekey(citekey)); }; CitationPlugin.prototype.getMarkdownCitationForCitekey = function (citekey) { return this.markdownCitationTemplate(this.library.getTemplateVariablesForCitekey(citekey)); }; CitationPlugin.prototype.getAlternativeMarkdownCitationForCitekey = function (citekey) { return this.alternativeMarkdownCitationTemplate(this.library.getTemplateVariablesForCitekey(citekey)); }; /** * Run a case-insensitive search for the literature note file corresponding to * the given citekey. If no corresponding file is found, create one. */ CitationPlugin.prototype.getOrCreateLiteratureNoteFile = function (citekey) { return __awaiter(this, void 0, void 0, function () { var path, normalizedPath, file, matches, exc_1; return __generator(this, function (_a) { switch (_a.label) { case 0: path = this.getPathForCitekey(citekey); normalizedPath = obsidian.normalizePath(path); file = this.app.vault.getAbstractFileByPath(normalizedPath); if (!(file == null)) return [3 /*break*/, 4]; matches = this.app.vault .getMarkdownFiles() .filter(function (f) { return f.path.toLowerCase() == normalizedPath.toLowerCase(); }); if (!(matches.length > 0)) return [3 /*break*/, 1]; file = matches[0]; return [3 /*break*/, 4]; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, this.app.vault.create(path, this.getInitialContentForCitekey(citekey))]; case 2: file = _a.sent(); return [3 /*break*/, 4]; case 3: exc_1 = _a.sent(); this.literatureNoteErrorNotifier.show(); throw exc_1; case 4: return [2 /*return*/, file]; } }); }); }; CitationPlugin.prototype.openLiteratureNote = function (citekey, newPane) { return __awaiter(this, void 0, void 0, function () { var _this = this; return __generator(this, function (_a) { this.getOrCreateLiteratureNoteFile(citekey) .then(function (file) { _this.app.workspace.getLeaf(newPane).openFile(file); }) .catch(console.error); return [2 /*return*/]; }); }); }; CitationPlugin.prototype.insertLiteratureNoteLink = function (citekey) { return __awaiter(this, void 0, void 0, function () { var _this = this; return __generator(this, function (_a) { this.getOrCreateLiteratureNoteFile(citekey) .then(function (file) { var useMarkdown = _this.app.vault.getConfig('useMarkdownLinks'); var title = _this.getTitleForCitekey(citekey); var linkText; if (useMarkdown) { var uri = encodeURI(_this.app.metadataCache.fileToLinktext(file, '', false)); linkText = "[" + title + "](" + uri + ")"; } else { linkText = "[[" + title + "]]"; } _this.editor.replaceSelection(linkText); }) .catch(console.error); return [2 /*return*/]; }); }); }; /** * Format literature note content for a given reference and insert in the * currently active pane. */ CitationPlugin.prototype.insertLiteratureNoteContent = function (citekey) { return __awaiter(this, void 0, void 0, function () { var content; return __generator(this, function (_a) { content = this.getInitialContentForCitekey(citekey); this.editor.replaceRange(content, this.editor.getCursor()); return [2 /*return*/]; }); }); }; CitationPlugin.prototype.insertMarkdownCitation = function (citekey, alternative) { if (alternative === void 0) { alternative = false; } return __awaiter(this, void 0, void 0, function () { var func, citation; return __generator(this, function (_a) { func = alternative ? this.getAlternativeMarkdownCitationForCitekey : this.getMarkdownCitationForCitekey; citation = func.bind(this)(citekey); this.editor.replaceRange(citation, this.editor.getCursor()); return [2 /*return*/]; }); }); }; return CitationPlugin; }(obsidian.Plugin)); module.exports = CitationPlugin; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL2NvbnN0YW50cy5qcyIsIm5vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvc2Nhbi5qcyIsIm5vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3BhcnNlLmpzIiwibm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvcGljb21hdGNoLmpzIiwibm9kZV9tb2R1bGVzL3BpY29tYXRjaC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkZGlycC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9ub3JtYWxpemUtcGF0aC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hbnltYXRjaC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pcy1leHRnbG9iL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzLWdsb2IvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZ2xvYi1wYXJlbnQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9icmFjZXMvbGliL3N0cmluZ2lmeS5qcyIsIm5vZGVfbW9kdWxlcy9pcy1udW1iZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdG8tcmVnZXgtcmFuZ2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmlsbC1yYW5nZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9icmFjZXMvbGliL2NvbXBpbGUuanMiLCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9leHBhbmQuanMiLCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9jb25zdGFudHMuanMiLCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9wYXJzZS5qcyIsIm5vZGVfbW9kdWxlcy9icmFjZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYmluYXJ5LWV4dGVuc2lvbnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaXMtYmluYXJ5LXBhdGgvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2hva2lkYXIvbGliL2NvbnN0YW50cy5qcyIsIm5vZGVfbW9kdWxlcy9jaG9raWRhci9saWIvbm9kZWZzLWhhbmRsZXIuanMiLCJub2RlX21vZHVsZXMvY2hva2lkYXIvbGliL2ZzZXZlbnRzLWhhbmRsZXIuanMiLCJub2RlX21vZHVsZXMvY2hva2lkYXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9leGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9oZWxwZXItbWlzc2luZy5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9pZi5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9sb2cuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJzL3dpdGguanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9kZWNvcmF0b3JzLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9sb2dnZXIuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaW50ZXJuYWwvcHJvdG8tYWNjZXNzLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9iYXNlLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9zYWZlLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaW50ZXJuYWwvd3JhcEhlbHBlci5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvcnVudGltZS5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvcGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9yLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci93aGl0ZXNwYWNlLWNvbnRyb2wuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyLmpzIiwibm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL2Jhc2U2NC5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9iYXNlNjQtdmxxLmpzIiwibm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvYXJyYXktc2V0LmpzIiwibm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL21hcHBpbmctbGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9iaW5hcnktc2VhcmNoLmpzIiwibm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3F1aWNrLXNvcnQuanMiLCJub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9zb3VyY2Utbm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL3NvdXJjZS1tYXAuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2NvZGUtZ2VuLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvcHJpbnRlci5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9pbmRleC5qcyIsInNyYy9ldmVudHMudHMiLCJzcmMvbW9kYWxzLnRzIiwibm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvZ3JhbW1hci5qcyIsIm5vZGVfbW9kdWxlcy9AcmV0b3JxdWVyZS9iaWJ0ZXgtcGFyc2VyL2NodW5rZXIuanMiLCJub2RlX21vZHVsZXMvdW5pY29kZTJsYXRleC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy94cmVnZXhwL3Rvb2xzL291dHB1dC9jYXRlZ29yaWVzLmpzIiwibm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvamFicmVmLmpzIiwibm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvaW5kZXguanMiLCJzcmMvdHlwZXMudHMiLCJzcmMvc2V0dGluZ3MudHMiLCJub2RlX21vZHVsZXMvcHJvbWlzZS13b3JrZXIvaW5kZXguanMiLCJzcmMvb2JzaWRpYW4tZXh0ZW5zaW9ucy50cyIsInNyYy91dGlsLnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgcHJpdmF0ZU1hcCkge1xyXG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcml2YXRlTWFwLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwLCB2YWx1ZSkge1xyXG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIHNldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICAgIHByaXZhdGVNYXAuc2V0KHJlY2VpdmVyLCB2YWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgV0lOX1NMQVNIID0gJ1xcXFxcXFxcLyc7XG5jb25zdCBXSU5fTk9fU0xBU0ggPSBgW14ke1dJTl9TTEFTSH1dYDtcblxuLyoqXG4gKiBQb3NpeCBnbG9iIHJlZ2V4XG4gKi9cblxuY29uc3QgRE9UX0xJVEVSQUwgPSAnXFxcXC4nO1xuY29uc3QgUExVU19MSVRFUkFMID0gJ1xcXFwrJztcbmNvbnN0IFFNQVJLX0xJVEVSQUwgPSAnXFxcXD8nO1xuY29uc3QgU0xBU0hfTElURVJBTCA9ICdcXFxcLyc7XG5jb25zdCBPTkVfQ0hBUiA9ICcoPz0uKSc7XG5jb25zdCBRTUFSSyA9ICdbXi9dJztcbmNvbnN0IEVORF9BTkNIT1IgPSBgKD86JHtTTEFTSF9MSVRFUkFMfXwkKWA7XG5jb25zdCBTVEFSVF9BTkNIT1IgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9KWA7XG5jb25zdCBET1RTX1NMQVNIID0gYCR7RE9UX0xJVEVSQUx9ezEsMn0ke0VORF9BTkNIT1J9YDtcbmNvbnN0IE5PX0RPVCA9IGAoPyEke0RPVF9MSVRFUkFMfSlgO1xuY29uc3QgTk9fRE9UUyA9IGAoPyEke1NUQVJUX0FOQ0hPUn0ke0RPVFNfU0xBU0h9KWA7XG5jb25zdCBOT19ET1RfU0xBU0ggPSBgKD8hJHtET1RfTElURVJBTH17MCwxfSR7RU5EX0FOQ0hPUn0pYDtcbmNvbnN0IE5PX0RPVFNfU0xBU0ggPSBgKD8hJHtET1RTX1NMQVNIfSlgO1xuY29uc3QgUU1BUktfTk9fRE9UID0gYFteLiR7U0xBU0hfTElURVJBTH1dYDtcbmNvbnN0IFNUQVIgPSBgJHtRTUFSS30qP2A7XG5cbmNvbnN0IFBPU0lYX0NIQVJTID0ge1xuICBET1RfTElURVJBTCxcbiAgUExVU19MSVRFUkFMLFxuICBRTUFSS19MSVRFUkFMLFxuICBTTEFTSF9MSVRFUkFMLFxuICBPTkVfQ0hBUixcbiAgUU1BUkssXG4gIEVORF9BTkNIT1IsXG4gIERPVFNfU0xBU0gsXG4gIE5PX0RPVCxcbiAgTk9fRE9UUyxcbiAgTk9fRE9UX1NMQVNILFxuICBOT19ET1RTX1NMQVNILFxuICBRTUFSS19OT19ET1QsXG4gIFNUQVIsXG4gIFNUQVJUX0FOQ0hPUlxufTtcblxuLyoqXG4gKiBXaW5kb3dzIGdsb2IgcmVnZXhcbiAqL1xuXG5jb25zdCBXSU5ET1dTX0NIQVJTID0ge1xuICAuLi5QT1NJWF9DSEFSUyxcblxuICBTTEFTSF9MSVRFUkFMOiBgWyR7V0lOX1NMQVNIfV1gLFxuICBRTUFSSzogV0lOX05PX1NMQVNILFxuICBTVEFSOiBgJHtXSU5fTk9fU0xBU0h9Kj9gLFxuICBET1RTX1NMQVNIOiBgJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpYCxcbiAgTk9fRE9UOiBgKD8hJHtET1RfTElURVJBTH0pYCxcbiAgTk9fRE9UUzogYCg/ISg/Ol58WyR7V0lOX1NMQVNIfV0pJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIE5PX0RPVF9TTEFTSDogYCg/ISR7RE9UX0xJVEVSQUx9ezAsMX0oPzpbJHtXSU5fU0xBU0h9XXwkKSlgLFxuICBOT19ET1RTX1NMQVNIOiBgKD8hJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIFFNQVJLX05PX0RPVDogYFteLiR7V0lOX1NMQVNIfV1gLFxuICBTVEFSVF9BTkNIT1I6IGAoPzpefFske1dJTl9TTEFTSH1dKWAsXG4gIEVORF9BTkNIT1I6IGAoPzpbJHtXSU5fU0xBU0h9XXwkKWBcbn07XG5cbi8qKlxuICogUE9TSVggQnJhY2tldCBSZWdleFxuICovXG5cbmNvbnN0IFBPU0lYX1JFR0VYX1NPVVJDRSA9IHtcbiAgYWxudW06ICdhLXpBLVowLTknLFxuICBhbHBoYTogJ2EtekEtWicsXG4gIGFzY2lpOiAnXFxcXHgwMC1cXFxceDdGJyxcbiAgYmxhbms6ICcgXFxcXHQnLFxuICBjbnRybDogJ1xcXFx4MDAtXFxcXHgxRlxcXFx4N0YnLFxuICBkaWdpdDogJzAtOScsXG4gIGdyYXBoOiAnXFxcXHgyMS1cXFxceDdFJyxcbiAgbG93ZXI6ICdhLXonLFxuICBwcmludDogJ1xcXFx4MjAtXFxcXHg3RSAnLFxuICBwdW5jdDogJ1xcXFwtIVwiIyQlJlxcJygpXFxcXCorLC4vOjs8PT4/QFtcXFxcXV5fYHt8fX4nLFxuICBzcGFjZTogJyBcXFxcdFxcXFxyXFxcXG5cXFxcdlxcXFxmJyxcbiAgdXBwZXI6ICdBLVonLFxuICB3b3JkOiAnQS1aYS16MC05XycsXG4gIHhkaWdpdDogJ0EtRmEtZjAtOSdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBNQVhfTEVOR1RIOiAxMDI0ICogNjQsXG4gIFBPU0lYX1JFR0VYX1NPVVJDRSxcblxuICAvLyByZWd1bGFyIGV4cHJlc3Npb25zXG4gIFJFR0VYX0JBQ0tTTEFTSDogL1xcXFwoPyFbKis/XiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUzogL15bXkAhW1xcXS4sJCorP157fSgpfFxcXFwvXSsvLFxuICBSRUdFWF9TUEVDSUFMX0NIQVJTOiAvWy0qKz8uXiR7fSh8KVtcXF1dLyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGOiAvKFxcXFw/KSgoXFxXKShcXDMqKSkvZyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUw6IC8oWy0qKz8uXiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9SRU1PVkVfQkFDS1NMQVNIOiAvKD86XFxbLio/W15cXFxcXVxcXXxcXFxcKD89LikpL2csXG5cbiAgLy8gUmVwbGFjZSBnbG9icyB3aXRoIGVxdWl2YWxlbnQgcGF0dGVybnMgdG8gcmVkdWNlIHBhcnNpbmcgdGltZS5cbiAgUkVQTEFDRU1FTlRTOiB7XG4gICAgJyoqKic6ICcqJyxcbiAgICAnKiovKionOiAnKionLFxuICAgICcqKi8qKi8qKic6ICcqKidcbiAgfSxcblxuICAvLyBEaWdpdHNcbiAgQ0hBUl8wOiA0OCwgLyogMCAqL1xuICBDSEFSXzk6IDU3LCAvKiA5ICovXG5cbiAgLy8gQWxwaGFiZXQgY2hhcnMuXG4gIENIQVJfVVBQRVJDQVNFX0E6IDY1LCAvKiBBICovXG4gIENIQVJfTE9XRVJDQVNFX0E6IDk3LCAvKiBhICovXG4gIENIQVJfVVBQRVJDQVNFX1o6IDkwLCAvKiBaICovXG4gIENIQVJfTE9XRVJDQVNFX1o6IDEyMiwgLyogeiAqL1xuXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUzogNDAsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUzogNDEsIC8qICkgKi9cblxuICBDSEFSX0FTVEVSSVNLOiA0MiwgLyogKiAqL1xuXG4gIC8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuICBDSEFSX0FNUEVSU0FORDogMzgsIC8qICYgKi9cbiAgQ0hBUl9BVDogNjQsIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSDogOTIsIC8qIFxcICovXG4gIENIQVJfQ0FSUklBR0VfUkVUVVJOOiAxMywgLyogXFxyICovXG4gIENIQVJfQ0lSQ1VNRkxFWF9BQ0NFTlQ6IDk0LCAvKiBeICovXG4gIENIQVJfQ09MT046IDU4LCAvKiA6ICovXG4gIENIQVJfQ09NTUE6IDQ0LCAvKiAsICovXG4gIENIQVJfRE9UOiA0NiwgLyogLiAqL1xuICBDSEFSX0RPVUJMRV9RVU9URTogMzQsIC8qIFwiICovXG4gIENIQVJfRVFVQUw6IDYxLCAvKiA9ICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSzogMzMsIC8qICEgKi9cbiAgQ0hBUl9GT1JNX0ZFRUQ6IDEyLCAvKiBcXGYgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNIOiA0NywgLyogLyAqL1xuICBDSEFSX0dSQVZFX0FDQ0VOVDogOTYsIC8qIGAgKi9cbiAgQ0hBUl9IQVNIOiAzNSwgLyogIyAqL1xuICBDSEFSX0hZUEhFTl9NSU5VUzogNDUsIC8qIC0gKi9cbiAgQ0hBUl9MRUZUX0FOR0xFX0JSQUNLRVQ6IDYwLCAvKiA8ICovXG4gIENIQVJfTEVGVF9DVVJMWV9CUkFDRTogMTIzLCAvKiB7ICovXG4gIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVDogOTEsIC8qIFsgKi9cbiAgQ0hBUl9MSU5FX0ZFRUQ6IDEwLCAvKiBcXG4gKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRTogMTYwLCAvKiBcXHUwMEEwICovXG4gIENIQVJfUEVSQ0VOVDogMzcsIC8qICUgKi9cbiAgQ0hBUl9QTFVTOiA0MywgLyogKyAqL1xuICBDSEFSX1FVRVNUSU9OX01BUks6IDYzLCAvKiA/ICovXG4gIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogNjIsIC8qID4gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRTogMTI1LCAvKiB9ICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQ6IDkzLCAvKiBdICovXG4gIENIQVJfU0VNSUNPTE9OOiA1OSwgLyogOyAqL1xuICBDSEFSX1NJTkdMRV9RVU9URTogMzksIC8qICcgKi9cbiAgQ0hBUl9TUEFDRTogMzIsIC8qICAgKi9cbiAgQ0hBUl9UQUI6IDksIC8qIFxcdCAqL1xuICBDSEFSX1VOREVSU0NPUkU6IDk1LCAvKiBfICovXG4gIENIQVJfVkVSVElDQUxfTElORTogMTI0LCAvKiB8ICovXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFOiA2NTI3OSwgLyogXFx1RkVGRiAqL1xuXG4gIFNFUDogcGF0aC5zZXAsXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBFWFRHTE9CX0NIQVJTXG4gICAqL1xuXG4gIGV4dGdsb2JDaGFycyhjaGFycykge1xuICAgIHJldHVybiB7XG4gICAgICAnISc6IHsgdHlwZTogJ25lZ2F0ZScsIG9wZW46ICcoPzooPyEoPzonLCBjbG9zZTogYCkpJHtjaGFycy5TVEFSfSlgIH0sXG4gICAgICAnPyc6IHsgdHlwZTogJ3FtYXJrJywgb3BlbjogJyg/OicsIGNsb3NlOiAnKT8nIH0sXG4gICAgICAnKyc6IHsgdHlwZTogJ3BsdXMnLCBvcGVuOiAnKD86JywgY2xvc2U6ICcpKycgfSxcbiAgICAgICcqJzogeyB0eXBlOiAnc3RhcicsIG9wZW46ICcoPzonLCBjbG9zZTogJykqJyB9LFxuICAgICAgJ0AnOiB7IHR5cGU6ICdhdCcsIG9wZW46ICcoPzonLCBjbG9zZTogJyknIH1cbiAgICB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgR0xPQl9DSEFSU1xuICAgKi9cblxuICBnbG9iQ2hhcnMod2luMzIpIHtcbiAgICByZXR1cm4gd2luMzIgPT09IHRydWUgPyBXSU5ET1dTX0NIQVJTIDogUE9TSVhfQ0hBUlM7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB3aW4zMiA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5jb25zdCB7XG4gIFJFR0VYX0JBQ0tTTEFTSCxcbiAgUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSUyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUxcbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG5leHBvcnRzLmlzT2JqZWN0ID0gdmFsID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuZXhwb3J0cy5oYXNSZWdleENoYXJzID0gc3RyID0+IFJFR0VYX1NQRUNJQUxfQ0hBUlMudGVzdChzdHIpO1xuZXhwb3J0cy5pc1JlZ2V4Q2hhciA9IHN0ciA9PiBzdHIubGVuZ3RoID09PSAxICYmIGV4cG9ydHMuaGFzUmVnZXhDaGFycyhzdHIpO1xuZXhwb3J0cy5lc2NhcGVSZWdleCA9IHN0ciA9PiBzdHIucmVwbGFjZShSRUdFWF9TUEVDSUFMX0NIQVJTX0dMT0JBTCwgJ1xcXFwkMScpO1xuZXhwb3J0cy50b1Bvc2l4U2xhc2hlcyA9IHN0ciA9PiBzdHIucmVwbGFjZShSRUdFWF9CQUNLU0xBU0gsICcvJyk7XG5cbmV4cG9ydHMucmVtb3ZlQmFja3NsYXNoZXMgPSBzdHIgPT4ge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCwgbWF0Y2ggPT4ge1xuICAgIHJldHVybiBtYXRjaCA9PT0gJ1xcXFwnID8gJycgOiBtYXRjaDtcbiAgfSk7XG59O1xuXG5leHBvcnRzLnN1cHBvcnRzTG9va2JlaGluZHMgPSAoKSA9PiB7XG4gIGNvbnN0IHNlZ3MgPSBwcm9jZXNzLnZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKS5tYXAoTnVtYmVyKTtcbiAgaWYgKHNlZ3MubGVuZ3RoID09PSAzICYmIHNlZ3NbMF0gPj0gOSB8fCAoc2Vnc1swXSA9PT0gOCAmJiBzZWdzWzFdID49IDEwKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydHMuaXNXaW5kb3dzID0gb3B0aW9ucyA9PiB7XG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLndpbmRvd3MgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBvcHRpb25zLndpbmRvd3M7XG4gIH1cbiAgcmV0dXJuIHdpbjMyID09PSB0cnVlIHx8IHBhdGguc2VwID09PSAnXFxcXCc7XG59O1xuXG5leHBvcnRzLmVzY2FwZUxhc3QgPSAoaW5wdXQsIGNoYXIsIGxhc3RJZHgpID0+IHtcbiAgY29uc3QgaWR4ID0gaW5wdXQubGFzdEluZGV4T2YoY2hhciwgbGFzdElkeCk7XG4gIGlmIChpZHggPT09IC0xKSByZXR1cm4gaW5wdXQ7XG4gIGlmIChpbnB1dFtpZHggLSAxXSA9PT0gJ1xcXFwnKSByZXR1cm4gZXhwb3J0cy5lc2NhcGVMYXN0KGlucHV0LCBjaGFyLCBpZHggLSAxKTtcbiAgcmV0dXJuIGAke2lucHV0LnNsaWNlKDAsIGlkeCl9XFxcXCR7aW5wdXQuc2xpY2UoaWR4KX1gO1xufTtcblxuZXhwb3J0cy5yZW1vdmVQcmVmaXggPSAoaW5wdXQsIHN0YXRlID0ge30pID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0O1xuICBpZiAob3V0cHV0LnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICBvdXRwdXQgPSBvdXRwdXQuc2xpY2UoMik7XG4gICAgc3RhdGUucHJlZml4ID0gJy4vJztcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuZXhwb3J0cy53cmFwT3V0cHV0ID0gKGlucHV0LCBzdGF0ZSA9IHt9LCBvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3QgcHJlcGVuZCA9IG9wdGlvbnMuY29udGFpbnMgPyAnJyA6ICdeJztcbiAgY29uc3QgYXBwZW5kID0gb3B0aW9ucy5jb250YWlucyA/ICcnIDogJyQnO1xuXG4gIGxldCBvdXRwdXQgPSBgJHtwcmVwZW5kfSg/OiR7aW5wdXR9KSR7YXBwZW5kfWA7XG4gIGlmIChzdGF0ZS5uZWdhdGVkID09PSB0cnVlKSB7XG4gICAgb3V0cHV0ID0gYCg/Ol4oPyEke291dHB1dH0pLiokKWA7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3Qge1xuICBDSEFSX0FTVEVSSVNLLCAgICAgICAgICAgICAvKiAqICovXG4gIENIQVJfQVQsICAgICAgICAgICAgICAgICAgIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSCwgICAgICAgLyogXFwgKi9cbiAgQ0hBUl9DT01NQSwgICAgICAgICAgICAgICAgLyogLCAqL1xuICBDSEFSX0RPVCwgICAgICAgICAgICAgICAgICAvKiAuICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSywgICAgIC8qICEgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNILCAgICAgICAgLyogLyAqL1xuICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UsICAgICAvKiB7ICovXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUywgICAgIC8qICggKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULCAgLyogWyAqL1xuICBDSEFSX1BMVVMsICAgICAgICAgICAgICAgICAvKiArICovXG4gIENIQVJfUVVFU1RJT05fTUFSSywgICAgICAgIC8qID8gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSwgICAgLyogfSAqL1xuICBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTLCAgICAvKiApICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgIC8qIF0gKi9cbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG5jb25zdCBpc1BhdGhTZXBhcmF0b3IgPSBjb2RlID0+IHtcbiAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCB8fCBjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIO1xufTtcblxuY29uc3QgZGVwdGggPSB0b2tlbiA9PiB7XG4gIGlmICh0b2tlbi5pc1ByZWZpeCAhPT0gdHJ1ZSkge1xuICAgIHRva2VuLmRlcHRoID0gdG9rZW4uaXNHbG9ic3RhciA/IEluZmluaXR5IDogMTtcbiAgfVxufTtcblxuLyoqXG4gKiBRdWlja2x5IHNjYW5zIGEgZ2xvYiBwYXR0ZXJuIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgaGFuZGZ1bCBvZlxuICogdXNlZnVsIHByb3BlcnRpZXMsIGxpa2UgYGlzR2xvYmAsIGBwYXRoYCAodGhlIGxlYWRpbmcgbm9uLWdsb2IsIGlmIGl0IGV4aXN0cyksXG4gKiBgZ2xvYmAgKHRoZSBhY3R1YWwgcGF0dGVybiksIGFuZCBgbmVnYXRlZGAgKHRydWUgaWYgdGhlIHBhdGggc3RhcnRzIHdpdGggYCFgKS5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcG0gPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIGNvbnNvbGUubG9nKHBtLnNjYW4oJ2Zvby9iYXIvKi5qcycpKTtcbiAqIHsgaXNHbG9iOiB0cnVlLCBpbnB1dDogJ2Zvby9iYXIvKi5qcycsIGJhc2U6ICdmb28vYmFyJywgZ2xvYjogJyouanMnIH1cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggdG9rZW5zIGFuZCByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5jb25zdCBzY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGNvbnN0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aCAtIDE7XG4gIGNvbnN0IHNjYW5Ub0VuZCA9IG9wdHMucGFydHMgPT09IHRydWUgfHwgb3B0cy5zY2FuVG9FbmQgPT09IHRydWU7XG4gIGNvbnN0IHNsYXNoZXMgPSBbXTtcbiAgY29uc3QgdG9rZW5zID0gW107XG4gIGNvbnN0IHBhcnRzID0gW107XG5cbiAgbGV0IHN0ciA9IGlucHV0O1xuICBsZXQgaW5kZXggPSAtMTtcbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBpc0JyYWNlID0gZmFsc2U7XG4gIGxldCBpc0JyYWNrZXQgPSBmYWxzZTtcbiAgbGV0IGlzR2xvYiA9IGZhbHNlO1xuICBsZXQgaXNFeHRnbG9iID0gZmFsc2U7XG4gIGxldCBpc0dsb2JzdGFyID0gZmFsc2U7XG4gIGxldCBicmFjZUVzY2FwZWQgPSBmYWxzZTtcbiAgbGV0IGJhY2tzbGFzaGVzID0gZmFsc2U7XG4gIGxldCBuZWdhdGVkID0gZmFsc2U7XG4gIGxldCBmaW5pc2hlZCA9IGZhbHNlO1xuICBsZXQgYnJhY2VzID0gMDtcbiAgbGV0IHByZXY7XG4gIGxldCBjb2RlO1xuICBsZXQgdG9rZW4gPSB7IHZhbHVlOiAnJywgZGVwdGg6IDAsIGlzR2xvYjogZmFsc2UgfTtcblxuICBjb25zdCBlb3MgPSAoKSA9PiBpbmRleCA+PSBsZW5ndGg7XG4gIGNvbnN0IHBlZWsgPSAoKSA9PiBzdHIuY2hhckNvZGVBdChpbmRleCArIDEpO1xuICBjb25zdCBhZHZhbmNlID0gKCkgPT4ge1xuICAgIHByZXYgPSBjb2RlO1xuICAgIHJldHVybiBzdHIuY2hhckNvZGVBdCgrK2luZGV4KTtcbiAgfTtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgIGxldCBuZXh0O1xuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgY29kZSA9IGFkdmFuY2UoKTtcblxuICAgICAgaWYgKGNvZGUgPT09IENIQVJfTEVGVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICBicmFjZUVzY2FwZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGJyYWNlRXNjYXBlZCA9PT0gdHJ1ZSB8fCBjb2RlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgIGJyYWNlcysrO1xuXG4gICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKGNvZGUgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgYWR2YW5jZSgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfTEVGVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICAgIGJyYWNlcysrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJyYWNlRXNjYXBlZCAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0RPVCAmJiAoY29kZSA9IGFkdmFuY2UoKSkgPT09IENIQVJfRE9UKSB7XG4gICAgICAgICAgaXNCcmFjZSA9IHRva2VuLmlzQnJhY2UgPSB0cnVlO1xuICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnJhY2VFc2NhcGVkICE9PSB0cnVlICYmIGNvZGUgPT09IENIQVJfQ09NTUEpIHtcbiAgICAgICAgICBpc0JyYWNlID0gdG9rZW4uaXNCcmFjZSA9IHRydWU7XG4gICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFKSB7XG4gICAgICAgICAgYnJhY2VzLS07XG5cbiAgICAgICAgICBpZiAoYnJhY2VzID09PSAwKSB7XG4gICAgICAgICAgICBicmFjZUVzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlzQnJhY2UgPSB0b2tlbi5pc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICBzbGFzaGVzLnB1c2goaW5kZXgpO1xuICAgICAgdG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgdG9rZW4gPSB7IHZhbHVlOiAnJywgZGVwdGg6IDAsIGlzR2xvYjogZmFsc2UgfTtcblxuICAgICAgaWYgKGZpbmlzaGVkID09PSB0cnVlKSBjb250aW51ZTtcbiAgICAgIGlmIChwcmV2ID09PSBDSEFSX0RPVCAmJiBpbmRleCA9PT0gKHN0YXJ0ICsgMSkpIHtcbiAgICAgICAgc3RhcnQgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRzLm5vZXh0ICE9PSB0cnVlKSB7XG4gICAgICBjb25zdCBpc0V4dGdsb2JDaGFyID0gY29kZSA9PT0gQ0hBUl9QTFVTXG4gICAgICAgIHx8IGNvZGUgPT09IENIQVJfQVRcbiAgICAgICAgfHwgY29kZSA9PT0gQ0hBUl9BU1RFUklTS1xuICAgICAgICB8fCBjb2RlID09PSBDSEFSX1FVRVNUSU9OX01BUktcbiAgICAgICAgfHwgY29kZSA9PT0gQ0hBUl9FWENMQU1BVElPTl9NQVJLO1xuXG4gICAgICBpZiAoaXNFeHRnbG9iQ2hhciA9PT0gdHJ1ZSAmJiBwZWVrKCkgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgICBpc0V4dGdsb2IgPSB0b2tlbi5pc0V4dGdsb2IgPSB0cnVlO1xuICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHdoaWxlIChlb3MoKSAhPT0gdHJ1ZSAmJiAoY29kZSA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfQVNURVJJU0spIHtcbiAgICAgIGlmIChwcmV2ID09PSBDSEFSX0FTVEVSSVNLKSBpc0dsb2JzdGFyID0gdG9rZW4uaXNHbG9ic3RhciA9IHRydWU7XG4gICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfUVVFU1RJT05fTUFSSykge1xuICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgIHdoaWxlIChlb3MoKSAhPT0gdHJ1ZSAmJiAobmV4dCA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICBhZHZhbmNlKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgIGlzQnJhY2tldCA9IHRva2VuLmlzQnJhY2tldCA9IHRydWU7XG4gICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0cy5ub25lZ2F0ZSAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0VYQ0xBTUFUSU9OX01BUksgJiYgaW5kZXggPT09IHN0YXJ0KSB7XG4gICAgICBuZWdhdGVkID0gdG9rZW4ubmVnYXRlZCA9IHRydWU7XG4gICAgICBzdGFydCsrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMubm9wYXJlbiAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG5cbiAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgd2hpbGUgKGVvcygpICE9PSB0cnVlICYmIChjb2RlID0gYWR2YW5jZSgpKSkge1xuICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29kZSA9IGFkdmFuY2UoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTKSB7XG4gICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaXNHbG9iID09PSB0cnVlKSB7XG4gICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLm5vZXh0ID09PSB0cnVlKSB7XG4gICAgaXNFeHRnbG9iID0gZmFsc2U7XG4gICAgaXNHbG9iID0gZmFsc2U7XG4gIH1cblxuICBsZXQgYmFzZSA9IHN0cjtcbiAgbGV0IHByZWZpeCA9ICcnO1xuICBsZXQgZ2xvYiA9ICcnO1xuXG4gIGlmIChzdGFydCA+IDApIHtcbiAgICBwcmVmaXggPSBzdHIuc2xpY2UoMCwgc3RhcnQpO1xuICAgIHN0ciA9IHN0ci5zbGljZShzdGFydCk7XG4gICAgbGFzdEluZGV4IC09IHN0YXJ0O1xuICB9XG5cbiAgaWYgKGJhc2UgJiYgaXNHbG9iID09PSB0cnVlICYmIGxhc3RJbmRleCA+IDApIHtcbiAgICBiYXNlID0gc3RyLnNsaWNlKDAsIGxhc3RJbmRleCk7XG4gICAgZ2xvYiA9IHN0ci5zbGljZShsYXN0SW5kZXgpO1xuICB9IGVsc2UgaWYgKGlzR2xvYiA9PT0gdHJ1ZSkge1xuICAgIGJhc2UgPSAnJztcbiAgICBnbG9iID0gc3RyO1xuICB9IGVsc2Uge1xuICAgIGJhc2UgPSBzdHI7XG4gIH1cblxuICBpZiAoYmFzZSAmJiBiYXNlICE9PSAnJyAmJiBiYXNlICE9PSAnLycgJiYgYmFzZSAhPT0gc3RyKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihiYXNlLmNoYXJDb2RlQXQoYmFzZS5sZW5ndGggLSAxKSkpIHtcbiAgICAgIGJhc2UgPSBiYXNlLnNsaWNlKDAsIC0xKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy51bmVzY2FwZSA9PT0gdHJ1ZSkge1xuICAgIGlmIChnbG9iKSBnbG9iID0gdXRpbHMucmVtb3ZlQmFja3NsYXNoZXMoZ2xvYik7XG5cbiAgICBpZiAoYmFzZSAmJiBiYWNrc2xhc2hlcyA9PT0gdHJ1ZSkge1xuICAgICAgYmFzZSA9IHV0aWxzLnJlbW92ZUJhY2tzbGFzaGVzKGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIHByZWZpeCxcbiAgICBpbnB1dCxcbiAgICBzdGFydCxcbiAgICBiYXNlLFxuICAgIGdsb2IsXG4gICAgaXNCcmFjZSxcbiAgICBpc0JyYWNrZXQsXG4gICAgaXNHbG9iLFxuICAgIGlzRXh0Z2xvYixcbiAgICBpc0dsb2JzdGFyLFxuICAgIG5lZ2F0ZWRcbiAgfTtcblxuICBpZiAob3B0cy50b2tlbnMgPT09IHRydWUpIHtcbiAgICBzdGF0ZS5tYXhEZXB0aCA9IDA7XG4gICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICB9XG4gICAgc3RhdGUudG9rZW5zID0gdG9rZW5zO1xuICB9XG5cbiAgaWYgKG9wdHMucGFydHMgPT09IHRydWUgfHwgb3B0cy50b2tlbnMgPT09IHRydWUpIHtcbiAgICBsZXQgcHJldkluZGV4O1xuXG4gICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgc2xhc2hlcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICBjb25zdCBuID0gcHJldkluZGV4ID8gcHJldkluZGV4ICsgMSA6IHN0YXJ0O1xuICAgICAgY29uc3QgaSA9IHNsYXNoZXNbaWR4XTtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQuc2xpY2UobiwgaSk7XG4gICAgICBpZiAob3B0cy50b2tlbnMpIHtcbiAgICAgICAgaWYgKGlkeCA9PT0gMCAmJiBzdGFydCAhPT0gMCkge1xuICAgICAgICAgIHRva2Vuc1tpZHhdLmlzUHJlZml4ID0gdHJ1ZTtcbiAgICAgICAgICB0b2tlbnNbaWR4XS52YWx1ZSA9IHByZWZpeDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b2tlbnNbaWR4XS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGRlcHRoKHRva2Vuc1tpZHhdKTtcbiAgICAgICAgc3RhdGUubWF4RGVwdGggKz0gdG9rZW5zW2lkeF0uZGVwdGg7XG4gICAgICB9XG4gICAgICBpZiAoaWR4ICE9PSAwIHx8IHZhbHVlICE9PSAnJykge1xuICAgICAgICBwYXJ0cy5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHByZXZJbmRleCA9IGk7XG4gICAgfVxuXG4gICAgaWYgKHByZXZJbmRleCAmJiBwcmV2SW5kZXggKyAxIDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnNsaWNlKHByZXZJbmRleCArIDEpO1xuICAgICAgcGFydHMucHVzaCh2YWx1ZSk7XG5cbiAgICAgIGlmIChvcHRzLnRva2Vucykge1xuICAgICAgICB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGRlcHRoKHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0pO1xuICAgICAgICBzdGF0ZS5tYXhEZXB0aCArPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLmRlcHRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRlLnNsYXNoZXMgPSBzbGFzaGVzO1xuICAgIHN0YXRlLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNjYW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJyk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCB7XG4gIE1BWF9MRU5HVEgsXG4gIFBPU0lYX1JFR0VYX1NPVVJDRSxcbiAgUkVHRVhfTk9OX1NQRUNJQUxfQ0hBUlMsXG4gIFJFR0VYX1NQRUNJQUxfQ0hBUlNfQkFDS1JFRixcbiAgUkVQTEFDRU1FTlRTXG59ID0gY29uc3RhbnRzO1xuXG4vKipcbiAqIEhlbHBlcnNcbiAqL1xuXG5jb25zdCBleHBhbmRSYW5nZSA9IChhcmdzLCBvcHRpb25zKSA9PiB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5leHBhbmRSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBvcHRpb25zLmV4cGFuZFJhbmdlKC4uLmFyZ3MsIG9wdGlvbnMpO1xuICB9XG5cbiAgYXJncy5zb3J0KCk7XG4gIGNvbnN0IHZhbHVlID0gYFske2FyZ3Muam9pbignLScpfV1gO1xuXG4gIHRyeSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldyAqL1xuICAgIG5ldyBSZWdFeHAodmFsdWUpO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJldHVybiBhcmdzLm1hcCh2ID0+IHV0aWxzLmVzY2FwZVJlZ2V4KHYpKS5qb2luKCcuLicpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIG1lc3NhZ2UgZm9yIGEgc3ludGF4IGVycm9yXG4gKi9cblxuY29uc3Qgc3ludGF4RXJyb3IgPSAodHlwZSwgY2hhcikgPT4ge1xuICByZXR1cm4gYE1pc3NpbmcgJHt0eXBlfTogXCIke2NoYXJ9XCIgLSB1c2UgXCJcXFxcXFxcXCR7Y2hhcn1cIiB0byBtYXRjaCBsaXRlcmFsIGNoYXJhY3RlcnNgO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gaW5wdXQgc3RyaW5nLlxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5cbmNvbnN0IHBhcnNlID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIGlucHV0ID0gUkVQTEFDRU1FTlRTW2lucHV0XSB8fCBpbnB1dDtcblxuICBjb25zdCBvcHRzID0geyAuLi5vcHRpb25zIH07XG4gIGNvbnN0IG1heCA9IHR5cGVvZiBvcHRzLm1heExlbmd0aCA9PT0gJ251bWJlcicgPyBNYXRoLm1pbihNQVhfTEVOR1RILCBvcHRzLm1heExlbmd0aCkgOiBNQVhfTEVOR1RIO1xuXG4gIGxldCBsZW4gPSBpbnB1dC5sZW5ndGg7XG4gIGlmIChsZW4gPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYElucHV0IGxlbmd0aDogJHtsZW59LCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBsZW5ndGg6ICR7bWF4fWApO1xuICB9XG5cbiAgY29uc3QgYm9zID0geyB0eXBlOiAnYm9zJywgdmFsdWU6ICcnLCBvdXRwdXQ6IG9wdHMucHJlcGVuZCB8fCAnJyB9O1xuICBjb25zdCB0b2tlbnMgPSBbYm9zXTtcblxuICBjb25zdCBjYXB0dXJlID0gb3B0cy5jYXB0dXJlID8gJycgOiAnPzonO1xuICBjb25zdCB3aW4zMiA9IHV0aWxzLmlzV2luZG93cyhvcHRpb25zKTtcblxuICAvLyBjcmVhdGUgY29uc3RhbnRzIGJhc2VkIG9uIHBsYXRmb3JtLCBmb3Igd2luZG93cyBvciBwb3NpeFxuICBjb25zdCBQTEFURk9STV9DSEFSUyA9IGNvbnN0YW50cy5nbG9iQ2hhcnMod2luMzIpO1xuICBjb25zdCBFWFRHTE9CX0NIQVJTID0gY29uc3RhbnRzLmV4dGdsb2JDaGFycyhQTEFURk9STV9DSEFSUyk7XG5cbiAgY29uc3Qge1xuICAgIERPVF9MSVRFUkFMLFxuICAgIFBMVVNfTElURVJBTCxcbiAgICBTTEFTSF9MSVRFUkFMLFxuICAgIE9ORV9DSEFSLFxuICAgIERPVFNfU0xBU0gsXG4gICAgTk9fRE9ULFxuICAgIE5PX0RPVF9TTEFTSCxcbiAgICBOT19ET1RTX1NMQVNILFxuICAgIFFNQVJLLFxuICAgIFFNQVJLX05PX0RPVCxcbiAgICBTVEFSLFxuICAgIFNUQVJUX0FOQ0hPUlxuICB9ID0gUExBVEZPUk1fQ0hBUlM7XG5cbiAgY29uc3QgZ2xvYnN0YXIgPSAob3B0cykgPT4ge1xuICAgIHJldHVybiBgKCR7Y2FwdHVyZX0oPzooPyEke1NUQVJUX0FOQ0hPUn0ke29wdHMuZG90ID8gRE9UU19TTEFTSCA6IERPVF9MSVRFUkFMfSkuKSo/KWA7XG4gIH07XG5cbiAgY29uc3Qgbm9kb3QgPSBvcHRzLmRvdCA/ICcnIDogTk9fRE9UO1xuICBjb25zdCBxbWFya05vRG90ID0gb3B0cy5kb3QgPyBRTUFSSyA6IFFNQVJLX05PX0RPVDtcbiAgbGV0IHN0YXIgPSBvcHRzLmJhc2ggPT09IHRydWUgPyBnbG9ic3RhcihvcHRzKSA6IFNUQVI7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgIHN0YXIgPSBgKCR7c3Rhcn0pYDtcbiAgfVxuXG4gIC8vIG1pbmltYXRjaCBvcHRpb25zIHN1cHBvcnRcbiAgaWYgKHR5cGVvZiBvcHRzLm5vZXh0ID09PSAnYm9vbGVhbicpIHtcbiAgICBvcHRzLm5vZXh0Z2xvYiA9IG9wdHMubm9leHQ7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICBpbnB1dCxcbiAgICBpbmRleDogLTEsXG4gICAgc3RhcnQ6IDAsXG4gICAgZG90OiBvcHRzLmRvdCA9PT0gdHJ1ZSxcbiAgICBjb25zdW1lZDogJycsXG4gICAgb3V0cHV0OiAnJyxcbiAgICBwcmVmaXg6ICcnLFxuICAgIGJhY2t0cmFjazogZmFsc2UsXG4gICAgbmVnYXRlZDogZmFsc2UsXG4gICAgYnJhY2tldHM6IDAsXG4gICAgYnJhY2VzOiAwLFxuICAgIHBhcmVuczogMCxcbiAgICBxdW90ZXM6IDAsXG4gICAgZ2xvYnN0YXI6IGZhbHNlLFxuICAgIHRva2Vuc1xuICB9O1xuXG4gIGlucHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxlbiA9IGlucHV0Lmxlbmd0aDtcblxuICBjb25zdCBleHRnbG9icyA9IFtdO1xuICBjb25zdCBicmFjZXMgPSBbXTtcbiAgY29uc3Qgc3RhY2sgPSBbXTtcbiAgbGV0IHByZXYgPSBib3M7XG4gIGxldCB2YWx1ZTtcblxuICAvKipcbiAgICogVG9rZW5pemluZyBoZWxwZXJzXG4gICAqL1xuXG4gIGNvbnN0IGVvcyA9ICgpID0+IHN0YXRlLmluZGV4ID09PSBsZW4gLSAxO1xuICBjb25zdCBwZWVrID0gc3RhdGUucGVlayA9IChuID0gMSkgPT4gaW5wdXRbc3RhdGUuaW5kZXggKyBuXTtcbiAgY29uc3QgYWR2YW5jZSA9IHN0YXRlLmFkdmFuY2UgPSAoKSA9PiBpbnB1dFsrK3N0YXRlLmluZGV4XTtcbiAgY29uc3QgcmVtYWluaW5nID0gKCkgPT4gaW5wdXQuc2xpY2Uoc3RhdGUuaW5kZXggKyAxKTtcbiAgY29uc3QgY29uc3VtZSA9ICh2YWx1ZSA9ICcnLCBudW0gPSAwKSA9PiB7XG4gICAgc3RhdGUuY29uc3VtZWQgKz0gdmFsdWU7XG4gICAgc3RhdGUuaW5kZXggKz0gbnVtO1xuICB9O1xuICBjb25zdCBhcHBlbmQgPSB0b2tlbiA9PiB7XG4gICAgc3RhdGUub3V0cHV0ICs9IHRva2VuLm91dHB1dCAhPSBudWxsID8gdG9rZW4ub3V0cHV0IDogdG9rZW4udmFsdWU7XG4gICAgY29uc3VtZSh0b2tlbi52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgbmVnYXRlID0gKCkgPT4ge1xuICAgIGxldCBjb3VudCA9IDE7XG5cbiAgICB3aGlsZSAocGVlaygpID09PSAnIScgJiYgKHBlZWsoMikgIT09ICcoJyB8fCBwZWVrKDMpID09PSAnPycpKSB7XG4gICAgICBhZHZhbmNlKCk7XG4gICAgICBzdGF0ZS5zdGFydCsrO1xuICAgICAgY291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY291bnQgJSAyID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3RhdGUubmVnYXRlZCA9IHRydWU7XG4gICAgc3RhdGUuc3RhcnQrKztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBpbmNyZW1lbnQgPSB0eXBlID0+IHtcbiAgICBzdGF0ZVt0eXBlXSsrO1xuICAgIHN0YWNrLnB1c2godHlwZSk7XG4gIH07XG5cbiAgY29uc3QgZGVjcmVtZW50ID0gdHlwZSA9PiB7XG4gICAgc3RhdGVbdHlwZV0tLTtcbiAgICBzdGFjay5wb3AoKTtcbiAgfTtcblxuICAvKipcbiAgICogUHVzaCB0b2tlbnMgb250byB0aGUgdG9rZW5zIGFycmF5LiBUaGlzIGhlbHBlciBzcGVlZHMgdXBcbiAgICogdG9rZW5pemluZyBieSAxKSBoZWxwaW5nIHVzIGF2b2lkIGJhY2t0cmFja2luZyBhcyBtdWNoIGFzIHBvc3NpYmxlLFxuICAgKiBhbmQgMikgaGVscGluZyB1cyBhdm9pZCBjcmVhdGluZyBleHRyYSB0b2tlbnMgd2hlbiBjb25zZWN1dGl2ZVxuICAgKiBjaGFyYWN0ZXJzIGFyZSBwbGFpbiB0ZXh0LiBUaGlzIGltcHJvdmVzIHBlcmZvcm1hbmNlIGFuZCBzaW1wbGlmaWVzXG4gICAqIGxvb2tiZWhpbmRzLlxuICAgKi9cblxuICBjb25zdCBwdXNoID0gdG9rID0+IHtcbiAgICBpZiAocHJldi50eXBlID09PSAnZ2xvYnN0YXInKSB7XG4gICAgICBjb25zdCBpc0JyYWNlID0gc3RhdGUuYnJhY2VzID4gMCAmJiAodG9rLnR5cGUgPT09ICdjb21tYScgfHwgdG9rLnR5cGUgPT09ICdicmFjZScpO1xuICAgICAgY29uc3QgaXNFeHRnbG9iID0gdG9rLmV4dGdsb2IgPT09IHRydWUgfHwgKGV4dGdsb2JzLmxlbmd0aCAmJiAodG9rLnR5cGUgPT09ICdwaXBlJyB8fCB0b2sudHlwZSA9PT0gJ3BhcmVuJykpO1xuXG4gICAgICBpZiAodG9rLnR5cGUgIT09ICdzbGFzaCcgJiYgdG9rLnR5cGUgIT09ICdwYXJlbicgJiYgIWlzQnJhY2UgJiYgIWlzRXh0Z2xvYikge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLXByZXYub3V0cHV0Lmxlbmd0aCk7XG4gICAgICAgIHByZXYudHlwZSA9ICdzdGFyJztcbiAgICAgICAgcHJldi52YWx1ZSA9ICcqJztcbiAgICAgICAgcHJldi5vdXRwdXQgPSBzdGFyO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJldi5vdXRwdXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4dGdsb2JzLmxlbmd0aCAmJiB0b2sudHlwZSAhPT0gJ3BhcmVuJyAmJiAhRVhUR0xPQl9DSEFSU1t0b2sudmFsdWVdKSB7XG4gICAgICBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXS5pbm5lciArPSB0b2sudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRvay52YWx1ZSB8fCB0b2sub3V0cHV0KSBhcHBlbmQodG9rKTtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICd0ZXh0JyAmJiB0b2sudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBwcmV2LnZhbHVlICs9IHRvay52YWx1ZTtcbiAgICAgIHByZXYub3V0cHV0ID0gKHByZXYub3V0cHV0IHx8ICcnKSArIHRvay52YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2sucHJldiA9IHByZXY7XG4gICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICBwcmV2ID0gdG9rO1xuICB9O1xuXG4gIGNvbnN0IGV4dGdsb2JPcGVuID0gKHR5cGUsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdG9rZW4gPSB7IC4uLkVYVEdMT0JfQ0hBUlNbdmFsdWVdLCBjb25kaXRpb25zOiAxLCBpbm5lcjogJycgfTtcblxuICAgIHRva2VuLnByZXYgPSBwcmV2O1xuICAgIHRva2VuLnBhcmVucyA9IHN0YXRlLnBhcmVucztcbiAgICB0b2tlbi5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQ7XG4gICAgY29uc3Qgb3V0cHV0ID0gKG9wdHMuY2FwdHVyZSA/ICcoJyA6ICcnKSArIHRva2VuLm9wZW47XG5cbiAgICBpbmNyZW1lbnQoJ3BhcmVucycpO1xuICAgIHB1c2goeyB0eXBlLCB2YWx1ZSwgb3V0cHV0OiBzdGF0ZS5vdXRwdXQgPyAnJyA6IE9ORV9DSEFSIH0pO1xuICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCBleHRnbG9iOiB0cnVlLCB2YWx1ZTogYWR2YW5jZSgpLCBvdXRwdXQgfSk7XG4gICAgZXh0Z2xvYnMucHVzaCh0b2tlbik7XG4gIH07XG5cbiAgY29uc3QgZXh0Z2xvYkNsb3NlID0gdG9rZW4gPT4ge1xuICAgIGxldCBvdXRwdXQgPSB0b2tlbi5jbG9zZSArIChvcHRzLmNhcHR1cmUgPyAnKScgOiAnJyk7XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ25lZ2F0ZScpIHtcbiAgICAgIGxldCBleHRnbG9iU3RhciA9IHN0YXI7XG5cbiAgICAgIGlmICh0b2tlbi5pbm5lciAmJiB0b2tlbi5pbm5lci5sZW5ndGggPiAxICYmIHRva2VuLmlubmVyLmluY2x1ZGVzKCcvJykpIHtcbiAgICAgICAgZXh0Z2xvYlN0YXIgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dGdsb2JTdGFyICE9PSBzdGFyIHx8IGVvcygpIHx8IC9eXFwpKyQvLnRlc3QocmVtYWluaW5nKCkpKSB7XG4gICAgICAgIG91dHB1dCA9IHRva2VuLmNsb3NlID0gYCkkKSkke2V4dGdsb2JTdGFyfWA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlbi5wcmV2LnR5cGUgPT09ICdib3MnICYmIGVvcygpKSB7XG4gICAgICAgIHN0YXRlLm5lZ2F0ZWRFeHRnbG9iID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdXNoKHsgdHlwZTogJ3BhcmVuJywgZXh0Z2xvYjogdHJ1ZSwgdmFsdWUsIG91dHB1dCB9KTtcbiAgICBkZWNyZW1lbnQoJ3BhcmVucycpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBGYXN0IHBhdGhzXG4gICAqL1xuXG4gIGlmIChvcHRzLmZhc3RwYXRocyAhPT0gZmFsc2UgJiYgIS8oXlsqIV18Wy8oKVtcXF17fVwiXSkvLnRlc3QoaW5wdXQpKSB7XG4gICAgbGV0IGJhY2tzbGFzaGVzID0gZmFsc2U7XG5cbiAgICBsZXQgb3V0cHV0ID0gaW5wdXQucmVwbGFjZShSRUdFWF9TUEVDSUFMX0NIQVJTX0JBQ0tSRUYsIChtLCBlc2MsIGNoYXJzLCBmaXJzdCwgcmVzdCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChmaXJzdCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXJzdCA9PT0gJz8nKSB7XG4gICAgICAgIGlmIChlc2MpIHtcbiAgICAgICAgICByZXR1cm4gZXNjICsgZmlyc3QgKyAocmVzdCA/IFFNQVJLLnJlcGVhdChyZXN0Lmxlbmd0aCkgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHFtYXJrTm9Eb3QgKyAocmVzdCA/IFFNQVJLLnJlcGVhdChyZXN0Lmxlbmd0aCkgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFFNQVJLLnJlcGVhdChjaGFycy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3QgPT09ICcuJykge1xuICAgICAgICByZXR1cm4gRE9UX0xJVEVSQUwucmVwZWF0KGNoYXJzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXJzdCA9PT0gJyonKSB7XG4gICAgICAgIGlmIChlc2MpIHtcbiAgICAgICAgICByZXR1cm4gZXNjICsgZmlyc3QgKyAocmVzdCA/IHN0YXIgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXNjID8gbSA6IGBcXFxcJHttfWA7XG4gICAgfSk7XG5cbiAgICBpZiAoYmFja3NsYXNoZXMgPT09IHRydWUpIHtcbiAgICAgIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKC9cXFxcL2csICcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKC9cXFxcKy9nLCBtID0+IHtcbiAgICAgICAgICByZXR1cm4gbS5sZW5ndGggJSAyID09PSAwID8gJ1xcXFxcXFxcJyA6IChtID8gJ1xcXFwnIDogJycpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3V0cHV0ID09PSBpbnB1dCAmJiBvcHRzLmNvbnRhaW5zID09PSB0cnVlKSB7XG4gICAgICBzdGF0ZS5vdXRwdXQgPSBpbnB1dDtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy53cmFwT3V0cHV0KG91dHB1dCwgc3RhdGUsIG9wdGlvbnMpO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2tlbml6ZSBpbnB1dCB1bnRpbCB3ZSByZWFjaCBlbmQtb2Ytc3RyaW5nXG4gICAqL1xuXG4gIHdoaWxlICghZW9zKCkpIHtcbiAgICB2YWx1ZSA9IGFkdmFuY2UoKTtcblxuICAgIGlmICh2YWx1ZSA9PT0gJ1xcdTAwMDAnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVkIGNoYXJhY3RlcnNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ1xcXFwnKSB7XG4gICAgICBjb25zdCBuZXh0ID0gcGVlaygpO1xuXG4gICAgICBpZiAobmV4dCA9PT0gJy8nICYmIG9wdHMuYmFzaCAhPT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5leHQgPT09ICcuJyB8fCBuZXh0ID09PSAnOycpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghbmV4dCkge1xuICAgICAgICB2YWx1ZSArPSAnXFxcXCc7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gY29sbGFwc2Ugc2xhc2hlcyB0byByZWR1Y2UgcG90ZW50aWFsIGZvciBleHBsb2l0c1xuICAgICAgY29uc3QgbWF0Y2ggPSAvXlxcXFwrLy5leGVjKHJlbWFpbmluZygpKTtcbiAgICAgIGxldCBzbGFzaGVzID0gMDtcblxuICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzBdLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgc2xhc2hlcyA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgc3RhdGUuaW5kZXggKz0gc2xhc2hlcztcbiAgICAgICAgaWYgKHNsYXNoZXMgJSAyICE9PSAwKSB7XG4gICAgICAgICAgdmFsdWUgKz0gJ1xcXFwnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgICAgIHZhbHVlID0gYWR2YW5jZSgpIHx8ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgKz0gYWR2YW5jZSgpIHx8ICcnO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUuYnJhY2tldHMgPT09IDApIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHdlJ3JlIGluc2lkZSBhIHJlZ2V4IGNoYXJhY3RlciBjbGFzcywgY29udGludWVcbiAgICAgKiB1bnRpbCB3ZSByZWFjaCB0aGUgY2xvc2luZyBicmFja2V0LlxuICAgICAqL1xuXG4gICAgaWYgKHN0YXRlLmJyYWNrZXRzID4gMCAmJiAodmFsdWUgIT09ICddJyB8fCBwcmV2LnZhbHVlID09PSAnWycgfHwgcHJldi52YWx1ZSA9PT0gJ1teJykpIHtcbiAgICAgIGlmIChvcHRzLnBvc2l4ICE9PSBmYWxzZSAmJiB2YWx1ZSA9PT0gJzonKSB7XG4gICAgICAgIGNvbnN0IGlubmVyID0gcHJldi52YWx1ZS5zbGljZSgxKTtcbiAgICAgICAgaWYgKGlubmVyLmluY2x1ZGVzKCdbJykpIHtcbiAgICAgICAgICBwcmV2LnBvc2l4ID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChpbm5lci5pbmNsdWRlcygnOicpKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBwcmV2LnZhbHVlLmxhc3RJbmRleE9mKCdbJyk7XG4gICAgICAgICAgICBjb25zdCBwcmUgPSBwcmV2LnZhbHVlLnNsaWNlKDAsIGlkeCk7XG4gICAgICAgICAgICBjb25zdCByZXN0ID0gcHJldi52YWx1ZS5zbGljZShpZHggKyAyKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l4ID0gUE9TSVhfUkVHRVhfU09VUkNFW3Jlc3RdO1xuICAgICAgICAgICAgaWYgKHBvc2l4KSB7XG4gICAgICAgICAgICAgIHByZXYudmFsdWUgPSBwcmUgKyBwb3NpeDtcbiAgICAgICAgICAgICAgc3RhdGUuYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYWR2YW5jZSgpO1xuXG4gICAgICAgICAgICAgIGlmICghYm9zLm91dHB1dCAmJiB0b2tlbnMuaW5kZXhPZihwcmV2KSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGJvcy5vdXRwdXQgPSBPTkVfQ0hBUjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCh2YWx1ZSA9PT0gJ1snICYmIHBlZWsoKSAhPT0gJzonKSB8fCAodmFsdWUgPT09ICctJyAmJiBwZWVrKCkgPT09ICddJykpIHtcbiAgICAgICAgdmFsdWUgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlID09PSAnXScgJiYgKHByZXYudmFsdWUgPT09ICdbJyB8fCBwcmV2LnZhbHVlID09PSAnW14nKSkge1xuICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5wb3NpeCA9PT0gdHJ1ZSAmJiB2YWx1ZSA9PT0gJyEnICYmIHByZXYudmFsdWUgPT09ICdbJykge1xuICAgICAgICB2YWx1ZSA9ICdeJztcbiAgICAgIH1cblxuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIGFwcGVuZCh7IHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgd2UncmUgaW5zaWRlIGEgcXVvdGVkIHN0cmluZywgY29udGludWVcbiAgICAgKiB1bnRpbCB3ZSByZWFjaCB0aGUgY2xvc2luZyBkb3VibGUgcXVvdGUuXG4gICAgICovXG5cbiAgICBpZiAoc3RhdGUucXVvdGVzID09PSAxICYmIHZhbHVlICE9PSAnXCInKSB7XG4gICAgICB2YWx1ZSA9IHV0aWxzLmVzY2FwZVJlZ2V4KHZhbHVlKTtcbiAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICBhcHBlbmQoeyB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvdWJsZSBxdW90ZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ1wiJykge1xuICAgICAgc3RhdGUucXVvdGVzID0gc3RhdGUucXVvdGVzID09PSAxID8gMCA6IDE7XG4gICAgICBpZiAob3B0cy5rZWVwUXVvdGVzID09PSB0cnVlKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyZW50aGVzZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJygnKSB7XG4gICAgICBpbmNyZW1lbnQoJ3BhcmVucycpO1xuICAgICAgcHVzaCh7IHR5cGU6ICdwYXJlbicsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnKScpIHtcbiAgICAgIGlmIChzdGF0ZS5wYXJlbnMgPT09IDAgJiYgb3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ29wZW5pbmcnLCAnKCcpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXh0Z2xvYiA9IGV4dGdsb2JzW2V4dGdsb2JzLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGV4dGdsb2IgJiYgc3RhdGUucGFyZW5zID09PSBleHRnbG9iLnBhcmVucyArIDEpIHtcbiAgICAgICAgZXh0Z2xvYkNsb3NlKGV4dGdsb2JzLnBvcCgpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCB2YWx1ZSwgb3V0cHV0OiBzdGF0ZS5wYXJlbnMgPyAnKScgOiAnXFxcXCknIH0pO1xuICAgICAgZGVjcmVtZW50KCdwYXJlbnMnKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNxdWFyZSBicmFja2V0c1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnWycpIHtcbiAgICAgIGlmIChvcHRzLm5vYnJhY2tldCA9PT0gdHJ1ZSB8fCAhcmVtYWluaW5nKCkuaW5jbHVkZXMoJ10nKSkge1xuICAgICAgICBpZiAob3B0cy5ub2JyYWNrZXQgIT09IHRydWUgJiYgb3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignY2xvc2luZycsICddJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluY3JlbWVudCgnYnJhY2tldHMnKTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdicmFja2V0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICddJykge1xuICAgICAgaWYgKG9wdHMubm9icmFja2V0ID09PSB0cnVlIHx8IChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ2JyYWNrZXQnICYmIHByZXYudmFsdWUubGVuZ3RoID09PSAxKSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSwgb3V0cHV0OiBgXFxcXCR7dmFsdWV9YCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5icmFja2V0cyA9PT0gMCkge1xuICAgICAgICBpZiAob3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignb3BlbmluZycsICdbJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dDogYFxcXFwke3ZhbHVlfWAgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBkZWNyZW1lbnQoJ2JyYWNrZXRzJyk7XG5cbiAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHByZXYudmFsdWUuc2xpY2UoMSk7XG4gICAgICBpZiAocHJldi5wb3NpeCAhPT0gdHJ1ZSAmJiBwcmV2VmFsdWVbMF0gPT09ICdeJyAmJiAhcHJldlZhbHVlLmluY2x1ZGVzKCcvJykpIHtcbiAgICAgICAgdmFsdWUgPSBgLyR7dmFsdWV9YDtcbiAgICAgIH1cblxuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIGFwcGVuZCh7IHZhbHVlIH0pO1xuXG4gICAgICAvLyB3aGVuIGxpdGVyYWwgYnJhY2tldHMgYXJlIGV4cGxpY2l0bHkgZGlzYWJsZWRcbiAgICAgIC8vIGFzc3VtZSB3ZSBzaG91bGQgbWF0Y2ggd2l0aCBhIHJlZ2V4IGNoYXJhY3RlciBjbGFzc1xuICAgICAgaWYgKG9wdHMubGl0ZXJhbEJyYWNrZXRzID09PSBmYWxzZSB8fCB1dGlscy5oYXNSZWdleENoYXJzKHByZXZWYWx1ZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVzY2FwZWQgPSB1dGlscy5lc2NhcGVSZWdleChwcmV2LnZhbHVlKTtcbiAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtcHJldi52YWx1ZS5sZW5ndGgpO1xuXG4gICAgICAvLyB3aGVuIGxpdGVyYWwgYnJhY2tldHMgYXJlIGV4cGxpY2l0bHkgZW5hYmxlZFxuICAgICAgLy8gYXNzdW1lIHdlIHNob3VsZCBlc2NhcGUgdGhlIGJyYWNrZXRzIHRvIG1hdGNoIGxpdGVyYWwgY2hhcmFjdGVyc1xuICAgICAgaWYgKG9wdHMubGl0ZXJhbEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBlc2NhcGVkO1xuICAgICAgICBwcmV2LnZhbHVlID0gZXNjYXBlZDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHdoZW4gdGhlIHVzZXIgc3BlY2lmaWVzIG5vdGhpbmcsIHRyeSB0byBtYXRjaCBib3RoXG4gICAgICBwcmV2LnZhbHVlID0gYCgke2NhcHR1cmV9JHtlc2NhcGVkfXwke3ByZXYudmFsdWV9KWA7XG4gICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJldi52YWx1ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJyYWNlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAneycgJiYgb3B0cy5ub2JyYWNlICE9PSB0cnVlKSB7XG4gICAgICBpbmNyZW1lbnQoJ2JyYWNlcycpO1xuXG4gICAgICBjb25zdCBvcGVuID0ge1xuICAgICAgICB0eXBlOiAnYnJhY2UnLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgb3V0cHV0OiAnKCcsXG4gICAgICAgIG91dHB1dEluZGV4OiBzdGF0ZS5vdXRwdXQubGVuZ3RoLFxuICAgICAgICB0b2tlbnNJbmRleDogc3RhdGUudG9rZW5zLmxlbmd0aFxuICAgICAgfTtcblxuICAgICAgYnJhY2VzLnB1c2gob3Blbik7XG4gICAgICBwdXNoKG9wZW4pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnfScpIHtcbiAgICAgIGNvbnN0IGJyYWNlID0gYnJhY2VzW2JyYWNlcy5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKG9wdHMubm9icmFjZSA9PT0gdHJ1ZSB8fCAhYnJhY2UpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dDogdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgb3V0cHV0ID0gJyknO1xuXG4gICAgICBpZiAoYnJhY2UuZG90cyA9PT0gdHJ1ZSkge1xuICAgICAgICBjb25zdCBhcnIgPSB0b2tlbnMuc2xpY2UoKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdG9rZW5zLnBvcCgpO1xuICAgICAgICAgIGlmIChhcnJbaV0udHlwZSA9PT0gJ2JyYWNlJykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhcnJbaV0udHlwZSAhPT0gJ2RvdHMnKSB7XG4gICAgICAgICAgICByYW5nZS51bnNoaWZ0KGFycltpXS52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0ID0gZXhwYW5kUmFuZ2UocmFuZ2UsIG9wdHMpO1xuICAgICAgICBzdGF0ZS5iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoYnJhY2UuY29tbWEgIT09IHRydWUgJiYgYnJhY2UuZG90cyAhPT0gdHJ1ZSkge1xuICAgICAgICBjb25zdCBvdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgYnJhY2Uub3V0cHV0SW5kZXgpO1xuICAgICAgICBjb25zdCB0b2tzID0gc3RhdGUudG9rZW5zLnNsaWNlKGJyYWNlLnRva2Vuc0luZGV4KTtcbiAgICAgICAgYnJhY2UudmFsdWUgPSBicmFjZS5vdXRwdXQgPSAnXFxcXHsnO1xuICAgICAgICB2YWx1ZSA9IG91dHB1dCA9ICdcXFxcfSc7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IG91dDtcbiAgICAgICAgZm9yIChjb25zdCB0IG9mIHRva3MpIHtcbiAgICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gKHQub3V0cHV0IHx8IHQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnYnJhY2UnLCB2YWx1ZSwgb3V0cHV0IH0pO1xuICAgICAgZGVjcmVtZW50KCdicmFjZXMnKTtcbiAgICAgIGJyYWNlcy5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBpcGVzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICd8Jykge1xuICAgICAgaWYgKGV4dGdsb2JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXh0Z2xvYnNbZXh0Z2xvYnMubGVuZ3RoIC0gMV0uY29uZGl0aW9ucysrO1xuICAgICAgfVxuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tYXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJywnKSB7XG4gICAgICBsZXQgb3V0cHV0ID0gdmFsdWU7XG5cbiAgICAgIGNvbnN0IGJyYWNlID0gYnJhY2VzW2JyYWNlcy5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChicmFjZSAmJiBzdGFja1tzdGFjay5sZW5ndGggLSAxXSA9PT0gJ2JyYWNlcycpIHtcbiAgICAgICAgYnJhY2UuY29tbWEgPSB0cnVlO1xuICAgICAgICBvdXRwdXQgPSAnfCc7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnY29tbWEnLCB2YWx1ZSwgb3V0cHV0IH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2xhc2hlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnLycpIHtcbiAgICAgIC8vIGlmIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGdsb2IgaXMgXCIuL1wiLCBhZHZhbmNlIHRoZSBzdGFydFxuICAgICAgLy8gdG8gdGhlIGN1cnJlbnQgaW5kZXgsIGFuZCBkb24ndCBhZGQgdGhlIFwiLi9cIiBjaGFyYWN0ZXJzXG4gICAgICAvLyB0byB0aGUgc3RhdGUuIFRoaXMgZ3JlYXRseSBzaW1wbGlmaWVzIGxvb2tiZWhpbmRzIHdoZW5cbiAgICAgIC8vIGNoZWNraW5nIGZvciBCT1MgY2hhcmFjdGVycyBsaWtlIFwiIVwiIGFuZCBcIi5cIiAobm90IFwiLi9cIilcbiAgICAgIGlmIChwcmV2LnR5cGUgPT09ICdkb3QnICYmIHN0YXRlLmluZGV4ID09PSBzdGF0ZS5zdGFydCArIDEpIHtcbiAgICAgICAgc3RhdGUuc3RhcnQgPSBzdGF0ZS5pbmRleCArIDE7XG4gICAgICAgIHN0YXRlLmNvbnN1bWVkID0gJyc7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9ICcnO1xuICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgIHByZXYgPSBib3M7IC8vIHJlc2V0IFwicHJldlwiIHRvIHRoZSBmaXJzdCB0b2tlblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdzbGFzaCcsIHZhbHVlLCBvdXRwdXQ6IFNMQVNIX0xJVEVSQUwgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3RzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICcuJykge1xuICAgICAgaWYgKHN0YXRlLmJyYWNlcyA+IDAgJiYgcHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgICBpZiAocHJldi52YWx1ZSA9PT0gJy4nKSBwcmV2Lm91dHB1dCA9IERPVF9MSVRFUkFMO1xuICAgICAgICBjb25zdCBicmFjZSA9IGJyYWNlc1ticmFjZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHByZXYudHlwZSA9ICdkb3RzJztcbiAgICAgICAgcHJldi5vdXRwdXQgKz0gdmFsdWU7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIGJyYWNlLmRvdHMgPSB0cnVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKChzdGF0ZS5icmFjZXMgKyBzdGF0ZS5wYXJlbnMpID09PSAwICYmIHByZXYudHlwZSAhPT0gJ2JvcycgJiYgcHJldi50eXBlICE9PSAnc2xhc2gnKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlLCBvdXRwdXQ6IERPVF9MSVRFUkFMIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdkb3QnLCB2YWx1ZSwgb3V0cHV0OiBET1RfTElURVJBTCB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFF1ZXN0aW9uIG1hcmtzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICc/Jykge1xuICAgICAgY29uc3QgaXNHcm91cCA9IHByZXYgJiYgcHJldi52YWx1ZSA9PT0gJygnO1xuICAgICAgaWYgKCFpc0dyb3VwICYmIG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIHBlZWsoKSA9PT0gJygnICYmIHBlZWsoMikgIT09ICc/Jykge1xuICAgICAgICBleHRnbG9iT3BlbigncW1hcmsnLCB2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdwYXJlbicpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHBlZWsoKTtcbiAgICAgICAgbGV0IG91dHB1dCA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChuZXh0ID09PSAnPCcgJiYgIXV0aWxzLnN1cHBvcnRzTG9va2JlaGluZHMoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm9kZS5qcyB2MTAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkIGZvciByZWdleCBsb29rYmVoaW5kcycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChwcmV2LnZhbHVlID09PSAnKCcgJiYgIS9bIT08Ol0vLnRlc3QobmV4dCkpIHx8IChuZXh0ID09PSAnPCcgJiYgIS88KFshPV18XFx3Kz4pLy50ZXN0KHJlbWFpbmluZygpKSkpIHtcbiAgICAgICAgICBvdXRwdXQgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlLCBvdXRwdXQgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5kb3QgIT09IHRydWUgJiYgKHByZXYudHlwZSA9PT0gJ3NsYXNoJyB8fCBwcmV2LnR5cGUgPT09ICdib3MnKSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3FtYXJrJywgdmFsdWUsIG91dHB1dDogUU1BUktfTk9fRE9UIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdxbWFyaycsIHZhbHVlLCBvdXRwdXQ6IFFNQVJLIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhjbGFtYXRpb25cbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJyEnKSB7XG4gICAgICBpZiAob3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgcGVlaygpID09PSAnKCcpIHtcbiAgICAgICAgaWYgKHBlZWsoMikgIT09ICc/JyB8fCAhL1shPTw6XS8udGVzdChwZWVrKDMpKSkge1xuICAgICAgICAgIGV4dGdsb2JPcGVuKCduZWdhdGUnLCB2YWx1ZSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMubm9uZWdhdGUgIT09IHRydWUgJiYgc3RhdGUuaW5kZXggPT09IDApIHtcbiAgICAgICAgbmVnYXRlKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBsdXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJysnKSB7XG4gICAgICBpZiAob3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgcGVlaygpID09PSAnKCcgJiYgcGVlaygyKSAhPT0gJz8nKSB7XG4gICAgICAgIGV4dGdsb2JPcGVuKCdwbHVzJywgdmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKChwcmV2ICYmIHByZXYudmFsdWUgPT09ICcoJykgfHwgb3B0cy5yZWdleCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdwbHVzJywgdmFsdWUsIG91dHB1dDogUExVU19MSVRFUkFMIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKChwcmV2ICYmIChwcmV2LnR5cGUgPT09ICdicmFja2V0JyB8fCBwcmV2LnR5cGUgPT09ICdwYXJlbicgfHwgcHJldi50eXBlID09PSAnYnJhY2UnKSkgfHwgc3RhdGUucGFyZW5zID4gMCkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3BsdXMnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAncGx1cycsIHZhbHVlOiBQTFVTX0xJVEVSQUwgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQbGFpbiB0ZXh0XG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICdAJykge1xuICAgICAgaWYgKG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIHBlZWsoKSA9PT0gJygnICYmIHBlZWsoMikgIT09ICc/Jykge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ2F0JywgZXh0Z2xvYjogdHJ1ZSwgdmFsdWUsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBsYWluIHRleHRcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSAhPT0gJyonKSB7XG4gICAgICBpZiAodmFsdWUgPT09ICckJyB8fCB2YWx1ZSA9PT0gJ14nKSB7XG4gICAgICAgIHZhbHVlID0gYFxcXFwke3ZhbHVlfWA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hdGNoID0gUkVHRVhfTk9OX1NQRUNJQUxfQ0hBUlMuZXhlYyhyZW1haW5pbmcoKSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgdmFsdWUgKz0gbWF0Y2hbMF07XG4gICAgICAgIHN0YXRlLmluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdGFyc1xuICAgICAqL1xuXG4gICAgaWYgKHByZXYgJiYgKHByZXYudHlwZSA9PT0gJ2dsb2JzdGFyJyB8fCBwcmV2LnN0YXIgPT09IHRydWUpKSB7XG4gICAgICBwcmV2LnR5cGUgPSAnc3Rhcic7XG4gICAgICBwcmV2LnN0YXIgPSB0cnVlO1xuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIHByZXYub3V0cHV0ID0gc3RhcjtcbiAgICAgIHN0YXRlLmJhY2t0cmFjayA9IHRydWU7XG4gICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGxldCByZXN0ID0gcmVtYWluaW5nKCk7XG4gICAgaWYgKG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIC9eXFwoW14/XS8udGVzdChyZXN0KSkge1xuICAgICAgZXh0Z2xvYk9wZW4oJ3N0YXInLCB2YWx1ZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocHJldi50eXBlID09PSAnc3RhcicpIHtcbiAgICAgIGlmIChvcHRzLm5vZ2xvYnN0YXIgPT09IHRydWUpIHtcbiAgICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmlvciA9IHByZXYucHJldjtcbiAgICAgIGNvbnN0IGJlZm9yZSA9IHByaW9yLnByZXY7XG4gICAgICBjb25zdCBpc1N0YXJ0ID0gcHJpb3IudHlwZSA9PT0gJ3NsYXNoJyB8fCBwcmlvci50eXBlID09PSAnYm9zJztcbiAgICAgIGNvbnN0IGFmdGVyU3RhciA9IGJlZm9yZSAmJiAoYmVmb3JlLnR5cGUgPT09ICdzdGFyJyB8fCBiZWZvcmUudHlwZSA9PT0gJ2dsb2JzdGFyJyk7XG5cbiAgICAgIGlmIChvcHRzLmJhc2ggPT09IHRydWUgJiYgKCFpc1N0YXJ0IHx8IChyZXN0WzBdICYmIHJlc3RbMF0gIT09ICcvJykpKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAnc3RhcicsIHZhbHVlLCBvdXRwdXQ6ICcnIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNCcmFjZSA9IHN0YXRlLmJyYWNlcyA+IDAgJiYgKHByaW9yLnR5cGUgPT09ICdjb21tYScgfHwgcHJpb3IudHlwZSA9PT0gJ2JyYWNlJyk7XG4gICAgICBjb25zdCBpc0V4dGdsb2IgPSBleHRnbG9icy5sZW5ndGggJiYgKHByaW9yLnR5cGUgPT09ICdwaXBlJyB8fCBwcmlvci50eXBlID09PSAncGFyZW4nKTtcbiAgICAgIGlmICghaXNTdGFydCAmJiBwcmlvci50eXBlICE9PSAncGFyZW4nICYmICFpc0JyYWNlICYmICFpc0V4dGdsb2IpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdzdGFyJywgdmFsdWUsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBzdHJpcCBjb25zZWN1dGl2ZSBgLyoqL2BcbiAgICAgIHdoaWxlIChyZXN0LnNsaWNlKDAsIDMpID09PSAnLyoqJykge1xuICAgICAgICBjb25zdCBhZnRlciA9IGlucHV0W3N0YXRlLmluZGV4ICsgNF07XG4gICAgICAgIGlmIChhZnRlciAmJiBhZnRlciAhPT0gJy8nKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdCA9IHJlc3Quc2xpY2UoMyk7XG4gICAgICAgIGNvbnN1bWUoJy8qKicsIDMpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJpb3IudHlwZSA9PT0gJ2JvcycgJiYgZW9zKCkpIHtcbiAgICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgcHJldi5vdXRwdXQgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gcHJldi5vdXRwdXQ7XG4gICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJpb3IudHlwZSA9PT0gJ3NsYXNoJyAmJiBwcmlvci5wcmV2LnR5cGUgIT09ICdib3MnICYmICFhZnRlclN0YXIgJiYgZW9zKCkpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC0ocHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQpLmxlbmd0aCk7XG4gICAgICAgIHByaW9yLm91dHB1dCA9IGAoPzoke3ByaW9yLm91dHB1dH1gO1xuXG4gICAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICAgIHByZXYub3V0cHV0ID0gZ2xvYnN0YXIob3B0cykgKyAob3B0cy5zdHJpY3RTbGFzaGVzID8gJyknIDogJ3wkKScpO1xuICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBwcmlvci5vdXRwdXQgKyBwcmV2Lm91dHB1dDtcbiAgICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJpb3IudHlwZSA9PT0gJ3NsYXNoJyAmJiBwcmlvci5wcmV2LnR5cGUgIT09ICdib3MnICYmIHJlc3RbMF0gPT09ICcvJykge1xuICAgICAgICBjb25zdCBlbmQgPSByZXN0WzFdICE9PSB2b2lkIDAgPyAnfCQnIDogJyc7XG5cbiAgICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC0ocHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQpLmxlbmd0aCk7XG4gICAgICAgIHByaW9yLm91dHB1dCA9IGAoPzoke3ByaW9yLm91dHB1dH1gO1xuXG4gICAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICAgIHByZXYub3V0cHV0ID0gYCR7Z2xvYnN0YXIob3B0cyl9JHtTTEFTSF9MSVRFUkFMfXwke1NMQVNIX0xJVEVSQUx9JHtlbmR9KWA7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG5cbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IHByaW9yLm91dHB1dCArIHByZXYub3V0cHV0O1xuICAgICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG5cbiAgICAgICAgY29uc3VtZSh2YWx1ZSArIGFkdmFuY2UoKSk7XG5cbiAgICAgICAgcHVzaCh7IHR5cGU6ICdzbGFzaCcsIHZhbHVlOiAnLycsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJpb3IudHlwZSA9PT0gJ2JvcycgJiYgcmVzdFswXSA9PT0gJy8nKSB7XG4gICAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIHByZXYub3V0cHV0ID0gYCg/Ol58JHtTTEFTSF9MSVRFUkFMfXwke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pYDtcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gcHJldi5vdXRwdXQ7XG4gICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgICAgY29uc3VtZSh2YWx1ZSArIGFkdmFuY2UoKSk7XG4gICAgICAgIHB1c2goeyB0eXBlOiAnc2xhc2gnLCB2YWx1ZTogJy8nLCBvdXRwdXQ6ICcnIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVtb3ZlIHNpbmdsZSBzdGFyIGZyb20gb3V0cHV0XG4gICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLXByZXYub3V0cHV0Lmxlbmd0aCk7XG5cbiAgICAgIC8vIHJlc2V0IHByZXZpb3VzIHRva2VuIHRvIGdsb2JzdGFyXG4gICAgICBwcmV2LnR5cGUgPSAnZ2xvYnN0YXInO1xuICAgICAgcHJldi5vdXRwdXQgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG5cbiAgICAgIC8vIHJlc2V0IG91dHB1dCB3aXRoIGdsb2JzdGFyXG4gICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJldi5vdXRwdXQ7XG4gICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0geyB0eXBlOiAnc3RhcicsIHZhbHVlLCBvdXRwdXQ6IHN0YXIgfTtcblxuICAgIGlmIChvcHRzLmJhc2ggPT09IHRydWUpIHtcbiAgICAgIHRva2VuLm91dHB1dCA9ICcuKj8nO1xuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ2JvcycgfHwgcHJldi50eXBlID09PSAnc2xhc2gnKSB7XG4gICAgICAgIHRva2VuLm91dHB1dCA9IG5vZG90ICsgdG9rZW4ub3V0cHV0O1xuICAgICAgfVxuICAgICAgcHVzaCh0b2tlbik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocHJldiAmJiAocHJldi50eXBlID09PSAnYnJhY2tldCcgfHwgcHJldi50eXBlID09PSAncGFyZW4nKSAmJiBvcHRzLnJlZ2V4ID09PSB0cnVlKSB7XG4gICAgICB0b2tlbi5vdXRwdXQgPSB2YWx1ZTtcbiAgICAgIHB1c2godG9rZW4pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmluZGV4ID09PSBzdGF0ZS5zdGFydCB8fCBwcmV2LnR5cGUgPT09ICdzbGFzaCcgfHwgcHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ2RvdCcpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IE5PX0RPVF9TTEFTSDtcbiAgICAgICAgcHJldi5vdXRwdXQgKz0gTk9fRE9UX1NMQVNIO1xuXG4gICAgICB9IGVsc2UgaWYgKG9wdHMuZG90ID09PSB0cnVlKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBOT19ET1RTX1NMQVNIO1xuICAgICAgICBwcmV2Lm91dHB1dCArPSBOT19ET1RTX1NMQVNIO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gbm9kb3Q7XG4gICAgICAgIHByZXYub3V0cHV0ICs9IG5vZG90O1xuICAgICAgfVxuXG4gICAgICBpZiAocGVlaygpICE9PSAnKicpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IE9ORV9DSEFSO1xuICAgICAgICBwcmV2Lm91dHB1dCArPSBPTkVfQ0hBUjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdXNoKHRva2VuKTtcbiAgfVxuXG4gIHdoaWxlIChzdGF0ZS5icmFja2V0cyA+IDApIHtcbiAgICBpZiAob3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdjbG9zaW5nJywgJ10nKSk7XG4gICAgc3RhdGUub3V0cHV0ID0gdXRpbHMuZXNjYXBlTGFzdChzdGF0ZS5vdXRwdXQsICdbJyk7XG4gICAgZGVjcmVtZW50KCdicmFja2V0cycpO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLnBhcmVucyA+IDApIHtcbiAgICBpZiAob3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdjbG9zaW5nJywgJyknKSk7XG4gICAgc3RhdGUub3V0cHV0ID0gdXRpbHMuZXNjYXBlTGFzdChzdGF0ZS5vdXRwdXQsICcoJyk7XG4gICAgZGVjcmVtZW50KCdwYXJlbnMnKTtcbiAgfVxuXG4gIHdoaWxlIChzdGF0ZS5icmFjZXMgPiAwKSB7XG4gICAgaWYgKG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignY2xvc2luZycsICd9JykpO1xuICAgIHN0YXRlLm91dHB1dCA9IHV0aWxzLmVzY2FwZUxhc3Qoc3RhdGUub3V0cHV0LCAneycpO1xuICAgIGRlY3JlbWVudCgnYnJhY2VzJyk7XG4gIH1cblxuICBpZiAob3B0cy5zdHJpY3RTbGFzaGVzICE9PSB0cnVlICYmIChwcmV2LnR5cGUgPT09ICdzdGFyJyB8fCBwcmV2LnR5cGUgPT09ICdicmFja2V0JykpIHtcbiAgICBwdXNoKHsgdHlwZTogJ21heWJlX3NsYXNoJywgdmFsdWU6ICcnLCBvdXRwdXQ6IGAke1NMQVNIX0xJVEVSQUx9P2AgfSk7XG4gIH1cblxuICAvLyByZWJ1aWxkIHRoZSBvdXRwdXQgaWYgd2UgaGFkIHRvIGJhY2t0cmFjayBhdCBhbnkgcG9pbnRcbiAgaWYgKHN0YXRlLmJhY2t0cmFjayA9PT0gdHJ1ZSkge1xuICAgIHN0YXRlLm91dHB1dCA9ICcnO1xuXG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiBzdGF0ZS50b2tlbnMpIHtcbiAgICAgIHN0YXRlLm91dHB1dCArPSB0b2tlbi5vdXRwdXQgIT0gbnVsbCA/IHRva2VuLm91dHB1dCA6IHRva2VuLnZhbHVlO1xuXG4gICAgICBpZiAodG9rZW4uc3VmZml4KSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSB0b2tlbi5zdWZmaXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcblxuLyoqXG4gKiBGYXN0IHBhdGhzIGZvciBjcmVhdGluZyByZWd1bGFyIGV4cHJlc3Npb25zIGZvciBjb21tb24gZ2xvYiBwYXR0ZXJucy5cbiAqIFRoaXMgY2FuIHNpZ25pZmljYW50bHkgc3BlZWQgdXAgcHJvY2Vzc2luZyBhbmQgaGFzIHZlcnkgbGl0dGxlIGRvd25zaWRlXG4gKiBpbXBhY3Qgd2hlbiBub25lIG9mIHRoZSBmYXN0IHBhdGhzIG1hdGNoLlxuICovXG5cbnBhcnNlLmZhc3RwYXRocyA9IChpbnB1dCwgb3B0aW9ucykgPT4ge1xuICBjb25zdCBvcHRzID0geyAuLi5vcHRpb25zIH07XG4gIGNvbnN0IG1heCA9IHR5cGVvZiBvcHRzLm1heExlbmd0aCA9PT0gJ251bWJlcicgPyBNYXRoLm1pbihNQVhfTEVOR1RILCBvcHRzLm1heExlbmd0aCkgOiBNQVhfTEVOR1RIO1xuICBjb25zdCBsZW4gPSBpbnB1dC5sZW5ndGg7XG4gIGlmIChsZW4gPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYElucHV0IGxlbmd0aDogJHtsZW59LCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBsZW5ndGg6ICR7bWF4fWApO1xuICB9XG5cbiAgaW5wdXQgPSBSRVBMQUNFTUVOVFNbaW5wdXRdIHx8IGlucHV0O1xuICBjb25zdCB3aW4zMiA9IHV0aWxzLmlzV2luZG93cyhvcHRpb25zKTtcblxuICAvLyBjcmVhdGUgY29uc3RhbnRzIGJhc2VkIG9uIHBsYXRmb3JtLCBmb3Igd2luZG93cyBvciBwb3NpeFxuICBjb25zdCB7XG4gICAgRE9UX0xJVEVSQUwsXG4gICAgU0xBU0hfTElURVJBTCxcbiAgICBPTkVfQ0hBUixcbiAgICBET1RTX1NMQVNILFxuICAgIE5PX0RPVCxcbiAgICBOT19ET1RTLFxuICAgIE5PX0RPVFNfU0xBU0gsXG4gICAgU1RBUixcbiAgICBTVEFSVF9BTkNIT1JcbiAgfSA9IGNvbnN0YW50cy5nbG9iQ2hhcnMod2luMzIpO1xuXG4gIGNvbnN0IG5vZG90ID0gb3B0cy5kb3QgPyBOT19ET1RTIDogTk9fRE9UO1xuICBjb25zdCBzbGFzaERvdCA9IG9wdHMuZG90ID8gTk9fRE9UU19TTEFTSCA6IE5PX0RPVDtcbiAgY29uc3QgY2FwdHVyZSA9IG9wdHMuY2FwdHVyZSA/ICcnIDogJz86JztcbiAgY29uc3Qgc3RhdGUgPSB7IG5lZ2F0ZWQ6IGZhbHNlLCBwcmVmaXg6ICcnIH07XG4gIGxldCBzdGFyID0gb3B0cy5iYXNoID09PSB0cnVlID8gJy4qPycgOiBTVEFSO1xuXG4gIGlmIChvcHRzLmNhcHR1cmUpIHtcbiAgICBzdGFyID0gYCgke3N0YXJ9KWA7XG4gIH1cblxuICBjb25zdCBnbG9ic3RhciA9IChvcHRzKSA9PiB7XG4gICAgaWYgKG9wdHMubm9nbG9ic3RhciA9PT0gdHJ1ZSkgcmV0dXJuIHN0YXI7XG4gICAgcmV0dXJuIGAoJHtjYXB0dXJlfSg/Oig/ISR7U1RBUlRfQU5DSE9SfSR7b3B0cy5kb3QgPyBET1RTX1NMQVNIIDogRE9UX0xJVEVSQUx9KS4pKj8pYDtcbiAgfTtcblxuICBjb25zdCBjcmVhdGUgPSBzdHIgPT4ge1xuICAgIHN3aXRjaCAoc3RyKSB7XG4gICAgICBjYXNlICcqJzpcbiAgICAgICAgcmV0dXJuIGAke25vZG90fSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJy4qJzpcbiAgICAgICAgcmV0dXJuIGAke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyouKic6XG4gICAgICAgIHJldHVybiBgJHtub2RvdH0ke3N0YXJ9JHtET1RfTElURVJBTH0ke09ORV9DSEFSfSR7c3Rhcn1gO1xuXG4gICAgICBjYXNlICcqLyonOlxuICAgICAgICByZXR1cm4gYCR7bm9kb3R9JHtzdGFyfSR7U0xBU0hfTElURVJBTH0ke09ORV9DSEFSfSR7c2xhc2hEb3R9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyoqJzpcbiAgICAgICAgcmV0dXJuIG5vZG90ICsgZ2xvYnN0YXIob3B0cyk7XG5cbiAgICAgIGNhc2UgJyoqLyonOlxuICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke3NsYXNoRG90fSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyoqLyouKic6XG4gICAgICAgIHJldHVybiBgKD86JHtub2RvdH0ke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pPyR7c2xhc2hEb3R9JHtzdGFyfSR7RE9UX0xJVEVSQUx9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcblxuICAgICAgY2FzZSAnKiovLionOlxuICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXiguKj8pXFwuKFxcdyspJC8uZXhlYyhzdHIpO1xuICAgICAgICBpZiAoIW1hdGNoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc291cmNlID0gY3JlYXRlKG1hdGNoWzFdKTtcbiAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybjtcblxuICAgICAgICByZXR1cm4gc291cmNlICsgRE9UX0xJVEVSQUwgKyBtYXRjaFsyXTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb3V0cHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxldCBzb3VyY2UgPSBjcmVhdGUob3V0cHV0KTtcblxuICBpZiAoc291cmNlICYmIG9wdHMuc3RyaWN0U2xhc2hlcyAhPT0gdHJ1ZSkge1xuICAgIHNvdXJjZSArPSBgJHtTTEFTSF9MSVRFUkFMfT9gO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBzY2FuID0gcmVxdWlyZSgnLi9zY2FuJyk7XG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbmNvbnN0IGlzT2JqZWN0ID0gdmFsID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXRjaGVyIGZ1bmN0aW9uIGZyb20gb25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucy4gVGhlXG4gKiByZXR1cm5lZCBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB0byBtYXRjaCBhcyBpdHMgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSBtYXRjaC4gVGhlIHJldHVybmVkIG1hdGNoZXJcbiAqIGZ1bmN0aW9uIGFsc28gdGFrZXMgYSBib29sZWFuIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdGhhdCwgd2hlbiB0cnVlLFxuICogcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaChnbG9iWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IGlzTWF0Y2ggPSBwaWNvbWF0Y2goJyouISgqYSknKTtcbiAqIGNvbnNvbGUubG9nKGlzTWF0Y2goJ2EuYScpKTsgLy89PiBmYWxzZVxuICogY29uc29sZS5sb2coaXNNYXRjaCgnYS5iJykpOyAvLz0+IHRydWVcbiAqIGBgYFxuICogQG5hbWUgcGljb21hdGNoXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYGdsb2JzYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zLlxuICogQHBhcmFtIHtPYmplY3Q9fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0Z1bmN0aW9uPX0gUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24uXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IHBpY29tYXRjaCA9IChnbG9iLCBvcHRpb25zLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGdsb2IpKSB7XG4gICAgY29uc3QgZm5zID0gZ2xvYi5tYXAoaW5wdXQgPT4gcGljb21hdGNoKGlucHV0LCBvcHRpb25zLCByZXR1cm5TdGF0ZSkpO1xuICAgIGNvbnN0IGFycmF5TWF0Y2hlciA9IHN0ciA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGlzTWF0Y2ggb2YgZm5zKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gaXNNYXRjaChzdHIpO1xuICAgICAgICBpZiAoc3RhdGUpIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheU1hdGNoZXI7XG4gIH1cblxuICBjb25zdCBpc1N0YXRlID0gaXNPYmplY3QoZ2xvYikgJiYgZ2xvYi50b2tlbnMgJiYgZ2xvYi5pbnB1dDtcblxuICBpZiAoZ2xvYiA9PT0gJycgfHwgKHR5cGVvZiBnbG9iICE9PSAnc3RyaW5nJyAmJiAhaXNTdGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBwYXR0ZXJuIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuICBjb25zdCByZWdleCA9IGlzU3RhdGVcbiAgICA/IHBpY29tYXRjaC5jb21waWxlUmUoZ2xvYiwgb3B0aW9ucylcbiAgICA6IHBpY29tYXRjaC5tYWtlUmUoZ2xvYiwgb3B0aW9ucywgZmFsc2UsIHRydWUpO1xuXG4gIGNvbnN0IHN0YXRlID0gcmVnZXguc3RhdGU7XG4gIGRlbGV0ZSByZWdleC5zdGF0ZTtcblxuICBsZXQgaXNJZ25vcmVkID0gKCkgPT4gZmFsc2U7XG4gIGlmIChvcHRzLmlnbm9yZSkge1xuICAgIGNvbnN0IGlnbm9yZU9wdHMgPSB7IC4uLm9wdGlvbnMsIGlnbm9yZTogbnVsbCwgb25NYXRjaDogbnVsbCwgb25SZXN1bHQ6IG51bGwgfTtcbiAgICBpc0lnbm9yZWQgPSBwaWNvbWF0Y2gob3B0cy5pZ25vcmUsIGlnbm9yZU9wdHMsIHJldHVyblN0YXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZXIgPSAoaW5wdXQsIHJldHVybk9iamVjdCA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgeyBpc01hdGNoLCBtYXRjaCwgb3V0cHV0IH0gPSBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXgsIG9wdGlvbnMsIHsgZ2xvYiwgcG9zaXggfSk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBnbG9iLCBzdGF0ZSwgcmVnZXgsIHBvc2l4LCBpbnB1dCwgb3V0cHV0LCBtYXRjaCwgaXNNYXRjaCB9O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRzLm9uUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvcHRzLm9uUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGlzTWF0Y2ggPT09IGZhbHNlKSB7XG4gICAgICByZXN1bHQuaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdCA/IHJlc3VsdCA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpc0lnbm9yZWQoaW5wdXQpKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMub25JZ25vcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb3B0cy5vbklnbm9yZShyZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMub25NYXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0cy5vbk1hdGNoKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiB0cnVlO1xuICB9O1xuXG4gIGlmIChyZXR1cm5TdGF0ZSkge1xuICAgIG1hdGNoZXIuc3RhdGUgPSBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVyO1xufTtcblxuLyoqXG4gKiBUZXN0IGBpbnB1dGAgd2l0aCB0aGUgZ2l2ZW4gYHJlZ2V4YC4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBtYWluXG4gKiBgcGljb21hdGNoKClgIGZ1bmN0aW9uIHRvIHRlc3QgdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXhbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLnRlc3QoJ2Zvby9iYXInLCAvXig/OihbXi9dKj8pXFwvKFteL10qPykpJC8pKTtcbiAqIC8vIHsgaXNNYXRjaDogdHJ1ZSwgbWF0Y2g6IFsgJ2Zvby8nLCAnZm9vJywgJ2JhcicgXSwgb3V0cHV0OiAnZm9vL2JhcicgfVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfSBgcmVnZXhgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggbWF0Y2hpbmcgaW5mby5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucGljb21hdGNoLnRlc3QgPSAoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCB7IGdsb2IsIHBvc2l4IH0gPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGlucHV0IHRvIGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAoaW5wdXQgPT09ICcnKSB7XG4gICAgcmV0dXJuIHsgaXNNYXRjaDogZmFsc2UsIG91dHB1dDogJycgfTtcbiAgfVxuXG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBmb3JtYXQgPSBvcHRzLmZvcm1hdCB8fCAocG9zaXggPyB1dGlscy50b1Bvc2l4U2xhc2hlcyA6IG51bGwpO1xuICBsZXQgbWF0Y2ggPSBpbnB1dCA9PT0gZ2xvYjtcbiAgbGV0IG91dHB1dCA9IChtYXRjaCAmJiBmb3JtYXQpID8gZm9ybWF0KGlucHV0KSA6IGlucHV0O1xuXG4gIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICBvdXRwdXQgPSBmb3JtYXQgPyBmb3JtYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgbWF0Y2ggPSBvdXRwdXQgPT09IGdsb2I7XG4gIH1cblxuICBpZiAobWF0Y2ggPT09IGZhbHNlIHx8IG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkge1xuICAgIGlmIChvcHRzLm1hdGNoQmFzZSA9PT0gdHJ1ZSB8fCBvcHRzLmJhc2VuYW1lID09PSB0cnVlKSB7XG4gICAgICBtYXRjaCA9IHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCBwb3NpeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoID0gcmVnZXguZXhlYyhvdXRwdXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGlzTWF0Y2g6IEJvb2xlYW4obWF0Y2gpLCBtYXRjaCwgb3V0cHV0IH07XG59O1xuXG4vKipcbiAqIE1hdGNoIHRoZSBiYXNlbmFtZSBvZiBhIGZpbGVwYXRoLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIGdsb2JbLCBvcHRpb25zXSk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gubWF0Y2hCYXNlKCdmb28vYmFyLmpzJywgJyouanMnKTsgLy8gdHJ1ZVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gYGdsb2JgIEdsb2IgcGF0dGVybiBvciByZWdleCBjcmVhdGVkIGJ5IFsubWFrZVJlXSgjbWFrZVJlKS5cbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5tYXRjaEJhc2UgPSAoaW5wdXQsIGdsb2IsIG9wdGlvbnMsIHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpKSA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gZ2xvYiBpbnN0YW5jZW9mIFJlZ0V4cCA/IGdsb2IgOiBwaWNvbWF0Y2gubWFrZVJlKGdsb2IsIG9wdGlvbnMpO1xuICByZXR1cm4gcmVnZXgudGVzdChwYXRoLmJhc2VuYW1lKGlucHV0KSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiAqKmFueSoqIG9mIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuc2AgbWF0Y2ggdGhlIHNwZWNpZmllZCBgc3RyaW5nYC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2guaXNNYXRjaChzdHJpbmcsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCBbJ2IuKicsICcqLmEnXSkpOyAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCAnYi4qJykpOyAvLz0+IGZhbHNlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBzdHIgVGhlIHN0cmluZyB0byB0ZXN0LlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHBhdHRlcm5zIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpLlxuICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBwYXR0ZXJucyBtYXRjaCBgc3RyYFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2guaXNNYXRjaCA9IChzdHIsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybnMsIG9wdGlvbnMpKHN0cik7XG5cbi8qKlxuICogUGFyc2UgYSBnbG9iIHBhdHRlcm4gdG8gY3JlYXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBhIHJlZ3VsYXJcbiAqIGV4cHJlc3Npb24uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3QgcmVzdWx0ID0gcGljb21hdGNoLnBhcnNlKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB1c2VmdWwgcHJvcGVydGllcyBhbmQgb3V0cHV0IHRvIGJlIHVzZWQgYXMgYSByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2gucGFyc2UgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkgcmV0dXJuIHBhdHRlcm4ubWFwKHAgPT4gcGljb21hdGNoLnBhcnNlKHAsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIHBhcnNlKHBhdHRlcm4sIHsgLi4ub3B0aW9ucywgZmFzdHBhdGhzOiBmYWxzZSB9KTtcbn07XG5cbi8qKlxuICogU2NhbiBhIGdsb2IgcGF0dGVybiB0byBzZXBhcmF0ZSB0aGUgcGF0dGVybiBpbnRvIHNlZ21lbnRzLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5zY2FuKGlucHV0Wywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IHBpY29tYXRjaC5zY2FuKCchLi9mb28vKi5qcycpO1xuICogY29uc29sZS5sb2cocmVzdWx0KTtcbiAqIHsgcHJlZml4OiAnIS4vJyxcbiAqICAgaW5wdXQ6ICchLi9mb28vKi5qcycsXG4gKiAgIHN0YXJ0OiAzLFxuICogICBiYXNlOiAnZm9vJyxcbiAqICAgZ2xvYjogJyouanMnLFxuICogICBpc0JyYWNlOiBmYWxzZSxcbiAqICAgaXNCcmFja2V0OiBmYWxzZSxcbiAqICAgaXNHbG9iOiB0cnVlLFxuICogICBpc0V4dGdsb2I6IGZhbHNlLFxuICogICBpc0dsb2JzdGFyOiBmYWxzZSxcbiAqICAgbmVnYXRlZDogdHJ1ZSB9XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEdsb2IgcGF0dGVybiB0byBzY2FuLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5zY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiBzY2FuKGlucHV0LCBvcHRpb25zKTtcblxuLyoqXG4gKiBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSBhIHBhcnNlZCBnbG9iIHBhdHRlcm4uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBwaWNvbWF0Y2gucGFyc2UoJyouanMnKTtcbiAqIC8vIHBpY29tYXRjaC5jb21waWxlUmUoc3RhdGVbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLmNvbXBpbGVSZShzdGF0ZSkpO1xuICogLy89PiAvXig/Oig/IVxcLikoPz0uKVteL10qP1xcLmpzKSQvXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgc3RhdGVgIFRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSB0aGUgYC5wYXJzZWAgbWV0aG9kLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7UmVnRXhwfSBSZXR1cm5zIGEgcmVnZXggY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2guY29tcGlsZVJlID0gKHBhcnNlZCwgb3B0aW9ucywgcmV0dXJuT3V0cHV0ID0gZmFsc2UsIHJldHVyblN0YXRlID0gZmFsc2UpID0+IHtcbiAgaWYgKHJldHVybk91dHB1dCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBwYXJzZWQub3V0cHV0O1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHByZXBlbmQgPSBvcHRzLmNvbnRhaW5zID8gJycgOiAnXic7XG4gIGNvbnN0IGFwcGVuZCA9IG9wdHMuY29udGFpbnMgPyAnJyA6ICckJztcblxuICBsZXQgc291cmNlID0gYCR7cHJlcGVuZH0oPzoke3BhcnNlZC5vdXRwdXR9KSR7YXBwZW5kfWA7XG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLm5lZ2F0ZWQgPT09IHRydWUpIHtcbiAgICBzb3VyY2UgPSBgXig/ISR7c291cmNlfSkuKiRgO1xuICB9XG5cbiAgY29uc3QgcmVnZXggPSBwaWNvbWF0Y2gudG9SZWdleChzb3VyY2UsIG9wdGlvbnMpO1xuICBpZiAocmV0dXJuU3RhdGUgPT09IHRydWUpIHtcbiAgICByZWdleC5zdGF0ZSA9IHBhcnNlZDtcbiAgfVxuXG4gIHJldHVybiByZWdleDtcbn07XG5cbnBpY29tYXRjaC5tYWtlUmUgPSAoaW5wdXQsIG9wdGlvbnMsIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGxldCBwYXJzZWQgPSB7IG5lZ2F0ZWQ6IGZhbHNlLCBmYXN0cGF0aHM6IHRydWUgfTtcbiAgbGV0IHByZWZpeCA9ICcnO1xuICBsZXQgb3V0cHV0O1xuXG4gIGlmIChpbnB1dC5zdGFydHNXaXRoKCcuLycpKSB7XG4gICAgaW5wdXQgPSBpbnB1dC5zbGljZSgyKTtcbiAgICBwcmVmaXggPSBwYXJzZWQucHJlZml4ID0gJy4vJztcbiAgfVxuXG4gIGlmIChvcHRzLmZhc3RwYXRocyAhPT0gZmFsc2UgJiYgKGlucHV0WzBdID09PSAnLicgfHwgaW5wdXRbMF0gPT09ICcqJykpIHtcbiAgICBvdXRwdXQgPSBwYXJzZS5mYXN0cGF0aHMoaW5wdXQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKG91dHB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcGFyc2VkID0gcGFyc2UoaW5wdXQsIG9wdGlvbnMpO1xuICAgIHBhcnNlZC5wcmVmaXggPSBwcmVmaXggKyAocGFyc2VkLnByZWZpeCB8fCAnJyk7XG4gIH0gZWxzZSB7XG4gICAgcGFyc2VkLm91dHB1dCA9IG91dHB1dDtcbiAgfVxuXG4gIHJldHVybiBwaWNvbWF0Y2guY29tcGlsZVJlKHBhcnNlZCwgb3B0aW9ucywgcmV0dXJuT3V0cHV0LCByZXR1cm5TdGF0ZSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIHRoZSBnaXZlbiByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC50b1JlZ2V4KHNvdXJjZVssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zdCB7IG91dHB1dCB9ID0gcGljb21hdGNoLnBhcnNlKCcqLmpzJyk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gudG9SZWdleChvdXRwdXQpKTtcbiAqIC8vPT4gL14oPzooPyFcXC4pKD89LilbXi9dKj9cXC5qcykkL1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHNvdXJjZWAgUmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBzdHJpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC50b1JlZ2V4ID0gKHNvdXJjZSwgb3B0aW9ucykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHNvdXJjZSwgb3B0cy5mbGFncyB8fCAob3B0cy5ub2Nhc2UgPyAnaScgOiAnJykpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnID09PSB0cnVlKSB0aHJvdyBlcnI7XG4gICAgcmV0dXJuIC8kXi87XG4gIH1cbn07XG5cbi8qKlxuICogUGljb21hdGNoIGNvbnN0YW50cy5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuXG5waWNvbWF0Y2guY29uc3RhbnRzID0gY29uc3RhbnRzO1xuXG4vKipcbiAqIEV4cG9zZSBcInBpY29tYXRjaFwiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwaWNvbWF0Y2g7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvcGljb21hdGNoJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHsgUmVhZGFibGUgfSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuY29uc3Qgc3lzUGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHsgcHJvbWlzaWZ5IH0gPSByZXF1aXJlKCd1dGlsJyk7XG5jb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcblxuY29uc3QgcmVhZGRpciA9IHByb21pc2lmeShmcy5yZWFkZGlyKTtcbmNvbnN0IHN0YXQgPSBwcm9taXNpZnkoZnMuc3RhdCk7XG5jb25zdCBsc3RhdCA9IHByb21pc2lmeShmcy5sc3RhdCk7XG5jb25zdCByZWFscGF0aCA9IHByb21pc2lmeShmcy5yZWFscGF0aCk7XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRW50cnlJbmZvXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGZ1bGxQYXRoXG4gKiBAcHJvcGVydHkge2ZzLlN0YXRzPX0gc3RhdHNcbiAqIEBwcm9wZXJ0eSB7ZnMuRGlyZW50PX0gZGlyZW50XG4gKiBAcHJvcGVydHkge1N0cmluZ30gYmFzZW5hbWVcbiAqL1xuXG5jb25zdCBCQU5HID0gJyEnO1xuY29uc3QgTk9STUFMX0ZMT1dfRVJST1JTID0gbmV3IFNldChbJ0VOT0VOVCcsICdFUEVSTScsICdFQUNDRVMnLCAnRUxPT1AnXSk7XG5jb25zdCBGSUxFX1RZUEUgPSAnZmlsZXMnO1xuY29uc3QgRElSX1RZUEUgPSAnZGlyZWN0b3JpZXMnO1xuY29uc3QgRklMRV9ESVJfVFlQRSA9ICdmaWxlc19kaXJlY3Rvcmllcyc7XG5jb25zdCBFVkVSWVRISU5HX1RZUEUgPSAnYWxsJztcbmNvbnN0IEFMTF9UWVBFUyA9IFtGSUxFX1RZUEUsIERJUl9UWVBFLCBGSUxFX0RJUl9UWVBFLCBFVkVSWVRISU5HX1RZUEVdO1xuXG5jb25zdCBpc05vcm1hbEZsb3dFcnJvciA9IGVycm9yID0+IE5PUk1BTF9GTE9XX0VSUk9SUy5oYXMoZXJyb3IuY29kZSk7XG5cbmNvbnN0IG5vcm1hbGl6ZUZpbHRlciA9IGZpbHRlciA9PiB7XG4gIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZpbHRlcjtcblxuICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBnbG9iID0gcGljb21hdGNoKGZpbHRlci50cmltKCkpO1xuICAgIHJldHVybiBlbnRyeSA9PiBnbG9iKGVudHJ5LmJhc2VuYW1lKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGZpbHRlcikpIHtcbiAgICBjb25zdCBwb3NpdGl2ZSA9IFtdO1xuICAgIGNvbnN0IG5lZ2F0aXZlID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlcikge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IGl0ZW0udHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWQuY2hhckF0KDApID09PSBCQU5HKSB7XG4gICAgICAgIG5lZ2F0aXZlLnB1c2gocGljb21hdGNoKHRyaW1tZWQuc2xpY2UoMSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvc2l0aXZlLnB1c2gocGljb21hdGNoKHRyaW1tZWQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmVnYXRpdmUubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHBvc2l0aXZlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5ID0+XG4gICAgICAgICAgcG9zaXRpdmUuc29tZShmID0+IGYoZW50cnkuYmFzZW5hbWUpKSAmJiAhbmVnYXRpdmUuc29tZShmID0+IGYoZW50cnkuYmFzZW5hbWUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbnRyeSA9PiAhbmVnYXRpdmUuc29tZShmID0+IGYoZW50cnkuYmFzZW5hbWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5ID0+IHBvc2l0aXZlLnNvbWUoZiA9PiBmKGVudHJ5LmJhc2VuYW1lKSk7XG4gIH1cbn07XG5cbmNsYXNzIFJlYWRkaXJwU3RyZWFtIGV4dGVuZHMgUmVhZGFibGUge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICByb290OiAnLicsXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgICAgZmlsZUZpbHRlcjogKHBhdGgpID0+IHRydWUsXG4gICAgICBkaXJlY3RvcnlGaWx0ZXI6IChwYXRoKSA9PiB0cnVlLFxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgICAgdHlwZTogRklMRV9UWVBFLFxuICAgICAgbHN0YXQ6IGZhbHNlLFxuICAgICAgZGVwdGg6IDIxNDc0ODM2NDgsXG4gICAgICBhbHdheXNTdGF0OiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICBzdXBlcih7XG4gICAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgICAgYXV0b0Rlc3Ryb3k6IHRydWUsXG4gICAgICBoaWdoV2F0ZXJNYXJrOiBvcHRpb25zLmhpZ2hXYXRlck1hcmsgfHwgNDA5NlxuICAgIH0pO1xuICAgIGNvbnN0IG9wdHMgPSB7IC4uLlJlYWRkaXJwU3RyZWFtLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgY29uc3QgeyByb290LCB0eXBlIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5fZmlsZUZpbHRlciA9IG5vcm1hbGl6ZUZpbHRlcihvcHRzLmZpbGVGaWx0ZXIpO1xuICAgIHRoaXMuX2RpcmVjdG9yeUZpbHRlciA9IG5vcm1hbGl6ZUZpbHRlcihvcHRzLmRpcmVjdG9yeUZpbHRlcik7XG5cbiAgICBjb25zdCBzdGF0TWV0aG9kID0gb3B0cy5sc3RhdCA/IGxzdGF0IDogc3RhdDtcbiAgICAvLyBVc2UgYmlnaW50IHN0YXRzIGlmIGl0J3Mgd2luZG93cyBhbmQgc3RhdCgpIHN1cHBvcnRzIG9wdGlvbnMgKG5vZGUgMTArKS5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBzdGF0Lmxlbmd0aCA9PT0gMykge1xuICAgICAgdGhpcy5fc3RhdCA9IHBhdGggPT4gc3RhdE1ldGhvZChwYXRoLCB7IGJpZ2ludDogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc3RhdCA9IHN0YXRNZXRob2Q7XG4gICAgfVxuXG4gICAgdGhpcy5fbWF4RGVwdGggPSBvcHRzLmRlcHRoO1xuICAgIHRoaXMuX3dhbnRzRGlyID0gW0RJUl9UWVBFLCBGSUxFX0RJUl9UWVBFLCBFVkVSWVRISU5HX1RZUEVdLmluY2x1ZGVzKHR5cGUpO1xuICAgIHRoaXMuX3dhbnRzRmlsZSA9IFtGSUxFX1RZUEUsIEZJTEVfRElSX1RZUEUsIEVWRVJZVEhJTkdfVFlQRV0uaW5jbHVkZXModHlwZSk7XG4gICAgdGhpcy5fd2FudHNFdmVyeXRoaW5nID0gdHlwZSA9PT0gRVZFUllUSElOR19UWVBFO1xuICAgIHRoaXMuX3Jvb3QgPSBzeXNQYXRoLnJlc29sdmUocm9vdCk7XG4gICAgdGhpcy5faXNEaXJlbnQgPSAoJ0RpcmVudCcgaW4gZnMpICYmICFvcHRzLmFsd2F5c1N0YXQ7XG4gICAgdGhpcy5fc3RhdHNQcm9wID0gdGhpcy5faXNEaXJlbnQgPyAnZGlyZW50JyA6ICdzdGF0cyc7XG4gICAgdGhpcy5fcmRPcHRpb25zID0geyBlbmNvZGluZzogJ3V0ZjgnLCB3aXRoRmlsZVR5cGVzOiB0aGlzLl9pc0RpcmVudCB9O1xuXG4gICAgLy8gTGF1bmNoIHN0cmVhbSB3aXRoIG9uZSBwYXJlbnQsIHRoZSByb290IGRpci5cbiAgICB0aGlzLnBhcmVudHMgPSBbdGhpcy5fZXhwbG9yZURpcihyb290LCAxKV07XG4gICAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBfcmVhZChiYXRjaCkge1xuICAgIGlmICh0aGlzLnJlYWRpbmcpIHJldHVybjtcbiAgICB0aGlzLnJlYWRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIHdoaWxlICghdGhpcy5kZXN0cm95ZWQgJiYgYmF0Y2ggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcGF0aCwgZGVwdGgsIGZpbGVzID0gW10gfSA9IHRoaXMucGFyZW50IHx8IHt9O1xuXG4gICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3Qgc2xpY2UgPSBmaWxlcy5zcGxpY2UoMCwgYmF0Y2gpLm1hcChkaXJlbnQgPT4gdGhpcy5fZm9ybWF0RW50cnkoZGlyZW50LCBwYXRoKSk7XG4gICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBhd2FpdCBQcm9taXNlLmFsbChzbGljZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBlbnRyeVR5cGUgPSBhd2FpdCB0aGlzLl9nZXRFbnRyeVR5cGUoZW50cnkpO1xuICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSA9PT0gJ2RpcmVjdG9yeScgJiYgdGhpcy5fZGlyZWN0b3J5RmlsdGVyKGVudHJ5KSkge1xuICAgICAgICAgICAgICBpZiAoZGVwdGggPD0gdGhpcy5fbWF4RGVwdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudHMucHVzaCh0aGlzLl9leHBsb3JlRGlyKGVudHJ5LmZ1bGxQYXRoLCBkZXB0aCArIDEpKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl93YW50c0Rpcikge1xuICAgICAgICAgICAgICAgIHRoaXMucHVzaChlbnRyeSk7XG4gICAgICAgICAgICAgICAgYmF0Y2gtLTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICgoZW50cnlUeXBlID09PSAnZmlsZScgfHwgdGhpcy5faW5jbHVkZUFzRmlsZShlbnRyeSkpICYmIHRoaXMuX2ZpbGVGaWx0ZXIoZW50cnkpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl93YW50c0ZpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1c2goZW50cnkpO1xuICAgICAgICAgICAgICAgIGJhdGNoLS07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5wYXJlbnRzLnBvcCgpO1xuICAgICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wYXJlbnQgPSBhd2FpdCBwYXJlbnQ7XG4gICAgICAgICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5kZXN0cm95KGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX2V4cGxvcmVEaXIocGF0aCwgZGVwdGgpIHtcbiAgICBsZXQgZmlsZXM7XG4gICAgdHJ5IHtcbiAgICAgIGZpbGVzID0gYXdhaXQgcmVhZGRpcihwYXRoLCB0aGlzLl9yZE9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLl9vbkVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHtmaWxlcywgZGVwdGgsIHBhdGh9O1xuICB9XG5cbiAgYXN5bmMgX2Zvcm1hdEVudHJ5KGRpcmVudCwgcGF0aCkge1xuICAgIGxldCBlbnRyeTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZW5hbWUgPSB0aGlzLl9pc0RpcmVudCA/IGRpcmVudC5uYW1lIDogZGlyZW50O1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBzeXNQYXRoLnJlc29sdmUoc3lzUGF0aC5qb2luKHBhdGgsIGJhc2VuYW1lKSk7XG4gICAgICBlbnRyeSA9IHtwYXRoOiBzeXNQYXRoLnJlbGF0aXZlKHRoaXMuX3Jvb3QsIGZ1bGxQYXRoKSwgZnVsbFBhdGgsIGJhc2VuYW1lfTtcbiAgICAgIGVudHJ5W3RoaXMuX3N0YXRzUHJvcF0gPSB0aGlzLl9pc0RpcmVudCA/IGRpcmVudCA6IGF3YWl0IHRoaXMuX3N0YXQoZnVsbFBhdGgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fb25FcnJvcihlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnk7XG4gIH1cblxuICBfb25FcnJvcihlcnIpIHtcbiAgICBpZiAoaXNOb3JtYWxGbG93RXJyb3IoZXJyKSAmJiAhdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMuZW1pdCgnd2FybicsIGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVzdHJveShlcnIpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIF9nZXRFbnRyeVR5cGUoZW50cnkpIHtcbiAgICAvLyBlbnRyeSBtYXkgYmUgdW5kZWZpbmVkLCBiZWNhdXNlIGEgd2FybmluZyBvciBhbiBlcnJvciB3ZXJlIGVtaXR0ZWRcbiAgICAvLyBhbmQgdGhlIHN0YXRzUHJvcCBpcyB1bmRlZmluZWRcbiAgICBjb25zdCBzdGF0cyA9IGVudHJ5ICYmIGVudHJ5W3RoaXMuX3N0YXRzUHJvcF07XG4gICAgaWYgKCFzdGF0cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RhdHMuaXNGaWxlKCkpIHtcbiAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgfVxuICAgIGlmIChzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICByZXR1cm4gJ2RpcmVjdG9yeSc7XG4gICAgfVxuICAgIGlmIChzdGF0cyAmJiBzdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICBjb25zdCBmdWxsID0gZW50cnkuZnVsbFBhdGg7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBlbnRyeVJlYWxQYXRoID0gYXdhaXQgcmVhbHBhdGgoZnVsbCk7XG4gICAgICAgIGNvbnN0IGVudHJ5UmVhbFBhdGhTdGF0cyA9IGF3YWl0IGxzdGF0KGVudHJ5UmVhbFBhdGgpO1xuICAgICAgICBpZiAoZW50cnlSZWFsUGF0aFN0YXRzLmlzRmlsZSgpKSB7XG4gICAgICAgICAgcmV0dXJuICdmaWxlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW50cnlSZWFsUGF0aFN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICBjb25zdCBsZW4gPSBlbnRyeVJlYWxQYXRoLmxlbmd0aDtcbiAgICAgICAgICBpZiAoZnVsbC5zdGFydHNXaXRoKGVudHJ5UmVhbFBhdGgpICYmIGZ1bGwuc3Vic3RyKGxlbiwgMSkgPT09IHN5c1BhdGguc2VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fb25FcnJvcihuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBDaXJjdWxhciBzeW1saW5rIGRldGVjdGVkOiBcIiR7ZnVsbH1cIiBwb2ludHMgdG8gXCIke2VudHJ5UmVhbFBhdGh9XCJgXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICdkaXJlY3RvcnknO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLl9vbkVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfaW5jbHVkZUFzRmlsZShlbnRyeSkge1xuICAgIGNvbnN0IHN0YXRzID0gZW50cnkgJiYgZW50cnlbdGhpcy5fc3RhdHNQcm9wXTtcblxuICAgIHJldHVybiBzdGF0cyAmJiB0aGlzLl93YW50c0V2ZXJ5dGhpbmcgJiYgIXN0YXRzLmlzRGlyZWN0b3J5KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBSZWFkZGlycEFyZ3VtZW50c1xuICogQHByb3BlcnR5IHtGdW5jdGlvbj19IGZpbGVGaWx0ZXJcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb249fSBkaXJlY3RvcnlGaWx0ZXJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nPX0gdHlwZVxuICogQHByb3BlcnR5IHtOdW1iZXI9fSBkZXB0aFxuICogQHByb3BlcnR5IHtTdHJpbmc9fSByb290XG4gKiBAcHJvcGVydHkge0Jvb2xlYW49fSBsc3RhdFxuICogQHByb3BlcnR5IHtCb29sZWFuPX0gYmlnaW50XG4gKi9cblxuLyoqXG4gKiBNYWluIGZ1bmN0aW9uIHdoaWNoIGVuZHMgdXAgY2FsbGluZyByZWFkZGlyUmVjIGFuZCByZWFkcyBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIGdpdmVuIHJvb3QgcmVjdXJzaXZlbHkuXG4gKiBAcGFyYW0ge1N0cmluZ30gcm9vdCBSb290IGRpcmVjdG9yeVxuICogQHBhcmFtIHtSZWFkZGlycEFyZ3VtZW50cz19IG9wdGlvbnMgT3B0aW9ucyB0byBzcGVjaWZ5IHJvb3QgKHN0YXJ0IGRpcmVjdG9yeSksIGZpbHRlcnMgYW5kIHJlY3Vyc2lvbiBkZXB0aFxuICovXG5jb25zdCByZWFkZGlycCA9IChyb290LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHR5cGUgPSBvcHRpb25zLmVudHJ5VHlwZSB8fCBvcHRpb25zLnR5cGU7XG4gIGlmICh0eXBlID09PSAnYm90aCcpIHR5cGUgPSBGSUxFX0RJUl9UWVBFOyAvLyBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eVxuICBpZiAodHlwZSkgb3B0aW9ucy50eXBlID0gdHlwZTtcbiAgaWYgKCFyb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZWFkZGlycDogcm9vdCBhcmd1bWVudCBpcyByZXF1aXJlZC4gVXNhZ2U6IHJlYWRkaXJwKHJvb3QsIG9wdGlvbnMpJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHJvb3QgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVhZGRpcnA6IHJvb3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4gVXNhZ2U6IHJlYWRkaXJwKHJvb3QsIG9wdGlvbnMpJyk7XG4gIH0gZWxzZSBpZiAodHlwZSAmJiAhQUxMX1RZUEVTLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByZWFkZGlycDogSW52YWxpZCB0eXBlIHBhc3NlZC4gVXNlIG9uZSBvZiAke0FMTF9UWVBFUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgb3B0aW9ucy5yb290ID0gcm9vdDtcbiAgcmV0dXJuIG5ldyBSZWFkZGlycFN0cmVhbShvcHRpb25zKTtcbn07XG5cbmNvbnN0IHJlYWRkaXJwUHJvbWlzZSA9IChyb290LCBvcHRpb25zID0ge30pID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBmaWxlcyA9IFtdO1xuICAgIHJlYWRkaXJwKHJvb3QsIG9wdGlvbnMpXG4gICAgICAub24oJ2RhdGEnLCBlbnRyeSA9PiBmaWxlcy5wdXNoKGVudHJ5KSlcbiAgICAgIC5vbignZW5kJywgKCkgPT4gcmVzb2x2ZShmaWxlcykpXG4gICAgICAub24oJ2Vycm9yJywgZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gIH0pO1xufTtcblxucmVhZGRpcnAucHJvbWlzZSA9IHJlYWRkaXJwUHJvbWlzZTtcbnJlYWRkaXJwLlJlYWRkaXJwU3RyZWFtID0gUmVhZGRpcnBTdHJlYW07XG5yZWFkZGlycC5kZWZhdWx0ID0gcmVhZGRpcnA7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVhZGRpcnA7XG4iLCIvKiFcbiAqIG5vcm1hbGl6ZS1wYXRoIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9ub3JtYWxpemUtcGF0aD5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCwgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihwYXRoLCBzdHJpcFRyYWlsaW5nKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHBlY3RlZCBwYXRoIHRvIGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAocGF0aCA9PT0gJ1xcXFwnIHx8IHBhdGggPT09ICcvJykgcmV0dXJuICcvJztcblxuICB2YXIgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPD0gMSkgcmV0dXJuIHBhdGg7XG5cbiAgLy8gZW5zdXJlIHRoYXQgd2luMzIgbmFtZXNwYWNlcyBoYXMgdHdvIGxlYWRpbmcgc2xhc2hlcywgc28gdGhhdCB0aGUgcGF0aCBpc1xuICAvLyBoYW5kbGVkIHByb3Blcmx5IGJ5IHRoZSB3aW4zMiB2ZXJzaW9uIG9mIHBhdGgucGFyc2UoKSBhZnRlciBiZWluZyBub3JtYWxpemVkXG4gIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3KHY9dnMuODUpLmFzcHgjbmFtZXNwYWNlc1xuICB2YXIgcHJlZml4ID0gJyc7XG4gIGlmIChsZW4gPiA0ICYmIHBhdGhbM10gPT09ICdcXFxcJykge1xuICAgIHZhciBjaCA9IHBhdGhbMl07XG4gICAgaWYgKChjaCA9PT0gJz8nIHx8IGNoID09PSAnLicpICYmIHBhdGguc2xpY2UoMCwgMikgPT09ICdcXFxcXFxcXCcpIHtcbiAgICAgIHBhdGggPSBwYXRoLnNsaWNlKDIpO1xuICAgICAgcHJlZml4ID0gJy8vJztcbiAgICB9XG4gIH1cblxuICB2YXIgc2VncyA9IHBhdGguc3BsaXQoL1svXFxcXF0rLyk7XG4gIGlmIChzdHJpcFRyYWlsaW5nICE9PSBmYWxzZSAmJiBzZWdzW3NlZ3MubGVuZ3RoIC0gMV0gPT09ICcnKSB7XG4gICAgc2Vncy5wb3AoKTtcbiAgfVxuICByZXR1cm4gcHJlZml4ICsgc2Vncy5qb2luKCcvJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5cbmNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuY29uc3Qgbm9ybWFsaXplUGF0aCA9IHJlcXVpcmUoJ25vcm1hbGl6ZS1wYXRoJyk7XG5cbi8qKlxuICogQHR5cGVkZWYgeyh0ZXN0U3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW59IEFueW1hdGNoRm5cbiAqIEB0eXBlZGVmIHtzdHJpbmd8UmVnRXhwfEFueW1hdGNoRm59IEFueW1hdGNoUGF0dGVyblxuICogQHR5cGVkZWYge0FueW1hdGNoUGF0dGVybnxBbnltYXRjaFBhdHRlcm5bXX0gQW55bWF0Y2hNYXRjaGVyXG4gKi9cbmNvbnN0IEJBTkcgPSAnISc7XG5jb25zdCBERUZBVUxUX09QVElPTlMgPSB7cmV0dXJuSW5kZXg6IGZhbHNlfTtcbmNvbnN0IGFycmlmeSA9IChpdGVtKSA9PiBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IFtpdGVtXTtcblxuLyoqXG4gKiBAcGFyYW0ge0FueW1hdGNoUGF0dGVybn0gbWF0Y2hlclxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtBbnltYXRjaEZufVxuICovXG5jb25zdCBjcmVhdGVQYXR0ZXJuID0gKG1hdGNoZXIsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBtYXRjaGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1hdGNoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBtYXRjaGVyID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGdsb2IgPSBwaWNvbWF0Y2gobWF0Y2hlciwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIChzdHJpbmcpID0+IG1hdGNoZXIgPT09IHN0cmluZyB8fCBnbG9iKHN0cmluZyk7XG4gIH1cbiAgaWYgKG1hdGNoZXIgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICByZXR1cm4gKHN0cmluZykgPT4gbWF0Y2hlci50ZXN0KHN0cmluZyk7XG4gIH1cbiAgcmV0dXJuIChzdHJpbmcpID0+IGZhbHNlO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5PEZ1bmN0aW9uPn0gcGF0dGVybnNcbiAqIEBwYXJhbSB7QXJyYXk8RnVuY3Rpb24+fSBuZWdQYXR0ZXJuc1xuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGFyZ3NcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gcmV0dXJuSW5kZXhcbiAqIEByZXR1cm5zIHtib29sZWFufG51bWJlcn1cbiAqL1xuY29uc3QgbWF0Y2hQYXR0ZXJucyA9IChwYXR0ZXJucywgbmVnUGF0dGVybnMsIGFyZ3MsIHJldHVybkluZGV4KSA9PiB7XG4gIGNvbnN0IGlzTGlzdCA9IEFycmF5LmlzQXJyYXkoYXJncyk7XG4gIGNvbnN0IF9wYXRoID0gaXNMaXN0ID8gYXJnc1swXSA6IGFyZ3M7XG4gIGlmICghaXNMaXN0ICYmIHR5cGVvZiBfcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhbnltYXRjaDogc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmc6IGdvdCAnICtcbiAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChfcGF0aCkpXG4gIH1cbiAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZVBhdGgoX3BhdGgpO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBuZWdQYXR0ZXJucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBuZ2xvYiA9IG5lZ1BhdHRlcm5zW2luZGV4XTtcbiAgICBpZiAobmdsb2IocGF0aCkpIHtcbiAgICAgIHJldHVybiByZXR1cm5JbmRleCA/IC0xIDogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYXBwbGllZCA9IGlzTGlzdCAmJiBbcGF0aF0uY29uY2F0KGFyZ3Muc2xpY2UoMSkpO1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGF0dGVybnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHBhdHRlcm5zW2luZGV4XTtcbiAgICBpZiAoaXNMaXN0ID8gcGF0dGVybiguLi5hcHBsaWVkKSA6IHBhdHRlcm4ocGF0aCkpIHtcbiAgICAgIHJldHVybiByZXR1cm5JbmRleCA/IGluZGV4IDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0dXJuSW5kZXggPyAtMSA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0FueW1hdGNoTWF0Y2hlcn0gbWF0Y2hlcnNcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSB0ZXN0U3RyaW5nXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW58bnVtYmVyfEZ1bmN0aW9ufVxuICovXG5jb25zdCBhbnltYXRjaCA9IChtYXRjaGVycywgdGVzdFN0cmluZywgb3B0aW9ucyA9IERFRkFVTFRfT1BUSU9OUykgPT4ge1xuICBpZiAobWF0Y2hlcnMgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FueW1hdGNoOiBzcGVjaWZ5IGZpcnN0IGFyZ3VtZW50Jyk7XG4gIH1cbiAgY29uc3Qgb3B0cyA9IHR5cGVvZiBvcHRpb25zID09PSAnYm9vbGVhbicgPyB7cmV0dXJuSW5kZXg6IG9wdGlvbnN9IDogb3B0aW9ucztcbiAgY29uc3QgcmV0dXJuSW5kZXggPSBvcHRzLnJldHVybkluZGV4IHx8IGZhbHNlO1xuXG4gIC8vIEVhcmx5IGNhY2hlIGZvciBtYXRjaGVycy5cbiAgY29uc3QgbXRjaGVycyA9IGFycmlmeShtYXRjaGVycyk7XG4gIGNvbnN0IG5lZ2F0ZWRHbG9icyA9IG10Y2hlcnNcbiAgICAuZmlsdGVyKGl0ZW0gPT4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnICYmIGl0ZW0uY2hhckF0KDApID09PSBCQU5HKVxuICAgIC5tYXAoaXRlbSA9PiBpdGVtLnNsaWNlKDEpKVxuICAgIC5tYXAoaXRlbSA9PiBwaWNvbWF0Y2goaXRlbSwgb3B0cykpO1xuICBjb25zdCBwYXR0ZXJucyA9IG10Y2hlcnMubWFwKG1hdGNoZXIgPT4gY3JlYXRlUGF0dGVybihtYXRjaGVyLCBvcHRzKSk7XG5cbiAgaWYgKHRlc3RTdHJpbmcgPT0gbnVsbCkge1xuICAgIHJldHVybiAodGVzdFN0cmluZywgcmkgPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgcmV0dXJuSW5kZXggPSB0eXBlb2YgcmkgPT09ICdib29sZWFuJyA/IHJpIDogZmFsc2U7XG4gICAgICByZXR1cm4gbWF0Y2hQYXR0ZXJucyhwYXR0ZXJucywgbmVnYXRlZEdsb2JzLCB0ZXN0U3RyaW5nLCByZXR1cm5JbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoUGF0dGVybnMocGF0dGVybnMsIG5lZ2F0ZWRHbG9icywgdGVzdFN0cmluZywgcmV0dXJuSW5kZXgpO1xufTtcblxuYW55bWF0Y2guZGVmYXVsdCA9IGFueW1hdGNoO1xubW9kdWxlLmV4cG9ydHMgPSBhbnltYXRjaDtcbiIsIi8qIVxuICogaXMtZXh0Z2xvYiA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtZXh0Z2xvYj5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiwgSm9uIFNjaGxpbmtlcnQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0V4dGdsb2Ioc3RyKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCBzdHIgPT09ICcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIG1hdGNoO1xuICB3aGlsZSAoKG1hdGNoID0gLyhcXFxcKS58KFtAPyErKl1cXCguKlxcKSkvZy5leGVjKHN0cikpKSB7XG4gICAgaWYgKG1hdGNoWzJdKSByZXR1cm4gdHJ1ZTtcbiAgICBzdHIgPSBzdHIuc2xpY2UobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIi8qIVxuICogaXMtZ2xvYiA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtZ2xvYj5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxudmFyIGlzRXh0Z2xvYiA9IHJlcXVpcmUoJ2lzLWV4dGdsb2InKTtcbnZhciBjaGFycyA9IHsgJ3snOiAnfScsICcoJzogJyknLCAnWyc6ICddJ307XG52YXIgc3RyaWN0UmVnZXggPSAvXFxcXCguKXwoXiF8XFwqfFtcXF0uKyldXFw/fFxcW1teXFxcXFxcXV0rXFxdfFxce1teXFxcXH1dK1xcfXxcXChcXD9bOiE9XVteXFxcXCldK1xcKXxcXChbXnxdK1xcfFteXFxcXCldK1xcKSkvO1xudmFyIHJlbGF4ZWRSZWdleCA9IC9cXFxcKC4pfCheIXxbKj97fSgpW1xcXV18XFwoXFw/KS87XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNHbG9iKHN0ciwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycgfHwgc3RyID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0V4dGdsb2Ioc3RyKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFyIHJlZ2V4ID0gc3RyaWN0UmVnZXg7XG4gIHZhciBtYXRjaDtcblxuICAvLyBvcHRpb25hbGx5IHJlbGF4IHJlZ2V4XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc3RyaWN0ID09PSBmYWxzZSkge1xuICAgIHJlZ2V4ID0gcmVsYXhlZFJlZ2V4O1xuICB9XG5cbiAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobWF0Y2hbMl0pIHJldHVybiB0cnVlO1xuICAgIHZhciBpZHggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcblxuICAgIC8vIGlmIGFuIG9wZW4gYnJhY2tldC9icmFjZS9wYXJlbiBpcyBlc2NhcGVkLFxuICAgIC8vIHNldCB0aGUgaW5kZXggdG8gdGhlIG5leHQgY2xvc2luZyBjaGFyYWN0ZXJcbiAgICB2YXIgb3BlbiA9IG1hdGNoWzFdO1xuICAgIHZhciBjbG9zZSA9IG9wZW4gPyBjaGFyc1tvcGVuXSA6IG51bGw7XG4gICAgaWYgKG9wZW4gJiYgY2xvc2UpIHtcbiAgICAgIHZhciBuID0gc3RyLmluZGV4T2YoY2xvc2UsIGlkeCk7XG4gICAgICBpZiAobiAhPT0gLTEpIHtcbiAgICAgICAgaWR4ID0gbiArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RyID0gc3RyLnNsaWNlKGlkeCk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzR2xvYiA9IHJlcXVpcmUoJ2lzLWdsb2InKTtcbnZhciBwYXRoUG9zaXhEaXJuYW1lID0gcmVxdWlyZSgncGF0aCcpLnBvc2l4LmRpcm5hbWU7XG52YXIgaXNXaW4zMiA9IHJlcXVpcmUoJ29zJykucGxhdGZvcm0oKSA9PT0gJ3dpbjMyJztcblxudmFyIHNsYXNoID0gJy8nO1xudmFyIGJhY2tzbGFzaCA9IC9cXFxcL2c7XG52YXIgZW5jbG9zdXJlID0gL1tcXHtcXFtdLipbXFwvXSouKltcXH1cXF1dJC87XG52YXIgZ2xvYmJ5ID0gLyhefFteXFxcXF0pKFtcXHtcXFtdfFxcKFteXFwpXSskKS87XG52YXIgZXNjYXBlZCA9IC9cXFxcKFtcXCFcXCpcXD9cXHxcXFtcXF1cXChcXClcXHtcXH1dKS9nO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsaXBCYWNrc2xhc2hlcz10cnVlXVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdsb2JQYXJlbnQoc3RyLCBvcHRzKSB7XG4gIHZhciBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IGZsaXBCYWNrc2xhc2hlczogdHJ1ZSB9LCBvcHRzKTtcblxuICAvLyBmbGlwIHdpbmRvd3MgcGF0aCBzZXBhcmF0b3JzXG4gIGlmIChvcHRpb25zLmZsaXBCYWNrc2xhc2hlcyAmJiBpc1dpbjMyICYmIHN0ci5pbmRleE9mKHNsYXNoKSA8IDApIHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZShiYWNrc2xhc2gsIHNsYXNoKTtcbiAgfVxuXG4gIC8vIHNwZWNpYWwgY2FzZSBmb3Igc3RyaW5ncyBlbmRpbmcgaW4gZW5jbG9zdXJlIGNvbnRhaW5pbmcgcGF0aCBzZXBhcmF0b3JcbiAgaWYgKGVuY2xvc3VyZS50ZXN0KHN0cikpIHtcbiAgICBzdHIgKz0gc2xhc2g7XG4gIH1cblxuICAvLyBwcmVzZXJ2ZXMgZnVsbCBwYXRoIGluIGNhc2Ugb2YgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JcbiAgc3RyICs9ICdhJztcblxuICAvLyByZW1vdmUgcGF0aCBwYXJ0cyB0aGF0IGFyZSBnbG9iYnlcbiAgZG8ge1xuICAgIHN0ciA9IHBhdGhQb3NpeERpcm5hbWUoc3RyKTtcbiAgfSB3aGlsZSAoaXNHbG9iKHN0cikgfHwgZ2xvYmJ5LnRlc3Qoc3RyKSk7XG5cbiAgLy8gcmVtb3ZlIGVzY2FwZSBjaGFycyBhbmQgcmV0dXJuIHJlc3VsdFxuICByZXR1cm4gc3RyLnJlcGxhY2UoZXNjYXBlZCwgJyQxJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLmlzSW50ZWdlciA9IG51bSA9PiB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG51bSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnICYmIG51bS50cmltKCkgIT09ICcnKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKG51bSkpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogRmluZCBhIG5vZGUgb2YgdGhlIGdpdmVuIHR5cGVcbiAqL1xuXG5leHBvcnRzLmZpbmQgPSAobm9kZSwgdHlwZSkgPT4gbm9kZS5ub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS50eXBlID09PSB0eXBlKTtcblxuLyoqXG4gKiBGaW5kIGEgbm9kZSBvZiB0aGUgZ2l2ZW4gdHlwZVxuICovXG5cbmV4cG9ydHMuZXhjZWVkc0xpbWl0ID0gKG1pbiwgbWF4LCBzdGVwID0gMSwgbGltaXQpID0+IHtcbiAgaWYgKGxpbWl0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWV4cG9ydHMuaXNJbnRlZ2VyKG1pbikgfHwgIWV4cG9ydHMuaXNJbnRlZ2VyKG1heCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICgoTnVtYmVyKG1heCkgLSBOdW1iZXIobWluKSkgLyBOdW1iZXIoc3RlcCkpID49IGxpbWl0O1xufTtcblxuLyoqXG4gKiBFc2NhcGUgdGhlIGdpdmVuIG5vZGUgd2l0aCAnXFxcXCcgYmVmb3JlIG5vZGUudmFsdWVcbiAqL1xuXG5leHBvcnRzLmVzY2FwZU5vZGUgPSAoYmxvY2ssIG4gPSAwLCB0eXBlKSA9PiB7XG4gIGxldCBub2RlID0gYmxvY2subm9kZXNbbl07XG4gIGlmICghbm9kZSkgcmV0dXJuO1xuXG4gIGlmICgodHlwZSAmJiBub2RlLnR5cGUgPT09IHR5cGUpIHx8IG5vZGUudHlwZSA9PT0gJ29wZW4nIHx8IG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgIGlmIChub2RlLmVzY2FwZWQgIT09IHRydWUpIHtcbiAgICAgIG5vZGUudmFsdWUgPSAnXFxcXCcgKyBub2RlLnZhbHVlO1xuICAgICAgbm9kZS5lc2NhcGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBicmFjZSBub2RlIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBsaXRlcmFsIGJyYWNlc1xuICovXG5cbmV4cG9ydHMuZW5jbG9zZUJyYWNlID0gbm9kZSA9PiB7XG4gIGlmIChub2RlLnR5cGUgIT09ICdicmFjZScpIHJldHVybiBmYWxzZTtcbiAgaWYgKChub2RlLmNvbW1hcyA+PiAwICsgbm9kZS5yYW5nZXMgPj4gMCkgPT09IDApIHtcbiAgICBub2RlLmludmFsaWQgPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgYnJhY2Ugbm9kZSBpcyBpbnZhbGlkLlxuICovXG5cbmV4cG9ydHMuaXNJbnZhbGlkQnJhY2UgPSBibG9jayA9PiB7XG4gIGlmIChibG9jay50eXBlICE9PSAnYnJhY2UnKSByZXR1cm4gZmFsc2U7XG4gIGlmIChibG9jay5pbnZhbGlkID09PSB0cnVlIHx8IGJsb2NrLmRvbGxhcikgcmV0dXJuIHRydWU7XG4gIGlmICgoYmxvY2suY29tbWFzID4+IDAgKyBibG9jay5yYW5nZXMgPj4gMCkgPT09IDApIHtcbiAgICBibG9jay5pbnZhbGlkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoYmxvY2sub3BlbiAhPT0gdHJ1ZSB8fCBibG9jay5jbG9zZSAhPT0gdHJ1ZSkge1xuICAgIGJsb2NrLmludmFsaWQgPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgbm9kZSBpcyBhbiBvcGVuIG9yIGNsb3NlIG5vZGVcbiAqL1xuXG5leHBvcnRzLmlzT3Blbk9yQ2xvc2UgPSBub2RlID0+IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ29wZW4nIHx8IG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBub2RlLm9wZW4gPT09IHRydWUgfHwgbm9kZS5jbG9zZSA9PT0gdHJ1ZTtcbn07XG5cbi8qKlxuICogUmVkdWNlIGFuIGFycmF5IG9mIHRleHQgbm9kZXMuXG4gKi9cblxuZXhwb3J0cy5yZWR1Y2UgPSBub2RlcyA9PiBub2Rlcy5yZWR1Y2UoKGFjYywgbm9kZSkgPT4ge1xuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcpIGFjYy5wdXNoKG5vZGUudmFsdWUpO1xuICBpZiAobm9kZS50eXBlID09PSAncmFuZ2UnKSBub2RlLnR5cGUgPSAndGV4dCc7XG4gIHJldHVybiBhY2M7XG59LCBbXSk7XG5cbi8qKlxuICogRmxhdHRlbiBhbiBhcnJheVxuICovXG5cbmV4cG9ydHMuZmxhdHRlbiA9ICguLi5hcmdzKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICBjb25zdCBmbGF0ID0gYXJyID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGVsZSA9IGFycltpXTtcbiAgICAgIEFycmF5LmlzQXJyYXkoZWxlKSA/IGZsYXQoZWxlLCByZXN1bHQpIDogZWxlICE9PSB2b2lkIDAgJiYgcmVzdWx0LnB1c2goZWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgZmxhdChhcmdzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChhc3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgc3RyaW5naWZ5ID0gKG5vZGUsIHBhcmVudCA9IHt9KSA9PiB7XG4gICAgbGV0IGludmFsaWRCbG9jayA9IG9wdGlvbnMuZXNjYXBlSW52YWxpZCAmJiB1dGlscy5pc0ludmFsaWRCcmFjZShwYXJlbnQpO1xuICAgIGxldCBpbnZhbGlkTm9kZSA9IG5vZGUuaW52YWxpZCA9PT0gdHJ1ZSAmJiBvcHRpb25zLmVzY2FwZUludmFsaWQgPT09IHRydWU7XG4gICAgbGV0IG91dHB1dCA9ICcnO1xuXG4gICAgaWYgKG5vZGUudmFsdWUpIHtcbiAgICAgIGlmICgoaW52YWxpZEJsb2NrIHx8IGludmFsaWROb2RlKSAmJiB1dGlscy5pc09wZW5PckNsb3NlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiAnXFxcXCcgKyBub2RlLnZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudmFsdWUpIHtcbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzKSB7XG4gICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLm5vZGVzKSB7XG4gICAgICAgIG91dHB1dCArPSBzdHJpbmdpZnkoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9O1xuXG4gIHJldHVybiBzdHJpbmdpZnkoYXN0KTtcbn07XG5cbiIsIi8qIVxuICogaXMtbnVtYmVyIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1udW1iZXI+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEpvbiBTY2hsaW5rZXJ0LlxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihudW0pIHtcbiAgaWYgKHR5cGVvZiBudW0gPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG51bSAtIG51bSA9PT0gMDtcbiAgfVxuICBpZiAodHlwZW9mIG51bSA9PT0gJ3N0cmluZycgJiYgbnVtLnRyaW0oKSAhPT0gJycpIHtcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlID8gTnVtYmVyLmlzRmluaXRlKCtudW0pIDogaXNGaW5pdGUoK251bSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIi8qIVxuICogdG8tcmVnZXgtcmFuZ2UgPGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hdGNoL3RvLXJlZ2V4LXJhbmdlPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNS1wcmVzZW50LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmNvbnN0IGlzTnVtYmVyID0gcmVxdWlyZSgnaXMtbnVtYmVyJyk7XG5cbmNvbnN0IHRvUmVnZXhSYW5nZSA9IChtaW4sIG1heCwgb3B0aW9ucykgPT4ge1xuICBpZiAoaXNOdW1iZXIobWluKSA9PT0gZmFsc2UpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0b1JlZ2V4UmFuZ2U6IGV4cGVjdGVkIHRoZSBmaXJzdCBhcmd1bWVudCB0byBiZSBhIG51bWJlcicpO1xuICB9XG5cbiAgaWYgKG1heCA9PT0gdm9pZCAwIHx8IG1pbiA9PT0gbWF4KSB7XG4gICAgcmV0dXJuIFN0cmluZyhtaW4pO1xuICB9XG5cbiAgaWYgKGlzTnVtYmVyKG1heCkgPT09IGZhbHNlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndG9SZWdleFJhbmdlOiBleHBlY3RlZCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIGEgbnVtYmVyLicpO1xuICB9XG5cbiAgbGV0IG9wdHMgPSB7IHJlbGF4WmVyb3M6IHRydWUsIC4uLm9wdGlvbnMgfTtcbiAgaWYgKHR5cGVvZiBvcHRzLnN0cmljdFplcm9zID09PSAnYm9vbGVhbicpIHtcbiAgICBvcHRzLnJlbGF4WmVyb3MgPSBvcHRzLnN0cmljdFplcm9zID09PSBmYWxzZTtcbiAgfVxuXG4gIGxldCByZWxheCA9IFN0cmluZyhvcHRzLnJlbGF4WmVyb3MpO1xuICBsZXQgc2hvcnRoYW5kID0gU3RyaW5nKG9wdHMuc2hvcnRoYW5kKTtcbiAgbGV0IGNhcHR1cmUgPSBTdHJpbmcob3B0cy5jYXB0dXJlKTtcbiAgbGV0IHdyYXAgPSBTdHJpbmcob3B0cy53cmFwKTtcbiAgbGV0IGNhY2hlS2V5ID0gbWluICsgJzonICsgbWF4ICsgJz0nICsgcmVsYXggKyBzaG9ydGhhbmQgKyBjYXB0dXJlICsgd3JhcDtcblxuICBpZiAodG9SZWdleFJhbmdlLmNhY2hlLmhhc093blByb3BlcnR5KGNhY2hlS2V5KSkge1xuICAgIHJldHVybiB0b1JlZ2V4UmFuZ2UuY2FjaGVbY2FjaGVLZXldLnJlc3VsdDtcbiAgfVxuXG4gIGxldCBhID0gTWF0aC5taW4obWluLCBtYXgpO1xuICBsZXQgYiA9IE1hdGgubWF4KG1pbiwgbWF4KTtcblxuICBpZiAoTWF0aC5hYnMoYSAtIGIpID09PSAxKSB7XG4gICAgbGV0IHJlc3VsdCA9IG1pbiArICd8JyArIG1heDtcbiAgICBpZiAob3B0cy5jYXB0dXJlKSB7XG4gICAgICByZXR1cm4gYCgke3Jlc3VsdH0pYDtcbiAgICB9XG4gICAgaWYgKG9wdHMud3JhcCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBgKD86JHtyZXN1bHR9KWA7XG4gIH1cblxuICBsZXQgaXNQYWRkZWQgPSBoYXNQYWRkaW5nKG1pbikgfHwgaGFzUGFkZGluZyhtYXgpO1xuICBsZXQgc3RhdGUgPSB7IG1pbiwgbWF4LCBhLCBiIH07XG4gIGxldCBwb3NpdGl2ZXMgPSBbXTtcbiAgbGV0IG5lZ2F0aXZlcyA9IFtdO1xuXG4gIGlmIChpc1BhZGRlZCkge1xuICAgIHN0YXRlLmlzUGFkZGVkID0gaXNQYWRkZWQ7XG4gICAgc3RhdGUubWF4TGVuID0gU3RyaW5nKHN0YXRlLm1heCkubGVuZ3RoO1xuICB9XG5cbiAgaWYgKGEgPCAwKSB7XG4gICAgbGV0IG5ld01pbiA9IGIgPCAwID8gTWF0aC5hYnMoYikgOiAxO1xuICAgIG5lZ2F0aXZlcyA9IHNwbGl0VG9QYXR0ZXJucyhuZXdNaW4sIE1hdGguYWJzKGEpLCBzdGF0ZSwgb3B0cyk7XG4gICAgYSA9IHN0YXRlLmEgPSAwO1xuICB9XG5cbiAgaWYgKGIgPj0gMCkge1xuICAgIHBvc2l0aXZlcyA9IHNwbGl0VG9QYXR0ZXJucyhhLCBiLCBzdGF0ZSwgb3B0cyk7XG4gIH1cblxuICBzdGF0ZS5uZWdhdGl2ZXMgPSBuZWdhdGl2ZXM7XG4gIHN0YXRlLnBvc2l0aXZlcyA9IHBvc2l0aXZlcztcbiAgc3RhdGUucmVzdWx0ID0gY29sbGF0ZVBhdHRlcm5zKG5lZ2F0aXZlcywgcG9zaXRpdmVzLCBvcHRzKTtcblxuICBpZiAob3B0cy5jYXB0dXJlID09PSB0cnVlKSB7XG4gICAgc3RhdGUucmVzdWx0ID0gYCgke3N0YXRlLnJlc3VsdH0pYDtcbiAgfSBlbHNlIGlmIChvcHRzLndyYXAgIT09IGZhbHNlICYmIChwb3NpdGl2ZXMubGVuZ3RoICsgbmVnYXRpdmVzLmxlbmd0aCkgPiAxKSB7XG4gICAgc3RhdGUucmVzdWx0ID0gYCg/OiR7c3RhdGUucmVzdWx0fSlgO1xuICB9XG5cbiAgdG9SZWdleFJhbmdlLmNhY2hlW2NhY2hlS2V5XSA9IHN0YXRlO1xuICByZXR1cm4gc3RhdGUucmVzdWx0O1xufTtcblxuZnVuY3Rpb24gY29sbGF0ZVBhdHRlcm5zKG5lZywgcG9zLCBvcHRpb25zKSB7XG4gIGxldCBvbmx5TmVnYXRpdmUgPSBmaWx0ZXJQYXR0ZXJucyhuZWcsIHBvcywgJy0nLCBmYWxzZSwgb3B0aW9ucykgfHwgW107XG4gIGxldCBvbmx5UG9zaXRpdmUgPSBmaWx0ZXJQYXR0ZXJucyhwb3MsIG5lZywgJycsIGZhbHNlLCBvcHRpb25zKSB8fCBbXTtcbiAgbGV0IGludGVyc2VjdGVkID0gZmlsdGVyUGF0dGVybnMobmVnLCBwb3MsICctPycsIHRydWUsIG9wdGlvbnMpIHx8IFtdO1xuICBsZXQgc3VicGF0dGVybnMgPSBvbmx5TmVnYXRpdmUuY29uY2F0KGludGVyc2VjdGVkKS5jb25jYXQob25seVBvc2l0aXZlKTtcbiAgcmV0dXJuIHN1YnBhdHRlcm5zLmpvaW4oJ3wnKTtcbn1cblxuZnVuY3Rpb24gc3BsaXRUb1JhbmdlcyhtaW4sIG1heCkge1xuICBsZXQgbmluZXMgPSAxO1xuICBsZXQgemVyb3MgPSAxO1xuXG4gIGxldCBzdG9wID0gY291bnROaW5lcyhtaW4sIG5pbmVzKTtcbiAgbGV0IHN0b3BzID0gbmV3IFNldChbbWF4XSk7XG5cbiAgd2hpbGUgKG1pbiA8PSBzdG9wICYmIHN0b3AgPD0gbWF4KSB7XG4gICAgc3RvcHMuYWRkKHN0b3ApO1xuICAgIG5pbmVzICs9IDE7XG4gICAgc3RvcCA9IGNvdW50TmluZXMobWluLCBuaW5lcyk7XG4gIH1cblxuICBzdG9wID0gY291bnRaZXJvcyhtYXggKyAxLCB6ZXJvcykgLSAxO1xuXG4gIHdoaWxlIChtaW4gPCBzdG9wICYmIHN0b3AgPD0gbWF4KSB7XG4gICAgc3RvcHMuYWRkKHN0b3ApO1xuICAgIHplcm9zICs9IDE7XG4gICAgc3RvcCA9IGNvdW50WmVyb3MobWF4ICsgMSwgemVyb3MpIC0gMTtcbiAgfVxuXG4gIHN0b3BzID0gWy4uLnN0b3BzXTtcbiAgc3RvcHMuc29ydChjb21wYXJlKTtcbiAgcmV0dXJuIHN0b3BzO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSByYW5nZSB0byBhIHJlZ2V4IHBhdHRlcm5cbiAqIEBwYXJhbSB7TnVtYmVyfSBgc3RhcnRgXG4gKiBAcGFyYW0ge051bWJlcn0gYHN0b3BgXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gcmFuZ2VUb1BhdHRlcm4oc3RhcnQsIHN0b3AsIG9wdGlvbnMpIHtcbiAgaWYgKHN0YXJ0ID09PSBzdG9wKSB7XG4gICAgcmV0dXJuIHsgcGF0dGVybjogc3RhcnQsIGNvdW50OiBbXSwgZGlnaXRzOiAwIH07XG4gIH1cblxuICBsZXQgemlwcGVkID0gemlwKHN0YXJ0LCBzdG9wKTtcbiAgbGV0IGRpZ2l0cyA9IHppcHBlZC5sZW5ndGg7XG4gIGxldCBwYXR0ZXJuID0gJyc7XG4gIGxldCBjb3VudCA9IDA7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWdpdHM7IGkrKykge1xuICAgIGxldCBbc3RhcnREaWdpdCwgc3RvcERpZ2l0XSA9IHppcHBlZFtpXTtcblxuICAgIGlmIChzdGFydERpZ2l0ID09PSBzdG9wRGlnaXQpIHtcbiAgICAgIHBhdHRlcm4gKz0gc3RhcnREaWdpdDtcblxuICAgIH0gZWxzZSBpZiAoc3RhcnREaWdpdCAhPT0gJzAnIHx8IHN0b3BEaWdpdCAhPT0gJzknKSB7XG4gICAgICBwYXR0ZXJuICs9IHRvQ2hhcmFjdGVyQ2xhc3Moc3RhcnREaWdpdCwgc3RvcERpZ2l0LCBvcHRpb25zKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb3VudCkge1xuICAgIHBhdHRlcm4gKz0gb3B0aW9ucy5zaG9ydGhhbmQgPT09IHRydWUgPyAnXFxcXGQnIDogJ1swLTldJztcbiAgfVxuXG4gIHJldHVybiB7IHBhdHRlcm4sIGNvdW50OiBbY291bnRdLCBkaWdpdHMgfTtcbn1cblxuZnVuY3Rpb24gc3BsaXRUb1BhdHRlcm5zKG1pbiwgbWF4LCB0b2ssIG9wdGlvbnMpIHtcbiAgbGV0IHJhbmdlcyA9IHNwbGl0VG9SYW5nZXMobWluLCBtYXgpO1xuICBsZXQgdG9rZW5zID0gW107XG4gIGxldCBzdGFydCA9IG1pbjtcbiAgbGV0IHByZXY7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgbWF4ID0gcmFuZ2VzW2ldO1xuICAgIGxldCBvYmogPSByYW5nZVRvUGF0dGVybihTdHJpbmcoc3RhcnQpLCBTdHJpbmcobWF4KSwgb3B0aW9ucyk7XG4gICAgbGV0IHplcm9zID0gJyc7XG5cbiAgICBpZiAoIXRvay5pc1BhZGRlZCAmJiBwcmV2ICYmIHByZXYucGF0dGVybiA9PT0gb2JqLnBhdHRlcm4pIHtcbiAgICAgIGlmIChwcmV2LmNvdW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcHJldi5jb3VudC5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgcHJldi5jb3VudC5wdXNoKG9iai5jb3VudFswXSk7XG4gICAgICBwcmV2LnN0cmluZyA9IHByZXYucGF0dGVybiArIHRvUXVhbnRpZmllcihwcmV2LmNvdW50KTtcbiAgICAgIHN0YXJ0ID0gbWF4ICsgMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0b2suaXNQYWRkZWQpIHtcbiAgICAgIHplcm9zID0gcGFkWmVyb3MobWF4LCB0b2ssIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIG9iai5zdHJpbmcgPSB6ZXJvcyArIG9iai5wYXR0ZXJuICsgdG9RdWFudGlmaWVyKG9iai5jb3VudCk7XG4gICAgdG9rZW5zLnB1c2gob2JqKTtcbiAgICBzdGFydCA9IG1heCArIDE7XG4gICAgcHJldiA9IG9iajtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmZ1bmN0aW9uIGZpbHRlclBhdHRlcm5zKGFyciwgY29tcGFyaXNvbiwgcHJlZml4LCBpbnRlcnNlY3Rpb24sIG9wdGlvbnMpIHtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gIGZvciAobGV0IGVsZSBvZiBhcnIpIHtcbiAgICBsZXQgeyBzdHJpbmcgfSA9IGVsZTtcblxuICAgIC8vIG9ubHkgcHVzaCBpZiBfYm90aF8gYXJlIG5lZ2F0aXZlLi4uXG4gICAgaWYgKCFpbnRlcnNlY3Rpb24gJiYgIWNvbnRhaW5zKGNvbXBhcmlzb24sICdzdHJpbmcnLCBzdHJpbmcpKSB7XG4gICAgICByZXN1bHQucHVzaChwcmVmaXggKyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8vIG9yIF9ib3RoXyBhcmUgcG9zaXRpdmVcbiAgICBpZiAoaW50ZXJzZWN0aW9uICYmIGNvbnRhaW5zKGNvbXBhcmlzb24sICdzdHJpbmcnLCBzdHJpbmcpKSB7XG4gICAgICByZXN1bHQucHVzaChwcmVmaXggKyBzdHJpbmcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFppcCBzdHJpbmdzXG4gKi9cblxuZnVuY3Rpb24gemlwKGEsIGIpIHtcbiAgbGV0IGFyciA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIGFyci5wdXNoKFthW2ldLCBiW2ldXSk7XG4gIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7XG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zKGFyciwga2V5LCB2YWwpIHtcbiAgcmV0dXJuIGFyci5zb21lKGVsZSA9PiBlbGVba2V5XSA9PT0gdmFsKTtcbn1cblxuZnVuY3Rpb24gY291bnROaW5lcyhtaW4sIGxlbikge1xuICByZXR1cm4gTnVtYmVyKFN0cmluZyhtaW4pLnNsaWNlKDAsIC1sZW4pICsgJzknLnJlcGVhdChsZW4pKTtcbn1cblxuZnVuY3Rpb24gY291bnRaZXJvcyhpbnRlZ2VyLCB6ZXJvcykge1xuICByZXR1cm4gaW50ZWdlciAtIChpbnRlZ2VyICUgTWF0aC5wb3coMTAsIHplcm9zKSk7XG59XG5cbmZ1bmN0aW9uIHRvUXVhbnRpZmllcihkaWdpdHMpIHtcbiAgbGV0IFtzdGFydCA9IDAsIHN0b3AgPSAnJ10gPSBkaWdpdHM7XG4gIGlmIChzdG9wIHx8IHN0YXJ0ID4gMSkge1xuICAgIHJldHVybiBgeyR7c3RhcnQgKyAoc3RvcCA/ICcsJyArIHN0b3AgOiAnJyl9fWA7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiB0b0NoYXJhY3RlckNsYXNzKGEsIGIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGBbJHthfSR7KGIgLSBhID09PSAxKSA/ICcnIDogJy0nfSR7Yn1dYDtcbn1cblxuZnVuY3Rpb24gaGFzUGFkZGluZyhzdHIpIHtcbiAgcmV0dXJuIC9eLT8oMCspXFxkLy50ZXN0KHN0cik7XG59XG5cbmZ1bmN0aW9uIHBhZFplcm9zKHZhbHVlLCB0b2ssIG9wdGlvbnMpIHtcbiAgaWYgKCF0b2suaXNQYWRkZWQpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBsZXQgZGlmZiA9IE1hdGguYWJzKHRvay5tYXhMZW4gLSBTdHJpbmcodmFsdWUpLmxlbmd0aCk7XG4gIGxldCByZWxheCA9IG9wdGlvbnMucmVsYXhaZXJvcyAhPT0gZmFsc2U7XG5cbiAgc3dpdGNoIChkaWZmKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuICcnO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiByZWxheCA/ICcwPycgOiAnMCc7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHJlbGF4ID8gJzB7MCwyfScgOiAnMDAnO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiByZWxheCA/IGAwezAsJHtkaWZmfX1gIDogYDB7JHtkaWZmfX1gO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENhY2hlXG4gKi9cblxudG9SZWdleFJhbmdlLmNhY2hlID0ge307XG50b1JlZ2V4UmFuZ2UuY2xlYXJDYWNoZSA9ICgpID0+ICh0b1JlZ2V4UmFuZ2UuY2FjaGUgPSB7fSk7XG5cbi8qKlxuICogRXhwb3NlIGB0b1JlZ2V4UmFuZ2VgXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSB0b1JlZ2V4UmFuZ2U7XG4iLCIvKiFcbiAqIGZpbGwtcmFuZ2UgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L2ZpbGwtcmFuZ2U+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEpvbiBTY2hsaW5rZXJ0LlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbmNvbnN0IHRvUmVnZXhSYW5nZSA9IHJlcXVpcmUoJ3RvLXJlZ2V4LXJhbmdlJyk7XG5cbmNvbnN0IGlzT2JqZWN0ID0gdmFsID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuXG5jb25zdCB0cmFuc2Zvcm0gPSB0b051bWJlciA9PiB7XG4gIHJldHVybiB2YWx1ZSA9PiB0b051bWJlciA9PT0gdHJ1ZSA/IE51bWJlcih2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuY29uc3QgaXNWYWxpZFZhbHVlID0gdmFsdWUgPT4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZSAhPT0gJycpO1xufTtcblxuY29uc3QgaXNOdW1iZXIgPSBudW0gPT4gTnVtYmVyLmlzSW50ZWdlcigrbnVtKTtcblxuY29uc3QgemVyb3MgPSBpbnB1dCA9PiB7XG4gIGxldCB2YWx1ZSA9IGAke2lucHV0fWA7XG4gIGxldCBpbmRleCA9IC0xO1xuICBpZiAodmFsdWVbMF0gPT09ICctJykgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgaWYgKHZhbHVlID09PSAnMCcpIHJldHVybiBmYWxzZTtcbiAgd2hpbGUgKHZhbHVlWysraW5kZXhdID09PSAnMCcpO1xuICByZXR1cm4gaW5kZXggPiAwO1xufTtcblxuY29uc3Qgc3RyaW5naWZ5ID0gKHN0YXJ0LCBlbmQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gb3B0aW9ucy5zdHJpbmdpZnkgPT09IHRydWU7XG59O1xuXG5jb25zdCBwYWQgPSAoaW5wdXQsIG1heExlbmd0aCwgdG9OdW1iZXIpID0+IHtcbiAgaWYgKG1heExlbmd0aCA+IDApIHtcbiAgICBsZXQgZGFzaCA9IGlucHV0WzBdID09PSAnLScgPyAnLScgOiAnJztcbiAgICBpZiAoZGFzaCkgaW5wdXQgPSBpbnB1dC5zbGljZSgxKTtcbiAgICBpbnB1dCA9IChkYXNoICsgaW5wdXQucGFkU3RhcnQoZGFzaCA/IG1heExlbmd0aCAtIDEgOiBtYXhMZW5ndGgsICcwJykpO1xuICB9XG4gIGlmICh0b051bWJlciA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gU3RyaW5nKGlucHV0KTtcbiAgfVxuICByZXR1cm4gaW5wdXQ7XG59O1xuXG5jb25zdCB0b01heExlbiA9IChpbnB1dCwgbWF4TGVuZ3RoKSA9PiB7XG4gIGxldCBuZWdhdGl2ZSA9IGlucHV0WzBdID09PSAnLScgPyAnLScgOiAnJztcbiAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgaW5wdXQgPSBpbnB1dC5zbGljZSgxKTtcbiAgICBtYXhMZW5ndGgtLTtcbiAgfVxuICB3aGlsZSAoaW5wdXQubGVuZ3RoIDwgbWF4TGVuZ3RoKSBpbnB1dCA9ICcwJyArIGlucHV0O1xuICByZXR1cm4gbmVnYXRpdmUgPyAoJy0nICsgaW5wdXQpIDogaW5wdXQ7XG59O1xuXG5jb25zdCB0b1NlcXVlbmNlID0gKHBhcnRzLCBvcHRpb25zKSA9PiB7XG4gIHBhcnRzLm5lZ2F0aXZlcy5zb3J0KChhLCBiKSA9PiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMCk7XG4gIHBhcnRzLnBvc2l0aXZlcy5zb3J0KChhLCBiKSA9PiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMCk7XG5cbiAgbGV0IHByZWZpeCA9IG9wdGlvbnMuY2FwdHVyZSA/ICcnIDogJz86JztcbiAgbGV0IHBvc2l0aXZlcyA9ICcnO1xuICBsZXQgbmVnYXRpdmVzID0gJyc7XG4gIGxldCByZXN1bHQ7XG5cbiAgaWYgKHBhcnRzLnBvc2l0aXZlcy5sZW5ndGgpIHtcbiAgICBwb3NpdGl2ZXMgPSBwYXJ0cy5wb3NpdGl2ZXMuam9pbignfCcpO1xuICB9XG5cbiAgaWYgKHBhcnRzLm5lZ2F0aXZlcy5sZW5ndGgpIHtcbiAgICBuZWdhdGl2ZXMgPSBgLSgke3ByZWZpeH0ke3BhcnRzLm5lZ2F0aXZlcy5qb2luKCd8Jyl9KWA7XG4gIH1cblxuICBpZiAocG9zaXRpdmVzICYmIG5lZ2F0aXZlcykge1xuICAgIHJlc3VsdCA9IGAke3Bvc2l0aXZlc318JHtuZWdhdGl2ZXN9YDtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSBwb3NpdGl2ZXMgfHwgbmVnYXRpdmVzO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMud3JhcCkge1xuICAgIHJldHVybiBgKCR7cHJlZml4fSR7cmVzdWx0fSlgO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHRvUmFuZ2UgPSAoYSwgYiwgaXNOdW1iZXJzLCBvcHRpb25zKSA9PiB7XG4gIGlmIChpc051bWJlcnMpIHtcbiAgICByZXR1cm4gdG9SZWdleFJhbmdlKGEsIGIsIHsgd3JhcDogZmFsc2UsIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBsZXQgc3RhcnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGEpO1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHN0YXJ0O1xuXG4gIGxldCBzdG9wID0gU3RyaW5nLmZyb21DaGFyQ29kZShiKTtcbiAgcmV0dXJuIGBbJHtzdGFydH0tJHtzdG9wfV1gO1xufTtcblxuY29uc3QgdG9SZWdleCA9IChzdGFydCwgZW5kLCBvcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHN0YXJ0KSkge1xuICAgIGxldCB3cmFwID0gb3B0aW9ucy53cmFwID09PSB0cnVlO1xuICAgIGxldCBwcmVmaXggPSBvcHRpb25zLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gICAgcmV0dXJuIHdyYXAgPyBgKCR7cHJlZml4fSR7c3RhcnQuam9pbignfCcpfSlgIDogc3RhcnQuam9pbignfCcpO1xuICB9XG4gIHJldHVybiB0b1JlZ2V4UmFuZ2Uoc3RhcnQsIGVuZCwgb3B0aW9ucyk7XG59O1xuXG5jb25zdCByYW5nZUVycm9yID0gKC4uLmFyZ3MpID0+IHtcbiAgcmV0dXJuIG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHJhbmdlIGFyZ3VtZW50czogJyArIHV0aWwuaW5zcGVjdCguLi5hcmdzKSk7XG59O1xuXG5jb25zdCBpbnZhbGlkUmFuZ2UgPSAoc3RhcnQsIGVuZCwgb3B0aW9ucykgPT4ge1xuICBpZiAob3B0aW9ucy5zdHJpY3RSYW5nZXMgPT09IHRydWUpIHRocm93IHJhbmdlRXJyb3IoW3N0YXJ0LCBlbmRdKTtcbiAgcmV0dXJuIFtdO1xufTtcblxuY29uc3QgaW52YWxpZFN0ZXAgPSAoc3RlcCwgb3B0aW9ucykgPT4ge1xuICBpZiAob3B0aW9ucy5zdHJpY3RSYW5nZXMgPT09IHRydWUpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBzdGVwIFwiJHtzdGVwfVwiIHRvIGJlIGEgbnVtYmVyYCk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufTtcblxuY29uc3QgZmlsbE51bWJlcnMgPSAoc3RhcnQsIGVuZCwgc3RlcCA9IDEsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgYSA9IE51bWJlcihzdGFydCk7XG4gIGxldCBiID0gTnVtYmVyKGVuZCk7XG5cbiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGEpIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGIpKSB7XG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKSB0aHJvdyByYW5nZUVycm9yKFtzdGFydCwgZW5kXSk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gZml4IG5lZ2F0aXZlIHplcm9cbiAgaWYgKGEgPT09IDApIGEgPSAwO1xuICBpZiAoYiA9PT0gMCkgYiA9IDA7XG5cbiAgbGV0IGRlc2NlbmRpbmcgPSBhID4gYjtcbiAgbGV0IHN0YXJ0U3RyaW5nID0gU3RyaW5nKHN0YXJ0KTtcbiAgbGV0IGVuZFN0cmluZyA9IFN0cmluZyhlbmQpO1xuICBsZXQgc3RlcFN0cmluZyA9IFN0cmluZyhzdGVwKTtcbiAgc3RlcCA9IE1hdGgubWF4KE1hdGguYWJzKHN0ZXApLCAxKTtcblxuICBsZXQgcGFkZGVkID0gemVyb3Moc3RhcnRTdHJpbmcpIHx8IHplcm9zKGVuZFN0cmluZykgfHwgemVyb3Moc3RlcFN0cmluZyk7XG4gIGxldCBtYXhMZW4gPSBwYWRkZWQgPyBNYXRoLm1heChzdGFydFN0cmluZy5sZW5ndGgsIGVuZFN0cmluZy5sZW5ndGgsIHN0ZXBTdHJpbmcubGVuZ3RoKSA6IDA7XG4gIGxldCB0b051bWJlciA9IHBhZGRlZCA9PT0gZmFsc2UgJiYgc3RyaW5naWZ5KHN0YXJ0LCBlbmQsIG9wdGlvbnMpID09PSBmYWxzZTtcbiAgbGV0IGZvcm1hdCA9IG9wdGlvbnMudHJhbnNmb3JtIHx8IHRyYW5zZm9ybSh0b051bWJlcik7XG5cbiAgaWYgKG9wdGlvbnMudG9SZWdleCAmJiBzdGVwID09PSAxKSB7XG4gICAgcmV0dXJuIHRvUmFuZ2UodG9NYXhMZW4oc3RhcnQsIG1heExlbiksIHRvTWF4TGVuKGVuZCwgbWF4TGVuKSwgdHJ1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBsZXQgcGFydHMgPSB7IG5lZ2F0aXZlczogW10sIHBvc2l0aXZlczogW10gfTtcbiAgbGV0IHB1c2ggPSBudW0gPT4gcGFydHNbbnVtIDwgMCA/ICduZWdhdGl2ZXMnIDogJ3Bvc2l0aXZlcyddLnB1c2goTWF0aC5hYnMobnVtKSk7XG4gIGxldCByYW5nZSA9IFtdO1xuICBsZXQgaW5kZXggPSAwO1xuXG4gIHdoaWxlIChkZXNjZW5kaW5nID8gYSA+PSBiIDogYSA8PSBiKSB7XG4gICAgaWYgKG9wdGlvbnMudG9SZWdleCA9PT0gdHJ1ZSAmJiBzdGVwID4gMSkge1xuICAgICAgcHVzaChhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2UucHVzaChwYWQoZm9ybWF0KGEsIGluZGV4KSwgbWF4TGVuLCB0b051bWJlcikpO1xuICAgIH1cbiAgICBhID0gZGVzY2VuZGluZyA/IGEgLSBzdGVwIDogYSArIHN0ZXA7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGlmIChvcHRpb25zLnRvUmVnZXggPT09IHRydWUpIHtcbiAgICByZXR1cm4gc3RlcCA+IDFcbiAgICAgID8gdG9TZXF1ZW5jZShwYXJ0cywgb3B0aW9ucylcbiAgICAgIDogdG9SZWdleChyYW5nZSwgbnVsbCwgeyB3cmFwOiBmYWxzZSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHJldHVybiByYW5nZTtcbn07XG5cbmNvbnN0IGZpbGxMZXR0ZXJzID0gKHN0YXJ0LCBlbmQsIHN0ZXAgPSAxLCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKCghaXNOdW1iZXIoc3RhcnQpICYmIHN0YXJ0Lmxlbmd0aCA+IDEpIHx8ICghaXNOdW1iZXIoZW5kKSAmJiBlbmQubGVuZ3RoID4gMSkpIHtcbiAgICByZXR1cm4gaW52YWxpZFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xuICB9XG5cblxuICBsZXQgZm9ybWF0ID0gb3B0aW9ucy50cmFuc2Zvcm0gfHwgKHZhbCA9PiBTdHJpbmcuZnJvbUNoYXJDb2RlKHZhbCkpO1xuICBsZXQgYSA9IGAke3N0YXJ0fWAuY2hhckNvZGVBdCgwKTtcbiAgbGV0IGIgPSBgJHtlbmR9YC5jaGFyQ29kZUF0KDApO1xuXG4gIGxldCBkZXNjZW5kaW5nID0gYSA+IGI7XG4gIGxldCBtaW4gPSBNYXRoLm1pbihhLCBiKTtcbiAgbGV0IG1heCA9IE1hdGgubWF4KGEsIGIpO1xuXG4gIGlmIChvcHRpb25zLnRvUmVnZXggJiYgc3RlcCA9PT0gMSkge1xuICAgIHJldHVybiB0b1JhbmdlKG1pbiwgbWF4LCBmYWxzZSwgb3B0aW9ucyk7XG4gIH1cblxuICBsZXQgcmFuZ2UgPSBbXTtcbiAgbGV0IGluZGV4ID0gMDtcblxuICB3aGlsZSAoZGVzY2VuZGluZyA/IGEgPj0gYiA6IGEgPD0gYikge1xuICAgIHJhbmdlLnB1c2goZm9ybWF0KGEsIGluZGV4KSk7XG4gICAgYSA9IGRlc2NlbmRpbmcgPyBhIC0gc3RlcCA6IGEgKyBzdGVwO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAob3B0aW9ucy50b1JlZ2V4ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRvUmVnZXgocmFuZ2UsIG51bGwsIHsgd3JhcDogZmFsc2UsIG9wdGlvbnMgfSk7XG4gIH1cblxuICByZXR1cm4gcmFuZ2U7XG59O1xuXG5jb25zdCBmaWxsID0gKHN0YXJ0LCBlbmQsIHN0ZXAsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAoZW5kID09IG51bGwgJiYgaXNWYWxpZFZhbHVlKHN0YXJ0KSkge1xuICAgIHJldHVybiBbc3RhcnRdO1xuICB9XG5cbiAgaWYgKCFpc1ZhbGlkVmFsdWUoc3RhcnQpIHx8ICFpc1ZhbGlkVmFsdWUoZW5kKSkge1xuICAgIHJldHVybiBpbnZhbGlkUmFuZ2Uoc3RhcnQsIGVuZCwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHN0ZXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmlsbChzdGFydCwgZW5kLCAxLCB7IHRyYW5zZm9ybTogc3RlcCB9KTtcbiAgfVxuXG4gIGlmIChpc09iamVjdChzdGVwKSkge1xuICAgIHJldHVybiBmaWxsKHN0YXJ0LCBlbmQsIDAsIHN0ZXApO1xuICB9XG5cbiAgbGV0IG9wdHMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgaWYgKG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkgb3B0cy53cmFwID0gdHJ1ZTtcbiAgc3RlcCA9IHN0ZXAgfHwgb3B0cy5zdGVwIHx8IDE7XG5cbiAgaWYgKCFpc051bWJlcihzdGVwKSkge1xuICAgIGlmIChzdGVwICE9IG51bGwgJiYgIWlzT2JqZWN0KHN0ZXApKSByZXR1cm4gaW52YWxpZFN0ZXAoc3RlcCwgb3B0cyk7XG4gICAgcmV0dXJuIGZpbGwoc3RhcnQsIGVuZCwgMSwgc3RlcCk7XG4gIH1cblxuICBpZiAoaXNOdW1iZXIoc3RhcnQpICYmIGlzTnVtYmVyKGVuZCkpIHtcbiAgICByZXR1cm4gZmlsbE51bWJlcnMoc3RhcnQsIGVuZCwgc3RlcCwgb3B0cyk7XG4gIH1cblxuICByZXR1cm4gZmlsbExldHRlcnMoc3RhcnQsIGVuZCwgTWF0aC5tYXgoTWF0aC5hYnMoc3RlcCksIDEpLCBvcHRzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZmlsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZmlsbCA9IHJlcXVpcmUoJ2ZpbGwtcmFuZ2UnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5jb25zdCBjb21waWxlID0gKGFzdCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGxldCB3YWxrID0gKG5vZGUsIHBhcmVudCA9IHt9KSA9PiB7XG4gICAgbGV0IGludmFsaWRCbG9jayA9IHV0aWxzLmlzSW52YWxpZEJyYWNlKHBhcmVudCk7XG4gICAgbGV0IGludmFsaWROb2RlID0gbm9kZS5pbnZhbGlkID09PSB0cnVlICYmIG9wdGlvbnMuZXNjYXBlSW52YWxpZCA9PT0gdHJ1ZTtcbiAgICBsZXQgaW52YWxpZCA9IGludmFsaWRCbG9jayA9PT0gdHJ1ZSB8fCBpbnZhbGlkTm9kZSA9PT0gdHJ1ZTtcbiAgICBsZXQgcHJlZml4ID0gb3B0aW9ucy5lc2NhcGVJbnZhbGlkID09PSB0cnVlID8gJ1xcXFwnIDogJyc7XG4gICAgbGV0IG91dHB1dCA9ICcnO1xuXG4gICAgaWYgKG5vZGUuaXNPcGVuID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gcHJlZml4ICsgbm9kZS52YWx1ZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuaXNDbG9zZSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHByZWZpeCArIG5vZGUudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ29wZW4nKSB7XG4gICAgICByZXR1cm4gaW52YWxpZCA/IChwcmVmaXggKyBub2RlLnZhbHVlKSA6ICcoJztcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnY2xvc2UnKSB7XG4gICAgICByZXR1cm4gaW52YWxpZCA/IChwcmVmaXggKyBub2RlLnZhbHVlKSA6ICcpJztcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnY29tbWEnKSB7XG4gICAgICByZXR1cm4gbm9kZS5wcmV2LnR5cGUgPT09ICdjb21tYScgPyAnJyA6IChpbnZhbGlkID8gbm9kZS52YWx1ZSA6ICd8Jyk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudmFsdWUpIHtcbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzICYmIG5vZGUucmFuZ2VzID4gMCkge1xuICAgICAgbGV0IGFyZ3MgPSB1dGlscy5yZWR1Y2Uobm9kZS5ub2Rlcyk7XG4gICAgICBsZXQgcmFuZ2UgPSBmaWxsKC4uLmFyZ3MsIHsgLi4ub3B0aW9ucywgd3JhcDogZmFsc2UsIHRvUmVnZXg6IHRydWUgfSk7XG5cbiAgICAgIGlmIChyYW5nZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoID4gMSAmJiByYW5nZS5sZW5ndGggPiAxID8gYCgke3JhbmdlfSlgIDogcmFuZ2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUubm9kZXMpIHtcbiAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUubm9kZXMpIHtcbiAgICAgICAgb3V0cHV0ICs9IHdhbGsoY2hpbGQsIG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9O1xuXG4gIHJldHVybiB3YWxrKGFzdCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBpbGU7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZpbGwgPSByZXF1aXJlKCdmaWxsLXJhbmdlJyk7XG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IGFwcGVuZCA9IChxdWV1ZSA9ICcnLCBzdGFzaCA9ICcnLCBlbmNsb3NlID0gZmFsc2UpID0+IHtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gIHF1ZXVlID0gW10uY29uY2F0KHF1ZXVlKTtcbiAgc3Rhc2ggPSBbXS5jb25jYXQoc3Rhc2gpO1xuXG4gIGlmICghc3Rhc2gubGVuZ3RoKSByZXR1cm4gcXVldWU7XG4gIGlmICghcXVldWUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UgPyB1dGlscy5mbGF0dGVuKHN0YXNoKS5tYXAoZWxlID0+IGB7JHtlbGV9fWApIDogc3Rhc2g7XG4gIH1cblxuICBmb3IgKGxldCBpdGVtIG9mIHF1ZXVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGZvciAobGV0IHZhbHVlIG9mIGl0ZW0pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYXBwZW5kKHZhbHVlLCBzdGFzaCwgZW5jbG9zZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBlbGUgb2Ygc3Rhc2gpIHtcbiAgICAgICAgaWYgKGVuY2xvc2UgPT09IHRydWUgJiYgdHlwZW9mIGVsZSA9PT0gJ3N0cmluZycpIGVsZSA9IGB7JHtlbGV9fWA7XG4gICAgICAgIHJlc3VsdC5wdXNoKEFycmF5LmlzQXJyYXkoZWxlKSA/IGFwcGVuZChpdGVtLCBlbGUsIGVuY2xvc2UpIDogKGl0ZW0gKyBlbGUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHV0aWxzLmZsYXR0ZW4ocmVzdWx0KTtcbn07XG5cbmNvbnN0IGV4cGFuZCA9IChhc3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgcmFuZ2VMaW1pdCA9IG9wdGlvbnMucmFuZ2VMaW1pdCA9PT0gdm9pZCAwID8gMTAwMCA6IG9wdGlvbnMucmFuZ2VMaW1pdDtcblxuICBsZXQgd2FsayA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgIG5vZGUucXVldWUgPSBbXTtcblxuICAgIGxldCBwID0gcGFyZW50O1xuICAgIGxldCBxID0gcGFyZW50LnF1ZXVlO1xuXG4gICAgd2hpbGUgKHAudHlwZSAhPT0gJ2JyYWNlJyAmJiBwLnR5cGUgIT09ICdyb290JyAmJiBwLnBhcmVudCkge1xuICAgICAgcCA9IHAucGFyZW50O1xuICAgICAgcSA9IHAucXVldWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuaW52YWxpZCB8fCBub2RlLmRvbGxhcikge1xuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBzdHJpbmdpZnkobm9kZSwgb3B0aW9ucykpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnYnJhY2UnICYmIG5vZGUuaW52YWxpZCAhPT0gdHJ1ZSAmJiBub2RlLm5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBbJ3t9J10pKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLnJhbmdlcyA+IDApIHtcbiAgICAgIGxldCBhcmdzID0gdXRpbHMucmVkdWNlKG5vZGUubm9kZXMpO1xuXG4gICAgICBpZiAodXRpbHMuZXhjZWVkc0xpbWl0KC4uLmFyZ3MsIG9wdGlvbnMuc3RlcCwgcmFuZ2VMaW1pdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2V4cGFuZGVkIGFycmF5IGxlbmd0aCBleGNlZWRzIHJhbmdlIGxpbWl0LiBVc2Ugb3B0aW9ucy5yYW5nZUxpbWl0IHRvIGluY3JlYXNlIG9yIGRpc2FibGUgdGhlIGxpbWl0LicpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmFuZ2UgPSBmaWxsKC4uLmFyZ3MsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJhbmdlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByYW5nZSA9IHN0cmluZ2lmeShub2RlLCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCByYW5nZSkpO1xuICAgICAgbm9kZS5ub2RlcyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlbmNsb3NlID0gdXRpbHMuZW5jbG9zZUJyYWNlKG5vZGUpO1xuICAgIGxldCBxdWV1ZSA9IG5vZGUucXVldWU7XG4gICAgbGV0IGJsb2NrID0gbm9kZTtcblxuICAgIHdoaWxlIChibG9jay50eXBlICE9PSAnYnJhY2UnICYmIGJsb2NrLnR5cGUgIT09ICdyb290JyAmJiBibG9jay5wYXJlbnQpIHtcbiAgICAgIGJsb2NrID0gYmxvY2sucGFyZW50O1xuICAgICAgcXVldWUgPSBibG9jay5xdWV1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjaGlsZCA9IG5vZGUubm9kZXNbaV07XG5cbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAnY29tbWEnICYmIG5vZGUudHlwZSA9PT0gJ2JyYWNlJykge1xuICAgICAgICBpZiAoaSA9PT0gMSkgcXVldWUucHVzaCgnJyk7XG4gICAgICAgIHF1ZXVlLnB1c2goJycpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdjbG9zZScpIHtcbiAgICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBxdWV1ZSwgZW5jbG9zZSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkLnZhbHVlICYmIGNoaWxkLnR5cGUgIT09ICdvcGVuJykge1xuICAgICAgICBxdWV1ZS5wdXNoKGFwcGVuZChxdWV1ZS5wb3AoKSwgY2hpbGQudmFsdWUpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZC5ub2Rlcykge1xuICAgICAgICB3YWxrKGNoaWxkLCBub2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcXVldWU7XG4gIH07XG5cbiAgcmV0dXJuIHV0aWxzLmZsYXR0ZW4od2Fsayhhc3QpKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwYW5kO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgTUFYX0xFTkdUSDogMTAyNCAqIDY0LFxuXG4gIC8vIERpZ2l0c1xuICBDSEFSXzA6ICcwJywgLyogMCAqL1xuICBDSEFSXzk6ICc5JywgLyogOSAqL1xuXG4gIC8vIEFscGhhYmV0IGNoYXJzLlxuICBDSEFSX1VQUEVSQ0FTRV9BOiAnQScsIC8qIEEgKi9cbiAgQ0hBUl9MT1dFUkNBU0VfQTogJ2EnLCAvKiBhICovXG4gIENIQVJfVVBQRVJDQVNFX1o6ICdaJywgLyogWiAqL1xuICBDSEFSX0xPV0VSQ0FTRV9aOiAneicsIC8qIHogKi9cblxuICBDSEFSX0xFRlRfUEFSRU5USEVTRVM6ICcoJywgLyogKCAqL1xuICBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTOiAnKScsIC8qICkgKi9cblxuICBDSEFSX0FTVEVSSVNLOiAnKicsIC8qICogKi9cblxuICAvLyBOb24tYWxwaGFiZXRpYyBjaGFycy5cbiAgQ0hBUl9BTVBFUlNBTkQ6ICcmJywgLyogJiAqL1xuICBDSEFSX0FUOiAnQCcsIC8qIEAgKi9cbiAgQ0hBUl9CQUNLU0xBU0g6ICdcXFxcJywgLyogXFwgKi9cbiAgQ0hBUl9CQUNLVElDSzogJ2AnLCAvKiBgICovXG4gIENIQVJfQ0FSUklBR0VfUkVUVVJOOiAnXFxyJywgLyogXFxyICovXG4gIENIQVJfQ0lSQ1VNRkxFWF9BQ0NFTlQ6ICdeJywgLyogXiAqL1xuICBDSEFSX0NPTE9OOiAnOicsIC8qIDogKi9cbiAgQ0hBUl9DT01NQTogJywnLCAvKiAsICovXG4gIENIQVJfRE9MTEFSOiAnJCcsIC8qIC4gKi9cbiAgQ0hBUl9ET1Q6ICcuJywgLyogLiAqL1xuICBDSEFSX0RPVUJMRV9RVU9URTogJ1wiJywgLyogXCIgKi9cbiAgQ0hBUl9FUVVBTDogJz0nLCAvKiA9ICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSzogJyEnLCAvKiAhICovXG4gIENIQVJfRk9STV9GRUVEOiAnXFxmJywgLyogXFxmICovXG4gIENIQVJfRk9SV0FSRF9TTEFTSDogJy8nLCAvKiAvICovXG4gIENIQVJfSEFTSDogJyMnLCAvKiAjICovXG4gIENIQVJfSFlQSEVOX01JTlVTOiAnLScsIC8qIC0gKi9cbiAgQ0hBUl9MRUZUX0FOR0xFX0JSQUNLRVQ6ICc8JywgLyogPCAqL1xuICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0U6ICd7JywgLyogeyAqL1xuICBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQ6ICdbJywgLyogWyAqL1xuICBDSEFSX0xJTkVfRkVFRDogJ1xcbicsIC8qIFxcbiAqL1xuICBDSEFSX05PX0JSRUFLX1NQQUNFOiAnXFx1MDBBMCcsIC8qIFxcdTAwQTAgKi9cbiAgQ0hBUl9QRVJDRU5UOiAnJScsIC8qICUgKi9cbiAgQ0hBUl9QTFVTOiAnKycsIC8qICsgKi9cbiAgQ0hBUl9RVUVTVElPTl9NQVJLOiAnPycsIC8qID8gKi9cbiAgQ0hBUl9SSUdIVF9BTkdMRV9CUkFDS0VUOiAnPicsIC8qID4gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRTogJ30nLCAvKiB9ICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQ6ICddJywgLyogXSAqL1xuICBDSEFSX1NFTUlDT0xPTjogJzsnLCAvKiA7ICovXG4gIENIQVJfU0lOR0xFX1FVT1RFOiAnXFwnJywgLyogJyAqL1xuICBDSEFSX1NQQUNFOiAnICcsIC8qICAgKi9cbiAgQ0hBUl9UQUI6ICdcXHQnLCAvKiBcXHQgKi9cbiAgQ0hBUl9VTkRFUlNDT1JFOiAnXycsIC8qIF8gKi9cbiAgQ0hBUl9WRVJUSUNBTF9MSU5FOiAnfCcsIC8qIHwgKi9cbiAgQ0hBUl9aRVJPX1dJRFRIX05PQlJFQUtfU1BBQ0U6ICdcXHVGRUZGJyAvKiBcXHVGRUZGICovXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IHtcbiAgTUFYX0xFTkdUSCxcbiAgQ0hBUl9CQUNLU0xBU0gsIC8qIFxcICovXG4gIENIQVJfQkFDS1RJQ0ssIC8qIGAgKi9cbiAgQ0hBUl9DT01NQSwgLyogLCAqL1xuICBDSEFSX0RPVCwgLyogLiAqL1xuICBDSEFSX0xFRlRfUEFSRU5USEVTRVMsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUywgLyogKSAqL1xuICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UsIC8qIHsgKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSwgLyogfSAqL1xuICBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQsIC8qIFsgKi9cbiAgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCwgLyogXSAqL1xuICBDSEFSX0RPVUJMRV9RVU9URSwgLyogXCIgKi9cbiAgQ0hBUl9TSU5HTEVfUVVPVEUsIC8qICcgKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRSxcbiAgQ0hBUl9aRVJPX1dJRFRIX05PQlJFQUtfU1BBQ0Vcbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG4vKipcbiAqIHBhcnNlXG4gKi9cblxuY29uc3QgcGFyc2UgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgc3RyaW5nJyk7XG4gIH1cblxuICBsZXQgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGxldCBtYXggPSB0eXBlb2Ygb3B0cy5tYXhMZW5ndGggPT09ICdudW1iZXInID8gTWF0aC5taW4oTUFYX0xFTkdUSCwgb3B0cy5tYXhMZW5ndGgpIDogTUFYX0xFTkdUSDtcbiAgaWYgKGlucHV0Lmxlbmd0aCA+IG1heCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW5wdXQgbGVuZ3RoICgke2lucHV0Lmxlbmd0aH0pLCBleGNlZWRzIG1heCBjaGFyYWN0ZXJzICgke21heH0pYCk7XG4gIH1cblxuICBsZXQgYXN0ID0geyB0eXBlOiAncm9vdCcsIGlucHV0LCBub2RlczogW10gfTtcbiAgbGV0IHN0YWNrID0gW2FzdF07XG4gIGxldCBibG9jayA9IGFzdDtcbiAgbGV0IHByZXYgPSBhc3Q7XG4gIGxldCBicmFja2V0cyA9IDA7XG4gIGxldCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCBkZXB0aCA9IDA7XG4gIGxldCB2YWx1ZTtcbiAgbGV0IG1lbW8gPSB7fTtcblxuICAvKipcbiAgICogSGVscGVyc1xuICAgKi9cblxuICBjb25zdCBhZHZhbmNlID0gKCkgPT4gaW5wdXRbaW5kZXgrK107XG4gIGNvbnN0IHB1c2ggPSBub2RlID0+IHtcbiAgICBpZiAobm9kZS50eXBlID09PSAndGV4dCcgJiYgcHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgcHJldi50eXBlID0gJ3RleHQnO1xuICAgIH1cblxuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ3RleHQnICYmIG5vZGUudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBwcmV2LnZhbHVlICs9IG5vZGUudmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYmxvY2subm9kZXMucHVzaChub2RlKTtcbiAgICBub2RlLnBhcmVudCA9IGJsb2NrO1xuICAgIG5vZGUucHJldiA9IHByZXY7XG4gICAgcHJldiA9IG5vZGU7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH07XG5cbiAgcHVzaCh7IHR5cGU6ICdib3MnIH0pO1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGJsb2NrID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgdmFsdWUgPSBhZHZhbmNlKCk7XG5cbiAgICAvKipcbiAgICAgKiBJbnZhbGlkIGNoYXJzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFIHx8IHZhbHVlID09PSBDSEFSX05PX0JSRUFLX1NQQUNFKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVkIGNoYXJzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZTogKG9wdGlvbnMua2VlcEVzY2FwaW5nID8gdmFsdWUgOiAnJykgKyBhZHZhbmNlKCkgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSaWdodCBzcXVhcmUgYnJhY2tldCAobGl0ZXJhbCk6ICddJ1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZTogJ1xcXFwnICsgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMZWZ0IHNxdWFyZSBicmFja2V0OiAnWydcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICBicmFja2V0cysrO1xuXG4gICAgICBsZXQgY2xvc2VkID0gdHJ1ZTtcbiAgICAgIGxldCBuZXh0O1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgKG5leHQgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIHZhbHVlICs9IG5leHQ7XG5cbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgIGJyYWNrZXRzKys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9CQUNLU0xBU0gpIHtcbiAgICAgICAgICB2YWx1ZSArPSBhZHZhbmNlKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgIGJyYWNrZXRzLS07XG5cbiAgICAgICAgICBpZiAoYnJhY2tldHMgPT09IDApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcmVudGhlc2VzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgYmxvY2sgPSBwdXNoKHsgdHlwZTogJ3BhcmVuJywgbm9kZXM6IFtdIH0pO1xuICAgICAgc3RhY2sucHVzaChibG9jayk7XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUykge1xuICAgICAgaWYgKGJsb2NrLnR5cGUgIT09ICdwYXJlbicpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYmxvY2sgPSBzdGFjay5wb3AoKTtcbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgYmxvY2sgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFF1b3RlczogJ3xcInxgXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfRE9VQkxFX1FVT1RFIHx8IHZhbHVlID09PSBDSEFSX1NJTkdMRV9RVU9URSB8fCB2YWx1ZSA9PT0gQ0hBUl9CQUNLVElDSykge1xuICAgICAgbGV0IG9wZW4gPSB2YWx1ZTtcbiAgICAgIGxldCBuZXh0O1xuXG4gICAgICBpZiAob3B0aW9ucy5rZWVwUXVvdGVzICE9PSB0cnVlKSB7XG4gICAgICAgIHZhbHVlID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCAmJiAobmV4dCA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICAgICAgdmFsdWUgKz0gbmV4dCArIGFkdmFuY2UoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0ID09PSBvcGVuKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMua2VlcFF1b3RlcyA9PT0gdHJ1ZSkgdmFsdWUgKz0gbmV4dDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlICs9IG5leHQ7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGVmdCBjdXJseSBicmFjZTogJ3snXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfTEVGVF9DVVJMWV9CUkFDRSkge1xuICAgICAgZGVwdGgrKztcblxuICAgICAgbGV0IGRvbGxhciA9IHByZXYudmFsdWUgJiYgcHJldi52YWx1ZS5zbGljZSgtMSkgPT09ICckJyB8fCBibG9jay5kb2xsYXIgPT09IHRydWU7XG4gICAgICBsZXQgYnJhY2UgPSB7XG4gICAgICAgIHR5cGU6ICdicmFjZScsXG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIGNsb3NlOiBmYWxzZSxcbiAgICAgICAgZG9sbGFyLFxuICAgICAgICBkZXB0aCxcbiAgICAgICAgY29tbWFzOiAwLFxuICAgICAgICByYW5nZXM6IDAsXG4gICAgICAgIG5vZGVzOiBbXVxuICAgICAgfTtcblxuICAgICAgYmxvY2sgPSBwdXNoKGJyYWNlKTtcbiAgICAgIHN0YWNrLnB1c2goYmxvY2spO1xuICAgICAgcHVzaCh7IHR5cGU6ICdvcGVuJywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSaWdodCBjdXJseSBicmFjZTogJ30nXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgIGlmIChibG9jay50eXBlICE9PSAnYnJhY2UnKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IHR5cGUgPSAnY2xvc2UnO1xuICAgICAgYmxvY2sgPSBzdGFjay5wb3AoKTtcbiAgICAgIGJsb2NrLmNsb3NlID0gdHJ1ZTtcblxuICAgICAgcHVzaCh7IHR5cGUsIHZhbHVlIH0pO1xuICAgICAgZGVwdGgtLTtcblxuICAgICAgYmxvY2sgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1hOiAnLCdcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9DT01NQSAmJiBkZXB0aCA+IDApIHtcbiAgICAgIGlmIChibG9jay5yYW5nZXMgPiAwKSB7XG4gICAgICAgIGJsb2NrLnJhbmdlcyA9IDA7XG4gICAgICAgIGxldCBvcGVuID0gYmxvY2subm9kZXMuc2hpZnQoKTtcbiAgICAgICAgYmxvY2subm9kZXMgPSBbb3BlbiwgeyB0eXBlOiAndGV4dCcsIHZhbHVlOiBzdHJpbmdpZnkoYmxvY2spIH1dO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2NvbW1hJywgdmFsdWUgfSk7XG4gICAgICBibG9jay5jb21tYXMrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvdDogJy4nXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfRE9UICYmIGRlcHRoID4gMCAmJiBibG9jay5jb21tYXMgPT09IDApIHtcbiAgICAgIGxldCBzaWJsaW5ncyA9IGJsb2NrLm5vZGVzO1xuXG4gICAgICBpZiAoZGVwdGggPT09IDAgfHwgc2libGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ2RvdCcpIHtcbiAgICAgICAgYmxvY2sucmFuZ2UgPSBbXTtcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgcHJldi50eXBlID0gJ3JhbmdlJztcblxuICAgICAgICBpZiAoYmxvY2subm9kZXMubGVuZ3RoICE9PSAzICYmIGJsb2NrLm5vZGVzLmxlbmd0aCAhPT0gNSkge1xuICAgICAgICAgIGJsb2NrLmludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJsb2NrLnJhbmdlcyA9IDA7XG4gICAgICAgICAgcHJldi50eXBlID0gJ3RleHQnO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYmxvY2sucmFuZ2VzKys7XG4gICAgICAgIGJsb2NrLmFyZ3MgPSBbXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmV2LnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgc2libGluZ3MucG9wKCk7XG5cbiAgICAgICAgbGV0IGJlZm9yZSA9IHNpYmxpbmdzW3NpYmxpbmdzLmxlbmd0aCAtIDFdO1xuICAgICAgICBiZWZvcmUudmFsdWUgKz0gcHJldi52YWx1ZSArIHZhbHVlO1xuICAgICAgICBwcmV2ID0gYmVmb3JlO1xuICAgICAgICBibG9jay5yYW5nZXMtLTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnZG90JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXh0XG4gICAgICovXG5cbiAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIC8vIE1hcmsgaW1iYWxhbmNlZCBicmFjZXMgYW5kIGJyYWNrZXRzIGFzIGludmFsaWRcbiAgZG8ge1xuICAgIGJsb2NrID0gc3RhY2sucG9wKCk7XG5cbiAgICBpZiAoYmxvY2sudHlwZSAhPT0gJ3Jvb3QnKSB7XG4gICAgICBibG9jay5ub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICBpZiAoIW5vZGUubm9kZXMpIHtcbiAgICAgICAgICBpZiAobm9kZS50eXBlID09PSAnb3BlbicpIG5vZGUuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICBpZiAobm9kZS50eXBlID09PSAnY2xvc2UnKSBub2RlLmlzQ2xvc2UgPSB0cnVlO1xuICAgICAgICAgIGlmICghbm9kZS5ub2Rlcykgbm9kZS50eXBlID0gJ3RleHQnO1xuICAgICAgICAgIG5vZGUuaW52YWxpZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBnZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBibG9jayBvbiBwYXJlbnQubm9kZXMgKGJsb2NrJ3Mgc2libGluZ3MpXG4gICAgICBsZXQgcGFyZW50ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICBsZXQgaW5kZXggPSBwYXJlbnQubm9kZXMuaW5kZXhPZihibG9jayk7XG4gICAgICAvLyByZXBsYWNlIHRoZSAoaW52YWxpZCkgYmxvY2sgd2l0aCBpdCdzIG5vZGVzXG4gICAgICBwYXJlbnQubm9kZXMuc3BsaWNlKGluZGV4LCAxLCAuLi5ibG9jay5ub2Rlcyk7XG4gICAgfVxuICB9IHdoaWxlIChzdGFjay5sZW5ndGggPiAwKTtcblxuICBwdXNoKHsgdHlwZTogJ2VvcycgfSk7XG4gIHJldHVybiBhc3Q7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL2xpYi9zdHJpbmdpZnknKTtcbmNvbnN0IGNvbXBpbGUgPSByZXF1aXJlKCcuL2xpYi9jb21waWxlJyk7XG5jb25zdCBleHBhbmQgPSByZXF1aXJlKCcuL2xpYi9leHBhbmQnKTtcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9saWIvcGFyc2UnKTtcblxuLyoqXG4gKiBFeHBhbmQgdGhlIGdpdmVuIHBhdHRlcm4gb3IgY3JlYXRlIGEgcmVnZXgtY29tcGF0aWJsZSBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuICogY29uc29sZS5sb2coYnJhY2VzKCd7YSxiLGN9JywgeyBjb21waWxlOiB0cnVlIH0pKTsgLy89PiBbJyhhfGJ8YyknXVxuICogY29uc29sZS5sb2coYnJhY2VzKCd7YSxiLGN9JykpOyAvLz0+IFsnYScsICdiJywgJ2MnXVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHN0cmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuY29uc3QgYnJhY2VzID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IG91dHB1dCA9IFtdO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgIGZvciAobGV0IHBhdHRlcm4gb2YgaW5wdXQpIHtcbiAgICAgIGxldCByZXN1bHQgPSBicmFjZXMuY3JlYXRlKHBhdHRlcm4sIG9wdGlvbnMpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICBvdXRwdXQucHVzaCguLi5yZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0ID0gW10uY29uY2F0KGJyYWNlcy5jcmVhdGUoaW5wdXQsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZXhwYW5kID09PSB0cnVlICYmIG9wdGlvbnMubm9kdXBlcyA9PT0gdHJ1ZSkge1xuICAgIG91dHB1dCA9IFsuLi5uZXcgU2V0KG91dHB1dCldO1xuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBgc3RyYCB3aXRoIHRoZSBnaXZlbiBgb3B0aW9uc2AuXG4gKlxuICogYGBganNcbiAqIC8vIGJyYWNlcy5wYXJzZShwYXR0ZXJuLCBbLCBvcHRpb25zXSk7XG4gKiBjb25zdCBhc3QgPSBicmFjZXMucGFyc2UoJ2Eve2IsY30vZCcpO1xuICogY29uc29sZS5sb2coYXN0KTtcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gQnJhY2UgcGF0dGVybiB0byBwYXJzZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBBU1RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuYnJhY2VzLnBhcnNlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHBhcnNlKGlucHV0LCBvcHRpb25zKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYnJhY2VzIHN0cmluZyBmcm9tIGFuIEFTVCwgb3IgYW4gQVNUIG5vZGUuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuICogbGV0IGFzdCA9IGJyYWNlcy5wYXJzZSgnZm9vL3thLGJ9L2JhcicpO1xuICogY29uc29sZS5sb2coc3RyaW5naWZ5KGFzdC5ub2Rlc1syXSkpOyAvLz0+ICd7YSxifSdcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBpbnB1dGAgQnJhY2UgcGF0dGVybiBvciBBU1QuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5zdHJpbmdpZnkgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHJpbmdpZnkoYnJhY2VzLnBhcnNlKGlucHV0LCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIHN0cmluZ2lmeShpbnB1dCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIENvbXBpbGVzIGEgYnJhY2UgcGF0dGVybiBpbnRvIGEgcmVnZXgtY29tcGF0aWJsZSwgb3B0aW1pemVkIHN0cmluZy5cbiAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgbWFpbiBbYnJhY2VzXSgjYnJhY2VzKSBmdW5jdGlvbiBieSBkZWZhdWx0LlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGNvbnNvbGUubG9nKGJyYWNlcy5jb21waWxlKCdhL3tiLGN9L2QnKSk7XG4gKiAvLz0+IFsnYS8oYnxjKS9kJ11cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBpbnB1dGAgQnJhY2UgcGF0dGVybiBvciBBU1QuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5jb21waWxlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBpbnB1dCA9IGJyYWNlcy5wYXJzZShpbnB1dCwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBFeHBhbmRzIGEgYnJhY2UgcGF0dGVybiBpbnRvIGFuIGFycmF5LiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlXG4gKiBtYWluIFticmFjZXNdKCNicmFjZXMpIGZ1bmN0aW9uIHdoZW4gYG9wdGlvbnMuZXhwYW5kYCBpcyB0cnVlLiBCZWZvcmVcbiAqIHVzaW5nIHRoaXMgbWV0aG9kIGl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVhZCB0aGUgW3BlcmZvcm1hbmNlIG5vdGVzXSgjcGVyZm9ybWFuY2UpKVxuICogYW5kIGFkdmFudGFnZXMgb2YgdXNpbmcgWy5jb21waWxlXSgjY29tcGlsZSkgaW5zdGVhZC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYnJhY2VzID0gcmVxdWlyZSgnYnJhY2VzJyk7XG4gKiBjb25zb2xlLmxvZyhicmFjZXMuZXhwYW5kKCdhL3tiLGN9L2QnKSk7XG4gKiAvLz0+IFsnYS9iL2QnLCAnYS9jL2QnXTtcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBCcmFjZSBwYXR0ZXJuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5leHBhbmQgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGlucHV0ID0gYnJhY2VzLnBhcnNlKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIGxldCByZXN1bHQgPSBleHBhbmQoaW5wdXQsIG9wdGlvbnMpO1xuXG4gIC8vIGZpbHRlciBvdXQgZW1wdHkgc3RyaW5ncyBpZiBzcGVjaWZpZWRcbiAgaWYgKG9wdGlvbnMubm9lbXB0eSA9PT0gdHJ1ZSkge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICAvLyBmaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgc3BlY2lmaWVkXG4gIGlmIChvcHRpb25zLm5vZHVwZXMgPT09IHRydWUpIHtcbiAgICByZXN1bHQgPSBbLi4ubmV3IFNldChyZXN1bHQpXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGJyYWNlIHBhdHRlcm4gYW5kIHJldHVybnMgZWl0aGVyIGFuIGV4cGFuZGVkIGFycmF5XG4gKiAoaWYgYG9wdGlvbnMuZXhwYW5kYCBpcyB0cnVlKSwgYSBoaWdobHkgb3B0aW1pemVkIHJlZ2V4LWNvbXBhdGlibGUgc3RyaW5nLlxuICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBtYWluIFticmFjZXNdKCNicmFjZXMpIGZ1bmN0aW9uLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGNvbnNvbGUubG9nKGJyYWNlcy5jcmVhdGUoJ3VzZXItezIwMC4uMzAwfS9wcm9qZWN0LXthLGIsY30tezEuLjEwfScpKVxuICogLy89PiAndXNlci0oMjBbMC05XXwyWzEtOV1bMC05XXwzMDApL3Byb2plY3QtKGF8YnxjKS0oWzEtOV18MTApJ1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHBhdHRlcm5gIEJyYWNlIHBhdHRlcm5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIGFuIGFycmF5IG9mIGV4cGFuZGVkIHZhbHVlcy5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuYnJhY2VzLmNyZWF0ZSA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmIChpbnB1dCA9PT0gJycgfHwgaW5wdXQubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiBbaW5wdXRdO1xuICB9XG5cbiByZXR1cm4gb3B0aW9ucy5leHBhbmQgIT09IHRydWVcbiAgICA/IGJyYWNlcy5jb21waWxlKGlucHV0LCBvcHRpb25zKVxuICAgIDogYnJhY2VzLmV4cGFuZChpbnB1dCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBcImJyYWNlc1wiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBicmFjZXM7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vYmluYXJ5LWV4dGVuc2lvbnMuanNvbicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IGJpbmFyeUV4dGVuc2lvbnMgPSByZXF1aXJlKCdiaW5hcnktZXh0ZW5zaW9ucycpO1xuXG5jb25zdCBleHRlbnNpb25zID0gbmV3IFNldChiaW5hcnlFeHRlbnNpb25zKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaWxlUGF0aCA9PiBleHRlbnNpb25zLmhhcyhwYXRoLmV4dG5hbWUoZmlsZVBhdGgpLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB7c2VwfSA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHtwbGF0Zm9ybX0gPSBwcm9jZXNzO1xuXG5leHBvcnRzLkVWX0FMTCA9ICdhbGwnO1xuZXhwb3J0cy5FVl9SRUFEWSA9ICdyZWFkeSc7XG5leHBvcnRzLkVWX0FERCA9ICdhZGQnO1xuZXhwb3J0cy5FVl9DSEFOR0UgPSAnY2hhbmdlJztcbmV4cG9ydHMuRVZfQUREX0RJUiA9ICdhZGREaXInO1xuZXhwb3J0cy5FVl9VTkxJTksgPSAndW5saW5rJztcbmV4cG9ydHMuRVZfVU5MSU5LX0RJUiA9ICd1bmxpbmtEaXInO1xuZXhwb3J0cy5FVl9SQVcgPSAncmF3JztcbmV4cG9ydHMuRVZfRVJST1IgPSAnZXJyb3InO1xuXG5leHBvcnRzLlNUUl9EQVRBID0gJ2RhdGEnO1xuZXhwb3J0cy5TVFJfRU5EID0gJ2VuZCc7XG5leHBvcnRzLlNUUl9DTE9TRSA9ICdjbG9zZSc7XG5cbmV4cG9ydHMuRlNFVkVOVF9DUkVBVEVEID0gJ2NyZWF0ZWQnO1xuZXhwb3J0cy5GU0VWRU5UX01PRElGSUVEID0gJ21vZGlmaWVkJztcbmV4cG9ydHMuRlNFVkVOVF9ERUxFVEVEID0gJ2RlbGV0ZWQnO1xuZXhwb3J0cy5GU0VWRU5UX01PVkVEID0gJ21vdmVkJztcbmV4cG9ydHMuRlNFVkVOVF9DTE9ORUQgPSAnY2xvbmVkJztcbmV4cG9ydHMuRlNFVkVOVF9VTktOT1dOID0gJ3Vua25vd24nO1xuZXhwb3J0cy5GU0VWRU5UX1RZUEVfRklMRSA9ICdmaWxlJztcbmV4cG9ydHMuRlNFVkVOVF9UWVBFX0RJUkVDVE9SWSA9ICdkaXJlY3RvcnknO1xuZXhwb3J0cy5GU0VWRU5UX1RZUEVfU1lNTElOSyA9ICdzeW1saW5rJztcblxuZXhwb3J0cy5LRVlfTElTVEVORVJTID0gJ2xpc3RlbmVycyc7XG5leHBvcnRzLktFWV9FUlIgPSAnZXJySGFuZGxlcnMnO1xuZXhwb3J0cy5LRVlfUkFXID0gJ3Jhd0VtaXR0ZXJzJztcbmV4cG9ydHMuSEFORExFUl9LRVlTID0gW2V4cG9ydHMuS0VZX0xJU1RFTkVSUywgZXhwb3J0cy5LRVlfRVJSLCBleHBvcnRzLktFWV9SQVddO1xuXG5leHBvcnRzLkRPVF9TTEFTSCA9IGAuJHtzZXB9YDtcblxuZXhwb3J0cy5CQUNLX1NMQVNIX1JFID0gL1xcXFwvZztcbmV4cG9ydHMuRE9VQkxFX1NMQVNIX1JFID0gL1xcL1xcLy87XG5leHBvcnRzLlNMQVNIX09SX0JBQ0tfU0xBU0hfUkUgPSAvWy9cXFxcXS87XG5leHBvcnRzLkRPVF9SRSA9IC9cXC4uKlxcLihzd1tweF0pJHx+JHxcXC5zdWJsLipcXC50bXAvO1xuZXhwb3J0cy5SRVBMQUNFUl9SRSA9IC9eXFwuWy9cXFxcXS87XG5cbmV4cG9ydHMuU0xBU0ggPSAnLyc7XG5leHBvcnRzLlNMQVNIX1NMQVNIID0gJy8vJztcbmV4cG9ydHMuQlJBQ0VfU1RBUlQgPSAneyc7XG5leHBvcnRzLkJBTkcgPSAnISc7XG5leHBvcnRzLk9ORV9ET1QgPSAnLic7XG5leHBvcnRzLlRXT19ET1RTID0gJy4uJztcbmV4cG9ydHMuU1RBUiA9ICcqJztcbmV4cG9ydHMuR0xPQlNUQVIgPSAnKionO1xuZXhwb3J0cy5ST09UX0dMT0JTVEFSID0gJy8qKi8qJztcbmV4cG9ydHMuU0xBU0hfR0xPQlNUQVIgPSAnLyoqJztcbmV4cG9ydHMuRElSX1NVRkZJWCA9ICdEaXInO1xuZXhwb3J0cy5BTllNQVRDSF9PUFRTID0ge2RvdDogdHJ1ZX07XG5leHBvcnRzLlNUUklOR19UWVBFID0gJ3N0cmluZyc7XG5leHBvcnRzLkZVTkNUSU9OX1RZUEUgPSAnZnVuY3Rpb24nO1xuZXhwb3J0cy5FTVBUWV9TVFIgPSAnJztcbmV4cG9ydHMuRU1QVFlfRk4gPSAoKSA9PiB7fTtcbmV4cG9ydHMuSURFTlRJVFlfRk4gPSB2YWwgPT4gdmFsO1xuXG5leHBvcnRzLmlzV2luZG93cyA9IHBsYXRmb3JtID09PSAnd2luMzInO1xuZXhwb3J0cy5pc01hY29zID0gcGxhdGZvcm0gPT09ICdkYXJ3aW4nO1xuZXhwb3J0cy5pc0xpbnV4ID0gcGxhdGZvcm0gPT09ICdsaW51eCc7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHN5c1BhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB7IHByb21pc2lmeSB9ID0gcmVxdWlyZSgndXRpbCcpO1xuY29uc3QgaXNCaW5hcnlQYXRoID0gcmVxdWlyZSgnaXMtYmluYXJ5LXBhdGgnKTtcbmNvbnN0IHtcbiAgaXNXaW5kb3dzLFxuICBpc0xpbnV4LFxuICBFTVBUWV9GTixcbiAgRU1QVFlfU1RSLFxuICBLRVlfTElTVEVORVJTLFxuICBLRVlfRVJSLFxuICBLRVlfUkFXLFxuICBIQU5ETEVSX0tFWVMsXG4gIEVWX0NIQU5HRSxcbiAgRVZfQURELFxuICBFVl9BRERfRElSLFxuICBFVl9FUlJPUixcbiAgU1RSX0RBVEEsXG4gIFNUUl9FTkQsXG4gIEJSQUNFX1NUQVJULFxuICBTVEFSXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcblxuY29uc3QgVEhST1RUTEVfTU9ERV9XQVRDSCA9ICd3YXRjaCc7XG5cbmNvbnN0IG9wZW4gPSBwcm9taXNpZnkoZnMub3Blbik7XG5jb25zdCBzdGF0ID0gcHJvbWlzaWZ5KGZzLnN0YXQpO1xuY29uc3QgbHN0YXQgPSBwcm9taXNpZnkoZnMubHN0YXQpO1xuY29uc3QgY2xvc2UgPSBwcm9taXNpZnkoZnMuY2xvc2UpO1xuY29uc3QgZnNyZWFscGF0aCA9IHByb21pc2lmeShmcy5yZWFscGF0aCk7XG5cbmNvbnN0IHN0YXRNZXRob2RzID0geyBsc3RhdCwgc3RhdCB9O1xuXG4vLyBUT0RPOiBlbWl0IGVycm9ycyBwcm9wZXJseS4gRXhhbXBsZTogRU1GSUxFIG9uIE1hY29zLlxuY29uc3QgZm9yZWFjaCA9ICh2YWwsIGZuKSA9PiB7XG4gIGlmICh2YWwgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICB2YWwuZm9yRWFjaChmbik7XG4gIH0gZWxzZSB7XG4gICAgZm4odmFsKTtcbiAgfVxufTtcblxuY29uc3QgYWRkQW5kQ29udmVydCA9IChtYWluLCBwcm9wLCBpdGVtKSA9PiB7XG4gIGxldCBjb250YWluZXIgPSBtYWluW3Byb3BdO1xuICBpZiAoIShjb250YWluZXIgaW5zdGFuY2VvZiBTZXQpKSB7XG4gICAgbWFpbltwcm9wXSA9IGNvbnRhaW5lciA9IG5ldyBTZXQoW2NvbnRhaW5lcl0pO1xuICB9XG4gIGNvbnRhaW5lci5hZGQoaXRlbSk7XG59O1xuXG5jb25zdCBjbGVhckl0ZW0gPSBjb250ID0+IGtleSA9PiB7XG4gIGNvbnN0IHNldCA9IGNvbnRba2V5XTtcbiAgaWYgKHNldCBpbnN0YW5jZW9mIFNldCkge1xuICAgIHNldC5jbGVhcigpO1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBjb250W2tleV07XG4gIH1cbn07XG5cbmNvbnN0IGRlbEZyb21TZXQgPSAobWFpbiwgcHJvcCwgaXRlbSkgPT4ge1xuICBjb25zdCBjb250YWluZXIgPSBtYWluW3Byb3BdO1xuICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgY29udGFpbmVyLmRlbGV0ZShpdGVtKTtcbiAgfSBlbHNlIGlmIChjb250YWluZXIgPT09IGl0ZW0pIHtcbiAgICBkZWxldGUgbWFpbltwcm9wXTtcbiAgfVxufTtcblxuY29uc3QgaXNFbXB0eVNldCA9ICh2YWwpID0+IHZhbCBpbnN0YW5jZW9mIFNldCA/IHZhbC5zaXplID09PSAwIDogIXZhbDtcblxuLyoqXG4gKiBAdHlwZWRlZiB7U3RyaW5nfSBQYXRoXG4gKi9cblxuLy8gZnNfd2F0Y2ggaGVscGVyc1xuXG4vLyBvYmplY3QgdG8gaG9sZCBwZXItcHJvY2VzcyBmc193YXRjaCBpbnN0YW5jZXNcbi8vIChtYXkgYmUgc2hhcmVkIGFjcm9zcyBjaG9raWRhciBGU1dhdGNoZXIgaW5zdGFuY2VzKVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZzV2F0Y2hDb250YWluZXJcbiAqIEBwcm9wZXJ0eSB7U2V0fSBsaXN0ZW5lcnNcbiAqIEBwcm9wZXJ0eSB7U2V0fSBlcnJIYW5kbGVyc1xuICogQHByb3BlcnR5IHtTZXR9IHJhd0VtaXR0ZXJzXG4gKiBAcHJvcGVydHkge2ZzLkZTV2F0Y2hlcj19IHdhdGNoZXJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbj19IHdhdGNoZXJVbnVzYWJsZVxuICovXG5cbi8qKlxuICogQHR5cGUge01hcDxTdHJpbmcsRnNXYXRjaENvbnRhaW5lcj59XG4gKi9cbmNvbnN0IEZzV2F0Y2hJbnN0YW5jZXMgPSBuZXcgTWFwKCk7XG5cbi8qKlxuICogSW5zdGFudGlhdGVzIHRoZSBmc193YXRjaCBpbnRlcmZhY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoIHRvIGJlIHdhdGNoZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byBmc193YXRjaFxuICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgbWFpbiBldmVudCBoYW5kbGVyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcnJIYW5kbGVyIGVtaXRzIGluZm8gYWJvdXQgZXJyb3JzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlbWl0UmF3IGVtaXRzIHJhdyBldmVudCBkYXRhXG4gKiBAcmV0dXJucyB7ZnMuRlNXYXRjaGVyfSBuZXcgZnNldmVudHMgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRnNXYXRjaEluc3RhbmNlKHBhdGgsIG9wdGlvbnMsIGxpc3RlbmVyLCBlcnJIYW5kbGVyLCBlbWl0UmF3KSB7XG4gIGNvbnN0IGhhbmRsZUV2ZW50ID0gKHJhd0V2ZW50LCBldlBhdGgpID0+IHtcbiAgICBsaXN0ZW5lcihwYXRoKTtcbiAgICBlbWl0UmF3KHJhd0V2ZW50LCBldlBhdGgsIHt3YXRjaGVkUGF0aDogcGF0aH0pO1xuXG4gICAgLy8gZW1pdCBiYXNlZCBvbiBldmVudHMgb2NjdXJyaW5nIGZvciBmaWxlcyBmcm9tIGEgZGlyZWN0b3J5J3Mgd2F0Y2hlciBpblxuICAgIC8vIGNhc2UgdGhlIGZpbGUncyB3YXRjaGVyIG1pc3NlcyBpdCAoYW5kIHJlbHkgb24gdGhyb3R0bGluZyB0byBkZS1kdXBlKVxuICAgIGlmIChldlBhdGggJiYgcGF0aCAhPT0gZXZQYXRoKSB7XG4gICAgICBmc1dhdGNoQnJvYWRjYXN0KFxuICAgICAgICBzeXNQYXRoLnJlc29sdmUocGF0aCwgZXZQYXRoKSwgS0VZX0xJU1RFTkVSUywgc3lzUGF0aC5qb2luKHBhdGgsIGV2UGF0aClcbiAgICAgICk7XG4gICAgfVxuICB9O1xuICB0cnkge1xuICAgIHJldHVybiBmcy53YXRjaChwYXRoLCBvcHRpb25zLCBoYW5kbGVFdmVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZXJySGFuZGxlcihlcnJvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZm9yIHBhc3NpbmcgZnNfd2F0Y2ggZXZlbnQgZGF0YSB0byBhIGNvbGxlY3Rpb24gb2YgbGlzdGVuZXJzXG4gKiBAcGFyYW0ge1BhdGh9IGZ1bGxQYXRoIGFic29sdXRlIHBhdGggYm91bmQgdG8gZnNfd2F0Y2ggaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIGxpc3RlbmVyIHR5cGVcbiAqIEBwYXJhbSB7Kj19IHZhbDEgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byBsaXN0ZW5lcnNcbiAqIEBwYXJhbSB7Kj19IHZhbDJcbiAqIEBwYXJhbSB7Kj19IHZhbDNcbiAqL1xuY29uc3QgZnNXYXRjaEJyb2FkY2FzdCA9IChmdWxsUGF0aCwgdHlwZSwgdmFsMSwgdmFsMiwgdmFsMykgPT4ge1xuICBjb25zdCBjb250ID0gRnNXYXRjaEluc3RhbmNlcy5nZXQoZnVsbFBhdGgpO1xuICBpZiAoIWNvbnQpIHJldHVybjtcbiAgZm9yZWFjaChjb250W3R5cGVdLCAobGlzdGVuZXIpID0+IHtcbiAgICBsaXN0ZW5lcih2YWwxLCB2YWwyLCB2YWwzKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEluc3RhbnRpYXRlcyB0aGUgZnNfd2F0Y2ggaW50ZXJmYWNlIG9yIGJpbmRzIGxpc3RlbmVyc1xuICogdG8gYW4gZXhpc3Rpbmcgb25lIGNvdmVyaW5nIHRoZSBzYW1lIGZpbGUgc3lzdGVtIGVudHJ5XG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHBhcmFtIHtTdHJpbmd9IGZ1bGxQYXRoIGFic29sdXRlIHBhdGhcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byBmc193YXRjaFxuICogQHBhcmFtIHtPYmplY3R9IGhhbmRsZXJzIGNvbnRhaW5lciBmb3IgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zXG4gKi9cbmNvbnN0IHNldEZzV2F0Y2hMaXN0ZW5lciA9IChwYXRoLCBmdWxsUGF0aCwgb3B0aW9ucywgaGFuZGxlcnMpID0+IHtcbiAgY29uc3Qge2xpc3RlbmVyLCBlcnJIYW5kbGVyLCByYXdFbWl0dGVyfSA9IGhhbmRsZXJzO1xuICBsZXQgY29udCA9IEZzV2F0Y2hJbnN0YW5jZXMuZ2V0KGZ1bGxQYXRoKTtcblxuICAvKiogQHR5cGUge2ZzLkZTV2F0Y2hlcj19ICovXG4gIGxldCB3YXRjaGVyO1xuICBpZiAoIW9wdGlvbnMucGVyc2lzdGVudCkge1xuICAgIHdhdGNoZXIgPSBjcmVhdGVGc1dhdGNoSW5zdGFuY2UoXG4gICAgICBwYXRoLCBvcHRpb25zLCBsaXN0ZW5lciwgZXJySGFuZGxlciwgcmF3RW1pdHRlclxuICAgICk7XG4gICAgcmV0dXJuIHdhdGNoZXIuY2xvc2UuYmluZCh3YXRjaGVyKTtcbiAgfVxuICBpZiAoY29udCkge1xuICAgIGFkZEFuZENvbnZlcnQoY29udCwgS0VZX0xJU1RFTkVSUywgbGlzdGVuZXIpO1xuICAgIGFkZEFuZENvbnZlcnQoY29udCwgS0VZX0VSUiwgZXJySGFuZGxlcik7XG4gICAgYWRkQW5kQ29udmVydChjb250LCBLRVlfUkFXLCByYXdFbWl0dGVyKTtcbiAgfSBlbHNlIHtcbiAgICB3YXRjaGVyID0gY3JlYXRlRnNXYXRjaEluc3RhbmNlKFxuICAgICAgcGF0aCxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBmc1dhdGNoQnJvYWRjYXN0LmJpbmQobnVsbCwgZnVsbFBhdGgsIEtFWV9MSVNURU5FUlMpLFxuICAgICAgZXJySGFuZGxlciwgLy8gbm8gbmVlZCB0byB1c2UgYnJvYWRjYXN0IGhlcmVcbiAgICAgIGZzV2F0Y2hCcm9hZGNhc3QuYmluZChudWxsLCBmdWxsUGF0aCwgS0VZX1JBVylcbiAgICApO1xuICAgIGlmICghd2F0Y2hlcikgcmV0dXJuO1xuICAgIHdhdGNoZXIub24oRVZfRVJST1IsIGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgYnJvYWRjYXN0RXJyID0gZnNXYXRjaEJyb2FkY2FzdC5iaW5kKG51bGwsIGZ1bGxQYXRoLCBLRVlfRVJSKTtcbiAgICAgIGNvbnQud2F0Y2hlclVudXNhYmxlID0gdHJ1ZTsgLy8gZG9jdW1lbnRlZCBzaW5jZSBOb2RlIDEwLjQuMVxuICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2pveWVudC9ub2RlL2lzc3Vlcy80MzM3XG4gICAgICBpZiAoaXNXaW5kb3dzICYmIGVycm9yLmNvZGUgPT09ICdFUEVSTScpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBmZCA9IGF3YWl0IG9wZW4ocGF0aCwgJ3InKTtcbiAgICAgICAgICBhd2FpdCBjbG9zZShmZCk7XG4gICAgICAgICAgYnJvYWRjYXN0RXJyKGVycm9yKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJvYWRjYXN0RXJyKGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb250ID0ge1xuICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcixcbiAgICAgIGVyckhhbmRsZXJzOiBlcnJIYW5kbGVyLFxuICAgICAgcmF3RW1pdHRlcnM6IHJhd0VtaXR0ZXIsXG4gICAgICB3YXRjaGVyXG4gICAgfTtcbiAgICBGc1dhdGNoSW5zdGFuY2VzLnNldChmdWxsUGF0aCwgY29udCk7XG4gIH1cbiAgLy8gY29uc3QgaW5kZXggPSBjb250Lmxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAvLyByZW1vdmVzIHRoaXMgaW5zdGFuY2UncyBsaXN0ZW5lcnMgYW5kIGNsb3NlcyB0aGUgdW5kZXJseWluZyBmc193YXRjaFxuICAvLyBpbnN0YW5jZSBpZiB0aGVyZSBhcmUgbm8gbW9yZSBsaXN0ZW5lcnMgbGVmdFxuICByZXR1cm4gKCkgPT4ge1xuICAgIGRlbEZyb21TZXQoY29udCwgS0VZX0xJU1RFTkVSUywgbGlzdGVuZXIpO1xuICAgIGRlbEZyb21TZXQoY29udCwgS0VZX0VSUiwgZXJySGFuZGxlcik7XG4gICAgZGVsRnJvbVNldChjb250LCBLRVlfUkFXLCByYXdFbWl0dGVyKTtcbiAgICBpZiAoaXNFbXB0eVNldChjb250Lmxpc3RlbmVycykpIHtcbiAgICAgIC8vIENoZWNrIHRvIHByb3RlY3QgYWdhaW5zdCBpc3N1ZSBnaC03MzAuXG4gICAgICAvLyBpZiAoY29udC53YXRjaGVyVW51c2FibGUpIHtcbiAgICAgIGNvbnQud2F0Y2hlci5jbG9zZSgpO1xuICAgICAgLy8gfVxuICAgICAgRnNXYXRjaEluc3RhbmNlcy5kZWxldGUoZnVsbFBhdGgpO1xuICAgICAgSEFORExFUl9LRVlTLmZvckVhY2goY2xlYXJJdGVtKGNvbnQpKTtcbiAgICAgIGNvbnQud2F0Y2hlciA9IHVuZGVmaW5lZDtcbiAgICAgIE9iamVjdC5mcmVlemUoY29udCk7XG4gICAgfVxuICB9O1xufTtcblxuLy8gZnNfd2F0Y2hGaWxlIGhlbHBlcnNcblxuLy8gb2JqZWN0IHRvIGhvbGQgcGVyLXByb2Nlc3MgZnNfd2F0Y2hGaWxlIGluc3RhbmNlc1xuLy8gKG1heSBiZSBzaGFyZWQgYWNyb3NzIGNob2tpZGFyIEZTV2F0Y2hlciBpbnN0YW5jZXMpXG5jb25zdCBGc1dhdGNoRmlsZUluc3RhbmNlcyA9IG5ldyBNYXAoKTtcblxuLyoqXG4gKiBJbnN0YW50aWF0ZXMgdGhlIGZzX3dhdGNoRmlsZSBpbnRlcmZhY2Ugb3IgYmluZHMgbGlzdGVuZXJzXG4gKiB0byBhbiBleGlzdGluZyBvbmUgY292ZXJpbmcgdGhlIHNhbWUgZmlsZSBzeXN0ZW0gZW50cnlcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoIHRvIGJlIHdhdGNoZWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBmdWxsUGF0aCBhYnNvbHV0ZSBwYXRoXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byBmc193YXRjaEZpbGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYW5kbGVycyBjb250YWluZXIgZm9yIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uc1xuICogQHJldHVybnMge0Z1bmN0aW9ufSBjbG9zZXJcbiAqL1xuY29uc3Qgc2V0RnNXYXRjaEZpbGVMaXN0ZW5lciA9IChwYXRoLCBmdWxsUGF0aCwgb3B0aW9ucywgaGFuZGxlcnMpID0+IHtcbiAgY29uc3Qge2xpc3RlbmVyLCByYXdFbWl0dGVyfSA9IGhhbmRsZXJzO1xuICBsZXQgY29udCA9IEZzV2F0Y2hGaWxlSW5zdGFuY2VzLmdldChmdWxsUGF0aCk7XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMsIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4gIGxldCBsaXN0ZW5lcnMgPSBuZXcgU2V0KCk7XG4gIGxldCByYXdFbWl0dGVycyA9IG5ldyBTZXQoKTtcblxuICBjb25zdCBjb3B0cyA9IGNvbnQgJiYgY29udC5vcHRpb25zO1xuICBpZiAoY29wdHMgJiYgKGNvcHRzLnBlcnNpc3RlbnQgPCBvcHRpb25zLnBlcnNpc3RlbnQgfHwgY29wdHMuaW50ZXJ2YWwgPiBvcHRpb25zLmludGVydmFsKSkge1xuICAgIC8vIFwiVXBncmFkZVwiIHRoZSB3YXRjaGVyIHRvIHBlcnNpc3RlbmNlIG9yIGEgcXVpY2tlciBpbnRlcnZhbC5cbiAgICAvLyBUaGlzIGNyZWF0ZXMgc29tZSB1bmxpa2VseSBlZGdlIGNhc2UgaXNzdWVzIGlmIHRoZSB1c2VyIG1peGVzXG4gICAgLy8gc2V0dGluZ3MgaW4gYSB2ZXJ5IHdlaXJkIHdheSwgYnV0IHNvbHZpbmcgZm9yIHRob3NlIGNhc2VzXG4gICAgLy8gZG9lc24ndCBzZWVtIHdvcnRod2hpbGUgZm9yIHRoZSBhZGRlZCBjb21wbGV4aXR5LlxuICAgIGxpc3RlbmVycyA9IGNvbnQubGlzdGVuZXJzO1xuICAgIHJhd0VtaXR0ZXJzID0gY29udC5yYXdFbWl0dGVycztcbiAgICBmcy51bndhdGNoRmlsZShmdWxsUGF0aCk7XG4gICAgY29udCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMsIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG5cbiAgaWYgKGNvbnQpIHtcbiAgICBhZGRBbmRDb252ZXJ0KGNvbnQsIEtFWV9MSVNURU5FUlMsIGxpc3RlbmVyKTtcbiAgICBhZGRBbmRDb252ZXJ0KGNvbnQsIEtFWV9SQVcsIHJhd0VtaXR0ZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE9cbiAgICAvLyBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICAvLyByYXdFbWl0dGVycy5hZGQocmF3RW1pdHRlcik7XG4gICAgY29udCA9IHtcbiAgICAgIGxpc3RlbmVyczogbGlzdGVuZXIsXG4gICAgICByYXdFbWl0dGVyczogcmF3RW1pdHRlcixcbiAgICAgIG9wdGlvbnMsXG4gICAgICB3YXRjaGVyOiBmcy53YXRjaEZpbGUoZnVsbFBhdGgsIG9wdGlvbnMsIChjdXJyLCBwcmV2KSA9PiB7XG4gICAgICAgIGZvcmVhY2goY29udC5yYXdFbWl0dGVycywgKHJhd0VtaXR0ZXIpID0+IHtcbiAgICAgICAgICByYXdFbWl0dGVyKEVWX0NIQU5HRSwgZnVsbFBhdGgsIHtjdXJyLCBwcmV2fSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjdXJybXRpbWUgPSBjdXJyLm10aW1lTXM7XG4gICAgICAgIGlmIChjdXJyLnNpemUgIT09IHByZXYuc2l6ZSB8fCBjdXJybXRpbWUgPiBwcmV2Lm10aW1lTXMgfHwgY3Vycm10aW1lID09PSAwKSB7XG4gICAgICAgICAgZm9yZWFjaChjb250Lmxpc3RlbmVycywgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihwYXRoLCBjdXJyKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfTtcbiAgICBGc1dhdGNoRmlsZUluc3RhbmNlcy5zZXQoZnVsbFBhdGgsIGNvbnQpO1xuICB9XG4gIC8vIGNvbnN0IGluZGV4ID0gY29udC5saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG5cbiAgLy8gUmVtb3ZlcyB0aGlzIGluc3RhbmNlJ3MgbGlzdGVuZXJzIGFuZCBjbG9zZXMgdGhlIHVuZGVybHlpbmcgZnNfd2F0Y2hGaWxlXG4gIC8vIGluc3RhbmNlIGlmIHRoZXJlIGFyZSBubyBtb3JlIGxpc3RlbmVycyBsZWZ0LlxuICByZXR1cm4gKCkgPT4ge1xuICAgIGRlbEZyb21TZXQoY29udCwgS0VZX0xJU1RFTkVSUywgbGlzdGVuZXIpO1xuICAgIGRlbEZyb21TZXQoY29udCwgS0VZX1JBVywgcmF3RW1pdHRlcik7XG4gICAgaWYgKGlzRW1wdHlTZXQoY29udC5saXN0ZW5lcnMpKSB7XG4gICAgICBGc1dhdGNoRmlsZUluc3RhbmNlcy5kZWxldGUoZnVsbFBhdGgpO1xuICAgICAgZnMudW53YXRjaEZpbGUoZnVsbFBhdGgpO1xuICAgICAgY29udC5vcHRpb25zID0gY29udC53YXRjaGVyID0gdW5kZWZpbmVkO1xuICAgICAgT2JqZWN0LmZyZWV6ZShjb250KTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBtaXhpblxuICovXG5jbGFzcyBOb2RlRnNIYW5kbGVyIHtcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4XCIpLkZTV2F0Y2hlcn0gZnNXXG4gKi9cbmNvbnN0cnVjdG9yKGZzVykge1xuICB0aGlzLmZzdyA9IGZzVztcbiAgdGhpcy5fYm91bmRIYW5kbGVFcnJvciA9IChlcnJvcikgPT4gZnNXLl9oYW5kbGVFcnJvcihlcnJvcik7XG59XG5cbi8qKlxuICogV2F0Y2ggZmlsZSBmb3IgY2hhbmdlcyB3aXRoIGZzX3dhdGNoRmlsZSBvciBmc193YXRjaC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoIHRvIGZpbGUgb3IgZGlyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciBvbiBmcyBjaGFuZ2VcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gY2xvc2VyIGZvciB0aGUgd2F0Y2hlciBpbnN0YW5jZVxuICovXG5fd2F0Y2hXaXRoTm9kZUZzKHBhdGgsIGxpc3RlbmVyKSB7XG4gIGNvbnN0IG9wdHMgPSB0aGlzLmZzdy5vcHRpb25zO1xuICBjb25zdCBkaXJlY3RvcnkgPSBzeXNQYXRoLmRpcm5hbWUocGF0aCk7XG4gIGNvbnN0IGJhc2VuYW1lID0gc3lzUGF0aC5iYXNlbmFtZShwYXRoKTtcbiAgY29uc3QgcGFyZW50ID0gdGhpcy5mc3cuX2dldFdhdGNoZWREaXIoZGlyZWN0b3J5KTtcbiAgcGFyZW50LmFkZChiYXNlbmFtZSk7XG4gIGNvbnN0IGFic29sdXRlUGF0aCA9IHN5c1BhdGgucmVzb2x2ZShwYXRoKTtcbiAgY29uc3Qgb3B0aW9ucyA9IHtwZXJzaXN0ZW50OiBvcHRzLnBlcnNpc3RlbnR9O1xuICBpZiAoIWxpc3RlbmVyKSBsaXN0ZW5lciA9IEVNUFRZX0ZOO1xuXG4gIGxldCBjbG9zZXI7XG4gIGlmIChvcHRzLnVzZVBvbGxpbmcpIHtcbiAgICBvcHRpb25zLmludGVydmFsID0gb3B0cy5lbmFibGVCaW5hcnlJbnRlcnZhbCAmJiBpc0JpbmFyeVBhdGgoYmFzZW5hbWUpID9cbiAgICAgIG9wdHMuYmluYXJ5SW50ZXJ2YWwgOiBvcHRzLmludGVydmFsO1xuICAgIGNsb3NlciA9IHNldEZzV2F0Y2hGaWxlTGlzdGVuZXIocGF0aCwgYWJzb2x1dGVQYXRoLCBvcHRpb25zLCB7XG4gICAgICBsaXN0ZW5lcixcbiAgICAgIHJhd0VtaXR0ZXI6IHRoaXMuZnN3Ll9lbWl0UmF3XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY2xvc2VyID0gc2V0RnNXYXRjaExpc3RlbmVyKHBhdGgsIGFic29sdXRlUGF0aCwgb3B0aW9ucywge1xuICAgICAgbGlzdGVuZXIsXG4gICAgICBlcnJIYW5kbGVyOiB0aGlzLl9ib3VuZEhhbmRsZUVycm9yLFxuICAgICAgcmF3RW1pdHRlcjogdGhpcy5mc3cuX2VtaXRSYXdcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gY2xvc2VyO1xufVxuXG4vKipcbiAqIFdhdGNoIGEgZmlsZSBhbmQgZW1pdCBhZGQgZXZlbnQgaWYgd2FycmFudGVkLlxuICogQHBhcmFtIHtQYXRofSBmaWxlIFBhdGhcbiAqIEBwYXJhbSB7ZnMuU3RhdHN9IHN0YXRzIHJlc3VsdCBvZiBmc19zdGF0XG4gKiBAcGFyYW0ge0Jvb2xlYW59IGluaXRpYWxBZGQgd2FzIHRoZSBmaWxlIGFkZGVkIGF0IHdhdGNoIGluc3RhbnRpYXRpb24/XG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IGNsb3NlciBmb3IgdGhlIHdhdGNoZXIgaW5zdGFuY2VcbiAqL1xuX2hhbmRsZUZpbGUoZmlsZSwgc3RhdHMsIGluaXRpYWxBZGQpIHtcbiAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBkaXJuYW1lID0gc3lzUGF0aC5kaXJuYW1lKGZpbGUpO1xuICBjb25zdCBiYXNlbmFtZSA9IHN5c1BhdGguYmFzZW5hbWUoZmlsZSk7XG4gIGNvbnN0IHBhcmVudCA9IHRoaXMuZnN3Ll9nZXRXYXRjaGVkRGlyKGRpcm5hbWUpO1xuICAvLyBzdGF0cyBpcyBhbHdheXMgcHJlc2VudFxuICBsZXQgcHJldlN0YXRzID0gc3RhdHM7XG5cbiAgLy8gaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBiZWluZyB3YXRjaGVkLCBkbyBub3RoaW5nXG4gIGlmIChwYXJlbnQuaGFzKGJhc2VuYW1lKSkgcmV0dXJuO1xuXG4gIGNvbnN0IGxpc3RlbmVyID0gYXN5bmMgKHBhdGgsIG5ld1N0YXRzKSA9PiB7XG4gICAgaWYgKCF0aGlzLmZzdy5fdGhyb3R0bGUoVEhST1RUTEVfTU9ERV9XQVRDSCwgZmlsZSwgNSkpIHJldHVybjtcbiAgICBpZiAoIW5ld1N0YXRzIHx8IG5ld1N0YXRzLm10aW1lTXMgPT09IDApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXRzID0gYXdhaXQgc3RhdChmaWxlKTtcbiAgICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgICAgICAvLyBDaGVjayB0aGF0IGNoYW5nZSBldmVudCB3YXMgbm90IGZpcmVkIGJlY2F1c2Ugb2YgY2hhbmdlZCBvbmx5IGFjY2Vzc1RpbWUuXG4gICAgICAgIGNvbnN0IGF0ID0gbmV3U3RhdHMuYXRpbWVNcztcbiAgICAgICAgY29uc3QgbXQgPSBuZXdTdGF0cy5tdGltZU1zO1xuICAgICAgICBpZiAoIWF0IHx8IGF0IDw9IG10IHx8IG10ICE9PSBwcmV2U3RhdHMubXRpbWVNcykge1xuICAgICAgICAgIHRoaXMuZnN3Ll9lbWl0KEVWX0NIQU5HRSwgZmlsZSwgbmV3U3RhdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xpbnV4ICYmIHByZXZTdGF0cy5pbm8gIT09IG5ld1N0YXRzLmlubykge1xuICAgICAgICAgIHRoaXMuZnN3Ll9jbG9zZUZpbGUocGF0aClcbiAgICAgICAgICBwcmV2U3RhdHMgPSBuZXdTdGF0cztcbiAgICAgICAgICB0aGlzLmZzdy5fYWRkUGF0aENsb3NlcihwYXRoLCB0aGlzLl93YXRjaFdpdGhOb2RlRnMoZmlsZSwgbGlzdGVuZXIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmV2U3RhdHMgPSBuZXdTdGF0cztcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gRml4IGlzc3VlcyB3aGVyZSBtdGltZSBpcyBudWxsIGJ1dCBmaWxlIGlzIHN0aWxsIHByZXNlbnRcbiAgICAgICAgdGhpcy5mc3cuX3JlbW92ZShkaXJuYW1lLCBiYXNlbmFtZSk7XG4gICAgICB9XG4gICAgICAvLyBhZGQgaXMgYWJvdXQgdG8gYmUgZW1pdHRlZCBpZiBmaWxlIG5vdCBhbHJlYWR5IHRyYWNrZWQgaW4gcGFyZW50XG4gICAgfSBlbHNlIGlmIChwYXJlbnQuaGFzKGJhc2VuYW1lKSkge1xuICAgICAgLy8gQ2hlY2sgdGhhdCBjaGFuZ2UgZXZlbnQgd2FzIG5vdCBmaXJlZCBiZWNhdXNlIG9mIGNoYW5nZWQgb25seSBhY2Nlc3NUaW1lLlxuICAgICAgY29uc3QgYXQgPSBuZXdTdGF0cy5hdGltZU1zO1xuICAgICAgY29uc3QgbXQgPSBuZXdTdGF0cy5tdGltZU1zO1xuICAgICAgaWYgKCFhdCB8fCBhdCA8PSBtdCB8fCBtdCAhPT0gcHJldlN0YXRzLm10aW1lTXMpIHtcbiAgICAgICAgdGhpcy5mc3cuX2VtaXQoRVZfQ0hBTkdFLCBmaWxlLCBuZXdTdGF0cyk7XG4gICAgICB9XG4gICAgICBwcmV2U3RhdHMgPSBuZXdTdGF0cztcbiAgICB9XG4gIH1cbiAgLy8ga2ljayBvZmYgdGhlIHdhdGNoZXJcbiAgY29uc3QgY2xvc2VyID0gdGhpcy5fd2F0Y2hXaXRoTm9kZUZzKGZpbGUsIGxpc3RlbmVyKTtcblxuICAvLyBlbWl0IGFuIGFkZCBldmVudCBpZiB3ZSdyZSBzdXBwb3NlZCB0b1xuICBpZiAoIShpbml0aWFsQWRkICYmIHRoaXMuZnN3Lm9wdGlvbnMuaWdub3JlSW5pdGlhbCkgJiYgdGhpcy5mc3cuX2lzbnRJZ25vcmVkKGZpbGUpKSB7XG4gICAgaWYgKCF0aGlzLmZzdy5fdGhyb3R0bGUoRVZfQURELCBmaWxlLCAwKSkgcmV0dXJuO1xuICAgIHRoaXMuZnN3Ll9lbWl0KEVWX0FERCwgZmlsZSwgc3RhdHMpO1xuICB9XG5cbiAgcmV0dXJuIGNsb3Nlcjtcbn1cblxuLyoqXG4gKiBIYW5kbGUgc3ltbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVhZGluZyBhIGRpci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBlbnRyeSByZXR1cm5lZCBieSByZWFkZGlycFxuICogQHBhcmFtIHtTdHJpbmd9IGRpcmVjdG9yeSBwYXRoIG9mIGRpciBiZWluZyByZWFkXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aCBvZiB0aGlzIGl0ZW1cbiAqIEBwYXJhbSB7U3RyaW5nfSBpdGVtIGJhc2VuYW1lIG9mIHRoaXMgaXRlbVxuICogQHJldHVybnMge1Byb21pc2U8Qm9vbGVhbj59IHRydWUgaWYgbm8gbW9yZSBwcm9jZXNzaW5nIGlzIG5lZWRlZCBmb3IgdGhpcyBlbnRyeS5cbiAqL1xuYXN5bmMgX2hhbmRsZVN5bWxpbmsoZW50cnksIGRpcmVjdG9yeSwgcGF0aCwgaXRlbSkge1xuICBpZiAodGhpcy5mc3cuY2xvc2VkKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGZ1bGwgPSBlbnRyeS5mdWxsUGF0aDtcbiAgY29uc3QgZGlyID0gdGhpcy5mc3cuX2dldFdhdGNoZWREaXIoZGlyZWN0b3J5KTtcblxuICBpZiAoIXRoaXMuZnN3Lm9wdGlvbnMuZm9sbG93U3ltbGlua3MpIHtcbiAgICAvLyB3YXRjaCBzeW1saW5rIGRpcmVjdGx5IChkb24ndCBmb2xsb3cpIGFuZCBkZXRlY3QgY2hhbmdlc1xuICAgIHRoaXMuZnN3Ll9pbmNyUmVhZHlDb3VudCgpO1xuICAgIGNvbnN0IGxpbmtQYXRoID0gYXdhaXQgZnNyZWFscGF0aChwYXRoKTtcbiAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKGRpci5oYXMoaXRlbSkpIHtcbiAgICAgIGlmICh0aGlzLmZzdy5fc3ltbGlua1BhdGhzLmdldChmdWxsKSAhPT0gbGlua1BhdGgpIHtcbiAgICAgICAgdGhpcy5mc3cuX3N5bWxpbmtQYXRocy5zZXQoZnVsbCwgbGlua1BhdGgpO1xuICAgICAgICB0aGlzLmZzdy5fZW1pdChFVl9DSEFOR0UsIHBhdGgsIGVudHJ5LnN0YXRzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGlyLmFkZChpdGVtKTtcbiAgICAgIHRoaXMuZnN3Ll9zeW1saW5rUGF0aHMuc2V0KGZ1bGwsIGxpbmtQYXRoKTtcbiAgICAgIHRoaXMuZnN3Ll9lbWl0KEVWX0FERCwgcGF0aCwgZW50cnkuc3RhdHMpO1xuICAgIH1cbiAgICB0aGlzLmZzdy5fZW1pdFJlYWR5KCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBkb24ndCBmb2xsb3cgdGhlIHNhbWUgc3ltbGluayBtb3JlIHRoYW4gb25jZVxuICBpZiAodGhpcy5mc3cuX3N5bWxpbmtQYXRocy5oYXMoZnVsbCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuZnN3Ll9zeW1saW5rUGF0aHMuc2V0KGZ1bGwsIHRydWUpO1xufVxuXG5faGFuZGxlUmVhZChkaXJlY3RvcnksIGluaXRpYWxBZGQsIHdoLCB0YXJnZXQsIGRpciwgZGVwdGgsIHRocm90dGxlcikge1xuICAvLyBOb3JtYWxpemUgdGhlIGRpcmVjdG9yeSBuYW1lIG9uIFdpbmRvd3NcbiAgZGlyZWN0b3J5ID0gc3lzUGF0aC5qb2luKGRpcmVjdG9yeSwgRU1QVFlfU1RSKTtcblxuICBpZiAoIXdoLmhhc0dsb2IpIHtcbiAgICB0aHJvdHRsZXIgPSB0aGlzLmZzdy5fdGhyb3R0bGUoJ3JlYWRkaXInLCBkaXJlY3RvcnksIDEwMDApO1xuICAgIGlmICghdGhyb3R0bGVyKSByZXR1cm47XG4gIH1cblxuICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZnN3Ll9nZXRXYXRjaGVkRGlyKHdoLnBhdGgpO1xuICBjb25zdCBjdXJyZW50ID0gbmV3IFNldCgpO1xuXG4gIGxldCBzdHJlYW0gPSB0aGlzLmZzdy5fcmVhZGRpcnAoZGlyZWN0b3J5LCB7XG4gICAgZmlsZUZpbHRlcjogZW50cnkgPT4gd2guZmlsdGVyUGF0aChlbnRyeSksXG4gICAgZGlyZWN0b3J5RmlsdGVyOiBlbnRyeSA9PiB3aC5maWx0ZXJEaXIoZW50cnkpLFxuICAgIGRlcHRoOiAwXG4gIH0pLm9uKFNUUl9EQVRBLCBhc3luYyAoZW50cnkpID0+IHtcbiAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSB7XG4gICAgICBzdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGl0ZW0gPSBlbnRyeS5wYXRoO1xuICAgIGxldCBwYXRoID0gc3lzUGF0aC5qb2luKGRpcmVjdG9yeSwgaXRlbSk7XG4gICAgY3VycmVudC5hZGQoaXRlbSk7XG5cbiAgICBpZiAoZW50cnkuc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSAmJiBhd2FpdCB0aGlzLl9oYW5kbGVTeW1saW5rKGVudHJ5LCBkaXJlY3RvcnksIHBhdGgsIGl0ZW0pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgICAgc3RyZWFtID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBGaWxlcyB0aGF0IHByZXNlbnQgaW4gY3VycmVudCBkaXJlY3Rvcnkgc25hcHNob3RcbiAgICAvLyBidXQgYWJzZW50IGluIHByZXZpb3VzIGFyZSBhZGRlZCB0byB3YXRjaCBsaXN0IGFuZFxuICAgIC8vIGVtaXQgYGFkZGAgZXZlbnQuXG4gICAgaWYgKGl0ZW0gPT09IHRhcmdldCB8fCAhdGFyZ2V0ICYmICFwcmV2aW91cy5oYXMoaXRlbSkpIHtcbiAgICAgIHRoaXMuZnN3Ll9pbmNyUmVhZHlDb3VudCgpO1xuXG4gICAgICAvLyBlbnN1cmUgcmVsYXRpdmVuZXNzIG9mIHBhdGggaXMgcHJlc2VydmVkIGluIGNhc2Ugb2Ygd2F0Y2hlciByZXVzZVxuICAgICAgcGF0aCA9IHN5c1BhdGguam9pbihkaXIsIHN5c1BhdGgucmVsYXRpdmUoZGlyLCBwYXRoKSk7XG5cbiAgICAgIHRoaXMuX2FkZFRvTm9kZUZzKHBhdGgsIGluaXRpYWxBZGQsIHdoLCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfSkub24oRVZfRVJST1IsIHRoaXMuX2JvdW5kSGFuZGxlRXJyb3IpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+XG4gICAgc3RyZWFtLm9uY2UoU1RSX0VORCwgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgICAgICBzdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHdhc1Rocm90dGxlZCA9IHRocm90dGxlciA/IHRocm90dGxlci5jbGVhcigpIDogZmFsc2U7XG5cbiAgICAgIHJlc29sdmUoKTtcblxuICAgICAgLy8gRmlsZXMgdGhhdCBhYnNlbnQgaW4gY3VycmVudCBkaXJlY3Rvcnkgc25hcHNob3RcbiAgICAgIC8vIGJ1dCBwcmVzZW50IGluIHByZXZpb3VzIGVtaXQgYHJlbW92ZWAgZXZlbnRcbiAgICAgIC8vIGFuZCBhcmUgcmVtb3ZlZCBmcm9tIEB3YXRjaGVkW2RpcmVjdG9yeV0uXG4gICAgICBwcmV2aW91cy5nZXRDaGlsZHJlbigpLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbSAhPT0gZGlyZWN0b3J5ICYmXG4gICAgICAgICAgIWN1cnJlbnQuaGFzKGl0ZW0pICYmXG4gICAgICAgICAgLy8gaW4gY2FzZSBvZiBpbnRlcnNlY3RpbmcgZ2xvYnM7XG4gICAgICAgICAgLy8gYSBwYXRoIG1heSBoYXZlIGJlZW4gZmlsdGVyZWQgb3V0IG9mIHRoaXMgcmVhZGRpciwgYnV0XG4gICAgICAgICAgLy8gc2hvdWxkbid0IGJlIHJlbW92ZWQgYmVjYXVzZSBpdCBtYXRjaGVzIGEgZGlmZmVyZW50IGdsb2JcbiAgICAgICAgICAoIXdoLmhhc0dsb2IgfHwgd2guZmlsdGVyUGF0aCh7XG4gICAgICAgICAgICBmdWxsUGF0aDogc3lzUGF0aC5yZXNvbHZlKGRpcmVjdG9yeSwgaXRlbSlcbiAgICAgICAgICB9KSk7XG4gICAgICB9KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuZnN3Ll9yZW1vdmUoZGlyZWN0b3J5LCBpdGVtKTtcbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0gPSB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIG9uZSBtb3JlIHRpbWUgZm9yIGFueSBtaXNzZWQgaW4gY2FzZSBjaGFuZ2VzIGNhbWUgaW4gZXh0cmVtZWx5IHF1aWNrbHlcbiAgICAgIGlmICh3YXNUaHJvdHRsZWQpIHRoaXMuX2hhbmRsZVJlYWQoZGlyZWN0b3J5LCBmYWxzZSwgd2gsIHRhcmdldCwgZGlyLCBkZXB0aCwgdGhyb3R0bGVyKTtcbiAgICB9KVxuICApO1xufVxuXG4vKipcbiAqIFJlYWQgZGlyZWN0b3J5IHRvIGFkZCAvIHJlbW92ZSBmaWxlcyBmcm9tIGBAd2F0Y2hlZGAgbGlzdCBhbmQgcmUtcmVhZCBpdCBvbiBjaGFuZ2UuXG4gKiBAcGFyYW0ge1N0cmluZ30gZGlyIGZzIHBhdGhcbiAqIEBwYXJhbSB7ZnMuU3RhdHN9IHN0YXRzXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGluaXRpYWxBZGRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkZXB0aCByZWxhdGl2ZSB0byB1c2VyLXN1cHBsaWVkIHBhdGhcbiAqIEBwYXJhbSB7U3RyaW5nfSB0YXJnZXQgY2hpbGQgcGF0aCB0YXJnZXRlZCBmb3Igd2F0Y2hcbiAqIEBwYXJhbSB7T2JqZWN0fSB3aCBDb21tb24gd2F0Y2ggaGVscGVycyBmb3IgdGhpcyBwYXRoXG4gKiBAcGFyYW0ge1N0cmluZ30gcmVhbHBhdGhcbiAqIEByZXR1cm5zIHtQcm9taXNlPEZ1bmN0aW9uPn0gY2xvc2VyIGZvciB0aGUgd2F0Y2hlciBpbnN0YW5jZS5cbiAqL1xuYXN5bmMgX2hhbmRsZURpcihkaXIsIHN0YXRzLCBpbml0aWFsQWRkLCBkZXB0aCwgdGFyZ2V0LCB3aCwgcmVhbHBhdGgpIHtcbiAgY29uc3QgcGFyZW50RGlyID0gdGhpcy5mc3cuX2dldFdhdGNoZWREaXIoc3lzUGF0aC5kaXJuYW1lKGRpcikpO1xuICBjb25zdCB0cmFja2VkID0gcGFyZW50RGlyLmhhcyhzeXNQYXRoLmJhc2VuYW1lKGRpcikpO1xuICBpZiAoIShpbml0aWFsQWRkICYmIHRoaXMuZnN3Lm9wdGlvbnMuaWdub3JlSW5pdGlhbCkgJiYgIXRhcmdldCAmJiAhdHJhY2tlZCkge1xuICAgIGlmICghd2guaGFzR2xvYiB8fCB3aC5nbG9iRmlsdGVyKGRpcikpIHRoaXMuZnN3Ll9lbWl0KEVWX0FERF9ESVIsIGRpciwgc3RhdHMpO1xuICB9XG5cbiAgLy8gZW5zdXJlIGRpciBpcyB0cmFja2VkIChoYXJtbGVzcyBpZiByZWR1bmRhbnQpXG4gIHBhcmVudERpci5hZGQoc3lzUGF0aC5iYXNlbmFtZShkaXIpKTtcbiAgdGhpcy5mc3cuX2dldFdhdGNoZWREaXIoZGlyKTtcbiAgbGV0IHRocm90dGxlcjtcbiAgbGV0IGNsb3NlcjtcblxuICBjb25zdCBvRGVwdGggPSB0aGlzLmZzdy5vcHRpb25zLmRlcHRoO1xuICBpZiAoKG9EZXB0aCA9PSBudWxsIHx8IGRlcHRoIDw9IG9EZXB0aCkgJiYgIXRoaXMuZnN3Ll9zeW1saW5rUGF0aHMuaGFzKHJlYWxwYXRoKSkge1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICBhd2FpdCB0aGlzLl9oYW5kbGVSZWFkKGRpciwgaW5pdGlhbEFkZCwgd2gsIHRhcmdldCwgZGlyLCBkZXB0aCwgdGhyb3R0bGVyKTtcbiAgICAgIGlmICh0aGlzLmZzdy5jbG9zZWQpIHJldHVybjtcbiAgICB9XG5cbiAgICBjbG9zZXIgPSB0aGlzLl93YXRjaFdpdGhOb2RlRnMoZGlyLCAoZGlyUGF0aCwgc3RhdHMpID0+IHtcbiAgICAgIC8vIGlmIGN1cnJlbnQgZGlyZWN0b3J5IGlzIHJlbW92ZWQsIGRvIG5vdGhpbmdcbiAgICAgIGlmIChzdGF0cyAmJiBzdGF0cy5tdGltZU1zID09PSAwKSByZXR1cm47XG5cbiAgICAgIHRoaXMuX2hhbmRsZVJlYWQoZGlyUGF0aCwgZmFsc2UsIHdoLCB0YXJnZXQsIGRpciwgZGVwdGgsIHRocm90dGxlcik7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGNsb3Nlcjtcbn1cblxuLyoqXG4gKiBIYW5kbGUgYWRkZWQgZmlsZSwgZGlyZWN0b3J5LCBvciBnbG9iIHBhdHRlcm4uXG4gKiBEZWxlZ2F0ZXMgY2FsbCB0byBfaGFuZGxlRmlsZSAvIF9oYW5kbGVEaXIgYWZ0ZXIgY2hlY2tzLlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGggdG8gZmlsZSBvciBpclxuICogQHBhcmFtIHtCb29sZWFufSBpbml0aWFsQWRkIHdhcyB0aGUgZmlsZSBhZGRlZCBhdCB3YXRjaCBpbnN0YW50aWF0aW9uP1xuICogQHBhcmFtIHtPYmplY3R9IHByaW9yV2ggZGVwdGggcmVsYXRpdmUgdG8gdXNlci1zdXBwbGllZCBwYXRoXG4gKiBAcGFyYW0ge051bWJlcn0gZGVwdGggQ2hpbGQgcGF0aCBhY3R1YWxseSB0YXJnZXRlZCBmb3Igd2F0Y2hcbiAqIEBwYXJhbSB7U3RyaW5nPX0gdGFyZ2V0IENoaWxkIHBhdGggYWN0dWFsbHkgdGFyZ2V0ZWQgZm9yIHdhdGNoXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqL1xuYXN5bmMgX2FkZFRvTm9kZUZzKHBhdGgsIGluaXRpYWxBZGQsIHByaW9yV2gsIGRlcHRoLCB0YXJnZXQpIHtcbiAgY29uc3QgcmVhZHkgPSB0aGlzLmZzdy5fZW1pdFJlYWR5O1xuICBpZiAodGhpcy5mc3cuX2lzSWdub3JlZChwYXRoKSB8fCB0aGlzLmZzdy5jbG9zZWQpIHtcbiAgICByZWFkeSgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHdoID0gdGhpcy5mc3cuX2dldFdhdGNoSGVscGVycyhwYXRoLCBkZXB0aCk7XG4gIGlmICghd2guaGFzR2xvYiAmJiBwcmlvcldoKSB7XG4gICAgd2guaGFzR2xvYiA9IHByaW9yV2guaGFzR2xvYjtcbiAgICB3aC5nbG9iRmlsdGVyID0gcHJpb3JXaC5nbG9iRmlsdGVyO1xuICAgIHdoLmZpbHRlclBhdGggPSBlbnRyeSA9PiBwcmlvcldoLmZpbHRlclBhdGgoZW50cnkpO1xuICAgIHdoLmZpbHRlckRpciA9IGVudHJ5ID0+IHByaW9yV2guZmlsdGVyRGlyKGVudHJ5KTtcbiAgfVxuXG4gIC8vIGV2YWx1YXRlIHdoYXQgaXMgYXQgdGhlIHBhdGggd2UncmUgYmVpbmcgYXNrZWQgdG8gd2F0Y2hcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IHN0YXRNZXRob2RzW3doLnN0YXRNZXRob2RdKHdoLndhdGNoUGF0aCk7XG4gICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZzdy5faXNJZ25vcmVkKHdoLndhdGNoUGF0aCwgc3RhdHMpKSB7XG4gICAgICByZWFkeSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZvbGxvdyA9IHRoaXMuZnN3Lm9wdGlvbnMuZm9sbG93U3ltbGlua3MgJiYgIXBhdGguaW5jbHVkZXMoU1RBUikgJiYgIXBhdGguaW5jbHVkZXMoQlJBQ0VfU1RBUlQpO1xuICAgIGxldCBjbG9zZXI7XG4gICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGNvbnN0IHRhcmdldFBhdGggPSBmb2xsb3cgPyBhd2FpdCBmc3JlYWxwYXRoKHBhdGgpIDogcGF0aDtcbiAgICAgIGlmICh0aGlzLmZzdy5jbG9zZWQpIHJldHVybjtcbiAgICAgIGNsb3NlciA9IGF3YWl0IHRoaXMuX2hhbmRsZURpcih3aC53YXRjaFBhdGgsIHN0YXRzLCBpbml0aWFsQWRkLCBkZXB0aCwgdGFyZ2V0LCB3aCwgdGFyZ2V0UGF0aCk7XG4gICAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSByZXR1cm47XG4gICAgICAvLyBwcmVzZXJ2ZSB0aGlzIHN5bWxpbmsncyB0YXJnZXQgcGF0aFxuICAgICAgaWYgKHBhdGggIT09IHRhcmdldFBhdGggJiYgdGFyZ2V0UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuZnN3Ll9zeW1saW5rUGF0aHMuc2V0KHRhcmdldFBhdGgsIHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgY29uc3QgdGFyZ2V0UGF0aCA9IGZvbGxvdyA/IGF3YWl0IGZzcmVhbHBhdGgocGF0aCkgOiBwYXRoO1xuICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgICAgY29uc3QgcGFyZW50ID0gc3lzUGF0aC5kaXJuYW1lKHdoLndhdGNoUGF0aCk7XG4gICAgICB0aGlzLmZzdy5fZ2V0V2F0Y2hlZERpcihwYXJlbnQpLmFkZCh3aC53YXRjaFBhdGgpO1xuICAgICAgdGhpcy5mc3cuX2VtaXQoRVZfQURELCB3aC53YXRjaFBhdGgsIHN0YXRzKTtcbiAgICAgIGNsb3NlciA9IGF3YWl0IHRoaXMuX2hhbmRsZURpcihwYXJlbnQsIHN0YXRzLCBpbml0aWFsQWRkLCBkZXB0aCwgcGF0aCwgd2gsIHRhcmdldFBhdGgpO1xuICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgICAvLyBwcmVzZXJ2ZSB0aGlzIHN5bWxpbmsncyB0YXJnZXQgcGF0aFxuICAgICAgaWYgKHRhcmdldFBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmZzdy5fc3ltbGlua1BhdGhzLnNldChzeXNQYXRoLnJlc29sdmUocGF0aCksIHRhcmdldFBhdGgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjbG9zZXIgPSB0aGlzLl9oYW5kbGVGaWxlKHdoLndhdGNoUGF0aCwgc3RhdHMsIGluaXRpYWxBZGQpO1xuICAgIH1cbiAgICByZWFkeSgpO1xuXG4gICAgdGhpcy5mc3cuX2FkZFBhdGhDbG9zZXIocGF0aCwgY2xvc2VyKTtcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAodGhpcy5mc3cuX2hhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgcmVhZHkoKTtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgfVxufVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gTm9kZUZzSGFuZGxlcjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xuY29uc3Qgc3lzUGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHsgcHJvbWlzaWZ5IH0gPSByZXF1aXJlKCd1dGlsJyk7XG5cbmxldCBmc2V2ZW50cztcbnRyeSB7XG4gIGZzZXZlbnRzID0gcmVxdWlyZSgnZnNldmVudHMnKTtcbn0gY2F0Y2ggKGVycm9yKSB7XG4gIGlmIChwcm9jZXNzLmVudi5DSE9LSURBUl9QUklOVF9GU0VWRU5UU19SRVFVSVJFX0VSUk9SKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbn1cblxuaWYgKGZzZXZlbnRzKSB7XG4gIC8vIFRPRE86IHJlYWwgY2hlY2tcbiAgY29uc3QgbXRjaCA9IHByb2Nlc3MudmVyc2lvbi5tYXRjaCgvdihcXGQrKVxcLihcXGQrKS8pO1xuICBpZiAobXRjaCAmJiBtdGNoWzFdICYmIG10Y2hbMl0pIHtcbiAgICBjb25zdCBtYWogPSBOdW1iZXIucGFyc2VJbnQobXRjaFsxXSwgMTApO1xuICAgIGNvbnN0IG1pbiA9IE51bWJlci5wYXJzZUludChtdGNoWzJdLCAxMCk7XG4gICAgaWYgKG1haiA9PT0gOCAmJiBtaW4gPCAxNikge1xuICAgICAgZnNldmVudHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHtcbiAgRVZfQURELFxuICBFVl9DSEFOR0UsXG4gIEVWX0FERF9ESVIsXG4gIEVWX1VOTElOSyxcbiAgRVZfRVJST1IsXG4gIFNUUl9EQVRBLFxuICBTVFJfRU5ELFxuICBGU0VWRU5UX0NSRUFURUQsXG4gIEZTRVZFTlRfTU9ESUZJRUQsXG4gIEZTRVZFTlRfREVMRVRFRCxcbiAgRlNFVkVOVF9NT1ZFRCxcbiAgLy8gRlNFVkVOVF9DTE9ORUQsXG4gIEZTRVZFTlRfVU5LTk9XTixcbiAgRlNFVkVOVF9UWVBFX0ZJTEUsXG4gIEZTRVZFTlRfVFlQRV9ESVJFQ1RPUlksXG4gIEZTRVZFTlRfVFlQRV9TWU1MSU5LLFxuXG4gIFJPT1RfR0xPQlNUQVIsXG4gIERJUl9TVUZGSVgsXG4gIERPVF9TTEFTSCxcbiAgRlVOQ1RJT05fVFlQRSxcbiAgRU1QVFlfRk4sXG4gIElERU5USVRZX0ZOXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcblxuY29uc3QgRGVwdGggPSAodmFsdWUpID0+IGlzTmFOKHZhbHVlKSA/IHt9IDoge2RlcHRoOiB2YWx1ZX07XG5cbmNvbnN0IHN0YXQgPSBwcm9taXNpZnkoZnMuc3RhdCk7XG5jb25zdCBsc3RhdCA9IHByb21pc2lmeShmcy5sc3RhdCk7XG5jb25zdCByZWFscGF0aCA9IHByb21pc2lmeShmcy5yZWFscGF0aCk7XG5cbmNvbnN0IHN0YXRNZXRob2RzID0geyBzdGF0LCBsc3RhdCB9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtTdHJpbmd9IFBhdGhcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZzRXZlbnRzV2F0Y2hDb250YWluZXJcbiAqIEBwcm9wZXJ0eSB7U2V0PEZ1bmN0aW9uPn0gbGlzdGVuZXJzXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSByYXdFbWl0dGVyXG4gKiBAcHJvcGVydHkge3tzdG9wOiBGdW5jdGlvbn19IHdhdGNoZXJcbiAqL1xuXG4vLyBmc2V2ZW50cyBpbnN0YW5jZSBoZWxwZXIgZnVuY3Rpb25zXG4vKipcbiAqIE9iamVjdCB0byBob2xkIHBlci1wcm9jZXNzIGZzZXZlbnRzIGluc3RhbmNlcyAobWF5IGJlIHNoYXJlZCBhY3Jvc3MgY2hva2lkYXIgRlNXYXRjaGVyIGluc3RhbmNlcylcbiAqIEB0eXBlIHtNYXA8UGF0aCxGc0V2ZW50c1dhdGNoQ29udGFpbmVyPn1cbiAqL1xuY29uc3QgRlNFdmVudHNXYXRjaGVycyA9IG5ldyBNYXAoKTtcblxuLy8gVGhyZXNob2xkIG9mIGR1cGxpY2F0ZSBwYXRoIHByZWZpeGVzIGF0IHdoaWNoIHRvIHN0YXJ0XG4vLyBjb25zb2xpZGF0aW5nIGdvaW5nIGZvcndhcmRcbmNvbnN0IGNvbnNvbGlkYXRlVGhyZXNoaG9sZCA9IDEwO1xuXG5jb25zdCB3cm9uZ0V2ZW50RmxhZ3MgPSBuZXcgU2V0KFtcbiAgNjk4ODgsIDcwNDAwLCA3MTQyNCwgNzI3MDQsIDczNDcyLCAxMzEzMjgsIDEzMTg0MCwgMjYyOTEyXG5dKTtcblxuLyoqXG4gKiBJbnN0YW50aWF0ZXMgdGhlIGZzZXZlbnRzIGludGVyZmFjZVxuICogQHBhcmFtIHtQYXRofSBwYXRoIHBhdGggdG8gYmUgd2F0Y2hlZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgY2FsbGVkIHdoZW4gZnNldmVudHMgaXMgYm91bmQgYW5kIHJlYWR5XG4gKiBAcmV0dXJucyB7e3N0b3A6IEZ1bmN0aW9ufX0gbmV3IGZzZXZlbnRzIGluc3RhbmNlXG4gKi9cbmNvbnN0IGNyZWF0ZUZTRXZlbnRzSW5zdGFuY2UgPSAocGF0aCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3Qgc3RvcCA9IGZzZXZlbnRzLndhdGNoKHBhdGgsIGNhbGxiYWNrKTtcbiAgcmV0dXJuIHtzdG9wfTtcbn07XG5cbi8qKlxuICogSW5zdGFudGlhdGVzIHRoZSBmc2V2ZW50cyBpbnRlcmZhY2Ugb3IgYmluZHMgbGlzdGVuZXJzIHRvIGFuIGV4aXN0aW5nIG9uZSBjb3ZlcmluZ1xuICogdGhlIHNhbWUgZmlsZSB0cmVlLlxuICogQHBhcmFtIHtQYXRofSBwYXRoICAgICAgICAgICAtIHRvIGJlIHdhdGNoZWRcbiAqIEBwYXJhbSB7UGF0aH0gcmVhbFBhdGggICAgICAgLSByZWFsIHBhdGggZm9yIHN5bWxpbmtzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciAgIC0gY2FsbGVkIHdoZW4gZnNldmVudHMgZW1pdHMgZXZlbnRzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByYXdFbWl0dGVyIC0gcGFzc2VzIGRhdGEgdG8gbGlzdGVuZXJzIG9mIHRoZSAncmF3JyBldmVudFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBjbG9zZXJcbiAqL1xuZnVuY3Rpb24gc2V0RlNFdmVudHNMaXN0ZW5lcihwYXRoLCByZWFsUGF0aCwgbGlzdGVuZXIsIHJhd0VtaXR0ZXIpIHtcbiAgbGV0IHdhdGNoUGF0aCA9IHN5c1BhdGguZXh0bmFtZShwYXRoKSA/IHN5c1BhdGguZGlybmFtZShwYXRoKSA6IHBhdGg7XG4gIGNvbnN0IHBhcmVudFBhdGggPSBzeXNQYXRoLmRpcm5hbWUod2F0Y2hQYXRoKTtcbiAgbGV0IGNvbnQgPSBGU0V2ZW50c1dhdGNoZXJzLmdldCh3YXRjaFBhdGgpO1xuXG4gIC8vIElmIHdlJ3ZlIGFjY3VtdWxhdGVkIGEgc3Vic3RhbnRpYWwgbnVtYmVyIG9mIHBhdGhzIHRoYXRcbiAgLy8gY291bGQgaGF2ZSBiZWVuIGNvbnNvbGlkYXRlZCBieSB3YXRjaGluZyBvbmUgZGlyZWN0b3J5XG4gIC8vIGFib3ZlIHRoZSBjdXJyZW50IG9uZSwgY3JlYXRlIGEgd2F0Y2hlciBvbiB0aGUgcGFyZW50XG4gIC8vIHBhdGggaW5zdGVhZCwgc28gdGhhdCB3ZSBkbyBjb25zb2xpZGF0ZSBnb2luZyBmb3J3YXJkLlxuICBpZiAoY291bGRDb25zb2xpZGF0ZShwYXJlbnRQYXRoKSkge1xuICAgIHdhdGNoUGF0aCA9IHBhcmVudFBhdGg7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFBhdGggPSBzeXNQYXRoLnJlc29sdmUocGF0aCk7XG4gIGNvbnN0IGhhc1N5bWxpbmsgPSByZXNvbHZlZFBhdGggIT09IHJlYWxQYXRoO1xuXG4gIGNvbnN0IGZpbHRlcmVkTGlzdGVuZXIgPSAoZnVsbFBhdGgsIGZsYWdzLCBpbmZvKSA9PiB7XG4gICAgaWYgKGhhc1N5bWxpbmspIGZ1bGxQYXRoID0gZnVsbFBhdGgucmVwbGFjZShyZWFsUGF0aCwgcmVzb2x2ZWRQYXRoKTtcbiAgICBpZiAoXG4gICAgICBmdWxsUGF0aCA9PT0gcmVzb2x2ZWRQYXRoIHx8XG4gICAgICAhZnVsbFBhdGguaW5kZXhPZihyZXNvbHZlZFBhdGggKyBzeXNQYXRoLnNlcClcbiAgICApIGxpc3RlbmVyKGZ1bGxQYXRoLCBmbGFncywgaW5mbyk7XG4gIH07XG5cbiAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIHdhdGNoZXIgb24gYSBwYXJlbnQgcGF0aFxuICAvLyBtb2RpZmllcyBgd2F0Y2hQYXRoYCB0byB0aGUgcGFyZW50IHBhdGggd2hlbiBpdCBmaW5kcyBhIG1hdGNoXG4gIGxldCB3YXRjaGVkUGFyZW50ID0gZmFsc2U7XG4gIGZvciAoY29uc3Qgd2F0Y2hlZFBhdGggb2YgRlNFdmVudHNXYXRjaGVycy5rZXlzKCkpIHtcbiAgICBpZiAocmVhbFBhdGguaW5kZXhPZihzeXNQYXRoLnJlc29sdmUod2F0Y2hlZFBhdGgpICsgc3lzUGF0aC5zZXApID09PSAwKSB7XG4gICAgICB3YXRjaFBhdGggPSB3YXRjaGVkUGF0aDtcbiAgICAgIGNvbnQgPSBGU0V2ZW50c1dhdGNoZXJzLmdldCh3YXRjaFBhdGgpO1xuICAgICAgd2F0Y2hlZFBhcmVudCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoY29udCB8fCB3YXRjaGVkUGFyZW50KSB7XG4gICAgY29udC5saXN0ZW5lcnMuYWRkKGZpbHRlcmVkTGlzdGVuZXIpO1xuICB9IGVsc2Uge1xuICAgIGNvbnQgPSB7XG4gICAgICBsaXN0ZW5lcnM6IG5ldyBTZXQoW2ZpbHRlcmVkTGlzdGVuZXJdKSxcbiAgICAgIHJhd0VtaXR0ZXIsXG4gICAgICB3YXRjaGVyOiBjcmVhdGVGU0V2ZW50c0luc3RhbmNlKHdhdGNoUGF0aCwgKGZ1bGxQYXRoLCBmbGFncykgPT4ge1xuICAgICAgICBpZiAoIWNvbnQubGlzdGVuZXJzLnNpemUpIHJldHVybjtcbiAgICAgICAgY29uc3QgaW5mbyA9IGZzZXZlbnRzLmdldEluZm8oZnVsbFBhdGgsIGZsYWdzKTtcbiAgICAgICAgY29udC5saXN0ZW5lcnMuZm9yRWFjaChsaXN0ID0+IHtcbiAgICAgICAgICBsaXN0KGZ1bGxQYXRoLCBmbGFncywgaW5mbyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnQucmF3RW1pdHRlcihpbmZvLmV2ZW50LCBmdWxsUGF0aCwgaW5mbyk7XG4gICAgICB9KVxuICAgIH07XG4gICAgRlNFdmVudHNXYXRjaGVycy5zZXQod2F0Y2hQYXRoLCBjb250KTtcbiAgfVxuXG4gIC8vIHJlbW92ZXMgdGhpcyBpbnN0YW5jZSdzIGxpc3RlbmVycyBhbmQgY2xvc2VzIHRoZSB1bmRlcmx5aW5nIGZzZXZlbnRzXG4gIC8vIGluc3RhbmNlIGlmIHRoZXJlIGFyZSBubyBtb3JlIGxpc3RlbmVycyBsZWZ0XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29uc3QgbHN0ID0gY29udC5saXN0ZW5lcnM7XG5cbiAgICBsc3QuZGVsZXRlKGZpbHRlcmVkTGlzdGVuZXIpO1xuICAgIGlmICghbHN0LnNpemUpIHtcbiAgICAgIEZTRXZlbnRzV2F0Y2hlcnMuZGVsZXRlKHdhdGNoUGF0aCk7XG4gICAgICBpZiAoY29udC53YXRjaGVyKSByZXR1cm4gY29udC53YXRjaGVyLnN0b3AoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29udC5yYXdFbWl0dGVyID0gY29udC53YXRjaGVyID0gdW5kZWZpbmVkO1xuICAgICAgICBPYmplY3QuZnJlZXplKGNvbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vLyBEZWNpZGUgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHN0YXJ0IGEgbmV3IGhpZ2hlci1sZXZlbFxuLy8gcGFyZW50IHdhdGNoZXJcbmNvbnN0IGNvdWxkQ29uc29saWRhdGUgPSAocGF0aCkgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBmb3IgKGNvbnN0IHdhdGNoUGF0aCBvZiBGU0V2ZW50c1dhdGNoZXJzLmtleXMoKSkge1xuICAgIGlmICh3YXRjaFBhdGguaW5kZXhPZihwYXRoKSA9PT0gMCkge1xuICAgICAgY291bnQrKztcbiAgICAgIGlmIChjb3VudCA+PSBjb25zb2xpZGF0ZVRocmVzaGhvbGQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gcmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBmc2V2ZW50cyBjYW4gYmUgdXNlZFxuY29uc3QgY2FuVXNlID0gKCkgPT4gZnNldmVudHMgJiYgRlNFdmVudHNXYXRjaGVycy5zaXplIDwgMTI4O1xuXG4vLyBkZXRlcm1pbmVzIHN1YmRpcmVjdG9yeSB0cmF2ZXJzYWwgbGV2ZWxzIGZyb20gcm9vdCB0byBwYXRoXG5jb25zdCBjYWxjRGVwdGggPSAocGF0aCwgcm9vdCkgPT4ge1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlICghcGF0aC5pbmRleE9mKHJvb3QpICYmIChwYXRoID0gc3lzUGF0aC5kaXJuYW1lKHBhdGgpKSAhPT0gcm9vdCkgaSsrO1xuICByZXR1cm4gaTtcbn07XG5cbi8vIHJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZzZXZlbnRzJyBldmVudCBpbmZvIGhhcyB0aGUgc2FtZSB0eXBlXG4vLyBhcyB0aGUgb25lIHJldHVybmVkIGJ5IGZzLnN0YXRcbmNvbnN0IHNhbWVUeXBlcyA9IChpbmZvLCBzdGF0cykgPT4gKFxuICBpbmZvLnR5cGUgPT09IEZTRVZFTlRfVFlQRV9ESVJFQ1RPUlkgJiYgc3RhdHMuaXNEaXJlY3RvcnkoKSB8fFxuICBpbmZvLnR5cGUgPT09IEZTRVZFTlRfVFlQRV9TWU1MSU5LICYmIHN0YXRzLmlzU3ltYm9saWNMaW5rKCkgfHxcbiAgaW5mby50eXBlID09PSBGU0VWRU5UX1RZUEVfRklMRSAmJiBzdGF0cy5pc0ZpbGUoKVxuKVxuXG4vKipcbiAqIEBtaXhpblxuICovXG5jbGFzcyBGc0V2ZW50c0hhbmRsZXIge1xuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbmRleCcpLkZTV2F0Y2hlcn0gZnN3XG4gKi9cbmNvbnN0cnVjdG9yKGZzdykge1xuICB0aGlzLmZzdyA9IGZzdztcbn1cbmNoZWNrSWdub3JlZChwYXRoLCBzdGF0cykge1xuICBjb25zdCBpcGF0aHMgPSB0aGlzLmZzdy5faWdub3JlZFBhdGhzO1xuICBpZiAodGhpcy5mc3cuX2lzSWdub3JlZChwYXRoLCBzdGF0cykpIHtcbiAgICBpcGF0aHMuYWRkKHBhdGgpO1xuICAgIGlmIChzdGF0cyAmJiBzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBpcGF0aHMuYWRkKHBhdGggKyBST09UX0dMT0JTVEFSKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpcGF0aHMuZGVsZXRlKHBhdGgpO1xuICBpcGF0aHMuZGVsZXRlKHBhdGggKyBST09UX0dMT0JTVEFSKTtcbn1cblxuYWRkT3JDaGFuZ2UocGF0aCwgZnVsbFBhdGgsIHJlYWxQYXRoLCBwYXJlbnQsIHdhdGNoZWREaXIsIGl0ZW0sIGluZm8sIG9wdHMpIHtcbiAgY29uc3QgZXZlbnQgPSB3YXRjaGVkRGlyLmhhcyhpdGVtKSA/IEVWX0NIQU5HRSA6IEVWX0FERDtcbiAgdGhpcy5oYW5kbGVFdmVudChldmVudCwgcGF0aCwgZnVsbFBhdGgsIHJlYWxQYXRoLCBwYXJlbnQsIHdhdGNoZWREaXIsIGl0ZW0sIGluZm8sIG9wdHMpO1xufVxuXG5hc3luYyBjaGVja0V4aXN0cyhwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cykge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgc3RhdChwYXRoKVxuICAgIGlmICh0aGlzLmZzdy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAoc2FtZVR5cGVzKGluZm8sIHN0YXRzKSkge1xuICAgICAgdGhpcy5hZGRPckNoYW5nZShwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlRXZlbnQoRVZfVU5MSU5LLCBwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvci5jb2RlID09PSAnRUFDQ0VTJykge1xuICAgICAgdGhpcy5hZGRPckNoYW5nZShwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlRXZlbnQoRVZfVU5MSU5LLCBwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgfVxuICB9XG59XG5cbmhhbmRsZUV2ZW50KGV2ZW50LCBwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cykge1xuICBpZiAodGhpcy5mc3cuY2xvc2VkIHx8IHRoaXMuY2hlY2tJZ25vcmVkKHBhdGgpKSByZXR1cm47XG5cbiAgaWYgKGV2ZW50ID09PSBFVl9VTkxJTkspIHtcbiAgICBjb25zdCBpc0RpcmVjdG9yeSA9IGluZm8udHlwZSA9PT0gRlNFVkVOVF9UWVBFX0RJUkVDVE9SWVxuICAgIC8vIHN1cHByZXNzIHVubGluayBldmVudHMgb24gbmV2ZXIgYmVmb3JlIHNlZW4gZmlsZXNcbiAgICBpZiAoaXNEaXJlY3RvcnkgfHwgd2F0Y2hlZERpci5oYXMoaXRlbSkpIHtcbiAgICAgIHRoaXMuZnN3Ll9yZW1vdmUocGFyZW50LCBpdGVtLCBpc0RpcmVjdG9yeSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChldmVudCA9PT0gRVZfQUREKSB7XG4gICAgICAvLyB0cmFjayBuZXcgZGlyZWN0b3JpZXNcbiAgICAgIGlmIChpbmZvLnR5cGUgPT09IEZTRVZFTlRfVFlQRV9ESVJFQ1RPUlkpIHRoaXMuZnN3Ll9nZXRXYXRjaGVkRGlyKHBhdGgpO1xuXG4gICAgICBpZiAoaW5mby50eXBlID09PSBGU0VWRU5UX1RZUEVfU1lNTElOSyAmJiBvcHRzLmZvbGxvd1N5bWxpbmtzKSB7XG4gICAgICAgIC8vIHB1c2ggc3ltbGlua3MgYmFjayB0byB0aGUgdG9wIG9mIHRoZSBzdGFjayB0byBnZXQgaGFuZGxlZFxuICAgICAgICBjb25zdCBjdXJEZXB0aCA9IG9wdHMuZGVwdGggPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgdW5kZWZpbmVkIDogY2FsY0RlcHRoKGZ1bGxQYXRoLCByZWFsUGF0aCkgKyAxO1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkVG9Gc0V2ZW50cyhwYXRoLCBmYWxzZSwgdHJ1ZSwgY3VyRGVwdGgpO1xuICAgICAgfVxuXG4gICAgICAvLyB0cmFjayBuZXcgcGF0aHNcbiAgICAgIC8vIChvdGhlciB0aGFuIHN5bWxpbmtzIGJlaW5nIGZvbGxvd2VkLCB3aGljaCB3aWxsIGJlIHRyYWNrZWQgc29vbilcbiAgICAgIHRoaXMuZnN3Ll9nZXRXYXRjaGVkRGlyKHBhcmVudCkuYWRkKGl0ZW0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7J2FkZCd8J2FkZERpcid8J3VubGluayd8J3VubGlua0Rpcid9XG4gICAgICovXG4gICAgY29uc3QgZXZlbnROYW1lID0gaW5mby50eXBlID09PSBGU0VWRU5UX1RZUEVfRElSRUNUT1JZID8gZXZlbnQgKyBESVJfU1VGRklYIDogZXZlbnQ7XG4gICAgdGhpcy5mc3cuX2VtaXQoZXZlbnROYW1lLCBwYXRoKTtcbiAgICBpZiAoZXZlbnROYW1lID09PSBFVl9BRERfRElSKSB0aGlzLl9hZGRUb0ZzRXZlbnRzKHBhdGgsIGZhbHNlLCB0cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIEhhbmRsZSBzeW1saW5rcyBlbmNvdW50ZXJlZCBkdXJpbmcgZGlyZWN0b3J5IHNjYW5cbiAqIEBwYXJhbSB7U3RyaW5nfSB3YXRjaFBhdGggIC0gZmlsZS9kaXIgcGF0aCB0byBiZSB3YXRjaGVkIHdpdGggZnNldmVudHNcbiAqIEBwYXJhbSB7U3RyaW5nfSByZWFsUGF0aCAgIC0gcmVhbCBwYXRoIChpbiBjYXNlIG9mIHN5bWxpbmtzKVxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtICAtIHBhdGggdHJhbnNmb3JtZXJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGdsb2JGaWx0ZXIgLSBwYXRoIGZpbHRlciBpbiBjYXNlIGEgZ2xvYiBwYXR0ZXJuIHdhcyBwcm92aWRlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBjbG9zZXIgZm9yIHRoZSB3YXRjaGVyIGluc3RhbmNlXG4qL1xuX3dhdGNoV2l0aEZzRXZlbnRzKHdhdGNoUGF0aCwgcmVhbFBhdGgsIHRyYW5zZm9ybSwgZ2xvYkZpbHRlcikge1xuICBpZiAodGhpcy5mc3cuY2xvc2VkIHx8IHRoaXMuZnN3Ll9pc0lnbm9yZWQod2F0Y2hQYXRoKSkgcmV0dXJuO1xuICBjb25zdCBvcHRzID0gdGhpcy5mc3cub3B0aW9ucztcbiAgY29uc3Qgd2F0Y2hDYWxsYmFjayA9IGFzeW5jIChmdWxsUGF0aCwgZmxhZ3MsIGluZm8pID0+IHtcbiAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKFxuICAgICAgb3B0cy5kZXB0aCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjYWxjRGVwdGgoZnVsbFBhdGgsIHJlYWxQYXRoKSA+IG9wdHMuZGVwdGhcbiAgICApIHJldHVybjtcbiAgICBjb25zdCBwYXRoID0gdHJhbnNmb3JtKHN5c1BhdGguam9pbihcbiAgICAgIHdhdGNoUGF0aCwgc3lzUGF0aC5yZWxhdGl2ZSh3YXRjaFBhdGgsIGZ1bGxQYXRoKVxuICAgICkpO1xuICAgIGlmIChnbG9iRmlsdGVyICYmICFnbG9iRmlsdGVyKHBhdGgpKSByZXR1cm47XG4gICAgLy8gZW5zdXJlIGRpcmVjdG9yaWVzIGFyZSB0cmFja2VkXG4gICAgY29uc3QgcGFyZW50ID0gc3lzUGF0aC5kaXJuYW1lKHBhdGgpO1xuICAgIGNvbnN0IGl0ZW0gPSBzeXNQYXRoLmJhc2VuYW1lKHBhdGgpO1xuICAgIGNvbnN0IHdhdGNoZWREaXIgPSB0aGlzLmZzdy5fZ2V0V2F0Y2hlZERpcihcbiAgICAgIGluZm8udHlwZSA9PT0gRlNFVkVOVF9UWVBFX0RJUkVDVE9SWSA/IHBhdGggOiBwYXJlbnRcbiAgICApO1xuXG4gICAgLy8gY29ycmVjdCBmb3Igd3JvbmcgZXZlbnRzIGVtaXR0ZWRcbiAgICBpZiAod3JvbmdFdmVudEZsYWdzLmhhcyhmbGFncykgfHwgaW5mby5ldmVudCA9PT0gRlNFVkVOVF9VTktOT1dOKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMuaWdub3JlZCA9PT0gRlVOQ1RJT05fVFlQRSkge1xuICAgICAgICBsZXQgc3RhdHM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3RhdHMgPSBhd2FpdCBzdGF0KHBhdGgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5jaGVja0lnbm9yZWQocGF0aCwgc3RhdHMpKSByZXR1cm47XG4gICAgICAgIGlmIChzYW1lVHlwZXMoaW5mbywgc3RhdHMpKSB7XG4gICAgICAgICAgdGhpcy5hZGRPckNoYW5nZShwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFdmVudChFVl9VTkxJTkssIHBhdGgsIGZ1bGxQYXRoLCByZWFsUGF0aCwgcGFyZW50LCB3YXRjaGVkRGlyLCBpdGVtLCBpbmZvLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja0V4aXN0cyhwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoaW5mby5ldmVudCkge1xuICAgICAgY2FzZSBGU0VWRU5UX0NSRUFURUQ6XG4gICAgICBjYXNlIEZTRVZFTlRfTU9ESUZJRUQ6XG4gICAgICAgIHJldHVybiB0aGlzLmFkZE9yQ2hhbmdlKHBhdGgsIGZ1bGxQYXRoLCByZWFsUGF0aCwgcGFyZW50LCB3YXRjaGVkRGlyLCBpdGVtLCBpbmZvLCBvcHRzKTtcbiAgICAgIGNhc2UgRlNFVkVOVF9ERUxFVEVEOlxuICAgICAgY2FzZSBGU0VWRU5UX01PVkVEOlxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0V4aXN0cyhwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlciA9IHNldEZTRXZlbnRzTGlzdGVuZXIoXG4gICAgd2F0Y2hQYXRoLFxuICAgIHJlYWxQYXRoLFxuICAgIHdhdGNoQ2FsbGJhY2ssXG4gICAgdGhpcy5mc3cuX2VtaXRSYXdcbiAgKTtcblxuICB0aGlzLmZzdy5fZW1pdFJlYWR5KCk7XG4gIHJldHVybiBjbG9zZXI7XG59XG5cbi8qKlxuICogSGFuZGxlIHN5bWxpbmtzIGVuY291bnRlcmVkIGR1cmluZyBkaXJlY3Rvcnkgc2NhblxuICogQHBhcmFtIHtTdHJpbmd9IGxpbmtQYXRoIHBhdGggdG8gc3ltbGlua1xuICogQHBhcmFtIHtTdHJpbmd9IGZ1bGxQYXRoIGFic29sdXRlIHBhdGggdG8gdGhlIHN5bWxpbmtcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBwcmUtZXhpc3RpbmcgcGF0aCB0cmFuc2Zvcm1lclxuICogQHBhcmFtIHtOdW1iZXJ9IGN1ckRlcHRoIGxldmVsIG9mIHN1YmRpcmVjdG9yaWVzIHRyYXZlcnNlZCB0byB3aGVyZSBzeW1saW5rIGlzXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuYXN5bmMgX2hhbmRsZUZzRXZlbnRzU3ltbGluayhsaW5rUGF0aCwgZnVsbFBhdGgsIHRyYW5zZm9ybSwgY3VyRGVwdGgpIHtcbiAgLy8gZG9uJ3QgZm9sbG93IHRoZSBzYW1lIHN5bWxpbmsgbW9yZSB0aGFuIG9uY2VcbiAgaWYgKHRoaXMuZnN3LmNsb3NlZCB8fCB0aGlzLmZzdy5fc3ltbGlua1BhdGhzLmhhcyhmdWxsUGF0aCkpIHJldHVybjtcblxuICB0aGlzLmZzdy5fc3ltbGlua1BhdGhzLnNldChmdWxsUGF0aCwgdHJ1ZSk7XG4gIHRoaXMuZnN3Ll9pbmNyUmVhZHlDb3VudCgpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbGlua1RhcmdldCA9IGF3YWl0IHJlYWxwYXRoKGxpbmtQYXRoKTtcbiAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZnN3Ll9pc0lnbm9yZWQobGlua1RhcmdldCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmZzdy5fZW1pdFJlYWR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5mc3cuX2luY3JSZWFkeUNvdW50KCk7XG5cbiAgICAvLyBhZGQgdGhlIGxpbmtUYXJnZXQgZm9yIHdhdGNoaW5nIHdpdGggYSB3cmFwcGVyIGZvciB0cmFuc2Zvcm1cbiAgICAvLyB0aGF0IGNhdXNlcyBlbWl0dGVkIHBhdGhzIHRvIGluY29ycG9yYXRlIHRoZSBsaW5rJ3MgcGF0aFxuICAgIHRoaXMuX2FkZFRvRnNFdmVudHMobGlua1RhcmdldCB8fCBsaW5rUGF0aCwgKHBhdGgpID0+IHtcbiAgICAgIGxldCBhbGlhc2VkUGF0aCA9IGxpbmtQYXRoO1xuICAgICAgaWYgKGxpbmtUYXJnZXQgJiYgbGlua1RhcmdldCAhPT0gRE9UX1NMQVNIKSB7XG4gICAgICAgIGFsaWFzZWRQYXRoID0gcGF0aC5yZXBsYWNlKGxpbmtUYXJnZXQsIGxpbmtQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAocGF0aCAhPT0gRE9UX1NMQVNIKSB7XG4gICAgICAgIGFsaWFzZWRQYXRoID0gc3lzUGF0aC5qb2luKGxpbmtQYXRoLCBwYXRoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cmFuc2Zvcm0oYWxpYXNlZFBhdGgpO1xuICAgIH0sIGZhbHNlLCBjdXJEZXB0aCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZiAodGhpcy5mc3cuX2hhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZnN3Ll9lbWl0UmVhZHkoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtQYXRofSBuZXdQYXRoXG4gKiBAcGFyYW0ge2ZzLlN0YXRzfSBzdGF0c1xuICovXG5lbWl0QWRkKG5ld1BhdGgsIHN0YXRzLCBwcm9jZXNzUGF0aCwgb3B0cywgZm9yY2VBZGQpIHtcbiAgY29uc3QgcHAgPSBwcm9jZXNzUGF0aChuZXdQYXRoKTtcbiAgY29uc3QgaXNEaXIgPSBzdGF0cy5pc0RpcmVjdG9yeSgpO1xuICBjb25zdCBkaXJPYmogPSB0aGlzLmZzdy5fZ2V0V2F0Y2hlZERpcihzeXNQYXRoLmRpcm5hbWUocHApKTtcbiAgY29uc3QgYmFzZSA9IHN5c1BhdGguYmFzZW5hbWUocHApO1xuXG4gIC8vIGVuc3VyZSBlbXB0eSBkaXJzIGdldCB0cmFja2VkXG4gIGlmIChpc0RpcikgdGhpcy5mc3cuX2dldFdhdGNoZWREaXIocHApO1xuICBpZiAoZGlyT2JqLmhhcyhiYXNlKSkgcmV0dXJuO1xuICBkaXJPYmouYWRkKGJhc2UpO1xuXG4gIGlmICghb3B0cy5pZ25vcmVJbml0aWFsIHx8IGZvcmNlQWRkID09PSB0cnVlKSB7XG4gICAgdGhpcy5mc3cuX2VtaXQoaXNEaXIgPyBFVl9BRERfRElSIDogRVZfQURELCBwcCwgc3RhdHMpO1xuICB9XG59XG5cbmluaXRXYXRjaChyZWFsUGF0aCwgcGF0aCwgd2gsIHByb2Nlc3NQYXRoKSB7XG4gIGlmICh0aGlzLmZzdy5jbG9zZWQpIHJldHVybjtcbiAgY29uc3QgY2xvc2VyID0gdGhpcy5fd2F0Y2hXaXRoRnNFdmVudHMoXG4gICAgd2gud2F0Y2hQYXRoLFxuICAgIHN5c1BhdGgucmVzb2x2ZShyZWFsUGF0aCB8fCB3aC53YXRjaFBhdGgpLFxuICAgIHByb2Nlc3NQYXRoLFxuICAgIHdoLmdsb2JGaWx0ZXJcbiAgKTtcbiAgdGhpcy5mc3cuX2FkZFBhdGhDbG9zZXIocGF0aCwgY2xvc2VyKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgYWRkZWQgcGF0aCB3aXRoIGZzZXZlbnRzXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aCBmaWxlL2RpciBwYXRoIG9yIGdsb2IgcGF0dGVyblxuICogQHBhcmFtIHtGdW5jdGlvbnxCb29sZWFuPX0gdHJhbnNmb3JtIGNvbnZlcnRzIHdvcmtpbmcgcGF0aCB0byB3aGF0IHRoZSB1c2VyIGV4cGVjdHNcbiAqIEBwYXJhbSB7Qm9vbGVhbj19IGZvcmNlQWRkIGVuc3VyZSBhZGQgaXMgZW1pdHRlZFxuICogQHBhcmFtIHtOdW1iZXI9fSBwcmlvckRlcHRoIExldmVsIG9mIHN1YmRpcmVjdG9yaWVzIGFscmVhZHkgdHJhdmVyc2VkLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIF9hZGRUb0ZzRXZlbnRzKHBhdGgsIHRyYW5zZm9ybSwgZm9yY2VBZGQsIHByaW9yRGVwdGgpIHtcbiAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBvcHRzID0gdGhpcy5mc3cub3B0aW9ucztcbiAgY29uc3QgcHJvY2Vzc1BhdGggPSB0eXBlb2YgdHJhbnNmb3JtID09PSBGVU5DVElPTl9UWVBFID8gdHJhbnNmb3JtIDogSURFTlRJVFlfRk47XG5cbiAgY29uc3Qgd2ggPSB0aGlzLmZzdy5fZ2V0V2F0Y2hIZWxwZXJzKHBhdGgpO1xuXG4gIC8vIGV2YWx1YXRlIHdoYXQgaXMgYXQgdGhlIHBhdGggd2UncmUgYmVpbmcgYXNrZWQgdG8gd2F0Y2hcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IHN0YXRNZXRob2RzW3doLnN0YXRNZXRob2RdKHdoLndhdGNoUGF0aCk7XG4gICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZzdy5faXNJZ25vcmVkKHdoLndhdGNoUGF0aCwgc3RhdHMpKSB7XG4gICAgICB0aHJvdyBudWxsO1xuICAgIH1cbiAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgLy8gZW1pdCBhZGREaXIgdW5sZXNzIHRoaXMgaXMgYSBnbG9iIHBhcmVudFxuICAgICAgaWYgKCF3aC5nbG9iRmlsdGVyKSB0aGlzLmVtaXRBZGQocHJvY2Vzc1BhdGgocGF0aCksIHN0YXRzLCBwcm9jZXNzUGF0aCwgb3B0cywgZm9yY2VBZGQpO1xuXG4gICAgICAvLyBkb24ndCByZWN1cnNlIGZ1cnRoZXIgaWYgaXQgd291bGQgZXhjZWVkIGRlcHRoIHNldHRpbmdcbiAgICAgIGlmIChwcmlvckRlcHRoICYmIHByaW9yRGVwdGggPiBvcHRzLmRlcHRoKSByZXR1cm47XG5cbiAgICAgIC8vIHNjYW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBkaXJcbiAgICAgIHRoaXMuZnN3Ll9yZWFkZGlycCh3aC53YXRjaFBhdGgsIHtcbiAgICAgICAgZmlsZUZpbHRlcjogZW50cnkgPT4gd2guZmlsdGVyUGF0aChlbnRyeSksXG4gICAgICAgIGRpcmVjdG9yeUZpbHRlcjogZW50cnkgPT4gd2guZmlsdGVyRGlyKGVudHJ5KSxcbiAgICAgICAgLi4uRGVwdGgob3B0cy5kZXB0aCAtIChwcmlvckRlcHRoIHx8IDApKVxuICAgICAgfSkub24oU1RSX0RBVEEsIChlbnRyeSkgPT4ge1xuICAgICAgICAvLyBuZWVkIHRvIGNoZWNrIGZpbHRlclBhdGggb24gZGlycyBiL2MgZmlsdGVyRGlyIGlzIGxlc3MgcmVzdHJpY3RpdmVcbiAgICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW50cnkuc3RhdHMuaXNEaXJlY3RvcnkoKSAmJiAhd2guZmlsdGVyUGF0aChlbnRyeSkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBqb2luZWRQYXRoID0gc3lzUGF0aC5qb2luKHdoLndhdGNoUGF0aCwgZW50cnkucGF0aCk7XG4gICAgICAgIGNvbnN0IHtmdWxsUGF0aH0gPSBlbnRyeTtcblxuICAgICAgICBpZiAod2guZm9sbG93U3ltbGlua3MgJiYgZW50cnkuc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgICAgIC8vIHByZXNlcnZlIHRoZSBjdXJyZW50IGRlcHRoIGhlcmUgc2luY2UgaXQgY2FuJ3QgYmUgZGVyaXZlZCBmcm9tXG4gICAgICAgICAgLy8gcmVhbCBwYXRocyBwYXN0IHRoZSBzeW1saW5rXG4gICAgICAgICAgY29uc3QgY3VyRGVwdGggPSBvcHRzLmRlcHRoID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgdW5kZWZpbmVkIDogY2FsY0RlcHRoKGpvaW5lZFBhdGgsIHN5c1BhdGgucmVzb2x2ZSh3aC53YXRjaFBhdGgpKSArIDE7XG5cbiAgICAgICAgICB0aGlzLl9oYW5kbGVGc0V2ZW50c1N5bWxpbmsoam9pbmVkUGF0aCwgZnVsbFBhdGgsIHByb2Nlc3NQYXRoLCBjdXJEZXB0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0QWRkKGpvaW5lZFBhdGgsIGVudHJ5LnN0YXRzLCBwcm9jZXNzUGF0aCwgb3B0cywgZm9yY2VBZGQpO1xuICAgICAgICB9XG4gICAgICB9KS5vbihFVl9FUlJPUiwgRU1QVFlfRk4pLm9uKFNUUl9FTkQsICgpID0+IHtcbiAgICAgICAgdGhpcy5mc3cuX2VtaXRSZWFkeSgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdEFkZCh3aC53YXRjaFBhdGgsIHN0YXRzLCBwcm9jZXNzUGF0aCwgb3B0cywgZm9yY2VBZGQpO1xuICAgICAgdGhpcy5mc3cuX2VtaXRSZWFkeSgpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIWVycm9yIHx8IHRoaXMuZnN3Ll9oYW5kbGVFcnJvcihlcnJvcikpIHtcbiAgICAgIC8vIFRPRE86IFN0cmFuZ2UgdGhpbmc6IFwic2hvdWxkIG5vdCBjaG9rZSBvbiBhbiBpZ25vcmVkIHdhdGNoIHBhdGhcIiB3aWxsIGJlIGZhaWxlZCB3aXRob3V0IDIgcmVhZHkgY2FsbHMgLV9fLVxuICAgICAgdGhpcy5mc3cuX2VtaXRSZWFkeSgpO1xuICAgICAgdGhpcy5mc3cuX2VtaXRSZWFkeSgpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLnBlcnNpc3RlbnQgJiYgZm9yY2VBZGQgIT09IHRydWUpIHtcbiAgICBpZiAodHlwZW9mIHRyYW5zZm9ybSA9PT0gRlVOQ1RJT05fVFlQRSkge1xuICAgICAgLy8gcmVhbHBhdGggaGFzIGFscmVhZHkgYmVlbiByZXNvbHZlZFxuICAgICAgdGhpcy5pbml0V2F0Y2godW5kZWZpbmVkLCBwYXRoLCB3aCwgcHJvY2Vzc1BhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVhbFBhdGg7XG4gICAgICB0cnkge1xuICAgICAgICByZWFsUGF0aCA9IGF3YWl0IHJlYWxwYXRoKHdoLndhdGNoUGF0aCk7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgdGhpcy5pbml0V2F0Y2gocmVhbFBhdGgsIHBhdGgsIHdoLCBwcm9jZXNzUGF0aCk7XG4gICAgfVxuICB9XG59XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBGc0V2ZW50c0hhbmRsZXI7XG5tb2R1bGUuZXhwb3J0cy5jYW5Vc2UgPSBjYW5Vc2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHsgRXZlbnRFbWl0dGVyIH0gPSByZXF1aXJlKCdldmVudHMnKTtcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHN5c1BhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB7IHByb21pc2lmeSB9ID0gcmVxdWlyZSgndXRpbCcpO1xuY29uc3QgcmVhZGRpcnAgPSByZXF1aXJlKCdyZWFkZGlycCcpO1xuY29uc3QgYW55bWF0Y2ggPSByZXF1aXJlKCdhbnltYXRjaCcpLmRlZmF1bHQ7XG5jb25zdCBnbG9iUGFyZW50ID0gcmVxdWlyZSgnZ2xvYi1wYXJlbnQnKTtcbmNvbnN0IGlzR2xvYiA9IHJlcXVpcmUoJ2lzLWdsb2InKTtcbmNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuY29uc3Qgbm9ybWFsaXplUGF0aCA9IHJlcXVpcmUoJ25vcm1hbGl6ZS1wYXRoJyk7XG5cbmNvbnN0IE5vZGVGc0hhbmRsZXIgPSByZXF1aXJlKCcuL2xpYi9ub2RlZnMtaGFuZGxlcicpO1xuY29uc3QgRnNFdmVudHNIYW5kbGVyID0gcmVxdWlyZSgnLi9saWIvZnNldmVudHMtaGFuZGxlcicpO1xuY29uc3Qge1xuICBFVl9BTEwsXG4gIEVWX1JFQURZLFxuICBFVl9BREQsXG4gIEVWX0NIQU5HRSxcbiAgRVZfVU5MSU5LLFxuICBFVl9BRERfRElSLFxuICBFVl9VTkxJTktfRElSLFxuICBFVl9SQVcsXG4gIEVWX0VSUk9SLFxuXG4gIFNUUl9DTE9TRSxcbiAgU1RSX0VORCxcblxuICBCQUNLX1NMQVNIX1JFLFxuICBET1VCTEVfU0xBU0hfUkUsXG4gIFNMQVNIX09SX0JBQ0tfU0xBU0hfUkUsXG4gIERPVF9SRSxcbiAgUkVQTEFDRVJfUkUsXG5cbiAgU0xBU0gsXG4gIFNMQVNIX1NMQVNILFxuICBCUkFDRV9TVEFSVCxcbiAgQkFORyxcbiAgT05FX0RPVCxcbiAgVFdPX0RPVFMsXG4gIEdMT0JTVEFSLFxuICBTTEFTSF9HTE9CU1RBUixcbiAgQU5ZTUFUQ0hfT1BUUyxcbiAgU1RSSU5HX1RZUEUsXG4gIEZVTkNUSU9OX1RZUEUsXG4gIEVNUFRZX1NUUixcbiAgRU1QVFlfRk4sXG5cbiAgaXNXaW5kb3dzLFxuICBpc01hY29zXG59ID0gcmVxdWlyZSgnLi9saWIvY29uc3RhbnRzJyk7XG5cbmNvbnN0IHN0YXQgPSBwcm9taXNpZnkoZnMuc3RhdCk7XG5jb25zdCByZWFkZGlyID0gcHJvbWlzaWZ5KGZzLnJlYWRkaXIpO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtTdHJpbmd9IFBhdGhcbiAqIEB0eXBlZGVmIHsnYWxsJ3wnYWRkJ3wnYWRkRGlyJ3wnY2hhbmdlJ3wndW5saW5rJ3wndW5saW5rRGlyJ3wncmF3J3wnZXJyb3InfCdyZWFkeSd9IEV2ZW50TmFtZVxuICogQHR5cGVkZWYgeydyZWFkZGlyJ3wnd2F0Y2gnfCdhZGQnfCdyZW1vdmUnfCdjaGFuZ2UnfSBUaHJvdHRsZVR5cGVcbiAqL1xuXG4vKipcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXYXRjaEhlbHBlcnNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZm9sbG93U3ltbGlua3NcbiAqIEBwcm9wZXJ0eSB7J3N0YXQnfCdsc3RhdCd9IHN0YXRNZXRob2RcbiAqIEBwcm9wZXJ0eSB7UGF0aH0gcGF0aFxuICogQHByb3BlcnR5IHtQYXRofSB3YXRjaFBhdGhcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGVudHJ5UGF0aFxuICogQHByb3BlcnR5IHtCb29sZWFufSBoYXNHbG9iXG4gKiBAcHJvcGVydHkge09iamVjdH0gZ2xvYkZpbHRlclxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gZmlsdGVyUGF0aFxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gZmlsdGVyRGlyXG4gKi9cblxuY29uc3QgYXJyaWZ5ID0gKHZhbHVlID0gW10pID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuY29uc3QgZmxhdHRlbiA9IChsaXN0LCByZXN1bHQgPSBbXSkgPT4ge1xuICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGZsYXR0ZW4oaXRlbSwgcmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHVuaWZ5UGF0aHMgPSAocGF0aHNfKSA9PiB7XG4gIC8qKlxuICAgKiBAdHlwZSB7QXJyYXk8U3RyaW5nPn1cbiAgICovXG4gIGNvbnN0IHBhdGhzID0gZmxhdHRlbihhcnJpZnkocGF0aHNfKSk7XG4gIGlmICghcGF0aHMuZXZlcnkocCA9PiB0eXBlb2YgcCA9PT0gU1RSSU5HX1RZUEUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm9uLXN0cmluZyBwcm92aWRlZCBhcyB3YXRjaCBwYXRoOiAke3BhdGhzfWApO1xuICB9XG4gIHJldHVybiBwYXRocy5tYXAobm9ybWFsaXplUGF0aFRvVW5peCk7XG59O1xuXG4vLyBJZiBTTEFTSF9TTEFTSCBvY2N1cnMgYXQgdGhlIGJlZ2lubmluZyBvZiBwYXRoLCBpdCBpcyBub3QgcmVwbGFjZWRcbi8vICAgICBiZWNhdXNlIFwiLy9TdG9yYWdlUEMvRHJpdmVQb29sL01vdmllc1wiIGlzIGEgdmFsaWQgbmV0d29yayBwYXRoXG5jb25zdCB0b1VuaXggPSAoc3RyaW5nKSA9PiB7XG4gIGxldCBzdHIgPSBzdHJpbmcucmVwbGFjZShCQUNLX1NMQVNIX1JFLCBTTEFTSCk7XG4gIGxldCBwcmVwZW5kID0gZmFsc2U7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChTTEFTSF9TTEFTSCkpIHtcbiAgICBwcmVwZW5kID0gdHJ1ZTtcbiAgfVxuICB3aGlsZSAoc3RyLm1hdGNoKERPVUJMRV9TTEFTSF9SRSkpIHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZShET1VCTEVfU0xBU0hfUkUsIFNMQVNIKTtcbiAgfVxuICBpZiAocHJlcGVuZCkge1xuICAgIHN0ciA9IFNMQVNIICsgc3RyO1xuICB9XG4gIHJldHVybiBzdHI7XG59O1xuXG4vLyBPdXIgdmVyc2lvbiBvZiB1cGF0aC5ub3JtYWxpemVcbi8vIFRPRE86IHRoaXMgaXMgbm90IGVxdWFsIHRvIHBhdGgtbm9ybWFsaXplIG1vZHVsZSAtIGludmVzdGlnYXRlIHdoeVxuY29uc3Qgbm9ybWFsaXplUGF0aFRvVW5peCA9IChwYXRoKSA9PiB0b1VuaXgoc3lzUGF0aC5ub3JtYWxpemUodG9Vbml4KHBhdGgpKSk7XG5cbmNvbnN0IG5vcm1hbGl6ZUlnbm9yZWQgPSAoY3dkID0gRU1QVFlfU1RSKSA9PiAocGF0aCkgPT4ge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFNUUklOR19UWVBFKSByZXR1cm4gcGF0aDtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGhUb1VuaXgoc3lzUGF0aC5pc0Fic29sdXRlKHBhdGgpID8gcGF0aCA6IHN5c1BhdGguam9pbihjd2QsIHBhdGgpKTtcbn07XG5cbmNvbnN0IGdldEFic29sdXRlUGF0aCA9IChwYXRoLCBjd2QpID0+IHtcbiAgaWYgKHN5c1BhdGguaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHJldHVybiBwYXRoO1xuICB9XG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoQkFORykpIHtcbiAgICByZXR1cm4gQkFORyArIHN5c1BhdGguam9pbihjd2QsIHBhdGguc2xpY2UoMSkpO1xuICB9XG4gIHJldHVybiBzeXNQYXRoLmpvaW4oY3dkLCBwYXRoKTtcbn07XG5cbmNvbnN0IHVuZGVmID0gKG9wdHMsIGtleSkgPT4gb3B0c1trZXldID09PSB1bmRlZmluZWQ7XG5cbi8qKlxuICogRGlyZWN0b3J5IGVudHJ5LlxuICogQHByb3BlcnR5IHtQYXRofSBwYXRoXG4gKiBAcHJvcGVydHkge1NldDxQYXRoPn0gaXRlbXNcbiAqL1xuY2xhc3MgRGlyRW50cnkge1xuICAvKipcbiAgICogQHBhcmFtIHtQYXRofSBkaXJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVtb3ZlV2F0Y2hlclxuICAgKi9cbiAgY29uc3RydWN0b3IoZGlyLCByZW1vdmVXYXRjaGVyKSB7XG4gICAgdGhpcy5wYXRoID0gZGlyO1xuICAgIHRoaXMuX3JlbW92ZVdhdGNoZXIgPSByZW1vdmVXYXRjaGVyO1xuICAgIC8qKiBAdHlwZSB7U2V0PFBhdGg+fSAqL1xuICAgIHRoaXMuaXRlbXMgPSBuZXcgU2V0KCk7XG4gIH1cblxuICBhZGQoaXRlbSkge1xuICAgIGNvbnN0IHtpdGVtc30gPSB0aGlzO1xuICAgIGlmICghaXRlbXMpIHJldHVybjtcbiAgICBpZiAoaXRlbSAhPT0gT05FX0RPVCAmJiBpdGVtICE9PSBUV09fRE9UUykgaXRlbXMuYWRkKGl0ZW0pO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlKGl0ZW0pIHtcbiAgICBjb25zdCB7aXRlbXN9ID0gdGhpcztcbiAgICBpZiAoIWl0ZW1zKSByZXR1cm47XG4gICAgaXRlbXMuZGVsZXRlKGl0ZW0pO1xuICAgIGlmIChpdGVtcy5zaXplID4gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGlyID0gdGhpcy5wYXRoO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZWFkZGlyKGRpcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodGhpcy5fcmVtb3ZlV2F0Y2hlcikge1xuICAgICAgICB0aGlzLl9yZW1vdmVXYXRjaGVyKHN5c1BhdGguZGlybmFtZShkaXIpLCBzeXNQYXRoLmJhc2VuYW1lKGRpcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhcyhpdGVtKSB7XG4gICAgY29uc3Qge2l0ZW1zfSA9IHRoaXM7XG4gICAgaWYgKCFpdGVtcykgcmV0dXJuO1xuICAgIHJldHVybiBpdGVtcy5oYXMoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge0FycmF5PFN0cmluZz59XG4gICAqL1xuICBnZXRDaGlsZHJlbigpIHtcbiAgICBjb25zdCB7aXRlbXN9ID0gdGhpcztcbiAgICBpZiAoIWl0ZW1zKSByZXR1cm47XG4gICAgcmV0dXJuIFsuLi5pdGVtcy52YWx1ZXMoKV07XG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuaXRlbXMuY2xlYXIoKTtcbiAgICBkZWxldGUgdGhpcy5wYXRoO1xuICAgIGRlbGV0ZSB0aGlzLl9yZW1vdmVXYXRjaGVyO1xuICAgIGRlbGV0ZSB0aGlzLml0ZW1zO1xuICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gIH1cbn1cblxuY29uc3QgU1RBVF9NRVRIT0RfRiA9ICdzdGF0JztcbmNvbnN0IFNUQVRfTUVUSE9EX0wgPSAnbHN0YXQnO1xuY2xhc3MgV2F0Y2hIZWxwZXIge1xuICBjb25zdHJ1Y3RvcihwYXRoLCB3YXRjaFBhdGgsIGZvbGxvdywgZnN3KSB7XG4gICAgdGhpcy5mc3cgPSBmc3c7XG4gICAgdGhpcy5wYXRoID0gcGF0aCA9IHBhdGgucmVwbGFjZShSRVBMQUNFUl9SRSwgRU1QVFlfU1RSKTtcbiAgICB0aGlzLndhdGNoUGF0aCA9IHdhdGNoUGF0aDtcbiAgICB0aGlzLmZ1bGxXYXRjaFBhdGggPSBzeXNQYXRoLnJlc29sdmUod2F0Y2hQYXRoKTtcbiAgICB0aGlzLmhhc0dsb2IgPSB3YXRjaFBhdGggIT09IHBhdGg7XG4gICAgLyoqIEB0eXBlIHtvYmplY3R8Ym9vbGVhbn0gKi9cbiAgICBpZiAocGF0aCA9PT0gRU1QVFlfU1RSKSB0aGlzLmhhc0dsb2IgPSBmYWxzZTtcbiAgICB0aGlzLmdsb2JTeW1saW5rID0gdGhpcy5oYXNHbG9iICYmIGZvbGxvdyA/IHVuZGVmaW5lZCA6IGZhbHNlO1xuICAgIHRoaXMuZ2xvYkZpbHRlciA9IHRoaXMuaGFzR2xvYiA/IGFueW1hdGNoKHBhdGgsIHVuZGVmaW5lZCwgQU5ZTUFUQ0hfT1BUUykgOiBmYWxzZTtcbiAgICB0aGlzLmRpclBhcnRzID0gdGhpcy5nZXREaXJQYXJ0cyhwYXRoKTtcbiAgICB0aGlzLmRpclBhcnRzLmZvckVhY2goKHBhcnRzKSA9PiB7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkgcGFydHMucG9wKCk7XG4gICAgfSk7XG4gICAgdGhpcy5mb2xsb3dTeW1saW5rcyA9IGZvbGxvdztcbiAgICB0aGlzLnN0YXRNZXRob2QgPSBmb2xsb3cgPyBTVEFUX01FVEhPRF9GIDogU1RBVF9NRVRIT0RfTDtcbiAgfVxuXG4gIGNoZWNrR2xvYlN5bWxpbmsoZW50cnkpIHtcbiAgICAvLyBvbmx5IG5lZWQgdG8gcmVzb2x2ZSBvbmNlXG4gICAgLy8gZmlyc3QgZW50cnkgc2hvdWxkIGFsd2F5cyBoYXZlIGVudHJ5LnBhcmVudERpciA9PT0gRU1QVFlfU1RSXG4gICAgaWYgKHRoaXMuZ2xvYlN5bWxpbmsgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5nbG9iU3ltbGluayA9IGVudHJ5LmZ1bGxQYXJlbnREaXIgPT09IHRoaXMuZnVsbFdhdGNoUGF0aCA/XG4gICAgICAgIGZhbHNlIDoge3JlYWxQYXRoOiBlbnRyeS5mdWxsUGFyZW50RGlyLCBsaW5rUGF0aDogdGhpcy5mdWxsV2F0Y2hQYXRofTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nbG9iU3ltbGluaykge1xuICAgICAgcmV0dXJuIGVudHJ5LmZ1bGxQYXRoLnJlcGxhY2UodGhpcy5nbG9iU3ltbGluay5yZWFsUGF0aCwgdGhpcy5nbG9iU3ltbGluay5saW5rUGF0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudHJ5LmZ1bGxQYXRoO1xuICB9XG5cbiAgZW50cnlQYXRoKGVudHJ5KSB7XG4gICAgcmV0dXJuIHN5c1BhdGguam9pbih0aGlzLndhdGNoUGF0aCxcbiAgICAgIHN5c1BhdGgucmVsYXRpdmUodGhpcy53YXRjaFBhdGgsIHRoaXMuY2hlY2tHbG9iU3ltbGluayhlbnRyeSkpXG4gICAgKTtcbiAgfVxuXG4gIGZpbHRlclBhdGgoZW50cnkpIHtcbiAgICBjb25zdCB7c3RhdHN9ID0gZW50cnk7XG4gICAgaWYgKHN0YXRzICYmIHN0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHJldHVybiB0aGlzLmZpbHRlckRpcihlbnRyeSk7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gdGhpcy5lbnRyeVBhdGgoZW50cnkpO1xuICAgIGNvbnN0IG1hdGNoZXNHbG9iID0gdGhpcy5oYXNHbG9iICYmIHR5cGVvZiB0aGlzLmdsb2JGaWx0ZXIgPT09IEZVTkNUSU9OX1RZUEUgP1xuICAgICAgdGhpcy5nbG9iRmlsdGVyKHJlc29sdmVkUGF0aCkgOiB0cnVlO1xuICAgIHJldHVybiBtYXRjaGVzR2xvYiAmJlxuICAgICAgdGhpcy5mc3cuX2lzbnRJZ25vcmVkKHJlc29sdmVkUGF0aCwgc3RhdHMpICYmXG4gICAgICB0aGlzLmZzdy5faGFzUmVhZFBlcm1pc3Npb25zKHN0YXRzKTtcbiAgfVxuXG4gIGdldERpclBhcnRzKHBhdGgpIHtcbiAgICBpZiAoIXRoaXMuaGFzR2xvYikgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgY29uc3QgZXhwYW5kZWRQYXRoID0gcGF0aC5pbmNsdWRlcyhCUkFDRV9TVEFSVCkgPyBicmFjZXMuZXhwYW5kKHBhdGgpIDogW3BhdGhdO1xuICAgIGV4cGFuZGVkUGF0aC5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICBwYXJ0cy5wdXNoKHN5c1BhdGgucmVsYXRpdmUodGhpcy53YXRjaFBhdGgsIHBhdGgpLnNwbGl0KFNMQVNIX09SX0JBQ0tfU0xBU0hfUkUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFydHM7XG4gIH1cblxuICBmaWx0ZXJEaXIoZW50cnkpIHtcbiAgICBpZiAodGhpcy5oYXNHbG9iKSB7XG4gICAgICBjb25zdCBlbnRyeVBhcnRzID0gdGhpcy5nZXREaXJQYXJ0cyh0aGlzLmNoZWNrR2xvYlN5bWxpbmsoZW50cnkpKTtcbiAgICAgIGxldCBnbG9ic3RhciA9IGZhbHNlO1xuICAgICAgdGhpcy51bm1hdGNoZWRHbG9iID0gIXRoaXMuZGlyUGFydHMuc29tZSgocGFydHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHBhcnRzLmV2ZXJ5KChwYXJ0LCBpKSA9PiB7XG4gICAgICAgICAgaWYgKHBhcnQgPT09IEdMT0JTVEFSKSBnbG9ic3RhciA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIGdsb2JzdGFyIHx8ICFlbnRyeVBhcnRzWzBdW2ldIHx8IGFueW1hdGNoKHBhcnQsIGVudHJ5UGFydHNbMF1baV0sIEFOWU1BVENIX09QVFMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gIXRoaXMudW5tYXRjaGVkR2xvYiAmJiB0aGlzLmZzdy5faXNudElnbm9yZWQodGhpcy5lbnRyeVBhdGgoZW50cnkpLCBlbnRyeS5zdGF0cyk7XG4gIH1cbn1cblxuLyoqXG4gKiBXYXRjaGVzIGZpbGVzICYgZGlyZWN0b3JpZXMgZm9yIGNoYW5nZXMuIEVtaXR0ZWQgZXZlbnRzOlxuICogYGFkZGAsIGBhZGREaXJgLCBgY2hhbmdlYCwgYHVubGlua2AsIGB1bmxpbmtEaXJgLCBgYWxsYCwgYGVycm9yYFxuICpcbiAqICAgICBuZXcgRlNXYXRjaGVyKClcbiAqICAgICAgIC5hZGQoZGlyZWN0b3JpZXMpXG4gKiAgICAgICAub24oJ2FkZCcsIHBhdGggPT4gbG9nKCdGaWxlJywgcGF0aCwgJ3dhcyBhZGRlZCcpKVxuICovXG5jbGFzcyBGU1dhdGNoZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuLy8gTm90IGluZGVudGluZyBtZXRob2RzIGZvciBoaXN0b3J5IHNha2U7IGZvciBub3cuXG5jb25zdHJ1Y3Rvcihfb3B0cykge1xuICBzdXBlcigpO1xuXG4gIGNvbnN0IG9wdHMgPSB7fTtcbiAgaWYgKF9vcHRzKSBPYmplY3QuYXNzaWduKG9wdHMsIF9vcHRzKTsgLy8gZm9yIGZyb3plbiBvYmplY3RzXG5cbiAgLyoqIEB0eXBlIHtNYXA8U3RyaW5nLCBEaXJFbnRyeT59ICovXG4gIHRoaXMuX3dhdGNoZWQgPSBuZXcgTWFwKCk7XG4gIC8qKiBAdHlwZSB7TWFwPFN0cmluZywgQXJyYXk+fSAqL1xuICB0aGlzLl9jbG9zZXJzID0gbmV3IE1hcCgpO1xuICAvKiogQHR5cGUge1NldDxTdHJpbmc+fSAqL1xuICB0aGlzLl9pZ25vcmVkUGF0aHMgPSBuZXcgU2V0KCk7XG5cbiAgLyoqIEB0eXBlIHtNYXA8VGhyb3R0bGVUeXBlLCBNYXA+fSAqL1xuICB0aGlzLl90aHJvdHRsZWQgPSBuZXcgTWFwKCk7XG5cbiAgLyoqIEB0eXBlIHtNYXA8UGF0aCwgU3RyaW5nfEJvb2xlYW4+fSAqL1xuICB0aGlzLl9zeW1saW5rUGF0aHMgPSBuZXcgTWFwKCk7XG5cbiAgdGhpcy5fc3RyZWFtcyA9IG5ldyBTZXQoKTtcbiAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcblxuICAvLyBTZXQgdXAgZGVmYXVsdCBvcHRpb25zLlxuICBpZiAodW5kZWYob3B0cywgJ3BlcnNpc3RlbnQnKSkgb3B0cy5wZXJzaXN0ZW50ID0gdHJ1ZTtcbiAgaWYgKHVuZGVmKG9wdHMsICdpZ25vcmVJbml0aWFsJykpIG9wdHMuaWdub3JlSW5pdGlhbCA9IGZhbHNlO1xuICBpZiAodW5kZWYob3B0cywgJ2lnbm9yZVBlcm1pc3Npb25FcnJvcnMnKSkgb3B0cy5pZ25vcmVQZXJtaXNzaW9uRXJyb3JzID0gZmFsc2U7XG4gIGlmICh1bmRlZihvcHRzLCAnaW50ZXJ2YWwnKSkgb3B0cy5pbnRlcnZhbCA9IDEwMDtcbiAgaWYgKHVuZGVmKG9wdHMsICdiaW5hcnlJbnRlcnZhbCcpKSBvcHRzLmJpbmFyeUludGVydmFsID0gMzAwO1xuICBpZiAodW5kZWYob3B0cywgJ2Rpc2FibGVHbG9iYmluZycpKSBvcHRzLmRpc2FibGVHbG9iYmluZyA9IGZhbHNlO1xuICBvcHRzLmVuYWJsZUJpbmFyeUludGVydmFsID0gb3B0cy5iaW5hcnlJbnRlcnZhbCAhPT0gb3B0cy5pbnRlcnZhbDtcblxuICAvLyBFbmFibGUgZnNldmVudHMgb24gT1MgWCB3aGVuIHBvbGxpbmcgaXNuJ3QgZXhwbGljaXRseSBlbmFibGVkLlxuICBpZiAodW5kZWYob3B0cywgJ3VzZUZzRXZlbnRzJykpIG9wdHMudXNlRnNFdmVudHMgPSAhb3B0cy51c2VQb2xsaW5nO1xuXG4gIC8vIElmIHdlIGNhbid0IHVzZSBmc2V2ZW50cywgZW5zdXJlIHRoZSBvcHRpb25zIHJlZmxlY3QgaXQncyBkaXNhYmxlZC5cbiAgY29uc3QgY2FuVXNlRnNFdmVudHMgPSBGc0V2ZW50c0hhbmRsZXIuY2FuVXNlKCk7XG4gIGlmICghY2FuVXNlRnNFdmVudHMpIG9wdHMudXNlRnNFdmVudHMgPSBmYWxzZTtcblxuICAvLyBVc2UgcG9sbGluZyBvbiBNYWMgaWYgbm90IHVzaW5nIGZzZXZlbnRzLlxuICAvLyBPdGhlciBwbGF0Zm9ybXMgdXNlIG5vbi1wb2xsaW5nIGZzX3dhdGNoLlxuICBpZiAodW5kZWYob3B0cywgJ3VzZVBvbGxpbmcnKSAmJiAhb3B0cy51c2VGc0V2ZW50cykge1xuICAgIG9wdHMudXNlUG9sbGluZyA9IGlzTWFjb3M7XG4gIH1cblxuICAvLyBHbG9iYWwgb3ZlcnJpZGUgKHVzZWZ1bCBmb3IgZW5kLWRldmVsb3BlcnMgdGhhdCBuZWVkIHRvIGZvcmNlIHBvbGxpbmcgZm9yIGFsbFxuICAvLyBpbnN0YW5jZXMgb2YgY2hva2lkYXIsIHJlZ2FyZGxlc3Mgb2YgdXNhZ2UvZGVwZW5kZW5jeSBkZXB0aClcbiAgY29uc3QgZW52UG9sbCA9IHByb2Nlc3MuZW52LkNIT0tJREFSX1VTRVBPTExJTkc7XG4gIGlmIChlbnZQb2xsICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBlbnZMb3dlciA9IGVudlBvbGwudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChlbnZMb3dlciA9PT0gJ2ZhbHNlJyB8fCBlbnZMb3dlciA9PT0gJzAnKSB7XG4gICAgICBvcHRzLnVzZVBvbGxpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGVudkxvd2VyID09PSAndHJ1ZScgfHwgZW52TG93ZXIgPT09ICcxJykge1xuICAgICAgb3B0cy51c2VQb2xsaW5nID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0cy51c2VQb2xsaW5nID0gISFlbnZMb3dlcjtcbiAgICB9XG4gIH1cbiAgY29uc3QgZW52SW50ZXJ2YWwgPSBwcm9jZXNzLmVudi5DSE9LSURBUl9JTlRFUlZBTDtcbiAgaWYgKGVudkludGVydmFsKSB7XG4gICAgb3B0cy5pbnRlcnZhbCA9IE51bWJlci5wYXJzZUludChlbnZJbnRlcnZhbCwgMTApO1xuICB9XG5cbiAgLy8gRWRpdG9yIGF0b21pYyB3cml0ZSBub3JtYWxpemF0aW9uIGVuYWJsZWQgYnkgZGVmYXVsdCB3aXRoIGZzLndhdGNoXG4gIGlmICh1bmRlZihvcHRzLCAnYXRvbWljJykpIG9wdHMuYXRvbWljID0gIW9wdHMudXNlUG9sbGluZyAmJiAhb3B0cy51c2VGc0V2ZW50cztcbiAgaWYgKG9wdHMuYXRvbWljKSB0aGlzLl9wZW5kaW5nVW5saW5rcyA9IG5ldyBNYXAoKTtcblxuICBpZiAodW5kZWYob3B0cywgJ2ZvbGxvd1N5bWxpbmtzJykpIG9wdHMuZm9sbG93U3ltbGlua3MgPSB0cnVlO1xuXG4gIGlmICh1bmRlZihvcHRzLCAnYXdhaXRXcml0ZUZpbmlzaCcpKSBvcHRzLmF3YWl0V3JpdGVGaW5pc2ggPSBmYWxzZTtcbiAgaWYgKG9wdHMuYXdhaXRXcml0ZUZpbmlzaCA9PT0gdHJ1ZSkgb3B0cy5hd2FpdFdyaXRlRmluaXNoID0ge307XG4gIGNvbnN0IGF3ZiA9IG9wdHMuYXdhaXRXcml0ZUZpbmlzaDtcbiAgaWYgKGF3Zikge1xuICAgIGlmICghYXdmLnN0YWJpbGl0eVRocmVzaG9sZCkgYXdmLnN0YWJpbGl0eVRocmVzaG9sZCA9IDIwMDA7XG4gICAgaWYgKCFhd2YucG9sbEludGVydmFsKSBhd2YucG9sbEludGVydmFsID0gMTAwO1xuICAgIHRoaXMuX3BlbmRpbmdXcml0ZXMgPSBuZXcgTWFwKCk7XG4gIH1cbiAgaWYgKG9wdHMuaWdub3JlZCkgb3B0cy5pZ25vcmVkID0gYXJyaWZ5KG9wdHMuaWdub3JlZCk7XG5cbiAgbGV0IHJlYWR5Q2FsbHMgPSAwO1xuICB0aGlzLl9lbWl0UmVhZHkgPSAoKSA9PiB7XG4gICAgcmVhZHlDYWxscysrO1xuICAgIGlmIChyZWFkeUNhbGxzID49IHRoaXMuX3JlYWR5Q291bnQpIHtcbiAgICAgIHRoaXMuX2VtaXRSZWFkeSA9IEVNUFRZX0ZOO1xuICAgICAgdGhpcy5fcmVhZHlFbWl0dGVkID0gdHJ1ZTtcbiAgICAgIC8vIHVzZSBwcm9jZXNzLm5leHRUaWNrIHRvIGFsbG93IHRpbWUgZm9yIGxpc3RlbmVyIHRvIGJlIGJvdW5kXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHRoaXMuZW1pdChFVl9SRUFEWSkpO1xuICAgIH1cbiAgfTtcbiAgdGhpcy5fZW1pdFJhdyA9ICguLi5hcmdzKSA9PiB0aGlzLmVtaXQoRVZfUkFXLCAuLi5hcmdzKTtcbiAgdGhpcy5fcmVhZHlFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMub3B0aW9ucyA9IG9wdHM7XG5cbiAgLy8gSW5pdGlhbGl6ZSB3aXRoIHByb3BlciB3YXRjaGVyLlxuICBpZiAob3B0cy51c2VGc0V2ZW50cykge1xuICAgIHRoaXMuX2ZzRXZlbnRzSGFuZGxlciA9IG5ldyBGc0V2ZW50c0hhbmRsZXIodGhpcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fbm9kZUZzSGFuZGxlciA9IG5ldyBOb2RlRnNIYW5kbGVyKHRoaXMpO1xuICB9XG5cbiAgLy8gWW914oCZcmUgZnJvemVuIHdoZW4geW91ciBoZWFydOKAmXMgbm90IG9wZW4uXG4gIE9iamVjdC5mcmVlemUob3B0cyk7XG59XG5cbi8vIFB1YmxpYyBtZXRob2RzXG5cbi8qKlxuICogQWRkcyBwYXRocyB0byBiZSB3YXRjaGVkIG9uIGFuIGV4aXN0aW5nIEZTV2F0Y2hlciBpbnN0YW5jZVxuICogQHBhcmFtIHtQYXRofEFycmF5PFBhdGg+fSBwYXRoc19cbiAqIEBwYXJhbSB7U3RyaW5nPX0gX29yaWdBZGQgcHJpdmF0ZTsgZm9yIGhhbmRsaW5nIG5vbi1leGlzdGVudCBwYXRocyB0byBiZSB3YXRjaGVkXG4gKiBAcGFyYW0ge0Jvb2xlYW49fSBfaW50ZXJuYWwgcHJpdmF0ZTsgaW5kaWNhdGVzIGEgbm9uLXVzZXIgYWRkXG4gKiBAcmV0dXJucyB7RlNXYXRjaGVyfSBmb3IgY2hhaW5pbmdcbiAqL1xuYWRkKHBhdGhzXywgX29yaWdBZGQsIF9pbnRlcm5hbCkge1xuICBjb25zdCB7Y3dkLCBkaXNhYmxlR2xvYmJpbmd9ID0gdGhpcy5vcHRpb25zO1xuICB0aGlzLmNsb3NlZCA9IGZhbHNlO1xuICBsZXQgcGF0aHMgPSB1bmlmeVBhdGhzKHBhdGhzXyk7XG4gIGlmIChjd2QpIHtcbiAgICBwYXRocyA9IHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgICAgY29uc3QgYWJzUGF0aCA9IGdldEFic29sdXRlUGF0aChwYXRoLCBjd2QpO1xuXG4gICAgICAvLyBDaGVjayBgcGF0aGAgaW5zdGVhZCBvZiBgYWJzUGF0aGAgYmVjYXVzZSB0aGUgY3dkIHBvcnRpb24gY2FuJ3QgYmUgYSBnbG9iXG4gICAgICBpZiAoZGlzYWJsZUdsb2JiaW5nIHx8ICFpc0dsb2IocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIGFic1BhdGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9ybWFsaXplUGF0aChhYnNQYXRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBhc2lkZSBuZWdhdGVkIGdsb2Igc3RyaW5nc1xuICBwYXRocyA9IHBhdGhzLmZpbHRlcigocGF0aCkgPT4ge1xuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoQkFORykpIHtcbiAgICAgIHRoaXMuX2lnbm9yZWRQYXRocy5hZGQocGF0aC5zbGljZSgxKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaWYgYSBwYXRoIGlzIGJlaW5nIGFkZGVkIHRoYXQgd2FzIHByZXZpb3VzbHkgaWdub3JlZCwgc3RvcCBpZ25vcmluZyBpdFxuICAgIHRoaXMuX2lnbm9yZWRQYXRocy5kZWxldGUocGF0aCk7XG4gICAgdGhpcy5faWdub3JlZFBhdGhzLmRlbGV0ZShwYXRoICsgU0xBU0hfR0xPQlNUQVIpO1xuXG4gICAgLy8gcmVzZXQgdGhlIGNhY2hlZCB1c2VySWdub3JlZCBhbnltYXRjaCBmblxuICAgIC8vIHRvIG1ha2UgaWdub3JlZFBhdGhzIGNoYW5nZXMgZWZmZWN0aXZlXG4gICAgdGhpcy5fdXNlcklnbm9yZWQgPSB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgaWYgKHRoaXMub3B0aW9ucy51c2VGc0V2ZW50cyAmJiB0aGlzLl9mc0V2ZW50c0hhbmRsZXIpIHtcbiAgICBpZiAoIXRoaXMuX3JlYWR5Q291bnQpIHRoaXMuX3JlYWR5Q291bnQgPSBwYXRocy5sZW5ndGg7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5wZXJzaXN0ZW50KSB0aGlzLl9yZWFkeUNvdW50ICo9IDI7XG4gICAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4gdGhpcy5fZnNFdmVudHNIYW5kbGVyLl9hZGRUb0ZzRXZlbnRzKHBhdGgpKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXRoaXMuX3JlYWR5Q291bnQpIHRoaXMuX3JlYWR5Q291bnQgPSAwO1xuICAgIHRoaXMuX3JlYWR5Q291bnQgKz0gcGF0aHMubGVuZ3RoO1xuICAgIFByb21pc2UuYWxsKFxuICAgICAgcGF0aHMubWFwKGFzeW5jIHBhdGggPT4ge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLl9ub2RlRnNIYW5kbGVyLl9hZGRUb05vZGVGcyhwYXRoLCAhX2ludGVybmFsLCAwLCAwLCBfb3JpZ0FkZCk7XG4gICAgICAgIGlmIChyZXMpIHRoaXMuX2VtaXRSZWFkeSgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSlcbiAgICApLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICAgIHJlc3VsdHMuZmlsdGVyKGl0ZW0gPT4gaXRlbSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGhpcy5hZGQoc3lzUGF0aC5kaXJuYW1lKGl0ZW0pLCBzeXNQYXRoLmJhc2VuYW1lKF9vcmlnQWRkIHx8IGl0ZW0pKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogQ2xvc2Ugd2F0Y2hlcnMgb3Igc3RhcnQgaWdub3JpbmcgZXZlbnRzIGZyb20gc3BlY2lmaWVkIHBhdGhzLlxuICogQHBhcmFtIHtQYXRofEFycmF5PFBhdGg+fSBwYXRoc18gLSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncywgZmlsZS9kaXJlY3RvcnkgcGF0aHMgYW5kL29yIGdsb2JzXG4gKiBAcmV0dXJucyB7RlNXYXRjaGVyfSBmb3IgY2hhaW5pbmdcbiovXG51bndhdGNoKHBhdGhzXykge1xuICBpZiAodGhpcy5jbG9zZWQpIHJldHVybiB0aGlzO1xuICBjb25zdCBwYXRocyA9IHVuaWZ5UGF0aHMocGF0aHNfKTtcbiAgY29uc3Qge2N3ZH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgIC8vIGNvbnZlcnQgdG8gYWJzb2x1dGUgcGF0aCB1bmxlc3MgcmVsYXRpdmUgcGF0aCBhbHJlYWR5IG1hdGNoZXNcbiAgICBpZiAoIXN5c1BhdGguaXNBYnNvbHV0ZShwYXRoKSAmJiAhdGhpcy5fY2xvc2Vycy5oYXMocGF0aCkpIHtcbiAgICAgIGlmIChjd2QpIHBhdGggPSBzeXNQYXRoLmpvaW4oY3dkLCBwYXRoKTtcbiAgICAgIHBhdGggPSBzeXNQYXRoLnJlc29sdmUocGF0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvc2VQYXRoKHBhdGgpO1xuXG4gICAgdGhpcy5faWdub3JlZFBhdGhzLmFkZChwYXRoKTtcbiAgICBpZiAodGhpcy5fd2F0Y2hlZC5oYXMocGF0aCkpIHtcbiAgICAgIHRoaXMuX2lnbm9yZWRQYXRocy5hZGQocGF0aCArIFNMQVNIX0dMT0JTVEFSKTtcbiAgICB9XG5cbiAgICAvLyByZXNldCB0aGUgY2FjaGVkIHVzZXJJZ25vcmVkIGFueW1hdGNoIGZuXG4gICAgLy8gdG8gbWFrZSBpZ25vcmVkUGF0aHMgY2hhbmdlcyBlZmZlY3RpdmVcbiAgICB0aGlzLl91c2VySWdub3JlZCA9IHVuZGVmaW5lZDtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogQ2xvc2Ugd2F0Y2hlcnMgYW5kIHJlbW92ZSBhbGwgbGlzdGVuZXJzIGZyb20gd2F0Y2hlZCBwYXRocy5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fS5cbiovXG5jbG9zZSgpIHtcbiAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm4gdGhpcy5fY2xvc2VQcm9taXNlO1xuICB0aGlzLmNsb3NlZCA9IHRydWU7XG5cbiAgLy8gTWVtb3J5IG1hbmFnZW1lbnQuXG4gIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gIGNvbnN0IGNsb3NlcnMgPSBbXTtcbiAgdGhpcy5fY2xvc2Vycy5mb3JFYWNoKGNsb3Nlckxpc3QgPT4gY2xvc2VyTGlzdC5mb3JFYWNoKGNsb3NlciA9PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IGNsb3NlcigpO1xuICAgIGlmIChwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSkgY2xvc2Vycy5wdXNoKHByb21pc2UpO1xuICB9KSk7XG4gIHRoaXMuX3N0cmVhbXMuZm9yRWFjaChzdHJlYW0gPT4gc3RyZWFtLmRlc3Ryb3koKSk7XG4gIHRoaXMuX3VzZXJJZ25vcmVkID0gdW5kZWZpbmVkO1xuICB0aGlzLl9yZWFkeUNvdW50ID0gMDtcbiAgdGhpcy5fcmVhZHlFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMuX3dhdGNoZWQuZm9yRWFjaChkaXJlbnQgPT4gZGlyZW50LmRpc3Bvc2UoKSk7XG4gIFsnY2xvc2VycycsICd3YXRjaGVkJywgJ3N0cmVhbXMnLCAnc3ltbGlua1BhdGhzJywgJ3Rocm90dGxlZCddLmZvckVhY2goa2V5ID0+IHtcbiAgICB0aGlzW2BfJHtrZXl9YF0uY2xlYXIoKTtcbiAgfSk7XG5cbiAgdGhpcy5fY2xvc2VQcm9taXNlID0gY2xvc2Vycy5sZW5ndGggPyBQcm9taXNlLmFsbChjbG9zZXJzKS50aGVuKCgpID0+IHVuZGVmaW5lZCkgOiBQcm9taXNlLnJlc29sdmUoKTtcbiAgcmV0dXJuIHRoaXMuX2Nsb3NlUHJvbWlzZTtcbn1cblxuLyoqXG4gKiBFeHBvc2UgbGlzdCBvZiB3YXRjaGVkIHBhdGhzXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBmb3IgY2hhaW5pbmdcbiovXG5nZXRXYXRjaGVkKCkge1xuICBjb25zdCB3YXRjaExpc3QgPSB7fTtcbiAgdGhpcy5fd2F0Y2hlZC5mb3JFYWNoKChlbnRyeSwgZGlyKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5vcHRpb25zLmN3ZCA/IHN5c1BhdGgucmVsYXRpdmUodGhpcy5vcHRpb25zLmN3ZCwgZGlyKSA6IGRpcjtcbiAgICB3YXRjaExpc3Rba2V5IHx8IE9ORV9ET1RdID0gZW50cnkuZ2V0Q2hpbGRyZW4oKS5zb3J0KCk7XG4gIH0pO1xuICByZXR1cm4gd2F0Y2hMaXN0O1xufVxuXG5lbWl0V2l0aEFsbChldmVudCwgYXJncykge1xuICB0aGlzLmVtaXQoLi4uYXJncyk7XG4gIGlmIChldmVudCAhPT0gRVZfRVJST1IpIHRoaXMuZW1pdChFVl9BTEwsIC4uLmFyZ3MpO1xufVxuXG4vLyBDb21tb24gaGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBOb3JtYWxpemUgYW5kIGVtaXQgZXZlbnRzLlxuICogQ2FsbGluZyBfZW1pdCBET0VTIE5PVCBNRUFOIGVtaXQoKSB3b3VsZCBiZSBjYWxsZWQhXG4gKiBAcGFyYW0ge0V2ZW50TmFtZX0gZXZlbnQgVHlwZSBvZiBldmVudFxuICogQHBhcmFtIHtQYXRofSBwYXRoIEZpbGUgb3IgZGlyZWN0b3J5IHBhdGhcbiAqIEBwYXJhbSB7Kj19IHZhbDEgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB3aXRoIGV2ZW50XG4gKiBAcGFyYW0geyo9fSB2YWwyXG4gKiBAcGFyYW0geyo9fSB2YWwzXG4gKiBAcmV0dXJucyB0aGUgZXJyb3IgaWYgZGVmaW5lZCwgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBvZiB0aGUgRlNXYXRjaGVyIGluc3RhbmNlJ3MgYGNsb3NlZGAgZmxhZ1xuICovXG5hc3luYyBfZW1pdChldmVudCwgcGF0aCwgdmFsMSwgdmFsMiwgdmFsMykge1xuICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcblxuICBjb25zdCBvcHRzID0gdGhpcy5vcHRpb25zO1xuICBpZiAoaXNXaW5kb3dzKSBwYXRoID0gc3lzUGF0aC5ub3JtYWxpemUocGF0aCk7XG4gIGlmIChvcHRzLmN3ZCkgcGF0aCA9IHN5c1BhdGgucmVsYXRpdmUob3B0cy5jd2QsIHBhdGgpO1xuICAvKiogQHR5cGUgQXJyYXk8YW55PiAqL1xuICBjb25zdCBhcmdzID0gW2V2ZW50LCBwYXRoXTtcbiAgaWYgKHZhbDMgIT09IHVuZGVmaW5lZCkgYXJncy5wdXNoKHZhbDEsIHZhbDIsIHZhbDMpO1xuICBlbHNlIGlmICh2YWwyICE9PSB1bmRlZmluZWQpIGFyZ3MucHVzaCh2YWwxLCB2YWwyKTtcbiAgZWxzZSBpZiAodmFsMSAhPT0gdW5kZWZpbmVkKSBhcmdzLnB1c2godmFsMSk7XG5cbiAgY29uc3QgYXdmID0gb3B0cy5hd2FpdFdyaXRlRmluaXNoO1xuICBsZXQgcHc7XG4gIGlmIChhd2YgJiYgKHB3ID0gdGhpcy5fcGVuZGluZ1dyaXRlcy5nZXQocGF0aCkpKSB7XG4gICAgcHcubGFzdENoYW5nZSA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAob3B0cy5hdG9taWMpIHtcbiAgICBpZiAoZXZlbnQgPT09IEVWX1VOTElOSykge1xuICAgICAgdGhpcy5fcGVuZGluZ1VubGlua3Muc2V0KHBhdGgsIGFyZ3MpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdVbmxpbmtzLmZvckVhY2goKGVudHJ5LCBwYXRoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbWl0KC4uLmVudHJ5KTtcbiAgICAgICAgICB0aGlzLmVtaXQoRVZfQUxMLCAuLi5lbnRyeSk7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZ1VubGlua3MuZGVsZXRlKHBhdGgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHR5cGVvZiBvcHRzLmF0b21pYyA9PT0gJ251bWJlcicgPyBvcHRzLmF0b21pYyA6IDEwMCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgaWYgKGV2ZW50ID09PSBFVl9BREQgJiYgdGhpcy5fcGVuZGluZ1VubGlua3MuaGFzKHBhdGgpKSB7XG4gICAgICBldmVudCA9IGFyZ3NbMF0gPSBFVl9DSEFOR0U7XG4gICAgICB0aGlzLl9wZW5kaW5nVW5saW5rcy5kZWxldGUocGF0aCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGF3ZiAmJiAoZXZlbnQgPT09IEVWX0FERCB8fCBldmVudCA9PT0gRVZfQ0hBTkdFKSAmJiB0aGlzLl9yZWFkeUVtaXR0ZWQpIHtcbiAgICBjb25zdCBhd2ZFbWl0ID0gKGVyciwgc3RhdHMpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZXZlbnQgPSBhcmdzWzBdID0gRVZfRVJST1I7XG4gICAgICAgIGFyZ3NbMV0gPSBlcnI7XG4gICAgICAgIHRoaXMuZW1pdFdpdGhBbGwoZXZlbnQsIGFyZ3MpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0cykge1xuICAgICAgICAvLyBpZiBzdGF0cyBkb2Vzbid0IGV4aXN0IHRoZSBmaWxlIG11c3QgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMikge1xuICAgICAgICAgIGFyZ3NbMl0gPSBzdGF0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcmdzLnB1c2goc3RhdHMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdFdpdGhBbGwoZXZlbnQsIGFyZ3MpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLl9hd2FpdFdyaXRlRmluaXNoKHBhdGgsIGF3Zi5zdGFiaWxpdHlUaHJlc2hvbGQsIGV2ZW50LCBhd2ZFbWl0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmIChldmVudCA9PT0gRVZfQ0hBTkdFKSB7XG4gICAgY29uc3QgaXNUaHJvdHRsZWQgPSAhdGhpcy5fdGhyb3R0bGUoRVZfQ0hBTkdFLCBwYXRoLCA1MCk7XG4gICAgaWYgKGlzVGhyb3R0bGVkKSByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmIChvcHRzLmFsd2F5c1N0YXQgJiYgdmFsMSA9PT0gdW5kZWZpbmVkICYmXG4gICAgKGV2ZW50ID09PSBFVl9BREQgfHwgZXZlbnQgPT09IEVWX0FERF9ESVIgfHwgZXZlbnQgPT09IEVWX0NIQU5HRSlcbiAgKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBvcHRzLmN3ZCA/IHN5c1BhdGguam9pbihvcHRzLmN3ZCwgcGF0aCkgOiBwYXRoO1xuICAgIGxldCBzdGF0cztcbiAgICB0cnkge1xuICAgICAgc3RhdHMgPSBhd2FpdCBzdGF0KGZ1bGxQYXRoKTtcbiAgICB9IGNhdGNoIChlcnIpIHt9XG4gICAgLy8gU3VwcHJlc3MgZXZlbnQgd2hlbiBmc19zdGF0IGZhaWxzLCB0byBhdm9pZCBzZW5kaW5nIHVuZGVmaW5lZCAnc3RhdCdcbiAgICBpZiAoIXN0YXRzIHx8IHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgYXJncy5wdXNoKHN0YXRzKTtcbiAgfVxuICB0aGlzLmVtaXRXaXRoQWxsKGV2ZW50LCBhcmdzKTtcblxuICByZXR1cm4gdGhpcztcbn1cblxuLyoqXG4gKiBDb21tb24gaGFuZGxlciBmb3IgZXJyb3JzXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICogQHJldHVybnMge0Vycm9yfEJvb2xlYW59IFRoZSBlcnJvciBpZiBkZWZpbmVkLCBvdGhlcndpc2UgdGhlIHZhbHVlIG9mIHRoZSBGU1dhdGNoZXIgaW5zdGFuY2UncyBgY2xvc2VkYCBmbGFnXG4gKi9cbl9oYW5kbGVFcnJvcihlcnJvcikge1xuICBjb25zdCBjb2RlID0gZXJyb3IgJiYgZXJyb3IuY29kZTtcbiAgaWYgKGVycm9yICYmIGNvZGUgIT09ICdFTk9FTlQnICYmIGNvZGUgIT09ICdFTk9URElSJyAmJlxuICAgICghdGhpcy5vcHRpb25zLmlnbm9yZVBlcm1pc3Npb25FcnJvcnMgfHwgKGNvZGUgIT09ICdFUEVSTScgJiYgY29kZSAhPT0gJ0VBQ0NFUycpKVxuICApIHtcbiAgICB0aGlzLmVtaXQoRVZfRVJST1IsIGVycm9yKTtcbiAgfVxuICByZXR1cm4gZXJyb3IgfHwgdGhpcy5jbG9zZWQ7XG59XG5cbi8qKlxuICogSGVscGVyIHV0aWxpdHkgZm9yIHRocm90dGxpbmdcbiAqIEBwYXJhbSB7VGhyb3R0bGVUeXBlfSBhY3Rpb25UeXBlIHR5cGUgYmVpbmcgdGhyb3R0bGVkXG4gKiBAcGFyYW0ge1BhdGh9IHBhdGggYmVpbmcgYWN0ZWQgdXBvblxuICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgZHVyYXRpb24gb2YgdGltZSB0byBzdXBwcmVzcyBkdXBsaWNhdGUgYWN0aW9uc1xuICogQHJldHVybnMge09iamVjdHxmYWxzZX0gdHJhY2tpbmcgb2JqZWN0IG9yIGZhbHNlIGlmIGFjdGlvbiBzaG91bGQgYmUgc3VwcHJlc3NlZFxuICovXG5fdGhyb3R0bGUoYWN0aW9uVHlwZSwgcGF0aCwgdGltZW91dCkge1xuICBpZiAoIXRoaXMuX3Rocm90dGxlZC5oYXMoYWN0aW9uVHlwZSkpIHtcbiAgICB0aGlzLl90aHJvdHRsZWQuc2V0KGFjdGlvblR5cGUsIG5ldyBNYXAoKSk7XG4gIH1cblxuICAvKiogQHR5cGUge01hcDxQYXRoLCBPYmplY3Q+fSAqL1xuICBjb25zdCBhY3Rpb24gPSB0aGlzLl90aHJvdHRsZWQuZ2V0KGFjdGlvblR5cGUpO1xuICAvKiogQHR5cGUge09iamVjdH0gKi9cbiAgY29uc3QgYWN0aW9uUGF0aCA9IGFjdGlvbi5nZXQocGF0aCk7XG5cbiAgaWYgKGFjdGlvblBhdGgpIHtcbiAgICBhY3Rpb25QYXRoLmNvdW50Kys7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IHRpbWVvdXRPYmplY3Q7XG4gIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSBhY3Rpb24uZ2V0KHBhdGgpO1xuICAgIGNvbnN0IGNvdW50ID0gaXRlbSA/IGl0ZW0uY291bnQgOiAwO1xuICAgIGFjdGlvbi5kZWxldGUocGF0aCk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRPYmplY3QpO1xuICAgIGlmIChpdGVtKSBjbGVhclRpbWVvdXQoaXRlbS50aW1lb3V0T2JqZWN0KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG4gIHRpbWVvdXRPYmplY3QgPSBzZXRUaW1lb3V0KGNsZWFyLCB0aW1lb3V0KTtcbiAgY29uc3QgdGhyID0ge3RpbWVvdXRPYmplY3QsIGNsZWFyLCBjb3VudDogMH07XG4gIGFjdGlvbi5zZXQocGF0aCwgdGhyKTtcbiAgcmV0dXJuIHRocjtcbn1cblxuX2luY3JSZWFkeUNvdW50KCkge1xuICByZXR1cm4gdGhpcy5fcmVhZHlDb3VudCsrO1xufVxuXG4vKipcbiAqIEF3YWl0cyB3cml0ZSBvcGVyYXRpb24gdG8gZmluaXNoLlxuICogUG9sbHMgYSBuZXdseSBjcmVhdGVkIGZpbGUgZm9yIHNpemUgdmFyaWF0aW9ucy4gV2hlbiBmaWxlcyBzaXplIGRvZXMgbm90IGNoYW5nZSBmb3IgJ3RocmVzaG9sZCcgbWlsbGlzZWNvbmRzIGNhbGxzIGNhbGxiYWNrLlxuICogQHBhcmFtIHtQYXRofSBwYXRoIGJlaW5nIGFjdGVkIHVwb25cbiAqIEBwYXJhbSB7TnVtYmVyfSB0aHJlc2hvbGQgVGltZSBpbiBtaWxsaXNlY29uZHMgYSBmaWxlIHNpemUgbXVzdCBiZSBmaXhlZCBiZWZvcmUgYWNrbm93bGVkZ2luZyB3cml0ZSBPUCBpcyBmaW5pc2hlZFxuICogQHBhcmFtIHtFdmVudE5hbWV9IGV2ZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhd2ZFbWl0IENhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHJlYWR5IGZvciBldmVudCB0byBiZSBlbWl0dGVkLlxuICovXG5fYXdhaXRXcml0ZUZpbmlzaChwYXRoLCB0aHJlc2hvbGQsIGV2ZW50LCBhd2ZFbWl0KSB7XG4gIGxldCB0aW1lb3V0SGFuZGxlcjtcblxuICBsZXQgZnVsbFBhdGggPSBwYXRoO1xuICBpZiAodGhpcy5vcHRpb25zLmN3ZCAmJiAhc3lzUGF0aC5pc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgZnVsbFBhdGggPSBzeXNQYXRoLmpvaW4odGhpcy5vcHRpb25zLmN3ZCwgcGF0aCk7XG4gIH1cblxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gIGNvbnN0IGF3YWl0V3JpdGVGaW5pc2ggPSAocHJldlN0YXQpID0+IHtcbiAgICBmcy5zdGF0KGZ1bGxQYXRoLCAoZXJyLCBjdXJTdGF0KSA9PiB7XG4gICAgICBpZiAoZXJyIHx8ICF0aGlzLl9wZW5kaW5nV3JpdGVzLmhhcyhwYXRoKSkge1xuICAgICAgICBpZiAoZXJyICYmIGVyci5jb2RlICE9PSAnRU5PRU5UJykgYXdmRW1pdChlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vdyA9IE51bWJlcihuZXcgRGF0ZSgpKTtcblxuICAgICAgaWYgKHByZXZTdGF0ICYmIGN1clN0YXQuc2l6ZSAhPT0gcHJldlN0YXQuc2l6ZSkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nV3JpdGVzLmdldChwYXRoKS5sYXN0Q2hhbmdlID0gbm93O1xuICAgICAgfVxuICAgICAgY29uc3QgcHcgPSB0aGlzLl9wZW5kaW5nV3JpdGVzLmdldChwYXRoKTtcbiAgICAgIGNvbnN0IGRmID0gbm93IC0gcHcubGFzdENoYW5nZTtcblxuICAgICAgaWYgKGRmID49IHRocmVzaG9sZCkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nV3JpdGVzLmRlbGV0ZShwYXRoKTtcbiAgICAgICAgYXdmRW1pdCh1bmRlZmluZWQsIGN1clN0YXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGltZW91dEhhbmRsZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgICAgIGF3YWl0V3JpdGVGaW5pc2gsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmF3YWl0V3JpdGVGaW5pc2gucG9sbEludGVydmFsLFxuICAgICAgICAgIGN1clN0YXRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBpZiAoIXRoaXMuX3BlbmRpbmdXcml0ZXMuaGFzKHBhdGgpKSB7XG4gICAgdGhpcy5fcGVuZGluZ1dyaXRlcy5zZXQocGF0aCwge1xuICAgICAgbGFzdENoYW5nZTogbm93LFxuICAgICAgY2FuY2VsV2FpdDogKCkgPT4ge1xuICAgICAgICB0aGlzLl9wZW5kaW5nV3JpdGVzLmRlbGV0ZShwYXRoKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRpbWVvdXRIYW5kbGVyID0gc2V0VGltZW91dChcbiAgICAgIGF3YWl0V3JpdGVGaW5pc2gsXG4gICAgICB0aGlzLm9wdGlvbnMuYXdhaXRXcml0ZUZpbmlzaC5wb2xsSW50ZXJ2YWxcbiAgICApO1xuICB9XG59XG5cbl9nZXRHbG9iSWdub3JlZCgpIHtcbiAgcmV0dXJuIFsuLi50aGlzLl9pZ25vcmVkUGF0aHMudmFsdWVzKCldO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB1c2VyIGhhcyBhc2tlZCB0byBpZ25vcmUgdGhpcyBwYXRoLlxuICogQHBhcmFtIHtQYXRofSBwYXRoIGZpbGVwYXRoIG9yIGRpclxuICogQHBhcmFtIHtmcy5TdGF0cz19IHN0YXRzIHJlc3VsdCBvZiBmcy5zdGF0XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuX2lzSWdub3JlZChwYXRoLCBzdGF0cykge1xuICBpZiAodGhpcy5vcHRpb25zLmF0b21pYyAmJiBET1RfUkUudGVzdChwYXRoKSkgcmV0dXJuIHRydWU7XG4gIGlmICghdGhpcy5fdXNlcklnbm9yZWQpIHtcbiAgICBjb25zdCB7Y3dkfSA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBpZ24gPSB0aGlzLm9wdGlvbnMuaWdub3JlZDtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSBpZ24gJiYgaWduLm1hcChub3JtYWxpemVJZ25vcmVkKGN3ZCkpO1xuICAgIGNvbnN0IHBhdGhzID0gYXJyaWZ5KGlnbm9yZWQpXG4gICAgICAuZmlsdGVyKChwYXRoKSA9PiB0eXBlb2YgcGF0aCA9PT0gU1RSSU5HX1RZUEUgJiYgIWlzR2xvYihwYXRoKSlcbiAgICAgIC5tYXAoKHBhdGgpID0+IHBhdGggKyBTTEFTSF9HTE9CU1RBUik7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuX2dldEdsb2JJZ25vcmVkKCkubWFwKG5vcm1hbGl6ZUlnbm9yZWQoY3dkKSkuY29uY2F0KGlnbm9yZWQsIHBhdGhzKTtcbiAgICB0aGlzLl91c2VySWdub3JlZCA9IGFueW1hdGNoKGxpc3QsIHVuZGVmaW5lZCwgQU5ZTUFUQ0hfT1BUUyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fdXNlcklnbm9yZWQoW3BhdGgsIHN0YXRzXSk7XG59XG5cbl9pc250SWdub3JlZChwYXRoLCBzdGF0KSB7XG4gIHJldHVybiAhdGhpcy5faXNJZ25vcmVkKHBhdGgsIHN0YXQpO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgc2V0IG9mIGNvbW1vbiBoZWxwZXJzIGFuZCBwcm9wZXJ0aWVzIHJlbGF0aW5nIHRvIHN5bWxpbmsgYW5kIGdsb2IgaGFuZGxpbmcuXG4gKiBAcGFyYW0ge1BhdGh9IHBhdGggZmlsZSwgZGlyZWN0b3J5LCBvciBnbG9iIHBhdHRlcm4gYmVpbmcgd2F0Y2hlZFxuICogQHBhcmFtIHtOdW1iZXI9fSBkZXB0aCBhdCBhbnkgZGVwdGggPiAwLCB0aGlzIGlzbid0IGEgZ2xvYlxuICogQHJldHVybnMge1dhdGNoSGVscGVyfSBvYmplY3QgY29udGFpbmluZyBoZWxwZXJzIGZvciB0aGlzIHBhdGhcbiAqL1xuX2dldFdhdGNoSGVscGVycyhwYXRoLCBkZXB0aCkge1xuICBjb25zdCB3YXRjaFBhdGggPSBkZXB0aCB8fCB0aGlzLm9wdGlvbnMuZGlzYWJsZUdsb2JiaW5nIHx8ICFpc0dsb2IocGF0aCkgPyBwYXRoIDogZ2xvYlBhcmVudChwYXRoKTtcbiAgY29uc3QgZm9sbG93ID0gdGhpcy5vcHRpb25zLmZvbGxvd1N5bWxpbmtzO1xuXG4gIHJldHVybiBuZXcgV2F0Y2hIZWxwZXIocGF0aCwgd2F0Y2hQYXRoLCBmb2xsb3csIHRoaXMpO1xufVxuXG4vLyBEaXJlY3RvcnkgaGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBQcm92aWRlcyBkaXJlY3RvcnkgdHJhY2tpbmcgb2JqZWN0c1xuICogQHBhcmFtIHtTdHJpbmd9IGRpcmVjdG9yeSBwYXRoIG9mIHRoZSBkaXJlY3RvcnlcbiAqIEByZXR1cm5zIHtEaXJFbnRyeX0gdGhlIGRpcmVjdG9yeSdzIHRyYWNraW5nIG9iamVjdFxuICovXG5fZ2V0V2F0Y2hlZERpcihkaXJlY3RvcnkpIHtcbiAgaWYgKCF0aGlzLl9ib3VuZFJlbW92ZSkgdGhpcy5fYm91bmRSZW1vdmUgPSB0aGlzLl9yZW1vdmUuYmluZCh0aGlzKTtcbiAgY29uc3QgZGlyID0gc3lzUGF0aC5yZXNvbHZlKGRpcmVjdG9yeSk7XG4gIGlmICghdGhpcy5fd2F0Y2hlZC5oYXMoZGlyKSkgdGhpcy5fd2F0Y2hlZC5zZXQoZGlyLCBuZXcgRGlyRW50cnkoZGlyLCB0aGlzLl9ib3VuZFJlbW92ZSkpO1xuICByZXR1cm4gdGhpcy5fd2F0Y2hlZC5nZXQoZGlyKTtcbn1cblxuLy8gRmlsZSBoZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBDaGVjayBmb3IgcmVhZCBwZXJtaXNzaW9ucy5cbiAqIEJhc2VkIG9uIHRoaXMgYW5zd2VyIG9uIFNPOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTE3ODE0MDQvMTM1ODQwNVxuICogQHBhcmFtIHtmcy5TdGF0c30gc3RhdHMgLSBvYmplY3QsIHJlc3VsdCBvZiBmc19zdGF0XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZpbGUgY2FuIGJlIHJlYWRcbiovXG5faGFzUmVhZFBlcm1pc3Npb25zKHN0YXRzKSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlUGVybWlzc2lvbkVycm9ycykgcmV0dXJuIHRydWU7XG5cbiAgLy8gc3RhdHMubW9kZSBtYXkgYmUgYmlnaW50XG4gIGNvbnN0IG1kID0gc3RhdHMgJiYgTnVtYmVyLnBhcnNlSW50KHN0YXRzLm1vZGUsIDEwKTtcbiAgY29uc3Qgc3QgPSBtZCAmIDBvNzc3O1xuICBjb25zdCBpdCA9IE51bWJlci5wYXJzZUludChzdC50b1N0cmluZyg4KVswXSwgMTApO1xuICByZXR1cm4gQm9vbGVhbig0ICYgaXQpO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgZW1pdHRpbmcgdW5saW5rIGV2ZW50cyBmb3JcbiAqIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIHZpYSByZWN1cnNpb24sIGZvclxuICogZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHdpdGhpbiBkaXJlY3RvcmllcyB0aGF0IGFyZSB1bmxpbmtlZFxuICogQHBhcmFtIHtTdHJpbmd9IGRpcmVjdG9yeSB3aXRoaW4gd2hpY2ggdGhlIGZvbGxvd2luZyBpdGVtIGlzIGxvY2F0ZWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBpdGVtICAgICAgYmFzZSBwYXRoIG9mIGl0ZW0vZGlyZWN0b3J5XG4gKiBAcmV0dXJucyB7dm9pZH1cbiovXG5fcmVtb3ZlKGRpcmVjdG9yeSwgaXRlbSwgaXNEaXJlY3RvcnkpIHtcbiAgLy8gaWYgd2hhdCBpcyBiZWluZyBkZWxldGVkIGlzIGEgZGlyZWN0b3J5LCBnZXQgdGhhdCBkaXJlY3RvcnkncyBwYXRoc1xuICAvLyBmb3IgcmVjdXJzaXZlIGRlbGV0aW5nIGFuZCBjbGVhbmluZyBvZiB3YXRjaGVkIG9iamVjdFxuICAvLyBpZiBpdCBpcyBub3QgYSBkaXJlY3RvcnksIG5lc3RlZERpcmVjdG9yeUNoaWxkcmVuIHdpbGwgYmUgZW1wdHkgYXJyYXlcbiAgY29uc3QgcGF0aCA9IHN5c1BhdGguam9pbihkaXJlY3RvcnksIGl0ZW0pO1xuICBjb25zdCBmdWxsUGF0aCA9IHN5c1BhdGgucmVzb2x2ZShwYXRoKTtcbiAgaXNEaXJlY3RvcnkgPSBpc0RpcmVjdG9yeSAhPSBudWxsXG4gICAgPyBpc0RpcmVjdG9yeVxuICAgIDogdGhpcy5fd2F0Y2hlZC5oYXMocGF0aCkgfHwgdGhpcy5fd2F0Y2hlZC5oYXMoZnVsbFBhdGgpO1xuXG4gIC8vIHByZXZlbnQgZHVwbGljYXRlIGhhbmRsaW5nIGluIGNhc2Ugb2YgYXJyaXZpbmcgaGVyZSBuZWFybHkgc2ltdWx0YW5lb3VzbHlcbiAgLy8gdmlhIG11bHRpcGxlIHBhdGhzIChzdWNoIGFzIF9oYW5kbGVGaWxlIGFuZCBfaGFuZGxlRGlyKVxuICBpZiAoIXRoaXMuX3Rocm90dGxlKCdyZW1vdmUnLCBwYXRoLCAxMDApKSByZXR1cm47XG5cbiAgLy8gaWYgdGhlIG9ubHkgd2F0Y2hlZCBmaWxlIGlzIHJlbW92ZWQsIHdhdGNoIGZvciBpdHMgcmV0dXJuXG4gIGlmICghaXNEaXJlY3RvcnkgJiYgIXRoaXMub3B0aW9ucy51c2VGc0V2ZW50cyAmJiB0aGlzLl93YXRjaGVkLnNpemUgPT09IDEpIHtcbiAgICB0aGlzLmFkZChkaXJlY3RvcnksIGl0ZW0sIHRydWUpO1xuICB9XG5cbiAgLy8gVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBlbnRyeSBpbiB0aGUgd2F0Y2hlZCBvYmplY3QgaW4gZWl0aGVyIGNhc2VcbiAgLy8gc28gd2UgZ290IHRvIGRvIHRoZSBkaXJlY3RvcnkgY2hlY2sgYmVmb3JlaGFuZFxuICBjb25zdCB3cCA9IHRoaXMuX2dldFdhdGNoZWREaXIocGF0aCk7XG4gIGNvbnN0IG5lc3RlZERpcmVjdG9yeUNoaWxkcmVuID0gd3AuZ2V0Q2hpbGRyZW4oKTtcblxuICAvLyBSZWN1cnNpdmVseSByZW1vdmUgY2hpbGRyZW4gZGlyZWN0b3JpZXMgLyBmaWxlcy5cbiAgbmVzdGVkRGlyZWN0b3J5Q2hpbGRyZW4uZm9yRWFjaChuZXN0ZWQgPT4gdGhpcy5fcmVtb3ZlKHBhdGgsIG5lc3RlZCkpO1xuXG4gIC8vIENoZWNrIGlmIGl0ZW0gd2FzIG9uIHRoZSB3YXRjaGVkIGxpc3QgYW5kIHJlbW92ZSBpdFxuICBjb25zdCBwYXJlbnQgPSB0aGlzLl9nZXRXYXRjaGVkRGlyKGRpcmVjdG9yeSk7XG4gIGNvbnN0IHdhc1RyYWNrZWQgPSBwYXJlbnQuaGFzKGl0ZW0pO1xuICBwYXJlbnQucmVtb3ZlKGl0ZW0pO1xuXG4gIC8vIEZpeGVzIGlzc3VlICMxMDQyIC0+IFJlbGF0aXZlIHBhdGhzIHdlcmUgZGV0ZWN0ZWQgYW5kIGFkZGVkIGFzIHN5bWxpbmtzXG4gIC8vIChodHRwczovL2dpdGh1Yi5jb20vcGF1bG1pbGxyL2Nob2tpZGFyL2Jsb2IvZTE3NTNkZGJjOTU3MWJkYzMzYjRhNGFmMTcyZDUyY2I2ZTYxMWMxMC9saWIvbm9kZWZzLWhhbmRsZXIuanMjTDYxMiksXG4gIC8vIGJ1dCBuZXZlciByZW1vdmVkIGZyb20gdGhlIG1hcCBpbiBjYXNlIHRoZSBwYXRoIHdhcyBkZWxldGVkLlxuICAvLyBUaGlzIGxlYWRzIHRvIGFuIGluY29ycmVjdCBzdGF0ZSBpZiB0aGUgcGF0aCB3YXMgcmVjcmVhdGVkOlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGF1bG1pbGxyL2Nob2tpZGFyL2Jsb2IvZTE3NTNkZGJjOTU3MWJkYzMzYjRhNGFmMTcyZDUyY2I2ZTYxMWMxMC9saWIvbm9kZWZzLWhhbmRsZXIuanMjTDU1M1xuICBpZiAodGhpcy5fc3ltbGlua1BhdGhzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICB0aGlzLl9zeW1saW5rUGF0aHMuZGVsZXRlKGZ1bGxQYXRoKTtcbiAgfVxuXG4gIC8vIElmIHdlIHdhaXQgZm9yIHRoaXMgZmlsZSB0byBiZSBmdWxseSB3cml0dGVuLCBjYW5jZWwgdGhlIHdhaXQuXG4gIGxldCByZWxQYXRoID0gcGF0aDtcbiAgaWYgKHRoaXMub3B0aW9ucy5jd2QpIHJlbFBhdGggPSBzeXNQYXRoLnJlbGF0aXZlKHRoaXMub3B0aW9ucy5jd2QsIHBhdGgpO1xuICBpZiAodGhpcy5vcHRpb25zLmF3YWl0V3JpdGVGaW5pc2ggJiYgdGhpcy5fcGVuZGluZ1dyaXRlcy5oYXMocmVsUGF0aCkpIHtcbiAgICBjb25zdCBldmVudCA9IHRoaXMuX3BlbmRpbmdXcml0ZXMuZ2V0KHJlbFBhdGgpLmNhbmNlbFdhaXQoKTtcbiAgICBpZiAoZXZlbnQgPT09IEVWX0FERCkgcmV0dXJuO1xuICB9XG5cbiAgLy8gVGhlIEVudHJ5IHdpbGwgZWl0aGVyIGJlIGEgZGlyZWN0b3J5IHRoYXQganVzdCBnb3QgcmVtb3ZlZFxuICAvLyBvciBhIGJvZ3VzIGVudHJ5IHRvIGEgZmlsZSwgaW4gZWl0aGVyIGNhc2Ugd2UgaGF2ZSB0byByZW1vdmUgaXRcbiAgdGhpcy5fd2F0Y2hlZC5kZWxldGUocGF0aCk7XG4gIHRoaXMuX3dhdGNoZWQuZGVsZXRlKGZ1bGxQYXRoKTtcbiAgY29uc3QgZXZlbnROYW1lID0gaXNEaXJlY3RvcnkgPyBFVl9VTkxJTktfRElSIDogRVZfVU5MSU5LO1xuICBpZiAod2FzVHJhY2tlZCAmJiAhdGhpcy5faXNJZ25vcmVkKHBhdGgpKSB0aGlzLl9lbWl0KGV2ZW50TmFtZSwgcGF0aCk7XG5cbiAgLy8gQXZvaWQgY29uZmxpY3RzIGlmIHdlIGxhdGVyIGNyZWF0ZSBhbm90aGVyIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lXG4gIGlmICghdGhpcy5vcHRpb25zLnVzZUZzRXZlbnRzKSB7XG4gICAgdGhpcy5fY2xvc2VQYXRoKHBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogQ2xvc2VzIGFsbCB3YXRjaGVycyBmb3IgYSBwYXRoXG4gKiBAcGFyYW0ge1BhdGh9IHBhdGhcbiAqL1xuX2Nsb3NlUGF0aChwYXRoKSB7XG4gIHRoaXMuX2Nsb3NlRmlsZShwYXRoKVxuICBjb25zdCBkaXIgPSBzeXNQYXRoLmRpcm5hbWUocGF0aCk7XG4gIHRoaXMuX2dldFdhdGNoZWREaXIoZGlyKS5yZW1vdmUoc3lzUGF0aC5iYXNlbmFtZShwYXRoKSk7XG59XG5cbi8qKlxuICogQ2xvc2VzIG9ubHkgZmlsZS1zcGVjaWZpYyB3YXRjaGVyc1xuICogQHBhcmFtIHtQYXRofSBwYXRoXG4gKi9cbl9jbG9zZUZpbGUocGF0aCkge1xuICBjb25zdCBjbG9zZXJzID0gdGhpcy5fY2xvc2Vycy5nZXQocGF0aCk7XG4gIGlmICghY2xvc2VycykgcmV0dXJuO1xuICBjbG9zZXJzLmZvckVhY2goY2xvc2VyID0+IGNsb3NlcigpKTtcbiAgdGhpcy5fY2xvc2Vycy5kZWxldGUocGF0aCk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7UGF0aH0gcGF0aFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2xvc2VyXG4gKi9cbl9hZGRQYXRoQ2xvc2VyKHBhdGgsIGNsb3Nlcikge1xuICBpZiAoIWNsb3NlcikgcmV0dXJuO1xuICBsZXQgbGlzdCA9IHRoaXMuX2Nsb3NlcnMuZ2V0KHBhdGgpO1xuICBpZiAoIWxpc3QpIHtcbiAgICBsaXN0ID0gW107XG4gICAgdGhpcy5fY2xvc2Vycy5zZXQocGF0aCwgbGlzdCk7XG4gIH1cbiAgbGlzdC5wdXNoKGNsb3Nlcik7XG59XG5cbl9yZWFkZGlycChyb290LCBvcHRzKSB7XG4gIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICBjb25zdCBvcHRpb25zID0ge3R5cGU6IEVWX0FMTCwgYWx3YXlzU3RhdDogdHJ1ZSwgbHN0YXQ6IHRydWUsIC4uLm9wdHN9O1xuICBsZXQgc3RyZWFtID0gcmVhZGRpcnAocm9vdCwgb3B0aW9ucyk7XG4gIHRoaXMuX3N0cmVhbXMuYWRkKHN0cmVhbSk7XG4gIHN0cmVhbS5vbmNlKFNUUl9DTE9TRSwgKCkgPT4ge1xuICAgIHN0cmVhbSA9IHVuZGVmaW5lZDtcbiAgfSk7XG4gIHN0cmVhbS5vbmNlKFNUUl9FTkQsICgpID0+IHtcbiAgICBpZiAoc3RyZWFtKSB7XG4gICAgICB0aGlzLl9zdHJlYW1zLmRlbGV0ZShzdHJlYW0pO1xuICAgICAgc3RyZWFtID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzdHJlYW07XG59XG5cbn1cblxuLy8gRXhwb3J0IEZTV2F0Y2hlciBjbGFzc1xuZXhwb3J0cy5GU1dhdGNoZXIgPSBGU1dhdGNoZXI7XG5cbi8qKlxuICogSW5zdGFudGlhdGVzIHdhdGNoZXIgd2l0aCBwYXRocyB0byBiZSB0cmFja2VkLlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXk8U3RyaW5nPn0gcGF0aHMgZmlsZS9kaXJlY3RvcnkgcGF0aHMgYW5kL29yIGdsb2JzXG4gKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnMgY2hva2lkYXIgb3B0c1xuICogQHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgRlNXYXRjaGVyIGZvciBjaGFpbmluZy5cbiAqL1xuY29uc3Qgd2F0Y2ggPSAocGF0aHMsIG9wdGlvbnMpID0+IHtcbiAgY29uc3Qgd2F0Y2hlciA9IG5ldyBGU1dhdGNoZXIob3B0aW9ucyk7XG4gIHdhdGNoZXIuYWRkKHBhdGhzKTtcbiAgcmV0dXJuIHdhdGNoZXI7XG59O1xuXG5leHBvcnRzLndhdGNoID0gd2F0Y2g7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmV4dGVuZCA9IGV4dGVuZDtcbmV4cG9ydHMuaW5kZXhPZiA9IGluZGV4T2Y7XG5leHBvcnRzLmVzY2FwZUV4cHJlc3Npb24gPSBlc2NhcGVFeHByZXNzaW9uO1xuZXhwb3J0cy5pc0VtcHR5ID0gaXNFbXB0eTtcbmV4cG9ydHMuY3JlYXRlRnJhbWUgPSBjcmVhdGVGcmFtZTtcbmV4cG9ydHMuYmxvY2tQYXJhbXMgPSBibG9ja1BhcmFtcztcbmV4cG9ydHMuYXBwZW5kQ29udGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0aDtcbnZhciBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG52YXIgYmFkQ2hhcnMgPSAvWyY8PlwiJ2A9XS9nLFxuICAgIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmZ1bmN0aW9uIGV4dGVuZChvYmogLyogLCAuLi5zb3VyY2UgKi8pIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzW2ldKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZ3VtZW50c1tpXSwga2V5KSkge1xuICAgICAgICBvYmpba2V5XSA9IGFyZ3VtZW50c1tpXVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmV4cG9ydHMudG9TdHJpbmcgPSB0b1N0cmluZztcbi8vIFNvdXJjZWQgZnJvbSBsb2Rhc2hcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9sb2Rhc2gvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHRcbi8qIGVzbGludC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi9cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG4gIH07XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG4vKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6IGZhbHNlO1xufTtcblxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcbi8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuXG5cbmZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGVzY2FwZSBTYWZlU3RyaW5ncywgc2luY2UgdGhleSdyZSBhbHJlYWR5IHNhZmVcbiAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHtcbiAgICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSBpZiAoIXN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZyArICcnO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhlIGFwcGVuZCByZWdhcmRsZXNzIGFuZFxuICAgIC8vIHRoZSByZWdleCB0ZXN0IHdpbGwgZG8gdGhpcyB0cmFuc3BhcmVudGx5IGJlaGluZCB0aGUgc2NlbmVzLCBjYXVzaW5nIGlzc3VlcyBpZlxuICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LlxuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nO1xuICB9XG5cbiAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVGcmFtZShvYmplY3QpIHtcbiAgdmFyIGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpO1xuICBmcmFtZS5fcGFyZW50ID0gb2JqZWN0O1xuICByZXR1cm4gZnJhbWU7XG59XG5cbmZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBhcmFtcywgaWRzKSB7XG4gIHBhcmFtcy5wYXRoID0gaWRzO1xuICByZXR1cm4gcGFyYW1zO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwzVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN1FVRkJRU3hKUVVGTkxFMUJRVTBzUjBGQlJ6dEJRVU5pTEV0QlFVY3NSVUZCUlN4UFFVRlBPMEZCUTFvc1MwRkJSeXhGUVVGRkxFMUJRVTA3UVVGRFdDeExRVUZITEVWQlFVVXNUVUZCVFR0QlFVTllMRXRCUVVjc1JVRkJSU3hSUVVGUk8wRkJRMklzUzBGQlJ5eEZRVUZGTEZGQlFWRTdRVUZEWWl4TFFVRkhMRVZCUVVVc1VVRkJVVHRCUVVOaUxFdEJRVWNzUlVGQlJTeFJRVUZSTzBOQlEyUXNRMEZCUXpzN1FVRkZSaXhKUVVGTkxGRkJRVkVzUjBGQlJ5eFpRVUZaTzBsQlF6TkNMRkZCUVZFc1IwRkJSeXhYUVVGWExFTkJRVU03TzBGQlJYcENMRk5CUVZNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU4yUWl4VFFVRlBMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dERRVU53UWpzN1FVRkZUU3hUUVVGVExFMUJRVTBzUTBGQlF5eEhRVUZITEc5Q1FVRnZRanRCUVVNMVF5eFBRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVONlF5eFRRVUZMTEVsQlFVa3NSMEZCUnl4SlFVRkpMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU0xUWl4VlFVRkpMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZETTBRc1YwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFBRVU01UWp0TFFVTkdPMGRCUTBZN08wRkJSVVFzVTBGQlR5eEhRVUZITEVOQlFVTTdRMEZEV2pzN1FVRkZUU3hKUVVGSkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJRenM3T3pzN08wRkJTMmhFTEVsQlFVa3NWVUZCVlN4SFFVRkhMRzlDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU12UWl4VFFVRlBMRTlCUVU4c1MwRkJTeXhMUVVGTExGVkJRVlVzUTBGQlF6dERRVU53UXl4RFFVRkRPenM3UVVGSFJpeEpRVUZKTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSVHRCUVVOdVFpeFZRVTlQTEZWQlFWVXNSMEZRYWtJc1ZVRkJWU3hIUVVGSExGVkJRVk1zUzBGQlN5eEZRVUZGTzBGQlF6TkNMRmRCUTBVc1QwRkJUeXhMUVVGTExFdEJRVXNzVlVGQlZTeEpRVU16UWl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEcxQ1FVRnRRaXhEUVVNMVF6dEhRVU5JTEVOQlFVTTdRMEZEU0R0UlFVTlJMRlZCUVZVc1IwRkJWaXhWUVVGVk96czdPenRCUVVsYUxFbEJRVTBzVDBGQlR5eEhRVU5zUWl4TFFVRkxMRU5CUVVNc1QwRkJUeXhKUVVOaUxGVkJRVk1zUzBGQlN5eEZRVUZGTzBGQlEyUXNVMEZCVHl4TFFVRkxMRWxCUVVrc1QwRkJUeXhMUVVGTExFdEJRVXNzVVVGQlVTeEhRVU55UXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEdkQ1FVRm5RaXhIUVVONlF5eExRVUZMTEVOQlFVTTdRMEZEV0N4RFFVRkRPenM3T3p0QlFVZEhMRk5CUVZNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVTdRVUZEY0VNc1QwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOb1JDeFJRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhMUVVGTExFVkJRVVU3UVVGRGRFSXNZVUZCVHl4RFFVRkRMRU5CUVVNN1MwRkRWanRIUVVOR08wRkJRMFFzVTBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0RFFVTllPenRCUVVWTkxGTkJRVk1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRM1pETEUxQlFVa3NUMEZCVHl4TlFVRk5MRXRCUVVzc1VVRkJVU3hGUVVGRk96dEJRVVU1UWl4UlFVRkpMRTFCUVUwc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlF6TkNMR0ZCUVU4c1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzB0QlEzaENMRTFCUVUwc1NVRkJTU3hOUVVGTkxFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzcENMR0ZCUVU4c1JVRkJSU3hEUVVGRE8wdEJRMWdzVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTJ4Q0xHRkJRVThzVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0TFFVTndRanM3T3pzN1FVRkxSQ3hWUVVGTkxFZEJRVWNzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXp0SFFVTjBRanM3UVVGRlJDeE5RVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdEJRVU14UWl4WFFVRlBMRTFCUVUwc1EwRkJRenRIUVVObU8wRkJRMFFzVTBGQlR5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dERRVU0zUXpzN1FVRkZUU3hUUVVGVExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZETjBJc1RVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMEZCUTNwQ0xGZEJRVThzU1VGQlNTeERRVUZETzBkQlEySXNUVUZCVFN4SlFVRkpMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1JVRkJSVHRCUVVNdlF5eFhRVUZQTEVsQlFVa3NRMEZCUXp0SFFVTmlMRTFCUVUwN1FVRkRUQ3hYUVVGUExFdEJRVXNzUTBGQlF6dEhRVU5rTzBOQlEwWTdPMEZCUlUwc1UwRkJVeXhYUVVGWExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEyeERMRTFCUVVrc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRMMElzVDBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4TlFVRk5MRU5CUVVNN1FVRkRka0lzVTBGQlR5eExRVUZMTEVOQlFVTTdRMEZEWkRzN1FVRkZUU3hUUVVGVExGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUTNaRExGRkJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMEZCUTJ4Q0xGTkJRVThzVFVGQlRTeERRVUZETzBOQlEyWTdPMEZCUlUwc1UwRkJVeXhwUWtGQmFVSXNRMEZCUXl4WFFVRlhMRVZCUVVVc1JVRkJSU3hGUVVGRk8wRkJRMnBFTEZOQlFVOHNRMEZCUXl4WFFVRlhMRWRCUVVjc1YwRkJWeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVRXNSMEZCU1N4RlFVRkZMRU5CUVVNN1EwRkRjRVFpTENKbWFXeGxJam9pZFhScGJITXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKamIyNXpkQ0JsYzJOaGNHVWdQU0I3WEc0Z0lDY21Kem9nSnlaaGJYQTdKeXhjYmlBZ0p6d25PaUFuSm14ME95Y3NYRzRnSUNjK0p6b2dKeVpuZERzbkxGeHVJQ0FuWENJbk9pQW5KbkYxYjNRN0p5eGNiaUFnWENJblhDSTZJQ2NtSTNneU56c25MRnh1SUNBbllDYzZJQ2NtSTNnMk1Ec25MRnh1SUNBblBTYzZJQ2NtSTNnelJEc25YRzU5TzF4dVhHNWpiMjV6ZENCaVlXUkRhR0Z5Y3lBOUlDOWJKancrWENJbllEMWRMMmNzWEc0Z0lIQnZjM05wWW14bElEMGdMMXNtUEQ1Y0lpZGdQVjB2TzF4dVhHNW1kVzVqZEdsdmJpQmxjMk5oY0dWRGFHRnlLR05vY2lrZ2UxeHVJQ0J5WlhSMWNtNGdaWE5qWVhCbFcyTm9jbDA3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmxlSFJsYm1Rb2IySnFJQzhxSUN3Z0xpNHVjMjkxY21ObElDb3ZLU0I3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F4T3lCcElEd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYTJWNUlHbHVJR0Z5WjNWdFpXNTBjMXRwWFNrZ2UxeHVJQ0FnSUNBZ2FXWWdLRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2hoY21kMWJXVnVkSE5iYVYwc0lHdGxlU2twSUh0Y2JpQWdJQ0FnSUNBZ2IySnFXMnRsZVYwZ1BTQmhjbWQxYldWdWRITmJhVjFiYTJWNVhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2IySnFPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2JHVjBJSFJ2VTNSeWFXNW5JRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzUwYjFOMGNtbHVaenRjYmx4dUx5OGdVMjkxY21ObFpDQm1jbTl0SUd4dlpHRnphRnh1THk4Z2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwySmxjM1JwWldwekwyeHZaR0Z6YUM5aWJHOWlMMjFoYzNSbGNpOU1TVU5GVGxORkxuUjRkRnh1THlvZ1pYTnNhVzUwTFdScGMyRmliR1VnWm5WdVl5MXpkSGxzWlNBcUwxeHViR1YwSUdselJuVnVZM1JwYjI0Z1BTQm1kVzVqZEdsdmJpaDJZV3gxWlNrZ2UxeHVJQ0J5WlhSMWNtNGdkSGx3Wlc5bUlIWmhiSFZsSUQwOVBTQW5ablZ1WTNScGIyNG5PMXh1ZlR0Y2JpOHZJR1poYkd4aVlXTnJJR1p2Y2lCdmJHUmxjaUIyWlhKemFXOXVjeUJ2WmlCRGFISnZiV1VnWVc1a0lGTmhabUZ5YVZ4dUx5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnS2k5Y2JtbG1JQ2hwYzBaMWJtTjBhVzl1S0M5NEx5a3BJSHRjYmlBZ2FYTkdkVzVqZEdsdmJpQTlJR1oxYm1OMGFXOXVLSFpoYkhWbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUhSNWNHVnZaaUIyWVd4MVpTQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUpseHVJQ0FnSUNBZ2RHOVRkSEpwYm1jdVkyRnNiQ2gyWVd4MVpTa2dQVDA5SUNkYmIySnFaV04wSUVaMWJtTjBhVzl1WFNkY2JpQWdJQ0FwTzF4dUlDQjlPMXh1ZlZ4dVpYaHdiM0owSUhzZ2FYTkdkVzVqZEdsdmJpQjlPMXh1THlvZ1pYTnNhVzUwTFdWdVlXSnNaU0JtZFc1akxYTjBlV3hsSUNvdlhHNWNiaThxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ2FYTkJjbkpoZVNBOVhHNGdJRUZ5Y21GNUxtbHpRWEp5WVhrZ2ZIeGNiaUFnWm5WdVkzUnBiMjRvZG1Gc2RXVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RtRnNkV1VnSmlZZ2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBbmIySnFaV04wSjF4dUlDQWdJQ0FnUHlCMGIxTjBjbWx1Wnk1allXeHNLSFpoYkhWbEtTQTlQVDBnSjF0dlltcGxZM1FnUVhKeVlYbGRKMXh1SUNBZ0lDQWdPaUJtWVd4elpUdGNiaUFnZlR0Y2JseHVMeThnVDJ4a1pYSWdTVVVnZG1WeWMybHZibk1nWkc4Z2JtOTBJR1JwY21WamRHeDVJSE4xY0hCdmNuUWdhVzVrWlhoUFppQnpieUIzWlNCdGRYTjBJR2x0Y0d4bGJXVnVkQ0J2ZFhJZ2IzZHVMQ0J6WVdSc2VTNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBibVJsZUU5bUtHRnljbUY1TENCMllXeDFaU2tnZTF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTUN3Z2JHVnVJRDBnWVhKeVlYa3ViR1Z1WjNSb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0JwWmlBb1lYSnlZWGxiYVYwZ1BUMDlJSFpoYkhWbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2FUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUMweE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWlhOallYQmxSWGh3Y21WemMybHZiaWh6ZEhKcGJtY3BJSHRjYmlBZ2FXWWdLSFI1Y0dWdlppQnpkSEpwYm1jZ0lUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdMeThnWkc5dUozUWdaWE5qWVhCbElGTmhabVZUZEhKcGJtZHpMQ0J6YVc1alpTQjBhR1Y1SjNKbElHRnNjbVZoWkhrZ2MyRm1aVnh1SUNBZ0lHbG1JQ2h6ZEhKcGJtY2dKaVlnYzNSeWFXNW5MblJ2U0ZSTlRDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlITjBjbWx1Wnk1MGIwaFVUVXdvS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hOMGNtbHVaeUE5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKeWM3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2doYzNSeWFXNW5LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjM1J5YVc1bklDc2dKeWM3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUm05eVkyVWdZU0J6ZEhKcGJtY2dZMjl1ZG1WeWMybHZiaUJoY3lCMGFHbHpJSGRwYkd3Z1ltVWdaRzl1WlNCaWVTQjBhR1VnWVhCd1pXNWtJSEpsWjJGeVpHeGxjM01nWVc1a1hHNGdJQ0FnTHk4Z2RHaGxJSEpsWjJWNElIUmxjM1FnZDJsc2JDQmtieUIwYUdseklIUnlZVzV6Y0dGeVpXNTBiSGtnWW1Wb2FXNWtJSFJvWlNCelkyVnVaWE1zSUdOaGRYTnBibWNnYVhOemRXVnpJR2xtWEc0Z0lDQWdMeThnWVc0Z2IySnFaV04wSjNNZ2RHOGdjM1J5YVc1bklHaGhjeUJsYzJOaGNHVmtJR05vWVhKaFkzUmxjbk1nYVc0Z2FYUXVYRzRnSUNBZ2MzUnlhVzVuSUQwZ0p5Y2dLeUJ6ZEhKcGJtYzdYRzRnSUgxY2JseHVJQ0JwWmlBb0lYQnZjM05wWW14bExuUmxjM1FvYzNSeWFXNW5LU2tnZTF4dUlDQWdJSEpsZEhWeWJpQnpkSEpwYm1jN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhOMGNtbHVaeTV5WlhCc1lXTmxLR0poWkVOb1lYSnpMQ0JsYzJOaGNHVkRhR0Z5S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x6Ulcxd2RIa29kbUZzZFdVcElIdGNiaUFnYVdZZ0tDRjJZV3gxWlNBbUppQjJZV3gxWlNBaFBUMGdNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLR2x6UVhKeVlYa29kbUZzZFdVcElDWW1JSFpoYkhWbExteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZM0psWVhSbFJuSmhiV1VvYjJKcVpXTjBLU0I3WEc0Z0lHeGxkQ0JtY21GdFpTQTlJR1Y0ZEdWdVpDaDdmU3dnYjJKcVpXTjBLVHRjYmlBZ1puSmhiV1V1WDNCaGNtVnVkQ0E5SUc5aWFtVmpkRHRjYmlBZ2NtVjBkWEp1SUdaeVlXMWxPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lteHZZMnRRWVhKaGJYTW9jR0Z5WVcxekxDQnBaSE1wSUh0Y2JpQWdjR0Z5WVcxekxuQmhkR2dnUFNCcFpITTdYRzRnSUhKbGRIVnliaUJ3WVhKaGJYTTdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGNIQmxibVJEYjI1MFpYaDBVR0YwYUNoamIyNTBaWGgwVUdGMGFDd2dhV1FwSUh0Y2JpQWdjbVYwZFhKdUlDaGpiMjUwWlhoMFVHRjBhQ0EvSUdOdmJuUmxlSFJRWVhSb0lDc2dKeTRuSURvZ0p5Y3BJQ3NnYVdRN1hHNTlYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xudmFyIGVycm9yUHJvcHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXInLCAnZW5kTGluZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIHZhciBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgICAgbGluZSA9IHVuZGVmaW5lZCxcbiAgICAgIGVuZExpbmVOdW1iZXIgPSB1bmRlZmluZWQsXG4gICAgICBjb2x1bW4gPSB1bmRlZmluZWQsXG4gICAgICBlbmRDb2x1bW4gPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGxvYykge1xuICAgIGxpbmUgPSBsb2Muc3RhcnQubGluZTtcbiAgICBlbmRMaW5lTnVtYmVyID0gbG9jLmVuZC5saW5lO1xuICAgIGNvbHVtbiA9IGxvYy5zdGFydC5jb2x1bW47XG4gICAgZW5kQ29sdW1uID0gbG9jLmVuZC5jb2x1bW47XG5cbiAgICBtZXNzYWdlICs9ICcgLSAnICsgbGluZSArICc6JyArIGNvbHVtbjtcbiAgfVxuXG4gIHZhciB0bXAgPSBFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBtZXNzYWdlKTtcblxuICAvLyBVbmZvcnR1bmF0ZWx5IGVycm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChhdCBsZWFzdCksIHNvIGBmb3IgcHJvcCBpbiB0bXBgIGRvZXNuJ3Qgd29yay5cbiAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgZXJyb3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgdGhpc1tlcnJvclByb3BzW2lkeF1dID0gdG1wW2Vycm9yUHJvcHNbaWR4XV07XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBFeGNlcHRpb24pO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAobG9jKSB7XG4gICAgICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lO1xuICAgICAgdGhpcy5lbmRMaW5lTnVtYmVyID0gZW5kTGluZU51bWJlcjtcblxuICAgICAgLy8gV29yayBhcm91bmQgaXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNhbid0IGRpcmVjdGx5IHNldCB0aGUgY29sdW1uIHZhbHVlXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogY29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnZW5kQ29sdW1uJywge1xuICAgICAgICAgIHZhbHVlOiBlbmRDb2x1bW4sXG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLmVuZENvbHVtbiA9IGVuZENvbHVtbjtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKG5vcCkge1xuICAgIC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi9cbiAgfVxufVxuXG5FeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IEV4Y2VwdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMlY0WTJWd2RHbHZiaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN1FVRkJRU3hKUVVGTkxGVkJRVlVzUjBGQlJ5eERRVU5xUWl4aFFVRmhMRVZCUTJJc1ZVRkJWU3hGUVVOV0xGbEJRVmtzUlVGRFdpeGxRVUZsTEVWQlEyWXNVMEZCVXl4RlFVTlVMRTFCUVUwc1JVRkRUaXhSUVVGUkxFVkJRMUlzVDBGQlR5eERRVU5TTEVOQlFVTTdPMEZCUlVZc1UwRkJVeXhUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFVTm9ReXhOUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjN1RVRkRlRUlzU1VGQlNTeFpRVUZCTzAxQlEwb3NZVUZCWVN4WlFVRkJPMDFCUTJJc1RVRkJUU3haUVVGQk8wMUJRMDRzVTBGQlV5eFpRVUZCTEVOQlFVTTdPMEZCUlZvc1RVRkJTU3hIUVVGSExFVkJRVVU3UVVGRFVDeFJRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGRFSXNhVUpCUVdFc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXp0QlFVTTNRaXhWUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRNVUlzWVVGQlV5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRE96dEJRVVV6UWl4WFFVRlBMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUjBGQlJ5eEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRPMGRCUTNoRE96dEJRVVZFTEUxQlFVa3NSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03T3p0QlFVY3hSQ3hQUVVGTExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1ZVRkJWU3hEUVVGRExFMUJRVTBzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0QlFVTm9SQ3hSUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUXpsRE96czdRVUZIUkN4TlFVRkpMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0QlFVTXpRaXhUUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1NVRkJTU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBkQlF6RkRPenRCUVVWRUxFMUJRVWs3UVVGRFJpeFJRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTlFMRlZCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEzWkNMRlZCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzWVVGQllTeERRVUZET3pzN08wRkJTVzVETEZWQlFVa3NUVUZCVFN4RFFVRkRMR05CUVdNc1JVRkJSVHRCUVVONlFpeGpRVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRGNFTXNaVUZCU3l4RlFVRkZMRTFCUVUwN1FVRkRZaXh2UWtGQlZTeEZRVUZGTEVsQlFVazdVMEZEYWtJc1EwRkJReXhEUVVGRE8wRkJRMGdzWTBGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1YwRkJWeXhGUVVGRk8wRkJRM1pETEdWQlFVc3NSVUZCUlN4VFFVRlRPMEZCUTJoQ0xHOUNRVUZWTEVWQlFVVXNTVUZCU1R0VFFVTnFRaXhEUVVGRExFTkJRVU03VDBGRFNpeE5RVUZOTzBGQlEwd3NXVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03UVVGRGNrSXNXVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhUUVVGVExFTkJRVU03VDBGRE5VSTdTMEZEUmp0SFFVTkdMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVU3TzBkQlJXSTdRMEZEUmpzN1FVRkZSQ3hUUVVGVExFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NTMEZCU3l4RlFVRkZMRU5CUVVNN08zRkNRVVZ1UWl4VFFVRlRJaXdpWm1sc1pTSTZJbVY0WTJWd2RHbHZiaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltTnZibk4wSUdWeWNtOXlVSEp2Y0hNZ1BTQmJYRzRnSUNka1pYTmpjbWx3ZEdsdmJpY3NYRzRnSUNkbWFXeGxUbUZ0WlNjc1hHNGdJQ2RzYVc1bFRuVnRZbVZ5Snl4Y2JpQWdKMlZ1WkV4cGJtVk9kVzFpWlhJbkxGeHVJQ0FuYldWemMyRm5aU2NzWEc0Z0lDZHVZVzFsSnl4Y2JpQWdKMjUxYldKbGNpY3NYRzRnSUNkemRHRmpheWRjYmwwN1hHNWNibVoxYm1OMGFXOXVJRVY0WTJWd2RHbHZiaWh0WlhOellXZGxMQ0J1YjJSbEtTQjdYRzRnSUd4bGRDQnNiMk1nUFNCdWIyUmxJQ1ltSUc1dlpHVXViRzlqTEZ4dUlDQWdJR3hwYm1Vc1hHNGdJQ0FnWlc1a1RHbHVaVTUxYldKbGNpeGNiaUFnSUNCamIyeDFiVzRzWEc0Z0lDQWdaVzVrUTI5c2RXMXVPMXh1WEc0Z0lHbG1JQ2hzYjJNcElIdGNiaUFnSUNCc2FXNWxJRDBnYkc5akxuTjBZWEowTG14cGJtVTdYRzRnSUNBZ1pXNWtUR2x1WlU1MWJXSmxjaUE5SUd4dll5NWxibVF1YkdsdVpUdGNiaUFnSUNCamIyeDFiVzRnUFNCc2IyTXVjM1JoY25RdVkyOXNkVzF1TzF4dUlDQWdJR1Z1WkVOdmJIVnRiaUE5SUd4dll5NWxibVF1WTI5c2RXMXVPMXh1WEc0Z0lDQWdiV1Z6YzJGblpTQXJQU0FuSUMwZ0p5QXJJR3hwYm1VZ0t5QW5PaWNnS3lCamIyeDFiVzQ3WEc0Z0lIMWNibHh1SUNCc1pYUWdkRzF3SUQwZ1JYSnliM0l1Y0hKdmRHOTBlWEJsTG1OdmJuTjBjblZqZEc5eUxtTmhiR3dvZEdocGN5d2diV1Z6YzJGblpTazdYRzVjYmlBZ0x5OGdWVzVtYjNKMGRXNWhkR1ZzZVNCbGNuSnZjbk1nWVhKbElHNXZkQ0JsYm5WdFpYSmhZbXhsSUdsdUlFTm9jbTl0WlNBb1lYUWdiR1ZoYzNRcExDQnpieUJnWm05eUlIQnliM0FnYVc0Z2RHMXdZQ0JrYjJWemJpZDBJSGR2Y21zdVhHNGdJR1p2Y2lBb2JHVjBJR2xrZUNBOUlEQTdJR2xrZUNBOElHVnljbTl5VUhKdmNITXViR1Z1WjNSb095QnBaSGdyS3lrZ2UxeHVJQ0FnSUhSb2FYTmJaWEp5YjNKUWNtOXdjMXRwWkhoZFhTQTlJSFJ0Y0Z0bGNuSnZjbEJ5YjNCelcybGtlRjFkTzF4dUlDQjlYRzVjYmlBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHVnNjMlVnS2k5Y2JpQWdhV1lnS0VWeWNtOXlMbU5oY0hSMWNtVlRkR0ZqYTFSeVlXTmxLU0I3WEc0Z0lDQWdSWEp5YjNJdVkyRndkSFZ5WlZOMFlXTnJWSEpoWTJVb2RHaHBjeXdnUlhoalpYQjBhVzl1S1R0Y2JpQWdmVnh1WEc0Z0lIUnllU0I3WEc0Z0lDQWdhV1lnS0d4dll5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1c2FXNWxUblZ0WW1WeUlEMGdiR2x1WlR0Y2JpQWdJQ0FnSUhSb2FYTXVaVzVrVEdsdVpVNTFiV0psY2lBOUlHVnVaRXhwYm1WT2RXMWlaWEk3WEc1Y2JpQWdJQ0FnSUM4dklGZHZjbXNnWVhKdmRXNWtJR2x6YzNWbElIVnVaR1Z5SUhOaFptRnlhU0IzYUdWeVpTQjNaU0JqWVc0bmRDQmthWEpsWTNSc2VTQnpaWFFnZEdobElHTnZiSFZ0YmlCMllXeDFaVnh1SUNBZ0lDQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJRzVsZUhRZ0tpOWNiaUFnSUNBZ0lHbG1JQ2hQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrcElIdGNiaUFnSUNBZ0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0hSb2FYTXNJQ2RqYjJ4MWJXNG5MQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnNkV1U2SUdOdmJIVnRiaXhjYmlBZ0lDQWdJQ0FnSUNCbGJuVnRaWEpoWW14bE9pQjBjblZsWEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdocGN5d2dKMlZ1WkVOdmJIVnRiaWNzSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlRvZ1pXNWtRMjlzZFcxdUxGeHVJQ0FnSUNBZ0lDQWdJR1Z1ZFcxbGNtRmliR1U2SUhSeWRXVmNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtTnZiSFZ0YmlBOUlHTnZiSFZ0Ymp0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVsYm1SRGIyeDFiVzRnUFNCbGJtUkRiMngxYlc0N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlJR05oZEdOb0lDaHViM0FwSUh0Y2JpQWdJQ0F2S2lCSloyNXZjbVVnYVdZZ2RHaGxJR0p5YjNkelpYSWdhWE1nZG1WeWVTQndZWEowYVdOMWJHRnlJQ292WEc0Z0lIMWNibjFjYmx4dVJYaGpaWEIwYVc5dUxuQnliM1J2ZEhsd1pTQTlJRzVsZHlCRmNuSnZjaWdwTzF4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCRmVHTmxjSFJwYjI0N1hHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgdmFyIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoX3V0aWxzLmlzQXJyYXkoY29udGV4dCkpIHtcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgICAgb3B0aW9ucy5pZHMgPSBbb3B0aW9ucy5uYW1lXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzLmVhY2goY29udGV4dCwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICB2YXIgZGF0YSA9IF91dGlscy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12WW14dlkyc3RhR1ZzY0dWeUxXMXBjM05wYm1jdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenR4UWtGQmQwUXNWVUZCVlRzN2NVSkJSVzVFTEZWQlFWTXNVVUZCVVN4RlFVRkZPMEZCUTJoRExGVkJRVkVzUTBGQlF5eGpRVUZqTEVOQlFVTXNiMEpCUVc5Q0xFVkJRVVVzVlVGQlV5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNaRkxGRkJRVWtzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4UFFVRlBPMUZCUXpOQ0xFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPenRCUVVWc1FpeFJRVUZKTEU5QlFVOHNTMEZCU3l4SlFVRkpMRVZCUVVVN1FVRkRjRUlzWVVGQlR5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRha0lzVFVGQlRTeEpRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRWxCUVVrc1QwRkJUeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU12UXl4aFFVRlBMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU4wUWl4TlFVRk5MRWxCUVVrc1pVRkJVU3hQUVVGUExFTkJRVU1zUlVGQlJUdEJRVU16UWl4VlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlEzUkNMRmxCUVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU5tTEdsQ1FVRlBMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUXpsQ096dEJRVVZFTEdWQlFVOHNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMDlCUTJoRUxFMUJRVTA3UVVGRFRDeGxRVUZQTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRQUVVOMFFqdExRVU5HTEUxQlFVMDdRVUZEVEN4VlFVRkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFbEJRVWtzVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlR0QlFVTXZRaXhaUVVGSkxFbEJRVWtzUjBGQlJ5eHRRa0ZCV1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGNrTXNXVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXg1UWtGRGFrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRM2hDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTJJc1EwRkJRenRCUVVOR0xHVkJRVThzUjBGQlJ5eEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJRenRQUVVNeFFqczdRVUZGUkN4aFFVRlBMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZETjBJN1IwRkRSaXhEUVVGRExFTkJRVU03UTBGRFNpSXNJbVpwYkdVaU9pSmliRzlqYXkxb1pXeHdaWEl0YldsemMybHVaeTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lHRndjR1Z1WkVOdmJuUmxlSFJRWVhSb0xDQmpjbVZoZEdWR2NtRnRaU3dnYVhOQmNuSmhlU0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnWm5WdVkzUnBiMjRvYVc1emRHRnVZMlVwSUh0Y2JpQWdhVzV6ZEdGdVkyVXVjbVZuYVhOMFpYSklaV3h3WlhJb0oySnNiMk5yU0dWc2NHVnlUV2x6YzJsdVp5Y3NJR1oxYm1OMGFXOXVLR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnNaWFFnYVc1MlpYSnpaU0E5SUc5d2RHbHZibk11YVc1MlpYSnpaU3hjYmlBZ0lDQWdJR1p1SUQwZ2IzQjBhVzl1Y3k1bWJqdGNibHh1SUNBZ0lHbG1JQ2hqYjI1MFpYaDBJRDA5UFNCMGNuVmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdabTRvZEdocGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGpiMjUwWlhoMElEMDlQU0JtWVd4elpTQjhmQ0JqYjI1MFpYaDBJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnBiblpsY25ObEtIUm9hWE1wTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYVhOQmNuSmhlU2hqYjI1MFpYaDBLU2tnZTF4dUlDQWdJQ0FnYVdZZ0tHTnZiblJsZUhRdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1cFpITXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdmNIUnBiMjV6TG1sa2N5QTlJRnR2Y0hScGIyNXpMbTVoYldWZE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR2x1YzNSaGJtTmxMbWhsYkhCbGNuTXVaV0ZqYUNoamIyNTBaWGgwTENCdmNIUnBiMjV6S1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5abGNuTmxLSFJvYVhNcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1a1lYUmhJQ1ltSUc5d2RHbHZibk11YVdSektTQjdYRzRnSUNBZ0lDQWdJR3hsZENCa1lYUmhJRDBnWTNKbFlYUmxSbkpoYldVb2IzQjBhVzl1Y3k1a1lYUmhLVHRjYmlBZ0lDQWdJQ0FnWkdGMFlTNWpiMjUwWlhoMFVHRjBhQ0E5SUdGd2NHVnVaRU52Ym5SbGVIUlFZWFJvS0Z4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2Ym5NdVpHRjBZUzVqYjI1MFpYaDBVR0YwYUN4Y2JpQWdJQ0FnSUNBZ0lDQnZjSFJwYjI1ekxtNWhiV1ZjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2IzQjBhVzl1Y3lBOUlIc2daR0YwWVRvZ1pHRjBZU0I5TzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnWm00b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYm4xY2JpSmRmUT09XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2VhY2gnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIHZhciBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICByZXQgPSAnJyxcbiAgICAgICAgZGF0YSA9IHVuZGVmaW5lZCxcbiAgICAgICAgY29udGV4dFBhdGggPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IF91dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMuaWRzWzBdKSArICcuJztcbiAgICB9XG5cbiAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IF91dGlscy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBsYXN0KSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBkYXRhLmtleSA9IGZpZWxkO1xuICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0O1xuXG4gICAgICAgIGlmIChjb250ZXh0UGF0aCkge1xuICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aCArIGZpZWxkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRbZmllbGRdLCBmaWVsZF0sIFtjb250ZXh0UGF0aCArIGZpZWxkLCBudWxsXSlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIHZhciBuZXdDb250ZXh0ID0gW107XG4gICAgICAgIHZhciBpdGVyYXRvciA9IGNvbnRleHRbZ2xvYmFsLlN5bWJvbC5pdGVyYXRvcl0oKTtcbiAgICAgICAgZm9yICh2YXIgaXQgPSBpdGVyYXRvci5uZXh0KCk7ICFpdC5kb25lOyBpdCA9IGl0ZXJhdG9yLm5leHQoKSkge1xuICAgICAgICAgIG5ld0NvbnRleHQucHVzaChpdC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dCA9IG5ld0NvbnRleHQ7XG4gICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgcHJpb3JLZXkgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYW4gaXRlcm1lZGlhdGUga2V5cyBhcnJheS5cbiAgICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICByZXQgPSBpbnZlcnNlKHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZaV0ZqYUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3TzNGQ1FVMVBMRlZCUVZVN08zbENRVU5MTEdOQlFXTTdPenM3Y1VKQlJYSkNMRlZCUVZNc1VVRkJVU3hGUVVGRk8wRkJRMmhETEZWQlFWRXNRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hGUVVGRkxGVkJRVk1zVDBGQlR5eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTjZSQ3hSUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlExb3NXVUZCVFN3eVFrRkJZeXcyUWtGQk5rSXNRMEZCUXl4RFFVRkRPMHRCUTNCRU96dEJRVVZFTEZGQlFVa3NSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJReXhGUVVGRk8xRkJRMnBDTEU5QlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNc1QwRkJUenRSUVVONlFpeERRVUZETEVkQlFVY3NRMEZCUXp0UlFVTk1MRWRCUVVjc1IwRkJSeXhGUVVGRk8xRkJRMUlzU1VGQlNTeFpRVUZCTzFGQlEwb3NWMEZCVnl4WlFVRkJMRU5CUVVNN08wRkJSV1FzVVVGQlNTeFBRVUZQTEVOQlFVTXNTVUZCU1N4SlFVRkpMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVU3UVVGREwwSXNhVUpCUVZjc1IwRkRWQ3g1UWtGQmEwSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dExRVU55UlRzN1FVRkZSQ3hSUVVGSkxHdENRVUZYTEU5QlFVOHNRMEZCUXl4RlFVRkZPMEZCUTNaQ0xHRkJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRemxDT3p0QlFVVkVMRkZCUVVrc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU5vUWl4VlFVRkpMRWRCUVVjc2JVSkJRVmtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTJ4RE96dEJRVVZFTEdGQlFWTXNZVUZCWVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlEzcERMRlZCUVVrc1NVRkJTU3hGUVVGRk8wRkJRMUlzV1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRha0lzV1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRia0lzV1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRM3BDTEZsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6czdRVUZGYmtJc1dVRkJTU3hYUVVGWExFVkJRVVU3UVVGRFppeGpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRmRCUVZjc1IwRkJSeXhMUVVGTExFTkJRVU03VTBGRGVFTTdUMEZEUmpzN1FVRkZSQ3hUUVVGSExFZEJRMFFzUjBGQlJ5eEhRVU5JTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVU3UVVGRGFrSXNXVUZCU1N4RlFVRkZMRWxCUVVrN1FVRkRWaXh0UWtGQlZ5eEZRVUZGTEcxQ1FVTllMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RlFVTjJRaXhEUVVGRExGZEJRVmNzUjBGQlJ5eExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUXpWQ08wOUJRMFlzUTBGQlF5eERRVUZETzB0QlEwNDdPMEZCUlVRc1VVRkJTU3hQUVVGUExFbEJRVWtzVDBGQlR5eFBRVUZQTEV0QlFVc3NVVUZCVVN4RlFVRkZPMEZCUXpGRExGVkJRVWtzWlVGQlVTeFBRVUZQTEVOQlFVTXNSVUZCUlR0QlFVTndRaXhoUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTjJReXhqUVVGSkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVWQlFVVTdRVUZEYUVJc2VVSkJRV0VzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWRCUXk5RE8xTkJRMFk3VDBGRFJpeE5RVUZOTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSVHRCUVVNelJDeFpRVUZOTEZWQlFWVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRkRUlzV1VGQlRTeFJRVUZSTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNRMEZCUXp0QlFVTnVSQ3hoUVVGTExFbEJRVWtzUlVGQlJTeEhRVUZITEZGQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4SFFVRkhMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJUdEJRVU0zUkN4dlFrRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1UwRkRNMEk3UVVGRFJDeGxRVUZQTEVkQlFVY3NWVUZCVlN4RFFVRkRPMEZCUTNKQ0xHRkJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTNaRExIVkNRVUZoTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzVDBGQlR5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVNdlF6dFBRVU5HTEUxQlFVMDdPMEZCUTB3c1kwRkJTU3hSUVVGUkxGbEJRVUVzUTBGQlF6czdRVUZGWWl4blFrRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hIUVVGSExFVkJRVWs3T3pzN1FVRkpiRU1zWjBKQlFVa3NVVUZCVVN4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVNeFFpd3lRa0ZCWVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYUVNN1FVRkRSQ3h2UWtGQlVTeEhRVUZITEVkQlFVY3NRMEZCUXp0QlFVTm1MR0ZCUVVNc1JVRkJSU3hEUVVGRE8xZEJRMHdzUTBGQlF5eERRVUZETzBGQlEwZ3NZMEZCU1N4UlFVRlJMRXRCUVVzc1UwRkJVeXhGUVVGRk8wRkJRekZDTEhsQ1FVRmhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1YwRkRkRU03TzA5QlEwWTdTMEZEUmpzN1FVRkZSQ3hSUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdRVUZEV0N4VFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEzSkNPenRCUVVWRUxGZEJRVThzUjBGQlJ5eERRVUZETzBkQlExb3NRMEZCUXl4RFFVRkRPME5CUTBvaUxDSm1hV3hsSWpvaVpXRmphQzVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1hHNGdJR0Z3Y0dWdVpFTnZiblJsZUhSUVlYUm9MRnh1SUNCaWJHOWphMUJoY21GdGN5eGNiaUFnWTNKbFlYUmxSbkpoYldVc1hHNGdJR2x6UVhKeVlYa3NYRzRnSUdselJuVnVZM1JwYjI1Y2JuMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVhVzF3YjNKMElFVjRZMlZ3ZEdsdmJpQm1jbTl0SUNjdUxpOWxlR05sY0hScGIyNG5PMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaWhwYm5OMFlXNWpaU2tnZTF4dUlDQnBibk4wWVc1alpTNXlaV2RwYzNSbGNraGxiSEJsY2lnblpXRmphQ2NzSUdaMWJtTjBhVzl1S0dOdmJuUmxlSFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb0lXOXdkR2x2Ym5NcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMDExYzNRZ2NHRnpjeUJwZEdWeVlYUnZjaUIwYnlBalpXRmphQ2NwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCbWJpQTlJRzl3ZEdsdmJuTXVabTRzWEc0Z0lDQWdJQ0JwYm5abGNuTmxJRDBnYjNCMGFXOXVjeTVwYm5abGNuTmxMRnh1SUNBZ0lDQWdhU0E5SURBc1hHNGdJQ0FnSUNCeVpYUWdQU0FuSnl4Y2JpQWdJQ0FnSUdSaGRHRXNYRzRnSUNBZ0lDQmpiMjUwWlhoMFVHRjBhRHRjYmx4dUlDQWdJR2xtSUNodmNIUnBiMjV6TG1SaGRHRWdKaVlnYjNCMGFXOXVjeTVwWkhNcElIdGNiaUFnSUNBZ0lHTnZiblJsZUhSUVlYUm9JRDFjYmlBZ0lDQWdJQ0FnWVhCd1pXNWtRMjl1ZEdWNGRGQmhkR2dvYjNCMGFXOXVjeTVrWVhSaExtTnZiblJsZUhSUVlYUm9MQ0J2Y0hScGIyNXpMbWxrYzFzd1hTa2dLeUFuTGljN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHbHpSblZ1WTNScGIyNG9ZMjl1ZEdWNGRDa3BJSHRjYmlBZ0lDQWdJR052Ym5SbGVIUWdQU0JqYjI1MFpYaDBMbU5oYkd3b2RHaHBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11WkdGMFlTa2dlMXh1SUNBZ0lDQWdaR0YwWVNBOUlHTnlaV0YwWlVaeVlXMWxLRzl3ZEdsdmJuTXVaR0YwWVNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm5WdVkzUnBiMjRnWlhobFkwbDBaWEpoZEdsdmJpaG1hV1ZzWkN3Z2FXNWtaWGdzSUd4aGMzUXBJSHRjYmlBZ0lDQWdJR2xtSUNoa1lYUmhLU0I3WEc0Z0lDQWdJQ0FnSUdSaGRHRXVhMlY1SUQwZ1ptbGxiR1E3WEc0Z0lDQWdJQ0FnSUdSaGRHRXVhVzVrWlhnZ1BTQnBibVJsZUR0Y2JpQWdJQ0FnSUNBZ1pHRjBZUzVtYVhKemRDQTlJR2x1WkdWNElEMDlQU0F3TzF4dUlDQWdJQ0FnSUNCa1lYUmhMbXhoYzNRZ1BTQWhJV3hoYzNRN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0dOdmJuUmxlSFJRWVhSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnWkdGMFlTNWpiMjUwWlhoMFVHRjBhQ0E5SUdOdmJuUmxlSFJRWVhSb0lDc2dabWxsYkdRN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbVYwSUQxY2JpQWdJQ0FnSUNBZ2NtVjBJQ3RjYmlBZ0lDQWdJQ0FnWm00b1kyOXVkR1Y0ZEZ0bWFXVnNaRjBzSUh0Y2JpQWdJQ0FnSUNBZ0lDQmtZWFJoT2lCa1lYUmhMRnh1SUNBZ0lDQWdJQ0FnSUdKc2IyTnJVR0Z5WVcxek9pQmliRzlqYTFCaGNtRnRjeWhjYmlBZ0lDQWdJQ0FnSUNBZ0lGdGpiMjUwWlhoMFcyWnBaV3hrWFN3Z1ptbGxiR1JkTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdXMk52Ym5SbGVIUlFZWFJvSUNzZ1ptbGxiR1FzSUc1MWJHeGRYRzRnSUNBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9ZMjl1ZEdWNGRDQW1KaUIwZVhCbGIyWWdZMjl1ZEdWNGRDQTlQVDBnSjI5aWFtVmpkQ2NwSUh0Y2JpQWdJQ0FnSUdsbUlDaHBjMEZ5Y21GNUtHTnZiblJsZUhRcEtTQjdYRzRnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR29nUFNCamIyNTBaWGgwTG14bGJtZDBhRHNnYVNBOElHbzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNocElHbHVJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRaV05KZEdWeVlYUnBiMjRvYVN3Z2FTd2dhU0E5UFQwZ1kyOXVkR1Y0ZEM1c1pXNW5kR2dnTFNBeEtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1oyeHZZbUZzTGxONWJXSnZiQ0FtSmlCamIyNTBaWGgwVzJkc2IySmhiQzVUZVcxaWIyd3VhWFJsY21GMGIzSmRLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzVsZDBOdmJuUmxlSFFnUFNCYlhUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FYUmxjbUYwYjNJZ1BTQmpiMjUwWlhoMFcyZHNiMkpoYkM1VGVXMWliMnd1YVhSbGNtRjBiM0pkS0NrN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHbDBJRDBnYVhSbGNtRjBiM0l1Ym1WNGRDZ3BPeUFoYVhRdVpHOXVaVHNnYVhRZ1BTQnBkR1Z5WVhSdmNpNXVaWGgwS0NrcElIdGNiaUFnSUNBZ0lDQWdJQ0J1WlhkRGIyNTBaWGgwTG5CMWMyZ29hWFF1ZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdOdmJuUmxlSFFnUFNCdVpYZERiMjUwWlhoME8xeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnWTI5dWRHVjRkQzVzWlc1bmRHZzdJR2tnUENCcU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmxlR1ZqU1hSbGNtRjBhVzl1S0drc0lHa3NJR2tnUFQwOUlHTnZiblJsZUhRdWJHVnVaM1JvSUMwZ01TazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR3hsZENCd2NtbHZja3RsZVR0Y2JseHVJQ0FnSUNBZ0lDQlBZbXBsWTNRdWEyVjVjeWhqYjI1MFpYaDBLUzVtYjNKRllXTm9LR3RsZVNBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1YyVW5jbVVnY25WdWJtbHVaeUIwYUdVZ2FYUmxjbUYwYVc5dWN5QnZibVVnYzNSbGNDQnZkWFFnYjJZZ2MzbHVZeUJ6YnlCM1pTQmpZVzRnWkdWMFpXTjBYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2RHaGxJR3hoYzNRZ2FYUmxjbUYwYVc5dUlIZHBkR2h2ZFhRZ2FHRjJaU0IwYnlCelkyRnVJSFJvWlNCdlltcGxZM1FnZEhkcFkyVWdZVzVrSUdOeVpXRjBaVnh1SUNBZ0lDQWdJQ0FnSUM4dklHRnVJR2wwWlhKdFpXUnBZWFJsSUd0bGVYTWdZWEp5WVhrdVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hCeWFXOXlTMlY1SUNFOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRaV05KZEdWeVlYUnBiMjRvY0hKcGIzSkxaWGtzSUdrZ0xTQXhLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdjSEpwYjNKTFpYa2dQU0JyWlhrN1hHNGdJQ0FnSUNBZ0lDQWdhU3NyTzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdhV1lnS0hCeWFXOXlTMlY1SUNFOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCbGVHVmpTWFJsY21GMGFXOXVLSEJ5YVc5eVMyVjVMQ0JwSUMwZ01Td2dkSEoxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9hU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdjbVYwSUQwZ2FXNTJaWEp6WlNoMGFHbHpLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2NtVjBPMXh1SUNCOUtUdGNibjFjYmlKZGZRPT1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9leGNlcHRpb24gPSByZXF1aXJlKCcuLi9leGNlcHRpb24nKTtcblxudmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdoZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24gKCkgLyogW2FyZ3MsIF1vcHRpb25zICove1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBBIG1pc3NpbmcgZmllbGQgaW4gYSB7e2Zvb319IGNvbnN0cnVjdC5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNvbWVvbmUgaXMgYWN0dWFsbHkgdHJ5aW5nIHRvIGNhbGwgc29tZXRoaW5nLCBibG93IHVwLlxuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ01pc3NpbmcgaGVscGVyOiBcIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLm5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZhR1ZzY0dWeUxXMXBjM05wYm1jdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3p0NVFrRkJjMElzWTBGQll6czdPenR4UWtGRmNrSXNWVUZCVXl4UlFVRlJMRVZCUVVVN1FVRkRhRU1zVlVGQlVTeERRVUZETEdOQlFXTXNRMEZCUXl4bFFVRmxMRVZCUVVVc2FVTkJRV2RETzBGQlEzWkZMRkZCUVVrc1UwRkJVeXhEUVVGRExFMUJRVTBzUzBGQlN5eERRVUZETEVWQlFVVTdPMEZCUlRGQ0xHRkJRVThzVTBGQlV5eERRVUZETzB0QlEyeENMRTFCUVUwN08wRkJSVXdzV1VGQlRTd3lRa0ZEU2l4dFFrRkJiVUlzUjBGQlJ5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVTnFSU3hEUVVGRE8wdEJRMGc3UjBGRFJpeERRVUZETEVOQlFVTTdRMEZEU2lJc0ltWnBiR1VpT2lKb1pXeHdaWEl0YldsemMybHVaeTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCRmVHTmxjSFJwYjI0Z1puSnZiU0FuTGk0dlpYaGpaWEIwYVc5dUp6dGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKSVpXeHdaWElvSjJobGJIQmxjazFwYzNOcGJtY25MQ0JtZFc1amRHbHZiaWd2S2lCYllYSm5jeXdnWFc5d2RHbHZibk1nS2k4cElIdGNiaUFnSUNCcFppQW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQTlQVDBnTVNrZ2UxeHVJQ0FnSUNBZ0x5OGdRU0J0YVhOemFXNW5JR1pwWld4a0lHbHVJR0VnZTN0bWIyOTlmU0JqYjI1emRISjFZM1F1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBdkx5QlRiMjFsYjI1bElHbHpJR0ZqZEhWaGJHeDVJSFJ5ZVdsdVp5QjBieUJqWVd4c0lITnZiV1YwYUdsdVp5d2dZbXh2ZHlCMWNDNWNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9YRzRnSUNBZ0lDQWdJQ2ROYVhOemFXNW5JR2hsYkhCbGNqb2dYQ0luSUNzZ1lYSm5kVzFsYm5SelcyRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ0xTQXhYUzV1WVcxbElDc2dKMXdpSjF4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc0Z0lIMHBPMXh1ZlZ4dUlsMTlcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF91dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbnZhciBfZXhjZXB0aW9uID0gcmVxdWlyZSgnLi4vZXhjZXB0aW9uJyk7XG5cbnZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYnLCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnI2lmIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb25kaXRpb25hbCkpIHtcbiAgICAgIGNvbmRpdGlvbmFsID0gY29uZGl0aW9uYWwuY2FsbCh0aGlzKTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHJlbmRlciB0aGUgcG9zaXRpdmUgcGF0aCBpZiB0aGUgdmFsdWUgaXMgdHJ1dGh5IGFuZCBub3QgZW1wdHkuXG4gICAgLy8gVGhlIGBpbmNsdWRlWmVyb2Agb3B0aW9uIG1heSBiZSBzZXQgdG8gdHJlYXQgdGhlIGNvbmR0aW9uYWwgYXMgcHVyZWx5IG5vdCBlbXB0eSBiYXNlZCBvbiB0aGVcbiAgICAvLyBiZWhhdmlvciBvZiBpc0VtcHR5LiBFZmZlY3RpdmVseSB0aGlzIGRldGVybWluZXMgaWYgMCBpcyBoYW5kbGVkIGJ5IHRoZSBwb3NpdGl2ZSBwYXRoIG9yIG5lZ2F0aXZlLlxuICAgIGlmICghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCB8fCBfdXRpbHMuaXNFbXB0eShjb25kaXRpb25hbCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uIChjb25kaXRpb25hbCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZhV1l1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenR4UWtGQmIwTXNWVUZCVlRzN2VVSkJRM2hDTEdOQlFXTTdPenM3Y1VKQlJYSkNMRlZCUVZNc1VVRkJVU3hGUVVGRk8wRkJRMmhETEZWQlFWRXNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hGUVVGRkxGVkJRVk1zVjBGQlZ5eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTXpSQ3hSUVVGSkxGTkJRVk1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUTNwQ0xGbEJRVTBzTWtKQlFXTXNiVU5CUVcxRExFTkJRVU1zUTBGQlF6dExRVU14UkR0QlFVTkVMRkZCUVVrc2EwSkJRVmNzVjBGQlZ5eERRVUZETEVWQlFVVTdRVUZETTBJc2FVSkJRVmNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM1JET3pzN096dEJRVXRFTEZGQlFVa3NRVUZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SlFVRkxMR1ZCUVZFc1YwRkJWeXhEUVVGRExFVkJRVVU3UVVGRGRrVXNZVUZCVHl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6bENMRTFCUVUwN1FVRkRUQ3hoUVVGUExFOUJRVThzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRla0k3UjBGRFJpeERRVUZETEVOQlFVTTdPMEZCUlVnc1ZVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eFJRVUZSTEVWQlFVVXNWVUZCVXl4WFFVRlhMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJReTlFTEZGQlFVa3NVMEZCVXl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFVkJRVVU3UVVGRGVrSXNXVUZCVFN3eVFrRkJZeXgxUTBGQmRVTXNRMEZCUXl4RFFVRkRPMHRCUXpsRU8wRkJRMFFzVjBGQlR5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZPMEZCUTNCRUxGRkJRVVVzUlVGQlJTeFBRVUZQTEVOQlFVTXNUMEZCVHp0QlFVTnVRaXhoUVVGUExFVkJRVVVzVDBGQlR5eERRVUZETEVWQlFVVTdRVUZEYmtJc1ZVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eEpRVUZKTzB0QlEyNUNMRU5CUVVNc1EwRkJRenRIUVVOS0xFTkJRVU1zUTBGQlF6dERRVU5LSWl3aVptbHNaU0k2SW1sbUxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnYVhORmJYQjBlU3dnYVhOR2RXNWpkR2x2YmlCOUlHWnliMjBnSnk0dUwzVjBhV3h6Snp0Y2JtbHRjRzl5ZENCRmVHTmxjSFJwYjI0Z1puSnZiU0FuTGk0dlpYaGpaWEIwYVc5dUp6dGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKSVpXeHdaWElvSjJsbUp5d2dablZ1WTNScGIyNG9ZMjl1WkdsMGFXOXVZV3dzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb1lYSm5kVzFsYm5SekxteGxibWQwYUNBaFBTQXlLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NjamFXWWdjbVZ4ZFdseVpYTWdaWGhoWTNSc2VTQnZibVVnWVhKbmRXMWxiblFuS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dselJuVnVZM1JwYjI0b1kyOXVaR2wwYVc5dVlXd3BLU0I3WEc0Z0lDQWdJQ0JqYjI1a2FYUnBiMjVoYkNBOUlHTnZibVJwZEdsdmJtRnNMbU5oYkd3b2RHaHBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUkdWbVlYVnNkQ0JpWldoaGRtbHZjaUJwY3lCMGJ5QnlaVzVrWlhJZ2RHaGxJSEJ2YzJsMGFYWmxJSEJoZEdnZ2FXWWdkR2hsSUhaaGJIVmxJR2x6SUhSeWRYUm9lU0JoYm1RZ2JtOTBJR1Z0Y0hSNUxseHVJQ0FnSUM4dklGUm9aU0JnYVc1amJIVmtaVnBsY205Z0lHOXdkR2x2YmlCdFlYa2dZbVVnYzJWMElIUnZJSFJ5WldGMElIUm9aU0JqYjI1a2RHbHZibUZzSUdGeklIQjFjbVZzZVNCdWIzUWdaVzF3ZEhrZ1ltRnpaV1FnYjI0Z2RHaGxYRzRnSUNBZ0x5OGdZbVZvWVhacGIzSWdiMllnYVhORmJYQjBlUzRnUldabVpXTjBhWFpsYkhrZ2RHaHBjeUJrWlhSbGNtMXBibVZ6SUdsbUlEQWdhWE1nYUdGdVpHeGxaQ0JpZVNCMGFHVWdjRzl6YVhScGRtVWdjR0YwYUNCdmNpQnVaV2RoZEdsMlpTNWNiaUFnSUNCcFppQW9LQ0Z2Y0hScGIyNXpMbWhoYzJndWFXNWpiSFZrWlZwbGNtOGdKaVlnSVdOdmJtUnBkR2x2Ym1Gc0tTQjhmQ0JwYzBWdGNIUjVLR052Ym1ScGRHbHZibUZzS1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc5d2RHbHZibk11YVc1MlpYSnpaU2gwYUdsektUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzl3ZEdsdmJuTXVabTRvZEdocGN5azdYRzRnSUNBZ2ZWeHVJQ0I5S1R0Y2JseHVJQ0JwYm5OMFlXNWpaUzV5WldkcGMzUmxja2hsYkhCbGNpZ25kVzVzWlhOekp5d2dablZ1WTNScGIyNG9ZMjl1WkdsMGFXOXVZV3dzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb1lYSm5kVzFsYm5SekxteGxibWQwYUNBaFBTQXlLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NjamRXNXNaWE56SUhKbGNYVnBjbVZ6SUdWNFlXTjBiSGtnYjI1bElHRnlaM1Z0Wlc1MEp5azdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJwYm5OMFlXNWpaUzVvWld4d1pYSnpXeWRwWmlkZExtTmhiR3dvZEdocGN5d2dZMjl1WkdsMGFXOXVZV3dzSUh0Y2JpQWdJQ0FnSUdadU9pQnZjSFJwYjI1ekxtbHVkbVZ5YzJVc1hHNGdJQ0FnSUNCcGJuWmxjbk5sT2lCdmNIUnBiMjV6TG1adUxGeHVJQ0FnSUNBZ2FHRnphRG9nYjNCMGFXOXVjeTVvWVhOb1hHNGdJQ0FnZlNrN1hHNGdJSDBwTzF4dWZWeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9nJywgZnVuY3Rpb24gKCkgLyogbWVzc2FnZSwgb3B0aW9ucyAqL3tcbiAgICB2YXIgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgICBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIHZhciBsZXZlbCA9IDE7XG4gICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5sZXZlbDtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2ZWw7XG4gICAgfVxuICAgIGFyZ3NbMF0gPSBsZXZlbDtcblxuICAgIGluc3RhbmNlLmxvZy5hcHBseShpbnN0YW5jZSwgYXJncyk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZiRzluTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdjVUpCUVdVc1ZVRkJVeXhSUVVGUkxFVkJRVVU3UVVGRGFFTXNWVUZCVVN4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFVkJRVVVzYTBOQlFXbERPMEZCUXpsRUxGRkJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTNCQ0xFOUJRVThzUjBGQlJ5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU0xUXl4VFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZETjBNc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONlFqczdRVUZGUkN4UlFVRkpMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRFpDeFJRVUZKTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU01UWl4WFFVRkxMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZETlVJc1RVRkJUU3hKUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVsQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzSkVMRmRCUVVzc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTTFRanRCUVVORUxGRkJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN08wRkJSV2hDTEZsQlFWRXNRMEZCUXl4SFFVRkhMRTFCUVVFc1EwRkJXaXhSUVVGUkxFVkJRVkVzU1VGQlNTeERRVUZETEVOQlFVTTdSMEZEZGtJc1EwRkJReXhEUVVGRE8wTkJRMG9pTENKbWFXeGxJam9pYkc5bkxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKSVpXeHdaWElvSjJ4dlp5Y3NJR1oxYm1OMGFXOXVLQzhxSUcxbGMzTmhaMlVzSUc5d2RHbHZibk1nS2k4cElIdGNiaUFnSUNCc1pYUWdZWEpuY3lBOUlGdDFibVJsWm1sdVpXUmRMRnh1SUNBZ0lDQWdiM0IwYVc5dWN5QTlJR0Z5WjNWdFpXNTBjMXRoY21kMWJXVnVkSE11YkdWdVozUm9JQzBnTVYwN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUMwZ01Uc2dhU3NyS1NCN1hHNGdJQ0FnSUNCaGNtZHpMbkIxYzJnb1lYSm5kVzFsYm5SelcybGRLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnYkdWMlpXd2dQU0F4TzF4dUlDQWdJR2xtSUNodmNIUnBiMjV6TG1oaGMyZ3ViR1YyWld3Z0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2JHVjJaV3dnUFNCdmNIUnBiMjV6TG1oaGMyZ3ViR1YyWld3N1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNodmNIUnBiMjV6TG1SaGRHRWdKaVlnYjNCMGFXOXVjeTVrWVhSaExteGxkbVZzSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUd4bGRtVnNJRDBnYjNCMGFXOXVjeTVrWVhSaExteGxkbVZzTzF4dUlDQWdJSDFjYmlBZ0lDQmhjbWR6V3pCZElEMGdiR1YyWld3N1hHNWNiaUFnSUNCcGJuTjBZVzVqWlM1c2IyY29MaTR1WVhKbmN5azdYRzRnSUgwcE8xeHVmVnh1SWwxOVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0aW9uIChvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12Ykc5dmEzVndMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN2NVSkJRV1VzVlVGQlV5eFJRVUZSTEVWQlFVVTdRVUZEYUVNc1ZVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eFJRVUZSTEVWQlFVVXNWVUZCVXl4SFFVRkhMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU01UkN4UlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRk96dEJRVVZTTEdGQlFVOHNSMEZCUnl4RFFVRkRPMHRCUTFvN1FVRkRSQ3hYUVVGUExFOUJRVThzUTBGQlF5eGpRVUZqTEVOQlFVTXNSMEZCUnl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wZEJRek5ETEVOQlFVTXNRMEZCUXp0RFFVTktJaXdpWm1sc1pTSTZJbXh2YjJ0MWNDNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1WNGNHOXlkQ0JrWldaaGRXeDBJR1oxYm1OMGFXOXVLR2x1YzNSaGJtTmxLU0I3WEc0Z0lHbHVjM1JoYm1ObExuSmxaMmx6ZEdWeVNHVnNjR1Z5S0Nkc2IyOXJkWEFuTENCbWRXNWpkR2x2Ymlodlltb3NJR1pwWld4a0xDQnZjSFJwYjI1ektTQjdYRzRnSUNBZ2FXWWdLQ0Z2WW1vcElIdGNiaUFnSUNBZ0lDOHZJRTV2ZEdVZ1ptOXlJRFV1TURvZ1EyaGhibWRsSUhSdklGd2liMkpxSUQwOUlHNTFiR3hjSWlCcGJpQTFMakJjYmlBZ0lDQWdJSEpsZEhWeWJpQnZZbW83WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdmNIUnBiMjV6TG14dmIydDFjRkJ5YjNCbGNuUjVLRzlpYWl3Z1ptbGxiR1FwTzF4dUlDQjlLVHRjYm4xY2JpSmRmUT09XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCcjd2l0aCByZXF1aXJlcyBleGFjdGx5IG9uZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgdmFyIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmICghX3V0aWxzLmlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbihjb250ZXh0LCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25NdmQybDBhQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPM0ZDUVUxUExGVkJRVlU3TzNsQ1FVTkxMR05CUVdNN096czdjVUpCUlhKQ0xGVkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEyaERMRlZCUVZFc1EwRkJReXhqUVVGakxFTkJRVU1zVFVGQlRTeEZRVUZGTEZWQlFWTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVONlJDeFJRVUZKTEZOQlFWTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRM3BDTEZsQlFVMHNNa0pCUVdNc2NVTkJRWEZETEVOQlFVTXNRMEZCUXp0TFFVTTFSRHRCUVVORUxGRkJRVWtzYTBKQlFWY3NUMEZCVHl4RFFVRkRMRVZCUVVVN1FVRkRka0lzWVVGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE9VSTdPMEZCUlVRc1VVRkJTU3hGUVVGRkxFZEJRVWNzVDBGQlR5eERRVUZETEVWQlFVVXNRMEZCUXpzN1FVRkZjRUlzVVVGQlNTeERRVUZETEdWQlFWRXNUMEZCVHl4RFFVRkRMRVZCUVVVN1FVRkRja0lzVlVGQlNTeEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenRCUVVONFFpeFZRVUZKTEU5QlFVOHNRMEZCUXl4SlFVRkpMRWxCUVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU12UWl4WlFVRkpMRWRCUVVjc2JVSkJRVmtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTJwRExGbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NlVUpCUTJwQ0xFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVTjRRaXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVTm1MRU5CUVVNN1QwRkRTRHM3UVVGRlJDeGhRVUZQTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRha0lzV1VGQlNTeEZRVUZGTEVsQlFVazdRVUZEVml4dFFrRkJWeXhGUVVGRkxHMUNRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMDlCUTJoRkxFTkJRVU1zUTBGQlF6dExRVU5LTEUxQlFVMDdRVUZEVEN4aFFVRlBMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZET1VJN1IwRkRSaXhEUVVGRExFTkJRVU03UTBGRFNpSXNJbVpwYkdVaU9pSjNhWFJvTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdGNiaUFnWVhCd1pXNWtRMjl1ZEdWNGRGQmhkR2dzWEc0Z0lHSnNiMk5yVUdGeVlXMXpMRnh1SUNCamNtVmhkR1ZHY21GdFpTeGNiaUFnYVhORmJYQjBlU3hjYmlBZ2FYTkdkVzVqZEdsdmJseHVmU0JtY205dElDY3VMaTkxZEdsc2N5YzdYRzVwYlhCdmNuUWdSWGhqWlhCMGFXOXVJR1p5YjIwZ0p5NHVMMlY0WTJWd2RHbHZiaWM3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdaMWJtTjBhVzl1S0dsdWMzUmhibU5sS1NCN1hHNGdJR2x1YzNSaGJtTmxMbkpsWjJsemRHVnlTR1ZzY0dWeUtDZDNhWFJvSnl3Z1puVnVZM1JwYjI0b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdsbUlDaGhjbWQxYldWdWRITXViR1Z1WjNSb0lDRTlJRElwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0p5TjNhWFJvSUhKbGNYVnBjbVZ6SUdWNFlXTjBiSGtnYjI1bElHRnlaM1Z0Wlc1MEp5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHBjMFoxYm1OMGFXOXVLR052Ym5SbGVIUXBLU0I3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBJRDBnWTI5dWRHVjRkQzVqWVd4c0tIUm9hWE1wTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCbWJpQTlJRzl3ZEdsdmJuTXVabTQ3WEc1Y2JpQWdJQ0JwWmlBb0lXbHpSVzF3ZEhrb1kyOXVkR1Y0ZENrcElIdGNiaUFnSUNBZ0lHeGxkQ0JrWVhSaElEMGdiM0IwYVc5dWN5NWtZWFJoTzF4dUlDQWdJQ0FnYVdZZ0tHOXdkR2x2Ym5NdVpHRjBZU0FtSmlCdmNIUnBiMjV6TG1sa2N5a2dlMXh1SUNBZ0lDQWdJQ0JrWVhSaElEMGdZM0psWVhSbFJuSmhiV1VvYjNCMGFXOXVjeTVrWVhSaEtUdGNiaUFnSUNBZ0lDQWdaR0YwWVM1amIyNTBaWGgwVUdGMGFDQTlJR0Z3Y0dWdVpFTnZiblJsZUhSUVlYUm9LRnh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk11WkdGMFlTNWpiMjUwWlhoMFVHRjBhQ3hjYmlBZ0lDQWdJQ0FnSUNCdmNIUnBiMjV6TG1sa2Mxc3dYVnh1SUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnWm00b1kyOXVkR1Y0ZEN3Z2UxeHVJQ0FnSUNBZ0lDQmtZWFJoT2lCa1lYUmhMRnh1SUNBZ0lDQWdJQ0JpYkc5amExQmhjbUZ0Y3pvZ1lteHZZMnRRWVhKaGJYTW9XMk52Ym5SbGVIUmRMQ0JiWkdGMFlTQW1KaUJrWVhSaExtTnZiblJsZUhSUVlYUm9YU2xjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2IzQjBhVzl1Y3k1cGJuWmxjbk5sS0hSb2FYTXBPMXh1SUNBZ0lIMWNiaUFnZlNrN1hHNTlYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5yZWdpc3RlckRlZmF1bHRIZWxwZXJzID0gcmVnaXN0ZXJEZWZhdWx0SGVscGVycztcbmV4cG9ydHMubW92ZUhlbHBlclRvSG9va3MgPSBtb3ZlSGVscGVyVG9Ib29rcztcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nID0gcmVxdWlyZSgnLi9oZWxwZXJzL2Jsb2NrLWhlbHBlci1taXNzaW5nJyk7XG5cbnZhciBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nKTtcblxudmFyIF9oZWxwZXJzRWFjaCA9IHJlcXVpcmUoJy4vaGVscGVycy9lYWNoJyk7XG5cbnZhciBfaGVscGVyc0VhY2gyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0VhY2gpO1xuXG52YXIgX2hlbHBlcnNIZWxwZXJNaXNzaW5nID0gcmVxdWlyZSgnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJyk7XG5cbnZhciBfaGVscGVyc0hlbHBlck1pc3NpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0hlbHBlck1pc3NpbmcpO1xuXG52YXIgX2hlbHBlcnNJZiA9IHJlcXVpcmUoJy4vaGVscGVycy9pZicpO1xuXG52YXIgX2hlbHBlcnNJZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzSWYpO1xuXG52YXIgX2hlbHBlcnNMb2cgPSByZXF1aXJlKCcuL2hlbHBlcnMvbG9nJyk7XG5cbnZhciBfaGVscGVyc0xvZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9nKTtcblxudmFyIF9oZWxwZXJzTG9va3VwID0gcmVxdWlyZSgnLi9oZWxwZXJzL2xvb2t1cCcpO1xuXG52YXIgX2hlbHBlcnNMb29rdXAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0xvb2t1cCk7XG5cbnZhciBfaGVscGVyc1dpdGggPSByZXF1aXJlKCcuL2hlbHBlcnMvd2l0aCcpO1xuXG52YXIgX2hlbHBlcnNXaXRoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNXaXRoKTtcblxuZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0SGVscGVycyhpbnN0YW5jZSkge1xuICBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7XG4gIF9oZWxwZXJzRWFjaDJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7XG4gIF9oZWxwZXJzSGVscGVyTWlzc2luZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7XG4gIF9oZWxwZXJzSWYyWydkZWZhdWx0J10oaW5zdGFuY2UpO1xuICBfaGVscGVyc0xvZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7XG4gIF9oZWxwZXJzTG9va3VwMlsnZGVmYXVsdCddKGluc3RhbmNlKTtcbiAgX2hlbHBlcnNXaXRoMlsnZGVmYXVsdCddKGluc3RhbmNlKTtcbn1cblxuZnVuY3Rpb24gbW92ZUhlbHBlclRvSG9va3MoaW5zdGFuY2UsIGhlbHBlck5hbWUsIGtlZXBIZWxwZXIpIHtcbiAgaWYgKGluc3RhbmNlLmhlbHBlcnNbaGVscGVyTmFtZV0pIHtcbiAgICBpbnN0YW5jZS5ob29rc1toZWxwZXJOYW1lXSA9IGluc3RhbmNlLmhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgaWYgKCFrZWVwSGVscGVyKSB7XG4gICAgICBkZWxldGUgaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICB9XG4gIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3TzNsRFFVRjFReXhuUTBGQlowTTdPenM3TWtKQlF6bERMR2RDUVVGblFqczdPenR2UTBGRFVDd3dRa0ZCTUVJN096czdlVUpCUTNKRExHTkJRV003T3pzN01FSkJRMklzWlVGQlpUczdPenMyUWtGRFdpeHJRa0ZCYTBJN096czdNa0pCUTNCQ0xHZENRVUZuUWpzN096dEJRVVZzUXl4VFFVRlRMSE5DUVVGelFpeERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTXZReXg1UTBGQk1rSXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRja01zTWtKQlFXRXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRka0lzYjBOQlFYTkNMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRMmhETEhsQ1FVRlhMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM0pDTERCQ1FVRlpMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM1JDTERaQ1FVRmxMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM3BDTERKQ1FVRmhMRkZCUVZFc1EwRkJReXhEUVVGRE8wTkJRM2hDT3p0QlFVVk5MRk5CUVZNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRlZCUVZVc1JVRkJSU3hWUVVGVkxFVkJRVVU3UVVGRGJFVXNUVUZCU1N4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTzBGQlEyaERMRmxCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU14UkN4UlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJRMllzWVVGQlR5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wdEJRM0pETzBkQlEwWTdRMEZEUmlJc0ltWnBiR1VpT2lKb1pXeHdaWEp6TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElISmxaMmx6ZEdWeVFteHZZMnRJWld4d1pYSk5hWE56YVc1bklHWnliMjBnSnk0dmFHVnNjR1Z5Y3k5aWJHOWpheTFvWld4d1pYSXRiV2x6YzJsdVp5YzdYRzVwYlhCdmNuUWdjbVZuYVhOMFpYSkZZV05vSUdaeWIyMGdKeTR2YUdWc2NHVnljeTlsWVdOb0p6dGNibWx0Y0c5eWRDQnlaV2RwYzNSbGNraGxiSEJsY2sxcGMzTnBibWNnWm5KdmJTQW5MaTlvWld4d1pYSnpMMmhsYkhCbGNpMXRhWE56YVc1bkp6dGNibWx0Y0c5eWRDQnlaV2RwYzNSbGNrbG1JR1p5YjIwZ0p5NHZhR1ZzY0dWeWN5OXBaaWM3WEc1cGJYQnZjblFnY21WbmFYTjBaWEpNYjJjZ1puSnZiU0FuTGk5b1pXeHdaWEp6TDJ4dlp5YzdYRzVwYlhCdmNuUWdjbVZuYVhOMFpYSk1iMjlyZFhBZ1puSnZiU0FuTGk5b1pXeHdaWEp6TDJ4dmIydDFjQ2M3WEc1cGJYQnZjblFnY21WbmFYTjBaWEpYYVhSb0lHWnliMjBnSnk0dmFHVnNjR1Z5Y3k5M2FYUm9KenRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKbFoybHpkR1Z5UkdWbVlYVnNkRWhsYkhCbGNuTW9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2NtVm5hWE4wWlhKQ2JHOWphMGhsYkhCbGNrMXBjM05wYm1jb2FXNXpkR0Z1WTJVcE8xeHVJQ0J5WldkcGMzUmxja1ZoWTJnb2FXNXpkR0Z1WTJVcE8xeHVJQ0J5WldkcGMzUmxja2hsYkhCbGNrMXBjM05wYm1jb2FXNXpkR0Z1WTJVcE8xeHVJQ0J5WldkcGMzUmxja2xtS0dsdWMzUmhibU5sS1R0Y2JpQWdjbVZuYVhOMFpYSk1iMmNvYVc1emRHRnVZMlVwTzF4dUlDQnlaV2RwYzNSbGNreHZiMnQxY0NocGJuTjBZVzVqWlNrN1hHNGdJSEpsWjJsemRHVnlWMmwwYUNocGJuTjBZVzVqWlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0YjNabFNHVnNjR1Z5Vkc5SWIyOXJjeWhwYm5OMFlXNWpaU3dnYUdWc2NHVnlUbUZ0WlN3Z2EyVmxjRWhsYkhCbGNpa2dlMXh1SUNCcFppQW9hVzV6ZEdGdVkyVXVhR1ZzY0dWeWMxdG9aV3h3WlhKT1lXMWxYU2tnZTF4dUlDQWdJR2x1YzNSaGJtTmxMbWh2YjJ0elcyaGxiSEJsY2s1aGJXVmRJRDBnYVc1emRHRnVZMlV1YUdWc2NHVnljMXRvWld4d1pYSk9ZVzFsWFR0Y2JpQWdJQ0JwWmlBb0lXdGxaWEJJWld4d1pYSXBJSHRjYmlBZ0lDQWdJR1JsYkdWMFpTQnBibk4wWVc1alpTNW9aV3h3WlhKelcyaGxiSEJsY2s1aGJXVmRPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uIChmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9ucykge1xuICAgIHZhciByZXQgPSBmbjtcbiAgICBpZiAoIXByb3BzLnBhcnRpYWxzKSB7XG4gICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9O1xuICAgICAgcmV0ID0gZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHBhcnRpYWxzIHN0YWNrIGZyYW1lIHByaW9yIHRvIGV4ZWMuXG4gICAgICAgIHZhciBvcmlnaW5hbCA9IGNvbnRhaW5lci5wYXJ0aWFscztcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gX3V0aWxzLmV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgdmFyIHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJSbFkyOXlZWFJ2Y25NdmFXNXNhVzVsTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdjVUpCUVhWQ0xGVkJRVlU3TzNGQ1FVVnNRaXhWUVVGVExGRkJRVkVzUlVGQlJUdEJRVU5vUXl4VlFVRlJMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRlZCUVZNc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUXpORkxGRkJRVWtzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTmlMRkZCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEyNUNMRmRCUVVzc1EwRkJReXhSUVVGUkxFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRk5CUVVjc1IwRkJSeXhWUVVGVExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVTdPMEZCUlM5Q0xGbEJRVWtzVVVGQlVTeEhRVUZITEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRiRU1zYVVKQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1kwRkJUeXhGUVVGRkxFVkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNeFJDeFpRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzBGQlF5OUNMR2xDUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTTVRaXhsUVVGUExFZEJRVWNzUTBGQlF6dFBRVU5hTEVOQlFVTTdTMEZEU0RzN1FVRkZSQ3hUUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPenRCUVVVM1F5eFhRVUZQTEVkQlFVY3NRMEZCUXp0SFFVTmFMRU5CUVVNc1EwRkJRenREUVVOS0lpd2labWxzWlNJNkltbHViR2x1WlM1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJR1Y0ZEdWdVpDQjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekp6dGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKRVpXTnZjbUYwYjNJb0oybHViR2x1WlNjc0lHWjFibU4wYVc5dUtHWnVMQ0J3Y205d2N5d2dZMjl1ZEdGcGJtVnlMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdiR1YwSUhKbGRDQTlJR1p1TzF4dUlDQWdJR2xtSUNnaGNISnZjSE11Y0dGeWRHbGhiSE1wSUh0Y2JpQWdJQ0FnSUhCeWIzQnpMbkJoY25ScFlXeHpJRDBnZTMwN1hHNGdJQ0FnSUNCeVpYUWdQU0JtZFc1amRHbHZiaWhqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdJQ0FnSUM4dklFTnlaV0YwWlNCaElHNWxkeUJ3WVhKMGFXRnNjeUJ6ZEdGamF5Qm1jbUZ0WlNCd2NtbHZjaUIwYnlCbGVHVmpMbHh1SUNBZ0lDQWdJQ0JzWlhRZ2IzSnBaMmx1WVd3Z1BTQmpiMjUwWVdsdVpYSXVjR0Z5ZEdsaGJITTdYRzRnSUNBZ0lDQWdJR052Ym5SaGFXNWxjaTV3WVhKMGFXRnNjeUE5SUdWNGRHVnVaQ2g3ZlN3Z2IzSnBaMmx1WVd3c0lIQnliM0J6TG5CaGNuUnBZV3h6S1R0Y2JpQWdJQ0FnSUNBZ2JHVjBJSEpsZENBOUlHWnVLR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBPMXh1SUNBZ0lDQWdJQ0JqYjI1MFlXbHVaWEl1Y0dGeWRHbGhiSE1nUFNCdmNtbG5hVzVoYkR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NISnZjSE11Y0dGeWRHbGhiSE5iYjNCMGFXOXVjeTVoY21keld6QmRYU0E5SUc5d2RHbHZibk11Wm00N1hHNWNiaUFnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0I5S1R0Y2JuMWNiaUpkZlE9PVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzID0gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycztcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9kZWNvcmF0b3JzSW5saW5lID0gcmVxdWlyZSgnLi9kZWNvcmF0b3JzL2lubGluZScpO1xuXG52YXIgX2RlY29yYXRvcnNJbmxpbmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVjb3JhdG9yc0lubGluZSk7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMoaW5zdGFuY2UpIHtcbiAgX2RlY29yYXRvcnNJbmxpbmUyWydkZWZhdWx0J10oaW5zdGFuY2UpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMlJsWTI5eVlYUnZjbk11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3WjBOQlFUSkNMSEZDUVVGeFFqczdPenRCUVVWNlF5eFRRVUZUTEhsQ1FVRjVRaXhEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5zUkN4blEwRkJaU3hSUVVGUkxFTkJRVU1zUTBGQlF6dERRVU14UWlJc0ltWnBiR1VpT2lKa1pXTnZjbUYwYjNKekxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSEpsWjJsemRHVnlTVzVzYVc1bElHWnliMjBnSnk0dlpHVmpiM0poZEc5eWN5OXBibXhwYm1Vbk8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbVZuYVhOMFpYSkVaV1poZFd4MFJHVmpiM0poZEc5eWN5aHBibk4wWVc1alpTa2dlMXh1SUNCeVpXZHBjM1JsY2tsdWJHbHVaU2hwYm5OMFlXNWpaU2s3WEc1OVhHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbiBsb29rdXBMZXZlbChsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgbGV2ZWxNYXAgPSBfdXRpbHMuaW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBsZXZlbC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGlmIChsZXZlbE1hcCA+PSAwKSB7XG4gICAgICAgIGxldmVsID0gbGV2ZWxNYXA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXZlbCA9IHBhcnNlSW50KGxldmVsLCAxMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxldmVsO1xuICB9LFxuXG4gIC8vIENhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBob3N0IGVudmlyb25tZW50XG4gIGxvZzogZnVuY3Rpb24gbG9nKGxldmVsKSB7XG4gICAgbGV2ZWwgPSBsb2dnZXIubG9va3VwTGV2ZWwobGV2ZWwpO1xuXG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBsb2dnZXIubG9va3VwTGV2ZWwobG9nZ2VyLmxldmVsKSA8PSBsZXZlbCkge1xuICAgICAgdmFyIG1ldGhvZCA9IGxvZ2dlci5tZXRob2RNYXBbbGV2ZWxdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7XG4gICAgICAgIG1ldGhvZCA9ICdsb2cnO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWVzc2FnZSA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgbWVzc2FnZVtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGVbbWV0aG9kXS5hcHBseShjb25zb2xlLCBtZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBsb2dnZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJ4dloyZGxjaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN08zRkNRVUYzUWl4VFFVRlRPenRCUVVWcVF5eEpRVUZKTEUxQlFVMHNSMEZCUnp0QlFVTllMRmRCUVZNc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTlCUVU4c1EwRkJRenRCUVVNM1F5eFBRVUZMTEVWQlFVVXNUVUZCVFRzN08wRkJSMklzWVVGQlZ5eEZRVUZGTEhGQ1FVRlRMRXRCUVVzc1JVRkJSVHRCUVVNelFpeFJRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVNM1FpeFZRVUZKTEZGQlFWRXNSMEZCUnl4bFFVRlJMRTFCUVUwc1EwRkJReXhUUVVGVExFVkJRVVVzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRPVVFzVlVGQlNTeFJRVUZSTEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUTJwQ0xHRkJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTTdUMEZEYkVJc1RVRkJUVHRCUVVOTUxHRkJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wOUJRemRDTzB0QlEwWTdPMEZCUlVRc1YwRkJUeXhMUVVGTExFTkJRVU03UjBGRFpEczdPMEZCUjBRc1MwRkJSeXhGUVVGRkxHRkJRVk1zUzBGQlN5eEZRVUZqTzBGQlF5OUNMRk5CUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWc1F5eFJRVU5GTEU5QlFVOHNUMEZCVHl4TFFVRkxMRmRCUVZjc1NVRkRPVUlzVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eEZRVU42UXp0QlFVTkJMRlZCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSWEpETEZWQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVU3UVVGRGNFSXNZMEZCVFN4SFFVRkhMRXRCUVVzc1EwRkJRenRQUVVOb1FqczdkME5CV0cxQ0xFOUJRVTg3UVVGQlVDeGxRVUZQT3pzN1FVRlpNMElzWVVGQlR5eERRVUZETEUxQlFVMHNUMEZCUXl4RFFVRm1MRTlCUVU4c1JVRkJXU3hQUVVGUExFTkJRVU1zUTBGQlF6dExRVU0zUWp0SFFVTkdPME5CUTBZc1EwRkJRenM3Y1VKQlJXRXNUVUZCVFNJc0ltWnBiR1VpT2lKc2IyZG5aWEl1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QnBibVJsZUU5bUlIMGdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNWNibXhsZENCc2IyZG5aWElnUFNCN1hHNGdJRzFsZEdodlpFMWhjRG9nV3lka1pXSjFaeWNzSUNkcGJtWnZKeXdnSjNkaGNtNG5MQ0FuWlhKeWIzSW5YU3hjYmlBZ2JHVjJaV3c2SUNkcGJtWnZKeXhjYmx4dUlDQXZMeUJOWVhCeklHRWdaMmwyWlc0Z2JHVjJaV3dnZG1Gc2RXVWdkRzhnZEdobElHQnRaWFJvYjJSTllYQmdJR2x1WkdWNFpYTWdZV0p2ZG1VdVhHNGdJR3h2YjJ0MWNFeGxkbVZzT2lCbWRXNWpkR2x2Ymloc1pYWmxiQ2tnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnYkdWMlpXd2dQVDA5SUNkemRISnBibWNuS1NCN1hHNGdJQ0FnSUNCc1pYUWdiR1YyWld4TllYQWdQU0JwYm1SbGVFOW1LR3h2WjJkbGNpNXRaWFJvYjJSTllYQXNJR3hsZG1Wc0xuUnZURzkzWlhKRFlYTmxLQ2twTzF4dUlDQWdJQ0FnYVdZZ0tHeGxkbVZzVFdGd0lENDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2JHVjJaV3dnUFNCc1pYWmxiRTFoY0R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUd4bGRtVnNJRDBnY0dGeWMyVkpiblFvYkdWMlpXd3NJREV3S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiR1YyWld3N1hHNGdJSDBzWEc1Y2JpQWdMeThnUTJGdUlHSmxJRzkyWlhKeWFXUmtaVzRnYVc0Z2RHaGxJR2h2YzNRZ1pXNTJhWEp2Ym0xbGJuUmNiaUFnYkc5bk9pQm1kVzVqZEdsdmJpaHNaWFpsYkN3Z0xpNHViV1Z6YzJGblpTa2dlMXh1SUNBZ0lHeGxkbVZzSUQwZ2JHOW5aMlZ5TG14dmIydDFjRXhsZG1Wc0tHeGxkbVZzS1R0Y2JseHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lIUjVjR1Z2WmlCamIyNXpiMnhsSUNFOVBTQW5kVzVrWldacGJtVmtKeUFtSmx4dUlDQWdJQ0FnYkc5bloyVnlMbXh2YjJ0MWNFeGxkbVZzS0d4dloyZGxjaTVzWlhabGJDa2dQRDBnYkdWMlpXeGNiaUFnSUNBcElIdGNiaUFnSUNBZ0lHeGxkQ0J0WlhSb2IyUWdQU0JzYjJkblpYSXViV1YwYUc5a1RXRndXMnhsZG1Wc1hUdGNiaUFnSUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQnVieTFqYjI1emIyeGxYRzRnSUNBZ0lDQnBaaUFvSVdOdmJuTnZiR1ZiYldWMGFHOWtYU2tnZTF4dUlDQWdJQ0FnSUNCdFpYUm9iMlFnUFNBbmJHOW5KenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR052Ym5OdmJHVmJiV1YwYUc5a1hTZ3VMaTV0WlhOellXZGxLVHNnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0YkdsdVpTQnVieTFqYjI1emIyeGxYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQnNiMmRuWlhJN1hHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmNyZWF0ZU5ld0xvb2t1cE9iamVjdCA9IGNyZWF0ZU5ld0xvb2t1cE9iamVjdDtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IG9iamVjdCB3aXRoIFwibnVsbFwiLXByb3RvdHlwZSB0byBhdm9pZCB0cnV0aHkgcmVzdWx0cyBvbiBwcm90b3R5cGUgcHJvcGVydGllcy5cbiAqIFRoZSByZXN1bHRpbmcgb2JqZWN0IGNhbiBiZSB1c2VkIHdpdGggXCJvYmplY3RbcHJvcGVydHldXCIgdG8gY2hlY2sgaWYgYSBwcm9wZXJ0eSBleGlzdHNcbiAqIEBwYXJhbSB7Li4ub2JqZWN0fSBzb3VyY2VzIGEgdmFyYXJncyBwYXJhbWV0ZXIgb2Ygc291cmNlIG9iamVjdHMgdGhhdCB3aWxsIGJlIG1lcmdlZFxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzb3VyY2VzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc291cmNlc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBfdXRpbHMuZXh0ZW5kLmFwcGx5KHVuZGVmaW5lZCwgW09iamVjdC5jcmVhdGUobnVsbCldLmNvbmNhdChzb3VyY2VzKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmx1ZEdWeWJtRnNMMk55WldGMFpTMXVaWGN0Ykc5dmEzVndMVzlpYW1WamRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3p0eFFrRkJkVUlzVlVGQlZUczdPenM3T3pzN08wRkJVVEZDTEZOQlFWTXNjVUpCUVhGQ0xFZEJRV0U3YjBOQlFWUXNUMEZCVHp0QlFVRlFMRmRCUVU4N096dEJRVU01UXl4VFFVRlBMR2REUVVGUExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVVzc1QwRkJUeXhGUVVGRExFTkJRVU03UTBGRGFFUWlMQ0ptYVd4bElqb2lZM0psWVhSbExXNWxkeTFzYjI5cmRYQXRiMkpxWldOMExtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnWlhoMFpXNWtJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc0dktpcGNiaUFxSUVOeVpXRjBaU0JoSUc1bGR5QnZZbXBsWTNRZ2QybDBhQ0JjSW01MWJHeGNJaTF3Y205MGIzUjVjR1VnZEc4Z1lYWnZhV1FnZEhKMWRHaDVJSEpsYzNWc2RITWdiMjRnY0hKdmRHOTBlWEJsSUhCeWIzQmxjblJwWlhNdVhHNGdLaUJVYUdVZ2NtVnpkV3gwYVc1bklHOWlhbVZqZENCallXNGdZbVVnZFhObFpDQjNhWFJvSUZ3aWIySnFaV04wVzNCeWIzQmxjblI1WFZ3aUlIUnZJR05vWldOcklHbG1JR0VnY0hKdmNHVnlkSGtnWlhocGMzUnpYRzRnS2lCQWNHRnlZVzBnZXk0dUxtOWlhbVZqZEgwZ2MyOTFjbU5sY3lCaElIWmhjbUZ5WjNNZ2NHRnlZVzFsZEdWeUlHOW1JSE52ZFhKalpTQnZZbXBsWTNSeklIUm9ZWFFnZDJsc2JDQmlaU0J0WlhKblpXUmNiaUFxSUVCeVpYUjFjbTV6SUh0dlltcGxZM1I5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmpjbVZoZEdWT1pYZE1iMjlyZFhCUFltcGxZM1FvTGk0dWMyOTFjbU5sY3lrZ2UxeHVJQ0J5WlhSMWNtNGdaWGgwWlc1a0tFOWlhbVZqZEM1amNtVmhkR1VvYm5Wc2JDa3NJQzR1TG5OdmRYSmpaWE1wTzF4dWZWeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbDtcbmV4cG9ydHMucmVzdWx0SXNBbGxvd2VkID0gcmVzdWx0SXNBbGxvd2VkO1xuZXhwb3J0cy5yZXNldExvZ2dlZFByb3BlcnRpZXMgPSByZXNldExvZ2dlZFByb3BlcnRpZXM7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqWydkZWZhdWx0J10gPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG52YXIgX2NyZWF0ZU5ld0xvb2t1cE9iamVjdCA9IHJlcXVpcmUoJy4vY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0Jyk7XG5cbnZhciBfbG9nZ2VyID0gcmVxdWlyZSgnLi4vbG9nZ2VyJyk7XG5cbnZhciBsb2dnZXIgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfbG9nZ2VyKTtcblxudmFyIGxvZ2dlZFByb3BlcnRpZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5mdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgdmFyIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgdmFyIGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IF9jcmVhdGVOZXdMb29rdXBPYmplY3QuY3JlYXRlTmV3TG9va3VwT2JqZWN0KGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCwgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvUHJvcGVydGllcyksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9Qcm9wZXJ0aWVzQnlEZWZhdWx0XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IF9jcmVhdGVOZXdMb29rdXBPYmplY3QuY3JlYXRlTmV3TG9va3VwT2JqZWN0KGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHMpLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvTWV0aG9kc0J5RGVmYXVsdFxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKCdlcnJvcicsICdIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJyArIHByb3BlcnR5TmFtZSArICdcIiBiZWNhdXNlIGl0IGlzIG5vdCBhbiBcIm93biBwcm9wZXJ0eVwiIG9mIGl0cyBwYXJlbnQuXFxuJyArICdZb3UgY2FuIGFkZCBhIHJ1bnRpbWUgb3B0aW9uIHRvIGRpc2FibGUgdGhlIGNoZWNrIG9yIHRoaXMgd2FybmluZzpcXG4nICsgJ1NlZSBodHRwczovL2hhbmRsZWJhcnNqcy5jb20vYXBpLXJlZmVyZW5jZS9ydW50aW1lLW9wdGlvbnMuaHRtbCNvcHRpb25zLXRvLWNvbnRyb2wtcHJvdG90eXBlLWFjY2VzcyBmb3IgZGV0YWlscycpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2V0TG9nZ2VkUHJvcGVydGllcygpIHtcbiAgT2JqZWN0LmtleXMobG9nZ2VkUHJvcGVydGllcykuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHlOYW1lKSB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmx1ZEdWeWJtRnNMM0J5YjNSdkxXRmpZMlZ6Y3k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN08zRkRRVUZ6UXl3MFFrRkJORUk3TzNOQ1FVTXhReXhYUVVGWE96dEpRVUYyUWl4TlFVRk5PenRCUVVWc1FpeEpRVUZOTEdkQ1FVRm5RaXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN08wRkJSWFJETEZOQlFWTXNkMEpCUVhkQ0xFTkJRVU1zWTBGQll5eEZRVUZGTzBGQlEzWkVMRTFCUVVrc2MwSkJRWE5DTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU5xUkN4M1FrRkJjMElzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRPVU1zZDBKQlFYTkNMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRia1FzZDBKQlFYTkNMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRia1FzZDBKQlFYTkNMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN08wRkJSVzVFTEUxQlFVa3NkMEpCUVhkQ0xFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmJrUXNNRUpCUVhkQ0xFTkJRVU1zVjBGQlZ5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRPenRCUVVVNVF5eFRRVUZQTzBGQlEwd3NZMEZCVlN4RlFVRkZPMEZCUTFZc1pVRkJVeXhGUVVGRkxEWkRRVU5VTEhkQ1FVRjNRaXhGUVVONFFpeGpRVUZqTEVOQlFVTXNjMEpCUVhOQ0xFTkJRM1JETzBGQlEwUXNhMEpCUVZrc1JVRkJSU3hqUVVGakxFTkJRVU1zTmtKQlFUWkNPMHRCUXpORU8wRkJRMFFzVjBGQlR5eEZRVUZGTzBGQlExQXNaVUZCVXl4RlFVRkZMRFpEUVVOVUxITkNRVUZ6UWl4RlFVTjBRaXhqUVVGakxFTkJRVU1zYlVKQlFXMUNMRU5CUTI1RE8wRkJRMFFzYTBKQlFWa3NSVUZCUlN4alFVRmpMRU5CUVVNc01FSkJRVEJDTzB0QlEzaEVPMGRCUTBZc1EwRkJRenREUVVOSU96dEJRVVZOTEZOQlFWTXNaVUZCWlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4WlFVRlpMRVZCUVVVN1FVRkRlRVVzVFVGQlNTeFBRVUZQTEUxQlFVMHNTMEZCU3l4VlFVRlZMRVZCUVVVN1FVRkRhRU1zVjBGQlR5eGpRVUZqTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVDBGQlR5eEZRVUZGTEZsQlFWa3NRMEZCUXl4RFFVRkRPMGRCUTJwRkxFMUJRVTA3UVVGRFRDeFhRVUZQTEdOQlFXTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNN1IwRkRjRVU3UTBGRFJqczdRVUZGUkN4VFFVRlRMR05CUVdNc1EwRkJReXg1UWtGQmVVSXNSVUZCUlN4WlFVRlpMRVZCUVVVN1FVRkRMMFFzVFVGQlNTeDVRa0ZCZVVJc1EwRkJReXhUUVVGVExFTkJRVU1zV1VGQldTeERRVUZETEV0QlFVc3NVMEZCVXl4RlFVRkZPMEZCUTI1RkxGZEJRVThzZVVKQlFYbENMRU5CUVVNc1UwRkJVeXhEUVVGRExGbEJRVmtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXp0SFFVTnVSVHRCUVVORUxFMUJRVWtzZVVKQlFYbENMRU5CUVVNc1dVRkJXU3hMUVVGTExGTkJRVk1zUlVGQlJUdEJRVU40UkN4WFFVRlBMSGxDUVVGNVFpeERRVUZETEZsQlFWa3NRMEZCUXp0SFFVTXZRenRCUVVORUxHZERRVUU0UWl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wRkJRemRETEZOQlFVOHNTMEZCU3l4RFFVRkRPME5CUTJRN08wRkJSVVFzVTBGQlV5dzRRa0ZCT0VJc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRGNFUXNUVUZCU1N4blFrRkJaMElzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3l4SlFVRkpMRVZCUVVVN1FVRkRNME1zYjBKQlFXZENMRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEzUkRMRlZCUVUwc1EwRkJReXhIUVVGSExFTkJRMUlzVDBGQlR5eEZRVU5RTEdsRlFVRXJSQ3haUVVGWkxHOUpRVU5JTEc5SVFVTXlReXhEUVVOd1NDeERRVUZETzBkQlEwZzdRMEZEUmpzN1FVRkZUU3hUUVVGVExIRkNRVUZ4UWl4SFFVRkhPMEZCUTNSRExGRkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4WlFVRlpMRVZCUVVrN1FVRkRjRVFzVjBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dEhRVU4yUXl4RFFVRkRMRU5CUVVNN1EwRkRTaUlzSW1acGJHVWlPaUp3Y205MGJ5MWhZMk5sYzNNdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJqY21WaGRHVk9aWGRNYjI5cmRYQlBZbXBsWTNRZ2ZTQm1jbTl0SUNjdUwyTnlaV0YwWlMxdVpYY3RiRzl2YTNWd0xXOWlhbVZqZENjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJzYjJkblpYSWdabkp2YlNBbkxpNHZiRzluWjJWeUp6dGNibHh1WTI5dWMzUWdiRzluWjJWa1VISnZjR1Z5ZEdsbGN5QTlJRTlpYW1WamRDNWpjbVZoZEdVb2JuVnNiQ2s3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZRY205MGIwRmpZMlZ6YzBOdmJuUnliMndvY25WdWRHbHRaVTl3ZEdsdmJuTXBJSHRjYmlBZ2JHVjBJR1JsWm1GMWJIUk5aWFJvYjJSWGFHbDBaVXhwYzNRZ1BTQlBZbXBsWTNRdVkzSmxZWFJsS0c1MWJHd3BPMXh1SUNCa1pXWmhkV3gwVFdWMGFHOWtWMmhwZEdWTWFYTjBXeWRqYjI1emRISjFZM1J2Y2lkZElEMGdabUZzYzJVN1hHNGdJR1JsWm1GMWJIUk5aWFJvYjJSWGFHbDBaVXhwYzNSYkoxOWZaR1ZtYVc1bFIyVjBkR1Z5WDE4blhTQTlJR1poYkhObE8xeHVJQ0JrWldaaGRXeDBUV1YwYUc5a1YyaHBkR1ZNYVhOMFd5ZGZYMlJsWm1sdVpWTmxkSFJsY2w5ZkoxMGdQU0JtWVd4elpUdGNiaUFnWkdWbVlYVnNkRTFsZEdodlpGZG9hWFJsVEdsemRGc25YMTlzYjI5cmRYQkhaWFIwWlhKZlh5ZGRJRDBnWm1Gc2MyVTdYRzVjYmlBZ2JHVjBJR1JsWm1GMWJIUlFjbTl3WlhKMGVWZG9hWFJsVEdsemRDQTlJRTlpYW1WamRDNWpjbVZoZEdVb2JuVnNiQ2s3WEc0Z0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQnVieTF3Y205MGIxeHVJQ0JrWldaaGRXeDBVSEp2Y0dWeWRIbFhhR2wwWlV4cGMzUmJKMTlmY0hKdmRHOWZYeWRkSUQwZ1ptRnNjMlU3WEc1Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNCd2NtOXdaWEowYVdWek9pQjdYRzRnSUNBZ0lDQjNhR2wwWld4cGMzUTZJR055WldGMFpVNWxkMHh2YjJ0MWNFOWlhbVZqZENoY2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZEZCeWIzQmxjblI1VjJocGRHVk1hWE4wTEZ4dUlDQWdJQ0FnSUNCeWRXNTBhVzFsVDNCMGFXOXVjeTVoYkd4dmQyVmtVSEp2ZEc5UWNtOXdaWEowYVdWelhHNGdJQ0FnSUNBcExGeHVJQ0FnSUNBZ1pHVm1ZWFZzZEZaaGJIVmxPaUJ5ZFc1MGFXMWxUM0IwYVc5dWN5NWhiR3h2ZDFCeWIzUnZVSEp2Y0dWeWRHbGxjMEo1UkdWbVlYVnNkRnh1SUNBZ0lIMHNYRzRnSUNBZ2JXVjBhRzlrY3pvZ2UxeHVJQ0FnSUNBZ2QyaHBkR1ZzYVhOME9pQmpjbVZoZEdWT1pYZE1iMjlyZFhCUFltcGxZM1FvWEc0Z0lDQWdJQ0FnSUdSbFptRjFiSFJOWlhSb2IyUlhhR2wwWlV4cGMzUXNYRzRnSUNBZ0lDQWdJSEoxYm5ScGJXVlBjSFJwYjI1ekxtRnNiRzkzWldSUWNtOTBiMDFsZEdodlpITmNiaUFnSUNBZ0lDa3NYRzRnSUNBZ0lDQmtaV1poZFd4MFZtRnNkV1U2SUhKMWJuUnBiV1ZQY0hScGIyNXpMbUZzYkc5M1VISnZkRzlOWlhSb2IyUnpRbmxFWldaaGRXeDBYRzRnSUNBZ2ZWeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbVZ6ZFd4MFNYTkJiR3h2ZDJWa0tISmxjM1ZzZEN3Z2NISnZkRzlCWTJObGMzTkRiMjUwY205c0xDQndjbTl3WlhKMGVVNWhiV1VwSUh0Y2JpQWdhV1lnS0hSNWNHVnZaaUJ5WlhOMWJIUWdQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNCeVpYUjFjbTRnWTJobFkydFhhR2wwWlV4cGMzUW9jSEp2ZEc5QlkyTmxjM05EYjI1MGNtOXNMbTFsZEdodlpITXNJSEJ5YjNCbGNuUjVUbUZ0WlNrN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUdOb1pXTnJWMmhwZEdWTWFYTjBLSEJ5YjNSdlFXTmpaWE56UTI5dWRISnZiQzV3Y205d1pYSjBhV1Z6TENCd2NtOXdaWEowZVU1aGJXVXBPMXh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUdOb1pXTnJWMmhwZEdWTWFYTjBLSEJ5YjNSdlFXTmpaWE56UTI5dWRISnZiRVp2Y2xSNWNHVXNJSEJ5YjNCbGNuUjVUbUZ0WlNrZ2UxeHVJQ0JwWmlBb2NISnZkRzlCWTJObGMzTkRiMjUwY205c1JtOXlWSGx3WlM1M2FHbDBaV3hwYzNSYmNISnZjR1Z5ZEhsT1lXMWxYU0FoUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhCeWIzUnZRV05qWlhOelEyOXVkSEp2YkVadmNsUjVjR1V1ZDJocGRHVnNhWE4wVzNCeWIzQmxjblI1VG1GdFpWMGdQVDA5SUhSeWRXVTdYRzRnSUgxY2JpQWdhV1lnS0hCeWIzUnZRV05qWlhOelEyOXVkSEp2YkVadmNsUjVjR1V1WkdWbVlYVnNkRlpoYkhWbElDRTlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjSEp2ZEc5QlkyTmxjM05EYjI1MGNtOXNSbTl5Vkhsd1pTNWtaV1poZFd4MFZtRnNkV1U3WEc0Z0lIMWNiaUFnYkc5blZXNWxlSEJsWTJWa1VISnZjR1Z5ZEhsQlkyTmxjM05QYm1ObEtIQnliM0JsY25SNVRtRnRaU2s3WEc0Z0lISmxkSFZ5YmlCbVlXeHpaVHRjYm4xY2JseHVablZ1WTNScGIyNGdiRzluVlc1bGVIQmxZMlZrVUhKdmNHVnlkSGxCWTJObGMzTlBibU5sS0hCeWIzQmxjblI1VG1GdFpTa2dlMXh1SUNCcFppQW9iRzluWjJWa1VISnZjR1Z5ZEdsbGMxdHdjbTl3WlhKMGVVNWhiV1ZkSUNFOVBTQjBjblZsS1NCN1hHNGdJQ0FnYkc5bloyVmtVSEp2Y0dWeWRHbGxjMXR3Y205d1pYSjBlVTVoYldWZElEMGdkSEoxWlR0Y2JpQWdJQ0JzYjJkblpYSXViRzluS0Z4dUlDQWdJQ0FnSjJWeWNtOXlKeXhjYmlBZ0lDQWdJR0JJWVc1a2JHVmlZWEp6T2lCQlkyTmxjM01nYUdGeklHSmxaVzRnWkdWdWFXVmtJSFJ2SUhKbGMyOXNkbVVnZEdobElIQnliM0JsY25SNUlGd2lKSHR3Y205d1pYSjBlVTVoYldWOVhDSWdZbVZqWVhWelpTQnBkQ0JwY3lCdWIzUWdZVzRnWENKdmQyNGdjSEp2Y0dWeWRIbGNJaUJ2WmlCcGRITWdjR0Z5Wlc1MExseGNibUFnSzF4dUlDQWdJQ0FnSUNCZ1dXOTFJR05oYmlCaFpHUWdZU0J5ZFc1MGFXMWxJRzl3ZEdsdmJpQjBieUJrYVhOaFlteGxJSFJvWlNCamFHVmpheUJ2Y2lCMGFHbHpJSGRoY201cGJtYzZYRnh1WUNBclhHNGdJQ0FnSUNBZ0lHQlRaV1VnYUhSMGNITTZMeTlvWVc1a2JHVmlZWEp6YW5NdVkyOXRMMkZ3YVMxeVpXWmxjbVZ1WTJVdmNuVnVkR2x0WlMxdmNIUnBiMjV6TG1oMGJXd2piM0IwYVc5dWN5MTBieTFqYjI1MGNtOXNMWEJ5YjNSdmRIbHdaUzFoWTJObGMzTWdabTl5SUdSbGRHRnBiSE5nWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WelpYUk1iMmRuWldSUWNtOXdaWEowYVdWektDa2dlMXh1SUNCUFltcGxZM1F1YTJWNWN5aHNiMmRuWldSUWNtOXdaWEowYVdWektTNW1iM0pGWVdOb0tIQnliM0JsY25SNVRtRnRaU0E5UGlCN1hHNGdJQ0FnWkdWc1pYUmxJR3h2WjJkbFpGQnliM0JsY25ScFpYTmJjSEp2Y0dWeWRIbE9ZVzFsWFR0Y2JpQWdmU2s3WEc1OVhHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLkhhbmRsZWJhcnNFbnZpcm9ubWVudCA9IEhhbmRsZWJhcnNFbnZpcm9ubWVudDtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF91dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxudmFyIF9leGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG52YXIgX2hlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxudmFyIF9kZWNvcmF0b3JzID0gcmVxdWlyZSgnLi9kZWNvcmF0b3JzJyk7XG5cbnZhciBfbG9nZ2VyID0gcmVxdWlyZSgnLi9sb2dnZXInKTtcblxudmFyIF9sb2dnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbG9nZ2VyKTtcblxudmFyIF9pbnRlcm5hbFByb3RvQWNjZXNzID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnKTtcblxudmFyIFZFUlNJT04gPSAnNC43LjYnO1xuZXhwb3J0cy5WRVJTSU9OID0gVkVSU0lPTjtcbnZhciBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnRzLkNPTVBJTEVSX1JFVklTSU9OID0gQ09NUElMRVJfUkVWSVNJT047XG52YXIgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0cy5MQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gPSBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT047XG52YXIgUkVWSVNJT05fQ0hBTkdFUyA9IHtcbiAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4wLnJjLjIgaXMgYWN0dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXRcbiAgMjogJz09IDEuMC4wLXJjLjMnLFxuICAzOiAnPT0gMS4wLjAtcmMuNCcsXG4gIDQ6ICc9PSAxLngueCcsXG4gIDU6ICc9PSAyLjAuMC1hbHBoYS54JyxcbiAgNjogJz49IDIuMC4wLWJldGEuMScsXG4gIDc6ICc+PSA0LjAuMCA8NC4zLjAnLFxuICA4OiAnPj0gNC4zLjAnXG59O1xuXG5leHBvcnRzLlJFVklTSU9OX0NIQU5HRVMgPSBSRVZJU0lPTl9DSEFOR0VTO1xudmFyIG9iamVjdFR5cGUgPSAnW29iamVjdCBPYmplY3RdJztcblxuZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICBfaGVscGVycy5yZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICBfZGVjb3JhdG9ycy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogX2xvZ2dlcjJbJ2RlZmF1bHQnXSxcbiAgbG9nOiBfbG9nZ2VyMlsnZGVmYXVsdCddLmxvZyxcblxuICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24gcmVnaXN0ZXJIZWxwZXIobmFtZSwgZm4pIHtcbiAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzJyk7XG4gICAgICB9XG4gICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMuaGVscGVycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVscGVyc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckhlbHBlcjogZnVuY3Rpb24gdW5yZWdpc3RlckhlbHBlcihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaGVscGVyc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uIHJlZ2lzdGVyUGFydGlhbChuYW1lLCBwYXJ0aWFsKSB7XG4gICAgaWYgKF91dGlscy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlhbCBjYWxsZWQgXCInICsgbmFtZSArICdcIiBhcyB1bmRlZmluZWQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uIHVucmVnaXN0ZXJQYXJ0aWFsKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gcmVnaXN0ZXJEZWNvcmF0b3IobmFtZSwgZm4pIHtcbiAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzJyk7XG4gICAgICB9XG4gICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gdW5yZWdpc3RlckRlY29yYXRvcihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTtcbiAgfSxcbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBtZW1vcnkgb2YgaWxsZWdhbCBwcm9wZXJ0eSBhY2Nlc3NlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGxvZ2dlZC5cbiAgICogQGRlcHJlY2F0ZWQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBoYW5kbGViYXJzIHRlc3QtY2FzZXNcbiAgICovXG4gIHJlc2V0TG9nZ2VkUHJvcGVydHlBY2Nlc3NlczogZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0eUFjY2Vzc2VzKCkge1xuICAgIF9pbnRlcm5hbFByb3RvQWNjZXNzLnJlc2V0TG9nZ2VkUHJvcGVydGllcygpO1xuICB9XG59O1xuXG52YXIgbG9nID0gX2xvZ2dlcjJbJ2RlZmF1bHQnXS5sb2c7XG5cbmV4cG9ydHMubG9nID0gbG9nO1xuZXhwb3J0cy5jcmVhdGVGcmFtZSA9IF91dGlscy5jcmVhdGVGcmFtZTtcbmV4cG9ydHMubG9nZ2VyID0gX2xvZ2dlcjJbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJKaGMyVXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdjVUpCUVRoRExGTkJRVk03TzNsQ1FVTnFReXhoUVVGaE96czdPM1ZDUVVOSkxGZEJRVmM3T3pCQ1FVTlNMR05CUVdNN08zTkNRVU55UXl4VlFVRlZPenM3TzIxRFFVTlRMSGxDUVVGNVFqczdRVUZGZUVRc1NVRkJUU3hQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZET3p0QlFVTjRRaXhKUVVGTkxHbENRVUZwUWl4SFFVRkhMRU5CUVVNc1EwRkJRenM3UVVGRE5VSXNTVUZCVFN4cFEwRkJhVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPenRCUVVVMVF5eEpRVUZOTEdkQ1FVRm5RaXhIUVVGSE8wRkJRemxDTEVkQlFVTXNSVUZCUlN4aFFVRmhPMEZCUTJoQ0xFZEJRVU1zUlVGQlJTeGxRVUZsTzBGQlEyeENMRWRCUVVNc1JVRkJSU3hsUVVGbE8wRkJRMnhDTEVkQlFVTXNSVUZCUlN4VlFVRlZPMEZCUTJJc1IwRkJReXhGUVVGRkxHdENRVUZyUWp0QlFVTnlRaXhIUVVGRExFVkJRVVVzYVVKQlFXbENPMEZCUTNCQ0xFZEJRVU1zUlVGQlJTeHBRa0ZCYVVJN1FVRkRjRUlzUjBGQlF5eEZRVUZGTEZWQlFWVTdRMEZEWkN4RFFVRkRPenM3UVVGRlJpeEpRVUZOTEZWQlFWVXNSMEZCUnl4cFFrRkJhVUlzUTBGQlF6czdRVUZGT1VJc1UwRkJVeXh4UWtGQmNVSXNRMEZCUXl4UFFVRlBMRVZCUVVVc1VVRkJVU3hGUVVGRkxGVkJRVlVzUlVGQlJUdEJRVU51UlN4TlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZETjBJc1RVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eFJRVUZSTEVsQlFVa3NSVUZCUlN4RFFVRkRPMEZCUXk5Q0xFMUJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NWVUZCVlN4SlFVRkpMRVZCUVVVc1EwRkJRenM3UVVGRmJrTXNhME5CUVhWQ0xFbEJRVWtzUTBGQlF5eERRVUZETzBGQlF6ZENMSGREUVVFd1FpeEpRVUZKTEVOQlFVTXNRMEZCUXp0RFFVTnFRenM3UVVGRlJDeHhRa0ZCY1VJc1EwRkJReXhUUVVGVExFZEJRVWM3UVVGRGFFTXNZVUZCVnl4RlFVRkZMSEZDUVVGeFFqczdRVUZGYkVNc1VVRkJUU3h4UWtGQlVUdEJRVU5rTEV0QlFVY3NSVUZCUlN4dlFrRkJUeXhIUVVGSE96dEJRVVZtTEdkQ1FVRmpMRVZCUVVVc2QwSkJRVk1zU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlR0QlFVTnFReXhSUVVGSkxHZENRVUZUTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhWUVVGVkxFVkJRVVU3UVVGRGRFTXNWVUZCU1N4RlFVRkZMRVZCUVVVN1FVRkRUaXhqUVVGTkxESkNRVUZqTEhsRFFVRjVReXhEUVVGRExFTkJRVU03VDBGRGFFVTdRVUZEUkN4dlFrRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpWQ0xFMUJRVTA3UVVGRFRDeFZRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dExRVU42UWp0SFFVTkdPMEZCUTBRc2EwSkJRV2RDTEVWQlFVVXNNRUpCUVZNc1NVRkJTU3hGUVVGRk8wRkJReTlDTEZkQlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEhRVU16UWpzN1FVRkZSQ3hwUWtGQlpTeEZRVUZGTEhsQ1FVRlRMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVU3UVVGRGRrTXNVVUZCU1N4blFrRkJVeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NWVUZCVlN4RlFVRkZPMEZCUTNSRExHOUNRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE4wSXNUVUZCVFR0QlFVTk1MRlZCUVVrc1QwRkJUeXhQUVVGUExFdEJRVXNzVjBGQlZ5eEZRVUZGTzBGQlEyeERMR05CUVUwc2VVVkJRM2RETEVsQlFVa3NiMEpCUTJwRUxFTkJRVU03VDBGRFNEdEJRVU5FTEZWQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETzB0QlF5OUNPMGRCUTBZN1FVRkRSQ3h0UWtGQmFVSXNSVUZCUlN3eVFrRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGFFTXNWMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBkQlF6VkNPenRCUVVWRUxHMUNRVUZwUWl4RlFVRkZMREpDUVVGVExFbEJRVWtzUlVGQlJTeEZRVUZGTEVWQlFVVTdRVUZEY0VNc1VVRkJTU3huUWtGQlV5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1ZVRkJWU3hGUVVGRk8wRkJRM1JETEZWQlFVa3NSVUZCUlN4RlFVRkZPMEZCUTA0c1kwRkJUU3d5UWtGQll5dzBRMEZCTkVNc1EwRkJReXhEUVVGRE8wOUJRMjVGTzBGQlEwUXNiMEpCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTXZRaXhOUVVGTk8wRkJRMHdzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03UzBGRE5VSTdSMEZEUmp0QlFVTkVMSEZDUVVGdFFpeEZRVUZGTERaQ1FVRlRMRWxCUVVrc1JVRkJSVHRCUVVOc1F5eFhRVUZQTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UjBGRE9VSTdPenM3TzBGQlMwUXNOa0pCUVRKQ0xFVkJRVUVzZFVOQlFVYzdRVUZETlVJc1owUkJRWFZDTEVOQlFVTTdSMEZEZWtJN1EwRkRSaXhEUVVGRE96dEJRVVZMTEVsQlFVa3NSMEZCUnl4SFFVRkhMRzlDUVVGUExFZEJRVWNzUTBGQlF6czdPMUZCUlc1Q0xGZEJRVmM3VVVGQlJTeE5RVUZOSWl3aVptbHNaU0k2SW1KaGMyVXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCamNtVmhkR1ZHY21GdFpTd2daWGgwWlc1a0xDQjBiMU4wY21sdVp5QjlJR1p5YjIwZ0p5NHZkWFJwYkhNbk8xeHVhVzF3YjNKMElFVjRZMlZ3ZEdsdmJpQm1jbTl0SUNjdUwyVjRZMlZ3ZEdsdmJpYzdYRzVwYlhCdmNuUWdleUJ5WldkcGMzUmxja1JsWm1GMWJIUklaV3h3WlhKeklIMGdabkp2YlNBbkxpOW9aV3h3WlhKekp6dGNibWx0Y0c5eWRDQjdJSEpsWjJsemRHVnlSR1ZtWVhWc2RFUmxZMjl5WVhSdmNuTWdmU0JtY205dElDY3VMMlJsWTI5eVlYUnZjbk1uTzF4dWFXMXdiM0owSUd4dloyZGxjaUJtY205dElDY3VMMnh2WjJkbGNpYzdYRzVwYlhCdmNuUWdleUJ5WlhObGRFeHZaMmRsWkZCeWIzQmxjblJwWlhNZ2ZTQm1jbTl0SUNjdUwybHVkR1Z5Ym1Gc0wzQnliM1J2TFdGalkyVnpjeWM3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JXUlZKVFNVOU9JRDBnSnpRdU55NDJKenRjYm1WNGNHOXlkQ0JqYjI1emRDQkRUMDFRU1V4RlVsOVNSVlpKVTBsUFRpQTlJRGc3WEc1bGVIQnZjblFnWTI5dWMzUWdURUZUVkY5RFQwMVFRVlJKUWt4RlgwTlBUVkJKVEVWU1gxSkZWa2xUU1U5T0lEMGdOenRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRkpGVmtsVFNVOU9YME5JUVU1SFJWTWdQU0I3WEc0Z0lERTZJQ2M4UFNBeExqQXVjbU11TWljc0lDOHZJREV1TUM1eVl5NHlJR2x6SUdGamRIVmhiR3g1SUhKbGRqSWdZblYwSUdSdlpYTnVKM1FnY21Wd2IzSjBJR2wwWEc0Z0lESTZJQ2M5UFNBeExqQXVNQzF5WXk0ekp5eGNiaUFnTXpvZ0p6MDlJREV1TUM0d0xYSmpMalFuTEZ4dUlDQTBPaUFuUFQwZ01TNTRMbmduTEZ4dUlDQTFPaUFuUFQwZ01pNHdMakF0WVd4d2FHRXVlQ2NzWEc0Z0lEWTZJQ2MrUFNBeUxqQXVNQzFpWlhSaExqRW5MRnh1SUNBM09pQW5QajBnTkM0d0xqQWdQRFF1TXk0d0p5eGNiaUFnT0RvZ0p6NDlJRFF1TXk0d0oxeHVmVHRjYmx4dVkyOXVjM1FnYjJKcVpXTjBWSGx3WlNBOUlDZGJiMkpxWldOMElFOWlhbVZqZEYwbk8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdTR0Z1Wkd4bFltRnljMFZ1ZG1seWIyNXRaVzUwS0dobGJIQmxjbk1zSUhCaGNuUnBZV3h6TENCa1pXTnZjbUYwYjNKektTQjdYRzRnSUhSb2FYTXVhR1ZzY0dWeWN5QTlJR2hsYkhCbGNuTWdmSHdnZTMwN1hHNGdJSFJvYVhNdWNHRnlkR2xoYkhNZ1BTQndZWEowYVdGc2N5QjhmQ0I3ZlR0Y2JpQWdkR2hwY3k1a1pXTnZjbUYwYjNKeklEMGdaR1ZqYjNKaGRHOXljeUI4ZkNCN2ZUdGNibHh1SUNCeVpXZHBjM1JsY2tSbFptRjFiSFJJWld4d1pYSnpLSFJvYVhNcE8xeHVJQ0J5WldkcGMzUmxja1JsWm1GMWJIUkVaV052Y21GMGIzSnpLSFJvYVhNcE8xeHVmVnh1WEc1SVlXNWtiR1ZpWVhKelJXNTJhWEp2Ym0xbGJuUXVjSEp2ZEc5MGVYQmxJRDBnZTF4dUlDQmpiMjV6ZEhKMVkzUnZjam9nU0dGdVpHeGxZbUZ5YzBWdWRtbHliMjV0Wlc1MExGeHVYRzRnSUd4dloyZGxjam9nYkc5bloyVnlMRnh1SUNCc2IyYzZJR3h2WjJkbGNpNXNiMmNzWEc1Y2JpQWdjbVZuYVhOMFpYSklaV3h3WlhJNklHWjFibU4wYVc5dUtHNWhiV1VzSUdadUtTQjdYRzRnSUNBZ2FXWWdLSFJ2VTNSeWFXNW5MbU5oYkd3b2JtRnRaU2tnUFQwOUlHOWlhbVZqZEZSNWNHVXBJSHRjYmlBZ0lDQWdJR2xtSUNobWJpa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkQmNtY2dibTkwSUhOMWNIQnZjblJsWkNCM2FYUm9JRzExYkhScGNHeGxJR2hsYkhCbGNuTW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR1Y0ZEdWdVpDaDBhR2x6TG1obGJIQmxjbk1zSUc1aGJXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFHbHpMbWhsYkhCbGNuTmJibUZ0WlYwZ1BTQm1ianRjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSFZ1Y21WbmFYTjBaWEpJWld4d1pYSTZJR1oxYm1OMGFXOXVLRzVoYldVcElIdGNiaUFnSUNCa1pXeGxkR1VnZEdocGN5NW9aV3h3WlhKelcyNWhiV1ZkTzF4dUlDQjlMRnh1WEc0Z0lISmxaMmx6ZEdWeVVHRnlkR2xoYkRvZ1puVnVZM1JwYjI0b2JtRnRaU3dnY0dGeWRHbGhiQ2tnZTF4dUlDQWdJR2xtSUNoMGIxTjBjbWx1Wnk1allXeHNLRzVoYldVcElEMDlQU0J2WW1wbFkzUlVlWEJsS1NCN1hHNGdJQ0FnSUNCbGVIUmxibVFvZEdocGN5NXdZWEowYVdGc2N5d2dibUZ0WlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR2xtSUNoMGVYQmxiMllnY0dGeWRHbGhiQ0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWNFkyVndkR2x2YmloY2JpQWdJQ0FnSUNBZ0lDQmdRWFIwWlcxd2RHbHVaeUIwYnlCeVpXZHBjM1JsY2lCaElIQmhjblJwWVd3Z1kyRnNiR1ZrSUZ3aUpIdHVZVzFsZlZ3aUlHRnpJSFZ1WkdWbWFXNWxaR0JjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhSb2FYTXVjR0Z5ZEdsaGJITmJibUZ0WlYwZ1BTQndZWEowYVdGc08xeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2RXNXlaV2RwYzNSbGNsQmhjblJwWVd3NklHWjFibU4wYVc5dUtHNWhiV1VwSUh0Y2JpQWdJQ0JrWld4bGRHVWdkR2hwY3k1d1lYSjBhV0ZzYzF0dVlXMWxYVHRjYmlBZ2ZTeGNibHh1SUNCeVpXZHBjM1JsY2tSbFkyOXlZWFJ2Y2pvZ1puVnVZM1JwYjI0b2JtRnRaU3dnWm00cElIdGNiaUFnSUNCcFppQW9kRzlUZEhKcGJtY3VZMkZzYkNodVlXMWxLU0E5UFQwZ2IySnFaV04wVkhsd1pTa2dlMXh1SUNBZ0lDQWdhV1lnS0dadUtTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjBGeVp5QnViM1FnYzNWd2NHOXlkR1ZrSUhkcGRHZ2diWFZzZEdsd2JHVWdaR1ZqYjNKaGRHOXljeWNwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWlhoMFpXNWtLSFJvYVhNdVpHVmpiM0poZEc5eWN5d2dibUZ0WlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdVpHVmpiM0poZEc5eWMxdHVZVzFsWFNBOUlHWnVPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkVzV5WldkcGMzUmxja1JsWTI5eVlYUnZjam9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHUmxiR1YwWlNCMGFHbHpMbVJsWTI5eVlYUnZjbk5iYm1GdFpWMDdYRzRnSUgwc1hHNGdJQzhxS2x4dUlDQWdLaUJTWlhObGRDQjBhR1VnYldWdGIzSjVJRzltSUdsc2JHVm5ZV3dnY0hKdmNHVnlkSGtnWVdOalpYTnpaWE1nZEdoaGRDQm9ZWFpsSUdGc2NtVmhaSGtnWW1WbGJpQnNiMmRuWldRdVhHNGdJQ0FxSUVCa1pYQnlaV05oZEdWa0lITm9iM1ZzWkNCdmJteDVJR0psSUhWelpXUWdhVzRnYUdGdVpHeGxZbUZ5Y3lCMFpYTjBMV05oYzJWelhHNGdJQ0FxTDF4dUlDQnlaWE5sZEV4dloyZGxaRkJ5YjNCbGNuUjVRV05qWlhOelpYTW9LU0I3WEc0Z0lDQWdjbVZ6WlhSTWIyZG5aV1JRY205d1pYSjBhV1Z6S0NrN1hHNGdJSDFjYm4wN1hHNWNibVY0Y0c5eWRDQnNaWFFnYkc5bklEMGdiRzluWjJWeUxteHZaenRjYmx4dVpYaHdiM0owSUhzZ1kzSmxZWFJsUm5KaGJXVXNJR3h2WjJkbGNpQjlPMXh1SWwxOVxuIiwiLy8gQnVpbGQgb3V0IG91ciBiYXNpYyBTYWZlU3RyaW5nIHR5cGVcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmZ1bmN0aW9uIFNhZmVTdHJpbmcoc3RyaW5nKSB7XG4gIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xufVxuXG5TYWZlU3RyaW5nLnByb3RvdHlwZS50b1N0cmluZyA9IFNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICcnICsgdGhpcy5zdHJpbmc7XG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBTYWZlU3RyaW5nO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwzTmhabVV0YzNSeWFXNW5MbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN1FVRkRRU3hUUVVGVExGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZETVVJc1RVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRMEZEZEVJN08wRkJSVVFzVlVGQlZTeERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NXVUZCVnp0QlFVTjJSU3hUUVVGUExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPME5CUTNwQ0xFTkJRVU03TzNGQ1FVVmhMRlZCUVZVaUxDSm1hV3hsSWpvaWMyRm1aUzF6ZEhKcGJtY3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdkx5QkNkV2xzWkNCdmRYUWdiM1Z5SUdKaGMybGpJRk5oWm1WVGRISnBibWNnZEhsd1pWeHVablZ1WTNScGIyNGdVMkZtWlZOMGNtbHVaeWh6ZEhKcGJtY3BJSHRjYmlBZ2RHaHBjeTV6ZEhKcGJtY2dQU0J6ZEhKcGJtYzdYRzU5WEc1Y2JsTmhabVZUZEhKcGJtY3VjSEp2ZEc5MGVYQmxMblJ2VTNSeWFXNW5JRDBnVTJGbVpWTjBjbWx1Wnk1d2NtOTBiM1I1Y0dVdWRHOUlWRTFNSUQwZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUhKbGRIVnliaUFuSnlBcklIUm9hWE11YzNSeWFXNW5PMXh1ZlR0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1UyRm1aVk4wY21sdVp6dGNiaUpkZlE9PVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy53cmFwSGVscGVyID0gd3JhcEhlbHBlcjtcblxuZnVuY3Rpb24gd3JhcEhlbHBlcihoZWxwZXIsIHRyYW5zZm9ybU9wdGlvbnNGbikge1xuICBpZiAodHlwZW9mIGhlbHBlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCBhcHBhcmVudGx5IGl0IGRvZXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy8xNjM5XG4gICAgLy8gV2UgdHJ5IHRvIG1ha2UgdGhlIHdyYXBwZXIgbGVhc3QtaW52YXNpdmUgYnkgbm90IHdyYXBwaW5nIGl0LCBpZiB0aGUgaGVscGVyIGlzIG5vdCBhIGZ1bmN0aW9uLlxuICAgIHJldHVybiBoZWxwZXI7XG4gIH1cbiAgdmFyIHdyYXBwZXIgPSBmdW5jdGlvbiB3cmFwcGVyKCkgLyogZHluYW1pYyBhcmd1bWVudHMgKi97XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0gPSB0cmFuc2Zvcm1PcHRpb25zRm4ob3B0aW9ucyk7XG4gICAgcmV0dXJuIGhlbHBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xuICByZXR1cm4gd3JhcHBlcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwybHVkR1Z5Ym1Gc0wzZHlZWEJJWld4d1pYSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN1FVRkJUeXhUUVVGVExGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVU3UVVGRGNrUXNUVUZCU1N4UFFVRlBMRTFCUVUwc1MwRkJTeXhWUVVGVkxFVkJRVVU3T3p0QlFVZG9ReXhYUVVGUExFMUJRVTBzUTBGQlF6dEhRVU5tTzBGQlEwUXNUVUZCU1N4UFFVRlBMRWRCUVVjc1UwRkJWaXhQUVVGUExEQkNRVUZ4UXp0QlFVTTVReXhSUVVGTkxFOUJRVThzUjBGQlJ5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5vUkN4aFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4clFrRkJhMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTTVSQ3hYUVVGUExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8wZEJRM1JETEVOQlFVTTdRVUZEUml4VFFVRlBMRTlCUVU4c1EwRkJRenREUVVOb1FpSXNJbVpwYkdVaU9pSjNjbUZ3U0dWc2NHVnlMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUdaMWJtTjBhVzl1SUhkeVlYQklaV3h3WlhJb2FHVnNjR1Z5TENCMGNtRnVjMlp2Y20xUGNIUnBiMjV6Um00cElIdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCb1pXeHdaWElnSVQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQXZMeUJVYUdseklITm9iM1ZzWkNCdWIzUWdhR0Z3Y0dWdUxDQmlkWFFnWVhCd1lYSmxiblJzZVNCcGRDQmtiMlZ6SUdsdUlHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOTNlV05oZEhNdmFHRnVaR3hsWW1GeWN5NXFjeTlwYzNOMVpYTXZNVFl6T1Z4dUlDQWdJQzh2SUZkbElIUnllU0IwYnlCdFlXdGxJSFJvWlNCM2NtRndjR1Z5SUd4bFlYTjBMV2x1ZG1GemFYWmxJR0o1SUc1dmRDQjNjbUZ3Y0dsdVp5QnBkQ3dnYVdZZ2RHaGxJR2hsYkhCbGNpQnBjeUJ1YjNRZ1lTQm1kVzVqZEdsdmJpNWNiaUFnSUNCeVpYUjFjbTRnYUdWc2NHVnlPMXh1SUNCOVhHNGdJR3hsZENCM2NtRndjR1Z5SUQwZ1puVnVZM1JwYjI0b0x5b2daSGx1WVcxcFl5QmhjbWQxYldWdWRITWdLaThwSUh0Y2JpQWdJQ0JqYjI1emRDQnZjSFJwYjI1eklEMGdZWEpuZFcxbGJuUnpXMkZ5WjNWdFpXNTBjeTVzWlc1bmRHZ2dMU0F4WFR0Y2JpQWdJQ0JoY21kMWJXVnVkSE5iWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0F0SURGZElEMGdkSEpoYm5ObWIzSnRUM0IwYVc5dWMwWnVLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lISmxkSFZ5YmlCb1pXeHdaWEl1WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnZlR0Y2JpQWdjbVYwZFhKdUlIZHlZWEJ3WlhJN1hHNTlYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5jaGVja1JldmlzaW9uID0gY2hlY2tSZXZpc2lvbjtcbmV4cG9ydHMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbmV4cG9ydHMud3JhcFByb2dyYW0gPSB3cmFwUHJvZ3JhbTtcbmV4cG9ydHMucmVzb2x2ZVBhcnRpYWwgPSByZXNvbHZlUGFydGlhbDtcbmV4cG9ydHMuaW52b2tlUGFydGlhbCA9IGludm9rZVBhcnRpYWw7XG5leHBvcnRzLm5vb3AgPSBub29wO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqWydkZWZhdWx0J10gPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG52YXIgX3V0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG52YXIgVXRpbHMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfdXRpbHMpO1xuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG5cbnZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7XG5cbnZhciBfYmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuXG52YXIgX2hlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxudmFyIF9pbnRlcm5hbFdyYXBIZWxwZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3dyYXBIZWxwZXInKTtcblxudmFyIF9pbnRlcm5hbFByb3RvQWNjZXNzID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnKTtcblxuZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgdmFyIGNvbXBpbGVyUmV2aXNpb24gPSBjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdIHx8IDEsXG4gICAgICBjdXJyZW50UmV2aXNpb24gPSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoY29tcGlsZXJSZXZpc2lvbiA+PSBfYmFzZS5MQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gJiYgY29tcGlsZXJSZXZpc2lvbiA8PSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjb21waWxlclJldmlzaW9uIDwgX2Jhc2UuTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OKSB7XG4gICAgdmFyIHJ1bnRpbWVWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJldmlzaW9uXSxcbiAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyArICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVyVmVyc2lvbnMgKyAnKS4nKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sxXSArICcpLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZW52KSB7XG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ05vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZScpO1xuICB9XG4gIGlmICghdGVtcGxhdGVTcGVjIHx8ICF0ZW1wbGF0ZVNwZWMubWFpbikge1xuICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgdmFyIHRlbXBsYXRlV2FzUHJlY29tcGlsZWRXaXRoQ29tcGlsZXJWNyA9IHRlbXBsYXRlU3BlYy5jb21waWxlciAmJiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJbMF0gPT09IDc7XG5cbiAgZnVuY3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICAgIGNvbnRleHQgPSBVdGlscy5leHRlbmQoe30sIGNvbnRleHQsIG9wdGlvbnMuaGFzaCk7XG4gICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgb3B0aW9ucy5pZHNbMF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBwYXJ0aWFsID0gZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9ucyk7XG5cbiAgICB2YXIgZXh0ZW5kZWRPcHRpb25zID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLCB7XG4gICAgICBob29rczogdGhpcy5ob29rcyxcbiAgICAgIHByb3RvQWNjZXNzQ29udHJvbDogdGhpcy5wcm90b0FjY2Vzc0NvbnRyb2xcbiAgICB9KTtcblxuICAgIHZhciByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIGV4dGVuZGVkT3B0aW9ucyk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKHBhcnRpYWwsIHRlbXBsYXRlU3BlYy5jb21waWxlck9wdGlvbnMsIGVudik7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgZXh0ZW5kZWRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgdmFyIGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIHZhciBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbiBzdHJpY3Qob2JqLCBuYW1lLCBsb2MpIHtcbiAgICAgIGlmICghb2JqIHx8ICEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdcIicgKyBuYW1lICsgJ1wiIG5vdCBkZWZpbmVkIGluICcgKyBvYmosIHtcbiAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmpbbmFtZV07XG4gICAgfSxcbiAgICBsb29rdXBQcm9wZXJ0eTogZnVuY3Rpb24gbG9va3VwUHJvcGVydHkocGFyZW50LCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKF9pbnRlcm5hbFByb3RvQWNjZXNzLnJlc3VsdElzQWxsb3dlZChyZXN1bHQsIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChkZXB0aHMsIG5hbWUpIHtcbiAgICAgIHZhciBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uIGxhbWJkYShjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uIGZuKGkpIHtcbiAgICAgIHZhciByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbiBwcm9ncmFtKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIHZhciBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgICAgZm4gPSB0aGlzLmZuKGkpO1xuICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHtcbiAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEodmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbiBtZXJnZUlmTmVlZGVkKHBhcmFtLCBjb21tb24pIHtcbiAgICAgIHZhciBvYmogPSBwYXJhbSB8fCBjb21tb247XG5cbiAgICAgIGlmIChwYXJhbSAmJiBjb21tb24gJiYgcGFyYW0gIT09IGNvbW1vbikge1xuICAgICAgICBvYmogPSBVdGlscy5leHRlbmQoe30sIGNvbW1vbiwgcGFyYW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG4gICAgLy8gQW4gZW1wdHkgb2JqZWN0IHRvIHVzZSBhcyByZXBsYWNlbWVudCBmb3IgbnVsbC1jb250ZXh0c1xuICAgIG51bGxDb250ZXh0OiBPYmplY3Quc2VhbCh7fSksXG5cbiAgICBub29wOiBlbnYuVk0ubm9vcCxcbiAgICBjb21waWxlckluZm86IHRlbXBsYXRlU3BlYy5jb21waWxlclxuICB9O1xuXG4gIGZ1bmN0aW9uIHJldChjb250ZXh0KSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcblxuICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICB2YXIgZGVwdGhzID0gdW5kZWZpbmVkLFxuICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID0gY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFpbihjb250ZXh0IC8qLCBvcHRpb25zKi8pIHtcbiAgICAgIHJldHVybiAnJyArIHRlbXBsYXRlU3BlYy5tYWluKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRhaW5lci5wYXJ0aWFscywgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgfVxuXG4gICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFtcyk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7XG4gICAgICB2YXIgbWVyZ2VkSGVscGVycyA9IFV0aWxzLmV4dGVuZCh7fSwgZW52LmhlbHBlcnMsIG9wdGlvbnMuaGVscGVycyk7XG4gICAgICB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcik7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG1lcmdlZEhlbHBlcnM7XG5cbiAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCkge1xuICAgICAgICAvLyBVc2UgbWVyZ2VJZk5lZWRlZCBoZXJlIHRvIHByZXZlbnQgY29tcGlsaW5nIGdsb2JhbCBwYXJ0aWFscyBtdWx0aXBsZSB0aW1lc1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBjb250YWluZXIubWVyZ2VJZk5lZWRlZChvcHRpb25zLnBhcnRpYWxzLCBlbnYucGFydGlhbHMpO1xuICAgICAgfVxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBsYXRlU3BlYy51c2VEZWNvcmF0b3JzKSB7XG4gICAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gVXRpbHMuZXh0ZW5kKHt9LCBlbnYuZGVjb3JhdG9ycywgb3B0aW9ucy5kZWNvcmF0b3JzKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLmhvb2tzID0ge307XG4gICAgICBjb250YWluZXIucHJvdG9BY2Nlc3NDb250cm9sID0gX2ludGVybmFsUHJvdG9BY2Nlc3MuY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sKG9wdGlvbnMpO1xuXG4gICAgICB2YXIga2VlcEhlbHBlckluSGVscGVycyA9IG9wdGlvbnMuYWxsb3dDYWxsc1RvSGVscGVyTWlzc2luZyB8fCB0ZW1wbGF0ZVdhc1ByZWNvbXBpbGVkV2l0aENvbXBpbGVyVjc7XG4gICAgICBfaGVscGVycy5tb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdoZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgICBfaGVscGVycy5tb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdibG9ja0hlbHBlck1pc3NpbmcnLCBrZWVwSGVscGVySW5IZWxwZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IG9wdGlvbnMucHJvdG9BY2Nlc3NDb250cm9sOyAvLyBpbnRlcm5hbCBvcHRpb25cbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgICAgY29udGFpbmVyLmhvb2tzID0gb3B0aW9ucy5ob29rcztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uIChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdtdXN0IHBhc3MgYmxvY2sgcGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzICYmICFkZXB0aHMpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0KSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcblxuICAgIHZhciBjdXJyZW50RGVwdGhzID0gZGVwdGhzO1xuICAgIGlmIChkZXB0aHMgJiYgY29udGV4dCAhPSBkZXB0aHNbMF0gJiYgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKSkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBvcHRpb25zLmRhdGEgfHwgZGF0YSwgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksIGN1cnJlbnREZXB0aHMpO1xuICB9XG5cbiAgcHJvZyA9IGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpO1xuXG4gIHByb2cucHJvZ3JhbSA9IGk7XG4gIHByb2cuZGVwdGggPSBkZXB0aHMgPyBkZXB0aHMubGVuZ3RoIDogMDtcbiAgcHJvZy5ibG9ja1BhcmFtcyA9IGRlY2xhcmVkQmxvY2tQYXJhbXMgfHwgMDtcbiAgcmV0dXJuIHByb2c7XG59XG5cbi8qKlxuICogVGhpcyBpcyBjdXJyZW50bHkgcGFydCBvZiB0aGUgb2ZmaWNpYWwgQVBJLCB0aGVyZWZvcmUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBzaG91bGQgbm90IGJlIGNoYW5nZWQuXG4gKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAoIXBhcnRpYWwpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07XG4gIH1cbiAgcmV0dXJuIHBhcnRpYWw7XG59XG5cbmZ1bmN0aW9uIGludm9rZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICAvLyBVc2UgdGhlIGN1cnJlbnQgY2xvc3VyZSBjb250ZXh0IHRvIHNhdmUgdGhlIHBhcnRpYWwtYmxvY2sgaWYgdGhpcyBwYXJ0aWFsXG4gIHZhciBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICB2YXIgcGFydGlhbEJsb2NrID0gdW5kZWZpbmVkO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9IF9iYXNlLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlXG4gICAgICB2YXIgZm4gPSBvcHRpb25zLmZuO1xuICAgICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcblxuICAgICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAgIC8vIGkuZS4gdGhlIHBhcnQgaW5zaWRlIHRoZSBibG9jayBvZiB0aGUgcGFydGlhbCBjYWxsLlxuICAgICAgICBvcHRpb25zLmRhdGEgPSBfYmFzZS5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICAgIHJldHVybiBmbihjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH07XG4gICAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucy5wYXJ0aWFscywgZm4ucGFydGlhbHMpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHtcbiAgICBkYXRhID0gZGF0YSA/IF9iYXNlLmNyZWF0ZUZyYW1lKGRhdGEpIDoge307XG4gICAgZGF0YS5yb290ID0gY29udGV4dDtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykge1xuICBpZiAoZm4uZGVjb3JhdG9yKSB7XG4gICAgdmFyIHByb3BzID0ge307XG4gICAgcHJvZyA9IGZuLmRlY29yYXRvcihwcm9nLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aHMgJiYgZGVwdGhzWzBdLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpO1xuICB9XG4gIHJldHVybiBwcm9nO1xufVxuXG5mdW5jdGlvbiB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcikge1xuICBPYmplY3Qua2V5cyhtZXJnZWRIZWxwZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChoZWxwZXJOYW1lKSB7XG4gICAgdmFyIGhlbHBlciA9IG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgdmFyIGxvb2t1cFByb3BlcnR5ID0gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5O1xuICByZXR1cm4gX2ludGVybmFsV3JhcEhlbHBlci53cmFwSGVscGVyKGhlbHBlciwgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gVXRpbHMuZXh0ZW5kKHsgbG9va3VwUHJvcGVydHk6IGxvb2t1cFByb3BlcnR5IH0sIG9wdGlvbnMpO1xuICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDNKMWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenM3Y1VKQlFYVkNMRk5CUVZNN08wbEJRWEJDTEV0QlFVczdPM2xDUVVOTExHRkJRV0U3T3pzN2IwSkJUVFZDTEZGQlFWRTdPM1ZDUVVOdFFpeFhRVUZYT3p0clEwRkRiRUlzZFVKQlFYVkNPenR0UTBGSk0wTXNlVUpCUVhsQ096dEJRVVY2UWl4VFFVRlRMR0ZCUVdFc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRE1VTXNUVUZCVFN4blFrRkJaMElzUjBGQlJ5eEJRVUZETEZsQlFWa3NTVUZCU1N4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVXNzUTBGQlF6dE5RVU0zUkN4bFFVRmxMREJDUVVGdlFpeERRVUZET3p0QlFVVjBReXhOUVVORkxHZENRVUZuUWl3eVEwRkJjVU1zU1VGRGNrUXNaMEpCUVdkQ0xESkNRVUZ4UWl4RlFVTnlRenRCUVVOQkxGZEJRVTg3UjBGRFVqczdRVUZGUkN4TlFVRkpMR2RDUVVGblFpd3dRMEZCYjBNc1JVRkJSVHRCUVVONFJDeFJRVUZOTEdWQlFXVXNSMEZCUnl4MVFrRkJhVUlzWlVGQlpTeERRVUZETzFGQlEzWkVMR2RDUVVGblFpeEhRVUZITEhWQ1FVRnBRaXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMEZCUTNoRUxGVkJRVTBzTWtKQlEwb3NlVVpCUVhsR0xFZEJRM1pHTEhGRVFVRnhSQ3hIUVVOeVJDeGxRVUZsTEVkQlEyWXNiVVJCUVcxRUxFZEJRMjVFTEdkQ1FVRm5RaXhIUVVOb1FpeEpRVUZKTEVOQlExQXNRMEZCUXp0SFFVTklMRTFCUVUwN08wRkJSVXdzVlVGQlRTd3lRa0ZEU2l4M1JrRkJkMFlzUjBGRGRFWXNhVVJCUVdsRUxFZEJRMnBFTEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkRaaXhKUVVGSkxFTkJRMUFzUTBGQlF6dEhRVU5JTzBOQlEwWTdPMEZCUlUwc1UwRkJVeXhSUVVGUkxFTkJRVU1zV1VGQldTeEZRVUZGTEVkQlFVY3NSVUZCUlRzN1FVRkZNVU1zVFVGQlNTeERRVUZETEVkQlFVY3NSVUZCUlR0QlFVTlNMRlZCUVUwc01rSkJRV01zYlVOQlFXMURMRU5CUVVNc1EwRkJRenRIUVVNeFJEdEJRVU5FTEUxQlFVa3NRMEZCUXl4WlFVRlpMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEzWkRMRlZCUVUwc01rSkJRV01zTWtKQlFUSkNMRWRCUVVjc1QwRkJUeXhaUVVGWkxFTkJRVU1zUTBGQlF6dEhRVU40UlRzN1FVRkZSQ3hqUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1RVRkJUU3hEUVVGRE96czdPMEZCU1d4RUxFdEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRMRmxCUVZrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6czdPMEZCUnpWRExFMUJRVTBzYjBOQlFXOURMRWRCUTNoRExGbEJRVmtzUTBGQlF5eFJRVUZSTEVsQlFVa3NXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdPMEZCUlRGRUxGZEJRVk1zYjBKQlFXOUNMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVTdRVUZEZGtRc1VVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEyaENMR0ZCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEyeEVMRlZCUVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU5tTEdWQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzA5QlEzWkNPMHRCUTBZN1FVRkRSQ3hYUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE96dEJRVVYwUlN4UlFVRkpMR1ZCUVdVc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRPVU1zVjBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxPMEZCUTJwQ0xIZENRVUZyUWl4RlFVRkZMRWxCUVVrc1EwRkJReXhyUWtGQmEwSTdTMEZETlVNc1EwRkJReXhEUVVGRE96dEJRVVZJTEZGQlFVa3NUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZEY0VNc1NVRkJTU3hGUVVOS0xFOUJRVThzUlVGRFVDeFBRVUZQTEVWQlExQXNaVUZCWlN4RFFVTm9RaXhEUVVGRE96dEJRVVZHTEZGQlFVa3NUVUZCVFN4SlFVRkpMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlEycERMR0ZCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRekZETEU5QlFVOHNSVUZEVUN4WlFVRlpMRU5CUVVNc1pVRkJaU3hGUVVNMVFpeEhRVUZITEVOQlEwb3NRMEZCUXp0QlFVTkdMRmxCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhQUVVGUExFVkJRVVVzWlVGQlpTeERRVUZETEVOQlFVTTdTMEZEYmtVN1FVRkRSQ3hSUVVGSkxFMUJRVTBzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYkVJc1ZVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEyeENMRmxCUVVrc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRMMElzWVVGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU0xUXl4alFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8wRkJRelZDTEd0Q1FVRk5PMWRCUTFBN08wRkJSVVFzWlVGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNSRE8wRkJRMFFzWTBGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRE0wSTdRVUZEUkN4aFFVRlBMRTFCUVUwc1EwRkJRenRMUVVObUxFMUJRVTA3UVVGRFRDeFpRVUZOTERKQ1FVTktMR05CUVdNc1IwRkRXaXhQUVVGUExFTkJRVU1zU1VGQlNTeEhRVU5hTERCRVFVRXdSQ3hEUVVNM1JDeERRVUZETzB0QlEwZzdSMEZEUmpzN08wRkJSMFFzVFVGQlNTeFRRVUZUTEVkQlFVYzdRVUZEWkN4VlFVRk5MRVZCUVVVc1owSkJRVk1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVN1FVRkRMMElzVlVGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RlFVRkZMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVUVzUVVGQlF5eEZRVUZGTzBGQlF6RkNMR05CUVUwc01rSkJRV01zUjBGQlJ5eEhRVUZITEVsQlFVa3NSMEZCUnl4dFFrRkJiVUlzUjBGQlJ5eEhRVUZITEVWQlFVVTdRVUZETVVRc1lVRkJSeXhGUVVGRkxFZEJRVWM3VTBGRFZDeERRVUZETEVOQlFVTTdUMEZEU2p0QlFVTkVMR0ZCUVU4c1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEyeENPMEZCUTBRc2EwSkJRV01zUlVGQlJTeDNRa0ZCVXl4TlFVRk5MRVZCUVVVc1dVRkJXU3hGUVVGRk8wRkJRemRETEZWQlFVa3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dEJRVU5zUXl4VlFVRkpMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGJFSXNaVUZCVHl4TlFVRk5MRU5CUVVNN1QwRkRaanRCUVVORUxGVkJRVWtzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeFpRVUZaTEVOQlFVTXNSVUZCUlR0QlFVTTVSQ3hsUVVGUExFMUJRVTBzUTBGQlF6dFBRVU5tT3p0QlFVVkVMRlZCUVVrc2NVTkJRV2RDTEUxQlFVMHNSVUZCUlN4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNXVUZCV1N4RFFVRkRMRVZCUVVVN1FVRkRka1VzWlVGQlR5eE5RVUZOTEVOQlFVTTdUMEZEWmp0QlFVTkVMR0ZCUVU4c1UwRkJVeXhEUVVGRE8wdEJRMnhDTzBGQlEwUXNWVUZCVFN4RlFVRkZMR2RDUVVGVExFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVTdRVUZETjBJc1ZVRkJUU3hIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTXhRaXhYUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlF6VkNMRmxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4VFFVRlRMRU5CUVVNc1kwRkJZeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOd1JTeFpRVUZKTEUxQlFVMHNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRiRUlzYVVKQlFVOHNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEzaENPMDlCUTBZN1MwRkRSanRCUVVORUxGVkJRVTBzUlVGQlJTeG5Ra0ZCVXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRMnBETEdGQlFVOHNUMEZCVHl4UFFVRlBMRXRCUVVzc1ZVRkJWU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRE8wdEJRM2hGT3p0QlFVVkVMRzlDUVVGblFpeEZRVUZGTEV0QlFVc3NRMEZCUXl4blFrRkJaMEk3UVVGRGVFTXNhVUpCUVdFc1JVRkJSU3h2UWtGQmIwSTdPMEZCUlc1RExFMUJRVVVzUlVGQlJTeFpRVUZUTEVOQlFVTXNSVUZCUlR0QlFVTmtMRlZCUVVrc1IwRkJSeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhUUVVGSExFTkJRVU1zVTBGQlV5eEhRVUZITEZsQlFWa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGRrTXNZVUZCVHl4SFFVRkhMRU5CUVVNN1MwRkRXanM3UVVGRlJDeFpRVUZSTEVWQlFVVXNSVUZCUlR0QlFVTmFMRmRCUVU4c1JVRkJSU3hwUWtGQlV5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEZkQlFWY3NSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkRia1VzVlVGQlNTeGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03VlVGRGJrTXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYkVJc1ZVRkJTU3hKUVVGSkxFbEJRVWtzVFVGQlRTeEpRVUZKTEZkQlFWY3NTVUZCU1N4dFFrRkJiVUlzUlVGQlJUdEJRVU40UkN4elFrRkJZeXhIUVVGSExGZEJRVmNzUTBGRE1VSXNTVUZCU1N4RlFVTktMRU5CUVVNc1JVRkRSQ3hGUVVGRkxFVkJRMFlzU1VGQlNTeEZRVU5LTEcxQ1FVRnRRaXhGUVVOdVFpeFhRVUZYTEVWQlExZ3NUVUZCVFN4RFFVTlFMRU5CUVVNN1QwRkRTQ3hOUVVGTkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVTdRVUZETVVJc2MwSkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wOUJRemxFTzBGQlEwUXNZVUZCVHl4alFVRmpMRU5CUVVNN1MwRkRka0k3TzBGQlJVUXNVVUZCU1N4RlFVRkZMR05CUVZNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJUdEJRVU16UWl4aFFVRlBMRXRCUVVzc1NVRkJTU3hMUVVGTExFVkJRVVVzUlVGQlJUdEJRVU4yUWl4aFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF6dFBRVU4yUWp0QlFVTkVMR0ZCUVU4c1MwRkJTeXhEUVVGRE8wdEJRMlE3UVVGRFJDeHBRa0ZCWVN4RlFVRkZMSFZDUVVGVExFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZEY2tNc1ZVRkJTU3hIUVVGSExFZEJRVWNzUzBGQlN5eEpRVUZKTEUxQlFVMHNRMEZCUXpzN1FVRkZNVUlzVlVGQlNTeExRVUZMTEVsQlFVa3NUVUZCVFN4SlFVRkpMRXRCUVVzc1MwRkJTeXhOUVVGTkxFVkJRVVU3UVVGRGRrTXNWMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVOMlF6czdRVUZGUkN4aFFVRlBMRWRCUVVjc1EwRkJRenRMUVVOYU96dEJRVVZFTEdWQlFWY3NSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6czdRVUZGTlVJc1VVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1R0QlFVTnFRaXhuUWtGQldTeEZRVUZGTEZsQlFWa3NRMEZCUXl4UlFVRlJPMGRCUTNCRExFTkJRVU03TzBGQlJVWXNWMEZCVXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhGUVVGblFqdFJRVUZrTEU5QlFVOHNlVVJCUVVjc1JVRkJSVHM3UVVGRGFFTXNVVUZCU1N4SlFVRkpMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF6czdRVUZGZUVJc1QwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTndRaXhSUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNTVUZCU1N4WlFVRlpMRU5CUVVNc1QwRkJUeXhGUVVGRk8wRkJRelZETEZWQlFVa3NSMEZCUnl4UlFVRlJMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEyaERPMEZCUTBRc1VVRkJTU3hOUVVGTkxGbEJRVUU3VVVGRFVpeFhRVUZYTEVkQlFVY3NXVUZCV1N4RFFVRkRMR05CUVdNc1IwRkJSeXhGUVVGRkxFZEJRVWNzVTBGQlV5eERRVUZETzBGQlF6ZEVMRkZCUVVrc1dVRkJXU3hEUVVGRExGTkJRVk1zUlVGQlJUdEJRVU14UWl4VlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVU3UVVGRGJFSXNZMEZCVFN4SFFVTktMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVTjRRaXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRMmhETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNN1QwRkRkRUlzVFVGQlRUdEJRVU5NTEdOQlFVMHNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wOUJRM0JDTzB0QlEwWTdPMEZCUlVRc1lVRkJVeXhKUVVGSkxFTkJRVU1zVDBGQlR5eG5Ra0ZCWjBJN1FVRkRia01zWVVGRFJTeEZRVUZGTEVkQlEwWXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkRaaXhUUVVGVExFVkJRMVFzVDBGQlR5eEZRVU5RTEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZCUTJwQ0xGTkJRVk1zUTBGQlF5eFJRVUZSTEVWQlEyeENMRWxCUVVrc1JVRkRTaXhYUVVGWExFVkJRMWdzVFVGQlRTeERRVU5RTEVOQlEwUTdTMEZEU0RzN1FVRkZSQ3hSUVVGSkxFZEJRVWNzYVVKQlFXbENMRU5CUTNSQ0xGbEJRVmtzUTBGQlF5eEpRVUZKTEVWQlEycENMRWxCUVVrc1JVRkRTaXhUUVVGVExFVkJRMVFzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRVZCUTNCQ0xFbEJRVWtzUlVGRFNpeFhRVUZYTEVOQlExb3NRMEZCUXp0QlFVTkdMRmRCUVU4c1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0SFFVTXZRanM3UVVGRlJDeExRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRmFrSXNTMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhWUVVGVExFOUJRVThzUlVGQlJUdEJRVU0zUWl4UlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJUdEJRVU53UWl4VlFVRkpMR0ZCUVdFc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTnVSU3h4UTBGQkswSXNRMEZCUXl4aFFVRmhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03UVVGRE1VUXNaVUZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhoUVVGaExFTkJRVU03TzBGQlJXeERMRlZCUVVrc1dVRkJXU3hEUVVGRExGVkJRVlVzUlVGQlJUczdRVUZGTTBJc2FVSkJRVk1zUTBGQlF5eFJRVUZSTEVkQlFVY3NVMEZCVXl4RFFVRkRMR0ZCUVdFc1EwRkRNVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSVUZEYUVJc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGRFlpeERRVUZETzA5QlEwZzdRVUZEUkN4VlFVRkpMRmxCUVZrc1EwRkJReXhWUVVGVkxFbEJRVWtzV1VGQldTeERRVUZETEdGQlFXRXNSVUZCUlR0QlFVTjZSQ3hwUWtGQlV5eERRVUZETEZWQlFWVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVOcVF5eEZRVUZGTEVWQlEwWXNSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkRaQ3hQUVVGUExFTkJRVU1zVlVGQlZTeERRVU51UWl4RFFVRkRPMDlCUTBnN08wRkJSVVFzWlVGQlV5eERRVUZETEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRja0lzWlVGQlV5eERRVUZETEd0Q1FVRnJRaXhIUVVGSExEaERRVUY1UWl4UFFVRlBMRU5CUVVNc1EwRkJRenM3UVVGRmFrVXNWVUZCU1N4dFFrRkJiVUlzUjBGRGNrSXNUMEZCVHl4RFFVRkRMSGxDUVVGNVFpeEpRVU5xUXl4dlEwRkJiME1zUTBGQlF6dEJRVU4yUXl4cFEwRkJhMElzVTBGQlV5eEZRVUZGTEdWQlFXVXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF5eERRVUZETzBGQlEyNUZMR2xEUVVGclFpeFRRVUZUTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRMUVVONlJTeE5RVUZOTzBGQlEwd3NaVUZCVXl4RFFVRkRMR3RDUVVGclFpeEhRVUZITEU5QlFVOHNRMEZCUXl4clFrRkJhMElzUTBGQlF6dEJRVU14UkN4bFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTTdRVUZEY0VNc1pVRkJVeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRPMEZCUTNSRExHVkJRVk1zUTBGQlF5eFZRVUZWTEVkQlFVY3NUMEZCVHl4RFFVRkRMRlZCUVZVc1EwRkJRenRCUVVNeFF5eGxRVUZUTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGFrTTdSMEZEUml4RFFVRkRPenRCUVVWR0xFdEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NWVUZCVXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZEYkVRc1VVRkJTU3haUVVGWkxFTkJRVU1zWTBGQll5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMEZCUXk5RExGbEJRVTBzTWtKQlFXTXNkMEpCUVhkQ0xFTkJRVU1zUTBGQlF6dExRVU12UXp0QlFVTkVMRkZCUVVrc1dVRkJXU3hEUVVGRExGTkJRVk1zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnlReXhaUVVGTkxESkNRVUZqTEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03UzBGRGFFUTdPMEZCUlVRc1YwRkJUeXhYUVVGWExFTkJRMmhDTEZOQlFWTXNSVUZEVkN4RFFVRkRMRVZCUTBRc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU5tTEVsQlFVa3NSVUZEU2l4RFFVRkRMRVZCUTBRc1YwRkJWeXhGUVVOWUxFMUJRVTBzUTBGRFVDeERRVUZETzBkQlEwZ3NRMEZCUXp0QlFVTkdMRk5CUVU4c1IwRkJSeXhEUVVGRE8wTkJRMW83TzBGQlJVMHNVMEZCVXl4WFFVRlhMRU5CUTNwQ0xGTkJRVk1zUlVGRFZDeERRVUZETEVWQlEwUXNSVUZCUlN4RlFVTkdMRWxCUVVrc1JVRkRTaXh0UWtGQmJVSXNSVUZEYmtJc1YwRkJWeXhGUVVOWUxFMUJRVTBzUlVGRFRqdEJRVU5CTEZkQlFWTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJaMEk3VVVGQlpDeFBRVUZQTEhsRVFVRkhMRVZCUVVVN08wRkJRMnBETEZGQlFVa3NZVUZCWVN4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVNelFpeFJRVU5GTEUxQlFVMHNTVUZEVGl4UFFVRlBMRWxCUVVrc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVU53UWl4RlFVRkZMRTlCUVU4c1MwRkJTeXhUUVVGVExFTkJRVU1zVjBGQlZ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVUVzUVVGQlF5eEZRVU14UkR0QlFVTkJMRzFDUVVGaExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRE1VTTdPMEZCUlVRc1YwRkJUeXhGUVVGRkxFTkJRMUFzVTBGQlV5eEZRVU5VTEU5QlFVOHNSVUZEVUN4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVOcVFpeFRRVUZUTEVOQlFVTXNVVUZCVVN4RlFVTnNRaXhQUVVGUExFTkJRVU1zU1VGQlNTeEpRVUZKTEVsQlFVa3NSVUZEY0VJc1YwRkJWeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGRGVFUXNZVUZCWVN4RFFVTmtMRU5CUVVNN1IwRkRTRHM3UVVGRlJDeE5RVUZKTEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXpzN1FVRkZla1VzVFVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRha0lzVFVGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEZUVNc1RVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eHRRa0ZCYlVJc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE5VTXNVMEZCVHl4SlFVRkpMRU5CUVVNN1EwRkRZanM3T3pzN08wRkJTMDBzVTBGQlV5eGpRVUZqTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVU3UVVGRGVFUXNUVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVOYUxGRkJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NTMEZCU3l4blFrRkJaMElzUlVGQlJUdEJRVU55UXl4aFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0TFFVTjZReXhOUVVGTk8wRkJRMHdzWVVGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6RkRPMGRCUTBZc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVU3TzBGQlJYcERMRmRCUVU4c1EwRkJReXhKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETzBGQlEzWkNMRmRCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGRCUTNKRE8wRkJRMFFzVTBGQlR5eFBRVUZQTEVOQlFVTTdRMEZEYUVJN08wRkJSVTBzVTBGQlV5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVU3TzBGQlJYWkVMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1NVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMEZCUXpGRkxGTkJRVThzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTNaQ0xFMUJRVWtzVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlR0QlFVTm1MRmRCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNN1IwRkRka1U3TzBGQlJVUXNUVUZCU1N4WlFVRlpMRmxCUVVFc1EwRkJRenRCUVVOcVFpeE5RVUZKTEU5QlFVOHNRMEZCUXl4RlFVRkZMRWxCUVVrc1QwRkJUeXhEUVVGRExFVkJRVVVzUzBGQlN5eEpRVUZKTEVWQlFVVTdPMEZCUTNKRExHRkJRVThzUTBGQlF5eEpRVUZKTEVkQlFVY3NhMEpCUVZrc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVjZReXhWUVVGSkxFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPMEZCUTNCQ0xHdENRVUZaTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eFRRVUZUTEcxQ1FVRnRRaXhEUVVONlJTeFBRVUZQTEVWQlJWQTdXVUZFUVN4UFFVRlBMSGxFUVVGSExFVkJRVVU3T3pzN1FVRkpXaXhsUVVGUExFTkJRVU1zU1VGQlNTeEhRVUZITEd0Q1FVRlpMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU42UXl4bFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRE8wRkJRM0JFTEdWQlFVOHNSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFBRVU0zUWl4RFFVRkRPMEZCUTBZc1ZVRkJTU3hGUVVGRkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEyWXNaVUZCVHl4RFFVRkRMRkZCUVZFc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTndSVHM3UjBGRFJqczdRVUZGUkN4TlFVRkpMRTlCUVU4c1MwRkJTeXhUUVVGVExFbEJRVWtzV1VGQldTeEZRVUZGTzBGQlEzcERMRmRCUVU4c1IwRkJSeXhaUVVGWkxFTkJRVU03UjBGRGVFSTdPMEZCUlVRc1RVRkJTU3hQUVVGUExFdEJRVXNzVTBGQlV5eEZRVUZGTzBGQlEzcENMRlZCUVUwc01rSkJRV01zWTBGQll5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXp0SFFVTTFSU3hOUVVGTkxFbEJRVWtzVDBGQlR5eFpRVUZaTEZGQlFWRXNSVUZCUlR0QlFVTjBReXhYUVVGUExFOUJRVThzUTBGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1IwRkRiRU03UTBGRFJqczdRVUZGVFN4VFFVRlRMRWxCUVVrc1IwRkJSenRCUVVOeVFpeFRRVUZQTEVWQlFVVXNRMEZCUXp0RFFVTllPenRCUVVWRUxGTkJRVk1zVVVGQlVTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRVZCUVVVN1FVRkRMMElzVFVGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RlFVRkZMRTFCUVUwc1NVRkJTU3hKUVVGSkxFTkJRVUVzUVVGQlF5eEZRVUZGTzBGQlF6bENMRkZCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzYTBKQlFWa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0pETEZGQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1QwRkJUeXhEUVVGRE8wZEJRM0pDTzBGQlEwUXNVMEZCVHl4SlFVRkpMRU5CUVVNN1EwRkRZanM3UVVGRlJDeFRRVUZUTEdsQ1FVRnBRaXhEUVVGRExFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5eEZRVUZGTzBGQlEzcEZMRTFCUVVrc1JVRkJSU3hEUVVGRExGTkJRVk1zUlVGQlJUdEJRVU5vUWl4UlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRFppeFJRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkRha0lzU1VGQlNTeEZRVU5LTEV0QlFVc3NSVUZEVEN4VFFVRlRMRVZCUTFRc1RVRkJUU3hKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZEYmtJc1NVRkJTU3hGUVVOS0xGZEJRVmNzUlVGRFdDeE5RVUZOTEVOQlExQXNRMEZCUXp0QlFVTkdMRk5CUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMGRCUXpOQ08wRkJRMFFzVTBGQlR5eEpRVUZKTEVOQlFVTTdRMEZEWWpzN1FVRkZSQ3hUUVVGVExDdENRVUVyUWl4RFFVRkRMR0ZCUVdFc1JVRkJSU3hUUVVGVExFVkJRVVU3UVVGRGFrVXNVVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4VlFVRlZMRVZCUVVrN1FVRkRMME1zVVVGQlNTeE5RVUZOTEVkQlFVY3NZVUZCWVN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRM1pETEdsQ1FVRmhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1RVRkJUU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBkQlEzcEZMRU5CUVVNc1EwRkJRenREUVVOS096dEJRVVZFTEZOQlFWTXNkMEpCUVhkQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEZOQlFWTXNSVUZCUlR0QlFVTnVSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eFRRVUZUTEVOQlFVTXNZMEZCWXl4RFFVRkRPMEZCUTJoRUxGTkJRVThzSzBKQlFWY3NUVUZCVFN4RlFVRkZMRlZCUVVFc1QwRkJUeXhGUVVGSk8wRkJRMjVETEZkQlFVOHNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxHTkJRV01zUlVGQlpDeGpRVUZqTEVWQlFVVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRIUVVOc1JDeERRVUZETEVOQlFVTTdRMEZEU2lJc0ltWnBiR1VpT2lKeWRXNTBhVzFsTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElDb2dZWE1nVlhScGJITWdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNXBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dlpYaGpaWEIwYVc5dUp6dGNibWx0Y0c5eWRDQjdYRzRnSUVOUFRWQkpURVZTWDFKRlZrbFRTVTlPTEZ4dUlDQmpjbVZoZEdWR2NtRnRaU3hjYmlBZ1RFRlRWRjlEVDAxUVFWUkpRa3hGWDBOUFRWQkpURVZTWDFKRlZrbFRTVTlPTEZ4dUlDQlNSVlpKVTBsUFRsOURTRUZPUjBWVFhHNTlJR1p5YjIwZ0p5NHZZbUZ6WlNjN1hHNXBiWEJ2Y25RZ2V5QnRiM1psU0dWc2NHVnlWRzlJYjI5cmN5QjlJR1p5YjIwZ0p5NHZhR1ZzY0dWeWN5YzdYRzVwYlhCdmNuUWdleUIzY21Gd1NHVnNjR1Z5SUgwZ1puSnZiU0FuTGk5cGJuUmxjbTVoYkM5M2NtRndTR1ZzY0dWeUp6dGNibWx0Y0c5eWRDQjdYRzRnSUdOeVpXRjBaVkJ5YjNSdlFXTmpaWE56UTI5dWRISnZiQ3hjYmlBZ2NtVnpkV3gwU1hOQmJHeHZkMlZrWEc1OUlHWnliMjBnSnk0dmFXNTBaWEp1WVd3dmNISnZkRzh0WVdOalpYTnpKenRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOb1pXTnJVbVYyYVhOcGIyNG9ZMjl0Y0dsc1pYSkpibVp2S1NCN1hHNGdJR052Ym5OMElHTnZiWEJwYkdWeVVtVjJhWE5wYjI0Z1BTQW9ZMjl0Y0dsc1pYSkpibVp2SUNZbUlHTnZiWEJwYkdWeVNXNW1iMXN3WFNrZ2ZId2dNU3hjYmlBZ0lDQmpkWEp5Wlc1MFVtVjJhWE5wYjI0Z1BTQkRUMDFRU1V4RlVsOVNSVlpKVTBsUFRqdGNibHh1SUNCcFppQW9YRzRnSUNBZ1kyOXRjR2xzWlhKU1pYWnBjMmx2YmlBK1BTQk1RVk5VWDBOUFRWQkJWRWxDVEVWZlEwOU5VRWxNUlZKZlVrVldTVk5KVDA0Z0ppWmNiaUFnSUNCamIyMXdhV3hsY2xKbGRtbHphVzl1SUR3OUlFTlBUVkJKVEVWU1gxSkZWa2xUU1U5T1hHNGdJQ2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dVhHNGdJR2xtSUNoamIyMXdhV3hsY2xKbGRtbHphVzl1SUR3Z1RFRlRWRjlEVDAxUVFWUkpRa3hGWDBOUFRWQkpURVZTWDFKRlZrbFRTVTlPS1NCN1hHNGdJQ0FnWTI5dWMzUWdjblZ1ZEdsdFpWWmxjbk5wYjI1eklEMGdVa1ZXU1ZOSlQwNWZRMGhCVGtkRlUxdGpkWEp5Wlc1MFVtVjJhWE5wYjI1ZExGeHVJQ0FnSUNBZ1kyOXRjR2xzWlhKV1pYSnphVzl1Y3lBOUlGSkZWa2xUU1U5T1gwTklRVTVIUlZOYlkyOXRjR2xzWlhKU1pYWnBjMmx2YmwwN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVWNFkyVndkR2x2YmloY2JpQWdJQ0FnSUNkVVpXMXdiR0YwWlNCM1lYTWdjSEpsWTI5dGNHbHNaV1FnZDJsMGFDQmhiaUJ2YkdSbGNpQjJaWEp6YVc5dUlHOW1JRWhoYm1Sc1pXSmhjbk1nZEdoaGJpQjBhR1VnWTNWeWNtVnVkQ0J5ZFc1MGFXMWxMaUFuSUN0Y2JpQWdJQ0FnSUNBZ0oxQnNaV0Z6WlNCMWNHUmhkR1VnZVc5MWNpQndjbVZqYjIxd2FXeGxjaUIwYnlCaElHNWxkMlZ5SUhabGNuTnBiMjRnS0NjZ0sxeHVJQ0FnSUNBZ0lDQnlkVzUwYVcxbFZtVnljMmx2Ym5NZ0sxeHVJQ0FnSUNBZ0lDQW5LU0J2Y2lCa2IzZHVaM0poWkdVZ2VXOTFjaUJ5ZFc1MGFXMWxJSFJ2SUdGdUlHOXNaR1Z5SUhabGNuTnBiMjRnS0NjZ0sxeHVJQ0FnSUNBZ0lDQmpiMjF3YVd4bGNsWmxjbk5wYjI1eklDdGNiaUFnSUNBZ0lDQWdKeWt1SjF4dUlDQWdJQ2s3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnTHk4Z1ZYTmxJSFJvWlNCbGJXSmxaR1JsWkNCMlpYSnphVzl1SUdsdVptOGdjMmx1WTJVZ2RHaGxJSEoxYm5ScGJXVWdaRzlsYzI0bmRDQnJibTkzSUdGaWIzVjBJSFJvYVhNZ2NtVjJhWE5wYjI0Z2VXVjBYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpaGNiaUFnSUNBZ0lDZFVaVzF3YkdGMFpTQjNZWE1nY0hKbFkyOXRjR2xzWldRZ2QybDBhQ0JoSUc1bGQyVnlJSFpsY25OcGIyNGdiMllnU0dGdVpHeGxZbUZ5Y3lCMGFHRnVJSFJvWlNCamRYSnlaVzUwSUhKMWJuUnBiV1V1SUNjZ0sxeHVJQ0FnSUNBZ0lDQW5VR3hsWVhObElIVndaR0YwWlNCNWIzVnlJSEoxYm5ScGJXVWdkRzhnWVNCdVpYZGxjaUIyWlhKemFXOXVJQ2duSUN0Y2JpQWdJQ0FnSUNBZ1kyOXRjR2xzWlhKSmJtWnZXekZkSUN0Y2JpQWdJQ0FnSUNBZ0p5a3VKMXh1SUNBZ0lDazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFJsYlhCc1lYUmxLSFJsYlhCc1lYUmxVM0JsWXl3Z1pXNTJLU0I3WEc0Z0lDOHFJR2x6ZEdGdVluVnNJR2xuYm05eVpTQnVaWGgwSUNvdlhHNGdJR2xtSUNnaFpXNTJLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduVG04Z1pXNTJhWEp2Ym0xbGJuUWdjR0Z6YzJWa0lIUnZJSFJsYlhCc1lYUmxKeWs3WEc0Z0lIMWNiaUFnYVdZZ0tDRjBaVzF3YkdGMFpWTndaV01nZkh3Z0lYUmxiWEJzWVhSbFUzQmxZeTV0WVdsdUtTQjdYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25WVzVyYm05M2JpQjBaVzF3YkdGMFpTQnZZbXBsWTNRNklDY2dLeUIwZVhCbGIyWWdkR1Z0Y0d4aGRHVlRjR1ZqS1R0Y2JpQWdmVnh1WEc0Z0lIUmxiWEJzWVhSbFUzQmxZeTV0WVdsdUxtUmxZMjl5WVhSdmNpQTlJSFJsYlhCc1lYUmxVM0JsWXk1dFlXbHVYMlE3WEc1Y2JpQWdMeThnVG05MFpUb2dWWE5wYm1jZ1pXNTJMbFpOSUhKbFptVnlaVzVqWlhNZ2NtRjBhR1Z5SUhSb1lXNGdiRzlqWVd3Z2RtRnlJSEpsWm1WeVpXNWpaWE1nZEdoeWIzVm5hRzkxZENCMGFHbHpJSE5sWTNScGIyNGdkRzhnWVd4c2IzZGNiaUFnTHk4Z1ptOXlJR1Y0ZEdWeWJtRnNJSFZ6WlhKeklIUnZJRzkyWlhKeWFXUmxJSFJvWlhObElHRnpJSEJ6WlhWa2J5MXpkWEJ3YjNKMFpXUWdRVkJKY3k1Y2JpQWdaVzUyTGxaTkxtTm9aV05yVW1WMmFYTnBiMjRvZEdWdGNHeGhkR1ZUY0dWakxtTnZiWEJwYkdWeUtUdGNibHh1SUNBdkx5QmlZV05yZDJGeVpITWdZMjl0Y0dGMGFXSnBiR2wwZVNCbWIzSWdjSEpsWTI5dGNHbHNaV1FnZEdWdGNHeGhkR1Z6SUhkcGRHZ2dZMjl0Y0dsc1pYSXRkbVZ5YzJsdmJpQTNJQ2c4TkM0ekxqQXBYRzRnSUdOdmJuTjBJSFJsYlhCc1lYUmxWMkZ6VUhKbFkyOXRjR2xzWldSWGFYUm9RMjl0Y0dsc1pYSldOeUE5WEc0Z0lDQWdkR1Z0Y0d4aGRHVlRjR1ZqTG1OdmJYQnBiR1Z5SUNZbUlIUmxiWEJzWVhSbFUzQmxZeTVqYjIxd2FXeGxjbHN3WFNBOVBUMGdOenRjYmx4dUlDQm1kVzVqZEdsdmJpQnBiblp2YTJWUVlYSjBhV0ZzVjNKaGNIQmxjaWh3WVhKMGFXRnNMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11YUdGemFDa2dlMXh1SUNBZ0lDQWdZMjl1ZEdWNGRDQTlJRlYwYVd4ekxtVjRkR1Z1WkNoN2ZTd2dZMjl1ZEdWNGRDd2diM0IwYVc5dWN5NW9ZWE5vS1R0Y2JpQWdJQ0FnSUdsbUlDaHZjSFJwYjI1ekxtbGtjeWtnZTF4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6TG1sa2Mxc3dYU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhCaGNuUnBZV3dnUFNCbGJuWXVWazB1Y21WemIyeDJaVkJoY25ScFlXd3VZMkZzYkNoMGFHbHpMQ0J3WVhKMGFXRnNMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLVHRjYmx4dUlDQWdJR3hsZENCbGVIUmxibVJsWkU5d2RHbHZibk1nUFNCVmRHbHNjeTVsZUhSbGJtUW9lMzBzSUc5d2RHbHZibk1zSUh0Y2JpQWdJQ0FnSUdodmIydHpPaUIwYUdsekxtaHZiMnR6TEZ4dUlDQWdJQ0FnY0hKdmRHOUJZMk5sYzNORGIyNTBjbTlzT2lCMGFHbHpMbkJ5YjNSdlFXTmpaWE56UTI5dWRISnZiRnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdiR1YwSUhKbGMzVnNkQ0E5SUdWdWRpNVdUUzVwYm5admEyVlFZWEowYVdGc0xtTmhiR3dvWEc0Z0lDQWdJQ0IwYUdsekxGeHVJQ0FnSUNBZ2NHRnlkR2xoYkN4Y2JpQWdJQ0FnSUdOdmJuUmxlSFFzWEc0Z0lDQWdJQ0JsZUhSbGJtUmxaRTl3ZEdsdmJuTmNiaUFnSUNBcE8xeHVYRzRnSUNBZ2FXWWdLSEpsYzNWc2RDQTlQU0J1ZFd4c0lDWW1JR1Z1ZGk1amIyMXdhV3hsS1NCN1hHNGdJQ0FnSUNCdmNIUnBiMjV6TG5CaGNuUnBZV3h6VzI5d2RHbHZibk11Ym1GdFpWMGdQU0JsYm5ZdVkyOXRjR2xzWlNoY2JpQWdJQ0FnSUNBZ2NHRnlkR2xoYkN4Y2JpQWdJQ0FnSUNBZ2RHVnRjR3hoZEdWVGNHVmpMbU52YlhCcGJHVnlUM0IwYVc5dWN5eGNiaUFnSUNBZ0lDQWdaVzUyWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnY21WemRXeDBJRDBnYjNCMGFXOXVjeTV3WVhKMGFXRnNjMXR2Y0hScGIyNXpMbTVoYldWZEtHTnZiblJsZUhRc0lHVjRkR1Z1WkdWa1QzQjBhVzl1Y3lrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoeVpYTjFiSFFnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tHOXdkR2x2Ym5NdWFXNWtaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JzYVc1bGN5QTlJSEpsYzNWc2RDNXpjR3hwZENnblhGeHVKeWs3WEc0Z0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzSUQwZ2JHbHVaWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NGc2FXNWxjMXRwWFNBbUppQnBJQ3NnTVNBOVBUMGdiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ2JHbHVaWE5iYVYwZ1BTQnZjSFJwYjI1ekxtbHVaR1Z1ZENBcklHeHBibVZ6VzJsZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsYzNWc2RDQTlJR3hwYm1WekxtcHZhVzRvSjF4Y2JpY3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWhjYmlBZ0lDQWdJQ0FnSjFSb1pTQndZWEowYVdGc0lDY2dLMXh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk11Ym1GdFpTQXJYRzRnSUNBZ0lDQWdJQ0FnSnlCamIzVnNaQ0J1YjNRZ1ltVWdZMjl0Y0dsc1pXUWdkMmhsYmlCeWRXNXVhVzVuSUdsdUlISjFiblJwYldVdGIyNXNlU0J0YjJSbEoxeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZMeUJLZFhOMElHRmtaQ0IzWVhSbGNseHVJQ0JzWlhRZ1kyOXVkR0ZwYm1WeUlEMGdlMXh1SUNBZ0lITjBjbWxqZERvZ1puVnVZM1JwYjI0b2IySnFMQ0J1WVcxbExDQnNiMk1wSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hiMkpxSUh4OElDRW9ibUZ0WlNCcGJpQnZZbW9wS1NCN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMXdpSnlBcklHNWhiV1VnS3lBblhDSWdibTkwSUdSbFptbHVaV1FnYVc0Z0p5QXJJRzlpYWl3Z2UxeHVJQ0FnSUNBZ0lDQWdJR3h2WXpvZ2JHOWpYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJRzlpYWx0dVlXMWxYVHRjYmlBZ0lDQjlMRnh1SUNBZ0lHeHZiMnQxY0ZCeWIzQmxjblI1T2lCbWRXNWpkR2x2Ymlod1lYSmxiblFzSUhCeWIzQmxjblI1VG1GdFpTa2dlMXh1SUNBZ0lDQWdiR1YwSUhKbGMzVnNkQ0E5SUhCaGNtVnVkRnR3Y205d1pYSjBlVTVoYldWZE8xeHVJQ0FnSUNBZ2FXWWdLSEpsYzNWc2RDQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLSEJoY21WdWRDd2djSEp2Y0dWeWRIbE9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jbVZ6ZFd4MFNYTkJiR3h2ZDJWa0tISmxjM1ZzZEN3Z1kyOXVkR0ZwYm1WeUxuQnliM1J2UVdOalpYTnpRMjl1ZEhKdmJDd2djSEp2Y0dWeWRIbE9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlMRnh1SUNBZ0lHeHZiMnQxY0RvZ1puVnVZM1JwYjI0b1pHVndkR2h6TENCdVlXMWxLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnNaVzRnUFNCa1pYQjBhSE11YkdWdVozUm9PMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNCc1pYUWdjbVZ6ZFd4MElEMGdaR1Z3ZEdoelcybGRJQ1ltSUdOdmJuUmhhVzVsY2k1c2IyOXJkWEJRY205d1pYSjBlU2hrWlhCMGFITmJhVjBzSUc1aGJXVXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHVndkR2h6VzJsZFcyNWhiV1ZkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JpQWdJQ0JzWVcxaVpHRTZJR1oxYm1OMGFXOXVLR04xY25KbGJuUXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ1kzVnljbVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUEvSUdOMWNuSmxiblF1WTJGc2JDaGpiMjUwWlhoMEtTQTZJR04xY25KbGJuUTdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lHVnpZMkZ3WlVWNGNISmxjM05wYjI0NklGVjBhV3h6TG1WelkyRndaVVY0Y0hKbGMzTnBiMjRzWEc0Z0lDQWdhVzUyYjJ0bFVHRnlkR2xoYkRvZ2FXNTJiMnRsVUdGeWRHbGhiRmR5WVhCd1pYSXNYRzVjYmlBZ0lDQm1iam9nWm5WdVkzUnBiMjRvYVNrZ2UxeHVJQ0FnSUNBZ2JHVjBJSEpsZENBOUlIUmxiWEJzWVhSbFUzQmxZMXRwWFR0Y2JpQWdJQ0FnSUhKbGRDNWtaV052Y21GMGIzSWdQU0IwWlcxd2JHRjBaVk53WldOYmFTQXJJQ2RmWkNkZE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ2NISnZaM0poYlhNNklGdGRMRnh1SUNBZ0lIQnliMmR5WVcwNklHWjFibU4wYVc5dUtHa3NJR1JoZEdFc0lHUmxZMnhoY21Wa1FteHZZMnRRWVhKaGJYTXNJR0pzYjJOclVHRnlZVzF6TENCa1pYQjBhSE1wSUh0Y2JpQWdJQ0FnSUd4bGRDQndjbTluY21GdFYzSmhjSEJsY2lBOUlIUm9hWE11Y0hKdlozSmhiWE5iYVYwc1hHNGdJQ0FnSUNBZ0lHWnVJRDBnZEdocGN5NW1iaWhwS1R0Y2JpQWdJQ0FnSUdsbUlDaGtZWFJoSUh4OElHUmxjSFJvY3lCOGZDQmliRzlqYTFCaGNtRnRjeUI4ZkNCa1pXTnNZWEpsWkVKc2IyTnJVR0Z5WVcxektTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJkeVlXMVhjbUZ3Y0dWeUlEMGdkM0poY0ZCeWIyZHlZVzBvWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeXhjYmlBZ0lDQWdJQ0FnSUNCcExGeHVJQ0FnSUNBZ0lDQWdJR1p1TEZ4dUlDQWdJQ0FnSUNBZ0lHUmhkR0VzWEc0Z0lDQWdJQ0FnSUNBZ1pHVmpiR0Z5WldSQ2JHOWphMUJoY21GdGN5eGNiaUFnSUNBZ0lDQWdJQ0JpYkc5amExQmhjbUZ0Y3l4Y2JpQWdJQ0FnSUNBZ0lDQmtaWEIwYUhOY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9JWEJ5YjJkeVlXMVhjbUZ3Y0dWeUtTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJkeVlXMVhjbUZ3Y0dWeUlEMGdkR2hwY3k1d2NtOW5jbUZ0YzF0cFhTQTlJSGR5WVhCUWNtOW5jbUZ0S0hSb2FYTXNJR2tzSUdadUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCd2NtOW5jbUZ0VjNKaGNIQmxjanRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdaR0YwWVRvZ1puVnVZM1JwYjI0b2RtRnNkV1VzSUdSbGNIUm9LU0I3WEc0Z0lDQWdJQ0IzYUdsc1pTQW9kbUZzZFdVZ0ppWWdaR1Z3ZEdndExTa2dlMXh1SUNBZ0lDQWdJQ0IyWVd4MVpTQTlJSFpoYkhWbExsOXdZWEpsYm5RN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVTdYRzRnSUNBZ2ZTeGNiaUFnSUNCdFpYSm5aVWxtVG1WbFpHVmtPaUJtZFc1amRHbHZiaWh3WVhKaGJTd2dZMjl0Ylc5dUtTQjdYRzRnSUNBZ0lDQnNaWFFnYjJKcUlEMGdjR0Z5WVcwZ2ZId2dZMjl0Ylc5dU8xeHVYRzRnSUNBZ0lDQnBaaUFvY0dGeVlXMGdKaVlnWTI5dGJXOXVJQ1ltSUhCaGNtRnRJQ0U5UFNCamIyMXRiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2IySnFJRDBnVlhScGJITXVaWGgwWlc1a0tIdDlMQ0JqYjIxdGIyNHNJSEJoY21GdEtUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbVYwZFhKdUlHOWlhanRjYmlBZ0lDQjlMRnh1SUNBZ0lDOHZJRUZ1SUdWdGNIUjVJRzlpYW1WamRDQjBieUIxYzJVZ1lYTWdjbVZ3YkdGalpXMWxiblFnWm05eUlHNTFiR3d0WTI5dWRHVjRkSE5jYmlBZ0lDQnVkV3hzUTI5dWRHVjRkRG9nVDJKcVpXTjBMbk5sWVd3b2UzMHBMRnh1WEc0Z0lDQWdibTl2Y0RvZ1pXNTJMbFpOTG01dmIzQXNYRzRnSUNBZ1kyOXRjR2xzWlhKSmJtWnZPaUIwWlcxd2JHRjBaVk53WldNdVkyOXRjR2xzWlhKY2JpQWdmVHRjYmx4dUlDQm1kVzVqZEdsdmJpQnlaWFFvWTI5dWRHVjRkQ3dnYjNCMGFXOXVjeUE5SUh0OUtTQjdYRzRnSUNBZ2JHVjBJR1JoZEdFZ1BTQnZjSFJwYjI1ekxtUmhkR0U3WEc1Y2JpQWdJQ0J5WlhRdVgzTmxkSFZ3S0c5d2RHbHZibk1wTzF4dUlDQWdJR2xtSUNnaGIzQjBhVzl1Y3k1d1lYSjBhV0ZzSUNZbUlIUmxiWEJzWVhSbFUzQmxZeTUxYzJWRVlYUmhLU0I3WEc0Z0lDQWdJQ0JrWVhSaElEMGdhVzVwZEVSaGRHRW9ZMjl1ZEdWNGRDd2daR0YwWVNrN1hHNGdJQ0FnZlZ4dUlDQWdJR3hsZENCa1pYQjBhSE1zWEc0Z0lDQWdJQ0JpYkc5amExQmhjbUZ0Y3lBOUlIUmxiWEJzWVhSbFUzQmxZeTUxYzJWQ2JHOWphMUJoY21GdGN5QS9JRnRkSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDaDBaVzF3YkdGMFpWTndaV011ZFhObFJHVndkR2h6S1NCN1hHNGdJQ0FnSUNCcFppQW9iM0IwYVc5dWN5NWtaWEIwYUhNcElIdGNiaUFnSUNBZ0lDQWdaR1Z3ZEdoeklEMWNiaUFnSUNBZ0lDQWdJQ0JqYjI1MFpYaDBJQ0U5SUc5d2RHbHZibk11WkdWd2RHaHpXekJkWEc0Z0lDQWdJQ0FnSUNBZ0lDQS9JRnRqYjI1MFpYaDBYUzVqYjI1allYUW9iM0IwYVc5dWN5NWtaWEIwYUhNcFhHNGdJQ0FnSUNBZ0lDQWdJQ0E2SUc5d2RHbHZibk11WkdWd2RHaHpPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdaR1Z3ZEdoeklEMGdXMk52Ym5SbGVIUmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHWjFibU4wYVc5dUlHMWhhVzRvWTI5dWRHVjRkQ0F2S2l3Z2IzQjBhVzl1Y3lvdktTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0tGeHVJQ0FnSUNBZ0lDQW5KeUFyWEc0Z0lDQWdJQ0FnSUhSbGJYQnNZWFJsVTNCbFl5NXRZV2x1S0Z4dUlDQWdJQ0FnSUNBZ0lHTnZiblJoYVc1bGNpeGNiaUFnSUNBZ0lDQWdJQ0JqYjI1MFpYaDBMRnh1SUNBZ0lDQWdJQ0FnSUdOdmJuUmhhVzVsY2k1b1pXeHdaWEp6TEZ4dUlDQWdJQ0FnSUNBZ0lHTnZiblJoYVc1bGNpNXdZWEowYVdGc2N5eGNiaUFnSUNBZ0lDQWdJQ0JrWVhSaExGeHVJQ0FnSUNBZ0lDQWdJR0pzYjJOclVHRnlZVzF6TEZ4dUlDQWdJQ0FnSUNBZ0lHUmxjSFJvYzF4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUcxaGFXNGdQU0JsZUdWamRYUmxSR1ZqYjNKaGRHOXljeWhjYmlBZ0lDQWdJSFJsYlhCc1lYUmxVM0JsWXk1dFlXbHVMRnh1SUNBZ0lDQWdiV0ZwYml4Y2JpQWdJQ0FnSUdOdmJuUmhhVzVsY2l4Y2JpQWdJQ0FnSUc5d2RHbHZibk11WkdWd2RHaHpJSHg4SUZ0ZExGeHVJQ0FnSUNBZ1pHRjBZU3hjYmlBZ0lDQWdJR0pzYjJOclVHRnlZVzF6WEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z2JXRnBiaWhqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRDNXBjMVJ2Y0NBOUlIUnlkV1U3WEc1Y2JpQWdjbVYwTGw5elpYUjFjQ0E5SUdaMWJtTjBhVzl1S0c5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb0lXOXdkR2x2Ym5NdWNHRnlkR2xoYkNrZ2UxeHVJQ0FnSUNBZ2JHVjBJRzFsY21kbFpFaGxiSEJsY25NZ1BTQlZkR2xzY3k1bGVIUmxibVFvZTMwc0lHVnVkaTVvWld4d1pYSnpMQ0J2Y0hScGIyNXpMbWhsYkhCbGNuTXBPMXh1SUNBZ0lDQWdkM0poY0VobGJIQmxjbk5VYjFCaGMzTk1iMjlyZFhCUWNtOXdaWEowZVNodFpYSm5aV1JJWld4d1pYSnpMQ0JqYjI1MFlXbHVaWElwTzF4dUlDQWdJQ0FnWTI5dWRHRnBibVZ5TG1obGJIQmxjbk1nUFNCdFpYSm5aV1JJWld4d1pYSnpPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RHVnRjR3hoZEdWVGNHVmpMblZ6WlZCaGNuUnBZV3dwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdWWE5sSUcxbGNtZGxTV1pPWldWa1pXUWdhR1Z5WlNCMGJ5QndjbVYyWlc1MElHTnZiWEJwYkdsdVp5Qm5iRzlpWVd3Z2NHRnlkR2xoYkhNZ2JYVnNkR2x3YkdVZ2RHbHRaWE5jYmlBZ0lDQWdJQ0FnWTI5dWRHRnBibVZ5TG5CaGNuUnBZV3h6SUQwZ1kyOXVkR0ZwYm1WeUxtMWxjbWRsU1daT1pXVmtaV1FvWEc0Z0lDQWdJQ0FnSUNBZ2IzQjBhVzl1Y3k1d1lYSjBhV0ZzY3l4Y2JpQWdJQ0FnSUNBZ0lDQmxibll1Y0dGeWRHbGhiSE5jYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBaVzF3YkdGMFpWTndaV011ZFhObFVHRnlkR2xoYkNCOGZDQjBaVzF3YkdGMFpWTndaV011ZFhObFJHVmpiM0poZEc5eWN5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MFlXbHVaWEl1WkdWamIzSmhkRzl5Y3lBOUlGVjBhV3h6TG1WNGRHVnVaQ2hjYmlBZ0lDQWdJQ0FnSUNCN2ZTeGNiaUFnSUNBZ0lDQWdJQ0JsYm5ZdVpHVmpiM0poZEc5eWN5eGNiaUFnSUNBZ0lDQWdJQ0J2Y0hScGIyNXpMbVJsWTI5eVlYUnZjbk5jYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1kyOXVkR0ZwYm1WeUxtaHZiMnR6SUQwZ2UzMDdYRzRnSUNBZ0lDQmpiMjUwWVdsdVpYSXVjSEp2ZEc5QlkyTmxjM05EYjI1MGNtOXNJRDBnWTNKbFlYUmxVSEp2ZEc5QlkyTmxjM05EYjI1MGNtOXNLRzl3ZEdsdmJuTXBPMXh1WEc0Z0lDQWdJQ0JzWlhRZ2EyVmxjRWhsYkhCbGNrbHVTR1ZzY0dWeWN5QTlYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTXVZV3hzYjNkRFlXeHNjMVJ2U0dWc2NHVnlUV2x6YzJsdVp5QjhmRnh1SUNBZ0lDQWdJQ0IwWlcxd2JHRjBaVmRoYzFCeVpXTnZiWEJwYkdWa1YybDBhRU52YlhCcGJHVnlWamM3WEc0Z0lDQWdJQ0J0YjNabFNHVnNjR1Z5Vkc5SWIyOXJjeWhqYjI1MFlXbHVaWElzSUNkb1pXeHdaWEpOYVhOemFXNW5KeXdnYTJWbGNFaGxiSEJsY2tsdVNHVnNjR1Z5Y3lrN1hHNGdJQ0FnSUNCdGIzWmxTR1ZzY0dWeVZHOUliMjlyY3loamIyNTBZV2x1WlhJc0lDZGliRzlqYTBobGJIQmxjazFwYzNOcGJtY25MQ0JyWldWd1NHVnNjR1Z5U1c1SVpXeHdaWEp6S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMjl1ZEdGcGJtVnlMbkJ5YjNSdlFXTmpaWE56UTI5dWRISnZiQ0E5SUc5d2RHbHZibk11Y0hKdmRHOUJZMk5sYzNORGIyNTBjbTlzT3lBdkx5QnBiblJsY201aGJDQnZjSFJwYjI1Y2JpQWdJQ0FnSUdOdmJuUmhhVzVsY2k1b1pXeHdaWEp6SUQwZ2IzQjBhVzl1Y3k1b1pXeHdaWEp6TzF4dUlDQWdJQ0FnWTI5dWRHRnBibVZ5TG5CaGNuUnBZV3h6SUQwZ2IzQjBhVzl1Y3k1d1lYSjBhV0ZzY3p0Y2JpQWdJQ0FnSUdOdmJuUmhhVzVsY2k1a1pXTnZjbUYwYjNKeklEMGdiM0IwYVc5dWN5NWtaV052Y21GMGIzSnpPMXh1SUNBZ0lDQWdZMjl1ZEdGcGJtVnlMbWh2YjJ0eklEMGdiM0IwYVc5dWN5NW9iMjlyY3p0Y2JpQWdJQ0I5WEc0Z0lIMDdYRzVjYmlBZ2NtVjBMbDlqYUdsc1pDQTlJR1oxYm1OMGFXOXVLR2tzSUdSaGRHRXNJR0pzYjJOclVHRnlZVzF6TENCa1pYQjBhSE1wSUh0Y2JpQWdJQ0JwWmlBb2RHVnRjR3hoZEdWVGNHVmpMblZ6WlVKc2IyTnJVR0Z5WVcxeklDWW1JQ0ZpYkc5amExQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25iWFZ6ZENCd1lYTnpJR0pzYjJOcklIQmhjbUZ0Y3ljcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RHVnRjR3hoZEdWVGNHVmpMblZ6WlVSbGNIUm9jeUFtSmlBaFpHVndkR2h6S1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZHRkWE4wSUhCaGMzTWdjR0Z5Wlc1MElHUmxjSFJvY3ljcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIzY21Gd1VISnZaM0poYlNoY2JpQWdJQ0FnSUdOdmJuUmhhVzVsY2l4Y2JpQWdJQ0FnSUdrc1hHNGdJQ0FnSUNCMFpXMXdiR0YwWlZOd1pXTmJhVjBzWEc0Z0lDQWdJQ0JrWVhSaExGeHVJQ0FnSUNBZ01DeGNiaUFnSUNBZ0lHSnNiMk5yVUdGeVlXMXpMRnh1SUNBZ0lDQWdaR1Z3ZEdoelhHNGdJQ0FnS1R0Y2JpQWdmVHRjYmlBZ2NtVjBkWEp1SUhKbGREdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhkeVlYQlFjbTluY21GdEtGeHVJQ0JqYjI1MFlXbHVaWElzWEc0Z0lHa3NYRzRnSUdadUxGeHVJQ0JrWVhSaExGeHVJQ0JrWldOc1lYSmxaRUpzYjJOclVHRnlZVzF6TEZ4dUlDQmliRzlqYTFCaGNtRnRjeXhjYmlBZ1pHVndkR2h6WEc0cElIdGNiaUFnWm5WdVkzUnBiMjRnY0hKdlp5aGpiMjUwWlhoMExDQnZjSFJwYjI1eklEMGdlMzBwSUh0Y2JpQWdJQ0JzWlhRZ1kzVnljbVZ1ZEVSbGNIUm9jeUE5SUdSbGNIUm9jenRjYmlBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0JrWlhCMGFITWdKaVpjYmlBZ0lDQWdJR052Ym5SbGVIUWdJVDBnWkdWd2RHaHpXekJkSUNZbVhHNGdJQ0FnSUNBaEtHTnZiblJsZUhRZ1BUMDlJR052Ym5SaGFXNWxjaTV1ZFd4c1EyOXVkR1Y0ZENBbUppQmtaWEIwYUhOYk1GMGdQVDA5SUc1MWJHd3BYRzRnSUNBZ0tTQjdYRzRnSUNBZ0lDQmpkWEp5Wlc1MFJHVndkR2h6SUQwZ1cyTnZiblJsZUhSZExtTnZibU5oZENoa1pYQjBhSE1wTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQm1iaWhjYmlBZ0lDQWdJR052Ym5SaGFXNWxjaXhjYmlBZ0lDQWdJR052Ym5SbGVIUXNYRzRnSUNBZ0lDQmpiMjUwWVdsdVpYSXVhR1ZzY0dWeWN5eGNiaUFnSUNBZ0lHTnZiblJoYVc1bGNpNXdZWEowYVdGc2N5eGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVpHRjBZU0I4ZkNCa1lYUmhMRnh1SUNBZ0lDQWdZbXh2WTJ0UVlYSmhiWE1nSmlZZ1cyOXdkR2x2Ym5NdVlteHZZMnRRWVhKaGJYTmRMbU52Ym1OaGRDaGliRzlqYTFCaGNtRnRjeWtzWEc0Z0lDQWdJQ0JqZFhKeVpXNTBSR1Z3ZEdoelhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lIQnliMmNnUFNCbGVHVmpkWFJsUkdWamIzSmhkRzl5Y3lobWJpd2djSEp2Wnl3Z1kyOXVkR0ZwYm1WeUxDQmtaWEIwYUhNc0lHUmhkR0VzSUdKc2IyTnJVR0Z5WVcxektUdGNibHh1SUNCd2NtOW5MbkJ5YjJkeVlXMGdQU0JwTzF4dUlDQndjbTluTG1SbGNIUm9JRDBnWkdWd2RHaHpJRDhnWkdWd2RHaHpMbXhsYm1kMGFDQTZJREE3WEc0Z0lIQnliMmN1WW14dlkydFFZWEpoYlhNZ1BTQmtaV05zWVhKbFpFSnNiMk5yVUdGeVlXMXpJSHg4SURBN1hHNGdJSEpsZEhWeWJpQndjbTluTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJvYVhNZ2FYTWdZM1Z5Y21WdWRHeDVJSEJoY25RZ2IyWWdkR2hsSUc5bVptbGphV0ZzSUVGUVNTd2dkR2hsY21WbWIzSmxJR2x0Y0d4bGJXVnVkR0YwYVc5dUlHUmxkR0ZwYkhNZ2MyaHZkV3hrSUc1dmRDQmlaU0JqYUdGdVoyVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtVnpiMngyWlZCaGNuUnBZV3dvY0dGeWRHbGhiQ3dnWTI5dWRHVjRkQ3dnYjNCMGFXOXVjeWtnZTF4dUlDQnBaaUFvSVhCaGNuUnBZV3dwSUh0Y2JpQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1dVlXMWxJRDA5UFNBblFIQmhjblJwWVd3dFlteHZZMnNuS1NCN1hHNGdJQ0FnSUNCd1lYSjBhV0ZzSUQwZ2IzQjBhVzl1Y3k1a1lYUmhXeWR3WVhKMGFXRnNMV0pzYjJOckoxMDdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhCaGNuUnBZV3dnUFNCdmNIUnBiMjV6TG5CaGNuUnBZV3h6VzI5d2RHbHZibk11Ym1GdFpWMDdYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdhV1lnS0NGd1lYSjBhV0ZzTG1OaGJHd2dKaVlnSVc5d2RHbHZibk11Ym1GdFpTa2dlMXh1SUNBZ0lDOHZJRlJvYVhNZ2FYTWdZU0JrZVc1aGJXbGpJSEJoY25ScFlXd2dkR2hoZENCeVpYUjFjbTVsWkNCaElITjBjbWx1WjF4dUlDQWdJRzl3ZEdsdmJuTXVibUZ0WlNBOUlIQmhjblJwWVd3N1hHNGdJQ0FnY0dGeWRHbGhiQ0E5SUc5d2RHbHZibk11Y0dGeWRHbGhiSE5iY0dGeWRHbGhiRjA3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSEJoY25ScFlXdzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGJuWnZhMlZRWVhKMGFXRnNLSEJoY25ScFlXd3NJR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0x5OGdWWE5sSUhSb1pTQmpkWEp5Wlc1MElHTnNiM04xY21VZ1kyOXVkR1Y0ZENCMGJ5QnpZWFpsSUhSb1pTQndZWEowYVdGc0xXSnNiMk5ySUdsbUlIUm9hWE1nY0dGeWRHbGhiRnh1SUNCamIyNXpkQ0JqZFhKeVpXNTBVR0Z5ZEdsaGJFSnNiMk5ySUQwZ2IzQjBhVzl1Y3k1a1lYUmhJQ1ltSUc5d2RHbHZibk11WkdGMFlWc25jR0Z5ZEdsaGJDMWliRzlqYXlkZE8xeHVJQ0J2Y0hScGIyNXpMbkJoY25ScFlXd2dQU0IwY25WbE8xeHVJQ0JwWmlBb2IzQjBhVzl1Y3k1cFpITXBJSHRjYmlBZ0lDQnZjSFJwYjI1ekxtUmhkR0V1WTI5dWRHVjRkRkJoZEdnZ1BTQnZjSFJwYjI1ekxtbGtjMXN3WFNCOGZDQnZjSFJwYjI1ekxtUmhkR0V1WTI5dWRHVjRkRkJoZEdnN1hHNGdJSDFjYmx4dUlDQnNaWFFnY0dGeWRHbGhiRUpzYjJOck8xeHVJQ0JwWmlBb2IzQjBhVzl1Y3k1bWJpQW1KaUJ2Y0hScGIyNXpMbVp1SUNFOVBTQnViMjl3S1NCN1hHNGdJQ0FnYjNCMGFXOXVjeTVrWVhSaElEMGdZM0psWVhSbFJuSmhiV1VvYjNCMGFXOXVjeTVrWVhSaEtUdGNiaUFnSUNBdkx5QlhjbUZ3Y0dWeUlHWjFibU4wYVc5dUlIUnZJR2RsZENCaFkyTmxjM01nZEc4Z1kzVnljbVZ1ZEZCaGNuUnBZV3hDYkc5amF5Qm1jbTl0SUhSb1pTQmpiRzl6ZFhKbFhHNGdJQ0FnYkdWMElHWnVJRDBnYjNCMGFXOXVjeTVtYmp0Y2JpQWdJQ0J3WVhKMGFXRnNRbXh2WTJzZ1BTQnZjSFJwYjI1ekxtUmhkR0ZiSjNCaGNuUnBZV3d0WW14dlkyc25YU0E5SUdaMWJtTjBhVzl1SUhCaGNuUnBZV3hDYkc5amExZHlZWEJ3WlhJb1hHNGdJQ0FnSUNCamIyNTBaWGgwTEZ4dUlDQWdJQ0FnYjNCMGFXOXVjeUE5SUh0OVhHNGdJQ0FnS1NCN1hHNGdJQ0FnSUNBdkx5QlNaWE4wYjNKbElIUm9aU0J3WVhKMGFXRnNMV0pzYjJOcklHWnliMjBnZEdobElHTnNiM04xY21VZ1ptOXlJSFJvWlNCbGVHVmpkWFJwYjI0Z2IyWWdkR2hsSUdKc2IyTnJYRzRnSUNBZ0lDQXZMeUJwTG1VdUlIUm9aU0J3WVhKMElHbHVjMmxrWlNCMGFHVWdZbXh2WTJzZ2IyWWdkR2hsSUhCaGNuUnBZV3dnWTJGc2JDNWNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVpHRjBZU0E5SUdOeVpXRjBaVVp5WVcxbEtHOXdkR2x2Ym5NdVpHRjBZU2s3WEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbVJoZEdGYkozQmhjblJwWVd3dFlteHZZMnNuWFNBOUlHTjFjbkpsYm5SUVlYSjBhV0ZzUW14dlkyczdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptNG9ZMjl1ZEdWNGRDd2diM0IwYVc5dWN5azdYRzRnSUNBZ2ZUdGNiaUFnSUNCcFppQW9abTR1Y0dGeWRHbGhiSE1wSUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk11Y0dGeWRHbGhiSE1nUFNCVmRHbHNjeTVsZUhSbGJtUW9lMzBzSUc5d2RHbHZibk11Y0dGeWRHbGhiSE1zSUdadUxuQmhjblJwWVd4ektUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnBaaUFvY0dGeWRHbGhiQ0E5UFQwZ2RXNWtaV1pwYm1Wa0lDWW1JSEJoY25ScFlXeENiRzlqYXlrZ2UxeHVJQ0FnSUhCaGNuUnBZV3dnUFNCd1lYSjBhV0ZzUW14dlkyczdYRzRnSUgxY2JseHVJQ0JwWmlBb2NHRnlkR2xoYkNBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduVkdobElIQmhjblJwWVd3Z0p5QXJJRzl3ZEdsdmJuTXVibUZ0WlNBcklDY2dZMjkxYkdRZ2JtOTBJR0psSUdadmRXNWtKeWs3WEc0Z0lIMGdaV3h6WlNCcFppQW9jR0Z5ZEdsaGJDQnBibk4wWVc1alpXOW1JRVoxYm1OMGFXOXVLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIQmhjblJwWVd3b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHNXZiM0FvS1NCN1hHNGdJSEpsZEhWeWJpQW5KenRjYm4xY2JseHVablZ1WTNScGIyNGdhVzVwZEVSaGRHRW9ZMjl1ZEdWNGRDd2daR0YwWVNrZ2UxeHVJQ0JwWmlBb0lXUmhkR0VnZkh3Z0lTZ25jbTl2ZENjZ2FXNGdaR0YwWVNrcElIdGNiaUFnSUNCa1lYUmhJRDBnWkdGMFlTQS9JR055WldGMFpVWnlZVzFsS0dSaGRHRXBJRG9nZTMwN1hHNGdJQ0FnWkdGMFlTNXliMjkwSUQwZ1kyOXVkR1Y0ZER0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnWkdGMFlUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1pYaGxZM1YwWlVSbFkyOXlZWFJ2Y25Nb1ptNHNJSEJ5YjJjc0lHTnZiblJoYVc1bGNpd2daR1Z3ZEdoekxDQmtZWFJoTENCaWJHOWphMUJoY21GdGN5a2dlMXh1SUNCcFppQW9abTR1WkdWamIzSmhkRzl5S1NCN1hHNGdJQ0FnYkdWMElIQnliM0J6SUQwZ2UzMDdYRzRnSUNBZ2NISnZaeUE5SUdadUxtUmxZMjl5WVhSdmNpaGNiaUFnSUNBZ0lIQnliMmNzWEc0Z0lDQWdJQ0J3Y205d2N5eGNiaUFnSUNBZ0lHTnZiblJoYVc1bGNpeGNiaUFnSUNBZ0lHUmxjSFJvY3lBbUppQmtaWEIwYUhOYk1GMHNYRzRnSUNBZ0lDQmtZWFJoTEZ4dUlDQWdJQ0FnWW14dlkydFFZWEpoYlhNc1hHNGdJQ0FnSUNCa1pYQjBhSE5jYmlBZ0lDQXBPMXh1SUNBZ0lGVjBhV3h6TG1WNGRHVnVaQ2h3Y205bkxDQndjbTl3Y3lrN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhCeWIyYzdYRzU5WEc1Y2JtWjFibU4wYVc5dUlIZHlZWEJJWld4d1pYSnpWRzlRWVhOelRHOXZhM1Z3VUhKdmNHVnlkSGtvYldWeVoyVmtTR1ZzY0dWeWN5d2dZMjl1ZEdGcGJtVnlLU0I3WEc0Z0lFOWlhbVZqZEM1clpYbHpLRzFsY21kbFpFaGxiSEJsY25NcExtWnZja1ZoWTJnb2FHVnNjR1Z5VG1GdFpTQTlQaUI3WEc0Z0lDQWdiR1YwSUdobGJIQmxjaUE5SUcxbGNtZGxaRWhsYkhCbGNuTmJhR1ZzY0dWeVRtRnRaVjA3WEc0Z0lDQWdiV1Z5WjJWa1NHVnNjR1Z5YzF0b1pXeHdaWEpPWVcxbFhTQTlJSEJoYzNOTWIyOXJkWEJRY205d1pYSjBlVTl3ZEdsdmJpaG9aV3h3WlhJc0lHTnZiblJoYVc1bGNpazdYRzRnSUgwcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCd1lYTnpURzl2YTNWd1VISnZjR1Z5ZEhsUGNIUnBiMjRvYUdWc2NHVnlMQ0JqYjI1MFlXbHVaWElwSUh0Y2JpQWdZMjl1YzNRZ2JHOXZhM1Z3VUhKdmNHVnlkSGtnUFNCamIyNTBZV2x1WlhJdWJHOXZhM1Z3VUhKdmNHVnlkSGs3WEc0Z0lISmxkSFZ5YmlCM2NtRndTR1ZzY0dWeUtHaGxiSEJsY2l3Z2IzQjBhVzl1Y3lBOVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUZWMGFXeHpMbVY0ZEdWdVpDaDdJR3h2YjJ0MWNGQnliM0JsY25SNUlIMHNJRzl3ZEdsdmJuTXBPMXh1SUNCOUtUdGNibjFjYmlKZGZRPT1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKEhhbmRsZWJhcnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHdpbmRvdyxcbiAgICAgICRIYW5kbGViYXJzID0gcm9vdC5IYW5kbGViYXJzO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBIYW5kbGViYXJzLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgcm9vdC5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyNXZMV052Ym1ac2FXTjBMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN2NVSkJRV1VzVlVGQlV5eFZRVUZWTEVWQlFVVTdPMEZCUld4RExFMUJRVWtzU1VGQlNTeEhRVUZITEU5QlFVOHNUVUZCVFN4TFFVRkxMRmRCUVZjc1IwRkJSeXhOUVVGTkxFZEJRVWNzVFVGQlRUdE5RVU40UkN4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF6czdRVUZGYUVNc1dVRkJWU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFpRVUZYTzBGQlEycERMRkZCUVVrc1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5eFZRVUZWTEVWQlFVVTdRVUZEYkVNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFhRVUZYTEVOQlFVTTdTMEZETDBJN1FVRkRSQ3hYUVVGUExGVkJRVlVzUTBGQlF6dEhRVU51UWl4RFFVRkRPME5CUTBnaUxDSm1hV3hsSWpvaWJtOHRZMjl1Wm14cFkzUXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKbGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaWhJWVc1a2JHVmlZWEp6S1NCN1hHNGdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzRnSUd4bGRDQnliMjkwSUQwZ2RIbHdaVzltSUdkc2IySmhiQ0FoUFQwZ0ozVnVaR1ZtYVc1bFpDY2dQeUJuYkc5aVlXd2dPaUIzYVc1a2IzY3NYRzRnSUNBZ0pFaGhibVJzWldKaGNuTWdQU0J5YjI5MExraGhibVJzWldKaGNuTTdYRzRnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCdVpYaDBJQ292WEc0Z0lFaGhibVJzWldKaGNuTXVibTlEYjI1bWJHbGpkQ0E5SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUdsbUlDaHliMjkwTGtoaGJtUnNaV0poY25NZ1BUMDlJRWhoYm1Sc1pXSmhjbk1wSUh0Y2JpQWdJQ0FnSUhKdmIzUXVTR0Z1Wkd4bFltRnljeUE5SUNSSVlXNWtiR1ZpWVhKek8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdTR0Z1Wkd4bFltRnljenRjYmlBZ2ZUdGNibjFjYmlKZGZRPT1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09ialsnZGVmYXVsdCddID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblxudmFyIF9oYW5kbGViYXJzQmFzZSA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9iYXNlJyk7XG5cbnZhciBiYXNlID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNCYXNlKTtcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcblxudmFyIF9oYW5kbGViYXJzU2FmZVN0cmluZyA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZycpO1xuXG52YXIgX2hhbmRsZWJhcnNTYWZlU3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNTYWZlU3RyaW5nKTtcblxudmFyIF9oYW5kbGViYXJzRXhjZXB0aW9uID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL2V4Y2VwdGlvbicpO1xuXG52YXIgX2hhbmRsZWJhcnNFeGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0V4Y2VwdGlvbik7XG5cbnZhciBfaGFuZGxlYmFyc1V0aWxzID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL3V0aWxzJyk7XG5cbnZhciBVdGlscyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9oYW5kbGViYXJzVXRpbHMpO1xuXG52YXIgX2hhbmRsZWJhcnNSdW50aW1lID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL3J1bnRpbWUnKTtcblxudmFyIHJ1bnRpbWUgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGFuZGxlYmFyc1J1bnRpbWUpO1xuXG52YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0ID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL25vLWNvbmZsaWN0Jyk7XG5cbnZhciBfaGFuZGxlYmFyc05vQ29uZmxpY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc05vQ29uZmxpY3QpO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgdmFyIGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IF9oYW5kbGViYXJzU2FmZVN0cmluZzJbJ2RlZmF1bHQnXTtcbiAgaGIuRXhjZXB0aW9uID0gX2hhbmRsZWJhcnNFeGNlcHRpb24yWydkZWZhdWx0J107XG4gIGhiLlV0aWxzID0gVXRpbHM7XG4gIGhiLmVzY2FwZUV4cHJlc3Npb24gPSBVdGlscy5lc2NhcGVFeHByZXNzaW9uO1xuXG4gIGhiLlZNID0gcnVudGltZTtcbiAgaGIudGVtcGxhdGUgPSBmdW5jdGlvbiAoc3BlYykge1xuICAgIHJldHVybiBydW50aW1lLnRlbXBsYXRlKHNwZWMsIGhiKTtcbiAgfTtcblxuICByZXR1cm4gaGI7XG59XG5cbnZhciBpbnN0ID0gY3JlYXRlKCk7XG5pbnN0LmNyZWF0ZSA9IGNyZWF0ZTtcblxuX2hhbmRsZWJhcnNOb0NvbmZsaWN0MlsnZGVmYXVsdCddKGluc3QpO1xuXG5pbnN0WydkZWZhdWx0J10gPSBpbnN0O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBpbnN0O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TG5KMWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN09FSkJRWE5DTEcxQ1FVRnRRanM3U1VGQk4wSXNTVUZCU1RzN096czdiME5CU1U4c01FSkJRVEJDT3pzN08yMURRVU16UWl4M1FrRkJkMEk3T3pzN0swSkJRM1pDTEc5Q1FVRnZRanM3U1VGQkwwSXNTMEZCU3pzN2FVTkJRMUVzYzBKQlFYTkNPenRKUVVGdVF5eFBRVUZQT3p0dlEwRkZTU3d3UWtGQk1FSTdPenM3TzBGQlIycEVMRk5CUVZNc1RVRkJUU3hIUVVGSE8wRkJRMmhDTEUxQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN08wRkJSVEZETEU5QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzWkNMRWxCUVVVc1EwRkJReXhWUVVGVkxHOURRVUZoTEVOQlFVTTdRVUZETTBJc1NVRkJSU3hEUVVGRExGTkJRVk1zYlVOQlFWa3NRMEZCUXp0QlFVTjZRaXhKUVVGRkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTnFRaXhKUVVGRkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4RFFVRkRPenRCUVVVM1F5eEpRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJRenRCUVVOb1FpeEpRVUZGTEVOQlFVTXNVVUZCVVN4SFFVRkhMRlZCUVZNc1NVRkJTU3hGUVVGRk8wRkJRek5DTEZkQlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdSMEZEYmtNc1EwRkJRenM3UVVGRlJpeFRRVUZQTEVWQlFVVXNRMEZCUXp0RFFVTllPenRCUVVWRUxFbEJRVWtzU1VGQlNTeEhRVUZITEUxQlFVMHNSVUZCUlN4RFFVRkRPMEZCUTNCQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPenRCUVVWeVFpeHJRMEZCVnl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmFrSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6czdjVUpCUlZJc1NVRkJTU0lzSW1acGJHVWlPaUpvWVc1a2JHVmlZWEp6TG5KMWJuUnBiV1V1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJpWVhObElHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5OWlZWE5sSnp0Y2JseHVMeThnUldGamFDQnZaaUIwYUdWelpTQmhkV2R0Wlc1MElIUm9aU0JJWVc1a2JHVmlZWEp6SUc5aWFtVmpkQzRnVG04Z2JtVmxaQ0IwYnlCelpYUjFjQ0JvWlhKbExseHVMeThnS0ZSb2FYTWdhWE1nWkc5dVpTQjBieUJsWVhOcGJIa2djMmhoY21VZ1kyOWtaU0JpWlhSM1pXVnVJR052YlcxdmJtcHpJR0Z1WkNCaWNtOTNjMlVnWlc1MmN5bGNibWx0Y0c5eWRDQlRZV1psVTNSeWFXNW5JR1p5YjIwZ0p5NHZhR0Z1Wkd4bFltRnljeTl6WVdabExYTjBjbWx1WnljN1hHNXBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5OWxlR05sY0hScGIyNG5PMXh1YVcxd2IzSjBJQ29nWVhNZ1ZYUnBiSE1nWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0FxSUdGeklISjFiblJwYldVZ1puSnZiU0FuTGk5b1lXNWtiR1ZpWVhKekwzSjFiblJwYldVbk8xeHVYRzVwYlhCdmNuUWdibTlEYjI1bWJHbGpkQ0JtY205dElDY3VMMmhoYm1Sc1pXSmhjbk12Ym04dFkyOXVabXhwWTNRbk8xeHVYRzR2THlCR2IzSWdZMjl0Y0dGMGFXSnBiR2wwZVNCaGJtUWdkWE5oWjJVZ2IzVjBjMmxrWlNCdlppQnRiMlIxYkdVZ2MzbHpkR1Z0Y3l3Z2JXRnJaU0IwYUdVZ1NHRnVaR3hsWW1GeWN5QnZZbXBsWTNRZ1lTQnVZVzFsYzNCaFkyVmNibVoxYm1OMGFXOXVJR055WldGMFpTZ3BJSHRjYmlBZ2JHVjBJR2hpSUQwZ2JtVjNJR0poYzJVdVNHRnVaR3hsWW1GeWMwVnVkbWx5YjI1dFpXNTBLQ2s3WEc1Y2JpQWdWWFJwYkhNdVpYaDBaVzVrS0doaUxDQmlZWE5sS1R0Y2JpQWdhR0l1VTJGbVpWTjBjbWx1WnlBOUlGTmhabVZUZEhKcGJtYzdYRzRnSUdoaUxrVjRZMlZ3ZEdsdmJpQTlJRVY0WTJWd2RHbHZianRjYmlBZ2FHSXVWWFJwYkhNZ1BTQlZkR2xzY3p0Y2JpQWdhR0l1WlhOallYQmxSWGh3Y21WemMybHZiaUE5SUZWMGFXeHpMbVZ6WTJGd1pVVjRjSEpsYzNOcGIyNDdYRzVjYmlBZ2FHSXVWazBnUFNCeWRXNTBhVzFsTzF4dUlDQm9ZaTUwWlcxd2JHRjBaU0E5SUdaMWJtTjBhVzl1S0hOd1pXTXBJSHRjYmlBZ0lDQnlaWFIxY200Z2NuVnVkR2x0WlM1MFpXMXdiR0YwWlNoemNHVmpMQ0JvWWlrN1hHNGdJSDA3WEc1Y2JpQWdjbVYwZFhKdUlHaGlPMXh1ZlZ4dVhHNXNaWFFnYVc1emRDQTlJR055WldGMFpTZ3BPMXh1YVc1emRDNWpjbVZoZEdVZ1BTQmpjbVZoZEdVN1hHNWNibTV2UTI5dVpteHBZM1FvYVc1emRDazdYRzVjYm1sdWMzUmJKMlJsWm1GMWJIUW5YU0E5SUdsdWMzUTdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJR2x1YzNRN1hHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG52YXIgQVNUID0ge1xuICAvLyBQdWJsaWMgQVBJIHVzZWQgdG8gZXZhbHVhdGUgZGVyaXZlZCBhdHRyaWJ1dGVzIHJlZ2FyZGluZyBBU1Qgbm9kZXNcbiAgaGVscGVyczoge1xuICAgIC8vIGEgbXVzdGFjaGUgaXMgZGVmaW5pdGVseSBhIGhlbHBlciBpZjpcbiAgICAvLyAqIGl0IGlzIGFuIGVsaWdpYmxlIGhlbHBlciwgYW5kXG4gICAgLy8gKiBpdCBoYXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciBvciBoYXNoIHNlZ21lbnRcbiAgICBoZWxwZXJFeHByZXNzaW9uOiBmdW5jdGlvbiBoZWxwZXJFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJyB8fCAobm9kZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnIHx8IG5vZGUudHlwZSA9PT0gJ0Jsb2NrU3RhdGVtZW50JykgJiYgISEobm9kZS5wYXJhbXMgJiYgbm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCk7XG4gICAgfSxcblxuICAgIHNjb3BlZElkOiBmdW5jdGlvbiBzY29wZWRJZChwYXRoKSB7XG4gICAgICByZXR1cm4gKC9eXFwufHRoaXNcXGIvLnRlc3QocGF0aC5vcmlnaW5hbClcbiAgICAgICk7XG4gICAgfSxcblxuICAgIC8vIGFuIElEIGlzIHNpbXBsZSBpZiBpdCBvbmx5IGhhcyBvbmUgcGFydCwgYW5kIHRoYXQgcGFydCBpcyBub3RcbiAgICAvLyBgLi5gIG9yIGB0aGlzYC5cbiAgICBzaW1wbGVJZDogZnVuY3Rpb24gc2ltcGxlSWQocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgucGFydHMubGVuZ3RoID09PSAxICYmICFBU1QuaGVscGVycy5zY29wZWRJZChwYXRoKSAmJiAhcGF0aC5kZXB0aDtcbiAgICB9XG4gIH1cbn07XG5cbi8vIE11c3QgYmUgZXhwb3J0ZWQgYXMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRoZSBtb2R1bGUgYXMgdGhlIGppc29uIGxleGVyXG4vLyBtdXN0IG1vZGlmeSB0aGUgb2JqZWN0IHRvIG9wZXJhdGUgcHJvcGVybHkuXG5leHBvcnRzWydkZWZhdWx0J10gPSBBU1Q7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwyRnpkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN1FVRkJRU3hKUVVGSkxFZEJRVWNzUjBGQlJ6czdRVUZGVWl4VFFVRlBMRVZCUVVVN096czdRVUZKVUN4dlFrRkJaMElzUlVGQlJTd3dRa0ZCVXl4SlFVRkpMRVZCUVVVN1FVRkRMMElzWVVGRFJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMR1ZCUVdVc1NVRkROVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMRzFDUVVGdFFpeEpRVU5xUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hMUVVGTExHZENRVUZuUWl4RFFVRkJMRWxCUXpsQ0xFTkJRVU1zUlVGQlJTeEJRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVsQlFVc3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRU3hCUVVGRExFRkJRVU1zUTBGRGRrUTdTMEZEU0RzN1FVRkZSQ3haUVVGUkxFVkJRVVVzYTBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTNaQ0xHRkJRVThzWVVGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8xRkJRVU03UzBGRGVrTTdPenM3UVVGSlJDeFpRVUZSTEVWQlFVVXNhMEpCUVZNc1NVRkJTU3hGUVVGRk8wRkJRM1pDTEdGQlEwVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVOeVJUdExRVU5JTzBkQlEwWTdRMEZEUml4RFFVRkRPenM3TzNGQ1FVbGhMRWRCUVVjaUxDSm1hV3hsSWpvaVlYTjBMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWJHVjBJRUZUVkNBOUlIdGNiaUFnTHk4Z1VIVmliR2xqSUVGUVNTQjFjMlZrSUhSdklHVjJZV3gxWVhSbElHUmxjbWwyWldRZ1lYUjBjbWxpZFhSbGN5QnlaV2RoY21ScGJtY2dRVk5VSUc1dlpHVnpYRzRnSUdobGJIQmxjbk02SUh0Y2JpQWdJQ0F2THlCaElHMTFjM1JoWTJobElHbHpJR1JsWm1sdWFYUmxiSGtnWVNCb1pXeHdaWElnYVdZNlhHNGdJQ0FnTHk4Z0tpQnBkQ0JwY3lCaGJpQmxiR2xuYVdKc1pTQm9aV3h3WlhJc0lHRnVaRnh1SUNBZ0lDOHZJQ29nYVhRZ2FHRnpJR0YwSUd4bFlYTjBJRzl1WlNCd1lYSmhiV1YwWlhJZ2IzSWdhR0Z6YUNCelpXZHRaVzUwWEc0Z0lDQWdhR1ZzY0dWeVJYaHdjbVZ6YzJsdmJqb2dablZ1WTNScGIyNG9ibTlrWlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUNBZ2JtOWtaUzUwZVhCbElEMDlQU0FuVTNWaVJYaHdjbVZ6YzJsdmJpY2dmSHhjYmlBZ0lDQWdJQ0FnS0NodWIyUmxMblI1Y0dVZ1BUMDlJQ2ROZFhOMFlXTm9aVk4wWVhSbGJXVnVkQ2NnZkh4Y2JpQWdJQ0FnSUNBZ0lDQnViMlJsTG5SNWNHVWdQVDA5SUNkQ2JHOWphMU4wWVhSbGJXVnVkQ2NwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJU0VvS0c1dlpHVXVjR0Z5WVcxeklDWW1JRzV2WkdVdWNHRnlZVzF6TG14bGJtZDBhQ2tnZkh3Z2JtOWtaUzVvWVhOb0tTbGNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lITmpiM0JsWkVsa09pQm1kVzVqZEdsdmJpaHdZWFJvS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnTDE1Y1hDNThkR2hwYzF4Y1lpOHVkR1Z6ZENod1lYUm9MbTl5YVdkcGJtRnNLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeThnWVc0Z1NVUWdhWE1nYzJsdGNHeGxJR2xtSUdsMElHOXViSGtnYUdGeklHOXVaU0J3WVhKMExDQmhibVFnZEdoaGRDQndZWEowSUdseklHNXZkRnh1SUNBZ0lDOHZJR0F1TG1BZ2IzSWdZSFJvYVhOZ0xseHVJQ0FnSUhOcGJYQnNaVWxrT2lCbWRXNWpkR2x2Ymlod1lYUm9LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lDQWdJQ0J3WVhSb0xuQmhjblJ6TG14bGJtZDBhQ0E5UFQwZ01TQW1KaUFoUVZOVUxtaGxiSEJsY25NdWMyTnZjR1ZrU1dRb2NHRjBhQ2tnSmlZZ0lYQmhkR2d1WkdWd2RHaGNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzR2THlCTmRYTjBJR0psSUdWNGNHOXlkR1ZrSUdGeklHRnVJRzlpYW1WamRDQnlZWFJvWlhJZ2RHaGhiaUIwYUdVZ2NtOXZkQ0J2WmlCMGFHVWdiVzlrZFd4bElHRnpJSFJvWlNCcWFYTnZiaUJzWlhobGNseHVMeThnYlhWemRDQnRiMlJwWm5rZ2RHaGxJRzlpYW1WamRDQjBieUJ2Y0dWeVlYUmxJSEJ5YjNCbGNteDVMbHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdRVk5VTzF4dUlsMTlcbiIsIi8vIEZpbGUgaWdub3JlZCBpbiBjb3ZlcmFnZSB0ZXN0cyB2aWEgc2V0dGluZyBpbiAuaXN0YW5idWwueW1sXG4vKiBKaXNvbiBnZW5lcmF0ZWQgcGFyc2VyICovXG5cInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbnZhciBoYW5kbGViYXJzID0gKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyc2VyID0geyB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7fSxcbiAgICAgICAgeXk6IHt9LFxuICAgICAgICBzeW1ib2xzXzogeyBcImVycm9yXCI6IDIsIFwicm9vdFwiOiAzLCBcInByb2dyYW1cIjogNCwgXCJFT0ZcIjogNSwgXCJwcm9ncmFtX3JlcGV0aXRpb24wXCI6IDYsIFwic3RhdGVtZW50XCI6IDcsIFwibXVzdGFjaGVcIjogOCwgXCJibG9ja1wiOiA5LCBcInJhd0Jsb2NrXCI6IDEwLCBcInBhcnRpYWxcIjogMTEsIFwicGFydGlhbEJsb2NrXCI6IDEyLCBcImNvbnRlbnRcIjogMTMsIFwiQ09NTUVOVFwiOiAxNCwgXCJDT05URU5UXCI6IDE1LCBcIm9wZW5SYXdCbG9ja1wiOiAxNiwgXCJyYXdCbG9ja19yZXBldGl0aW9uMFwiOiAxNywgXCJFTkRfUkFXX0JMT0NLXCI6IDE4LCBcIk9QRU5fUkFXX0JMT0NLXCI6IDE5LCBcImhlbHBlck5hbWVcIjogMjAsIFwib3BlblJhd0Jsb2NrX3JlcGV0aXRpb24wXCI6IDIxLCBcIm9wZW5SYXdCbG9ja19vcHRpb24wXCI6IDIyLCBcIkNMT1NFX1JBV19CTE9DS1wiOiAyMywgXCJvcGVuQmxvY2tcIjogMjQsIFwiYmxvY2tfb3B0aW9uMFwiOiAyNSwgXCJjbG9zZUJsb2NrXCI6IDI2LCBcIm9wZW5JbnZlcnNlXCI6IDI3LCBcImJsb2NrX29wdGlvbjFcIjogMjgsIFwiT1BFTl9CTE9DS1wiOiAyOSwgXCJvcGVuQmxvY2tfcmVwZXRpdGlvbjBcIjogMzAsIFwib3BlbkJsb2NrX29wdGlvbjBcIjogMzEsIFwib3BlbkJsb2NrX29wdGlvbjFcIjogMzIsIFwiQ0xPU0VcIjogMzMsIFwiT1BFTl9JTlZFUlNFXCI6IDM0LCBcIm9wZW5JbnZlcnNlX3JlcGV0aXRpb24wXCI6IDM1LCBcIm9wZW5JbnZlcnNlX29wdGlvbjBcIjogMzYsIFwib3BlbkludmVyc2Vfb3B0aW9uMVwiOiAzNywgXCJvcGVuSW52ZXJzZUNoYWluXCI6IDM4LCBcIk9QRU5fSU5WRVJTRV9DSEFJTlwiOiAzOSwgXCJvcGVuSW52ZXJzZUNoYWluX3JlcGV0aXRpb24wXCI6IDQwLCBcIm9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMFwiOiA0MSwgXCJvcGVuSW52ZXJzZUNoYWluX29wdGlvbjFcIjogNDIsIFwiaW52ZXJzZUFuZFByb2dyYW1cIjogNDMsIFwiSU5WRVJTRVwiOiA0NCwgXCJpbnZlcnNlQ2hhaW5cIjogNDUsIFwiaW52ZXJzZUNoYWluX29wdGlvbjBcIjogNDYsIFwiT1BFTl9FTkRCTE9DS1wiOiA0NywgXCJPUEVOXCI6IDQ4LCBcIm11c3RhY2hlX3JlcGV0aXRpb24wXCI6IDQ5LCBcIm11c3RhY2hlX29wdGlvbjBcIjogNTAsIFwiT1BFTl9VTkVTQ0FQRURcIjogNTEsIFwibXVzdGFjaGVfcmVwZXRpdGlvbjFcIjogNTIsIFwibXVzdGFjaGVfb3B0aW9uMVwiOiA1MywgXCJDTE9TRV9VTkVTQ0FQRURcIjogNTQsIFwiT1BFTl9QQVJUSUFMXCI6IDU1LCBcInBhcnRpYWxOYW1lXCI6IDU2LCBcInBhcnRpYWxfcmVwZXRpdGlvbjBcIjogNTcsIFwicGFydGlhbF9vcHRpb24wXCI6IDU4LCBcIm9wZW5QYXJ0aWFsQmxvY2tcIjogNTksIFwiT1BFTl9QQVJUSUFMX0JMT0NLXCI6IDYwLCBcIm9wZW5QYXJ0aWFsQmxvY2tfcmVwZXRpdGlvbjBcIjogNjEsIFwib3BlblBhcnRpYWxCbG9ja19vcHRpb24wXCI6IDYyLCBcInBhcmFtXCI6IDYzLCBcInNleHByXCI6IDY0LCBcIk9QRU5fU0VYUFJcIjogNjUsIFwic2V4cHJfcmVwZXRpdGlvbjBcIjogNjYsIFwic2V4cHJfb3B0aW9uMFwiOiA2NywgXCJDTE9TRV9TRVhQUlwiOiA2OCwgXCJoYXNoXCI6IDY5LCBcImhhc2hfcmVwZXRpdGlvbl9wbHVzMFwiOiA3MCwgXCJoYXNoU2VnbWVudFwiOiA3MSwgXCJJRFwiOiA3MiwgXCJFUVVBTFNcIjogNzMsIFwiYmxvY2tQYXJhbXNcIjogNzQsIFwiT1BFTl9CTE9DS19QQVJBTVNcIjogNzUsIFwiYmxvY2tQYXJhbXNfcmVwZXRpdGlvbl9wbHVzMFwiOiA3NiwgXCJDTE9TRV9CTE9DS19QQVJBTVNcIjogNzcsIFwicGF0aFwiOiA3OCwgXCJkYXRhTmFtZVwiOiA3OSwgXCJTVFJJTkdcIjogODAsIFwiTlVNQkVSXCI6IDgxLCBcIkJPT0xFQU5cIjogODIsIFwiVU5ERUZJTkVEXCI6IDgzLCBcIk5VTExcIjogODQsIFwiREFUQVwiOiA4NSwgXCJwYXRoU2VnbWVudHNcIjogODYsIFwiU0VQXCI6IDg3LCBcIiRhY2NlcHRcIjogMCwgXCIkZW5kXCI6IDEgfSxcbiAgICAgICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDU6IFwiRU9GXCIsIDE0OiBcIkNPTU1FTlRcIiwgMTU6IFwiQ09OVEVOVFwiLCAxODogXCJFTkRfUkFXX0JMT0NLXCIsIDE5OiBcIk9QRU5fUkFXX0JMT0NLXCIsIDIzOiBcIkNMT1NFX1JBV19CTE9DS1wiLCAyOTogXCJPUEVOX0JMT0NLXCIsIDMzOiBcIkNMT1NFXCIsIDM0OiBcIk9QRU5fSU5WRVJTRVwiLCAzOTogXCJPUEVOX0lOVkVSU0VfQ0hBSU5cIiwgNDQ6IFwiSU5WRVJTRVwiLCA0NzogXCJPUEVOX0VOREJMT0NLXCIsIDQ4OiBcIk9QRU5cIiwgNTE6IFwiT1BFTl9VTkVTQ0FQRURcIiwgNTQ6IFwiQ0xPU0VfVU5FU0NBUEVEXCIsIDU1OiBcIk9QRU5fUEFSVElBTFwiLCA2MDogXCJPUEVOX1BBUlRJQUxfQkxPQ0tcIiwgNjU6IFwiT1BFTl9TRVhQUlwiLCA2ODogXCJDTE9TRV9TRVhQUlwiLCA3MjogXCJJRFwiLCA3MzogXCJFUVVBTFNcIiwgNzU6IFwiT1BFTl9CTE9DS19QQVJBTVNcIiwgNzc6IFwiQ0xPU0VfQkxPQ0tfUEFSQU1TXCIsIDgwOiBcIlNUUklOR1wiLCA4MTogXCJOVU1CRVJcIiwgODI6IFwiQk9PTEVBTlwiLCA4MzogXCJVTkRFRklORURcIiwgODQ6IFwiTlVMTFwiLCA4NTogXCJEQVRBXCIsIDg3OiBcIlNFUFwiIH0sXG4gICAgICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAyXSwgWzQsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFsxMywgMV0sIFsxMCwgM10sIFsxNiwgNV0sIFs5LCA0XSwgWzksIDRdLCBbMjQsIDZdLCBbMjcsIDZdLCBbMzgsIDZdLCBbNDMsIDJdLCBbNDUsIDNdLCBbNDUsIDFdLCBbMjYsIDNdLCBbOCwgNV0sIFs4LCA1XSwgWzExLCA1XSwgWzEyLCAzXSwgWzU5LCA1XSwgWzYzLCAxXSwgWzYzLCAxXSwgWzY0LCA1XSwgWzY5LCAxXSwgWzcxLCAzXSwgWzc0LCAzXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzU2LCAxXSwgWzU2LCAxXSwgWzc5LCAyXSwgWzc4LCAxXSwgWzg2LCAzXSwgWzg2LCAxXSwgWzYsIDBdLCBbNiwgMl0sIFsxNywgMF0sIFsxNywgMl0sIFsyMSwgMF0sIFsyMSwgMl0sIFsyMiwgMF0sIFsyMiwgMV0sIFsyNSwgMF0sIFsyNSwgMV0sIFsyOCwgMF0sIFsyOCwgMV0sIFszMCwgMF0sIFszMCwgMl0sIFszMSwgMF0sIFszMSwgMV0sIFszMiwgMF0sIFszMiwgMV0sIFszNSwgMF0sIFszNSwgMl0sIFszNiwgMF0sIFszNiwgMV0sIFszNywgMF0sIFszNywgMV0sIFs0MCwgMF0sIFs0MCwgMl0sIFs0MSwgMF0sIFs0MSwgMV0sIFs0MiwgMF0sIFs0MiwgMV0sIFs0NiwgMF0sIFs0NiwgMV0sIFs0OSwgMF0sIFs0OSwgMl0sIFs1MCwgMF0sIFs1MCwgMV0sIFs1MiwgMF0sIFs1MiwgMl0sIFs1MywgMF0sIFs1MywgMV0sIFs1NywgMF0sIFs1NywgMl0sIFs1OCwgMF0sIFs1OCwgMV0sIFs2MSwgMF0sIFs2MSwgMl0sIFs2MiwgMF0sIFs2MiwgMV0sIFs2NiwgMF0sIFs2NiwgMl0sIFs2NywgMF0sIFs2NywgMV0sIFs3MCwgMV0sIFs3MCwgMl0sIFs3NiwgMV0sIFs3NiwgMl1dLFxuICAgICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kKSB7XG5cbiAgICAgICAgICAgIHZhciAkMCA9ICQkLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBzd2l0Y2ggKHl5c3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkJFskMCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQcm9ncmFtKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0NvbW1lbnRTdGF0ZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDBdLCAkJFskMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0NvbnRlbnRTdGF0ZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWw6ICQkWyQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAkJFskMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJClcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUmF3QmxvY2soJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCB0aGlzLl8kKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDNdLCBwYXJhbXM6ICQkWyQwIC0gMl0sIGhhc2g6ICQkWyQwIC0gMV0gfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZUJsb2NrKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgZmFsc2UsIHRoaXMuXyQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCB0cnVlLCB0aGlzLl8kKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBvcGVuOiAkJFskMCAtIDVdLCBwYXRoOiAkJFskMCAtIDRdLCBwYXJhbXM6ICQkWyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBibG9ja1BhcmFtczogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwgJCRbJDBdKSB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gNF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxODpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDFdLCAkJFskMCAtIDFdKSwgcHJvZ3JhbTogJCRbJDBdIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnZlcnNlID0geXkucHJlcGFyZUJsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0geXkucHJlcGFyZVByb2dyYW0oW2ludmVyc2VdLCAkJFskMCAtIDFdLmxvYyk7XG4gICAgICAgICAgICAgICAgICAgIHByb2dyYW0uY2hhaW5lZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBzdHJpcDogJCRbJDAgLSAyXS5zdHJpcCwgcHJvZ3JhbTogcHJvZ3JhbSwgY2hhaW46IHRydWUgfTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSAyXSwgJCRbJDBdKSB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlTXVzdGFjaGUoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDAgLSA0XSwgeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLCB0aGlzLl8kKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZU11c3RhY2hlKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwIC0gNF0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwgdGhpcy5fJCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXJ0aWFsU3RhdGVtZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICQkWyQwIC0gM10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6ICQkWyQwIC0gMl0sXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNF0sICQkWyQwXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJClcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUGFydGlhbEJsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdGhpcy5fJCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSAzXSwgcGFyYW1zOiAkJFskMCAtIDJdLCBoYXNoOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnU3ViRXhwcmVzc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAkJFskMCAtIDNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiAkJFskMCAtIDJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogJCRbJDAgLSAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2gnLCBwYWlyczogJCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnSGFzaFBhaXInLCBrZXk6IHl5LmlkKCQkWyQwIC0gMl0pLCB2YWx1ZTogJCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkuaWQoJCRbJDAgLSAxXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdTdHJpbmdMaXRlcmFsJywgdmFsdWU6ICQkWyQwXSwgb3JpZ2luYWw6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bWJlckxpdGVyYWwnLCB2YWx1ZTogTnVtYmVyKCQkWyQwXSksIG9yaWdpbmFsOiBOdW1iZXIoJCRbJDBdKSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0Jvb2xlYW5MaXRlcmFsJywgdmFsdWU6ICQkWyQwXSA9PT0gJ3RydWUnLCBvcmlnaW5hbDogJCRbJDBdID09PSAndHJ1ZScsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdVbmRlZmluZWRMaXRlcmFsJywgb3JpZ2luYWw6IHVuZGVmaW5lZCwgdmFsdWU6IHVuZGVmaW5lZCwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bGxMaXRlcmFsJywgb3JpZ2luYWw6IG51bGwsIHZhbHVlOiBudWxsLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQYXRoKHRydWUsICQkWyQwXSwgdGhpcy5fJCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQYXRoKGZhbHNlLCAkJFskMF0sIHRoaXMuXyQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ0OlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDJdLnB1c2goeyBwYXJ0OiB5eS5pZCgkJFskMF0pLCBvcmlnaW5hbDogJCRbJDBdLCBzZXBhcmF0b3I6ICQkWyQwIC0gMV0gfSk7dGhpcy4kID0gJCRbJDAgLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW3sgcGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXSB9XTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ4OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OTpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDUxOlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNTk6XG4gICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDY0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNzA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDcxOlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA3ODpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNzk6XG4gICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA4MzpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgODY6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgOTE6XG4gICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDk0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA5NTpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgOTg6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1dO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDk5OlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMDA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1dO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDEwMTpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0YWJsZTogW3sgMzogMSwgNDogMiwgNTogWzIsIDQ2XSwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDE6IFszXSB9LCB7IDU6IFsxLCA0XSB9LCB7IDU6IFsyLCAyXSwgNzogNSwgODogNiwgOTogNywgMTA6IDgsIDExOiA5LCAxMjogMTAsIDEzOiAxMSwgMTQ6IFsxLCAxMl0sIDE1OiBbMSwgMjBdLCAxNjogMTcsIDE5OiBbMSwgMjNdLCAyNDogMTUsIDI3OiAxNiwgMjk6IFsxLCAyMV0sIDM0OiBbMSwgMjJdLCAzOTogWzIsIDJdLCA0NDogWzIsIDJdLCA0NzogWzIsIDJdLCA0ODogWzEsIDEzXSwgNTE6IFsxLCAxNF0sIDU1OiBbMSwgMThdLCA1OTogMTksIDYwOiBbMSwgMjRdIH0sIHsgMTogWzIsIDFdIH0sIHsgNTogWzIsIDQ3XSwgMTQ6IFsyLCA0N10sIDE1OiBbMiwgNDddLCAxOTogWzIsIDQ3XSwgMjk6IFsyLCA0N10sIDM0OiBbMiwgNDddLCAzOTogWzIsIDQ3XSwgNDQ6IFsyLCA0N10sIDQ3OiBbMiwgNDddLCA0ODogWzIsIDQ3XSwgNTE6IFsyLCA0N10sIDU1OiBbMiwgNDddLCA2MDogWzIsIDQ3XSB9LCB7IDU6IFsyLCAzXSwgMTQ6IFsyLCAzXSwgMTU6IFsyLCAzXSwgMTk6IFsyLCAzXSwgMjk6IFsyLCAzXSwgMzQ6IFsyLCAzXSwgMzk6IFsyLCAzXSwgNDQ6IFsyLCAzXSwgNDc6IFsyLCAzXSwgNDg6IFsyLCAzXSwgNTE6IFsyLCAzXSwgNTU6IFsyLCAzXSwgNjA6IFsyLCAzXSB9LCB7IDU6IFsyLCA0XSwgMTQ6IFsyLCA0XSwgMTU6IFsyLCA0XSwgMTk6IFsyLCA0XSwgMjk6IFsyLCA0XSwgMzQ6IFsyLCA0XSwgMzk6IFsyLCA0XSwgNDQ6IFsyLCA0XSwgNDc6IFsyLCA0XSwgNDg6IFsyLCA0XSwgNTE6IFsyLCA0XSwgNTU6IFsyLCA0XSwgNjA6IFsyLCA0XSB9LCB7IDU6IFsyLCA1XSwgMTQ6IFsyLCA1XSwgMTU6IFsyLCA1XSwgMTk6IFsyLCA1XSwgMjk6IFsyLCA1XSwgMzQ6IFsyLCA1XSwgMzk6IFsyLCA1XSwgNDQ6IFsyLCA1XSwgNDc6IFsyLCA1XSwgNDg6IFsyLCA1XSwgNTE6IFsyLCA1XSwgNTU6IFsyLCA1XSwgNjA6IFsyLCA1XSB9LCB7IDU6IFsyLCA2XSwgMTQ6IFsyLCA2XSwgMTU6IFsyLCA2XSwgMTk6IFsyLCA2XSwgMjk6IFsyLCA2XSwgMzQ6IFsyLCA2XSwgMzk6IFsyLCA2XSwgNDQ6IFsyLCA2XSwgNDc6IFsyLCA2XSwgNDg6IFsyLCA2XSwgNTE6IFsyLCA2XSwgNTU6IFsyLCA2XSwgNjA6IFsyLCA2XSB9LCB7IDU6IFsyLCA3XSwgMTQ6IFsyLCA3XSwgMTU6IFsyLCA3XSwgMTk6IFsyLCA3XSwgMjk6IFsyLCA3XSwgMzQ6IFsyLCA3XSwgMzk6IFsyLCA3XSwgNDQ6IFsyLCA3XSwgNDc6IFsyLCA3XSwgNDg6IFsyLCA3XSwgNTE6IFsyLCA3XSwgNTU6IFsyLCA3XSwgNjA6IFsyLCA3XSB9LCB7IDU6IFsyLCA4XSwgMTQ6IFsyLCA4XSwgMTU6IFsyLCA4XSwgMTk6IFsyLCA4XSwgMjk6IFsyLCA4XSwgMzQ6IFsyLCA4XSwgMzk6IFsyLCA4XSwgNDQ6IFsyLCA4XSwgNDc6IFsyLCA4XSwgNDg6IFsyLCA4XSwgNTE6IFsyLCA4XSwgNTU6IFsyLCA4XSwgNjA6IFsyLCA4XSB9LCB7IDU6IFsyLCA5XSwgMTQ6IFsyLCA5XSwgMTU6IFsyLCA5XSwgMTk6IFsyLCA5XSwgMjk6IFsyLCA5XSwgMzQ6IFsyLCA5XSwgMzk6IFsyLCA5XSwgNDQ6IFsyLCA5XSwgNDc6IFsyLCA5XSwgNDg6IFsyLCA5XSwgNTE6IFsyLCA5XSwgNTU6IFsyLCA5XSwgNjA6IFsyLCA5XSB9LCB7IDIwOiAyNSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogMzYsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNDogMzcsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA0OiAzOCwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NDogWzIsIDQ2XSwgNDc6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIsIDQ2XSwgNTU6IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgMTU6IFsyLCA0OF0sIDE3OiAzOSwgMTg6IFsyLCA0OF0gfSwgeyAyMDogNDEsIDU2OiA0MCwgNjQ6IDQyLCA2NTogWzEsIDQzXSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA0NCwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA1OiBbMiwgMTBdLCAxNDogWzIsIDEwXSwgMTU6IFsyLCAxMF0sIDE4OiBbMiwgMTBdLCAxOTogWzIsIDEwXSwgMjk6IFsyLCAxMF0sIDM0OiBbMiwgMTBdLCAzOTogWzIsIDEwXSwgNDQ6IFsyLCAxMF0sIDQ3OiBbMiwgMTBdLCA0ODogWzIsIDEwXSwgNTE6IFsyLCAxMF0sIDU1OiBbMiwgMTBdLCA2MDogWzIsIDEwXSB9LCB7IDIwOiA0NSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNDYsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDQ3LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA0MSwgNTY6IDQ4LCA2NDogNDIsIDY1OiBbMSwgNDNdLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBbMiwgNzhdLCA0OTogNDksIDY1OiBbMiwgNzhdLCA3MjogWzIsIDc4XSwgODA6IFsyLCA3OF0sIDgxOiBbMiwgNzhdLCA4MjogWzIsIDc4XSwgODM6IFsyLCA3OF0sIDg0OiBbMiwgNzhdLCA4NTogWzIsIDc4XSB9LCB7IDIzOiBbMiwgMzNdLCAzMzogWzIsIDMzXSwgNTQ6IFsyLCAzM10sIDY1OiBbMiwgMzNdLCA2ODogWzIsIDMzXSwgNzI6IFsyLCAzM10sIDc1OiBbMiwgMzNdLCA4MDogWzIsIDMzXSwgODE6IFsyLCAzM10sIDgyOiBbMiwgMzNdLCA4MzogWzIsIDMzXSwgODQ6IFsyLCAzM10sIDg1OiBbMiwgMzNdIH0sIHsgMjM6IFsyLCAzNF0sIDMzOiBbMiwgMzRdLCA1NDogWzIsIDM0XSwgNjU6IFsyLCAzNF0sIDY4OiBbMiwgMzRdLCA3MjogWzIsIDM0XSwgNzU6IFsyLCAzNF0sIDgwOiBbMiwgMzRdLCA4MTogWzIsIDM0XSwgODI6IFsyLCAzNF0sIDgzOiBbMiwgMzRdLCA4NDogWzIsIDM0XSwgODU6IFsyLCAzNF0gfSwgeyAyMzogWzIsIDM1XSwgMzM6IFsyLCAzNV0sIDU0OiBbMiwgMzVdLCA2NTogWzIsIDM1XSwgNjg6IFsyLCAzNV0sIDcyOiBbMiwgMzVdLCA3NTogWzIsIDM1XSwgODA6IFsyLCAzNV0sIDgxOiBbMiwgMzVdLCA4MjogWzIsIDM1XSwgODM6IFsyLCAzNV0sIDg0OiBbMiwgMzVdLCA4NTogWzIsIDM1XSB9LCB7IDIzOiBbMiwgMzZdLCAzMzogWzIsIDM2XSwgNTQ6IFsyLCAzNl0sIDY1OiBbMiwgMzZdLCA2ODogWzIsIDM2XSwgNzI6IFsyLCAzNl0sIDc1OiBbMiwgMzZdLCA4MDogWzIsIDM2XSwgODE6IFsyLCAzNl0sIDgyOiBbMiwgMzZdLCA4MzogWzIsIDM2XSwgODQ6IFsyLCAzNl0sIDg1OiBbMiwgMzZdIH0sIHsgMjM6IFsyLCAzN10sIDMzOiBbMiwgMzddLCA1NDogWzIsIDM3XSwgNjU6IFsyLCAzN10sIDY4OiBbMiwgMzddLCA3MjogWzIsIDM3XSwgNzU6IFsyLCAzN10sIDgwOiBbMiwgMzddLCA4MTogWzIsIDM3XSwgODI6IFsyLCAzN10sIDgzOiBbMiwgMzddLCA4NDogWzIsIDM3XSwgODU6IFsyLCAzN10gfSwgeyAyMzogWzIsIDM4XSwgMzM6IFsyLCAzOF0sIDU0OiBbMiwgMzhdLCA2NTogWzIsIDM4XSwgNjg6IFsyLCAzOF0sIDcyOiBbMiwgMzhdLCA3NTogWzIsIDM4XSwgODA6IFsyLCAzOF0sIDgxOiBbMiwgMzhdLCA4MjogWzIsIDM4XSwgODM6IFsyLCAzOF0sIDg0OiBbMiwgMzhdLCA4NTogWzIsIDM4XSB9LCB7IDIzOiBbMiwgMzldLCAzMzogWzIsIDM5XSwgNTQ6IFsyLCAzOV0sIDY1OiBbMiwgMzldLCA2ODogWzIsIDM5XSwgNzI6IFsyLCAzOV0sIDc1OiBbMiwgMzldLCA4MDogWzIsIDM5XSwgODE6IFsyLCAzOV0sIDgyOiBbMiwgMzldLCA4MzogWzIsIDM5XSwgODQ6IFsyLCAzOV0sIDg1OiBbMiwgMzldIH0sIHsgMjM6IFsyLCA0M10sIDMzOiBbMiwgNDNdLCA1NDogWzIsIDQzXSwgNjU6IFsyLCA0M10sIDY4OiBbMiwgNDNdLCA3MjogWzIsIDQzXSwgNzU6IFsyLCA0M10sIDgwOiBbMiwgNDNdLCA4MTogWzIsIDQzXSwgODI6IFsyLCA0M10sIDgzOiBbMiwgNDNdLCA4NDogWzIsIDQzXSwgODU6IFsyLCA0M10sIDg3OiBbMSwgNTBdIH0sIHsgNzI6IFsxLCAzNV0sIDg2OiA1MSB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDUyOiA1MiwgNTQ6IFsyLCA4Ml0sIDY1OiBbMiwgODJdLCA3MjogWzIsIDgyXSwgODA6IFsyLCA4Ml0sIDgxOiBbMiwgODJdLCA4MjogWzIsIDgyXSwgODM6IFsyLCA4Ml0sIDg0OiBbMiwgODJdLCA4NTogWzIsIDgyXSB9LCB7IDI1OiA1MywgMzg6IDU1LCAzOTogWzEsIDU3XSwgNDM6IDU2LCA0NDogWzEsIDU4XSwgNDU6IDU0LCA0NzogWzIsIDU0XSB9LCB7IDI4OiA1OSwgNDM6IDYwLCA0NDogWzEsIDU4XSwgNDc6IFsyLCA1Nl0gfSwgeyAxMzogNjIsIDE1OiBbMSwgMjBdLCAxODogWzEsIDYxXSB9LCB7IDMzOiBbMiwgODZdLCA1NzogNjMsIDY1OiBbMiwgODZdLCA3MjogWzIsIDg2XSwgODA6IFsyLCA4Nl0sIDgxOiBbMiwgODZdLCA4MjogWzIsIDg2XSwgODM6IFsyLCA4Nl0sIDg0OiBbMiwgODZdLCA4NTogWzIsIDg2XSB9LCB7IDMzOiBbMiwgNDBdLCA2NTogWzIsIDQwXSwgNzI6IFsyLCA0MF0sIDgwOiBbMiwgNDBdLCA4MTogWzIsIDQwXSwgODI6IFsyLCA0MF0sIDgzOiBbMiwgNDBdLCA4NDogWzIsIDQwXSwgODU6IFsyLCA0MF0gfSwgeyAzMzogWzIsIDQxXSwgNjU6IFsyLCA0MV0sIDcyOiBbMiwgNDFdLCA4MDogWzIsIDQxXSwgODE6IFsyLCA0MV0sIDgyOiBbMiwgNDFdLCA4MzogWzIsIDQxXSwgODQ6IFsyLCA0MV0sIDg1OiBbMiwgNDFdIH0sIHsgMjA6IDY0LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDI2OiA2NSwgNDc6IFsxLCA2Nl0gfSwgeyAzMDogNjcsIDMzOiBbMiwgNThdLCA2NTogWzIsIDU4XSwgNzI6IFsyLCA1OF0sIDc1OiBbMiwgNThdLCA4MDogWzIsIDU4XSwgODE6IFsyLCA1OF0sIDgyOiBbMiwgNThdLCA4MzogWzIsIDU4XSwgODQ6IFsyLCA1OF0sIDg1OiBbMiwgNThdIH0sIHsgMzM6IFsyLCA2NF0sIDM1OiA2OCwgNjU6IFsyLCA2NF0sIDcyOiBbMiwgNjRdLCA3NTogWzIsIDY0XSwgODA6IFsyLCA2NF0sIDgxOiBbMiwgNjRdLCA4MjogWzIsIDY0XSwgODM6IFsyLCA2NF0sIDg0OiBbMiwgNjRdLCA4NTogWzIsIDY0XSB9LCB7IDIxOiA2OSwgMjM6IFsyLCA1MF0sIDY1OiBbMiwgNTBdLCA3MjogWzIsIDUwXSwgODA6IFsyLCA1MF0sIDgxOiBbMiwgNTBdLCA4MjogWzIsIDUwXSwgODM6IFsyLCA1MF0sIDg0OiBbMiwgNTBdLCA4NTogWzIsIDUwXSB9LCB7IDMzOiBbMiwgOTBdLCA2MTogNzAsIDY1OiBbMiwgOTBdLCA3MjogWzIsIDkwXSwgODA6IFsyLCA5MF0sIDgxOiBbMiwgOTBdLCA4MjogWzIsIDkwXSwgODM6IFsyLCA5MF0sIDg0OiBbMiwgOTBdLCA4NTogWzIsIDkwXSB9LCB7IDIwOiA3NCwgMzM6IFsyLCA4MF0sIDUwOiA3MSwgNjM6IDcyLCA2NDogNzUsIDY1OiBbMSwgNDNdLCA2OTogNzMsIDcwOiA3NiwgNzE6IDc3LCA3MjogWzEsIDc4XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDcyOiBbMSwgNzldIH0sIHsgMjM6IFsyLCA0Ml0sIDMzOiBbMiwgNDJdLCA1NDogWzIsIDQyXSwgNjU6IFsyLCA0Ml0sIDY4OiBbMiwgNDJdLCA3MjogWzIsIDQyXSwgNzU6IFsyLCA0Ml0sIDgwOiBbMiwgNDJdLCA4MTogWzIsIDQyXSwgODI6IFsyLCA0Ml0sIDgzOiBbMiwgNDJdLCA4NDogWzIsIDQyXSwgODU6IFsyLCA0Ml0sIDg3OiBbMSwgNTBdIH0sIHsgMjA6IDc0LCA1MzogODAsIDU0OiBbMiwgODRdLCA2MzogODEsIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY5OiA4MiwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDgzLCA0NzogWzEsIDY2XSB9LCB7IDQ3OiBbMiwgNTVdIH0sIHsgNDogODQsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA0NzogWzIsIDIwXSB9LCB7IDIwOiA4NSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA4NiwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAyNjogODcsIDQ3OiBbMSwgNjZdIH0sIHsgNDc6IFsyLCA1N10gfSwgeyA1OiBbMiwgMTFdLCAxNDogWzIsIDExXSwgMTU6IFsyLCAxMV0sIDE5OiBbMiwgMTFdLCAyOTogWzIsIDExXSwgMzQ6IFsyLCAxMV0sIDM5OiBbMiwgMTFdLCA0NDogWzIsIDExXSwgNDc6IFsyLCAxMV0sIDQ4OiBbMiwgMTFdLCA1MTogWzIsIDExXSwgNTU6IFsyLCAxMV0sIDYwOiBbMiwgMTFdIH0sIHsgMTU6IFsyLCA0OV0sIDE4OiBbMiwgNDldIH0sIHsgMjA6IDc0LCAzMzogWzIsIDg4XSwgNTg6IDg4LCA2MzogODksIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY5OiA5MCwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNjU6IFsyLCA5NF0sIDY2OiA5MSwgNjg6IFsyLCA5NF0sIDcyOiBbMiwgOTRdLCA4MDogWzIsIDk0XSwgODE6IFsyLCA5NF0sIDgyOiBbMiwgOTRdLCA4MzogWzIsIDk0XSwgODQ6IFsyLCA5NF0sIDg1OiBbMiwgOTRdIH0sIHsgNTogWzIsIDI1XSwgMTQ6IFsyLCAyNV0sIDE1OiBbMiwgMjVdLCAxOTogWzIsIDI1XSwgMjk6IFsyLCAyNV0sIDM0OiBbMiwgMjVdLCAzOTogWzIsIDI1XSwgNDQ6IFsyLCAyNV0sIDQ3OiBbMiwgMjVdLCA0ODogWzIsIDI1XSwgNTE6IFsyLCAyNV0sIDU1OiBbMiwgMjVdLCA2MDogWzIsIDI1XSB9LCB7IDIwOiA5MiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNzQsIDMxOiA5MywgMzM6IFsyLCA2MF0sIDYzOiA5NCwgNjQ6IDc1LCA2NTogWzEsIDQzXSwgNjk6IDk1LCA3MDogNzYsIDcxOiA3NywgNzI6IFsxLCA3OF0sIDc1OiBbMiwgNjBdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc0LCAzMzogWzIsIDY2XSwgMzY6IDk2LCA2MzogOTcsIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY5OiA5OCwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3NTogWzIsIDY2XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NCwgMjI6IDk5LCAyMzogWzIsIDUyXSwgNjM6IDEwMCwgNjQ6IDc1LCA2NTogWzEsIDQzXSwgNjk6IDEwMSwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc0LCAzMzogWzIsIDkyXSwgNjI6IDEwMiwgNjM6IDEwMywgNjQ6IDc1LCA2NTogWzEsIDQzXSwgNjk6IDEwNCwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6IFsxLCAxMDVdIH0sIHsgMzM6IFsyLCA3OV0sIDY1OiBbMiwgNzldLCA3MjogWzIsIDc5XSwgODA6IFsyLCA3OV0sIDgxOiBbMiwgNzldLCA4MjogWzIsIDc5XSwgODM6IFsyLCA3OV0sIDg0OiBbMiwgNzldLCA4NTogWzIsIDc5XSB9LCB7IDMzOiBbMiwgODFdIH0sIHsgMjM6IFsyLCAyN10sIDMzOiBbMiwgMjddLCA1NDogWzIsIDI3XSwgNjU6IFsyLCAyN10sIDY4OiBbMiwgMjddLCA3MjogWzIsIDI3XSwgNzU6IFsyLCAyN10sIDgwOiBbMiwgMjddLCA4MTogWzIsIDI3XSwgODI6IFsyLCAyN10sIDgzOiBbMiwgMjddLCA4NDogWzIsIDI3XSwgODU6IFsyLCAyN10gfSwgeyAyMzogWzIsIDI4XSwgMzM6IFsyLCAyOF0sIDU0OiBbMiwgMjhdLCA2NTogWzIsIDI4XSwgNjg6IFsyLCAyOF0sIDcyOiBbMiwgMjhdLCA3NTogWzIsIDI4XSwgODA6IFsyLCAyOF0sIDgxOiBbMiwgMjhdLCA4MjogWzIsIDI4XSwgODM6IFsyLCAyOF0sIDg0OiBbMiwgMjhdLCA4NTogWzIsIDI4XSB9LCB7IDIzOiBbMiwgMzBdLCAzMzogWzIsIDMwXSwgNTQ6IFsyLCAzMF0sIDY4OiBbMiwgMzBdLCA3MTogMTA2LCA3MjogWzEsIDEwN10sIDc1OiBbMiwgMzBdIH0sIHsgMjM6IFsyLCA5OF0sIDMzOiBbMiwgOThdLCA1NDogWzIsIDk4XSwgNjg6IFsyLCA5OF0sIDcyOiBbMiwgOThdLCA3NTogWzIsIDk4XSB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDczOiBbMSwgMTA4XSwgNzU6IFsyLCA0NV0sIDgwOiBbMiwgNDVdLCA4MTogWzIsIDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1XSwgODU6IFsyLCA0NV0sIDg3OiBbMiwgNDVdIH0sIHsgMjM6IFsyLCA0NF0sIDMzOiBbMiwgNDRdLCA1NDogWzIsIDQ0XSwgNjU6IFsyLCA0NF0sIDY4OiBbMiwgNDRdLCA3MjogWzIsIDQ0XSwgNzU6IFsyLCA0NF0sIDgwOiBbMiwgNDRdLCA4MTogWzIsIDQ0XSwgODI6IFsyLCA0NF0sIDgzOiBbMiwgNDRdLCA4NDogWzIsIDQ0XSwgODU6IFsyLCA0NF0sIDg3OiBbMiwgNDRdIH0sIHsgNTQ6IFsxLCAxMDldIH0sIHsgNTQ6IFsyLCA4M10sIDY1OiBbMiwgODNdLCA3MjogWzIsIDgzXSwgODA6IFsyLCA4M10sIDgxOiBbMiwgODNdLCA4MjogWzIsIDgzXSwgODM6IFsyLCA4M10sIDg0OiBbMiwgODNdLCA4NTogWzIsIDgzXSB9LCB7IDU0OiBbMiwgODVdIH0sIHsgNTogWzIsIDEzXSwgMTQ6IFsyLCAxM10sIDE1OiBbMiwgMTNdLCAxOTogWzIsIDEzXSwgMjk6IFsyLCAxM10sIDM0OiBbMiwgMTNdLCAzOTogWzIsIDEzXSwgNDQ6IFsyLCAxM10sIDQ3OiBbMiwgMTNdLCA0ODogWzIsIDEzXSwgNTE6IFsyLCAxM10sIDU1OiBbMiwgMTNdLCA2MDogWzIsIDEzXSB9LCB7IDM4OiA1NSwgMzk6IFsxLCA1N10sIDQzOiA1NiwgNDQ6IFsxLCA1OF0sIDQ1OiAxMTEsIDQ2OiAxMTAsIDQ3OiBbMiwgNzZdIH0sIHsgMzM6IFsyLCA3MF0sIDQwOiAxMTIsIDY1OiBbMiwgNzBdLCA3MjogWzIsIDcwXSwgNzU6IFsyLCA3MF0sIDgwOiBbMiwgNzBdLCA4MTogWzIsIDcwXSwgODI6IFsyLCA3MF0sIDgzOiBbMiwgNzBdLCA4NDogWzIsIDcwXSwgODU6IFsyLCA3MF0gfSwgeyA0NzogWzIsIDE4XSB9LCB7IDU6IFsyLCAxNF0sIDE0OiBbMiwgMTRdLCAxNTogWzIsIDE0XSwgMTk6IFsyLCAxNF0sIDI5OiBbMiwgMTRdLCAzNDogWzIsIDE0XSwgMzk6IFsyLCAxNF0sIDQ0OiBbMiwgMTRdLCA0NzogWzIsIDE0XSwgNDg6IFsyLCAxNF0sIDUxOiBbMiwgMTRdLCA1NTogWzIsIDE0XSwgNjA6IFsyLCAxNF0gfSwgeyAzMzogWzEsIDExM10gfSwgeyAzMzogWzIsIDg3XSwgNjU6IFsyLCA4N10sIDcyOiBbMiwgODddLCA4MDogWzIsIDg3XSwgODE6IFsyLCA4N10sIDgyOiBbMiwgODddLCA4MzogWzIsIDg3XSwgODQ6IFsyLCA4N10sIDg1OiBbMiwgODddIH0sIHsgMzM6IFsyLCA4OV0gfSwgeyAyMDogNzQsIDYzOiAxMTUsIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY3OiAxMTQsIDY4OiBbMiwgOTZdLCA2OTogMTE2LCA3MDogNzYsIDcxOiA3NywgNzI6IFsxLCA3OF0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAzMzogWzEsIDExN10gfSwgeyAzMjogMTE4LCAzMzogWzIsIDYyXSwgNzQ6IDExOSwgNzU6IFsxLCAxMjBdIH0sIHsgMzM6IFsyLCA1OV0sIDY1OiBbMiwgNTldLCA3MjogWzIsIDU5XSwgNzU6IFsyLCA1OV0sIDgwOiBbMiwgNTldLCA4MTogWzIsIDU5XSwgODI6IFsyLCA1OV0sIDgzOiBbMiwgNTldLCA4NDogWzIsIDU5XSwgODU6IFsyLCA1OV0gfSwgeyAzMzogWzIsIDYxXSwgNzU6IFsyLCA2MV0gfSwgeyAzMzogWzIsIDY4XSwgMzc6IDEyMSwgNzQ6IDEyMiwgNzU6IFsxLCAxMjBdIH0sIHsgMzM6IFsyLCA2NV0sIDY1OiBbMiwgNjVdLCA3MjogWzIsIDY1XSwgNzU6IFsyLCA2NV0sIDgwOiBbMiwgNjVdLCA4MTogWzIsIDY1XSwgODI6IFsyLCA2NV0sIDgzOiBbMiwgNjVdLCA4NDogWzIsIDY1XSwgODU6IFsyLCA2NV0gfSwgeyAzMzogWzIsIDY3XSwgNzU6IFsyLCA2N10gfSwgeyAyMzogWzEsIDEyM10gfSwgeyAyMzogWzIsIDUxXSwgNjU6IFsyLCA1MV0sIDcyOiBbMiwgNTFdLCA4MDogWzIsIDUxXSwgODE6IFsyLCA1MV0sIDgyOiBbMiwgNTFdLCA4MzogWzIsIDUxXSwgODQ6IFsyLCA1MV0sIDg1OiBbMiwgNTFdIH0sIHsgMjM6IFsyLCA1M10gfSwgeyAzMzogWzEsIDEyNF0gfSwgeyAzMzogWzIsIDkxXSwgNjU6IFsyLCA5MV0sIDcyOiBbMiwgOTFdLCA4MDogWzIsIDkxXSwgODE6IFsyLCA5MV0sIDgyOiBbMiwgOTFdLCA4MzogWzIsIDkxXSwgODQ6IFsyLCA5MV0sIDg1OiBbMiwgOTFdIH0sIHsgMzM6IFsyLCA5M10gfSwgeyA1OiBbMiwgMjJdLCAxNDogWzIsIDIyXSwgMTU6IFsyLCAyMl0sIDE5OiBbMiwgMjJdLCAyOTogWzIsIDIyXSwgMzQ6IFsyLCAyMl0sIDM5OiBbMiwgMjJdLCA0NDogWzIsIDIyXSwgNDc6IFsyLCAyMl0sIDQ4OiBbMiwgMjJdLCA1MTogWzIsIDIyXSwgNTU6IFsyLCAyMl0sIDYwOiBbMiwgMjJdIH0sIHsgMjM6IFsyLCA5OV0sIDMzOiBbMiwgOTldLCA1NDogWzIsIDk5XSwgNjg6IFsyLCA5OV0sIDcyOiBbMiwgOTldLCA3NTogWzIsIDk5XSB9LCB7IDczOiBbMSwgMTA4XSB9LCB7IDIwOiA3NCwgNjM6IDEyNSwgNjQ6IDc1LCA2NTogWzEsIDQzXSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1OiBbMiwgMjNdLCAxNDogWzIsIDIzXSwgMTU6IFsyLCAyM10sIDE5OiBbMiwgMjNdLCAyOTogWzIsIDIzXSwgMzQ6IFsyLCAyM10sIDM5OiBbMiwgMjNdLCA0NDogWzIsIDIzXSwgNDc6IFsyLCAyM10sIDQ4OiBbMiwgMjNdLCA1MTogWzIsIDIzXSwgNTU6IFsyLCAyM10sIDYwOiBbMiwgMjNdIH0sIHsgNDc6IFsyLCAxOV0gfSwgeyA0NzogWzIsIDc3XSB9LCB7IDIwOiA3NCwgMzM6IFsyLCA3Ml0sIDQxOiAxMjYsIDYzOiAxMjcsIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY5OiAxMjgsIDcwOiA3NiwgNzE6IDc3LCA3MjogWzEsIDc4XSwgNzU6IFsyLCA3Ml0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1OiBbMiwgMjRdLCAxNDogWzIsIDI0XSwgMTU6IFsyLCAyNF0sIDE5OiBbMiwgMjRdLCAyOTogWzIsIDI0XSwgMzQ6IFsyLCAyNF0sIDM5OiBbMiwgMjRdLCA0NDogWzIsIDI0XSwgNDc6IFsyLCAyNF0sIDQ4OiBbMiwgMjRdLCA1MTogWzIsIDI0XSwgNTU6IFsyLCAyNF0sIDYwOiBbMiwgMjRdIH0sIHsgNjg6IFsxLCAxMjldIH0sIHsgNjU6IFsyLCA5NV0sIDY4OiBbMiwgOTVdLCA3MjogWzIsIDk1XSwgODA6IFsyLCA5NV0sIDgxOiBbMiwgOTVdLCA4MjogWzIsIDk1XSwgODM6IFsyLCA5NV0sIDg0OiBbMiwgOTVdLCA4NTogWzIsIDk1XSB9LCB7IDY4OiBbMiwgOTddIH0sIHsgNTogWzIsIDIxXSwgMTQ6IFsyLCAyMV0sIDE1OiBbMiwgMjFdLCAxOTogWzIsIDIxXSwgMjk6IFsyLCAyMV0sIDM0OiBbMiwgMjFdLCAzOTogWzIsIDIxXSwgNDQ6IFsyLCAyMV0sIDQ3OiBbMiwgMjFdLCA0ODogWzIsIDIxXSwgNTE6IFsyLCAyMV0sIDU1OiBbMiwgMjFdLCA2MDogWzIsIDIxXSB9LCB7IDMzOiBbMSwgMTMwXSB9LCB7IDMzOiBbMiwgNjNdIH0sIHsgNzI6IFsxLCAxMzJdLCA3NjogMTMxIH0sIHsgMzM6IFsxLCAxMzNdIH0sIHsgMzM6IFsyLCA2OV0gfSwgeyAxNTogWzIsIDEyXSwgMTg6IFsyLCAxMl0gfSwgeyAxNDogWzIsIDI2XSwgMTU6IFsyLCAyNl0sIDE5OiBbMiwgMjZdLCAyOTogWzIsIDI2XSwgMzQ6IFsyLCAyNl0sIDQ3OiBbMiwgMjZdLCA0ODogWzIsIDI2XSwgNTE6IFsyLCAyNl0sIDU1OiBbMiwgMjZdLCA2MDogWzIsIDI2XSB9LCB7IDIzOiBbMiwgMzFdLCAzMzogWzIsIDMxXSwgNTQ6IFsyLCAzMV0sIDY4OiBbMiwgMzFdLCA3MjogWzIsIDMxXSwgNzU6IFsyLCAzMV0gfSwgeyAzMzogWzIsIDc0XSwgNDI6IDEzNCwgNzQ6IDEzNSwgNzU6IFsxLCAxMjBdIH0sIHsgMzM6IFsyLCA3MV0sIDY1OiBbMiwgNzFdLCA3MjogWzIsIDcxXSwgNzU6IFsyLCA3MV0sIDgwOiBbMiwgNzFdLCA4MTogWzIsIDcxXSwgODI6IFsyLCA3MV0sIDgzOiBbMiwgNzFdLCA4NDogWzIsIDcxXSwgODU6IFsyLCA3MV0gfSwgeyAzMzogWzIsIDczXSwgNzU6IFsyLCA3M10gfSwgeyAyMzogWzIsIDI5XSwgMzM6IFsyLCAyOV0sIDU0OiBbMiwgMjldLCA2NTogWzIsIDI5XSwgNjg6IFsyLCAyOV0sIDcyOiBbMiwgMjldLCA3NTogWzIsIDI5XSwgODA6IFsyLCAyOV0sIDgxOiBbMiwgMjldLCA4MjogWzIsIDI5XSwgODM6IFsyLCAyOV0sIDg0OiBbMiwgMjldLCA4NTogWzIsIDI5XSB9LCB7IDE0OiBbMiwgMTVdLCAxNTogWzIsIDE1XSwgMTk6IFsyLCAxNV0sIDI5OiBbMiwgMTVdLCAzNDogWzIsIDE1XSwgMzk6IFsyLCAxNV0sIDQ0OiBbMiwgMTVdLCA0NzogWzIsIDE1XSwgNDg6IFsyLCAxNV0sIDUxOiBbMiwgMTVdLCA1NTogWzIsIDE1XSwgNjA6IFsyLCAxNV0gfSwgeyA3MjogWzEsIDEzN10sIDc3OiBbMSwgMTM2XSB9LCB7IDcyOiBbMiwgMTAwXSwgNzc6IFsyLCAxMDBdIH0sIHsgMTQ6IFsyLCAxNl0sIDE1OiBbMiwgMTZdLCAxOTogWzIsIDE2XSwgMjk6IFsyLCAxNl0sIDM0OiBbMiwgMTZdLCA0NDogWzIsIDE2XSwgNDc6IFsyLCAxNl0sIDQ4OiBbMiwgMTZdLCA1MTogWzIsIDE2XSwgNTU6IFsyLCAxNl0sIDYwOiBbMiwgMTZdIH0sIHsgMzM6IFsxLCAxMzhdIH0sIHsgMzM6IFsyLCA3NV0gfSwgeyAzMzogWzIsIDMyXSB9LCB7IDcyOiBbMiwgMTAxXSwgNzc6IFsyLCAxMDFdIH0sIHsgMTQ6IFsyLCAxN10sIDE1OiBbMiwgMTddLCAxOTogWzIsIDE3XSwgMjk6IFsyLCAxN10sIDM0OiBbMiwgMTddLCAzOTogWzIsIDE3XSwgNDQ6IFsyLCAxN10sIDQ3OiBbMiwgMTddLCA0ODogWzIsIDE3XSwgNTE6IFsyLCAxN10sIDU1OiBbMiwgMTddLCA2MDogWzIsIDE3XSB9XSxcbiAgICAgICAgZGVmYXVsdEFjdGlvbnM6IHsgNDogWzIsIDFdLCA1NDogWzIsIDU1XSwgNTY6IFsyLCAyMF0sIDYwOiBbMiwgNTddLCA3MzogWzIsIDgxXSwgODI6IFsyLCA4NV0sIDg2OiBbMiwgMThdLCA5MDogWzIsIDg5XSwgMTAxOiBbMiwgNTNdLCAxMDQ6IFsyLCA5M10sIDExMDogWzIsIDE5XSwgMTExOiBbMiwgNzddLCAxMTY6IFsyLCA5N10sIDExOTogWzIsIDYzXSwgMTIyOiBbMiwgNjldLCAxMzU6IFsyLCA3NV0sIDEzNjogWzIsIDMyXSB9LFxuICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH0sXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICAgICAgICAgIHN0YWNrID0gWzBdLFxuICAgICAgICAgICAgICAgIHZzdGFjayA9IFtudWxsXSxcbiAgICAgICAgICAgICAgICBsc3RhY2sgPSBbXSxcbiAgICAgICAgICAgICAgICB0YWJsZSA9IHRoaXMudGFibGUsXG4gICAgICAgICAgICAgICAgeXl0ZXh0ID0gXCJcIixcbiAgICAgICAgICAgICAgICB5eWxpbmVubyA9IDAsXG4gICAgICAgICAgICAgICAgeXlsZW5nID0gMCxcbiAgICAgICAgICAgICAgICByZWNvdmVyaW5nID0gMCxcbiAgICAgICAgICAgICAgICBURVJST1IgPSAyLFxuICAgICAgICAgICAgICAgIEVPRiA9IDE7XG4gICAgICAgICAgICB0aGlzLmxleGVyLnNldElucHV0KGlucHV0KTtcbiAgICAgICAgICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5O1xuICAgICAgICAgICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7XG4gICAgICAgICAgICB0aGlzLnl5LnBhcnNlciA9IHRoaXM7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpIHRoaXMubGV4ZXIueXlsbG9jID0ge307XG4gICAgICAgICAgICB2YXIgeXlsb2MgPSB0aGlzLmxleGVyLnl5bGxvYztcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICAgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlcztcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy55eS5wYXJzZUVycm9yID09PSBcImZ1bmN0aW9uXCIpIHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXkucGFyc2VFcnJvcjtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHBvcFN0YWNrKG4pIHtcbiAgICAgICAgICAgICAgICBzdGFjay5sZW5ndGggPSBzdGFjay5sZW5ndGggLSAyICogbjtcbiAgICAgICAgICAgICAgICB2c3RhY2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47XG4gICAgICAgICAgICAgICAgbHN0YWNrLmxlbmd0aCA9IGxzdGFjay5sZW5ndGggLSBuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICAgICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYubGV4ZXIubGV4KCkgfHwgMTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzeW1ib2wsXG4gICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wsXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgICAgcixcbiAgICAgICAgICAgICAgICB5eXZhbCA9IHt9LFxuICAgICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgICAgbGVuLFxuICAgICAgICAgICAgICAgIG5ld1N0YXRlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkO1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlY292ZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaChcIidcIiArIHRoaXMudGVybWluYWxzX1twXSArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6XFxuXCIgKyB0aGlzLmxleGVyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IDEgPyBcImVuZCBvZiBpbnB1dFwiIDogXCInXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyc2VFcnJvcihlcnJTdHIsIHsgdGV4dDogdGhpcy5sZXhlci5tYXRjaCwgdG9rZW46IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCwgbGluZTogdGhpcy5sZXhlci55eWxpbmVubywgbG9jOiB5eWxvYywgZXhwZWN0ZWQ6IGV4cGVjdGVkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhY3Rpb25bMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBhY3Rpb24ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogXCIgKyBzdGF0ZSArIFwiLCB0b2tlbjogXCIgKyBzeW1ib2wpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVzaCh0aGlzLmxleGVyLnl5dGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsc3RhY2sucHVzaCh0aGlzLmxleGVyLnl5bGxvYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVFcnJvclN5bWJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dGV4dCA9IHRoaXMubGV4ZXIueXl0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bGluZW5vID0gdGhpcy5sZXhlci55eWxpbmVubztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyaW5nID4gMCkgcmVjb3ZlcmluZy0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVFcnJvclN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICAgICAgICAgICAgICB5eXZhbC5fJCA9IHsgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLCBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLCBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLCBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtbiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHl5dmFsLCB5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHRoaXMueXksIGFjdGlvblsxXSwgdnN0YWNrLCBsc3RhY2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKiBKaXNvbiBnZW5lcmF0ZWQgbGV4ZXIgKi9cbiAgICB2YXIgbGV4ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGV4ZXIgPSB7IEVPRjogMSxcbiAgICAgICAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0SW5wdXQ6IGZ1bmN0aW9uIHNldElucHV0KGlucHV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fbGVzcyA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMueXlsaW5lbm8gPSB0aGlzLnl5bGVuZyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFsnSU5JVElBTCddO1xuICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jID0geyBmaXJzdF9saW5lOiAxLCBmaXJzdF9jb2x1bW46IDAsIGxhc3RfbGluZTogMSwgbGFzdF9jb2x1bW46IDAgfTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwgMF07XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbiBpbnB1dCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTtcbiAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGluZW5vKys7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5wdXQ6IGZ1bmN0aW9uIHVucHV0KGNoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICAgICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aCAtIGxlbiAtIDEpO1xuICAgICAgICAgICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVuO1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjtcbiAgICAgICAgICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9yZTogZnVuY3Rpb24gbW9yZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsZXNzOiBmdW5jdGlvbiBsZXNzKG4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24gcGFzdElucHV0KCkge1xuICAgICAgICAgICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/ICcuLi4nIDogJycpICsgcGFzdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24gdXBjb21pbmdJbnB1dCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgICAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAgLSBuZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyAnLi4uJyA6ICcnKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNob3dQb3NpdGlvbjogZnVuY3Rpb24gc2hvd1Bvc2l0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpO1xuICAgICAgICAgICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyBcIlxcblwiICsgYyArIFwiXlwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICB2YXIgdG9rZW4sIG1hdGNoLCB0ZW1wTWF0Y2gsIGluZGV4LCBjb2wsIGxpbmVzO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBydWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXFxyP1xcbj8vKVswXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aCB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsIHRoaXMueXksIHRoaXMsIHJ1bGVzW2luZGV4XSwgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSAmJiB0aGlzLl9pbnB1dCkgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikgcmV0dXJuIHRva2VuO2Vsc2UgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoJ0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXlsaW5lbm8gKyAxKSArICcuIFVucmVjb2duaXplZCB0ZXh0LlxcbicgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7IHRleHQ6IFwiXCIsIHRva2VuOiBudWxsLCBsaW5lOiB0aGlzLnl5bGluZW5vIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJlZ2luOiBmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2N1cnJlbnRSdWxlczogZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMl07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7XG4gICAgICAgICAgICB9IH07XG4gICAgICAgIGxleGVyLm9wdGlvbnMgPSB7fTtcbiAgICAgICAgbGV4ZXIucGVyZm9ybUFjdGlvbiA9IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVCkge1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBzdHJpcChzdGFydCwgZW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnN1YnN0cmluZyhzdGFydCwgeXlfLnl5bGVuZyAtIGVuZCArIHN0YXJ0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIFlZU1RBVEUgPSBZWV9TVEFSVDtcbiAgICAgICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHl5Xy55eXRleHQuc2xpY2UoLTIpID09PSBcIlxcXFxcXFxcXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbihcIm11XCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKFwiZW11XCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbihcIm11XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh5eV8ueXl0ZXh0KSByZXR1cm4gMTU7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTtyZXR1cm4gMTU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBTaG91bGQgYmUgdXNpbmcgYHRoaXMudG9wU3RhdGUoKWAgYmVsb3csIGJ1dCBpdCBjdXJyZW50bHlcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2Vjb25kIHRvcCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCB0b3AuIE9wZW5lZCBhblxuICAgICAgICAgICAgICAgICAgICAvLyBpc3N1ZSBhYm91dCBpdCBhdCBodHRwczovL2dpdGh1Yi5jb20vemFhY2gvamlzb24vaXNzdWVzLzI5MVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdID09PSAncmF3Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoNSwgOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0VORF9SQVdfQkxPQ0snO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTQ7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxOTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIzO1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA1NTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDYwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA0NztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA1MTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHV0KHl5Xy55eXRleHQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ2NvbScpO1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE0O1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA0ODtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDczO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA3MjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg3O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI4OlxuICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDU0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDMwOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDMzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0gc3RyaXAoMSwgMikucmVwbGFjZSgvXFxcXFwiL2csICdcIicpO3JldHVybiA4MDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcXFwnL2csIFwiJ1wiKTtyZXR1cm4gODA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA4NTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gODI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA4MztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gODE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA3NTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc3O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnJlcGxhY2UoL1xcXFwoW1xcXFxcXF1dKS9nLCAnJDEnKTtyZXR1cm4gNzI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnSU5WQUxJRCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA1O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV4ZXIucnVsZXMgPSBbL14oPzpbXlxceDAwXSo/KD89KFxce1xceykpKS8sIC9eKD86W15cXHgwMF0rKS8sIC9eKD86W15cXHgwMF17Mix9Pyg/PShcXHtcXHt8XFxcXFxce1xce3xcXFxcXFxcXFxce1xce3wkKSkpLywgL14oPzpcXHtcXHtcXHtcXHsoPz1bXlxcL10pKS8sIC9eKD86XFx7XFx7XFx7XFx7XFwvW15cXHMhXCIjJS0sXFwuXFwvOy0+QFxcWy1cXF5gXFx7LX5dKyg/PVs9fVxcc1xcLy5dKVxcfVxcfVxcfVxcfSkvLCAvXig/OlteXFx4MDBdKz8oPz0oXFx7XFx7XFx7XFx7KSkpLywgL14oPzpbXFxzXFxTXSo/LS0ofik/XFx9XFx9KS8sIC9eKD86XFwoKS8sIC9eKD86XFwpKS8sIC9eKD86XFx7XFx7XFx7XFx7KS8sIC9eKD86XFx9XFx9XFx9XFx9KS8sIC9eKD86XFx7XFx7KH4pPz4pLywgL14oPzpcXHtcXHsofik/Iz4pLywgL14oPzpcXHtcXHsofik/I1xcKj8pLywgL14oPzpcXHtcXHsofik/XFwvKS8sIC9eKD86XFx7XFx7KH4pP1xcXlxccyoofik/XFx9XFx9KS8sIC9eKD86XFx7XFx7KH4pP1xccyplbHNlXFxzKih+KT9cXH1cXH0pLywgL14oPzpcXHtcXHsofik/XFxeKS8sIC9eKD86XFx7XFx7KH4pP1xccyplbHNlXFxiKS8sIC9eKD86XFx7XFx7KH4pP1xceykvLCAvXig/Olxce1xceyh+KT8mKS8sIC9eKD86XFx7XFx7KH4pPyEtLSkvLCAvXig/Olxce1xceyh+KT8hW1xcc1xcU10qP1xcfVxcfSkvLCAvXig/Olxce1xceyh+KT9cXCo/KS8sIC9eKD86PSkvLCAvXig/OlxcLlxcLikvLCAvXig/OlxcLig/PShbPX59XFxzXFwvLil8XSkpKS8sIC9eKD86W1xcLy5dKS8sIC9eKD86XFxzKykvLCAvXig/OlxcfSh+KT9cXH1cXH0pLywgL14oPzoofik/XFx9XFx9KS8sIC9eKD86XCIoXFxcXFtcIl18W15cIl0pKlwiKS8sIC9eKD86JyhcXFxcWyddfFteJ10pKicpLywgL14oPzpAKS8sIC9eKD86dHJ1ZSg/PShbfn1cXHMpXSkpKS8sIC9eKD86ZmFsc2UoPz0oW359XFxzKV0pKSkvLCAvXig/OnVuZGVmaW5lZCg/PShbfn1cXHMpXSkpKS8sIC9eKD86bnVsbCg/PShbfn1cXHMpXSkpKS8sIC9eKD86LT9bMC05XSsoPzpcXC5bMC05XSspPyg/PShbfn1cXHMpXSkpKS8sIC9eKD86YXNcXHMrXFx8KS8sIC9eKD86XFx8KS8sIC9eKD86KFteXFxzIVwiIyUtLFxcLlxcLzstPkBcXFstXFxeYFxcey1+XSsoPz0oWz1+fVxcc1xcLy4pfF0pKSkpLywgL14oPzpcXFsoXFxcXFxcXXxbXlxcXV0pKlxcXSkvLCAvXig/Oi4pLywgL14oPzokKS9dO1xuICAgICAgICBsZXhlci5jb25kaXRpb25zID0geyBcIm11XCI6IHsgXCJydWxlc1wiOiBbNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJlbXVcIjogeyBcInJ1bGVzXCI6IFsyXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjb21cIjogeyBcInJ1bGVzXCI6IFs2XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJyYXdcIjogeyBcInJ1bGVzXCI6IFszLCA0LCA1XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgMSwgNDRdLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfTtcbiAgICAgICAgcmV0dXJuIGxleGVyO1xuICAgIH0pKCk7XG4gICAgcGFyc2VyLmxleGVyID0gbGV4ZXI7XG4gICAgZnVuY3Rpb24gUGFyc2VyKCkge1xuICAgICAgICB0aGlzLnl5ID0ge307XG4gICAgfVBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjtcbiAgICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSkoKTtleHBvcnRzW1wiZGVmYXVsdFwiXSA9IGhhbmRsZWJhcnM7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDNCaGNuTmxjaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096dEJRVVZCTEVsQlFVa3NWVUZCVlN4SFFVRkhMRU5CUVVNc1dVRkJWVHRCUVVNMVFpeFJRVUZKTEUxQlFVMHNSMEZCUnl4RlFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFdEJRVXNzUjBGQlNTeEZRVUZITzBGQlF6RkRMRlZCUVVVc1JVRkJSU3hGUVVGRk8wRkJRMDRzWjBKQlFWRXNSVUZCUlN4RlFVRkRMRTlCUVU4c1JVRkJReXhEUVVGRExFVkJRVU1zVFVGQlRTeEZRVUZETEVOQlFVTXNSVUZCUXl4VFFVRlRMRVZCUVVNc1EwRkJReXhGUVVGRExFdEJRVXNzUlVGQlF5eERRVUZETEVWQlFVTXNjVUpCUVhGQ0xFVkJRVU1zUTBGQlF5eEZRVUZETEZkQlFWY3NSVUZCUXl4RFFVRkRMRVZCUVVNc1ZVRkJWU3hGUVVGRExFTkJRVU1zUlVGQlF5eFBRVUZQTEVWQlFVTXNRMEZCUXl4RlFVRkRMRlZCUVZVc1JVRkJReXhGUVVGRkxFVkJRVU1zVTBGQlV5eEZRVUZETEVWQlFVVXNSVUZCUXl4alFVRmpMRVZCUVVNc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eEZRVUZGTEVWQlFVTXNVMEZCVXl4RlFVRkRMRVZCUVVVc1JVRkJReXhUUVVGVExFVkJRVU1zUlVGQlJTeEZRVUZETEdOQlFXTXNSVUZCUXl4RlFVRkZMRVZCUVVNc2MwSkJRWE5DTEVWQlFVTXNSVUZCUlN4RlFVRkRMR1ZCUVdVc1JVRkJReXhGUVVGRkxFVkJRVU1zWjBKQlFXZENMRVZCUVVNc1JVRkJSU3hGUVVGRExGbEJRVmtzUlVGQlF5eEZRVUZGTEVWQlFVTXNNRUpCUVRCQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEhOQ1FVRnpRaXhGUVVGRExFVkJRVVVzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXhGUVVGRkxFVkJRVU1zVjBGQlZ5eEZRVUZETEVWQlFVVXNSVUZCUXl4bFFVRmxMRVZCUVVNc1JVRkJSU3hGUVVGRExGbEJRVmtzUlVGQlF5eEZRVUZGTEVWQlFVTXNZVUZCWVN4RlFVRkRMRVZCUVVVc1JVRkJReXhsUVVGbExFVkJRVU1zUlVGQlJTeEZRVUZETEZsQlFWa3NSVUZCUXl4RlFVRkZMRVZCUVVNc2RVSkJRWFZDTEVWQlFVTXNSVUZCUlN4RlFVRkRMRzFDUVVGdFFpeEZRVUZETEVWQlFVVXNSVUZCUXl4dFFrRkJiVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNUMEZCVHl4RlFVRkRMRVZCUVVVc1JVRkJReXhqUVVGakxFVkJRVU1zUlVGQlJTeEZRVUZETEhsQ1FVRjVRaXhGUVVGRExFVkJRVVVzUlVGQlF5eHhRa0ZCY1VJc1JVRkJReXhGUVVGRkxFVkJRVU1zY1VKQlFYRkNMRVZCUVVNc1JVRkJSU3hGUVVGRExHdENRVUZyUWl4RlFVRkRMRVZCUVVVc1JVRkJReXh2UWtGQmIwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc09FSkJRVGhDTEVWQlFVTXNSVUZCUlN4RlFVRkRMREJDUVVFd1FpeEZRVUZETEVWQlFVVXNSVUZCUXl3d1FrRkJNRUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNiVUpCUVcxQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEZOQlFWTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1kwRkJZeXhGUVVGRExFVkJRVVVzUlVGQlF5eHpRa0ZCYzBJc1JVRkJReXhGUVVGRkxFVkJRVU1zWlVGQlpTeEZRVUZETEVWQlFVVXNSVUZCUXl4TlFVRk5MRVZCUVVNc1JVRkJSU3hGUVVGRExITkNRVUZ6UWl4RlFVRkRMRVZCUVVVc1JVRkJReXhyUWtGQmEwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1owSkJRV2RDTEVWQlFVTXNSVUZCUlN4RlFVRkRMSE5DUVVGelFpeEZRVUZETEVWQlFVVXNSVUZCUXl4clFrRkJhMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNhVUpCUVdsQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEdOQlFXTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1lVRkJZU3hGUVVGRExFVkJRVVVzUlVGQlF5eHhRa0ZCY1VJc1JVRkJReXhGUVVGRkxFVkJRVU1zYVVKQlFXbENMRVZCUVVNc1JVRkJSU3hGUVVGRExHdENRVUZyUWl4RlFVRkRMRVZCUVVVc1JVRkJReXh2UWtGQmIwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc09FSkJRVGhDTEVWQlFVTXNSVUZCUlN4RlFVRkRMREJDUVVFd1FpeEZRVUZETEVWQlFVVXNSVUZCUXl4UFFVRlBMRVZCUVVNc1JVRkJSU3hGUVVGRExFOUJRVThzUlVGQlF5eEZRVUZGTEVWQlFVTXNXVUZCV1N4RlFVRkRMRVZCUVVVc1JVRkJReXh0UWtGQmJVSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1pVRkJaU3hGUVVGRExFVkJRVVVzUlVGQlF5eGhRVUZoTEVWQlFVTXNSVUZCUlN4RlFVRkRMRTFCUVUwc1JVRkJReXhGUVVGRkxFVkJRVU1zZFVKQlFYVkNMRVZCUVVNc1JVRkJSU3hGUVVGRExHRkJRV0VzUlVGQlF5eEZRVUZGTEVWQlFVTXNTVUZCU1N4RlFVRkRMRVZCUVVVc1JVRkJReXhSUVVGUkxFVkJRVU1zUlVGQlJTeEZRVUZETEdGQlFXRXNSVUZCUXl4RlFVRkZMRVZCUVVNc2JVSkJRVzFDTEVWQlFVTXNSVUZCUlN4RlFVRkRMRGhDUVVFNFFpeEZRVUZETEVWQlFVVXNSVUZCUXl4dlFrRkJiMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNUVUZCVFN4RlFVRkRMRVZCUVVVc1JVRkJReXhWUVVGVkxFVkJRVU1zUlVGQlJTeEZRVUZETEZGQlFWRXNSVUZCUXl4RlFVRkZMRVZCUVVNc1VVRkJVU3hGUVVGRExFVkJRVVVzUlVGQlF5eFRRVUZUTEVWQlFVTXNSVUZCUlN4RlFVRkRMRmRCUVZjc1JVRkJReXhGUVVGRkxFVkJRVU1zVFVGQlRTeEZRVUZETEVWQlFVVXNSVUZCUXl4TlFVRk5MRVZCUVVNc1JVRkJSU3hGUVVGRExHTkJRV01zUlVGQlF5eEZRVUZGTEVWQlFVTXNTMEZCU3l4RlFVRkRMRVZCUVVVc1JVRkJReXhUUVVGVExFVkJRVU1zUTBGQlF5eEZRVUZETEUxQlFVMHNSVUZCUXl4RFFVRkRMRVZCUVVNN1FVRkROVzFFTEd0Q1FVRlZMRVZCUVVVc1JVRkJReXhEUVVGRExFVkJRVU1zVDBGQlR5eEZRVUZETEVOQlFVTXNSVUZCUXl4TFFVRkxMRVZCUVVNc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eEZRVUZGTEVWQlFVTXNVMEZCVXl4RlFVRkRMRVZCUVVVc1JVRkJReXhsUVVGbExFVkJRVU1zUlVGQlJTeEZRVUZETEdkQ1FVRm5RaXhGUVVGRExFVkJRVVVzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXhGUVVGRkxFVkJRVU1zV1VGQldTeEZRVUZETEVWQlFVVXNSVUZCUXl4UFFVRlBMRVZCUVVNc1JVRkJSU3hGUVVGRExHTkJRV01zUlVGQlF5eEZRVUZGTEVWQlFVTXNiMEpCUVc5Q0xFVkJRVU1zUlVGQlJTeEZRVUZETEZOQlFWTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1pVRkJaU3hGUVVGRExFVkJRVVVzUlVGQlF5eE5RVUZOTEVWQlFVTXNSVUZCUlN4RlFVRkRMR2RDUVVGblFpeEZRVUZETEVWQlFVVXNSVUZCUXl4cFFrRkJhVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNZMEZCWXl4RlFVRkRMRVZCUVVVc1JVRkJReXh2UWtGQmIwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1dVRkJXU3hGUVVGRExFVkJRVVVzUlVGQlF5eGhRVUZoTEVWQlFVTXNSVUZCUlN4RlFVRkRMRWxCUVVrc1JVRkJReXhGUVVGRkxFVkJRVU1zVVVGQlVTeEZRVUZETEVWQlFVVXNSVUZCUXl4dFFrRkJiVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNiMEpCUVc5Q0xFVkJRVU1zUlVGQlJTeEZRVUZETEZGQlFWRXNSVUZCUXl4RlFVRkZMRVZCUVVNc1VVRkJVU3hGUVVGRExFVkJRVVVzUlVGQlF5eFRRVUZUTEVWQlFVTXNSVUZCUlN4RlFVRkRMRmRCUVZjc1JVRkJReXhGUVVGRkxFVkJRVU1zVFVGQlRTeEZRVUZETEVWQlFVVXNSVUZCUXl4TlFVRk5MRVZCUVVNc1JVRkJSU3hGUVVGRExFdEJRVXNzUlVGQlF6dEJRVU0xWlN4dlFrRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNKelFpeHhRa0ZCWVN4RlFVRkZMRk5CUVZNc1UwRkJVeXhEUVVGRExFMUJRVTBzUlVGQlF5eE5RVUZOTEVWQlFVTXNVVUZCVVN4RlFVRkRMRVZCUVVVc1JVRkJReXhQUVVGUExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZEZGtVN08wRkJSVVlzWjBKQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEzWkNMRzlDUVVGUkxFOUJRVTg3UVVGRFppeHhRa0ZCU3l4RFFVRkRPMEZCUVVVc01rSkJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONFFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE1VTXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVOQlFVTTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRka0lzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRU5CUVVNN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRrSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVOQlFVTTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRka0lzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRU5CUVVNN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRrSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVOQlFVTTdRVUZEUml4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ6dEJRVU5RTERSQ1FVRkpMRVZCUVVVc2EwSkJRV3RDTzBGQlEzaENMRFpDUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRE9VSXNOa0pCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY0VNc01rSkJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03Y1VKQlEzcENMRU5CUVVNN08wRkJSVTRzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGRFNDeDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSenRCUVVOUUxEUkNRVUZKTEVWQlFVVXNhMEpCUVd0Q08wRkJRM2hDTEdkRFFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEJRVU5vUWl3MlFrRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdRVUZEWWl3eVFrRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenR4UWtGRGVrSXNRMEZCUXpzN1FVRkZUaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhsUVVGbExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRla1VzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03UVVGRGRFVXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzWkdMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRmxCUVZrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjBSaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1YwRkJWeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8wRkJRM0pLTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFhRVUZYTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdRVUZEY2trc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRCUVVOeVNTd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNUMEZCVHl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBGQlF5OUZMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUTBnc2QwSkJRVWtzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03ZDBKQlF6ZEZMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVONlJDd3lRa0ZCVHl4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU03TzBGQlJYWkNMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RFFVRkRPenRCUVVWMFJTd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjRRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRE8wRkJRekZGTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRFZ3NNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNaVUZCWlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU4wU0N3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVTklMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITzBGQlExQXNORUpCUVVrc1JVRkJSU3hyUWtGQmEwSTdRVUZEZUVJc05FSkJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOa0xEaENRVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU03UVVGRGFFSXNORUpCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXp0QlFVTmtMRGhDUVVGTkxFVkJRVVVzUlVGQlJUdEJRVU5XTERaQ1FVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjBReXd5UWtGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6dHhRa0ZEZWtJc1EwRkJRenM3UVVGRlRpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTNSU3d3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8wRkJRemxITERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNoQ0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzaENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUTBnc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVYzdRVUZEVUN3MFFrRkJTU3hGUVVGRkxHVkJRV1U3UVVGRGNrSXNORUpCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXp0QlFVTmtMRGhDUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRhRUlzTkVKQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5rTERKQ1FVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPM0ZDUVVONlFpeERRVUZET3p0QlFVVk9MREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFTkJRVU03UVVGRGVrVXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZETEVsQlFVa3NSVUZCUlN4VlFVRlZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTTdRVUZEYmtjc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOcVF5d3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjRRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU40UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVTXNTVUZCU1N4RlFVRkZMR1ZCUVdVc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRkZCUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNN1FVRkRjRWNzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRExFbEJRVWtzUlVGQlJTeGxRVUZsTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4UlFVRlJMRVZCUVVVc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhEUVVGRE8wRkJRM0JJTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTTdRVUZETTBnc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkRMRWxCUVVrc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNN1FVRkROMGNzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRExFbEJRVWtzUlVGQlJTeGhRVUZoTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RFFVRkRPMEZCUXpsR0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzaENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM2hDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOMlJDd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRlRVFzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlJTeHpRa0ZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRk5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhCUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU40Unl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJRenRCUVVNelJDd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExITkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExITkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExITkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE1VSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4elFrRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZET1VJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRWRCUVVjN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6TkNMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4SFFVRkhPMEZCUVVNc2MwSkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXk5Q0xEQkNRVUZOTzBGQlFVRXNZVUZEVER0VFFVTkJPMEZCUTBRc1lVRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1IwRkJSeXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEhRVUZITEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4SFFVRkhMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEhRVUZITEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhIUVVGSExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETzBGQlF5OHZWaXh6UWtGQll5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4SFFVRkhMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSMEZCUnl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVkQlFVY3NSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEhRVUZITEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUjBGQlJ5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFZEJRVWNzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhIUVVGSExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1IwRkJSeXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRWRCUVVjc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXp0QlFVTnNUU3hyUWtGQlZTeEZRVUZGTEZOQlFWTXNWVUZCVlN4RFFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVU3UVVGRGVFTXNhMEpCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEZUVJN1FVRkRSQ3hoUVVGTExFVkJRVVVzVTBGQlV5eExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTNwQ0xHZENRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpPMmRDUVVGRkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkJSU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTTdaMEpCUVVVc1RVRkJUU3hIUVVGSExFVkJRVVU3WjBKQlFVVXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTE8yZENRVUZGTEUxQlFVMHNSMEZCUnl4RlFVRkZPMmRDUVVGRkxGRkJRVkVzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRTFCUVUwc1IwRkJSeXhEUVVGRE8yZENRVUZGTEZWQlFWVXNSMEZCUnl4RFFVRkRPMmRDUVVGRkxFMUJRVTBzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE0wb3NaMEpCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpOQ0xHZENRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETzBGQlEzaENMR2RDUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8wRkJRek5DTEdkQ1FVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEZEVJc1owSkJRVWtzVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1NVRkJTU3hYUVVGWExFVkJRM1pETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU16UWl4blFrRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRPVUlzYTBKQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGJrSXNaMEpCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTTNSQ3huUWtGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hMUVVGTExGVkJRVlVzUlVGRGVFTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXp0QlFVTjZReXh4UWtGQlV5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTJwQ0xIRkNRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTndReXh6UWtGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5zUXl4elFrRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVOeVF6dEJRVU5FTEhGQ1FVRlRMRWRCUVVjc1IwRkJSenRCUVVOWUxHOUNRVUZKTEV0QlFVc3NRMEZCUXp0QlFVTldMSEZDUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE9VSXNiMEpCUVVrc1QwRkJUeXhMUVVGTExFdEJRVXNzVVVGQlVTeEZRVUZGTzBGQlF6TkNMSGxDUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU03YVVKQlEzcERPMEZCUTBRc2RVSkJRVThzUzBGQlN5eERRVUZETzJGQlEyaENPMEZCUTBRc1owSkJRVWtzVFVGQlRUdG5Ra0ZCUlN4alFVRmpPMmRDUVVGRkxFdEJRVXM3WjBKQlFVVXNUVUZCVFR0blFrRkJSU3hEUVVGRE8yZENRVUZGTEVOQlFVTTdaMEpCUVVVc1MwRkJTeXhIUVVGSExFVkJRVVU3WjBKQlFVVXNRMEZCUXp0blFrRkJSU3hIUVVGSE8yZENRVUZGTEZGQlFWRTdaMEpCUVVVc1VVRkJVU3hEUVVGRE8wRkJRM2hHTEcxQ1FVRlBMRWxCUVVrc1JVRkJSVHRCUVVOVUxIRkNRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYUVNc2IwSkJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRCUVVNMVFpd3dRa0ZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdhVUpCUTNaRExFMUJRVTA3UVVGRFNDeDNRa0ZCU1N4TlFVRk5MRXRCUVVzc1NVRkJTU3hKUVVGSkxFOUJRVThzVFVGQlRTeEpRVUZKTEZkQlFWY3NSVUZCUlR0QlFVTnFSQ3c0UWtGQlRTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRPM0ZDUVVOc1FqdEJRVU5FTERCQ1FVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dHBRa0ZEYWtRN1FVRkRSQ3h2UWtGQlNTeFBRVUZQTEUxQlFVMHNTMEZCU3l4WFFVRlhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJReTlFTEhkQ1FVRkpMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGFFSXNkMEpCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVU3UVVGRFlpeG5RMEZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOa0xEWkNRVUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRMnhDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUXpkQ0xHOURRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8zbENRVU5xUkR0QlFVTk1MRFJDUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4RlFVRkZPMEZCUTNwQ0xHdERRVUZOTEVkQlFVY3NjMEpCUVhOQ0xFbEJRVWtzVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUVN4QlFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4RlFVRkZMRWRCUVVjc1kwRkJZeXhIUVVGSExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1RVRkJUU3hEUVVGQkxFRkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdlVUpCUTNaTUxFMUJRVTA3UVVGRFNDeHJRMEZCVFN4SFFVRkhMSE5DUVVGelFpeEpRVUZKTEZGQlFWRXNSMEZCUnl4RFFVRkRMRU5CUVVFc1FVRkJReXhIUVVGSExHVkJRV1VzU1VGQlNTeE5RVUZOTEVsQlFVa3NRMEZCUXl4SFFVRkRMR05CUVdNc1IwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVUVzUVVGQlF5eEhRVUZITEVkQlFVY3NRMEZCUVN4QlFVRkRMRU5CUVVNN2VVSkJRM0pLTzBGQlEwUXNORUpCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hSUVVGUkxFVkJRVVVzVVVGQlVTeEZRVUZETEVOQlFVTXNRMEZCUXp0eFFrRkRNVW83YVVKQlEwbzdRVUZEUkN4dlFrRkJTU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEZsQlFWa3NTMEZCU3l4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlEycEVMREJDUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEcxRVFVRnRSQ3hIUVVGSExFdEJRVXNzUjBGQlJ5eFhRVUZYTEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNN2FVSkJRM1pITzBGQlEwUXNkMEpCUVZFc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5xUWl4NVFrRkJTeXhEUVVGRE8wRkJRMFlzTmtKQlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGJrSXNPRUpCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNdlFpdzRRa0ZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXk5Q0xEWkNRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzUkNMRGhDUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEyUXNORUpCUVVrc1EwRkJReXhqUVVGakxFVkJRVVU3UVVGRGFrSXNhME5CUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTXpRaXhyUTBGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRek5DTEc5RFFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZETDBJc2FVTkJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNeFFpeG5RMEZCU1N4VlFVRlZMRWRCUVVjc1EwRkJReXhGUVVOa0xGVkJRVlVzUlVGQlJTeERRVUZETzNsQ1FVTndRaXhOUVVGTk8wRkJRMGdzYTBOQlFVMHNSMEZCUnl4alFVRmpMRU5CUVVNN1FVRkRlRUlzTUVOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN2VVSkJRM3BDTzBGQlEwUXNPRUpCUVUwN1FVRkJRU3hCUVVOV0xIbENRVUZMTEVOQlFVTTdRVUZEUml3eVFrRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZEVNc05rSkJRVXNzUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEZEVNc05rSkJRVXNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUXl4VlFVRlZMRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRU3hCUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3haUVVGWkxFVkJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlFTeEJRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRVZCUVVVc1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUlVGQlF5eERRVUZETzBGQlF6RlBMRFJDUVVGSkxFMUJRVTBzUlVGQlJUdEJRVU5TTEdsRFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVRXNRVUZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8zbENRVU4wUnp0QlFVTkVMSGxDUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU5xUnl3MFFrRkJTU3hQUVVGUExFTkJRVU1zUzBGQlN5eFhRVUZYTEVWQlFVVTdRVUZETVVJc2JVTkJRVThzUTBGQlF5eERRVUZETzNsQ1FVTmFPMEZCUTBRc05FSkJRVWtzUjBGQlJ5eEZRVUZGTzBGQlEwd3NhVU5CUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEY2tNc2EwTkJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnVReXhyUTBGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPM2xDUVVOMFF6dEJRVU5FTERaQ1FVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTFReXc0UWtGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGNrSXNPRUpCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNSQ0xHZERRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOdVJTdzJRa0ZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU55UWl3NFFrRkJUVHRCUVVGQkxFRkJRMVlzZVVKQlFVc3NRMEZCUXp0QlFVTkdMQ3RDUVVGUExFbEJRVWtzUTBGQlF6dEJRVUZCTEdsQ1FVTm1PMkZCUTBvN1FVRkRSQ3h0UWtGQlR5eEpRVUZKTEVOQlFVTTdVMEZEWmp0TFFVTkJMRU5CUVVNN08wRkJSVVlzVVVGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4WlFVRlZPMEZCUTNaQ0xGbEJRVWtzUzBGQlN5eEhRVUZKTEVWQlFVTXNSMEZCUnl4RlFVRkRMRU5CUVVNN1FVRkRia0lzYzBKQlFWVXNSVUZCUXl4VFFVRlRMRlZCUVZVc1EwRkJReXhIUVVGSExFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlEyeERMRzlDUVVGSkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTJoQ0xIZENRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVONFF5eE5RVUZOTzBGQlEwZ3NNRUpCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdhVUpCUTNoQ08yRkJRMG83UVVGRFRDeHZRa0ZCVVN4RlFVRkRMR3RDUVVGVkxFdEJRVXNzUlVGQlJUdEJRVU5zUWl4dlFrRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZEY0VJc2IwSkJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTTFReXh2UWtGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5vUXl4dlFrRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlF6ZERMRzlDUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1FVRkRiRU1zYjBKQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1JVRkJReXhWUVVGVkxFVkJRVU1zUTBGQlF5eEZRVUZETEZsQlFWa3NSVUZCUXl4RFFVRkRMRVZCUVVNc1UwRkJVeXhGUVVGRExFTkJRVU1zUlVGQlF5eFhRVUZYTEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNN1FVRkRkRVVzYjBKQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtRc2IwSkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTJoQ0xIVkNRVUZQTEVsQlFVa3NRMEZCUXp0aFFVTm1PMEZCUTB3c2FVSkJRVXNzUlVGQlF5eHBRa0ZCV1R0QlFVTldMRzlDUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM2hDTEc5Q1FVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU5zUWl4dlFrRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzBGQlEyUXNiMEpCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dEJRVU5rTEc5Q1FVRkpMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU5xUWl4dlFrRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZEYmtJc2IwSkJRVWtzUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0QlFVTjRReXh2UWtGQlNTeExRVUZMTEVWQlFVVTdRVUZEVUN4M1FrRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyaENMSGRDUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMmxDUVVNelFpeE5RVUZOTzBGQlEwZ3NkMEpCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdhVUpCUXpkQ08wRkJRMFFzYjBKQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6czdRVUZGYUVRc2IwSkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtNc2RVSkJRVThzUlVGQlJTeERRVUZETzJGQlEySTdRVUZEVEN4cFFrRkJTeXhGUVVGRExHVkJRVlVzUlVGQlJTeEZRVUZGTzBGQlExb3NiMEpCUVVrc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZEY0VJc2IwSkJRVWtzUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03TzBGQlJYUkRMRzlDUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJReTlDTEc5Q1FVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUXl4SFFVRkhMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzBGQlJUbEVMRzlDUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCUXp0QlFVTnVRaXh2UWtGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdRVUZEYWtRc2IwSkJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzWkVMRzlDUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdRVUZGTjBRc2IwSkJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNSMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOd1JDeHZRa0ZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTTdPMEZCUlRGQ0xHOUNRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVNc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlR0QlFVTXZReXcyUWtGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVNc1EwRkJRenRCUVVNeFFpeG5RMEZCV1N4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldUdEJRVU4wUXl3clFrRkJWeXhGUVVGRkxFdEJRVXNzUjBGRFpDeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRXRCUVVzc1VVRkJVU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1IwRkJSeXhEUVVGRExFTkJRVUVzUjBGQlNTeFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlEzSkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeEhRVUZITEVkQlFVYzdhVUpCUTJwRExFTkJRVU03TzBGQlJVb3NiMEpCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEY2tJc2QwSkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMmxDUVVONFJEdEJRVU5FTEhWQ1FVRlBMRWxCUVVrc1EwRkJRenRoUVVObU8wRkJRMHdzWjBKQlFVa3NSVUZCUXl4blFrRkJXVHRCUVVOVUxHOUNRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOc1FpeDFRa0ZCVHl4SlFVRkpMRU5CUVVNN1lVRkRaanRCUVVOTUxHZENRVUZKTEVWQlFVTXNZMEZCVlN4RFFVRkRMRVZCUVVVN1FVRkRWaXh2UWtGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTI1RE8wRkJRMHdzY1VKQlFWTXNSVUZCUXl4eFFrRkJXVHRCUVVOa0xHOUNRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelJTeDFRa0ZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeEhRVUZITEV0QlFVc3NSMEZCUXl4RlFVRkZMRU5CUVVFc1IwRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0aFFVTTVSVHRCUVVOTUxIbENRVUZoTEVWQlFVTXNlVUpCUVZrN1FVRkRiRUlzYjBKQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03UVVGRGRFSXNiMEpCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEZRVUZGTEVWQlFVVTdRVUZEYkVJc2QwSkJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRwUWtGRGFrUTdRVUZEUkN4MVFrRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhKUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4SFFVRkhMRXRCUVVzc1IwRkJReXhGUVVGRkxFTkJRVUVzUTBGQlF5eERRVUZGTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03WVVGREwwVTdRVUZEVEN4M1FrRkJXU3hGUVVGRExIZENRVUZaTzBGQlEycENMRzlDUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1FVRkRNMElzYjBKQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlF6VkRMSFZDUVVGUExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUjBGQlF5eEhRVUZITEVOQlFVTTdZVUZEY0VRN1FVRkRUQ3huUWtGQlNTeEZRVUZETEdkQ1FVRlpPMEZCUTFRc2IwSkJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0QlFVTllMREpDUVVGUExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdhVUpCUTI1Q08wRkJRMFFzYjBKQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPenRCUVVWdVF5eHZRa0ZCU1N4TFFVRkxMRVZCUTB3c1MwRkJTeXhGUVVOTUxGTkJRVk1zUlVGRFZDeExRVUZMTEVWQlEwd3NSMEZCUnl4RlFVTklMRXRCUVVzc1EwRkJRenRCUVVOV0xHOUNRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVOaUxIZENRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOcVFpeDNRa0ZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03YVVKQlEyNUNPMEZCUTBRc2IwSkJRVWtzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRVZCUVVVc1EwRkJRenRCUVVOcVF5eHhRa0ZCU3l4SlFVRkpMRU5CUVVNc1IwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRGFFTXNOa0pCUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRjRVFzZDBKQlFVa3NVMEZCVXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUVN4QlFVRkRMRVZCUVVVN1FVRkRhRVVzTmtKQlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRiRUlzTmtKQlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRWaXcwUWtGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTA3Y1VKQlEycERPMmxDUVVOS08wRkJRMFFzYjBKQlFVa3NTMEZCU3l4RlFVRkZPMEZCUTFBc2VVSkJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1FVRkRNVU1zZDBKQlFVa3NTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTjZReXgzUWtGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkRMRlZCUVZVc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTTdRVUZEYWtNc2FVTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkRMRU5CUVVNN1FVRkRNVUlzYjBOQlFWa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmM3UVVGRGNrTXNiVU5CUVZjc1JVRkJSU3hMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJReXhEUVVGRE8wRkJRemxLTEhkQ1FVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjRRaXgzUWtGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRrSXNkMEpCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETzBGQlEzSkNMSGRDUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRMnBETEhkQ1FVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzSkNMRFJDUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03Y1VKQlEycEZPMEZCUTBRc2QwSkJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTI1Q0xIZENRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU5xUkN4M1FrRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRla0lzZVVKQlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU55U0N4M1FrRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZEYUVRc2QwSkJRVWtzUzBGQlN5eEZRVUZGTEU5QlFVOHNTMEZCU3l4RFFVRkRMRXRCUTI1Q0xFOUJRVTg3YVVKQlEyWTdRVUZEUkN4dlFrRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeExRVUZMTEVWQlFVVXNSVUZCUlR0QlFVTndRaXd5UWtGQlR5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRPMmxDUVVOdVFpeE5RVUZOTzBGQlEwZ3NNa0pCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eDNRa0ZCZDBJc1NVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZETEVOQlFVTXNRMEZCUVN4QlFVRkRMRWRCUVVNc2QwSkJRWGRDTEVkQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hGUVVOMFJ5eEZRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJReXhEUVVGRExFTkJRVU03YVVKQlEzcEVPMkZCUTBvN1FVRkRUQ3hsUVVGSExFVkJRVU1zVTBGQlV5eEhRVUZITEVkQlFVazdRVUZEV2l4dlFrRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMEZCUTNCQ0xHOUNRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRmRCUVZjc1JVRkJSVHRCUVVNeFFpd3lRa0ZCVHl4RFFVRkRMRU5CUVVNN2FVSkJRMW9zVFVGQlRUdEJRVU5JTERKQ1FVRlBMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dHBRa0ZEY2tJN1lVRkRTanRCUVVOTUxHbENRVUZMTEVWQlFVTXNVMEZCVXl4TFFVRkxMRU5CUVVVc1UwRkJVeXhGUVVGRk8wRkJRM3BDTEc5Q1FVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0aFFVTjJRenRCUVVOTUxHOUNRVUZSTEVWQlFVTXNVMEZCVXl4UlFVRlJMRWRCUVVrN1FVRkRkRUlzZFVKQlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dGhRVU53UXp0QlFVTk1MSGxDUVVGaExFVkJRVU1zVTBGQlV5eGhRVUZoTEVkQlFVazdRVUZEYUVNc2RVSkJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCVFN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETzJGQlEyNUdPMEZCUTB3c2IwSkJRVkVzUlVGQlF5eHZRa0ZCV1R0QlFVTmlMSFZDUVVGUExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhOUVVGTkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZETlVRN1FVRkRUQ3h4UWtGQlV5eEZRVUZETEZOQlFWTXNTMEZCU3l4RFFVRkZMRk5CUVZNc1JVRkJSVHRCUVVNM1FpeHZRa0ZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dGhRVU42UWl4RlFVRkRMRUZCUVVNc1EwRkJRenRCUVVOU0xHRkJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTI1Q0xHRkJRVXNzUTBGQlF5eGhRVUZoTEVkQlFVY3NVMEZCVXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eDVRa0ZCZVVJc1JVRkJReXhSUVVGUkxFVkJRMmhHT3p0QlFVZEdMSEZDUVVGVExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUTNwQ0xIVkNRVUZQTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMkZCUXpORk96dEJRVWRFTEdkQ1FVRkpMRTlCUVU4c1IwRkJReXhSUVVGUkxFTkJRVUU3UVVGRGNFSXNiMEpCUVU4c2VVSkJRWGxDTzBGQlEyaERMSEZDUVVGTExFTkJRVU03UVVGRE5rSXNkMEpCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhOUVVGTkxFVkJRVVU3UVVGRGJFTXNOa0pCUVVzc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEV0N3MFFrRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0eFFrRkRiRUlzVFVGQlRTeEpRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RlFVRkZPMEZCUTNaRExEWkNRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMWdzTkVKQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03Y1VKQlEyNUNMRTFCUVUwN1FVRkRUQ3cwUWtGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenR4UWtGRGJFSTdRVUZEUkN4M1FrRkJSeXhIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4RFFVRkRPenRCUVVVMVJDd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVUZETERKQ1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVU0yUWl4M1FrRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyaENMREpDUVVGUExFVkJRVVVzUTBGQlF6czdRVUZGTjBNc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRU5CUVVNN1FVRkJReXgzUWtGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEzQkRMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RFFVRkRPMEZCUXpSQ0xIZENRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN096czdRVUZKYUVJc2QwSkJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4TFFVRkxMRVZCUVVVN1FVRkRMMFFzSzBKQlFVOHNSVUZCUlN4RFFVRkRPM0ZDUVVOWUxFMUJRVTA3UVVGRFRDdzJRa0ZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5hTEN0Q1FVRlBMR1ZCUVdVc1EwRkJRenR4UWtGRGVFSTdPMEZCUlc1RExEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhEUVVGRE8wRkJRVVVzTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhEUVVGRE8wRkJRMG9zZDBKQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVOb1Fpd3lRa0ZCVHl4RlFVRkZMRU5CUVVNN08wRkJSVm9zTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlF5d3lRa0ZCVHl4RlFVRkZMRU5CUVVNN1FVRkRha0lzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlF5d3lRa0ZCVHl4RlFVRkZMRU5CUVVNN1FVRkRha0lzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlJTd3lRa0ZCVHl4RlFVRkZMRU5CUVVNN1FVRkRiRUlzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGRE1rSXNkMEpCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU5vUWl4M1FrRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTnNRaXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdPMEZCUlRWRExEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEyNURMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4QlFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMjVETERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlEwd3NkMEpCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNaQ0xIZENRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1FVRkRhRUlzZDBKQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03TzBGQlJYQkNMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUTB3c2QwSkJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTm9RaXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdPMEZCUlZvc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN08wRkJRMUFzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFRkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYmtNc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRUZCUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGJrTXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4MVFrRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1FVRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU12UkN3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSFZDUVVGSExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlF5OUVMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2RVSkJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeEZRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRUZCUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGRrVXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl3eVFrRkJUeXhUUVVGVExFTkJRVU03UVVGRGVrSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl3eVFrRkJUeXhEUVVGRExFTkJRVU03UVVGRGFrSXNNRUpCUVUwN1FVRkJRU3hoUVVOTU8xTkJRMEVzUTBGQlF6dEJRVU5HTEdGQlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXd3UWtGQk1FSXNSVUZCUXl4bFFVRmxMRVZCUVVNc0swTkJRU3RETEVWQlFVTXNkMEpCUVhkQ0xFVkJRVU1zYjBWQlFXOUZMRVZCUVVNc09FSkJRVGhDTEVWQlFVTXNlVUpCUVhsQ0xFVkJRVU1zVTBGQlV5eEZRVUZETEZOQlFWTXNSVUZCUXl4bFFVRmxMRVZCUVVNc1pVRkJaU3hGUVVGRExHZENRVUZuUWl4RlFVRkRMR2xDUVVGcFFpeEZRVUZETEcxQ1FVRnRRaXhGUVVGRExHbENRVUZwUWl4RlFVRkRMRFJDUVVFMFFpeEZRVUZETEdsRFFVRnBReXhGUVVGRExHbENRVUZwUWl4RlFVRkRMSGRDUVVGM1FpeEZRVUZETEdsQ1FVRnBRaXhGUVVGRExHZENRVUZuUWl4RlFVRkRMR3RDUVVGclFpeEZRVUZETERSQ1FVRTBRaXhGUVVGRExHdENRVUZyUWl4RlFVRkRMRkZCUVZFc1JVRkJReXhYUVVGWExFVkJRVU1zTWtKQlFUSkNMRVZCUVVNc1dVRkJXU3hGUVVGRExGVkJRVlVzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXhsUVVGbExFVkJRVU1zYzBKQlFYTkNMRVZCUVVNc2MwSkJRWE5DTEVWQlFVTXNVVUZCVVN4RlFVRkRMSGRDUVVGM1FpeEZRVUZETEhsQ1FVRjVRaXhGUVVGRExEWkNRVUUyUWl4RlFVRkRMSGRDUVVGM1FpeEZRVUZETEhsRFFVRjVReXhGUVVGRExHTkJRV01zUlVGQlF5eFRRVUZUTEVWQlFVTXNlVVJCUVhsRUxFVkJRVU1zZDBKQlFYZENMRVZCUVVNc1VVRkJVU3hGUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlEyNW5ReXhoUVVGTExFTkJRVU1zVlVGQlZTeEhRVUZITEVWQlFVTXNTVUZCU1N4RlFVRkRMRVZCUVVNc1QwRkJUeXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRmRCUVZjc1JVRkJReXhMUVVGTExFVkJRVU1zUlVGQlF5eExRVUZMTEVWQlFVTXNSVUZCUXl4UFFVRlBMRVZCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eFhRVUZYTEVWQlFVTXNTMEZCU3l4RlFVRkRMRVZCUVVNc1MwRkJTeXhGUVVGRExFVkJRVU1zVDBGQlR5eEZRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1YwRkJWeXhGUVVGRExFdEJRVXNzUlVGQlF5eEZRVUZETEV0QlFVc3NSVUZCUXl4RlFVRkRMRTlCUVU4c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1YwRkJWeXhGUVVGRExFdEJRVXNzUlVGQlF5eEZRVUZETEZOQlFWTXNSVUZCUXl4RlFVRkRMRTlCUVU4c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1YwRkJWeXhGUVVGRExFbEJRVWtzUlVGQlF5eEZRVUZETEVOQlFVTTdRVUZETTFVc1pVRkJUeXhMUVVGTExFTkJRVU03UzBGQlF5eERRVUZCTEVWQlFVY3NRMEZCUVR0QlFVTnFRaXhWUVVGTkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTnlRaXhoUVVGVExFMUJRVTBzUjBGQlNUdEJRVUZGTEZsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRE8wdEJRVVVzVFVGQlRTeERRVUZETEZOQlFWTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZEY2tZc1YwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlFTeERRVUZETzBOQlEycENMRU5CUVVFc1JVRkJSeXhEUVVGRExIRkNRVUZsTEZWQlFWVWlMQ0ptYVd4bElqb2ljR0Z5YzJWeUxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHk4Z1JtbHNaU0JwWjI1dmNtVmtJR2x1SUdOdmRtVnlZV2RsSUhSbGMzUnpJSFpwWVNCelpYUjBhVzVuSUdsdUlDNXBjM1JoYm1KMWJDNTViV3hjYmk4cUlFcHBjMjl1SUdkbGJtVnlZWFJsWkNCd1lYSnpaWElnS2k5Y2JuWmhjaUJvWVc1a2JHVmlZWEp6SUQwZ0tHWjFibU4wYVc5dUtDbDdYRzUyWVhJZ2NHRnljMlZ5SUQwZ2UzUnlZV05sT2lCbWRXNWpkR2x2YmlCMGNtRmpaU0FvS1NCN0lIMHNYRzU1ZVRvZ2UzMHNYRzV6ZVcxaWIyeHpYem9nZTF3aVpYSnliM0pjSWpveUxGd2ljbTl2ZEZ3aU9qTXNYQ0p3Y205bmNtRnRYQ0k2TkN4Y0lrVlBSbHdpT2pVc1hDSndjbTluY21GdFgzSmxjR1YwYVhScGIyNHdYQ0k2Tml4Y0luTjBZWFJsYldWdWRGd2lPamNzWENKdGRYTjBZV05vWlZ3aU9qZ3NYQ0ppYkc5amExd2lPamtzWENKeVlYZENiRzlqYTF3aU9qRXdMRndpY0dGeWRHbGhiRndpT2pFeExGd2ljR0Z5ZEdsaGJFSnNiMk5yWENJNk1USXNYQ0pqYjI1MFpXNTBYQ0k2TVRNc1hDSkRUMDFOUlU1VVhDSTZNVFFzWENKRFQwNVVSVTVVWENJNk1UVXNYQ0p2Y0dWdVVtRjNRbXh2WTJ0Y0lqb3hOaXhjSW5KaGQwSnNiMk5yWDNKbGNHVjBhWFJwYjI0d1hDSTZNVGNzWENKRlRrUmZVa0ZYWDBKTVQwTkxYQ0k2TVRnc1hDSlBVRVZPWDFKQlYxOUNURTlEUzF3aU9qRTVMRndpYUdWc2NHVnlUbUZ0WlZ3aU9qSXdMRndpYjNCbGJsSmhkMEpzYjJOclgzSmxjR1YwYVhScGIyNHdYQ0k2TWpFc1hDSnZjR1Z1VW1GM1FteHZZMnRmYjNCMGFXOXVNRndpT2pJeUxGd2lRMHhQVTBWZlVrRlhYMEpNVDBOTFhDSTZNak1zWENKdmNHVnVRbXh2WTJ0Y0lqb3lOQ3hjSW1Kc2IyTnJYMjl3ZEdsdmJqQmNJam95TlN4Y0ltTnNiM05sUW14dlkydGNJam95Tml4Y0ltOXdaVzVKYm5abGNuTmxYQ0k2TWpjc1hDSmliRzlqYTE5dmNIUnBiMjR4WENJNk1qZ3NYQ0pQVUVWT1gwSk1UME5MWENJNk1qa3NYQ0p2Y0dWdVFteHZZMnRmY21Wd1pYUnBkR2x2YmpCY0lqb3pNQ3hjSW05d1pXNUNiRzlqYTE5dmNIUnBiMjR3WENJNk16RXNYQ0p2Y0dWdVFteHZZMnRmYjNCMGFXOXVNVndpT2pNeUxGd2lRMHhQVTBWY0lqb3pNeXhjSWs5UVJVNWZTVTVXUlZKVFJWd2lPak0wTEZ3aWIzQmxia2x1ZG1WeWMyVmZjbVZ3WlhScGRHbHZiakJjSWpvek5TeGNJbTl3Wlc1SmJuWmxjbk5sWDI5d2RHbHZiakJjSWpvek5peGNJbTl3Wlc1SmJuWmxjbk5sWDI5d2RHbHZiakZjSWpvek55eGNJbTl3Wlc1SmJuWmxjbk5sUTJoaGFXNWNJam96T0N4Y0lrOVFSVTVmU1U1V1JWSlRSVjlEU0VGSlRsd2lPak01TEZ3aWIzQmxia2x1ZG1WeWMyVkRhR0ZwYmw5eVpYQmxkR2wwYVc5dU1Gd2lPalF3TEZ3aWIzQmxia2x1ZG1WeWMyVkRhR0ZwYmw5dmNIUnBiMjR3WENJNk5ERXNYQ0p2Y0dWdVNXNTJaWEp6WlVOb1lXbHVYMjl3ZEdsdmJqRmNJam8wTWl4Y0ltbHVkbVZ5YzJWQmJtUlFjbTluY21GdFhDSTZORE1zWENKSlRsWkZVbE5GWENJNk5EUXNYQ0pwYm5abGNuTmxRMmhoYVc1Y0lqbzBOU3hjSW1sdWRtVnljMlZEYUdGcGJsOXZjSFJwYjI0d1hDSTZORFlzWENKUFVFVk9YMFZPUkVKTVQwTkxYQ0k2TkRjc1hDSlBVRVZPWENJNk5EZ3NYQ0p0ZFhOMFlXTm9aVjl5WlhCbGRHbDBhVzl1TUZ3aU9qUTVMRndpYlhWemRHRmphR1ZmYjNCMGFXOXVNRndpT2pVd0xGd2lUMUJGVGw5VlRrVlRRMEZRUlVSY0lqbzFNU3hjSW0xMWMzUmhZMmhsWDNKbGNHVjBhWFJwYjI0eFhDSTZOVElzWENKdGRYTjBZV05vWlY5dmNIUnBiMjR4WENJNk5UTXNYQ0pEVEU5VFJWOVZUa1ZUUTBGUVJVUmNJam8xTkN4Y0lrOVFSVTVmVUVGU1ZFbEJURndpT2pVMUxGd2ljR0Z5ZEdsaGJFNWhiV1ZjSWpvMU5peGNJbkJoY25ScFlXeGZjbVZ3WlhScGRHbHZiakJjSWpvMU55eGNJbkJoY25ScFlXeGZiM0IwYVc5dU1Gd2lPalU0TEZ3aWIzQmxibEJoY25ScFlXeENiRzlqYTF3aU9qVTVMRndpVDFCRlRsOVFRVkpVU1VGTVgwSk1UME5MWENJNk5qQXNYQ0p2Y0dWdVVHRnlkR2xoYkVKc2IyTnJYM0psY0dWMGFYUnBiMjR3WENJNk5qRXNYQ0p2Y0dWdVVHRnlkR2xoYkVKc2IyTnJYMjl3ZEdsdmJqQmNJam8yTWl4Y0luQmhjbUZ0WENJNk5qTXNYQ0p6Wlhod2Nsd2lPalkwTEZ3aVQxQkZUbDlUUlZoUVVsd2lPalkxTEZ3aWMyVjRjSEpmY21Wd1pYUnBkR2x2YmpCY0lqbzJOaXhjSW5ObGVIQnlYMjl3ZEdsdmJqQmNJam8yTnl4Y0lrTk1UMU5GWDFORldGQlNYQ0k2Tmpnc1hDSm9ZWE5vWENJNk5qa3NYQ0pvWVhOb1gzSmxjR1YwYVhScGIyNWZjR3gxY3pCY0lqbzNNQ3hjSW1oaGMyaFRaV2R0Wlc1MFhDSTZOekVzWENKSlJGd2lPamN5TEZ3aVJWRlZRVXhUWENJNk56TXNYQ0ppYkc5amExQmhjbUZ0YzF3aU9qYzBMRndpVDFCRlRsOUNURTlEUzE5UVFWSkJUVk5jSWpvM05TeGNJbUpzYjJOclVHRnlZVzF6WDNKbGNHVjBhWFJwYjI1ZmNHeDFjekJjSWpvM05peGNJa05NVDFORlgwSk1UME5MWDFCQlVrRk5VMXdpT2pjM0xGd2ljR0YwYUZ3aU9qYzRMRndpWkdGMFlVNWhiV1ZjSWpvM09TeGNJbE5VVWtsT1Ixd2lPamd3TEZ3aVRsVk5Ra1ZTWENJNk9ERXNYQ0pDVDA5TVJVRk9YQ0k2T0RJc1hDSlZUa1JGUmtsT1JVUmNJam80TXl4Y0lrNVZURXhjSWpvNE5DeGNJa1JCVkVGY0lqbzROU3hjSW5CaGRHaFRaV2R0Wlc1MGMxd2lPamcyTEZ3aVUwVlFYQ0k2T0Rjc1hDSWtZV05qWlhCMFhDSTZNQ3hjSWlSbGJtUmNJam94ZlN4Y2JuUmxjbTFwYm1Gc2MxODZJSHN5T2x3aVpYSnliM0pjSWl3MU9sd2lSVTlHWENJc01UUTZYQ0pEVDAxTlJVNVVYQ0lzTVRVNlhDSkRUMDVVUlU1VVhDSXNNVGc2WENKRlRrUmZVa0ZYWDBKTVQwTkxYQ0lzTVRrNlhDSlBVRVZPWDFKQlYxOUNURTlEUzF3aUxESXpPbHdpUTB4UFUwVmZVa0ZYWDBKTVQwTkxYQ0lzTWprNlhDSlBVRVZPWDBKTVQwTkxYQ0lzTXpNNlhDSkRURTlUUlZ3aUxETTBPbHdpVDFCRlRsOUpUbFpGVWxORlhDSXNNems2WENKUFVFVk9YMGxPVmtWU1UwVmZRMGhCU1U1Y0lpdzBORHBjSWtsT1ZrVlNVMFZjSWl3ME56cGNJazlRUlU1ZlJVNUVRa3hQUTB0Y0lpdzBPRHBjSWs5UVJVNWNJaXcxTVRwY0lrOVFSVTVmVlU1RlUwTkJVRVZFWENJc05UUTZYQ0pEVEU5VFJWOVZUa1ZUUTBGUVJVUmNJaXcxTlRwY0lrOVFSVTVmVUVGU1ZFbEJURndpTERZd09sd2lUMUJGVGw5UVFWSlVTVUZNWDBKTVQwTkxYQ0lzTmpVNlhDSlBVRVZPWDFORldGQlNYQ0lzTmpnNlhDSkRURTlUUlY5VFJWaFFVbHdpTERjeU9sd2lTVVJjSWl3M016cGNJa1ZSVlVGTVUxd2lMRGMxT2x3aVQxQkZUbDlDVEU5RFMxOVFRVkpCVFZOY0lpdzNOenBjSWtOTVQxTkZYMEpNVDBOTFgxQkJVa0ZOVTF3aUxEZ3dPbHdpVTFSU1NVNUhYQ0lzT0RFNlhDSk9WVTFDUlZKY0lpdzRNanBjSWtKUFQweEZRVTVjSWl3NE16cGNJbFZPUkVWR1NVNUZSRndpTERnME9sd2lUbFZNVEZ3aUxEZzFPbHdpUkVGVVFWd2lMRGczT2x3aVUwVlFYQ0o5TEZ4dWNISnZaSFZqZEdsdmJuTmZPaUJiTUN4Yk15d3lYU3hiTkN3eFhTeGJOeXd4WFN4Yk55d3hYU3hiTnl3eFhTeGJOeXd4WFN4Yk55d3hYU3hiTnl3eFhTeGJOeXd4WFN4Yk1UTXNNVjBzV3pFd0xETmRMRnN4Tml3MVhTeGJPU3cwWFN4Yk9TdzBYU3hiTWpRc05sMHNXekkzTERaZExGc3pPQ3cyWFN4Yk5ETXNNbDBzV3pRMUxETmRMRnMwTlN3eFhTeGJNallzTTEwc1d6Z3NOVjBzV3pnc05WMHNXekV4TERWZExGc3hNaXd6WFN4Yk5Ua3NOVjBzV3pZekxERmRMRnMyTXl3eFhTeGJOalFzTlYwc1d6WTVMREZkTEZzM01Td3pYU3hiTnpRc00xMHNXekl3TERGZExGc3lNQ3d4WFN4Yk1qQXNNVjBzV3pJd0xERmRMRnN5TUN3eFhTeGJNakFzTVYwc1d6SXdMREZkTEZzMU5pd3hYU3hiTlRZc01WMHNXemM1TERKZExGczNPQ3d4WFN4Yk9EWXNNMTBzV3pnMkxERmRMRnMyTERCZExGczJMREpkTEZzeE55d3dYU3hiTVRjc01sMHNXekl4TERCZExGc3lNU3d5WFN4Yk1qSXNNRjBzV3pJeUxERmRMRnN5TlN3d1hTeGJNalVzTVYwc1d6STRMREJkTEZzeU9Dd3hYU3hiTXpBc01GMHNXek13TERKZExGc3pNU3d3WFN4Yk16RXNNVjBzV3pNeUxEQmRMRnN6TWl3eFhTeGJNelVzTUYwc1d6TTFMREpkTEZzek5pd3dYU3hiTXpZc01WMHNXek0zTERCZExGc3pOeXd4WFN4Yk5EQXNNRjBzV3pRd0xESmRMRnMwTVN3d1hTeGJOREVzTVYwc1d6UXlMREJkTEZzME1pd3hYU3hiTkRZc01GMHNXelEyTERGZExGczBPU3d3WFN4Yk5Ea3NNbDBzV3pVd0xEQmRMRnMxTUN3eFhTeGJOVElzTUYwc1d6VXlMREpkTEZzMU15d3dYU3hiTlRNc01WMHNXelUzTERCZExGczFOeXd5WFN4Yk5UZ3NNRjBzV3pVNExERmRMRnMyTVN3d1hTeGJOakVzTWwwc1d6WXlMREJkTEZzMk1pd3hYU3hiTmpZc01GMHNXelkyTERKZExGczJOeXd3WFN4Yk5qY3NNVjBzV3pjd0xERmRMRnMzTUN3eVhTeGJOellzTVYwc1d6YzJMREpkWFN4Y2JuQmxjbVp2Y20xQlkzUnBiMjQ2SUdaMWJtTjBhVzl1SUdGdWIyNTViVzkxY3loNWVYUmxlSFFzZVhsc1pXNW5MSGw1YkdsdVpXNXZMSGw1TEhsNWMzUmhkR1VzSkNRc1h5UmNiaWtnZTF4dVhHNTJZWElnSkRBZ1BTQWtKQzVzWlc1bmRHZ2dMU0F4TzF4dWMzZHBkR05vSUNoNWVYTjBZWFJsS1NCN1hHNWpZWE5sSURFNklISmxkSFZ5YmlBa0pGc2tNQzB4WFRzZ1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpwMGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFVISnZaM0poYlNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1allYTmxJRE02ZEdocGN5NGtJRDBnSkNSYkpEQmRPMXh1WW5KbFlXczdYRzVqWVhObElEUTZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURVNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJRFk2ZEdocGN5NGtJRDBnSkNSYkpEQmRPMXh1WW5KbFlXczdYRzVqWVhObElEYzZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURnNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJRGs2WEc0Z0lDQWdkR2hwY3k0a0lEMGdlMXh1SUNBZ0lDQWdkSGx3WlRvZ0owTnZiVzFsYm5SVGRHRjBaVzFsYm5RbkxGeHVJQ0FnSUNBZ2RtRnNkV1U2SUhsNUxuTjBjbWx3UTI5dGJXVnVkQ2drSkZza01GMHBMRnh1SUNBZ0lDQWdjM1J5YVhBNklIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQmRMQ0FrSkZza01GMHBMRnh1SUNBZ0lDQWdiRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcFhHNGdJQ0FnZlR0Y2JpQWdYRzVpY21WaGF6dGNibU5oYzJVZ01UQTZYRzRnSUNBZ2RHaHBjeTRrSUQwZ2UxeHVJQ0FnSUNBZ2RIbHdaVG9nSjBOdmJuUmxiblJUZEdGMFpXMWxiblFuTEZ4dUlDQWdJQ0FnYjNKcFoybHVZV3c2SUNRa1d5UXdYU3hjYmlBZ0lDQWdJSFpoYkhWbE9pQWtKRnNrTUYwc1hHNGdJQ0FnSUNCc2IyTTZJSGw1TG14dlkwbHVabThvZEdocGN5NWZKQ2xjYmlBZ0lDQjlPMXh1SUNCY2JtSnlaV0ZyTzF4dVkyRnpaU0F4TVRwMGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFVtRjNRbXh2WTJzb0pDUmJKREF0TWwwc0lDUWtXeVF3TFRGZExDQWtKRnNrTUYwc0lIUm9hWE11WHlRcE8xeHVZbkpsWVdzN1hHNWpZWE5sSURFeU9uUm9hWE11SkNBOUlIc2djR0YwYURvZ0pDUmJKREF0TTEwc0lIQmhjbUZ0Y3pvZ0pDUmJKREF0TWwwc0lHaGhjMmc2SUNRa1d5UXdMVEZkSUgwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRNNmRHaHBjeTRrSUQwZ2VYa3VjSEpsY0dGeVpVSnNiMk5yS0NRa1d5UXdMVE5kTENBa0pGc2tNQzB5WFN3Z0pDUmJKREF0TVYwc0lDUWtXeVF3WFN3Z1ptRnNjMlVzSUhSb2FYTXVYeVFwTzF4dVluSmxZV3M3WEc1allYTmxJREUwT25Sb2FYTXVKQ0E5SUhsNUxuQnlaWEJoY21WQ2JHOWpheWdrSkZza01DMHpYU3dnSkNSYkpEQXRNbDBzSUNRa1d5UXdMVEZkTENBa0pGc2tNRjBzSUhSeWRXVXNJSFJvYVhNdVh5UXBPMXh1WW5KbFlXczdYRzVqWVhObElERTFPblJvYVhNdUpDQTlJSHNnYjNCbGJqb2dKQ1JiSkRBdE5WMHNJSEJoZEdnNklDUWtXeVF3TFRSZExDQndZWEpoYlhNNklDUWtXeVF3TFROZExDQm9ZWE5vT2lBa0pGc2tNQzB5WFN3Z1lteHZZMnRRWVhKaGJYTTZJQ1FrV3lRd0xURmRMQ0J6ZEhKcGNEb2dlWGt1YzNSeWFYQkdiR0ZuY3lna0pGc2tNQzAxWFN3Z0pDUmJKREJkS1NCOU8xeHVZbkpsWVdzN1hHNWpZWE5sSURFMk9uUm9hWE11SkNBOUlIc2djR0YwYURvZ0pDUmJKREF0TkYwc0lIQmhjbUZ0Y3pvZ0pDUmJKREF0TTEwc0lHaGhjMmc2SUNRa1d5UXdMVEpkTENCaWJHOWphMUJoY21GdGN6b2dKQ1JiSkRBdE1WMHNJSE4wY21sd09pQjVlUzV6ZEhKcGNFWnNZV2R6S0NRa1d5UXdMVFZkTENBa0pGc2tNRjBwSUgwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRjNmRHaHBjeTRrSUQwZ2V5QndZWFJvT2lBa0pGc2tNQzAwWFN3Z2NHRnlZVzF6T2lBa0pGc2tNQzB6WFN3Z2FHRnphRG9nSkNSYkpEQXRNbDBzSUdKc2IyTnJVR0Z5WVcxek9pQWtKRnNrTUMweFhTd2djM1J5YVhBNklIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQXROVjBzSUNRa1d5UXdYU2tnZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F4T0RwMGFHbHpMaVFnUFNCN0lITjBjbWx3T2lCNWVTNXpkSEpwY0Vac1lXZHpLQ1FrV3lRd0xURmRMQ0FrSkZza01DMHhYU2tzSUhCeWIyZHlZVzA2SUNRa1d5UXdYU0I5TzF4dVluSmxZV3M3WEc1allYTmxJREU1T2x4dUlDQWdJSFpoY2lCcGJuWmxjbk5sSUQwZ2VYa3VjSEpsY0dGeVpVSnNiMk5yS0NRa1d5UXdMVEpkTENBa0pGc2tNQzB4WFN3Z0pDUmJKREJkTENBa0pGc2tNRjBzSUdaaGJITmxMQ0IwYUdsekxsOGtLU3hjYmlBZ0lDQWdJQ0FnY0hKdlozSmhiU0E5SUhsNUxuQnlaWEJoY21WUWNtOW5jbUZ0S0Z0cGJuWmxjbk5sWFN3Z0pDUmJKREF0TVYwdWJHOWpLVHRjYmlBZ0lDQndjbTluY21GdExtTm9ZV2x1WldRZ1BTQjBjblZsTzF4dVhHNGdJQ0FnZEdocGN5NGtJRDBnZXlCemRISnBjRG9nSkNSYkpEQXRNbDB1YzNSeWFYQXNJSEJ5YjJkeVlXMDZJSEJ5YjJkeVlXMHNJR05vWVdsdU9pQjBjblZsSUgwN1hHNGdJRnh1WW5KbFlXczdYRzVqWVhObElESXdPblJvYVhNdUpDQTlJQ1FrV3lRd1hUdGNibUp5WldGck8xeHVZMkZ6WlNBeU1UcDBhR2x6TGlRZ1BTQjdjR0YwYURvZ0pDUmJKREF0TVYwc0lITjBjbWx3T2lCNWVTNXpkSEpwY0Vac1lXZHpLQ1FrV3lRd0xUSmRMQ0FrSkZza01GMHBmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXlNanAwYUdsekxpUWdQU0I1ZVM1d2NtVndZWEpsVFhWemRHRmphR1VvSkNSYkpEQXRNMTBzSUNRa1d5UXdMVEpkTENBa0pGc2tNQzB4WFN3Z0pDUmJKREF0TkYwc0lIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQXRORjBzSUNRa1d5UXdYU2tzSUhSb2FYTXVYeVFwTzF4dVluSmxZV3M3WEc1allYTmxJREl6T25Sb2FYTXVKQ0E5SUhsNUxuQnlaWEJoY21WTmRYTjBZV05vWlNna0pGc2tNQzB6WFN3Z0pDUmJKREF0TWwwc0lDUWtXeVF3TFRGZExDQWtKRnNrTUMwMFhTd2dlWGt1YzNSeWFYQkdiR0ZuY3lna0pGc2tNQzAwWFN3Z0pDUmJKREJkS1N3Z2RHaHBjeTVmSkNrN1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpRNlhHNGdJQ0FnZEdocGN5NGtJRDBnZTF4dUlDQWdJQ0FnZEhsd1pUb2dKMUJoY25ScFlXeFRkR0YwWlcxbGJuUW5MRnh1SUNBZ0lDQWdibUZ0WlRvZ0pDUmJKREF0TTEwc1hHNGdJQ0FnSUNCd1lYSmhiWE02SUNRa1d5UXdMVEpkTEZ4dUlDQWdJQ0FnYUdGemFEb2dKQ1JiSkRBdE1WMHNYRzRnSUNBZ0lDQnBibVJsYm5RNklDY25MRnh1SUNBZ0lDQWdjM1J5YVhBNklIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQXRORjBzSUNRa1d5UXdYU2tzWEc0Z0lDQWdJQ0JzYjJNNklIbDVMbXh2WTBsdVptOG9kR2hwY3k1ZkpDbGNiaUFnSUNCOU8xeHVJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQXlOVHAwYUdsekxpUWdQU0I1ZVM1d2NtVndZWEpsVUdGeWRHbGhiRUpzYjJOcktDUWtXeVF3TFRKZExDQWtKRnNrTUMweFhTd2dKQ1JiSkRCZExDQjBhR2x6TGw4a0tUdGNibUp5WldGck8xeHVZMkZ6WlNBeU5qcDBhR2x6TGlRZ1BTQjdJSEJoZEdnNklDUWtXeVF3TFROZExDQndZWEpoYlhNNklDUWtXeVF3TFRKZExDQm9ZWE5vT2lBa0pGc2tNQzB4WFN3Z2MzUnlhWEE2SUhsNUxuTjBjbWx3Um14aFozTW9KQ1JiSkRBdE5GMHNJQ1FrV3lRd1hTa2dmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXlOenAwYUdsekxpUWdQU0FrSkZza01GMDdYRzVpY21WaGF6dGNibU5oYzJVZ01qZzZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURJNU9seHVJQ0FnSUhSb2FYTXVKQ0E5SUh0Y2JpQWdJQ0FnSUhSNWNHVTZJQ2RUZFdKRmVIQnlaWE56YVc5dUp5eGNiaUFnSUNBZ0lIQmhkR2c2SUNRa1d5UXdMVE5kTEZ4dUlDQWdJQ0FnY0dGeVlXMXpPaUFrSkZza01DMHlYU3hjYmlBZ0lDQWdJR2hoYzJnNklDUWtXeVF3TFRGZExGeHVJQ0FnSUNBZ2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwWEc0Z0lDQWdmVHRjYmlBZ1hHNWljbVZoYXp0Y2JtTmhjMlVnTXpBNmRHaHBjeTRrSUQwZ2UzUjVjR1U2SUNkSVlYTm9KeXdnY0dGcGNuTTZJQ1FrV3lRd1hTd2diRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcGZUdGNibUp5WldGck8xeHVZMkZ6WlNBek1UcDBhR2x6TGlRZ1BTQjdkSGx3WlRvZ0owaGhjMmhRWVdseUp5d2dhMlY1T2lCNWVTNXBaQ2drSkZza01DMHlYU2tzSUhaaGJIVmxPaUFrSkZza01GMHNJR3h2WXpvZ2VYa3ViRzlqU1c1bWJ5aDBhR2x6TGw4a0tYMDdYRzVpY21WaGF6dGNibU5oYzJVZ016STZkR2hwY3k0a0lEMGdlWGt1YVdRb0pDUmJKREF0TVYwcE8xeHVZbkpsWVdzN1hHNWpZWE5sSURNek9uUm9hWE11SkNBOUlDUWtXeVF3WFR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6TkRwMGFHbHpMaVFnUFNBa0pGc2tNRjA3WEc1aWNtVmhhenRjYm1OaGMyVWdNelU2ZEdocGN5NGtJRDBnZTNSNWNHVTZJQ2RUZEhKcGJtZE1hWFJsY21Gc0p5d2dkbUZzZFdVNklDUWtXeVF3WFN3Z2IzSnBaMmx1WVd3NklDUWtXeVF3WFN3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6TmpwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjA1MWJXSmxja3hwZEdWeVlXd25MQ0IyWVd4MVpUb2dUblZ0WW1WeUtDUWtXeVF3WFNrc0lHOXlhV2RwYm1Gc09pQk9kVzFpWlhJb0pDUmJKREJkS1N3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6TnpwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjBKdmIyeGxZVzVNYVhSbGNtRnNKeXdnZG1Gc2RXVTZJQ1FrV3lRd1hTQTlQVDBnSjNSeWRXVW5MQ0J2Y21sbmFXNWhiRG9nSkNSYkpEQmRJRDA5UFNBbmRISjFaU2NzSUd4dll6b2dlWGt1Ykc5alNXNW1ieWgwYUdsekxsOGtLWDA3WEc1aWNtVmhhenRjYm1OaGMyVWdNemc2ZEdocGN5NGtJRDBnZTNSNWNHVTZJQ2RWYm1SbFptbHVaV1JNYVhSbGNtRnNKeXdnYjNKcFoybHVZV3c2SUhWdVpHVm1hVzVsWkN3Z2RtRnNkV1U2SUhWdVpHVm1hVzVsWkN3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6T1RwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjA1MWJHeE1hWFJsY21Gc0p5d2diM0pwWjJsdVlXdzZJRzUxYkd3c0lIWmhiSFZsT2lCdWRXeHNMQ0JzYjJNNklIbDVMbXh2WTBsdVptOG9kR2hwY3k1ZkpDbDlPMXh1WW5KbFlXczdYRzVqWVhObElEUXdPblJvYVhNdUpDQTlJQ1FrV3lRd1hUdGNibUp5WldGck8xeHVZMkZ6WlNBME1UcDBhR2x6TGlRZ1BTQWtKRnNrTUYwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTkRJNmRHaHBjeTRrSUQwZ2VYa3VjSEpsY0dGeVpWQmhkR2dvZEhKMVpTd2dKQ1JiSkRCZExDQjBhR2x6TGw4a0tUdGNibUp5WldGck8xeHVZMkZ6WlNBME16cDBhR2x6TGlRZ1BTQjVlUzV3Y21Wd1lYSmxVR0YwYUNobVlXeHpaU3dnSkNSYkpEQmRMQ0IwYUdsekxsOGtLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTBORG9nSkNSYkpEQXRNbDB1Y0hWemFDaDdjR0Z5ZERvZ2VYa3VhV1FvSkNSYkpEQmRLU3dnYjNKcFoybHVZV3c2SUNRa1d5UXdYU3dnYzJWd1lYSmhkRzl5T2lBa0pGc2tNQzB4WFgwcE95QjBhR2x6TGlRZ1BTQWtKRnNrTUMweVhUc2dYRzVpY21WaGF6dGNibU5oYzJVZ05EVTZkR2hwY3k0a0lEMGdXM3R3WVhKME9pQjVlUzVwWkNna0pGc2tNRjBwTENCdmNtbG5hVzVoYkRvZ0pDUmJKREJkZlYwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTkRZNmRHaHBjeTRrSUQwZ1cxMDdYRzVpY21WaGF6dGNibU5oYzJVZ05EYzZKQ1JiSkRBdE1WMHVjSFZ6YUNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1allYTmxJRFE0T25Sb2FYTXVKQ0E5SUZ0ZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURRNU9pUWtXeVF3TFRGZExuQjFjMmdvSkNSYkpEQmRLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTFNRHAwYUdsekxpUWdQU0JiWFR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0ExTVRva0pGc2tNQzB4WFM1d2RYTm9LQ1FrV3lRd1hTazdYRzVpY21WaGF6dGNibU5oYzJVZ05UZzZkR2hwY3k0a0lEMGdXMTA3WEc1aWNtVmhhenRjYm1OaGMyVWdOVGs2SkNSYkpEQXRNVjB1Y0hWemFDZ2tKRnNrTUYwcE8xeHVZbkpsWVdzN1hHNWpZWE5sSURZME9uUm9hWE11SkNBOUlGdGRPMXh1WW5KbFlXczdYRzVqWVhObElEWTFPaVFrV3lRd0xURmRMbkIxYzJnb0pDUmJKREJkS1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0EzTURwMGFHbHpMaVFnUFNCYlhUdGNibUp5WldGck8xeHVZMkZ6WlNBM01Ub2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdYU2s3WEc1aWNtVmhhenRjYm1OaGMyVWdOemc2ZEdocGN5NGtJRDBnVzEwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTnprNkpDUmJKREF0TVYwdWNIVnphQ2drSkZza01GMHBPMXh1WW5KbFlXczdYRzVqWVhObElEZ3lPblJvYVhNdUpDQTlJRnRkTzF4dVluSmxZV3M3WEc1allYTmxJRGd6T2lRa1d5UXdMVEZkTG5CMWMyZ29KQ1JiSkRCZEtUdGNibUp5WldGck8xeHVZMkZ6WlNBNE5qcDBhR2x6TGlRZ1BTQmJYVHRjYm1KeVpXRnJPMXh1WTJGelpTQTROem9rSkZza01DMHhYUzV3ZFhOb0tDUWtXeVF3WFNrN1hHNWljbVZoYXp0Y2JtTmhjMlVnT1RBNmRHaHBjeTRrSUQwZ1cxMDdYRzVpY21WaGF6dGNibU5oYzJVZ09URTZKQ1JiSkRBdE1WMHVjSFZ6YUNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1allYTmxJRGswT25Sb2FYTXVKQ0E5SUZ0ZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURrMU9pUWtXeVF3TFRGZExuQjFjMmdvSkNSYkpEQmRLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTVPRHAwYUdsekxpUWdQU0JiSkNSYkpEQmRYVHRjYm1KeVpXRnJPMXh1WTJGelpTQTVPVG9rSkZza01DMHhYUzV3ZFhOb0tDUWtXeVF3WFNrN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRBd09uUm9hWE11SkNBOUlGc2tKRnNrTUYxZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURFd01Ub2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdYU2s3WEc1aWNtVmhhenRjYm4xY2JuMHNYRzUwWVdKc1pUb2dXM3N6T2pFc05Eb3lMRFU2V3pJc05EWmRMRFk2TXl3eE5EcGJNaXcwTmwwc01UVTZXeklzTkRaZExERTVPbHN5TERRMlhTd3lPVHBiTWl3ME5sMHNNelE2V3pJc05EWmRMRFE0T2xzeUxEUTJYU3cxTVRwYk1pdzBObDBzTlRVNld6SXNORFpkTERZd09sc3lMRFEyWFgwc2V6RTZXek5kZlN4N05UcGJNU3cwWFgwc2V6VTZXeklzTWwwc056bzFMRGc2Tml3NU9qY3NNVEE2T0N3eE1UbzVMREV5T2pFd0xERXpPakV4TERFME9sc3hMREV5WFN3eE5UcGJNU3d5TUYwc01UWTZNVGNzTVRrNld6RXNNak5kTERJME9qRTFMREkzT2pFMkxESTVPbHN4TERJeFhTd3pORHBiTVN3eU1sMHNNems2V3pJc01sMHNORFE2V3pJc01sMHNORGM2V3pJc01sMHNORGc2V3pFc01UTmRMRFV4T2xzeExERTBYU3cxTlRwYk1Td3hPRjBzTlRrNk1Ua3NOakE2V3pFc01qUmRmU3g3TVRwYk1pd3hYWDBzZXpVNld6SXNORGRkTERFME9sc3lMRFEzWFN3eE5UcGJNaXcwTjEwc01UazZXeklzTkRkZExESTVPbHN5TERRM1hTd3pORHBiTWl3ME4xMHNNems2V3pJc05EZGRMRFEwT2xzeUxEUTNYU3cwTnpwYk1pdzBOMTBzTkRnNld6SXNORGRkTERVeE9sc3lMRFEzWFN3MU5UcGJNaXcwTjEwc05qQTZXeklzTkRkZGZTeDdOVHBiTWl3elhTd3hORHBiTWl3elhTd3hOVHBiTWl3elhTd3hPVHBiTWl3elhTd3lPVHBiTWl3elhTd3pORHBiTWl3elhTd3pPVHBiTWl3elhTdzBORHBiTWl3elhTdzBOenBiTWl3elhTdzBPRHBiTWl3elhTdzFNVHBiTWl3elhTdzFOVHBiTWl3elhTdzJNRHBiTWl3elhYMHNlelU2V3pJc05GMHNNVFE2V3pJc05GMHNNVFU2V3pJc05GMHNNVGs2V3pJc05GMHNNams2V3pJc05GMHNNelE2V3pJc05GMHNNems2V3pJc05GMHNORFE2V3pJc05GMHNORGM2V3pJc05GMHNORGc2V3pJc05GMHNOVEU2V3pJc05GMHNOVFU2V3pJc05GMHNOakE2V3pJc05GMTlMSHMxT2xzeUxEVmRMREUwT2xzeUxEVmRMREUxT2xzeUxEVmRMREU1T2xzeUxEVmRMREk1T2xzeUxEVmRMRE0wT2xzeUxEVmRMRE01T2xzeUxEVmRMRFEwT2xzeUxEVmRMRFEzT2xzeUxEVmRMRFE0T2xzeUxEVmRMRFV4T2xzeUxEVmRMRFUxT2xzeUxEVmRMRFl3T2xzeUxEVmRmU3g3TlRwYk1pdzJYU3d4TkRwYk1pdzJYU3d4TlRwYk1pdzJYU3d4T1RwYk1pdzJYU3d5T1RwYk1pdzJYU3d6TkRwYk1pdzJYU3d6T1RwYk1pdzJYU3cwTkRwYk1pdzJYU3cwTnpwYk1pdzJYU3cwT0RwYk1pdzJYU3cxTVRwYk1pdzJYU3cxTlRwYk1pdzJYU3cyTURwYk1pdzJYWDBzZXpVNld6SXNOMTBzTVRRNld6SXNOMTBzTVRVNld6SXNOMTBzTVRrNld6SXNOMTBzTWprNld6SXNOMTBzTXpRNld6SXNOMTBzTXprNld6SXNOMTBzTkRRNld6SXNOMTBzTkRjNld6SXNOMTBzTkRnNld6SXNOMTBzTlRFNld6SXNOMTBzTlRVNld6SXNOMTBzTmpBNld6SXNOMTE5TEhzMU9sc3lMRGhkTERFME9sc3lMRGhkTERFMU9sc3lMRGhkTERFNU9sc3lMRGhkTERJNU9sc3lMRGhkTERNME9sc3lMRGhkTERNNU9sc3lMRGhkTERRME9sc3lMRGhkTERRM09sc3lMRGhkTERRNE9sc3lMRGhkTERVeE9sc3lMRGhkTERVMU9sc3lMRGhkTERZd09sc3lMRGhkZlN4N05UcGJNaXc1WFN3eE5EcGJNaXc1WFN3eE5UcGJNaXc1WFN3eE9UcGJNaXc1WFN3eU9UcGJNaXc1WFN3ek5EcGJNaXc1WFN3ek9UcGJNaXc1WFN3ME5EcGJNaXc1WFN3ME56cGJNaXc1WFN3ME9EcGJNaXc1WFN3MU1UcGJNaXc1WFN3MU5UcGJNaXc1WFN3Mk1EcGJNaXc1WFgwc2V6SXdPakkxTERjeU9sc3hMRE0xWFN3M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpJd09qTTJMRGN5T2xzeExETTFYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlelE2TXpjc05qb3pMREUwT2xzeUxEUTJYU3d4TlRwYk1pdzBObDBzTVRrNld6SXNORFpkTERJNU9sc3lMRFEyWFN3ek5EcGJNaXcwTmwwc016azZXeklzTkRaZExEUTBPbHN5TERRMlhTdzBOenBiTWl3ME5sMHNORGc2V3pJc05EWmRMRFV4T2xzeUxEUTJYU3cxTlRwYk1pdzBObDBzTmpBNld6SXNORFpkZlN4N05Eb3pPQ3cyT2pNc01UUTZXeklzTkRaZExERTFPbHN5TERRMlhTd3hPVHBiTWl3ME5sMHNNams2V3pJc05EWmRMRE0wT2xzeUxEUTJYU3cwTkRwYk1pdzBObDBzTkRjNld6SXNORFpkTERRNE9sc3lMRFEyWFN3MU1UcGJNaXcwTmwwc05UVTZXeklzTkRaZExEWXdPbHN5TERRMlhYMHNlekUxT2xzeUxEUTRYU3d4Tnpvek9Td3hPRHBiTWl3ME9GMTlMSHN5TURvME1TdzFOam8wTUN3Mk5EbzBNaXcyTlRwYk1TdzBNMTBzTnpJNld6RXNNelZkTERjNE9qSTJMRGM1T2pJM0xEZ3dPbHN4TERJNFhTdzRNVHBiTVN3eU9WMHNPREk2V3pFc016QmRMRGd6T2xzeExETXhYU3c0TkRwYk1Td3pNbDBzT0RVNld6RXNNelJkTERnMk9qTXpmU3g3TkRvME5DdzJPak1zTVRRNld6SXNORFpkTERFMU9sc3lMRFEyWFN3eE9UcGJNaXcwTmwwc01qazZXeklzTkRaZExETTBPbHN5TERRMlhTdzBOenBiTWl3ME5sMHNORGc2V3pJc05EWmRMRFV4T2xzeUxEUTJYU3cxTlRwYk1pdzBObDBzTmpBNld6SXNORFpkZlN4N05UcGJNaXd4TUYwc01UUTZXeklzTVRCZExERTFPbHN5TERFd1hTd3hPRHBiTWl3eE1GMHNNVGs2V3pJc01UQmRMREk1T2xzeUxERXdYU3d6TkRwYk1pd3hNRjBzTXprNld6SXNNVEJkTERRME9sc3lMREV3WFN3ME56cGJNaXd4TUYwc05EZzZXeklzTVRCZExEVXhPbHN5TERFd1hTdzFOVHBiTWl3eE1GMHNOakE2V3pJc01UQmRmU3g3TWpBNk5EVXNOekk2V3pFc016VmRMRGM0T2pJMkxEYzVPakkzTERnd09sc3hMREk0WFN3NE1UcGJNU3d5T1Ywc09ESTZXekVzTXpCZExEZ3pPbHN4TERNeFhTdzRORHBiTVN3ek1sMHNPRFU2V3pFc016UmRMRGcyT2pNemZTeDdNakE2TkRZc056STZXekVzTXpWZExEYzRPakkyTERjNU9qSTNMRGd3T2xzeExESTRYU3c0TVRwYk1Td3lPVjBzT0RJNld6RXNNekJkTERnek9sc3hMRE14WFN3NE5EcGJNU3d6TWwwc09EVTZXekVzTXpSZExEZzJPak16ZlN4N01qQTZORGNzTnpJNld6RXNNelZkTERjNE9qSTJMRGM1T2pJM0xEZ3dPbHN4TERJNFhTdzRNVHBiTVN3eU9WMHNPREk2V3pFc016QmRMRGd6T2xzeExETXhYU3c0TkRwYk1Td3pNbDBzT0RVNld6RXNNelJkTERnMk9qTXpmU3g3TWpBNk5ERXNOVFk2TkRnc05qUTZORElzTmpVNld6RXNORE5kTERjeU9sc3hMRE0xWFN3M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpNek9sc3lMRGM0WFN3ME9UbzBPU3cyTlRwYk1pdzNPRjBzTnpJNld6SXNOemhkTERnd09sc3lMRGM0WFN3NE1UcGJNaXczT0Ywc09ESTZXeklzTnpoZExEZ3pPbHN5TERjNFhTdzRORHBiTWl3M09GMHNPRFU2V3pJc056aGRmU3g3TWpNNld6SXNNek5kTERNek9sc3lMRE16WFN3MU5EcGJNaXd6TTEwc05qVTZXeklzTXpOZExEWTRPbHN5TERNelhTdzNNanBiTWl3ek0xMHNOelU2V3pJc016TmRMRGd3T2xzeUxETXpYU3c0TVRwYk1pd3pNMTBzT0RJNld6SXNNek5kTERnek9sc3lMRE16WFN3NE5EcGJNaXd6TTEwc09EVTZXeklzTXpOZGZTeDdNak02V3pJc016UmRMRE16T2xzeUxETTBYU3cxTkRwYk1pd3pORjBzTmpVNld6SXNNelJkTERZNE9sc3lMRE0wWFN3M01qcGJNaXd6TkYwc056VTZXeklzTXpSZExEZ3dPbHN5TERNMFhTdzRNVHBiTWl3ek5GMHNPREk2V3pJc016UmRMRGd6T2xzeUxETTBYU3c0TkRwYk1pd3pORjBzT0RVNld6SXNNelJkZlN4N01qTTZXeklzTXpWZExETXpPbHN5TERNMVhTdzFORHBiTWl3ek5WMHNOalU2V3pJc016VmRMRFk0T2xzeUxETTFYU3czTWpwYk1pd3pOVjBzTnpVNld6SXNNelZkTERnd09sc3lMRE0xWFN3NE1UcGJNaXd6TlYwc09ESTZXeklzTXpWZExEZ3pPbHN5TERNMVhTdzRORHBiTWl3ek5WMHNPRFU2V3pJc016VmRmU3g3TWpNNld6SXNNelpkTERNek9sc3lMRE0yWFN3MU5EcGJNaXd6Tmwwc05qVTZXeklzTXpaZExEWTRPbHN5TERNMlhTdzNNanBiTWl3ek5sMHNOelU2V3pJc016WmRMRGd3T2xzeUxETTJYU3c0TVRwYk1pd3pObDBzT0RJNld6SXNNelpkTERnek9sc3lMRE0yWFN3NE5EcGJNaXd6Tmwwc09EVTZXeklzTXpaZGZTeDdNak02V3pJc016ZGRMRE16T2xzeUxETTNYU3cxTkRwYk1pd3pOMTBzTmpVNld6SXNNemRkTERZNE9sc3lMRE0zWFN3M01qcGJNaXd6TjEwc056VTZXeklzTXpkZExEZ3dPbHN5TERNM1hTdzRNVHBiTWl3ek4xMHNPREk2V3pJc016ZGRMRGd6T2xzeUxETTNYU3c0TkRwYk1pd3pOMTBzT0RVNld6SXNNemRkZlN4N01qTTZXeklzTXpoZExETXpPbHN5TERNNFhTdzFORHBiTWl3ek9GMHNOalU2V3pJc016aGRMRFk0T2xzeUxETTRYU3czTWpwYk1pd3pPRjBzTnpVNld6SXNNemhkTERnd09sc3lMRE00WFN3NE1UcGJNaXd6T0Ywc09ESTZXeklzTXpoZExEZ3pPbHN5TERNNFhTdzRORHBiTWl3ek9GMHNPRFU2V3pJc016aGRmU3g3TWpNNld6SXNNemxkTERNek9sc3lMRE01WFN3MU5EcGJNaXd6T1Ywc05qVTZXeklzTXpsZExEWTRPbHN5TERNNVhTdzNNanBiTWl3ek9WMHNOelU2V3pJc016bGRMRGd3T2xzeUxETTVYU3c0TVRwYk1pd3pPVjBzT0RJNld6SXNNemxkTERnek9sc3lMRE01WFN3NE5EcGJNaXd6T1Ywc09EVTZXeklzTXpsZGZTeDdNak02V3pJc05ETmRMRE16T2xzeUxEUXpYU3cxTkRwYk1pdzBNMTBzTmpVNld6SXNORE5kTERZNE9sc3lMRFF6WFN3M01qcGJNaXcwTTEwc056VTZXeklzTkROZExEZ3dPbHN5TERRelhTdzRNVHBiTWl3ME0xMHNPREk2V3pJc05ETmRMRGd6T2xzeUxEUXpYU3c0TkRwYk1pdzBNMTBzT0RVNld6SXNORE5kTERnM09sc3hMRFV3WFgwc2V6Y3lPbHN4TERNMVhTdzROam8xTVgwc2V6SXpPbHN5TERRMVhTd3pNenBiTWl3ME5WMHNOVFE2V3pJc05EVmRMRFkxT2xzeUxEUTFYU3cyT0RwYk1pdzBOVjBzTnpJNld6SXNORFZkTERjMU9sc3lMRFExWFN3NE1EcGJNaXcwTlYwc09ERTZXeklzTkRWZExEZ3lPbHN5TERRMVhTdzRNenBiTWl3ME5WMHNPRFE2V3pJc05EVmRMRGcxT2xzeUxEUTFYU3c0TnpwYk1pdzBOVjE5TEhzMU1qbzFNaXcxTkRwYk1pdzRNbDBzTmpVNld6SXNPREpkTERjeU9sc3lMRGd5WFN3NE1EcGJNaXc0TWwwc09ERTZXeklzT0RKZExEZ3lPbHN5TERneVhTdzRNenBiTWl3NE1sMHNPRFE2V3pJc09ESmRMRGcxT2xzeUxEZ3lYWDBzZXpJMU9qVXpMRE00T2pVMUxETTVPbHN4TERVM1hTdzBNem8xTml3ME5EcGJNU3cxT0Ywc05EVTZOVFFzTkRjNld6SXNOVFJkZlN4N01qZzZOVGtzTkRNNk5qQXNORFE2V3pFc05UaGRMRFEzT2xzeUxEVTJYWDBzZXpFek9qWXlMREUxT2xzeExESXdYU3d4T0RwYk1TdzJNVjE5TEhzek16cGJNaXc0Tmwwc05UYzZOak1zTmpVNld6SXNPRFpkTERjeU9sc3lMRGcyWFN3NE1EcGJNaXc0Tmwwc09ERTZXeklzT0RaZExEZ3lPbHN5TERnMlhTdzRNenBiTWl3NE5sMHNPRFE2V3pJc09EWmRMRGcxT2xzeUxEZzJYWDBzZXpNek9sc3lMRFF3WFN3Mk5UcGJNaXcwTUYwc056STZXeklzTkRCZExEZ3dPbHN5TERRd1hTdzRNVHBiTWl3ME1GMHNPREk2V3pJc05EQmRMRGd6T2xzeUxEUXdYU3c0TkRwYk1pdzBNRjBzT0RVNld6SXNOREJkZlN4N016TTZXeklzTkRGZExEWTFPbHN5TERReFhTdzNNanBiTWl3ME1WMHNPREE2V3pJc05ERmRMRGd4T2xzeUxEUXhYU3c0TWpwYk1pdzBNVjBzT0RNNld6SXNOREZkTERnME9sc3lMRFF4WFN3NE5UcGJNaXcwTVYxOUxIc3lNRG8yTkN3M01qcGJNU3d6TlYwc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRMRGd4T2xzeExESTVYU3c0TWpwYk1Td3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5UcGJNU3d6TkYwc09EWTZNek45TEhzeU5qbzJOU3cwTnpwYk1TdzJObDE5TEhzek1EbzJOeXd6TXpwYk1pdzFPRjBzTmpVNld6SXNOVGhkTERjeU9sc3lMRFU0WFN3M05UcGJNaXcxT0Ywc09EQTZXeklzTlRoZExEZ3hPbHN5TERVNFhTdzRNanBiTWl3MU9GMHNPRE02V3pJc05UaGRMRGcwT2xzeUxEVTRYU3c0TlRwYk1pdzFPRjE5TEhzek16cGJNaXcyTkYwc016VTZOamdzTmpVNld6SXNOalJkTERjeU9sc3lMRFkwWFN3M05UcGJNaXcyTkYwc09EQTZXeklzTmpSZExEZ3hPbHN5TERZMFhTdzRNanBiTWl3Mk5GMHNPRE02V3pJc05qUmRMRGcwT2xzeUxEWTBYU3c0TlRwYk1pdzJORjE5TEhzeU1UbzJPU3d5TXpwYk1pdzFNRjBzTmpVNld6SXNOVEJkTERjeU9sc3lMRFV3WFN3NE1EcGJNaXcxTUYwc09ERTZXeklzTlRCZExEZ3lPbHN5TERVd1hTdzRNenBiTWl3MU1GMHNPRFE2V3pJc05UQmRMRGcxT2xzeUxEVXdYWDBzZXpNek9sc3lMRGt3WFN3Mk1UbzNNQ3cyTlRwYk1pdzVNRjBzTnpJNld6SXNPVEJkTERnd09sc3lMRGt3WFN3NE1UcGJNaXc1TUYwc09ESTZXeklzT1RCZExEZ3pPbHN5TERrd1hTdzRORHBiTWl3NU1GMHNPRFU2V3pJc09UQmRmU3g3TWpBNk56UXNNek02V3pJc09EQmRMRFV3T2pjeExEWXpPamN5TERZME9qYzFMRFkxT2xzeExEUXpYU3cyT1RvM015dzNNRG8zTml3M01UbzNOeXczTWpwYk1TdzNPRjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHMzTWpwYk1TdzNPVjE5TEhzeU16cGJNaXcwTWwwc016TTZXeklzTkRKZExEVTBPbHN5TERReVhTdzJOVHBiTWl3ME1sMHNOamc2V3pJc05ESmRMRGN5T2xzeUxEUXlYU3czTlRwYk1pdzBNbDBzT0RBNld6SXNOREpkTERneE9sc3lMRFF5WFN3NE1qcGJNaXcwTWwwc09ETTZXeklzTkRKZExEZzBPbHN5TERReVhTdzROVHBiTWl3ME1sMHNPRGM2V3pFc05UQmRmU3g3TWpBNk56UXNOVE02T0RBc05UUTZXeklzT0RSZExEWXpPamd4TERZME9qYzFMRFkxT2xzeExEUXpYU3cyT1RvNE1pdzNNRG8zTml3M01UbzNOeXczTWpwYk1TdzNPRjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHN5TmpvNE15dzBOenBiTVN3Mk5sMTlMSHMwTnpwYk1pdzFOVjE5TEhzME9qZzBMRFk2TXl3eE5EcGJNaXcwTmwwc01UVTZXeklzTkRaZExERTVPbHN5TERRMlhTd3lPVHBiTWl3ME5sMHNNelE2V3pJc05EWmRMRE01T2xzeUxEUTJYU3cwTkRwYk1pdzBObDBzTkRjNld6SXNORFpkTERRNE9sc3lMRFEyWFN3MU1UcGJNaXcwTmwwc05UVTZXeklzTkRaZExEWXdPbHN5TERRMlhYMHNlelEzT2xzeUxESXdYWDBzZXpJd09qZzFMRGN5T2xzeExETTFYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlelE2T0RZc05qb3pMREUwT2xzeUxEUTJYU3d4TlRwYk1pdzBObDBzTVRrNld6SXNORFpkTERJNU9sc3lMRFEyWFN3ek5EcGJNaXcwTmwwc05EYzZXeklzTkRaZExEUTRPbHN5TERRMlhTdzFNVHBiTWl3ME5sMHNOVFU2V3pJc05EWmRMRFl3T2xzeUxEUTJYWDBzZXpJMk9qZzNMRFEzT2xzeExEWTJYWDBzZXpRM09sc3lMRFUzWFgwc2V6VTZXeklzTVRGZExERTBPbHN5TERFeFhTd3hOVHBiTWl3eE1WMHNNVGs2V3pJc01URmRMREk1T2xzeUxERXhYU3d6TkRwYk1pd3hNVjBzTXprNld6SXNNVEZkTERRME9sc3lMREV4WFN3ME56cGJNaXd4TVYwc05EZzZXeklzTVRGZExEVXhPbHN5TERFeFhTdzFOVHBiTWl3eE1WMHNOakE2V3pJc01URmRmU3g3TVRVNld6SXNORGxkTERFNE9sc3lMRFE1WFgwc2V6SXdPamMwTERNek9sc3lMRGc0WFN3MU9EbzRPQ3cyTXpvNE9TdzJORG8zTlN3Mk5UcGJNU3cwTTEwc05qazZPVEFzTnpBNk56WXNOekU2Tnpjc056STZXekVzTnpoZExEYzRPakkyTERjNU9qSTNMRGd3T2xzeExESTRYU3c0TVRwYk1Td3lPVjBzT0RJNld6RXNNekJkTERnek9sc3hMRE14WFN3NE5EcGJNU3d6TWwwc09EVTZXekVzTXpSZExEZzJPak16ZlN4N05qVTZXeklzT1RSZExEWTJPamt4TERZNE9sc3lMRGswWFN3M01qcGJNaXc1TkYwc09EQTZXeklzT1RSZExEZ3hPbHN5TERrMFhTdzRNanBiTWl3NU5GMHNPRE02V3pJc09UUmRMRGcwT2xzeUxEazBYU3c0TlRwYk1pdzVORjE5TEhzMU9sc3lMREkxWFN3eE5EcGJNaXd5TlYwc01UVTZXeklzTWpWZExERTVPbHN5TERJMVhTd3lPVHBiTWl3eU5WMHNNelE2V3pJc01qVmRMRE01T2xzeUxESTFYU3cwTkRwYk1pd3lOVjBzTkRjNld6SXNNalZkTERRNE9sc3lMREkxWFN3MU1UcGJNaXd5TlYwc05UVTZXeklzTWpWZExEWXdPbHN5TERJMVhYMHNlekl3T2preUxEY3lPbHN4TERNMVhTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPamMwTERNeE9qa3pMRE16T2xzeUxEWXdYU3cyTXpvNU5DdzJORG8zTlN3Mk5UcGJNU3cwTTEwc05qazZPVFVzTnpBNk56WXNOekU2Tnpjc056STZXekVzTnpoZExEYzFPbHN5TERZd1hTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPamMwTERNek9sc3lMRFkyWFN3ek5qbzVOaXcyTXpvNU55dzJORG8zTlN3Mk5UcGJNU3cwTTEwc05qazZPVGdzTnpBNk56WXNOekU2Tnpjc056STZXekVzTnpoZExEYzFPbHN5TERZMlhTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPamMwTERJeU9qazVMREl6T2xzeUxEVXlYU3cyTXpveE1EQXNOalE2TnpVc05qVTZXekVzTkROZExEWTVPakV3TVN3M01EbzNOaXczTVRvM055dzNNanBiTVN3M09GMHNOemc2TWpZc056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYwc09ETTZXekVzTXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIc3lNRG8zTkN3ek16cGJNaXc1TWwwc05qSTZNVEF5TERZek9qRXdNeXcyTkRvM05TdzJOVHBiTVN3ME0xMHNOams2TVRBMExEY3dPamMyTERjeE9qYzNMRGN5T2xzeExEYzRYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlek16T2xzeExERXdOVjE5TEhzek16cGJNaXczT1Ywc05qVTZXeklzTnpsZExEY3lPbHN5TERjNVhTdzRNRHBiTWl3M09WMHNPREU2V3pJc056bGRMRGd5T2xzeUxEYzVYU3c0TXpwYk1pdzNPVjBzT0RRNld6SXNOemxkTERnMU9sc3lMRGM1WFgwc2V6TXpPbHN5TERneFhYMHNlekl6T2xzeUxESTNYU3d6TXpwYk1pd3lOMTBzTlRRNld6SXNNamRkTERZMU9sc3lMREkzWFN3Mk9EcGJNaXd5TjEwc056STZXeklzTWpkZExEYzFPbHN5TERJM1hTdzRNRHBiTWl3eU4xMHNPREU2V3pJc01qZGRMRGd5T2xzeUxESTNYU3c0TXpwYk1pd3lOMTBzT0RRNld6SXNNamRkTERnMU9sc3lMREkzWFgwc2V6SXpPbHN5TERJNFhTd3pNenBiTWl3eU9GMHNOVFE2V3pJc01qaGRMRFkxT2xzeUxESTRYU3cyT0RwYk1pd3lPRjBzTnpJNld6SXNNamhkTERjMU9sc3lMREk0WFN3NE1EcGJNaXd5T0Ywc09ERTZXeklzTWpoZExEZ3lPbHN5TERJNFhTdzRNenBiTWl3eU9GMHNPRFE2V3pJc01qaGRMRGcxT2xzeUxESTRYWDBzZXpJek9sc3lMRE13WFN3ek16cGJNaXd6TUYwc05UUTZXeklzTXpCZExEWTRPbHN5TERNd1hTdzNNVG94TURZc056STZXekVzTVRBM1hTdzNOVHBiTWl3ek1GMTlMSHN5TXpwYk1pdzVPRjBzTXpNNld6SXNPVGhkTERVME9sc3lMRGs0WFN3Mk9EcGJNaXc1T0Ywc056STZXeklzT1RoZExEYzFPbHN5TERrNFhYMHNlekl6T2xzeUxEUTFYU3d6TXpwYk1pdzBOVjBzTlRRNld6SXNORFZkTERZMU9sc3lMRFExWFN3Mk9EcGJNaXcwTlYwc056STZXeklzTkRWZExEY3pPbHN4TERFd09GMHNOelU2V3pJc05EVmRMRGd3T2xzeUxEUTFYU3c0TVRwYk1pdzBOVjBzT0RJNld6SXNORFZkTERnek9sc3lMRFExWFN3NE5EcGJNaXcwTlYwc09EVTZXeklzTkRWZExEZzNPbHN5TERRMVhYMHNlekl6T2xzeUxEUTBYU3d6TXpwYk1pdzBORjBzTlRRNld6SXNORFJkTERZMU9sc3lMRFEwWFN3Mk9EcGJNaXcwTkYwc056STZXeklzTkRSZExEYzFPbHN5TERRMFhTdzRNRHBiTWl3ME5GMHNPREU2V3pJc05EUmRMRGd5T2xzeUxEUTBYU3c0TXpwYk1pdzBORjBzT0RRNld6SXNORFJkTERnMU9sc3lMRFEwWFN3NE56cGJNaXcwTkYxOUxIczFORHBiTVN3eE1EbGRmU3g3TlRRNld6SXNPRE5kTERZMU9sc3lMRGd6WFN3M01qcGJNaXc0TTEwc09EQTZXeklzT0ROZExEZ3hPbHN5TERnelhTdzRNanBiTWl3NE0xMHNPRE02V3pJc09ETmRMRGcwT2xzeUxEZ3pYU3c0TlRwYk1pdzRNMTE5TEhzMU5EcGJNaXc0TlYxOUxIczFPbHN5TERFelhTd3hORHBiTWl3eE0xMHNNVFU2V3pJc01UTmRMREU1T2xzeUxERXpYU3d5T1RwYk1pd3hNMTBzTXpRNld6SXNNVE5kTERNNU9sc3lMREV6WFN3ME5EcGJNaXd4TTEwc05EYzZXeklzTVROZExEUTRPbHN5TERFelhTdzFNVHBiTWl3eE0xMHNOVFU2V3pJc01UTmRMRFl3T2xzeUxERXpYWDBzZXpNNE9qVTFMRE01T2xzeExEVTNYU3cwTXpvMU5pdzBORHBiTVN3MU9GMHNORFU2TVRFeExEUTJPakV4TUN3ME56cGJNaXczTmwxOUxIc3pNenBiTWl3M01GMHNOREE2TVRFeUxEWTFPbHN5TERjd1hTdzNNanBiTWl3M01GMHNOelU2V3pJc056QmRMRGd3T2xzeUxEY3dYU3c0TVRwYk1pdzNNRjBzT0RJNld6SXNOekJkTERnek9sc3lMRGN3WFN3NE5EcGJNaXczTUYwc09EVTZXeklzTnpCZGZTeDdORGM2V3pJc01UaGRmU3g3TlRwYk1pd3hORjBzTVRRNld6SXNNVFJkTERFMU9sc3lMREUwWFN3eE9UcGJNaXd4TkYwc01qazZXeklzTVRSZExETTBPbHN5TERFMFhTd3pPVHBiTWl3eE5GMHNORFE2V3pJc01UUmRMRFEzT2xzeUxERTBYU3cwT0RwYk1pd3hORjBzTlRFNld6SXNNVFJkTERVMU9sc3lMREUwWFN3Mk1EcGJNaXd4TkYxOUxIc3pNenBiTVN3eE1UTmRmU3g3TXpNNld6SXNPRGRkTERZMU9sc3lMRGczWFN3M01qcGJNaXc0TjEwc09EQTZXeklzT0RkZExEZ3hPbHN5TERnM1hTdzRNanBiTWl3NE4xMHNPRE02V3pJc09EZGRMRGcwT2xzeUxEZzNYU3c0TlRwYk1pdzROMTE5TEhzek16cGJNaXc0T1YxOUxIc3lNRG8zTkN3Mk16b3hNVFVzTmpRNk56VXNOalU2V3pFc05ETmRMRFkzT2pFeE5DdzJPRHBiTWl3NU5sMHNOams2TVRFMkxEY3dPamMyTERjeE9qYzNMRGN5T2xzeExEYzRYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlek16T2xzeExERXhOMTE5TEhzek1qb3hNVGdzTXpNNld6SXNOakpkTERjME9qRXhPU3czTlRwYk1Td3hNakJkZlN4N016TTZXeklzTlRsZExEWTFPbHN5TERVNVhTdzNNanBiTWl3MU9WMHNOelU2V3pJc05UbGRMRGd3T2xzeUxEVTVYU3c0TVRwYk1pdzFPVjBzT0RJNld6SXNOVGxkTERnek9sc3lMRFU1WFN3NE5EcGJNaXcxT1Ywc09EVTZXeklzTlRsZGZTeDdNek02V3pJc05qRmRMRGMxT2xzeUxEWXhYWDBzZXpNek9sc3lMRFk0WFN3ek56b3hNakVzTnpRNk1USXlMRGMxT2xzeExERXlNRjE5TEhzek16cGJNaXcyTlYwc05qVTZXeklzTmpWZExEY3lPbHN5TERZMVhTdzNOVHBiTWl3Mk5WMHNPREE2V3pJc05qVmRMRGd4T2xzeUxEWTFYU3c0TWpwYk1pdzJOVjBzT0RNNld6SXNOalZkTERnME9sc3lMRFkxWFN3NE5UcGJNaXcyTlYxOUxIc3pNenBiTWl3Mk4xMHNOelU2V3pJc05qZGRmU3g3TWpNNld6RXNNVEl6WFgwc2V6SXpPbHN5TERVeFhTdzJOVHBiTWl3MU1WMHNOekk2V3pJc05URmRMRGd3T2xzeUxEVXhYU3c0TVRwYk1pdzFNVjBzT0RJNld6SXNOVEZkTERnek9sc3lMRFV4WFN3NE5EcGJNaXcxTVYwc09EVTZXeklzTlRGZGZTeDdNak02V3pJc05UTmRmU3g3TXpNNld6RXNNVEkwWFgwc2V6TXpPbHN5TERreFhTdzJOVHBiTWl3NU1WMHNOekk2V3pJc09URmRMRGd3T2xzeUxEa3hYU3c0TVRwYk1pdzVNVjBzT0RJNld6SXNPVEZkTERnek9sc3lMRGt4WFN3NE5EcGJNaXc1TVYwc09EVTZXeklzT1RGZGZTeDdNek02V3pJc09UTmRmU3g3TlRwYk1pd3lNbDBzTVRRNld6SXNNakpkTERFMU9sc3lMREl5WFN3eE9UcGJNaXd5TWwwc01qazZXeklzTWpKZExETTBPbHN5TERJeVhTd3pPVHBiTWl3eU1sMHNORFE2V3pJc01qSmRMRFEzT2xzeUxESXlYU3cwT0RwYk1pd3lNbDBzTlRFNld6SXNNakpkTERVMU9sc3lMREl5WFN3Mk1EcGJNaXd5TWwxOUxIc3lNenBiTWl3NU9WMHNNek02V3pJc09UbGRMRFUwT2xzeUxEazVYU3cyT0RwYk1pdzVPVjBzTnpJNld6SXNPVGxkTERjMU9sc3lMRGs1WFgwc2V6Y3pPbHN4TERFd09GMTlMSHN5TURvM05DdzJNem94TWpVc05qUTZOelVzTmpVNld6RXNORE5kTERjeU9sc3hMRE0xWFN3M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpVNld6SXNNak5kTERFME9sc3lMREl6WFN3eE5UcGJNaXd5TTEwc01UazZXeklzTWpOZExESTVPbHN5TERJelhTd3pORHBiTWl3eU0xMHNNems2V3pJc01qTmRMRFEwT2xzeUxESXpYU3cwTnpwYk1pd3lNMTBzTkRnNld6SXNNak5kTERVeE9sc3lMREl6WFN3MU5UcGJNaXd5TTEwc05qQTZXeklzTWpOZGZTeDdORGM2V3pJc01UbGRmU3g3TkRjNld6SXNOemRkZlN4N01qQTZOelFzTXpNNld6SXNOekpkTERReE9qRXlOaXcyTXpveE1qY3NOalE2TnpVc05qVTZXekVzTkROZExEWTVPakV5T0N3M01EbzNOaXczTVRvM055dzNNanBiTVN3M09GMHNOelU2V3pJc056SmRMRGM0T2pJMkxEYzVPakkzTERnd09sc3hMREk0WFN3NE1UcGJNU3d5T1Ywc09ESTZXekVzTXpCZExEZ3pPbHN4TERNeFhTdzRORHBiTVN3ek1sMHNPRFU2V3pFc016UmRMRGcyT2pNemZTeDdOVHBiTWl3eU5GMHNNVFE2V3pJc01qUmRMREUxT2xzeUxESTBYU3d4T1RwYk1pd3lORjBzTWprNld6SXNNalJkTERNME9sc3lMREkwWFN3ek9UcGJNaXd5TkYwc05EUTZXeklzTWpSZExEUTNPbHN5TERJMFhTdzBPRHBiTWl3eU5GMHNOVEU2V3pJc01qUmRMRFUxT2xzeUxESTBYU3cyTURwYk1pd3lORjE5TEhzMk9EcGJNU3d4TWpsZGZTeDdOalU2V3pJc09UVmRMRFk0T2xzeUxEazFYU3czTWpwYk1pdzVOVjBzT0RBNld6SXNPVFZkTERneE9sc3lMRGsxWFN3NE1qcGJNaXc1TlYwc09ETTZXeklzT1RWZExEZzBPbHN5TERrMVhTdzROVHBiTWl3NU5WMTlMSHMyT0RwYk1pdzVOMTE5TEhzMU9sc3lMREl4WFN3eE5EcGJNaXd5TVYwc01UVTZXeklzTWpGZExERTVPbHN5TERJeFhTd3lPVHBiTWl3eU1WMHNNelE2V3pJc01qRmRMRE01T2xzeUxESXhYU3cwTkRwYk1pd3lNVjBzTkRjNld6SXNNakZkTERRNE9sc3lMREl4WFN3MU1UcGJNaXd5TVYwc05UVTZXeklzTWpGZExEWXdPbHN5TERJeFhYMHNlek16T2xzeExERXpNRjE5TEhzek16cGJNaXcyTTExOUxIczNNanBiTVN3eE16SmRMRGMyT2pFek1YMHNlek16T2xzeExERXpNMTE5TEhzek16cGJNaXcyT1YxOUxIc3hOVHBiTWl3eE1sMHNNVGc2V3pJc01USmRmU3g3TVRRNld6SXNNalpkTERFMU9sc3lMREkyWFN3eE9UcGJNaXd5Tmwwc01qazZXeklzTWpaZExETTBPbHN5TERJMlhTdzBOenBiTWl3eU5sMHNORGc2V3pJc01qWmRMRFV4T2xzeUxESTJYU3cxTlRwYk1pd3lObDBzTmpBNld6SXNNalpkZlN4N01qTTZXeklzTXpGZExETXpPbHN5TERNeFhTdzFORHBiTWl3ek1WMHNOamc2V3pJc016RmRMRGN5T2xzeUxETXhYU3czTlRwYk1pd3pNVjE5TEhzek16cGJNaXczTkYwc05ESTZNVE0wTERjME9qRXpOU3czTlRwYk1Td3hNakJkZlN4N016TTZXeklzTnpGZExEWTFPbHN5TERjeFhTdzNNanBiTWl3M01WMHNOelU2V3pJc056RmRMRGd3T2xzeUxEY3hYU3c0TVRwYk1pdzNNVjBzT0RJNld6SXNOekZkTERnek9sc3lMRGN4WFN3NE5EcGJNaXczTVYwc09EVTZXeklzTnpGZGZTeDdNek02V3pJc056TmRMRGMxT2xzeUxEY3pYWDBzZXpJek9sc3lMREk1WFN3ek16cGJNaXd5T1Ywc05UUTZXeklzTWpsZExEWTFPbHN5TERJNVhTdzJPRHBiTWl3eU9WMHNOekk2V3pJc01qbGRMRGMxT2xzeUxESTVYU3c0TURwYk1pd3lPVjBzT0RFNld6SXNNamxkTERneU9sc3lMREk1WFN3NE16cGJNaXd5T1Ywc09EUTZXeklzTWpsZExEZzFPbHN5TERJNVhYMHNlekUwT2xzeUxERTFYU3d4TlRwYk1pd3hOVjBzTVRrNld6SXNNVFZkTERJNU9sc3lMREUxWFN3ek5EcGJNaXd4TlYwc016azZXeklzTVRWZExEUTBPbHN5TERFMVhTdzBOenBiTWl3eE5WMHNORGc2V3pJc01UVmRMRFV4T2xzeUxERTFYU3cxTlRwYk1pd3hOVjBzTmpBNld6SXNNVFZkZlN4N056STZXekVzTVRNM1hTdzNOenBiTVN3eE16WmRmU3g3TnpJNld6SXNNVEF3WFN3M056cGJNaXd4TURCZGZTeDdNVFE2V3pJc01UWmRMREUxT2xzeUxERTJYU3d4T1RwYk1pd3hObDBzTWprNld6SXNNVFpkTERNME9sc3lMREUyWFN3ME5EcGJNaXd4Tmwwc05EYzZXeklzTVRaZExEUTRPbHN5TERFMlhTdzFNVHBiTWl3eE5sMHNOVFU2V3pJc01UWmRMRFl3T2xzeUxERTJYWDBzZXpNek9sc3hMREV6T0YxOUxIc3pNenBiTWl3M05WMTlMSHN6TXpwYk1pd3pNbDE5TEhzM01qcGJNaXd4TURGZExEYzNPbHN5TERFd01WMTlMSHN4TkRwYk1pd3hOMTBzTVRVNld6SXNNVGRkTERFNU9sc3lMREUzWFN3eU9UcGJNaXd4TjEwc016UTZXeklzTVRkZExETTVPbHN5TERFM1hTdzBORHBiTWl3eE4xMHNORGM2V3pJc01UZGRMRFE0T2xzeUxERTNYU3cxTVRwYk1pd3hOMTBzTlRVNld6SXNNVGRkTERZd09sc3lMREUzWFgxZExGeHVaR1ZtWVhWc2RFRmpkR2x2Ym5NNklIczBPbHN5TERGZExEVTBPbHN5TERVMVhTdzFOanBiTWl3eU1GMHNOakE2V3pJc05UZGRMRGN6T2xzeUxEZ3hYU3c0TWpwYk1pdzROVjBzT0RZNld6SXNNVGhkTERrd09sc3lMRGc1WFN3eE1ERTZXeklzTlROZExERXdORHBiTWl3NU0xMHNNVEV3T2xzeUxERTVYU3d4TVRFNld6SXNOemRkTERFeE5qcGJNaXc1TjEwc01URTVPbHN5TERZelhTd3hNakk2V3pJc05qbGRMREV6TlRwYk1pdzNOVjBzTVRNMk9sc3lMRE15WFgwc1hHNXdZWEp6WlVWeWNtOXlPaUJtZFc1amRHbHZiaUJ3WVhKelpVVnljbTl5SUNoemRISXNJR2hoYzJncElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYzNSeUtUdGNibjBzWEc1d1lYSnpaVG9nWm5WdVkzUnBiMjRnY0dGeWMyVW9hVzV3ZFhRcElIdGNiaUFnSUNCMllYSWdjMlZzWmlBOUlIUm9hWE1zSUhOMFlXTnJJRDBnV3pCZExDQjJjM1JoWTJzZ1BTQmJiblZzYkYwc0lHeHpkR0ZqYXlBOUlGdGRMQ0IwWVdKc1pTQTlJSFJvYVhNdWRHRmliR1VzSUhsNWRHVjRkQ0E5SUZ3aVhDSXNJSGw1YkdsdVpXNXZJRDBnTUN3Z2VYbHNaVzVuSUQwZ01Dd2djbVZqYjNabGNtbHVaeUE5SURBc0lGUkZVbEpQVWlBOUlESXNJRVZQUmlBOUlERTdYRzRnSUNBZ2RHaHBjeTVzWlhobGNpNXpaWFJKYm5CMWRDaHBibkIxZENrN1hHNGdJQ0FnZEdocGN5NXNaWGhsY2k1NWVTQTlJSFJvYVhNdWVYazdYRzRnSUNBZ2RHaHBjeTU1ZVM1c1pYaGxjaUE5SUhSb2FYTXViR1Y0WlhJN1hHNGdJQ0FnZEdocGN5NTVlUzV3WVhKelpYSWdQU0IwYUdsek8xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RHaHBjeTVzWlhobGNpNTVlV3hzYjJNZ1BUMGdYQ0oxYm1SbFptbHVaV1JjSWlsY2JpQWdJQ0FnSUNBZ2RHaHBjeTVzWlhobGNpNTVlV3hzYjJNZ1BTQjdmVHRjYmlBZ0lDQjJZWElnZVhsc2IyTWdQU0IwYUdsekxteGxlR1Z5TG5sNWJHeHZZenRjYmlBZ0lDQnNjM1JoWTJzdWNIVnphQ2g1ZVd4dll5azdYRzRnSUNBZ2RtRnlJSEpoYm1kbGN5QTlJSFJvYVhNdWJHVjRaWEl1YjNCMGFXOXVjeUFtSmlCMGFHbHpMbXhsZUdWeUxtOXdkR2x2Ym5NdWNtRnVaMlZ6TzF4dUlDQWdJR2xtSUNoMGVYQmxiMllnZEdocGN5NTVlUzV3WVhKelpVVnljbTl5SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVjR0Z5YzJWRmNuSnZjaUE5SUhSb2FYTXVlWGt1Y0dGeWMyVkZjbkp2Y2p0Y2JpQWdJQ0JtZFc1amRHbHZiaUJ3YjNCVGRHRmpheWh1S1NCN1hHNGdJQ0FnSUNBZ0lITjBZV05yTG14bGJtZDBhQ0E5SUhOMFlXTnJMbXhsYm1kMGFDQXRJRElnS2lCdU8xeHVJQ0FnSUNBZ0lDQjJjM1JoWTJzdWJHVnVaM1JvSUQwZ2RuTjBZV05yTG14bGJtZDBhQ0F0SUc0N1hHNGdJQ0FnSUNBZ0lHeHpkR0ZqYXk1c1pXNW5kR2dnUFNCc2MzUmhZMnN1YkdWdVozUm9JQzBnYmp0Y2JpQWdJQ0I5WEc0Z0lDQWdablZ1WTNScGIyNGdiR1Y0S0NrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnZEc5clpXNDdYRzRnSUNBZ0lDQWdJSFJ2YTJWdUlEMGdjMlZzWmk1c1pYaGxjaTVzWlhnb0tTQjhmQ0F4TzF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIUnZhMlZ1SUNFOVBTQmNJbTUxYldKbGNsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBiMnRsYmlBOUlITmxiR1l1YzNsdFltOXNjMTliZEc5clpXNWRJSHg4SUhSdmEyVnVPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYjJ0bGJqdGNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlITjViV0p2YkN3Z2NISmxSWEp5YjNKVGVXMWliMndzSUhOMFlYUmxMQ0JoWTNScGIyNHNJR0VzSUhJc0lIbDVkbUZzSUQwZ2UzMHNJSEFzSUd4bGJpd2dibVYzVTNSaGRHVXNJR1Y0Y0dWamRHVmtPMXh1SUNBZ0lIZG9hV3hsSUNoMGNuVmxLU0I3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxJRDBnYzNSaFkydGJjM1JoWTJzdWJHVnVaM1JvSUMwZ01WMDdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbVJsWm1GMWJIUkJZM1JwYjI1elczTjBZWFJsWFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWVdOMGFXOXVJRDBnZEdocGN5NWtaV1poZFd4MFFXTjBhVzl1YzF0emRHRjBaVjA3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzNsdFltOXNJRDA5UFNCdWRXeHNJSHg4SUhSNWNHVnZaaUJ6ZVcxaWIyd2dQVDBnWENKMWJtUmxabWx1WldSY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE41YldKdmJDQTlJR3hsZUNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZV04wYVc5dUlEMGdkR0ZpYkdWYmMzUmhkR1ZkSUNZbUlIUmhZbXhsVzNOMFlYUmxYVnR6ZVcxaWIyeGRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1lXTjBhVzl1SUQwOVBTQmNJblZ1WkdWbWFXNWxaRndpSUh4OElDRmhZM1JwYjI0dWJHVnVaM1JvSUh4OElDRmhZM1JwYjI1Yk1GMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJsY25KVGRISWdQU0JjSWx3aU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnlaV052ZG1WeWFXNW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhod1pXTjBaV1FnUFNCYlhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0hBZ2FXNGdkR0ZpYkdWYmMzUmhkR1ZkS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NTBaWEp0YVc1aGJITmZXM0JkSUNZbUlIQWdQaUF5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGVIQmxZM1JsWkM1d2RYTm9LRndpSjF3aUlDc2dkR2hwY3k1MFpYSnRhVzVoYkhOZlczQmRJQ3NnWENJblhDSXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWJHVjRaWEl1YzJodmQxQnZjMmwwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWeWNsTjBjaUE5SUZ3aVVHRnljMlVnWlhKeWIzSWdiMjRnYkdsdVpTQmNJaUFySUNoNWVXeHBibVZ1YnlBcklERXBJQ3NnWENJNlhGeHVYQ0lnS3lCMGFHbHpMbXhsZUdWeUxuTm9iM2RRYjNOcGRHbHZiaWdwSUNzZ1hDSmNYRzVGZUhCbFkzUnBibWNnWENJZ0t5QmxlSEJsWTNSbFpDNXFiMmx1S0Z3aUxDQmNJaWtnS3lCY0lpd2daMjkwSUNkY0lpQXJJQ2gwYUdsekxuUmxjbTFwYm1Gc2MxOWJjM2x0WW05c1hTQjhmQ0J6ZVcxaWIyd3BJQ3NnWENJblhDSTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhKeVUzUnlJRDBnWENKUVlYSnpaU0JsY25KdmNpQnZiaUJzYVc1bElGd2lJQ3NnS0hsNWJHbHVaVzV2SUNzZ01Ta2dLeUJjSWpvZ1ZXNWxlSEJsWTNSbFpDQmNJaUFySUNoemVXMWliMndnUFQwZ01UOWNJbVZ1WkNCdlppQnBibkIxZEZ3aU9sd2lKMXdpSUNzZ0tIUm9hWE11ZEdWeWJXbHVZV3h6WDF0emVXMWliMnhkSUh4OElITjViV0p2YkNrZ0t5QmNJaWRjSWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Y0dGeWMyVkZjbkp2Y2lobGNuSlRkSElzSUh0MFpYaDBPaUIwYUdsekxteGxlR1Z5TG0xaGRHTm9MQ0IwYjJ0bGJqb2dkR2hwY3k1MFpYSnRhVzVoYkhOZlczTjViV0p2YkYwZ2ZId2djM2x0WW05c0xDQnNhVzVsT2lCMGFHbHpMbXhsZUdWeUxubDViR2x1Wlc1dkxDQnNiMk02SUhsNWJHOWpMQ0JsZUhCbFkzUmxaRG9nWlhod1pXTjBaV1I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9ZV04wYVc5dVd6QmRJR2x1YzNSaGJtTmxiMllnUVhKeVlYa2dKaVlnWVdOMGFXOXVMbXhsYm1kMGFDQStJREVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGNJbEJoY25ObElFVnljbTl5T2lCdGRXeDBhWEJzWlNCaFkzUnBiMjV6SUhCdmMzTnBZbXhsSUdGMElITjBZWFJsT2lCY0lpQXJJSE4wWVhSbElDc2dYQ0lzSUhSdmEyVnVPaUJjSWlBcklITjViV0p2YkNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjM2RwZEdOb0lDaGhZM1JwYjI1Yk1GMHBJSHRjYmlBZ0lDQWdJQ0FnWTJGelpTQXhPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUmhZMnN1Y0hWemFDaHplVzFpYjJ3cE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG5OMFlXTnJMbkIxYzJnb2RHaHBjeTVzWlhobGNpNTVlWFJsZUhRcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYkhOMFlXTnJMbkIxYzJnb2RHaHBjeTVzWlhobGNpNTVlV3hzYjJNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaFkyc3VjSFZ6YUNoaFkzUnBiMjViTVYwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNsdFltOXNJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hjSEpsUlhKeWIzSlRlVzFpYjJ3cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVlV3hsYm1jZ1BTQjBhR2x6TG14bGVHVnlMbmw1YkdWdVp6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVlWFJsZUhRZ1BTQjBhR2x6TG14bGVHVnlMbmw1ZEdWNGREdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVlV3hwYm1WdWJ5QTlJSFJvYVhNdWJHVjRaWEl1ZVhsc2FXNWxibTg3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVhsc2IyTWdQU0IwYUdsekxteGxlR1Z5TG5sNWJHeHZZenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVmpiM1psY21sdVp5QStJREFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxZMjkyWlhKcGJtY3RMVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzbHRZbTlzSUQwZ2NISmxSWEp5YjNKVGVXMWliMnc3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKbFJYSnliM0pUZVcxaWIyd2dQU0J1ZFd4c08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnTWpwY2JpQWdJQ0FnSUNBZ0lDQWdJR3hsYmlBOUlIUm9hWE11Y0hKdlpIVmpkR2x2Ym5OZlcyRmpkR2x2YmxzeFhWMWJNVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjVlWFpoYkM0a0lEMGdkbk4wWVdOclczWnpkR0ZqYXk1c1pXNW5kR2dnTFNCc1pXNWRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2VYbDJZV3d1WHlRZ1BTQjdabWx5YzNSZmJHbHVaVG9nYkhOMFlXTnJXMnh6ZEdGamF5NXNaVzVuZEdnZ0xTQW9iR1Z1SUh4OElERXBYUzVtYVhKemRGOXNhVzVsTENCc1lYTjBYMnhwYm1VNklHeHpkR0ZqYTF0c2MzUmhZMnN1YkdWdVozUm9JQzBnTVYwdWJHRnpkRjlzYVc1bExDQm1hWEp6ZEY5amIyeDFiVzQ2SUd4emRHRmphMXRzYzNSaFkyc3ViR1Z1WjNSb0lDMGdLR3hsYmlCOGZDQXhLVjB1Wm1seWMzUmZZMjlzZFcxdUxDQnNZWE4wWDJOdmJIVnRiam9nYkhOMFlXTnJXMnh6ZEdGamF5NXNaVzVuZEdnZ0xTQXhYUzVzWVhOMFgyTnZiSFZ0Ym4wN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtRnVaMlZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VYbDJZV3d1WHlRdWNtRnVaMlVnUFNCYmJITjBZV05yVzJ4emRHRmpheTVzWlc1bmRHZ2dMU0FvYkdWdUlIeDhJREVwWFM1eVlXNW5aVnN3WFN3Z2JITjBZV05yVzJ4emRHRmpheTVzWlc1bmRHZ2dMU0F4WFM1eVlXNW5aVnN4WFYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlJRDBnZEdocGN5NXdaWEptYjNKdFFXTjBhVzl1TG1OaGJHd29lWGwyWVd3c0lIbDVkR1Y0ZEN3Z2VYbHNaVzVuTENCNWVXeHBibVZ1Ynl3Z2RHaHBjeTU1ZVN3Z1lXTjBhVzl1V3pGZExDQjJjM1JoWTJzc0lHeHpkR0ZqYXlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhJZ0lUMDlJRndpZFc1a1pXWnBibVZrWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NqdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoc1pXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGamF5QTlJSE4wWVdOckxuTnNhV05sS0RBc0lDMHhJQ29nYkdWdUlDb2dNaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG5OMFlXTnJJRDBnZG5OMFlXTnJMbk5zYVdObEtEQXNJQzB4SUNvZ2JHVnVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYzNSaFkyc2dQU0JzYzNSaFkyc3VjMnhwWTJVb01Dd2dMVEVnS2lCc1pXNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaFkyc3VjSFZ6YUNoMGFHbHpMbkJ5YjJSMVkzUnBiMjV6WDF0aFkzUnBiMjViTVYxZFd6QmRLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWnpkR0ZqYXk1d2RYTm9LSGw1ZG1Gc0xpUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JITjBZV05yTG5CMWMyZ29lWGwyWVd3dVh5UXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JtVjNVM1JoZEdVZ1BTQjBZV0pzWlZ0emRHRmphMXR6ZEdGamF5NXNaVzVuZEdnZ0xTQXlYVjFiYzNSaFkydGJjM1JoWTJzdWJHVnVaM1JvSUMwZ01WMWRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUmhZMnN1Y0hWemFDaHVaWGRUZEdGMFpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnWTJGelpTQXpPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzU5WEc1OU8xeHVMeW9nU21semIyNGdaMlZ1WlhKaGRHVmtJR3hsZUdWeUlDb3ZYRzUyWVhJZ2JHVjRaWElnUFNBb1puVnVZM1JwYjI0b0tYdGNiblpoY2lCc1pYaGxjaUE5SUNoN1JVOUdPakVzWEc1d1lYSnpaVVZ5Y205eU9tWjFibU4wYVc5dUlIQmhjbk5sUlhKeWIzSW9jM1J5TENCb1lYTm9LU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG5sNUxuQmhjbk5sY2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NTVlUzV3WVhKelpYSXVjR0Z5YzJWRmNuSnZjaWh6ZEhJc0lHaGhjMmdwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtITjBjaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TEZ4dWMyVjBTVzV3ZFhRNlpuVnVZM1JwYjI0Z0tHbHVjSFYwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJsdWNIVjBJRDBnYVc1d2RYUTdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgyMXZjbVVnUFNCMGFHbHpMbDlzWlhOeklEMGdkR2hwY3k1a2IyNWxJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWVYbHNhVzVsYm04Z1BTQjBhR2x6TG5sNWJHVnVaeUE5SURBN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZVhsMFpYaDBJRDBnZEdocGN5NXRZWFJqYUdWa0lEMGdkR2hwY3k1dFlYUmphQ0E5SUNjbk8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJtUnBkR2x2YmxOMFlXTnJJRDBnV3lkSlRrbFVTVUZNSjEwN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZVhsc2JHOWpJRDBnZTJacGNuTjBYMnhwYm1VNk1TeG1hWEp6ZEY5amIyeDFiVzQ2TUN4c1lYTjBYMnhwYm1VNk1TeHNZWE4wWDJOdmJIVnRiam93ZlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWIzQjBhVzl1Y3k1eVlXNW5aWE1wSUhSb2FYTXVlWGxzYkc5akxuSmhibWRsSUQwZ1d6QXNNRjA3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViMlptYzJWMElEMGdNRHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJQ0FnZlN4Y2JtbHVjSFYwT21aMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOb0lEMGdkR2hwY3k1ZmFXNXdkWFJiTUYwN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZVhsMFpYaDBJQ3M5SUdOb08xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5sNWJHVnVaeXNyTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbTltWm5ObGRDc3JPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMWhkR05vSUNzOUlHTm9PMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMWhkR05vWldRZ0t6MGdZMmc3WEc0Z0lDQWdJQ0FnSUhaaGNpQnNhVzVsY3lBOUlHTm9MbTFoZEdOb0tDOG9QenBjWEhKY1hHNC9mRnhjYmlrdUtpOW5LVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHeHBibVZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxubDViR2x1Wlc1dkt5czdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbmw1Ykd4dll5NXNZWE4wWDJ4cGJtVXJLenRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11ZVhsc2JHOWpMbXhoYzNSZlkyOXNkVzF1S3lzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXViM0IwYVc5dWN5NXlZVzVuWlhNcElIUm9hWE11ZVhsc2JHOWpMbkpoYm1kbFd6RmRLeXM3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmYVc1d2RYUWdQU0IwYUdsekxsOXBibkIxZEM1emJHbGpaU2d4S1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOb08xeHVJQ0FnSUgwc1hHNTFibkIxZERwbWRXNWpkR2x2YmlBb1kyZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHeGxiaUE5SUdOb0xteGxibWQwYUR0Y2JpQWdJQ0FnSUNBZ2RtRnlJR3hwYm1WeklEMGdZMmd1YzNCc2FYUW9MeWcvT2x4Y2NseGNiajk4WEZ4dUtTOW5LVHRjYmx4dUlDQWdJQ0FnSUNCMGFHbHpMbDlwYm5CMWRDQTlJR05vSUNzZ2RHaHBjeTVmYVc1d2RYUTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWVYbDBaWGgwSUQwZ2RHaHBjeTU1ZVhSbGVIUXVjM1ZpYzNSeUtEQXNJSFJvYVhNdWVYbDBaWGgwTG14bGJtZDBhQzFzWlc0dE1TazdYRzRnSUNBZ0lDQWdJQzh2ZEdocGN5NTVlV3hsYm1jZ0xUMGdiR1Z1TzF4dUlDQWdJQ0FnSUNCMGFHbHpMbTltWm5ObGRDQXRQU0JzWlc0N1hHNGdJQ0FnSUNBZ0lIWmhjaUJ2YkdSTWFXNWxjeUE5SUhSb2FYTXViV0YwWTJndWMzQnNhWFFvTHlnL09seGNjbHhjYmo5OFhGeHVLUzluS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV0WVhSamFDQTlJSFJvYVhNdWJXRjBZMmd1YzNWaWMzUnlLREFzSUhSb2FYTXViV0YwWTJndWJHVnVaM1JvTFRFcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xaGRHTm9aV1FnUFNCMGFHbHpMbTFoZEdOb1pXUXVjM1ZpYzNSeUtEQXNJSFJvYVhNdWJXRjBZMmhsWkM1c1pXNW5kR2d0TVNrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0d4cGJtVnpMbXhsYm1kMGFDMHhLU0IwYUdsekxubDViR2x1Wlc1dklDMDlJR3hwYm1WekxteGxibWQwYUMweE8xeHVJQ0FnSUNBZ0lDQjJZWElnY2lBOUlIUm9hWE11ZVhsc2JHOWpMbkpoYm1kbE8xeHVYRzRnSUNBZ0lDQWdJSFJvYVhNdWVYbHNiRzlqSUQwZ2UyWnBjbk4wWDJ4cGJtVTZJSFJvYVhNdWVYbHNiRzlqTG1acGNuTjBYMnhwYm1Vc1hHNGdJQ0FnSUNBZ0lDQWdiR0Z6ZEY5c2FXNWxPaUIwYUdsekxubDViR2x1Wlc1dkt6RXNYRzRnSUNBZ0lDQWdJQ0FnWm1seWMzUmZZMjlzZFcxdU9pQjBhR2x6TG5sNWJHeHZZeTVtYVhKemRGOWpiMngxYlc0c1hHNGdJQ0FnSUNBZ0lDQWdiR0Z6ZEY5amIyeDFiVzQ2SUd4cGJtVnpJRDljYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdLR3hwYm1WekxteGxibWQwYUNBOVBUMGdiMnhrVEdsdVpYTXViR1Z1WjNSb0lEOGdkR2hwY3k1NWVXeHNiMk11Wm1seWMzUmZZMjlzZFcxdUlEb2dNQ2tnS3lCdmJHUk1hVzVsYzF0dmJHUk1hVzVsY3k1c1pXNW5kR2dnTFNCc2FXNWxjeTVzWlc1bmRHaGRMbXhsYm1kMGFDQXRJR3hwYm1Weld6QmRMbXhsYm1kMGFEcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTU1ZVd4c2IyTXVabWx5YzNSZlkyOXNkVzF1SUMwZ2JHVnVYRzRnSUNBZ0lDQWdJQ0FnZlR0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NXZjSFJwYjI1ekxuSmhibWRsY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NTVlV3hzYjJNdWNtRnVaMlVnUFNCYmNsc3dYU3dnY2xzd1hTQXJJSFJvYVhNdWVYbHNaVzVuSUMwZ2JHVnVYVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnSUNCOUxGeHViVzl5WlRwbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgyMXZjbVVnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdJQ0I5TEZ4dWJHVnpjenBtZFc1amRHbHZiaUFvYmlrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5WdWNIVjBLSFJvYVhNdWJXRjBZMmd1YzJ4cFkyVW9iaWtwTzF4dUlDQWdJSDBzWEc1d1lYTjBTVzV3ZFhRNlpuVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2NHRnpkQ0E5SUhSb2FYTXViV0YwWTJobFpDNXpkV0p6ZEhJb01Dd2dkR2hwY3k1dFlYUmphR1ZrTG14bGJtZDBhQ0F0SUhSb2FYTXViV0YwWTJndWJHVnVaM1JvS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUNod1lYTjBMbXhsYm1kMGFDQStJREl3SUQ4Z0p5NHVMaWM2SnljcElDc2djR0Z6ZEM1emRXSnpkSElvTFRJd0tTNXlaWEJzWVdObEtDOWNYRzR2Wnl3Z1hDSmNJaWs3WEc0Z0lDQWdmU3hjYm5Wd1kyOXRhVzVuU1c1d2RYUTZablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdibVY0ZENBOUlIUm9hWE11YldGMFkyZzdYRzRnSUNBZ0lDQWdJR2xtSUNodVpYaDBMbXhsYm1kMGFDQThJREl3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1WlhoMElDczlJSFJvYVhNdVgybHVjSFYwTG5OMVluTjBjaWd3TENBeU1DMXVaWGgwTG14bGJtZDBhQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUNodVpYaDBMbk4xWW5OMGNpZ3dMREl3S1Nzb2JtVjRkQzVzWlc1bmRHZ2dQaUF5TUNBL0lDY3VMaTRuT2ljbktTa3VjbVZ3YkdGalpTZ3ZYRnh1TDJjc0lGd2lYQ0lwTzF4dUlDQWdJSDBzWEc1emFHOTNVRzl6YVhScGIyNDZablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdjSEpsSUQwZ2RHaHBjeTV3WVhOMFNXNXdkWFFvS1R0Y2JpQWdJQ0FnSUNBZ2RtRnlJR01nUFNCdVpYY2dRWEp5WVhrb2NISmxMbXhsYm1kMGFDQXJJREVwTG1wdmFXNG9YQ0l0WENJcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NISmxJQ3NnZEdocGN5NTFjR052YldsdVowbHVjSFYwS0NrZ0t5QmNJbHhjYmx3aUlDc2dZeXRjSWw1Y0lqdGNiaUFnSUNCOUxGeHVibVY0ZERwbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbVJ2Ym1VcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxrVlBSanRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9JWFJvYVhNdVgybHVjSFYwS1NCMGFHbHpMbVJ2Ym1VZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNBZ0lIWmhjaUIwYjJ0bGJpeGNiaUFnSUNBZ0lDQWdJQ0FnSUcxaGRHTm9MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHVnRjRTFoZEdOb0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1a1pYZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyd3NYRzRnSUNBZ0lDQWdJQ0FnSUNCc2FXNWxjenRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6TGw5dGIzSmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5sNWRHVjRkQ0E5SUNjbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXRZWFJqYUNBOUlDY25PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhaaGNpQnlkV3hsY3lBOUlIUm9hWE11WDJOMWNuSmxiblJTZFd4bGN5Z3BPMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJwUFRBN2FTQThJSEoxYkdWekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBaVzF3VFdGMFkyZ2dQU0IwYUdsekxsOXBibkIxZEM1dFlYUmphQ2gwYUdsekxuSjFiR1Z6VzNKMWJHVnpXMmxkWFNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHVnRjRTFoZEdOb0lDWW1JQ2doYldGMFkyZ2dmSHdnZEdWdGNFMWhkR05vV3pCZExteGxibWQwYUNBK0lHMWhkR05vV3pCZExteGxibWQwYUNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRZWFJqYUNBOUlIUmxiWEJOWVhSamFEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBibVJsZUNBOUlHazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGMGFHbHpMbTl3ZEdsdmJuTXVabXhsZUNrZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWhkR05vS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzYVc1bGN5QTlJRzFoZEdOb1d6QmRMbTFoZEdOb0tDOG9QenBjWEhKY1hHNC9mRnhjYmlrdUtpOW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hzYVc1bGN5a2dkR2hwY3k1NWVXeHBibVZ1YnlBclBTQnNhVzVsY3k1c1pXNW5kR2c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5sNWJHeHZZeUE5SUh0bWFYSnpkRjlzYVc1bE9pQjBhR2x6TG5sNWJHeHZZeTVzWVhOMFgyeHBibVVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1lYTjBYMnhwYm1VNklIUm9hWE11ZVhsc2FXNWxibThyTVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnBjbk4wWDJOdmJIVnRiam9nZEdocGN5NTVlV3hzYjJNdWJHRnpkRjlqYjJ4MWJXNHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWVhOMFgyTnZiSFZ0YmpvZ2JHbHVaWE1nUHlCc2FXNWxjMXRzYVc1bGN5NXNaVzVuZEdndE1WMHViR1Z1WjNSb0xXeHBibVZ6VzJ4cGJtVnpMbXhsYm1kMGFDMHhYUzV0WVhSamFDZ3ZYRnh5UDF4Y2JqOHZLVnN3WFM1c1pXNW5kR2dnT2lCMGFHbHpMbmw1Ykd4dll5NXNZWE4wWDJOdmJIVnRiaUFySUcxaGRHTm9XekJkTG14bGJtZDBhSDA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5sNWRHVjRkQ0FyUFNCdFlYUmphRnN3WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWJXRjBZMmdnS3owZ2JXRjBZMmhiTUYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtMWhkR05vWlhNZ1BTQnRZWFJqYUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWVYbHNaVzVuSUQwZ2RHaHBjeTU1ZVhSbGVIUXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11YjNCMGFXOXVjeTV5WVc1blpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxubDViR3h2WXk1eVlXNW5aU0E5SUZ0MGFHbHpMbTltWm5ObGRDd2dkR2hwY3k1dlptWnpaWFFnS3owZ2RHaHBjeTU1ZVd4bGJtZGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWZiVzl5WlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZmFXNXdkWFFnUFNCMGFHbHpMbDlwYm5CMWRDNXpiR2xqWlNodFlYUmphRnN3WFM1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1dFlYUmphR1ZrSUNzOUlHMWhkR05vV3pCZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEc5clpXNGdQU0IwYUdsekxuQmxjbVp2Y20xQlkzUnBiMjR1WTJGc2JDaDBhR2x6TENCMGFHbHpMbmw1TENCMGFHbHpMQ0J5ZFd4bGMxdHBibVJsZUYwc2RHaHBjeTVqYjI1a2FYUnBiMjVUZEdGamExdDBhR2x6TG1OdmJtUnBkR2x2YmxOMFlXTnJMbXhsYm1kMGFDMHhYU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NWtiMjVsSUNZbUlIUm9hWE11WDJsdWNIVjBLU0IwYUdsekxtUnZibVVnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYjJ0bGJpa2djbVYwZFhKdUlIUnZhMlZ1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgybHVjSFYwSUQwOVBTQmNJbHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1RlQwWTdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXdZWEp6WlVWeWNtOXlLQ2RNWlhocFkyRnNJR1Z5Y205eUlHOXVJR3hwYm1VZ0p5c29kR2hwY3k1NWVXeHBibVZ1YnlzeEtTc25MaUJWYm5KbFkyOW5ibWw2WldRZ2RHVjRkQzVjWEc0bkszUm9hWE11YzJodmQxQnZjMmwwYVc5dUtDa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh0MFpYaDBPaUJjSWx3aUxDQjBiMnRsYmpvZ2JuVnNiQ3dnYkdsdVpUb2dkR2hwY3k1NWVXeHBibVZ1YjMwcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNibXhsZURwbWRXNWpkR2x2YmlCc1pYZ2dLQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdjaUE5SUhSb2FYTXVibVY0ZENncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSElnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NqdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxteGxlQ2dwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JtSmxaMmx1T21aMWJtTjBhVzl1SUdKbFoybHVJQ2hqYjI1a2FYUnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1a2FYUnBiMjVUZEdGamF5NXdkWE5vS0dOdmJtUnBkR2x2YmlrN1hHNGdJQ0FnZlN4Y2JuQnZjRk4wWVhSbE9tWjFibU4wYVc5dUlIQnZjRk4wWVhSbElDZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVaR2wwYVc5dVUzUmhZMnN1Y0c5d0tDazdYRzRnSUNBZ2ZTeGNibDlqZFhKeVpXNTBVblZzWlhNNlpuVnVZM1JwYjI0Z1gyTjFjbkpsYm5SU2RXeGxjeUFvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbU52Ym1ScGRHbHZibk5iZEdocGN5NWpiMjVrYVhScGIyNVRkR0ZqYTF0MGFHbHpMbU52Ym1ScGRHbHZibE4wWVdOckxteGxibWQwYUMweFhWMHVjblZzWlhNN1hHNGdJQ0FnZlN4Y2JuUnZjRk4wWVhSbE9tWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVaR2wwYVc5dVUzUmhZMnRiZEdocGN5NWpiMjVrYVhScGIyNVRkR0ZqYXk1c1pXNW5kR2d0TWwwN1hHNGdJQ0FnZlN4Y2JuQjFjMmhUZEdGMFpUcG1kVzVqZEdsdmJpQmlaV2RwYmlBb1kyOXVaR2wwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVltVm5hVzRvWTI5dVpHbDBhVzl1S1R0Y2JpQWdJQ0I5ZlNrN1hHNXNaWGhsY2k1dmNIUnBiMjV6SUQwZ2UzMDdYRzVzWlhobGNpNXdaWEptYjNKdFFXTjBhVzl1SUQwZ1puVnVZM1JwYjI0Z1lXNXZibmx0YjNWektIbDVMSGw1WHl3a1lYWnZhV1JwYm1kZmJtRnRaVjlqYjJ4c2FYTnBiMjV6TEZsWlgxTlVRVkpVWEc0cElIdGNibHh1WEc1bWRXNWpkR2x2YmlCemRISnBjQ2h6ZEdGeWRDd2daVzVrS1NCN1hHNGdJSEpsZEhWeWJpQjVlVjh1ZVhsMFpYaDBJRDBnZVhsZkxubDVkR1Y0ZEM1emRXSnpkSEpwYm1jb2MzUmhjblFzSUhsNVh5NTVlV3hsYm1jZ0xTQmxibVFnS3lCemRHRnlkQ2s3WEc1OVhHNWNibHh1ZG1GeUlGbFpVMVJCVkVVOVdWbGZVMVJCVWxSY2JuTjNhWFJqYUNna1lYWnZhV1JwYm1kZmJtRnRaVjlqYjJ4c2FYTnBiMjV6S1NCN1hHNWpZWE5sSURBNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1LSGw1WHk1NWVYUmxlSFF1YzJ4cFkyVW9MVElwSUQwOVBTQmNJbHhjWEZ4Y1hGeGNYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSEpwY0Nnd0xERXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVZbVZuYVc0b1hDSnRkVndpS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUtIbDVYeTU1ZVhSbGVIUXVjMnhwWTJVb0xURXBJRDA5UFNCY0lseGNYRnhjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wY21sd0tEQXNNU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVpWldkcGJpaGNJbVZ0ZFZ3aUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtSmxaMmx1S0Z3aWJYVmNJaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9lWGxmTG5sNWRHVjRkQ2tnY21WMGRYSnVJREUxTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWEc1aWNtVmhhenRjYm1OaGMyVWdNVHB5WlhSMWNtNGdNVFU3WEc1aWNtVmhhenRjYm1OaGMyVWdNanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXdiM0JUZEdGMFpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdNVFU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQXpPblJvYVhNdVltVm5hVzRvSjNKaGR5Y3BPeUJ5WlhSMWNtNGdNVFU3WEc1aWNtVmhhenRjYm1OaGMyVWdORHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuQnZjRk4wWVhSbEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVTJodmRXeGtJR0psSUhWemFXNW5JR0IwYUdsekxuUnZjRk4wWVhSbEtDbGdJR0psYkc5M0xDQmlkWFFnYVhRZ1kzVnljbVZ1ZEd4NVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdjbVYwZFhKdWN5QjBhR1VnYzJWamIyNWtJSFJ2Y0NCcGJuTjBaV0ZrSUc5bUlIUm9aU0JtYVhKemRDQjBiM0F1SUU5d1pXNWxaQ0JoYmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklHbHpjM1ZsSUdGaWIzVjBJR2wwSUdGMElHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOTZZV0ZqYUM5cWFYTnZiaTlwYzNOMVpYTXZNamt4WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11WTI5dVpHbDBhVzl1VTNSaFkydGJkR2hwY3k1amIyNWthWFJwYjI1VGRHRmpheTVzWlc1bmRHZ3RNVjBnUFQwOUlDZHlZWGNuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z01UVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wY21sd0tEVXNJRGtwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNkRlRrUmZVa0ZYWDBKTVQwTkxKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQTFPaUJ5WlhSMWNtNGdNVFU3SUZ4dVluSmxZV3M3WEc1allYTmxJRFk2WEc0Z0lIUm9hWE11Y0c5d1UzUmhkR1VvS1R0Y2JpQWdjbVYwZFhKdUlERTBPMXh1WEc1aWNtVmhhenRjYm1OaGMyVWdOenB5WlhSMWNtNGdOalU3WEc1aWNtVmhhenRjYm1OaGMyVWdPRHB5WlhSMWNtNGdOamc3WEc1aWNtVmhhenRjYm1OaGMyVWdPVG9nY21WMGRYSnVJREU1T3lCY2JtSnlaV0ZyTzF4dVkyRnpaU0F4TURwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlYUmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWlaV2RwYmlnbmNtRjNKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJREl6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWEc1aWNtVmhhenRjYm1OaGMyVWdNVEU2Y21WMGRYSnVJRFUxTzF4dVluSmxZV3M3WEc1allYTmxJREV5T25KbGRIVnliaUEyTUR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F4TXpweVpYUjFjbTRnTWprN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRRNmNtVjBkWEp1SURRM08xeHVZbkpsWVdzN1hHNWpZWE5sSURFMU9uUm9hWE11Y0c5d1UzUmhkR1VvS1RzZ2NtVjBkWEp1SURRME8xeHVZbkpsWVdzN1hHNWpZWE5sSURFMk9uUm9hWE11Y0c5d1UzUmhkR1VvS1RzZ2NtVjBkWEp1SURRME8xeHVZbkpsWVdzN1hHNWpZWE5sSURFM09uSmxkSFZ5YmlBek5EdGNibUp5WldGck8xeHVZMkZ6WlNBeE9EcHlaWFIxY200Z016azdYRzVpY21WaGF6dGNibU5oYzJVZ01UazZjbVYwZFhKdUlEVXhPMXh1WW5KbFlXczdYRzVqWVhObElESXdPbkpsZEhWeWJpQTBPRHRjYm1KeVpXRnJPMXh1WTJGelpTQXlNVHBjYmlBZ2RHaHBjeTUxYm5CMWRDaDVlVjh1ZVhsMFpYaDBLVHRjYmlBZ2RHaHBjeTV3YjNCVGRHRjBaU2dwTzF4dUlDQjBhR2x6TG1KbFoybHVLQ2RqYjIwbktUdGNibHh1WW5KbFlXczdYRzVqWVhObElESXlPbHh1SUNCMGFHbHpMbkJ2Y0ZOMFlYUmxLQ2s3WEc0Z0lISmxkSFZ5YmlBeE5EdGNibHh1WW5KbFlXczdYRzVqWVhObElESXpPbkpsZEhWeWJpQTBPRHRjYm1KeVpXRnJPMXh1WTJGelpTQXlORHB5WlhSMWNtNGdOek03WEc1aWNtVmhhenRjYm1OaGMyVWdNalU2Y21WMGRYSnVJRGN5TzF4dVluSmxZV3M3WEc1allYTmxJREkyT25KbGRIVnliaUEzTWp0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F5TnpweVpYUjFjbTRnT0RjN1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpnNkx5OGdhV2R1YjNKbElIZG9hWFJsYzNCaFkyVmNibUp5WldGck8xeHVZMkZ6WlNBeU9UcDBhR2x6TG5CdmNGTjBZWFJsS0NrN0lISmxkSFZ5YmlBMU5EdGNibUp5WldGck8xeHVZMkZ6WlNBek1EcDBhR2x6TG5CdmNGTjBZWFJsS0NrN0lISmxkSFZ5YmlBek16dGNibUp5WldGck8xeHVZMkZ6WlNBek1UcDVlVjh1ZVhsMFpYaDBJRDBnYzNSeWFYQW9NU3d5S1M1eVpYQnNZV05sS0M5Y1hGeGNYQ0l2Wnl3blhDSW5LVHNnY21WMGRYSnVJRGd3TzF4dVluSmxZV3M3WEc1allYTmxJRE15T25sNVh5NTVlWFJsZUhRZ1BTQnpkSEpwY0NneExESXBMbkpsY0d4aFkyVW9MMXhjWEZ3bkwyY3NYQ0luWENJcE95QnlaWFIxY200Z09EQTdYRzVpY21WaGF6dGNibU5oYzJVZ016TTZjbVYwZFhKdUlEZzFPMXh1WW5KbFlXczdYRzVqWVhObElETTBPbkpsZEhWeWJpQTRNanRjYm1KeVpXRnJPMXh1WTJGelpTQXpOVHB5WlhSMWNtNGdPREk3WEc1aWNtVmhhenRjYm1OaGMyVWdNelk2Y21WMGRYSnVJRGd6TzF4dVluSmxZV3M3WEc1allYTmxJRE0zT25KbGRIVnliaUE0TkR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6T0RweVpYUjFjbTRnT0RFN1hHNWljbVZoYXp0Y2JtTmhjMlVnTXprNmNtVjBkWEp1SURjMU8xeHVZbkpsWVdzN1hHNWpZWE5sSURRd09uSmxkSFZ5YmlBM056dGNibUp5WldGck8xeHVZMkZ6WlNBME1UcHlaWFIxY200Z056STdYRzVpY21WaGF6dGNibU5oYzJVZ05ESTZlWGxmTG5sNWRHVjRkQ0E5SUhsNVh5NTVlWFJsZUhRdWNtVndiR0ZqWlNndlhGeGNYQ2hiWEZ4Y1hGeGNYVjBwTDJjc0p5UXhKeWs3SUhKbGRIVnliaUEzTWp0Y2JtSnlaV0ZyTzF4dVkyRnpaU0EwTXpweVpYUjFjbTRnSjBsT1ZrRk1TVVFuTzF4dVluSmxZV3M3WEc1allYTmxJRFEwT25KbGRIVnliaUExTzF4dVluSmxZV3M3WEc1OVhHNTlPMXh1YkdWNFpYSXVjblZzWlhNZ1BTQmJMMTRvUHpwYlhseGNlREF3WFNvL0tEODlLRnhjZTF4Y2V5a3BLUzhzTDE0b1B6cGJYbHhjZURBd1hTc3BMeXd2WGlnL09sdGVYRng0TURCZGV6SXNmVDhvUHowb1hGeDdYRng3ZkZ4Y1hGeGNYSHRjWEh0OFhGeGNYRnhjWEZ4Y1hIdGNYSHQ4SkNrcEtTOHNMMTRvUHpwY1hIdGNYSHRjWEh0Y1hIc29QejFiWGx4Y0wxMHBLUzhzTDE0b1B6cGNYSHRjWEh0Y1hIdGNYSHRjWEM5YlhseGNjeUZjSWlNbExTeGNYQzVjWEM4N0xUNUFYRnhiTFZ4Y1htQmNYSHN0ZmwwcktEODlXejE5WEZ4elhGd3ZMbDBwWEZ4OVhGeDlYRng5WEZ4OUtTOHNMMTRvUHpwYlhseGNlREF3WFNzL0tEODlLRnhjZTF4Y2UxeGNlMXhjZXlrcEtTOHNMMTRvUHpwYlhGeHpYRnhUWFNvL0xTMG9maWsvWEZ4OVhGeDlLUzhzTDE0b1B6cGNYQ2dwTHl3dlhpZy9PbHhjS1NrdkxDOWVLRDg2WEZ4N1hGeDdYRng3WEZ4N0tTOHNMMTRvUHpwY1hIMWNYSDFjWEgxY1hIMHBMeXd2WGlnL09seGNlMXhjZXloK0tUOCtLUzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9JejRwTHl3dlhpZy9PbHhjZTF4Y2V5aCtLVDhqWEZ3cVB5a3ZMQzllS0Q4NlhGeDdYRng3S0g0cFAxeGNMeWt2TEM5ZUtEODZYRng3WEZ4N0tINHBQMXhjWGx4Y2N5b29maWsvWEZ4OVhGeDlLUzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9YRnh6S21Wc2MyVmNYSE1xS0g0cFAxeGNmVnhjZlNrdkxDOWVLRDg2WEZ4N1hGeDdLSDRwUDF4Y1hpa3ZMQzllS0Q4NlhGeDdYRng3S0g0cFAxeGNjeXBsYkhObFhGeGlLUzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9YRng3S1M4c0wxNG9QenBjWEh0Y1hIc29maWsvSmlrdkxDOWVLRDg2WEZ4N1hGeDdLSDRwUHlFdExTa3ZMQzllS0Q4NlhGeDdYRng3S0g0cFB5RmJYRnh6WEZ4VFhTby9YRng5WEZ4OUtTOHNMMTRvUHpwY1hIdGNYSHNvZmlrL1hGd3FQeWt2TEM5ZUtEODZQU2t2TEM5ZUtEODZYRnd1WEZ3dUtTOHNMMTRvUHpwY1hDNG9QejBvV3oxK2ZWeGNjMXhjTHk0cGZGMHBLU2t2TEM5ZUtEODZXMXhjTHk1ZEtTOHNMMTRvUHpwY1hITXJLUzhzTDE0b1B6cGNYSDBvZmlrL1hGeDlYRng5S1M4c0wxNG9Qem9vZmlrL1hGeDlYRng5S1M4c0wxNG9QenBjSWloY1hGeGNXMXdpWFh4Ylhsd2lYU2txWENJcEx5d3ZYaWcvT2ljb1hGeGNYRnNuWFh4YlhpZGRLU29uS1M4c0wxNG9QenBBS1M4c0wxNG9QenAwY25WbEtEODlLRnQrZlZ4Y2N5bGRLU2twTHl3dlhpZy9PbVpoYkhObEtEODlLRnQrZlZ4Y2N5bGRLU2twTHl3dlhpZy9PblZ1WkdWbWFXNWxaQ2cvUFNoYmZuMWNYSE1wWFNrcEtTOHNMMTRvUHpwdWRXeHNLRDg5S0Z0K2ZWeGNjeWxkS1NrcEx5d3ZYaWcvT2kwL1d6QXRPVjByS0Q4NlhGd3VXekF0T1YwcktUOG9QejBvVzM1OVhGeHpLVjBwS1NrdkxDOWVLRDg2WVhOY1hITXJYRng4S1M4c0wxNG9QenBjWEh3cEx5d3ZYaWcvT2loYlhseGNjeUZjSWlNbExTeGNYQzVjWEM4N0xUNUFYRnhiTFZ4Y1htQmNYSHN0ZmwwcktEODlLRnM5Zm4xY1hITmNYQzh1S1h4ZEtTa3BLUzhzTDE0b1B6cGNYRnNvWEZ4Y1hGeGNYWHhiWGx4Y1hWMHBLbHhjWFNrdkxDOWVLRDg2TGlrdkxDOWVLRDg2SkNrdlhUdGNibXhsZUdWeUxtTnZibVJwZEdsdmJuTWdQU0I3WENKdGRWd2lPbnRjSW5KMWJHVnpYQ0k2V3pjc09DdzVMREV3TERFeExERXlMREV6TERFMExERTFMREUyTERFM0xERTRMREU1TERJd0xESXhMREl5TERJekxESTBMREkxTERJMkxESTNMREk0TERJNUxETXdMRE14TERNeUxETXpMRE0wTERNMUxETTJMRE0zTERNNExETTVMRFF3TERReExEUXlMRFF6TERRMFhTeGNJbWx1WTJ4MWMybDJaVndpT21aaGJITmxmU3hjSW1WdGRWd2lPbnRjSW5KMWJHVnpYQ0k2V3pKZExGd2lhVzVqYkhWemFYWmxYQ0k2Wm1Gc2MyVjlMRndpWTI5dFhDSTZlMXdpY25Wc1pYTmNJanBiTmwwc1hDSnBibU5zZFhOcGRtVmNJanBtWVd4elpYMHNYQ0p5WVhkY0lqcDdYQ0p5ZFd4bGMxd2lPbHN6TERRc05WMHNYQ0pwYm1Oc2RYTnBkbVZjSWpwbVlXeHpaWDBzWENKSlRrbFVTVUZNWENJNmUxd2ljblZzWlhOY0lqcGJNQ3d4TERRMFhTeGNJbWx1WTJ4MWMybDJaVndpT25SeWRXVjlmVHRjYm5KbGRIVnliaUJzWlhobGNqdDlLU2dwWEc1d1lYSnpaWEl1YkdWNFpYSWdQU0JzWlhobGNqdGNibVoxYm1OMGFXOXVJRkJoY25ObGNpQW9LU0I3SUhSb2FYTXVlWGtnUFNCN2ZUc2dmVkJoY25ObGNpNXdjbTkwYjNSNWNHVWdQU0J3WVhKelpYSTdjR0Z5YzJWeUxsQmhjbk5sY2lBOUlGQmhjbk5sY2p0Y2JuSmxkSFZ5YmlCdVpYY2dVR0Z5YzJWeU8xeHVmU2tvS1R0bGVIQnZjblFnWkdWbVlYVnNkQ0JvWVc1a2JHVmlZWEp6TzF4dUlsMTlcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9leGNlcHRpb24gPSByZXF1aXJlKCcuLi9leGNlcHRpb24nKTtcblxudmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTtcblxuZnVuY3Rpb24gVmlzaXRvcigpIHtcbiAgdGhpcy5wYXJlbnRzID0gW107XG59XG5cblZpc2l0b3IucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVmlzaXRvcixcbiAgbXV0YXRpbmc6IGZhbHNlLFxuXG4gIC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVlLiBJZiBtdXRhdGluZywgd2lsbCByZXBsYWNlIHRoZSB2YWx1ZSBpZiBuZWNlc3NhcnkuXG4gIGFjY2VwdEtleTogZnVuY3Rpb24gYWNjZXB0S2V5KG5vZGUsIG5hbWUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmFjY2VwdChub2RlW25hbWVdKTtcbiAgICBpZiAodGhpcy5tdXRhdGluZykge1xuICAgICAgLy8gSGFja3kgc2FuaXR5IGNoZWNrOiBUaGlzIG1heSBoYXZlIGEgZmV3IGZhbHNlIHBvc2l0aXZlcyBmb3IgdHlwZSBmb3IgdGhlIGhlbHBlclxuICAgICAgLy8gbWV0aG9kcyBidXQgd2lsbCBnZW5lcmFsbHkgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGhvdXQgYSBsb3Qgb2Ygb3ZlcmhlYWQuXG4gICAgICBpZiAodmFsdWUgJiYgIVZpc2l0b3IucHJvdG90eXBlW3ZhbHVlLnR5cGVdKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmV4cGVjdGVkIG5vZGUgdHlwZSBcIicgKyB2YWx1ZS50eXBlICsgJ1wiIGZvdW5kIHdoZW4gYWNjZXB0aW5nICcgKyBuYW1lICsgJyBvbiAnICsgbm9kZS50eXBlKTtcbiAgICAgIH1cbiAgICAgIG5vZGVbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gUGVyZm9ybXMgYW4gYWNjZXB0IG9wZXJhdGlvbiB3aXRoIGFkZGVkIHNhbml0eSBjaGVjayB0byBlbnN1cmVcbiAgLy8gcmVxdWlyZWQga2V5cyBhcmUgbm90IHJlbW92ZWQuXG4gIGFjY2VwdFJlcXVpcmVkOiBmdW5jdGlvbiBhY2NlcHRSZXF1aXJlZChub2RlLCBuYW1lKSB7XG4gICAgdGhpcy5hY2NlcHRLZXkobm9kZSwgbmFtZSk7XG5cbiAgICBpZiAoIW5vZGVbbmFtZV0pIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKG5vZGUudHlwZSArICcgcmVxdWlyZXMgJyArIG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICAvLyBUcmF2ZXJzZXMgYSBnaXZlbiBhcnJheS4gSWYgbXV0YXRpbmcsIGVtcHR5IHJlc3Buc2VzIHdpbGwgYmUgcmVtb3ZlZFxuICAvLyBmb3IgY2hpbGQgZWxlbWVudHMuXG4gIGFjY2VwdEFycmF5OiBmdW5jdGlvbiBhY2NlcHRBcnJheShhcnJheSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdEtleShhcnJheSwgaSk7XG5cbiAgICAgIGlmICghYXJyYXlbaV0pIHtcbiAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpO1xuICAgICAgICBpLS07XG4gICAgICAgIGwtLTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgYWNjZXB0OiBmdW5jdGlvbiBhY2NlcHQob2JqZWN0KSB7XG4gICAgaWYgKCFvYmplY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi9cbiAgICBpZiAoIXRoaXNbb2JqZWN0LnR5cGVdKSB7XG4gICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5rbm93biB0eXBlOiAnICsgb2JqZWN0LnR5cGUsIG9iamVjdCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudCkge1xuICAgICAgdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50ID0gb2JqZWN0O1xuXG4gICAgdmFyIHJldCA9IHRoaXNbb2JqZWN0LnR5cGVdKG9iamVjdCk7XG5cbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMuc2hpZnQoKTtcblxuICAgIGlmICghdGhpcy5tdXRhdGluZyB8fCByZXQpIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBlbHNlIGlmIChyZXQgIT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgfSxcblxuICBQcm9ncmFtOiBmdW5jdGlvbiBQcm9ncmFtKHByb2dyYW0pIHtcbiAgICB0aGlzLmFjY2VwdEFycmF5KHByb2dyYW0uYm9keSk7XG4gIH0sXG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQ6IHZpc2l0U3ViRXhwcmVzc2lvbixcbiAgRGVjb3JhdG9yOiB2aXNpdFN1YkV4cHJlc3Npb24sXG5cbiAgQmxvY2tTdGF0ZW1lbnQ6IHZpc2l0QmxvY2ssXG4gIERlY29yYXRvckJsb2NrOiB2aXNpdEJsb2NrLFxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQ6IHZpc2l0UGFydGlhbCxcbiAgUGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFydGlhbCkge1xuICAgIHZpc2l0UGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwpO1xuXG4gICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ3Byb2dyYW0nKTtcbiAgfSxcblxuICBDb250ZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb250ZW50U3RhdGVtZW50KCkgLyogY29udGVudCAqL3t9LFxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb21tZW50U3RhdGVtZW50KCkgLyogY29tbWVudCAqL3t9LFxuXG4gIFN1YkV4cHJlc3Npb246IHZpc2l0U3ViRXhwcmVzc2lvbixcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24gUGF0aEV4cHJlc3Npb24oKSAvKiBwYXRoICove30sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24gU3RyaW5nTGl0ZXJhbCgpIC8qIHN0cmluZyAqL3t9LFxuICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbiBOdW1iZXJMaXRlcmFsKCkgLyogbnVtYmVyICove30sXG4gIEJvb2xlYW5MaXRlcmFsOiBmdW5jdGlvbiBCb29sZWFuTGl0ZXJhbCgpIC8qIGJvb2wgKi97fSxcbiAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24gVW5kZWZpbmVkTGl0ZXJhbCgpIC8qIGxpdGVyYWwgKi97fSxcbiAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uIE51bGxMaXRlcmFsKCkgLyogbGl0ZXJhbCAqL3t9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uIEhhc2goaGFzaCkge1xuICAgIHRoaXMuYWNjZXB0QXJyYXkoaGFzaC5wYWlycyk7XG4gIH0sXG4gIEhhc2hQYWlyOiBmdW5jdGlvbiBIYXNoUGFpcihwYWlyKSB7XG4gICAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYWlyLCAndmFsdWUnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gdmlzaXRTdWJFeHByZXNzaW9uKG11c3RhY2hlKSB7XG4gIHRoaXMuYWNjZXB0UmVxdWlyZWQobXVzdGFjaGUsICdwYXRoJyk7XG4gIHRoaXMuYWNjZXB0QXJyYXkobXVzdGFjaGUucGFyYW1zKTtcbiAgdGhpcy5hY2NlcHRLZXkobXVzdGFjaGUsICdoYXNoJyk7XG59XG5mdW5jdGlvbiB2aXNpdEJsb2NrKGJsb2NrKSB7XG4gIHZpc2l0U3ViRXhwcmVzc2lvbi5jYWxsKHRoaXMsIGJsb2NrKTtcblxuICB0aGlzLmFjY2VwdEtleShibG9jaywgJ3Byb2dyYW0nKTtcbiAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdpbnZlcnNlJyk7XG59XG5mdW5jdGlvbiB2aXNpdFBhcnRpYWwocGFydGlhbCkge1xuICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhcnRpYWwsICduYW1lJyk7XG4gIHRoaXMuYWNjZXB0QXJyYXkocGFydGlhbC5wYXJhbXMpO1xuICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAnaGFzaCcpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBWaXNpdG9yO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM1pwYzJsMGIzSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096dDVRa0ZCYzBJc1kwRkJZenM3T3p0QlFVVndReXhUUVVGVExFOUJRVThzUjBGQlJ6dEJRVU5xUWl4TlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dERRVU51UWpzN1FVRkZSQ3hQUVVGUExFTkJRVU1zVTBGQlV5eEhRVUZITzBGQlEyeENMR0ZCUVZjc1JVRkJSU3hQUVVGUE8wRkJRM0JDTEZWQlFWRXNSVUZCUlN4TFFVRkxPenM3UVVGSFppeFhRVUZUTEVWQlFVVXNiVUpCUVZNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJUdEJRVU01UWl4UlFVRkpMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0JETEZGQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHM3TzBGQlIycENMRlZCUVVrc1MwRkJTeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3UVVGRE0wTXNZMEZCVFN3eVFrRkRTaXgzUWtGQmQwSXNSMEZEZEVJc1MwRkJTeXhEUVVGRExFbEJRVWtzUjBGRFZpeDVRa0ZCZVVJc1IwRkRla0lzU1VGQlNTeEhRVU5LTEUxQlFVMHNSMEZEVGl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVOYUxFTkJRVU03VDBGRFNEdEJRVU5FTEZWQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRGNFSTdSMEZEUmpzN096dEJRVWxFTEdkQ1FVRmpMRVZCUVVVc2QwSkJRVk1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFVTnVReXhSUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRk0wSXNVVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU5tTEZsQlFVMHNNa0pCUVdNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRkRVE3UjBGRFJqczdPenRCUVVsRUxHRkJRVmNzUlVGQlJTeHhRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRNMElzVTBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU0xUXl4VlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXpzN1FVRkZla0lzVlVGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVHRCUVVOaUxHRkJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMjVDTEZOQlFVTXNSVUZCUlN4RFFVRkRPMEZCUTBvc1UwRkJReXhGUVVGRkxFTkJRVU03VDBGRFREdExRVU5HTzBkQlEwWTdPMEZCUlVRc1VVRkJUU3hGUVVGRkxHZENRVUZUTEUxQlFVMHNSVUZCUlR0QlFVTjJRaXhSUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlExZ3NZVUZCVHp0TFFVTlNPenM3UVVGSFJDeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU4wUWl4WlFVRk5MREpDUVVGakxHZENRVUZuUWl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdTMEZETjBRN08wRkJSVVFzVVVGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUTJoQ0xGVkJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dExRVU53UXp0QlFVTkVMRkZCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZET3p0QlFVVjBRaXhSUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVndReXhSUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03TzBGQlJYQkRMRkZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEpRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTjZRaXhoUVVGUExFZEJRVWNzUTBGQlF6dExRVU5hTEUxQlFVMHNTVUZCU1N4SFFVRkhMRXRCUVVzc1MwRkJTeXhGUVVGRk8wRkJRM2hDTEdGQlFVOHNUVUZCVFN4RFFVRkRPMHRCUTJZN1IwRkRSanM3UVVGRlJDeFRRVUZQTEVWQlFVVXNhVUpCUVZNc1QwRkJUeXhGUVVGRk8wRkJRM3BDTEZGQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBkQlEyaERPenRCUVVWRUxHMUNRVUZwUWl4RlFVRkZMR3RDUVVGclFqdEJRVU55UXl4WFFVRlRMRVZCUVVVc2EwSkJRV3RDT3p0QlFVVTNRaXhuUWtGQll5eEZRVUZGTEZWQlFWVTdRVUZETVVJc1owSkJRV01zUlVGQlJTeFZRVUZWT3p0QlFVVXhRaXhyUWtGQlowSXNSVUZCUlN4WlFVRlpPMEZCUXpsQ0xIVkNRVUZ4UWl4RlFVRkZMQ3RDUVVGVExFOUJRVThzUlVGQlJUdEJRVU4yUXl4blFrRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN08wRkJSV3BETEZGQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBkQlEzQkRPenRCUVVWRUxHdENRVUZuUWl4RlFVRkZMSGxEUVVGM1FpeEZRVUZGTzBGQlF6VkRMR3RDUVVGblFpeEZRVUZGTEhsRFFVRjNRaXhGUVVGRk96dEJRVVUxUXl4bFFVRmhMRVZCUVVVc2EwSkJRV3RDT3p0QlFVVnFReXhuUWtGQll5eEZRVUZGTEc5RFFVRnhRaXhGUVVGRk96dEJRVVYyUXl4bFFVRmhMRVZCUVVVc2NVTkJRWFZDTEVWQlFVVTdRVUZEZUVNc1pVRkJZU3hGUVVGRkxIRkRRVUYxUWl4RlFVRkZPMEZCUTNoRExHZENRVUZqTEVWQlFVVXNiME5CUVhGQ0xFVkJRVVU3UVVGRGRrTXNhMEpCUVdkQ0xFVkJRVVVzZVVOQlFYZENMRVZCUVVVN1FVRkROVU1zWVVGQlZ5eEZRVUZGTEc5RFFVRjNRaXhGUVVGRk96dEJRVVYyUXl4TlFVRkpMRVZCUVVVc1kwRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGJrSXNVVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdSMEZET1VJN1FVRkRSQ3hWUVVGUkxFVkJRVVVzYTBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTNaQ0xGRkJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wZEJRM0JETzBOQlEwWXNRMEZCUXpzN1FVRkZSaXhUUVVGVExHdENRVUZyUWl4RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVOd1F5eE5RVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU4wUXl4TlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTnNReXhOUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenREUVVOc1F6dEJRVU5FTEZOQlFWTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVONlFpeHZRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWeVF5eE5RVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dEJRVU5xUXl4TlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0RFFVTnNRenRCUVVORUxGTkJRVk1zV1VGQldTeERRVUZETEU5QlFVOHNSVUZCUlR0QlFVTTNRaXhOUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVOeVF5eE5RVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU5xUXl4TlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0RFFVTnFRenM3Y1VKQlJXTXNUMEZCVHlJc0ltWnBiR1VpT2lKMmFYTnBkRzl5TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElFVjRZMlZ3ZEdsdmJpQm1jbTl0SUNjdUxpOWxlR05sY0hScGIyNG5PMXh1WEc1bWRXNWpkR2x2YmlCV2FYTnBkRzl5S0NrZ2UxeHVJQ0IwYUdsekxuQmhjbVZ1ZEhNZ1BTQmJYVHRjYm4xY2JseHVWbWx6YVhSdmNpNXdjbTkwYjNSNWNHVWdQU0I3WEc0Z0lHTnZibk4wY25WamRHOXlPaUJXYVhOcGRHOXlMRnh1SUNCdGRYUmhkR2x1WnpvZ1ptRnNjMlVzWEc1Y2JpQWdMeThnVm1semFYUnpJR0VnWjJsMlpXNGdkbUZzZFdVdUlFbG1JRzExZEdGMGFXNW5MQ0IzYVd4c0lISmxjR3hoWTJVZ2RHaGxJSFpoYkhWbElHbG1JRzVsWTJWemMyRnllUzVjYmlBZ1lXTmpaWEIwUzJWNU9pQm1kVzVqZEdsdmJpaHViMlJsTENCdVlXMWxLU0I3WEc0Z0lDQWdiR1YwSUhaaGJIVmxJRDBnZEdocGN5NWhZMk5sY0hRb2JtOWtaVnR1WVcxbFhTazdYRzRnSUNBZ2FXWWdLSFJvYVhNdWJYVjBZWFJwYm1jcElIdGNiaUFnSUNBZ0lDOHZJRWhoWTJ0NUlITmhibWwwZVNCamFHVmphem9nVkdocGN5QnRZWGtnYUdGMlpTQmhJR1psZHlCbVlXeHpaU0J3YjNOcGRHbDJaWE1nWm05eUlIUjVjR1VnWm05eUlIUm9aU0JvWld4d1pYSmNiaUFnSUNBZ0lDOHZJRzFsZEdodlpITWdZblYwSUhkcGJHd2daMlZ1WlhKaGJHeDVJR1J2SUhSb1pTQnlhV2RvZENCMGFHbHVaeUIzYVhSb2IzVjBJR0VnYkc5MElHOW1JRzkyWlhKb1pXRmtMbHh1SUNBZ0lDQWdhV1lnS0haaGJIVmxJQ1ltSUNGV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlZ0MllXeDFaUzUwZVhCbFhTa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0Z4dUlDQWdJQ0FnSUNBZ0lDZFZibVY0Y0dWamRHVmtJRzV2WkdVZ2RIbHdaU0JjSWljZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVXVkSGx3WlNBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FuWENJZ1ptOTFibVFnZDJobGJpQmhZMk5sY0hScGJtY2dKeUFyWEc0Z0lDQWdJQ0FnSUNBZ0lDQnVZVzFsSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2NnYjI0Z0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNCdWIyUmxMblI1Y0dWY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHNXZaR1ZiYm1GdFpWMGdQU0IyWVd4MVpUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeThnVUdWeVptOXliWE1nWVc0Z1lXTmpaWEIwSUc5d1pYSmhkR2x2YmlCM2FYUm9JR0ZrWkdWa0lITmhibWwwZVNCamFHVmpheUIwYnlCbGJuTjFjbVZjYmlBZ0x5OGdjbVZ4ZFdseVpXUWdhMlY1Y3lCaGNtVWdibTkwSUhKbGJXOTJaV1F1WEc0Z0lHRmpZMlZ3ZEZKbGNYVnBjbVZrT2lCbWRXNWpkR2x2YmlodWIyUmxMQ0J1WVcxbEtTQjdYRzRnSUNBZ2RHaHBjeTVoWTJObGNIUkxaWGtvYm05a1pTd2dibUZ0WlNrN1hHNWNiaUFnSUNCcFppQW9JVzV2WkdWYmJtRnRaVjBwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b2JtOWtaUzUwZVhCbElDc2dKeUJ5WlhGMWFYSmxjeUFuSUNzZ2JtRnRaU2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4dklGUnlZWFpsY25ObGN5QmhJR2RwZG1WdUlHRnljbUY1TGlCSlppQnRkWFJoZEdsdVp5d2daVzF3ZEhrZ2NtVnpjRzV6WlhNZ2QybHNiQ0JpWlNCeVpXMXZkbVZrWEc0Z0lDOHZJR1p2Y2lCamFHbHNaQ0JsYkdWdFpXNTBjeTVjYmlBZ1lXTmpaWEIwUVhKeVlYazZJR1oxYm1OMGFXOXVLR0Z5Y21GNUtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQmhjbkpoZVM1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNBZ0lIUm9hWE11WVdOalpYQjBTMlY1S0dGeWNtRjVMQ0JwS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLQ0ZoY25KaGVWdHBYU2tnZTF4dUlDQWdJQ0FnSUNCaGNuSmhlUzV6Y0d4cFkyVW9hU3dnTVNrN1hHNGdJQ0FnSUNBZ0lHa3RMVHRjYmlBZ0lDQWdJQ0FnYkMwdE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQmhZMk5sY0hRNklHWjFibU4wYVc5dUtHOWlhbVZqZENrZ2UxeHVJQ0FnSUdsbUlDZ2hiMkpxWldOMEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvZ2FYTjBZVzVpZFd3Z2FXZHViM0psSUc1bGVIUTZJRk5oYm1sMGVTQmpiMlJsSUNvdlhHNGdJQ0FnYVdZZ0tDRjBhR2x6VzI5aWFtVmpkQzUwZVhCbFhTa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduVlc1cmJtOTNiaUIwZVhCbE9pQW5JQ3NnYjJKcVpXTjBMblI1Y0dVc0lHOWlhbVZqZENrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WTNWeWNtVnVkQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXdZWEpsYm5SekxuVnVjMmhwWm5Rb2RHaHBjeTVqZFhKeVpXNTBLVHRjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTVqZFhKeVpXNTBJRDBnYjJKcVpXTjBPMXh1WEc0Z0lDQWdiR1YwSUhKbGRDQTlJSFJvYVhOYmIySnFaV04wTG5SNWNHVmRLRzlpYW1WamRDazdYRzVjYmlBZ0lDQjBhR2x6TG1OMWNuSmxiblFnUFNCMGFHbHpMbkJoY21WdWRITXVjMmhwWm5Rb0tUdGNibHh1SUNBZ0lHbG1JQ2doZEdocGN5NXRkWFJoZEdsdVp5QjhmQ0J5WlhRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHlaWFFnSVQwOUlHWmhiSE5sS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYjJKcVpXTjBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0JRY205bmNtRnRPaUJtZFc1amRHbHZiaWh3Y205bmNtRnRLU0I3WEc0Z0lDQWdkR2hwY3k1aFkyTmxjSFJCY25KaGVTaHdjbTluY21GdExtSnZaSGtwTzF4dUlDQjlMRnh1WEc0Z0lFMTFjM1JoWTJobFUzUmhkR1Z0Wlc1ME9pQjJhWE5wZEZOMVlrVjRjSEpsYzNOcGIyNHNYRzRnSUVSbFkyOXlZWFJ2Y2pvZ2RtbHphWFJUZFdKRmVIQnlaWE56YVc5dUxGeHVYRzRnSUVKc2IyTnJVM1JoZEdWdFpXNTBPaUIyYVhOcGRFSnNiMk5yTEZ4dUlDQkVaV052Y21GMGIzSkNiRzlqYXpvZ2RtbHphWFJDYkc5amF5eGNibHh1SUNCUVlYSjBhV0ZzVTNSaGRHVnRaVzUwT2lCMmFYTnBkRkJoY25ScFlXd3NYRzRnSUZCaGNuUnBZV3hDYkc5amExTjBZWFJsYldWdWREb2dablZ1WTNScGIyNG9jR0Z5ZEdsaGJDa2dlMXh1SUNBZ0lIWnBjMmwwVUdGeWRHbGhiQzVqWVd4c0tIUm9hWE1zSUhCaGNuUnBZV3dwTzF4dVhHNGdJQ0FnZEdocGN5NWhZMk5sY0hSTFpYa29jR0Z5ZEdsaGJDd2dKM0J5YjJkeVlXMG5LVHRjYmlBZ2ZTeGNibHh1SUNCRGIyNTBaVzUwVTNSaGRHVnRaVzUwT2lCbWRXNWpkR2x2YmlndktpQmpiMjUwWlc1MElDb3ZLU0I3ZlN4Y2JpQWdRMjl0YldWdWRGTjBZWFJsYldWdWREb2dablZ1WTNScGIyNG9MeW9nWTI5dGJXVnVkQ0FxTHlrZ2UzMHNYRzVjYmlBZ1UzVmlSWGh3Y21WemMybHZiam9nZG1semFYUlRkV0pGZUhCeVpYTnphVzl1TEZ4dVhHNGdJRkJoZEdoRmVIQnlaWE56YVc5dU9pQm1kVzVqZEdsdmJpZ3ZLaUJ3WVhSb0lDb3ZLU0I3ZlN4Y2JseHVJQ0JUZEhKcGJtZE1hWFJsY21Gc09pQm1kVzVqZEdsdmJpZ3ZLaUJ6ZEhKcGJtY2dLaThwSUh0OUxGeHVJQ0JPZFcxaVpYSk1hWFJsY21Gc09pQm1kVzVqZEdsdmJpZ3ZLaUJ1ZFcxaVpYSWdLaThwSUh0OUxGeHVJQ0JDYjI5c1pXRnVUR2wwWlhKaGJEb2dablZ1WTNScGIyNG9MeW9nWW05dmJDQXFMeWtnZTMwc1hHNGdJRlZ1WkdWbWFXNWxaRXhwZEdWeVlXdzZJR1oxYm1OMGFXOXVLQzhxSUd4cGRHVnlZV3dnS2k4cElIdDlMRnh1SUNCT2RXeHNUR2wwWlhKaGJEb2dablZ1WTNScGIyNG9MeW9nYkdsMFpYSmhiQ0FxTHlrZ2UzMHNYRzVjYmlBZ1NHRnphRG9nWm5WdVkzUnBiMjRvYUdGemFDa2dlMXh1SUNBZ0lIUm9hWE11WVdOalpYQjBRWEp5WVhrb2FHRnphQzV3WVdseWN5azdYRzRnSUgwc1hHNGdJRWhoYzJoUVlXbHlPaUJtZFc1amRHbHZiaWh3WVdseUtTQjdYRzRnSUNBZ2RHaHBjeTVoWTJObGNIUlNaWEYxYVhKbFpDaHdZV2x5TENBbmRtRnNkV1VuS1R0Y2JpQWdmVnh1ZlR0Y2JseHVablZ1WTNScGIyNGdkbWx6YVhSVGRXSkZlSEJ5WlhOemFXOXVLRzExYzNSaFkyaGxLU0I3WEc0Z0lIUm9hWE11WVdOalpYQjBVbVZ4ZFdseVpXUW9iWFZ6ZEdGamFHVXNJQ2R3WVhSb0p5azdYRzRnSUhSb2FYTXVZV05qWlhCMFFYSnlZWGtvYlhWemRHRmphR1V1Y0dGeVlXMXpLVHRjYmlBZ2RHaHBjeTVoWTJObGNIUkxaWGtvYlhWemRHRmphR1VzSUNkb1lYTm9KeWs3WEc1OVhHNW1kVzVqZEdsdmJpQjJhWE5wZEVKc2IyTnJLR0pzYjJOcktTQjdYRzRnSUhacGMybDBVM1ZpUlhod2NtVnpjMmx2Ymk1allXeHNLSFJvYVhNc0lHSnNiMk5yS1R0Y2JseHVJQ0IwYUdsekxtRmpZMlZ3ZEV0bGVTaGliRzlqYXl3Z0ozQnliMmR5WVcwbktUdGNiaUFnZEdocGN5NWhZMk5sY0hSTFpYa29ZbXh2WTJzc0lDZHBiblpsY25ObEp5azdYRzU5WEc1bWRXNWpkR2x2YmlCMmFYTnBkRkJoY25ScFlXd29jR0Z5ZEdsaGJDa2dlMXh1SUNCMGFHbHpMbUZqWTJWd2RGSmxjWFZwY21Wa0tIQmhjblJwWVd3c0lDZHVZVzFsSnlrN1hHNGdJSFJvYVhNdVlXTmpaWEIwUVhKeVlYa29jR0Z5ZEdsaGJDNXdZWEpoYlhNcE8xeHVJQ0IwYUdsekxtRmpZMlZ3ZEV0bGVTaHdZWEowYVdGc0xDQW5hR0Z6YUNjcE8xeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JXYVhOcGRHOXlPMXh1SWwxOVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX3Zpc2l0b3IgPSByZXF1aXJlKCcuL3Zpc2l0b3InKTtcblxudmFyIF92aXNpdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Zpc2l0b3IpO1xuXG5mdW5jdGlvbiBXaGl0ZXNwYWNlQ29udHJvbCgpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xufVxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlID0gbmV3IF92aXNpdG9yMlsnZGVmYXVsdCddKCk7XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHtcbiAgdmFyIGRvU3RhbmRhbG9uZSA9ICF0aGlzLm9wdGlvbnMuaWdub3JlU3RhbmRhbG9uZTtcblxuICB2YXIgaXNSb290ID0gIXRoaXMuaXNSb290U2VlbjtcbiAgdGhpcy5pc1Jvb3RTZWVuID0gdHJ1ZTtcblxuICB2YXIgYm9keSA9IHByb2dyYW0uYm9keTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjdXJyZW50ID0gYm9keVtpXSxcbiAgICAgICAgc3RyaXAgPSB0aGlzLmFjY2VwdChjdXJyZW50KTtcblxuICAgIGlmICghc3RyaXApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBfaXNQcmV2V2hpdGVzcGFjZSA9IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSxcbiAgICAgICAgX2lzTmV4dFdoaXRlc3BhY2UgPSBpc05leHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCksXG4gICAgICAgIG9wZW5TdGFuZGFsb25lID0gc3RyaXAub3BlblN0YW5kYWxvbmUgJiYgX2lzUHJldldoaXRlc3BhY2UsXG4gICAgICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0cmlwLmNsb3NlU3RhbmRhbG9uZSAmJiBfaXNOZXh0V2hpdGVzcGFjZSxcbiAgICAgICAgaW5saW5lU3RhbmRhbG9uZSA9IHN0cmlwLmlubGluZVN0YW5kYWxvbmUgJiYgX2lzUHJldldoaXRlc3BhY2UgJiYgX2lzTmV4dFdoaXRlc3BhY2U7XG5cbiAgICBpZiAoc3RyaXAuY2xvc2UpIHtcbiAgICAgIG9taXRSaWdodChib2R5LCBpLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKHN0cmlwLm9wZW4pIHtcbiAgICAgIG9taXRMZWZ0KGJvZHksIGksIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgaW5saW5lU3RhbmRhbG9uZSkge1xuICAgICAgb21pdFJpZ2h0KGJvZHksIGkpO1xuXG4gICAgICBpZiAob21pdExlZnQoYm9keSwgaSkpIHtcbiAgICAgICAgLy8gSWYgd2UgYXJlIG9uIGEgc3RhbmRhbG9uZSBub2RlLCBzYXZlIHRoZSBpbmRlbnQgaW5mbyBmb3IgcGFydGlhbHNcbiAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgLy8gUHVsbCBvdXQgdGhlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZmluYWwgbGluZVxuICAgICAgICAgIGN1cnJlbnQuaW5kZW50ID0gLyhbIFxcdF0rJCkvLmV4ZWMoYm9keVtpIC0gMV0ub3JpZ2luYWwpWzFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgb3BlblN0YW5kYWxvbmUpIHtcbiAgICAgIG9taXRSaWdodCgoY3VycmVudC5wcm9ncmFtIHx8IGN1cnJlbnQuaW52ZXJzZSkuYm9keSk7XG5cbiAgICAgIC8vIFN0cmlwIG91dCB0aGUgcHJldmlvdXMgY29udGVudCBub2RlIGlmIGl0J3Mgd2hpdGVzcGFjZSBvbmx5XG4gICAgICBvbWl0TGVmdChib2R5LCBpKTtcbiAgICB9XG4gICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBjbG9zZVN0YW5kYWxvbmUpIHtcbiAgICAgIC8vIEFsd2F5cyBzdHJpcCB0aGUgbmV4dCBub2RlXG4gICAgICBvbWl0UmlnaHQoYm9keSwgaSk7XG5cbiAgICAgIG9taXRMZWZ0KChjdXJyZW50LmludmVyc2UgfHwgY3VycmVudC5wcm9ncmFtKS5ib2R5KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvZ3JhbTtcbn07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdGhpcy5hY2NlcHQoYmxvY2sucHJvZ3JhbSk7XG4gIHRoaXMuYWNjZXB0KGJsb2NrLmludmVyc2UpO1xuXG4gIC8vIEZpbmQgdGhlIGludmVyc2UgcHJvZ3JhbSB0aGF0IGlzIGludm9sZWQgd2l0aCB3aGl0ZXNwYWNlIHN0cmlwcGluZy5cbiAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFtIHx8IGJsb2NrLmludmVyc2UsXG4gICAgICBpbnZlcnNlID0gYmxvY2sucHJvZ3JhbSAmJiBibG9jay5pbnZlcnNlLFxuICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZSxcbiAgICAgIGxhc3RJbnZlcnNlID0gaW52ZXJzZTtcblxuICBpZiAoaW52ZXJzZSAmJiBpbnZlcnNlLmNoYWluZWQpIHtcbiAgICBmaXJzdEludmVyc2UgPSBpbnZlcnNlLmJvZHlbMF0ucHJvZ3JhbTtcblxuICAgIC8vIFdhbGsgdGhlIGludmVyc2UgY2hhaW4gdG8gZmluZCB0aGUgbGFzdCBpbnZlcnNlIHRoYXQgaXMgYWN0dWFsbHkgaW4gdGhlIGNoYWluLlxuICAgIHdoaWxlIChsYXN0SW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgICBsYXN0SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJvZHlbbGFzdEludmVyc2UuYm9keS5sZW5ndGggLSAxXS5wcm9ncmFtO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdHJpcCA9IHtcbiAgICBvcGVuOiBibG9jay5vcGVuU3RyaXAub3BlbixcbiAgICBjbG9zZTogYmxvY2suY2xvc2VTdHJpcC5jbG9zZSxcblxuICAgIC8vIERldGVybWluZSB0aGUgc3RhbmRhbG9uZSBjYW5kaWFjeS4gQmFzaWNhbGx5IGZsYWcgb3VyIGNvbnRlbnQgYXMgYmVpbmcgcG9zc2libHkgc3RhbmRhbG9uZVxuICAgIC8vIHNvIG91ciBwYXJlbnQgY2FuIGRldGVybWluZSBpZiB3ZSBhY3R1YWxseSBhcmUgc3RhbmRhbG9uZVxuICAgIG9wZW5TdGFuZGFsb25lOiBpc05leHRXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSksXG4gICAgY2xvc2VTdGFuZGFsb25lOiBpc1ByZXZXaGl0ZXNwYWNlKChmaXJzdEludmVyc2UgfHwgcHJvZ3JhbSkuYm9keSlcbiAgfTtcblxuICBpZiAoYmxvY2sub3BlblN0cmlwLmNsb3NlKSB7XG4gICAgb21pdFJpZ2h0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7XG4gIH1cblxuICBpZiAoaW52ZXJzZSkge1xuICAgIHZhciBpbnZlcnNlU3RyaXAgPSBibG9jay5pbnZlcnNlU3RyaXA7XG5cbiAgICBpZiAoaW52ZXJzZVN0cmlwLm9wZW4pIHtcbiAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGludmVyc2VTdHJpcC5jbG9zZSkge1xuICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKGJsb2NrLmNsb3NlU3RyaXAub3Blbikge1xuICAgICAgb21pdExlZnQobGFzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gRmluZCBzdGFuZGFsb25lIGVsc2Ugc3RhdG1lbnRzXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaWdub3JlU3RhbmRhbG9uZSAmJiBpc1ByZXZXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSkgJiYgaXNOZXh0V2hpdGVzcGFjZShmaXJzdEludmVyc2UuYm9keSkpIHtcbiAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSk7XG4gICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHtcbiAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIHN0cmlwO1xufTtcblxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkRlY29yYXRvciA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uIChtdXN0YWNoZSkge1xuICByZXR1cm4gbXVzdGFjaGUuc3RyaXA7XG59O1xuXG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgdmFyIHN0cmlwID0gbm9kZS5zdHJpcCB8fCB7fTtcbiAgcmV0dXJuIHtcbiAgICBpbmxpbmVTdGFuZGFsb25lOiB0cnVlLFxuICAgIG9wZW46IHN0cmlwLm9wZW4sXG4gICAgY2xvc2U6IHN0cmlwLmNsb3NlXG4gIH07XG59O1xuXG5mdW5jdGlvbiBpc1ByZXZXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkge1xuICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaSA9IGJvZHkubGVuZ3RoO1xuICB9XG5cbiAgLy8gTm9kZXMgdGhhdCBlbmQgd2l0aCBuZXdsaW5lcyBhcmUgY29uc2lkZXJlZCB3aGl0ZXNwYWNlIChidXQgYXJlIHNwZWNpYWxcbiAgLy8gY2FzZWQgZm9yIHN0cmlwIG9wZXJhdGlvbnMpXG4gIHZhciBwcmV2ID0gYm9keVtpIC0gMV0sXG4gICAgICBzaWJsaW5nID0gYm9keVtpIC0gMl07XG4gIGlmICghcHJldikge1xuICAgIHJldHVybiBpc1Jvb3Q7XG4gIH1cblxuICBpZiAocHJldi50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHtcbiAgICByZXR1cm4gKHNpYmxpbmcgfHwgIWlzUm9vdCA/IC9cXHI/XFxuXFxzKj8kLyA6IC8oXnxcXHI/XFxuKVxccyo/JC8pLnRlc3QocHJldi5vcmlnaW5hbCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzTmV4dFdoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSB7XG4gIGlmIChpID09PSB1bmRlZmluZWQpIHtcbiAgICBpID0gLTE7XG4gIH1cblxuICB2YXIgbmV4dCA9IGJvZHlbaSArIDFdLFxuICAgICAgc2libGluZyA9IGJvZHlbaSArIDJdO1xuICBpZiAoIW5leHQpIHtcbiAgICByZXR1cm4gaXNSb290O1xuICB9XG5cbiAgaWYgKG5leHQudHlwZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQnKSB7XG4gICAgcmV0dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAvXlxccyo/XFxyP1xcbi8gOiAvXlxccyo/KFxccj9cXG58JCkvKS50ZXN0KG5leHQub3JpZ2luYWwpO1xuICB9XG59XG5cbi8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSByaWdodCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC5cbi8vIEkuZS4ge3tmb299fScgJyB3aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuXG4vL1xuLy8gSWYgaSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guXG4vL1xuLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2Vcbi8vIGNvbnRlbnQgaXMgbWV0LlxuZnVuY3Rpb24gb21pdFJpZ2h0KGJvZHksIGksIG11bHRpcGxlKSB7XG4gIHZhciBjdXJyZW50ID0gYm9keVtpID09IG51bGwgPyAwIDogaSArIDFdO1xuICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHwgIW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7XG4gIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXlxccysvIDogL15bIFxcdF0qXFxyP1xcbj8vLCAnJyk7XG4gIGN1cnJlbnQucmlnaHRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsO1xufVxuXG4vLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC5cbi8vIEkuZS4gJyAne3tmb299fSB3aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuXG4vL1xuLy8gSWYgaSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLlxuLy9cbi8vIElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlXG4vLyBjb250ZW50IGlzIG1ldC5cbmZ1bmN0aW9uIG9taXRMZWZ0KGJvZHksIGksIG11bHRpcGxlKSB7XG4gIHZhciBjdXJyZW50ID0gYm9keVtpID09IG51bGwgPyBib2R5Lmxlbmd0aCAtIDEgOiBpIC0gMV07XG4gIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3VycmVudC5sZWZ0U3RyaXBwZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWRlZCBieSBhIG5vbi1jb250ZW50IG5vZGUuXG4gIHZhciBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7XG4gIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXFxzKyQvIDogL1sgXFx0XSskLywgJycpO1xuICBjdXJyZW50LmxlZnRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsO1xuICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFdoaXRlc3BhY2VDb250cm9sO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM2RvYVhSbGMzQmhZMlV0WTI5dWRISnZiQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPM1ZDUVVGdlFpeFhRVUZYT3pzN08wRkJSUzlDTEZOQlFWTXNhVUpCUVdsQ0xFZEJRV1U3VFVGQlpDeFBRVUZQTEhsRVFVRkhMRVZCUVVVN08wRkJRM0pETEUxQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wTkJRM2hDTzBGQlEwUXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eEhRVUZITERCQ1FVRmhMRU5CUVVNN08wRkJSVFZETEdsQ1FVRnBRaXhEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVkQlFVY3NWVUZCVXl4UFFVRlBMRVZCUVVVN1FVRkRkRVFzVFVGQlRTeFpRVUZaTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExHZENRVUZuUWl4RFFVRkRPenRCUVVWd1JDeE5RVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03UVVGRE9VSXNUVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03TzBGQlJYWkNMRTFCUVVrc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZEZUVJc1QwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNelF5eFJRVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMjVDTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVXZRaXhSUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlExWXNaVUZCVXp0TFFVTldPenRCUVVWRUxGRkJRVWtzYVVKQlFXbENMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFTkJRVU03VVVGRGRrUXNhVUpCUVdsQ0xFZEJRVWNzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTTdVVUZEY2tRc1kwRkJZeXhIUVVGSExFdEJRVXNzUTBGQlF5eGpRVUZqTEVsQlFVa3NhVUpCUVdsQ08xRkJRekZFTEdWQlFXVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1pVRkJaU3hKUVVGSkxHbENRVUZwUWp0UlFVTTFSQ3huUWtGQlowSXNSMEZEWkN4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVsQlFVa3NhVUpCUVdsQ0xFbEJRVWtzYVVKQlFXbENMRU5CUVVNN08wRkJSWEpGTEZGQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVObUxHVkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRekZDTzBGQlEwUXNVVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRMlFzWTBGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRGVrSTdPMEZCUlVRc1VVRkJTU3haUVVGWkxFbEJRVWtzWjBKQlFXZENMRVZCUVVVN1FVRkRjRU1zWlVGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenM3UVVGRmJrSXNWVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGT3p0QlFVVnlRaXhaUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEV0QlFVc3NhMEpCUVd0Q0xFVkJRVVU3TzBGQlJYWkRMR2xDUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0xUkR0UFFVTkdPMHRCUTBZN1FVRkRSQ3hSUVVGSkxGbEJRVmtzU1VGQlNTeGpRVUZqTEVWQlFVVTdRVUZEYkVNc1pVRkJVeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGQkxFTkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdPenRCUVVkeVJDeGpRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMjVDTzBGQlEwUXNVVUZCU1N4WlFVRlpMRWxCUVVrc1pVRkJaU3hGUVVGRk96dEJRVVZ1UXl4bFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZET3p0QlFVVnVRaXhqUVVGUkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVUVzUTBGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTnlSRHRIUVVOR096dEJRVVZFTEZOQlFVOHNUMEZCVHl4RFFVRkRPME5CUTJoQ0xFTkJRVU03TzBGQlJVWXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEdOQlFXTXNSMEZCUnl4cFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNZMEZCWXl4SFFVRkhMR2xDUVVGcFFpeERRVUZETEZOQlFWTXNRMEZCUXl4eFFrRkJjVUlzUjBGQlJ5eFZRVU0xU1N4TFFVRkxMRVZCUTB3N1FVRkRRU3hOUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVNelFpeE5RVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6czdPMEZCUnpOQ0xFMUJRVWtzVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVTg3VFVGRE1VTXNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVODdUVUZEZUVNc1dVRkJXU3hIUVVGSExFOUJRVTg3VFVGRGRFSXNWMEZCVnl4SFFVRkhMRTlCUVU4c1EwRkJRenM3UVVGRmVFSXNUVUZCU1N4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJUdEJRVU01UWl4blFrRkJXU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRE96czdRVUZIZGtNc1YwRkJUeXhYUVVGWExFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlF6RkNMR2xDUVVGWExFZEJRVWNzVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRja1U3UjBGRFJqczdRVUZGUkN4TlFVRkpMRXRCUVVzc1IwRkJSenRCUVVOV0xGRkJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrN1FVRkRNVUlzVTBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTenM3T3p0QlFVazNRaXhyUWtGQll5eEZRVUZGTEdkQ1FVRm5RaXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZET1VNc2JVSkJRV1VzUlVGQlJTeG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExGbEJRVmtzU1VGQlNTeFBRVUZQTEVOQlFVRXNRMEZCUlN4SlFVRkpMRU5CUVVNN1IwRkRiRVVzUTBGQlF6czdRVUZGUml4TlFVRkpMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEzcENMR0ZCUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRIUVVOeVF6czdRVUZGUkN4TlFVRkpMRTlCUVU4c1JVRkJSVHRCUVVOWUxGRkJRVWtzV1VGQldTeEhRVUZITEV0QlFVc3NRMEZCUXl4WlFVRlpMRU5CUVVNN08wRkJSWFJETEZGQlFVa3NXVUZCV1N4RFFVRkRMRWxCUVVrc1JVRkJSVHRCUVVOeVFpeGpRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEY0VNN08wRkJSVVFzVVVGQlNTeFpRVUZaTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTNSQ0xHVkJRVk1zUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU14UXp0QlFVTkVMRkZCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEZWtJc1kwRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM2hET3pzN1FVRkhSQ3hSUVVORkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4blFrRkJaMElzU1VGRE9VSXNaMEpCUVdkQ0xFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVTTVRaXhuUWtGQlowSXNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRMjVETzBGQlEwRXNZMEZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU4yUWl4bFFVRlRMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6bENPMGRCUTBZc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZCUTJoRExGbEJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEhRVU53UXpzN1FVRkZSQ3hUUVVGUExFdEJRVXNzUTBGQlF6dERRVU5rTEVOQlFVTTdPMEZCUlVZc2FVSkJRV2xDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NWVUZEZEVZc1VVRkJVU3hGUVVOU08wRkJRMEVzVTBGQlR5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRPME5CUTNaQ0xFTkJRVU03TzBGQlJVWXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEdkQ1FVRm5RaXhIUVVGSExHbENRVUZwUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4VlFVTTFSaXhKUVVGSkxFVkJRMG83TzBGQlJVRXNUVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZETjBJc1UwRkJUenRCUVVOTUxHOUNRVUZuUWl4RlFVRkZMRWxCUVVrN1FVRkRkRUlzVVVGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4SlFVRkpPMEZCUTJoQ0xGTkJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNTMEZCU3p0SFFVTnVRaXhEUVVGRE8wTkJRMGdzUTBGQlF6czdRVUZGUml4VFFVRlRMR2RDUVVGblFpeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRM3BETEUxQlFVa3NRMEZCUXl4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVOdVFpeExRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRIUVVOcVFqczdPenRCUVVsRUxFMUJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wMUJRM0JDTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzaENMRTFCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVU3UVVGRFZDeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenRCUVVWRUxFMUJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4clFrRkJhMElzUlVGQlJUdEJRVU53UXl4WFFVRlBMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEZsQlFWa3NSMEZCUnl4blFrRkJaMElzUTBGQlFTeERRVUZGTEVsQlFVa3NRMEZEYUVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGRFpDeERRVUZETzBkQlEwZzdRMEZEUmp0QlFVTkVMRk5CUVZNc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGVrTXNUVUZCU1N4RFFVRkRMRXRCUVVzc1UwRkJVeXhGUVVGRk8wRkJRMjVDTEV0QlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRIUVVOU096dEJRVVZFTEUxQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzAxQlEzQkNMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNoQ0xFMUJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEVkN4WFFVRlBMRTFCUVUwc1EwRkJRenRIUVVObU96dEJRVVZFTEUxQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhyUWtGQmEwSXNSVUZCUlR0QlFVTndReXhYUVVGUExFTkJRVU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRmxCUVZrc1IwRkJSeXhuUWtGQlowSXNRMEZCUVN4RFFVRkZMRWxCUVVrc1EwRkRhRVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZEWkN4RFFVRkRPMGRCUTBnN1EwRkRSanM3T3pzN096czdPMEZCVTBRc1UwRkJVeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4UlFVRlJMRVZCUVVVN1FVRkRjRU1zVFVGQlNTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNeFF5eE5RVU5GTEVOQlFVTXNUMEZCVHl4SlFVTlNMRTlCUVU4c1EwRkJReXhKUVVGSkxFdEJRVXNzYTBKQlFXdENMRWxCUTJ4RExFTkJRVU1zVVVGQlVTeEpRVUZKTEU5QlFVOHNRMEZCUXl4aFFVRmhMRUZCUVVNc1JVRkRjRU03UVVGRFFTeFhRVUZQTzBkQlExSTdPMEZCUlVRc1RVRkJTU3hSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXp0QlFVTTNRaXhUUVVGUExFTkJRVU1zUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVOdVF5eFJRVUZSTEVkQlFVY3NUVUZCVFN4SFFVRkhMR1ZCUVdVc1JVRkRia01zUlVGQlJTeERRVU5JTEVOQlFVTTdRVUZEUml4VFFVRlBMRU5CUVVNc1lVRkJZU3hIUVVGSExFOUJRVThzUTBGQlF5eExRVUZMTEV0QlFVc3NVVUZCVVN4RFFVRkRPME5CUTNCRU96czdPenM3T3pzN1FVRlRSQ3hUUVVGVExGRkJRVkVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVOdVF5eE5RVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVRc1RVRkRSU3hEUVVGRExFOUJRVThzU1VGRFVpeFBRVUZQTEVOQlFVTXNTVUZCU1N4TFFVRkxMR3RDUVVGclFpeEpRVU5zUXl4RFFVRkRMRkZCUVZFc1NVRkJTU3hQUVVGUExFTkJRVU1zV1VGQldTeEJRVUZETEVWQlEyNURPMEZCUTBFc1YwRkJUenRIUVVOU096czdRVUZIUkN4TlFVRkpMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETzBGQlF6ZENMRk5CUVU4c1EwRkJReXhMUVVGTExFZEJRVWNzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hIUVVGSExFMUJRVTBzUjBGQlJ5eFRRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRla1VzVTBGQlR5eERRVUZETEZsQlFWa3NSMEZCUnl4UFFVRlBMRU5CUVVNc1MwRkJTeXhMUVVGTExGRkJRVkVzUTBGQlF6dEJRVU5zUkN4VFFVRlBMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU03UTBGRE4wSTdPM0ZDUVVWakxHbENRVUZwUWlJc0ltWnBiR1VpT2lKM2FHbDBaWE53WVdObExXTnZiblJ5YjJ3dWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdWbWx6YVhSdmNpQm1jbTl0SUNjdUwzWnBjMmwwYjNJbk8xeHVYRzVtZFc1amRHbHZiaUJYYUdsMFpYTndZV05sUTI5dWRISnZiQ2h2Y0hScGIyNXpJRDBnZTMwcElIdGNiaUFnZEdocGN5NXZjSFJwYjI1eklEMGdiM0IwYVc5dWN6dGNibjFjYmxkb2FYUmxjM0JoWTJWRGIyNTBjbTlzTG5CeWIzUnZkSGx3WlNBOUlHNWxkeUJXYVhOcGRHOXlLQ2s3WEc1Y2JsZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNVFjbTluY21GdElEMGdablZ1WTNScGIyNG9jSEp2WjNKaGJTa2dlMXh1SUNCamIyNXpkQ0JrYjFOMFlXNWtZV3h2Ym1VZ1BTQWhkR2hwY3k1dmNIUnBiMjV6TG1sbmJtOXlaVk4wWVc1a1lXeHZibVU3WEc1Y2JpQWdiR1YwSUdselVtOXZkQ0E5SUNGMGFHbHpMbWx6VW05dmRGTmxaVzQ3WEc0Z0lIUm9hWE11YVhOU2IyOTBVMlZsYmlBOUlIUnlkV1U3WEc1Y2JpQWdiR1YwSUdKdlpIa2dQU0J3Y205bmNtRnRMbUp2WkhrN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNJRDBnWW05a2VTNXNaVzVuZEdnN0lHa2dQQ0JzT3lCcEt5c3BJSHRjYmlBZ0lDQnNaWFFnWTNWeWNtVnVkQ0E5SUdKdlpIbGJhVjBzWEc0Z0lDQWdJQ0J6ZEhKcGNDQTlJSFJvYVhNdVlXTmpaWEIwS0dOMWNuSmxiblFwTzF4dVhHNGdJQ0FnYVdZZ0tDRnpkSEpwY0NrZ2UxeHVJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElGOXBjMUJ5WlhaWGFHbDBaWE53WVdObElEMGdhWE5RY21WMlYyaHBkR1Z6Y0dGalpTaGliMlI1TENCcExDQnBjMUp2YjNRcExGeHVJQ0FnSUNBZ1gybHpUbVY0ZEZkb2FYUmxjM0JoWTJVZ1BTQnBjMDVsZUhSWGFHbDBaWE53WVdObEtHSnZaSGtzSUdrc0lHbHpVbTl2ZENrc1hHNGdJQ0FnSUNCdmNHVnVVM1JoYm1SaGJHOXVaU0E5SUhOMGNtbHdMbTl3Wlc1VGRHRnVaR0ZzYjI1bElDWW1JRjlwYzFCeVpYWlhhR2wwWlhOd1lXTmxMRnh1SUNBZ0lDQWdZMnh2YzJWVGRHRnVaR0ZzYjI1bElEMGdjM1J5YVhBdVkyeHZjMlZUZEdGdVpHRnNiMjVsSUNZbUlGOXBjMDVsZUhSWGFHbDBaWE53WVdObExGeHVJQ0FnSUNBZ2FXNXNhVzVsVTNSaGJtUmhiRzl1WlNBOVhHNGdJQ0FnSUNBZ0lITjBjbWx3TG1sdWJHbHVaVk4wWVc1a1lXeHZibVVnSmlZZ1gybHpVSEpsZGxkb2FYUmxjM0JoWTJVZ0ppWWdYMmx6VG1WNGRGZG9hWFJsYzNCaFkyVTdYRzVjYmlBZ0lDQnBaaUFvYzNSeWFYQXVZMnh2YzJVcElIdGNiaUFnSUNBZ0lHOXRhWFJTYVdkb2RDaGliMlI1TENCcExDQjBjblZsS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hOMGNtbHdMbTl3Wlc0cElIdGNiaUFnSUNBZ0lHOXRhWFJNWldaMEtHSnZaSGtzSUdrc0lIUnlkV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoa2IxTjBZVzVrWVd4dmJtVWdKaVlnYVc1c2FXNWxVM1JoYm1SaGJHOXVaU2tnZTF4dUlDQWdJQ0FnYjIxcGRGSnBaMmgwS0dKdlpIa3NJR2twTzF4dVhHNGdJQ0FnSUNCcFppQW9iMjFwZEV4bFpuUW9ZbTlrZVN3Z2FTa3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1NXWWdkMlVnWVhKbElHOXVJR0VnYzNSaGJtUmhiRzl1WlNCdWIyUmxMQ0J6WVhabElIUm9aU0JwYm1SbGJuUWdhVzVtYnlCbWIzSWdjR0Z5ZEdsaGJITmNiaUFnSUNBZ0lDQWdhV1lnS0dOMWNuSmxiblF1ZEhsd1pTQTlQVDBnSjFCaGNuUnBZV3hUZEdGMFpXMWxiblFuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVUhWc2JDQnZkWFFnZEdobElIZG9hWFJsYzNCaFkyVWdabkp2YlNCMGFHVWdabWx1WVd3Z2JHbHVaVnh1SUNBZ0lDQWdJQ0FnSUdOMWNuSmxiblF1YVc1a1pXNTBJRDBnTHloYklGeGNkRjBySkNrdkxtVjRaV01vWW05a2VWdHBJQzBnTVYwdWIzSnBaMmx1WVd3cFd6RmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hrYjFOMFlXNWtZV3h2Ym1VZ0ppWWdiM0JsYmxOMFlXNWtZV3h2Ym1VcElIdGNiaUFnSUNBZ0lHOXRhWFJTYVdkb2RDZ29ZM1Z5Y21WdWRDNXdjbTluY21GdElIeDhJR04xY25KbGJuUXVhVzUyWlhKelpTa3VZbTlrZVNrN1hHNWNiaUFnSUNBZ0lDOHZJRk4wY21sd0lHOTFkQ0IwYUdVZ2NISmxkbWx2ZFhNZ1kyOXVkR1Z1ZENCdWIyUmxJR2xtSUdsMEozTWdkMmhwZEdWemNHRmpaU0J2Ym14NVhHNGdJQ0FnSUNCdmJXbDBUR1ZtZENoaWIyUjVMQ0JwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dSdlUzUmhibVJoYkc5dVpTQW1KaUJqYkc5elpWTjBZVzVrWVd4dmJtVXBJSHRjYmlBZ0lDQWdJQzh2SUVGc2QyRjVjeUJ6ZEhKcGNDQjBhR1VnYm1WNGRDQnViMlJsWEc0Z0lDQWdJQ0J2YldsMFVtbG5hSFFvWW05a2VTd2dhU2s3WEc1Y2JpQWdJQ0FnSUc5dGFYUk1aV1owS0NoamRYSnlaVzUwTG1sdWRtVnljMlVnZkh3Z1kzVnljbVZ1ZEM1d2NtOW5jbUZ0S1M1aWIyUjVLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdjSEp2WjNKaGJUdGNibjA3WEc1Y2JsZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNUNiRzlqYTFOMFlYUmxiV1Z1ZENBOUlGZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNUVaV052Y21GMGIzSkNiRzlqYXlBOUlGZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNVFZWEowYVdGc1FteHZZMnRUZEdGMFpXMWxiblFnUFNCbWRXNWpkR2x2YmloY2JpQWdZbXh2WTJ0Y2Jpa2dlMXh1SUNCMGFHbHpMbUZqWTJWd2RDaGliRzlqYXk1d2NtOW5jbUZ0S1R0Y2JpQWdkR2hwY3k1aFkyTmxjSFFvWW14dlkyc3VhVzUyWlhKelpTazdYRzVjYmlBZ0x5OGdSbWx1WkNCMGFHVWdhVzUyWlhKelpTQndjbTluY21GdElIUm9ZWFFnYVhNZ2FXNTJiMnhsWkNCM2FYUm9JSGRvYVhSbGMzQmhZMlVnYzNSeWFYQndhVzVuTGx4dUlDQnNaWFFnY0hKdlozSmhiU0E5SUdKc2IyTnJMbkJ5YjJkeVlXMGdmSHdnWW14dlkyc3VhVzUyWlhKelpTeGNiaUFnSUNCcGJuWmxjbk5sSUQwZ1lteHZZMnN1Y0hKdlozSmhiU0FtSmlCaWJHOWpheTVwYm5abGNuTmxMRnh1SUNBZ0lHWnBjbk4wU1c1MlpYSnpaU0E5SUdsdWRtVnljMlVzWEc0Z0lDQWdiR0Z6ZEVsdWRtVnljMlVnUFNCcGJuWmxjbk5sTzF4dVhHNGdJR2xtSUNocGJuWmxjbk5sSUNZbUlHbHVkbVZ5YzJVdVkyaGhhVzVsWkNrZ2UxeHVJQ0FnSUdacGNuTjBTVzUyWlhKelpTQTlJR2x1ZG1WeWMyVXVZbTlrZVZzd1hTNXdjbTluY21GdE8xeHVYRzRnSUNBZ0x5OGdWMkZzYXlCMGFHVWdhVzUyWlhKelpTQmphR0ZwYmlCMGJ5Qm1hVzVrSUhSb1pTQnNZWE4wSUdsdWRtVnljMlVnZEdoaGRDQnBjeUJoWTNSMVlXeHNlU0JwYmlCMGFHVWdZMmhoYVc0dVhHNGdJQ0FnZDJocGJHVWdLR3hoYzNSSmJuWmxjbk5sTG1Ob1lXbHVaV1FwSUh0Y2JpQWdJQ0FnSUd4aGMzUkpiblpsY25ObElEMGdiR0Z6ZEVsdWRtVnljMlV1WW05a2VWdHNZWE4wU1c1MlpYSnpaUzVpYjJSNUxteGxibWQwYUNBdElERmRMbkJ5YjJkeVlXMDdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdiR1YwSUhOMGNtbHdJRDBnZTF4dUlDQWdJRzl3Wlc0NklHSnNiMk5yTG05d1pXNVRkSEpwY0M1dmNHVnVMRnh1SUNBZ0lHTnNiM05sT2lCaWJHOWpheTVqYkc5elpWTjBjbWx3TG1Oc2IzTmxMRnh1WEc0Z0lDQWdMeThnUkdWMFpYSnRhVzVsSUhSb1pTQnpkR0Z1WkdGc2IyNWxJR05oYm1ScFlXTjVMaUJDWVhOcFkyRnNiSGtnWm14aFp5QnZkWElnWTI5dWRHVnVkQ0JoY3lCaVpXbHVaeUJ3YjNOemFXSnNlU0J6ZEdGdVpHRnNiMjVsWEc0Z0lDQWdMeThnYzI4Z2IzVnlJSEJoY21WdWRDQmpZVzRnWkdWMFpYSnRhVzVsSUdsbUlIZGxJR0ZqZEhWaGJHeDVJR0Z5WlNCemRHRnVaR0ZzYjI1bFhHNGdJQ0FnYjNCbGJsTjBZVzVrWVd4dmJtVTZJR2x6VG1WNGRGZG9hWFJsYzNCaFkyVW9jSEp2WjNKaGJTNWliMlI1S1N4Y2JpQWdJQ0JqYkc5elpWTjBZVzVrWVd4dmJtVTZJR2x6VUhKbGRsZG9hWFJsYzNCaFkyVW9LR1pwY25OMFNXNTJaWEp6WlNCOGZDQndjbTluY21GdEtTNWliMlI1S1Z4dUlDQjlPMXh1WEc0Z0lHbG1JQ2hpYkc5amF5NXZjR1Z1VTNSeWFYQXVZMnh2YzJVcElIdGNiaUFnSUNCdmJXbDBVbWxuYUhRb2NISnZaM0poYlM1aWIyUjVMQ0J1ZFd4c0xDQjBjblZsS1R0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hwYm5abGNuTmxLU0I3WEc0Z0lDQWdiR1YwSUdsdWRtVnljMlZUZEhKcGNDQTlJR0pzYjJOckxtbHVkbVZ5YzJWVGRISnBjRHRjYmx4dUlDQWdJR2xtSUNocGJuWmxjbk5sVTNSeWFYQXViM0JsYmlrZ2UxeHVJQ0FnSUNBZ2IyMXBkRXhsWm5Rb2NISnZaM0poYlM1aWIyUjVMQ0J1ZFd4c0xDQjBjblZsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2FXNTJaWEp6WlZOMGNtbHdMbU5zYjNObEtTQjdYRzRnSUNBZ0lDQnZiV2wwVW1sbmFIUW9abWx5YzNSSmJuWmxjbk5sTG1KdlpIa3NJRzUxYkd3c0lIUnlkV1VwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvWW14dlkyc3VZMnh2YzJWVGRISnBjQzV2Y0dWdUtTQjdYRzRnSUNBZ0lDQnZiV2wwVEdWbWRDaHNZWE4wU1c1MlpYSnpaUzVpYjJSNUxDQnVkV3hzTENCMGNuVmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJHYVc1a0lITjBZVzVrWVd4dmJtVWdaV3h6WlNCemRHRjBiV1Z1ZEhOY2JpQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBaGRHaHBjeTV2Y0hScGIyNXpMbWxuYm05eVpWTjBZVzVrWVd4dmJtVWdKaVpjYmlBZ0lDQWdJR2x6VUhKbGRsZG9hWFJsYzNCaFkyVW9jSEp2WjNKaGJTNWliMlI1S1NBbUpseHVJQ0FnSUNBZ2FYTk9aWGgwVjJocGRHVnpjR0ZqWlNobWFYSnpkRWx1ZG1WeWMyVXVZbTlrZVNsY2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUc5dGFYUk1aV1owS0hCeWIyZHlZVzB1WW05a2VTazdYRzRnSUNBZ0lDQnZiV2wwVW1sbmFIUW9abWx5YzNSSmJuWmxjbk5sTG1KdlpIa3BPMXh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJR2xtSUNoaWJHOWpheTVqYkc5elpWTjBjbWx3TG05d1pXNHBJSHRjYmlBZ0lDQnZiV2wwVEdWbWRDaHdjbTluY21GdExtSnZaSGtzSUc1MWJHd3NJSFJ5ZFdVcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlITjBjbWx3TzF4dWZUdGNibHh1VjJocGRHVnpjR0ZqWlVOdmJuUnliMnd1Y0hKdmRHOTBlWEJsTGtSbFkyOXlZWFJ2Y2lBOUlGZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNU5kWE4wWVdOb1pWTjBZWFJsYldWdWRDQTlJR1oxYm1OMGFXOXVLRnh1SUNCdGRYTjBZV05vWlZ4dUtTQjdYRzRnSUhKbGRIVnliaUJ0ZFhOMFlXTm9aUzV6ZEhKcGNEdGNibjA3WEc1Y2JsZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNVFZWEowYVdGc1UzUmhkR1Z0Wlc1MElEMGdWMmhwZEdWemNHRmpaVU52Ym5SeWIyd3VjSEp2ZEc5MGVYQmxMa052YlcxbGJuUlRkR0YwWlcxbGJuUWdQU0JtZFc1amRHbHZiaWhjYmlBZ2JtOWtaVnh1S1NCN1hHNGdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzRnSUd4bGRDQnpkSEpwY0NBOUlHNXZaR1V1YzNSeWFYQWdmSHdnZTMwN1hHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ2FXNXNhVzVsVTNSaGJtUmhiRzl1WlRvZ2RISjFaU3hjYmlBZ0lDQnZjR1Z1T2lCemRISnBjQzV2Y0dWdUxGeHVJQ0FnSUdOc2IzTmxPaUJ6ZEhKcGNDNWpiRzl6WlZ4dUlDQjlPMXh1ZlR0Y2JseHVablZ1WTNScGIyNGdhWE5RY21WMlYyaHBkR1Z6Y0dGalpTaGliMlI1TENCcExDQnBjMUp2YjNRcElIdGNiaUFnYVdZZ0tHa2dQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUdrZ1BTQmliMlI1TG14bGJtZDBhRHRjYmlBZ2ZWeHVYRzRnSUM4dklFNXZaR1Z6SUhSb1lYUWdaVzVrSUhkcGRHZ2dibVYzYkdsdVpYTWdZWEpsSUdOdmJuTnBaR1Z5WldRZ2QyaHBkR1Z6Y0dGalpTQW9ZblYwSUdGeVpTQnpjR1ZqYVdGc1hHNGdJQzh2SUdOaGMyVmtJR1p2Y2lCemRISnBjQ0J2Y0dWeVlYUnBiMjV6S1Z4dUlDQnNaWFFnY0hKbGRpQTlJR0p2WkhsYmFTQXRJREZkTEZ4dUlDQWdJSE5wWW14cGJtY2dQU0JpYjJSNVcya2dMU0F5WFR0Y2JpQWdhV1lnS0NGd2NtVjJLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHbHpVbTl2ZER0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2h3Y21WMkxuUjVjR1VnUFQwOUlDZERiMjUwWlc1MFUzUmhkR1Z0Wlc1MEp5a2dlMXh1SUNBZ0lISmxkSFZ5YmlBb2MybGliR2x1WnlCOGZDQWhhWE5TYjI5MElEOGdMMXhjY2o5Y1hHNWNYSE1xUHlRdklEb2dMeWhlZkZ4Y2NqOWNYRzRwWEZ4ektqOGtMeWt1ZEdWemRDaGNiaUFnSUNBZ0lIQnlaWFl1YjNKcFoybHVZV3hjYmlBZ0lDQXBPMXh1SUNCOVhHNTlYRzVtZFc1amRHbHZiaUJwYzA1bGVIUlhhR2wwWlhOd1lXTmxLR0p2Wkhrc0lHa3NJR2x6VW05dmRDa2dlMXh1SUNCcFppQW9hU0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ2FTQTlJQzB4TzF4dUlDQjlYRzVjYmlBZ2JHVjBJRzVsZUhRZ1BTQmliMlI1VzJrZ0t5QXhYU3hjYmlBZ0lDQnphV0pzYVc1bklEMGdZbTlrZVZ0cElDc2dNbDA3WEc0Z0lHbG1JQ2doYm1WNGRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCcGMxSnZiM1E3WEc0Z0lIMWNibHh1SUNCcFppQW9ibVY0ZEM1MGVYQmxJRDA5UFNBblEyOXVkR1Z1ZEZOMFlYUmxiV1Z1ZENjcElIdGNiaUFnSUNCeVpYUjFjbTRnS0hOcFlteHBibWNnZkh3Z0lXbHpVbTl2ZENBL0lDOWVYRnh6S2o5Y1hISS9YRnh1THlBNklDOWVYRnh6S2o4b1hGeHlQMXhjYm53a0tTOHBMblJsYzNRb1hHNGdJQ0FnSUNCdVpYaDBMbTl5YVdkcGJtRnNYRzRnSUNBZ0tUdGNiaUFnZlZ4dWZWeHVYRzR2THlCTllYSnJjeUIwYUdVZ2JtOWtaU0IwYnlCMGFHVWdjbWxuYUhRZ2IyWWdkR2hsSUhCdmMybDBhVzl1SUdGeklHOXRhWFIwWldRdVhHNHZMeUJKTG1VdUlIdDdabTl2ZlgwbklDY2dkMmxzYkNCdFlYSnJJSFJvWlNBbklDY2dibTlrWlNCaGN5QnZiV2wwZEdWa0xseHVMeTljYmk4dklFbG1JR2tnYVhNZ2RXNWtaV1pwYm1Wa0xDQjBhR1Z1SUhSb1pTQm1hWEp6ZENCamFHbHNaQ0IzYVd4c0lHSmxJRzFoY210bFpDQmhjeUJ6ZFdOb0xseHVMeTljYmk4dklFbG1JRzExYkdsMGNHeGxJR2x6SUhSeWRYUm9lU0IwYUdWdUlHRnNiQ0IzYUdsMFpYTndZV05sSUhkcGJHd2dZbVVnYzNSeWFYQndaV1FnYjNWMElIVnVkR2xzSUc1dmJpMTNhR2wwWlhOd1lXTmxYRzR2THlCamIyNTBaVzUwSUdseklHMWxkQzVjYm1aMWJtTjBhVzl1SUc5dGFYUlNhV2RvZENoaWIyUjVMQ0JwTENCdGRXeDBhWEJzWlNrZ2UxeHVJQ0JzWlhRZ1kzVnljbVZ1ZENBOUlHSnZaSGxiYVNBOVBTQnVkV3hzSUQ4Z01DQTZJR2tnS3lBeFhUdGNiaUFnYVdZZ0tGeHVJQ0FnSUNGamRYSnlaVzUwSUh4OFhHNGdJQ0FnWTNWeWNtVnVkQzUwZVhCbElDRTlQU0FuUTI5dWRHVnVkRk4wWVhSbGJXVnVkQ2NnZkh4Y2JpQWdJQ0FvSVcxMWJIUnBjR3hsSUNZbUlHTjFjbkpsYm5RdWNtbG5hSFJUZEhKcGNIQmxaQ2xjYmlBZ0tTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzVjYmlBZ2JHVjBJRzl5YVdkcGJtRnNJRDBnWTNWeWNtVnVkQzUyWVd4MVpUdGNiaUFnWTNWeWNtVnVkQzUyWVd4MVpTQTlJR04xY25KbGJuUXVkbUZzZFdVdWNtVndiR0ZqWlNoY2JpQWdJQ0J0ZFd4MGFYQnNaU0EvSUM5ZVhGeHpLeThnT2lBdlhsc2dYRngwWFNwY1hISS9YRnh1UHk4c1hHNGdJQ0FnSnlkY2JpQWdLVHRjYmlBZ1kzVnljbVZ1ZEM1eWFXZG9kRk4wY21sd2NHVmtJRDBnWTNWeWNtVnVkQzUyWVd4MVpTQWhQVDBnYjNKcFoybHVZV3c3WEc1OVhHNWNiaTh2SUUxaGNtdHpJSFJvWlNCdWIyUmxJSFJ2SUhSb1pTQnNaV1owSUc5bUlIUm9aU0J3YjNOcGRHbHZiaUJoY3lCdmJXbDBkR1ZrTGx4dUx5OGdTUzVsTGlBbklDZDdlMlp2YjMxOUlIZHBiR3dnYldGeWF5QjBhR1VnSnlBbklHNXZaR1VnWVhNZ2IyMXBkSFJsWkM1Y2JpOHZYRzR2THlCSlppQnBJR2x6SUhWdVpHVm1hVzVsWkNCMGFHVnVJSFJvWlNCc1lYTjBJR05vYVd4a0lIZHBiR3dnWW1VZ2JXRnlhMlZrSUdGeklITjFZMmd1WEc0dkwxeHVMeThnU1dZZ2JYVnNhWFJ3YkdVZ2FYTWdkSEoxZEdoNUlIUm9aVzRnWVd4c0lIZG9hWFJsYzNCaFkyVWdkMmxzYkNCaVpTQnpkSEpwY0hCbFpDQnZkWFFnZFc1MGFXd2dibTl1TFhkb2FYUmxjM0JoWTJWY2JpOHZJR052Ym5SbGJuUWdhWE1nYldWMExseHVablZ1WTNScGIyNGdiMjFwZEV4bFpuUW9ZbTlrZVN3Z2FTd2diWFZzZEdsd2JHVXBJSHRjYmlBZ2JHVjBJR04xY25KbGJuUWdQU0JpYjJSNVcya2dQVDBnYm5Wc2JDQS9JR0p2WkhrdWJHVnVaM1JvSUMwZ01TQTZJR2tnTFNBeFhUdGNiaUFnYVdZZ0tGeHVJQ0FnSUNGamRYSnlaVzUwSUh4OFhHNGdJQ0FnWTNWeWNtVnVkQzUwZVhCbElDRTlQU0FuUTI5dWRHVnVkRk4wWVhSbGJXVnVkQ2NnZkh4Y2JpQWdJQ0FvSVcxMWJIUnBjR3hsSUNZbUlHTjFjbkpsYm5RdWJHVm1kRk4wY21sd2NHVmtLVnh1SUNBcElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNibHh1SUNBdkx5QlhaU0J2YldsMElIUm9aU0JzWVhOMElHNXZaR1VnYVdZZ2FYUW5jeUIzYUdsMFpYTndZV05sSUc5dWJIa2dZVzVrSUc1dmRDQndjbVZqWldSbFpDQmllU0JoSUc1dmJpMWpiMjUwWlc1MElHNXZaR1V1WEc0Z0lHeGxkQ0J2Y21sbmFXNWhiQ0E5SUdOMWNuSmxiblF1ZG1Gc2RXVTdYRzRnSUdOMWNuSmxiblF1ZG1Gc2RXVWdQU0JqZFhKeVpXNTBMblpoYkhWbExuSmxjR3hoWTJVb2JYVnNkR2x3YkdVZ1B5QXZYRnh6S3lRdklEb2dMMXNnWEZ4MFhTc2tMeXdnSnljcE8xeHVJQ0JqZFhKeVpXNTBMbXhsWm5SVGRISnBjSEJsWkNBOUlHTjFjbkpsYm5RdWRtRnNkV1VnSVQwOUlHOXlhV2RwYm1Gc08xeHVJQ0J5WlhSMWNtNGdZM1Z5Y21WdWRDNXNaV1owVTNSeWFYQndaV1E3WEc1OVhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElGZG9hWFJsYzNCaFkyVkRiMjUwY205c08xeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLlNvdXJjZUxvY2F0aW9uID0gU291cmNlTG9jYXRpb247XG5leHBvcnRzLmlkID0gaWQ7XG5leHBvcnRzLnN0cmlwRmxhZ3MgPSBzdHJpcEZsYWdzO1xuZXhwb3J0cy5zdHJpcENvbW1lbnQgPSBzdHJpcENvbW1lbnQ7XG5leHBvcnRzLnByZXBhcmVQYXRoID0gcHJlcGFyZVBhdGg7XG5leHBvcnRzLnByZXBhcmVNdXN0YWNoZSA9IHByZXBhcmVNdXN0YWNoZTtcbmV4cG9ydHMucHJlcGFyZVJhd0Jsb2NrID0gcHJlcGFyZVJhd0Jsb2NrO1xuZXhwb3J0cy5wcmVwYXJlQmxvY2sgPSBwcmVwYXJlQmxvY2s7XG5leHBvcnRzLnByZXBhcmVQcm9ncmFtID0gcHJlcGFyZVByb2dyYW07XG5leHBvcnRzLnByZXBhcmVQYXJ0aWFsQmxvY2sgPSBwcmVwYXJlUGFydGlhbEJsb2NrO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKSB7XG4gIGNsb3NlID0gY2xvc2UucGF0aCA/IGNsb3NlLnBhdGgub3JpZ2luYWwgOiBjbG9zZTtcblxuICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkge1xuICAgIHZhciBlcnJvck5vZGUgPSB7IGxvYzogb3Blbi5wYXRoLmxvYyB9O1xuXG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10ob3Blbi5wYXRoLm9yaWdpbmFsICsgXCIgZG9lc24ndCBtYXRjaCBcIiArIGNsb3NlLCBlcnJvck5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykge1xuICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgdGhpcy5zdGFydCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmZpcnN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmZpcnN0X2NvbHVtblxuICB9O1xuICB0aGlzLmVuZCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmxhc3RfbGluZSxcbiAgICBjb2x1bW46IGxvY0luZm8ubGFzdF9jb2x1bW5cbiAgfTtcbn1cblxuZnVuY3Rpb24gaWQodG9rZW4pIHtcbiAgaWYgKC9eXFxbLipcXF0kLy50ZXN0KHRva2VuKSkge1xuICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmlwRmxhZ3Mob3BlbiwgY2xvc2UpIHtcbiAgcmV0dXJuIHtcbiAgICBvcGVuOiBvcGVuLmNoYXJBdCgyKSA9PT0gJ34nLFxuICAgIGNsb3NlOiBjbG9zZS5jaGFyQXQoY2xvc2UubGVuZ3RoIC0gMykgPT09ICd+J1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHJpcENvbW1lbnQoY29tbWVudCkge1xuICByZXR1cm4gY29tbWVudC5yZXBsYWNlKC9eXFx7XFx7fj8hLT8tPy8sICcnKS5yZXBsYWNlKC8tPy0/fj9cXH1cXH0kLywgJycpO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlUGF0aChkYXRhLCBwYXJ0cywgbG9jKSB7XG4gIGxvYyA9IHRoaXMubG9jSW5mbyhsb2MpO1xuXG4gIHZhciBvcmlnaW5hbCA9IGRhdGEgPyAnQCcgOiAnJyxcbiAgICAgIGRpZyA9IFtdLFxuICAgICAgZGVwdGggPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIHBhcnQgPSBwYXJ0c1tpXS5wYXJ0LFxuXG4gICAgLy8gSWYgd2UgaGF2ZSBbXSBzeW50YXggdGhlbiB3ZSBkbyBub3QgdHJlYXQgcGF0aCByZWZlcmVuY2VzIGFzIG9wZXJhdG9ycyxcbiAgICAvLyBpLmUuIGZvby5bdGhpc10gcmVzb2x2ZXMgdG8gYXBwcm94aW1hdGVseSBjb250ZXh0LmZvb1sndGhpcyddXG4gICAgaXNMaXRlcmFsID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7XG4gICAgb3JpZ2luYWwgKz0gKHBhcnRzW2ldLnNlcGFyYXRvciB8fCAnJykgKyBwYXJ0O1xuXG4gICAgaWYgKCFpc0xpdGVyYWwgJiYgKHBhcnQgPT09ICcuLicgfHwgcGFydCA9PT0gJy4nIHx8IHBhcnQgPT09ICd0aGlzJykpIHtcbiAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnSW52YWxpZCBwYXRoOiAnICsgb3JpZ2luYWwsIHsgbG9jOiBsb2MgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgICAgZGVwdGgrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGlnLnB1c2gocGFydCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgIGRhdGE6IGRhdGEsXG4gICAgZGVwdGg6IGRlcHRoLFxuICAgIHBhcnRzOiBkaWcsXG4gICAgb3JpZ2luYWw6IG9yaWdpbmFsLFxuICAgIGxvYzogbG9jXG4gIH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7XG4gIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMFxuICB2YXIgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpLFxuICAgICAgZXNjYXBlZCA9IGVzY2FwZUZsYWcgIT09ICd7JyAmJiBlc2NhcGVGbGFnICE9PSAnJic7XG5cbiAgdmFyIGRlY29yYXRvciA9IC9cXCovLnRlc3Qob3Blbik7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvcicgOiAnTXVzdGFjaGVTdGF0ZW1lbnQnLFxuICAgIHBhdGg6IHBhdGgsXG4gICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgaGFzaDogaGFzaCxcbiAgICBlc2NhcGVkOiBlc2NhcGVkLFxuICAgIHN0cmlwOiBzdHJpcCxcbiAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKVxuICB9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJhd0Jsb2NrLCBjb250ZW50cywgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuUmF3QmxvY2ssIGNsb3NlKTtcblxuICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pO1xuICB2YXIgcHJvZ3JhbSA9IHtcbiAgICB0eXBlOiAnUHJvZ3JhbScsXG4gICAgYm9keTogY29udGVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mb1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0Jsb2NrU3RhdGVtZW50JyxcbiAgICBwYXRoOiBvcGVuUmF3QmxvY2sucGF0aCxcbiAgICBwYXJhbXM6IG9wZW5SYXdCbG9jay5wYXJhbXMsXG4gICAgaGFzaDogb3BlblJhd0Jsb2NrLmhhc2gsXG4gICAgcHJvZ3JhbTogcHJvZ3JhbSxcbiAgICBvcGVuU3RyaXA6IHt9LFxuICAgIGludmVyc2VTdHJpcDoge30sXG4gICAgY2xvc2VTdHJpcDoge30sXG4gICAgbG9jOiBsb2NJbmZvXG4gIH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVCbG9jayhvcGVuQmxvY2ssIHByb2dyYW0sIGludmVyc2VBbmRQcm9ncmFtLCBjbG9zZSwgaW52ZXJ0ZWQsIGxvY0luZm8pIHtcbiAgaWYgKGNsb3NlICYmIGNsb3NlLnBhdGgpIHtcbiAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpO1xuICB9XG5cbiAgdmFyIGRlY29yYXRvciA9IC9cXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pO1xuXG4gIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7XG5cbiAgdmFyIGludmVyc2UgPSB1bmRlZmluZWQsXG4gICAgICBpbnZlcnNlU3RyaXAgPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGludmVyc2VBbmRQcm9ncmFtKSB7XG4gICAgaWYgKGRlY29yYXRvcikge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1VuZXhwZWN0ZWQgaW52ZXJzZSBibG9jayBvbiBkZWNvcmF0b3InLCBpbnZlcnNlQW5kUHJvZ3JhbSk7XG4gICAgfVxuXG4gICAgaWYgKGludmVyc2VBbmRQcm9ncmFtLmNoYWluKSB7XG4gICAgICBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtLmJvZHlbMF0uY2xvc2VTdHJpcCA9IGNsb3NlLnN0cmlwO1xuICAgIH1cblxuICAgIGludmVyc2VTdHJpcCA9IGludmVyc2VBbmRQcm9ncmFtLnN0cmlwO1xuICAgIGludmVyc2UgPSBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtO1xuICB9XG5cbiAgaWYgKGludmVydGVkKSB7XG4gICAgaW52ZXJ0ZWQgPSBpbnZlcnNlO1xuICAgIGludmVyc2UgPSBwcm9ncmFtO1xuICAgIHByb2dyYW0gPSBpbnZlcnRlZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgcGF0aDogb3BlbkJsb2NrLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuQmxvY2sucGFyYW1zLFxuICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLFxuICAgIHByb2dyYW06IHByb2dyYW0sXG4gICAgaW52ZXJzZTogaW52ZXJzZSxcbiAgICBvcGVuU3RyaXA6IG9wZW5CbG9jay5zdHJpcCxcbiAgICBpbnZlcnNlU3RyaXA6IGludmVyc2VTdHJpcCxcbiAgICBjbG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCxcbiAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKVxuICB9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlUHJvZ3JhbShzdGF0ZW1lbnRzLCBsb2MpIHtcbiAgaWYgKCFsb2MgJiYgc3RhdGVtZW50cy5sZW5ndGgpIHtcbiAgICB2YXIgZmlyc3RMb2MgPSBzdGF0ZW1lbnRzWzBdLmxvYyxcbiAgICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGggLSAxXS5sb2M7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChmaXJzdExvYyAmJiBsYXN0TG9jKSB7XG4gICAgICBsb2MgPSB7XG4gICAgICAgIHNvdXJjZTogZmlyc3RMb2Muc291cmNlLFxuICAgICAgICBzdGFydDoge1xuICAgICAgICAgIGxpbmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsXG4gICAgICAgICAgY29sdW1uOiBmaXJzdExvYy5zdGFydC5jb2x1bW5cbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiB7XG4gICAgICAgICAgbGluZTogbGFzdExvYy5lbmQubGluZSxcbiAgICAgICAgICBjb2x1bW46IGxhc3RMb2MuZW5kLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1Byb2dyYW0nLFxuICAgIGJvZHk6IHN0YXRlbWVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jXG4gIH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGFydGlhbEJsb2NrU3RhdGVtZW50JyxcbiAgICBuYW1lOiBvcGVuLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuLmhhc2gsXG4gICAgcHJvZ3JhbTogcHJvZ3JhbSxcbiAgICBvcGVuU3RyaXA6IG9wZW4uc3RyaXAsXG4gICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbylcbiAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwyaGxiSEJsY25NdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3pzN2VVSkJRWE5DTEdOQlFXTTdPenM3UVVGRmNFTXNVMEZCVXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJUdEJRVU5zUXl4UFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhMUVVGTExFTkJRVU03TzBGQlJXcEVMRTFCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEV0QlFVc3NTMEZCU3l4RlFVRkZPMEZCUTJoRExGRkJRVWtzVTBGQlV5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdPMEZCUlhaRExGVkJRVTBzTWtKQlEwb3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzYVVKQlFXbENMRWRCUVVjc1MwRkJTeXhGUVVNNVF5eFRRVUZUTEVOQlExWXNRMEZCUXp0SFFVTklPME5CUTBZN08wRkJSVTBzVTBGQlV5eGpRVUZqTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVNNVF5eE5RVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVOeVFpeE5RVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhPMEZCUTFnc1VVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eFZRVUZWTzBGQlEzaENMRlZCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zV1VGQldUdEhRVU0zUWl4RFFVRkRPMEZCUTBZc1RVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ6dEJRVU5VTEZGQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1UwRkJVenRCUVVOMlFpeFZRVUZOTEVWQlFVVXNUMEZCVHl4RFFVRkRMRmRCUVZjN1IwRkROVUlzUTBGQlF6dERRVU5JT3p0QlFVVk5MRk5CUVZNc1JVRkJSU3hEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU40UWl4TlFVRkpMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdRVUZETVVJc1YwRkJUeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBkQlF6ZERMRTFCUVUwN1FVRkRUQ3hYUVVGUExFdEJRVXNzUTBGQlF6dEhRVU5rTzBOQlEwWTdPMEZCUlUwc1UwRkJVeXhWUVVGVkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlR0QlFVTjBReXhUUVVGUE8wRkJRMHdzVVVGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ6dEJRVU0xUWl4VFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWM3UjBGRE9VTXNRMEZCUXp0RFFVTklPenRCUVVWTkxGTkJRVk1zV1VGQldTeERRVUZETEU5QlFVOHNSVUZCUlR0QlFVTndReXhUUVVGUExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNZMEZCWXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1EwRkRka1U3TzBGQlJVMHNVMEZCVXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVTdRVUZETlVNc1MwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN08wRkJSWGhDTEUxQlFVa3NVVUZCVVN4SFFVRkhMRWxCUVVrc1IwRkJSeXhIUVVGSExFZEJRVWNzUlVGQlJUdE5RVU0xUWl4SFFVRkhMRWRCUVVjc1JVRkJSVHROUVVOU0xFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUlZvc1QwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNMVF5eFJRVUZKTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNUczdPenRCUVVkMFFpeGhRVUZUTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlN5eEpRVUZKTEVOQlFVTTdRVUZEZWtNc1dVRkJVU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1NVRkJTU3hGUVVGRkxFTkJRVUVzUjBGQlNTeEpRVUZKTEVOQlFVTTdPMEZCUlRsRExGRkJRVWtzUTBGQlF5eFRRVUZUTEV0QlFVc3NTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hKUVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVsQlFVa3NTMEZCU3l4TlFVRk5MRU5CUVVFc1FVRkJReXhGUVVGRk8wRkJRM0JGTEZWQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3UVVGRGJFSXNZMEZCVFN3eVFrRkJZeXhuUWtGQlowSXNSMEZCUnl4UlFVRlJMRVZCUVVVc1JVRkJSU3hIUVVGSExFVkJRVWdzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UFFVTXpSQ3hOUVVGTkxFbEJRVWtzU1VGQlNTeExRVUZMTEVsQlFVa3NSVUZCUlR0QlFVTjRRaXhoUVVGTExFVkJRVVVzUTBGQlF6dFBRVU5VTzB0QlEwWXNUVUZCVFR0QlFVTk1MRk5CUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEYUVJN1IwRkRSanM3UVVGRlJDeFRRVUZQTzBGQlEwd3NVVUZCU1N4RlFVRkZMR2RDUVVGblFqdEJRVU4wUWl4UlFVRkpMRVZCUVVvc1NVRkJTVHRCUVVOS0xGTkJRVXNzUlVGQlRDeExRVUZMTzBGQlEwd3NVMEZCU3l4RlFVRkZMRWRCUVVjN1FVRkRWaXhaUVVGUkxFVkJRVklzVVVGQlVUdEJRVU5TTEU5QlFVY3NSVUZCU0N4SFFVRkhPMGRCUTBvc1EwRkJRenREUVVOSU96dEJRVVZOTEZOQlFWTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRk96dEJRVVY0UlN4TlFVRkpMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzAxQlF5OURMRTlCUVU4c1IwRkJSeXhWUVVGVkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEZWQlFWVXNTMEZCU3l4SFFVRkhMRU5CUVVNN08wRkJSWEpFTEUxQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEYUVNc1UwRkJUenRCUVVOTUxGRkJRVWtzUlVGQlJTeFRRVUZUTEVkQlFVY3NWMEZCVnl4SFFVRkhMRzFDUVVGdFFqdEJRVU51UkN4UlFVRkpMRVZCUVVvc1NVRkJTVHRCUVVOS0xGVkJRVTBzUlVGQlRpeE5RVUZOTzBGQlEwNHNVVUZCU1N4RlFVRktMRWxCUVVrN1FVRkRTaXhYUVVGUExFVkJRVkFzVDBGQlR6dEJRVU5RTEZOQlFVc3NSVUZCVEN4TFFVRkxPMEZCUTB3c1QwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRPMGRCUXpOQ0xFTkJRVU03UTBGRFNEczdRVUZGVFN4VFFVRlRMR1ZCUVdVc1EwRkJReXhaUVVGWkxFVkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRkRVVzWlVGQllTeERRVUZETEZsQlFWa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRmJrTXNVMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEYUVNc1RVRkJTU3hQUVVGUExFZEJRVWM3UVVGRFdpeFJRVUZKTEVWQlFVVXNVMEZCVXp0QlFVTm1MRkZCUVVrc1JVRkJSU3hSUVVGUk8wRkJRMlFzVTBGQlN5eEZRVUZGTEVWQlFVVTdRVUZEVkN4UFFVRkhMRVZCUVVVc1QwRkJUenRIUVVOaUxFTkJRVU03TzBGQlJVWXNVMEZCVHp0QlFVTk1MRkZCUVVrc1JVRkJSU3huUWtGQlowSTdRVUZEZEVJc1VVRkJTU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEpRVUZKTzBGQlEzWkNMRlZCUVUwc1JVRkJSU3haUVVGWkxFTkJRVU1zVFVGQlRUdEJRVU16UWl4UlFVRkpMRVZCUVVVc1dVRkJXU3hEUVVGRExFbEJRVWs3UVVGRGRrSXNWMEZCVHl4RlFVRlFMRTlCUVU4N1FVRkRVQ3hoUVVGVExFVkJRVVVzUlVGQlJUdEJRVU5pTEdkQ1FVRlpMRVZCUVVVc1JVRkJSVHRCUVVOb1FpeGpRVUZWTEVWQlFVVXNSVUZCUlR0QlFVTmtMRTlCUVVjc1JVRkJSU3hQUVVGUE8wZEJRMklzUTBGQlF6dERRVU5JT3p0QlFVVk5MRk5CUVZNc1dVRkJXU3hEUVVNeFFpeFRRVUZUTEVWQlExUXNUMEZCVHl4RlFVTlFMR2xDUVVGcFFpeEZRVU5xUWl4TFFVRkxMRVZCUTB3c1VVRkJVU3hGUVVOU0xFOUJRVThzUlVGRFVEdEJRVU5CTEUxQlFVa3NTMEZCU3l4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVU3UVVGRGRrSXNhVUpCUVdFc1EwRkJReXhUUVVGVExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdSMEZEYWtNN08wRkJSVVFzVFVGQlNTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdPMEZCUlRGRExGTkJRVThzUTBGQlF5eFhRVUZYTEVkQlFVY3NVMEZCVXl4RFFVRkRMRmRCUVZjc1EwRkJRenM3UVVGRk5VTXNUVUZCU1N4UFFVRlBMRmxCUVVFN1RVRkJSU3haUVVGWkxGbEJRVUVzUTBGQlF6czdRVUZGTVVJc1RVRkJTU3hwUWtGQmFVSXNSVUZCUlR0QlFVTnlRaXhSUVVGSkxGTkJRVk1zUlVGQlJUdEJRVU5pTEZsQlFVMHNNa0pCUTBvc2RVTkJRWFZETEVWQlEzWkRMR2xDUVVGcFFpeERRVU5zUWl4RFFVRkRPMHRCUTBnN08wRkJSVVFzVVVGQlNTeHBRa0ZCYVVJc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRE0wSXNkVUpCUVdsQ0xFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTTFSRHM3UVVGRlJDeG5Ra0ZCV1N4SFFVRkhMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NRMEZCUXp0QlFVTjJReXhYUVVGUExFZEJRVWNzYVVKQlFXbENMRU5CUVVNc1QwRkJUeXhEUVVGRE8wZEJRM0pET3p0QlFVVkVMRTFCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zV1VGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0QlFVTnVRaXhYUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETzBGQlEyeENMRmRCUVU4c1IwRkJSeXhSUVVGUkxFTkJRVU03UjBGRGNFSTdPMEZCUlVRc1UwRkJUenRCUVVOTUxGRkJRVWtzUlVGQlJTeFRRVUZUTEVkQlFVY3NaMEpCUVdkQ0xFZEJRVWNzWjBKQlFXZENPMEZCUTNKRUxGRkJRVWtzUlVGQlJTeFRRVUZUTEVOQlFVTXNTVUZCU1R0QlFVTndRaXhWUVVGTkxFVkJRVVVzVTBGQlV5eERRVUZETEUxQlFVMDdRVUZEZUVJc1VVRkJTU3hGUVVGRkxGTkJRVk1zUTBGQlF5eEpRVUZKTzBGQlEzQkNMRmRCUVU4c1JVRkJVQ3hQUVVGUE8wRkJRMUFzVjBGQlR5eEZRVUZRTEU5QlFVODdRVUZEVUN4aFFVRlRMRVZCUVVVc1UwRkJVeXhEUVVGRExFdEJRVXM3UVVGRE1VSXNaMEpCUVZrc1JVRkJXaXhaUVVGWk8wRkJRMW9zWTBGQlZTeEZRVUZGTEV0QlFVc3NTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTenRCUVVOb1F5eFBRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU03UjBGRE0wSXNRMEZCUXp0RFFVTklPenRCUVVWTkxGTkJRVk1zWTBGQll5eERRVUZETEZWQlFWVXNSVUZCUlN4SFFVRkhMRVZCUVVVN1FVRkRPVU1zVFVGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRemRDTEZGQlFVMHNVVUZCVVN4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITzFGQlEyaERMRTlCUVU4c1IwRkJSeXhWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03T3p0QlFVZHNSQ3hSUVVGSkxGRkJRVkVzU1VGQlNTeFBRVUZQTEVWQlFVVTdRVUZEZGtJc1UwRkJSeXhIUVVGSE8wRkJRMG9zWTBGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4TlFVRk5PMEZCUTNaQ0xHRkJRVXNzUlVGQlJUdEJRVU5NTEdOQlFVa3NSVUZCUlN4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWs3UVVGRGVrSXNaMEpCUVUwc1JVRkJSU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMDdVMEZET1VJN1FVRkRSQ3hYUVVGSExFVkJRVVU3UVVGRFNDeGpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSk8wRkJRM1JDTEdkQ1FVRk5MRVZCUVVVc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTzFOQlF6TkNPMDlCUTBZc1EwRkJRenRMUVVOSU8wZEJRMFk3TzBGQlJVUXNVMEZCVHp0QlFVTk1MRkZCUVVrc1JVRkJSU3hUUVVGVE8wRkJRMllzVVVGQlNTeEZRVUZGTEZWQlFWVTdRVUZEYUVJc1UwRkJTeXhGUVVGRkxFVkJRVVU3UVVGRFZDeFBRVUZITEVWQlFVVXNSMEZCUnp0SFFVTlVMRU5CUVVNN1EwRkRTRHM3UVVGRlRTeFRRVUZUTEcxQ1FVRnRRaXhEUVVGRExFbEJRVWtzUlVGQlJTeFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVOcVJTeGxRVUZoTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE96dEJRVVV6UWl4VFFVRlBPMEZCUTB3c1VVRkJTU3hGUVVGRkxIVkNRVUYxUWp0QlFVTTNRaXhSUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVazdRVUZEWml4VlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTA3UVVGRGJrSXNVVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSk8wRkJRMllzVjBGQlR5eEZRVUZRTEU5QlFVODdRVUZEVUN4aFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXM3UVVGRGNrSXNZMEZCVlN4RlFVRkZMRXRCUVVzc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN6dEJRVU5vUXl4UFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTTdSMEZETTBJc1EwRkJRenREUVVOSUlpd2labWxzWlNJNkltaGxiSEJsY25NdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdSWGhqWlhCMGFXOXVJR1p5YjIwZ0p5NHVMMlY0WTJWd2RHbHZiaWM3WEc1Y2JtWjFibU4wYVc5dUlIWmhiR2xrWVhSbFEyeHZjMlVvYjNCbGJpd2dZMnh2YzJVcElIdGNiaUFnWTJ4dmMyVWdQU0JqYkc5elpTNXdZWFJvSUQ4Z1kyeHZjMlV1Y0dGMGFDNXZjbWxuYVc1aGJDQTZJR05zYjNObE8xeHVYRzRnSUdsbUlDaHZjR1Z1TG5CaGRHZ3ViM0pwWjJsdVlXd2dJVDA5SUdOc2IzTmxLU0I3WEc0Z0lDQWdiR1YwSUdWeWNtOXlUbTlrWlNBOUlIc2diRzlqT2lCdmNHVnVMbkJoZEdndWJHOWpJSDA3WEc1Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0Z4dUlDQWdJQ0FnYjNCbGJpNXdZWFJvTG05eWFXZHBibUZzSUNzZ1hDSWdaRzlsYzI0bmRDQnRZWFJqYUNCY0lpQXJJR05zYjNObExGeHVJQ0FnSUNBZ1pYSnliM0pPYjJSbFhHNGdJQ0FnS1R0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1UyOTFjbU5sVEc5allYUnBiMjRvYzI5MWNtTmxMQ0JzYjJOSmJtWnZLU0I3WEc0Z0lIUm9hWE11YzI5MWNtTmxJRDBnYzI5MWNtTmxPMXh1SUNCMGFHbHpMbk4wWVhKMElEMGdlMXh1SUNBZ0lHeHBibVU2SUd4dlkwbHVabTh1Wm1seWMzUmZiR2x1WlN4Y2JpQWdJQ0JqYjJ4MWJXNDZJR3h2WTBsdVptOHVabWx5YzNSZlkyOXNkVzF1WEc0Z0lIMDdYRzRnSUhSb2FYTXVaVzVrSUQwZ2UxeHVJQ0FnSUd4cGJtVTZJR3h2WTBsdVptOHViR0Z6ZEY5c2FXNWxMRnh1SUNBZ0lHTnZiSFZ0YmpvZ2JHOWpTVzVtYnk1c1lYTjBYMk52YkhWdGJseHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhV1FvZEc5clpXNHBJSHRjYmlBZ2FXWWdLQzllWEZ4YkxpcGNYRjBrTHk1MFpYTjBLSFJ2YTJWdUtTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGIydGxiaTV6ZFdKemRISnBibWNvTVN3Z2RHOXJaVzR1YkdWdVozUm9JQzBnTVNrN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSdmEyVnVPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6ZEhKcGNFWnNZV2R6S0c5d1pXNHNJR05zYjNObEtTQjdYRzRnSUhKbGRIVnliaUI3WEc0Z0lDQWdiM0JsYmpvZ2IzQmxiaTVqYUdGeVFYUW9NaWtnUFQwOUlDZCtKeXhjYmlBZ0lDQmpiRzl6WlRvZ1kyeHZjMlV1WTJoaGNrRjBLR05zYjNObExteGxibWQwYUNBdElETXBJRDA5UFNBbmZpZGNiaUFnZlR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE4wY21sd1EyOXRiV1Z1ZENoamIyMXRaVzUwS1NCN1hHNGdJSEpsZEhWeWJpQmpiMjF0Wlc1MExuSmxjR3hoWTJVb0wxNWNYSHRjWEh0K1B5RXRQeTAvTHl3Z0p5Y3BMbkpsY0d4aFkyVW9MeTAvTFQ5K1AxeGNmVnhjZlNRdkxDQW5KeWs3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndjbVZ3WVhKbFVHRjBhQ2hrWVhSaExDQndZWEowY3l3Z2JHOWpLU0I3WEc0Z0lHeHZZeUE5SUhSb2FYTXViRzlqU1c1bWJ5aHNiMk1wTzF4dVhHNGdJR3hsZENCdmNtbG5hVzVoYkNBOUlHUmhkR0VnUHlBblFDY2dPaUFuSnl4Y2JpQWdJQ0JrYVdjZ1BTQmJYU3hjYmlBZ0lDQmtaWEIwYUNBOUlEQTdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQndZWEowY3k1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCc1pYUWdjR0Z5ZENBOUlIQmhjblJ6VzJsZExuQmhjblFzWEc0Z0lDQWdJQ0F2THlCSlppQjNaU0JvWVhabElGdGRJSE41Ym5SaGVDQjBhR1Z1SUhkbElHUnZJRzV2ZENCMGNtVmhkQ0J3WVhSb0lISmxabVZ5Wlc1alpYTWdZWE1nYjNCbGNtRjBiM0p6TEZ4dUlDQWdJQ0FnTHk4Z2FTNWxMaUJtYjI4dVczUm9hWE5kSUhKbGMyOXNkbVZ6SUhSdklHRndjSEp2ZUdsdFlYUmxiSGtnWTI5dWRHVjRkQzVtYjI5YkozUm9hWE1uWFZ4dUlDQWdJQ0FnYVhOTWFYUmxjbUZzSUQwZ2NHRnlkSE5iYVYwdWIzSnBaMmx1WVd3Z0lUMDlJSEJoY25RN1hHNGdJQ0FnYjNKcFoybHVZV3dnS3owZ0tIQmhjblJ6VzJsZExuTmxjR0Z5WVhSdmNpQjhmQ0FuSnlrZ0t5QndZWEowTzF4dVhHNGdJQ0FnYVdZZ0tDRnBjMHhwZEdWeVlXd2dKaVlnS0hCaGNuUWdQVDA5SUNjdUxpY2dmSHdnY0dGeWRDQTlQVDBnSnk0bklIeDhJSEJoY25RZ1BUMDlJQ2QwYUdsekp5a3BJSHRjYmlBZ0lDQWdJR2xtSUNoa2FXY3ViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZEpiblpoYkdsa0lIQmhkR2c2SUNjZ0t5QnZjbWxuYVc1aGJDd2dleUJzYjJNZ2ZTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEJoY25RZ1BUMDlJQ2N1TGljcElIdGNiaUFnSUNBZ0lDQWdaR1Z3ZEdnckt6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWkdsbkxuQjFjMmdvY0dGeWRDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNCMGVYQmxPaUFuVUdGMGFFVjRjSEpsYzNOcGIyNG5MRnh1SUNBZ0lHUmhkR0VzWEc0Z0lDQWdaR1Z3ZEdnc1hHNGdJQ0FnY0dGeWRITTZJR1JwWnl4Y2JpQWdJQ0J2Y21sbmFXNWhiQ3hjYmlBZ0lDQnNiMk5jYmlBZ2ZUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhCeVpYQmhjbVZOZFhOMFlXTm9aU2h3WVhSb0xDQndZWEpoYlhNc0lHaGhjMmdzSUc5d1pXNHNJSE4wY21sd0xDQnNiMk5KYm1adktTQjdYRzRnSUM4dklFMTFjM1FnZFhObElHTm9ZWEpCZENCMGJ5QnpkWEJ3YjNKMElFbEZJSEJ5WlMweE1GeHVJQ0JzWlhRZ1pYTmpZWEJsUm14aFp5QTlJRzl3Wlc0dVkyaGhja0YwS0RNcElIeDhJRzl3Wlc0dVkyaGhja0YwS0RJcExGeHVJQ0FnSUdWelkyRndaV1FnUFNCbGMyTmhjR1ZHYkdGbklDRTlQU0FuZXljZ0ppWWdaWE5qWVhCbFJteGhaeUFoUFQwZ0p5WW5PMXh1WEc0Z0lHeGxkQ0JrWldOdmNtRjBiM0lnUFNBdlhGd3FMeTUwWlhOMEtHOXdaVzRwTzF4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUhSNWNHVTZJR1JsWTI5eVlYUnZjaUEvSUNkRVpXTnZjbUYwYjNJbklEb2dKMDExYzNSaFkyaGxVM1JoZEdWdFpXNTBKeXhjYmlBZ0lDQndZWFJvTEZ4dUlDQWdJSEJoY21GdGN5eGNiaUFnSUNCb1lYTm9MRnh1SUNBZ0lHVnpZMkZ3WldRc1hHNGdJQ0FnYzNSeWFYQXNYRzRnSUNBZ2JHOWpPaUIwYUdsekxteHZZMGx1Wm04b2JHOWpTVzVtYnlsY2JpQWdmVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQnlaWEJoY21WU1lYZENiRzlqYXlodmNHVnVVbUYzUW14dlkyc3NJR052Ym5SbGJuUnpMQ0JqYkc5elpTd2diRzlqU1c1bWJ5a2dlMXh1SUNCMllXeHBaR0YwWlVOc2IzTmxLRzl3Wlc1U1lYZENiRzlqYXl3Z1kyeHZjMlVwTzF4dVhHNGdJR3h2WTBsdVptOGdQU0IwYUdsekxteHZZMGx1Wm04b2JHOWpTVzVtYnlrN1hHNGdJR3hsZENCd2NtOW5jbUZ0SUQwZ2UxeHVJQ0FnSUhSNWNHVTZJQ2RRY205bmNtRnRKeXhjYmlBZ0lDQmliMlI1T2lCamIyNTBaVzUwY3l4Y2JpQWdJQ0J6ZEhKcGNEb2dlMzBzWEc0Z0lDQWdiRzlqT2lCc2IyTkpibVp2WEc0Z0lIMDdYRzVjYmlBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0IwZVhCbE9pQW5RbXh2WTJ0VGRHRjBaVzFsYm5RbkxGeHVJQ0FnSUhCaGRHZzZJRzl3Wlc1U1lYZENiRzlqYXk1d1lYUm9MRnh1SUNBZ0lIQmhjbUZ0Y3pvZ2IzQmxibEpoZDBKc2IyTnJMbkJoY21GdGN5eGNiaUFnSUNCb1lYTm9PaUJ2Y0dWdVVtRjNRbXh2WTJzdWFHRnphQ3hjYmlBZ0lDQndjbTluY21GdExGeHVJQ0FnSUc5d1pXNVRkSEpwY0RvZ2UzMHNYRzRnSUNBZ2FXNTJaWEp6WlZOMGNtbHdPaUI3ZlN4Y2JpQWdJQ0JqYkc5elpWTjBjbWx3T2lCN2ZTeGNiaUFnSUNCc2IyTTZJR3h2WTBsdVptOWNiaUFnZlR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJ5WlhCaGNtVkNiRzlqYXloY2JpQWdiM0JsYmtKc2IyTnJMRnh1SUNCd2NtOW5jbUZ0TEZ4dUlDQnBiblpsY25ObFFXNWtVSEp2WjNKaGJTeGNiaUFnWTJ4dmMyVXNYRzRnSUdsdWRtVnlkR1ZrTEZ4dUlDQnNiMk5KYm1adlhHNHBJSHRjYmlBZ2FXWWdLR05zYjNObElDWW1JR05zYjNObExuQmhkR2dwSUh0Y2JpQWdJQ0IyWVd4cFpHRjBaVU5zYjNObEtHOXdaVzVDYkc5amF5d2dZMnh2YzJVcE8xeHVJQ0I5WEc1Y2JpQWdiR1YwSUdSbFkyOXlZWFJ2Y2lBOUlDOWNYQ292TG5SbGMzUW9iM0JsYmtKc2IyTnJMbTl3Wlc0cE8xeHVYRzRnSUhCeWIyZHlZVzB1WW14dlkydFFZWEpoYlhNZ1BTQnZjR1Z1UW14dlkyc3VZbXh2WTJ0UVlYSmhiWE03WEc1Y2JpQWdiR1YwSUdsdWRtVnljMlVzSUdsdWRtVnljMlZUZEhKcGNEdGNibHh1SUNCcFppQW9hVzUyWlhKelpVRnVaRkJ5YjJkeVlXMHBJSHRjYmlBZ0lDQnBaaUFvWkdWamIzSmhkRzl5S1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtGeHVJQ0FnSUNBZ0lDQW5WVzVsZUhCbFkzUmxaQ0JwYm5abGNuTmxJR0pzYjJOcklHOXVJR1JsWTI5eVlYUnZjaWNzWEc0Z0lDQWdJQ0FnSUdsdWRtVnljMlZCYm1SUWNtOW5jbUZ0WEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNocGJuWmxjbk5sUVc1a1VISnZaM0poYlM1amFHRnBiaWtnZTF4dUlDQWdJQ0FnYVc1MlpYSnpaVUZ1WkZCeWIyZHlZVzB1Y0hKdlozSmhiUzVpYjJSNVd6QmRMbU5zYjNObFUzUnlhWEFnUFNCamJHOXpaUzV6ZEhKcGNEdGNiaUFnSUNCOVhHNWNiaUFnSUNCcGJuWmxjbk5sVTNSeWFYQWdQU0JwYm5abGNuTmxRVzVrVUhKdlozSmhiUzV6ZEhKcGNEdGNiaUFnSUNCcGJuWmxjbk5sSUQwZ2FXNTJaWEp6WlVGdVpGQnliMmR5WVcwdWNISnZaM0poYlR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hwYm5abGNuUmxaQ2tnZTF4dUlDQWdJR2x1ZG1WeWRHVmtJRDBnYVc1MlpYSnpaVHRjYmlBZ0lDQnBiblpsY25ObElEMGdjSEp2WjNKaGJUdGNiaUFnSUNCd2NtOW5jbUZ0SUQwZ2FXNTJaWEowWldRN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUhSNWNHVTZJR1JsWTI5eVlYUnZjaUEvSUNkRVpXTnZjbUYwYjNKQ2JHOWpheWNnT2lBblFteHZZMnRUZEdGMFpXMWxiblFuTEZ4dUlDQWdJSEJoZEdnNklHOXdaVzVDYkc5amF5NXdZWFJvTEZ4dUlDQWdJSEJoY21GdGN6b2diM0JsYmtKc2IyTnJMbkJoY21GdGN5eGNiaUFnSUNCb1lYTm9PaUJ2Y0dWdVFteHZZMnN1YUdGemFDeGNiaUFnSUNCd2NtOW5jbUZ0TEZ4dUlDQWdJR2x1ZG1WeWMyVXNYRzRnSUNBZ2IzQmxibE4wY21sd09pQnZjR1Z1UW14dlkyc3VjM1J5YVhBc1hHNGdJQ0FnYVc1MlpYSnpaVk4wY21sd0xGeHVJQ0FnSUdOc2IzTmxVM1J5YVhBNklHTnNiM05sSUNZbUlHTnNiM05sTG5OMGNtbHdMRnh1SUNBZ0lHeHZZem9nZEdocGN5NXNiMk5KYm1adktHeHZZMGx1Wm04cFhHNGdJSDA3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndjbVZ3WVhKbFVISnZaM0poYlNoemRHRjBaVzFsYm5SekxDQnNiMk1wSUh0Y2JpQWdhV1lnS0NGc2IyTWdKaVlnYzNSaGRHVnRaVzUwY3k1c1pXNW5kR2dwSUh0Y2JpQWdJQ0JqYjI1emRDQm1hWEp6ZEV4dll5QTlJSE4wWVhSbGJXVnVkSE5iTUYwdWJHOWpMRnh1SUNBZ0lDQWdiR0Z6ZEV4dll5QTlJSE4wWVhSbGJXVnVkSE5iYzNSaGRHVnRaVzUwY3k1c1pXNW5kR2dnTFNBeFhTNXNiMk03WEc1Y2JpQWdJQ0F2S2lCcGMzUmhibUoxYkNCcFoyNXZjbVVnWld4elpTQXFMMXh1SUNBZ0lHbG1JQ2htYVhKemRFeHZZeUFtSmlCc1lYTjBURzlqS1NCN1hHNGdJQ0FnSUNCc2IyTWdQU0I3WEc0Z0lDQWdJQ0FnSUhOdmRYSmpaVG9nWm1seWMzUk1iMk11YzI5MWNtTmxMRnh1SUNBZ0lDQWdJQ0J6ZEdGeWREb2dlMXh1SUNBZ0lDQWdJQ0FnSUd4cGJtVTZJR1pwY25OMFRHOWpMbk4wWVhKMExteHBibVVzWEc0Z0lDQWdJQ0FnSUNBZ1kyOXNkVzF1T2lCbWFYSnpkRXh2WXk1emRHRnlkQzVqYjJ4MWJXNWNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnWlc1a09pQjdYRzRnSUNBZ0lDQWdJQ0FnYkdsdVpUb2diR0Z6ZEV4dll5NWxibVF1YkdsdVpTeGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4MWJXNDZJR3hoYzNSTWIyTXVaVzVrTG1OdmJIVnRibHh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5TzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUI3WEc0Z0lDQWdkSGx3WlRvZ0oxQnliMmR5WVcwbkxGeHVJQ0FnSUdKdlpIazZJSE4wWVhSbGJXVnVkSE1zWEc0Z0lDQWdjM1J5YVhBNklIdDlMRnh1SUNBZ0lHeHZZem9nYkc5alhHNGdJSDA3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndjbVZ3WVhKbFVHRnlkR2xoYkVKc2IyTnJLRzl3Wlc0c0lIQnliMmR5WVcwc0lHTnNiM05sTENCc2IyTkpibVp2S1NCN1hHNGdJSFpoYkdsa1lYUmxRMnh2YzJVb2IzQmxiaXdnWTJ4dmMyVXBPMXh1WEc0Z0lISmxkSFZ5YmlCN1hHNGdJQ0FnZEhsd1pUb2dKMUJoY25ScFlXeENiRzlqYTFOMFlYUmxiV1Z1ZENjc1hHNGdJQ0FnYm1GdFpUb2diM0JsYmk1d1lYUm9MRnh1SUNBZ0lIQmhjbUZ0Y3pvZ2IzQmxiaTV3WVhKaGJYTXNYRzRnSUNBZ2FHRnphRG9nYjNCbGJpNW9ZWE5vTEZ4dUlDQWdJSEJ5YjJkeVlXMHNYRzRnSUNBZ2IzQmxibE4wY21sd09pQnZjR1Z1TG5OMGNtbHdMRnh1SUNBZ0lHTnNiM05sVTNSeWFYQTZJR05zYjNObElDWW1JR05zYjNObExuTjBjbWx3TEZ4dUlDQWdJR3h2WXpvZ2RHaHBjeTVzYjJOSmJtWnZLR3h2WTBsdVptOHBYRzRnSUgwN1hHNTlYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5wYXJzZVdpdGhvdXRQcm9jZXNzaW5nID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZztcbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmpbJ2RlZmF1bHQnXSA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9wYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcicpO1xuXG52YXIgX3BhcnNlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXJzZXIpO1xuXG52YXIgX3doaXRlc3BhY2VDb250cm9sID0gcmVxdWlyZSgnLi93aGl0ZXNwYWNlLWNvbnRyb2wnKTtcblxudmFyIF93aGl0ZXNwYWNlQ29udHJvbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93aGl0ZXNwYWNlQ29udHJvbCk7XG5cbnZhciBfaGVscGVycyA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG52YXIgSGVscGVycyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9oZWxwZXJzKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbmV4cG9ydHMucGFyc2VyID0gX3BhcnNlcjJbJ2RlZmF1bHQnXTtcblxudmFyIHl5ID0ge307XG5fdXRpbHMuZXh0ZW5kKHl5LCBIZWxwZXJzKTtcblxuZnVuY3Rpb24gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucykge1xuICAvLyBKdXN0IHJldHVybiBpZiBhbiBhbHJlYWR5LWNvbXBpbGVkIEFTVCB3YXMgcGFzc2VkIGluLlxuICBpZiAoaW5wdXQudHlwZSA9PT0gJ1Byb2dyYW0nKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgX3BhcnNlcjJbJ2RlZmF1bHQnXS55eSA9IHl5O1xuXG4gIC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQgb2JqZWN0IGhlcmUsIGJ1dCB0aGlzIGlzIG9rIGFzIHBhcnNlciBpcyBhIHN5bmMgb3BlcmF0aW9uXG4gIHl5LmxvY0luZm8gPSBmdW5jdGlvbiAobG9jSW5mbykge1xuICAgIHJldHVybiBuZXcgeXkuU291cmNlTG9jYXRpb24ob3B0aW9ucyAmJiBvcHRpb25zLnNyY05hbWUsIGxvY0luZm8pO1xuICB9O1xuXG4gIHZhciBhc3QgPSBfcGFyc2VyMlsnZGVmYXVsdCddLnBhcnNlKGlucHV0KTtcblxuICByZXR1cm4gYXN0O1xufVxuXG5mdW5jdGlvbiBwYXJzZShpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucyk7XG4gIHZhciBzdHJpcCA9IG5ldyBfd2hpdGVzcGFjZUNvbnRyb2wyWydkZWZhdWx0J10ob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHN0cmlwLmFjY2VwdChhc3QpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJKaGMyVXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenM3T3p0elFrRkJiVUlzVlVGQlZUczdPenRwUTBGRFF5eHpRa0ZCYzBJN096czdkVUpCUXpOQ0xGZEJRVmM3TzBsQlFYaENMRTlCUVU4N08zRkNRVU5KTEZWQlFWVTdPMUZCUlhoQ0xFMUJRVTA3TzBGQlJXWXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMW9zWTBGQlR5eEZRVUZGTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN08wRkJSV0lzVTBGQlV5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQlR5eEZRVUZGT3p0QlFVVnlSQ3hOUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NVMEZCVXl4RlFVRkZPMEZCUXpWQ0xGZEJRVThzUzBGQlN5eERRVUZETzBkQlEyUTdPMEZCUlVRc2MwSkJRVThzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXpzN08wRkJSMllzU1VGQlJTeERRVUZETEU5QlFVOHNSMEZCUnl4VlFVRlRMRTlCUVU4c1JVRkJSVHRCUVVNM1FpeFhRVUZQTEVsQlFVa3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhQUVVGUExFbEJRVWtzVDBGQlR5eERRVUZETEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRIUVVOdVJTeERRVUZET3p0QlFVVkdMRTFCUVVrc1IwRkJSeXhIUVVGSExHOUNRVUZQTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRk9VSXNVMEZCVHl4SFFVRkhMRU5CUVVNN1EwRkRXanM3UVVGRlRTeFRRVUZUTEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRM0JETEUxQlFVa3NSMEZCUnl4SFFVRkhMSE5DUVVGelFpeERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOcVJDeE5RVUZKTEV0QlFVc3NSMEZCUnl4dFEwRkJjMElzVDBGQlR5eERRVUZETEVOQlFVTTdPMEZCUlRORExGTkJRVThzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenREUVVNeFFpSXNJbVpwYkdVaU9pSmlZWE5sTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIQmhjbk5sY2lCbWNtOXRJQ2N1TDNCaGNuTmxjaWM3WEc1cGJYQnZjblFnVjJocGRHVnpjR0ZqWlVOdmJuUnliMndnWm5KdmJTQW5MaTkzYUdsMFpYTndZV05sTFdOdmJuUnliMnduTzF4dWFXMXdiM0owSUNvZ1lYTWdTR1ZzY0dWeWN5Qm1jbTl0SUNjdUwyaGxiSEJsY25Nbk8xeHVhVzF3YjNKMElIc2daWGgwWlc1a0lIMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzVsZUhCdmNuUWdleUJ3WVhKelpYSWdmVHRjYmx4dWJHVjBJSGw1SUQwZ2UzMDdYRzVsZUhSbGJtUW9lWGtzSUVobGJIQmxjbk1wTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NHRnljMlZYYVhSb2IzVjBVSEp2WTJWemMybHVaeWhwYm5CMWRDd2diM0IwYVc5dWN5a2dlMXh1SUNBdkx5QktkWE4wSUhKbGRIVnliaUJwWmlCaGJpQmhiSEpsWVdSNUxXTnZiWEJwYkdWa0lFRlRWQ0IzWVhNZ2NHRnpjMlZrSUdsdUxseHVJQ0JwWmlBb2FXNXdkWFF1ZEhsd1pTQTlQVDBnSjFCeWIyZHlZVzBuS1NCN1hHNGdJQ0FnY21WMGRYSnVJR2x1Y0hWME8xeHVJQ0I5WEc1Y2JpQWdjR0Z5YzJWeUxubDVJRDBnZVhrN1hHNWNiaUFnTHk4Z1FXeDBaWEpwYm1jZ2RHaGxJSE5vWVhKbFpDQnZZbXBsWTNRZ2FHVnlaU3dnWW5WMElIUm9hWE1nYVhNZ2Iyc2dZWE1nY0dGeWMyVnlJR2x6SUdFZ2MzbHVZeUJ2Y0dWeVlYUnBiMjVjYmlBZ2VYa3ViRzlqU1c1bWJ5QTlJR1oxYm1OMGFXOXVLR3h2WTBsdVptOHBJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJSGw1TGxOdmRYSmpaVXh2WTJGMGFXOXVLRzl3ZEdsdmJuTWdKaVlnYjNCMGFXOXVjeTV6Y21OT1lXMWxMQ0JzYjJOSmJtWnZLVHRjYmlBZ2ZUdGNibHh1SUNCc1pYUWdZWE4wSUQwZ2NHRnljMlZ5TG5CaGNuTmxLR2x1Y0hWMEtUdGNibHh1SUNCeVpYUjFjbTRnWVhOME8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY0dGeWMyVW9hVzV3ZFhRc0lHOXdkR2x2Ym5NcElIdGNiaUFnYkdWMElHRnpkQ0E5SUhCaGNuTmxWMmwwYUc5MWRGQnliMk5sYzNOcGJtY29hVzV3ZFhRc0lHOXdkR2x2Ym5NcE8xeHVJQ0JzWlhRZ2MzUnlhWEFnUFNCdVpYY2dWMmhwZEdWemNHRmpaVU52Ym5SeWIyd29iM0IwYVc5dWN5azdYRzVjYmlBZ2NtVjBkWEp1SUhOMGNtbHdMbUZqWTJWd2RDaGhjM1FwTzF4dWZWeHVJbDE5XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwICovXG5cbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuQ29tcGlsZXIgPSBDb21waWxlcjtcbmV4cG9ydHMucHJlY29tcGlsZSA9IHByZWNvbXBpbGU7XG5leHBvcnRzLmNvbXBpbGUgPSBjb21waWxlO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxudmFyIF9hc3QgPSByZXF1aXJlKCcuL2FzdCcpO1xuXG52YXIgX2FzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3QpO1xuXG52YXIgc2xpY2UgPSBbXS5zbGljZTtcblxuZnVuY3Rpb24gQ29tcGlsZXIoKSB7fVxuXG4vLyB0aGUgZm91bmRIZWxwZXIgcmVnaXN0ZXIgd2lsbCBkaXNhbWJpZ3VhdGUgaGVscGVyIGxvb2t1cCBmcm9tIGZpbmRpbmcgYVxuLy8gZnVuY3Rpb24gaW4gYSBjb250ZXh0LiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgbXVzdGFjaGUgY29tcGF0aWJpbGl0eSwgd2hpY2hcbi8vIHJlcXVpcmVzIHRoYXQgY29udGV4dCBmdW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkgYmxvY2tIZWxwZXJNaXNzaW5nLFxuLy8gYW5kIHRoZW4gcHJvY2VlZCBhcyBpZiB0aGUgcmVzdWx0aW5nIHZhbHVlIHdhcyBwcm92aWRlZCB0byBibG9ja0hlbHBlck1pc3NpbmcuXG5cbkNvbXBpbGVyLnByb3RvdHlwZSA9IHtcbiAgY29tcGlsZXI6IENvbXBpbGVyLFxuXG4gIGVxdWFsczogZnVuY3Rpb24gZXF1YWxzKG90aGVyKSB7XG4gICAgdmFyIGxlbiA9IHRoaXMub3Bjb2Rlcy5sZW5ndGg7XG4gICAgaWYgKG90aGVyLm9wY29kZXMubGVuZ3RoICE9PSBsZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgb3Bjb2RlID0gdGhpcy5vcGNvZGVzW2ldLFxuICAgICAgICAgIG90aGVyT3Bjb2RlID0gb3RoZXIub3Bjb2Rlc1tpXTtcbiAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBvdGhlck9wY29kZS5vcGNvZGUgfHwgIWFyZ0VxdWFscyhvcGNvZGUuYXJncywgb3RoZXJPcGNvZGUuYXJncykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNhbWUgYmV0d2VlbiB0aGUgdHdvIGFycmF5cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWRcbiAgICAvLyB0byB0aGUgb3Bjb2RlIGJlaGF2aW9yIGFib3ZlLlxuICAgIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICghdGhpcy5jaGlsZHJlbltpXS5lcXVhbHMob3RoZXIuY2hpbGRyZW5baV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICBndWlkOiAwLFxuXG4gIGNvbXBpbGU6IGZ1bmN0aW9uIGNvbXBpbGUocHJvZ3JhbSwgb3B0aW9ucykge1xuICAgIHRoaXMuc291cmNlTm9kZSA9IFtdO1xuICAgIHRoaXMub3Bjb2RlcyA9IFtdO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc3RyaW5nUGFyYW1zID0gb3B0aW9ucy5zdHJpbmdQYXJhbXM7XG4gICAgdGhpcy50cmFja0lkcyA9IG9wdGlvbnMudHJhY2tJZHM7XG5cbiAgICBvcHRpb25zLmJsb2NrUGFyYW1zID0gb3B0aW9ucy5ibG9ja1BhcmFtcyB8fCBbXTtcblxuICAgIG9wdGlvbnMua25vd25IZWxwZXJzID0gX3V0aWxzLmV4dGVuZChPYmplY3QuY3JlYXRlKG51bGwpLCB7XG4gICAgICBoZWxwZXJNaXNzaW5nOiB0cnVlLFxuICAgICAgYmxvY2tIZWxwZXJNaXNzaW5nOiB0cnVlLFxuICAgICAgZWFjaDogdHJ1ZSxcbiAgICAgICdpZic6IHRydWUsXG4gICAgICB1bmxlc3M6IHRydWUsXG4gICAgICAnd2l0aCc6IHRydWUsXG4gICAgICBsb2c6IHRydWUsXG4gICAgICBsb29rdXA6IHRydWVcbiAgICB9LCBvcHRpb25zLmtub3duSGVscGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocHJvZ3JhbSk7XG4gIH0sXG5cbiAgY29tcGlsZVByb2dyYW06IGZ1bmN0aW9uIGNvbXBpbGVQcm9ncmFtKHByb2dyYW0pIHtcbiAgICB2YXIgY2hpbGRDb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCksXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICAgIHJlc3VsdCA9IGNoaWxkQ29tcGlsZXIuY29tcGlsZShwcm9ncmFtLCB0aGlzLm9wdGlvbnMpLFxuICAgICAgICBndWlkID0gdGhpcy5ndWlkKys7XG5cbiAgICB0aGlzLnVzZVBhcnRpYWwgPSB0aGlzLnVzZVBhcnRpYWwgfHwgcmVzdWx0LnVzZVBhcnRpYWw7XG5cbiAgICB0aGlzLmNoaWxkcmVuW2d1aWRdID0gcmVzdWx0O1xuICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgcmVzdWx0LnVzZURlcHRocztcblxuICAgIHJldHVybiBndWlkO1xuICB9LFxuXG4gIGFjY2VwdDogZnVuY3Rpb24gYWNjZXB0KG5vZGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi9cbiAgICBpZiAoIXRoaXNbbm9kZS50eXBlXSkge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vua25vd24gdHlwZTogJyArIG5vZGUudHlwZSwgbm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zb3VyY2VOb2RlLnVuc2hpZnQobm9kZSk7XG4gICAgdmFyIHJldCA9IHRoaXNbbm9kZS50eXBlXShub2RlKTtcbiAgICB0aGlzLnNvdXJjZU5vZGUuc2hpZnQoKTtcbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIFByb2dyYW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkge1xuICAgIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy51bnNoaWZ0KHByb2dyYW0uYmxvY2tQYXJhbXMpO1xuXG4gICAgdmFyIGJvZHkgPSBwcm9ncmFtLmJvZHksXG4gICAgICAgIGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvZHlMZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHQoYm9keVtpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnNoaWZ0KCk7XG5cbiAgICB0aGlzLmlzU2ltcGxlID0gYm9keUxlbmd0aCA9PT0gMTtcbiAgICB0aGlzLmJsb2NrUGFyYW1zID0gcHJvZ3JhbS5ibG9ja1BhcmFtcyA/IHByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoIDogMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBCbG9ja1N0YXRlbWVudChibG9jaykge1xuICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoYmxvY2spO1xuXG4gICAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFtLFxuICAgICAgICBpbnZlcnNlID0gYmxvY2suaW52ZXJzZTtcblxuICAgIHByb2dyYW0gPSBwcm9ncmFtICYmIHRoaXMuY29tcGlsZVByb2dyYW0ocHJvZ3JhbSk7XG4gICAgaW52ZXJzZSA9IGludmVyc2UgJiYgdGhpcy5jb21waWxlUHJvZ3JhbShpbnZlcnNlKTtcblxuICAgIHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKGJsb2NrKTtcblxuICAgIGlmICh0eXBlID09PSAnaGVscGVyJykge1xuICAgICAgdGhpcy5oZWxwZXJTZXhwcihibG9jaywgcHJvZ3JhbSwgaW52ZXJzZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5zaW1wbGVTZXhwcihibG9jayk7XG5cbiAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVzdGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG9cbiAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tIZWxwZXJNaXNzaW5nYFxuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7XG4gICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdibG9ja1ZhbHVlJywgYmxvY2sucGF0aC5vcmlnaW5hbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpO1xuXG4gICAgICAvLyBub3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hlIGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvXG4gICAgICAvLyBldmFsdWF0ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2BcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7XG4gICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7XG4gICAgICB0aGlzLm9wY29kZSgnYW1iaWd1b3VzQmxvY2tWYWx1ZScpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTtcbiAgfSxcblxuICBEZWNvcmF0b3JCbG9jazogZnVuY3Rpb24gRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yKSB7XG4gICAgdmFyIHByb2dyYW0gPSBkZWNvcmF0b3IucHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKGRlY29yYXRvci5wcm9ncmFtKTtcbiAgICB2YXIgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhkZWNvcmF0b3IsIHByb2dyYW0sIHVuZGVmaW5lZCksXG4gICAgICAgIHBhdGggPSBkZWNvcmF0b3IucGF0aDtcblxuICAgIHRoaXMudXNlRGVjb3JhdG9ycyA9IHRydWU7XG4gICAgdGhpcy5vcGNvZGUoJ3JlZ2lzdGVyRGVjb3JhdG9yJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5hbCk7XG4gIH0sXG5cbiAgUGFydGlhbFN0YXRlbWVudDogZnVuY3Rpb24gUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsKSB7XG4gICAgdGhpcy51c2VQYXJ0aWFsID0gdHJ1ZTtcblxuICAgIHZhciBwcm9ncmFtID0gcGFydGlhbC5wcm9ncmFtO1xuICAgIGlmIChwcm9ncmFtKSB7XG4gICAgICBwcm9ncmFtID0gdGhpcy5jb21waWxlUHJvZ3JhbShwYXJ0aWFsLnByb2dyYW0pO1xuICAgIH1cblxuICAgIHZhciBwYXJhbXMgPSBwYXJ0aWFsLnBhcmFtcztcbiAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbnN1cHBvcnRlZCBudW1iZXIgb2YgcGFydGlhbCBhcmd1bWVudHM6ICcgKyBwYXJhbXMubGVuZ3RoLCBwYXJ0aWFsKTtcbiAgICB9IGVsc2UgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmV4cGxpY2l0UGFydGlhbENvbnRleHQpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1zLnB1c2goeyB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLCBwYXJ0czogW10sIGRlcHRoOiAwIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwYXJ0aWFsTmFtZSA9IHBhcnRpYWwubmFtZS5vcmlnaW5hbCxcbiAgICAgICAgaXNEeW5hbWljID0gcGFydGlhbC5uYW1lLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJztcbiAgICBpZiAoaXNEeW5hbWljKSB7XG4gICAgICB0aGlzLmFjY2VwdChwYXJ0aWFsLm5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMocGFydGlhbCwgcHJvZ3JhbSwgdW5kZWZpbmVkLCB0cnVlKTtcblxuICAgIHZhciBpbmRlbnQgPSBwYXJ0aWFsLmluZGVudCB8fCAnJztcbiAgICBpZiAodGhpcy5vcHRpb25zLnByZXZlbnRJbmRlbnQgJiYgaW5kZW50KSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGluZGVudCk7XG4gICAgICBpbmRlbnQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgnaW52b2tlUGFydGlhbCcsIGlzRHluYW1pYywgcGFydGlhbE5hbWUsIGluZGVudCk7XG4gICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpO1xuICB9LFxuICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsQmxvY2spIHtcbiAgICB0aGlzLlBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbEJsb2NrKTtcbiAgfSxcblxuICBNdXN0YWNoZVN0YXRlbWVudDogZnVuY3Rpb24gTXVzdGFjaGVTdGF0ZW1lbnQobXVzdGFjaGUpIHtcbiAgICB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpO1xuXG4gICAgaWYgKG11c3RhY2hlLmVzY2FwZWQgJiYgIXRoaXMub3B0aW9ucy5ub0VzY2FwZSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZEVzY2FwZWQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpO1xuICAgIH1cbiAgfSxcbiAgRGVjb3JhdG9yOiBmdW5jdGlvbiBEZWNvcmF0b3IoZGVjb3JhdG9yKSB7XG4gICAgdGhpcy5EZWNvcmF0b3JCbG9jayhkZWNvcmF0b3IpO1xuICB9LFxuXG4gIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbnRlbnRTdGF0ZW1lbnQoY29udGVudCkge1xuICAgIGlmIChjb250ZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGNvbnRlbnQudmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb21tZW50U3RhdGVtZW50KCkge30sXG5cbiAgU3ViRXhwcmVzc2lvbjogZnVuY3Rpb24gU3ViRXhwcmVzc2lvbihzZXhwcikge1xuICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoc2V4cHIpO1xuICAgIHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKHNleHByKTtcblxuICAgIGlmICh0eXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5zaW1wbGVTZXhwcihzZXhwcik7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnaGVscGVyJykge1xuICAgICAgdGhpcy5oZWxwZXJTZXhwcihzZXhwcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoc2V4cHIpO1xuICAgIH1cbiAgfSxcbiAgYW1iaWd1b3VzU2V4cHI6IGZ1bmN0aW9uIGFtYmlndW91c1NleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7XG4gICAgdmFyIHBhdGggPSBzZXhwci5wYXRoLFxuICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXSxcbiAgICAgICAgaXNCbG9jayA9IHByb2dyYW0gIT0gbnVsbCB8fCBpbnZlcnNlICE9IG51bGw7XG5cbiAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHBhdGguZGVwdGgpO1xuXG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7XG5cbiAgICBwYXRoLnN0cmljdCA9IHRydWU7XG4gICAgdGhpcy5hY2NlcHQocGF0aCk7XG5cbiAgICB0aGlzLm9wY29kZSgnaW52b2tlQW1iaWd1b3VzJywgbmFtZSwgaXNCbG9jayk7XG4gIH0sXG5cbiAgc2ltcGxlU2V4cHI6IGZ1bmN0aW9uIHNpbXBsZVNleHByKHNleHByKSB7XG4gICAgdmFyIHBhdGggPSBzZXhwci5wYXRoO1xuICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTtcbiAgICB0aGlzLmFjY2VwdChwYXRoKTtcbiAgICB0aGlzLm9wY29kZSgncmVzb2x2ZVBvc3NpYmxlTGFtYmRhJyk7XG4gIH0sXG5cbiAgaGVscGVyU2V4cHI6IGZ1bmN0aW9uIGhlbHBlclNleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7XG4gICAgdmFyIHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpLFxuICAgICAgICBwYXRoID0gc2V4cHIucGF0aCxcbiAgICAgICAgbmFtZSA9IHBhdGgucGFydHNbMF07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUtub3duSGVscGVyJywgcGFyYW1zLmxlbmd0aCwgbmFtZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSkge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lvdSBzcGVjaWZpZWQga25vd25IZWxwZXJzT25seSwgYnV0IHVzZWQgdGhlIHVua25vd24gaGVscGVyICcgKyBuYW1lLCBzZXhwcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTtcbiAgICAgIHBhdGguZmFsc3kgPSB0cnVlO1xuXG4gICAgICB0aGlzLmFjY2VwdChwYXRoKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VIZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFsLCBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2ltcGxlSWQocGF0aCkpO1xuICAgIH1cbiAgfSxcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24gUGF0aEV4cHJlc3Npb24ocGF0aCkge1xuICAgIHRoaXMuYWRkRGVwdGgocGF0aC5kZXB0aCk7XG4gICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTtcblxuICAgIHZhciBuYW1lID0gcGF0aC5wYXJ0c1swXSxcbiAgICAgICAgc2NvcGVkID0gX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNjb3BlZElkKHBhdGgpLFxuICAgICAgICBibG9ja1BhcmFtSWQgPSAhcGF0aC5kZXB0aCAmJiAhc2NvcGVkICYmIHRoaXMuYmxvY2tQYXJhbUluZGV4KG5hbWUpO1xuXG4gICAgaWYgKGJsb2NrUGFyYW1JZCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cEJsb2NrUGFyYW0nLCBibG9ja1BhcmFtSWQsIHBhdGgucGFydHMpO1xuICAgIH0gZWxzZSBpZiAoIW5hbWUpIHtcbiAgICAgIC8vIENvbnRleHQgcmVmZXJlbmNlLCBpLmUuIGB7e2ZvbyAufX1gIG9yIGB7e2ZvbyAuLn19YFxuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hDb250ZXh0Jyk7XG4gICAgfSBlbHNlIGlmIChwYXRoLmRhdGEpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBEYXRhJywgcGF0aC5kZXB0aCwgcGF0aC5wYXJ0cywgcGF0aC5zdHJpY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnbG9va3VwT25Db250ZXh0JywgcGF0aC5wYXJ0cywgcGF0aC5mYWxzeSwgcGF0aC5zdHJpY3QsIHNjb3BlZCk7XG4gICAgfVxuICB9LFxuXG4gIFN0cmluZ0xpdGVyYWw6IGZ1bmN0aW9uIFN0cmluZ0xpdGVyYWwoc3RyaW5nKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmcnLCBzdHJpbmcudmFsdWUpO1xuICB9LFxuXG4gIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uIE51bWJlckxpdGVyYWwobnVtYmVyKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbnVtYmVyLnZhbHVlKTtcbiAgfSxcblxuICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24gQm9vbGVhbkxpdGVyYWwoYm9vbCkge1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGJvb2wudmFsdWUpO1xuICB9LFxuXG4gIFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uIFVuZGVmaW5lZExpdGVyYWwoKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpO1xuICB9LFxuXG4gIE51bGxMaXRlcmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgpIHtcbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAnbnVsbCcpO1xuICB9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uIEhhc2goaGFzaCkge1xuICAgIHZhciBwYWlycyA9IGhhc2gucGFpcnMsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICBsID0gcGFpcnMubGVuZ3RoO1xuXG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hIYXNoJyk7XG5cbiAgICBmb3IgKDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5wdXNoUGFyYW0ocGFpcnNbaV0udmFsdWUpO1xuICAgIH1cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXNzaWduVG9IYXNoJywgcGFpcnNbaV0ua2V5KTtcbiAgICB9XG4gICAgdGhpcy5vcGNvZGUoJ3BvcEhhc2gnKTtcbiAgfSxcblxuICAvLyBIRUxQRVJTXG4gIG9wY29kZTogZnVuY3Rpb24gb3Bjb2RlKG5hbWUpIHtcbiAgICB0aGlzLm9wY29kZXMucHVzaCh7XG4gICAgICBvcGNvZGU6IG5hbWUsXG4gICAgICBhcmdzOiBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSksXG4gICAgICBsb2M6IHRoaXMuc291cmNlTm9kZVswXS5sb2NcbiAgICB9KTtcbiAgfSxcblxuICBhZGREZXB0aDogZnVuY3Rpb24gYWRkRGVwdGgoZGVwdGgpIHtcbiAgICBpZiAoIWRlcHRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51c2VEZXB0aHMgPSB0cnVlO1xuICB9LFxuXG4gIGNsYXNzaWZ5U2V4cHI6IGZ1bmN0aW9uIGNsYXNzaWZ5U2V4cHIoc2V4cHIpIHtcbiAgICB2YXIgaXNTaW1wbGUgPSBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2ltcGxlSWQoc2V4cHIucGF0aCk7XG5cbiAgICB2YXIgaXNCbG9ja1BhcmFtID0gaXNTaW1wbGUgJiYgISF0aGlzLmJsb2NrUGFyYW1JbmRleChzZXhwci5wYXRoLnBhcnRzWzBdKTtcblxuICAgIC8vIGEgbXVzdGFjaGUgaXMgYW4gZWxpZ2libGUgaGVscGVyIGlmOlxuICAgIC8vICogaXRzIGlkIGlzIHNpbXBsZSAoYSBzaW5nbGUgcGFydCwgbm90IGB0aGlzYCBvciBgLi5gKVxuICAgIHZhciBpc0hlbHBlciA9ICFpc0Jsb2NrUGFyYW0gJiYgX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLmhlbHBlckV4cHJlc3Npb24oc2V4cHIpO1xuXG4gICAgLy8gaWYgYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgYnV0IG5vdCBhIGRlZmluaXRlXG4gICAgLy8gaGVscGVyLCBpdCBpcyBhbWJpZ3VvdXMsIGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEgbGF0ZXJcbiAgICAvLyBwYXNzIG9yIGF0IHJ1bnRpbWUuXG4gICAgdmFyIGlzRWxpZ2libGUgPSAhaXNCbG9ja1BhcmFtICYmIChpc0hlbHBlciB8fCBpc1NpbXBsZSk7XG5cbiAgICAvLyBpZiBhbWJpZ3VvdXMsIHdlIGNhbiBwb3NzaWJseSByZXNvbHZlIHRoZSBhbWJpZ3VpdHkgbm93XG4gICAgLy8gQW4gZWxpZ2libGUgaGVscGVyIGlzIG9uZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBjb21wbGV4IHBhdGgsIGkuZS4gYHRoaXMuZm9vYCwgYC4uL2Zvb2AgZXRjLlxuICAgIGlmIChpc0VsaWdpYmxlICYmICFpc0hlbHBlcikge1xuICAgICAgdmFyIF9uYW1lID0gc2V4cHIucGF0aC5wYXJ0c1swXSxcbiAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzW19uYW1lXSkge1xuICAgICAgICBpc0hlbHBlciA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzT25seSkge1xuICAgICAgICBpc0VsaWdpYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzSGVscGVyKSB7XG4gICAgICByZXR1cm4gJ2hlbHBlcic7XG4gICAgfSBlbHNlIGlmIChpc0VsaWdpYmxlKSB7XG4gICAgICByZXR1cm4gJ2FtYmlndW91cyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnc2ltcGxlJztcbiAgICB9XG4gIH0sXG5cbiAgcHVzaFBhcmFtczogZnVuY3Rpb24gcHVzaFBhcmFtcyhwYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMucHVzaFBhcmFtKHBhcmFtc1tpXSk7XG4gICAgfVxuICB9LFxuXG4gIHB1c2hQYXJhbTogZnVuY3Rpb24gcHVzaFBhcmFtKHZhbCkge1xuICAgIHZhciB2YWx1ZSA9IHZhbC52YWx1ZSAhPSBudWxsID8gdmFsLnZhbHVlIDogdmFsLm9yaWdpbmFsIHx8ICcnO1xuXG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICBpZiAodmFsdWUucmVwbGFjZSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL14oXFwuP1xcLlxcLykqL2csICcnKS5yZXBsYWNlKC9cXC8vZywgJy4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbC5kZXB0aCkge1xuICAgICAgICB0aGlzLmFkZERlcHRoKHZhbC5kZXB0aCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHZhbC5kZXB0aCB8fCAwKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nUGFyYW0nLCB2YWx1ZSwgdmFsLnR5cGUpO1xuXG4gICAgICBpZiAodmFsLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykge1xuICAgICAgICAvLyBTdWJFeHByZXNzaW9ucyBnZXQgZXZhbHVhdGVkIGFuZCBwYXNzZWQgaW5cbiAgICAgICAgLy8gaW4gc3RyaW5nIHBhcmFtcyBtb2RlLlxuICAgICAgICB0aGlzLmFjY2VwdCh2YWwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgICB2YXIgYmxvY2tQYXJhbUluZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodmFsLnBhcnRzICYmICFfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2NvcGVkSWQodmFsKSAmJiAhdmFsLmRlcHRoKSB7XG4gICAgICAgICAgYmxvY2tQYXJhbUluZGV4ID0gdGhpcy5ibG9ja1BhcmFtSW5kZXgodmFsLnBhcnRzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmxvY2tQYXJhbUluZGV4KSB7XG4gICAgICAgICAgdmFyIGJsb2NrUGFyYW1DaGlsZCA9IHZhbC5wYXJ0cy5zbGljZSgxKS5qb2luKCcuJyk7XG4gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsICdCbG9ja1BhcmFtJywgYmxvY2tQYXJhbUluZGV4LCBibG9ja1BhcmFtQ2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gdmFsLm9yaWdpbmFsIHx8IHZhbHVlO1xuICAgICAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL150aGlzKD86XFwufCQpLywgJycpLnJlcGxhY2UoL15cXC5cXC8vLCAnJykucmVwbGFjZSgvXlxcLiQvLCAnJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsIHZhbC50eXBlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuYWNjZXB0KHZhbCk7XG4gICAgfVxuICB9LFxuXG4gIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbiBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSwgb21pdEVtcHR5KSB7XG4gICAgdmFyIHBhcmFtcyA9IHNleHByLnBhcmFtcztcbiAgICB0aGlzLnB1c2hQYXJhbXMocGFyYW1zKTtcblxuICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpO1xuXG4gICAgaWYgKHNleHByLmhhc2gpIHtcbiAgICAgIHRoaXMuYWNjZXB0KHNleHByLmhhc2gpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJywgb21pdEVtcHR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9LFxuXG4gIGJsb2NrUGFyYW1JbmRleDogZnVuY3Rpb24gYmxvY2tQYXJhbUluZGV4KG5hbWUpIHtcbiAgICBmb3IgKHZhciBkZXB0aCA9IDAsIGxlbiA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5sZW5ndGg7IGRlcHRoIDwgbGVuOyBkZXB0aCsrKSB7XG4gICAgICB2YXIgYmxvY2tQYXJhbXMgPSB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXNbZGVwdGhdLFxuICAgICAgICAgIHBhcmFtID0gYmxvY2tQYXJhbXMgJiYgX3V0aWxzLmluZGV4T2YoYmxvY2tQYXJhbXMsIG5hbWUpO1xuICAgICAgaWYgKGJsb2NrUGFyYW1zICYmIHBhcmFtID49IDApIHtcbiAgICAgICAgcmV0dXJuIFtkZXB0aCwgcGFyYW1dO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gcHJlY29tcGlsZShpbnB1dCwgb3B0aW9ucywgZW52KSB7XG4gIGlmIChpbnB1dCA9PSBudWxsIHx8IHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYgaW5wdXQudHlwZSAhPT0gJ1Byb2dyYW0nKSB7XG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5wcmVjb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7XG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgfVxuICBpZiAob3B0aW9ucy5jb21wYXQpIHtcbiAgICBvcHRpb25zLnVzZURlcHRocyA9IHRydWU7XG4gIH1cblxuICB2YXIgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSxcbiAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSBvcHRpb25zID0ge307XG5cbiAgaWYgKGlucHV0ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50eXBlICE9PSAnUHJvZ3JhbScpIHtcbiAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLmNvbXBpbGUuIFlvdSBwYXNzZWQgJyArIGlucHV0KTtcbiAgfVxuXG4gIG9wdGlvbnMgPSBfdXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zKTtcbiAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgfVxuICBpZiAob3B0aW9ucy5jb21wYXQpIHtcbiAgICBvcHRpb25zLnVzZURlcHRocyA9IHRydWU7XG4gIH1cblxuICB2YXIgY29tcGlsZWQgPSB1bmRlZmluZWQ7XG5cbiAgZnVuY3Rpb24gY29tcGlsZUlucHV0KCkge1xuICAgIHZhciBhc3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlvbnMpLFxuICAgICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9ucyksXG4gICAgICAgIHRlbXBsYXRlU3BlYyA9IG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucywgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICByZXR1cm4gZW52LnRlbXBsYXRlKHRlbXBsYXRlU3BlYyk7XG4gIH1cblxuICAvLyBUZW1wbGF0ZSBpcyBvbmx5IGNvbXBpbGVkIG9uIGZpcnN0IHVzZSBhbmQgY2FjaGVkIGFmdGVyIHRoYXQgcG9pbnQuXG4gIGZ1bmN0aW9uIHJldChjb250ZXh0LCBleGVjT3B0aW9ucykge1xuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZC5jYWxsKHRoaXMsIGNvbnRleHQsIGV4ZWNPcHRpb25zKTtcbiAgfVxuICByZXQuX3NldHVwID0gZnVuY3Rpb24gKHNldHVwT3B0aW9ucykge1xuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZC5fc2V0dXAoc2V0dXBPcHRpb25zKTtcbiAgfTtcbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uIChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKCFjb21waWxlZCkge1xuICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVkLl9jaGlsZChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gYXJnRXF1YWxzKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChfdXRpbHMuaXNBcnJheShhKSAmJiBfdXRpbHMuaXNBcnJheShiKSAmJiBhLmxlbmd0aCA9PT0gYi5sZW5ndGgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghYXJnRXF1YWxzKGFbaV0sIGJbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcikge1xuICBpZiAoIXNleHByLnBhdGgucGFydHMpIHtcbiAgICB2YXIgbGl0ZXJhbCA9IHNleHByLnBhdGg7XG4gICAgLy8gQ2FzdGluZyB0byBzdHJpbmcgaGVyZSB0byBtYWtlIGZhbHNlIGFuZCAwIGxpdGVyYWwgdmFsdWVzIHBsYXkgbmljZWx5IHdpdGggdGhlIHJlc3RcbiAgICAvLyBvZiB0aGUgc3lzdGVtLlxuICAgIHNleHByLnBhdGggPSB7XG4gICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgICAgZGF0YTogZmFsc2UsXG4gICAgICBkZXB0aDogMCxcbiAgICAgIHBhcnRzOiBbbGl0ZXJhbC5vcmlnaW5hbCArICcnXSxcbiAgICAgIG9yaWdpbmFsOiBsaXRlcmFsLm9yaWdpbmFsICsgJycsXG4gICAgICBsb2M6IGxpdGVyYWwubG9jXG4gICAgfTtcbiAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJOdmJYQnBiR1Z5TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096dDVRa0ZGYzBJc1kwRkJZenM3T3p0eFFrRkRTeXhWUVVGVk96dHRRa0ZEYmtNc1QwRkJUenM3T3p0QlFVVjJRaXhKUVVGTkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRPenRCUVVWb1FpeFRRVUZUTEZGQlFWRXNSMEZCUnl4RlFVRkZPenM3T3pzN08wRkJUemRDTEZGQlFWRXNRMEZCUXl4VFFVRlRMRWRCUVVjN1FVRkRia0lzVlVGQlVTeEZRVUZGTEZGQlFWRTdPMEZCUld4Q0xGRkJRVTBzUlVGQlJTeG5Ra0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRkRUlzVVVGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRE9VSXNVVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUzBGQlN5eEhRVUZITEVWQlFVVTdRVUZEYUVNc1lVRkJUeXhMUVVGTExFTkJRVU03UzBGRFpEczdRVUZGUkN4VFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRelZDTEZWQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzFWQlF6RkNMRmRCUVZjc1IwRkJSeXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJwRExGVkJRMFVzVFVGQlRTeERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNc1RVRkJUU3hKUVVOd1F5eERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZEZWtNN1FVRkRRU3hsUVVGUExFdEJRVXNzUTBGQlF6dFBRVU5rTzB0QlEwWTdPenM3UVVGSlJDeFBRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRE0wSXNVMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNMVFpeFZRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlF5OURMR1ZCUVU4c1MwRkJTeXhEUVVGRE8wOUJRMlE3UzBGRFJqczdRVUZGUkN4WFFVRlBMRWxCUVVrc1EwRkJRenRIUVVOaU96dEJRVVZFTEUxQlFVa3NSVUZCUlN4RFFVRkRPenRCUVVWUUxGTkJRVThzUlVGQlJTeHBRa0ZCVXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRMnhETEZGQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0pDTEZGQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMnhDTEZGQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMjVDTEZGQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wRkJRM1pDTEZGQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF6dEJRVU42UXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTTdPMEZCUldwRExGZEJRVThzUTBGQlF5eFhRVUZYTEVkQlFVY3NUMEZCVHl4RFFVRkRMRmRCUVZjc1NVRkJTU3hGUVVGRkxFTkJRVU03TzBGQlJXaEVMRmRCUVU4c1EwRkJReXhaUVVGWkxFZEJRVWNzWTBGRGNrSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGRGJrSTdRVUZEUlN4dFFrRkJZU3hGUVVGRkxFbEJRVWs3UVVGRGJrSXNkMEpCUVd0Q0xFVkJRVVVzU1VGQlNUdEJRVU40UWl4VlFVRkpMRVZCUVVVc1NVRkJTVHRCUVVOV0xGbEJRVWtzU1VGQlNUdEJRVU5TTEZsQlFVMHNSVUZCUlN4SlFVRkpPMEZCUTFvc1kwRkJUU3hKUVVGSk8wRkJRMVlzVTBGQlJ5eEZRVUZGTEVsQlFVazdRVUZEVkN4WlFVRk5MRVZCUVVVc1NVRkJTVHRMUVVOaUxFVkJRMFFzVDBGQlR5eERRVUZETEZsQlFWa3NRMEZEY2tJc1EwRkJRenM3UVVGRlJpeFhRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UjBGRE4wSTdPMEZCUlVRc1owSkJRV01zUlVGQlJTeDNRa0ZCVXl4UFFVRlBMRVZCUVVVN1FVRkRhRU1zVVVGQlNTeGhRVUZoTEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk96dEJRVU55UXl4VlFVRk5MRWRCUVVjc1lVRkJZU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVOeVJDeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE96dEJRVVZ5UWl4UlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVsQlFVa3NUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJRenM3UVVGRmRrUXNVVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZETjBJc1VVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU03TzBGQlJYQkVMRmRCUVU4c1NVRkJTU3hEUVVGRE8wZEJRMkk3TzBGQlJVUXNVVUZCVFN4RlFVRkZMR2RDUVVGVExFbEJRVWtzUlVGQlJUczdRVUZGY2tJc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkRjRUlzV1VGQlRTd3lRa0ZCWXl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM3BFT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpsQ0xGRkJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEYUVNc1VVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0QlFVTjRRaXhYUVVGUExFZEJRVWNzUTBGQlF6dEhRVU5hT3p0QlFVVkVMRk5CUVU4c1JVRkJSU3hwUWtGQlV5eFBRVUZQTEVWQlFVVTdRVUZEZWtJc1VVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6czdRVUZGZEVRc1VVRkJTU3hKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETEVsQlFVazdVVUZEY2tJc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZETTBJc1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU51UXl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNSQ096dEJRVVZFTEZGQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZET3p0QlFVVnFReXhSUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEZWQlFWVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRha01zVVVGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4UFFVRlBMRU5CUVVNc1YwRkJWeXhIUVVGSExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenM3UVVGRmVFVXNWMEZCVHl4SlFVRkpMRU5CUVVNN1IwRkRZanM3UVVGRlJDeG5Ra0ZCWXl4RlFVRkZMSGRDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU01UWl3d1FrRkJjMElzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZPVUlzVVVGQlNTeFBRVUZQTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTlCUVU4N1VVRkRla0lzVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNN08wRkJSVEZDTEZkQlFVOHNSMEZCUnl4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTnNSQ3hYUVVGUExFZEJRVWNzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03TzBGQlJXeEVMRkZCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSWEpETEZGQlFVa3NTVUZCU1N4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVOeVFpeFZRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hQUVVGUExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZETTBNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUzBGQlN5eFJRVUZSTEVWQlFVVTdRVUZETlVJc1ZVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN096dEJRVWw0UWl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTndReXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wRkJRM3BDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1MwRkRhRVFzVFVGQlRUdEJRVU5NTEZWQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXpzN096dEJRVWszUXl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTndReXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wRkJRM3BDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXp0TFFVTndRenM3UVVGRlJDeFJRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wZEJRM1pDT3p0QlFVVkVMR2RDUVVGakxFVkJRVUVzZDBKQlFVTXNVMEZCVXl4RlFVRkZPMEZCUTNoQ0xGRkJRVWtzVDBGQlR5eEhRVUZITEZOQlFWTXNRMEZCUXl4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRNVVVzVVVGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMSFZDUVVGMVFpeERRVUZETEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1UwRkJVeXhEUVVGRE8xRkJRM1JGTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRE96dEJRVVY0UWl4UlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU14UWl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHMUNRVUZ0UWl4RlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMGRCUTJoRk96dEJRVVZFTEd0Q1FVRm5RaXhGUVVGRkxEQkNRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTnNReXhSUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXpzN1FVRkZka0lzVVVGQlNTeFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJRenRCUVVNNVFpeFJRVUZKTEU5QlFVOHNSVUZCUlR0QlFVTllMR0ZCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOb1JEczdRVUZGUkN4UlFVRkpMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlF6VkNMRkZCUVVrc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZEY2tJc1dVRkJUU3d5UWtGRFNpd3lRMEZCTWtNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVU16UkN4UFFVRlBMRU5CUTFJc1EwRkJRenRMUVVOSUxFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRla0lzVlVGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMSE5DUVVGelFpeEZRVUZGTzBGQlEzWkRMRmxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWVVGQllTeEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMDlCUTNwRExFMUJRVTA3UVVGRFRDeGpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxHZENRVUZuUWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1QwRkRPVVE3UzBGRFJqczdRVUZGUkN4UlFVRkpMRmRCUVZjc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRTdVVUZEY2tNc1UwRkJVeXhIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMR1ZCUVdVc1EwRkJRenRCUVVOd1JDeFJRVUZKTEZOQlFWTXNSVUZCUlR0QlFVTmlMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpOQ096dEJRVVZFTEZGQlFVa3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6czdRVUZGYUVVc1VVRkJTU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVNN1FVRkRiRU1zVVVGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1NVRkJTU3hOUVVGTkxFVkJRVVU3UVVGRGVFTXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhsUVVGbExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEY2tNc1dVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dExRVU5pT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWlVGQlpTeEZRVUZGTEZOQlFWTXNSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRE4wUXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEhRVU4yUWp0QlFVTkVMSFZDUVVGeFFpeEZRVUZGTEN0Q1FVRlRMRmxCUVZrc1JVRkJSVHRCUVVNMVF5eFJRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdSMEZEY2tNN08wRkJSVVFzYlVKQlFXbENMRVZCUVVVc01rSkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEzQkRMRkZCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdPMEZCUlRkQ0xGRkJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlF6bERMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdTMEZET1VJc1RVRkJUVHRCUVVOTUxGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1MwRkRka0k3UjBGRFJqdEJRVU5FTEZkQlFWTXNSVUZCUVN4dFFrRkJReXhUUVVGVExFVkJRVVU3UVVGRGJrSXNVVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dEhRVU5vUXpzN1FVRkZSQ3hyUWtGQlowSXNSVUZCUlN3d1FrRkJVeXhQUVVGUExFVkJRVVU3UVVGRGJFTXNVVUZCU1N4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRk8wRkJRMnBDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1pVRkJaU3hGUVVGRkxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTTNRenRIUVVOR096dEJRVVZFTEd0Q1FVRm5RaXhGUVVGRkxEUkNRVUZYTEVWQlFVVTdPMEZCUlM5Q0xHVkJRV0VzUlVGQlJTeDFRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkROMElzTUVKQlFYTkNMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRE9VSXNVVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZja01zVVVGQlNTeEpRVUZKTEV0QlFVc3NVVUZCVVN4RlFVRkZPMEZCUTNKQ0xGVkJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRla0lzVFVGQlRTeEpRVUZKTEVsQlFVa3NTMEZCU3l4UlFVRlJMRVZCUVVVN1FVRkROVUlzVlVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVONlFpeE5RVUZOTzBGQlEwd3NWVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dExRVU0xUWp0SFFVTkdPMEZCUTBRc1owSkJRV01zUlVGQlJTeDNRa0ZCVXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU5vUkN4UlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNUdFJRVU51UWl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VJc1QwRkJUeXhIUVVGSExFOUJRVThzU1VGQlNTeEpRVUZKTEVsQlFVa3NUMEZCVHl4SlFVRkpMRWxCUVVrc1EwRkJRenM3UVVGRkwwTXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWMFF5eFJRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU53UXl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1FVRkZjRU1zVVVGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRia0lzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmJFSXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UjBGREwwTTdPMEZCUlVRc1lVRkJWeXhGUVVGRkxIRkNRVUZUTEV0QlFVc3NSVUZCUlR0QlFVTXpRaXhSUVVGSkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUTNSQ0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTI1Q0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRiRUlzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzBkQlEzUkRPenRCUVVWRUxHRkJRVmNzUlVGQlJTeHhRa0ZCVXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU0zUXl4UlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTTdVVUZEYUVVc1NVRkJTU3hIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTzFGQlEycENMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPenRCUVVWMlFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTzBGQlEyNURMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTjJSQ3hOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4blFrRkJaMElzUlVGQlJUdEJRVU40UXl4WlFVRk5MREpDUVVOS0xEaEVRVUU0UkN4SFFVRkhMRWxCUVVrc1JVRkRja1VzUzBGQlN5eERRVU5PTEVOQlFVTTdTMEZEU0N4TlFVRk5PMEZCUTB3c1ZVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEYmtJc1ZVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdPMEZCUld4Q0xGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRiRUlzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZEVkN4alFVRmpMRVZCUTJRc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGRFlpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVTmlMR2xDUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUXpOQ0xFTkJRVU03UzBGRFNEdEhRVU5HT3p0QlFVVkVMR2RDUVVGakxFVkJRVVVzZDBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUXpkQ0xGRkJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRekZDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZkRU1zVVVGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGRFSXNUVUZCVFN4SFFVRkhMR2xDUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRPMUZCUTI1RExGbEJRVmtzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmRFVXNVVUZCU1N4WlFVRlpMRVZCUVVVN1FVRkRhRUlzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4clFrRkJhMElzUlVGQlJTeFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wdEJRek5FTEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHM3UVVGRmFFSXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dExRVU0xUWl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU53UWl4VlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEZWtJc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRMUVVOb1JTeE5RVUZOTzBGQlEwd3NWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkRWQ3hwUWtGQmFVSXNSVUZEYWtJc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGRFZpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVTldMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRMWdzVFVGQlRTeERRVU5RTEVOQlFVTTdTMEZEU0R0SFFVTkdPenRCUVVWRUxHVkJRV0VzUlVGQlJTeDFRa0ZCVXl4TlFVRk5MRVZCUVVVN1FVRkRPVUlzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WlFVRlpMRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBkQlEzcERPenRCUVVWRUxHVkJRV0VzUlVGQlJTeDFRa0ZCVXl4TlFVRk5MRVZCUVVVN1FVRkRPVUlzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBkQlF6RkRPenRCUVVWRUxHZENRVUZqTEVWQlFVVXNkMEpCUVZNc1NVRkJTU3hGUVVGRk8wRkJRemRDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1lVRkJZU3hGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0SFFVTjRRenM3UVVGRlJDeHJRa0ZCWjBJc1JVRkJSU3cwUWtGQlZ6dEJRVU16UWl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0SFFVTjZRenM3UVVGRlJDeGhRVUZYTEVWQlFVVXNkVUpCUVZjN1FVRkRkRUlzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UjBGRGNFTTdPMEZCUlVRc1RVRkJTU3hGUVVGRkxHTkJRVk1zU1VGQlNTeEZRVUZGTzBGQlEyNUNMRkZCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTzFGQlEzQkNMRU5CUVVNc1IwRkJSeXhEUVVGRE8xRkJRMHdzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN08wRkJSVzVDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03TzBGQlJYaENMRmRCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTnFRaXhWUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dExRVU5vUXp0QlFVTkVMRmRCUVU4c1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRFZpeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkRNME03UVVGRFJDeFJRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wZEJRM2hDT3pzN1FVRkhSQ3hSUVVGTkxFVkJRVVVzWjBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTNKQ0xGRkJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUTJoQ0xGbEJRVTBzUlVGQlJTeEpRVUZKTzBGQlExb3NWVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTVRaXhUUVVGSExFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSE8wdEJRelZDTEVOQlFVTXNRMEZCUXp0SFFVTktPenRCUVVWRUxGVkJRVkVzUlVGQlJTeHJRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRlRUlzVVVGQlNTeERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTldMR0ZCUVU4N1MwRkRVanM3UVVGRlJDeFJRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJRenRIUVVOMlFqczdRVUZGUkN4bFFVRmhMRVZCUVVVc2RVSkJRVk1zUzBGQlN5eEZRVUZGTzBGQlF6ZENMRkZCUVVrc1VVRkJVU3hIUVVGSExHbENRVUZKTEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVm9SQ3hSUVVGSkxGbEJRVmtzUjBGQlJ5eFJRVUZSTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdPenRCUVVrelJTeFJRVUZKTEZGQlFWRXNSMEZCUnl4RFFVRkRMRmxCUVZrc1NVRkJTU3hwUWtGQlNTeFBRVUZQTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdPenM3TzBGQlMzQkZMRkZCUVVrc1ZVRkJWU3hIUVVGSExFTkJRVU1zV1VGQldTeExRVUZMTEZGQlFWRXNTVUZCU1N4UlFVRlJMRU5CUVVFc1FVRkJReXhEUVVGRE96czdPMEZCU1hwRUxGRkJRVWtzVlVGQlZTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUXpOQ0xGVkJRVWtzUzBGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFZRVU0xUWl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF6dEJRVU42UWl4VlFVRkpMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zUzBGQlNTeERRVUZETEVWQlFVVTdRVUZET1VJc1owSkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdUMEZEYWtJc1RVRkJUU3hKUVVGSkxFOUJRVThzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSVHRCUVVOdVF5eHJRa0ZCVlN4SFFVRkhMRXRCUVVzc1EwRkJRenRQUVVOd1FqdExRVU5HT3p0QlFVVkVMRkZCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zWVVGQlR5eFJRVUZSTEVOQlFVTTdTMEZEYWtJc1RVRkJUU3hKUVVGSkxGVkJRVlVzUlVGQlJUdEJRVU55UWl4aFFVRlBMRmRCUVZjc1EwRkJRenRMUVVOd1FpeE5RVUZOTzBGQlEwd3NZVUZCVHl4UlFVRlJMRU5CUVVNN1MwRkRha0k3UjBGRFJqczdRVUZGUkN4WlFVRlZMRVZCUVVVc2IwSkJRVk1zVFVGQlRTeEZRVUZGTzBGQlF6TkNMRk5CUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkROME1zVlVGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU16UWp0SFFVTkdPenRCUVVWRUxGZEJRVk1zUlVGQlJTeHRRa0ZCVXl4SFFVRkhMRVZCUVVVN1FVRkRka0lzVVVGQlNTeExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1VVRkJVU3hKUVVGSkxFVkJRVVVzUTBGQlF6czdRVUZGTDBRc1VVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzBGQlEzSkNMRlZCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJUdEJRVU5xUWl4aFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eGpRVUZqTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UFFVTXZSRHM3UVVGRlJDeFZRVUZKTEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRZaXhaUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVNeFFqdEJRVU5FTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFZEJRVWNzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNVU1zVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE96dEJRVVZvUkN4VlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSkxFdEJRVXNzWlVGQlpTeEZRVUZGT3pzN1FVRkhhRU1zV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRQUVVOc1FqdExRVU5HTEUxQlFVMDdRVUZEVEN4VlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRGFrSXNXVUZCU1N4bFFVRmxMRmxCUVVFc1EwRkJRenRCUVVOd1FpeFpRVUZKTEVkQlFVY3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhwUWtGQlNTeFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTjZSQ3g1UWtGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNSRU8wRkJRMFFzV1VGQlNTeGxRVUZsTEVWQlFVVTdRVUZEYmtJc1kwRkJTU3hsUVVGbExFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTI1RUxHTkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RlFVRkZMRmxCUVZrc1JVRkJSU3hsUVVGbExFVkJRVVVzWlVGQlpTeERRVUZETEVOQlFVTTdVMEZEZGtVc1RVRkJUVHRCUVVOTUxHVkJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4SlFVRkpMRXRCUVVzc1EwRkJRenRCUVVNNVFpeGpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRha0lzYVVKQlFVc3NSMEZCUnl4TFFVRkxMRU5CUTFZc1QwRkJUeXhEUVVGRExHVkJRV1VzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZETlVJc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZEY0VJc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0WFFVTjRRanM3UVVGRlJDeGpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTNoRE8wOUJRMFk3UVVGRFJDeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRMnhDTzBkQlEwWTdPMEZCUlVRc2VVSkJRWFZDTEVWQlFVVXNhVU5CUVZNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNVMEZCVXl4RlFVRkZPMEZCUTNCRkxGRkJRVWtzVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRNVUlzVVVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenM3UVVGRmVFSXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEY0VNc1VVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN08wRkJSWEJETEZGQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSVHRCUVVOa0xGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM3BDTEUxQlFVMDdRVUZEVEN4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0TFFVTnlRenM3UVVGRlJDeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenRCUVVWRUxHbENRVUZsTEVWQlFVVXNlVUpCUVZNc1NVRkJTU3hGUVVGRk8wRkJRemxDTEZOQlEwVXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFVkJRM0JFTEV0QlFVc3NSMEZCUnl4SFFVRkhMRVZCUTFnc1MwRkJTeXhGUVVGRkxFVkJRMUE3UVVGRFFTeFZRVUZKTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTTdWVUZETDBNc1MwRkJTeXhIUVVGSExGZEJRVmNzU1VGQlNTeGxRVUZSTEZkQlFWY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOd1JDeFZRVUZKTEZkQlFWY3NTVUZCU1N4TFFVRkxMRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRemRDTEdWQlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VDBGRGRrSTdTMEZEUmp0SFFVTkdPME5CUTBZc1EwRkJRenM3UVVGRlN5eFRRVUZUTEZWQlFWVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFZEJRVWNzUlVGQlJUdEJRVU01UXl4TlFVTkZMRXRCUVVzc1NVRkJTU3hKUVVGSkxFbEJRMW9zVDBGQlR5eExRVUZMTEV0QlFVc3NVVUZCVVN4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzVTBGQlV5eEJRVUZETEVWQlEzWkVPMEZCUTBFc1ZVRkJUU3d5UWtGRFNpeG5Sa0ZCWjBZc1IwRkRPVVVzUzBGQlN5eERRVU5TTEVOQlFVTTdSMEZEU0RzN1FVRkZSQ3hUUVVGUExFZEJRVWNzVDBGQlR5eEpRVUZKTEVWQlFVVXNRMEZCUXp0QlFVTjRRaXhOUVVGSkxFVkJRVVVzVFVGQlRTeEpRVUZKTEU5QlFVOHNRMEZCUVN4QlFVRkRMRVZCUVVVN1FVRkRlRUlzVjBGQlR5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1IwRkRja0k3UVVGRFJDeE5RVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRiRUlzVjBGQlR5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1IwRkRNVUk3TzBGQlJVUXNUVUZCU1N4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRPMDFCUTJwRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUTNwRUxGTkJRVThzU1VGQlNTeEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wTkJRMjVGT3p0QlFVVk5MRk5CUVZNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVOHNSMEZCUnl4RlFVRkZPMDFCUVc1Q0xFOUJRVThzWjBKQlFWQXNUMEZCVHl4SFFVRkhMRVZCUVVVN08wRkJRM3BETEUxQlEwVXNTMEZCU3l4SlFVRkpMRWxCUVVrc1NVRkRXaXhQUVVGUExFdEJRVXNzUzBGQlN5eFJRVUZSTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1MwRkJTeXhUUVVGVExFRkJRVU1zUlVGRGRrUTdRVUZEUVN4VlFVRk5MREpDUVVOS0xEWkZRVUUyUlN4SFFVTXpSU3hMUVVGTExFTkJRMUlzUTBGQlF6dEhRVU5JT3p0QlFVVkVMRk5CUVU4c1IwRkJSeXhqUVVGUExFVkJRVVVzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTTVRaXhOUVVGSkxFVkJRVVVzVFVGQlRTeEpRVUZKTEU5QlFVOHNRMEZCUVN4QlFVRkRMRVZCUVVVN1FVRkRlRUlzVjBGQlR5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1IwRkRja0k3UVVGRFJDeE5RVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRiRUlzVjBGQlR5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1IwRkRNVUk3TzBGQlJVUXNUVUZCU1N4UlFVRlJMRmxCUVVFc1EwRkJRenM3UVVGRllpeFhRVUZUTEZsQlFWa3NSMEZCUnp0QlFVTjBRaXhSUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hQUVVGUExFTkJRVU03VVVGRGFrTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1QwRkJUeXhEUVVGRE8xRkJRM1JFTEZsQlFWa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkRha1FzVjBGQlZ5eEZRVU5ZTEU5QlFVOHNSVUZEVUN4VFFVRlRMRVZCUTFRc1NVRkJTU3hEUVVOTUxFTkJRVU03UVVGRFNpeFhRVUZQTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03UjBGRGJrTTdPenRCUVVkRUxGZEJRVk1zUjBGQlJ5eERRVUZETEU5QlFVOHNSVUZCUlN4WFFVRlhMRVZCUVVVN1FVRkRha01zVVVGQlNTeERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTmlMR05CUVZFc1IwRkJSeXhaUVVGWkxFVkJRVVVzUTBGQlF6dExRVU16UWp0QlFVTkVMRmRCUVU4c1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRE8wZEJRMnhFTzBGQlEwUXNTMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhWUVVGVExGbEJRVmtzUlVGQlJUdEJRVU5zUXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRMklzWTBGQlVTeEhRVUZITEZsQlFWa3NSVUZCUlN4RFFVRkRPMHRCUXpOQ08wRkJRMFFzVjBGQlR5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wZEJRM1JETEVOQlFVTTdRVUZEUml4TFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExGVkJRVk1zUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRMnhFTEZGQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRZaXhqUVVGUkxFZEJRVWNzV1VGQldTeEZRVUZGTEVOQlFVTTdTMEZETTBJN1FVRkRSQ3hYUVVGUExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hYUVVGWExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdSMEZEZEVRc1EwRkJRenRCUVVOR0xGTkJRVThzUjBGQlJ5eERRVUZETzBOQlExbzdPMEZCUlVRc1UwRkJVeXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlR0QlFVTjJRaXhOUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdRVUZEV0N4WFFVRlBMRWxCUVVrc1EwRkJRenRIUVVOaU96dEJRVVZFTEUxQlFVa3NaVUZCVVN4RFFVRkRMRU5CUVVNc1NVRkJTU3hsUVVGUkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU55UkN4VFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU5xUXl4VlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU14UWl4bFFVRlBMRXRCUVVzc1EwRkJRenRQUVVOa08wdEJRMFk3UVVGRFJDeFhRVUZQTEVsQlFVa3NRMEZCUXp0SFFVTmlPME5CUTBZN08wRkJSVVFzVTBGQlV5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRGNrTXNUVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEzSkNMRkZCUVVrc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTTdPenRCUVVkNlFpeFRRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhPMEZCUTFnc1ZVRkJTU3hGUVVGRkxHZENRVUZuUWp0QlFVTjBRaXhWUVVGSkxFVkJRVVVzUzBGQlN6dEJRVU5ZTEZkQlFVc3NSVUZCUlN4RFFVRkRPMEZCUTFJc1YwRkJTeXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRPVUlzWTBGQlVTeEZRVUZGTEU5QlFVOHNRMEZCUXl4UlFVRlJMRWRCUVVjc1JVRkJSVHRCUVVNdlFpeFRRVUZITEVWQlFVVXNUMEZCVHl4RFFVRkRMRWRCUVVjN1MwRkRha0lzUTBGQlF6dEhRVU5JTzBOQlEwWWlMQ0ptYVd4bElqb2lZMjl0Y0dsc1pYSXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCdVpYY3RZMkZ3SUNvdlhHNWNibWx0Y0c5eWRDQkZlR05sY0hScGIyNGdabkp2YlNBbkxpNHZaWGhqWlhCMGFXOXVKenRjYm1sdGNHOXlkQ0I3SUdselFYSnlZWGtzSUdsdVpHVjRUMllzSUdWNGRHVnVaQ0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0JCVTFRZ1puSnZiU0FuTGk5aGMzUW5PMXh1WEc1amIyNXpkQ0J6YkdsalpTQTlJRnRkTG5Oc2FXTmxPMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnUTI5dGNHbHNaWElvS1NCN2ZWeHVYRzR2THlCMGFHVWdabTkxYm1SSVpXeHdaWElnY21WbmFYTjBaWElnZDJsc2JDQmthWE5oYldKcFozVmhkR1VnYUdWc2NHVnlJR3h2YjJ0MWNDQm1jbTl0SUdacGJtUnBibWNnWVZ4dUx5OGdablZ1WTNScGIyNGdhVzRnWVNCamIyNTBaWGgwTGlCVWFHbHpJR2x6SUc1bFkyVnpjMkZ5ZVNCbWIzSWdiWFZ6ZEdGamFHVWdZMjl0Y0dGMGFXSnBiR2wwZVN3Z2QyaHBZMmhjYmk4dklISmxjWFZwY21WeklIUm9ZWFFnWTI5dWRHVjRkQ0JtZFc1amRHbHZibk1nYVc0Z1lteHZZMnR6SUdGeVpTQmxkbUZzZFdGMFpXUWdZbmtnWW14dlkydElaV3h3WlhKTmFYTnphVzVuTEZ4dUx5OGdZVzVrSUhSb1pXNGdjSEp2WTJWbFpDQmhjeUJwWmlCMGFHVWdjbVZ6ZFd4MGFXNW5JSFpoYkhWbElIZGhjeUJ3Y205MmFXUmxaQ0IwYnlCaWJHOWphMGhsYkhCbGNrMXBjM05wYm1jdVhHNWNia052YlhCcGJHVnlMbkJ5YjNSdmRIbHdaU0E5SUh0Y2JpQWdZMjl0Y0dsc1pYSTZJRU52YlhCcGJHVnlMRnh1WEc0Z0lHVnhkV0ZzY3pvZ1puVnVZM1JwYjI0b2IzUm9aWElwSUh0Y2JpQWdJQ0JzWlhRZ2JHVnVJRDBnZEdocGN5NXZjR052WkdWekxteGxibWQwYUR0Y2JpQWdJQ0JwWmlBb2IzUm9aWEl1YjNCamIyUmxjeTVzWlc1bmRHZ2dJVDA5SUd4bGJpa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRDQnZjR052WkdVZ1BTQjBhR2x6TG05d1kyOWtaWE5iYVYwc1hHNGdJQ0FnSUNBZ0lHOTBhR1Z5VDNCamIyUmxJRDBnYjNSb1pYSXViM0JqYjJSbGMxdHBYVHRjYmlBZ0lDQWdJR2xtSUNoY2JpQWdJQ0FnSUNBZ2IzQmpiMlJsTG05d1kyOWtaU0FoUFQwZ2IzUm9aWEpQY0dOdlpHVXViM0JqYjJSbElIeDhYRzRnSUNBZ0lDQWdJQ0ZoY21kRmNYVmhiSE1vYjNCamIyUmxMbUZ5WjNNc0lHOTBhR1Z5VDNCamIyUmxMbUZ5WjNNcFhHNGdJQ0FnSUNBcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZkbElHdHViM2NnZEdoaGRDQnNaVzVuZEdnZ2FYTWdkR2hsSUhOaGJXVWdZbVYwZDJWbGJpQjBhR1VnZEhkdklHRnljbUY1Y3lCaVpXTmhkWE5sSUhSb1pYa2dZWEpsSUdScGNtVmpkR3g1SUhScFpXUmNiaUFnSUNBdkx5QjBieUIwYUdVZ2IzQmpiMlJsSUdKbGFHRjJhVzl5SUdGaWIzWmxMbHh1SUNBZ0lHeGxiaUE5SUhSb2FYTXVZMmhwYkdSeVpXNHViR1Z1WjNSb08xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNiaUFnSUNBZ0lHbG1JQ2doZEdocGN5NWphR2xzWkhKbGJsdHBYUzVsY1hWaGJITW9iM1JvWlhJdVkyaHBiR1J5Wlc1YmFWMHBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlN4Y2JseHVJQ0JuZFdsa09pQXdMRnh1WEc0Z0lHTnZiWEJwYkdVNklHWjFibU4wYVc5dUtIQnliMmR5WVcwc0lHOXdkR2x2Ym5NcElIdGNiaUFnSUNCMGFHbHpMbk52ZFhKalpVNXZaR1VnUFNCYlhUdGNiaUFnSUNCMGFHbHpMbTl3WTI5a1pYTWdQU0JiWFR0Y2JpQWdJQ0IwYUdsekxtTm9hV3hrY21WdUlEMGdXMTA3WEc0Z0lDQWdkR2hwY3k1dmNIUnBiMjV6SUQwZ2IzQjBhVzl1Y3p0Y2JpQWdJQ0IwYUdsekxuTjBjbWx1WjFCaGNtRnRjeUE5SUc5d2RHbHZibk11YzNSeWFXNW5VR0Z5WVcxek8xeHVJQ0FnSUhSb2FYTXVkSEpoWTJ0SlpITWdQU0J2Y0hScGIyNXpMblJ5WVdOclNXUnpPMXh1WEc0Z0lDQWdiM0IwYVc5dWN5NWliRzlqYTFCaGNtRnRjeUE5SUc5d2RHbHZibk11WW14dlkydFFZWEpoYlhNZ2ZId2dXMTA3WEc1Y2JpQWdJQ0J2Y0hScGIyNXpMbXR1YjNkdVNHVnNjR1Z5Y3lBOUlHVjRkR1Z1WkNoY2JpQWdJQ0FnSUU5aWFtVmpkQzVqY21WaGRHVW9iblZzYkNrc1hHNGdJQ0FnSUNCN1hHNGdJQ0FnSUNBZ0lHaGxiSEJsY2sxcGMzTnBibWM2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJR0pzYjJOclNHVnNjR1Z5VFdsemMybHVaem9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdaV0ZqYURvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnYVdZNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUhWdWJHVnpjem9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdkMmwwYURvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnYkc5bk9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNCc2IyOXJkWEE2SUhSeWRXVmNiaUFnSUNBZ0lIMHNYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtdHViM2R1U0dWc2NHVnljMXh1SUNBZ0lDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVoWTJObGNIUW9jSEp2WjNKaGJTazdYRzRnSUgwc1hHNWNiaUFnWTI5dGNHbHNaVkJ5YjJkeVlXMDZJR1oxYm1OMGFXOXVLSEJ5YjJkeVlXMHBJSHRjYmlBZ0lDQnNaWFFnWTJocGJHUkRiMjF3YVd4bGNpQTlJRzVsZHlCMGFHbHpMbU52YlhCcGJHVnlLQ2tzSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFd4cGJtVWdibVYzTFdOaGNGeHVJQ0FnSUNBZ2NtVnpkV3gwSUQwZ1kyaHBiR1JEYjIxd2FXeGxjaTVqYjIxd2FXeGxLSEJ5YjJkeVlXMHNJSFJvYVhNdWIzQjBhVzl1Y3lrc1hHNGdJQ0FnSUNCbmRXbGtJRDBnZEdocGN5NW5kV2xrS3lzN1hHNWNiaUFnSUNCMGFHbHpMblZ6WlZCaGNuUnBZV3dnUFNCMGFHbHpMblZ6WlZCaGNuUnBZV3dnZkh3Z2NtVnpkV3gwTG5WelpWQmhjblJwWVd3N1hHNWNiaUFnSUNCMGFHbHpMbU5vYVd4a2NtVnVXMmQxYVdSZElEMGdjbVZ6ZFd4ME8xeHVJQ0FnSUhSb2FYTXVkWE5sUkdWd2RHaHpJRDBnZEdocGN5NTFjMlZFWlhCMGFITWdmSHdnY21WemRXeDBMblZ6WlVSbGNIUm9jenRjYmx4dUlDQWdJSEpsZEhWeWJpQm5kV2xrTzF4dUlDQjlMRnh1WEc0Z0lHRmpZMlZ3ZERvZ1puVnVZM1JwYjI0b2JtOWtaU2tnZTF4dUlDQWdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoME9pQlRZVzVwZEhrZ1kyOWtaU0FxTDF4dUlDQWdJR2xtSUNnaGRHaHBjMXR1YjJSbExuUjVjR1ZkS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZFZibXR1YjNkdUlIUjVjR1U2SUNjZ0t5QnViMlJsTG5SNWNHVXNJRzV2WkdVcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVjMjkxY21ObFRtOWtaUzUxYm5Ob2FXWjBLRzV2WkdVcE8xeHVJQ0FnSUd4bGRDQnlaWFFnUFNCMGFHbHpXMjV2WkdVdWRIbHdaVjBvYm05a1pTazdYRzRnSUNBZ2RHaHBjeTV6YjNWeVkyVk9iMlJsTG5Ob2FXWjBLQ2s3WEc0Z0lDQWdjbVYwZFhKdUlISmxkRHRjYmlBZ2ZTeGNibHh1SUNCUWNtOW5jbUZ0T2lCbWRXNWpkR2x2Ymlod2NtOW5jbUZ0S1NCN1hHNGdJQ0FnZEdocGN5NXZjSFJwYjI1ekxtSnNiMk5yVUdGeVlXMXpMblZ1YzJocFpuUW9jSEp2WjNKaGJTNWliRzlqYTFCaGNtRnRjeWs3WEc1Y2JpQWdJQ0JzWlhRZ1ltOWtlU0E5SUhCeWIyZHlZVzB1WW05a2VTeGNiaUFnSUNBZ0lHSnZaSGxNWlc1bmRHZ2dQU0JpYjJSNUxteGxibWQwYUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdKdlpIbE1aVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWhZMk5sY0hRb1ltOWtlVnRwWFNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXZjSFJwYjI1ekxtSnNiMk5yVUdGeVlXMXpMbk5vYVdaMEtDazdYRzVjYmlBZ0lDQjBhR2x6TG1selUybHRjR3hsSUQwZ1ltOWtlVXhsYm1kMGFDQTlQVDBnTVR0Y2JpQWdJQ0IwYUdsekxtSnNiMk5yVUdGeVlXMXpJRDBnY0hKdlozSmhiUzVpYkc5amExQmhjbUZ0Y3lBL0lIQnliMmR5WVcwdVlteHZZMnRRWVhKaGJYTXViR1Z1WjNSb0lEb2dNRHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlMRnh1WEc0Z0lFSnNiMk5yVTNSaGRHVnRaVzUwT2lCbWRXNWpkR2x2YmloaWJHOWpheWtnZTF4dUlDQWdJSFJ5WVc1elptOXliVXhwZEdWeVlXeFViMUJoZEdnb1lteHZZMnNwTzF4dVhHNGdJQ0FnYkdWMElIQnliMmR5WVcwZ1BTQmliRzlqYXk1d2NtOW5jbUZ0TEZ4dUlDQWdJQ0FnYVc1MlpYSnpaU0E5SUdKc2IyTnJMbWx1ZG1WeWMyVTdYRzVjYmlBZ0lDQndjbTluY21GdElEMGdjSEp2WjNKaGJTQW1KaUIwYUdsekxtTnZiWEJwYkdWUWNtOW5jbUZ0S0hCeWIyZHlZVzBwTzF4dUlDQWdJR2x1ZG1WeWMyVWdQU0JwYm5abGNuTmxJQ1ltSUhSb2FYTXVZMjl0Y0dsc1pWQnliMmR5WVcwb2FXNTJaWEp6WlNrN1hHNWNiaUFnSUNCc1pYUWdkSGx3WlNBOUlIUm9hWE11WTJ4aGMzTnBabmxUWlhod2NpaGliRzlqYXlrN1hHNWNiaUFnSUNCcFppQW9kSGx3WlNBOVBUMGdKMmhsYkhCbGNpY3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWFHVnNjR1Z5VTJWNGNISW9ZbXh2WTJzc0lIQnliMmR5WVcwc0lHbHVkbVZ5YzJVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0ozTnBiWEJzWlNjcElIdGNiaUFnSUNBZ0lIUm9hWE11YzJsdGNHeGxVMlY0Y0hJb1lteHZZMnNwTzF4dVhHNGdJQ0FnSUNBdkx5QnViM2NnZEdoaGRDQjBhR1VnYzJsdGNHeGxJRzExYzNSaFkyaGxJR2x6SUhKbGMyOXNkbVZrTENCM1pTQnVaV1ZrSUhSdlhHNGdJQ0FnSUNBdkx5QmxkbUZzZFdGMFpTQnBkQ0JpZVNCbGVHVmpkWFJwYm1jZ1lHSnNiMk5yU0dWc2NHVnlUV2x6YzJsdVoyQmNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1VISnZaM0poYlNjc0lIQnliMmR5WVcwcE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KM0IxYzJoUWNtOW5jbUZ0Snl3Z2FXNTJaWEp6WlNrN1hHNGdJQ0FnSUNCMGFHbHpMbTl3WTI5a1pTZ25aVzF3ZEhsSVlYTm9KeWs3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllteHZZMnRXWVd4MVpTY3NJR0pzYjJOckxuQmhkR2d1YjNKcFoybHVZV3dwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjBhR2x6TG1GdFltbG5kVzkxYzFObGVIQnlLR0pzYjJOckxDQndjbTluY21GdExDQnBiblpsY25ObEtUdGNibHh1SUNBZ0lDQWdMeThnYm05M0lIUm9ZWFFnZEdobElITnBiWEJzWlNCdGRYTjBZV05vWlNCcGN5QnlaWE52YkhabFpDd2dkMlVnYm1WbFpDQjBiMXh1SUNBZ0lDQWdMeThnWlhaaGJIVmhkR1VnYVhRZ1lua2daWGhsWTNWMGFXNW5JR0JpYkc5amEwaGxiSEJsY2sxcGMzTnBibWRnWEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRkJ5YjJkeVlXMG5MQ0J3Y205bmNtRnRLVHRjYmlBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9VSEp2WjNKaGJTY3NJR2x1ZG1WeWMyVXBPMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJWdGNIUjVTR0Z6YUNjcE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMkZ0WW1sbmRXOTFjMEpzYjJOclZtRnNkV1VuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllYQndaVzVrSnlrN1hHNGdJSDBzWEc1Y2JpQWdSR1ZqYjNKaGRHOXlRbXh2WTJzb1pHVmpiM0poZEc5eUtTQjdYRzRnSUNBZ2JHVjBJSEJ5YjJkeVlXMGdQU0JrWldOdmNtRjBiM0l1Y0hKdlozSmhiU0FtSmlCMGFHbHpMbU52YlhCcGJHVlFjbTluY21GdEtHUmxZMjl5WVhSdmNpNXdjbTluY21GdEtUdGNiaUFnSUNCc1pYUWdjR0Z5WVcxeklEMGdkR2hwY3k1elpYUjFjRVoxYkd4TmRYTjBZV05vWlZCaGNtRnRjeWhrWldOdmNtRjBiM0lzSUhCeWIyZHlZVzBzSUhWdVpHVm1hVzVsWkNrc1hHNGdJQ0FnSUNCd1lYUm9JRDBnWkdWamIzSmhkRzl5TG5CaGRHZzdYRzVjYmlBZ0lDQjBhR2x6TG5WelpVUmxZMjl5WVhSdmNuTWdQU0IwY25WbE8xeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHlaV2RwYzNSbGNrUmxZMjl5WVhSdmNpY3NJSEJoY21GdGN5NXNaVzVuZEdnc0lIQmhkR2d1YjNKcFoybHVZV3dwTzF4dUlDQjlMRnh1WEc0Z0lGQmhjblJwWVd4VGRHRjBaVzFsYm5RNklHWjFibU4wYVc5dUtIQmhjblJwWVd3cElIdGNiaUFnSUNCMGFHbHpMblZ6WlZCaGNuUnBZV3dnUFNCMGNuVmxPMXh1WEc0Z0lDQWdiR1YwSUhCeWIyZHlZVzBnUFNCd1lYSjBhV0ZzTG5CeWIyZHlZVzA3WEc0Z0lDQWdhV1lnS0hCeWIyZHlZVzBwSUh0Y2JpQWdJQ0FnSUhCeWIyZHlZVzBnUFNCMGFHbHpMbU52YlhCcGJHVlFjbTluY21GdEtIQmhjblJwWVd3dWNISnZaM0poYlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElIQmhjbUZ0Y3lBOUlIQmhjblJwWVd3dWNHRnlZVzF6TzF4dUlDQWdJR2xtSUNod1lYSmhiWE11YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpaGNiaUFnSUNBZ0lDQWdKMVZ1YzNWd2NHOXlkR1ZrSUc1MWJXSmxjaUJ2WmlCd1lYSjBhV0ZzSUdGeVozVnRaVzUwY3pvZ0p5QXJJSEJoY21GdGN5NXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lIQmhjblJwWVd4Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNnaGNHRnlZVzF6TG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11YjNCMGFXOXVjeTVsZUhCc2FXTnBkRkJoY25ScFlXeERiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9UR2wwWlhKaGJDY3NJQ2QxYm1SbFptbHVaV1FuS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhCaGNtRnRjeTV3ZFhOb0tIc2dkSGx3WlRvZ0oxQmhkR2hGZUhCeVpYTnphVzl1Snl3Z2NHRnlkSE02SUZ0ZExDQmtaWEIwYURvZ01DQjlLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnY0dGeWRHbGhiRTVoYldVZ1BTQndZWEowYVdGc0xtNWhiV1V1YjNKcFoybHVZV3dzWEc0Z0lDQWdJQ0JwYzBSNWJtRnRhV01nUFNCd1lYSjBhV0ZzTG01aGJXVXVkSGx3WlNBOVBUMGdKMU4xWWtWNGNISmxjM05wYjI0bk8xeHVJQ0FnSUdsbUlDaHBjMFI1Ym1GdGFXTXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVlXTmpaWEIwS0hCaGNuUnBZV3d1Ym1GdFpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTV6WlhSMWNFWjFiR3hOZFhOMFlXTm9aVkJoY21GdGN5aHdZWEowYVdGc0xDQndjbTluY21GdExDQjFibVJsWm1sdVpXUXNJSFJ5ZFdVcE8xeHVYRzRnSUNBZ2JHVjBJR2x1WkdWdWRDQTlJSEJoY25ScFlXd3VhVzVrWlc1MElIeDhJQ2NuTzF4dUlDQWdJR2xtSUNoMGFHbHpMbTl3ZEdsdmJuTXVjSEpsZG1WdWRFbHVaR1Z1ZENBbUppQnBibVJsYm5RcElIdGNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RoY0hCbGJtUkRiMjUwWlc1MEp5d2dhVzVrWlc1MEtUdGNiaUFnSUNBZ0lHbHVaR1Z1ZENBOUlDY25PMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RwYm5admEyVlFZWEowYVdGc0p5d2dhWE5FZVc1aGJXbGpMQ0J3WVhKMGFXRnNUbUZ0WlN3Z2FXNWtaVzUwS1R0Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllYQndaVzVrSnlrN1hHNGdJSDBzWEc0Z0lGQmhjblJwWVd4Q2JHOWphMU4wWVhSbGJXVnVkRG9nWm5WdVkzUnBiMjRvY0dGeWRHbGhiRUpzYjJOcktTQjdYRzRnSUNBZ2RHaHBjeTVRWVhKMGFXRnNVM1JoZEdWdFpXNTBLSEJoY25ScFlXeENiRzlqYXlrN1hHNGdJSDBzWEc1Y2JpQWdUWFZ6ZEdGamFHVlRkR0YwWlcxbGJuUTZJR1oxYm1OMGFXOXVLRzExYzNSaFkyaGxLU0I3WEc0Z0lDQWdkR2hwY3k1VGRXSkZlSEJ5WlhOemFXOXVLRzExYzNSaFkyaGxLVHRjYmx4dUlDQWdJR2xtSUNodGRYTjBZV05vWlM1bGMyTmhjR1ZrSUNZbUlDRjBhR2x6TG05d2RHbHZibk11Ym05RmMyTmhjR1VwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZGhjSEJsYm1SRmMyTmhjR1ZrSnlrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0NkaGNIQmxibVFuS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUVSbFkyOXlZWFJ2Y2loa1pXTnZjbUYwYjNJcElIdGNiaUFnSUNCMGFHbHpMa1JsWTI5eVlYUnZja0pzYjJOcktHUmxZMjl5WVhSdmNpazdYRzRnSUgwc1hHNWNiaUFnUTI5dWRHVnVkRk4wWVhSbGJXVnVkRG9nWm5WdVkzUnBiMjRvWTI5dWRHVnVkQ2tnZTF4dUlDQWdJR2xtSUNoamIyNTBaVzUwTG5aaGJIVmxLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllYQndaVzVrUTI5dWRHVnVkQ2NzSUdOdmJuUmxiblF1ZG1Gc2RXVXBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0JEYjIxdFpXNTBVM1JoZEdWdFpXNTBPaUJtZFc1amRHbHZiaWdwSUh0OUxGeHVYRzRnSUZOMVlrVjRjSEpsYzNOcGIyNDZJR1oxYm1OMGFXOXVLSE5sZUhCeUtTQjdYRzRnSUNBZ2RISmhibk5tYjNKdFRHbDBaWEpoYkZSdlVHRjBhQ2h6Wlhod2NpazdYRzRnSUNBZ2JHVjBJSFI1Y0dVZ1BTQjBhR2x6TG1Oc1lYTnphV1o1VTJWNGNISW9jMlY0Y0hJcE8xeHVYRzRnSUNBZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2R6YVcxd2JHVW5LU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTnBiWEJzWlZObGVIQnlLSE5sZUhCeUtUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1VnUFQwOUlDZG9aV3h3WlhJbktTQjdYRzRnSUNBZ0lDQjBhR2x6TG1obGJIQmxjbE5sZUhCeUtITmxlSEJ5S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1aGJXSnBaM1Z2ZFhOVFpYaHdjaWh6Wlhod2NpazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmhiV0pwWjNWdmRYTlRaWGh3Y2pvZ1puVnVZM1JwYjI0b2MyVjRjSElzSUhCeWIyZHlZVzBzSUdsdWRtVnljMlVwSUh0Y2JpQWdJQ0JzWlhRZ2NHRjBhQ0E5SUhObGVIQnlMbkJoZEdnc1hHNGdJQ0FnSUNCdVlXMWxJRDBnY0dGMGFDNXdZWEowYzFzd1hTeGNiaUFnSUNBZ0lHbHpRbXh2WTJzZ1BTQndjbTluY21GdElDRTlJRzUxYkd3Z2ZId2dhVzUyWlhKelpTQWhQU0J1ZFd4c08xeHVYRzRnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMmRsZEVOdmJuUmxlSFFuTENCd1lYUm9MbVJsY0hSb0tUdGNibHh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1VISnZaM0poYlNjc0lIQnliMmR5WVcwcE8xeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vVUhKdlozSmhiU2NzSUdsdWRtVnljMlVwTzF4dVhHNGdJQ0FnY0dGMGFDNXpkSEpwWTNRZ1BTQjBjblZsTzF4dUlDQWdJSFJvYVhNdVlXTmpaWEIwS0hCaGRHZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJsdWRtOXJaVUZ0WW1sbmRXOTFjeWNzSUc1aGJXVXNJR2x6UW14dlkyc3BPMXh1SUNCOUxGeHVYRzRnSUhOcGJYQnNaVk5sZUhCeU9pQm1kVzVqZEdsdmJpaHpaWGh3Y2lrZ2UxeHVJQ0FnSUd4bGRDQndZWFJvSUQwZ2MyVjRjSEl1Y0dGMGFEdGNiaUFnSUNCd1lYUm9Mbk4wY21samRDQTlJSFJ5ZFdVN1hHNGdJQ0FnZEdocGN5NWhZMk5sY0hRb2NHRjBhQ2s3WEc0Z0lDQWdkR2hwY3k1dmNHTnZaR1VvSjNKbGMyOXNkbVZRYjNOemFXSnNaVXhoYldKa1lTY3BPMXh1SUNCOUxGeHVYRzRnSUdobGJIQmxjbE5sZUhCeU9pQm1kVzVqZEdsdmJpaHpaWGh3Y2l3Z2NISnZaM0poYlN3Z2FXNTJaWEp6WlNrZ2UxeHVJQ0FnSUd4bGRDQndZWEpoYlhNZ1BTQjBhR2x6TG5ObGRIVndSblZzYkUxMWMzUmhZMmhsVUdGeVlXMXpLSE5sZUhCeUxDQndjbTluY21GdExDQnBiblpsY25ObEtTeGNiaUFnSUNBZ0lIQmhkR2dnUFNCelpYaHdjaTV3WVhSb0xGeHVJQ0FnSUNBZ2JtRnRaU0E5SUhCaGRHZ3VjR0Z5ZEhOYk1GMDdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXZjSFJwYjI1ekxtdHViM2R1U0dWc2NHVnljMXR1WVcxbFhTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJsdWRtOXJaVXR1YjNkdVNHVnNjR1Z5Snl3Z2NHRnlZVzF6TG14bGJtZDBhQ3dnYm1GdFpTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG05d2RHbHZibk11YTI1dmQyNUlaV3h3WlhKelQyNXNlU2tnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWNFkyVndkR2x2YmloY2JpQWdJQ0FnSUNBZ0oxbHZkU0J6Y0dWamFXWnBaV1FnYTI1dmQyNUlaV3h3WlhKelQyNXNlU3dnWW5WMElIVnpaV1FnZEdobElIVnVhMjV2ZDI0Z2FHVnNjR1Z5SUNjZ0t5QnVZVzFsTEZ4dUlDQWdJQ0FnSUNCelpYaHdjbHh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NHRjBhQzV6ZEhKcFkzUWdQU0IwY25WbE8xeHVJQ0FnSUNBZ2NHRjBhQzVtWVd4emVTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNBZ0lIUm9hWE11WVdOalpYQjBLSEJoZEdncE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9YRzRnSUNBZ0lDQWdJQ2RwYm5admEyVklaV3h3WlhJbkxGeHVJQ0FnSUNBZ0lDQndZWEpoYlhNdWJHVnVaM1JvTEZ4dUlDQWdJQ0FnSUNCd1lYUm9MbTl5YVdkcGJtRnNMRnh1SUNBZ0lDQWdJQ0JCVTFRdWFHVnNjR1Z5Y3k1emFXMXdiR1ZKWkNod1lYUm9LVnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnVUdGMGFFVjRjSEpsYzNOcGIyNDZJR1oxYm1OMGFXOXVLSEJoZEdncElIdGNiaUFnSUNCMGFHbHpMbUZrWkVSbGNIUm9LSEJoZEdndVpHVndkR2dwTzF4dUlDQWdJSFJvYVhNdWIzQmpiMlJsS0NkblpYUkRiMjUwWlhoMEp5d2djR0YwYUM1a1pYQjBhQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2JtRnRaU0E5SUhCaGRHZ3VjR0Z5ZEhOYk1GMHNYRzRnSUNBZ0lDQnpZMjl3WldRZ1BTQkJVMVF1YUdWc2NHVnljeTV6WTI5d1pXUkpaQ2h3WVhSb0tTeGNiaUFnSUNBZ0lHSnNiMk5yVUdGeVlXMUpaQ0E5SUNGd1lYUm9MbVJsY0hSb0lDWW1JQ0Z6WTI5d1pXUWdKaVlnZEdocGN5NWliRzlqYTFCaGNtRnRTVzVrWlhnb2JtRnRaU2s3WEc1Y2JpQWdJQ0JwWmlBb1lteHZZMnRRWVhKaGJVbGtLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmJHOXZhM1Z3UW14dlkydFFZWEpoYlNjc0lHSnNiMk5yVUdGeVlXMUpaQ3dnY0dGMGFDNXdZWEowY3lrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNnaGJtRnRaU2tnZTF4dUlDQWdJQ0FnTHk4Z1EyOXVkR1Y0ZENCeVpXWmxjbVZ1WTJVc0lHa3VaUzRnWUh0N1ptOXZJQzU5ZldBZ2IzSWdZSHQ3Wm05dklDNHVmWDFnWEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRU52Ym5SbGVIUW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEJoZEdndVpHRjBZU2tnZTF4dUlDQWdJQ0FnZEdocGN5NXZjSFJwYjI1ekxtUmhkR0VnUFNCMGNuVmxPMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJ4dmIydDFjRVJoZEdFbkxDQndZWFJvTG1SbGNIUm9MQ0J3WVhSb0xuQmhjblJ6TENCd1lYUm9Mbk4wY21samRDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtGeHVJQ0FnSUNBZ0lDQW5iRzl2YTNWd1QyNURiMjUwWlhoMEp5eGNiaUFnSUNBZ0lDQWdjR0YwYUM1d1lYSjBjeXhjYmlBZ0lDQWdJQ0FnY0dGMGFDNW1ZV3h6ZVN4Y2JpQWdJQ0FnSUNBZ2NHRjBhQzV6ZEhKcFkzUXNYRzRnSUNBZ0lDQWdJSE5qYjNCbFpGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdVM1J5YVc1blRHbDBaWEpoYkRvZ1puVnVZM1JwYjI0b2MzUnlhVzVuS1NCN1hHNGdJQ0FnZEdocGN5NXZjR052WkdVb0ozQjFjMmhUZEhKcGJtY25MQ0J6ZEhKcGJtY3VkbUZzZFdVcE8xeHVJQ0I5TEZ4dVhHNGdJRTUxYldKbGNreHBkR1Z5WVd3NklHWjFibU4wYVc5dUtHNTFiV0psY2lrZ2UxeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vVEdsMFpYSmhiQ2NzSUc1MWJXSmxjaTUyWVd4MVpTazdYRzRnSUgwc1hHNWNiaUFnUW05dmJHVmhia3hwZEdWeVlXdzZJR1oxYm1OMGFXOXVLR0p2YjJ3cElIdGNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUV4cGRHVnlZV3duTENCaWIyOXNMblpoYkhWbEtUdGNiaUFnZlN4Y2JseHVJQ0JWYm1SbFptbHVaV1JNYVhSbGNtRnNPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRXhwZEdWeVlXd25MQ0FuZFc1a1pXWnBibVZrSnlrN1hHNGdJSDBzWEc1Y2JpQWdUblZzYkV4cGRHVnlZV3c2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vVEdsMFpYSmhiQ2NzSUNkdWRXeHNKeWs3WEc0Z0lIMHNYRzVjYmlBZ1NHRnphRG9nWm5WdVkzUnBiMjRvYUdGemFDa2dlMXh1SUNBZ0lHeGxkQ0J3WVdseWN5QTlJR2hoYzJndWNHRnBjbk1zWEc0Z0lDQWdJQ0JwSUQwZ01DeGNiaUFnSUNBZ0lHd2dQU0J3WVdseWN5NXNaVzVuZEdnN1hHNWNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUVoaGMyZ25LVHRjYmx4dUlDQWdJR1p2Y2lBb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmhRWVhKaGJTaHdZV2x5YzF0cFhTNTJZV3gxWlNrN1hHNGdJQ0FnZlZ4dUlDQWdJSGRvYVd4bElDaHBMUzBwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZGhjM05wWjI1VWIwaGhjMmduTENCd1lXbHljMXRwWFM1clpYa3BPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jRzl3U0dGemFDY3BPMXh1SUNCOUxGeHVYRzRnSUM4dklFaEZURkJGVWxOY2JpQWdiM0JqYjJSbE9pQm1kVzVqZEdsdmJpaHVZVzFsS1NCN1hHNGdJQ0FnZEdocGN5NXZjR052WkdWekxuQjFjMmdvZTF4dUlDQWdJQ0FnYjNCamIyUmxPaUJ1WVcxbExGeHVJQ0FnSUNBZ1lYSm5jem9nYzJ4cFkyVXVZMkZzYkNoaGNtZDFiV1Z1ZEhNc0lERXBMRnh1SUNBZ0lDQWdiRzlqT2lCMGFHbHpMbk52ZFhKalpVNXZaR1ZiTUYwdWJHOWpYRzRnSUNBZ2ZTazdYRzRnSUgwc1hHNWNiaUFnWVdSa1JHVndkR2c2SUdaMWJtTjBhVzl1S0dSbGNIUm9LU0I3WEc0Z0lDQWdhV1lnS0NGa1pYQjBhQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11ZFhObFJHVndkR2h6SUQwZ2RISjFaVHRjYmlBZ2ZTeGNibHh1SUNCamJHRnpjMmxtZVZObGVIQnlPaUJtZFc1amRHbHZiaWh6Wlhod2Npa2dlMXh1SUNBZ0lHeGxkQ0JwYzFOcGJYQnNaU0E5SUVGVFZDNW9aV3h3WlhKekxuTnBiWEJzWlVsa0tITmxlSEJ5TG5CaGRHZ3BPMXh1WEc0Z0lDQWdiR1YwSUdselFteHZZMnRRWVhKaGJTQTlJR2x6VTJsdGNHeGxJQ1ltSUNFaGRHaHBjeTVpYkc5amExQmhjbUZ0U1c1a1pYZ29jMlY0Y0hJdWNHRjBhQzV3WVhKMGMxc3dYU2s3WEc1Y2JpQWdJQ0F2THlCaElHMTFjM1JoWTJobElHbHpJR0Z1SUdWc2FXZHBZbXhsSUdobGJIQmxjaUJwWmpwY2JpQWdJQ0F2THlBcUlHbDBjeUJwWkNCcGN5QnphVzF3YkdVZ0tHRWdjMmx1WjJ4bElIQmhjblFzSUc1dmRDQmdkR2hwYzJBZ2IzSWdZQzR1WUNsY2JpQWdJQ0JzWlhRZ2FYTklaV3h3WlhJZ1BTQWhhWE5DYkc5amExQmhjbUZ0SUNZbUlFRlRWQzVvWld4d1pYSnpMbWhsYkhCbGNrVjRjSEpsYzNOcGIyNG9jMlY0Y0hJcE8xeHVYRzRnSUNBZ0x5OGdhV1lnWVNCdGRYTjBZV05vWlNCcGN5QmhiaUJsYkdsbmFXSnNaU0JvWld4d1pYSWdZblYwSUc1dmRDQmhJR1JsWm1sdWFYUmxYRzRnSUNBZ0x5OGdhR1ZzY0dWeUxDQnBkQ0JwY3lCaGJXSnBaM1Z2ZFhNc0lHRnVaQ0IzYVd4c0lHSmxJSEpsYzI5c2RtVmtJR2x1SUdFZ2JHRjBaWEpjYmlBZ0lDQXZMeUJ3WVhOeklHOXlJR0YwSUhKMWJuUnBiV1V1WEc0Z0lDQWdiR1YwSUdselJXeHBaMmxpYkdVZ1BTQWhhWE5DYkc5amExQmhjbUZ0SUNZbUlDaHBjMGhsYkhCbGNpQjhmQ0JwYzFOcGJYQnNaU2s3WEc1Y2JpQWdJQ0F2THlCcFppQmhiV0pwWjNWdmRYTXNJSGRsSUdOaGJpQndiM056YVdKc2VTQnlaWE52YkhabElIUm9aU0JoYldKcFozVnBkSGtnYm05M1hHNGdJQ0FnTHk4Z1FXNGdaV3hwWjJsaWJHVWdhR1ZzY0dWeUlHbHpJRzl1WlNCMGFHRjBJR1J2WlhNZ2JtOTBJR2hoZG1VZ1lTQmpiMjF3YkdWNElIQmhkR2dzSUdrdVpTNGdZSFJvYVhNdVptOXZZQ3dnWUM0dUwyWnZiMkFnWlhSakxseHVJQ0FnSUdsbUlDaHBjMFZzYVdkcFlteGxJQ1ltSUNGcGMwaGxiSEJsY2lrZ2UxeHVJQ0FnSUNBZ2JHVjBJRzVoYldVZ1BTQnpaWGh3Y2k1d1lYUm9MbkJoY25Seld6QmRMRnh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpJRDBnZEdocGN5NXZjSFJwYjI1ek8xeHVJQ0FnSUNBZ2FXWWdLRzl3ZEdsdmJuTXVhMjV2ZDI1SVpXeHdaWEp6VzI1aGJXVmRLU0I3WEc0Z0lDQWdJQ0FnSUdselNHVnNjR1Z5SUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvYjNCMGFXOXVjeTVyYm05M2JraGxiSEJsY25OUGJteDVLU0I3WEc0Z0lDQWdJQ0FnSUdselJXeHBaMmxpYkdVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2FYTklaV3h3WlhJcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBbmFHVnNjR1Z5Snp0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0dselJXeHBaMmxpYkdVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBbllXMWlhV2QxYjNWekp6dGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2R6YVcxd2JHVW5PMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0J3ZFhOb1VHRnlZVzF6T2lCbWRXNWpkR2x2Ymlod1lYSmhiWE1wSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diQ0E5SUhCaGNtRnRjeTVzWlc1bmRHZzdJR2tnUENCc095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUZCaGNtRnRLSEJoY21GdGMxdHBYU2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUhCMWMyaFFZWEpoYlRvZ1puVnVZM1JwYjI0b2RtRnNLU0I3WEc0Z0lDQWdiR1YwSUhaaGJIVmxJRDBnZG1Gc0xuWmhiSFZsSUNFOUlHNTFiR3dnUHlCMllXd3VkbUZzZFdVZ09pQjJZV3d1YjNKcFoybHVZV3dnZkh3Z0p5YzdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXpkSEpwYm1kUVlYSmhiWE1wSUh0Y2JpQWdJQ0FnSUdsbUlDaDJZV3gxWlM1eVpYQnNZV05sS1NCN1hHNGdJQ0FnSUNBZ0lIWmhiSFZsSUQwZ2RtRnNkV1V1Y21Wd2JHRmpaU2d2WGloY1hDNC9YRnd1WEZ3dktTb3ZaeXdnSnljcExuSmxjR3hoWTJVb0wxeGNMeTluTENBbkxpY3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2RtRnNMbVJsY0hSb0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVlXUmtSR1Z3ZEdnb2RtRnNMbVJsY0hSb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RuWlhSRGIyNTBaWGgwSnl3Z2RtRnNMbVJsY0hSb0lIeDhJREFwTzF4dUlDQWdJQ0FnZEdocGN5NXZjR052WkdVb0ozQjFjMmhUZEhKcGJtZFFZWEpoYlNjc0lIWmhiSFZsTENCMllXd3VkSGx3WlNrN1hHNWNiaUFnSUNBZ0lHbG1JQ2gyWVd3dWRIbHdaU0E5UFQwZ0oxTjFZa1Y0Y0hKbGMzTnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRk4xWWtWNGNISmxjM05wYjI1eklHZGxkQ0JsZG1Gc2RXRjBaV1FnWVc1a0lIQmhjM05sWkNCcGJseHVJQ0FnSUNBZ0lDQXZMeUJwYmlCemRISnBibWNnY0dGeVlXMXpJRzF2WkdVdVhHNGdJQ0FnSUNBZ0lIUm9hWE11WVdOalpYQjBLSFpoYkNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMblJ5WVdOclNXUnpLU0I3WEc0Z0lDQWdJQ0FnSUd4bGRDQmliRzlqYTFCaGNtRnRTVzVrWlhnN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gyWVd3dWNHRnlkSE1nSmlZZ0lVRlRWQzVvWld4d1pYSnpMbk5qYjNCbFpFbGtLSFpoYkNrZ0ppWWdJWFpoYkM1a1pYQjBhQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHSnNiMk5yVUdGeVlXMUpibVJsZUNBOUlIUm9hWE11WW14dlkydFFZWEpoYlVsdVpHVjRLSFpoYkM1d1lYSjBjMXN3WFNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0dKc2IyTnJVR0Z5WVcxSmJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHeGxkQ0JpYkc5amExQmhjbUZ0UTJocGJHUWdQU0IyWVd3dWNHRnlkSE11YzJ4cFkyVW9NU2t1YW05cGJpZ25MaWNwTzF4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1NXUW5MQ0FuUW14dlkydFFZWEpoYlNjc0lHSnNiMk5yVUdGeVlXMUpibVJsZUN3Z1lteHZZMnRRWVhKaGJVTm9hV3hrS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlIWmhiQzV2Y21sbmFXNWhiQ0I4ZkNCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9kbUZzZFdVdWNtVndiR0ZqWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVWdQU0IyWVd4MVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhuUm9hWE1vUHpwY1hDNThKQ2t2TENBbkp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xuSmxjR3hoWTJVb0wxNWNYQzVjWEM4dkxDQW5KeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMbkpsY0d4aFkyVW9MMTVjWEM0a0x5d2dKeWNwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vU1dRbkxDQjJZV3d1ZEhsd1pTd2dkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjBhR2x6TG1GalkyVndkQ2gyWVd3cE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQnpaWFIxY0VaMWJHeE5kWE4wWVdOb1pWQmhjbUZ0Y3pvZ1puVnVZM1JwYjI0b2MyVjRjSElzSUhCeWIyZHlZVzBzSUdsdWRtVnljMlVzSUc5dGFYUkZiWEIwZVNrZ2UxeHVJQ0FnSUd4bGRDQndZWEpoYlhNZ1BTQnpaWGh3Y2k1d1lYSmhiWE03WEc0Z0lDQWdkR2hwY3k1d2RYTm9VR0Z5WVcxektIQmhjbUZ0Y3lrN1hHNWNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUZCeWIyZHlZVzBuTENCd2NtOW5jbUZ0S1R0Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRkJ5YjJkeVlXMG5MQ0JwYm5abGNuTmxLVHRjYmx4dUlDQWdJR2xtSUNoelpYaHdjaTVvWVhOb0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG1GalkyVndkQ2h6Wlhod2NpNW9ZWE5vS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJWdGNIUjVTR0Z6YUNjc0lHOXRhWFJGYlhCMGVTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhCaGNtRnRjenRjYmlBZ2ZTeGNibHh1SUNCaWJHOWphMUJoY21GdFNXNWtaWGc2SUdaMWJtTjBhVzl1S0c1aGJXVXBJSHRjYmlBZ0lDQm1iM0lnS0Z4dUlDQWdJQ0FnYkdWMElHUmxjSFJvSUQwZ01Dd2diR1Z1SUQwZ2RHaHBjeTV2Y0hScGIyNXpMbUpzYjJOclVHRnlZVzF6TG14bGJtZDBhRHRjYmlBZ0lDQWdJR1JsY0hSb0lEd2diR1Z1TzF4dUlDQWdJQ0FnWkdWd2RHZ3JLMXh1SUNBZ0lDa2dlMXh1SUNBZ0lDQWdiR1YwSUdKc2IyTnJVR0Z5WVcxeklEMGdkR2hwY3k1dmNIUnBiMjV6TG1Kc2IyTnJVR0Z5WVcxelcyUmxjSFJvWFN4Y2JpQWdJQ0FnSUNBZ2NHRnlZVzBnUFNCaWJHOWphMUJoY21GdGN5QW1KaUJwYm1SbGVFOW1LR0pzYjJOclVHRnlZVzF6TENCdVlXMWxLVHRjYmlBZ0lDQWdJR2xtSUNoaWJHOWphMUJoY21GdGN5QW1KaUJ3WVhKaGJTQStQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYlpHVndkR2dzSUhCaGNtRnRYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ3Y21WamIyMXdhV3hsS0dsdWNIVjBMQ0J2Y0hScGIyNXpMQ0JsYm5ZcElIdGNiaUFnYVdZZ0tGeHVJQ0FnSUdsdWNIVjBJRDA5SUc1MWJHd2dmSHhjYmlBZ0lDQW9kSGx3Wlc5bUlHbHVjSFYwSUNFOVBTQW5jM1J5YVc1bkp5QW1KaUJwYm5CMWRDNTBlWEJsSUNFOVBTQW5VSEp2WjNKaGJTY3BYRzRnSUNrZ2UxeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b1hHNGdJQ0FnSUNBbldXOTFJRzExYzNRZ2NHRnpjeUJoSUhOMGNtbHVaeUJ2Y2lCSVlXNWtiR1ZpWVhKeklFRlRWQ0IwYnlCSVlXNWtiR1ZpWVhKekxuQnlaV052YlhCcGJHVXVJRmx2ZFNCd1lYTnpaV1FnSnlBclhHNGdJQ0FnSUNBZ0lHbHVjSFYwWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUc5d2RHbHZibk1nUFNCdmNIUnBiMjV6SUh4OElIdDlPMXh1SUNCcFppQW9JU2duWkdGMFlTY2dhVzRnYjNCMGFXOXVjeWtwSUh0Y2JpQWdJQ0J2Y0hScGIyNXpMbVJoZEdFZ1BTQjBjblZsTzF4dUlDQjlYRzRnSUdsbUlDaHZjSFJwYjI1ekxtTnZiWEJoZENrZ2UxeHVJQ0FnSUc5d2RHbHZibk11ZFhObFJHVndkR2h6SUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUd4bGRDQmhjM1FnUFNCbGJuWXVjR0Z5YzJVb2FXNXdkWFFzSUc5d2RHbHZibk1wTEZ4dUlDQWdJR1Z1ZG1seWIyNXRaVzUwSUQwZ2JtVjNJR1Z1ZGk1RGIyMXdhV3hsY2lncExtTnZiWEJwYkdVb1lYTjBMQ0J2Y0hScGIyNXpLVHRjYmlBZ2NtVjBkWEp1SUc1bGR5Qmxibll1U21GMllWTmpjbWx3ZEVOdmJYQnBiR1Z5S0NrdVkyOXRjR2xzWlNobGJuWnBjbTl1YldWdWRDd2diM0IwYVc5dWN5azdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIyMXdhV3hsS0dsdWNIVjBMQ0J2Y0hScGIyNXpJRDBnZTMwc0lHVnVkaWtnZTF4dUlDQnBaaUFvWEc0Z0lDQWdhVzV3ZFhRZ1BUMGdiblZzYkNCOGZGeHVJQ0FnSUNoMGVYQmxiMllnYVc1d2RYUWdJVDA5SUNkemRISnBibWNuSUNZbUlHbHVjSFYwTG5SNWNHVWdJVDA5SUNkUWNtOW5jbUZ0SnlsY2JpQWdLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWhjYmlBZ0lDQWdJQ2RaYjNVZ2JYVnpkQ0J3WVhOeklHRWdjM1J5YVc1bklHOXlJRWhoYm1Sc1pXSmhjbk1nUVZOVUlIUnZJRWhoYm1Sc1pXSmhjbk11WTI5dGNHbHNaUzRnV1c5MUlIQmhjM05sWkNBbklDdGNiaUFnSUNBZ0lDQWdhVzV3ZFhSY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ2IzQjBhVzl1Y3lBOUlHVjRkR1Z1WkNoN2ZTd2diM0IwYVc5dWN5azdYRzRnSUdsbUlDZ2hLQ2RrWVhSaEp5QnBiaUJ2Y0hScGIyNXpLU2tnZTF4dUlDQWdJRzl3ZEdsdmJuTXVaR0YwWVNBOUlIUnlkV1U3WEc0Z0lIMWNiaUFnYVdZZ0tHOXdkR2x2Ym5NdVkyOXRjR0YwS1NCN1hHNGdJQ0FnYjNCMGFXOXVjeTUxYzJWRVpYQjBhSE1nUFNCMGNuVmxPMXh1SUNCOVhHNWNiaUFnYkdWMElHTnZiWEJwYkdWa08xeHVYRzRnSUdaMWJtTjBhVzl1SUdOdmJYQnBiR1ZKYm5CMWRDZ3BJSHRjYmlBZ0lDQnNaWFFnWVhOMElEMGdaVzUyTG5CaGNuTmxLR2x1Y0hWMExDQnZjSFJwYjI1ektTeGNiaUFnSUNBZ0lHVnVkbWx5YjI1dFpXNTBJRDBnYm1WM0lHVnVkaTVEYjIxd2FXeGxjaWdwTG1OdmJYQnBiR1VvWVhOMExDQnZjSFJwYjI1ektTeGNiaUFnSUNBZ0lIUmxiWEJzWVhSbFUzQmxZeUE5SUc1bGR5Qmxibll1U21GMllWTmpjbWx3ZEVOdmJYQnBiR1Z5S0NrdVkyOXRjR2xzWlNoY2JpQWdJQ0FnSUNBZ1pXNTJhWEp2Ym0xbGJuUXNYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTXNYRzRnSUNBZ0lDQWdJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQWdJQ0FnZEhKMVpWeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCeVpYUjFjbTRnWlc1MkxuUmxiWEJzWVhSbEtIUmxiWEJzWVhSbFUzQmxZeWs3WEc0Z0lIMWNibHh1SUNBdkx5QlVaVzF3YkdGMFpTQnBjeUJ2Ym14NUlHTnZiWEJwYkdWa0lHOXVJR1pwY25OMElIVnpaU0JoYm1RZ1kyRmphR1ZrSUdGbWRHVnlJSFJvWVhRZ2NHOXBiblF1WEc0Z0lHWjFibU4wYVc5dUlISmxkQ2hqYjI1MFpYaDBMQ0JsZUdWalQzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdsbUlDZ2hZMjl0Y0dsc1pXUXBJSHRjYmlBZ0lDQWdJR052YlhCcGJHVmtJRDBnWTI5dGNHbHNaVWx1Y0hWMEtDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqYjIxd2FXeGxaQzVqWVd4c0tIUm9hWE1zSUdOdmJuUmxlSFFzSUdWNFpXTlBjSFJwYjI1ektUdGNiaUFnZlZ4dUlDQnlaWFF1WDNObGRIVndJRDBnWm5WdVkzUnBiMjRvYzJWMGRYQlBjSFJwYjI1ektTQjdYRzRnSUNBZ2FXWWdLQ0ZqYjIxd2FXeGxaQ2tnZTF4dUlDQWdJQ0FnWTI5dGNHbHNaV1FnUFNCamIyMXdhV3hsU1c1d2RYUW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmJYQnBiR1ZrTGw5elpYUjFjQ2h6WlhSMWNFOXdkR2x2Ym5NcE8xeHVJQ0I5TzF4dUlDQnlaWFF1WDJOb2FXeGtJRDBnWm5WdVkzUnBiMjRvYVN3Z1pHRjBZU3dnWW14dlkydFFZWEpoYlhNc0lHUmxjSFJvY3lrZ2UxeHVJQ0FnSUdsbUlDZ2hZMjl0Y0dsc1pXUXBJSHRjYmlBZ0lDQWdJR052YlhCcGJHVmtJRDBnWTI5dGNHbHNaVWx1Y0hWMEtDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqYjIxd2FXeGxaQzVmWTJocGJHUW9hU3dnWkdGMFlTd2dZbXh2WTJ0UVlYSmhiWE1zSUdSbGNIUm9jeWs3WEc0Z0lIMDdYRzRnSUhKbGRIVnliaUJ5WlhRN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdGeVowVnhkV0ZzY3loaExDQmlLU0I3WEc0Z0lHbG1JQ2hoSUQwOVBTQmlLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lIMWNibHh1SUNCcFppQW9hWE5CY25KaGVTaGhLU0FtSmlCcGMwRnljbUY1S0dJcElDWW1JR0V1YkdWdVozUm9JRDA5UFNCaUxteGxibWQwYUNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1lTNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZZ0tDRmhjbWRGY1hWaGJITW9ZVnRwWFN3Z1lsdHBYU2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUIwY21GdWMyWnZjbTFNYVhSbGNtRnNWRzlRWVhSb0tITmxlSEJ5S1NCN1hHNGdJR2xtSUNnaGMyVjRjSEl1Y0dGMGFDNXdZWEowY3lrZ2UxeHVJQ0FnSUd4bGRDQnNhWFJsY21Gc0lEMGdjMlY0Y0hJdWNHRjBhRHRjYmlBZ0lDQXZMeUJEWVhOMGFXNW5JSFJ2SUhOMGNtbHVaeUJvWlhKbElIUnZJRzFoYTJVZ1ptRnNjMlVnWVc1a0lEQWdiR2wwWlhKaGJDQjJZV3gxWlhNZ2NHeGhlU0J1YVdObGJIa2dkMmwwYUNCMGFHVWdjbVZ6ZEZ4dUlDQWdJQzh2SUc5bUlIUm9aU0J6ZVhOMFpXMHVYRzRnSUNBZ2MyVjRjSEl1Y0dGMGFDQTlJSHRjYmlBZ0lDQWdJSFI1Y0dVNklDZFFZWFJvUlhod2NtVnpjMmx2Ymljc1hHNGdJQ0FnSUNCa1lYUmhPaUJtWVd4elpTeGNiaUFnSUNBZ0lHUmxjSFJvT2lBd0xGeHVJQ0FnSUNBZ2NHRnlkSE02SUZ0c2FYUmxjbUZzTG05eWFXZHBibUZzSUNzZ0p5ZGRMRnh1SUNBZ0lDQWdiM0pwWjJsdVlXdzZJR3hwZEdWeVlXd3ViM0pwWjJsdVlXd2dLeUFuSnl4Y2JpQWdJQ0FnSUd4dll6b2diR2wwWlhKaGJDNXNiMk5jYmlBZ0lDQjlPMXh1SUNCOVhHNTlYRzRpWFgwPVxuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgaW50VG9DaGFyTWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLnNwbGl0KCcnKTtcblxuLyoqXG4gKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50VG9DaGFyTWFwW251bWJlcl07XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xufTtcblxuLyoqXG4gKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gKiBmYWlsdXJlLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICB2YXIgYmlnQSA9IDY1OyAgICAgLy8gJ0EnXG4gIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gIHZhciBsaXR0bGVaID0gMTIyOyAvLyAneidcblxuICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICB2YXIgcGx1cyA9IDQzOyAgICAgLy8gJysnXG4gIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gIHZhciBudW1iZXJPZmZzZXQgPSA1MjtcblxuICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gYmlnQSk7XG4gIH1cblxuICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICBpZiAobGl0dGxlQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBsaXR0bGVaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICB9XG5cbiAgLy8gNTIgLSA2MTogMDEyMzQ1Njc4OVxuICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICB9XG5cbiAgLy8gNjI6ICtcbiAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cblxuICAvLyA2MzogL1xuICBpZiAoY2hhckNvZGUgPT0gc2xhc2gpIHtcbiAgICByZXR1cm4gNjM7XG4gIH1cblxuICAvLyBJbnZhbGlkIGJhc2U2NCBkaWdpdC5cbiAgcmV0dXJuIC0xO1xufTtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGdldHRpbmcgdmFsdWVzIGZyb20gcGFyYW1ldGVyL29wdGlvbnNcbiAqIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIGFyZ3MgVGhlIG9iamVjdCB3ZSBhcmUgZXh0cmFjdGluZyB2YWx1ZXMgZnJvbVxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIGFyZSBnZXR0aW5nLlxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBBbiBvcHRpb25hbCB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmdcbiAqIGZyb20gdGhlIG9iamVjdC4gSWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgcHJvcGVydHkgaXMgbWlzc2luZywgYW5cbiAqIGVycm9yIHdpbGwgYmUgdGhyb3duLlxuICovXG5mdW5jdGlvbiBnZXRBcmcoYUFyZ3MsIGFOYW1lLCBhRGVmYXVsdFZhbHVlKSB7XG4gIGlmIChhTmFtZSBpbiBhQXJncykge1xuICAgIHJldHVybiBhQXJnc1thTmFtZV07XG4gIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgIHJldHVybiBhRGVmYXVsdFZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignXCInICsgYU5hbWUgKyAnXCIgaXMgYSByZXF1aXJlZCBhcmd1bWVudC4nKTtcbiAgfVxufVxuZXhwb3J0cy5nZXRBcmcgPSBnZXRBcmc7XG5cbnZhciB1cmxSZWdleHAgPSAvXig/OihbXFx3K1xcLS5dKyk6KT9cXC9cXC8oPzooXFx3KzpcXHcrKUApPyhbXFx3Li1dKikoPzo6KFxcZCspKT8oLiopJC87XG52YXIgZGF0YVVybFJlZ2V4cCA9IC9eZGF0YTouK1xcLC4rJC87XG5cbmZ1bmN0aW9uIHVybFBhcnNlKGFVcmwpIHtcbiAgdmFyIG1hdGNoID0gYVVybC5tYXRjaCh1cmxSZWdleHApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY2hlbWU6IG1hdGNoWzFdLFxuICAgIGF1dGg6IG1hdGNoWzJdLFxuICAgIGhvc3Q6IG1hdGNoWzNdLFxuICAgIHBvcnQ6IG1hdGNoWzRdLFxuICAgIHBhdGg6IG1hdGNoWzVdXG4gIH07XG59XG5leHBvcnRzLnVybFBhcnNlID0gdXJsUGFyc2U7XG5cbmZ1bmN0aW9uIHVybEdlbmVyYXRlKGFQYXJzZWRVcmwpIHtcbiAgdmFyIHVybCA9ICcnO1xuICBpZiAoYVBhcnNlZFVybC5zY2hlbWUpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5zY2hlbWUgKyAnOic7XG4gIH1cbiAgdXJsICs9ICcvLyc7XG4gIGlmIChhUGFyc2VkVXJsLmF1dGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5hdXRoICsgJ0AnO1xuICB9XG4gIGlmIChhUGFyc2VkVXJsLmhvc3QpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5ob3N0O1xuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBvcnQpIHtcbiAgICB1cmwgKz0gXCI6XCIgKyBhUGFyc2VkVXJsLnBvcnRcbiAgfVxuICBpZiAoYVBhcnNlZFVybC5wYXRoKSB7XG4gICAgdXJsICs9IGFQYXJzZWRVcmwucGF0aDtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuZXhwb3J0cy51cmxHZW5lcmF0ZSA9IHVybEdlbmVyYXRlO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXRoLCBvciB0aGUgcGF0aCBwb3J0aW9uIG9mIGEgVVJMOlxuICpcbiAqIC0gUmVwbGFjZXMgY29uc2VjdXRpdmUgc2xhc2hlcyB3aXRoIG9uZSBzbGFzaC5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnLicgcGFydHMuXG4gKiAtIFJlbW92ZXMgdW5uZWNlc3NhcnkgJzxkaXI+Ly4uJyBwYXJ0cy5cbiAqXG4gKiBCYXNlZCBvbiBjb2RlIGluIHRoZSBOb2RlLmpzICdwYXRoJyBjb3JlIG1vZHVsZS5cbiAqXG4gKiBAcGFyYW0gYVBhdGggVGhlIHBhdGggb3IgdXJsIHRvIG5vcm1hbGl6ZS5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplKGFQYXRoKSB7XG4gIHZhciBwYXRoID0gYVBhdGg7XG4gIHZhciB1cmwgPSB1cmxQYXJzZShhUGF0aCk7XG4gIGlmICh1cmwpIHtcbiAgICBpZiAoIXVybC5wYXRoKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuICAgIHBhdGggPSB1cmwucGF0aDtcbiAgfVxuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKTtcblxuICB2YXIgcGFydHMgPSBwYXRoLnNwbGl0KC9cXC8rLyk7XG4gIGZvciAodmFyIHBhcnQsIHVwID0gMCwgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgcGFydCA9IHBhcnRzW2ldO1xuICAgIGlmIChwYXJ0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCA+IDApIHtcbiAgICAgIGlmIChwYXJ0ID09PSAnJykge1xuICAgICAgICAvLyBUaGUgZmlyc3QgcGFydCBpcyBibGFuayBpZiB0aGUgcGF0aCBpcyBhYnNvbHV0ZS4gVHJ5aW5nIHRvIGdvXG4gICAgICAgIC8vIGFib3ZlIHRoZSByb290IGlzIGEgbm8tb3AuIFRoZXJlZm9yZSB3ZSBjYW4gcmVtb3ZlIGFsbCAnLi4nIHBhcnRzXG4gICAgICAgIC8vIGRpcmVjdGx5IGFmdGVyIHRoZSByb290LlxuICAgICAgICBwYXJ0cy5zcGxpY2UoaSArIDEsIHVwKTtcbiAgICAgICAgdXAgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMuc3BsaWNlKGksIDIpO1xuICAgICAgICB1cC0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwYXRoID0gcGFydHMuam9pbignLycpO1xuXG4gIGlmIChwYXRoID09PSAnJykge1xuICAgIHBhdGggPSBpc0Fic29sdXRlID8gJy8nIDogJy4nO1xuICB9XG5cbiAgaWYgKHVybCkge1xuICAgIHVybC5wYXRoID0gcGF0aDtcbiAgICByZXR1cm4gdXJsR2VuZXJhdGUodXJsKTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cbmV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuXG4vKipcbiAqIEpvaW5zIHR3byBwYXRocy9VUkxzLlxuICpcbiAqIEBwYXJhbSBhUm9vdCBUaGUgcm9vdCBwYXRoIG9yIFVSTC5cbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciBVUkwgdG8gYmUgam9pbmVkIHdpdGggdGhlIHJvb3QuXG4gKlxuICogLSBJZiBhUGF0aCBpcyBhIFVSTCBvciBhIGRhdGEgVVJJLCBhUGF0aCBpcyByZXR1cm5lZCwgdW5sZXNzIGFQYXRoIGlzIGFcbiAqICAgc2NoZW1lLXJlbGF0aXZlIFVSTDogVGhlbiB0aGUgc2NoZW1lIG9mIGFSb290LCBpZiBhbnksIGlzIHByZXBlbmRlZFxuICogICBmaXJzdC5cbiAqIC0gT3RoZXJ3aXNlIGFQYXRoIGlzIGEgcGF0aC4gSWYgYVJvb3QgaXMgYSBVUkwsIHRoZW4gaXRzIHBhdGggcG9ydGlvblxuICogICBpcyB1cGRhdGVkIHdpdGggdGhlIHJlc3VsdCBhbmQgYVJvb3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSB0aGUgcmVzdWx0XG4gKiAgIGlzIHJldHVybmVkLlxuICogICAtIElmIGFQYXRoIGlzIGFic29sdXRlLCB0aGUgcmVzdWx0IGlzIGFQYXRoLlxuICogICAtIE90aGVyd2lzZSB0aGUgdHdvIHBhdGhzIGFyZSBqb2luZWQgd2l0aCBhIHNsYXNoLlxuICogLSBKb2luaW5nIGZvciBleGFtcGxlICdodHRwOi8vJyBhbmQgJ3d3dy5leGFtcGxlLmNvbScgaXMgYWxzbyBzdXBwb3J0ZWQuXG4gKi9cbmZ1bmN0aW9uIGpvaW4oYVJvb3QsIGFQYXRoKSB7XG4gIGlmIChhUm9vdCA9PT0gXCJcIikge1xuICAgIGFSb290ID0gXCIuXCI7XG4gIH1cbiAgaWYgKGFQYXRoID09PSBcIlwiKSB7XG4gICAgYVBhdGggPSBcIi5cIjtcbiAgfVxuICB2YXIgYVBhdGhVcmwgPSB1cmxQYXJzZShhUGF0aCk7XG4gIHZhciBhUm9vdFVybCA9IHVybFBhcnNlKGFSb290KTtcbiAgaWYgKGFSb290VXJsKSB7XG4gICAgYVJvb3QgPSBhUm9vdFVybC5wYXRoIHx8ICcvJztcbiAgfVxuXG4gIC8vIGBqb2luKGZvbywgJy8vd3d3LmV4YW1wbGUub3JnJylgXG4gIGlmIChhUGF0aFVybCAmJiAhYVBhdGhVcmwuc2NoZW1lKSB7XG4gICAgaWYgKGFSb290VXJsKSB7XG4gICAgICBhUGF0aFVybC5zY2hlbWUgPSBhUm9vdFVybC5zY2hlbWU7XG4gICAgfVxuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUGF0aFVybCk7XG4gIH1cblxuICBpZiAoYVBhdGhVcmwgfHwgYVBhdGgubWF0Y2goZGF0YVVybFJlZ2V4cCkpIHtcbiAgICByZXR1cm4gYVBhdGg7XG4gIH1cblxuICAvLyBgam9pbignaHR0cDovLycsICd3d3cuZXhhbXBsZS5jb20nKWBcbiAgaWYgKGFSb290VXJsICYmICFhUm9vdFVybC5ob3N0ICYmICFhUm9vdFVybC5wYXRoKSB7XG4gICAgYVJvb3RVcmwuaG9zdCA9IGFQYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cblxuICB2YXIgam9pbmVkID0gYVBhdGguY2hhckF0KDApID09PSAnLydcbiAgICA/IGFQYXRoXG4gICAgOiBub3JtYWxpemUoYVJvb3QucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyBhUGF0aCk7XG5cbiAgaWYgKGFSb290VXJsKSB7XG4gICAgYVJvb3RVcmwucGF0aCA9IGpvaW5lZDtcbiAgICByZXR1cm4gdXJsR2VuZXJhdGUoYVJvb3RVcmwpO1xuICB9XG4gIHJldHVybiBqb2luZWQ7XG59XG5leHBvcnRzLmpvaW4gPSBqb2luO1xuXG5leHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbiAoYVBhdGgpIHtcbiAgcmV0dXJuIGFQYXRoLmNoYXJBdCgwKSA9PT0gJy8nIHx8IHVybFJlZ2V4cC50ZXN0KGFQYXRoKTtcbn07XG5cbi8qKlxuICogTWFrZSBhIHBhdGggcmVsYXRpdmUgdG8gYSBVUkwgb3IgYW5vdGhlciBwYXRoLlxuICpcbiAqIEBwYXJhbSBhUm9vdCBUaGUgcm9vdCBwYXRoIG9yIFVSTC5cbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciBVUkwgdG8gYmUgbWFkZSByZWxhdGl2ZSB0byBhUm9vdC5cbiAqL1xuZnVuY3Rpb24gcmVsYXRpdmUoYVJvb3QsIGFQYXRoKSB7XG4gIGlmIChhUm9vdCA9PT0gXCJcIikge1xuICAgIGFSb290ID0gXCIuXCI7XG4gIH1cblxuICBhUm9vdCA9IGFSb290LnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgZm9yIHRoZSBwYXRoIHRvIGJlIGFib3ZlIHRoZSByb290LiBJbiB0aGlzIGNhc2UsIHNpbXBseVxuICAvLyBjaGVja2luZyB3aGV0aGVyIHRoZSByb290IGlzIGEgcHJlZml4IG9mIHRoZSBwYXRoIHdvbid0IHdvcmsuIEluc3RlYWQsIHdlXG4gIC8vIG5lZWQgdG8gcmVtb3ZlIGNvbXBvbmVudHMgZnJvbSB0aGUgcm9vdCBvbmUgYnkgb25lLCB1bnRpbCBlaXRoZXIgd2UgZmluZFxuICAvLyBhIHByZWZpeCB0aGF0IGZpdHMsIG9yIHdlIHJ1biBvdXQgb2YgY29tcG9uZW50cyB0byByZW1vdmUuXG4gIHZhciBsZXZlbCA9IDA7XG4gIHdoaWxlIChhUGF0aC5pbmRleE9mKGFSb290ICsgJy8nKSAhPT0gMCkge1xuICAgIHZhciBpbmRleCA9IGFSb290Lmxhc3RJbmRleE9mKFwiL1wiKTtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG9ubHkgcGFydCBvZiB0aGUgcm9vdCB0aGF0IGlzIGxlZnQgaXMgdGhlIHNjaGVtZSAoaS5lLiBodHRwOi8vLFxuICAgIC8vIGZpbGU6Ly8vLCBldGMuKSwgb25lIG9yIG1vcmUgc2xhc2hlcyAoLyksIG9yIHNpbXBseSBub3RoaW5nIGF0IGFsbCwgd2VcbiAgICAvLyBoYXZlIGV4aGF1c3RlZCBhbGwgY29tcG9uZW50cywgc28gdGhlIHBhdGggaXMgbm90IHJlbGF0aXZlIHRvIHRoZSByb290LlxuICAgIGFSb290ID0gYVJvb3Quc2xpY2UoMCwgaW5kZXgpO1xuICAgIGlmIChhUm9vdC5tYXRjaCgvXihbXlxcL10rOlxcLyk/XFwvKiQvKSkge1xuICAgICAgcmV0dXJuIGFQYXRoO1xuICAgIH1cblxuICAgICsrbGV2ZWw7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgd2UgYWRkIGEgXCIuLi9cIiBmb3IgZWFjaCBjb21wb25lbnQgd2UgcmVtb3ZlZCBmcm9tIHRoZSByb290LlxuICByZXR1cm4gQXJyYXkobGV2ZWwgKyAxKS5qb2luKFwiLi4vXCIpICsgYVBhdGguc3Vic3RyKGFSb290Lmxlbmd0aCArIDEpO1xufVxuZXhwb3J0cy5yZWxhdGl2ZSA9IHJlbGF0aXZlO1xuXG52YXIgc3VwcG9ydHNOdWxsUHJvdG8gPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuICEoJ19fcHJvdG9fXycgaW4gb2JqKTtcbn0oKSk7XG5cbmZ1bmN0aW9uIGlkZW50aXR5IChzKSB7XG4gIHJldHVybiBzO1xufVxuXG4vKipcbiAqIEJlY2F1c2UgYmVoYXZpb3IgZ29lcyB3YWNreSB3aGVuIHlvdSBzZXQgYF9fcHJvdG9fX2Agb24gb2JqZWN0cywgd2VcbiAqIGhhdmUgdG8gcHJlZml4IGFsbCB0aGUgc3RyaW5ncyBpbiBvdXIgc2V0IHdpdGggYW4gYXJiaXRyYXJ5IGNoYXJhY3Rlci5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9wdWxsLzMxIGFuZFxuICogaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9pc3N1ZXMvMzBcbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuZnVuY3Rpb24gdG9TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiAnJCcgKyBhU3RyO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLnRvU2V0U3RyaW5nID0gc3VwcG9ydHNOdWxsUHJvdG8gPyBpZGVudGl0eSA6IHRvU2V0U3RyaW5nO1xuXG5mdW5jdGlvbiBmcm9tU2V0U3RyaW5nKGFTdHIpIHtcbiAgaWYgKGlzUHJvdG9TdHJpbmcoYVN0cikpIHtcbiAgICByZXR1cm4gYVN0ci5zbGljZSgxKTtcbiAgfVxuXG4gIHJldHVybiBhU3RyO1xufVxuZXhwb3J0cy5mcm9tU2V0U3RyaW5nID0gc3VwcG9ydHNOdWxsUHJvdG8gPyBpZGVudGl0eSA6IGZyb21TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGlzUHJvdG9TdHJpbmcocykge1xuICBpZiAoIXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgbGVuZ3RoID0gcy5sZW5ndGg7XG5cbiAgaWYgKGxlbmd0aCA8IDkgLyogXCJfX3Byb3RvX19cIi5sZW5ndGggKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAocy5jaGFyQ29kZUF0KGxlbmd0aCAtIDEpICE9PSA5NSAgLyogJ18nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMikgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAzKSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDQpICE9PSAxMTYgLyogJ3QnICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNSkgIT09IDExMSAvKiAnbycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA2KSAhPT0gMTE0IC8qICdyJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDcpICE9PSAxMTIgLyogJ3AnICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gOCkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA5KSAhPT0gOTUgIC8qICdfJyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSBsZW5ndGggLSAxMDsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAocy5jaGFyQ29kZUF0KGkpICE9PSAzNiAvKiAnJCcgKi8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDb21wYXJhdG9yIGJldHdlZW4gdHdvIG1hcHBpbmdzIHdoZXJlIHRoZSBvcmlnaW5hbCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgb3JpZ2luYWwgc291cmNlL2xpbmUvY29sdW1uLCBidXQgZGlmZmVyZW50IGdlbmVyYXRlZFxuICogbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGEgbWFwcGluZyB3aXRoIGFcbiAqIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICB2YXIgY21wID0gc3RyY21wKG1hcHBpbmdBLnNvdXJjZSwgbWFwcGluZ0Iuc291cmNlKTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbExpbmUgLSBtYXBwaW5nQi5vcmlnaW5hbExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxDb2x1bW4gLSBtYXBwaW5nQi5vcmlnaW5hbENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lIC0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICByZXR1cm4gc3RyY21wKG1hcHBpbmdBLm5hbWUsIG1hcHBpbmdCLm5hbWUpO1xufVxuZXhwb3J0cy5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyA9IGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zO1xuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiwgYnV0IGRpZmZlcmVudFxuICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkID0gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQ7XG5cbmZ1bmN0aW9uIHN0cmNtcChhU3RyMSwgYVN0cjIpIHtcbiAgaWYgKGFTdHIxID09PSBhU3RyMikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgaWYgKGFTdHIxID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDE7IC8vIGFTdHIyICE9PSBudWxsXG4gIH1cblxuICBpZiAoYVN0cjIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gLTE7IC8vIGFTdHIxICE9PSBudWxsXG4gIH1cblxuICBpZiAoYVN0cjEgPiBhU3RyMikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBpbmZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgc3RyaW5ncyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkID0gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQ7XG5cbi8qKlxuICogU3RyaXAgYW55IEpTT04gWFNTSSBhdm9pZGFuY2UgcHJlZml4IGZyb20gdGhlIHN0cmluZyAoYXMgZG9jdW1lbnRlZFxuICogaW4gdGhlIHNvdXJjZSBtYXBzIHNwZWNpZmljYXRpb24pLCBhbmQgdGhlbiBwYXJzZSB0aGUgc3RyaW5nIGFzXG4gKiBKU09OLlxuICovXG5mdW5jdGlvbiBwYXJzZVNvdXJjZU1hcElucHV0KHN0cikge1xuICByZXR1cm4gSlNPTi5wYXJzZShzdHIucmVwbGFjZSgvXlxcKV19J1teXFxuXSpcXG4vLCAnJykpO1xufVxuZXhwb3J0cy5wYXJzZVNvdXJjZU1hcElucHV0ID0gcGFyc2VTb3VyY2VNYXBJbnB1dDtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBVUkwgb2YgYSBzb3VyY2UgZ2l2ZW4gdGhlIHRoZSBzb3VyY2Ugcm9vdCwgdGhlIHNvdXJjZSdzXG4gKiBVUkwsIGFuZCB0aGUgc291cmNlIG1hcCdzIFVSTC5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVNvdXJjZVVSTChzb3VyY2VSb290LCBzb3VyY2VVUkwsIHNvdXJjZU1hcFVSTCkge1xuICBzb3VyY2VVUkwgPSBzb3VyY2VVUkwgfHwgJyc7XG5cbiAgaWYgKHNvdXJjZVJvb3QpIHtcbiAgICAvLyBUaGlzIGZvbGxvd3Mgd2hhdCBDaHJvbWUgZG9lcy5cbiAgICBpZiAoc291cmNlUm9vdFtzb3VyY2VSb290Lmxlbmd0aCAtIDFdICE9PSAnLycgJiYgc291cmNlVVJMWzBdICE9PSAnLycpIHtcbiAgICAgIHNvdXJjZVJvb3QgKz0gJy8nO1xuICAgIH1cbiAgICAvLyBUaGUgc3BlYyBzYXlzOlxuICAgIC8vICAgTGluZSA0OiBBbiBvcHRpb25hbCBzb3VyY2Ugcm9vdCwgdXNlZnVsIGZvciByZWxvY2F0aW5nIHNvdXJjZVxuICAgIC8vICAgZmlsZXMgb24gYSBzZXJ2ZXIgb3IgcmVtb3ZpbmcgcmVwZWF0ZWQgdmFsdWVzIGluIHRoZVxuICAgIC8vICAg4oCcc291cmNlc+KAnSBlbnRyeS4gIFRoaXMgdmFsdWUgaXMgcHJlcGVuZGVkIHRvIHRoZSBpbmRpdmlkdWFsXG4gICAgLy8gICBlbnRyaWVzIGluIHRoZSDigJxzb3VyY2XigJ0gZmllbGQuXG4gICAgc291cmNlVVJMID0gc291cmNlUm9vdCArIHNvdXJjZVVSTDtcbiAgfVxuXG4gIC8vIEhpc3RvcmljYWxseSwgU291cmNlTWFwQ29uc3VtZXIgZGlkIG5vdCB0YWtlIHRoZSBzb3VyY2VNYXBVUkwgYXNcbiAgLy8gYSBwYXJhbWV0ZXIuICBUaGlzIG1vZGUgaXMgc3RpbGwgc29tZXdoYXQgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHlcbiAgLy8gdGhpcyBjb2RlIGJsb2NrIGlzIGNvbmRpdGlvbmFsLiAgSG93ZXZlciwgaXQncyBwcmVmZXJhYmxlIHRvIHBhc3NcbiAgLy8gdGhlIHNvdXJjZSBtYXAgVVJMIHRvIFNvdXJjZU1hcENvbnN1bWVyLCBzbyB0aGF0IHRoaXMgZnVuY3Rpb25cbiAgLy8gY2FuIGltcGxlbWVudCB0aGUgc291cmNlIFVSTCByZXNvbHV0aW9uIGFsZ29yaXRobSBhcyBvdXRsaW5lZCBpblxuICAvLyB0aGUgc3BlYy4gIFRoaXMgYmxvY2sgaXMgYmFzaWNhbGx5IHRoZSBlcXVpdmFsZW50IG9mOlxuICAvLyAgICBuZXcgVVJMKHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKS50b1N0cmluZygpXG4gIC8vIC4uLiBleGNlcHQgaXQgYXZvaWRzIHVzaW5nIFVSTCwgd2hpY2ggd2Fzbid0IGF2YWlsYWJsZSBpbiB0aGVcbiAgLy8gb2xkZXIgcmVsZWFzZXMgb2Ygbm9kZSBzdGlsbCBzdXBwb3J0ZWQgYnkgdGhpcyBsaWJyYXJ5LlxuICAvL1xuICAvLyBUaGUgc3BlYyBzYXlzOlxuICAvLyAgIElmIHRoZSBzb3VyY2VzIGFyZSBub3QgYWJzb2x1dGUgVVJMcyBhZnRlciBwcmVwZW5kaW5nIG9mIHRoZVxuICAvLyAgIOKAnHNvdXJjZVJvb3TigJ0sIHRoZSBzb3VyY2VzIGFyZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGVcbiAgLy8gICBTb3VyY2VNYXAgKGxpa2UgcmVzb2x2aW5nIHNjcmlwdCBzcmMgaW4gYSBodG1sIGRvY3VtZW50KS5cbiAgaWYgKHNvdXJjZU1hcFVSTCkge1xuICAgIHZhciBwYXJzZWQgPSB1cmxQYXJzZShzb3VyY2VNYXBVUkwpO1xuICAgIGlmICghcGFyc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2VNYXBVUkwgY291bGQgbm90IGJlIHBhcnNlZFwiKTtcbiAgICB9XG4gICAgaWYgKHBhcnNlZC5wYXRoKSB7XG4gICAgICAvLyBTdHJpcCB0aGUgbGFzdCBwYXRoIGNvbXBvbmVudCwgYnV0IGtlZXAgdGhlIFwiL1wiLlxuICAgICAgdmFyIGluZGV4ID0gcGFyc2VkLnBhdGgubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHBhcnNlZC5wYXRoID0gcGFyc2VkLnBhdGguc3Vic3RyaW5nKDAsIGluZGV4ICsgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNvdXJjZVVSTCA9IGpvaW4odXJsR2VuZXJhdGUocGFyc2VkKSwgc291cmNlVVJMKTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemUoc291cmNlVVJMKTtcbn1cbmV4cG9ydHMuY29tcHV0ZVNvdXJjZVVSTCA9IGNvbXB1dGVTb3VyY2VVUkw7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBoYXNOYXRpdmVNYXAgPSB0eXBlb2YgTWFwICE9PSBcInVuZGVmaW5lZFwiO1xuXG4vKipcbiAqIEEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggaXMgYSBjb21iaW5hdGlvbiBvZiBhbiBhcnJheSBhbmQgYSBzZXQuIEFkZGluZyBhIG5ld1xuICogbWVtYmVyIGlzIE8oMSksIHRlc3RpbmcgZm9yIG1lbWJlcnNoaXAgaXMgTygxKSwgYW5kIGZpbmRpbmcgdGhlIGluZGV4IG9mIGFuXG4gKiBlbGVtZW50IGlzIE8oMSkuIFJlbW92aW5nIGVsZW1lbnRzIGZyb20gdGhlIHNldCBpcyBub3Qgc3VwcG9ydGVkLiBPbmx5XG4gKiBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQgZm9yIG1lbWJlcnNoaXAuXG4gKi9cbmZ1bmN0aW9uIEFycmF5U2V0KCkge1xuICB0aGlzLl9hcnJheSA9IFtdO1xuICB0aGlzLl9zZXQgPSBoYXNOYXRpdmVNYXAgPyBuZXcgTWFwKCkgOiBPYmplY3QuY3JlYXRlKG51bGwpO1xufVxuXG4vKipcbiAqIFN0YXRpYyBtZXRob2QgZm9yIGNyZWF0aW5nIEFycmF5U2V0IGluc3RhbmNlcyBmcm9tIGFuIGV4aXN0aW5nIGFycmF5LlxuICovXG5BcnJheVNldC5mcm9tQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF9mcm9tQXJyYXkoYUFycmF5LCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzZXQgPSBuZXcgQXJyYXlTZXQoKTtcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHNldC5hZGQoYUFycmF5W2ldLCBhQWxsb3dEdXBsaWNhdGVzKTtcbiAgfVxuICByZXR1cm4gc2V0O1xufTtcblxuLyoqXG4gKiBSZXR1cm4gaG93IG1hbnkgdW5pcXVlIGl0ZW1zIGFyZSBpbiB0aGlzIEFycmF5U2V0LiBJZiBkdXBsaWNhdGVzIGhhdmUgYmVlblxuICogYWRkZWQsIHRoYW4gdGhvc2UgZG8gbm90IGNvdW50IHRvd2FyZHMgdGhlIHNpemUuXG4gKlxuICogQHJldHVybnMgTnVtYmVyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gQXJyYXlTZXRfc2l6ZSgpIHtcbiAgcmV0dXJuIGhhc05hdGl2ZU1hcCA/IHRoaXMuX3NldC5zaXplIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5fc2V0KS5sZW5ndGg7XG59O1xuXG4vKipcbiAqIEFkZCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIHRoaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gQXJyYXlTZXRfYWRkKGFTdHIsIGFBbGxvd0R1cGxpY2F0ZXMpIHtcbiAgdmFyIHNTdHIgPSBoYXNOYXRpdmVNYXAgPyBhU3RyIDogdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgdmFyIGlzRHVwbGljYXRlID0gaGFzTmF0aXZlTWFwID8gdGhpcy5oYXMoYVN0cikgOiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB2YXIgaWR4ID0gdGhpcy5fYXJyYXkubGVuZ3RoO1xuICBpZiAoIWlzRHVwbGljYXRlIHx8IGFBbGxvd0R1cGxpY2F0ZXMpIHtcbiAgICB0aGlzLl9hcnJheS5wdXNoKGFTdHIpO1xuICB9XG4gIGlmICghaXNEdXBsaWNhdGUpIHtcbiAgICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgICB0aGlzLl9zZXQuc2V0KGFTdHIsIGlkeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldFtzU3RyXSA9IGlkeDtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSXMgdGhlIGdpdmVuIHN0cmluZyBhIG1lbWJlciBvZiB0aGlzIHNldD9cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIEFycmF5U2V0X2hhcyhhU3RyKSB7XG4gIGlmIChoYXNOYXRpdmVNYXApIHtcbiAgICByZXR1cm4gdGhpcy5fc2V0LmhhcyhhU3RyKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgc1N0ciA9IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gICAgcmV0dXJuIGhhcy5jYWxsKHRoaXMuX3NldCwgc1N0cik7XG4gIH1cbn07XG5cbi8qKlxuICogV2hhdCBpcyB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIHN0cmluZyBpbiB0aGUgYXJyYXk/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gQXJyYXlTZXRfaW5kZXhPZihhU3RyKSB7XG4gIGlmIChoYXNOYXRpdmVNYXApIHtcbiAgICB2YXIgaWR4ID0gdGhpcy5fc2V0LmdldChhU3RyKTtcbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgcmV0dXJuIGlkeDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIGlmIChoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0W3NTdHJdO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignXCInICsgYVN0ciArICdcIiBpcyBub3QgaW4gdGhlIHNldC4nKTtcbn07XG5cbi8qKlxuICogV2hhdCBpcyB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXg/XG4gKlxuICogQHBhcmFtIE51bWJlciBhSWR4XG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIEFycmF5U2V0X2F0KGFJZHgpIHtcbiAgaWYgKGFJZHggPj0gMCAmJiBhSWR4IDwgdGhpcy5fYXJyYXkubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5W2FJZHhdO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignTm8gZWxlbWVudCBpbmRleGVkIGJ5ICcgKyBhSWR4KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzZXQgKHdoaWNoIGhhcyB0aGUgcHJvcGVyIGluZGljZXNcbiAqIGluZGljYXRlZCBieSBpbmRleE9mKS4gTm90ZSB0aGF0IHRoaXMgaXMgYSBjb3B5IG9mIHRoZSBpbnRlcm5hbCBhcnJheSB1c2VkXG4gKiBmb3Igc3RvcmluZyB0aGUgbWVtYmVycyBzbyB0aGF0IG5vIG9uZSBjYW4gbWVzcyB3aXRoIGludGVybmFsIHN0YXRlLlxuICovXG5BcnJheVNldC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIEFycmF5U2V0X3RvQXJyYXkoKSB7XG4gIHJldHVybiB0aGlzLl9hcnJheS5zbGljZSgpO1xufTtcblxuZXhwb3J0cy5BcnJheVNldCA9IEFycmF5U2V0O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDE0IE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIG1hcHBpbmdCIGlzIGFmdGVyIG1hcHBpbmdBIHdpdGggcmVzcGVjdCB0byBnZW5lcmF0ZWRcbiAqIHBvc2l0aW9uLlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZWRQb3NpdGlvbkFmdGVyKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICAvLyBPcHRpbWl6ZWQgZm9yIG1vc3QgY29tbW9uIGNhc2VcbiAgdmFyIGxpbmVBID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZTtcbiAgdmFyIGxpbmVCID0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgdmFyIGNvbHVtbkEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW47XG4gIHZhciBjb2x1bW5CID0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICByZXR1cm4gbGluZUIgPiBsaW5lQSB8fCBsaW5lQiA9PSBsaW5lQSAmJiBjb2x1bW5CID49IGNvbHVtbkEgfHxcbiAgICAgICAgIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCKSA8PSAwO1xufVxuXG4vKipcbiAqIEEgZGF0YSBzdHJ1Y3R1cmUgdG8gcHJvdmlkZSBhIHNvcnRlZCB2aWV3IG9mIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIGFcbiAqIHBlcmZvcm1hbmNlIGNvbnNjaW91cyBtYW5uZXIuIEl0IHRyYWRlcyBhIG5lZ2xpYmFibGUgb3ZlcmhlYWQgaW4gZ2VuZXJhbFxuICogY2FzZSBmb3IgYSBsYXJnZSBzcGVlZHVwIGluIGNhc2Ugb2YgbWFwcGluZ3MgYmVpbmcgYWRkZWQgaW4gb3JkZXIuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmdMaXN0KCkge1xuICB0aGlzLl9hcnJheSA9IFtdO1xuICB0aGlzLl9zb3J0ZWQgPSB0cnVlO1xuICAvLyBTZXJ2ZXMgYXMgaW5maW11bVxuICB0aGlzLl9sYXN0ID0ge2dlbmVyYXRlZExpbmU6IC0xLCBnZW5lcmF0ZWRDb2x1bW46IDB9O1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgdGhyb3VnaCBpbnRlcm5hbCBpdGVtcy4gVGhpcyBtZXRob2QgdGFrZXMgdGhlIHNhbWUgYXJndW1lbnRzIHRoYXRcbiAqIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgdGFrZXMuXG4gKlxuICogTk9URTogVGhlIG9yZGVyIG9mIHRoZSBtYXBwaW5ncyBpcyBOT1QgZ3VhcmFudGVlZC5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnVuc29ydGVkRm9yRWFjaCA9XG4gIGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2ZvckVhY2goYUNhbGxiYWNrLCBhVGhpc0FyZykge1xuICAgIHRoaXMuX2FycmF5LmZvckVhY2goYUNhbGxiYWNrLCBhVGhpc0FyZyk7XG4gIH07XG5cbi8qKlxuICogQWRkIHRoZSBnaXZlbiBzb3VyY2UgbWFwcGluZy5cbiAqXG4gKiBAcGFyYW0gT2JqZWN0IGFNYXBwaW5nXG4gKi9cbk1hcHBpbmdMaXN0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF9hZGQoYU1hcHBpbmcpIHtcbiAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIodGhpcy5fbGFzdCwgYU1hcHBpbmcpKSB7XG4gICAgdGhpcy5fbGFzdCA9IGFNYXBwaW5nO1xuICAgIHRoaXMuX2FycmF5LnB1c2goYU1hcHBpbmcpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX3NvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2FycmF5LnB1c2goYU1hcHBpbmcpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZsYXQsIHNvcnRlZCBhcnJheSBvZiBtYXBwaW5ncy4gVGhlIG1hcHBpbmdzIGFyZSBzb3J0ZWQgYnlcbiAqIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqXG4gKiBXQVJOSU5HOiBUaGlzIG1ldGhvZCByZXR1cm5zIGludGVybmFsIGRhdGEgd2l0aG91dCBjb3B5aW5nLCBmb3JcbiAqIHBlcmZvcm1hbmNlLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgTk9UIGJlIG11dGF0ZWQsIGFuZCBzaG91bGQgYmUgdHJlYXRlZCBhc1xuICogYW4gaW1tdXRhYmxlIGJvcnJvdy4gSWYgeW91IHdhbnQgdG8gdGFrZSBvd25lcnNoaXAsIHlvdSBtdXN0IG1ha2UgeW91ciBvd25cbiAqIGNvcHkuXG4gKi9cbk1hcHBpbmdMaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gTWFwcGluZ0xpc3RfdG9BcnJheSgpIHtcbiAgaWYgKCF0aGlzLl9zb3J0ZWQpIHtcbiAgICB0aGlzLl9hcnJheS5zb3J0KHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQpO1xuICAgIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2FycmF5O1xufTtcblxuZXhwb3J0cy5NYXBwaW5nTGlzdCA9IE1hcHBpbmdMaXN0O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIHNvdXJjZVJlbGF0aXZlID0gc291cmNlRmlsZTtcbiAgICAgIGlmIChzb3VyY2VSb290ICE9PSBudWxsKSB7XG4gICAgICAgIHNvdXJjZVJlbGF0aXZlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFnZW5lcmF0b3IuX3NvdXJjZXMuaGFzKHNvdXJjZVJlbGF0aXZlKSkge1xuICAgICAgICBnZW5lcmF0b3IuX3NvdXJjZXMuYWRkKHNvdXJjZVJlbGF0aXZlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuZXhwb3J0cy5HUkVBVEVTVF9MT1dFUl9CT1VORCA9IDE7XG5leHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EID0gMjtcblxuLyoqXG4gKiBSZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaC5cbiAqXG4gKiBAcGFyYW0gYUxvdyBJbmRpY2VzIGhlcmUgYW5kIGxvd2VyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYUhpZ2ggSW5kaWNlcyBoZXJlIGFuZCBoaWdoZXIgZG8gbm90IGNvbnRhaW4gdGhlIG5lZWRsZS5cbiAqIEBwYXJhbSBhTmVlZGxlIFRoZSBlbGVtZW50IGJlaW5nIHNlYXJjaGVkIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIG5vbi1lbXB0eSBhcnJheSBiZWluZyBzZWFyY2hlZC5cbiAqIEBwYXJhbSBhQ29tcGFyZSBGdW5jdGlvbiB3aGljaCB0YWtlcyB0d28gZWxlbWVudHMgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEuXG4gKiBAcGFyYW0gYUJpYXMgRWl0aGVyICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ2JpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gKiAgICAgc2VhcmNoaW5nIGZvciwgcmVzcGVjdGl2ZWx5LCBpZiB0aGUgZXhhY3QgZWxlbWVudCBjYW5ub3QgYmUgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgLy8gVGhpcyBmdW5jdGlvbiB0ZXJtaW5hdGVzIHdoZW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZTpcbiAgLy9cbiAgLy8gICAxLiBXZSBmaW5kIHRoZSBleGFjdCBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgLy9cbiAgLy8gICAyLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGJ1dCB3ZSBjYW4gcmV0dXJuIHRoZSBpbmRleCBvZlxuICAvLyAgICAgIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudC5cbiAgLy9cbiAgLy8gICAzLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGFuZCB0aGVyZSBpcyBubyBuZXh0LWNsb3Nlc3RcbiAgLy8gICAgICBlbGVtZW50IHRoYW4gdGhlIG9uZSB3ZSBhcmUgc2VhcmNoaW5nIGZvciwgc28gd2UgcmV0dXJuIC0xLlxuICB2YXIgbWlkID0gTWF0aC5mbG9vcigoYUhpZ2ggLSBhTG93KSAvIDIpICsgYUxvdztcbiAgdmFyIGNtcCA9IGFDb21wYXJlKGFOZWVkbGUsIGFIYXlzdGFja1ttaWRdLCB0cnVlKTtcbiAgaWYgKGNtcCA9PT0gMCkge1xuICAgIC8vIEZvdW5kIHRoZSBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgICByZXR1cm4gbWlkO1xuICB9XG4gIGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAvLyBPdXIgbmVlZGxlIGlzIGdyZWF0ZXIgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICBpZiAoYUhpZ2ggLSBtaWQgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgdXBwZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2gobWlkLCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpO1xuICAgIH1cblxuICAgIC8vIFRoZSBleGFjdCBuZWVkbGUgZWxlbWVudCB3YXMgbm90IGZvdW5kIGluIHRoaXMgaGF5c3RhY2suIERldGVybWluZSBpZlxuICAgIC8vIHdlIGFyZSBpbiB0ZXJtaW5hdGlvbiBjYXNlICgzKSBvciAoMikgYW5kIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgdGhpbmcuXG4gICAgaWYgKGFCaWFzID09IGV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQpIHtcbiAgICAgIHJldHVybiBhSGlnaCA8IGFIYXlzdGFjay5sZW5ndGggPyBhSGlnaCA6IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWlkO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICAvLyBPdXIgbmVlZGxlIGlzIGxlc3MgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICBpZiAobWlkIC0gYUxvdyA+IDEpIHtcbiAgICAgIC8vIFRoZSBlbGVtZW50IGlzIGluIHRoZSBsb3dlciBoYWxmLlxuICAgICAgcmV0dXJuIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBtaWQsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYUxvdyA8IDAgPyAtMSA6IGFMb3c7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBiaW5hcnkgc2VhcmNoIHdoaWNoIHdpbGwgYWx3YXlzIHRyeSBhbmQgcmV0dXJuXG4gKiB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgZWxlbWVudCBpZiB0aGVyZSBpcyBubyBleGFjdCBoaXQuIFRoaXMgaXMgYmVjYXVzZVxuICogbWFwcGluZ3MgYmV0d2VlbiBvcmlnaW5hbCBhbmQgZ2VuZXJhdGVkIGxpbmUvY29sIHBhaXJzIGFyZSBzaW5nbGUgcG9pbnRzLFxuICogYW5kIHRoZXJlIGlzIGFuIGltcGxpY2l0IHJlZ2lvbiBiZXR3ZWVuIGVhY2ggb2YgdGhlbSwgc28gYSBtaXNzIGp1c3QgbWVhbnNcbiAqIHRoYXQgeW91IGFyZW4ndCBvbiB0aGUgdmVyeSBzdGFydCBvZiBhIHJlZ2lvbi5cbiAqXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCB5b3UgYXJlIGxvb2tpbmcgZm9yLlxuICogQHBhcmFtIGFIYXlzdGFjayBUaGUgYXJyYXkgdGhhdCBpcyBiZWluZyBzZWFyY2hlZC5cbiAqIEBwYXJhbSBhQ29tcGFyZSBBIGZ1bmN0aW9uIHdoaWNoIHRha2VzIHRoZSBuZWVkbGUgYW5kIGFuIGVsZW1lbnQgaW4gdGhlXG4gKiAgICAgYXJyYXkgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5lZWRsZSBpcyBsZXNzXG4gKiAgICAgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiB0aGUgZWxlbWVudCwgcmVzcGVjdGl2ZWx5LlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICovXG5leHBvcnRzLnNlYXJjaCA9IGZ1bmN0aW9uIHNlYXJjaChhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcykge1xuICBpZiAoYUhheXN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHZhciBpbmRleCA9IHJlY3Vyc2l2ZVNlYXJjaCgtMSwgYUhheXN0YWNrLmxlbmd0aCwgYU5lZWRsZSwgYUhheXN0YWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbXBhcmUsIGFCaWFzIHx8IGV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLy8gV2UgaGF2ZSBmb3VuZCBlaXRoZXIgdGhlIGV4YWN0IGVsZW1lbnQsIG9yIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudCB0aGFuXG4gIC8vIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IuIEhvd2V2ZXIsIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIHN1Y2hcbiAgLy8gZWxlbWVudC4gTWFrZSBzdXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIHNtYWxsZXN0IG9mIHRoZXNlLlxuICB3aGlsZSAoaW5kZXggLSAxID49IDApIHtcbiAgICBpZiAoYUNvbXBhcmUoYUhheXN0YWNrW2luZGV4XSwgYUhheXN0YWNrW2luZGV4IC0gMV0sIHRydWUpICE9PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLS1pbmRleDtcbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICByZXR1cm4gc291cmNlTWFwLnNlY3Rpb25zICE9IG51bGxcbiAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKVxuICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4vLyBwYXJzZWQgbWFwcGluZyBjb29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgXCJtYXBwaW5nc1wiIGF0dHJpYnV0ZS4gVGhleVxuLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3Ncbi8vIGFuZCBjcmVhdGUgdGhlc2UgYXJyYXlzIG9uY2UgcXVlcmllZCBmb3IgYSBzb3VyY2UgbG9jYXRpb24uIFdlIGp1bXAgdGhyb3VnaFxuLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4vLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4vL1xuLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbi8vXG4vLyAgICAge1xuLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgc291cmNlOiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhpc1xuLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJhdGVkIHRoaXMgY2h1bmsgb2Zcbi8vICAgICAgICAgICAgIGNvZGUuXG4vLyAgICAgfVxuLy9cbi8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbi8vIGBudWxsYC5cbi8vXG4vLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuLy9cbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zLlxuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19vcmlnaW5hbE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IE9wdGlvbmFsLiB0aGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2gsIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZ1xuICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgLy8gdGhlIGdpdmVuIGxpbmUsIHByb3ZpZGVkIHN1Y2ggYSBtYXBwaW5nIGV4aXN0cy5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgb3JpZ2luYWxMaW5lOiBsaW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICB9O1xuXG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChuZWVkbGUuc291cmNlKTtcbiAgICBpZiAobmVlZGxlLnNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGZvdW5kLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIHdlcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5ncztcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAqIHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3JcbiAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBuYW1lczogQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogSGVyZSBpcyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXTpcbiAqXG4gKiAgICAge1xuICogICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gKiAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICogICAgIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAvLyByZXF1aXJlcyB0aGUgYXJyYXkpIHRvIHBsYXkgbmljZSBoZXJlLlxuICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHZhciBzb3VyY2VzQ29udGVudCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXNDb250ZW50JywgbnVsbCk7XG4gIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gIC8vIE9uY2UgYWdhaW4sIFNhc3MgZGV2aWF0ZXMgZnJvbSB0aGUgc3BlYyBhbmQgc3VwcGxpZXMgdGhlIHZlcnNpb24gYXMgYVxuICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIHNvdXJjZVJvb3QgPSB1dGlsLm5vcm1hbGl6ZShzb3VyY2VSb290KTtcbiAgfVxuXG4gIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgLm1hcChTdHJpbmcpXG4gICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgLy8gXCJmb28uanNcIi4gIE5vcm1hbGl6ZSB0aGVzZSBmaXJzdCBzbyB0aGF0IGZ1dHVyZSBjb21wYXJpc29ucyB3aWxsIHN1Y2NlZWQuXG4gICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSB0aGF0IGFic29sdXRlIHNvdXJjZXMgYXJlIGludGVybmFsbHkgc3RvcmVkIHJlbGF0aXZlIHRvXG4gICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgIC8vIHNvdXJjZSAodmFsaWQsIGJ1dCB3aHk/PykuIFNlZSBnaXRodWIgaXNzdWUgIzE5OSBhbmQgYnVnemlsLmxhLzExODg5ODIuXG4gICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgPyB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZSlcbiAgICAgICAgOiBzb3VyY2U7XG4gICAgfSk7XG5cbiAgLy8gUGFzcyBgdHJ1ZWAgYmVsb3cgdG8gYWxsb3cgZHVwbGljYXRlIG5hbWVzIGFuZCBzb3VyY2VzLiBXaGlsZSBzb3VyY2UgbWFwc1xuICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gIC8vICM3MiBhbmQgYnVnemlsLmxhLzg4OTQ5Mi5cbiAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMubWFwKFN0cmluZyksIHRydWUpO1xuICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gIHRoaXMuX2Fic29sdXRlU291cmNlcyA9IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gIH0pO1xuXG4gIHRoaXMuc291cmNlUm9vdCA9IHNvdXJjZVJvb3Q7XG4gIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgdGhpcy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgdGhpcy5maWxlID0gZmlsZTtcbn1cblxuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZmluZCB0aGUgaW5kZXggb2YgYSBzb3VyY2UuICBSZXR1cm5zIC0xIGlmIG5vdFxuICogZm91bmQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kU291cmNlSW5kZXggPSBmdW5jdGlvbihhU291cmNlKSB7XG4gIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhyZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlcy5pbmRleE9mKHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIC8vIE1heWJlIGFTb3VyY2UgaXMgYW4gYWJzb2x1dGUgVVJMIGFzIHJldHVybmVkIGJ5IHxzb3VyY2VzfC4gIEluXG4gIC8vIHRoaXMgY2FzZSB3ZSBjYW4ndCBzaW1wbHkgdW5kbyB0aGUgdHJhbnNmb3JtLlxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IHRoaXMuX2Fic29sdXRlU291cmNlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVNvdXJjZXNbaV0gPT0gYVNvdXJjZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGZyb20gYSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gKiAgICAgICAgVGhlIHNvdXJjZSBtYXAgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuICogQHBhcmFtIFN0cmluZyBhU291cmNlTWFwVVJMXG4gKiAgICAgICAgVGhlIFVSTCBhdCB3aGljaCB0aGUgc291cmNlIG1hcCBjYW4gYmUgZm91bmQgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICB2YXIgbmFtZXMgPSBzbWMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX25hbWVzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICBzbWMuc291cmNlc0NvbnRlbnQgPSBhU291cmNlTWFwLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KHNtYy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuICAgIHNtYy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgICBzbWMuX2Fic29sdXRlU291cmNlcyA9IHNtYy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNtYy5zb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlU291cmNlcy5zbGljZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgIFwiZ2VuZXJhdGVkQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuYXQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwodGhpcy5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5hdChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIG5hbWU6IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAhdGhpcy5zb3VyY2VzQ29udGVudC5zb21lKGZ1bmN0aW9uIChzYykgeyByZXR1cm4gc2MgPT0gbnVsbDsgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChhU291cmNlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbaW5kZXhdO1xuICAgIH1cblxuICAgIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIHVybDtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgIC8vIFhYWDogZmlsZTovLyBVUklzIGFuZCBhYnNvbHV0ZSBwYXRocyBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZm9yXG4gICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODU1OTcuXG4gICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSByZWxhdGl2ZVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgIGlmICh1cmwuc2NoZW1lID09IFwiZmlsZVwiXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICB9XG5cbiAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIHJlbGF0aXZlU291cmNlKV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IuIEluIHRoYXQgY2FzZSwgd2VcbiAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgcmVsYXRpdmVTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbmV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQW4gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaFxuICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICogaW5wdXQuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAqL1xuZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSwgYVNvdXJjZU1hcFVSTClcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbiB3ZSdyZSB0cnlpbmcgdG8gbWFwXG4gICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgIGZ1bmN0aW9uKG5lZWRsZSwgc2VjdGlvbikge1xuICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIH0pO1xuICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICBsaW5lOiBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmVcbiAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgOiAwKSxcbiAgICAgIGJpYXM6IGFBcmdzLmJpYXNcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5ldmVyeShmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuIFxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIC8vIE9ubHkgY29uc2lkZXIgdGhpcyBzZWN0aW9uIGlmIHRoZSByZXF1ZXN0ZWQgc291cmNlIGlzIGluIHRoZSBsaXN0IG9mXG4gICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLl9maW5kU291cmNlSW5kZXgodXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGdlbmVyYXRlZFBvc2l0aW9uID0gc2VjdGlvbi5jb25zdW1lci5nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncyk7XG4gICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmVcbiAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICA6IDApXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWN0aW9uTWFwcGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc2VjdGlvbi5jb25zdW1lci5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSkge1xuICAgICAgICAgIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8vIE1hdGNoZXMgYSBXaW5kb3dzLXN0eWxlIGBcXHJcXG5gIG5ld2xpbmUgb3IgYSBgXFxuYCBuZXdsaW5lIHVzZWQgYnkgYWxsIG90aGVyXG4vLyBvcGVyYXRpbmcgc3lzdGVtcyB0aGVzZSBkYXlzIChjYXB0dXJpbmcgdGhlIHJlc3VsdCkuXG52YXIgUkVHRVhfTkVXTElORSA9IC8oXFxyP1xcbikvO1xuXG4vLyBOZXdsaW5lIGNoYXJhY3RlciBjb2RlIGZvciBjaGFyQ29kZUF0KCkgY29tcGFyaXNvbnNcbnZhciBORVdMSU5FX0NPREUgPSAxMDtcblxuLy8gUHJpdmF0ZSBzeW1ib2wgZm9yIGlkZW50aWZ5aW5nIGBTb3VyY2VOb2RlYHMgd2hlbiBtdWx0aXBsZSB2ZXJzaW9ucyBvZlxuLy8gdGhlIHNvdXJjZS1tYXAgbGlicmFyeSBhcmUgbG9hZGVkLiBUaGlzIE1VU1QgTk9UIENIQU5HRSBhY3Jvc3Ncbi8vIHZlcnNpb25zIVxudmFyIGlzU291cmNlTm9kZSA9IFwiJCQkaXNTb3VyY2VOb2RlJCQkXCI7XG5cbi8qKlxuICogU291cmNlTm9kZXMgcHJvdmlkZSBhIHdheSB0byBhYnN0cmFjdCBvdmVyIGludGVycG9sYXRpbmcvY29uY2F0ZW5hdGluZ1xuICogc25pcHBldHMgb2YgZ2VuZXJhdGVkIEphdmFTY3JpcHQgc291cmNlIGNvZGUgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIGxpbmUgYW5kXG4gKiBjb2x1bW4gaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcGFyYW0gYUxpbmUgVGhlIG9yaWdpbmFsIGxpbmUgbnVtYmVyLlxuICogQHBhcmFtIGFDb2x1bW4gVGhlIG9yaWdpbmFsIGNvbHVtbiBudW1iZXIuXG4gKiBAcGFyYW0gYVNvdXJjZSBUaGUgb3JpZ2luYWwgc291cmNlJ3MgZmlsZW5hbWUuXG4gKiBAcGFyYW0gYUNodW5rcyBPcHRpb25hbC4gQW4gYXJyYXkgb2Ygc3RyaW5ncyB3aGljaCBhcmUgc25pcHBldHMgb2ZcbiAqICAgICAgICBnZW5lcmF0ZWQgSlMsIG9yIG90aGVyIFNvdXJjZU5vZGVzLlxuICogQHBhcmFtIGFOYW1lIFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLlxuICovXG5mdW5jdGlvbiBTb3VyY2VOb2RlKGFMaW5lLCBhQ29sdW1uLCBhU291cmNlLCBhQ2h1bmtzLCBhTmFtZSkge1xuICB0aGlzLmNoaWxkcmVuID0gW107XG4gIHRoaXMuc291cmNlQ29udGVudHMgPSB7fTtcbiAgdGhpcy5saW5lID0gYUxpbmUgPT0gbnVsbCA/IG51bGwgOiBhTGluZTtcbiAgdGhpcy5jb2x1bW4gPSBhQ29sdW1uID09IG51bGwgPyBudWxsIDogYUNvbHVtbjtcbiAgdGhpcy5zb3VyY2UgPSBhU291cmNlID09IG51bGwgPyBudWxsIDogYVNvdXJjZTtcbiAgdGhpcy5uYW1lID0gYU5hbWUgPT0gbnVsbCA/IG51bGwgOiBhTmFtZTtcbiAgdGhpc1tpc1NvdXJjZU5vZGVdID0gdHJ1ZTtcbiAgaWYgKGFDaHVua3MgIT0gbnVsbCkgdGhpcy5hZGQoYUNodW5rcyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFNvdXJjZU5vZGUgZnJvbSBnZW5lcmF0ZWQgY29kZSBhbmQgYSBTb3VyY2VNYXBDb25zdW1lci5cbiAqXG4gKiBAcGFyYW0gYUdlbmVyYXRlZENvZGUgVGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVxuICogQHBhcmFtIGFSZWxhdGl2ZVBhdGggT3B0aW9uYWwuIFRoZSBwYXRoIHRoYXQgcmVsYXRpdmUgc291cmNlcyBpbiB0aGVcbiAqICAgICAgICBTb3VyY2VNYXBDb25zdW1lciBzaG91bGQgYmUgcmVsYXRpdmUgdG8uXG4gKi9cblNvdXJjZU5vZGUuZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VOb2RlX2Zyb21TdHJpbmdXaXRoU291cmNlTWFwKGFHZW5lcmF0ZWRDb2RlLCBhU291cmNlTWFwQ29uc3VtZXIsIGFSZWxhdGl2ZVBhdGgpIHtcbiAgICAvLyBUaGUgU291cmNlTm9kZSB3ZSB3YW50IHRvIGZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAgICAvLyBhbmQgdGhlIFNvdXJjZU1hcFxuICAgIHZhciBub2RlID0gbmV3IFNvdXJjZU5vZGUoKTtcblxuICAgIC8vIEFsbCBldmVuIGluZGljZXMgb2YgdGhpcyBhcnJheSBhcmUgb25lIGxpbmUgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLFxuICAgIC8vIHdoaWxlIGFsbCBvZGQgaW5kaWNlcyBhcmUgdGhlIG5ld2xpbmVzIGJldHdlZW4gdHdvIGFkamFjZW50IGxpbmVzXG4gICAgLy8gKHNpbmNlIGBSRUdFWF9ORVdMSU5FYCBjYXB0dXJlcyBpdHMgbWF0Y2gpLlxuICAgIC8vIFByb2Nlc3NlZCBmcmFnbWVudHMgYXJlIGFjY2Vzc2VkIGJ5IGNhbGxpbmcgYHNoaWZ0TmV4dExpbmVgLlxuICAgIHZhciByZW1haW5pbmdMaW5lcyA9IGFHZW5lcmF0ZWRDb2RlLnNwbGl0KFJFR0VYX05FV0xJTkUpO1xuICAgIHZhciByZW1haW5pbmdMaW5lc0luZGV4ID0gMDtcbiAgICB2YXIgc2hpZnROZXh0TGluZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxpbmVDb250ZW50cyA9IGdldE5leHRMaW5lKCk7XG4gICAgICAvLyBUaGUgbGFzdCBsaW5lIG9mIGEgZmlsZSBtaWdodCBub3QgaGF2ZSBhIG5ld2xpbmUuXG4gICAgICB2YXIgbmV3TGluZSA9IGdldE5leHRMaW5lKCkgfHwgXCJcIjtcbiAgICAgIHJldHVybiBsaW5lQ29udGVudHMgKyBuZXdMaW5lO1xuXG4gICAgICBmdW5jdGlvbiBnZXROZXh0TGluZSgpIHtcbiAgICAgICAgcmV0dXJuIHJlbWFpbmluZ0xpbmVzSW5kZXggPCByZW1haW5pbmdMaW5lcy5sZW5ndGggP1xuICAgICAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleCsrXSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gV2UgbmVlZCB0byByZW1lbWJlciB0aGUgcG9zaXRpb24gb2YgXCJyZW1haW5pbmdMaW5lc1wiXG4gICAgdmFyIGxhc3RHZW5lcmF0ZWRMaW5lID0gMSwgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG5cbiAgICAvLyBUaGUgZ2VuZXJhdGUgU291cmNlTm9kZXMgd2UgbmVlZCBhIGNvZGUgcmFuZ2UuXG4gICAgLy8gVG8gZXh0cmFjdCBpdCBjdXJyZW50IGFuZCBsYXN0IG1hcHBpbmcgaXMgdXNlZC5cbiAgICAvLyBIZXJlIHdlIHN0b3JlIHRoZSBsYXN0IG1hcHBpbmcuXG4gICAgdmFyIGxhc3RNYXBwaW5nID0gbnVsbDtcblxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgaWYgKGxhc3RNYXBwaW5nICE9PSBudWxsKSB7XG4gICAgICAgIC8vIFdlIGFkZCB0aGUgY29kZSBmcm9tIFwibGFzdE1hcHBpbmdcIiB0byBcIm1hcHBpbmdcIjpcbiAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlcmUgaXMgYSBuZXcgbGluZSBpbiBiZXR3ZWVuLlxuICAgICAgICBpZiAobGFzdEdlbmVyYXRlZExpbmUgPCBtYXBwaW5nLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgICAvLyBBc3NvY2lhdGUgZmlyc3QgbGluZSB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkTGluZSsrO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgICAgIC8vIFRoZSByZW1haW5pbmcgY29kZSBpcyBhZGRlZCB3aXRob3V0IG1hcHBpbmdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuZXcgbGluZSBpbiBiZXR3ZWVuLlxuICAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgY29kZSBiZXR3ZWVuIFwibGFzdEdlbmVyYXRlZENvbHVtblwiIGFuZFxuICAgICAgICAgIC8vIFwibWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cIiB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdIHx8ICcnO1xuICAgICAgICAgIHZhciBjb2RlID0gbmV4dExpbmUuc3Vic3RyKDAsIG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSA9IG5leHRMaW5lLnN1YnN0cihtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgY29kZSk7XG4gICAgICAgICAgLy8gTm8gbW9yZSByZW1haW5pbmcgY29kZSwgY29udGludWVcbiAgICAgICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBXZSBhZGQgdGhlIGdlbmVyYXRlZCBjb2RlIHVudGlsIHRoZSBmaXJzdCBtYXBwaW5nXG4gICAgICAvLyB0byB0aGUgU291cmNlTm9kZSB3aXRob3V0IGFueSBtYXBwaW5nLlxuICAgICAgLy8gRWFjaCBsaW5lIGlzIGFkZGVkIGFzIHNlcGFyYXRlIHN0cmluZy5cbiAgICAgIHdoaWxlIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICBub2RlLmFkZChzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICBsYXN0R2VuZXJhdGVkTGluZSsrO1xuICAgICAgfVxuICAgICAgaWYgKGxhc3RHZW5lcmF0ZWRDb2x1bW4gPCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbikge1xuICAgICAgICB2YXIgbmV4dExpbmUgPSByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSB8fCAnJztcbiAgICAgICAgbm9kZS5hZGQobmV4dExpbmUuc3Vic3RyKDAsIG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSk7XG4gICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuICAgICAgfVxuICAgICAgbGFzdE1hcHBpbmcgPSBtYXBwaW5nO1xuICAgIH0sIHRoaXMpO1xuICAgIC8vIFdlIGhhdmUgcHJvY2Vzc2VkIGFsbCBtYXBwaW5ncy5cbiAgICBpZiAocmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RNYXBwaW5nKSB7XG4gICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVtYWluaW5nIGNvZGUgaW4gdGhlIGN1cnJlbnQgbGluZSB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICBhZGRNYXBwaW5nV2l0aENvZGUobGFzdE1hcHBpbmcsIHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICB9XG4gICAgICAvLyBhbmQgYWRkIHRoZSByZW1haW5pbmcgbGluZXMgd2l0aG91dCBhbnkgbWFwcGluZ1xuICAgICAgbm9kZS5hZGQocmVtYWluaW5nTGluZXMuc3BsaWNlKHJlbWFpbmluZ0xpbmVzSW5kZXgpLmpvaW4oXCJcIikpO1xuICAgIH1cblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnQgaW50byBTb3VyY2VOb2RlXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGFSZWxhdGl2ZVBhdGggIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVJlbGF0aXZlUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGU7XG5cbiAgICBmdW5jdGlvbiBhZGRNYXBwaW5nV2l0aENvZGUobWFwcGluZywgY29kZSkge1xuICAgICAgaWYgKG1hcHBpbmcgPT09IG51bGwgfHwgbWFwcGluZy5zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub2RlLmFkZChjb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhUmVsYXRpdmVQYXRoXG4gICAgICAgICAgPyB1dGlsLmpvaW4oYVJlbGF0aXZlUGF0aCwgbWFwcGluZy5zb3VyY2UpXG4gICAgICAgICAgOiBtYXBwaW5nLnNvdXJjZTtcbiAgICAgICAgbm9kZS5hZGQobmV3IFNvdXJjZU5vZGUobWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5uYW1lKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFkZCBhIGNodW5rIG9mIGdlbmVyYXRlZCBKUyB0byB0aGlzIHNvdXJjZSBub2RlLlxuICpcbiAqIEBwYXJhbSBhQ2h1bmsgQSBzdHJpbmcgc25pcHBldCBvZiBnZW5lcmF0ZWQgSlMgY29kZSwgYW5vdGhlciBpbnN0YW5jZSBvZlxuICogICAgICAgIFNvdXJjZU5vZGUsIG9yIGFuIGFycmF5IHdoZXJlIGVhY2ggbWVtYmVyIGlzIG9uZSBvZiB0aG9zZSB0aGluZ3MuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfYWRkKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgYUNodW5rLmZvckVhY2goZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICB0aGlzLmFkZChjaHVuayk7XG4gICAgfSwgdGhpcyk7XG4gIH1cbiAgZWxzZSBpZiAoYUNodW5rW2lzU291cmNlTm9kZV0gfHwgdHlwZW9mIGFDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChhQ2h1bmspIHtcbiAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChhQ2h1bmspO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgXCJFeHBlY3RlZCBhIFNvdXJjZU5vZGUsIHN0cmluZywgb3IgYW4gYXJyYXkgb2YgU291cmNlTm9kZXMgYW5kIHN0cmluZ3MuIEdvdCBcIiArIGFDaHVua1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFkZCBhIGNodW5rIG9mIGdlbmVyYXRlZCBKUyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcHJlcGVuZChhQ2h1bmspIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYUNodW5rKSkge1xuICAgIGZvciAodmFyIGkgPSBhQ2h1bmsubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0aGlzLnByZXBlbmQoYUNodW5rW2ldKTtcbiAgICB9XG4gIH1cbiAgZWxzZSBpZiAoYUNodW5rW2lzU291cmNlTm9kZV0gfHwgdHlwZW9mIGFDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgIHRoaXMuY2hpbGRyZW4udW5zaGlmdChhQ2h1bmspO1xuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIEpTIHNuaXBwZXRzIGluIHRoaXMgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLiBUaGVcbiAqIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggc25pcHBldCBvZiBKUyBhbmQgaXMgcGFzc2VkIHRoYXRcbiAqIHNuaXBwZXQgYW5kIHRoZSBpdHMgb3JpZ2luYWwgYXNzb2NpYXRlZCBzb3VyY2UncyBsaW5lL2NvbHVtbiBsb2NhdGlvbi5cbiAqXG4gKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLndhbGsgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3dhbGsoYUZuKSB7XG4gIHZhciBjaHVuaztcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjaHVuayA9IHRoaXMuY2hpbGRyZW5baV07XG4gICAgaWYgKGNodW5rW2lzU291cmNlTm9kZV0pIHtcbiAgICAgIGNodW5rLndhbGsoYUZuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoY2h1bmsgIT09ICcnKSB7XG4gICAgICAgIGFGbihjaHVuaywgeyBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLFxuICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogTGlrZSBgU3RyaW5nLnByb3RvdHlwZS5qb2luYCBleGNlcHQgZm9yIFNvdXJjZU5vZGVzLiBJbnNlcnRzIGBhU3RyYCBiZXR3ZWVuXG4gKiBlYWNoIG9mIGB0aGlzLmNoaWxkcmVuYC5cbiAqXG4gKiBAcGFyYW0gYVNlcCBUaGUgc2VwYXJhdG9yLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gU291cmNlTm9kZV9qb2luKGFTZXApIHtcbiAgdmFyIG5ld0NoaWxkcmVuO1xuICB2YXIgaTtcbiAgdmFyIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICBpZiAobGVuID4gMCkge1xuICAgIG5ld0NoaWxkcmVuID0gW107XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbi0xOyBpKyspIHtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgICBuZXdDaGlsZHJlbi5wdXNoKGFTZXApO1xuICAgIH1cbiAgICBuZXdDaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5baV0pO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBuZXdDaGlsZHJlbjtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ2FsbCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Ugb24gdGhlIHZlcnkgcmlnaHQtbW9zdCBzb3VyY2Ugc25pcHBldC4gVXNlZnVsXG4gKiBmb3IgdHJpbW1pbmcgd2hpdGVzcGFjZSBmcm9tIHRoZSBlbmQgb2YgYSBzb3VyY2Ugbm9kZSwgZXRjLlxuICpcbiAqIEBwYXJhbSBhUGF0dGVybiBUaGUgcGF0dGVybiB0byByZXBsYWNlLlxuICogQHBhcmFtIGFSZXBsYWNlbWVudCBUaGUgdGhpbmcgdG8gcmVwbGFjZSB0aGUgcGF0dGVybiB3aXRoLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5yZXBsYWNlUmlnaHQgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3JlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KSB7XG4gIHZhciBsYXN0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gIGlmIChsYXN0Q2hpbGRbaXNTb3VyY2VOb2RlXSkge1xuICAgIGxhc3RDaGlsZC5yZXBsYWNlUmlnaHQoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCk7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIGxhc3RDaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV0gPSBsYXN0Q2hpbGQucmVwbGFjZShhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIHtcbiAgICB0aGlzLmNoaWxkcmVuLnB1c2goJycucmVwbGFjZShhUGF0dGVybiwgYVJlcGxhY2VtZW50KSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuIFRoaXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgU291cmNlTWFwR2VuZXJhdG9yXG4gKiBpbiB0aGUgc291cmNlc0NvbnRlbnQgZmllbGQuXG4gKlxuICogQHBhcmFtIGFTb3VyY2VGaWxlIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGVcbiAqIEBwYXJhbSBhU291cmNlQ29udGVudCBUaGUgY29udGVudCBvZiB0aGUgc291cmNlIGZpbGVcbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfc2V0U291cmNlQ29udGVudChhU291cmNlRmlsZSwgYVNvdXJjZUNvbnRlbnQpIHtcbiAgICB0aGlzLnNvdXJjZUNvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoYVNvdXJjZUZpbGUpXSA9IGFTb3VyY2VDb250ZW50O1xuICB9O1xuXG4vKipcbiAqIFdhbGsgb3ZlciB0aGUgdHJlZSBvZiBTb3VyY2VOb2Rlcy4gVGhlIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoXG4gKiBzb3VyY2UgZmlsZSBjb250ZW50IGFuZCBpcyBwYXNzZWQgdGhlIGZpbGVuYW1lIGFuZCBzb3VyY2UgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLndhbGtTb3VyY2VDb250ZW50cyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2Fsa1NvdXJjZUNvbnRlbnRzKGFGbikge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jaGlsZHJlbltpXVtpc1NvdXJjZU5vZGVdKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW5baV0ud2Fsa1NvdXJjZUNvbnRlbnRzKGFGbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNvdXJjZUNvbnRlbnRzKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc291cmNlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgYUZuKHV0aWwuZnJvbVNldFN0cmluZyhzb3VyY2VzW2ldKSwgdGhpcy5zb3VyY2VDb250ZW50c1tzb3VyY2VzW2ldXSk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc291cmNlIG5vZGUuIFdhbGtzIG92ZXIgdGhlIHRyZWVcbiAqIGFuZCBjb25jYXRlbmF0ZXMgYWxsIHRoZSB2YXJpb3VzIHNuaXBwZXRzIHRvZ2V0aGVyIHRvIG9uZSBzdHJpbmcuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZygpIHtcbiAgdmFyIHN0ciA9IFwiXCI7XG4gIHRoaXMud2FsayhmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBzdHIgKz0gY2h1bms7XG4gIH0pO1xuICByZXR1cm4gc3RyO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZSBhbG9uZyB3aXRoIGEgc291cmNlXG4gKiBtYXAuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nV2l0aFNvdXJjZU1hcCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfdG9TdHJpbmdXaXRoU291cmNlTWFwKGFBcmdzKSB7XG4gIHZhciBnZW5lcmF0ZWQgPSB7XG4gICAgY29kZTogXCJcIixcbiAgICBsaW5lOiAxLFxuICAgIGNvbHVtbjogMFxuICB9O1xuICB2YXIgbWFwID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcihhQXJncyk7XG4gIHZhciBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gIHZhciBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICB2YXIgbGFzdE9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB2YXIgbGFzdE9yaWdpbmFsTmFtZSA9IG51bGw7XG4gIHRoaXMud2FsayhmdW5jdGlvbiAoY2h1bmssIG9yaWdpbmFsKSB7XG4gICAgZ2VuZXJhdGVkLmNvZGUgKz0gY2h1bms7XG4gICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPT0gbnVsbFxuICAgICAgICAmJiBvcmlnaW5hbC5saW5lICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmNvbHVtbiAhPT0gbnVsbCkge1xuICAgICAgaWYobGFzdE9yaWdpbmFsU291cmNlICE9PSBvcmlnaW5hbC5zb3VyY2VcbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbExpbmUgIT09IG9yaWdpbmFsLmxpbmVcbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbENvbHVtbiAhPT0gb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICB8fCBsYXN0T3JpZ2luYWxOYW1lICE9PSBvcmlnaW5hbC5uYW1lKSB7XG4gICAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICBzb3VyY2U6IG9yaWdpbmFsLnNvdXJjZSxcbiAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgbGluZTogb3JpZ2luYWwubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYW1lOiBvcmlnaW5hbC5uYW1lXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gb3JpZ2luYWwuc291cmNlO1xuICAgICAgbGFzdE9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICBsYXN0T3JpZ2luYWxDb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47XG4gICAgICBsYXN0T3JpZ2luYWxOYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoc291cmNlTWFwcGluZ0FjdGl2ZSkge1xuICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpZHggPSAwLCBsZW5ndGggPSBjaHVuay5sZW5ndGg7IGlkeCA8IGxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGlmIChjaHVuay5jaGFyQ29kZUF0KGlkeCkgPT09IE5FV0xJTkVfQ09ERSkge1xuICAgICAgICBnZW5lcmF0ZWQubGluZSsrO1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uID0gMDtcbiAgICAgICAgLy8gTWFwcGluZ3MgZW5kIGF0IGVvbFxuICAgICAgICBpZiAoaWR4ICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gbnVsbDtcbiAgICAgICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoc291cmNlTWFwcGluZ0FjdGl2ZSkge1xuICAgICAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgICAgb3JpZ2luYWw6IHtcbiAgICAgICAgICAgICAgbGluZTogb3JpZ2luYWwubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJhdGVkLmNvbHVtbisrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHRoaXMud2Fsa1NvdXJjZUNvbnRlbnRzKGZ1bmN0aW9uIChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KSB7XG4gICAgbWFwLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgc291cmNlQ29udGVudCk7XG4gIH0pO1xuXG4gIHJldHVybiB7IGNvZGU6IGdlbmVyYXRlZC5jb2RlLCBtYXA6IG1hcCB9O1xufTtcblxuZXhwb3J0cy5Tb3VyY2VOb2RlID0gU291cmNlTm9kZTtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwOS0yMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRS50eHQgb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW5vZGUnKS5Tb3VyY2VOb2RlO1xuIiwiLyogZ2xvYmFsIGRlZmluZSAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxudmFyIFNvdXJjZU5vZGUgPSB1bmRlZmluZWQ7XG5cbnRyeSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICh0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nIHx8ICFkZWZpbmUuYW1kKSB7XG4gICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGluIEFNRCBlbnZpcm9ubWVudHMuIEZvciB0aGVzZSBlbnZpcm9ubWVudHMsIHdlIGFzdXNtZSB0aGF0XG4gICAgLy8gdGhleSBhcmUgcnVubmluZyBvbiB0aGUgYnJvd3NlciBhbmQgdGh1cyBoYXZlIG5vIG5lZWQgZm9yIHRoZSBzb3VyY2UtbWFwIGxpYnJhcnkuXG4gICAgdmFyIFNvdXJjZU1hcCA9IHJlcXVpcmUoJ3NvdXJjZS1tYXAnKTtcbiAgICBTb3VyY2VOb2RlID0gU291cmNlTWFwLlNvdXJjZU5vZGU7XG4gIH1cbn0gY2F0Y2ggKGVycikge31cbi8qIE5PUCAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IHRlc3RlZCBidXQgbm90IGNvdmVyZWQgaW4gaXN0YW5idWwgZHVlIHRvIGRpc3QgYnVpbGQgICovXG5pZiAoIVNvdXJjZU5vZGUpIHtcbiAgU291cmNlTm9kZSA9IGZ1bmN0aW9uIChsaW5lLCBjb2x1bW4sIHNyY0ZpbGUsIGNodW5rcykge1xuICAgIHRoaXMuc3JjID0gJyc7XG4gICAgaWYgKGNodW5rcykge1xuICAgICAgdGhpcy5hZGQoY2h1bmtzKTtcbiAgICB9XG4gIH07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIFNvdXJjZU5vZGUucHJvdG90eXBlID0ge1xuICAgIGFkZDogZnVuY3Rpb24gYWRkKGNodW5rcykge1xuICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rcykpIHtcbiAgICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpO1xuICAgICAgfVxuICAgICAgdGhpcy5zcmMgKz0gY2h1bmtzO1xuICAgIH0sXG4gICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChjaHVua3MpIHtcbiAgICAgIGlmIChfdXRpbHMuaXNBcnJheShjaHVua3MpKSB7XG4gICAgICAgIGNodW5rcyA9IGNodW5rcy5qb2luKCcnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3JjID0gY2h1bmtzICsgdGhpcy5zcmM7XG4gICAgfSxcbiAgICB0b1N0cmluZ1dpdGhTb3VyY2VNYXA6IGZ1bmN0aW9uIHRvU3RyaW5nV2l0aFNvdXJjZU1hcCgpIHtcbiAgICAgIHJldHVybiB7IGNvZGU6IHRoaXMudG9TdHJpbmcoKSB9O1xuICAgIH0sXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3JjO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY2FzdENodW5rKGNodW5rLCBjb2RlR2VuLCBsb2MpIHtcbiAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rKSkge1xuICAgIHZhciByZXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBjaHVuay5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgcmV0LnB1c2goY29kZUdlbi53cmFwKGNodW5rW2ldLCBsb2MpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgY2h1bmsgPT09ICdudW1iZXInKSB7XG4gICAgLy8gSGFuZGxlIHByaW1pdGl2ZXMgdGhhdCB0aGUgU291cmNlTm9kZSB3aWxsIHRocm93IHVwIG9uXG4gICAgcmV0dXJuIGNodW5rICsgJyc7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG5mdW5jdGlvbiBDb2RlR2VuKHNyY0ZpbGUpIHtcbiAgdGhpcy5zcmNGaWxlID0gc3JjRmlsZTtcbiAgdGhpcy5zb3VyY2UgPSBbXTtcbn1cblxuQ29kZUdlbi5wcm90b3R5cGUgPSB7XG4gIGlzRW1wdHk6IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuICF0aGlzLnNvdXJjZS5sZW5ndGg7XG4gIH0sXG4gIHByZXBlbmQ6IGZ1bmN0aW9uIHByZXBlbmQoc291cmNlLCBsb2MpIHtcbiAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChzb3VyY2UsIGxvYykpO1xuICB9LFxuICBwdXNoOiBmdW5jdGlvbiBwdXNoKHNvdXJjZSwgbG9jKSB7XG4gICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTtcbiAgfSxcblxuICBtZXJnZTogZnVuY3Rpb24gbWVyZ2UoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHRoaXMuZW1wdHkoKTtcbiAgICB0aGlzLmVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIHNvdXJjZS5hZGQoWycgICcsIGxpbmUsICdcXG4nXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfSxcblxuICBlYWNoOiBmdW5jdGlvbiBlYWNoKGl0ZXIpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGl0ZXIodGhpcy5zb3VyY2VbaV0pO1xuICAgIH1cbiAgfSxcblxuICBlbXB0eTogZnVuY3Rpb24gZW1wdHkoKSB7XG4gICAgdmFyIGxvYyA9IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH07XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUpO1xuICB9LFxuICB3cmFwOiBmdW5jdGlvbiB3cmFwKGNodW5rKSB7XG4gICAgdmFyIGxvYyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH0gOiBhcmd1bWVudHNbMV07XG5cbiAgICBpZiAoY2h1bmsgaW5zdGFuY2VvZiBTb3VyY2VOb2RlKSB7XG4gICAgICByZXR1cm4gY2h1bms7XG4gICAgfVxuXG4gICAgY2h1bmsgPSBjYXN0Q2h1bmsoY2h1bmssIHRoaXMsIGxvYyk7XG5cbiAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobG9jLnN0YXJ0LmxpbmUsIGxvYy5zdGFydC5jb2x1bW4sIHRoaXMuc3JjRmlsZSwgY2h1bmspO1xuICB9LFxuXG4gIGZ1bmN0aW9uQ2FsbDogZnVuY3Rpb24gZnVuY3Rpb25DYWxsKGZuLCB0eXBlLCBwYXJhbXMpIHtcbiAgICBwYXJhbXMgPSB0aGlzLmdlbmVyYXRlTGlzdChwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0eXBlID8gJy4nICsgdHlwZSArICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTtcbiAgfSxcblxuICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uIHF1b3RlZFN0cmluZyhzdHIpIHtcbiAgICByZXR1cm4gJ1wiJyArIChzdHIgKyAnJykucmVwbGFjZSgvXFxcXC9nLCAnXFxcXFxcXFwnKS5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csICdcXFxcbicpLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKS5yZXBsYWNlKC9cXHUyMDI4L2csICdcXFxcdTIwMjgnKSAvLyBQZXIgRWNtYS0yNjIgNy4zICsgNy44LjRcbiAgICAucmVwbGFjZSgvXFx1MjAyOS9nLCAnXFxcXHUyMDI5JykgKyAnXCInO1xuICB9LFxuXG4gIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgcGFpcnMgPSBbXTtcblxuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgdmFsdWUgPSBjYXN0Q2h1bmsob2JqW2tleV0sIF90aGlzKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcGFpcnMucHVzaChbX3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChwYWlycyk7XG4gICAgcmV0LnByZXBlbmQoJ3snKTtcbiAgICByZXQuYWRkKCd9Jyk7XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9uIGdlbmVyYXRlTGlzdChlbnRyaWVzKSB7XG4gICAgdmFyIHJldCA9IHRoaXMuZW1wdHkoKTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBlbnRyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAoaSkge1xuICAgICAgICByZXQuYWRkKCcsJyk7XG4gICAgICB9XG5cbiAgICAgIHJldC5hZGQoY2FzdENodW5rKGVudHJpZXNbaV0sIHRoaXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIGdlbmVyYXRlQXJyYXk6IGZ1bmN0aW9uIGdlbmVyYXRlQXJyYXkoZW50cmllcykge1xuICAgIHZhciByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChlbnRyaWVzKTtcbiAgICByZXQucHJlcGVuZCgnWycpO1xuICAgIHJldC5hZGQoJ10nKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IENvZGVHZW47XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwyTnZaR1V0WjJWdUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3TzNGQ1FVTjNRaXhWUVVGVk96dEJRVVZzUXl4SlFVRkpMRlZCUVZVc1dVRkJRU3hEUVVGRE96dEJRVVZtTEVsQlFVazdPMEZCUlVZc1RVRkJTU3hQUVVGUExFMUJRVTBzUzBGQlN5eFZRVUZWTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhGUVVGRk96czdRVUZITDBNc1VVRkJTU3hUUVVGVExFZEJRVWNzVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMEZCUTNSRExHTkJRVlVzUjBGQlJ5eFRRVUZUTEVOQlFVTXNWVUZCVlN4RFFVRkRPMGRCUTI1RE8wTkJRMFlzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RlFVVmlPenM3TzBGQlFVRXNRVUZIUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJRMllzV1VGQlZTeEhRVUZITEZWQlFWTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzVFVGQlRTeEZRVUZGTzBGQlEyNUVMRkZCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEyUXNVVUZCU1N4TlFVRk5MRVZCUVVVN1FVRkRWaXhWUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMHRCUTJ4Q08wZEJRMFlzUTBGQlF6czdRVUZGUml4WlFVRlZMRU5CUVVNc1UwRkJVeXhIUVVGSE8wRkJRM0pDTEU5QlFVY3NSVUZCUlN4aFFVRlRMRTFCUVUwc1JVRkJSVHRCUVVOd1FpeFZRVUZKTEdWQlFWRXNUVUZCVFN4RFFVRkRMRVZCUVVVN1FVRkRia0lzWTBGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VDBGRE1VSTdRVUZEUkN4VlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF6dExRVU53UWp0QlFVTkVMRmRCUVU4c1JVRkJSU3hwUWtGQlV5eE5RVUZOTEVWQlFVVTdRVUZEZUVJc1ZVRkJTU3hsUVVGUkxFMUJRVTBzUTBGQlF5eEZRVUZGTzBGQlEyNUNMR05CUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMDlCUXpGQ08wRkJRMFFzVlVGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF6dExRVU01UWp0QlFVTkVMSGxDUVVGeFFpeEZRVUZGTEdsRFFVRlhPMEZCUTJoRExHRkJRVThzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU03UzBGRGJFTTdRVUZEUkN4WlFVRlJMRVZCUVVVc2IwSkJRVmM3UVVGRGJrSXNZVUZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8wdEJRMnBDTzBkQlEwWXNRMEZCUXp0RFFVTklPenRCUVVWRUxGTkJRVk1zVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJRM1JETEUxQlFVa3NaVUZCVVN4TFFVRkxMRU5CUVVNc1JVRkJSVHRCUVVOc1FpeFJRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNN08wRkJSV0lzVTBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU5vUkN4VFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEZGtNN1FVRkRSQ3hYUVVGUExFZEJRVWNzUTBGQlF6dEhRVU5hTEUxQlFVMHNTVUZCU1N4UFFVRlBMRXRCUVVzc1MwRkJTeXhUUVVGVExFbEJRVWtzVDBGQlR5eExRVUZMTEV0QlFVc3NVVUZCVVN4RlFVRkZPenRCUVVWc1JTeFhRVUZQTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1IwRkRia0k3UVVGRFJDeFRRVUZQTEV0QlFVc3NRMEZCUXp0RFFVTmtPenRCUVVWRUxGTkJRVk1zVDBGQlR5eERRVUZETEU5QlFVOHNSVUZCUlR0QlFVTjRRaXhOUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0QlFVTjJRaXhOUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0RFFVTnNRanM3UVVGRlJDeFBRVUZQTEVOQlFVTXNVMEZCVXl4SFFVRkhPMEZCUTJ4Q0xGTkJRVThzUlVGQlFTeHRRa0ZCUnp0QlFVTlNMRmRCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0SFFVTTFRanRCUVVORUxGTkJRVThzUlVGQlJTeHBRa0ZCVXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJRemRDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UjBGRE4wTTdRVUZEUkN4TlFVRkpMRVZCUVVVc1kwRkJVeXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTzBGQlF6RkNMRkZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdSMEZETVVNN08wRkJSVVFzVDBGQlN5eEZRVUZGTEdsQ1FVRlhPMEZCUTJoQ0xGRkJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRCUVVNeFFpeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZNc1NVRkJTU3hGUVVGRk8wRkJRM1pDTEZsQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRhRU1zUTBGQlF5eERRVUZETzBGQlEwZ3NWMEZCVHl4TlFVRk5MRU5CUVVNN1IwRkRaanM3UVVGRlJDeE5RVUZKTEVWQlFVVXNZMEZCVXl4SlFVRkpMRVZCUVVVN1FVRkRia0lzVTBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZEZEVRc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOMFFqdEhRVU5HT3p0QlFVVkVMRTlCUVVzc1JVRkJSU3hwUWtGQlZ6dEJRVU5vUWl4UlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8wRkJRMmhFTEZkQlFVOHNTVUZCU1N4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGRCUTNaRk8wRkJRMFFzVFVGQlNTeEZRVUZGTEdOQlFWTXNTMEZCU3l4RlFVRXJRenRSUVVFM1F5eEhRVUZITEhsRVFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFbEJRVWtzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RlFVRkZPenRCUVVNdlJDeFJRVUZKTEV0QlFVc3NXVUZCV1N4VlFVRlZMRVZCUVVVN1FVRkRMMElzWVVGQlR5eExRVUZMTEVOQlFVTTdTMEZEWkRzN1FVRkZSQ3hUUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03TzBGQlJYQkRMRmRCUVU4c1NVRkJTU3hWUVVGVkxFTkJRMjVDTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVOa0xFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVTm9RaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVU5hTEV0QlFVc3NRMEZEVGl4RFFVRkRPMGRCUTBnN08wRkJSVVFzWTBGQldTeEZRVUZGTEhOQ1FVRlRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTzBGQlEzWkRMRlZCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTI1RExGZEJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUTNCRk96dEJRVVZFTEdOQlFWa3NSVUZCUlN4elFrRkJVeXhIUVVGSExFVkJRVVU3UVVGRE1VSXNWMEZEUlN4SFFVRkhMRWRCUTBnc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZCTEVOQlEwNHNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGRGRFSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGRGNFSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGRGNrSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGRGNrSXNUMEZCVHl4RFFVRkRMRk5CUVZNc1JVRkJSU3hUUVVGVExFTkJRVU03UzBGRE4wSXNUMEZCVHl4RFFVRkRMRk5CUVZNc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGRGFFTXNSMEZCUnl4RFFVTklPMGRCUTBnN08wRkJSVVFzWlVGQllTeEZRVUZGTEhWQ1FVRlRMRWRCUVVjc1JVRkJSVHM3T3pzN1FVRkRNMElzVVVGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPenRCUVVWbUxGVkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUjBGQlJ5eEZRVUZKTzBGQlF6bENMRlZCUVVrc1MwRkJTeXhIUVVGSExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVU4c1EwRkJRenRCUVVOMFF5eFZRVUZKTEV0QlFVc3NTMEZCU3l4WFFVRlhMRVZCUVVVN1FVRkRla0lzWVVGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVVzc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wOUJRMnhFTzB0QlEwWXNRMEZCUXl4RFFVRkRPenRCUVVWSUxGRkJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGJrTXNUMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5xUWl4UFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEySXNWMEZCVHl4SFFVRkhMRU5CUVVNN1IwRkRXanM3UVVGRlJDeGpRVUZaTEVWQlFVVXNjMEpCUVZNc1QwRkJUeXhGUVVGRk8wRkJRemxDTEZGQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6czdRVUZGZGtJc1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOc1JDeFZRVUZKTEVOQlFVTXNSVUZCUlR0QlFVTk1MRmRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdUMEZEWkRzN1FVRkZSQ3hUUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTjBRenM3UVVGRlJDeFhRVUZQTEVkQlFVY3NRMEZCUXp0SFFVTmFPenRCUVVWRUxHVkJRV0VzUlVGQlJTeDFRa0ZCVXl4UFFVRlBMRVZCUVVVN1FVRkRMMElzVVVGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU55UXl4UFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEycENMRTlCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUldJc1YwRkJUeXhIUVVGSExFTkJRVU03UjBGRFdqdERRVU5HTEVOQlFVTTdPM0ZDUVVWaExFOUJRVThpTENKbWFXeGxJam9pWTI5a1pTMW5aVzR1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaUJuYkc5aVlXd2daR1ZtYVc1bElDb3ZYRzVwYlhCdmNuUWdleUJwYzBGeWNtRjVJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc1c1pYUWdVMjkxY21ObFRtOWtaVHRjYmx4dWRISjVJSHRjYmlBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnS2k5Y2JpQWdhV1lnS0hSNWNHVnZaaUJrWldacGJtVWdJVDA5SUNkbWRXNWpkR2x2YmljZ2ZId2dJV1JsWm1sdVpTNWhiV1FwSUh0Y2JpQWdJQ0F2THlCWFpTQmtiMjRuZENCemRYQndiM0owSUhSb2FYTWdhVzRnUVUxRUlHVnVkbWx5YjI1dFpXNTBjeTRnUm05eUlIUm9aWE5sSUdWdWRtbHliMjV0Wlc1MGN5d2dkMlVnWVhOMWMyMWxJSFJvWVhSY2JpQWdJQ0F2THlCMGFHVjVJR0Z5WlNCeWRXNXVhVzVuSUc5dUlIUm9aU0JpY205M2MyVnlJR0Z1WkNCMGFIVnpJR2hoZG1VZ2JtOGdibVZsWkNCbWIzSWdkR2hsSUhOdmRYSmpaUzF0WVhBZ2JHbGljbUZ5ZVM1Y2JpQWdJQ0JzWlhRZ1UyOTFjbU5sVFdGd0lEMGdjbVZ4ZFdseVpTZ25jMjkxY21ObExXMWhjQ2NwTzF4dUlDQWdJRk52ZFhKalpVNXZaR1VnUFNCVGIzVnlZMlZOWVhBdVUyOTFjbU5sVG05a1pUdGNiaUFnZlZ4dWZTQmpZWFJqYUNBb1pYSnlLU0I3WEc0Z0lDOHFJRTVQVUNBcUwxeHVmVnh1WEc0dktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2FXWTZJSFJsYzNSbFpDQmlkWFFnYm05MElHTnZkbVZ5WldRZ2FXNGdhWE4wWVc1aWRXd2daSFZsSUhSdklHUnBjM1FnWW5WcGJHUWdJQ292WEc1cFppQW9JVk52ZFhKalpVNXZaR1VwSUh0Y2JpQWdVMjkxY21ObFRtOWtaU0E5SUdaMWJtTjBhVzl1S0d4cGJtVXNJR052YkhWdGJpd2djM0pqUm1sc1pTd2dZMmgxYm10ektTQjdYRzRnSUNBZ2RHaHBjeTV6Y21NZ1BTQW5KenRjYmlBZ0lDQnBaaUFvWTJoMWJtdHpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtRmtaQ2hqYUhWdWEzTXBPMXh1SUNBZ0lIMWNiaUFnZlR0Y2JpQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJRzVsZUhRZ0tpOWNiaUFnVTI5MWNtTmxUbTlrWlM1d2NtOTBiM1I1Y0dVZ1BTQjdYRzRnSUNBZ1lXUmtPaUJtZFc1amRHbHZiaWhqYUhWdWEzTXBJSHRjYmlBZ0lDQWdJR2xtSUNocGMwRnljbUY1S0dOb2RXNXJjeWtwSUh0Y2JpQWdJQ0FnSUNBZ1kyaDFibXR6SUQwZ1kyaDFibXR6TG1wdmFXNG9KeWNwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZEdocGN5NXpjbU1nS3owZ1kyaDFibXR6TzF4dUlDQWdJSDBzWEc0Z0lDQWdjSEpsY0dWdVpEb2dablZ1WTNScGIyNG9ZMmgxYm10ektTQjdYRzRnSUNBZ0lDQnBaaUFvYVhOQmNuSmhlU2hqYUhWdWEzTXBLU0I3WEc0Z0lDQWdJQ0FnSUdOb2RXNXJjeUE5SUdOb2RXNXJjeTVxYjJsdUtDY25LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFJvYVhNdWMzSmpJRDBnWTJoMWJtdHpJQ3NnZEdocGN5NXpjbU03WEc0Z0lDQWdmU3hjYmlBZ0lDQjBiMU4wY21sdVoxZHBkR2hUYjNWeVkyVk5ZWEE2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhzZ1kyOWtaVG9nZEdocGN5NTBiMU4wY21sdVp5Z3BJSDA3WEc0Z0lDQWdmU3hjYmlBZ0lDQjBiMU4wY21sdVp6b2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1emNtTTdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dWZWeHVYRzVtZFc1amRHbHZiaUJqWVhOMFEyaDFibXNvWTJoMWJtc3NJR052WkdWSFpXNHNJR3h2WXlrZ2UxeHVJQ0JwWmlBb2FYTkJjbkpoZVNoamFIVnVheWtwSUh0Y2JpQWdJQ0JzWlhRZ2NtVjBJRDBnVzEwN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNQ3dnYkdWdUlEMGdZMmgxYm1zdWJHVnVaM1JvT3lCcElEd2diR1Z1T3lCcEt5c3BJSHRjYmlBZ0lDQWdJSEpsZEM1d2RYTm9LR052WkdWSFpXNHVkM0poY0NoamFIVnVhMXRwWFN3Z2JHOWpLU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUdOb2RXNXJJRDA5UFNBblltOXZiR1ZoYmljZ2ZId2dkSGx3Wlc5bUlHTm9kVzVySUQwOVBTQW5iblZ0WW1WeUp5a2dlMXh1SUNBZ0lDOHZJRWhoYm1Sc1pTQndjbWx0YVhScGRtVnpJSFJvWVhRZ2RHaGxJRk52ZFhKalpVNXZaR1VnZDJsc2JDQjBhSEp2ZHlCMWNDQnZibHh1SUNBZ0lISmxkSFZ5YmlCamFIVnVheUFySUNjbk8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCamFIVnVhenRjYm4xY2JseHVablZ1WTNScGIyNGdRMjlrWlVkbGJpaHpjbU5HYVd4bEtTQjdYRzRnSUhSb2FYTXVjM0pqUm1sc1pTQTlJSE55WTBacGJHVTdYRzRnSUhSb2FYTXVjMjkxY21ObElEMGdXMTA3WEc1OVhHNWNia052WkdWSFpXNHVjSEp2ZEc5MGVYQmxJRDBnZTF4dUlDQnBjMFZ0Y0hSNUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlBaGRHaHBjeTV6YjNWeVkyVXViR1Z1WjNSb08xeHVJQ0I5TEZ4dUlDQndjbVZ3Wlc1a09pQm1kVzVqZEdsdmJpaHpiM1Z5WTJVc0lHeHZZeWtnZTF4dUlDQWdJSFJvYVhNdWMyOTFjbU5sTG5WdWMyaHBablFvZEdocGN5NTNjbUZ3S0hOdmRYSmpaU3dnYkc5aktTazdYRzRnSUgwc1hHNGdJSEIxYzJnNklHWjFibU4wYVc5dUtITnZkWEpqWlN3Z2JHOWpLU0I3WEc0Z0lDQWdkR2hwY3k1emIzVnlZMlV1Y0hWemFDaDBhR2x6TG5keVlYQW9jMjkxY21ObExDQnNiMk1wS1R0Y2JpQWdmU3hjYmx4dUlDQnRaWEpuWlRvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2JHVjBJSE52ZFhKalpTQTlJSFJvYVhNdVpXMXdkSGtvS1R0Y2JpQWdJQ0IwYUdsekxtVmhZMmdvWm5WdVkzUnBiMjRvYkdsdVpTa2dlMXh1SUNBZ0lDQWdjMjkxY21ObExtRmtaQ2hiSnlBZ0p5d2diR2x1WlN3Z0oxeGNiaWRkS1R0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdjMjkxY21ObE8xeHVJQ0I5TEZ4dVhHNGdJR1ZoWTJnNklHWjFibU4wYVc5dUtHbDBaWElwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diR1Z1SUQwZ2RHaHBjeTV6YjNWeVkyVXViR1Z1WjNSb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdsMFpYSW9kR2hwY3k1emIzVnlZMlZiYVYwcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQmxiWEIwZVRvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2JHVjBJR3h2WXlBOUlIUm9hWE11WTNWeWNtVnVkRXh2WTJGMGFXOXVJSHg4SUhzZ2MzUmhjblE2SUh0OUlIMDdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlRiM1Z5WTJWT2IyUmxLR3h2WXk1emRHRnlkQzVzYVc1bExDQnNiMk11YzNSaGNuUXVZMjlzZFcxdUxDQjBhR2x6TG5OeVkwWnBiR1VwTzF4dUlDQjlMRnh1SUNCM2NtRndPaUJtZFc1amRHbHZiaWhqYUhWdWF5d2diRzlqSUQwZ2RHaHBjeTVqZFhKeVpXNTBURzlqWVhScGIyNGdmSHdnZXlCemRHRnlkRG9nZTMwZ2ZTa2dlMXh1SUNBZ0lHbG1JQ2hqYUhWdWF5QnBibk4wWVc1alpXOW1JRk52ZFhKalpVNXZaR1VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJqYUhWdWF6dGNiaUFnSUNCOVhHNWNiaUFnSUNCamFIVnVheUE5SUdOaGMzUkRhSFZ1YXloamFIVnVheXdnZEdocGN5d2diRzlqS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1UyOTFjbU5sVG05a1pTaGNiaUFnSUNBZ0lHeHZZeTV6ZEdGeWRDNXNhVzVsTEZ4dUlDQWdJQ0FnYkc5akxuTjBZWEowTG1OdmJIVnRiaXhjYmlBZ0lDQWdJSFJvYVhNdWMzSmpSbWxzWlN4Y2JpQWdJQ0FnSUdOb2RXNXJYRzRnSUNBZ0tUdGNiaUFnZlN4Y2JseHVJQ0JtZFc1amRHbHZia05oYkd3NklHWjFibU4wYVc5dUtHWnVMQ0IwZVhCbExDQndZWEpoYlhNcElIdGNiaUFnSUNCd1lYSmhiWE1nUFNCMGFHbHpMbWRsYm1WeVlYUmxUR2x6ZENod1lYSmhiWE1wTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5keVlYQW9XMlp1TENCMGVYQmxJRDhnSnk0bklDc2dkSGx3WlNBcklDY29KeUE2SUNjb0p5d2djR0Z5WVcxekxDQW5LU2RkS1R0Y2JpQWdmU3hjYmx4dUlDQnhkVzkwWldSVGRISnBibWM2SUdaMWJtTjBhVzl1S0hOMGNpa2dlMXh1SUNBZ0lISmxkSFZ5YmlBb1hHNGdJQ0FnSUNBblhDSW5JQ3RjYmlBZ0lDQWdJQ2h6ZEhJZ0t5QW5KeWxjYmlBZ0lDQWdJQ0FnTG5KbGNHeGhZMlVvTDF4Y1hGd3ZaeXdnSjF4Y1hGeGNYRnhjSnlsY2JpQWdJQ0FnSUNBZ0xuSmxjR3hoWTJVb0wxd2lMMmNzSUNkY1hGeGNYQ0luS1Z4dUlDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhGeHVMMmNzSUNkY1hGeGNiaWNwWEc0Z0lDQWdJQ0FnSUM1eVpYQnNZV05sS0M5Y1hISXZaeXdnSjF4Y1hGeHlKeWxjYmlBZ0lDQWdJQ0FnTG5KbGNHeGhZMlVvTDF4Y2RUSXdNamd2Wnl3Z0oxeGNYRngxTWpBeU9DY3BJQzh2SUZCbGNpQkZZMjFoTFRJMk1pQTNMak1nS3lBM0xqZ3VORnh1SUNBZ0lDQWdJQ0F1Y21Wd2JHRmpaU2d2WEZ4MU1qQXlPUzluTENBblhGeGNYSFV5TURJNUp5a2dLMXh1SUNBZ0lDQWdKMXdpSjF4dUlDQWdJQ2s3WEc0Z0lIMHNYRzVjYmlBZ2IySnFaV04wVEdsMFpYSmhiRG9nWm5WdVkzUnBiMjRvYjJKcUtTQjdYRzRnSUNBZ2JHVjBJSEJoYVhKeklEMGdXMTA3WEc1Y2JpQWdJQ0JQWW1wbFkzUXVhMlY1Y3lodlltb3BMbVp2Y2tWaFkyZ29hMlY1SUQwK0lIdGNiaUFnSUNBZ0lHeGxkQ0IyWVd4MVpTQTlJR05oYzNSRGFIVnVheWh2WW1wYmEyVjVYU3dnZEdocGN5azdYRzRnSUNBZ0lDQnBaaUFvZG1Gc2RXVWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJSEJoYVhKekxuQjFjMmdvVzNSb2FYTXVjWFZ2ZEdWa1UzUnlhVzVuS0d0bGVTa3NJQ2M2Snl3Z2RtRnNkV1ZkS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUd4bGRDQnlaWFFnUFNCMGFHbHpMbWRsYm1WeVlYUmxUR2x6ZENod1lXbHljeWs3WEc0Z0lDQWdjbVYwTG5CeVpYQmxibVFvSjNzbktUdGNiaUFnSUNCeVpYUXVZV1JrS0NkOUp5azdYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlN4Y2JseHVJQ0JuWlc1bGNtRjBaVXhwYzNRNklHWjFibU4wYVc5dUtHVnVkSEpwWlhNcElIdGNiaUFnSUNCc1pYUWdjbVYwSUQwZ2RHaHBjeTVsYlhCMGVTZ3BPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBc0lHeGxiaUE5SUdWdWRISnBaWE11YkdWdVozUm9PeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNiaUFnSUNBZ0lHbG1JQ2hwS1NCN1hHNGdJQ0FnSUNBZ0lISmxkQzVoWkdRb0p5d25LVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMExtRmtaQ2hqWVhOMFEyaDFibXNvWlc1MGNtbGxjMXRwWFN3Z2RHaHBjeWtwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnlaWFE3WEc0Z0lIMHNYRzVjYmlBZ1oyVnVaWEpoZEdWQmNuSmhlVG9nWm5WdVkzUnBiMjRvWlc1MGNtbGxjeWtnZTF4dUlDQWdJR3hsZENCeVpYUWdQU0IwYUdsekxtZGxibVZ5WVhSbFRHbHpkQ2hsYm5SeWFXVnpLVHRjYmlBZ0lDQnlaWFF1Y0hKbGNHVnVaQ2duV3ljcE8xeHVJQ0FnSUhKbGRDNWhaR1FvSjEwbktUdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgxY2JuMDdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRU52WkdWSFpXNDdYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2Jhc2UgPSByZXF1aXJlKCcuLi9iYXNlJyk7XG5cbnZhciBfZXhjZXB0aW9uID0gcmVxdWlyZSgnLi4vZXhjZXB0aW9uJyk7XG5cbnZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG52YXIgX2NvZGVHZW4gPSByZXF1aXJlKCcuL2NvZGUtZ2VuJyk7XG5cbnZhciBfY29kZUdlbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb2RlR2VuKTtcblxuZnVuY3Rpb24gTGl0ZXJhbCh2YWx1ZSkge1xuICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIEphdmFTY3JpcHRDb21waWxlcigpIHt9XG5cbkphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUgPSB7XG4gIC8vIFBVQkxJQyBBUEk6IFlvdSBjYW4gb3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyBpbiBhIHN1YmNsYXNzIHRvIHByb3ZpZGVcbiAgLy8gYWx0ZXJuYXRpdmUgY29tcGlsZWQgZm9ybXMgZm9yIG5hbWUgbG9va3VwIGFuZCBidWZmZXJpbmcgc2VtYW50aWNzXG4gIG5hbWVMb29rdXA6IGZ1bmN0aW9uIG5hbWVMb29rdXAocGFyZW50LCBuYW1lIC8qLCAgdHlwZSAqLykge1xuICAgIHJldHVybiB0aGlzLmludGVybmFsTmFtZUxvb2t1cChwYXJlbnQsIG5hbWUpO1xuICB9LFxuICBkZXB0aGVkTG9va3VwOiBmdW5jdGlvbiBkZXB0aGVkTG9va3VwKG5hbWUpIHtcbiAgICByZXR1cm4gW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubG9va3VwJyksICcoZGVwdGhzLCBcIicsIG5hbWUsICdcIiknXTtcbiAgfSxcblxuICBjb21waWxlckluZm86IGZ1bmN0aW9uIGNvbXBpbGVySW5mbygpIHtcbiAgICB2YXIgcmV2aXNpb24gPSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTixcbiAgICAgICAgdmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VTW3JldmlzaW9uXTtcbiAgICByZXR1cm4gW3JldmlzaW9uLCB2ZXJzaW9uc107XG4gIH0sXG5cbiAgYXBwZW5kVG9CdWZmZXI6IGZ1bmN0aW9uIGFwcGVuZFRvQnVmZmVyKHNvdXJjZSwgbG9jYXRpb24sIGV4cGxpY2l0KSB7XG4gICAgLy8gRm9yY2UgYSBzb3VyY2UgYXMgdGhpcyBzaW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy5cbiAgICBpZiAoIV91dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHNvdXJjZSA9IFtzb3VyY2VdO1xuICAgIH1cbiAgICBzb3VyY2UgPSB0aGlzLnNvdXJjZS53cmFwKHNvdXJjZSwgbG9jYXRpb24pO1xuXG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHtcbiAgICAgIHJldHVybiBbJ3JldHVybiAnLCBzb3VyY2UsICc7J107XG4gICAgfSBlbHNlIGlmIChleHBsaWNpdCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBvcGVyYXRpb24gb2NjdXJzIGFzIGEgY2hpbGQgb2YgYW5vdGhlclxuICAgICAgLy8gY29uc3RydWN0LCBnZW5lcmFsbHkgYnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZlclxuICAgICAgLy8gb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgZW1pdHRlZCBjb2RlIGdvZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uXG4gICAgICByZXR1cm4gWydidWZmZXIgKz0gJywgc291cmNlLCAnOyddO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2UuYXBwZW5kVG9CdWZmZXIgPSB0cnVlO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gIH0sXG5cbiAgaW5pdGlhbGl6ZUJ1ZmZlcjogZnVuY3Rpb24gaW5pdGlhbGl6ZUJ1ZmZlcigpIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmcoJycpO1xuICB9LFxuICAvLyBFTkQgUFVCTElDIEFQSVxuICBpbnRlcm5hbE5hbWVMb29rdXA6IGZ1bmN0aW9uIGludGVybmFsTmFtZUxvb2t1cChwYXJlbnQsIG5hbWUpIHtcbiAgICB0aGlzLmxvb2t1cFByb3BlcnR5RnVuY3Rpb25Jc1VzZWQgPSB0cnVlO1xuICAgIHJldHVybiBbJ2xvb2t1cFByb3BlcnR5KCcsIHBhcmVudCwgJywnLCBKU09OLnN0cmluZ2lmeShuYW1lKSwgJyknXTtcbiAgfSxcblxuICBsb29rdXBQcm9wZXJ0eUZ1bmN0aW9uSXNVc2VkOiBmYWxzZSxcblxuICBjb21waWxlOiBmdW5jdGlvbiBjb21waWxlKGVudmlyb25tZW50LCBvcHRpb25zLCBjb250ZXh0LCBhc09iamVjdCkge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc3RyaW5nUGFyYW1zID0gdGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtcztcbiAgICB0aGlzLnRyYWNrSWRzID0gdGhpcy5vcHRpb25zLnRyYWNrSWRzO1xuICAgIHRoaXMucHJlY29tcGlsZSA9ICFhc09iamVjdDtcblxuICAgIHRoaXMubmFtZSA9IHRoaXMuZW52aXJvbm1lbnQubmFtZTtcbiAgICB0aGlzLmlzQ2hpbGQgPSAhIWNvbnRleHQ7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dCB8fCB7XG4gICAgICBkZWNvcmF0b3JzOiBbXSxcbiAgICAgIHByb2dyYW1zOiBbXSxcbiAgICAgIGVudmlyb25tZW50czogW11cbiAgICB9O1xuXG4gICAgdGhpcy5wcmVhbWJsZSgpO1xuXG4gICAgdGhpcy5zdGFja1Nsb3QgPSAwO1xuICAgIHRoaXMuc3RhY2tWYXJzID0gW107XG4gICAgdGhpcy5hbGlhc2VzID0ge307XG4gICAgdGhpcy5yZWdpc3RlcnMgPSB7IGxpc3Q6IFtdIH07XG4gICAgdGhpcy5oYXNoZXMgPSBbXTtcbiAgICB0aGlzLmNvbXBpbGVTdGFjayA9IFtdO1xuICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTtcbiAgICB0aGlzLmJsb2NrUGFyYW1zID0gW107XG5cbiAgICB0aGlzLmNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGVudmlyb25tZW50LnVzZURlcHRocyB8fCBlbnZpcm9ubWVudC51c2VEZWNvcmF0b3JzIHx8IHRoaXMub3B0aW9ucy5jb21wYXQ7XG4gICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZW52aXJvbm1lbnQudXNlQmxvY2tQYXJhbXM7XG5cbiAgICB2YXIgb3Bjb2RlcyA9IGVudmlyb25tZW50Lm9wY29kZXMsXG4gICAgICAgIG9wY29kZSA9IHVuZGVmaW5lZCxcbiAgICAgICAgZmlyc3RMb2MgPSB1bmRlZmluZWQsXG4gICAgICAgIGkgPSB1bmRlZmluZWQsXG4gICAgICAgIGwgPSB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGkgPSAwLCBsID0gb3Bjb2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIG9wY29kZSA9IG9wY29kZXNbaV07XG5cbiAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IG9wY29kZS5sb2M7XG4gICAgICBmaXJzdExvYyA9IGZpcnN0TG9jIHx8IG9wY29kZS5sb2M7XG4gICAgICB0aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5KHRoaXMsIG9wY29kZS5hcmdzKTtcbiAgICB9XG5cbiAgICAvLyBGbHVzaCBhbnkgdHJhaWxpbmcgY29udGVudCB0aGF0IG1pZ2h0IGJlIHBlbmRpbmcuXG4gICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uID0gZmlyc3RMb2M7XG4gICAgdGhpcy5wdXNoU291cmNlKCcnKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRoaXMuc3RhY2tTbG90IHx8IHRoaXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0NvbXBpbGUgY29tcGxldGVkIHdpdGggY29udGVudCBsZWZ0IG9uIHN0YWNrJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlO1xuXG4gICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZChbJ3ZhciBkZWNvcmF0b3JzID0gY29udGFpbmVyLmRlY29yYXRvcnMsICcsIHRoaXMubG9va3VwUHJvcGVydHlGdW5jdGlvblZhckRlY2xhcmF0aW9uKCksICc7XFxuJ10pO1xuICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ3JldHVybiBmbjsnKTtcblxuICAgICAgaWYgKGFzT2JqZWN0KSB7XG4gICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IEZ1bmN0aW9uLmFwcGx5KHRoaXMsIFsnZm4nLCAncHJvcHMnLCAnY29udGFpbmVyJywgJ2RlcHRoMCcsICdkYXRhJywgJ2Jsb2NrUGFyYW1zJywgJ2RlcHRocycsIHRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgnZnVuY3Rpb24oZm4sIHByb3BzLCBjb250YWluZXIsIGRlcHRoMCwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xcbicpO1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMucHVzaCgnfVxcbicpO1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSB0aGlzLmRlY29yYXRvcnMubWVyZ2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHZhciBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2JqZWN0KTtcbiAgICBpZiAoIXRoaXMuaXNDaGlsZCkge1xuICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgY29tcGlsZXI6IHRoaXMuY29tcGlsZXJJbmZvKCksXG4gICAgICAgIG1haW46IGZuXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5kZWNvcmF0b3JzKSB7XG4gICAgICAgIHJldC5tYWluX2QgPSB0aGlzLmRlY29yYXRvcnM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG4gICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIF9jb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIHByb2dyYW1zID0gX2NvbnRleHQucHJvZ3JhbXM7XG4gICAgICB2YXIgZGVjb3JhdG9ycyA9IF9jb250ZXh0LmRlY29yYXRvcnM7XG5cbiAgICAgIGZvciAoaSA9IDAsIGwgPSBwcm9ncmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKHByb2dyYW1zW2ldKSB7XG4gICAgICAgICAgcmV0W2ldID0gcHJvZ3JhbXNbaV07XG4gICAgICAgICAgaWYgKGRlY29yYXRvcnNbaV0pIHtcbiAgICAgICAgICAgIHJldFtpICsgJ19kJ10gPSBkZWNvcmF0b3JzW2ldO1xuICAgICAgICAgICAgcmV0LnVzZURlY29yYXRvcnMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC51c2VQYXJ0aWFsKSB7XG4gICAgICAgIHJldC51c2VQYXJ0aWFsID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGF0YSkge1xuICAgICAgICByZXQudXNlRGF0YSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy51c2VEZXB0aHMpIHtcbiAgICAgICAgcmV0LnVzZURlcHRocyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcykge1xuICAgICAgICByZXQudXNlQmxvY2tQYXJhbXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXQpIHtcbiAgICAgICAgcmV0LmNvbXBhdCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghYXNPYmplY3QpIHtcbiAgICAgICAgcmV0LmNvbXBpbGVyID0gSlNPTi5zdHJpbmdpZnkocmV0LmNvbXBpbGVyKTtcblxuICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSB7IHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9IH07XG4gICAgICAgIHJldCA9IHRoaXMub2JqZWN0TGl0ZXJhbChyZXQpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnNyY05hbWUpIHtcbiAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291cmNlTWFwKHsgZmlsZTogb3B0aW9ucy5kZXN0TmFtZSB9KTtcbiAgICAgICAgICByZXQubWFwID0gcmV0Lm1hcCAmJiByZXQubWFwLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5jb21waWxlck9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmbjtcbiAgICB9XG4gIH0sXG5cbiAgcHJlYW1ibGU6IGZ1bmN0aW9uIHByZWFtYmxlKCkge1xuICAgIC8vIHRyYWNrIHRoZSBsYXN0IGNvbnRleHQgcHVzaGVkIGludG8gcGxhY2UgdG8gYWxsb3cgc2tpcHBpbmcgdGhlXG4gICAgLy8gZ2V0Q29udGV4dCBvcGNvZGUgd2hlbiBpdCB3b3VsZCBiZSBhIG5vb3BcbiAgICB0aGlzLmxhc3RDb250ZXh0ID0gMDtcbiAgICB0aGlzLnNvdXJjZSA9IG5ldyBfY29kZUdlbjJbJ2RlZmF1bHQnXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSk7XG4gICAgdGhpcy5kZWNvcmF0b3JzID0gbmV3IF9jb2RlR2VuMlsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTtcbiAgfSxcblxuICBjcmVhdGVGdW5jdGlvbkNvbnRleHQ6IGZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCkge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHZhckRlY2xhcmF0aW9ucyA9ICcnO1xuXG4gICAgdmFyIGxvY2FscyA9IHRoaXMuc3RhY2tWYXJzLmNvbmNhdCh0aGlzLnJlZ2lzdGVycy5saXN0KTtcbiAgICBpZiAobG9jYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCAnICsgbG9jYWxzLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzXG4gICAgLy9cbiAgICAvLyBXaGVuIHVzaW5nIHRydWUgU291cmNlTm9kZXMsIHRoaXMgd2lsbCB1cGRhdGUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGFsaWFzXG4gICAgLy8gYXMgdGhlIHNvdXJjZSBub2RlcyBhcmUgcmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBub2RlIGNvbXBpbGF0aW9uIG1vZGUsXG4gICAgLy8gYWxpYXNlcyB3aWxsIG5vdCBiZSB1c2VkLCBidXQgdGhpcyBjYXNlIGlzIGFscmVhZHkgYmVpbmcgcnVuIG9uIHRoZSBjbGllbnQgYW5kXG4gICAgLy8gd2UgYXJlbid0IGNvbmNlcm4gYWJvdXQgbWluaW1pemluZyB0aGUgdGVtcGxhdGUgc2l6ZS5cbiAgICB2YXIgYWxpYXNDb3VudCA9IDA7XG4gICAgT2JqZWN0LmtleXModGhpcy5hbGlhc2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgICAgdmFyIG5vZGUgPSBfdGhpcy5hbGlhc2VzW2FsaWFzXTtcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUucmVmZXJlbmNlQ291bnQgPiAxKSB7XG4gICAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBhbGlhcycgKyArK2FsaWFzQ291bnQgKyAnPScgKyBhbGlhcztcbiAgICAgICAgbm9kZS5jaGlsZHJlblswXSA9ICdhbGlhcycgKyBhbGlhc0NvdW50O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMubG9va3VwUHJvcGVydHlGdW5jdGlvbklzVXNlZCkge1xuICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsICcgKyB0aGlzLmxvb2t1cFByb3BlcnR5RnVuY3Rpb25WYXJEZWNsYXJhdGlvbigpO1xuICAgIH1cblxuICAgIHZhciBwYXJhbXMgPSBbJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnaGVscGVycycsICdwYXJ0aWFscycsICdkYXRhJ107XG5cbiAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykge1xuICAgICAgcGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZURlcHRocykge1xuICAgICAgcGFyYW1zLnB1c2goJ2RlcHRocycpO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gYSBzZWNvbmQgcGFzcyBvdmVyIHRoZSBvdXRwdXQgdG8gbWVyZ2UgY29udGVudCB3aGVuIHBvc3NpYmxlXG4gICAgdmFyIHNvdXJjZSA9IHRoaXMubWVyZ2VTb3VyY2UodmFyRGVjbGFyYXRpb25zKTtcblxuICAgIGlmIChhc09iamVjdCkge1xuICAgICAgcGFyYW1zLnB1c2goc291cmNlKTtcblxuICAgICAgcmV0dXJuIEZ1bmN0aW9uLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNvdXJjZS53cmFwKFsnZnVuY3Rpb24oJywgcGFyYW1zLmpvaW4oJywnKSwgJykge1xcbiAgJywgc291cmNlLCAnfSddKTtcbiAgICB9XG4gIH0sXG4gIG1lcmdlU291cmNlOiBmdW5jdGlvbiBtZXJnZVNvdXJjZSh2YXJEZWNsYXJhdGlvbnMpIHtcbiAgICB2YXIgaXNTaW1wbGUgPSB0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlLFxuICAgICAgICBhcHBlbmRPbmx5ID0gIXRoaXMuZm9yY2VCdWZmZXIsXG4gICAgICAgIGFwcGVuZEZpcnN0ID0gdW5kZWZpbmVkLFxuICAgICAgICBzb3VyY2VTZWVuID0gdW5kZWZpbmVkLFxuICAgICAgICBidWZmZXJTdGFydCA9IHVuZGVmaW5lZCxcbiAgICAgICAgYnVmZmVyRW5kID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc291cmNlLmVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVmZmVyKSB7XG4gICAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICAgIGxpbmUucHJlcGVuZCgnICArICcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTtcbiAgICAgICAgfVxuICAgICAgICBidWZmZXJFbmQgPSBsaW5lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7XG4gICAgICAgICAgaWYgKCFzb3VyY2VTZWVuKSB7XG4gICAgICAgICAgICBhcHBlbmRGaXJzdCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ2J1ZmZlciArPSAnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpO1xuICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyRW5kID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgc291cmNlU2VlbiA9IHRydWU7XG4gICAgICAgIGlmICghaXNTaW1wbGUpIHtcbiAgICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChhcHBlbmRPbmx5KSB7XG4gICAgICBpZiAoYnVmZmVyU3RhcnQpIHtcbiAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuICcpO1xuICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFzb3VyY2VTZWVuKSB7XG4gICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiBcIlwiOycpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgYnVmZmVyID0gJyArIChhcHBlbmRGaXJzdCA/ICcnIDogdGhpcy5pbml0aWFsaXplQnVmZmVyKCkpO1xuXG4gICAgICBpZiAoYnVmZmVyU3RhcnQpIHtcbiAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuIGJ1ZmZlciArICcpO1xuICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gYnVmZmVyOycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YXJEZWNsYXJhdGlvbnMpIHtcbiAgICAgIHRoaXMuc291cmNlLnByZXBlbmQoJ3ZhciAnICsgdmFyRGVjbGFyYXRpb25zLnN1YnN0cmluZygyKSArIChhcHBlbmRGaXJzdCA/ICcnIDogJztcXG4nKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc291cmNlLm1lcmdlKCk7XG4gIH0sXG5cbiAgbG9va3VwUHJvcGVydHlGdW5jdGlvblZhckRlY2xhcmF0aW9uOiBmdW5jdGlvbiBsb29rdXBQcm9wZXJ0eUZ1bmN0aW9uVmFyRGVjbGFyYXRpb24oKSB7XG4gICAgcmV0dXJuICdcXG4gICAgICBsb29rdXBQcm9wZXJ0eSA9IGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eSB8fCBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcXG4gICAgICAgICAgcmV0dXJuIHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxcbiAgICB9XFxuICAgICcudHJpbSgpO1xuICB9LFxuXG4gIC8vIFtibG9ja1ZhbHVlXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZVxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9ja0hlbHBlck1pc3NpbmdcbiAgLy9cbiAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBvcGNvZGUgaXMgdG8gdGFrZSBhIGJsb2NrIG9mIHRoZSBmb3JtXG4gIC8vIGB7eyN0aGlzLmZvb319Li4ue3svdGhpcy5mb299fWAsIHJlc29sdmUgdGhlIHZhbHVlIG9mIGBmb29gLCBhbmRcbiAgLy8gcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgd2l0aCB0aGUgcmVzdWx0IG9mIHByb3Blcmx5XG4gIC8vIGludm9raW5nIGJsb2NrSGVscGVyTWlzc2luZy5cbiAgYmxvY2tWYWx1ZTogZnVuY3Rpb24gYmxvY2tWYWx1ZShuYW1lKSB7XG4gICAgdmFyIGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdjb250YWluZXIuaG9va3MuYmxvY2tIZWxwZXJNaXNzaW5nJyksXG4gICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTtcbiAgICB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCAwLCBwYXJhbXMpO1xuXG4gICAgdmFyIGJsb2NrTmFtZSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGJsb2NrTmFtZSk7XG5cbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpKTtcbiAgfSxcblxuICAvLyBbYW1iaWd1b3VzQmxvY2tWYWx1ZV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWVcbiAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9yZTogbGFzdEhlbHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55XG4gIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhlbHBlcjogc2FtZSBhcyBbYmxvY2tWYWx1ZV1cbiAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVscGVyOiB2YWx1ZVxuICBhbWJpZ3VvdXNCbG9ja1ZhbHVlOiBmdW5jdGlvbiBhbWJpZ3VvdXNCbG9ja1ZhbHVlKCkge1xuICAgIC8vIFdlJ3JlIGJlaW5nIGEgYml0IGNoZWVreSBhbmQgcmV1c2luZyB0aGUgb3B0aW9ucyB2YWx1ZSBmcm9tIHRoZSBwcmlvciBleGVjXG4gICAgdmFyIGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdjb250YWluZXIuaG9va3MuYmxvY2tIZWxwZXJNaXNzaW5nJyksXG4gICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTtcbiAgICB0aGlzLnNldHVwSGVscGVyQXJncygnJywgMCwgcGFyYW1zLCB0cnVlKTtcblxuICAgIHRoaXMuZmx1c2hJbmxpbmUoKTtcblxuICAgIHZhciBjdXJyZW50ID0gdGhpcy50b3BTdGFjaygpO1xuICAgIHBhcmFtcy5zcGxpY2UoMSwgMCwgY3VycmVudCk7XG5cbiAgICB0aGlzLnB1c2hTb3VyY2UoWydpZiAoIScsIHRoaXMubGFzdEhlbHBlciwgJykgeyAnLCBjdXJyZW50LCAnID0gJywgdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpLCAnfSddKTtcbiAgfSxcblxuICAvLyBbYXBwZW5kQ29udGVudF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vXG4gIC8vIEFwcGVuZHMgdGhlIHN0cmluZyB2YWx1ZSBvZiBgY29udGVudGAgdG8gdGhlIGN1cnJlbnQgYnVmZmVyXG4gIGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uIGFwcGVuZENvbnRlbnQoY29udGVudCkge1xuICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5wZW5kaW5nQ29udGVudCArIGNvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSBjb250ZW50O1xuICB9LFxuXG4gIC8vIFthcHBlbmRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gQ29lcmNlcyBgdmFsdWVgIHRvIGEgU3RyaW5nIGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci5cbiAgLy9cbiAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0aHksIG9yIDAsIGl0IGlzIGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWRcbiAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1wdHkgc3RyaW5nIGlzIGFwcGVuZGVkXG4gIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKCkge1xuICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHtcbiAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uIChjdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBbJyAhPSBudWxsID8gJywgY3VycmVudCwgJyA6IFwiXCInXTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnBvcFN0YWNrKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGxvY2FsID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgdGhpcy5wdXNoU291cmNlKFsnaWYgKCcsIGxvY2FsLCAnICE9IG51bGwpIHsgJywgdGhpcy5hcHBlbmRUb0J1ZmZlcihsb2NhbCwgdW5kZWZpbmVkLCB0cnVlKSwgJyB9J10pO1xuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHtcbiAgICAgICAgdGhpcy5wdXNoU291cmNlKFsnZWxzZSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIoXCInJ1wiLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8vIFthcHBlbmRFc2NhcGVkXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vXG4gIC8vIEVzY2FwZSBgdmFsdWVgIGFuZCBhcHBlbmQgaXQgdG8gdGhlIGJ1ZmZlclxuICBhcHBlbmRFc2NhcGVkOiBmdW5jdGlvbiBhcHBlbmRFc2NhcGVkKCkge1xuICAgIHRoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24nKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTtcbiAgfSxcblxuICAvLyBbZ2V0Q29udGV4dF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjogbGFzdENvbnRleHQ9ZGVwdGhcbiAgLy9cbiAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYGxhc3RDb250ZXh0YCBjb21waWxlciB2YWx1ZSB0byB0aGUgZGVwdGhcbiAgZ2V0Q29udGV4dDogZnVuY3Rpb24gZ2V0Q29udGV4dChkZXB0aCkge1xuICAgIHRoaXMubGFzdENvbnRleHQgPSBkZXB0aDtcbiAgfSxcblxuICAvLyBbcHVzaENvbnRleHRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBjb250ZXh0IG9udG8gdGhlIHN0YWNrLlxuICBwdXNoQ29udGV4dDogZnVuY3Rpb24gcHVzaENvbnRleHQoKSB7XG4gICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMuY29udGV4dE5hbWUodGhpcy5sYXN0Q29udGV4dCkpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBPbkNvbnRleHRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVdLCAuLi5cbiAgLy9cbiAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBuYW1lYCBvbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwdXNoZXNcbiAgLy8gaXQgb250byB0aGUgc3RhY2suXG4gIGxvb2t1cE9uQ29udGV4dDogZnVuY3Rpb24gbG9va3VwT25Db250ZXh0KHBhcnRzLCBmYWxzeSwgc3RyaWN0LCBzY29wZWQpIHtcbiAgICB2YXIgaSA9IDA7XG5cbiAgICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYmICF0aGlzLmxhc3RDb250ZXh0KSB7XG4gICAgICAvLyBUaGUgZGVwdGhlZCBxdWVyeSBpcyBleHBlY3RlZCB0byBoYW5kbGUgdGhlIHVuZGVmaW5lZCBsb2dpYyBmb3IgdGhlIHJvb3QgbGV2ZWwgdGhhdFxuICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgYmVsb3csIHNvIHdlIGV2YWx1YXRlIHRoYXQgZGlyZWN0bHkgaW4gY29tcGF0IG1vZGVcbiAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRMb29rdXAocGFydHNbaSsrXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hDb250ZXh0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KTtcbiAgfSxcblxuICAvLyBbbG9va3VwQmxvY2tQYXJhbV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uXG4gIC8vXG4gIC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgcGFydHNgIG9uIHRoZSBnaXZlbiBibG9jayBwYXJhbSBhbmQgcHVzaGVzXG4gIC8vIGl0IG9udG8gdGhlIHN0YWNrLlxuICBsb29rdXBCbG9ja1BhcmFtOiBmdW5jdGlvbiBsb29rdXBCbG9ja1BhcmFtKGJsb2NrUGFyYW1JZCwgcGFydHMpIHtcbiAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTtcblxuICAgIHRoaXMucHVzaChbJ2Jsb2NrUGFyYW1zWycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTtcbiAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIDEpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBEYXRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBkYXRhLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCB0aGUgZGF0YSBsb29rdXAgb3BlcmF0b3JcbiAgbG9va3VwRGF0YTogZnVuY3Rpb24gbG9va3VwRGF0YShkZXB0aCwgcGFydHMsIHN0cmljdCkge1xuICAgIGlmICghZGVwdGgpIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnZGF0YScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2NvbnRhaW5lci5kYXRhKGRhdGEsICcgKyBkZXB0aCArICcpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlUGF0aCgnZGF0YScsIHBhcnRzLCAwLCB0cnVlLCBzdHJpY3QpO1xuICB9LFxuXG4gIHJlc29sdmVQYXRoOiBmdW5jdGlvbiByZXNvbHZlUGF0aCh0eXBlLCBwYXJ0cywgaSwgZmFsc3ksIHN0cmljdCkge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc3RyaWN0IHx8IHRoaXMub3B0aW9ucy5hc3N1bWVPYmplY3RzKSB7XG4gICAgICB0aGlzLnB1c2goc3RyaWN0TG9va3VwKHRoaXMub3B0aW9ucy5zdHJpY3QgJiYgc3RyaWN0LCB0aGlzLCBwYXJ0cywgdHlwZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBsZW4gPSBwYXJ0cy5sZW5ndGg7XG4gICAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG4gICAgICB0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbiAoY3VycmVudCkge1xuICAgICAgICB2YXIgbG9va3VwID0gX3RoaXMyLm5hbWVMb29rdXAoY3VycmVudCwgcGFydHNbaV0sIHR5cGUpO1xuICAgICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHByb3Blcmx5IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKVxuICAgICAgICAvLyBuZWVkcyB0byBoYXZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGVzZSB2YWx1ZXMuXG4gICAgICAgIGlmICghZmFsc3kpIHtcbiAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxvb2t1cCwgJyA6ICcsIGN1cnJlbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW4gdXNlIGdlbmVyaWMgZmFsc3kgaGFuZGxpbmdcbiAgICAgICAgICByZXR1cm4gWycgJiYgJywgbG9va3VwXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuICAgIH1cbiAgfSxcblxuICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFtYmRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLlxuICAvL1xuICAvLyBJZiB0aGUgYHZhbHVlYCBpcyBhIGxhbWJkYSwgcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgYnlcbiAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhXG4gIHJlc29sdmVQb3NzaWJsZUxhbWJkYTogZnVuY3Rpb24gcmVzb2x2ZVBvc3NpYmxlTGFtYmRhKCkge1xuICAgIHRoaXMucHVzaChbdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5sYW1iZGEnKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcsICcsIHRoaXMuY29udGV4dE5hbWUoMCksICcpJ10pO1xuICB9LFxuXG4gIC8vIFtwdXNoU3RyaW5nUGFyYW1dXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHN0cmluZywgY3VycmVudENvbnRleHQsIC4uLlxuICAvL1xuICAvLyBUaGlzIG9wY29kZSBpcyBkZXNpZ25lZCBmb3IgdXNlIGluIHN0cmluZyBtb2RlLCB3aGljaFxuICAvLyBwcm92aWRlcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgcGFyYW1ldGVyIGFsb25nIHdpdGggaXRzXG4gIC8vIGRlcHRoIHJhdGhlciB0aGFuIHJlc29sdmluZyBpdCBpbW1lZGlhdGVseS5cbiAgcHVzaFN0cmluZ1BhcmFtOiBmdW5jdGlvbiBwdXNoU3RyaW5nUGFyYW0oc3RyaW5nLCB0eXBlKSB7XG4gICAgdGhpcy5wdXNoQ29udGV4dCgpO1xuICAgIHRoaXMucHVzaFN0cmluZyh0eXBlKTtcblxuICAgIC8vIElmIGl0J3MgYSBzdWJleHByZXNzaW9uLCB0aGUgc3RyaW5nIHJlc3VsdFxuICAgIC8vIHdpbGwgYmUgcHVzaGVkIGFmdGVyIHRoaXMgb3Bjb2RlLlxuICAgIGlmICh0eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnB1c2hTdHJpbmcoc3RyaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChzdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBlbXB0eUhhc2g6IGZ1bmN0aW9uIGVtcHR5SGFzaChvbWl0RW1wdHkpIHtcbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoSWRzXG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoQ29udGV4dHNcbiAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaFR5cGVzXG4gICAgfVxuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkgPyAndW5kZWZpbmVkJyA6ICd7fScpO1xuICB9LFxuICBwdXNoSGFzaDogZnVuY3Rpb24gcHVzaEhhc2goKSB7XG4gICAgaWYgKHRoaXMuaGFzaCkge1xuICAgICAgdGhpcy5oYXNoZXMucHVzaCh0aGlzLmhhc2gpO1xuICAgIH1cbiAgICB0aGlzLmhhc2ggPSB7IHZhbHVlczoge30sIHR5cGVzOiBbXSwgY29udGV4dHM6IFtdLCBpZHM6IFtdIH07XG4gIH0sXG4gIHBvcEhhc2g6IGZ1bmN0aW9uIHBvcEhhc2goKSB7XG4gICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7XG4gICAgdGhpcy5oYXNoID0gdGhpcy5oYXNoZXMucG9wKCk7XG5cbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLmlkcykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC5jb250ZXh0cykpO1xuICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLnR5cGVzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLnZhbHVlcykpO1xuICB9LFxuXG4gIC8vIFtwdXNoU3RyaW5nXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBxdW90ZWRTdHJpbmcoc3RyaW5nKSwgLi4uXG4gIC8vXG4gIC8vIFB1c2ggYSBxdW90ZWQgdmVyc2lvbiBvZiBgc3RyaW5nYCBvbnRvIHRoZSBzdGFja1xuICBwdXNoU3RyaW5nOiBmdW5jdGlvbiBwdXNoU3RyaW5nKHN0cmluZykge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyhzdHJpbmcpKTtcbiAgfSxcblxuICAvLyBbcHVzaExpdGVyYWxdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHZhbHVlLCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIGEgdmFsdWUgb250byB0aGUgc3RhY2suIFRoaXMgb3BlcmF0aW9uIHByZXZlbnRzXG4gIC8vIHRoZSBjb21waWxlciBmcm9tIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGhvbGRcbiAgLy8gaXQuXG4gIHB1c2hMaXRlcmFsOiBmdW5jdGlvbiBwdXNoTGl0ZXJhbCh2YWx1ZSkge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh2YWx1ZSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hQcm9ncmFtXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBwcm9ncmFtKGd1aWQpLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0YWtlc1xuICAvLyBhIGNvbXBpbGUtdGltZSBndWlkIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgcnVudGltZS1hY2Nlc3NpYmxlXG4gIC8vIGV4cHJlc3Npb24uXG4gIHB1c2hQcm9ncmFtOiBmdW5jdGlvbiBwdXNoUHJvZ3JhbShndWlkKSB7XG4gICAgaWYgKGd1aWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwobnVsbCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFtyZWdpc3RlckRlY29yYXRvcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGRlY29yYXRvcixcbiAgLy8gYW5kIGluc2VydHMgdGhlIGRlY29yYXRvciBpbnRvIHRoZSBkZWNvcmF0b3JzIGxpc3QuXG4gIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiByZWdpc3RlckRlY29yYXRvcihwYXJhbVNpemUsIG5hbWUpIHtcbiAgICB2YXIgZm91bmREZWNvcmF0b3IgPSB0aGlzLm5hbWVMb29rdXAoJ2RlY29yYXRvcnMnLCBuYW1lLCAnZGVjb3JhdG9yJyksXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUpO1xuXG4gICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goWydmbiA9ICcsIHRoaXMuZGVjb3JhdG9ycy5mdW5jdGlvbkNhbGwoZm91bmREZWNvcmF0b3IsICcnLCBbJ2ZuJywgJ3Byb3BzJywgJ2NvbnRhaW5lcicsIG9wdGlvbnNdKSwgJyB8fCBmbjsnXSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZUhlbHBlcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVscGVyIGludm9jYXRpb25cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGhlbHBlcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBlcixcbiAgLy8gYW5kIHB1c2hlcyB0aGUgaGVscGVyJ3MgcmV0dXJuIHZhbHVlIG9udG8gdGhlIHN0YWNrLlxuICAvL1xuICAvLyBJZiB0aGUgaGVscGVyIGlzIG5vdCBmb3VuZCwgYGhlbHBlck1pc3NpbmdgIGlzIGNhbGxlZC5cbiAgaW52b2tlSGVscGVyOiBmdW5jdGlvbiBpbnZva2VIZWxwZXIocGFyYW1TaXplLCBuYW1lLCBpc1NpbXBsZSkge1xuICAgIHZhciBub25IZWxwZXIgPSB0aGlzLnBvcFN0YWNrKCksXG4gICAgICAgIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTtcblxuICAgIHZhciBwb3NzaWJsZUZ1bmN0aW9uQ2FsbHMgPSBbXTtcblxuICAgIGlmIChpc1NpbXBsZSkge1xuICAgICAgLy8gZGlyZWN0IGNhbGwgdG8gaGVscGVyXG4gICAgICBwb3NzaWJsZUZ1bmN0aW9uQ2FsbHMucHVzaChoZWxwZXIubmFtZSk7XG4gICAgfVxuICAgIC8vIGNhbGwgYSBmdW5jdGlvbiBmcm9tIHRoZSBpbnB1dCBvYmplY3RcbiAgICBwb3NzaWJsZUZ1bmN0aW9uQ2FsbHMucHVzaChub25IZWxwZXIpO1xuICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkge1xuICAgICAgcG9zc2libGVGdW5jdGlvbkNhbGxzLnB1c2godGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5ob29rcy5oZWxwZXJNaXNzaW5nJykpO1xuICAgIH1cblxuICAgIHZhciBmdW5jdGlvbkxvb2t1cENvZGUgPSBbJygnLCB0aGlzLml0ZW1zU2VwYXJhdGVkQnkocG9zc2libGVGdW5jdGlvbkNhbGxzLCAnfHwnKSwgJyknXTtcbiAgICB2YXIgZnVuY3Rpb25DYWxsID0gdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGZ1bmN0aW9uTG9va3VwQ29kZSwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcyk7XG4gICAgdGhpcy5wdXNoKGZ1bmN0aW9uQ2FsbCk7XG4gIH0sXG5cbiAgaXRlbXNTZXBhcmF0ZWRCeTogZnVuY3Rpb24gaXRlbXNTZXBhcmF0ZWRCeShpdGVtcywgc2VwYXJhdG9yKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHJlc3VsdC5wdXNoKGl0ZW1zWzBdKTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQucHVzaChzZXBhcmF0b3IsIGl0ZW1zW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSxcbiAgLy8gW2ludm9rZUtub3duSGVscGVyXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvblxuICAvL1xuICAvLyBUaGlzIG9wZXJhdGlvbiBpcyB1c2VkIHdoZW4gdGhlIGhlbHBlciBpcyBrbm93biB0byBleGlzdCxcbiAgLy8gc28gYSBgaGVscGVyTWlzc2luZ2AgZmFsbGJhY2sgaXMgbm90IHJlcXVpcmVkLlxuICBpbnZva2VLbm93bkhlbHBlcjogZnVuY3Rpb24gaW52b2tlS25vd25IZWxwZXIocGFyYW1TaXplLCBuYW1lKSB7XG4gICAgdmFyIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTtcbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGhlbHBlci5uYW1lLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZUFtYmlndW91c11cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgZGlzYW1iaWd1YXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Npb24gbGlrZSBge3tmb299fWBcbiAgLy8gaXMgcHJvdmlkZWQsIGJ1dCB3ZSBkb24ndCBrbm93IGF0IGNvbXBpbGUtdGltZSB3aGV0aGVyIGl0XG4gIC8vIGlzIGEgaGVscGVyIG9yIGEgcGF0aC5cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gZW1pdHMgbW9yZSBjb2RlIHRoYW4gdGhlIG90aGVyIG9wdGlvbnMsXG4gIC8vIGFuZCBjYW4gYmUgYXZvaWRlZCBieSBwYXNzaW5nIHRoZSBga25vd25IZWxwZXJzYCBhbmRcbiAgLy8gYGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNvbXBpbGUtdGltZS5cbiAgaW52b2tlQW1iaWd1b3VzOiBmdW5jdGlvbiBpbnZva2VBbWJpZ3VvdXMobmFtZSwgaGVscGVyQ2FsbCkge1xuICAgIHRoaXMudXNlUmVnaXN0ZXIoJ2hlbHBlcicpO1xuXG4gICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIHRoaXMuZW1wdHlIYXNoKCk7XG4gICAgdmFyIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIoMCwgbmFtZSwgaGVscGVyQ2FsbCk7XG5cbiAgICB2YXIgaGVscGVyTmFtZSA9IHRoaXMubGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTtcblxuICAgIHZhciBsb29rdXAgPSBbJygnLCAnKGhlbHBlciA9ICcsIGhlbHBlck5hbWUsICcgfHwgJywgbm9uSGVscGVyLCAnKSddO1xuICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkge1xuICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnO1xuICAgICAgbG9va3VwLnB1c2goJyAhPSBudWxsID8gaGVscGVyIDogJywgdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5ob29rcy5oZWxwZXJNaXNzaW5nJykpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaChbJygnLCBsb29rdXAsIGhlbHBlci5wYXJhbXNJbml0ID8gWycpLCgnLCBoZWxwZXIucGFyYW1zSW5pdF0gOiBbXSwgJyksJywgJyh0eXBlb2YgaGVscGVyID09PSAnLCB0aGlzLmFsaWFzYWJsZSgnXCJmdW5jdGlvblwiJyksICcgPyAnLCB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2hlbHBlcicsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpLCAnIDogaGVscGVyKSknXSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZVBhcnRpYWxdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGNvbnRleHQsIC4uLlxuICAvLyBPbiBzdGFjayBhZnRlcjogcmVzdWx0IG9mIHBhcnRpYWwgaW52b2NhdGlvblxuICAvL1xuICAvLyBUaGlzIG9wZXJhdGlvbiBwb3BzIG9mZiBhIGNvbnRleHQsIGludm9rZXMgYSBwYXJ0aWFsIHdpdGggdGhhdCBjb250ZXh0LFxuICAvLyBhbmQgcHVzaGVzIHRoZSByZXN1bHQgb2YgdGhlIGludm9jYXRpb24gYmFjay5cbiAgaW52b2tlUGFydGlhbDogZnVuY3Rpb24gaW52b2tlUGFydGlhbChpc0R5bmFtaWMsIG5hbWUsIGluZGVudCkge1xuICAgIHZhciBwYXJhbXMgPSBbXSxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuc2V0dXBQYXJhbXMobmFtZSwgMSwgcGFyYW1zKTtcblxuICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgIG5hbWUgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBkZWxldGUgb3B0aW9ucy5uYW1lO1xuICAgIH1cblxuICAgIGlmIChpbmRlbnQpIHtcbiAgICAgIG9wdGlvbnMuaW5kZW50ID0gSlNPTi5zdHJpbmdpZnkoaW5kZW50KTtcbiAgICB9XG4gICAgb3B0aW9ucy5oZWxwZXJzID0gJ2hlbHBlcnMnO1xuICAgIG9wdGlvbnMucGFydGlhbHMgPSAncGFydGlhbHMnO1xuICAgIG9wdGlvbnMuZGVjb3JhdG9ycyA9ICdjb250YWluZXIuZGVjb3JhdG9ycyc7XG5cbiAgICBpZiAoIWlzRHluYW1pYykge1xuICAgICAgcGFyYW1zLnVuc2hpZnQodGhpcy5uYW1lTG9va3VwKCdwYXJ0aWFscycsIG5hbWUsICdwYXJ0aWFsJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMudW5zaGlmdChuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdCkge1xuICAgICAgb3B0aW9ucy5kZXB0aHMgPSAnZGVwdGhzJztcbiAgICB9XG4gICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTtcbiAgICBwYXJhbXMucHVzaChvcHRpb25zKTtcblxuICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2NvbnRhaW5lci5pbnZva2VQYXJ0aWFsJywgJycsIHBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFthc3NpZ25Ub0hhc2hdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4sIGhhc2gsIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLiwgaGFzaCwgLi4uXG4gIC8vXG4gIC8vIFBvcHMgYSB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBjdXJyZW50IGhhc2hcbiAgYXNzaWduVG9IYXNoOiBmdW5jdGlvbiBhc3NpZ25Ub0hhc2goa2V5KSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5wb3BTdGFjaygpLFxuICAgICAgICBjb250ZXh0ID0gdW5kZWZpbmVkLFxuICAgICAgICB0eXBlID0gdW5kZWZpbmVkLFxuICAgICAgICBpZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICBpZCA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICB0eXBlID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgY29udGV4dCA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG5cbiAgICB2YXIgaGFzaCA9IHRoaXMuaGFzaDtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgaGFzaC5jb250ZXh0c1trZXldID0gY29udGV4dDtcbiAgICB9XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGhhc2gudHlwZXNba2V5XSA9IHR5cGU7XG4gICAgfVxuICAgIGlmIChpZCkge1xuICAgICAgaGFzaC5pZHNba2V5XSA9IGlkO1xuICAgIH1cbiAgICBoYXNoLnZhbHVlc1trZXldID0gdmFsdWU7XG4gIH0sXG5cbiAgcHVzaElkOiBmdW5jdGlvbiBwdXNoSWQodHlwZSwgbmFtZSwgY2hpbGQpIHtcbiAgICBpZiAodHlwZSA9PT0gJ0Jsb2NrUGFyYW0nKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2Jsb2NrUGFyYW1zWycgKyBuYW1lWzBdICsgJ10ucGF0aFsnICsgbmFtZVsxXSArICddJyArIChjaGlsZCA/ICcgKyAnICsgSlNPTi5zdHJpbmdpZnkoJy4nICsgY2hpbGQpIDogJycpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdQYXRoRXhwcmVzc2lvbicpIHtcbiAgICAgIHRoaXMucHVzaFN0cmluZyhuYW1lKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCd0cnVlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnbnVsbCcpO1xuICAgIH1cbiAgfSxcblxuICAvLyBIRUxQRVJTXG5cbiAgY29tcGlsZXI6IEphdmFTY3JpcHRDb21waWxlcixcblxuICBjb21waWxlQ2hpbGRyZW46IGZ1bmN0aW9uIGNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucykge1xuICAgIHZhciBjaGlsZHJlbiA9IGVudmlyb25tZW50LmNoaWxkcmVuLFxuICAgICAgICBjaGlsZCA9IHVuZGVmaW5lZCxcbiAgICAgICAgY29tcGlsZXIgPSB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIGNvbXBpbGVyID0gbmV3IHRoaXMuY29tcGlsZXIoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG5cbiAgICAgIHZhciBleGlzdGluZyA9IHRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgnJyk7IC8vIFBsYWNlaG9sZGVyIHRvIHByZXZlbnQgbmFtZSBjb25mbGljdHMgZm9yIG5lc3RlZCBjaGlsZHJlblxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvbnRleHQucHJvZ3JhbXMubGVuZ3RoO1xuICAgICAgICBjaGlsZC5pbmRleCA9IGluZGV4O1xuICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgaW5kZXg7XG4gICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFtc1tpbmRleF0gPSBjb21waWxlci5jb21waWxlKGNoaWxkLCBvcHRpb25zLCB0aGlzLmNvbnRleHQsICF0aGlzLnByZWNvbXBpbGUpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZGVjb3JhdG9yc1tpbmRleF0gPSBjb21waWxlci5kZWNvcmF0b3JzO1xuICAgICAgICB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzW2luZGV4XSA9IGNoaWxkO1xuXG4gICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgY29tcGlsZXIudXNlRGVwdGhzO1xuICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBjb21waWxlci51c2VCbG9ja1BhcmFtcztcbiAgICAgICAgY2hpbGQudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHM7XG4gICAgICAgIGNoaWxkLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkLmluZGV4ID0gZXhpc3RpbmcuaW5kZXg7XG4gICAgICAgIGNoaWxkLm5hbWUgPSAncHJvZ3JhbScgKyBleGlzdGluZy5pbmRleDtcblxuICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGV4aXN0aW5nLnVzZURlcHRocztcbiAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZXhpc3RpbmcudXNlQmxvY2tQYXJhbXM7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtYXRjaEV4aXN0aW5nUHJvZ3JhbTogZnVuY3Rpb24gbWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGVudmlyb25tZW50ID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpXTtcbiAgICAgIGlmIChlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5lcXVhbHMoY2hpbGQpKSB7XG4gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcHJvZ3JhbUV4cHJlc3Npb246IGZ1bmN0aW9uIHByb2dyYW1FeHByZXNzaW9uKGd1aWQpIHtcbiAgICB2YXIgY2hpbGQgPSB0aGlzLmVudmlyb25tZW50LmNoaWxkcmVuW2d1aWRdLFxuICAgICAgICBwcm9ncmFtUGFyYW1zID0gW2NoaWxkLmluZGV4LCAnZGF0YScsIGNoaWxkLmJsb2NrUGFyYW1zXTtcblxuICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IHRoaXMudXNlRGVwdGhzKSB7XG4gICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZURlcHRocykge1xuICAgICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ2NvbnRhaW5lci5wcm9ncmFtKCcgKyBwcm9ncmFtUGFyYW1zLmpvaW4oJywgJykgKyAnKSc7XG4gIH0sXG5cbiAgdXNlUmVnaXN0ZXI6IGZ1bmN0aW9uIHVzZVJlZ2lzdGVyKG5hbWUpIHtcbiAgICBpZiAoIXRoaXMucmVnaXN0ZXJzW25hbWVdKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyc1tuYW1lXSA9IHRydWU7XG4gICAgICB0aGlzLnJlZ2lzdGVycy5saXN0LnB1c2gobmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIHB1c2g6IGZ1bmN0aW9uIHB1c2goZXhwcikge1xuICAgIGlmICghKGV4cHIgaW5zdGFuY2VvZiBMaXRlcmFsKSkge1xuICAgICAgZXhwciA9IHRoaXMuc291cmNlLndyYXAoZXhwcik7XG4gICAgfVxuXG4gICAgdGhpcy5pbmxpbmVTdGFjay5wdXNoKGV4cHIpO1xuICAgIHJldHVybiBleHByO1xuICB9LFxuXG4gIHB1c2hTdGFja0xpdGVyYWw6IGZ1bmN0aW9uIHB1c2hTdGFja0xpdGVyYWwoaXRlbSkge1xuICAgIHRoaXMucHVzaChuZXcgTGl0ZXJhbChpdGVtKSk7XG4gIH0sXG5cbiAgcHVzaFNvdXJjZTogZnVuY3Rpb24gcHVzaFNvdXJjZShzb3VyY2UpIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nQ29udGVudCkge1xuICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyh0aGlzLnBlbmRpbmdDb250ZW50KSwgdGhpcy5wZW5kaW5nTG9jYXRpb24pKTtcbiAgICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSkge1xuICAgICAgdGhpcy5zb3VyY2UucHVzaChzb3VyY2UpO1xuICAgIH1cbiAgfSxcblxuICByZXBsYWNlU3RhY2s6IGZ1bmN0aW9uIHJlcGxhY2VTdGFjayhjYWxsYmFjaykge1xuICAgIHZhciBwcmVmaXggPSBbJygnXSxcbiAgICAgICAgc3RhY2sgPSB1bmRlZmluZWQsXG4gICAgICAgIGNyZWF0ZWRTdGFjayA9IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlZExpdGVyYWwgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy5pc0lubGluZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgncmVwbGFjZVN0YWNrIG9uIG5vbi1pbmxpbmUnKTtcbiAgICB9XG5cbiAgICAvLyBXZSB3YW50IHRvIG1lcmdlIHRoZSBpbmxpbmUgc3RhdGVtZW50IGludG8gdGhlIHJlcGxhY2VtZW50IHN0YXRlbWVudCB2aWEgJywnXG4gICAgdmFyIHRvcCA9IHRoaXMucG9wU3RhY2sodHJ1ZSk7XG5cbiAgICBpZiAodG9wIGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgLy8gTGl0ZXJhbHMgZG8gbm90IG5lZWQgdG8gYmUgaW5saW5lZFxuICAgICAgc3RhY2sgPSBbdG9wLnZhbHVlXTtcbiAgICAgIHByZWZpeCA9IFsnKCcsIHN0YWNrXTtcbiAgICAgIHVzZWRMaXRlcmFsID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gR2V0IG9yIGNyZWF0ZSB0aGUgY3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhlIGlubGluZVxuICAgICAgY3JlYXRlZFN0YWNrID0gdHJ1ZTtcbiAgICAgIHZhciBfbmFtZSA9IHRoaXMuaW5jclN0YWNrKCk7XG5cbiAgICAgIHByZWZpeCA9IFsnKCgnLCB0aGlzLnB1c2goX25hbWUpLCAnID0gJywgdG9wLCAnKSddO1xuICAgICAgc3RhY2sgPSB0aGlzLnRvcFN0YWNrKCk7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW0gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0YWNrKTtcblxuICAgIGlmICghdXNlZExpdGVyYWwpIHtcbiAgICAgIHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG4gICAgaWYgKGNyZWF0ZWRTdGFjaykge1xuICAgICAgdGhpcy5zdGFja1Nsb3QtLTtcbiAgICB9XG4gICAgdGhpcy5wdXNoKHByZWZpeC5jb25jYXQoaXRlbSwgJyknKSk7XG4gIH0sXG5cbiAgaW5jclN0YWNrOiBmdW5jdGlvbiBpbmNyU3RhY2soKSB7XG4gICAgdGhpcy5zdGFja1Nsb3QrKztcbiAgICBpZiAodGhpcy5zdGFja1Nsb3QgPiB0aGlzLnN0YWNrVmFycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RhY2tWYXJzLnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudG9wU3RhY2tOYW1lKCk7XG4gIH0sXG4gIHRvcFN0YWNrTmFtZTogZnVuY3Rpb24gdG9wU3RhY2tOYW1lKCkge1xuICAgIHJldHVybiAnc3RhY2snICsgdGhpcy5zdGFja1Nsb3Q7XG4gIH0sXG4gIGZsdXNoSW5saW5lOiBmdW5jdGlvbiBmbHVzaElubGluZSgpIHtcbiAgICB2YXIgaW5saW5lU3RhY2sgPSB0aGlzLmlubGluZVN0YWNrO1xuICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gaW5saW5lU3RhY2subGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBlbnRyeSA9IGlubGluZVN0YWNrW2ldO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoZW50cnkgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1c2goZW50cnkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YWNrID0gdGhpcy5pbmNyU3RhY2soKTtcbiAgICAgICAgdGhpcy5wdXNoU291cmNlKFtzdGFjaywgJyA9ICcsIGVudHJ5LCAnOyddKTtcbiAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChzdGFjayk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBpc0lubGluZTogZnVuY3Rpb24gaXNJbmxpbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5saW5lU3RhY2subGVuZ3RoO1xuICB9LFxuXG4gIHBvcFN0YWNrOiBmdW5jdGlvbiBwb3BTdGFjayh3cmFwcGVkKSB7XG4gICAgdmFyIGlubGluZSA9IHRoaXMuaXNJbmxpbmUoKSxcbiAgICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlzLmlubGluZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2spLnBvcCgpO1xuXG4gICAgaWYgKCF3cmFwcGVkICYmIGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpbmxpbmUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xvdCkge1xuICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdJbnZhbGlkIHN0YWNrIHBvcCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhY2tTbG90LS07XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gIH0sXG5cbiAgdG9wU3RhY2s6IGZ1bmN0aW9uIHRvcFN0YWNrKCkge1xuICAgIHZhciBzdGFjayA9IHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNvbXBpbGVTdGFjayxcbiAgICAgICAgaXRlbSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICB9LFxuXG4gIGNvbnRleHROYW1lOiBmdW5jdGlvbiBjb250ZXh0TmFtZShjb250ZXh0KSB7XG4gICAgaWYgKHRoaXMudXNlRGVwdGhzICYmIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiAnZGVwdGhzWycgKyBjb250ZXh0ICsgJ10nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2RlcHRoJyArIGNvbnRleHQ7XG4gICAgfVxuICB9LFxuXG4gIHF1b3RlZFN0cmluZzogZnVuY3Rpb24gcXVvdGVkU3RyaW5nKHN0cikge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcoc3RyKTtcbiAgfSxcblxuICBvYmplY3RMaXRlcmFsOiBmdW5jdGlvbiBvYmplY3RMaXRlcmFsKG9iaikge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5vYmplY3RMaXRlcmFsKG9iaik7XG4gIH0sXG5cbiAgYWxpYXNhYmxlOiBmdW5jdGlvbiBhbGlhc2FibGUobmFtZSkge1xuICAgIHZhciByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV07XG4gICAgaWYgKHJldCkge1xuICAgICAgcmV0LnJlZmVyZW5jZUNvdW50Kys7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIHJldCA9IHRoaXMuYWxpYXNlc1tuYW1lXSA9IHRoaXMuc291cmNlLndyYXAobmFtZSk7XG4gICAgcmV0LmFsaWFzYWJsZSA9IHRydWU7XG4gICAgcmV0LnJlZmVyZW5jZUNvdW50ID0gMTtcblxuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgc2V0dXBIZWxwZXI6IGZ1bmN0aW9uIHNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIpIHtcbiAgICB2YXIgcGFyYW1zID0gW10sXG4gICAgICAgIHBhcmFtc0luaXQgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUsIHBhcmFtcywgYmxvY2tIZWxwZXIpO1xuICAgIHZhciBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKSxcbiAgICAgICAgY2FsbENvbnRleHQgPSB0aGlzLmFsaWFzYWJsZSh0aGlzLmNvbnRleHROYW1lKDApICsgJyAhPSBudWxsID8gJyArIHRoaXMuY29udGV4dE5hbWUoMCkgKyAnIDogKGNvbnRhaW5lci5udWxsQ29udGV4dCB8fCB7fSknKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIHBhcmFtc0luaXQ6IHBhcmFtc0luaXQsXG4gICAgICBuYW1lOiBmb3VuZEhlbHBlcixcbiAgICAgIGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29uY2F0KHBhcmFtcylcbiAgICB9O1xuICB9LFxuXG4gIHNldHVwUGFyYW1zOiBmdW5jdGlvbiBzZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB7fSxcbiAgICAgICAgY29udGV4dHMgPSBbXSxcbiAgICAgICAgdHlwZXMgPSBbXSxcbiAgICAgICAgaWRzID0gW10sXG4gICAgICAgIG9iamVjdEFyZ3MgPSAhcGFyYW1zLFxuICAgICAgICBwYXJhbSA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChvYmplY3RBcmdzKSB7XG4gICAgICBwYXJhbXMgPSBbXTtcbiAgICB9XG5cbiAgICBvcHRpb25zLm5hbWUgPSB0aGlzLnF1b3RlZFN0cmluZyhoZWxwZXIpO1xuICAgIG9wdGlvbnMuaGFzaCA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICBvcHRpb25zLmhhc2hJZHMgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgb3B0aW9ucy5oYXNoVHlwZXMgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBvcHRpb25zLmhhc2hDb250ZXh0cyA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG5cbiAgICB2YXIgaW52ZXJzZSA9IHRoaXMucG9wU3RhY2soKSxcbiAgICAgICAgcHJvZ3JhbSA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIC8vIEF2b2lkIHNldHRpbmcgZm4gYW5kIGludmVyc2UgaWYgbmVpdGhlciBhcmUgc2V0LiBUaGlzIGFsbG93c1xuICAgIC8vIGhlbHBlcnMgdG8gZG8gYSBjaGVjayBmb3IgYGlmIChvcHRpb25zLmZuKWBcbiAgICBpZiAocHJvZ3JhbSB8fCBpbnZlcnNlKSB7XG4gICAgICBvcHRpb25zLmZuID0gcHJvZ3JhbSB8fCAnY29udGFpbmVyLm5vb3AnO1xuICAgICAgb3B0aW9ucy5pbnZlcnNlID0gaW52ZXJzZSB8fCAnY29udGFpbmVyLm5vb3AnO1xuICAgIH1cblxuICAgIC8vIFRoZSBwYXJhbWV0ZXJzIGdvIG9uIHRvIHRoZSBzdGFjayBpbiBvcmRlciAobWFraW5nIHN1cmUgdGhhdCB0aGV5IGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIpXG4gICAgLy8gc28gd2UgbmVlZCB0byBwb3AgdGhlbSBvZmYgdGhlIHN0YWNrIGluIHJldmVyc2Ugb3JkZXJcbiAgICB2YXIgaSA9IHBhcmFtU2l6ZTtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBwYXJhbSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIHBhcmFtc1tpXSA9IHBhcmFtO1xuXG4gICAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgICBpZHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgICAgdHlwZXNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICAgIGNvbnRleHRzW2ldID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvYmplY3RBcmdzKSB7XG4gICAgICBvcHRpb25zLmFyZ3MgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShpZHMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMudHlwZXMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHR5cGVzKTtcbiAgICAgIG9wdGlvbnMuY29udGV4dHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGNvbnRleHRzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9ICdkYXRhJztcbiAgICB9XG4gICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMuYmxvY2tQYXJhbXMgPSAnYmxvY2tQYXJhbXMnO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfSxcblxuICBzZXR1cEhlbHBlckFyZ3M6IGZ1bmN0aW9uIHNldHVwSGVscGVyQXJncyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zLCB1c2VSZWdpc3Rlcikge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKTtcbiAgICBvcHRpb25zLmxvYyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbik7XG4gICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTtcbiAgICBpZiAodXNlUmVnaXN0ZXIpIHtcbiAgICAgIHRoaXMudXNlUmVnaXN0ZXIoJ29wdGlvbnMnKTtcbiAgICAgIHBhcmFtcy5wdXNoKCdvcHRpb25zJyk7XG4gICAgICByZXR1cm4gWydvcHRpb25zPScsIG9wdGlvbnNdO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMucHVzaChvcHRpb25zKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuICB9XG59O1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgcmVzZXJ2ZWRXb3JkcyA9ICgnYnJlYWsgZWxzZSBuZXcgdmFyJyArICcgY2FzZSBmaW5hbGx5IHJldHVybiB2b2lkJyArICcgY2F0Y2ggZm9yIHN3aXRjaCB3aGlsZScgKyAnIGNvbnRpbnVlIGZ1bmN0aW9uIHRoaXMgd2l0aCcgKyAnIGRlZmF1bHQgaWYgdGhyb3cnICsgJyBkZWxldGUgaW4gdHJ5JyArICcgZG8gaW5zdGFuY2VvZiB0eXBlb2YnICsgJyBhYnN0cmFjdCBlbnVtIGludCBzaG9ydCcgKyAnIGJvb2xlYW4gZXhwb3J0IGludGVyZmFjZSBzdGF0aWMnICsgJyBieXRlIGV4dGVuZHMgbG9uZyBzdXBlcicgKyAnIGNoYXIgZmluYWwgbmF0aXZlIHN5bmNocm9uaXplZCcgKyAnIGNsYXNzIGZsb2F0IHBhY2thZ2UgdGhyb3dzJyArICcgY29uc3QgZ290byBwcml2YXRlIHRyYW5zaWVudCcgKyAnIGRlYnVnZ2VyIGltcGxlbWVudHMgcHJvdGVjdGVkIHZvbGF0aWxlJyArICcgZG91YmxlIGltcG9ydCBwdWJsaWMgbGV0IHlpZWxkIGF3YWl0JyArICcgbnVsbCB0cnVlIGZhbHNlJykuc3BsaXQoJyAnKTtcblxuICB2YXIgY29tcGlsZXJXb3JkcyA9IEphdmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9XT1JEUyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gcmVzZXJ2ZWRXb3Jkcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb21waWxlcldvcmRzW3Jlc2VydmVkV29yZHNbaV1dID0gdHJ1ZTtcbiAgfVxufSkoKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBNYXkgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uXG4gKi9cbkphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiAhSmF2YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTW25hbWVdICYmIC9eW2EtekEtWl8kXVswLTlhLXpBLVpfJF0qJC8udGVzdChuYW1lKTtcbn07XG5cbmZ1bmN0aW9uIHN0cmljdExvb2t1cChyZXF1aXJlVGVybWluYWwsIGNvbXBpbGVyLCBwYXJ0cywgdHlwZSkge1xuICB2YXIgc3RhY2sgPSBjb21waWxlci5wb3BTdGFjaygpLFxuICAgICAgaSA9IDAsXG4gICAgICBsZW4gPSBwYXJ0cy5sZW5ndGg7XG4gIGlmIChyZXF1aXJlVGVybWluYWwpIHtcbiAgICBsZW4tLTtcbiAgfVxuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzdGFjayA9IGNvbXBpbGVyLm5hbWVMb29rdXAoc3RhY2ssIHBhcnRzW2ldLCB0eXBlKTtcbiAgfVxuXG4gIGlmIChyZXF1aXJlVGVybWluYWwpIHtcbiAgICByZXR1cm4gW2NvbXBpbGVyLmFsaWFzYWJsZSgnY29udGFpbmVyLnN0cmljdCcpLCAnKCcsIHN0YWNrLCAnLCAnLCBjb21waWxlci5xdW90ZWRTdHJpbmcocGFydHNbaV0pLCAnLCAnLCBKU09OLnN0cmluZ2lmeShjb21waWxlci5zb3VyY2UuY3VycmVudExvY2F0aW9uKSwgJyApJ107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IEphdmFTY3JpcHRDb21waWxlcjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJwaGRtRnpZM0pwY0hRdFkyOXRjR2xzWlhJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3p0dlFrRkJiMFFzVTBGQlV6czdlVUpCUTNaRExHTkJRV003T3pzN2NVSkJRMW9zVlVGQlZUczdkVUpCUTJRc1dVRkJXVHM3T3p0QlFVVm9ReXhUUVVGVExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZEZEVJc1RVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdRMEZEY0VJN08wRkJSVVFzVTBGQlV5eHJRa0ZCYTBJc1IwRkJSeXhGUVVGRk96dEJRVVZvUXl4clFrRkJhMElzUTBGQlF5eFRRVUZUTEVkQlFVYzdPenRCUVVjM1FpeFpRVUZWTEVWQlFVVXNiMEpCUVZNc1RVRkJUU3hGUVVGRkxFbEJRVWtzWlVGQlpUdEJRVU01UXl4WFFVRlBMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UjBGRE9VTTdRVUZEUkN4bFFVRmhMRVZCUVVVc2RVSkJRVk1zU1VGQlNTeEZRVUZGTzBGQlF6VkNMRmRCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExFVkJRVVVzV1VGQldTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRIUVVOMlJUczdRVUZGUkN4alFVRlpMRVZCUVVVc2QwSkJRVmM3UVVGRGRrSXNVVUZCVFN4UlFVRlJMREJDUVVGdlFqdFJRVU5vUXl4UlFVRlJMRWRCUVVjc2RVSkJRV2xDTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNoRExGZEJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1IwRkROMEk3TzBGQlJVUXNaMEpCUVdNc1JVRkJSU3gzUWtGQlV5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRkZCUVZFc1JVRkJSVHM3UVVGRmJrUXNVVUZCU1N4RFFVRkRMR1ZCUVZFc1RVRkJUU3hEUVVGRExFVkJRVVU3UVVGRGNFSXNXVUZCVFN4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRGJrSTdRVUZEUkN4VlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE96dEJRVVUxUXl4UlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlF6ZENMR0ZCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMHRCUTJwRExFMUJRVTBzU1VGQlNTeFJRVUZSTEVWQlFVVTdPenM3UVVGSmJrSXNZVUZCVHl4RFFVRkRMRmxCUVZrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEY0VNc1RVRkJUVHRCUVVOTUxGbEJRVTBzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUXpkQ0xHRkJRVThzVFVGQlRTeERRVUZETzB0QlEyWTdSMEZEUmpzN1FVRkZSQ3hyUWtGQlowSXNSVUZCUlN3MFFrRkJWenRCUVVNelFpeFhRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UjBGRE9VSTdPMEZCUlVRc2IwSkJRV3RDTEVWQlFVVXNORUpCUVZNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJUdEJRVU42UXl4UlFVRkpMRU5CUVVNc05FSkJRVFJDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTNwRExGZEJRVThzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdSMEZEY0VVN08wRkJSVVFzT0VKQlFUUkNMRVZCUVVVc1MwRkJTenM3UVVGRmJrTXNVMEZCVHl4RlFVRkZMR2xDUVVGVExGZEJRVmNzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVONlJDeFJRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRmRCUVZjc1EwRkJRenRCUVVNdlFpeFJRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJRenRCUVVOMlFpeFJRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETzBGQlF6bERMRkZCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRkRU1zVVVGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJRenM3UVVGRk5VSXNVVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXp0QlFVTnNReXhSUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNN1FVRkRla0lzVVVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4UFFVRlBMRWxCUVVrN1FVRkRlRUlzWjBKQlFWVXNSVUZCUlN4RlFVRkZPMEZCUTJRc1kwRkJVU3hGUVVGRkxFVkJRVVU3UVVGRFdpeHJRa0ZCV1N4RlFVRkZMRVZCUVVVN1MwRkRha0lzUTBGQlF6czdRVUZGUml4UlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03TzBGQlJXaENMRkZCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEyNUNMRkZCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRkZCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEyeENMRkZCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNN1FVRkRPVUlzVVVGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRha0lzVVVGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRka0lzVVVGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRkRUlzVVVGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RlFVRkZMRU5CUVVNN08wRkJSWFJDTEZGQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1YwRkJWeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVXpReXhSUVVGSkxFTkJRVU1zVTBGQlV5eEhRVU5hTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUTJRc1YwRkJWeXhEUVVGRExGTkJRVk1zU1VGRGNrSXNWMEZCVnl4RFFVRkRMR0ZCUVdFc1NVRkRla0lzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRkRUlzVVVGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhKUVVGSkxGZEJRVmNzUTBGQlF5eGpRVUZqTEVOQlFVTTdPMEZCUlhoRkxGRkJRVWtzVDBGQlR5eEhRVUZITEZkQlFWY3NRMEZCUXl4UFFVRlBPMUZCUXk5Q0xFMUJRVTBzV1VGQlFUdFJRVU5PTEZGQlFWRXNXVUZCUVR0UlFVTlNMRU5CUVVNc1dVRkJRVHRSUVVORUxFTkJRVU1zV1VGQlFTeERRVUZET3p0QlFVVktMRk5CUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUXpGRExGbEJRVTBzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSWEJDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1pVRkJaU3hIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTTdRVUZEZWtNc1kwRkJVU3hIUVVGSExGRkJRVkVzU1VGQlNTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRPMEZCUTJ4RExGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRPVU03T3p0QlFVZEVMRkZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWlVGQlpTeEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTjJReXhSUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPenM3UVVGSGNFSXNVVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzcEZMRmxCUVUwc01rSkJRV01zT0VOQlFUaERMRU5CUVVNc1EwRkJRenRMUVVOeVJUczdRVUZGUkN4UlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlR0QlFVTTVRaXhWUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXpzN1FVRkZNVUlzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkRkRUlzZVVOQlFYbERMRVZCUTNwRExFbEJRVWtzUTBGQlF5eHZRMEZCYjBNc1JVRkJSU3hGUVVNelF5eExRVUZMTEVOQlEwNHNRMEZCUXl4RFFVRkRPMEZCUTBnc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN08wRkJSVzVETEZWQlFVa3NVVUZCVVN4RlFVRkZPMEZCUTFvc1dVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVOeVF5eEpRVUZKTEVWQlEwb3NUMEZCVHl4RlFVTlFMRmRCUVZjc1JVRkRXQ3hSUVVGUkxFVkJRMUlzVFVGQlRTeEZRVU5PTEdGQlFXRXNSVUZEWWl4UlFVRlJMRVZCUTFJc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZEZUVJc1EwRkJReXhEUVVGRE8wOUJRMG9zVFVGQlRUdEJRVU5NTEZsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVOeVFpeDFSVUZCZFVVc1EwRkRlRVVzUTBGQlF6dEJRVU5HTEZsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6VkNMRmxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRQUVVNelF6dExRVU5HTEUxQlFVMDdRVUZEVEN4VlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExGTkJRVk1zUTBGQlF6dExRVU0zUWpzN1FVRkZSQ3hSUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZET1VNc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVTdRVUZEYWtJc1ZVRkJTU3hIUVVGSExFZEJRVWM3UVVGRFVpeG5Ra0ZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRE4wSXNXVUZCU1N4RlFVRkZMRVZCUVVVN1QwRkRWQ3hEUVVGRE96dEJRVVZHTEZWQlFVa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSVHRCUVVOdVFpeFhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03UVVGRE4wSXNWMEZCUnl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU03VDBGRE1VSTdPM0ZDUVVVNFFpeEpRVUZKTEVOQlFVTXNUMEZCVHp0VlFVRnlReXhSUVVGUkxGbEJRVklzVVVGQlVUdFZRVUZGTEZWQlFWVXNXVUZCVml4VlFVRlZPenRCUVVNeFFpeFhRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU16UXl4WlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU5tTEdGQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEY2tJc1kwRkJTU3hWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdRVUZEYWtJc1pVRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE9VSXNaVUZCUnl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU03VjBGRE1VSTdVMEZEUmp0UFFVTkdPenRCUVVWRUxGVkJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVN1FVRkRMMElzVjBGQlJ5eERRVUZETEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1QwRkRka0k3UVVGRFJDeFZRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRM0pDTEZkQlFVY3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8wOUJRM0JDTzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMnhDTEZkQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRE8wOUJRM1JDTzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRM1pDTEZkQlFVY3NRMEZCUXl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRE8wOUJRek5DTzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU4yUWl4WFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF6dFBRVU51UWpzN1FVRkZSQ3hWUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEySXNWMEZCUnl4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenM3UVVGRk5VTXNXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhsUVVGbExFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRPMEZCUTJoRkxGZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVU1UWl4WlFVRkpMRTlCUVU4c1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGJrSXNZVUZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTFSQ3hoUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0VFFVTjZReXhOUVVGTk8wRkJRMHdzWVVGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRUUVVOMFFqdFBRVU5HTEUxQlFVMDdRVUZEVEN4WFFVRkhMRU5CUVVNc1pVRkJaU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdUMEZEY0VNN08wRkJSVVFzWVVGQlR5eEhRVUZITEVOQlFVTTdTMEZEV2l4TlFVRk5PMEZCUTB3c1lVRkJUeXhGUVVGRkxFTkJRVU03UzBGRFdEdEhRVU5HT3p0QlFVVkVMRlZCUVZFc1JVRkJSU3h2UWtGQlZ6czdPMEZCUjI1Q0xGRkJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNKQ0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NlVUpCUVZrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTm9SQ3hSUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEhsQ1FVRlpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdSMEZEY2tRN08wRkJSVVFzZFVKQlFYRkNMRVZCUVVVc0swSkJRVk1zVVVGQlVTeEZRVUZGT3pzN096dEJRVU40UXl4UlFVRkpMR1ZCUVdVc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBGQlJYcENMRkZCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEZUVRc1VVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlR0QlFVTnlRaXh4UWtGQlpTeEpRVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6ZERPenM3T3pzN096dEJRVkZFTEZGQlFVa3NWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOdVFpeFZRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4TFFVRkxMRVZCUVVrN1FVRkRla01zVlVGQlNTeEpRVUZKTEVkQlFVY3NUVUZCU3l4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGREwwSXNWVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUXpWRExIVkNRVUZsTEVsQlFVa3NVMEZCVXl4SFFVRkhMRVZCUVVVc1ZVRkJWU3hIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETVVRc1dVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UFFVRlBMRWRCUVVjc1ZVRkJWU3hEUVVGRE8wOUJRM3BETzB0QlEwWXNRMEZCUXl4RFFVRkRPenRCUVVWSUxGRkJRVWtzU1VGQlNTeERRVUZETERSQ1FVRTBRaXhGUVVGRk8wRkJRM0pETEhGQ1FVRmxMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eHZRMEZCYjBNc1JVRkJSU3hEUVVGRE8wdEJRM1pGT3p0QlFVVkVMRkZCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVndSU3hSUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSVHRCUVVONlF5eFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8wdEJRelZDTzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMnhDTEZsQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UzBGRGRrSTdPenRCUVVkRUxGRkJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03TzBGQlJTOURMRkZCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zV1VGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenM3UVVGRmNFSXNZVUZCVHl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTnlReXhOUVVGTk8wRkJRMHdzWVVGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVOMFFpeFhRVUZYTEVWQlExZ3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGRGFFSXNVMEZCVXl4RlFVTlVMRTFCUVUwc1JVRkRUaXhIUVVGSExFTkJRMG9zUTBGQlF5eERRVUZETzB0QlEwbzdSMEZEUmp0QlFVTkVMR0ZCUVZjc1JVRkJSU3h4UWtGQlV5eGxRVUZsTEVWQlFVVTdRVUZEY2tNc1VVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJPMUZCUTNSRExGVkJRVlVzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhPMUZCUXpsQ0xGZEJRVmNzV1VGQlFUdFJRVU5ZTEZWQlFWVXNXVUZCUVR0UlFVTldMRmRCUVZjc1dVRkJRVHRSUVVOWUxGTkJRVk1zV1VGQlFTeERRVUZETzBGQlExb3NVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlFTeEpRVUZKTEVWQlFVazdRVUZEZGtJc1ZVRkJTU3hKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTzBGQlEzWkNMRmxCUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzWTBGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRUUVVOMFFpeE5RVUZOTzBGQlEwd3NjVUpCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03VTBGRGNFSTdRVUZEUkN4cFFrRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF6dFBRVU5zUWl4TlFVRk5PMEZCUTB3c1dVRkJTU3hYUVVGWExFVkJRVVU3UVVGRFppeGpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZPMEZCUTJZc2RVSkJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdWMEZEY0VJc1RVRkJUVHRCUVVOTUxIVkNRVUZYTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xZEJRMjVETzBGQlEwUXNiVUpCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYmtJc2NVSkJRVmNzUjBGQlJ5eFRRVUZUTEVkQlFVY3NVMEZCVXl4RFFVRkRPMU5CUTNKRE96dEJRVVZFTEd0Q1FVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRMnhDTEZsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRZaXh2UWtGQlZTeEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTndRanRQUVVOR08wdEJRMFlzUTBGQlF5eERRVUZET3p0QlFVVklMRkZCUVVrc1ZVRkJWU3hGUVVGRk8wRkJRMlFzVlVGQlNTeFhRVUZYTEVWQlFVVTdRVUZEWml4dFFrRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0QlFVTXZRaXhwUWtGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRQUVVOd1FpeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVN1FVRkRkRUlzV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VDBGRGFFTTdTMEZEUml4TlFVRk5PMEZCUTB3c2NVSkJRV1VzU1VGRFlpeGhRVUZoTEVsQlFVa3NWMEZCVnl4SFFVRkhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1EwRkJRU3hCUVVGRExFTkJRVU03TzBGQlJTOUVMRlZCUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzYlVKQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0QlFVTjRReXhwUWtGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRQUVVOd1FpeE5RVUZOTzBGQlEwd3NXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJRenRQUVVOd1F6dExRVU5HT3p0QlFVVkVMRkZCUVVrc1pVRkJaU3hGUVVGRk8wRkJRMjVDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVOcVFpeE5RVUZOTEVkQlFVY3NaVUZCWlN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFhRVUZYTEVkQlFVY3NSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJRU3hCUVVGRExFTkJRMjVGTEVOQlFVTTdTMEZEU0RzN1FVRkZSQ3hYUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1IwRkROVUk3TzBGQlJVUXNjME5CUVc5RExFVkJRVVVzWjBSQlFWYzdRVUZETDBNc1YwRkJUeXcyVUVGUFRDeEpRVUZKTEVWQlFVVXNRMEZCUXp0SFFVTldPenM3T3pzN096czdPenRCUVZkRUxGbEJRVlVzUlVGQlJTeHZRa0ZCVXl4SlFVRkpMRVZCUVVVN1FVRkRla0lzVVVGQlNTeHJRa0ZCYTBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVU51UXl4dlEwRkJiME1zUTBGRGNrTTdVVUZEUkN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRha01zVVVGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVjBReXhSUVVGSkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1FVRkRhRU1zVlVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZET3p0QlFVVXZRaXhSUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEzcEZPenM3T3pzN096dEJRVkZFTEhGQ1FVRnRRaXhGUVVGRkxDdENRVUZYT3p0QlFVVTVRaXhSUVVGSkxHdENRVUZyUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRMjVETEc5RFFVRnZReXhEUVVOeVF6dFJRVU5FTEUxQlFVMHNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnFReXhSUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVXhReXhSUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdPMEZCUlc1Q0xGRkJRVWtzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVNNVFpeFZRVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdPMEZCUlRkQ0xGRkJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZEWkN4UFFVRlBMRVZCUTFBc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGRFppeE5RVUZOTEVWQlEwNHNUMEZCVHl4RlFVTlFMRXRCUVVzc1JVRkRUQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZsQlFWa3NRMEZCUXl4clFrRkJhMElzUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUXpWRUxFZEJRVWNzUTBGRFNpeERRVUZETEVOQlFVTTdSMEZEU2pzN096czdPenM3UVVGUlJDeGxRVUZoTEVWQlFVVXNkVUpCUVZNc1QwRkJUeXhGUVVGRk8wRkJReTlDTEZGQlFVa3NTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSVHRCUVVOMlFpeGhRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU03UzBGRGVrTXNUVUZCVFR0QlFVTk1MRlZCUVVrc1EwRkJReXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNN1MwRkRjRVE3TzBGQlJVUXNVVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU03UjBGREwwSTdPenM3T3pzN096czdPMEZCVjBRc1VVRkJUU3hGUVVGRkxHdENRVUZYTzBGQlEycENMRkZCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEZRVUZGTzBGQlEyNUNMRlZCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVlVGQlFTeFBRVUZQTzJWQlFVa3NRMEZCUXl4aFFVRmhMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF6dFBRVUZCTEVOQlFVTXNRMEZCUXpzN1FVRkZhRVVzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRka1FzVFVGQlRUdEJRVU5NTEZWQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU0xUWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRMlFzVFVGQlRTeEZRVU5PTEV0QlFVc3NSVUZEVEN4alFVRmpMRVZCUTJRc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eExRVUZMTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVNelF5eEpRVUZKTEVOQlEwd3NRMEZCUXl4RFFVRkRPMEZCUTBnc1ZVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTTNRaXhaUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlEyUXNVMEZCVXl4RlFVTlVMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeEZRVUZGTEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkRNVU1zU1VGQlNTeERRVU5NTEVOQlFVTXNRMEZCUXp0UFFVTktPMHRCUTBZN1IwRkRSanM3T3pzN096czdRVUZSUkN4bFFVRmhMRVZCUVVVc2VVSkJRVmM3UVVGRGVFSXNVVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkRZaXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlEyeENMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zTkVKQlFUUkNMRU5CUVVNc1JVRkROVU1zUjBGQlJ5eEZRVU5JTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkRaaXhIUVVGSExFTkJRMG9zUTBGQlF5eERRVU5JTEVOQlFVTTdSMEZEU0RzN096czdPenM3TzBGQlUwUXNXVUZCVlN4RlFVRkZMRzlDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU14UWl4UlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFdEJRVXNzUTBGQlF6dEhRVU14UWpzN096czdPenM3UVVGUlJDeGhRVUZYTEVWQlFVVXNkVUpCUVZjN1FVRkRkRUlzVVVGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03UjBGRE0wUTdPenM3T3pzN096dEJRVk5FTEdsQ1FVRmxMRVZCUVVVc2VVSkJRVk1zUzBGQlN5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRM1JFTEZGQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenM3UVVGRlZpeFJRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHM3TzBGQlIzWkVMRlZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTMEZETTBNc1RVRkJUVHRCUVVOTUxGVkJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXp0TFFVTndRanM3UVVGRlJDeFJRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRk5CUVZNc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRIUVVOMFJEczdPenM3T3pzN08wRkJVMFFzYTBKQlFXZENMRVZCUVVVc01FSkJRVk1zV1VGQldTeEZRVUZGTEV0QlFVc3NSVUZCUlR0QlFVTTVReXhSUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXpzN1FVRkZNMElzVVVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNwRkxGRkJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEhRVU4yUXpzN096czdPenM3UVVGUlJDeFpRVUZWTEVWQlFVVXNiMEpCUVZNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZEZWtNc1VVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU5XTEZWQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTXZRaXhOUVVGTk8wRkJRMHdzVlVGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExIVkNRVUYxUWl4SFFVRkhMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU01UkRzN1FVRkZSQ3hSUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SFFVTnNSRHM3UVVGRlJDeGhRVUZYTEVWQlFVVXNjVUpCUVZNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSVHM3T3pzN1FVRkRia1FzVVVGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNSVUZCUlR0QlFVTnlSQ3hWUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6RkZMR0ZCUVU4N1MwRkRVanM3UVVGRlJDeFJRVUZKTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRM1pDTEZkQlFVOHNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUczdRVUZGYmtJc1ZVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFZRVUZCTEU5QlFVOHNSVUZCU1R0QlFVTXpRaXhaUVVGSkxFMUJRVTBzUjBGQlJ5eFBRVUZMTEZWQlFWVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPenM3UVVGSGRFUXNXVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVOV0xHbENRVUZQTEVOQlFVTXNZVUZCWVN4RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVMEZEYUVRc1RVRkJUVHM3UVVGRlRDeHBRa0ZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFRRVU42UWp0UFFVTkdMRU5CUVVNc1EwRkJRenM3UzBGRlNqdEhRVU5HT3pzN096czdPenM3UVVGVFJDeDFRa0ZCY1VJc1JVRkJSU3hwUTBGQlZ6dEJRVU5vUXl4UlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRMUlzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eEZRVU5zUXl4SFFVRkhMRVZCUTBnc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEZRVU5tTEVsQlFVa3NSVUZEU2l4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU51UWl4SFFVRkhMRU5CUTBvc1EwRkJReXhEUVVGRE8wZEJRMG83T3pzN096czdPenM3UVVGVlJDeHBRa0ZCWlN4RlFVRkZMSGxDUVVGVExFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVTdRVUZEZEVNc1VVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzBGQlEyNUNMRkZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdPenM3UVVGSmRFSXNVVUZCU1N4SlFVRkpMRXRCUVVzc1pVRkJaU3hGUVVGRk8wRkJRelZDTEZWQlFVa3NUMEZCVHl4TlFVRk5MRXRCUVVzc1VVRkJVU3hGUVVGRk8wRkJRemxDTEZsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VDBGRGVrSXNUVUZCVFR0QlFVTk1MRmxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRQUVVNdlFqdExRVU5HTzBkQlEwWTdPMEZCUlVRc1YwRkJVeXhGUVVGRkxHMUNRVUZUTEZOQlFWTXNSVUZCUlR0QlFVTTNRaXhSUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZEYWtJc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTnFRanRCUVVORUxGRkJRVWtzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0QlFVTnlRaXhWUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTJoQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRha0k3UVVGRFJDeFJRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVTBGQlV5eEhRVUZITEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRIUVVOMlJEdEJRVU5FTEZWQlFWRXNSVUZCUlN4dlFrRkJWenRCUVVOdVFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVN1FVRkRZaXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE4wSTdRVUZEUkN4UlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVVzVFVGQlRTeEZRVUZGTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJTeEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8wZEJRemxFTzBGQlEwUXNVMEZCVHl4RlFVRkZMRzFDUVVGWE8wRkJRMnhDTEZGQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGNrSXNVVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPenRCUVVVNVFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzVlVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNwRE8wRkJRMFFzVVVGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMEZCUTNKQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTNReXhWUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZETTBNN08wRkJSVVFzVVVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUXpWRE96czdPenM3T3p0QlFWRkVMRmxCUVZVc1JVRkJSU3h2UWtGQlV5eE5RVUZOTEVWQlFVVTdRVUZETTBJc1VVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTnNSRHM3T3pzN096czdPenRCUVZWRUxHRkJRVmNzUlVGQlJTeHhRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRNMElzVVVGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBkQlF6bENPenM3T3pzN096czdPMEZCVlVRc1lVRkJWeXhGUVVGRkxIRkNRVUZUTEVsQlFVa3NSVUZCUlR0QlFVTXhRaXhSUVVGSkxFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYUVJc1ZVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRM0pFTEUxQlFVMDdRVUZEVEN4VlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkROMEk3UjBGRFJqczdPenM3T3pzN08wRkJVMFFzYlVKQlFXbENMRVZCUVVFc01rSkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFVTnFReXhSUVVGSkxHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRmxCUVZrc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5eERRVUZETzFGQlEyNUZMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVsQlFVa3NSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenM3UVVGRmJFUXNVVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGRGJrSXNUMEZCVHl4RlFVTlFMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zV1VGQldTeERRVUZETEdOQlFXTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkRMME1zU1VGQlNTeEZRVU5LTEU5QlFVOHNSVUZEVUN4WFFVRlhMRVZCUTFnc1QwRkJUeXhEUVVOU0xFTkJRVU1zUlVGRFJpeFRRVUZUTEVOQlExWXNRMEZCUXl4RFFVRkRPMGRCUTBvN096czdPenM3T3pzN08wRkJWMFFzWTBGQldTeEZRVUZGTEhOQ1FVRlRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlEyaEVMRkZCUVVrc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdVVUZETjBJc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE96dEJRVVUzUXl4UlFVRkpMSEZDUVVGeFFpeEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZMMElzVVVGQlNTeFJRVUZSTEVWQlFVVTdPMEZCUlZvc01rSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU42UXpzN1FVRkZSQ3g1UWtGQmNVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03UVVGRGRFTXNVVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzaENMREpDUVVGeFFpeERRVUZETEVsQlFVa3NRMEZEZUVJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5d3JRa0ZCSzBJc1EwRkJReXhEUVVOb1JDeERRVUZETzB0QlEwZzdPMEZCUlVRc1VVRkJTU3hyUWtGQmEwSXNSMEZCUnl4RFFVTjJRaXhIUVVGSExFVkJRMGdzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVOc1JDeEhRVUZITEVOQlEwb3NRMEZCUXp0QlFVTkdMRkZCUVVrc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNXVUZCV1N4RFFVTjZReXhyUWtGQmEwSXNSVUZEYkVJc1RVRkJUU3hGUVVOT0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlEyeENMRU5CUVVNN1FVRkRSaXhSUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMGRCUTNwQ096dEJRVVZFTEd0Q1FVRm5RaXhGUVVGRkxEQkNRVUZUTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVN1FVRkRNME1zVVVGQlNTeE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTJoQ0xGVkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRFSXNVMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRGNrTXNXVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRiRU03UVVGRFJDeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenM3T3pzN096dEJRVkZFTEcxQ1FVRnBRaXhGUVVGRkxESkNRVUZUTEZOQlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVN1FVRkRNME1zVVVGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZETDBNc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF6dEhRVU0zUlRzN096czdPenM3T3pzN096czdRVUZqUkN4cFFrRkJaU3hGUVVGRkxIbENRVUZUTEVsQlFVa3NSVUZCUlN4VlFVRlZMRVZCUVVVN1FVRkRNVU1zVVVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenM3UVVGRk0wSXNVVUZCU1N4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZET3p0QlFVVm9ReXhSUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdRVUZEYWtJc1VVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZET3p0QlFVVnVSQ3hSUVVGSkxGVkJRVlVzUjBGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRMnBFTEZOQlFWTXNSVUZEVkN4SlFVRkpMRVZCUTBvc1VVRkJVU3hEUVVOVUxFRkJRVU1zUTBGQlF6czdRVUZGU0N4UlFVRkpMRTFCUVUwc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeFpRVUZaTEVWQlFVVXNWVUZCVlN4RlFVRkZMRTFCUVUwc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEY2tVc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTNoQ0xGbEJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNN1FVRkRla0lzV1VGQlRTeERRVUZETEVsQlFVa3NRMEZEVkN4elFrRkJjMElzUlVGRGRFSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXdyUWtGQkswSXNRMEZCUXl4RFFVTm9SQ3hEUVVGRE8wdEJRMGc3TzBGQlJVUXNVVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVOU0xFZEJRVWNzUlVGRFNDeE5RVUZOTEVWQlEwNHNUVUZCVFN4RFFVRkRMRlZCUVZVc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVOdVJDeEpRVUZKTEVWQlEwb3NjVUpCUVhGQ0xFVkJRM0pDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRelZDTEV0QlFVc3NSVUZEVEN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eFJRVUZSTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGRE4wUXNZVUZCWVN4RFFVTmtMRU5CUVVNc1EwRkJRenRIUVVOS096czdPenM3T3pzN1FVRlRSQ3hsUVVGaExFVkJRVVVzZFVKQlFWTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGREwwTXNVVUZCU1N4TlFVRk5MRWRCUVVjc1JVRkJSVHRSUVVOaUxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdPMEZCUlRsRExGRkJRVWtzVTBGQlV5eEZRVUZGTzBGQlEySXNWVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU4yUWl4aFFVRlBMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03UzBGRGNrSTdPMEZCUlVRc1VVRkJTU3hOUVVGTkxFVkJRVVU3UVVGRFZpeGhRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTMEZEZWtNN1FVRkRSQ3hYUVVGUExFTkJRVU1zVDBGQlR5eEhRVUZITEZOQlFWTXNRMEZCUXp0QlFVTTFRaXhYUVVGUExFTkJRVU1zVVVGQlVTeEhRVUZITEZWQlFWVXNRMEZCUXp0QlFVTTVRaXhYUVVGUExFTkJRVU1zVlVGQlZTeEhRVUZITEhOQ1FVRnpRaXhEUVVGRE96dEJRVVUxUXl4UlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMlFzV1VGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVNNVJDeE5RVUZOTzBGQlEwd3NXVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU4wUWpzN1FVRkZSQ3hSUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTNaQ0xHRkJRVThzUTBGQlF5eE5RVUZOTEVkQlFVY3NVVUZCVVN4RFFVRkRPMHRCUXpOQ08wRkJRMFFzVjBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGRFTXNWVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6czdRVUZGY2tJc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXg1UWtGQmVVSXNSVUZCUlN4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEhRVU0xUlRzN096czdPenM3UVVGUlJDeGpRVUZaTEVWQlFVVXNjMEpCUVZNc1IwRkJSeXhGUVVGRk8wRkJRekZDTEZGQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3VVVGRGVrSXNUMEZCVHl4WlFVRkJPMUZCUTFBc1NVRkJTU3haUVVGQk8xRkJRMG9zUlVGQlJTeFpRVUZCTEVOQlFVTTdPMEZCUlV3c1VVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEycENMRkZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdTMEZEZEVJN1FVRkRSQ3hSUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZEY2tJc1ZVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTjJRaXhoUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMHRCUXpOQ096dEJRVVZFTEZGQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGNrSXNVVUZCU1N4UFFVRlBMRVZCUVVVN1FVRkRXQ3hWUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJRenRMUVVNNVFqdEJRVU5FTEZGQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTFJc1ZVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRlRUk3UVVGRFJDeFJRVUZKTEVWQlFVVXNSVUZCUlR0QlFVTk9MRlZCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMHRCUTNCQ08wRkJRMFFzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03UjBGRE1VSTdPMEZCUlVRc1VVRkJUU3hGUVVGRkxHZENRVUZUTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRk8wRkJRMnhETEZGQlFVa3NTVUZCU1N4TFFVRkxMRmxCUVZrc1JVRkJSVHRCUVVONlFpeFZRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRMjVDTEdOQlFXTXNSMEZEV2l4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRMUFzVTBGQlV5eEhRVU5VTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkRVQ3hIUVVGSExFbEJRMFlzUzBGQlN5eEhRVUZITEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVFc1FVRkJReXhEUVVOeVJDeERRVUZETzB0QlEwZ3NUVUZCVFN4SlFVRkpMRWxCUVVrc1MwRkJTeXhuUWtGQlowSXNSVUZCUlR0QlFVTndReXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNaQ0xFMUJRVTBzU1VGQlNTeEpRVUZKTEV0QlFVc3NaVUZCWlN4RlFVRkZPMEZCUTI1RExGVkJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU12UWl4TlFVRk5PMEZCUTB3c1ZVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJReTlDTzBkQlEwWTdPenM3UVVGSlJDeFZRVUZSTEVWQlFVVXNhMEpCUVd0Q096dEJRVVUxUWl4cFFrRkJaU3hGUVVGRkxIbENRVUZUTEZkQlFWY3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRPVU1zVVVGQlNTeFJRVUZSTEVkQlFVY3NWMEZCVnl4RFFVRkRMRkZCUVZFN1VVRkRha01zUzBGQlN5eFpRVUZCTzFGQlEwd3NVVUZCVVN4WlFVRkJMRU5CUVVNN08wRkJSVmdzVTBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU12UXl4WFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzQkNMR05CUVZFc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXpzN1FVRkZMMElzVlVGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWb1JDeFZRVUZKTEZGQlFWRXNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRjRUlzV1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF5OUNMRmxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVONlF5eGhRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVOd1FpeGhRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNXVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkROME1zUzBGQlN5eEZRVU5NTEU5QlFVOHNSVUZEVUN4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVOYUxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZEYWtJc1EwRkJRenRCUVVOR0xGbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eFZRVUZWTEVOQlFVTTdRVUZEY2tRc1dVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRE96dEJRVVY2UXl4WlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVsQlFVa3NVVUZCVVN4RFFVRkRMRk5CUVZNc1EwRkJRenRCUVVOMFJDeFpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFbEJRVWtzVVVGQlVTeERRVUZETEdOQlFXTXNRMEZCUXp0QlFVTnlSU3hoUVVGTExFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1FVRkRha01zWVVGQlN5eERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRE8wOUJRelZETEUxQlFVMDdRVUZEVEN4aFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTTdRVUZETjBJc1lVRkJTeXhEUVVGRExFbEJRVWtzUjBGQlJ5eFRRVUZUTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJRenM3UVVGRmVFTXNXVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eEpRVUZKTEZGQlFWRXNRMEZCUXl4VFFVRlRMRU5CUVVNN1FVRkRkRVFzV1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhKUVVGSkxGRkJRVkVzUTBGQlF5eGpRVUZqTEVOQlFVTTdUMEZEZEVVN1MwRkRSanRIUVVOR08wRkJRMFFzYzBKQlFXOUNMRVZCUVVVc09FSkJRVk1zUzBGQlN5eEZRVUZGTzBGQlEzQkRMRk5CUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU53UlN4VlFVRkpMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNdlF5eFZRVUZKTEZkQlFWY3NTVUZCU1N4WFFVRlhMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTzBGQlF6VkRMR1ZCUVU4c1YwRkJWeXhEUVVGRE8wOUJRM0JDTzB0QlEwWTdSMEZEUmpzN1FVRkZSQ3h0UWtGQmFVSXNSVUZCUlN3eVFrRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGFFTXNVVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRPMUZCUTNwRExHRkJRV0VzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXpzN1FVRkZNMFFzVVVGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVU3UVVGRGVrTXNiVUpCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdTMEZEYmtNN1FVRkRSQ3hSUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEYkVJc2JVSkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1MwRkRPVUk3TzBGQlJVUXNWMEZCVHl4dlFrRkJiMElzUjBGQlJ5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dEhRVU01UkRzN1FVRkZSQ3hoUVVGWExFVkJRVVVzY1VKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUXpGQ0xGRkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRM3BDTEZWQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzBGQlF6VkNMRlZCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOb1F6dEhRVU5HT3p0QlFVVkVMRTFCUVVrc1JVRkJSU3hqUVVGVExFbEJRVWtzUlVGQlJUdEJRVU51UWl4UlFVRkpMRVZCUVVVc1NVRkJTU3haUVVGWkxFOUJRVThzUTBGQlFTeEJRVUZETEVWQlFVVTdRVUZET1VJc1ZVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJReTlDT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpWQ0xGZEJRVThzU1VGQlNTeERRVUZETzBkQlEySTdPMEZCUlVRc2EwSkJRV2RDTEVWQlFVVXNNRUpCUVZNc1NVRkJTU3hGUVVGRk8wRkJReTlDTEZGQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTTVRanM3UVVGRlJDeFpRVUZWTEVWQlFVVXNiMEpCUVZNc1RVRkJUU3hGUVVGRk8wRkJRek5DTEZGQlFVa3NTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSVHRCUVVOMlFpeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkRaQ3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVU5xUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRVZCUXpkRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlEzSkNMRU5CUTBZc1EwRkJRenRCUVVOR0xGVkJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NVMEZCVXl4RFFVRkRPMHRCUTJwRE96dEJRVVZFTEZGQlFVa3NUVUZCVFN4RlFVRkZPMEZCUTFZc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRNVUk3UjBGRFJqczdRVUZGUkN4alFVRlpMRVZCUVVVc2MwSkJRVk1zVVVGQlVTeEZRVUZGTzBGQlF5OUNMRkZCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETzFGQlEyaENMRXRCUVVzc1dVRkJRVHRSUVVOTUxGbEJRVmtzV1VGQlFUdFJRVU5hTEZkQlFWY3NXVUZCUVN4RFFVRkRPenM3UVVGSFpDeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRk8wRkJRM0JDTEZsQlFVMHNNa0pCUVdNc05FSkJRVFJDTEVOQlFVTXNRMEZCUXp0TFFVTnVSRHM3TzBGQlIwUXNVVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZPVUlzVVVGQlNTeEhRVUZITEZsQlFWa3NUMEZCVHl4RlFVRkZPenRCUVVVeFFpeFhRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGNFSXNXVUZCVFN4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEzUkNMR2xDUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEzQkNMRTFCUVUwN08wRkJSVXdzYTBKQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRjRUlzVlVGQlNTeExRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE96dEJRVVUxUWl4WlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkpMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTJ4RUxGZEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1MwRkRla0k3TzBGQlJVUXNVVUZCU1N4SlFVRkpMRWRCUVVjc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSWFJETEZGQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1FVRkRhRUlzVlVGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMHRCUTJwQ08wRkJRMFFzVVVGQlNTeFpRVUZaTEVWQlFVVTdRVUZEYUVJc1ZVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzB0QlEyeENPMEZCUTBRc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEzSkRPenRCUVVWRUxGZEJRVk1zUlVGQlJTeHhRa0ZCVnp0QlFVTndRaXhSUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdRVUZEYWtJc1VVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRekZETEZWQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1MwRkRMME03UVVGRFJDeFhRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRIUVVNMVFqdEJRVU5FTEdOQlFWa3NSVUZCUlN4M1FrRkJWenRCUVVOMlFpeFhRVUZQTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRE8wZEJRMnBETzBGQlEwUXNZVUZCVnl4RlFVRkZMSFZDUVVGWE8wRkJRM1JDTEZGQlFVa3NWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03UVVGRGJrTXNVVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGRFSXNVMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZITEZkQlFWY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTjBSQ3hWUVVGSkxFdEJRVXNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSVE5DTEZWQlFVa3NTMEZCU3l4WlFVRlpMRTlCUVU4c1JVRkJSVHRCUVVNMVFpeFpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFBRVU12UWl4TlFVRk5PMEZCUTB3c1dVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMEZCUXpkQ0xGbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRExGbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wOUJReTlDTzB0QlEwWTdSMEZEUmp0QlFVTkVMRlZCUVZFc1JVRkJSU3h2UWtGQlZ6dEJRVU51UWl4WFFVRlBMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeERRVUZETzBkQlEyaERPenRCUVVWRUxGVkJRVkVzUlVGQlJTeHJRa0ZCVXl4UFFVRlBMRVZCUVVVN1FVRkRNVUlzVVVGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRSUVVNeFFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkJMRU5CUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBGQlJTOUVMRkZCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzU1VGQlNTeFpRVUZaTEU5QlFVOHNSVUZCUlR0QlFVTjJReXhoUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZEYmtJc1RVRkJUVHRCUVVOTUxGVkJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVTdPMEZCUlZnc1dVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEYmtJc1owSkJRVTBzTWtKQlFXTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dFRRVU14UXp0QlFVTkVMRmxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dFBRVU5zUWp0QlFVTkVMR0ZCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMkk3UjBGRFJqczdRVUZGUkN4VlFVRlJMRVZCUVVVc2IwSkJRVmM3UVVGRGJrSXNVVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVms3VVVGRGFFVXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPenM3UVVGSGFrTXNVVUZCU1N4SlFVRkpMRmxCUVZrc1QwRkJUeXhGUVVGRk8wRkJRek5DTEdGQlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVOdVFpeE5RVUZOTzBGQlEwd3NZVUZCVHl4SlFVRkpMRU5CUVVNN1MwRkRZanRIUVVOR096dEJRVVZFTEdGQlFWY3NSVUZCUlN4eFFrRkJVeXhQUVVGUExFVkJRVVU3UVVGRE4wSXNVVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFOUJRVThzUlVGQlJUdEJRVU0zUWl4aFFVRlBMRk5CUVZNc1IwRkJSeXhQUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETzB0QlEyeERMRTFCUVUwN1FVRkRUQ3hoUVVGUExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTTdTMEZETVVJN1IwRkRSanM3UVVGRlJDeGpRVUZaTEVWQlFVVXNjMEpCUVZNc1IwRkJSeXhGUVVGRk8wRkJRekZDTEZkQlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdSMEZEZEVNN08wRkJSVVFzWlVGQllTeEZRVUZGTEhWQ1FVRlRMRWRCUVVjc1JVRkJSVHRCUVVNelFpeFhRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBkQlEzWkRPenRCUVVWRUxGZEJRVk1zUlVGQlJTeHRRa0ZCVXl4SlFVRkpMRVZCUVVVN1FVRkRlRUlzVVVGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU0zUWl4UlFVRkpMRWRCUVVjc1JVRkJSVHRCUVVOUUxGTkJRVWNzUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0QlFVTnlRaXhoUVVGUExFZEJRVWNzUTBGQlF6dExRVU5hT3p0QlFVVkVMRTlCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTJ4RUxFOUJRVWNzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTNKQ0xFOUJRVWNzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RFFVRkRPenRCUVVWMlFpeFhRVUZQTEVkQlFVY3NRMEZCUXp0SFFVTmFPenRCUVVWRUxHRkJRVmNzUlVGQlJTeHhRa0ZCVXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJRVmNzUlVGQlJUdEJRVU5zUkN4UlFVRkpMRTFCUVUwc1IwRkJSeXhGUVVGRk8xRkJRMklzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1NVRkJTU3hGUVVGRkxGTkJRVk1zUlVGQlJTeE5RVUZOTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1FVRkRNVVVzVVVGQlNTeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeEZRVUZGTEZGQlFWRXNRMEZCUXp0UlFVTXhSQ3hYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZEZGtJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNiVUpCUVdNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGRGJFUXNRMEZCUXl4RFFVTkdMSE5EUVVOR0xFTkJRVU03TzBGQlJVb3NWMEZCVHp0QlFVTk1MRmxCUVUwc1JVRkJSU3hOUVVGTk8wRkJRMlFzWjBKQlFWVXNSVUZCUlN4VlFVRlZPMEZCUTNSQ0xGVkJRVWtzUlVGQlJTeFhRVUZYTzBGQlEycENMR2RDUVVGVkxFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wdEJRM3BETEVOQlFVTTdSMEZEU0RzN1FVRkZSQ3hoUVVGWExFVkJRVVVzY1VKQlFWTXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGREwwTXNVVUZCU1N4UFFVRlBMRWRCUVVjc1JVRkJSVHRSUVVOa0xGRkJRVkVzUjBGQlJ5eEZRVUZGTzFGQlEySXNTMEZCU3l4SFFVRkhMRVZCUVVVN1VVRkRWaXhIUVVGSExFZEJRVWNzUlVGQlJUdFJRVU5TTEZWQlFWVXNSMEZCUnl4RFFVRkRMRTFCUVUwN1VVRkRjRUlzUzBGQlN5eFpRVUZCTEVOQlFVTTdPMEZCUlZJc1VVRkJTU3hWUVVGVkxFVkJRVVU3UVVGRFpDeFpRVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRPMHRCUTJJN08wRkJSVVFzVjBGQlR5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEzcERMRmRCUVU4c1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPenRCUVVVdlFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzWVVGQlR5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UzBGRGJrTTdRVUZEUkN4UlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRGNrSXNZVUZCVHl4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZEY0VNc1lVRkJUeXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1MwRkRlRU03TzBGQlJVUXNVVUZCU1N4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdFJRVU16UWl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZET3pzN08wRkJTVFZDTEZGQlFVa3NUMEZCVHl4SlFVRkpMRTlCUVU4c1JVRkJSVHRCUVVOMFFpeGhRVUZQTEVOQlFVTXNSVUZCUlN4SFFVRkhMRTlCUVU4c1NVRkJTU3huUWtGQlowSXNRMEZCUXp0QlFVTjZReXhoUVVGUExFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNTVUZCU1N4blFrRkJaMElzUTBGQlF6dExRVU12UXpzN096dEJRVWxFTEZGQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVOc1FpeFhRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTFZc1YwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTjRRaXhaUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRPenRCUVVWc1FpeFZRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzVjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFBRVU14UWp0QlFVTkVMRlZCUVVrc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJUdEJRVU55UWl4aFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMEZCUXpOQ0xHZENRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzA5QlF5OUNPMHRCUTBZN08wRkJSVVFzVVVGQlNTeFZRVUZWTEVWQlFVVTdRVUZEWkN4aFFVRlBMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJRMnhFT3p0QlFVVkVMRkZCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5xUWl4aFFVRlBMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRemxETzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRk8wRkJRM0pDTEdGQlFVOHNRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRha1FzWVVGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0TFFVTjRSRHM3UVVGRlJDeFJRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRM0pDTEdGQlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1RVRkJUU3hEUVVGRE8wdEJRM1pDTzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRM1pDTEdGQlFVOHNRMEZCUXl4WFFVRlhMRWRCUVVjc1lVRkJZU3hEUVVGRE8wdEJRM0pETzBGQlEwUXNWMEZCVHl4UFFVRlBMRU5CUVVNN1IwRkRhRUk3TzBGQlJVUXNhVUpCUVdVc1JVRkJSU3g1UWtGQlV5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hYUVVGWExFVkJRVVU3UVVGRGFFVXNVVUZCU1N4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRekZFTEZkQlFVOHNRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8wRkJRekZFTEZkQlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlEzUkRMRkZCUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzVlVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRCUVVNMVFpeFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRM1pDTEdGQlFVOHNRMEZCUXl4VlFVRlZMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRE9VSXNUVUZCVFN4SlFVRkpMRTFCUVUwc1JVRkJSVHRCUVVOcVFpeFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRM0pDTEdGQlFVOHNSVUZCUlN4RFFVRkRPMHRCUTFnc1RVRkJUVHRCUVVOTUxHRkJRVThzVDBGQlR5eERRVUZETzB0QlEyaENPMGRCUTBZN1EwRkRSaXhEUVVGRE96dEJRVVZHTEVOQlFVTXNXVUZCVnp0QlFVTldMRTFCUVUwc1lVRkJZU3hIUVVGSExFTkJRM0JDTEc5Q1FVRnZRaXhIUVVOd1Fpd3lRa0ZCTWtJc1IwRkRNMElzZVVKQlFYbENMRWRCUTNwQ0xEaENRVUU0UWl4SFFVTTVRaXh0UWtGQmJVSXNSMEZEYmtJc1owSkJRV2RDTEVkQlEyaENMSFZDUVVGMVFpeEhRVU4yUWl3d1FrRkJNRUlzUjBGRE1VSXNhME5CUVd0RExFZEJRMnhETERCQ1FVRXdRaXhIUVVNeFFpeHBRMEZCYVVNc1IwRkRha01zTmtKQlFUWkNMRWRCUXpkQ0xDdENRVUVyUWl4SFFVTXZRaXg1UTBGQmVVTXNSMEZEZWtNc2RVTkJRWFZETEVkQlEzWkRMR3RDUVVGclFpeERRVUZCTEVOQlEyeENMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6czdRVUZGWWl4TlFVRk5MR0ZCUVdFc1IwRkJTU3hyUWtGQmEwSXNRMEZCUXl4alFVRmpMRWRCUVVjc1JVRkJSU3hCUVVGRExFTkJRVU03TzBGQlJTOUVMRTlCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4aFFVRmhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRjRVFzYVVKQlFXRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdSMEZEZUVNN1EwRkRSaXhEUVVGQkxFVkJRVWNzUTBGQlF6czdPenM3UVVGTFRDeHJRa0ZCYTBJc1EwRkJReXcyUWtGQk5rSXNSMEZCUnl4VlFVRlRMRWxCUVVrc1JVRkJSVHRCUVVOb1JTeFRRVU5GTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVTjRReXcwUWtGQk5FSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRM1pETzBOQlEwZ3NRMEZCUXpzN1FVRkZSaXhUUVVGVExGbEJRVmtzUTBGQlF5eGxRVUZsTEVWQlFVVXNVVUZCVVN4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFVkJRVVU3UVVGRE5VUXNUVUZCU1N4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJUdE5RVU0zUWl4RFFVRkRMRWRCUVVjc1EwRkJRenROUVVOTUxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTNKQ0xFMUJRVWtzWlVGQlpTeEZRVUZGTzBGQlEyNUNMRTlCUVVjc1JVRkJSU3hEUVVGRE8wZEJRMUE3TzBGQlJVUXNVMEZCVHl4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEyNUNMRk5CUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdSMEZEY0VRN08wRkJSVVFzVFVGQlNTeGxRVUZsTEVWQlFVVTdRVUZEYmtJc1YwRkJUeXhEUVVOTUxGRkJRVkVzUTBGQlF5eFRRVUZUTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUlVGRGRFTXNSMEZCUnl4RlFVTklMRXRCUVVzc1JVRkRUQ3hKUVVGSkxFVkJRMG9zVVVGQlVTeERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGREwwSXNTVUZCU1N4RlFVTktMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1JVRkRMME1zU1VGQlNTeERRVU5NTEVOQlFVTTdSMEZEU0N4TlFVRk5PMEZCUTB3c1YwRkJUeXhMUVVGTExFTkJRVU03UjBGRFpEdERRVU5HT3p0eFFrRkZZeXhyUWtGQmEwSWlMQ0ptYVd4bElqb2lhbUYyWVhOamNtbHdkQzFqYjIxd2FXeGxjaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFTlBUVkJKVEVWU1gxSkZWa2xUU1U5T0xDQlNSVlpKVTBsUFRsOURTRUZPUjBWVElIMGdabkp2YlNBbkxpNHZZbUZ6WlNjN1hHNXBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dUwyVjRZMlZ3ZEdsdmJpYzdYRzVwYlhCdmNuUWdleUJwYzBGeWNtRjVJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1YVcxd2IzSjBJRU52WkdWSFpXNGdabkp2YlNBbkxpOWpiMlJsTFdkbGJpYzdYRzVjYm1aMWJtTjBhVzl1SUV4cGRHVnlZV3dvZG1Gc2RXVXBJSHRjYmlBZ2RHaHBjeTUyWVd4MVpTQTlJSFpoYkhWbE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCS1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJb0tTQjdmVnh1WEc1S1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJdWNISnZkRzkwZVhCbElEMGdlMXh1SUNBdkx5QlFWVUpNU1VNZ1FWQkpPaUJaYjNVZ1kyRnVJRzkyWlhKeWFXUmxJSFJvWlhObElHMWxkR2h2WkhNZ2FXNGdZU0J6ZFdKamJHRnpjeUIwYnlCd2NtOTJhV1JsWEc0Z0lDOHZJR0ZzZEdWeWJtRjBhWFpsSUdOdmJYQnBiR1ZrSUdadmNtMXpJR1p2Y2lCdVlXMWxJR3h2YjJ0MWNDQmhibVFnWW5WbVptVnlhVzVuSUhObGJXRnVkR2xqYzF4dUlDQnVZVzFsVEc5dmEzVndPaUJtZFc1amRHbHZiaWh3WVhKbGJuUXNJRzVoYldVZ0x5b3NJQ0IwZVhCbElDb3ZLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVc1MFpYSnVZV3hPWVcxbFRHOXZhM1Z3S0hCaGNtVnVkQ3dnYm1GdFpTazdYRzRnSUgwc1hHNGdJR1JsY0hSb1pXUk1iMjlyZFhBNklHWjFibU4wYVc5dUtHNWhiV1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdXM1JvYVhNdVlXeHBZWE5oWW14bEtDZGpiMjUwWVdsdVpYSXViRzl2YTNWd0p5a3NJQ2NvWkdWd2RHaHpMQ0JjSWljc0lHNWhiV1VzSUNkY0lpa25YVHRjYmlBZ2ZTeGNibHh1SUNCamIyMXdhV3hsY2tsdVptODZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJR052Ym5OMElISmxkbWx6YVc5dUlEMGdRMDlOVUVsTVJWSmZVa1ZXU1ZOSlQwNHNYRzRnSUNBZ0lDQjJaWEp6YVc5dWN5QTlJRkpGVmtsVFNVOU9YME5JUVU1SFJWTmJjbVYyYVhOcGIyNWRPMXh1SUNBZ0lISmxkSFZ5YmlCYmNtVjJhWE5wYjI0c0lIWmxjbk5wYjI1elhUdGNiaUFnZlN4Y2JseHVJQ0JoY0hCbGJtUlViMEoxWm1abGNqb2dablZ1WTNScGIyNG9jMjkxY21ObExDQnNiMk5oZEdsdmJpd2daWGh3YkdsamFYUXBJSHRjYmlBZ0lDQXZMeUJHYjNKalpTQmhJSE52ZFhKalpTQmhjeUIwYUdseklITnBiWEJzYVdacFpYTWdkR2hsSUcxbGNtZGxJR3h2WjJsakxseHVJQ0FnSUdsbUlDZ2hhWE5CY25KaGVTaHpiM1Z5WTJVcEtTQjdYRzRnSUNBZ0lDQnpiM1Z5WTJVZ1BTQmJjMjkxY21ObFhUdGNiaUFnSUNCOVhHNGdJQ0FnYzI5MWNtTmxJRDBnZEdocGN5NXpiM1Z5WTJVdWQzSmhjQ2h6YjNWeVkyVXNJR3h2WTJGMGFXOXVLVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbVZ1ZG1seWIyNXRaVzUwTG1selUybHRjR3hsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnV3lkeVpYUjFjbTRnSnl3Z2MyOTFjbU5sTENBbk95ZGRPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9aWGh3YkdsamFYUXBJSHRjYmlBZ0lDQWdJQzh2SUZSb2FYTWdhWE1nWVNCallYTmxJSGRvWlhKbElIUm9aU0JpZFdabVpYSWdiM0JsY21GMGFXOXVJRzlqWTNWeWN5QmhjeUJoSUdOb2FXeGtJRzltSUdGdWIzUm9aWEpjYmlBZ0lDQWdJQzh2SUdOdmJuTjBjblZqZEN3Z1oyVnVaWEpoYkd4NUlHSnlZV05sY3k0Z1YyVWdhR0YyWlNCMGJ5QmxlSEJzYVdOcGRHeDVJRzkxZEhCMWRDQjBhR1Z6WlNCaWRXWm1aWEpjYmlBZ0lDQWdJQzh2SUc5d1pYSmhkR2x2Ym5NZ2RHOGdaVzV6ZFhKbElIUm9ZWFFnZEdobElHVnRhWFIwWldRZ1kyOWtaU0JuYjJWeklHbHVJSFJvWlNCamIzSnlaV04wSUd4dlkyRjBhVzl1TGx4dUlDQWdJQ0FnY21WMGRYSnVJRnNuWW5WbVptVnlJQ3M5SUNjc0lITnZkWEpqWlN3Z0p6c25YVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2MyOTFjbU5sTG1Gd2NHVnVaRlJ2UW5WbVptVnlJRDBnZEhKMVpUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCemIzVnlZMlU3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUdsdWFYUnBZV3hwZW1WQ2RXWm1aWEk2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuRjFiM1JsWkZOMGNtbHVaeWduSnlrN1hHNGdJSDBzWEc0Z0lDOHZJRVZPUkNCUVZVSk1TVU1nUVZCSlhHNGdJR2x1ZEdWeWJtRnNUbUZ0WlV4dmIydDFjRG9nWm5WdVkzUnBiMjRvY0dGeVpXNTBMQ0J1WVcxbEtTQjdYRzRnSUNBZ2RHaHBjeTVzYjI5cmRYQlFjbTl3WlhKMGVVWjFibU4wYVc5dVNYTlZjMlZrSUQwZ2RISjFaVHRjYmlBZ0lDQnlaWFIxY200Z1d5ZHNiMjlyZFhCUWNtOXdaWEowZVNnbkxDQndZWEpsYm5Rc0lDY3NKeXdnU2xOUFRpNXpkSEpwYm1kcFpua29ibUZ0WlNrc0lDY3BKMTA3WEc0Z0lIMHNYRzVjYmlBZ2JHOXZhM1Z3VUhKdmNHVnlkSGxHZFc1amRHbHZia2x6VlhObFpEb2dabUZzYzJVc1hHNWNiaUFnWTI5dGNHbHNaVG9nWm5WdVkzUnBiMjRvWlc1MmFYSnZibTFsYm5Rc0lHOXdkR2x2Ym5Nc0lHTnZiblJsZUhRc0lHRnpUMkpxWldOMEtTQjdYRzRnSUNBZ2RHaHBjeTVsYm5acGNtOXViV1Z1ZENBOUlHVnVkbWx5YjI1dFpXNTBPMXh1SUNBZ0lIUm9hWE11YjNCMGFXOXVjeUE5SUc5d2RHbHZibk03WEc0Z0lDQWdkR2hwY3k1emRISnBibWRRWVhKaGJYTWdQU0IwYUdsekxtOXdkR2x2Ym5NdWMzUnlhVzVuVUdGeVlXMXpPMXh1SUNBZ0lIUm9hWE11ZEhKaFkydEpaSE1nUFNCMGFHbHpMbTl3ZEdsdmJuTXVkSEpoWTJ0SlpITTdYRzRnSUNBZ2RHaHBjeTV3Y21WamIyMXdhV3hsSUQwZ0lXRnpUMkpxWldOME8xeHVYRzRnSUNBZ2RHaHBjeTV1WVcxbElEMGdkR2hwY3k1bGJuWnBjbTl1YldWdWRDNXVZVzFsTzF4dUlDQWdJSFJvYVhNdWFYTkRhR2xzWkNBOUlDRWhZMjl1ZEdWNGREdGNiaUFnSUNCMGFHbHpMbU52Ym5SbGVIUWdQU0JqYjI1MFpYaDBJSHg4SUh0Y2JpQWdJQ0FnSUdSbFkyOXlZWFJ2Y25NNklGdGRMRnh1SUNBZ0lDQWdjSEp2WjNKaGJYTTZJRnRkTEZ4dUlDQWdJQ0FnWlc1MmFYSnZibTFsYm5Sek9pQmJYVnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjBhR2x6TG5CeVpXRnRZbXhsS0NrN1hHNWNiaUFnSUNCMGFHbHpMbk4wWVdOclUyeHZkQ0E5SURBN1hHNGdJQ0FnZEdocGN5NXpkR0ZqYTFaaGNuTWdQU0JiWFR0Y2JpQWdJQ0IwYUdsekxtRnNhV0Z6WlhNZ1BTQjdmVHRjYmlBZ0lDQjBhR2x6TG5KbFoybHpkR1Z5Y3lBOUlIc2diR2x6ZERvZ1cxMGdmVHRjYmlBZ0lDQjBhR2x6TG1oaGMyaGxjeUE5SUZ0ZE8xeHVJQ0FnSUhSb2FYTXVZMjl0Y0dsc1pWTjBZV05ySUQwZ1cxMDdYRzRnSUNBZ2RHaHBjeTVwYm14cGJtVlRkR0ZqYXlBOUlGdGRPMXh1SUNBZ0lIUm9hWE11WW14dlkydFFZWEpoYlhNZ1BTQmJYVHRjYmx4dUlDQWdJSFJvYVhNdVkyOXRjR2xzWlVOb2FXeGtjbVZ1S0dWdWRtbHliMjV0Wlc1MExDQnZjSFJwYjI1ektUdGNibHh1SUNBZ0lIUm9hWE11ZFhObFJHVndkR2h6SUQxY2JpQWdJQ0FnSUhSb2FYTXVkWE5sUkdWd2RHaHpJSHg4WEc0Z0lDQWdJQ0JsYm5acGNtOXViV1Z1ZEM1MWMyVkVaWEIwYUhNZ2ZIeGNiaUFnSUNBZ0lHVnVkbWx5YjI1dFpXNTBMblZ6WlVSbFkyOXlZWFJ2Y25NZ2ZIeGNiaUFnSUNBZ0lIUm9hWE11YjNCMGFXOXVjeTVqYjIxd1lYUTdYRzRnSUNBZ2RHaHBjeTUxYzJWQ2JHOWphMUJoY21GdGN5QTlJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nZkh3Z1pXNTJhWEp2Ym0xbGJuUXVkWE5sUW14dlkydFFZWEpoYlhNN1hHNWNiaUFnSUNCc1pYUWdiM0JqYjJSbGN5QTlJR1Z1ZG1seWIyNXRaVzUwTG05d1kyOWtaWE1zWEc0Z0lDQWdJQ0J2Y0dOdlpHVXNYRzRnSUNBZ0lDQm1hWEp6ZEV4dll5eGNiaUFnSUNBZ0lHa3NYRzRnSUNBZ0lDQnNPMXh1WEc0Z0lDQWdabTl5SUNocElEMGdNQ3dnYkNBOUlHOXdZMjlrWlhNdWJHVnVaM1JvT3lCcElEd2diRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnZjR052WkdVZ1BTQnZjR052WkdWelcybGRPMXh1WEc0Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1amRYSnlaVzUwVEc5allYUnBiMjRnUFNCdmNHTnZaR1V1Ykc5ak8xeHVJQ0FnSUNBZ1ptbHljM1JNYjJNZ1BTQm1hWEp6ZEV4dll5QjhmQ0J2Y0dOdlpHVXViRzlqTzF4dUlDQWdJQ0FnZEdocGMxdHZjR052WkdVdWIzQmpiMlJsWFM1aGNIQnNlU2gwYUdsekxDQnZjR052WkdVdVlYSm5jeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUm14MWMyZ2dZVzU1SUhSeVlXbHNhVzVuSUdOdmJuUmxiblFnZEdoaGRDQnRhV2RvZENCaVpTQndaVzVrYVc1bkxseHVJQ0FnSUhSb2FYTXVjMjkxY21ObExtTjFjbkpsYm5STWIyTmhkR2x2YmlBOUlHWnBjbk4wVEc5ak8xeHVJQ0FnSUhSb2FYTXVjSFZ6YUZOdmRYSmpaU2duSnlrN1hHNWNiaUFnSUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0FxTDF4dUlDQWdJR2xtSUNoMGFHbHpMbk4wWVdOclUyeHZkQ0I4ZkNCMGFHbHpMbWx1YkdsdVpWTjBZV05yTG14bGJtZDBhQ0I4ZkNCMGFHbHpMbU52YlhCcGJHVlRkR0ZqYXk1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0owTnZiWEJwYkdVZ1kyOXRjR3hsZEdWa0lIZHBkR2dnWTI5dWRHVnVkQ0JzWldaMElHOXVJSE4wWVdOckp5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtUmxZMjl5WVhSdmNuTXVhWE5GYlhCMGVTZ3BLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuVnpaVVJsWTI5eVlYUnZjbk1nUFNCMGNuVmxPMXh1WEc0Z0lDQWdJQ0IwYUdsekxtUmxZMjl5WVhSdmNuTXVjSEpsY0dWdVpDaGJYRzRnSUNBZ0lDQWdJQ2QyWVhJZ1pHVmpiM0poZEc5eWN5QTlJR052Ym5SaGFXNWxjaTVrWldOdmNtRjBiM0p6TENBbkxGeHVJQ0FnSUNBZ0lDQjBhR2x6TG14dmIydDFjRkJ5YjNCbGNuUjVSblZ1WTNScGIyNVdZWEpFWldOc1lYSmhkR2x2YmlncExGeHVJQ0FnSUNBZ0lDQW5PMXhjYmlkY2JpQWdJQ0FnSUYwcE8xeHVJQ0FnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6TG5CMWMyZ29KM0psZEhWeWJpQm1ianNuS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLR0Z6VDJKcVpXTjBLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVaR1ZqYjNKaGRHOXljeUE5SUVaMWJtTjBhVzl1TG1Gd2NHeDVLSFJvYVhNc0lGdGNiaUFnSUNBZ0lDQWdJQ0FuWm00bkxGeHVJQ0FnSUNBZ0lDQWdJQ2R3Y205d2N5Y3NYRzRnSUNBZ0lDQWdJQ0FnSjJOdmJuUmhhVzVsY2ljc1hHNGdJQ0FnSUNBZ0lDQWdKMlJsY0hSb01DY3NYRzRnSUNBZ0lDQWdJQ0FnSjJSaGRHRW5MRnh1SUNBZ0lDQWdJQ0FnSUNkaWJHOWphMUJoY21GdGN5Y3NYRzRnSUNBZ0lDQWdJQ0FnSjJSbGNIUm9jeWNzWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6TG0xbGNtZGxLQ2xjYmlBZ0lDQWdJQ0FnWFNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbVJsWTI5eVlYUnZjbk11Y0hKbGNHVnVaQ2hjYmlBZ0lDQWdJQ0FnSUNBblpuVnVZM1JwYjI0b1ptNHNJSEJ5YjNCekxDQmpiMjUwWVdsdVpYSXNJR1JsY0hSb01Dd2daR0YwWVN3Z1lteHZZMnRRWVhKaGJYTXNJR1JsY0hSb2N5a2dlMXhjYmlkY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1a1pXTnZjbUYwYjNKekxuQjFjMmdvSjMxY1hHNG5LVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWtaV052Y21GMGIzSnpJRDBnZEdocGN5NWtaV052Y21GMGIzSnpMbTFsY21kbEtDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaR1ZqYjNKaGRHOXljeUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ1ptNGdQU0IwYUdsekxtTnlaV0YwWlVaMWJtTjBhVzl1UTI5dWRHVjRkQ2hoYzA5aWFtVmpkQ2s3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbWx6UTJocGJHUXBJSHRjYmlBZ0lDQWdJR3hsZENCeVpYUWdQU0I3WEc0Z0lDQWdJQ0FnSUdOdmJYQnBiR1Z5T2lCMGFHbHpMbU52YlhCcGJHVnlTVzVtYnlncExGeHVJQ0FnSUNBZ0lDQnRZV2x1T2lCbWJseHVJQ0FnSUNBZ2ZUdGNibHh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVaR1ZqYjNKaGRHOXljeWtnZTF4dUlDQWdJQ0FnSUNCeVpYUXViV0ZwYmw5a0lEMGdkR2hwY3k1a1pXTnZjbUYwYjNKek95QXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXNhVzVsSUdOaGJXVnNZMkZ6WlZ4dUlDQWdJQ0FnSUNCeVpYUXVkWE5sUkdWamIzSmhkRzl5Y3lBOUlIUnlkV1U3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUd4bGRDQjdJSEJ5YjJkeVlXMXpMQ0JrWldOdmNtRjBiM0p6SUgwZ1BTQjBhR2x6TG1OdmJuUmxlSFE3WEc0Z0lDQWdJQ0JtYjNJZ0tHa2dQU0F3TENCc0lEMGdjSEp2WjNKaGJYTXViR1Z1WjNSb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbTluY21GdGMxdHBYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkRnRwWFNBOUlIQnliMmR5WVcxelcybGRPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGtaV052Y21GMGIzSnpXMmxkS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSYmFTQXJJQ2RmWkNkZElEMGdaR1ZqYjNKaGRHOXljMXRwWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEM1MWMyVkVaV052Y21GMGIzSnpJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpXNTJhWEp2Ym0xbGJuUXVkWE5sVUdGeWRHbGhiQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUXVkWE5sVUdGeWRHbGhiQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXZjSFJwYjI1ekxtUmhkR0VwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBMblZ6WlVSaGRHRWdQU0IwY25WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWRYTmxSR1Z3ZEdoektTQjdYRzRnSUNBZ0lDQWdJSEpsZEM1MWMyVkVaWEIwYUhNZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11ZFhObFFteHZZMnRRWVhKaGJYTXBJSHRjYmlBZ0lDQWdJQ0FnY21WMExuVnpaVUpzYjJOclVHRnlZVzF6SUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbTl3ZEdsdmJuTXVZMjl0Y0dGMEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEM1amIyMXdZWFFnUFNCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb0lXRnpUMkpxWldOMEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEM1amIyMXdhV3hsY2lBOUlFcFRUMDR1YzNSeWFXNW5hV1o1S0hKbGRDNWpiMjF3YVd4bGNpazdYRzVjYmlBZ0lDQWdJQ0FnZEdocGN5NXpiM1Z5WTJVdVkzVnljbVZ1ZEV4dlkyRjBhVzl1SUQwZ2V5QnpkR0Z5ZERvZ2V5QnNhVzVsT2lBeExDQmpiMngxYlc0NklEQWdmU0I5TzF4dUlDQWdJQ0FnSUNCeVpYUWdQU0IwYUdsekxtOWlhbVZqZEV4cGRHVnlZV3dvY21WMEtUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1emNtTk9ZVzFsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwSUQwZ2NtVjBMblJ2VTNSeWFXNW5WMmwwYUZOdmRYSmpaVTFoY0NoN0lHWnBiR1U2SUc5d2RHbHZibk11WkdWemRFNWhiV1VnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwTG0xaGNDQTlJSEpsZEM1dFlYQWdKaVlnY21WMExtMWhjQzUwYjFOMGNtbHVaeWdwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkQ0E5SUhKbGRDNTBiMU4wY21sdVp5Z3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhRdVkyOXRjR2xzWlhKUGNIUnBiMjV6SUQwZ2RHaHBjeTV2Y0hScGIyNXpPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptNDdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEJ5WldGdFlteGxPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0F2THlCMGNtRmpheUIwYUdVZ2JHRnpkQ0JqYjI1MFpYaDBJSEIxYzJobFpDQnBiblJ2SUhCc1lXTmxJSFJ2SUdGc2JHOTNJSE5yYVhCd2FXNW5JSFJvWlZ4dUlDQWdJQzh2SUdkbGRFTnZiblJsZUhRZ2IzQmpiMlJsSUhkb1pXNGdhWFFnZDI5MWJHUWdZbVVnWVNCdWIyOXdYRzRnSUNBZ2RHaHBjeTVzWVhOMFEyOXVkR1Y0ZENBOUlEQTdYRzRnSUNBZ2RHaHBjeTV6YjNWeVkyVWdQU0J1WlhjZ1EyOWtaVWRsYmloMGFHbHpMbTl3ZEdsdmJuTXVjM0pqVG1GdFpTazdYRzRnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6SUQwZ2JtVjNJRU52WkdWSFpXNG9kR2hwY3k1dmNIUnBiMjV6TG5OeVkwNWhiV1VwTzF4dUlDQjlMRnh1WEc0Z0lHTnlaV0YwWlVaMWJtTjBhVzl1UTI5dWRHVjRkRG9nWm5WdVkzUnBiMjRvWVhOUFltcGxZM1FwSUh0Y2JpQWdJQ0JzWlhRZ2RtRnlSR1ZqYkdGeVlYUnBiMjV6SUQwZ0p5YzdYRzVjYmlBZ0lDQnNaWFFnYkc5allXeHpJRDBnZEdocGN5NXpkR0ZqYTFaaGNuTXVZMjl1WTJGMEtIUm9hWE11Y21WbmFYTjBaWEp6TG14cGMzUXBPMXh1SUNBZ0lHbG1JQ2hzYjJOaGJITXViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJQ0FnZG1GeVJHVmpiR0Z5WVhScGIyNXpJQ3M5SUNjc0lDY2dLeUJzYjJOaGJITXVhbTlwYmlnbkxDQW5LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJIWlc1bGNtRjBaU0J0YVc1cGJXbDZaWElnWVd4cFlYTWdiV0Z3Y0dsdVozTmNiaUFnSUNBdkwxeHVJQ0FnSUM4dklGZG9aVzRnZFhOcGJtY2dkSEoxWlNCVGIzVnlZMlZPYjJSbGN5d2dkR2hwY3lCM2FXeHNJSFZ3WkdGMFpTQmhiR3dnY21WbVpYSmxibU5sY3lCMGJ5QjBhR1VnWjJsMlpXNGdZV3hwWVhOY2JpQWdJQ0F2THlCaGN5QjBhR1VnYzI5MWNtTmxJRzV2WkdWeklHRnlaU0J5WlhWelpXUWdhVzRnYzJsMGRTNGdSbTl5SUhSb1pTQnViMjR0YzI5MWNtTmxJRzV2WkdVZ1kyOXRjR2xzWVhScGIyNGdiVzlrWlN4Y2JpQWdJQ0F2THlCaGJHbGhjMlZ6SUhkcGJHd2dibTkwSUdKbElIVnpaV1FzSUdKMWRDQjBhR2x6SUdOaGMyVWdhWE1nWVd4eVpXRmtlU0JpWldsdVp5QnlkVzRnYjI0Z2RHaGxJR05zYVdWdWRDQmhibVJjYmlBZ0lDQXZMeUIzWlNCaGNtVnVKM1FnWTI5dVkyVnliaUJoWW05MWRDQnRhVzVwYldsNmFXNW5JSFJvWlNCMFpXMXdiR0YwWlNCemFYcGxMbHh1SUNBZ0lHeGxkQ0JoYkdsaGMwTnZkVzUwSUQwZ01EdGNiaUFnSUNCUFltcGxZM1F1YTJWNWN5aDBhR2x6TG1Gc2FXRnpaWE1wTG1admNrVmhZMmdvWVd4cFlYTWdQVDRnZTF4dUlDQWdJQ0FnYkdWMElHNXZaR1VnUFNCMGFHbHpMbUZzYVdGelpYTmJZV3hwWVhOZE8xeHVJQ0FnSUNBZ2FXWWdLRzV2WkdVdVkyaHBiR1J5Wlc0Z0ppWWdibTlrWlM1eVpXWmxjbVZ1WTJWRGIzVnVkQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdkbUZ5UkdWamJHRnlZWFJwYjI1eklDczlJQ2NzSUdGc2FXRnpKeUFySUNzcllXeHBZWE5EYjNWdWRDQXJJQ2M5SnlBcklHRnNhV0Z6TzF4dUlDQWdJQ0FnSUNCdWIyUmxMbU5vYVd4a2NtVnVXekJkSUQwZ0oyRnNhV0Z6SnlBcklHRnNhV0Z6UTI5MWJuUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXNiMjlyZFhCUWNtOXdaWEowZVVaMWJtTjBhVzl1U1hOVmMyVmtLU0I3WEc0Z0lDQWdJQ0IyWVhKRVpXTnNZWEpoZEdsdmJuTWdLejBnSnl3Z0p5QXJJSFJvYVhNdWJHOXZhM1Z3VUhKdmNHVnlkSGxHZFc1amRHbHZibFpoY2tSbFkyeGhjbUYwYVc5dUtDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJSEJoY21GdGN5QTlJRnNuWTI5dWRHRnBibVZ5Snl3Z0oyUmxjSFJvTUNjc0lDZG9aV3h3WlhKekp5d2dKM0JoY25ScFlXeHpKeXdnSjJSaGRHRW5YVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMblZ6WlVKc2IyTnJVR0Z5WVcxeklIeDhJSFJvYVhNdWRYTmxSR1Z3ZEdoektTQjdYRzRnSUNBZ0lDQndZWEpoYlhNdWNIVnphQ2duWW14dlkydFFZWEpoYlhNbktUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUm9hWE11ZFhObFJHVndkR2h6S1NCN1hHNGdJQ0FnSUNCd1lYSmhiWE11Y0hWemFDZ25aR1Z3ZEdoekp5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdVR1Z5Wm05eWJTQmhJSE5sWTI5dVpDQndZWE56SUc5MlpYSWdkR2hsSUc5MWRIQjFkQ0IwYnlCdFpYSm5aU0JqYjI1MFpXNTBJSGRvWlc0Z2NHOXpjMmxpYkdWY2JpQWdJQ0JzWlhRZ2MyOTFjbU5sSUQwZ2RHaHBjeTV0WlhKblpWTnZkWEpqWlNoMllYSkVaV05zWVhKaGRHbHZibk1wTzF4dVhHNGdJQ0FnYVdZZ0tHRnpUMkpxWldOMEtTQjdYRzRnSUNBZ0lDQndZWEpoYlhNdWNIVnphQ2h6YjNWeVkyVXBPMXh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdSblZ1WTNScGIyNHVZWEJ3Ykhrb2RHaHBjeXdnY0dGeVlXMXpLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMjkxY21ObExuZHlZWEFvVzF4dUlDQWdJQ0FnSUNBblpuVnVZM1JwYjI0b0p5eGNiaUFnSUNBZ0lDQWdjR0Z5WVcxekxtcHZhVzRvSnl3bktTeGNiaUFnSUNBZ0lDQWdKeWtnZTF4Y2JpQWdKeXhjYmlBZ0lDQWdJQ0FnYzI5MWNtTmxMRnh1SUNBZ0lDQWdJQ0FuZlNkY2JpQWdJQ0FnSUYwcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2JXVnlaMlZUYjNWeVkyVTZJR1oxYm1OMGFXOXVLSFpoY2tSbFkyeGhjbUYwYVc5dWN5a2dlMXh1SUNBZ0lHeGxkQ0JwYzFOcGJYQnNaU0E5SUhSb2FYTXVaVzUyYVhKdmJtMWxiblF1YVhOVGFXMXdiR1VzWEc0Z0lDQWdJQ0JoY0hCbGJtUlBibXg1SUQwZ0lYUm9hWE11Wm05eVkyVkNkV1ptWlhJc1hHNGdJQ0FnSUNCaGNIQmxibVJHYVhKemRDeGNiaUFnSUNBZ0lITnZkWEpqWlZObFpXNHNYRzRnSUNBZ0lDQmlkV1ptWlhKVGRHRnlkQ3hjYmlBZ0lDQWdJR0oxWm1abGNrVnVaRHRjYmlBZ0lDQjBhR2x6TG5OdmRYSmpaUzVsWVdOb0tHeHBibVVnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLR3hwYm1VdVlYQndaVzVrVkc5Q2RXWm1aWElwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0oxWm1abGNsTjBZWEowS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiR2x1WlM1d2NtVndaVzVrS0NjZ0lDc2dKeWs3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUWdQU0JzYVc1bE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR0oxWm1abGNrVnVaQ0E5SUd4cGJtVTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWW5WbVptVnlVM1JoY25RcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0lYTnZkWEpqWlZObFpXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHRndjR1Z1WkVacGNuTjBJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUXVjSEpsY0dWdVpDZ25ZblZtWm1WeUlDczlJQ2NwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0JpZFdabVpYSkZibVF1WVdSa0tDYzdKeWs3WEc0Z0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUWdQU0JpZFdabVpYSkZibVFnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J6YjNWeVkyVlRaV1Z1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnBjMU5wYlhCc1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdGd2NHVnVaRTl1YkhrZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2FXWWdLR0Z3Y0dWdVpFOXViSGtwSUh0Y2JpQWdJQ0FnSUdsbUlDaGlkV1ptWlhKVGRHRnlkQ2tnZTF4dUlDQWdJQ0FnSUNCaWRXWm1aWEpUZEdGeWRDNXdjbVZ3Wlc1a0tDZHlaWFIxY200Z0p5azdYRzRnSUNBZ0lDQWdJR0oxWm1abGNrVnVaQzVoWkdRb0p6c25LVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvSVhOdmRYSmpaVk5sWlc0cElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1emIzVnlZMlV1Y0hWemFDZ25jbVYwZFhKdUlGd2lYQ0k3SnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFpoY2tSbFkyeGhjbUYwYVc5dWN5QXJQVnh1SUNBZ0lDQWdJQ0FuTENCaWRXWm1aWElnUFNBbklDc2dLR0Z3Y0dWdVpFWnBjbk4wSUQ4Z0p5Y2dPaUIwYUdsekxtbHVhWFJwWVd4cGVtVkNkV1ptWlhJb0tTazdYRzVjYmlBZ0lDQWdJR2xtSUNoaWRXWm1aWEpUZEdGeWRDa2dlMXh1SUNBZ0lDQWdJQ0JpZFdabVpYSlRkR0Z5ZEM1d2NtVndaVzVrS0NkeVpYUjFjbTRnWW5WbVptVnlJQ3NnSnlrN1hHNGdJQ0FnSUNBZ0lHSjFabVpsY2tWdVpDNWhaR1FvSnpzbktUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YzI5MWNtTmxMbkIxYzJnb0ozSmxkSFZ5YmlCaWRXWm1aWEk3SnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIWmhja1JsWTJ4aGNtRjBhVzl1Y3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV6YjNWeVkyVXVjSEpsY0dWdVpDaGNiaUFnSUNBZ0lDQWdKM1poY2lBbklDc2dkbUZ5UkdWamJHRnlZWFJwYjI1ekxuTjFZbk4wY21sdVp5Z3lLU0FySUNoaGNIQmxibVJHYVhKemRDQS9JQ2NuSURvZ0p6dGNYRzRuS1Z4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1emIzVnlZMlV1YldWeVoyVW9LVHRjYmlBZ2ZTeGNibHh1SUNCc2IyOXJkWEJRY205d1pYSjBlVVoxYm1OMGFXOXVWbUZ5UkdWamJHRnlZWFJwYjI0NklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCZ1hHNGdJQ0FnSUNCc2IyOXJkWEJRY205d1pYSjBlU0E5SUdOdmJuUmhhVzVsY2k1c2IyOXJkWEJRY205d1pYSjBlU0I4ZkNCbWRXNWpkR2x2Ymlod1lYSmxiblFzSUhCeWIzQmxjblI1VG1GdFpTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tIQmhjbVZ1ZEN3Z2NISnZjR1Z5ZEhsT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCd1lYSmxiblJiY0hKdmNHVnlkSGxPWVcxbFhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtYRzRnSUNBZ2ZWeHVJQ0FnSUdBdWRISnBiU2dwTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRpYkc5amExWmhiSFZsWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQm9ZWE5vTENCcGJuWmxjbk5sTENCd2NtOW5jbUZ0TENCMllXeDFaVnh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklISmxkSFZ5YmlCMllXeDFaU0J2WmlCaWJHOWphMGhsYkhCbGNrMXBjM05wYm1kY2JpQWdMeTljYmlBZ0x5OGdWR2hsSUhCMWNuQnZjMlVnYjJZZ2RHaHBjeUJ2Y0dOdlpHVWdhWE1nZEc4Z2RHRnJaU0JoSUdKc2IyTnJJRzltSUhSb1pTQm1iM0p0WEc0Z0lDOHZJR0I3ZXlOMGFHbHpMbVp2YjMxOUxpNHVlM3N2ZEdocGN5NW1iMjk5ZldBc0lISmxjMjlzZG1VZ2RHaGxJSFpoYkhWbElHOW1JR0JtYjI5Z0xDQmhibVJjYmlBZ0x5OGdjbVZ3YkdGalpTQnBkQ0J2YmlCMGFHVWdjM1JoWTJzZ2QybDBhQ0IwYUdVZ2NtVnpkV3gwSUc5bUlIQnliM0JsY214NVhHNGdJQzh2SUdsdWRtOXJhVzVuSUdKc2IyTnJTR1ZzY0dWeVRXbHpjMmx1Wnk1Y2JpQWdZbXh2WTJ0V1lXeDFaVG9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHeGxkQ0JpYkc5amEwaGxiSEJsY2sxcGMzTnBibWNnUFNCMGFHbHpMbUZzYVdGellXSnNaU2hjYmlBZ0lDQWdJQ0FnSjJOdmJuUmhhVzVsY2k1b2IyOXJjeTVpYkc5amEwaGxiSEJsY2sxcGMzTnBibWNuWEc0Z0lDQWdJQ0FwTEZ4dUlDQWdJQ0FnY0dGeVlXMXpJRDBnVzNSb2FYTXVZMjl1ZEdWNGRFNWhiV1VvTUNsZE8xeHVJQ0FnSUhSb2FYTXVjMlYwZFhCSVpXeHdaWEpCY21kektHNWhiV1VzSURBc0lIQmhjbUZ0Y3lrN1hHNWNiaUFnSUNCc1pYUWdZbXh2WTJ0T1lXMWxJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lIQmhjbUZ0Y3k1emNHeHBZMlVvTVN3Z01Dd2dZbXh2WTJ0T1lXMWxLVHRjYmx4dUlDQWdJSFJvYVhNdWNIVnphQ2gwYUdsekxuTnZkWEpqWlM1bWRXNWpkR2x2YmtOaGJHd29ZbXh2WTJ0SVpXeHdaWEpOYVhOemFXNW5MQ0FuWTJGc2JDY3NJSEJoY21GdGN5a3BPMXh1SUNCOUxGeHVYRzRnSUM4dklGdGhiV0pwWjNWdmRYTkNiRzlqYTFaaGJIVmxYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lCb1lYTm9MQ0JwYm5abGNuTmxMQ0J3Y205bmNtRnRMQ0IyWVd4MVpWeHVJQ0F2THlCRGIyMXdhV3hsY2lCMllXeDFaU3dnWW1WbWIzSmxPaUJzWVhOMFNHVnNjR1Z5UFhaaGJIVmxJRzltSUd4aGMzUWdabTkxYm1RZ2FHVnNjR1Z5TENCcFppQmhibmxjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeUxDQnBaaUJ1YnlCc1lYTjBTR1ZzY0dWeU9pQnpZVzFsSUdGeklGdGliRzlqYTFaaGJIVmxYVnh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJc0lHbG1JR3hoYzNSSVpXeHdaWEk2SUhaaGJIVmxYRzRnSUdGdFltbG5kVzkxYzBKc2IyTnJWbUZzZFdVNklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDOHZJRmRsSjNKbElHSmxhVzVuSUdFZ1ltbDBJR05vWldWcmVTQmhibVFnY21WMWMybHVaeUIwYUdVZ2IzQjBhVzl1Y3lCMllXeDFaU0JtY205dElIUm9aU0J3Y21sdmNpQmxlR1ZqWEc0Z0lDQWdiR1YwSUdKc2IyTnJTR1ZzY0dWeVRXbHpjMmx1WnlBOUlIUm9hWE11WVd4cFlYTmhZbXhsS0Z4dUlDQWdJQ0FnSUNBblkyOXVkR0ZwYm1WeUxtaHZiMnR6TG1Kc2IyTnJTR1ZzY0dWeVRXbHpjMmx1WnlkY2JpQWdJQ0FnSUNrc1hHNGdJQ0FnSUNCd1lYSmhiWE1nUFNCYmRHaHBjeTVqYjI1MFpYaDBUbUZ0WlNnd0tWMDdYRzRnSUNBZ2RHaHBjeTV6WlhSMWNFaGxiSEJsY2tGeVozTW9KeWNzSURBc0lIQmhjbUZ0Y3l3Z2RISjFaU2s3WEc1Y2JpQWdJQ0IwYUdsekxtWnNkWE5vU1c1c2FXNWxLQ2s3WEc1Y2JpQWdJQ0JzWlhRZ1kzVnljbVZ1ZENBOUlIUm9hWE11ZEc5d1UzUmhZMnNvS1R0Y2JpQWdJQ0J3WVhKaGJYTXVjM0JzYVdObEtERXNJREFzSUdOMWNuSmxiblFwTzF4dVhHNGdJQ0FnZEdocGN5NXdkWE5vVTI5MWNtTmxLRnRjYmlBZ0lDQWdJQ2RwWmlBb0lTY3NYRzRnSUNBZ0lDQjBhR2x6TG14aGMzUklaV3h3WlhJc1hHNGdJQ0FnSUNBbktTQjdJQ2NzWEc0Z0lDQWdJQ0JqZFhKeVpXNTBMRnh1SUNBZ0lDQWdKeUE5SUNjc1hHNGdJQ0FnSUNCMGFHbHpMbk52ZFhKalpTNW1kVzVqZEdsdmJrTmhiR3dvWW14dlkydElaV3h3WlhKTmFYTnphVzVuTENBblkyRnNiQ2NzSUhCaGNtRnRjeWtzWEc0Z0lDQWdJQ0FuZlNkY2JpQWdJQ0JkS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJiWVhCd1pXNWtRMjl1ZEdWdWRGMWNiaUFnTHk5Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdKbFptOXlaVG9nTGk0dVhHNGdJQzh2SUU5dUlITjBZV05yTENCaFpuUmxjam9nTGk0dVhHNGdJQzh2WEc0Z0lDOHZJRUZ3Y0dWdVpITWdkR2hsSUhOMGNtbHVaeUIyWVd4MVpTQnZaaUJnWTI5dWRHVnVkR0FnZEc4Z2RHaGxJR04xY25KbGJuUWdZblZtWm1WeVhHNGdJR0Z3Y0dWdVpFTnZiblJsYm5RNklHWjFibU4wYVc5dUtHTnZiblJsYm5RcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1d1pXNWthVzVuUTI5dWRHVnVkQ2tnZTF4dUlDQWdJQ0FnWTI5dWRHVnVkQ0E5SUhSb2FYTXVjR1Z1WkdsdVowTnZiblJsYm5RZ0t5QmpiMjUwWlc1ME8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQmxibVJwYm1kTWIyTmhkR2x2YmlBOUlIUm9hWE11YzI5MWNtTmxMbU4xY25KbGJuUk1iMk5oZEdsdmJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbkJsYm1ScGJtZERiMjUwWlc1MElEMGdZMjl1ZEdWdWREdGNiaUFnZlN4Y2JseHVJQ0F2THlCYllYQndaVzVrWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQjJZV3gxWlN3Z0xpNHVYRzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pvZ0xpNHVYRzRnSUM4dlhHNGdJQzh2SUVOdlpYSmpaWE1nWUhaaGJIVmxZQ0IwYnlCaElGTjBjbWx1WnlCaGJtUWdZWEJ3Wlc1a2N5QnBkQ0IwYnlCMGFHVWdZM1Z5Y21WdWRDQmlkV1ptWlhJdVhHNGdJQzh2WEc0Z0lDOHZJRWxtSUdCMllXeDFaV0FnYVhNZ2RISjFkR2g1TENCdmNpQXdMQ0JwZENCcGN5QmpiMlZ5WTJWa0lHbHVkRzhnWVNCemRISnBibWNnWVc1a0lHRndjR1Z1WkdWa1hHNGdJQzh2SUU5MGFHVnlkMmx6WlN3Z2RHaGxJR1Z0Y0hSNUlITjBjbWx1WnlCcGN5QmhjSEJsYm1SbFpGeHVJQ0JoY0hCbGJtUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbWx6U1c1c2FXNWxLQ2twSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjbVZ3YkdGalpWTjBZV05yS0dOMWNuSmxiblFnUFQ0Z1d5Y2dJVDBnYm5Wc2JDQS9JQ2NzSUdOMWNuSmxiblFzSUNjZ09pQmNJbHdpSjEwcE8xeHVYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyaFRiM1Z5WTJVb2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaDBhR2x6TG5CdmNGTjBZV05yS0NrcEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYkdWMElHeHZZMkZzSUQwZ2RHaHBjeTV3YjNCVGRHRmpheWdwTzF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vVTI5MWNtTmxLRnRjYmlBZ0lDQWdJQ0FnSjJsbUlDZ25MRnh1SUNBZ0lDQWdJQ0JzYjJOaGJDeGNiaUFnSUNBZ0lDQWdKeUFoUFNCdWRXeHNLU0I3SUNjc1hHNGdJQ0FnSUNBZ0lIUm9hWE11WVhCd1pXNWtWRzlDZFdabVpYSW9iRzlqWVd3c0lIVnVaR1ZtYVc1bFpDd2dkSEoxWlNrc1hHNGdJQ0FnSUNBZ0lDY2dmU2RjYmlBZ0lDQWdJRjBwTzF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11Wlc1MmFYSnZibTFsYm5RdWFYTlRhVzF3YkdVcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1d2RYTm9VMjkxY21ObEtGdGNiaUFnSUNBZ0lDQWdJQ0FuWld4elpTQjdJQ2NzWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaGNJaWNuWENJc0lIVnVaR1ZtYVc1bFpDd2dkSEoxWlNrc1hHNGdJQ0FnSUNBZ0lDQWdKeUI5SjF4dUlDQWdJQ0FnSUNCZEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeThnVzJGd2NHVnVaRVZ6WTJGd1pXUmRYRzRnSUM4dlhHNGdJQzh2SUU5dUlITjBZV05yTENCaVpXWnZjbVU2SUhaaGJIVmxMQ0F1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUF1TGk1Y2JpQWdMeTljYmlBZ0x5OGdSWE5qWVhCbElHQjJZV3gxWldBZ1lXNWtJR0Z3Y0dWdVpDQnBkQ0IwYnlCMGFHVWdZblZtWm1WeVhHNGdJR0Z3Y0dWdVpFVnpZMkZ3WldRNklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lIUm9hWE11Y0hWemFGTnZkWEpqWlNoY2JpQWdJQ0FnSUhSb2FYTXVZWEJ3Wlc1a1ZHOUNkV1ptWlhJb1cxeHVJQ0FnSUNBZ0lDQjBhR2x6TG1Gc2FXRnpZV0pzWlNnblkyOXVkR0ZwYm1WeUxtVnpZMkZ3WlVWNGNISmxjM05wYjI0bktTeGNiaUFnSUNBZ0lDQWdKeWduTEZ4dUlDQWdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2tzWEc0Z0lDQWdJQ0FnSUNjcEoxeHVJQ0FnSUNBZ1hTbGNiaUFnSUNBcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0blpYUkRiMjUwWlhoMFhWeHVJQ0F2TDF4dUlDQXZMeUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUF1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUF1TGk1Y2JpQWdMeThnUTI5dGNHbHNaWElnZG1Gc2RXVXNJR0ZtZEdWeU9pQnNZWE4wUTI5dWRHVjRkRDFrWlhCMGFGeHVJQ0F2TDF4dUlDQXZMeUJUWlhRZ2RHaGxJSFpoYkhWbElHOW1JSFJvWlNCZ2JHRnpkRU52Ym5SbGVIUmdJR052YlhCcGJHVnlJSFpoYkhWbElIUnZJSFJvWlNCa1pYQjBhRnh1SUNCblpYUkRiMjUwWlhoME9pQm1kVzVqZEdsdmJpaGtaWEIwYUNrZ2UxeHVJQ0FnSUhSb2FYTXViR0Z6ZEVOdmJuUmxlSFFnUFNCa1pYQjBhRHRjYmlBZ2ZTeGNibHh1SUNBdkx5QmJjSFZ6YUVOdmJuUmxlSFJkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklDNHVMbHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklHTjFjbkpsYm5SRGIyNTBaWGgwTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVUhWemFHVnpJSFJvWlNCMllXeDFaU0J2WmlCMGFHVWdZM1Z5Y21WdWRDQmpiMjUwWlhoMElHOXVkRzhnZEdobElITjBZV05yTGx4dUlDQndkWE5vUTI5dWRHVjRkRG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnZEdocGN5NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tIUm9hWE11WTI5dWRHVjRkRTVoYldVb2RHaHBjeTVzWVhOMFEyOXVkR1Y0ZENrcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0c2IyOXJkWEJQYmtOdmJuUmxlSFJkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklDNHVMbHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklHTjFjbkpsYm5SRGIyNTBaWGgwVzI1aGJXVmRMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdURzl2YTNNZ2RYQWdkR2hsSUhaaGJIVmxJRzltSUdCdVlXMWxZQ0J2YmlCMGFHVWdZM1Z5Y21WdWRDQmpiMjUwWlhoMElHRnVaQ0J3ZFhOb1pYTmNiaUFnTHk4Z2FYUWdiMjUwYnlCMGFHVWdjM1JoWTJzdVhHNGdJR3h2YjJ0MWNFOXVRMjl1ZEdWNGREb2dablZ1WTNScGIyNG9jR0Z5ZEhNc0lHWmhiSE41TENCemRISnBZM1FzSUhOamIzQmxaQ2tnZTF4dUlDQWdJR3hsZENCcElEMGdNRHRjYmx4dUlDQWdJR2xtSUNnaGMyTnZjR1ZrSUNZbUlIUm9hWE11YjNCMGFXOXVjeTVqYjIxd1lYUWdKaVlnSVhSb2FYTXViR0Z6ZEVOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUM4dklGUm9aU0JrWlhCMGFHVmtJSEYxWlhKNUlHbHpJR1Y0Y0dWamRHVmtJSFJ2SUdoaGJtUnNaU0IwYUdVZ2RXNWtaV1pwYm1Wa0lHeHZaMmxqSUdadmNpQjBhR1VnY205dmRDQnNaWFpsYkNCMGFHRjBYRzRnSUNBZ0lDQXZMeUJwY3lCcGJYQnNaVzFsYm5SbFpDQmlaV3h2ZHl3Z2MyOGdkMlVnWlhaaGJIVmhkR1VnZEdoaGRDQmthWEpsWTNSc2VTQnBiaUJqYjIxd1lYUWdiVzlrWlZ4dUlDQWdJQ0FnZEdocGN5NXdkWE5vS0hSb2FYTXVaR1Z3ZEdobFpFeHZiMnQxY0Nod1lYSjBjMXRwS3l0ZEtTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUVOdmJuUmxlSFFvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxuSmxjMjlzZG1WUVlYUm9LQ2RqYjI1MFpYaDBKeXdnY0dGeWRITXNJR2tzSUdaaGJITjVMQ0J6ZEhKcFkzUXBPMXh1SUNCOUxGeHVYRzRnSUM4dklGdHNiMjlyZFhCQ2JHOWphMUJoY21GdFhWeHVJQ0F2TDF4dUlDQXZMeUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUF1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUJpYkc5amExQmhjbUZ0VzI1aGJXVmRMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdURzl2YTNNZ2RYQWdkR2hsSUhaaGJIVmxJRzltSUdCd1lYSjBjMkFnYjI0Z2RHaGxJR2RwZG1WdUlHSnNiMk5ySUhCaGNtRnRJR0Z1WkNCd2RYTm9aWE5jYmlBZ0x5OGdhWFFnYjI1MGJ5QjBhR1VnYzNSaFkyc3VYRzRnSUd4dmIydDFjRUpzYjJOclVHRnlZVzA2SUdaMWJtTjBhVzl1S0dKc2IyTnJVR0Z5WVcxSlpDd2djR0Z5ZEhNcElIdGNiaUFnSUNCMGFHbHpMblZ6WlVKc2IyTnJVR0Z5WVcxeklEMGdkSEoxWlR0Y2JseHVJQ0FnSUhSb2FYTXVjSFZ6YUNoYkoySnNiMk5yVUdGeVlXMXpXeWNzSUdKc2IyTnJVR0Z5WVcxSlpGc3dYU3dnSjExYkp5d2dZbXh2WTJ0UVlYSmhiVWxrV3pGZExDQW5YU2RkS1R0Y2JpQWdJQ0IwYUdsekxuSmxjMjlzZG1WUVlYUm9LQ2RqYjI1MFpYaDBKeXdnY0dGeWRITXNJREVwTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRzYjI5cmRYQkVZWFJoWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQmtZWFJoTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVUhWemFDQjBhR1VnWkdGMFlTQnNiMjlyZFhBZ2IzQmxjbUYwYjNKY2JpQWdiRzl2YTNWd1JHRjBZVG9nWm5WdVkzUnBiMjRvWkdWd2RHZ3NJSEJoY25SekxDQnpkSEpwWTNRcElIdGNiaUFnSUNCcFppQW9JV1JsY0hSb0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyaFRkR0ZqYTB4cGRHVnlZV3dvSjJSaGRHRW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNLQ2RqYjI1MFlXbHVaWEl1WkdGMFlTaGtZWFJoTENBbklDc2daR1Z3ZEdnZ0t5QW5LU2NwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWNtVnpiMngyWlZCaGRHZ29KMlJoZEdFbkxDQndZWEowY3l3Z01Dd2dkSEoxWlN3Z2MzUnlhV04wS1R0Y2JpQWdmU3hjYmx4dUlDQnlaWE52YkhabFVHRjBhRG9nWm5WdVkzUnBiMjRvZEhsd1pTd2djR0Z5ZEhNc0lHa3NJR1poYkhONUxDQnpkSEpwWTNRcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG5OMGNtbGpkQ0I4ZkNCMGFHbHpMbTl3ZEdsdmJuTXVZWE56ZFcxbFQySnFaV04wY3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb0tITjBjbWxqZEV4dmIydDFjQ2gwYUdsekxtOXdkR2x2Ym5NdWMzUnlhV04wSUNZbUlITjBjbWxqZEN3Z2RHaHBjeXdnY0dGeWRITXNJSFI1Y0dVcEtUdGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2JHVnVJRDBnY0dGeWRITXViR1Z1WjNSb08xeHVJQ0FnSUdadmNpQW9PeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNiaUFnSUNBZ0lDOHFJR1Z6YkdsdWRDMWthWE5oWW14bElHNXZMV3h2YjNBdFpuVnVZeUFxTDF4dUlDQWdJQ0FnZEdocGN5NXlaWEJzWVdObFUzUmhZMnNvWTNWeWNtVnVkQ0E5UGlCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JzYjI5cmRYQWdQU0IwYUdsekxtNWhiV1ZNYjI5cmRYQW9ZM1Z5Y21WdWRDd2djR0Z5ZEhOYmFWMHNJSFI1Y0dVcE8xeHVJQ0FnSUNBZ0lDQXZMeUJYWlNCM1lXNTBJSFJ2SUdWdWMzVnlaU0IwYUdGMElIcGxjbThnWVc1a0lHWmhiSE5sSUdGeVpTQm9ZVzVrYkdWa0lIQnliM0JsY214NUlHbG1JSFJvWlNCamIyNTBaWGgwSUNobVlXeHplU0JtYkdGbktWeHVJQ0FnSUNBZ0lDQXZMeUJ1WldWa2N5QjBieUJvWVhabElIUm9aU0J6Y0dWamFXRnNJR2hoYm1Sc2FXNW5JR1p2Y2lCMGFHVnpaU0IyWVd4MVpYTXVYRzRnSUNBZ0lDQWdJR2xtSUNnaFptRnNjM2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1d5Y2dJVDBnYm5Wc2JDQS9JQ2NzSUd4dmIydDFjQ3dnSnlBNklDY3NJR04xY25KbGJuUmRPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFOTBhR1Z5ZDJselpTQjNaU0JqWVc0Z2RYTmxJR2RsYm1WeWFXTWdabUZzYzNrZ2FHRnVaR3hwYm1kY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1d5Y2dKaVlnSnl3Z2JHOXZhM1Z3WFR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQXZLaUJsYzJ4cGJuUXRaVzVoWW14bElHNXZMV3h2YjNBdFpuVnVZeUFxTDF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdkx5QmJjbVZ6YjJ4MlpWQnZjM05wWW14bFRHRnRZbVJoWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQjJZV3gxWlN3Z0xpNHVYRzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pvZ2NtVnpiMngyWldRZ2RtRnNkV1VzSUM0dUxseHVJQ0F2TDF4dUlDQXZMeUJKWmlCMGFHVWdZSFpoYkhWbFlDQnBjeUJoSUd4aGJXSmtZU3dnY21Wd2JHRmpaU0JwZENCdmJpQjBhR1VnYzNSaFkyc2dZbmxjYmlBZ0x5OGdkR2hsSUhKbGRIVnliaUIyWVd4MVpTQnZaaUIwYUdVZ2JHRnRZbVJoWEc0Z0lISmxjMjlzZG1WUWIzTnphV0pzWlV4aGJXSmtZVG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnZEdocGN5NXdkWE5vS0Z0Y2JpQWdJQ0FnSUhSb2FYTXVZV3hwWVhOaFlteGxLQ2RqYjI1MFlXbHVaWEl1YkdGdFltUmhKeWtzWEc0Z0lDQWdJQ0FuS0Njc1hHNGdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2tzWEc0Z0lDQWdJQ0FuTENBbkxGeHVJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBUbUZ0WlNnd0tTeGNiaUFnSUNBZ0lDY3BKMXh1SUNBZ0lGMHBPMXh1SUNCOUxGeHVYRzRnSUM4dklGdHdkWE5vVTNSeWFXNW5VR0Z5WVcxZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSE4wY21sdVp5d2dZM1Z5Y21WdWRFTnZiblJsZUhRc0lDNHVMbHh1SUNBdkwxeHVJQ0F2THlCVWFHbHpJRzl3WTI5a1pTQnBjeUJrWlhOcFoyNWxaQ0JtYjNJZ2RYTmxJR2x1SUhOMGNtbHVaeUJ0YjJSbExDQjNhR2xqYUZ4dUlDQXZMeUJ3Y205MmFXUmxjeUIwYUdVZ2MzUnlhVzVuSUhaaGJIVmxJRzltSUdFZ2NHRnlZVzFsZEdWeUlHRnNiMjVuSUhkcGRHZ2dhWFJ6WEc0Z0lDOHZJR1JsY0hSb0lISmhkR2hsY2lCMGFHRnVJSEpsYzI5c2RtbHVaeUJwZENCcGJXMWxaR2xoZEdWc2VTNWNiaUFnY0hWemFGTjBjbWx1WjFCaGNtRnRPaUJtZFc1amRHbHZiaWh6ZEhKcGJtY3NJSFI1Y0dVcElIdGNiaUFnSUNCMGFHbHpMbkIxYzJoRGIyNTBaWGgwS0NrN1hHNGdJQ0FnZEdocGN5NXdkWE5vVTNSeWFXNW5LSFI1Y0dVcE8xeHVYRzRnSUNBZ0x5OGdTV1lnYVhRbmN5QmhJSE4xWW1WNGNISmxjM05wYjI0c0lIUm9aU0J6ZEhKcGJtY2djbVZ6ZFd4MFhHNGdJQ0FnTHk4Z2QybHNiQ0JpWlNCd2RYTm9aV1FnWVdaMFpYSWdkR2hwY3lCdmNHTnZaR1V1WEc0Z0lDQWdhV1lnS0hSNWNHVWdJVDA5SUNkVGRXSkZlSEJ5WlhOemFXOXVKeWtnZTF4dUlDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCemRISnBibWNnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWNIVnphRk4wY21sdVp5aHpkSEpwYm1jcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNLSE4wY21sdVp5azdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJR1Z0Y0hSNVNHRnphRG9nWm5WdVkzUnBiMjRvYjIxcGRFVnRjSFI1S1NCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFkydEpaSE1wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUNnbmUzMG5LVHNnTHk4Z2FHRnphRWxrYzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdocGN5NXpkSEpwYm1kUVlYSmhiWE1wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUNnbmUzMG5LVHNnTHk4Z2FHRnphRU52Ym5SbGVIUnpYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyZ29KM3Q5SnlrN0lDOHZJR2hoYzJoVWVYQmxjMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbkIxYzJoVGRHRmphMHhwZEdWeVlXd29iMjFwZEVWdGNIUjVJRDhnSjNWdVpHVm1hVzVsWkNjZ09pQW5lMzBuS1R0Y2JpQWdmU3hjYmlBZ2NIVnphRWhoYzJnNklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtaGhjMmdwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVhR0Z6YUdWekxuQjFjMmdvZEdocGN5NW9ZWE5vS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1b1lYTm9JRDBnZXlCMllXeDFaWE02SUh0OUxDQjBlWEJsY3pvZ1cxMHNJR052Ym5SbGVIUnpPaUJiWFN3Z2FXUnpPaUJiWFNCOU8xeHVJQ0I5TEZ4dUlDQndiM0JJWVhOb09pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQnNaWFFnYUdGemFDQTlJSFJvYVhNdWFHRnphRHRjYmlBZ0lDQjBhR2x6TG1oaGMyZ2dQU0IwYUdsekxtaGhjMmhsY3k1d2IzQW9LVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMblJ5WVdOclNXUnpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmdvZEdocGN5NXZZbXBsWTNSTWFYUmxjbUZzS0doaGMyZ3VhV1J6S1NrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoMGFHbHpMbk4wY21sdVoxQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb0tIUm9hWE11YjJKcVpXTjBUR2wwWlhKaGJDaG9ZWE5vTG1OdmJuUmxlSFJ6S1NrN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJnb2RHaHBjeTV2WW1wbFkzUk1hWFJsY21Gc0tHaGhjMmd1ZEhsd1pYTXBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG5CMWMyZ29kR2hwY3k1dlltcGxZM1JNYVhSbGNtRnNLR2hoYzJndWRtRnNkV1Z6S1NrN1hHNGdJSDBzWEc1Y2JpQWdMeThnVzNCMWMyaFRkSEpwYm1kZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSEYxYjNSbFpGTjBjbWx1WnloemRISnBibWNwTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVUhWemFDQmhJSEYxYjNSbFpDQjJaWEp6YVc5dUlHOW1JR0J6ZEhKcGJtZGdJRzl1ZEc4Z2RHaGxJSE4wWVdOclhHNGdJSEIxYzJoVGRISnBibWM2SUdaMWJtTjBhVzl1S0hOMGNtbHVaeWtnZTF4dUlDQWdJSFJvYVhNdWNIVnphRk4wWVdOclRHbDBaWEpoYkNoMGFHbHpMbkYxYjNSbFpGTjBjbWx1WnloemRISnBibWNwS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJiY0hWemFFeHBkR1Z5WVd4ZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSFpoYkhWbExDQXVMaTVjYmlBZ0x5OWNiaUFnTHk4Z1VIVnphR1Z6SUdFZ2RtRnNkV1VnYjI1MGJ5QjBhR1VnYzNSaFkyc3VJRlJvYVhNZ2IzQmxjbUYwYVc5dUlIQnlaWFpsYm5SelhHNGdJQzh2SUhSb1pTQmpiMjF3YVd4bGNpQm1jbTl0SUdOeVpXRjBhVzVuSUdFZ2RHVnRjRzl5WVhKNUlIWmhjbWxoWW14bElIUnZJR2h2YkdSY2JpQWdMeThnYVhRdVhHNGdJSEIxYzJoTWFYUmxjbUZzT2lCbWRXNWpkR2x2YmloMllXeDFaU2tnZTF4dUlDQWdJSFJvYVhNdWNIVnphRk4wWVdOclRHbDBaWEpoYkNoMllXeDFaU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdXM0IxYzJoUWNtOW5jbUZ0WFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQndjbTluY21GdEtHZDFhV1FwTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVUhWemFDQmhJSEJ5YjJkeVlXMGdaWGh3Y21WemMybHZiaUJ2Ym5SdklIUm9aU0J6ZEdGamF5NGdWR2hwY3lCMFlXdGxjMXh1SUNBdkx5QmhJR052YlhCcGJHVXRkR2x0WlNCbmRXbGtJR0Z1WkNCamIyNTJaWEowY3lCcGRDQnBiblJ2SUdFZ2NuVnVkR2x0WlMxaFkyTmxjM05wWW14bFhHNGdJQzh2SUdWNGNISmxjM05wYjI0dVhHNGdJSEIxYzJoUWNtOW5jbUZ0T2lCbWRXNWpkR2x2YmlobmRXbGtLU0I3WEc0Z0lDQWdhV1lnS0dkMWFXUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1d2RYTm9VM1JoWTJ0TWFYUmxjbUZzS0hSb2FYTXVjSEp2WjNKaGJVVjRjSEpsYzNOcGIyNG9aM1ZwWkNrcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmhUZEdGamEweHBkR1Z5WVd3b2JuVnNiQ2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4dklGdHlaV2RwYzNSbGNrUmxZMjl5WVhSdmNsMWNiaUFnTHk5Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdKbFptOXlaVG9nYUdGemFDd2djSEp2WjNKaGJTd2djR0Z5WVcxekxpNHVMQ0F1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUF1TGk1Y2JpQWdMeTljYmlBZ0x5OGdVRzl3Y3lCdlptWWdkR2hsSUdSbFkyOXlZWFJ2Y2lkeklIQmhjbUZ0WlhSbGNuTXNJR2x1ZG05clpYTWdkR2hsSUdSbFkyOXlZWFJ2Y2l4Y2JpQWdMeThnWVc1a0lHbHVjMlZ5ZEhNZ2RHaGxJR1JsWTI5eVlYUnZjaUJwYm5SdklIUm9aU0JrWldOdmNtRjBiM0p6SUd4cGMzUXVYRzRnSUhKbFoybHpkR1Z5UkdWamIzSmhkRzl5S0hCaGNtRnRVMmw2WlN3Z2JtRnRaU2tnZTF4dUlDQWdJR3hsZENCbWIzVnVaRVJsWTI5eVlYUnZjaUE5SUhSb2FYTXVibUZ0WlV4dmIydDFjQ2duWkdWamIzSmhkRzl5Y3ljc0lHNWhiV1VzSUNka1pXTnZjbUYwYjNJbktTeGNiaUFnSUNBZ0lHOXdkR2x2Ym5NZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeVFYSm5jeWh1WVcxbExDQndZWEpoYlZOcGVtVXBPMXh1WEc0Z0lDQWdkR2hwY3k1a1pXTnZjbUYwYjNKekxuQjFjMmdvVzF4dUlDQWdJQ0FnSjJadUlEMGdKeXhjYmlBZ0lDQWdJSFJvYVhNdVpHVmpiM0poZEc5eWN5NW1kVzVqZEdsdmJrTmhiR3dvWm05MWJtUkVaV052Y21GMGIzSXNJQ2NuTENCYlhHNGdJQ0FnSUNBZ0lDZG1iaWNzWEc0Z0lDQWdJQ0FnSUNkd2NtOXdjeWNzWEc0Z0lDQWdJQ0FnSUNkamIyNTBZV2x1WlhJbkxGeHVJQ0FnSUNBZ0lDQnZjSFJwYjI1elhHNGdJQ0FnSUNCZEtTeGNiaUFnSUNBZ0lDY2dmSHdnWm00N0oxeHVJQ0FnSUYwcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0cGJuWnZhMlZJWld4d1pYSmRYRzRnSUM4dlhHNGdJQzh2SUU5dUlITjBZV05yTENCaVpXWnZjbVU2SUdoaGMyZ3NJR2x1ZG1WeWMyVXNJSEJ5YjJkeVlXMHNJSEJoY21GdGN5NHVMaXdnTGk0dVhHNGdJQzh2SUU5dUlITjBZV05yTENCaFpuUmxjam9nY21WemRXeDBJRzltSUdobGJIQmxjaUJwYm5adlkyRjBhVzl1WEc0Z0lDOHZYRzRnSUM4dklGQnZjSE1nYjJabUlIUm9aU0JvWld4d1pYSW5jeUJ3WVhKaGJXVjBaWEp6TENCcGJuWnZhMlZ6SUhSb1pTQm9aV3h3WlhJc1hHNGdJQzh2SUdGdVpDQndkWE5vWlhNZ2RHaGxJR2hsYkhCbGNpZHpJSEpsZEhWeWJpQjJZV3gxWlNCdmJuUnZJSFJvWlNCemRHRmpheTVjYmlBZ0x5OWNiaUFnTHk4Z1NXWWdkR2hsSUdobGJIQmxjaUJwY3lCdWIzUWdabTkxYm1Rc0lHQm9aV3h3WlhKTmFYTnphVzVuWUNCcGN5QmpZV3hzWldRdVhHNGdJR2x1ZG05clpVaGxiSEJsY2pvZ1puVnVZM1JwYjI0b2NHRnlZVzFUYVhwbExDQnVZVzFsTENCcGMxTnBiWEJzWlNrZ2UxeHVJQ0FnSUd4bGRDQnViMjVJWld4d1pYSWdQU0IwYUdsekxuQnZjRk4wWVdOcktDa3NYRzRnSUNBZ0lDQm9aV3h3WlhJZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeUtIQmhjbUZ0VTJsNlpTd2dibUZ0WlNrN1hHNWNiaUFnSUNCc1pYUWdjRzl6YzJsaWJHVkdkVzVqZEdsdmJrTmhiR3h6SUQwZ1cxMDdYRzVjYmlBZ0lDQnBaaUFvYVhOVGFXMXdiR1VwSUh0Y2JpQWdJQ0FnSUM4dklHUnBjbVZqZENCallXeHNJSFJ2SUdobGJIQmxjbHh1SUNBZ0lDQWdjRzl6YzJsaWJHVkdkVzVqZEdsdmJrTmhiR3h6TG5CMWMyZ29hR1ZzY0dWeUxtNWhiV1VwTzF4dUlDQWdJSDFjYmlBZ0lDQXZMeUJqWVd4c0lHRWdablZ1WTNScGIyNGdabkp2YlNCMGFHVWdhVzV3ZFhRZ2IySnFaV04wWEc0Z0lDQWdjRzl6YzJsaWJHVkdkVzVqZEdsdmJrTmhiR3h6TG5CMWMyZ29ibTl1U0dWc2NHVnlLVHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXViM0IwYVc5dWN5NXpkSEpwWTNRcElIdGNiaUFnSUNBZ0lIQnZjM05wWW14bFJuVnVZM1JwYjI1RFlXeHNjeTV3ZFhOb0tGeHVJQ0FnSUNBZ0lDQjBhR2x6TG1Gc2FXRnpZV0pzWlNnblkyOXVkR0ZwYm1WeUxtaHZiMnR6TG1obGJIQmxjazFwYzNOcGJtY25LVnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnWm5WdVkzUnBiMjVNYjI5cmRYQkRiMlJsSUQwZ1cxeHVJQ0FnSUNBZ0p5Z25MRnh1SUNBZ0lDQWdkR2hwY3k1cGRHVnRjMU5sY0dGeVlYUmxaRUo1S0hCdmMzTnBZbXhsUm5WdVkzUnBiMjVEWVd4c2N5d2dKM3g4Snlrc1hHNGdJQ0FnSUNBbktTZGNiaUFnSUNCZE8xeHVJQ0FnSUd4bGRDQm1kVzVqZEdsdmJrTmhiR3dnUFNCMGFHbHpMbk52ZFhKalpTNW1kVzVqZEdsdmJrTmhiR3dvWEc0Z0lDQWdJQ0JtZFc1amRHbHZia3h2YjJ0MWNFTnZaR1VzWEc0Z0lDQWdJQ0FuWTJGc2JDY3NYRzRnSUNBZ0lDQm9aV3h3WlhJdVkyRnNiRkJoY21GdGMxeHVJQ0FnSUNrN1hHNGdJQ0FnZEdocGN5NXdkWE5vS0daMWJtTjBhVzl1UTJGc2JDazdYRzRnSUgwc1hHNWNiaUFnYVhSbGJYTlRaWEJoY21GMFpXUkNlVG9nWm5WdVkzUnBiMjRvYVhSbGJYTXNJSE5sY0dGeVlYUnZjaWtnZTF4dUlDQWdJR3hsZENCeVpYTjFiSFFnUFNCYlhUdGNiaUFnSUNCeVpYTjFiSFF1Y0hWemFDaHBkR1Z0YzFzd1hTazdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREU3SUdrZ1BDQnBkR1Z0Y3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdjbVZ6ZFd4MExuQjFjMmdvYzJWd1lYSmhkRzl5TENCcGRHVnRjMXRwWFNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJSDBzWEc0Z0lDOHZJRnRwYm5admEyVkxibTkzYmtobGJIQmxjbDFjYmlBZ0x5OWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHSmxabTl5WlRvZ2FHRnphQ3dnYVc1MlpYSnpaU3dnY0hKdlozSmhiU3dnY0dGeVlXMXpMaTR1TENBdUxpNWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHRm1kR1Z5T2lCeVpYTjFiSFFnYjJZZ2FHVnNjR1Z5SUdsdWRtOWpZWFJwYjI1Y2JpQWdMeTljYmlBZ0x5OGdWR2hwY3lCdmNHVnlZWFJwYjI0Z2FYTWdkWE5sWkNCM2FHVnVJSFJvWlNCb1pXeHdaWElnYVhNZ2EyNXZkMjRnZEc4Z1pYaHBjM1FzWEc0Z0lDOHZJSE52SUdFZ1lHaGxiSEJsY2sxcGMzTnBibWRnSUdaaGJHeGlZV05ySUdseklHNXZkQ0J5WlhGMWFYSmxaQzVjYmlBZ2FXNTJiMnRsUzI1dmQyNUlaV3h3WlhJNklHWjFibU4wYVc5dUtIQmhjbUZ0VTJsNlpTd2dibUZ0WlNrZ2UxeHVJQ0FnSUd4bGRDQm9aV3h3WlhJZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeUtIQmhjbUZ0VTJsNlpTd2dibUZ0WlNrN1hHNGdJQ0FnZEdocGN5NXdkWE5vS0hSb2FYTXVjMjkxY21ObExtWjFibU4wYVc5dVEyRnNiQ2hvWld4d1pYSXVibUZ0WlN3Z0oyTmhiR3duTENCb1pXeHdaWEl1WTJGc2JGQmhjbUZ0Y3lrcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0cGJuWnZhMlZCYldKcFozVnZkWE5kWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklHaGhjMmdzSUdsdWRtVnljMlVzSUhCeWIyZHlZVzBzSUhCaGNtRnRjeTR1TGl3Z0xpNHVYRzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pvZ2NtVnpkV3gwSUc5bUlHUnBjMkZ0WW1sbmRXRjBhVzl1WEc0Z0lDOHZYRzRnSUM4dklGUm9hWE1nYjNCbGNtRjBhVzl1SUdseklIVnpaV1FnZDJobGJpQmhiaUJsZUhCeVpYTnphVzl1SUd4cGEyVWdZSHQ3Wm05dmZYMWdYRzRnSUM4dklHbHpJSEJ5YjNacFpHVmtMQ0JpZFhRZ2QyVWdaRzl1SjNRZ2EyNXZkeUJoZENCamIyMXdhV3hsTFhScGJXVWdkMmhsZEdobGNpQnBkRnh1SUNBdkx5QnBjeUJoSUdobGJIQmxjaUJ2Y2lCaElIQmhkR2d1WEc0Z0lDOHZYRzRnSUM4dklGUm9hWE1nYjNCbGNtRjBhVzl1SUdWdGFYUnpJRzF2Y21VZ1kyOWtaU0IwYUdGdUlIUm9aU0J2ZEdobGNpQnZjSFJwYjI1ekxGeHVJQ0F2THlCaGJtUWdZMkZ1SUdKbElHRjJiMmxrWldRZ1lua2djR0Z6YzJsdVp5QjBhR1VnWUd0dWIzZHVTR1ZzY0dWeWMyQWdZVzVrWEc0Z0lDOHZJR0JyYm05M2JraGxiSEJsY25OUGJteDVZQ0JtYkdGbmN5QmhkQ0JqYjIxd2FXeGxMWFJwYldVdVhHNGdJR2x1ZG05clpVRnRZbWxuZFc5MWN6b2dablZ1WTNScGIyNG9ibUZ0WlN3Z2FHVnNjR1Z5UTJGc2JDa2dlMXh1SUNBZ0lIUm9hWE11ZFhObFVtVm5hWE4wWlhJb0oyaGxiSEJsY2ljcE8xeHVYRzRnSUNBZ2JHVjBJRzV2YmtobGJIQmxjaUE5SUhSb2FYTXVjRzl3VTNSaFkyc29LVHRjYmx4dUlDQWdJSFJvYVhNdVpXMXdkSGxJWVhOb0tDazdYRzRnSUNBZ2JHVjBJR2hsYkhCbGNpQTlJSFJvYVhNdWMyVjBkWEJJWld4d1pYSW9NQ3dnYm1GdFpTd2dhR1ZzY0dWeVEyRnNiQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2FHVnNjR1Z5VG1GdFpTQTlJQ2gwYUdsekxteGhjM1JJWld4d1pYSWdQU0IwYUdsekxtNWhiV1ZNYjI5cmRYQW9YRzRnSUNBZ0lDQW5hR1ZzY0dWeWN5Y3NYRzRnSUNBZ0lDQnVZVzFsTEZ4dUlDQWdJQ0FnSjJobGJIQmxjaWRjYmlBZ0lDQXBLVHRjYmx4dUlDQWdJR3hsZENCc2IyOXJkWEFnUFNCYkp5Z25MQ0FuS0dobGJIQmxjaUE5SUNjc0lHaGxiSEJsY2s1aGJXVXNJQ2NnZkh3Z0p5d2dibTl1U0dWc2NHVnlMQ0FuS1NkZE8xeHVJQ0FnSUdsbUlDZ2hkR2hwY3k1dmNIUnBiMjV6TG5OMGNtbGpkQ2tnZTF4dUlDQWdJQ0FnYkc5dmEzVndXekJkSUQwZ0p5aG9aV3h3WlhJZ1BTQW5PMXh1SUNBZ0lDQWdiRzl2YTNWd0xuQjFjMmdvWEc0Z0lDQWdJQ0FnSUNjZ0lUMGdiblZzYkNBL0lHaGxiSEJsY2lBNklDY3NYRzRnSUNBZ0lDQWdJSFJvYVhNdVlXeHBZWE5oWW14bEtDZGpiMjUwWVdsdVpYSXVhRzl2YTNNdWFHVnNjR1Z5VFdsemMybHVaeWNwWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWNIVnphQ2hiWEc0Z0lDQWdJQ0FuS0Njc1hHNGdJQ0FnSUNCc2IyOXJkWEFzWEc0Z0lDQWdJQ0JvWld4d1pYSXVjR0Z5WVcxelNXNXBkQ0EvSUZzbktTd29KeXdnYUdWc2NHVnlMbkJoY21GdGMwbHVhWFJkSURvZ1cxMHNYRzRnSUNBZ0lDQW5LU3duTEZ4dUlDQWdJQ0FnSnloMGVYQmxiMllnYUdWc2NHVnlJRDA5UFNBbkxGeHVJQ0FnSUNBZ2RHaHBjeTVoYkdsaGMyRmliR1VvSjF3aVpuVnVZM1JwYjI1Y0lpY3BMRnh1SUNBZ0lDQWdKeUEvSUNjc1hHNGdJQ0FnSUNCMGFHbHpMbk52ZFhKalpTNW1kVzVqZEdsdmJrTmhiR3dvSjJobGJIQmxjaWNzSUNkallXeHNKeXdnYUdWc2NHVnlMbU5oYkd4UVlYSmhiWE1wTEZ4dUlDQWdJQ0FnSnlBNklHaGxiSEJsY2lrcEoxeHVJQ0FnSUYwcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0cGJuWnZhMlZRWVhKMGFXRnNYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lCamIyNTBaWGgwTENBdUxpNWNiaUFnTHk4Z1QyNGdjM1JoWTJzZ1lXWjBaWEk2SUhKbGMzVnNkQ0J2WmlCd1lYSjBhV0ZzSUdsdWRtOWpZWFJwYjI1Y2JpQWdMeTljYmlBZ0x5OGdWR2hwY3lCdmNHVnlZWFJwYjI0Z2NHOXdjeUJ2Wm1ZZ1lTQmpiMjUwWlhoMExDQnBiblp2YTJWeklHRWdjR0Z5ZEdsaGJDQjNhWFJvSUhSb1lYUWdZMjl1ZEdWNGRDeGNiaUFnTHk4Z1lXNWtJSEIxYzJobGN5QjBhR1VnY21WemRXeDBJRzltSUhSb1pTQnBiblp2WTJGMGFXOXVJR0poWTJzdVhHNGdJR2x1ZG05clpWQmhjblJwWVd3NklHWjFibU4wYVc5dUtHbHpSSGx1WVcxcFl5d2dibUZ0WlN3Z2FXNWtaVzUwS1NCN1hHNGdJQ0FnYkdWMElIQmhjbUZ0Y3lBOUlGdGRMRnh1SUNBZ0lDQWdiM0IwYVc5dWN5QTlJSFJvYVhNdWMyVjBkWEJRWVhKaGJYTW9ibUZ0WlN3Z01Td2djR0Z5WVcxektUdGNibHh1SUNBZ0lHbG1JQ2hwYzBSNWJtRnRhV01wSUh0Y2JpQWdJQ0FnSUc1aGJXVWdQU0IwYUdsekxuQnZjRk4wWVdOcktDazdYRzRnSUNBZ0lDQmtaV3hsZEdVZ2IzQjBhVzl1Y3k1dVlXMWxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hwYm1SbGJuUXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVhVzVrWlc1MElEMGdTbE5QVGk1emRISnBibWRwWm5rb2FXNWtaVzUwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdiM0IwYVc5dWN5NW9aV3h3WlhKeklEMGdKMmhsYkhCbGNuTW5PMXh1SUNBZ0lHOXdkR2x2Ym5NdWNHRnlkR2xoYkhNZ1BTQW5jR0Z5ZEdsaGJITW5PMXh1SUNBZ0lHOXdkR2x2Ym5NdVpHVmpiM0poZEc5eWN5QTlJQ2RqYjI1MFlXbHVaWEl1WkdWamIzSmhkRzl5Y3ljN1hHNWNiaUFnSUNCcFppQW9JV2x6UkhsdVlXMXBZeWtnZTF4dUlDQWdJQ0FnY0dGeVlXMXpMblZ1YzJocFpuUW9kR2hwY3k1dVlXMWxURzl2YTNWd0tDZHdZWEowYVdGc2N5Y3NJRzVoYldVc0lDZHdZWEowYVdGc0p5a3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCd1lYSmhiWE11ZFc1emFHbG1kQ2h1WVcxbEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG1OdmJYQmhkQ2tnZTF4dUlDQWdJQ0FnYjNCMGFXOXVjeTVrWlhCMGFITWdQU0FuWkdWd2RHaHpKenRjYmlBZ0lDQjlYRzRnSUNBZ2IzQjBhVzl1Y3lBOUlIUm9hWE11YjJKcVpXTjBUR2wwWlhKaGJDaHZjSFJwYjI1ektUdGNiaUFnSUNCd1lYSmhiWE11Y0hWemFDaHZjSFJwYjI1ektUdGNibHh1SUNBZ0lIUm9hWE11Y0hWemFDaDBhR2x6TG5OdmRYSmpaUzVtZFc1amRHbHZia05oYkd3b0oyTnZiblJoYVc1bGNpNXBiblp2YTJWUVlYSjBhV0ZzSnl3Z0p5Y3NJSEJoY21GdGN5a3BPMXh1SUNCOUxGeHVYRzRnSUM4dklGdGhjM05wWjI1VWIwaGhjMmhkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklIWmhiSFZsTENBdUxpNHNJR2hoYzJnc0lDNHVMbHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklDNHVMaXdnYUdGemFDd2dMaTR1WEc0Z0lDOHZYRzRnSUM4dklGQnZjSE1nWVNCMllXeDFaU0J2Wm1ZZ2RHaGxJSE4wWVdOcklHRnVaQ0JoYzNOcFoyNXpJR2wwSUhSdklIUm9aU0JqZFhKeVpXNTBJR2hoYzJoY2JpQWdZWE56YVdkdVZHOUlZWE5vT2lCbWRXNWpkR2x2YmloclpYa3BJSHRjYmlBZ0lDQnNaWFFnZG1Gc2RXVWdQU0IwYUdsekxuQnZjRk4wWVdOcktDa3NYRzRnSUNBZ0lDQmpiMjUwWlhoMExGeHVJQ0FnSUNBZ2RIbHdaU3hjYmlBZ0lDQWdJR2xrTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFkydEpaSE1wSUh0Y2JpQWdJQ0FnSUdsa0lEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RHaHBjeTV6ZEhKcGJtZFFZWEpoYlhNcElIdGNiaUFnSUNBZ0lIUjVjR1VnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JvWVhOb0lEMGdkR2hwY3k1b1lYTm9PMXh1SUNBZ0lHbG1JQ2hqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0JvWVhOb0xtTnZiblJsZUhSelcydGxlVjBnUFNCamIyNTBaWGgwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEhsd1pTa2dlMXh1SUNBZ0lDQWdhR0Z6YUM1MGVYQmxjMXRyWlhsZElEMGdkSGx3WlR0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dsa0tTQjdYRzRnSUNBZ0lDQm9ZWE5vTG1sa2MxdHJaWGxkSUQwZ2FXUTdYRzRnSUNBZ2ZWeHVJQ0FnSUdoaGMyZ3VkbUZzZFdWelcydGxlVjBnUFNCMllXeDFaVHRjYmlBZ2ZTeGNibHh1SUNCd2RYTm9TV1E2SUdaMWJtTjBhVzl1S0hSNWNHVXNJRzVoYldVc0lHTm9hV3hrS1NCN1hHNGdJQ0FnYVdZZ0tIUjVjR1VnUFQwOUlDZENiRzlqYTFCaGNtRnRKeWtnZTF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tGeHVJQ0FnSUNBZ0lDQW5ZbXh2WTJ0UVlYSmhiWE5iSnlBclhHNGdJQ0FnSUNBZ0lDQWdibUZ0WlZzd1hTQXJYRzRnSUNBZ0lDQWdJQ0FnSjEwdWNHRjBhRnNuSUN0Y2JpQWdJQ0FnSUNBZ0lDQnVZVzFsV3pGZElDdGNiaUFnSUNBZ0lDQWdJQ0FuWFNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ2hqYUdsc1pDQS9JQ2NnS3lBbklDc2dTbE5QVGk1emRISnBibWRwWm5rb0p5NG5JQ3NnWTJocGJHUXBJRG9nSnljcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0oxQmhkR2hGZUhCeVpYTnphVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb1UzUnlhVzVuS0c1aGJXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMU4xWWtWNGNISmxjM05wYjI0bktTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyaFRkR0ZqYTB4cGRHVnlZV3dvSjNSeWRXVW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNLQ2R1ZFd4c0p5azdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzh2SUVoRlRGQkZVbE5jYmx4dUlDQmpiMjF3YVd4bGNqb2dTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMRnh1WEc0Z0lHTnZiWEJwYkdWRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0b1pXNTJhWEp2Ym0xbGJuUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnNaWFFnWTJocGJHUnlaVzRnUFNCbGJuWnBjbTl1YldWdWRDNWphR2xzWkhKbGJpeGNiaUFnSUNBZ0lHTm9hV3hrTEZ4dUlDQWdJQ0FnWTI5dGNHbHNaWEk3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diQ0E5SUdOb2FXeGtjbVZ1TG14bGJtZDBhRHNnYVNBOElHdzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyaHBiR1FnUFNCamFHbHNaSEpsYmx0cFhUdGNiaUFnSUNBZ0lHTnZiWEJwYkdWeUlEMGdibVYzSUhSb2FYTXVZMjl0Y0dsc1pYSW9LVHNnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0YkdsdVpTQnVaWGN0WTJGd1hHNWNiaUFnSUNBZ0lHeGxkQ0JsZUdsemRHbHVaeUE5SUhSb2FYTXViV0YwWTJoRmVHbHpkR2x1WjFCeWIyZHlZVzBvWTJocGJHUXBPMXh1WEc0Z0lDQWdJQ0JwWmlBb1pYaHBjM1JwYm1jZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJuUmxlSFF1Y0hKdlozSmhiWE11Y0hWemFDZ25KeWs3SUM4dklGQnNZV05sYUc5c1pHVnlJSFJ2SUhCeVpYWmxiblFnYm1GdFpTQmpiMjVtYkdsamRITWdabTl5SUc1bGMzUmxaQ0JqYUdsc1pISmxibHh1SUNBZ0lDQWdJQ0JzWlhRZ2FXNWtaWGdnUFNCMGFHbHpMbU52Ym5SbGVIUXVjSEp2WjNKaGJYTXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQmphR2xzWkM1cGJtUmxlQ0E5SUdsdVpHVjRPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNXVZVzFsSUQwZ0ozQnliMmR5WVcwbklDc2dhVzVrWlhnN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTI5dWRHVjRkQzV3Y205bmNtRnRjMXRwYm1SbGVGMGdQU0JqYjIxd2FXeGxjaTVqYjIxd2FXeGxLRnh1SUNBZ0lDQWdJQ0FnSUdOb2FXeGtMRnh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk1zWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBMRnh1SUNBZ0lDQWdJQ0FnSUNGMGFHbHpMbkJ5WldOdmJYQnBiR1ZjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBMbVJsWTI5eVlYUnZjbk5iYVc1a1pYaGRJRDBnWTI5dGNHbHNaWEl1WkdWamIzSmhkRzl5Y3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBMbVZ1ZG1seWIyNXRaVzUwYzF0cGJtUmxlRjBnUFNCamFHbHNaRHRjYmx4dUlDQWdJQ0FnSUNCMGFHbHpMblZ6WlVSbGNIUm9jeUE5SUhSb2FYTXVkWE5sUkdWd2RHaHpJSHg4SUdOdmJYQnBiR1Z5TG5WelpVUmxjSFJvY3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTUxYzJWQ2JHOWphMUJoY21GdGN5QTlJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nZkh3Z1kyOXRjR2xzWlhJdWRYTmxRbXh2WTJ0UVlYSmhiWE03WEc0Z0lDQWdJQ0FnSUdOb2FXeGtMblZ6WlVSbGNIUm9jeUE5SUhSb2FYTXVkWE5sUkdWd2RHaHpPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNTFjMlZDYkc5amExQmhjbUZ0Y3lBOUlIUm9hWE11ZFhObFFteHZZMnRRWVhKaGJYTTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQmphR2xzWkM1cGJtUmxlQ0E5SUdWNGFYTjBhVzVuTG1sdVpHVjRPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNXVZVzFsSUQwZ0ozQnliMmR5WVcwbklDc2daWGhwYzNScGJtY3VhVzVrWlhnN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1MWMyVkVaWEIwYUhNZ1BTQjBhR2x6TG5WelpVUmxjSFJvY3lCOGZDQmxlR2x6ZEdsdVp5NTFjMlZFWlhCMGFITTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nUFNCMGFHbHpMblZ6WlVKc2IyTnJVR0Z5WVcxeklIeDhJR1Y0YVhOMGFXNW5MblZ6WlVKc2IyTnJVR0Z5WVcxek8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2JXRjBZMmhGZUdsemRHbHVaMUJ5YjJkeVlXMDZJR1oxYm1OMGFXOXVLR05vYVd4a0tTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJSFJvYVhNdVkyOXVkR1Y0ZEM1bGJuWnBjbTl1YldWdWRITXViR1Z1WjNSb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRDQmxiblpwY205dWJXVnVkQ0E5SUhSb2FYTXVZMjl1ZEdWNGRDNWxiblpwY205dWJXVnVkSE5iYVYwN1hHNGdJQ0FnSUNCcFppQW9aVzUyYVhKdmJtMWxiblFnSmlZZ1pXNTJhWEp2Ym0xbGJuUXVaWEYxWVd4ektHTm9hV3hrS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pXNTJhWEp2Ym0xbGJuUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEJ5YjJkeVlXMUZlSEJ5WlhOemFXOXVPaUJtZFc1amRHbHZiaWhuZFdsa0tTQjdYRzRnSUNBZ2JHVjBJR05vYVd4a0lEMGdkR2hwY3k1bGJuWnBjbTl1YldWdWRDNWphR2xzWkhKbGJsdG5kV2xrWFN4Y2JpQWdJQ0FnSUhCeWIyZHlZVzFRWVhKaGJYTWdQU0JiWTJocGJHUXVhVzVrWlhnc0lDZGtZWFJoSnl3Z1kyaHBiR1F1WW14dlkydFFZWEpoYlhOZE8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nZkh3Z2RHaHBjeTUxYzJWRVpYQjBhSE1wSUh0Y2JpQWdJQ0FnSUhCeWIyZHlZVzFRWVhKaGJYTXVjSFZ6YUNnbllteHZZMnRRWVhKaGJYTW5LVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJvYVhNdWRYTmxSR1Z3ZEdoektTQjdYRzRnSUNBZ0lDQndjbTluY21GdFVHRnlZVzF6TG5CMWMyZ29KMlJsY0hSb2N5Y3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlBblkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb0p5QXJJSEJ5YjJkeVlXMVFZWEpoYlhNdWFtOXBiaWduTENBbktTQXJJQ2NwSnp0Y2JpQWdmU3hjYmx4dUlDQjFjMlZTWldkcGMzUmxjam9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXlaV2RwYzNSbGNuTmJibUZ0WlYwcElIdGNiaUFnSUNBZ0lIUm9hWE11Y21WbmFYTjBaWEp6VzI1aGJXVmRJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIUm9hWE11Y21WbmFYTjBaWEp6TG14cGMzUXVjSFZ6YUNodVlXMWxLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnY0hWemFEb2dablZ1WTNScGIyNG9aWGh3Y2lrZ2UxeHVJQ0FnSUdsbUlDZ2hLR1Y0Y0hJZ2FXNXpkR0Z1WTJWdlppQk1hWFJsY21Gc0tTa2dlMXh1SUNBZ0lDQWdaWGh3Y2lBOUlIUm9hWE11YzI5MWNtTmxMbmR5WVhBb1pYaHdjaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1cGJteHBibVZUZEdGamF5NXdkWE5vS0dWNGNISXBPMXh1SUNBZ0lISmxkSFZ5YmlCbGVIQnlPMXh1SUNCOUxGeHVYRzRnSUhCMWMyaFRkR0ZqYTB4cGRHVnlZV3c2SUdaMWJtTjBhVzl1S0dsMFpXMHBJSHRjYmlBZ0lDQjBhR2x6TG5CMWMyZ29ibVYzSUV4cGRHVnlZV3dvYVhSbGJTa3BPMXh1SUNCOUxGeHVYRzRnSUhCMWMyaFRiM1Z5WTJVNklHWjFibU4wYVc5dUtITnZkWEpqWlNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG5CbGJtUnBibWREYjI1MFpXNTBLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1d2RYTm9LRnh1SUNBZ0lDQWdJQ0IwYUdsekxtRndjR1Z1WkZSdlFuVm1abVZ5S0Z4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11YzI5MWNtTmxMbkYxYjNSbFpGTjBjbWx1WnloMGFHbHpMbkJsYm1ScGJtZERiMjUwWlc1MEtTeGNiaUFnSUNBZ0lDQWdJQ0IwYUdsekxuQmxibVJwYm1kTWIyTmhkR2x2Ymx4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2RHaHBjeTV3Wlc1a2FXNW5RMjl1ZEdWdWRDQTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYzI5MWNtTmxLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1d2RYTm9LSE52ZFhKalpTazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEpsY0d4aFkyVlRkR0ZqYXpvZ1puVnVZM1JwYjI0b1kyRnNiR0poWTJzcElIdGNiaUFnSUNCc1pYUWdjSEpsWm1sNElEMGdXeWNvSjEwc1hHNGdJQ0FnSUNCemRHRmpheXhjYmlBZ0lDQWdJR055WldGMFpXUlRkR0ZqYXl4Y2JpQWdJQ0FnSUhWelpXUk1hWFJsY21Gc08xeHVYRzRnSUNBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnS2k5Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YVhOSmJteHBibVVvS1NrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25jbVZ3YkdGalpWTjBZV05ySUc5dUlHNXZiaTFwYm14cGJtVW5LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJYWlNCM1lXNTBJSFJ2SUcxbGNtZGxJSFJvWlNCcGJteHBibVVnYzNSaGRHVnRaVzUwSUdsdWRHOGdkR2hsSUhKbGNHeGhZMlZ0Wlc1MElITjBZWFJsYldWdWRDQjJhV0VnSnl3blhHNGdJQ0FnYkdWMElIUnZjQ0E5SUhSb2FYTXVjRzl3VTNSaFkyc29kSEoxWlNrN1hHNWNiaUFnSUNCcFppQW9kRzl3SUdsdWMzUmhibU5sYjJZZ1RHbDBaWEpoYkNrZ2UxeHVJQ0FnSUNBZ0x5OGdUR2wwWlhKaGJITWdaRzhnYm05MElHNWxaV1FnZEc4Z1ltVWdhVzVzYVc1bFpGeHVJQ0FnSUNBZ2MzUmhZMnNnUFNCYmRHOXdMblpoYkhWbFhUdGNiaUFnSUNBZ0lIQnlaV1pwZUNBOUlGc25LQ2NzSUhOMFlXTnJYVHRjYmlBZ0lDQWdJSFZ6WldSTWFYUmxjbUZzSUQwZ2RISjFaVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdSMlYwSUc5eUlHTnlaV0YwWlNCMGFHVWdZM1Z5Y21WdWRDQnpkR0ZqYXlCdVlXMWxJR1p2Y2lCMWMyVWdZbmtnZEdobElHbHViR2x1WlZ4dUlDQWdJQ0FnWTNKbFlYUmxaRk4wWVdOcklEMGdkSEoxWlR0Y2JpQWdJQ0FnSUd4bGRDQnVZVzFsSUQwZ2RHaHBjeTVwYm1OeVUzUmhZMnNvS1R0Y2JseHVJQ0FnSUNBZ2NISmxabWw0SUQwZ1d5Y29LQ2NzSUhSb2FYTXVjSFZ6YUNodVlXMWxLU3dnSnlBOUlDY3NJSFJ2Y0N3Z0p5a25YVHRjYmlBZ0lDQWdJSE4wWVdOcklEMGdkR2hwY3k1MGIzQlRkR0ZqYXlncE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUd4bGRDQnBkR1Z0SUQwZ1kyRnNiR0poWTJzdVkyRnNiQ2gwYUdsekxDQnpkR0ZqYXlrN1hHNWNiaUFnSUNCcFppQW9JWFZ6WldSTWFYUmxjbUZzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hqY21WaGRHVmtVM1JoWTJzcElIdGNiaUFnSUNBZ0lIUm9hWE11YzNSaFkydFRiRzkwTFMwN1hHNGdJQ0FnZlZ4dUlDQWdJSFJvYVhNdWNIVnphQ2h3Y21WbWFYZ3VZMjl1WTJGMEtHbDBaVzBzSUNjcEp5a3BPMXh1SUNCOUxGeHVYRzRnSUdsdVkzSlRkR0ZqYXpvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2RHaHBjeTV6ZEdGamExTnNiM1FyS3p0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV6ZEdGamExTnNiM1FnUGlCMGFHbHpMbk4wWVdOclZtRnljeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWMzUmhZMnRXWVhKekxuQjFjMmdvSjNOMFlXTnJKeUFySUhSb2FYTXVjM1JoWTJ0VGJHOTBLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkRzl3VTNSaFkydE9ZVzFsS0NrN1hHNGdJSDBzWEc0Z0lIUnZjRk4wWVdOclRtRnRaVG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2R6ZEdGamF5Y2dLeUIwYUdsekxuTjBZV05yVTJ4dmREdGNiaUFnZlN4Y2JpQWdabXgxYzJoSmJteHBibVU2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUd4bGRDQnBibXhwYm1WVGRHRmpheUE5SUhSb2FYTXVhVzVzYVc1bFUzUmhZMnM3WEc0Z0lDQWdkR2hwY3k1cGJteHBibVZUZEdGamF5QTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCcGJteHBibVZUZEdGamF5NXNaVzVuZEdnN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJQ0FnYkdWMElHVnVkSEo1SUQwZ2FXNXNhVzVsVTNSaFkydGJhVjA3WEc0Z0lDQWdJQ0F2S2lCcGMzUmhibUoxYkNCcFoyNXZjbVVnYVdZZ0tpOWNiaUFnSUNBZ0lHbG1JQ2hsYm5SeWVTQnBibk4wWVc1alpXOW1JRXhwZEdWeVlXd3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWpiMjF3YVd4bFUzUmhZMnN1Y0hWemFDaGxiblJ5ZVNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCc1pYUWdjM1JoWTJzZ1BTQjBhR2x6TG1sdVkzSlRkR0ZqYXlncE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5CMWMyaFRiM1Z5WTJVb1czTjBZV05yTENBbklEMGdKeXdnWlc1MGNua3NJQ2M3SjEwcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJYQnBiR1ZUZEdGamF5NXdkWE5vS0hOMFlXTnJLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR2x6U1c1c2FXNWxPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1cGJteHBibVZUZEdGamF5NXNaVzVuZEdnN1hHNGdJSDBzWEc1Y2JpQWdjRzl3VTNSaFkyczZJR1oxYm1OMGFXOXVLSGR5WVhCd1pXUXBJSHRjYmlBZ0lDQnNaWFFnYVc1c2FXNWxJRDBnZEdocGN5NXBjMGx1YkdsdVpTZ3BMRnh1SUNBZ0lDQWdhWFJsYlNBOUlDaHBibXhwYm1VZ1B5QjBhR2x6TG1sdWJHbHVaVk4wWVdOcklEb2dkR2hwY3k1amIyMXdhV3hsVTNSaFkyc3BMbkJ2Y0NncE8xeHVYRzRnSUNBZ2FXWWdLQ0YzY21Gd2NHVmtJQ1ltSUdsMFpXMGdhVzV6ZEdGdVkyVnZaaUJNYVhSbGNtRnNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhWFJsYlM1MllXeDFaVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0ZwYm14cGJtVXBJSHRjYmlBZ0lDQWdJQ0FnTHlvZ2FYTjBZVzVpZFd3Z2FXZHViM0psSUc1bGVIUWdLaTljYmlBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6TG5OMFlXTnJVMnh2ZENrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjBsdWRtRnNhV1FnYzNSaFkyc2djRzl3SnlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdkR2hwY3k1emRHRmphMU5zYjNRdExUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCcGRHVnRPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0IwYjNCVGRHRmphem9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnYkdWMElITjBZV05ySUQwZ2RHaHBjeTVwYzBsdWJHbHVaU2dwSUQ4Z2RHaHBjeTVwYm14cGJtVlRkR0ZqYXlBNklIUm9hWE11WTI5dGNHbHNaVk4wWVdOckxGeHVJQ0FnSUNBZ2FYUmxiU0E5SUhOMFlXTnJXM04wWVdOckxteGxibWQwYUNBdElERmRPMXh1WEc0Z0lDQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJR2xtSUNvdlhHNGdJQ0FnYVdZZ0tHbDBaVzBnYVc1emRHRnVZMlZ2WmlCTWFYUmxjbUZzS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVhSbGJTNTJZV3gxWlR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHbDBaVzA3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUdOdmJuUmxlSFJPWVcxbE9pQm1kVzVqZEdsdmJpaGpiMjUwWlhoMEtTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWRYTmxSR1Z3ZEdoeklDWW1JR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW5aR1Z3ZEdoeld5Y2dLeUJqYjI1MFpYaDBJQ3NnSjEwbk8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKMlJsY0hSb0p5QXJJR052Ym5SbGVIUTdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEYxYjNSbFpGTjBjbWx1WnpvZ1puVnVZM1JwYjI0b2MzUnlLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YzI5MWNtTmxMbkYxYjNSbFpGTjBjbWx1WnloemRISXBPMXh1SUNCOUxGeHVYRzRnSUc5aWFtVmpkRXhwZEdWeVlXdzZJR1oxYm1OMGFXOXVLRzlpYWlrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuTnZkWEpqWlM1dlltcGxZM1JNYVhSbGNtRnNLRzlpYWlrN1hHNGdJSDBzWEc1Y2JpQWdZV3hwWVhOaFlteGxPaUJtZFc1amRHbHZiaWh1WVcxbEtTQjdYRzRnSUNBZ2JHVjBJSEpsZENBOUlIUm9hWE11WVd4cFlYTmxjMXR1WVcxbFhUdGNiaUFnSUNCcFppQW9jbVYwS1NCN1hHNGdJQ0FnSUNCeVpYUXVjbVZtWlhKbGJtTmxRMjkxYm5Rckt6dGNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBJRDBnZEdocGN5NWhiR2xoYzJWelcyNWhiV1ZkSUQwZ2RHaHBjeTV6YjNWeVkyVXVkM0poY0NodVlXMWxLVHRjYmlBZ0lDQnlaWFF1WVd4cFlYTmhZbXhsSUQwZ2RISjFaVHRjYmlBZ0lDQnlaWFF1Y21WbVpYSmxibU5sUTI5MWJuUWdQU0F4TzF4dVhHNGdJQ0FnY21WMGRYSnVJSEpsZER0Y2JpQWdmU3hjYmx4dUlDQnpaWFIxY0VobGJIQmxjam9nWm5WdVkzUnBiMjRvY0dGeVlXMVRhWHBsTENCdVlXMWxMQ0JpYkc5amEwaGxiSEJsY2lrZ2UxeHVJQ0FnSUd4bGRDQndZWEpoYlhNZ1BTQmJYU3hjYmlBZ0lDQWdJSEJoY21GdGMwbHVhWFFnUFNCMGFHbHpMbk5sZEhWd1NHVnNjR1Z5UVhKbmN5aHVZVzFsTENCd1lYSmhiVk5wZW1Vc0lIQmhjbUZ0Y3l3Z1lteHZZMnRJWld4d1pYSXBPMXh1SUNBZ0lHeGxkQ0JtYjNWdVpFaGxiSEJsY2lBOUlIUm9hWE11Ym1GdFpVeHZiMnQxY0NnbmFHVnNjR1Z5Y3ljc0lHNWhiV1VzSUNkb1pXeHdaWEluS1N4Y2JpQWdJQ0FnSUdOaGJHeERiMjUwWlhoMElEMGdkR2hwY3k1aGJHbGhjMkZpYkdVb1hHNGdJQ0FnSUNBZ0lHQWtlM1JvYVhNdVkyOXVkR1Y0ZEU1aGJXVW9NQ2w5SUNFOUlHNTFiR3dnUHlBa2UzUm9hWE11WTI5dWRHVjRkRTVoYldVb1hHNGdJQ0FnSUNBZ0lDQWdNRnh1SUNBZ0lDQWdJQ0FwZlNBNklDaGpiMjUwWVdsdVpYSXViblZzYkVOdmJuUmxlSFFnZkh3Z2UzMHBZRnh1SUNBZ0lDQWdLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQndZWEpoYlhNNklIQmhjbUZ0Y3l4Y2JpQWdJQ0FnSUhCaGNtRnRjMGx1YVhRNklIQmhjbUZ0YzBsdWFYUXNYRzRnSUNBZ0lDQnVZVzFsT2lCbWIzVnVaRWhsYkhCbGNpeGNiaUFnSUNBZ0lHTmhiR3hRWVhKaGJYTTZJRnRqWVd4c1EyOXVkR1Y0ZEYwdVkyOXVZMkYwS0hCaGNtRnRjeWxjYmlBZ0lDQjlPMXh1SUNCOUxGeHVYRzRnSUhObGRIVndVR0Z5WVcxek9pQm1kVzVqZEdsdmJpaG9aV3h3WlhJc0lIQmhjbUZ0VTJsNlpTd2djR0Z5WVcxektTQjdYRzRnSUNBZ2JHVjBJRzl3ZEdsdmJuTWdQU0I3ZlN4Y2JpQWdJQ0FnSUdOdmJuUmxlSFJ6SUQwZ1cxMHNYRzRnSUNBZ0lDQjBlWEJsY3lBOUlGdGRMRnh1SUNBZ0lDQWdhV1J6SUQwZ1cxMHNYRzRnSUNBZ0lDQnZZbXBsWTNSQmNtZHpJRDBnSVhCaGNtRnRjeXhjYmlBZ0lDQWdJSEJoY21GdE8xeHVYRzRnSUNBZ2FXWWdLRzlpYW1WamRFRnlaM01wSUh0Y2JpQWdJQ0FnSUhCaGNtRnRjeUE5SUZ0ZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUc5d2RHbHZibk11Ym1GdFpTQTlJSFJvYVhNdWNYVnZkR1ZrVTNSeWFXNW5LR2hsYkhCbGNpazdYRzRnSUNBZ2IzQjBhVzl1Y3k1b1lYTm9JRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVkSEpoWTJ0SlpITXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVhR0Z6YUVsa2N5QTlJSFJvYVhNdWNHOXdVM1JoWTJzb0tUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5VR0Z5WVcxektTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtaGhjMmhVZVhCbGN5QTlJSFJvYVhNdWNHOXdVM1JoWTJzb0tUdGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdWFHRnphRU52Ym5SbGVIUnpJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JwYm5abGNuTmxJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BMRnh1SUNBZ0lDQWdjSEp2WjNKaGJTQTlJSFJvYVhNdWNHOXdVM1JoWTJzb0tUdGNibHh1SUNBZ0lDOHZJRUYyYjJsa0lITmxkSFJwYm1jZ1ptNGdZVzVrSUdsdWRtVnljMlVnYVdZZ2JtVnBkR2hsY2lCaGNtVWdjMlYwTGlCVWFHbHpJR0ZzYkc5M2MxeHVJQ0FnSUM4dklHaGxiSEJsY25NZ2RHOGdaRzhnWVNCamFHVmpheUJtYjNJZ1lHbG1JQ2h2Y0hScGIyNXpMbVp1S1dCY2JpQWdJQ0JwWmlBb2NISnZaM0poYlNCOGZDQnBiblpsY25ObEtTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtWnVJRDBnY0hKdlozSmhiU0I4ZkNBblkyOXVkR0ZwYm1WeUxtNXZiM0FuTzF4dUlDQWdJQ0FnYjNCMGFXOXVjeTVwYm5abGNuTmxJRDBnYVc1MlpYSnpaU0I4ZkNBblkyOXVkR0ZwYm1WeUxtNXZiM0FuTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZSb1pTQndZWEpoYldWMFpYSnpJR2R2SUc5dUlIUnZJSFJvWlNCemRHRmpheUJwYmlCdmNtUmxjaUFvYldGcmFXNW5JSE4xY21VZ2RHaGhkQ0IwYUdWNUlHRnlaU0JsZG1Gc2RXRjBaV1FnYVc0Z2IzSmtaWElwWEc0Z0lDQWdMeThnYzI4Z2QyVWdibVZsWkNCMGJ5QndiM0FnZEdobGJTQnZabVlnZEdobElITjBZV05ySUdsdUlISmxkbVZ5YzJVZ2IzSmtaWEpjYmlBZ0lDQnNaWFFnYVNBOUlIQmhjbUZ0VTJsNlpUdGNiaUFnSUNCM2FHbHNaU0FvYVMwdEtTQjdYRzRnSUNBZ0lDQndZWEpoYlNBOUlIUm9hWE11Y0c5d1UzUmhZMnNvS1R0Y2JpQWdJQ0FnSUhCaGNtRnRjMXRwWFNBOUlIQmhjbUZ0TzF4dVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1MGNtRmphMGxrY3lrZ2UxeHVJQ0FnSUNBZ0lDQnBaSE5iYVYwZ1BTQjBhR2x6TG5CdmNGTjBZV05yS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1emRISnBibWRRWVhKaGJYTXBJSHRjYmlBZ0lDQWdJQ0FnZEhsd1pYTmJhVjBnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdJQ0FnSUdOdmJuUmxlSFJ6VzJsZElEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHZZbXBsWTNSQmNtZHpLU0I3WEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbUZ5WjNNZ1BTQjBhR2x6TG5OdmRYSmpaUzVuWlc1bGNtRjBaVUZ5Y21GNUtIQmhjbUZ0Y3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFkydEpaSE1wSUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk11YVdSeklEMGdkR2hwY3k1emIzVnlZMlV1WjJWdVpYSmhkR1ZCY25KaGVTaHBaSE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdocGN5NXpkSEpwYm1kUVlYSmhiWE1wSUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk11ZEhsd1pYTWdQU0IwYUdsekxuTnZkWEpqWlM1blpXNWxjbUYwWlVGeWNtRjVLSFI1Y0dWektUdGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVkyOXVkR1Y0ZEhNZ1BTQjBhR2x6TG5OdmRYSmpaUzVuWlc1bGNtRjBaVUZ5Y21GNUtHTnZiblJsZUhSektUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG1SaGRHRXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVaR0YwWVNBOUlDZGtZWFJoSnp0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hSb2FYTXVkWE5sUW14dlkydFFZWEpoYlhNcElIdGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVlteHZZMnRRWVhKaGJYTWdQU0FuWW14dlkydFFZWEpoYlhNbk8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiM0IwYVc5dWN6dGNiaUFnZlN4Y2JseHVJQ0J6WlhSMWNFaGxiSEJsY2tGeVozTTZJR1oxYm1OMGFXOXVLR2hsYkhCbGNpd2djR0Z5WVcxVGFYcGxMQ0J3WVhKaGJYTXNJSFZ6WlZKbFoybHpkR1Z5S1NCN1hHNGdJQ0FnYkdWMElHOXdkR2x2Ym5NZ1BTQjBhR2x6TG5ObGRIVndVR0Z5WVcxektHaGxiSEJsY2l3Z2NHRnlZVzFUYVhwbExDQndZWEpoYlhNcE8xeHVJQ0FnSUc5d2RHbHZibk11Ykc5aklEMGdTbE5QVGk1emRISnBibWRwWm5rb2RHaHBjeTV6YjNWeVkyVXVZM1Z5Y21WdWRFeHZZMkYwYVc5dUtUdGNiaUFnSUNCdmNIUnBiMjV6SUQwZ2RHaHBjeTV2WW1wbFkzUk1hWFJsY21Gc0tHOXdkR2x2Ym5NcE8xeHVJQ0FnSUdsbUlDaDFjMlZTWldkcGMzUmxjaWtnZTF4dUlDQWdJQ0FnZEdocGN5NTFjMlZTWldkcGMzUmxjaWduYjNCMGFXOXVjeWNwTzF4dUlDQWdJQ0FnY0dGeVlXMXpMbkIxYzJnb0oyOXdkR2x2Ym5NbktUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCYkoyOXdkR2x2Ym5NOUp5d2diM0IwYVc5dWMxMDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHdZWEpoYlhNcElIdGNiaUFnSUNBZ0lIQmhjbUZ0Y3k1d2RYTm9LRzl3ZEdsdmJuTXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlDY25PMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYjNCMGFXOXVjenRjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYmlobWRXNWpkR2x2YmlncElIdGNiaUFnWTI5dWMzUWdjbVZ6WlhKMlpXUlhiM0prY3lBOUlDaGNiaUFnSUNBblluSmxZV3NnWld4elpTQnVaWGNnZG1GeUp5QXJYRzRnSUNBZ0p5QmpZWE5sSUdacGJtRnNiSGtnY21WMGRYSnVJSFp2YVdRbklDdGNiaUFnSUNBbklHTmhkR05vSUdadmNpQnpkMmwwWTJnZ2QyaHBiR1VuSUN0Y2JpQWdJQ0FuSUdOdmJuUnBiblZsSUdaMWJtTjBhVzl1SUhSb2FYTWdkMmwwYUNjZ0sxeHVJQ0FnSUNjZ1pHVm1ZWFZzZENCcFppQjBhSEp2ZHljZ0sxeHVJQ0FnSUNjZ1pHVnNaWFJsSUdsdUlIUnllU2NnSzF4dUlDQWdJQ2NnWkc4Z2FXNXpkR0Z1WTJWdlppQjBlWEJsYjJZbklDdGNiaUFnSUNBbklHRmljM1J5WVdOMElHVnVkVzBnYVc1MElITm9iM0owSnlBclhHNGdJQ0FnSnlCaWIyOXNaV0Z1SUdWNGNHOXlkQ0JwYm5SbGNtWmhZMlVnYzNSaGRHbGpKeUFyWEc0Z0lDQWdKeUJpZVhSbElHVjRkR1Z1WkhNZ2JHOXVaeUJ6ZFhCbGNpY2dLMXh1SUNBZ0lDY2dZMmhoY2lCbWFXNWhiQ0J1WVhScGRtVWdjM2x1WTJoeWIyNXBlbVZrSnlBclhHNGdJQ0FnSnlCamJHRnpjeUJtYkc5aGRDQndZV05yWVdkbElIUm9jbTkzY3ljZ0sxeHVJQ0FnSUNjZ1kyOXVjM1FnWjI5MGJ5QndjbWwyWVhSbElIUnlZVzV6YVdWdWRDY2dLMXh1SUNBZ0lDY2daR1ZpZFdkblpYSWdhVzF3YkdWdFpXNTBjeUJ3Y205MFpXTjBaV1FnZG05c1lYUnBiR1VuSUN0Y2JpQWdJQ0FuSUdSdmRXSnNaU0JwYlhCdmNuUWdjSFZpYkdsaklHeGxkQ0I1YVdWc1pDQmhkMkZwZENjZ0sxeHVJQ0FnSUNjZ2JuVnNiQ0IwY25WbElHWmhiSE5sSjF4dUlDQXBMbk53YkdsMEtDY2dKeWs3WEc1Y2JpQWdZMjl1YzNRZ1kyOXRjR2xzWlhKWGIzSmtjeUE5SUNoS1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJdVVrVlRSVkpXUlVSZlYwOVNSRk1nUFNCN2ZTazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQnlaWE5sY25abFpGZHZjbVJ6TG14bGJtZDBhRHNnYVNBOElHdzdJR2tyS3lrZ2UxeHVJQ0FnSUdOdmJYQnBiR1Z5VjI5eVpITmJjbVZ6WlhKMlpXUlhiM0prYzF0cFhWMGdQU0IwY25WbE8xeHVJQ0I5WEc1OUtTZ3BPMXh1WEc0dktpcGNiaUFxSUVCa1pYQnlaV05oZEdWa0lFMWhlU0JpWlNCeVpXMXZkbVZrSUdsdUlIUm9aU0J1WlhoMElHMWhhbTl5SUhabGNuTnBiMjVjYmlBcUwxeHVTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMbWx6Vm1Gc2FXUktZWFpoVTJOeWFYQjBWbUZ5YVdGaWJHVk9ZVzFsSUQwZ1puVnVZM1JwYjI0b2JtRnRaU2tnZTF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUNGS1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJdVVrVlRSVkpXUlVSZlYwOVNSRk5iYm1GdFpWMGdKaVpjYmlBZ0lDQXZYbHRoTFhwQkxWcGZKRjFiTUMwNVlTMTZRUzFhWHlSZEtpUXZMblJsYzNRb2JtRnRaU2xjYmlBZ0tUdGNibjA3WEc1Y2JtWjFibU4wYVc5dUlITjBjbWxqZEV4dmIydDFjQ2h5WlhGMWFYSmxWR1Z5YldsdVlXd3NJR052YlhCcGJHVnlMQ0J3WVhKMGN5d2dkSGx3WlNrZ2UxeHVJQ0JzWlhRZ2MzUmhZMnNnUFNCamIyMXdhV3hsY2k1d2IzQlRkR0ZqYXlncExGeHVJQ0FnSUdrZ1BTQXdMRnh1SUNBZ0lHeGxiaUE5SUhCaGNuUnpMbXhsYm1kMGFEdGNiaUFnYVdZZ0tISmxjWFZwY21WVVpYSnRhVzVoYkNrZ2UxeHVJQ0FnSUd4bGJpMHRPMXh1SUNCOVhHNWNiaUFnWm05eUlDZzdJR2tnUENCc1pXNDdJR2tyS3lrZ2UxeHVJQ0FnSUhOMFlXTnJJRDBnWTI5dGNHbHNaWEl1Ym1GdFpVeHZiMnQxY0NoemRHRmpheXdnY0dGeWRITmJhVjBzSUhSNWNHVXBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tISmxjWFZwY21WVVpYSnRhVzVoYkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJiWEc0Z0lDQWdJQ0JqYjIxd2FXeGxjaTVoYkdsaGMyRmliR1VvSjJOdmJuUmhhVzVsY2k1emRISnBZM1FuS1N4Y2JpQWdJQ0FnSUNjb0p5eGNiaUFnSUNBZ0lITjBZV05yTEZ4dUlDQWdJQ0FnSnl3Z0p5eGNiaUFnSUNBZ0lHTnZiWEJwYkdWeUxuRjFiM1JsWkZOMGNtbHVaeWh3WVhKMGMxdHBYU2tzWEc0Z0lDQWdJQ0FuTENBbkxGeHVJQ0FnSUNBZ1NsTlBUaTV6ZEhKcGJtZHBabmtvWTI5dGNHbHNaWEl1YzI5MWNtTmxMbU4xY25KbGJuUk1iMk5oZEdsdmJpa3NYRzRnSUNBZ0lDQW5JQ2tuWEc0Z0lDQWdYVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjM1JoWTJzN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1NtRjJZVk5qY21sd2RFTnZiWEJwYkdWeU8xeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfaGFuZGxlYmFyc1J1bnRpbWUgPSByZXF1aXJlKCcuL2hhbmRsZWJhcnMucnVudGltZScpO1xuXG52YXIgX2hhbmRsZWJhcnNSdW50aW1lMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNSdW50aW1lKTtcblxuLy8gQ29tcGlsZXIgaW1wb3J0c1xuXG52YXIgX2hhbmRsZWJhcnNDb21waWxlckFzdCA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci9hc3QnKTtcblxudmFyIF9oYW5kbGViYXJzQ29tcGlsZXJBc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVyQXN0KTtcblxudmFyIF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UnKTtcblxudmFyIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlciA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci9jb21waWxlcicpO1xuXG52YXIgX2hhbmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxlciA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci9qYXZhc2NyaXB0LWNvbXBpbGVyJyk7XG5cbnZhciBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxlcik7XG5cbnZhciBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvciA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9yJyk7XG5cbnZhciBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzQ29tcGlsZXJWaXNpdG9yKTtcblxudmFyIF9oYW5kbGViYXJzTm9Db25mbGljdCA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9uby1jb25mbGljdCcpO1xuXG52YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZsaWN0KTtcblxudmFyIF9jcmVhdGUgPSBfaGFuZGxlYmFyc1J1bnRpbWUyWydkZWZhdWx0J10uY3JlYXRlO1xuZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgaGIgPSBfY3JlYXRlKCk7XG5cbiAgaGIuY29tcGlsZSA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucykge1xuICAgIHJldHVybiBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuY29tcGlsZShpbnB1dCwgb3B0aW9ucywgaGIpO1xuICB9O1xuICBoYi5wcmVjb21waWxlID0gZnVuY3Rpb24gKGlucHV0LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlci5wcmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7XG4gIH07XG5cbiAgaGIuQVNUID0gX2hhbmRsZWJhcnNDb21waWxlckFzdDJbJ2RlZmF1bHQnXTtcbiAgaGIuQ29tcGlsZXIgPSBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuQ29tcGlsZXI7XG4gIGhiLkphdmFTY3JpcHRDb21waWxlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIyWydkZWZhdWx0J107XG4gIGhiLlBhcnNlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlLnBhcnNlcjtcbiAgaGIucGFyc2UgPSBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZTtcbiAgaGIucGFyc2VXaXRob3V0UHJvY2Vzc2luZyA9IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlLnBhcnNlV2l0aG91dFByb2Nlc3Npbmc7XG5cbiAgcmV0dXJuIGhiO1xufVxuXG52YXIgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbl9oYW5kbGViYXJzTm9Db25mbGljdDJbJ2RlZmF1bHQnXShpbnN0KTtcblxuaW5zdC5WaXNpdG9yID0gX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IyWydkZWZhdWx0J107XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdhVU5CUVc5Q0xITkNRVUZ6UWpzN096czdPM0ZEUVVjeFFpd3lRa0ZCTWtJN096czdjME5CUzNCRExEUkNRVUUwUWpzN01FTkJRMWNzWjBOQlFXZERPenR2UkVGREwwTXNNa05CUVRKRE96czdPM2xEUVVOMFJDd3JRa0ZCSzBJN096czdiME5CUlRWQ0xEQkNRVUV3UWpzN096dEJRVVZxUkN4SlFVRkpMRTlCUVU4c1IwRkJSeXdyUWtGQlVTeE5RVUZOTEVOQlFVTTdRVUZETjBJc1UwRkJVeXhOUVVGTkxFZEJRVWM3UVVGRGFFSXNUVUZCU1N4RlFVRkZMRWRCUVVjc1QwRkJUeXhGUVVGRkxFTkJRVU03TzBGQlJXNUNMRWxCUVVVc1EwRkJReXhQUVVGUExFZEJRVWNzVlVGQlV5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNCRExGZEJRVThzYjBOQlFWRXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEhRVU53UXl4RFFVRkRPMEZCUTBZc1NVRkJSU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFZRVUZUTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRka01zVjBGQlR5eDFRMEZCVnl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBkQlEzWkRMRU5CUVVNN08wRkJSVVlzU1VGQlJTeERRVUZETEVkQlFVY3NjVU5CUVUwc1EwRkJRenRCUVVOaUxFbEJRVVVzUTBGQlF5eFJRVUZSTEhWRFFVRlhMRU5CUVVNN1FVRkRka0lzU1VGQlJTeERRVUZETEd0Q1FVRnJRaXh2UkVGQmNVSXNRMEZCUXp0QlFVTXpReXhKUVVGRkxFTkJRVU1zVFVGQlRTeHBRMEZCVXl4RFFVRkRPMEZCUTI1Q0xFbEJRVVVzUTBGQlF5eExRVUZMTEdkRFFVRlJMRU5CUVVNN1FVRkRha0lzU1VGQlJTeERRVUZETEhOQ1FVRnpRaXhwUkVGQmVVSXNRMEZCUXpzN1FVRkZia1FzVTBGQlR5eEZRVUZGTEVOQlFVTTdRMEZEV0RzN1FVRkZSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVWQlFVVXNRMEZCUXp0QlFVTndRaXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXpzN1FVRkZja0lzYTBOQlFWY3NTVUZCU1N4RFFVRkRMRU5CUVVNN08wRkJSV3BDTEVsQlFVa3NRMEZCUXl4UFFVRlBMSGxEUVVGVkxFTkJRVU03TzBGQlJYWkNMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdPM0ZDUVVWU0xFbEJRVWtpTENKbWFXeGxJam9pYUdGdVpHeGxZbUZ5Y3k1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQnlkVzUwYVcxbElHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5NXlkVzUwYVcxbEp6dGNibHh1THk4Z1EyOXRjR2xzWlhJZ2FXMXdiM0owYzF4dWFXMXdiM0owSUVGVFZDQm1jbTl0SUNjdUwyaGhibVJzWldKaGNuTXZZMjl0Y0dsc1pYSXZZWE4wSnp0Y2JtbHRjRzl5ZENCN1hHNGdJSEJoY25ObGNpQmhjeUJRWVhKelpYSXNYRzRnSUhCaGNuTmxMRnh1SUNCd1lYSnpaVmRwZEdodmRYUlFjbTlqWlhOemFXNW5YRzU5SUdaeWIyMGdKeTR2YUdGdVpHeGxZbUZ5Y3k5amIyMXdhV3hsY2k5aVlYTmxKenRjYm1sdGNHOXlkQ0I3SUVOdmJYQnBiR1Z5TENCamIyMXdhV3hsTENCd2NtVmpiMjF3YVd4bElIMGdabkp2YlNBbkxpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMMk52YlhCcGJHVnlKenRjYm1sdGNHOXlkQ0JLWVhaaFUyTnlhWEIwUTI5dGNHbHNaWElnWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJwaGRtRnpZM0pwY0hRdFkyOXRjR2xzWlhJbk8xeHVhVzF3YjNKMElGWnBjMmwwYjNJZ1puSnZiU0FuTGk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwzWnBjMmwwYjNJbk8xeHVYRzVwYlhCdmNuUWdibTlEYjI1bWJHbGpkQ0JtY205dElDY3VMMmhoYm1Sc1pXSmhjbk12Ym04dFkyOXVabXhwWTNRbk8xeHVYRzVzWlhRZ1gyTnlaV0YwWlNBOUlISjFiblJwYldVdVkzSmxZWFJsTzF4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsS0NrZ2UxeHVJQ0JzWlhRZ2FHSWdQU0JmWTNKbFlYUmxLQ2s3WEc1Y2JpQWdhR0l1WTI5dGNHbHNaU0E5SUdaMWJtTjBhVzl1S0dsdWNIVjBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHTnZiWEJwYkdVb2FXNXdkWFFzSUc5d2RHbHZibk1zSUdoaUtUdGNiaUFnZlR0Y2JpQWdhR0l1Y0hKbFkyOXRjR2xzWlNBOUlHWjFibU4wYVc5dUtHbHVjSFYwTENCdmNIUnBiMjV6S1NCN1hHNGdJQ0FnY21WMGRYSnVJSEJ5WldOdmJYQnBiR1VvYVc1d2RYUXNJRzl3ZEdsdmJuTXNJR2hpS1R0Y2JpQWdmVHRjYmx4dUlDQm9ZaTVCVTFRZ1BTQkJVMVE3WEc0Z0lHaGlMa052YlhCcGJHVnlJRDBnUTI5dGNHbHNaWEk3WEc0Z0lHaGlMa3BoZG1GVFkzSnBjSFJEYjIxd2FXeGxjaUE5SUVwaGRtRlRZM0pwY0hSRGIyMXdhV3hsY2p0Y2JpQWdhR0l1VUdGeWMyVnlJRDBnVUdGeWMyVnlPMXh1SUNCb1lpNXdZWEp6WlNBOUlIQmhjbk5sTzF4dUlDQm9ZaTV3WVhKelpWZHBkR2h2ZFhSUWNtOWpaWE56YVc1bklEMGdjR0Z5YzJWWGFYUm9iM1YwVUhKdlkyVnpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdhR0k3WEc1OVhHNWNibXhsZENCcGJuTjBJRDBnWTNKbFlYUmxLQ2s3WEc1cGJuTjBMbU55WldGMFpTQTlJR055WldGMFpUdGNibHh1Ym05RGIyNW1iR2xqZENocGJuTjBLVHRjYmx4dWFXNXpkQzVXYVhOcGRHOXlJRDBnVm1semFYUnZjanRjYmx4dWFXNXpkRnNuWkdWbVlYVnNkQ2RkSUQwZ2FXNXpkRHRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnYVc1emREdGNiaUpkZlE9PVxuIiwiLyogZXNsaW50LWRpc2FibGUgbmV3LWNhcCAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5wcmludCA9IHByaW50O1xuZXhwb3J0cy5QcmludFZpc2l0b3IgPSBQcmludFZpc2l0b3I7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfdmlzaXRvciA9IHJlcXVpcmUoJy4vdmlzaXRvcicpO1xuXG52YXIgX3Zpc2l0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdmlzaXRvcik7XG5cbmZ1bmN0aW9uIHByaW50KGFzdCkge1xuICByZXR1cm4gbmV3IFByaW50VmlzaXRvcigpLmFjY2VwdChhc3QpO1xufVxuXG5mdW5jdGlvbiBQcmludFZpc2l0b3IoKSB7XG4gIHRoaXMucGFkZGluZyA9IDA7XG59XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUgPSBuZXcgX3Zpc2l0b3IyWydkZWZhdWx0J10oKTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5wYWQgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBvdXQgPSAnJztcblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMucGFkZGluZzsgaSA8IGw7IGkrKykge1xuICAgIG91dCArPSAnICAnO1xuICB9XG5cbiAgb3V0ICs9IHN0cmluZyArICdcXG4nO1xuICByZXR1cm4gb3V0O1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHtcbiAgdmFyIG91dCA9ICcnLFxuICAgICAgYm9keSA9IHByb2dyYW0uYm9keSxcbiAgICAgIGkgPSB1bmRlZmluZWQsXG4gICAgICBsID0gdW5kZWZpbmVkO1xuXG4gIGlmIChwcm9ncmFtLmJsb2NrUGFyYW1zKSB7XG4gICAgdmFyIGJsb2NrUGFyYW1zID0gJ0JMT0NLIFBBUkFNUzogWyc7XG4gICAgZm9yIChpID0gMCwgbCA9IHByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBibG9ja1BhcmFtcyArPSAnICcgKyBwcm9ncmFtLmJsb2NrUGFyYW1zW2ldO1xuICAgIH1cbiAgICBibG9ja1BhcmFtcyArPSAnIF0nO1xuICAgIG91dCArPSB0aGlzLnBhZChibG9ja1BhcmFtcyk7XG4gIH1cblxuICBmb3IgKGkgPSAwLCBsID0gYm9keS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvdXQgKz0gdGhpcy5hY2NlcHQoYm9keVtpXSk7XG4gIH1cblxuICB0aGlzLnBhZGRpbmctLTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uIChtdXN0YWNoZSkge1xuICByZXR1cm4gdGhpcy5wYWQoJ3t7ICcgKyB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpICsgJyB9fScpO1xufTtcblByaW50VmlzaXRvci5wcm90b3R5cGUuRGVjb3JhdG9yID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7XG4gIHJldHVybiB0aGlzLnBhZCgne3sgRElSRUNUSVZFICcgKyB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpICsgJyB9fScpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFByaW50VmlzaXRvci5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2sgPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIG91dCA9ICcnO1xuXG4gIG91dCArPSB0aGlzLnBhZCgoYmxvY2sudHlwZSA9PT0gJ0RlY29yYXRvckJsb2NrJyA/ICdESVJFQ1RJVkUgJyA6ICcnKSArICdCTE9DSzonKTtcbiAgdGhpcy5wYWRkaW5nKys7XG4gIG91dCArPSB0aGlzLnBhZCh0aGlzLlN1YkV4cHJlc3Npb24oYmxvY2spKTtcbiAgaWYgKGJsb2NrLnByb2dyYW0pIHtcbiAgICBvdXQgKz0gdGhpcy5wYWQoJ1BST0dSQU06Jyk7XG4gICAgdGhpcy5wYWRkaW5nKys7XG4gICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pO1xuICAgIHRoaXMucGFkZGluZy0tO1xuICB9XG4gIGlmIChibG9jay5pbnZlcnNlKSB7XG4gICAgaWYgKGJsb2NrLnByb2dyYW0pIHtcbiAgICAgIHRoaXMucGFkZGluZysrO1xuICAgIH1cbiAgICBvdXQgKz0gdGhpcy5wYWQoJ3t7Xn19Jyk7XG4gICAgdGhpcy5wYWRkaW5nKys7XG4gICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJsb2NrLmludmVyc2UpO1xuICAgIHRoaXMucGFkZGluZy0tO1xuICAgIGlmIChibG9jay5wcm9ncmFtKSB7XG4gICAgICB0aGlzLnBhZGRpbmctLTtcbiAgICB9XG4gIH1cbiAgdGhpcy5wYWRkaW5nLS07XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9IGZ1bmN0aW9uIChwYXJ0aWFsKSB7XG4gIHZhciBjb250ZW50ID0gJ1BBUlRJQUw6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDtcbiAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7XG4gIH1cbiAgaWYgKHBhcnRpYWwuaGFzaCkge1xuICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTtcbiAgfVxuICByZXR1cm4gdGhpcy5wYWQoJ3t7PiAnICsgY29udGVudCArICcgfX0nKTtcbn07XG5QcmludFZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uIChwYXJ0aWFsKSB7XG4gIHZhciBjb250ZW50ID0gJ1BBUlRJQUwgQkxPQ0s6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDtcbiAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7XG4gIH1cbiAgaWYgKHBhcnRpYWwuaGFzaCkge1xuICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTtcbiAgfVxuXG4gIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5wYWQoJ1BST0dSQU06Jyk7XG4gIHRoaXMucGFkZGluZysrO1xuICBjb250ZW50ICs9IHRoaXMuYWNjZXB0KHBhcnRpYWwucHJvZ3JhbSk7XG4gIHRoaXMucGFkZGluZy0tO1xuXG4gIHJldHVybiB0aGlzLnBhZCgne3s+ICcgKyBjb250ZW50ICsgJyB9fScpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db250ZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgcmV0dXJuIHRoaXMucGFkKFwiQ09OVEVOVFsgJ1wiICsgY29udGVudC52YWx1ZSArIFwiJyBdXCIpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKGNvbW1lbnQpIHtcbiAgcmV0dXJuIHRoaXMucGFkKFwie3shICdcIiArIGNvbW1lbnQudmFsdWUgKyBcIicgfX1cIik7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlN1YkV4cHJlc3Npb24gPSBmdW5jdGlvbiAoc2V4cHIpIHtcbiAgdmFyIHBhcmFtcyA9IHNleHByLnBhcmFtcyxcbiAgICAgIHBhcmFtU3RyaW5ncyA9IFtdLFxuICAgICAgaGFzaCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBwYXJhbVN0cmluZ3MucHVzaCh0aGlzLmFjY2VwdChwYXJhbXNbaV0pKTtcbiAgfVxuXG4gIHBhcmFtcyA9ICdbJyArIHBhcmFtU3RyaW5ncy5qb2luKCcsICcpICsgJ10nO1xuXG4gIGhhc2ggPSBzZXhwci5oYXNoID8gJyAnICsgdGhpcy5hY2NlcHQoc2V4cHIuaGFzaCkgOiAnJztcblxuICByZXR1cm4gdGhpcy5hY2NlcHQoc2V4cHIucGF0aCkgKyAnICcgKyBwYXJhbXMgKyBoYXNoO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5QYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIgcGF0aCA9IGlkLnBhcnRzLmpvaW4oJy8nKTtcbiAgcmV0dXJuIChpZC5kYXRhID8gJ0AnIDogJycpICsgJ1BBVEg6JyArIHBhdGg7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlN0cmluZ0xpdGVyYWwgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiAnXCInICsgc3RyaW5nLnZhbHVlICsgJ1wiJztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuTnVtYmVyTGl0ZXJhbCA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuICdOVU1CRVJ7JyArIG51bWJlci52YWx1ZSArICd9Jztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuQm9vbGVhbkxpdGVyYWwgPSBmdW5jdGlvbiAoYm9vbCkge1xuICByZXR1cm4gJ0JPT0xFQU57JyArIGJvb2wudmFsdWUgKyAnfSc7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlVuZGVmaW5lZExpdGVyYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnVU5ERUZJTkVEJztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuTnVsbExpdGVyYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnTlVMTCc7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLkhhc2ggPSBmdW5jdGlvbiAoaGFzaCkge1xuICB2YXIgcGFpcnMgPSBoYXNoLnBhaXJzLFxuICAgICAgam9pbmVkUGFpcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHBhaXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGpvaW5lZFBhaXJzLnB1c2godGhpcy5hY2NlcHQocGFpcnNbaV0pKTtcbiAgfVxuXG4gIHJldHVybiAnSEFTSHsnICsgam9pbmVkUGFpcnMuam9pbignLCAnKSArICd9Jztcbn07XG5QcmludFZpc2l0b3IucHJvdG90eXBlLkhhc2hQYWlyID0gZnVuY3Rpb24gKHBhaXIpIHtcbiAgcmV0dXJuIHBhaXIua2V5ICsgJz0nICsgdGhpcy5hY2NlcHQocGFpci52YWx1ZSk7XG59O1xuLyogZXNsaW50LWVuYWJsZSBuZXctY2FwICovXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM0J5YVc1MFpYSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenQxUWtGRGIwSXNWMEZCVnpzN096dEJRVVY0UWl4VFFVRlRMRXRCUVVzc1EwRkJReXhIUVVGSExFVkJRVVU3UVVGRGVrSXNVMEZCVHl4SlFVRkpMRmxCUVZrc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0RFFVTjJRenM3UVVGRlRTeFRRVUZUTEZsQlFWa3NSMEZCUnp0QlFVTTNRaXhOUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0RFFVTnNRanM3UVVGRlJDeFpRVUZaTEVOQlFVTXNVMEZCVXl4SFFVRkhMREJDUVVGaExFTkJRVU03TzBGQlJYWkRMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEhRVUZITEZWQlFWTXNUVUZCVFN4RlFVRkZPMEZCUXpWRExFMUJRVWtzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZZaXhQUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRelZETEU5QlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNN1IwRkRZanM3UVVGRlJDeExRVUZITEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOeVFpeFRRVUZQTEVkQlFVY3NRMEZCUXp0RFFVTmFMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1ZVRkJVeXhQUVVGUExFVkJRVVU3UVVGRGFrUXNUVUZCU1N4SFFVRkhMRWRCUVVjc1JVRkJSVHROUVVOV0xFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1R0TlFVTnVRaXhEUVVGRExGbEJRVUU3VFVGRFJDeERRVUZETEZsQlFVRXNRMEZCUXpzN1FVRkZTaXhOUVVGSkxFOUJRVThzUTBGQlF5eFhRVUZYTEVWQlFVVTdRVUZEZGtJc1VVRkJTU3hYUVVGWExFZEJRVWNzYVVKQlFXbENMRU5CUVVNN1FVRkRjRU1zVTBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEzUkVMR2xDUVVGWExFbEJRVWtzUjBGQlJ5eEhRVUZITEU5QlFVOHNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRE4wTTdRVUZEUkN4bFFVRlhMRWxCUVVrc1NVRkJTU3hEUVVGRE8wRkJRM0JDTEU5QlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzBkQlF6bENPenRCUVVWRUxFOUJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRM1pETEU5QlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUXpkQ096dEJRVVZFTEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenM3UVVGRlppeFRRVUZQTEVkQlFVY3NRMEZCUXp0RFFVTmFMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eFZRVUZUTEZGQlFWRXNSVUZCUlR0QlFVTTFSQ3hUUVVGUExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1EwRkRMMFFzUTBGQlF6dEJRVU5HTEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhIUVVGSExGVkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEzQkVMRk5CUVU4c1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0RFFVTjZSU3hEUVVGRE96dEJRVVZHTEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhIUVVGSExGbEJRVmtzUTBGQlF5eFRRVUZUTEVOQlFVTXNZMEZCWXl4SFFVRkhMRlZCUXpsRkxFdEJRVXNzUlVGRFREdEJRVU5CTEUxQlFVa3NSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJRenM3UVVGRllpeExRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkRZaXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NaMEpCUVdkQ0xFZEJRVWNzV1VGQldTeEhRVUZITEVWQlFVVXNRMEZCUVN4SFFVRkpMRkZCUVZFc1EwRkRha1VzUTBGQlF6dEJRVU5HTEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVObUxFdEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXpReXhOUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVTdRVUZEYWtJc1QwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkROVUlzVVVGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJZc1QwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRMnhETEZGQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRIUVVOb1FqdEJRVU5FTEUxQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVOcVFpeFJRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRha0lzVlVGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMHRCUTJoQ08wRkJRMFFzVDBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGVrSXNVVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMllzVDBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlEyeERMRkZCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5tTEZGQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVOcVFpeFZRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1MwRkRhRUk3UjBGRFJqdEJRVU5FTEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenM3UVVGRlppeFRRVUZQTEVkQlFVY3NRMEZCUXp0RFFVTmFMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eFZRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTXhSQ3hOUVVGSkxFOUJRVThzUjBGQlJ5eFZRVUZWTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03UVVGRGFrUXNUVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlEzSkNMRmRCUVU4c1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdSMEZEYWtRN1FVRkRSQ3hOUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEYUVJc1YwRkJUeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEhRVU0xUXp0QlFVTkVMRk5CUVU4c1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8wTkJRek5ETEVOQlFVTTdRVUZEUml4WlFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRlZCUVZNc1QwRkJUeXhGUVVGRk8wRkJReTlFTEUxQlFVa3NUMEZCVHl4SFFVRkhMR2RDUVVGblFpeEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8wRkJRM1pFTEUxQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU55UWl4WFFVRlBMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEycEVPMEZCUTBRc1RVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEyaENMRmRCUVU4c1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UjBGRE5VTTdPMEZCUlVRc1UwRkJUeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRM1JETEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVObUxGTkJRVThzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU40UXl4TlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03TzBGQlJXWXNVMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eFBRVUZQTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1EwRkRNME1zUTBGQlF6czdRVUZGUml4WlFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExHZENRVUZuUWl4SFFVRkhMRlZCUVZNc1QwRkJUeXhGUVVGRk8wRkJRekZFTEZOQlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFZEJRVWNzVDBGQlR5eERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJRenREUVVOMlJDeERRVUZET3p0QlFVVkdMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1ZVRkJVeXhQUVVGUExFVkJRVVU3UVVGRE1VUXNVMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRE8wTkJRMjVFTEVOQlFVTTdPMEZCUlVZc1dVRkJXU3hEUVVGRExGTkJRVk1zUTBGQlF5eGhRVUZoTEVkQlFVY3NWVUZCVXl4TFFVRkxMRVZCUVVVN1FVRkRja1FzVFVGQlNTeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwN1RVRkRka0lzV1VGQldTeEhRVUZITEVWQlFVVTdUVUZEYWtJc1NVRkJTU3haUVVGQkxFTkJRVU03TzBGQlJWQXNUMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTTNReXhuUWtGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1IwRkRNME03TzBGQlJVUXNVVUZCVFN4SFFVRkhMRWRCUVVjc1IwRkJSeXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJRenM3UVVGRk4wTXNUVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZka1FzVTBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJRenREUVVOMFJDeERRVUZET3p0QlFVVkdMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zWTBGQll5eEhRVUZITEZWQlFWTXNSVUZCUlN4RlFVRkZPMEZCUTI1RUxFMUJRVWtzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlF6bENMRk5CUVU4c1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVFc1IwRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzBOQlF6bERMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4aFFVRmhMRWRCUVVjc1ZVRkJVeXhOUVVGTkxFVkJRVVU3UVVGRGRFUXNVMEZCVHl4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTTdRMEZEYWtNc1EwRkJRenM3UVVGRlJpeFpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhWUVVGVExFMUJRVTBzUlVGQlJUdEJRVU4wUkN4VFFVRlBMRk5CUVZNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXp0RFFVTjJReXhEUVVGRE96dEJRVVZHTEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhIUVVGSExGVkJRVk1zU1VGQlNTeEZRVUZGTzBGQlEzSkVMRk5CUVU4c1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRPME5CUTNSRExFTkJRVU03TzBGQlJVWXNXVUZCV1N4RFFVRkRMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4WlFVRlhPMEZCUTI1RUxGTkJRVThzVjBGQlZ5eERRVUZETzBOQlEzQkNMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4WFFVRlhMRWRCUVVjc1dVRkJWenRCUVVNNVF5eFRRVUZQTEUxQlFVMHNRMEZCUXp0RFFVTm1MRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1ZVRkJVeXhKUVVGSkxFVkJRVVU3UVVGRE0wTXNUVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXM3VFVGRGNFSXNWMEZCVnl4SFFVRkhMRVZCUVVVc1EwRkJRenM3UVVGRmJrSXNUMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTTFReXhsUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTjZRenM3UVVGRlJDeFRRVUZQTEU5QlFVOHNSMEZCUnl4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0RFFVTXZReXhEUVVGRE8wRkJRMFlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJVeXhKUVVGSkxFVkJRVVU3UVVGREwwTXNVMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dERRVU5xUkN4RFFVRkRJaXdpWm1sc1pTSTZJbkJ5YVc1MFpYSXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCdVpYY3RZMkZ3SUNvdlhHNXBiWEJ2Y25RZ1ZtbHphWFJ2Y2lCbWNtOXRJQ2N1TDNacGMybDBiM0luTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NISnBiblFvWVhOMEtTQjdYRzRnSUhKbGRIVnliaUJ1WlhjZ1VISnBiblJXYVhOcGRHOXlLQ2t1WVdOalpYQjBLR0Z6ZENrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJRY21sdWRGWnBjMmwwYjNJb0tTQjdYRzRnSUhSb2FYTXVjR0ZrWkdsdVp5QTlJREE3WEc1OVhHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVZ1BTQnVaWGNnVm1semFYUnZjaWdwTzF4dVhHNVFjbWx1ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTG5CaFpDQTlJR1oxYm1OMGFXOXVLSE4wY21sdVp5a2dlMXh1SUNCc1pYUWdiM1YwSUQwZ0p5YzdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQjBhR2x6TG5CaFpHUnBibWM3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCdmRYUWdLejBnSnlBZ0p6dGNiaUFnZlZ4dVhHNGdJRzkxZENBclBTQnpkSEpwYm1jZ0t5QW5YRnh1Snp0Y2JpQWdjbVYwZFhKdUlHOTFkRHRjYm4wN1hHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVdVVISnZaM0poYlNBOUlHWjFibU4wYVc5dUtIQnliMmR5WVcwcElIdGNiaUFnYkdWMElHOTFkQ0E5SUNjbkxGeHVJQ0FnSUdKdlpIa2dQU0J3Y205bmNtRnRMbUp2Wkhrc1hHNGdJQ0FnYVN4Y2JpQWdJQ0JzTzF4dVhHNGdJR2xtSUNod2NtOW5jbUZ0TG1Kc2IyTnJVR0Z5WVcxektTQjdYRzRnSUNBZ2JHVjBJR0pzYjJOclVHRnlZVzF6SUQwZ0owSk1UME5MSUZCQlVrRk5Vem9nV3ljN1hHNGdJQ0FnWm05eUlDaHBJRDBnTUN3Z2JDQTlJSEJ5YjJkeVlXMHVZbXh2WTJ0UVlYSmhiWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCaWJHOWphMUJoY21GdGN5QXJQU0FuSUNjZ0t5QndjbTluY21GdExtSnNiMk5yVUdGeVlXMXpXMmxkTzF4dUlDQWdJSDFjYmlBZ0lDQmliRzlqYTFCaGNtRnRjeUFyUFNBbklGMG5PMXh1SUNBZ0lHOTFkQ0FyUFNCMGFHbHpMbkJoWkNoaWJHOWphMUJoY21GdGN5azdYRzRnSUgxY2JseHVJQ0JtYjNJZ0tHa2dQU0F3TENCc0lEMGdZbTlrZVM1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCdmRYUWdLejBnZEdocGN5NWhZMk5sY0hRb1ltOWtlVnRwWFNrN1hHNGdJSDFjYmx4dUlDQjBhR2x6TG5CaFpHUnBibWN0TFR0Y2JseHVJQ0J5WlhSMWNtNGdiM1YwTzF4dWZUdGNibHh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNU5kWE4wWVdOb1pWTjBZWFJsYldWdWRDQTlJR1oxYm1OMGFXOXVLRzExYzNSaFkyaGxLU0I3WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbkJoWkNnbmUzc2dKeUFySUhSb2FYTXVVM1ZpUlhod2NtVnpjMmx2YmlodGRYTjBZV05vWlNrZ0t5QW5JSDE5SnlrN1hHNTlPMXh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNUVaV052Y21GMGIzSWdQU0JtZFc1amRHbHZiaWh0ZFhOMFlXTm9aU2tnZTF4dUlDQnlaWFIxY200Z2RHaHBjeTV3WVdRb0ozdDdJRVJKVWtWRFZFbFdSU0FuSUNzZ2RHaHBjeTVUZFdKRmVIQnlaWE56YVc5dUtHMTFjM1JoWTJobEtTQXJJQ2NnZlgwbktUdGNibjA3WEc1Y2JsQnlhVzUwVm1semFYUnZjaTV3Y205MGIzUjVjR1V1UW14dlkydFRkR0YwWlcxbGJuUWdQU0JRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExrUmxZMjl5WVhSdmNrSnNiMk5ySUQwZ1puVnVZM1JwYjI0b1hHNGdJR0pzYjJOclhHNHBJSHRjYmlBZ2JHVjBJRzkxZENBOUlDY25PMXh1WEc0Z0lHOTFkQ0FyUFNCMGFHbHpMbkJoWkNoY2JpQWdJQ0FvWW14dlkyc3VkSGx3WlNBOVBUMGdKMFJsWTI5eVlYUnZja0pzYjJOckp5QS9JQ2RFU1ZKRlExUkpWa1VnSnlBNklDY25LU0FySUNkQ1RFOURTem9uWEc0Z0lDazdYRzRnSUhSb2FYTXVjR0ZrWkdsdVp5c3JPMXh1SUNCdmRYUWdLejBnZEdocGN5NXdZV1FvZEdocGN5NVRkV0pGZUhCeVpYTnphVzl1S0dKc2IyTnJLU2s3WEc0Z0lHbG1JQ2hpYkc5amF5NXdjbTluY21GdEtTQjdYRzRnSUNBZ2IzVjBJQ3M5SUhSb2FYTXVjR0ZrS0NkUVVrOUhVa0ZOT2ljcE8xeHVJQ0FnSUhSb2FYTXVjR0ZrWkdsdVp5c3JPMXh1SUNBZ0lHOTFkQ0FyUFNCMGFHbHpMbUZqWTJWd2RDaGliRzlqYXk1d2NtOW5jbUZ0S1R0Y2JpQWdJQ0IwYUdsekxuQmhaR1JwYm1jdExUdGNiaUFnZlZ4dUlDQnBaaUFvWW14dlkyc3VhVzUyWlhKelpTa2dlMXh1SUNBZ0lHbG1JQ2hpYkc5amF5NXdjbTluY21GdEtTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CaFpHUnBibWNyS3p0Y2JpQWdJQ0I5WEc0Z0lDQWdiM1YwSUNzOUlIUm9hWE11Y0dGa0tDZDdlMTU5ZlNjcE8xeHVJQ0FnSUhSb2FYTXVjR0ZrWkdsdVp5c3JPMXh1SUNBZ0lHOTFkQ0FyUFNCMGFHbHpMbUZqWTJWd2RDaGliRzlqYXk1cGJuWmxjbk5sS1R0Y2JpQWdJQ0IwYUdsekxuQmhaR1JwYm1jdExUdGNiaUFnSUNCcFppQW9ZbXh2WTJzdWNISnZaM0poYlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3WVdSa2FXNW5MUzA3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSFJvYVhNdWNHRmtaR2x1WnkwdE8xeHVYRzRnSUhKbGRIVnliaUJ2ZFhRN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMbEJoY25ScFlXeFRkR0YwWlcxbGJuUWdQU0JtZFc1amRHbHZiaWh3WVhKMGFXRnNLU0I3WEc0Z0lHeGxkQ0JqYjI1MFpXNTBJRDBnSjFCQlVsUkpRVXc2SnlBcklIQmhjblJwWVd3dWJtRnRaUzV2Y21sbmFXNWhiRHRjYmlBZ2FXWWdLSEJoY25ScFlXd3VjR0Z5WVcxeld6QmRLU0I3WEc0Z0lDQWdZMjl1ZEdWdWRDQXJQU0FuSUNjZ0t5QjBhR2x6TG1GalkyVndkQ2h3WVhKMGFXRnNMbkJoY21GdGMxc3dYU2s3WEc0Z0lIMWNiaUFnYVdZZ0tIQmhjblJwWVd3dWFHRnphQ2tnZTF4dUlDQWdJR052Ym5SbGJuUWdLejBnSnlBbklDc2dkR2hwY3k1aFkyTmxjSFFvY0dGeWRHbGhiQzVvWVhOb0tUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2RHaHBjeTV3WVdRb0ozdDdQaUFuSUNzZ1kyOXVkR1Z1ZENBcklDY2dmWDBuS1R0Y2JuMDdYRzVRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExsQmhjblJwWVd4Q2JHOWphMU4wWVhSbGJXVnVkQ0E5SUdaMWJtTjBhVzl1S0hCaGNuUnBZV3dwSUh0Y2JpQWdiR1YwSUdOdmJuUmxiblFnUFNBblVFRlNWRWxCVENCQ1RFOURTem9uSUNzZ2NHRnlkR2xoYkM1dVlXMWxMbTl5YVdkcGJtRnNPMXh1SUNCcFppQW9jR0Z5ZEdsaGJDNXdZWEpoYlhOYk1GMHBJSHRjYmlBZ0lDQmpiMjUwWlc1MElDczlJQ2NnSnlBcklIUm9hWE11WVdOalpYQjBLSEJoY25ScFlXd3VjR0Z5WVcxeld6QmRLVHRjYmlBZ2ZWeHVJQ0JwWmlBb2NHRnlkR2xoYkM1b1lYTm9LU0I3WEc0Z0lDQWdZMjl1ZEdWdWRDQXJQU0FuSUNjZ0t5QjBhR2x6TG1GalkyVndkQ2h3WVhKMGFXRnNMbWhoYzJncE8xeHVJQ0I5WEc1Y2JpQWdZMjl1ZEdWdWRDQXJQU0FuSUNjZ0t5QjBhR2x6TG5CaFpDZ25VRkpQUjFKQlRUb25LVHRjYmlBZ2RHaHBjeTV3WVdSa2FXNW5LeXM3WEc0Z0lHTnZiblJsYm5RZ0t6MGdkR2hwY3k1aFkyTmxjSFFvY0dGeWRHbGhiQzV3Y205bmNtRnRLVHRjYmlBZ2RHaHBjeTV3WVdSa2FXNW5MUzA3WEc1Y2JpQWdjbVYwZFhKdUlIUm9hWE11Y0dGa0tDZDdlejRnSnlBcklHTnZiblJsYm5RZ0t5QW5JSDE5SnlrN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMa052Ym5SbGJuUlRkR0YwWlcxbGJuUWdQU0JtZFc1amRHbHZiaWhqYjI1MFpXNTBLU0I3WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbkJoWkNoY0lrTlBUbFJGVGxSYklDZGNJaUFySUdOdmJuUmxiblF1ZG1Gc2RXVWdLeUJjSWljZ1hWd2lLVHRjYm4wN1hHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVdVEyOXRiV1Z1ZEZOMFlYUmxiV1Z1ZENBOUlHWjFibU4wYVc5dUtHTnZiVzFsYm5RcElIdGNiaUFnY21WMGRYSnVJSFJvYVhNdWNHRmtLRndpZTNzaElDZGNJaUFySUdOdmJXMWxiblF1ZG1Gc2RXVWdLeUJjSWljZ2ZYMWNJaWs3WEc1OU8xeHVYRzVRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExsTjFZa1Y0Y0hKbGMzTnBiMjRnUFNCbWRXNWpkR2x2YmloelpYaHdjaWtnZTF4dUlDQnNaWFFnY0dGeVlXMXpJRDBnYzJWNGNISXVjR0Z5WVcxekxGeHVJQ0FnSUhCaGNtRnRVM1J5YVc1bmN5QTlJRnRkTEZ4dUlDQWdJR2hoYzJnN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3dnUFNCd1lYSmhiWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnY0dGeVlXMVRkSEpwYm1kekxuQjFjMmdvZEdocGN5NWhZMk5sY0hRb2NHRnlZVzF6VzJsZEtTazdYRzRnSUgxY2JseHVJQ0J3WVhKaGJYTWdQU0FuV3ljZ0t5QndZWEpoYlZOMGNtbHVaM011YW05cGJpZ25MQ0FuS1NBcklDZGRKenRjYmx4dUlDQm9ZWE5vSUQwZ2MyVjRjSEl1YUdGemFDQS9JQ2NnSnlBcklIUm9hWE11WVdOalpYQjBLSE5sZUhCeUxtaGhjMmdwSURvZ0p5YzdYRzVjYmlBZ2NtVjBkWEp1SUhSb2FYTXVZV05qWlhCMEtITmxlSEJ5TG5CaGRHZ3BJQ3NnSnlBbklDc2djR0Z5WVcxeklDc2dhR0Z6YUR0Y2JuMDdYRzVjYmxCeWFXNTBWbWx6YVhSdmNpNXdjbTkwYjNSNWNHVXVVR0YwYUVWNGNISmxjM05wYjI0Z1BTQm1kVzVqZEdsdmJpaHBaQ2tnZTF4dUlDQnNaWFFnY0dGMGFDQTlJR2xrTG5CaGNuUnpMbXB2YVc0b0p5OG5LVHRjYmlBZ2NtVjBkWEp1SUNocFpDNWtZWFJoSUQ4Z0owQW5JRG9nSnljcElDc2dKMUJCVkVnNkp5QXJJSEJoZEdnN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMbE4wY21sdVoweHBkR1Z5WVd3Z1BTQm1kVzVqZEdsdmJpaHpkSEpwYm1jcElIdGNiaUFnY21WMGRYSnVJQ2RjSWljZ0t5QnpkSEpwYm1jdWRtRnNkV1VnS3lBblhDSW5PMXh1ZlR0Y2JseHVVSEpwYm5SV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlM1T2RXMWlaWEpNYVhSbGNtRnNJRDBnWm5WdVkzUnBiMjRvYm5WdFltVnlLU0I3WEc0Z0lISmxkSFZ5YmlBblRsVk5Ra1ZTZXljZ0t5QnVkVzFpWlhJdWRtRnNkV1VnS3lBbmZTYzdYRzU5TzF4dVhHNVFjbWx1ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTGtKdmIyeGxZVzVNYVhSbGNtRnNJRDBnWm5WdVkzUnBiMjRvWW05dmJDa2dlMXh1SUNCeVpYUjFjbTRnSjBKUFQweEZRVTU3SnlBcklHSnZiMnd1ZG1Gc2RXVWdLeUFuZlNjN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMbFZ1WkdWbWFXNWxaRXhwZEdWeVlXd2dQU0JtZFc1amRHbHZiaWdwSUh0Y2JpQWdjbVYwZFhKdUlDZFZUa1JGUmtsT1JVUW5PMXh1ZlR0Y2JseHVVSEpwYm5SV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlM1T2RXeHNUR2wwWlhKaGJDQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQnlaWFIxY200Z0owNVZURXduTzF4dWZUdGNibHh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNUlZWE5vSUQwZ1puVnVZM1JwYjI0b2FHRnphQ2tnZTF4dUlDQnNaWFFnY0dGcGNuTWdQU0JvWVhOb0xuQmhhWEp6TEZ4dUlDQWdJR3B2YVc1bFpGQmhhWEp6SUQwZ1cxMDdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQndZV2x5Y3k1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCcWIybHVaV1JRWVdseWN5NXdkWE5vS0hSb2FYTXVZV05qWlhCMEtIQmhhWEp6VzJsZEtTazdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdKMGhCVTBoN0p5QXJJR3B2YVc1bFpGQmhhWEp6TG1wdmFXNG9KeXdnSnlrZ0t5QW5mU2M3WEc1OU8xeHVVSEpwYm5SV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlM1SVlYTm9VR0ZwY2lBOUlHWjFibU4wYVc5dUtIQmhhWElwSUh0Y2JpQWdjbVYwZFhKdUlIQmhhWEl1YTJWNUlDc2dKejBuSUNzZ2RHaHBjeTVoWTJObGNIUW9jR0ZwY2k1MllXeDFaU2s3WEc1OU8xeHVMeW9nWlhOc2FXNTBMV1Z1WVdKc1pTQnVaWGN0WTJGd0lDb3ZYRzRpWFgwPVxuIiwiLy8gVVNBR0U6XG4vLyB2YXIgaGFuZGxlYmFycyA9IHJlcXVpcmUoJ2hhbmRsZWJhcnMnKTtcbi8qIGVzbGludC1kaXNhYmxlIG5vLXZhciAqL1xuXG4vLyB2YXIgbG9jYWwgPSBoYW5kbGViYXJzLmNyZWF0ZSgpO1xuXG52YXIgaGFuZGxlYmFycyA9IHJlcXVpcmUoJy4uL2Rpc3QvY2pzL2hhbmRsZWJhcnMnKVsnZGVmYXVsdCddO1xuXG52YXIgcHJpbnRlciA9IHJlcXVpcmUoJy4uL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvcHJpbnRlcicpO1xuaGFuZGxlYmFycy5QcmludFZpc2l0b3IgPSBwcmludGVyLlByaW50VmlzaXRvcjtcbmhhbmRsZWJhcnMucHJpbnQgPSBwcmludGVyLnByaW50O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZWJhcnM7XG5cbi8vIFB1Ymxpc2ggYSBOb2RlLmpzIHJlcXVpcmUoKSBoYW5kbGVyIGZvciAuaGFuZGxlYmFycyBhbmQgLmhicyBmaWxlc1xuZnVuY3Rpb24gZXh0ZW5zaW9uKG1vZHVsZSwgZmlsZW5hbWUpIHtcbiAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdmFyIHRlbXBsYXRlU3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCAndXRmOCcpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGhhbmRsZWJhcnMuY29tcGlsZSh0ZW1wbGF0ZVN0cmluZyk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuaWYgKHR5cGVvZiByZXF1aXJlICE9PSAndW5kZWZpbmVkJyAmJiByZXF1aXJlLmV4dGVuc2lvbnMpIHtcbiAgcmVxdWlyZS5leHRlbnNpb25zWycuaGFuZGxlYmFycyddID0gZXh0ZW5zaW9uO1xuICByZXF1aXJlLmV4dGVuc2lvbnNbJy5oYnMnXSA9IGV4dGVuc2lvbjtcbn1cbiIsIi8qKlxuICogRGVmaW5lcyBhbiBldmVudCBtYW5hZ2VyIGZvciB0aGUgY2l0YXRpb25zIHBsdWdpbi5cbiAqL1xuXG5pbXBvcnQgeyBFdmVudHMsIEV2ZW50UmVmIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaXRhdGlvbkV2ZW50cyBleHRlbmRzIEV2ZW50cyB7XG4gIG9uKG5hbWU6ICdsaWJyYXJ5LWxvYWQtc3RhcnQnLCBjYWxsYmFjazogKCkgPT4gYW55LCBjdHg/OiBhbnkpOiBFdmVudFJlZjtcbiAgb24obmFtZTogJ2xpYnJhcnktbG9hZC1jb21wbGV0ZScsIGNhbGxiYWNrOiAoKSA9PiBhbnksIGN0eD86IGFueSk6IEV2ZW50UmVmO1xuICBvbihuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoLi4uZGF0YTogYW55W10pID0+IGFueSwgY3R4PzogYW55KTogRXZlbnRSZWYge1xuICAgIHJldHVybiBzdXBlci5vbihuYW1lLCBjYWxsYmFjaywgY3R4KTtcbiAgfVxuXG4gIHRyaWdnZXIobmFtZTogJ2xpYnJhcnktbG9hZC1zdGFydCcpOiB2b2lkO1xuICB0cmlnZ2VyKG5hbWU6ICdsaWJyYXJ5LWxvYWQtY29tcGxldGUnKTogdm9pZDtcbiAgdHJpZ2dlcihuYW1lOiBzdHJpbmcsIC4uLmRhdGE6IGFueVtdKTogdm9pZCB7XG4gICAgc3VwZXIudHJpZ2dlcihuYW1lLCBkYXRhKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQXBwLFxuICBFdmVudFJlZixcbiAgRnV6enlNYXRjaCxcbiAgRnV6enlTdWdnZXN0TW9kYWwsXG4gIE5vdGljZSxcbiAgcmVuZGVyTWF0Y2hlcyxcbiAgU2VhcmNoTWF0Y2hlcyxcbiAgU2VhcmNoTWF0Y2hQYXJ0LFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgQ2l0YXRpb25QbHVnaW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCB7IEVudHJ5IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFN0dWIgc29tZSBtZXRob2RzIHdlIGtub3cgYXJlIHRoZXJlLi5cbmludGVyZmFjZSBGdXp6eVN1Z2dlc3RNb2RhbEV4dDxUPiBleHRlbmRzIEZ1enp5U3VnZ2VzdE1vZGFsPFQ+IHtcbiAgY2hvb3NlcjogQ2hvb3NlckV4dDtcbn1cbmludGVyZmFjZSBDaG9vc2VyRXh0IHtcbiAgdXNlU2VsZWN0ZWRJdGVtKGV2dDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xufVxuXG5jbGFzcyBTZWFyY2hNb2RhbCBleHRlbmRzIEZ1enp5U3VnZ2VzdE1vZGFsPEVudHJ5PiB7XG4gIHBsdWdpbjogQ2l0YXRpb25QbHVnaW47XG4gIGxpbWl0ID0gNTA7XG5cbiAgbG9hZGluZ0VsOiBIVE1MRWxlbWVudDtcblxuICBldmVudFJlZnM6IEV2ZW50UmVmW107XG5cbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQ2l0YXRpb25QbHVnaW4pIHtcbiAgICBzdXBlcihhcHApO1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXG4gICAgdGhpcy5yZXN1bHRDb250YWluZXJFbC5hZGRDbGFzcygnem90ZXJvTW9kYWxSZXN1bHRzJyk7XG5cbiAgICB0aGlzLmlucHV0RWwuc2V0QXR0cmlidXRlKCdzcGVsbGNoZWNrJywgJ2ZhbHNlJyk7XG5cbiAgICB0aGlzLmxvYWRpbmdFbCA9IHRoaXMucmVzdWx0Q29udGFpbmVyRWwucGFyZW50RWxlbWVudC5jcmVhdGVFbCgnZGl2Jywge1xuICAgICAgY2xzOiAnem90ZXJvTW9kYWxMb2FkaW5nJyxcbiAgICB9KTtcbiAgICB0aGlzLmxvYWRpbmdFbC5jcmVhdGVFbCgnZGl2JywgeyBjbHM6ICd6b3Rlcm9Nb2RhbExvYWRpbmdBbmltYXRpb24nIH0pO1xuICAgIHRoaXMubG9hZGluZ0VsLmNyZWF0ZUVsKCdwJywge1xuICAgICAgdGV4dDogJ0xvYWRpbmcgY2l0YXRpb24gZGF0YWJhc2UuIFBsZWFzZSB3YWl0Li4uJyxcbiAgICB9KTtcbiAgfVxuXG4gIG9uT3BlbigpIHtcbiAgICBzdXBlci5vbk9wZW4oKTtcblxuICAgIHRoaXMuZXZlbnRSZWZzID0gW1xuICAgICAgdGhpcy5wbHVnaW4uZXZlbnRzLm9uKCdsaWJyYXJ5LWxvYWQtc3RhcnQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnBsdWdpbi5ldmVudHMub24oJ2xpYnJhcnktbG9hZC1jb21wbGV0ZScsICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICB0aGlzLnNldExvYWRpbmcodGhpcy5wbHVnaW4uaXNMaWJyYXJ5TG9hZGluZyk7XG5cbiAgICAvLyBEb24ndCBpbW1lZGlhdGVseSByZWdpc3RlciBrZXlldmVudCBsaXN0ZW5lcnMuIElmIHRoZSBtb2RhbCB3YXMgdHJpZ2dlcmVkXG4gICAgLy8gYnkgYW4gXCJFbnRlclwiIGtleXN0cm9rZSAoZS5nLiB2aWEgdGhlIE9ic2lkaWFuIGNvbW1hbmQgZGlhbG9nKSwgdGhpcyBldmVudFxuICAgIC8vIHdpbGwgYmUgcmVjZWl2ZWQgaGVyZSBlcnJvbmVvdXNseS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2KSA9PiB0aGlzLm9uSW5wdXRLZXlkb3duKGV2KSk7XG4gICAgICB0aGlzLmlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXYpID0+IHRoaXMub25JbnB1dEtleXVwKGV2KSk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5ldmVudFJlZnM/LmZvckVhY2goKGUpID0+IHRoaXMucGx1Z2luLmV2ZW50cy5vZmZyZWYoZSkpO1xuICB9XG5cbiAgZ2V0SXRlbXMoKTogRW50cnlbXSB7XG4gICAgaWYgKHRoaXMucGx1Z2luLmlzTGlicmFyeUxvYWRpbmcpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnBsdWdpbi5saWJyYXJ5LmVudHJpZXMpO1xuICB9XG5cbiAgZ2V0SXRlbVRleHQoaXRlbTogRW50cnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtpdGVtLnRpdGxlfSAke2l0ZW0uYXV0aG9yU3RyaW5nfSAke2l0ZW0ueWVhcn1gO1xuICB9XG5cbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIHRoaXMubG9hZGluZ0VsLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTtcbiAgICAgIHRoaXMuaW5wdXRFbC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLnJlc3VsdENvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZGluZ0VsLmFkZENsYXNzKCdkLW5vbmUnKTtcbiAgICAgIHRoaXMuaW5wdXRFbC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnB1dEVsLmZvY3VzKCk7XG5cbiAgICAgIC8vIEB0cy1pZ25vcmU6IG5vdCBleHBvc2VkIGluIEFQSS5cbiAgICAgIHRoaXMudXBkYXRlU3VnZ2VzdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIG9uQ2hvb3NlSXRlbShpdGVtOiBFbnRyeSwgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLm9wZW5MaXRlcmF0dXJlTm90ZShpdGVtLmlkLCBmYWxzZSkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gIH1cblxuICByZW5kZXJTdWdnZXN0aW9uKG1hdGNoOiBGdXp6eU1hdGNoPEVudHJ5PiwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgZWwuZW1wdHkoKTtcbiAgICBjb25zdCBlbnRyeSA9IG1hdGNoLml0ZW07XG4gICAgY29uc3QgZW50cnlUaXRsZSA9IGVudHJ5LnRpdGxlIHx8ICcnO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZWwuY3JlYXRlRWwoJ2RpdicsIHsgY2xzOiAnem90ZXJvUmVzdWx0JyB9KTtcbiAgICBjb25zdCB0aXRsZUVsID0gY29udGFpbmVyLmNyZWF0ZUVsKCdzcGFuJywge1xuICAgICAgY2xzOiAnem90ZXJvVGl0bGUnLFxuICAgIH0pO1xuICAgIGNvbnRhaW5lci5jcmVhdGVFbCgnc3BhbicsIHsgY2xzOiAnem90ZXJvQ2l0ZWtleScsIHRleHQ6IGVudHJ5LmlkIH0pO1xuXG4gICAgY29uc3QgYXV0aG9yc0NscyA9IGVudHJ5LmF1dGhvclN0cmluZ1xuICAgICAgPyAnem90ZXJvQXV0aG9ycydcbiAgICAgIDogJ3pvdGVyb0F1dGhvcnMgem90ZXJvQXV0aG9yc0VtcHR5JztcbiAgICBjb25zdCBhdXRob3JzRWwgPSBjb250YWluZXIuY3JlYXRlRWwoJ3NwYW4nLCB7XG4gICAgICBjbHM6IGF1dGhvcnNDbHMsXG4gICAgfSk7XG5cbiAgICAvLyBQcmVwYXJlIHRvIGhpZ2hsaWdodCBzdHJpbmcgbWF0Y2hlcyBmb3IgZWFjaCBwYXJ0IG9mIHRoZSBzZWFyY2ggaXRlbS5cbiAgICAvLyBDb21wdXRlIG9mZnNldHMgb2YgZWFjaCByZW5kZXJlZCBlbGVtZW50J3MgY29udGVudCB3aXRoaW4gdGhlIHN0cmluZ1xuICAgIC8vIHJldHVybmVkIGJ5IGBnZXRJdGVtVGV4dGAuXG4gICAgY29uc3QgYWxsTWF0Y2hlcyA9IG1hdGNoLm1hdGNoLm1hdGNoZXM7XG4gICAgY29uc3QgYXV0aG9yU3RyaW5nT2Zmc2V0ID0gMSArIGVudHJ5VGl0bGUubGVuZ3RoO1xuXG4gICAgLy8gRmlsdGVyIGEgbWF0Y2ggbGlzdCB0byBjb250YWluIG9ubHkgdGhlIHJlbGV2YW50IG1hdGNoZXMgZm9yIGEgZ2l2ZW5cbiAgICAvLyBzdWJzdHJpbmcsIGFuZCB3aXRoIG1hdGNoIGluZGljZXMgc2hpZnRlZCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhhdFxuICAgIC8vIHN1YnN0cmluZ1xuICAgIGNvbnN0IHNoaWZ0TWF0Y2hlcyA9IChcbiAgICAgIG1hdGNoZXM6IFNlYXJjaE1hdGNoZXMsXG4gICAgICBzdGFydDogbnVtYmVyLFxuICAgICAgZW5kOiBudW1iZXIsXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gbWF0Y2hlc1xuICAgICAgICAubWFwKChtYXRjaDogU2VhcmNoTWF0Y2hQYXJ0KSA9PiB7XG4gICAgICAgICAgY29uc3QgW21hdGNoU3RhcnQsIG1hdGNoRW5kXSA9IG1hdGNoO1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBtYXRjaFN0YXJ0IC0gc3RhcnQsXG4gICAgICAgICAgICBNYXRoLm1pbihtYXRjaEVuZCAtIHN0YXJ0LCBlbmQpLFxuICAgICAgICAgIF0gYXMgU2VhcmNoTWF0Y2hQYXJ0O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChtYXRjaDogU2VhcmNoTWF0Y2hQYXJ0KSA9PiB7XG4gICAgICAgICAgY29uc3QgW21hdGNoU3RhcnQsIG1hdGNoRW5kXSA9IG1hdGNoO1xuICAgICAgICAgIHJldHVybiBtYXRjaFN0YXJ0ID49IDA7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyBOb3cgaGlnaGxpZ2h0IG1hdGNoZWQgc3RyaW5ncyB3aXRoaW4gZWFjaCBlbGVtZW50XG4gICAgcmVuZGVyTWF0Y2hlcyhcbiAgICAgIHRpdGxlRWwsXG4gICAgICBlbnRyeVRpdGxlLFxuICAgICAgc2hpZnRNYXRjaGVzKGFsbE1hdGNoZXMsIDAsIGVudHJ5VGl0bGUubGVuZ3RoKSxcbiAgICApO1xuICAgIGlmIChlbnRyeS5hdXRob3JTdHJpbmcpIHtcbiAgICAgIHJlbmRlck1hdGNoZXMoXG4gICAgICAgIGF1dGhvcnNFbCxcbiAgICAgICAgZW50cnkuYXV0aG9yU3RyaW5nLFxuICAgICAgICBzaGlmdE1hdGNoZXMoXG4gICAgICAgICAgYWxsTWF0Y2hlcyxcbiAgICAgICAgICBhdXRob3JTdHJpbmdPZmZzZXQsXG4gICAgICAgICAgYXV0aG9yU3RyaW5nT2Zmc2V0ICsgZW50cnkuYXV0aG9yU3RyaW5nLmxlbmd0aCxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dEtleWRvd24oZXY6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXYua2V5ID09ICdUYWInKSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRLZXl1cChldjogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldi5rZXkgPT0gJ0VudGVyJyB8fCBldi5rZXkgPT0gJ1RhYicpIHtcbiAgICAgICgodGhpcyBhcyB1bmtub3duKSBhcyBGdXp6eVN1Z2dlc3RNb2RhbEV4dDxFbnRyeT4pLmNob29zZXIudXNlU2VsZWN0ZWRJdGVtKFxuICAgICAgICBldixcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVuTm90ZU1vZGFsIGV4dGVuZHMgU2VhcmNoTW9kYWwge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBDaXRhdGlvblBsdWdpbikge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcblxuICAgIHRoaXMuc2V0SW5zdHJ1Y3Rpb25zKFtcbiAgICAgIHsgY29tbWFuZDogJ+KGkeKGkycsIHB1cnBvc2U6ICd0byBuYXZpZ2F0ZScgfSxcbiAgICAgIHsgY29tbWFuZDogJ+KGtScsIHB1cnBvc2U6ICd0byBvcGVuIGxpdGVyYXR1cmUgbm90ZScgfSxcbiAgICAgIHsgY29tbWFuZDogJ2N0cmwg4oa1JywgcHVycG9zZTogJ3RvIG9wZW4gbGl0ZXJhdHVyZSBub3RlIGluIGEgbmV3IHBhbmUnIH0sXG4gICAgICB7IGNvbW1hbmQ6ICd0YWInLCBwdXJwb3NlOiAnb3BlbiBpbiBab3Rlcm8nIH0sXG4gICAgICB7IGNvbW1hbmQ6ICdzaGlmdCB0YWInLCBwdXJwb3NlOiAnb3BlbiBQREYnIH0sXG4gICAgICB7IGNvbW1hbmQ6ICdlc2MnLCBwdXJwb3NlOiAndG8gZGlzbWlzcycgfSxcbiAgICBdKTtcbiAgfVxuXG4gIG9uQ2hvb3NlSXRlbShpdGVtOiBFbnRyeSwgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50IHx8IGV2dC5rZXkgPT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgbmV3UGFuZSA9XG4gICAgICAgIGV2dCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiYgKGV2dCBhcyBLZXlib2FyZEV2ZW50KS5jdHJsS2V5O1xuICAgICAgdGhpcy5wbHVnaW4ub3BlbkxpdGVyYXR1cmVOb3RlKGl0ZW0uaWQsIG5ld1BhbmUpO1xuICAgIH0gZWxzZSBpZiAoZXZ0LmtleSA9PSAnVGFiJykge1xuICAgICAgaWYgKGV2dC5zaGlmdEtleSkge1xuICAgICAgICBjb25zdCBmaWxlcyA9IGl0ZW0uZmlsZXMgfHwgW107XG4gICAgICAgIGNvbnN0IHBkZlBhdGhzID0gZmlsZXMuZmlsdGVyKChwYXRoKSA9PlxuICAgICAgICAgIHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgncGRmJyksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChwZGZQYXRocy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoJ1RoaXMgcmVmZXJlbmNlIGhhcyBubyBhc3NvY2lhdGVkIFBERiBmaWxlcy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcGVuKGBmaWxlOi8vJHtwZGZQYXRoc1swXX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3BlbihpdGVtLnpvdGVyb1NlbGVjdFVSSSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnNlcnROb3RlTGlua01vZGFsIGV4dGVuZHMgU2VhcmNoTW9kYWwge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBDaXRhdGlvblBsdWdpbikge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcblxuICAgIHRoaXMuc2V0SW5zdHJ1Y3Rpb25zKFtcbiAgICAgIHsgY29tbWFuZDogJ+KGkeKGkycsIHB1cnBvc2U6ICd0byBuYXZpZ2F0ZScgfSxcbiAgICAgIHsgY29tbWFuZDogJ+KGtScsIHB1cnBvc2U6ICd0byBpbnNlcnQgbGl0ZXJhdHVyZSBub3RlIHJlZmVyZW5jZScgfSxcbiAgICAgIHsgY29tbWFuZDogJ2VzYycsIHB1cnBvc2U6ICd0byBkaXNtaXNzJyB9LFxuICAgIF0pO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBvbkNob29zZUl0ZW0oaXRlbTogRW50cnksIGV2dDogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLmluc2VydExpdGVyYXR1cmVOb3RlTGluayhpdGVtLmlkKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5zZXJ0Tm90ZUNvbnRlbnRNb2RhbCBleHRlbmRzIFNlYXJjaE1vZGFsIHtcbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQ2l0YXRpb25QbHVnaW4pIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG5cbiAgICB0aGlzLnNldEluc3RydWN0aW9ucyhbXG4gICAgICB7IGNvbW1hbmQ6ICfihpHihpMnLCBwdXJwb3NlOiAndG8gbmF2aWdhdGUnIH0sXG4gICAgICB7XG4gICAgICAgIGNvbW1hbmQ6ICfihrUnLFxuICAgICAgICBwdXJwb3NlOiAndG8gaW5zZXJ0IGxpdGVyYXR1cmUgbm90ZSBjb250ZW50IGluIGFjdGl2ZSBwYW5lJyxcbiAgICAgIH0sXG4gICAgICB7IGNvbW1hbmQ6ICdlc2MnLCBwdXJwb3NlOiAndG8gZGlzbWlzcycgfSxcbiAgICBdKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgb25DaG9vc2VJdGVtKGl0ZW06IEVudHJ5LCBldnQ6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbi5pbnNlcnRMaXRlcmF0dXJlTm90ZUNvbnRlbnQoaXRlbS5pZCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluc2VydENpdGF0aW9uTW9kYWwgZXh0ZW5kcyBTZWFyY2hNb2RhbCB7XG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IENpdGF0aW9uUGx1Z2luKSB7XG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xuXG4gICAgdGhpcy5zZXRJbnN0cnVjdGlvbnMoW1xuICAgICAgeyBjb21tYW5kOiAn4oaR4oaTJywgcHVycG9zZTogJ3RvIG5hdmlnYXRlJyB9LFxuICAgICAgeyBjb21tYW5kOiAn4oa1JywgcHVycG9zZTogJ3RvIGluc2VydCBNYXJrZG93biBjaXRhdGlvbicgfSxcbiAgICAgIHsgY29tbWFuZDogJ3NoaWZ0IOKGtScsIHB1cnBvc2U6ICd0byBpbnNlcnQgc2Vjb25kYXJ5IE1hcmtkb3duIGNpdGF0aW9uJyB9LFxuICAgICAgeyBjb21tYW5kOiAnZXNjJywgcHVycG9zZTogJ3RvIGRpc21pc3MnIH0sXG4gICAgXSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIG9uQ2hvb3NlSXRlbShpdGVtOiBFbnRyeSwgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlzQWx0ZXJuYXRpdmUgPSBldnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50ICYmIGV2dC5zaGlmdEtleTtcbiAgICB0aGlzLnBsdWdpblxuICAgICAgLmluc2VydE1hcmtkb3duQ2l0YXRpb24oaXRlbS5pZCwgaXNBbHRlcm5hdGl2ZSlcbiAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxufVxuIiwiLypcbiAqIEdlbmVyYXRlZCBieSBQRUcuanMgMC4xMC4wLlxuICpcbiAqIGh0dHA6Ly9wZWdqcy5vcmcvXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIHBlZyRzdWJjbGFzcyhjaGlsZCwgcGFyZW50KSB7XG4gIGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfVxuICBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7XG4gIGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7XG59XG5cbmZ1bmN0aW9uIHBlZyRTeW50YXhFcnJvcihtZXNzYWdlLCBleHBlY3RlZCwgZm91bmQsIGxvY2F0aW9uKSB7XG4gIHRoaXMubWVzc2FnZSAgPSBtZXNzYWdlO1xuICB0aGlzLmV4cGVjdGVkID0gZXhwZWN0ZWQ7XG4gIHRoaXMuZm91bmQgICAgPSBmb3VuZDtcbiAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICB0aGlzLm5hbWUgICAgID0gXCJTeW50YXhFcnJvclwiO1xuXG4gIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHBlZyRTeW50YXhFcnJvcik7XG4gIH1cbn1cblxucGVnJHN1YmNsYXNzKHBlZyRTeW50YXhFcnJvciwgRXJyb3IpO1xuXG5wZWckU3ludGF4RXJyb3IuYnVpbGRNZXNzYWdlID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kKSB7XG4gIHZhciBERVNDUklCRV9FWFBFQ1RBVElPTl9GTlMgPSB7XG4gICAgICAgIGxpdGVyYWw6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiXFxcIlwiICsgbGl0ZXJhbEVzY2FwZShleHBlY3RhdGlvbi50ZXh0KSArIFwiXFxcIlwiO1xuICAgICAgICB9LFxuXG4gICAgICAgIFwiY2xhc3NcIjogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICB2YXIgZXNjYXBlZFBhcnRzID0gXCJcIixcbiAgICAgICAgICAgICAgaTtcblxuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBleHBlY3RhdGlvbi5wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZXNjYXBlZFBhcnRzICs9IGV4cGVjdGF0aW9uLnBhcnRzW2ldIGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICAgICAgICAgPyBjbGFzc0VzY2FwZShleHBlY3RhdGlvbi5wYXJ0c1tpXVswXSkgKyBcIi1cIiArIGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldWzFdKVxuICAgICAgICAgICAgICA6IGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gXCJbXCIgKyAoZXhwZWN0YXRpb24uaW52ZXJ0ZWQgPyBcIl5cIiA6IFwiXCIpICsgZXNjYXBlZFBhcnRzICsgXCJdXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYW55OiBmdW5jdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgIHJldHVybiBcImFueSBjaGFyYWN0ZXJcIjtcbiAgICAgICAgfSxcblxuICAgICAgICBlbmQ6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiZW5kIG9mIGlucHV0XCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3RoZXI6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uLmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gIGZ1bmN0aW9uIGhleChjaCkge1xuICAgIHJldHVybiBjaC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGl0ZXJhbEVzY2FwZShzKSB7XG4gICAgcmV0dXJuIHNcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpXG4gICAgICAucmVwbGFjZSgvXCIvZywgICdcXFxcXCInKVxuICAgICAgLnJlcGxhY2UoL1xcMC9nLCAnXFxcXDAnKVxuICAgICAgLnJlcGxhY2UoL1xcdC9nLCAnXFxcXHQnKVxuICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKVxuICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgICAgICAgICAgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceDAnICsgaGV4KGNoKTsgfSlcbiAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceCcgICsgaGV4KGNoKTsgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBjbGFzc0VzY2FwZShzKSB7XG4gICAgcmV0dXJuIHNcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpXG4gICAgICAucmVwbGFjZSgvXFxdL2csICdcXFxcXScpXG4gICAgICAucmVwbGFjZSgvXFxeL2csICdcXFxcXicpXG4gICAgICAucmVwbGFjZSgvLS9nLCAgJ1xcXFwtJylcbiAgICAgIC5yZXBsYWNlKC9cXDAvZywgJ1xcXFwwJylcbiAgICAgIC5yZXBsYWNlKC9cXHQvZywgJ1xcXFx0JylcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJylcbiAgICAgIC5yZXBsYWNlKC9cXHIvZywgJ1xcXFxyJylcbiAgICAgIC5yZXBsYWNlKC9bXFx4MDAtXFx4MEZdL2csICAgICAgICAgIGZ1bmN0aW9uKGNoKSB7IHJldHVybiAnXFxcXHgwJyArIGhleChjaCk7IH0pXG4gICAgICAucmVwbGFjZSgvW1xceDEwLVxceDFGXFx4N0YtXFx4OUZdL2csIGZ1bmN0aW9uKGNoKSB7IHJldHVybiAnXFxcXHgnICArIGhleChjaCk7IH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVFeHBlY3RhdGlvbihleHBlY3RhdGlvbikge1xuICAgIHJldHVybiBERVNDUklCRV9FWFBFQ1RBVElPTl9GTlNbZXhwZWN0YXRpb24udHlwZV0oZXhwZWN0YXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkge1xuICAgIHZhciBkZXNjcmlwdGlvbnMgPSBuZXcgQXJyYXkoZXhwZWN0ZWQubGVuZ3RoKSxcbiAgICAgICAgaSwgajtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzY3JpcHRpb25zW2ldID0gZGVzY3JpYmVFeHBlY3RhdGlvbihleHBlY3RlZFtpXSk7XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb25zLnNvcnQoKTtcblxuICAgIGlmIChkZXNjcmlwdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChpID0gMSwgaiA9IDE7IGkgPCBkZXNjcmlwdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uc1tpIC0gMV0gIT09IGRlc2NyaXB0aW9uc1tpXSkge1xuICAgICAgICAgIGRlc2NyaXB0aW9uc1tqXSA9IGRlc2NyaXB0aW9uc1tpXTtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlc2NyaXB0aW9ucy5sZW5ndGggPSBqO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZGVzY3JpcHRpb25zLmxlbmd0aCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zWzBdO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF0gKyBcIiBvciBcIiArIGRlc2NyaXB0aW9uc1sxXTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9ucy5zbGljZSgwLCAtMSkuam9pbihcIiwgXCIpXG4gICAgICAgICAgKyBcIiwgb3IgXCJcbiAgICAgICAgICArIGRlc2NyaXB0aW9uc1tkZXNjcmlwdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVGb3VuZChmb3VuZCkge1xuICAgIHJldHVybiBmb3VuZCA/IFwiXFxcIlwiICsgbGl0ZXJhbEVzY2FwZShmb3VuZCkgKyBcIlxcXCJcIiA6IFwiZW5kIG9mIGlucHV0XCI7XG4gIH1cblxuICByZXR1cm4gXCJFeHBlY3RlZCBcIiArIGRlc2NyaWJlRXhwZWN0ZWQoZXhwZWN0ZWQpICsgXCIgYnV0IFwiICsgZGVzY3JpYmVGb3VuZChmb3VuZCkgKyBcIiBmb3VuZC5cIjtcbn07XG5cbmZ1bmN0aW9uIHBlZyRwYXJzZShpbnB1dCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyAhPT0gdm9pZCAwID8gb3B0aW9ucyA6IHt9O1xuXG4gIHZhciBwZWckRkFJTEVEID0ge30sXG5cbiAgICAgIHBlZyRzdGFydFJ1bGVGdW5jdGlvbnMgPSB7IEJpYmxpb2dyYXBoeTogcGVnJHBhcnNlQmlibGlvZ3JhcGh5IH0sXG4gICAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gID0gcGVnJHBhcnNlQmlibGlvZ3JhcGh5LFxuXG4gICAgICBwZWckYzAgPSBmdW5jdGlvbihyKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdCaWJsaW9ncmFwaHknLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjaGlsZHJlbjogcixcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEgPSBcIkBcIixcbiAgICAgIHBlZyRjMiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJAXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMyA9IFwiY29tbWVudFwiLFxuICAgICAgcGVnJGM0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcImNvbW1lbnRcIiwgdHJ1ZSksXG4gICAgICBwZWckYzUgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdCcmFjZWRDb21tZW50JyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYuc2xpY2UoMSwgLTEpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNiA9IC9eW15cXG5cXHJdLyxcbiAgICAgIHBlZyRjNyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcblwiLCBcIlxcclwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGM4ID0gL15bXFxuXFxyXS8sXG4gICAgICBwZWckYzkgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJcXG5cIiwgXCJcXHJcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzEwID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnTGluZUNvbW1lbnQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplV2hpdGVzcGFjZSh2KSxcbiAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgIHBlZyRjMTEgPSAvXlteQF0vLFxuICAgICAgcGVnJGMxMiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIkBcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTMgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdOb25FbnRyeVRleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplV2hpdGVzcGFjZSh2KSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzE0ID0gZnVuY3Rpb24obikgeyByZXR1cm4gbjsgfSxcbiAgICAgIHBlZyRjMTUgPSBcIntcIixcbiAgICAgIHBlZyRjMTYgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwie1wiLCBmYWxzZSksXG4gICAgICBwZWckYzE3ID0gL15bXnt9XS8sXG4gICAgICBwZWckYzE4ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wie1wiLCBcIn1cIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTkgPSBcIn1cIixcbiAgICAgIHBlZyRjMjAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwifVwiLCBmYWxzZSksXG4gICAgICBwZWckYzIxID0gZnVuY3Rpb24oY29tbWVudCkgeyByZXR1cm4gJ3snICsgY29tbWVudC5qb2luKCcnKSArICd9JyB9LFxuICAgICAgcGVnJGMyMiA9IC9eW0EtWmEtel0vLFxuICAgICAgcGVnJGMyMyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJBXCIsIFwiWlwiXSwgW1wiYVwiLCBcInpcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMyNCA9IC9eWyh7XS8sXG4gICAgICBwZWckYzI1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiKFwiLCBcIntcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzI2ID0gL15bfSldLyxcbiAgICAgIHBlZyRjMjcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJ9XCIsIFwiKVwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMjggPSBmdW5jdGlvbih0eXBlLCBpZCwgZmllbGRzKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdFbnRyeScsXG4gICAgICAgICAgICBpZDogaWQgfHwgJycsXG4gICAgICAgICAgICB0eXBlOiB0eXBlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGRzLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMjkgPSBcInByZWFtYmxlXCIsXG4gICAgICBwZWckYzMwID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInByZWFtYmxlXCIsIHRydWUpLFxuICAgICAgcGVnJGMzMSA9IGZ1bmN0aW9uKG9wZW5lciwgdiwgY2xvc2VyKSB7XG4gICAgICAgICAgc3dpdGNoIChvcGVuZXIgKyBjbG9zZXIpIHtcbiAgICAgICAgICAgIGNhc2UgJ3t9JzpcbiAgICAgICAgICAgIGNhc2UgJygpJzpcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5iYWxhbmNlZCBvcGVuZXItY2xvc2VyIGZvciBwcmVhbWJsZTogJHtvcGVuZXJ9Li4uJHtjbG9zZXJ9YClcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdQcmVhbWJsZUV4cHJlc3Npb24nLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdi5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMzMiA9IFwic3RyaW5nXCIsXG4gICAgICBwZWckYzMzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInN0cmluZ1wiLCB0cnVlKSxcbiAgICAgIHBlZyRjMzQgPSBmdW5jdGlvbihrLCB2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdTdHJpbmdEZWNsYXJhdGlvbicsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIG5hbWU6IGssXG4gICAgICAgICAgICB2YWx1ZTogdi5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMzNSA9IC9eW14gXFx0XFxyXFxuLF0vLFxuICAgICAgcGVnJGMzNiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIiwgXCJcXHJcIiwgXCJcXG5cIiwgXCIsXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzM3ID0gXCIsXCIsXG4gICAgICBwZWckYzM4ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIixcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMzOSA9IGZ1bmN0aW9uKGlkKSB7IHJldHVybiBpZDsgfSxcbiAgICAgIHBlZyRjNDAgPSBmdW5jdGlvbihuYW1lKSB7IHJldHVybiBpc1ZlcmJhdGltRmllbGQobmFtZSkgJiYgdW5uZXN0RmllbGRzLmluY2x1ZGVzKG5hbWUpIH0sXG4gICAgICBwZWckYzQxID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMgd2FzIGFidXNlZCBzbyBtdWNoLCBtYW55IHByb2Nlc3NvcnMgdHJlYXQgZG91YmxlLW91dGVyLWJyYWNlcyBhcyBzaW5nbGVcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0ZpZWxkJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHZhbHVlOiBbIHByb3RlY3QodmFsdWUpIF1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzQyID0gZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gaXNWZXJiYXRpbUZpZWxkKG5hbWUpIH0sXG4gICAgICBwZWckYzQzID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0ZpZWxkJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHZhbHVlOiBbIHByb3RlY3QodmFsdWUpIF1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzQ0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMgd2FzIGFidXNlZCBzbyBtdWNoLCBtYW55IHByb2Nlc3NvcnMgdHJlYXQgZG91YmxlLW91dGVyLWJyYWNlcyBhcyBzaW5nbGVcbiAgICAgICAgICBpZiAodW5uZXN0RmllbGRzLmluY2x1ZGVzKG5hbWUpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMSAmJiB2YWx1ZVswXS5raW5kID09PSAnQmxvY2snKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy51bm5lc3RNb2RlID09PSAncHJlc2VydmUnKSB7XG4gICAgICAgICAgICAgIHZhbHVlWzBdLmNhc2UgPSAncHJlc2VydmUnXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzBdLnZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZV9tYXJrdXBfc3dpdGNoZXMoe1xuICAgICAgICAgICAga2luZDogJ0ZpZWxkJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgcGVnJGM0NSA9IC9eW186YS16QS1aMC05XFwtXS8sXG4gICAgICBwZWckYzQ2ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiX1wiLCBcIjpcIiwgW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdLCBbXCIwXCIsIFwiOVwiXSwgXCItXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM0NyA9IGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKSB9LFxuICAgICAgcGVnJGM0OCA9IFwiXFxcIlwiLFxuICAgICAgcGVnJGM0OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFwiXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNTAgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgdiA9IHYgfHwge1xuICAgICAgICAgICAga2luZDogJ1RleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgfVxuICAgICAgICAgIHYubW9kZSA9ICd2ZXJiYXRpbSdcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnModilcbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNTEgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2ljVGV4dENvbnZlcnNpb25zKHtcbiAgICAgICAgICAgIGtpbmQ6ICdUZXh0JyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYuam9pbignJykudHJpbSgpLFxuICAgICAgICAgICAgbW9kZTogJ3ZlcmJhdGltJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgcGVnJGM1MiA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIHYgfSxcbiAgICAgIHBlZyRjNTMgPSBmdW5jdGlvbih2KSB7IHJldHVybiAneycgKyB2LmpvaW4oJycpICsgJ30nIH0sXG4gICAgICBwZWckYzU0ID0gZnVuY3Rpb24oKSB7IHJldHVybiBtYXRoLnNldChmYWxzZSkgfSxcbiAgICAgIHBlZyRjNTUgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHYucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSwgW10pO1xuICAgICAgICB9LFxuICAgICAgcGVnJGM1NiA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIHY7IH0sXG4gICAgICBwZWckYzU3ID0gXCJ7XFxcXHZlcmJcIixcbiAgICAgIHBlZyRjNTggPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwie1xcXFx2ZXJiXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNTkgPSAvXlthLXpBLVpdLyxcbiAgICAgIHBlZyRjNjAgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjEgPSAvXlteXFxeXyR7fVxcXFxdLyxcbiAgICAgIHBlZyRjNjIgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJeXCIsIFwiX1wiLCBcIiRcIiwgXCJ7XCIsIFwifVwiLCBcIlxcXFxcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjMgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2ljVGV4dENvbnZlcnNpb25zKHtcbiAgICAgICAgICAgIGtpbmQ6ICdUZXh0JyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IG5vcm1hbGl6ZVdoaXRlc3BhY2UodiksXG4gICAgICAgICAgICBtb2RlOiBtYXRoLm9uID8gJ21hdGgnIDogJ3RleHQnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzY0ID0gL15bXlxcXl8ke31cIlxcXFxdLyxcbiAgICAgIHBlZyRjNjUgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJeXCIsIFwiX1wiLCBcIiRcIiwgXCJ7XCIsIFwifVwiLCBcIlxcXCJcIiwgXCJcXFxcXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzY2ID0gL15bMC05XS8sXG4gICAgICBwZWckYzY3ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIjBcIiwgXCI5XCJdXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjggPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdOdW1iZXInLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQodiwgMTApLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNjkgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdTdHJpbmdSZWZlcmVuY2UnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBuYW1lOiB2LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNzAgPSBcIlxcXFxiZWdpbntcIixcbiAgICAgIHBlZyRjNzEgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXGJlZ2lue1wiLCBmYWxzZSksXG4gICAgICBwZWckYzcyID0gL15bYS16QS1aMC05XS8sXG4gICAgICBwZWckYzczID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgW1wiMFwiLCBcIjlcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM3NCA9IFwiXFxcXGVuZHtcIixcbiAgICAgIHBlZyRjNzUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXGVuZHtcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM3NiA9IGZ1bmN0aW9uKGVudiwgdiwgY2VudikgeyByZXR1cm4gZW52ID09PSBjZW52IH0sXG4gICAgICBwZWckYzc3ID0gZnVuY3Rpb24oZW52LCB2LCBjZW52KSB7XG4gICAgICAgICAgaWYgKG1hcmt1cFtlbnZdKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgICAgbWFya3VwOiB7IFttYXJrdXBbZW52XV06IHRydWUgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAga2luZDogJ0Vudmlyb25tZW50JyxcbiAgICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICAgIGVudjogZW52LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNzggPSBcIntcXFxcXCIsXG4gICAgICBwZWckYzc5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIntcXFxcXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjODAgPSBcIlxcXFxcIixcbiAgICAgIHBlZyRjODEgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXFwiLCBmYWxzZSksXG4gICAgICBwZWckYzgyID0gL15baWpdLyxcbiAgICAgIHBlZyRjODMgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJpXCIsIFwialwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjODQgPSBmdW5jdGlvbihtYXJrLCBjaGFyKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdEaWFjcml0aWNDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbWFyazogbWFyayxcbiAgICAgICAgICAgIGRvdGxlc3M6ICEhY2hhclsxXSxcbiAgICAgICAgICAgIGNoYXJhY3RlcjogY2hhclsxXSB8fCBjaGFyWzBdLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjODUgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAgICBraW5kOiAnVGV4dCcsXG4gICAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICAgIHZhbHVlOiB2LmpvaW4oJycpLnRyaW0oKSxcbiAgICAgICAgICAgICAgbW9kZTogJ3ZlcmJhdGltJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzg2ID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIGNvbnN0IGJsb2NrID0ge1xuICAgICAgICAgICAga2luZDogJ0Jsb2NrJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgY2FzZTogJ3Byb3RlY3QnLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBsZWFkaW5nY21kID0gYmxvY2sudmFsdWUubGVuZ3RoICYmIChibG9jay52YWx1ZVswXS5raW5kLmVuZHNXaXRoKCdDb21tYW5kJykgfHwgYmxvY2sudmFsdWVbMF0ua2luZCA9PT0gJ0Vudmlyb25tZW50JykgPyBibG9jay52YWx1ZVswXSA6IG51bGxcbiAgICAgICAgICBsZXQgbGVhZGluZ2NtZGJsb2NrYXJnID0gbGVhZGluZ2NtZFxuICAgICAgICAgICAgJiYgbGVhZGluZ2NtZC5raW5kID09PSAnUmVndWxhckNvbW1hbmQnXG4gICAgICAgICAgICAmJiBsZWFkaW5nY21kLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGhcbiAgICAgICAgICAgICYmIGxlYWRpbmdjbWQuYXJndW1lbnRzLnJlcXVpcmVkWzBdLmtpbmQgPT09ICdCbG9jaydcbiAgICAgICAgICAgICYmIGxlYWRpbmdjbWQuYXJndW1lbnRzLnJlcXVpcmVkWzBdXG5cbiAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmV0b3JxdWVyZS96b3Rlcm8tYmV0dGVyLWJpYnRleC9pc3N1ZXMvNTQxI2lzc3VlY29tbWVudC0yNDAxNTYyNzRcbiAgICAgICAgICBpZiAobGVhZGluZ2NtZCkge1xuICAgICAgICAgICAgZGVsZXRlIGJsb2NrLmNhc2VcblxuICAgICAgICAgICAgLy8gY29tbWFuZCB3aXRoIGEgYmxvY2sgY2FuY2VscyBvdXQgY2FzZSBwcm90ZWN0aW9uIHdpdGggY29udGFpbmluZyBibG9ja1xuICAgICAgICAgICAgLy8gaWYgYSBzbWFsbGNhcHMgYmxvY2sgaGFzIHNldCBjYXNlIHRvICdwcmVzZXJ2ZScgd2Ugd2FudCB0byBrZWVwIHRoaXNcbiAgICAgICAgICAgIGlmIChsZWFkaW5nY21kYmxvY2thcmcgJiYgbGVhZGluZ2NtZGJsb2NrYXJnLmNhc2UgPT09ICdwcm90ZWN0JykgZGVsZXRlIGxlYWRpbmdjbWRibG9ja2FyZy5jYXNlXG5cbiAgICAgICAgICAgIC8vIFxcc2wsIFxcaXQgZXRjXG4gICAgICAgICAgICBpZiAobWFya3VwW2xlYWRpbmdjbWQuY29tbWFuZF0pIHtcbiAgICAgICAgICAgICAgYmxvY2subWFya3VwW21hcmt1cFtsZWFkaW5nY21kLmNvbW1hbmRdXSA9IHRydWVcbiAgICAgICAgICAgICAgYmxvY2sudmFsdWUuc2hpZnQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBoYW5kbGVfbWFya3VwX3N3aXRjaGVzKGJsb2NrKVxuICAgICAgICB9LFxuICAgICAgcGVnJGM4NyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gIW1hdGgub24gfSxcbiAgICAgIHBlZyRjODggPSBcIiRcIixcbiAgICAgIHBlZyRjODkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJFwiLCBmYWxzZSksXG4gICAgICBwZWckYzkwID0gXCIkJFwiLFxuICAgICAgcGVnJGM5MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIkJFwiLCBmYWxzZSksXG4gICAgICBwZWckYzkyID0gZnVuY3Rpb24obW9kZSkgeyByZXR1cm4gbWF0aC5zZXQodHJ1ZSkgfSxcbiAgICAgIHBlZyRjOTMgPSBmdW5jdGlvbihtb2RlLCB2KSB7IHJldHVybiBtYXRoLnNldChmYWxzZSkgfSxcbiAgICAgIHBlZyRjOTQgPSBmdW5jdGlvbihtb2RlLCB2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6IG1vZGUgPT0gJyQkJyA/ICdEaXNwbGF5TWF0aCcgOiAnSW5saW5lTWF0aCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgY2FzZTogJ3Byb3RlY3QnLFxuICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzk1ID0gXCIlXCIsXG4gICAgICBwZWckYzk2ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiVcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM5NyA9IC9eW15cXHJcXG5dLyxcbiAgICAgIHBlZyRjOTggPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJcXHJcIiwgXCJcXG5cIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTkgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdMaW5lQ29tbWVudCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTAwID0gL15bX1xcXl0vLFxuICAgICAgcGVnJGMxMDEgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJfXCIsIFwiXlwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTAyID0gZnVuY3Rpb24obW9kZSwgdikge1xuICAgICAgICAgIGlmICh2LmtpbmQgPT09ICdCbG9jaycpIHYgPSB2LnZhbHVlXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogbW9kZSA9PT0gJ18nID8gJ1N1YnNjcmlwdENvbW1hbmQnIDogJ1N1cGVyc2NyaXB0Q29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTAzID0gZnVuY3Rpb24obWFyaywgdikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBtYXJrLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBbXSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgcHJvdGVjdCh2KSBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEwNCA9IC9eW15BLVphLXowLTlcXHRcXHJcXG5dLyxcbiAgICAgIHBlZyRjMTA1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIkFcIiwgXCJaXCJdLCBbXCJhXCIsIFwielwiXSwgW1wiMFwiLCBcIjlcIl0sIFwiXFx0XCIsIFwiXFxyXCIsIFwiXFxuXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzEwNiA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1N5bWJvbENvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiB2LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTA3ID0gXCJuZXdjb21tYW5kXCIsXG4gICAgICBwZWckYzEwOCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJuZXdjb21tYW5kXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTA5ID0gZnVuY3Rpb24oY21kLCBuYW1lKSB7IHJldHVybiBuYW1lLnZhbHVlLmxlbmd0aCA9PSAxICYmIG5hbWUudmFsdWVbMF0ua2luZCA9PT0gJ1JlZ3VsYXJDb21tYW5kJyB9LFxuICAgICAgcGVnJGMxMTAgPSBmdW5jdGlvbihjbWQsIG5hbWUsIG9wdGlvbmFsLCBkZWYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1JlZ3VsYXJDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgY29tbWFuZDogY21kLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBbXSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtuYW1lLCBkZWZdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzExMSA9IFwiYmVnaW5cIixcbiAgICAgIHBlZyRjMTEyID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcImJlZ2luXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTEzID0gXCJlbmRcIixcbiAgICAgIHBlZyRjMTE0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcImVuZFwiLCBmYWxzZSksXG4gICAgICBwZWckYzExNSA9IGZ1bmN0aW9uKGNtZCkgeyByZXR1cm4gdmVyYmF0aW1Db21tYW5kcy5pbmNsdWRlcyhjbWQpICYmIChoYXNfYXJndW1lbnRzW2NtZF0gPT09IDIpIH0sXG4gICAgICBwZWckYzExNiA9IGZ1bmN0aW9uKGNtZCwgb3B0aW9uYWwsIHJlcTEsIHJlcTIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1JlZ3VsYXJDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgY29tbWFuZDogY21kLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtwcm90ZWN0KHJlcTEpLCBwcm90ZWN0KHJlcTIpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMTcgPSBmdW5jdGlvbihjbWQpIHsgcmV0dXJuIHZlcmJhdGltQ29tbWFuZHMuaW5jbHVkZXMoY21kKSAmJiAoaGFzX2FyZ3VtZW50c1tjbWRdID09PSAxKSB9LFxuICAgICAgcGVnJGMxMTggPSBmdW5jdGlvbihjbWQsIG9wdGlvbmFsLCByZXEpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1JlZ3VsYXJDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgY29tbWFuZDogY21kLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtwcm90ZWN0KHJlcSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzExOSA9IGZ1bmN0aW9uKGNtZCkgeyByZXR1cm4gKGhhc19hcmd1bWVudHNbY21kXSA9PT0gMikgfSxcbiAgICAgIHBlZyRjMTIwID0gZnVuY3Rpb24oY21kLCBvcHRpb25hbCwgcmVxMSwgcmVxMikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW3JlcTEsIHJlcTJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEyMSA9IGZ1bmN0aW9uKGNtZCkgeyByZXR1cm4gKGhhc19hcmd1bWVudHNbY21kXSA9PT0gMSkgfSxcbiAgICAgIHBlZyRjMTIyID0gZnVuY3Rpb24oY21kLCBvcHRpb25hbCwgcmVxKSB7XG4gICAgICAgICAgbGV0IG1cbiAgICAgICAgICBpZiAocmVxLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoY21kKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3RleHRzdXBlcnNjcmlwdCc6XG4gICAgICAgICAgICAgIGNhc2UgJ3NwJzpcbiAgICAgICAgICAgICAgICByZXEubWFya3VwLnN1cCA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICd0ZXh0c3Vic2NyaXB0JzpcbiAgICAgICAgICAgICAgY2FzZSAnc2InOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuc3ViID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ3RleHRzYyc6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5zbWFsbENhcHMgPSB0cnVlXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSAnZW5xdW90ZSc6XG4gICAgICAgICAgICAgIGNhc2UgJ21rYmlicXVvdGUnOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuZW5xdW90ZSA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICd0ZXh0YmYnOlxuICAgICAgICAgICAgICBjYXNlICdta2JpYmJvbGQnOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuYm9sZCA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdlbXBoJzpcbiAgICAgICAgICAgICAgY2FzZSAndGV4dGl0JzpcbiAgICAgICAgICAgICAgY2FzZSAnbWtiaWJpdGFsaWMnOlxuICAgICAgICAgICAgICBjYXNlICdta2JpYmVtcGgnOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuaXRhbGljcyA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChtID0gY21kLm1hdGNoKC9eKChzdWIpKilzZWN0aW9uJC8pKSB7XG4gICAgICAgICAgICAgICAgICByZXEubWFya3VwW2BoJHsobVsxXS5sZW5ndGggLyAzKSArIDF9YF0gPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGlnbm9yZSBjYXNlIHN0dWZmIG9uIGJpYmN5clxuICAgICAgICAgIGlmIChjbWQgPT09ICdiaWJjeXInKSBkZWxldGUgcmVxLmNhc2VcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW3JlcV0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMjMgPSBmdW5jdGlvbihjbWQsIG9wdGlvbmFsKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdSZWd1bGFyQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNtZCxcbiAgICAgICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgICAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBbXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEyNCA9IFwiW1wiLFxuICAgICAgcGVnJGMxMjUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiW1wiLCBmYWxzZSksXG4gICAgICBwZWckYzEyNiA9IC9eW15cXF1dLyxcbiAgICAgIHBlZyRjMTI3ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiXVwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMjggPSBcIl1cIixcbiAgICAgIHBlZyRjMTI5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIl1cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMzAgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2ljVGV4dENvbnZlcnNpb25zKHtcbiAgICAgICAgICAgIGtpbmQ6ICdUZXh0JywgLy8gdGhpcyBpc24ndCByZWFsbHkgY29ycmVjdCBidXQgSSBkb24ndCBuZWVkIHRoZXNlIHJpZ2h0IG5vd1xuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIG1vZGU6IG1hdGgub24gPyAnbWF0aCcgOiAndGV4dCcsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTMxID0gL15bXiBcXHRcXF5fJHt9XFxcXF0vLFxuICAgICAgcGVnJGMxMzIgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCIgXCIsIFwiXFx0XCIsIFwiXlwiLCBcIl9cIiwgXCIkXCIsIFwie1wiLCBcIn1cIiwgXCJcXFxcXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzEzMyA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAga2luZDogJ1RleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplV2hpdGVzcGFjZShbdl0pLFxuICAgICAgICAgICAgbW9kZTogbWF0aC5vbiA/ICdtYXRoJyA6ICd0ZXh0JyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMzQgPSAvXlthLXpBLVpcXC1fXS8sXG4gICAgICBwZWckYzEzNSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJhXCIsIFwielwiXSwgW1wiQVwiLCBcIlpcIl0sIFwiLVwiLCBcIl9cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzEzNiA9IC9eW2EtekEtWjAtOVxcLSZfOl0vLFxuICAgICAgcGVnJGMxMzcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdLCBbXCIwXCIsIFwiOVwiXSwgXCItXCIsIFwiJlwiLCBcIl9cIiwgXCI6XCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMzggPSAvXlsnYFwiPX5cXF4uXS8sXG4gICAgICBwZWckYzEzOSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIidcIiwgXCJgXCIsIFwiXFxcIlwiLCBcIj1cIiwgXCJ+XCIsIFwiXlwiLCBcIi5cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE0MCA9IC9eWydgXCI9flxcXi5jYnV2ZHJIa10vLFxuICAgICAgcGVnJGMxNDEgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCInXCIsIFwiYFwiLCBcIlxcXCJcIiwgXCI9XCIsIFwiflwiLCBcIl5cIiwgXCIuXCIsIFwiY1wiLCBcImJcIiwgXCJ1XCIsIFwidlwiLCBcImRcIiwgXCJyXCIsIFwiSFwiLCBcImtcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE0MiA9IFwiPVwiLFxuICAgICAgcGVnJGMxNDMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPVwiLCBmYWxzZSksXG4gICAgICBwZWckYzE0NCA9IFwiI1wiLFxuICAgICAgcGVnJGMxNDUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiI1wiLCBmYWxzZSksXG4gICAgICBwZWckYzE0NiA9IC9eW1xcclxcbl0vLFxuICAgICAgcGVnJGMxNDcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJcXHJcIiwgXCJcXG5cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE0OCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiTWFuZGF0b3J5IEhvcml6b250YWwgV2hpdGVzcGFjZVwiKSxcbiAgICAgIHBlZyRjMTQ5ID0gL15bIFxcdF0vLFxuICAgICAgcGVnJGMxNTAgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCIgXCIsIFwiXFx0XCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxNTEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIk9wdGlvbmFsIEhvcml6b250YWwgV2hpdGVzcGFjZVwiKSxcbiAgICAgIHBlZyRjMTUyID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJNYW5kYXRvcnkgVmVydGljYWwgV2hpdGVzcGFjZVwiKSxcbiAgICAgIHBlZyRjMTUzID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJPcHRpb25hbCBWZXJ0aWNhbCBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNTQgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIk1hbmRhdG9yeSBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNTUgPSAvXlsgXFx0XFxuXFxyXS8sXG4gICAgICBwZWckYzE1NiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIiwgXCJcXG5cIiwgXCJcXHJcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE1NyA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiT3B0aW9uYWwgV2hpdGVzcGFjZVwiKSxcblxuICAgICAgcGVnJGN1cnJQb3MgICAgICAgICAgPSAwLFxuICAgICAgcGVnJHNhdmVkUG9zICAgICAgICAgPSAwLFxuICAgICAgcGVnJHBvc0RldGFpbHNDYWNoZSAgPSBbeyBsaW5lOiAxLCBjb2x1bW46IDEgfV0sXG4gICAgICBwZWckbWF4RmFpbFBvcyAgICAgICA9IDAsXG4gICAgICBwZWckbWF4RmFpbEV4cGVjdGVkICA9IFtdLFxuICAgICAgcGVnJHNpbGVudEZhaWxzICAgICAgPSAwLFxuXG4gICAgICBwZWckcmVzdWx0O1xuXG4gIGlmIChcInN0YXJ0UnVsZVwiIGluIG9wdGlvbnMpIHtcbiAgICBpZiAoIShvcHRpb25zLnN0YXJ0UnVsZSBpbiBwZWckc3RhcnRSdWxlRnVuY3Rpb25zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3Qgc3RhcnQgcGFyc2luZyBmcm9tIHJ1bGUgXFxcIlwiICsgb3B0aW9ucy5zdGFydFJ1bGUgKyBcIlxcXCIuXCIpO1xuICAgIH1cblxuICAgIHBlZyRzdGFydFJ1bGVGdW5jdGlvbiA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbnNbb3B0aW9ucy5zdGFydFJ1bGVdO1xuICB9XG5cbiAgZnVuY3Rpb24gdGV4dCgpIHtcbiAgICByZXR1cm4gaW5wdXQuc3Vic3RyaW5nKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gbG9jYXRpb24oKSB7XG4gICAgcmV0dXJuIHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gIH1cblxuICBmdW5jdGlvbiBleHBlY3RlZChkZXNjcmlwdGlvbiwgbG9jYXRpb24pIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uICE9PSB2b2lkIDAgPyBsb2NhdGlvbiA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcylcblxuICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihcbiAgICAgIFtwZWckb3RoZXJFeHBlY3RhdGlvbihkZXNjcmlwdGlvbildLFxuICAgICAgaW5wdXQuc3Vic3RyaW5nKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpLFxuICAgICAgbG9jYXRpb25cbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gZXJyb3IobWVzc2FnZSwgbG9jYXRpb24pIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uICE9PSB2b2lkIDAgPyBsb2NhdGlvbiA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcylcblxuICAgIHRocm93IHBlZyRidWlsZFNpbXBsZUVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRsaXRlcmFsRXhwZWN0YXRpb24odGV4dCwgaWdub3JlQ2FzZSkge1xuICAgIHJldHVybiB7IHR5cGU6IFwibGl0ZXJhbFwiLCB0ZXh0OiB0ZXh0LCBpZ25vcmVDYXNlOiBpZ25vcmVDYXNlIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckY2xhc3NFeHBlY3RhdGlvbihwYXJ0cywgaW52ZXJ0ZWQsIGlnbm9yZUNhc2UpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImNsYXNzXCIsIHBhcnRzOiBwYXJ0cywgaW52ZXJ0ZWQ6IGludmVydGVkLCBpZ25vcmVDYXNlOiBpZ25vcmVDYXNlIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckYW55RXhwZWN0YXRpb24oKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJhbnlcIiB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGVuZEV4cGVjdGF0aW9uKCkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiZW5kXCIgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJvdGhlclwiLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRjb21wdXRlUG9zRGV0YWlscyhwb3MpIHtcbiAgICB2YXIgZGV0YWlscyA9IHBlZyRwb3NEZXRhaWxzQ2FjaGVbcG9zXSwgcDtcblxuICAgIGlmIChkZXRhaWxzKSB7XG4gICAgICByZXR1cm4gZGV0YWlscztcbiAgICB9IGVsc2Uge1xuICAgICAgcCA9IHBvcyAtIDE7XG4gICAgICB3aGlsZSAoIXBlZyRwb3NEZXRhaWxzQ2FjaGVbcF0pIHtcbiAgICAgICAgcC0tO1xuICAgICAgfVxuXG4gICAgICBkZXRhaWxzID0gcGVnJHBvc0RldGFpbHNDYWNoZVtwXTtcbiAgICAgIGRldGFpbHMgPSB7XG4gICAgICAgIGxpbmU6ICAgZGV0YWlscy5saW5lLFxuICAgICAgICBjb2x1bW46IGRldGFpbHMuY29sdW1uXG4gICAgICB9O1xuXG4gICAgICB3aGlsZSAocCA8IHBvcykge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwKSA9PT0gMTApIHtcbiAgICAgICAgICBkZXRhaWxzLmxpbmUrKztcbiAgICAgICAgICBkZXRhaWxzLmNvbHVtbiA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGV0YWlscy5jb2x1bW4rKztcbiAgICAgICAgfVxuXG4gICAgICAgIHArKztcbiAgICAgIH1cblxuICAgICAgcGVnJHBvc0RldGFpbHNDYWNoZVtwb3NdID0gZGV0YWlscztcbiAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRjb21wdXRlTG9jYXRpb24oc3RhcnRQb3MsIGVuZFBvcykge1xuICAgIHZhciBzdGFydFBvc0RldGFpbHMgPSBwZWckY29tcHV0ZVBvc0RldGFpbHMoc3RhcnRQb3MpLFxuICAgICAgICBlbmRQb3NEZXRhaWxzICAgPSBwZWckY29tcHV0ZVBvc0RldGFpbHMoZW5kUG9zKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydDoge1xuICAgICAgICBvZmZzZXQ6IHN0YXJ0UG9zLFxuICAgICAgICBsaW5lOiAgIHN0YXJ0UG9zRGV0YWlscy5saW5lLFxuICAgICAgICBjb2x1bW46IHN0YXJ0UG9zRGV0YWlscy5jb2x1bW5cbiAgICAgIH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgb2Zmc2V0OiBlbmRQb3MsXG4gICAgICAgIGxpbmU6ICAgZW5kUG9zRGV0YWlscy5saW5lLFxuICAgICAgICBjb2x1bW46IGVuZFBvc0RldGFpbHMuY29sdW1uXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRmYWlsKGV4cGVjdGVkKSB7XG4gICAgaWYgKHBlZyRjdXJyUG9zIDwgcGVnJG1heEZhaWxQb3MpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAocGVnJGN1cnJQb3MgPiBwZWckbWF4RmFpbFBvcykge1xuICAgICAgcGVnJG1heEZhaWxQb3MgPSBwZWckY3VyclBvcztcbiAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQgPSBbXTtcbiAgICB9XG5cbiAgICBwZWckbWF4RmFpbEV4cGVjdGVkLnB1c2goZXhwZWN0ZWQpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGJ1aWxkU2ltcGxlRXJyb3IobWVzc2FnZSwgbG9jYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IHBlZyRTeW50YXhFcnJvcihtZXNzYWdlLCBudWxsLCBudWxsLCBsb2NhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoZXhwZWN0ZWQsIGZvdW5kLCBsb2NhdGlvbikge1xuICAgIHJldHVybiBuZXcgcGVnJFN5bnRheEVycm9yKFxuICAgICAgcGVnJFN5bnRheEVycm9yLmJ1aWxkTWVzc2FnZShleHBlY3RlZCwgZm91bmQpLFxuICAgICAgZXhwZWN0ZWQsXG4gICAgICBmb3VuZCxcbiAgICAgIGxvY2F0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUJpYmxpb2dyYXBoeSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlX18oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gW107XG4gICAgICBzMyA9IHBlZyRwYXJzZU5vZGUoKTtcbiAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VOb2RlKCk7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMChzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNvbW1lbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzE7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNykudG9Mb3dlckNhc2UoKSA9PT0gcGVnJGMzKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUJyYWNlZENvbW1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzUoczUpO1xuICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDY0KSB7XG4gICAgICAgIHMxID0gcGVnJGMxO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpLnRvTG93ZXJDYXNlKCkgPT09IHBlZyRjMykge1xuICAgICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICBpZiAocGVnJGM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzcpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5KTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjOC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkpOyB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTAoczUpO1xuICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAocGVnJGMxMS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMik7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgIGlmIChwZWckYzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzcpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICBpZiAocGVnJGM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IFtzMiwgczNdO1xuICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSBbXTtcbiAgICAgICAgICBpZiAocGVnJGM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgaWYgKHBlZyRjOC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTMoczEpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VOb2RlKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlQ29tbWVudCgpO1xuICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckcGFyc2VQcmVhbWJsZUV4cHJlc3Npb24oKTtcbiAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMSA9IHBlZyRwYXJzZVN0cmluZ0RlY2xhcmF0aW9uKCk7XG4gICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMxID0gcGVnJHBhcnNlRW50cnkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzE0KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUJyYWNlZENvbW1lbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gW107XG4gICAgICBpZiAocGVnJGMxNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE4KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlQnJhY2VkQ29tbWVudCgpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBpZiAocGVnJGMxNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxOCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJyYWNlZENvbW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMjEoczIpO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFbnRyeSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjQpIHtcbiAgICAgIHMxID0gcGVnJGMxO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VfXygpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHM0ID0gW107XG4gICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHJpbmcoczMsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHM0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChwZWckYzI0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjUpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZUVudHJ5SWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczcgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczkgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlRmllbGQoKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM5LnB1c2goczEwKTtcbiAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VGaWVsZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI3KTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzI4KHMzLCBzNywgczkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VQcmVhbWJsZUV4cHJlc3Npb24oKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTA7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjQpIHtcbiAgICAgIHMxID0gcGVnJGMxO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VfXygpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDgpLnRvTG93ZXJDYXNlKCkgPT09IHBlZyRjMjkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgOCk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzMwKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChwZWckYzI0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjUpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNyA9IFtdO1xuICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczggPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNy5wdXNoKHM4KTtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzI2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI3KTsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMzEoczUsIHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVN0cmluZ0RlY2xhcmF0aW9uKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTEsIHMxMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzE7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikudG9Mb3dlckNhc2UoKSA9PT0gcGVnJGMzMikge1xuICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA2KTtcbiAgICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzMpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjMjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyNSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlVmFyaWFibGVOYW1lKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUZpZWxkU2VwYXJhdG9yKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczkgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlUmVndWxhclZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOS5wdXNoKHMxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI3KTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzM0KHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVudHJ5SWQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfXygpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgIHMzID0gW107XG4gICAgICBpZiAocGVnJGMzNS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM2KTsgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICBpZiAocGVnJGMzNS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzNik7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gaW5wdXQuc3Vic3RyaW5nKHMyLCBwZWckY3VyclBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHMzO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgczQgPSBwZWckYzM3O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM4KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzM5KHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRmllbGQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczg7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlRmllbGROYW1lKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgIHMyID0gcGVnJGM0MChzMSk7XG4gICAgICBpZiAoczIpIHtcbiAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VGaWVsZFNlcGFyYXRvcigpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgczQgPSBwZWckYzE1O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJGMxNTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNTtcbiAgICAgICAgICAgICAgczUgPSB2b2lkIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUZpZWxkVGVybWluYXRvcigpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDEoczEsIHM2KTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckcGFyc2VGaWVsZE5hbWUoKTtcbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgczIgPSBwZWckYzQyKHMxKTtcbiAgICAgICAgaWYgKHMyKSB7XG4gICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlRmllbGRTZXBhcmF0b3IoKTtcbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1GaWVsZFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VGaWVsZFRlcm1pbmF0b3IoKTtcbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzQzKHMxLCBzNCk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlRmllbGROYW1lKCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gcGVnJHBhcnNlRmllbGRTZXBhcmF0b3IoKTtcbiAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlRmllbGRUZXJtaW5hdG9yKCk7XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0NChzMSwgczMpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZE5hbWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfXygpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgIHMzID0gW107XG4gICAgICBpZiAocGVnJGM0NS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ2KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgIGlmIChwZWckYzQ1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0Nik7IH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IGlucHV0LnN1YnN0cmluZyhzMiwgcGVnJGN1cnJQb3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBzMztcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzQ3KHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICBzMSA9IHBlZyRjNDg7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDkpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VUZXh0Tm9RdW90ZXMoKTtcbiAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNCkge1xuICAgICAgICAgIHMzID0gcGVnJGM0ODtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDkpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzUwKHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgIHMxID0gcGVnJGMxNTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gW107XG4gICAgICAgIHMzID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJGMxOTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM1MShzMik7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgczIgPSBbXTtcbiAgICBpZiAocGVnJGMxNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTgpOyB9XG4gICAgfVxuICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBpZiAocGVnJGMxNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxOCk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBpbnB1dC5zdWJzdHJpbmcoczEsIHBlZyRjdXJyUG9zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBzMjtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM1MihzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBbXTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VWZXJiYXRpbVRleHQoKTtcbiAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VWZXJiYXRpbVRleHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzUzKHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRmllbGRWYWx1ZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRwYXJzZU51bWJlcigpO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckYzU0KCk7XG4gICAgICBpZiAoczEpIHtcbiAgICAgICAgczEgPSB2b2lkIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBbXTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VTdHJpbmdWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlUmVndWxhclZhbHVlKCk7XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVN0cmluZ1ZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGM1NShzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVJlZ3VsYXJWYWx1ZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNCkge1xuICAgICAgczEgPSBwZWckYzQ4O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ5KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gW107XG4gICAgICBzMyA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVGV4dE5vUXVvdGVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVGV4dE5vUXVvdGVzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICAgICAgczMgPSBwZWckYzQ4O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZUNvbmNhdCgpO1xuICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzU2KHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpID09PSBwZWckYzU3KSB7XG4gICAgICAgIHMxID0gcGVnJGM1NztcbiAgICAgICAgcGVnJGN1cnJQb3MgKz0gNjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzU4KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAocGVnJGM1OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2MCk7IH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBbXTtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQ29uY2F0KCk7XG4gICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNTEoczMpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgIHMxID0gcGVnJGMxNTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSBbXTtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlQ29uY2F0KCk7XG4gICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNTYoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICBzMSA9IHBlZyRwYXJzZVN0cmluZ1JlZmVyZW5jZSgpO1xuICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VDb25jYXQoKTtcbiAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMiA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGM1NihzMSk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU3RyaW5nVmFsdWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlU3RyaW5nUmVmZXJlbmNlKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZUNvbmNhdCgpO1xuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzU2KHMxKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VUZXh0KCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IFtdO1xuICAgIGlmIChwZWckYzYxLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2Mik7IH1cbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgIGlmIChwZWckYzYxLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzYyKTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM2MyhzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VUZXh0Tm9RdW90ZXMoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgaWYgKHBlZyRjNjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzY1KTsgfVxuICAgIH1cbiAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgaWYgKHBlZyRjNjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjUpOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzYzKHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZU51bWJlcigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgczIgPSBbXTtcbiAgICBpZiAocGVnJGM2Ni50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjcpOyB9XG4gICAgfVxuICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBpZiAocGVnJGM2Ni50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2Nyk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBpbnB1dC5zdWJzdHJpbmcoczEsIHBlZyRjdXJyUG9zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBzMjtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM2OChzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTdHJpbmdSZWZlcmVuY2UoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VWYXJpYWJsZU5hbWUoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzY5KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVudmlyb25tZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA3KSA9PT0gcGVnJGM3MCkge1xuICAgICAgczEgPSBwZWckYzcwO1xuICAgICAgcGVnJGN1cnJQb3MgKz0gNztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzcxKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMyA9IFtdO1xuICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNzMpOyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBpbnB1dC5zdWJzdHJpbmcoczIsIHBlZyRjdXJyUG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gczM7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjMTk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gW107XG4gICAgICAgICAgczUgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGM3NCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjNzQ7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3NSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBzNyA9IFtdO1xuICAgICAgICAgICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczggPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczggPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3LnB1c2goczgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuc3Vic3RyaW5nKHM2LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBzNztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzE5O1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckYzc2KHMyLCBzNCwgczYpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4KSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczggPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzcoczIsIHM0LCBzNik7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQmxvY2soKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM3OCkge1xuICAgICAgczEgPSBwZWckYzc4O1xuICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzc5KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlRXh0ZW5kZWREaWFjcml0aWMoKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChwZWckYzcyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjODA7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBpZiAocGVnJGM4Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IFtzNSwgczZdO1xuICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjMTk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzg0KHMyLCBzNCk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpID09PSBwZWckYzU3KSB7XG4gICAgICAgIHMxID0gcGVnJGM1NztcbiAgICAgICAgcGVnJGN1cnJQb3MgKz0gNjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzU4KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAocGVnJGM1OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2MCk7IH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBbXTtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjODUoczMpO1xuICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGM4NihzMik7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlTWF0aCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczY7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGM4NygpO1xuICAgIGlmIChzMSkge1xuICAgICAgczEgPSB2b2lkIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM2KSB7XG4gICAgICAgIHMyID0gcGVnJGM4ODtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzg5KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzkwKSB7XG4gICAgICAgICAgczIgPSBwZWckYzkwO1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5MSk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMyA9IHBlZyRjOTIoczIpO1xuICAgICAgICBpZiAoczMpIHtcbiAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBbXTtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM2KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGM4ODtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzg5KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzkwKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckYzkwO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5MSk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBzNiA9IHBlZyRjOTMoczIsIHM0KTtcbiAgICAgICAgICAgICAgaWYgKHM2KSB7XG4gICAgICAgICAgICAgICAgczYgPSB2b2lkIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM5NChzMiwgczQpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VMaW5lQ29tbWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNykge1xuICAgICAgczEgPSBwZWckYzk1O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzk2KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgczQgPSBbXTtcbiAgICAgICAgaWYgKHBlZyRjOTcudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOTgpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIGlmIChwZWckYzk3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOTgpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cmluZyhzMywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBbXTtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVPTCgpO1xuICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVPTCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjOTkoczMpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VDb21tYW5kKCkge1xuICAgIHZhciBzMDtcblxuICAgIHMwID0gcGVnJHBhcnNlU2NyaXB0Q29tbWFuZCgpO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckcGFyc2VEaWFjcml0aWNDb21tYW5kKCk7XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckcGFyc2VSZWd1bGFyQ29tbWFuZCgpO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRwYXJzZVN5bWJvbENvbW1hbmQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVNjcmlwdENvbW1hbmQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAocGVnJGMxMDAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwMSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMTAyKHMxLCBzMyk7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZURpYWNyaXRpY0NvbW1hbmQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICBzMSA9IHBlZyRjODA7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VTaW1wbGVEaWFjcml0aWMoKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChwZWckYzcyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjODA7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBpZiAocGVnJGM4Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IFtzNSwgczZdO1xuICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM4NChzMiwgczQpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRwYXJzZUV4dGVuZGVkRGlhY3JpdGljKCk7XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjMTU7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckYzgwO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM4Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODMpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczUgPSBbczUsIHM2XTtcbiAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM4NChzMiwgczQpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHBlZyRwYXJzZUV4dGVuZGVkRGlhY3JpdGljKCk7XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRjMTU7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlUmVndWxhclZhbHVlKCk7XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMDMoczIsIHM0KTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU3ltYm9sQ29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKHBlZyRjMTA0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTA1KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gaW5wdXQuc3Vic3RyaW5nKHMyLCBwZWckY3VyclBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHMzO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMTA2KHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VSZWd1bGFyQ29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDEwKSA9PT0gcGVnJGMxMDcpIHtcbiAgICAgICAgczIgPSBwZWckYzEwNztcbiAgICAgICAgcGVnJGN1cnJQb3MgKz0gMTA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMDgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICBzNCA9IHBlZyRjMTA5KHMyLCBzMyk7XG4gICAgICAgICAgaWYgKHM0KSB7XG4gICAgICAgICAgICBzNCA9IHZvaWQgMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICBzNiA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMTAoczIsIHMzLCBzNSwgczYpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNSkgPT09IHBlZyRjMTExKSB7XG4gICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICBwZWckY3VyclBvcyArPSA1O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTEyKTsgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDMpID09PSBwZWckYzExMykge1xuICAgICAgICAgICAgczQgPSBwZWckYzExMztcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNCA9IGlucHV0LnN1YnN0cmluZyhzNCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgczUgPSBwZWckYzExNShzNCk7XG4gICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgIHM1ID0gdm9pZCAwO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGMxNTtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczg7XG4gICAgICAgICAgICAgICAgICAgICAgczggPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJHBhcnNlVmVyYmF0aW1GaWVsZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMTYoczQsIHM2LCBzOSwgczEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDUpID09PSBwZWckYzExMSkge1xuICAgICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTIpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMykgPT09IHBlZyRjMTEzKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxMTM7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuc3Vic3RyaW5nKHM0LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTE3KHM0KTtcbiAgICAgICAgICAgICAgICBpZiAoczUpIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgd2hpbGUgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRjMTU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzODtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzExOChzNCwgczYsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNSkgPT09IHBlZyRjMTExKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJGMxMTE7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTIpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMykgPT09IHBlZyRjMTEzKSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckYzExMztcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTE0KTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuc3Vic3RyaW5nKHM0LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTE5KHM0KTtcbiAgICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTIwKHM0LCBzNiwgczgsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDUpID09PSBwZWckYzExMSkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxMTE7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExMik7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAzKSA9PT0gcGVnJGMxMTMpIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGMxMTM7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTE0KTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5zdWJzdHJpbmcoczQsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxMjEoczQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZVJlcXVpcmVkQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzEyMihzNCwgczYsIHM4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGMxMTEpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxMTE7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA1O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTEyKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMyID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDMpID09PSBwZWckYzExMykge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjMTEzO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTE0KTsgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LnN1YnN0cmluZyhzNCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTIzKHM0LCBzNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5MSkge1xuICAgICAgczEgPSBwZWckYzEyNDtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjUpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzNCA9IFtdO1xuICAgICAgICBpZiAocGVnJGMxMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTI3KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBpZiAocGVnJGMxMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjcpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cmluZyhzMywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTMpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckYzEyODtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyOSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzEzMChzMyk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfX2goKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChwZWckYzEzMS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzMik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzEzMyhzMik7XG4gICAgICAgIHMwID0gczE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIHMxID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMSA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzUyKHMxKTtcbiAgICAgIH1cbiAgICAgIHMwID0gczE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlVmFyaWFibGVOYW1lKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKHBlZyRjMTM0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMzUpOyB9XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczMgPSBbXTtcbiAgICAgIGlmIChwZWckYzEzNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzNyk7IH1cbiAgICAgIH1cbiAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgaWYgKHBlZyRjMTM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzNyk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgIHMxID0gczI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBzMTtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTaW1wbGVEaWFjcml0aWMoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKHBlZyRjMTM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMzkpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRXh0ZW5kZWREaWFjcml0aWMoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKHBlZyRjMTQwLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDEpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRmllbGRTZXBhcmF0b3IoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9fKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYxKSB7XG4gICAgICAgIHMyID0gcGVnJGMxNDI7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDMpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMSA9IFtzMSwgczIsIHMzXTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRmllbGRUZXJtaW5hdG9yKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9fKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgIHMyID0gcGVnJGMzNztcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM4KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIHM1ID0gcGVnJHBhcnNlTGluZUNvbW1lbnQoKTtcbiAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlRU9MKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUxpbmVDb21tZW50KCk7XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VFT0woKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IFtzMSwgczIsIHMzLCBzNF07XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNvbmNhdCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlX18oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzUpIHtcbiAgICAgICAgczIgPSBwZWckYzE0NDtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0NSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMxID0gW3MxLCBzMiwgczNdO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFT0woKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKHBlZyRjMTQ2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDcpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlX2goKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTQ5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTApOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICBpZiAocGVnJGMxNDkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUwKTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ4KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV9faCgpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGMxNDkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1MCk7IH1cbiAgICB9XG4gICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMC5wdXNoKHMxKTtcbiAgICAgIGlmIChwZWckYzE0OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1MCk7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUxKTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV92KCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzE0Ni50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ3KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMC5wdXNoKHMxKTtcbiAgICAgICAgaWYgKHBlZyRjMTQ2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Nyk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Mik7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfX3YoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTQ2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDcpOyB9XG4gICAgfVxuICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAucHVzaChzMSk7XG4gICAgICBpZiAocGVnJGMxNDYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDcpOyB9XG4gICAgICB9XG4gICAgfVxuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Myk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzE1NS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMC5wdXNoKHMxKTtcbiAgICAgICAgaWYgKHBlZyRjMTU1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Nik7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1NCk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfXygpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGMxNTUudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Nik7IH1cbiAgICB9XG4gICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMC5wdXNoKHMxKTtcbiAgICAgIGlmIChwZWckYzE1NS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Nik7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU3KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG5cbiAgICAvKlxuICAgICAgTUlUIExpY2Vuc2VcblxuICAgICAgQ29weXJpZ2h0IChjKSAyMDE3IERlcmVrIFAgU2lmZm9yZCwgcGFydHMgY29weXJpZ2h0IChjKSAyMDE5IGJ5IEVtaWxpYW5vIEhleW5zXG5cbiAgICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAgICAgIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAgICAgIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAgICAgIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAgICAgIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICAgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuICAgICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gICAgICBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gICAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gICAgICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAgICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICAgICAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICAgICAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAgICAgIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gICAgICBTT0ZUV0FSRS5cbiAgICAqL1xuXG4gICAgY29uc3QgbWFya3VwID0ge1xuICAgICAgc2w6ICdpdGFsaWNzJyxcbiAgICAgIGVtOiAnaXRhbGljcycsXG4gICAgICBpdDogJ2l0YWxpY3MnLFxuICAgICAgaXRzaGFwZTogJ2l0YWxpY3MnLFxuXG4gICAgICBiZjogJ2JvbGQnLFxuICAgICAgYmZzZXJpZXM6ICdib2xkJyxcblxuICAgICAgc2M6ICdzbWFsbENhcHMnLFxuICAgICAgc2NzaGFwZTogJ3NtYWxsQ2FwcycsXG5cbiAgICAgIHR0OiAnZml4ZWRXaWR0aCcsXG4gICAgICBybTogJ3JvbWFuJyxcbiAgICAgIHNmOiAnc2Fuc1NlcmlmJyxcbiAgICAgIHZlcmI6ICd2ZXJiYXRpbScsXG4gICAgfVxuXG4gICAgY29uc3QgdW5uZXN0RmllbGRzID0gKG9wdGlvbnMudW5uZXN0RmllbGRzIHx8IFtdKS5tYXAoZmllbGQgPT4gZmllbGQudG9Mb3dlckNhc2UoKSlcbiAgICBjb25zdCB2ZXJiYXRpbUZpZWxkcyA9IChvcHRpb25zLnZlcmJhdGltRmllbGRzIHx8IFsgJ3VybHJhdycsICd1cmwnLCAnZG9pJywgJ2ZpbGUnLCAnZmlsZXMnLCAnZXByaW50JywgJ3ZlcmJhJywgJ3ZlcmJiJywgJ3ZlcmJjJyBdKS5tYXAoZmllbGQgPT4gdHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyA/IGZpZWxkLnRvTG93ZXJDYXNlKCkgOiBmaWVsZClcbiAgICBjb25zdCB2ZXJiYXRpbUNvbW1hbmRzID0gKG9wdGlvbnMudmVyYmF0aW1Db21tYW5kcyB8fCBbJ3RleHR0dCcsICd1cmwnLCAnaHJlZiddKVxuXG4gICAgZnVuY3Rpb24gaXNWZXJiYXRpbUZpZWxkKG5hbWUpIHtcbiAgICAgIHJldHVybiB2ZXJiYXRpbUZpZWxkcy5maW5kKHAgPT4gKHR5cGVvZiBwID09PSAnc3RyaW5nJykgPyBuYW1lID09PSBwIDogbmFtZS5tYXRjaChwKSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVXaGl0ZXNwYWNlKHRleHRBcnIpIHtcbiAgICAgIHJldHVybiB0ZXh0QXJyLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICBpZiAoL1xccy8udGVzdChjdXJyKSkge1xuICAgICAgICAgIGlmICgvXFxzLy50ZXN0KHByZXZbcHJldi5sZW5ndGggLSAxXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldiArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZXYgKyBjdXJyO1xuICAgICAgfSwgJycpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc19hcmd1bWVudHMgPSB7XG4gICAgICBFbHNldmllckdseXBoOiAxLFxuICAgICAgZW5kOiAxLFxuICAgICAgYmVnaW46IDEsXG4gICAgICBiaWJjeXI6IDEsXG4gICAgICBiaWJzdHJpbmc6IDEsXG4gICAgICBjaHNmOiAxLFxuICAgICAgY2l0ZTogMSxcbiAgICAgIGN5cmNoYXI6IDEsXG4gICAgICBkaW5nOiAxLFxuICAgICAgZW1waDogMSxcbiAgICAgIGVucXVvdGU6IDEsXG4gICAgICBmcmFjOiAyLFxuICAgICAgaHJlZjogMixcbiAgICAgIGhzcGFjZTogMSxcbiAgICAgIG1hdGhybTogMSxcbiAgICAgIG1ib3g6IDEsXG4gICAgICBta2JpYmJvbGQ6IDEsXG4gICAgICBta2JpYmVtcGg6IDEsXG4gICAgICBta2JpYml0YWxpYzogMSxcbiAgICAgIG1rYmlicXVvdGU6IDEsXG4gICAgICBuZXdjb21tYW5kOiAyLFxuICAgICAgbm9vcHNvcnQ6IDEsXG4gICAgICBvY2lyYzogMSxcbiAgICAgIHNlY3Rpb246IDEsXG4gICAgICBzYjogMSxcbiAgICAgIHNwOiAxLFxuICAgICAgc3Vic2VjdGlvbjogMSxcbiAgICAgIHN1YnN1YnNlY3Rpb246IDEsXG4gICAgICBzdWJzdWJzdWJzZWN0aW9uOiAxLFxuICAgICAgdDogMSxcbiAgICAgIHRleHRiZjogMSxcbiAgICAgIHRleHRpdDogMSxcbiAgICAgIHRleHRybTogMSxcbiAgICAgIHRleHRzYzogMSxcbiAgICAgIHRleHRzdWJzY3JpcHQ6IDEsXG4gICAgICB0ZXh0c3VwZXJzY3JpcHQ6IDEsXG4gICAgICB0ZXh0dHQ6IDEsXG4gICAgICB1cmw6IDEsXG4gICAgICB2cGhhbnRvbTogMSxcbiAgICAgIHZzcGFjZTogMSxcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jb21iaW5pbmdEaWFjcml0aWNzKSB7XG4gICAgICBmb3IgKGNvbnN0IGNtZCBvZiBvcHRpb25zLmNvbWJpbmluZ0RpYWNyaXRpY3MpIHtcbiAgICAgICAgaGFzX2FyZ3VtZW50c1tjbWRdID0gMVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNheSgpIHtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oYXJndW1lbnRzKSwgbnVsbCwgMikpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBlZWsobikge1xuICAgICAgcmV0dXJuIGlucHV0LnN1YnN0cihwZWckc2F2ZWRQb3MsIG4pXG4gICAgfVxuXG4gICAgY29uc3QgbWF0aCA9IHtcbiAgICAgIG9uOiBmYWxzZSxcblxuICAgICAgc2V0OiBmdW5jdGlvbihzdGF0ZSkge1xuICAgICAgICB0aGlzLm9uID0gc3RhdGVcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiYXNpY1RleHRDb252ZXJzaW9ucyhub2RlKSB7XG4gICAgICBpZiAobm9kZS5raW5kICE9PSAnVGV4dCcpIHRocm93IG5ldyBFcnJvcihub2RlLmtpbmQgKyAnIGlzIG5vdCBhIFRleHQgbm9kZScpXG5cbiAgICAgIHN3aXRjaCAobm9kZS5tb2RlKSB7XG4gICAgICAgIGNhc2UgJ3ZlcmJhdGltJzpcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ21hdGgnOlxuICAgICAgICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlLnJlcGxhY2UoL34vZywgJ1xcdTAwQTAnKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWVcbiAgICAgICAgICAgIC5yZXBsYWNlKC8tLS0vZywgJ1xcdTIwMTQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLy0tL2csICdcXHUyMDEzJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC88L2csICdcXHUwMEExJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8+L2csICdcXHUwMEJGJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9+L2csICdcXHUwMEEwJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9gYC9nLCBvcHRpb25zLm1hcmt1cC5lbnF1b3RlLm9wZW4pXG4gICAgICAgICAgICAucmVwbGFjZSgvJycvZywgb3B0aW9ucy5tYXJrdXAuZW5xdW90ZS5jbG9zZSlcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHRleHQgbW9kZSAke25vZGUubW9kZX1gKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb3RlY3Qodikge1xuICAgICAgbGV0IHNvdXJjZVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgc291cmNlID0gdi5tYXAoZSA9PiBlLnNvdXJjZSkuam9pbignJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSBbIHYgXVxuICAgICAgICBzb3VyY2UgPSB2LnNvdXJjZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgY2FzZTogJ3Byb3RlY3QnLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVfbWFya3VwX3N3aXRjaGVzKGJsb2NrKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGJsb2NrLnZhbHVlXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gYmxvY2tcblxuICAgICAgYmxvY2sudmFsdWUgPSBbXVxuXG4gICAgICBjb25zdCBwc2V1ZG8gPSB7XG4gICAgICAgIGJsb2NrOiBudWxsLFxuICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcHNldWRvX2Jsb2NrKCkge1xuICAgICAgICBwc2V1ZG8uYmxvY2sgPSB7XG4gICAgICAgICAga2luZDogJ0Jsb2NrJyxcbiAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgICB2YWx1ZTogW10sXG4gICAgICAgICAgbWFya3VwOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBzZXVkby5tYXJrdXApKSxcbiAgICAgICAgICBwc2V1ZG86IHRydWUsXG4gICAgICAgIH1cbiAgICAgICAgYmxvY2sudmFsdWUucHVzaChwc2V1ZG8uYmxvY2spXG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdmFsdWUpIHtcbiAgICAgICAgaWYgKG5vZGUua2luZCA9PT0gJ0Vudmlyb25tZW50JyB8fCBub2RlLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICBibG9jay52YWx1ZS5wdXNoKG5vZGUpXG5cbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocHNldWRvLm1hcmt1cCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBwc2V1ZG9fYmxvY2soKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwc2V1ZG8uYmxvY2sgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5raW5kID09PSAnUmVndWxhckNvbW1hbmQnICYmIG1hcmt1cFtub2RlLmNvbW1hbmRdKSB7XG4gICAgICAgICAgaWYgKHBzZXVkby5tYXJrdXAuaXRhbGljcykgeyAvLyBodHRwczovL2dpdGh1Yi5jb20vY2l0YXRpb24tanMvYmlidGV4LXBhcnNlci1leHBlcmltZW50cy9jb21taXQvY2FlNDc1ZjA3NWEwNWQxYzA3NDQ4NWEwNjFiMDhlZDI0NTE3MGM3ZVxuICAgICAgICAgICAgZGVsZXRlIHBzZXVkby5tYXJrdXAuaXRhbGljc1xuICAgICAgICAgICAgaWYgKG1hcmt1cFtub2RlLmNvbW1hbmRdICE9PSAnaXRhbGljcycpIHBzZXVkby5tYXJrdXBbbWFya3VwW25vZGUuY29tbWFuZF1dID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwc2V1ZG8ubWFya3VwW21hcmt1cFtub2RlLmNvbW1hbmRdXSA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocHNldWRvLm1hcmt1cCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBwc2V1ZG9fYmxvY2soKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgcHNldWRvLmJsb2NrID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwc2V1ZG8uYmxvY2spIHtcbiAgICAgICAgICBwc2V1ZG8uYmxvY2suc291cmNlICs9IG5vZGUuc291cmNlXG4gICAgICAgICAgcHNldWRvLmJsb2NrLnZhbHVlLnB1c2gobm9kZSlcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJsb2NrLnZhbHVlLnB1c2gobm9kZSlcblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJsb2NrLnZhbHVlID0gYmxvY2sudmFsdWUuZmlsdGVyKG5vZGUgPT4gIShub2RlLnBzZXVkbyAmJiBub2RlLnZhbHVlLmxlbmd0aCA9PT0gMCkpXG5cbiAgICAgIHJldHVybiBibG9ja1xuICAgIH1cblxuXG4gIHBlZyRyZXN1bHQgPSBwZWckc3RhcnRSdWxlRnVuY3Rpb24oKTtcblxuICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA9PT0gaW5wdXQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHBlZyRyZXN1bHQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHBlZyRyZXN1bHQgIT09IHBlZyRGQUlMRUQgJiYgcGVnJGN1cnJQb3MgPCBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHBlZyRmYWlsKHBlZyRlbmRFeHBlY3RhdGlvbigpKTtcbiAgICB9XG5cbiAgICB0aHJvdyBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoXG4gICAgICBwZWckbWF4RmFpbEV4cGVjdGVkLFxuICAgICAgcGVnJG1heEZhaWxQb3MgPCBpbnB1dC5sZW5ndGggPyBpbnB1dC5jaGFyQXQocGVnJG1heEZhaWxQb3MpIDogbnVsbCxcbiAgICAgIHBlZyRtYXhGYWlsUG9zIDwgaW5wdXQubGVuZ3RoXG4gICAgICAgID8gcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckbWF4RmFpbFBvcywgcGVnJG1heEZhaWxQb3MgKyAxKVxuICAgICAgICA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zKVxuICAgICk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFN5bnRheEVycm9yOiBwZWckU3ludGF4RXJyb3IsXG4gIHBhcnNlOiAgICAgICBwZWckcGFyc2Vcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8vIE9yaWdpbmFsIHdvcmsgYnkgSGVucmlrIE11ZWhlIChjKSAyMDEwXG4vL1xuLy8gQ29tbW9uSlMgcG9ydCBieSBNaWtvbGEgTHlzZW5rbyAyMDEzXG4vL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZSA9IHZvaWQgMDtcbmNsYXNzIFBhcnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZSwgcGFyc2VyKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gYCBAICR7cGFyc2VyLnBvc31gO1xuICAgICAgICBpZiAocGFyc2VyLnBhcnNpbmcpXG4gICAgICAgICAgICBtZXNzYWdlICs9IGAgaW4gJHtKU09OLnN0cmluZ2lmeShwYXJzZXIucGFyc2luZyl9YDtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdQYXJzZUVycm9yJztcbiAgICB9XG59XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXRlbXBsYXRlXG5jb25zdCBsZXR0ZXIgPSBuZXcgUmVnRXhwKCdbJyArIFtcbiAgICAvLyBMZXR0ZXIsIFVwcGVyY2FzZVxuICAgIC9cXHUwMDQxLVxcdTAwNUFcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwREVcXHUwMTAwXFx1MDEwMlxcdTAxMDRcXHUwMTA2XFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDEwRVxcdTAxMTBcXHUwMTEyXFx1MDExNFxcdTAxMTZcXHUwMTE4XFx1MDExQVxcdTAxMUNcXHUwMTFFXFx1MDEyMFxcdTAxMjJcXHUwMTI0XFx1MDEyNlxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMkVcXHUwMTMwXFx1MDEzMlxcdTAxMzRcXHUwMTM2XFx1MDEzOVxcdTAxM0JcXHUwMTNEXFx1MDEzRlxcdTAxNDFcXHUwMTQzXFx1MDE0NVxcdTAxNDdcXHUwMTRBXFx1MDE0Q1xcdTAxNEVcXHUwMTUwXFx1MDE1MlxcdTAxNTRcXHUwMTU2XFx1MDE1OFxcdTAxNUFcXHUwMTVDXFx1MDE1RVxcdTAxNjBcXHUwMTYyXFx1MDE2NFxcdTAxNjZcXHUwMTY4XFx1MDE2QVxcdTAxNkNcXHUwMTZFXFx1MDE3MFxcdTAxNzJcXHUwMTc0XFx1MDE3NlxcdTAxNzgtXFx1MDE3OVxcdTAxN0JcXHUwMTdEXFx1MDE4MS1cXHUwMTgyXFx1MDE4NFxcdTAxODYtXFx1MDE4N1xcdTAxODktXFx1MDE4QlxcdTAxOEUtXFx1MDE5MVxcdTAxOTMtXFx1MDE5NFxcdTAxOTYtXFx1MDE5OFxcdTAxOUMtXFx1MDE5RFxcdTAxOUYtXFx1MDFBMFxcdTAxQTJcXHUwMUE0XFx1MDFBNi1cXHUwMUE3XFx1MDFBOVxcdTAxQUNcXHUwMUFFLVxcdTAxQUZcXHUwMUIxLVxcdTAxQjNcXHUwMUI1XFx1MDFCNy1cXHUwMUI4XFx1MDFCQ1xcdTAxQzRcXHUwMUM3XFx1MDFDQVxcdTAxQ0RcXHUwMUNGXFx1MDFEMVxcdTAxRDNcXHUwMUQ1XFx1MDFEN1xcdTAxRDlcXHUwMURCXFx1MDFERVxcdTAxRTBcXHUwMUUyXFx1MDFFNFxcdTAxRTZcXHUwMUU4XFx1MDFFQVxcdTAxRUNcXHUwMUVFXFx1MDFGMVxcdTAxRjRcXHUwMUY2LVxcdTAxRjhcXHUwMUZBXFx1MDFGQ1xcdTAxRkVcXHUwMjAwXFx1MDIwMlxcdTAyMDRcXHUwMjA2XFx1MDIwOFxcdTAyMEFcXHUwMjBDXFx1MDIwRVxcdTAyMTBcXHUwMjEyXFx1MDIxNFxcdTAyMTZcXHUwMjE4XFx1MDIxQVxcdTAyMUNcXHUwMjFFXFx1MDIyMFxcdTAyMjJcXHUwMjI0XFx1MDIyNlxcdTAyMjhcXHUwMjJBXFx1MDIyQ1xcdTAyMkVcXHUwMjMwXFx1MDIzMlxcdTAyM0EtXFx1MDIzQlxcdTAyM0QtXFx1MDIzRVxcdTAyNDFcXHUwMjQzLVxcdTAyNDZcXHUwMjQ4XFx1MDI0QVxcdTAyNENcXHUwMjRFXFx1MDM3MFxcdTAzNzJcXHUwMzc2XFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwMzhGXFx1MDM5MS1cXHUwM0ExXFx1MDNBMy1cXHUwM0FCXFx1MDNDRlxcdTAzRDItXFx1MDNENFxcdTAzRDhcXHUwM0RBXFx1MDNEQ1xcdTAzREVcXHUwM0UwXFx1MDNFMlxcdTAzRTRcXHUwM0U2XFx1MDNFOFxcdTAzRUFcXHUwM0VDXFx1MDNFRVxcdTAzRjRcXHUwM0Y3XFx1MDNGOS1cXHUwM0ZBXFx1MDNGRC1cXHUwNDJGXFx1MDQ2MFxcdTA0NjJcXHUwNDY0XFx1MDQ2NlxcdTA0NjhcXHUwNDZBXFx1MDQ2Q1xcdTA0NkVcXHUwNDcwXFx1MDQ3MlxcdTA0NzRcXHUwNDc2XFx1MDQ3OFxcdTA0N0FcXHUwNDdDXFx1MDQ3RVxcdTA0ODBcXHUwNDhBXFx1MDQ4Q1xcdTA0OEVcXHUwNDkwXFx1MDQ5MlxcdTA0OTRcXHUwNDk2XFx1MDQ5OFxcdTA0OUFcXHUwNDlDXFx1MDQ5RVxcdTA0QTBcXHUwNEEyXFx1MDRBNFxcdTA0QTZcXHUwNEE4XFx1MDRBQVxcdTA0QUNcXHUwNEFFXFx1MDRCMFxcdTA0QjJcXHUwNEI0XFx1MDRCNlxcdTA0QjhcXHUwNEJBXFx1MDRCQ1xcdTA0QkVcXHUwNEMwLVxcdTA0QzFcXHUwNEMzXFx1MDRDNVxcdTA0QzdcXHUwNEM5XFx1MDRDQlxcdTA0Q0RcXHUwNEQwXFx1MDREMlxcdTA0RDRcXHUwNEQ2XFx1MDREOFxcdTA0REFcXHUwNERDXFx1MDRERVxcdTA0RTBcXHUwNEUyXFx1MDRFNFxcdTA0RTZcXHUwNEU4XFx1MDRFQVxcdTA0RUNcXHUwNEVFXFx1MDRGMFxcdTA0RjJcXHUwNEY0XFx1MDRGNlxcdTA0RjhcXHUwNEZBXFx1MDRGQ1xcdTA0RkVcXHUwNTAwXFx1MDUwMlxcdTA1MDRcXHUwNTA2XFx1MDUwOFxcdTA1MEFcXHUwNTBDXFx1MDUwRVxcdTA1MTBcXHUwNTEyXFx1MDUxNFxcdTA1MTZcXHUwNTE4XFx1MDUxQVxcdTA1MUNcXHUwNTFFXFx1MDUyMFxcdTA1MjJcXHUwNTI0XFx1MDUyNlxcdTA1MjhcXHUwNTJBXFx1MDUyQ1xcdTA1MkVcXHUwNTMxLVxcdTA1NTZcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEzQTAtXFx1MTNGNVxcdTFFMDBcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUxRTA4XFx1MUUwQVxcdTFFMENcXHUxRTBFXFx1MUUxMFxcdTFFMTJcXHUxRTE0XFx1MUUxNlxcdTFFMThcXHUxRTFBXFx1MUUxQ1xcdTFFMUVcXHUxRTIwXFx1MUUyMlxcdTFFMjRcXHUxRTI2XFx1MUUyOFxcdTFFMkFcXHUxRTJDXFx1MUUyRVxcdTFFMzBcXHUxRTMyXFx1MUUzNFxcdTFFMzZcXHUxRTM4XFx1MUUzQVxcdTFFM0NcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUxRTQ0XFx1MUU0NlxcdTFFNDhcXHUxRTRBXFx1MUU0Q1xcdTFFNEVcXHUxRTUwXFx1MUU1MlxcdTFFNTRcXHUxRTU2XFx1MUU1OFxcdTFFNUFcXHUxRTVDXFx1MUU1RVxcdTFFNjBcXHUxRTYyXFx1MUU2NFxcdTFFNjZcXHUxRTY4XFx1MUU2QVxcdTFFNkNcXHUxRTZFXFx1MUU3MFxcdTFFNzJcXHUxRTc0XFx1MUU3NlxcdTFFNzhcXHUxRTdBXFx1MUU3Q1xcdTFFN0VcXHUxRTgwXFx1MUU4MlxcdTFFODRcXHUxRTg2XFx1MUU4OFxcdTFFOEFcXHUxRThDXFx1MUU4RVxcdTFFOTBcXHUxRTkyXFx1MUU5NFxcdTFFOUVcXHUxRUEwXFx1MUVBMlxcdTFFQTRcXHUxRUE2XFx1MUVBOFxcdTFFQUFcXHUxRUFDXFx1MUVBRVxcdTFFQjBcXHUxRUIyXFx1MUVCNFxcdTFFQjZcXHUxRUI4XFx1MUVCQVxcdTFFQkNcXHUxRUJFXFx1MUVDMFxcdTFFQzJcXHUxRUM0XFx1MUVDNlxcdTFFQzhcXHUxRUNBXFx1MUVDQ1xcdTFFQ0VcXHUxRUQwXFx1MUVEMlxcdTFFRDRcXHUxRUQ2XFx1MUVEOFxcdTFFREFcXHUxRURDXFx1MUVERVxcdTFFRTBcXHUxRUUyXFx1MUVFNFxcdTFFRTZcXHUxRUU4XFx1MUVFQVxcdTFFRUNcXHUxRUVFXFx1MUVGMFxcdTFFRjJcXHUxRUY0XFx1MUVGNlxcdTFFRjhcXHUxRUZBXFx1MUVGQ1xcdTFFRkVcXHUxRjA4LVxcdTFGMEZcXHUxRjE4LVxcdTFGMURcXHUxRjI4LVxcdTFGMkZcXHUxRjM4LVxcdTFGM0ZcXHUxRjQ4LVxcdTFGNERcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGXFx1MUY2OC1cXHUxRjZGXFx1MUZCOC1cXHUxRkJCXFx1MUZDOC1cXHUxRkNCXFx1MUZEOC1cXHUxRkRCXFx1MUZFOC1cXHUxRkVDXFx1MUZGOC1cXHUxRkZCXFx1MjEwMlxcdTIxMDdcXHUyMTBCLVxcdTIxMERcXHUyMTEwLVxcdTIxMTJcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEzMC1cXHUyMTMzXFx1MjEzRS1cXHUyMTNGXFx1MjE0NVxcdTIxODNcXHUyQzAwLVxcdTJDMkVcXHUyQzYwXFx1MkM2Mi1cXHUyQzY0XFx1MkM2N1xcdTJDNjlcXHUyQzZCXFx1MkM2RC1cXHUyQzcwXFx1MkM3MlxcdTJDNzVcXHUyQzdFLVxcdTJDODBcXHUyQzgyXFx1MkM4NFxcdTJDODZcXHUyQzg4XFx1MkM4QVxcdTJDOENcXHUyQzhFXFx1MkM5MFxcdTJDOTJcXHUyQzk0XFx1MkM5NlxcdTJDOThcXHUyQzlBXFx1MkM5Q1xcdTJDOUVcXHUyQ0EwXFx1MkNBMlxcdTJDQTRcXHUyQ0E2XFx1MkNBOFxcdTJDQUFcXHUyQ0FDXFx1MkNBRVxcdTJDQjBcXHUyQ0IyXFx1MkNCNFxcdTJDQjZcXHUyQ0I4XFx1MkNCQVxcdTJDQkNcXHUyQ0JFXFx1MkNDMFxcdTJDQzJcXHUyQ0M0XFx1MkNDNlxcdTJDQzhcXHUyQ0NBXFx1MkNDQ1xcdTJDQ0VcXHUyQ0QwXFx1MkNEMlxcdTJDRDRcXHUyQ0Q2XFx1MkNEOFxcdTJDREFcXHUyQ0RDXFx1MkNERVxcdTJDRTBcXHUyQ0UyXFx1MkNFQlxcdTJDRURcXHUyQ0YyXFx1QTY0MFxcdUE2NDJcXHVBNjQ0XFx1QTY0NlxcdUE2NDhcXHVBNjRBXFx1QTY0Q1xcdUE2NEVcXHVBNjUwXFx1QTY1MlxcdUE2NTRcXHVBNjU2XFx1QTY1OFxcdUE2NUFcXHVBNjVDXFx1QTY1RVxcdUE2NjBcXHVBNjYyXFx1QTY2NFxcdUE2NjZcXHVBNjY4XFx1QTY2QVxcdUE2NkNcXHVBNjgwXFx1QTY4MlxcdUE2ODRcXHVBNjg2XFx1QTY4OFxcdUE2OEFcXHVBNjhDXFx1QTY4RVxcdUE2OTBcXHVBNjkyXFx1QTY5NFxcdUE2OTZcXHVBNjk4XFx1QTY5QVxcdUE3MjJcXHVBNzI0XFx1QTcyNlxcdUE3MjhcXHVBNzJBXFx1QTcyQ1xcdUE3MkVcXHVBNzMyXFx1QTczNFxcdUE3MzZcXHVBNzM4XFx1QTczQVxcdUE3M0NcXHVBNzNFXFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTc0NlxcdUE3NDhcXHVBNzRBXFx1QTc0Q1xcdUE3NEVcXHVBNzUwXFx1QTc1MlxcdUE3NTRcXHVBNzU2XFx1QTc1OFxcdUE3NUFcXHVBNzVDXFx1QTc1RVxcdUE3NjBcXHVBNzYyXFx1QTc2NFxcdUE3NjZcXHVBNzY4XFx1QTc2QVxcdUE3NkNcXHVBNzZFXFx1QTc3OVxcdUE3N0JcXHVBNzdELVxcdUE3N0VcXHVBNzgwXFx1QTc4MlxcdUE3ODRcXHVBNzg2XFx1QTc4QlxcdUE3OERcXHVBNzkwXFx1QTc5MlxcdUE3OTZcXHVBNzk4XFx1QTc5QVxcdUE3OUNcXHVBNzlFXFx1QTdBMFxcdUE3QTJcXHVBN0E0XFx1QTdBNlxcdUE3QThcXHVBN0FBLVxcdUE3QURcXHVBN0IwLVxcdUE3QjRcXHVBN0I2XFx1RkYyMS1cXHVGRjNBLy5zb3VyY2UsXG4gICAgLy8gTGV0dGVyLCBUaXRsZWNhc2VcbiAgICAvXFx1MDFDNVxcdTAxQzhcXHUwMUNCXFx1MDFGMlxcdTFGODgtXFx1MUY4RlxcdTFGOTgtXFx1MUY5RlxcdTFGQTgtXFx1MUZBRlxcdTFGQkNcXHUxRkNDXFx1MUZGQy8uc291cmNlLFxuICAgIC8vIExldHRlciwgTG93ZXJjYXNlXG4gICAgL1xcdTAwNjEtXFx1MDA3QVxcdTAwQjVcXHUwMERGLVxcdTAwRjZcXHUwMEY4LVxcdTAwRkZcXHUwMTAxXFx1MDEwM1xcdTAxMDVcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDEwRlxcdTAxMTFcXHUwMTEzXFx1MDExNVxcdTAxMTdcXHUwMTE5XFx1MDExQlxcdTAxMURcXHUwMTFGXFx1MDEyMVxcdTAxMjNcXHUwMTI1XFx1MDEyN1xcdTAxMjlcXHUwMTJCXFx1MDEyRFxcdTAxMkZcXHUwMTMxXFx1MDEzM1xcdTAxMzVcXHUwMTM3LVxcdTAxMzhcXHUwMTNBXFx1MDEzQ1xcdTAxM0VcXHUwMTQwXFx1MDE0MlxcdTAxNDRcXHUwMTQ2XFx1MDE0OC1cXHUwMTQ5XFx1MDE0QlxcdTAxNERcXHUwMTRGXFx1MDE1MVxcdTAxNTNcXHUwMTU1XFx1MDE1N1xcdTAxNTlcXHUwMTVCXFx1MDE1RFxcdTAxNUZcXHUwMTYxXFx1MDE2M1xcdTAxNjVcXHUwMTY3XFx1MDE2OVxcdTAxNkJcXHUwMTZEXFx1MDE2RlxcdTAxNzFcXHUwMTczXFx1MDE3NVxcdTAxNzdcXHUwMTdBXFx1MDE3Q1xcdTAxN0UtXFx1MDE4MFxcdTAxODNcXHUwMTg1XFx1MDE4OFxcdTAxOEMtXFx1MDE4RFxcdTAxOTJcXHUwMTk1XFx1MDE5OS1cXHUwMTlCXFx1MDE5RVxcdTAxQTFcXHUwMUEzXFx1MDFBNVxcdTAxQThcXHUwMUFBLVxcdTAxQUJcXHUwMUFEXFx1MDFCMFxcdTAxQjRcXHUwMUI2XFx1MDFCOS1cXHUwMUJBXFx1MDFCRC1cXHUwMUJGXFx1MDFDNlxcdTAxQzlcXHUwMUNDXFx1MDFDRVxcdTAxRDBcXHUwMUQyXFx1MDFENFxcdTAxRDZcXHUwMUQ4XFx1MDFEQVxcdTAxREMtXFx1MDFERFxcdTAxREZcXHUwMUUxXFx1MDFFM1xcdTAxRTVcXHUwMUU3XFx1MDFFOVxcdTAxRUJcXHUwMUVEXFx1MDFFRi1cXHUwMUYwXFx1MDFGM1xcdTAxRjVcXHUwMUY5XFx1MDFGQlxcdTAxRkRcXHUwMUZGXFx1MDIwMVxcdTAyMDNcXHUwMjA1XFx1MDIwN1xcdTAyMDlcXHUwMjBCXFx1MDIwRFxcdTAyMEZcXHUwMjExXFx1MDIxM1xcdTAyMTVcXHUwMjE3XFx1MDIxOVxcdTAyMUJcXHUwMjFEXFx1MDIxRlxcdTAyMjFcXHUwMjIzXFx1MDIyNVxcdTAyMjdcXHUwMjI5XFx1MDIyQlxcdTAyMkRcXHUwMjJGXFx1MDIzMVxcdTAyMzMtXFx1MDIzOVxcdTAyM0NcXHUwMjNGLVxcdTAyNDBcXHUwMjQyXFx1MDI0N1xcdTAyNDlcXHUwMjRCXFx1MDI0RFxcdTAyNEYtXFx1MDI5M1xcdTAyOTUtXFx1MDJBRlxcdTAzNzFcXHUwMzczXFx1MDM3N1xcdTAzN0ItXFx1MDM3RFxcdTAzOTBcXHUwM0FDLVxcdTAzQ0VcXHUwM0QwLVxcdTAzRDFcXHUwM0Q1LVxcdTAzRDdcXHUwM0Q5XFx1MDNEQlxcdTAzRERcXHUwM0RGXFx1MDNFMVxcdTAzRTNcXHUwM0U1XFx1MDNFN1xcdTAzRTlcXHUwM0VCXFx1MDNFRFxcdTAzRUYtXFx1MDNGM1xcdTAzRjVcXHUwM0Y4XFx1MDNGQi1cXHUwM0ZDXFx1MDQzMC1cXHUwNDVGXFx1MDQ2MVxcdTA0NjNcXHUwNDY1XFx1MDQ2N1xcdTA0NjlcXHUwNDZCXFx1MDQ2RFxcdTA0NkZcXHUwNDcxXFx1MDQ3M1xcdTA0NzVcXHUwNDc3XFx1MDQ3OVxcdTA0N0JcXHUwNDdEXFx1MDQ3RlxcdTA0ODFcXHUwNDhCXFx1MDQ4RFxcdTA0OEZcXHUwNDkxXFx1MDQ5M1xcdTA0OTVcXHUwNDk3XFx1MDQ5OVxcdTA0OUJcXHUwNDlEXFx1MDQ5RlxcdTA0QTFcXHUwNEEzXFx1MDRBNVxcdTA0QTdcXHUwNEE5XFx1MDRBQlxcdTA0QURcXHUwNEFGXFx1MDRCMVxcdTA0QjNcXHUwNEI1XFx1MDRCN1xcdTA0QjlcXHUwNEJCXFx1MDRCRFxcdTA0QkZcXHUwNEMyXFx1MDRDNFxcdTA0QzZcXHUwNEM4XFx1MDRDQVxcdTA0Q0NcXHUwNENFLVxcdTA0Q0ZcXHUwNEQxXFx1MDREM1xcdTA0RDVcXHUwNEQ3XFx1MDREOVxcdTA0REJcXHUwNEREXFx1MDRERlxcdTA0RTFcXHUwNEUzXFx1MDRFNVxcdTA0RTdcXHUwNEU5XFx1MDRFQlxcdTA0RURcXHUwNEVGXFx1MDRGMVxcdTA0RjNcXHUwNEY1XFx1MDRGN1xcdTA0RjlcXHUwNEZCXFx1MDRGRFxcdTA0RkZcXHUwNTAxXFx1MDUwM1xcdTA1MDVcXHUwNTA3XFx1MDUwOVxcdTA1MEJcXHUwNTBEXFx1MDUwRlxcdTA1MTFcXHUwNTEzXFx1MDUxNVxcdTA1MTdcXHUwNTE5XFx1MDUxQlxcdTA1MURcXHUwNTFGXFx1MDUyMVxcdTA1MjNcXHUwNTI1XFx1MDUyN1xcdTA1MjlcXHUwNTJCXFx1MDUyRFxcdTA1MkZcXHUwNTYxLVxcdTA1ODdcXHUxM0Y4LVxcdTEzRkRcXHUxRDAwLVxcdTFEMkJcXHUxRDZCLVxcdTFENzdcXHUxRDc5LVxcdTFEOUFcXHUxRTAxXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MUUwOVxcdTFFMEJcXHUxRTBEXFx1MUUwRlxcdTFFMTFcXHUxRTEzXFx1MUUxNVxcdTFFMTdcXHUxRTE5XFx1MUUxQlxcdTFFMURcXHUxRTFGXFx1MUUyMVxcdTFFMjNcXHUxRTI1XFx1MUUyN1xcdTFFMjlcXHUxRTJCXFx1MUUyRFxcdTFFMkZcXHUxRTMxXFx1MUUzM1xcdTFFMzVcXHUxRTM3XFx1MUUzOVxcdTFFM0JcXHUxRTNEXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MUU0NVxcdTFFNDdcXHUxRTQ5XFx1MUU0QlxcdTFFNERcXHUxRTRGXFx1MUU1MVxcdTFFNTNcXHUxRTU1XFx1MUU1N1xcdTFFNTlcXHUxRTVCXFx1MUU1RFxcdTFFNUZcXHUxRTYxXFx1MUU2M1xcdTFFNjVcXHUxRTY3XFx1MUU2OVxcdTFFNkJcXHUxRTZEXFx1MUU2RlxcdTFFNzFcXHUxRTczXFx1MUU3NVxcdTFFNzdcXHUxRTc5XFx1MUU3QlxcdTFFN0RcXHUxRTdGXFx1MUU4MVxcdTFFODNcXHUxRTg1XFx1MUU4N1xcdTFFODlcXHUxRThCXFx1MUU4RFxcdTFFOEZcXHUxRTkxXFx1MUU5M1xcdTFFOTUtXFx1MUU5RFxcdTFFOUZcXHUxRUExXFx1MUVBM1xcdTFFQTVcXHUxRUE3XFx1MUVBOVxcdTFFQUJcXHUxRUFEXFx1MUVBRlxcdTFFQjFcXHUxRUIzXFx1MUVCNVxcdTFFQjdcXHUxRUI5XFx1MUVCQlxcdTFFQkRcXHUxRUJGXFx1MUVDMVxcdTFFQzNcXHUxRUM1XFx1MUVDN1xcdTFFQzlcXHUxRUNCXFx1MUVDRFxcdTFFQ0ZcXHUxRUQxXFx1MUVEM1xcdTFFRDVcXHUxRUQ3XFx1MUVEOVxcdTFFREJcXHUxRUREXFx1MUVERlxcdTFFRTFcXHUxRUUzXFx1MUVFNVxcdTFFRTdcXHUxRUU5XFx1MUVFQlxcdTFFRURcXHUxRUVGXFx1MUVGMVxcdTFFRjNcXHUxRUY1XFx1MUVGN1xcdTFFRjlcXHUxRUZCXFx1MUVGRFxcdTFFRkYtXFx1MUYwN1xcdTFGMTAtXFx1MUYxNVxcdTFGMjAtXFx1MUYyN1xcdTFGMzAtXFx1MUYzN1xcdTFGNDAtXFx1MUY0NVxcdTFGNTAtXFx1MUY1N1xcdTFGNjAtXFx1MUY2N1xcdTFGNzAtXFx1MUY3RFxcdTFGODAtXFx1MUY4N1xcdTFGOTAtXFx1MUY5N1xcdTFGQTAtXFx1MUZBN1xcdTFGQjAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCN1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQzdcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGRDdcXHUxRkUwLVxcdTFGRTdcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRjdcXHUyMTBBXFx1MjEwRS1cXHUyMTBGXFx1MjExM1xcdTIxMkZcXHUyMTM0XFx1MjEzOVxcdTIxM0MtXFx1MjEzRFxcdTIxNDYtXFx1MjE0OVxcdTIxNEVcXHUyMTg0XFx1MkMzMC1cXHUyQzVFXFx1MkM2MVxcdTJDNjUtXFx1MkM2NlxcdTJDNjhcXHUyQzZBXFx1MkM2Q1xcdTJDNzFcXHUyQzczLVxcdTJDNzRcXHUyQzc2LVxcdTJDN0JcXHUyQzgxXFx1MkM4M1xcdTJDODVcXHUyQzg3XFx1MkM4OVxcdTJDOEJcXHUyQzhEXFx1MkM4RlxcdTJDOTFcXHUyQzkzXFx1MkM5NVxcdTJDOTdcXHUyQzk5XFx1MkM5QlxcdTJDOURcXHUyQzlGXFx1MkNBMVxcdTJDQTNcXHUyQ0E1XFx1MkNBN1xcdTJDQTlcXHUyQ0FCXFx1MkNBRFxcdTJDQUZcXHUyQ0IxXFx1MkNCM1xcdTJDQjVcXHUyQ0I3XFx1MkNCOVxcdTJDQkJcXHUyQ0JEXFx1MkNCRlxcdTJDQzFcXHUyQ0MzXFx1MkNDNVxcdTJDQzdcXHUyQ0M5XFx1MkNDQlxcdTJDQ0RcXHUyQ0NGXFx1MkNEMVxcdTJDRDNcXHUyQ0Q1XFx1MkNEN1xcdTJDRDlcXHUyQ0RCXFx1MkNERFxcdTJDREZcXHUyQ0UxXFx1MkNFMy1cXHUyQ0U0XFx1MkNFQ1xcdTJDRUVcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHVBNjQxXFx1QTY0M1xcdUE2NDVcXHVBNjQ3XFx1QTY0OVxcdUE2NEJcXHVBNjREXFx1QTY0RlxcdUE2NTFcXHVBNjUzXFx1QTY1NVxcdUE2NTdcXHVBNjU5XFx1QTY1QlxcdUE2NURcXHVBNjVGXFx1QTY2MVxcdUE2NjNcXHVBNjY1XFx1QTY2N1xcdUE2NjlcXHVBNjZCXFx1QTY2RFxcdUE2ODFcXHVBNjgzXFx1QTY4NVxcdUE2ODdcXHVBNjg5XFx1QTY4QlxcdUE2OERcXHVBNjhGXFx1QTY5MVxcdUE2OTNcXHVBNjk1XFx1QTY5N1xcdUE2OTlcXHVBNjlCXFx1QTcyM1xcdUE3MjVcXHVBNzI3XFx1QTcyOVxcdUE3MkJcXHVBNzJEXFx1QTcyRi1cXHVBNzMxXFx1QTczM1xcdUE3MzVcXHVBNzM3XFx1QTczOVxcdUE3M0JcXHVBNzNEXFx1QTczRlxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3NDdcXHVBNzQ5XFx1QTc0QlxcdUE3NERcXHVBNzRGXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1QTc1N1xcdUE3NTlcXHVBNzVCXFx1QTc1RFxcdUE3NUZcXHVBNzYxXFx1QTc2M1xcdUE3NjVcXHVBNzY3XFx1QTc2OVxcdUE3NkJcXHVBNzZEXFx1QTc2RlxcdUE3NzEtXFx1QTc3OFxcdUE3N0FcXHVBNzdDXFx1QTc3RlxcdUE3ODFcXHVBNzgzXFx1QTc4NVxcdUE3ODdcXHVBNzhDXFx1QTc4RVxcdUE3OTFcXHVBNzkzLVxcdUE3OTVcXHVBNzk3XFx1QTc5OVxcdUE3OUJcXHVBNzlEXFx1QTc5RlxcdUE3QTFcXHVBN0EzXFx1QTdBNVxcdUE3QTdcXHVBN0E5XFx1QTdCNVxcdUE3QjdcXHVBN0ZBXFx1QUIzMC1cXHVBQjVBXFx1QUI2MC1cXHVBQjY1XFx1QUI3MC1cXHVBQkJGXFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkY0MS1cXHVGRjVBLy5zb3VyY2UsXG4gICAgLy8gTGV0dGVyLCBNb2RpZmllclxuICAgIC9cXHUwMkIwLVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzRcXHUwMzdBXFx1MDU1OVxcdTA2NDBcXHUwNkU1LVxcdTA2RTZcXHUwN0Y0LVxcdTA3RjVcXHUwN0ZBXFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDk3MVxcdTBFNDZcXHUwRUM2XFx1MTBGQ1xcdTE3RDdcXHUxODQzXFx1MUFBN1xcdTFDNzgtXFx1MUM3RFxcdTFEMkMtXFx1MUQ2QVxcdTFENzhcXHUxRDlCLVxcdTFEQkZcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTJDN0MtXFx1MkM3RFxcdTJENkZcXHUyRTJGXFx1MzAwNVxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDlELVxcdTMwOUVcXHUzMEZDLVxcdTMwRkVcXHVBMDE1XFx1QTRGOC1cXHVBNEZEXFx1QTYwQ1xcdUE2N0ZcXHVBNjlDLVxcdUE2OURcXHVBNzE3LVxcdUE3MUZcXHVBNzcwXFx1QTc4OFxcdUE3RjgtXFx1QTdGOVxcdUE5Q0ZcXHVBOUU2XFx1QUE3MFxcdUFBRERcXHVBQUYzLVxcdUFBRjRcXHVBQjVDLVxcdUFCNUZcXHVGRjcwXFx1RkY5RS1cXHVGRjlGLy5zb3VyY2UsXG4gICAgLy8gTGV0dGVyLCBPdGhlclxuICAgIC9cXHUwMEFBXFx1MDBCQVxcdTAxQkJcXHUwMUMwLVxcdTAxQzNcXHUwMjk0XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYyMC1cXHUwNjNGXFx1MDY0MS1cXHUwNjRBXFx1MDY2RS1cXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RUUtXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA4MDAtXFx1MDgxNVxcdTA4NDAtXFx1MDg1OFxcdTA4QTAtXFx1MDhCNFxcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3Mi1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4Ri1cXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQy1cXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMC1cXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRi1cXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMi1cXHUwQTMzXFx1MEEzNS1cXHUwQTM2XFx1MEEzOC1cXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjItXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMC1cXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEYtXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzItXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDLVxcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTktXFx1MEI5QVxcdTBCOUNcXHUwQjlFLVxcdTBCOUZcXHUwQkEzLVxcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjAtXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMC1cXHUwQ0UxXFx1MENGMS1cXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMi1cXHUwRTMzXFx1MEU0MC1cXHUwRTQ1XFx1MEU4MS1cXHUwRTgyXFx1MEU4NFxcdTBFODctXFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBLVxcdTBFQUJcXHUwRUFELVxcdTBFQjBcXHUwRUIyLVxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NS1cXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwRDAtXFx1MTBGQVxcdTEwRkQtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEQ1xcdTE4MjAtXFx1MTg0MlxcdTE4NDQtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFLVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDNzdcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1LVxcdTFDRjZcXHUyMTM1LVxcdTIxMzhcXHUyRDMwLVxcdTJENjdcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUzMDA2XFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkQ1XFx1QTAwMC1cXHVBMDE0XFx1QTAxNi1cXHVBNDhDXFx1QTREMC1cXHVBNEY3XFx1QTUwMC1cXHVBNjBCXFx1QTYxMC1cXHVBNjFGXFx1QTYyQS1cXHVBNjJCXFx1QTY2RVxcdUE2QTAtXFx1QTZFNVxcdUE3OEZcXHVBN0Y3XFx1QTdGQi1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUUwLVxcdUE5RTRcXHVBOUU3LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNkZcXHVBQTcxLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjUtXFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQURDXFx1QUFFMC1cXHVBQUVBXFx1QUFGMlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MC1cXHVGQjQxXFx1RkI0My1cXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkY2Ni1cXHVGRjZGXFx1RkY3MS1cXHVGRjlEXFx1RkZBMC1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDLy5zb3VyY2UsXG5dLmpvaW4oJycpICsgJ10nKTtcbmNsYXNzIEJpYnRleFBhcnNlciB7XG4gICAgcGFyc2UoaW5wdXQsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAvLyB0aGlzLl9wcm9ncmVzcyA9IDBcbiAgICAgICAgdGhpcy5wb3MgPSAwO1xuICAgICAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMubWF4X2VudHJpZXMgPSBvcHRpb25zLm1heF9lbnRyaWVzIHx8IDA7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IDA7XG4gICAgICAgIHRoaXMucGFyc2luZyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2h1bmtzID0gW107XG4gICAgICAgIGlmIChvcHRpb25zLmFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iaWJ0ZXhBc3luYygpLnRoZW4oKCkgPT4gdGhpcy5jaHVua3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5iaWJ0ZXgoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNodW5rcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc1doaXRlc3BhY2UocywgaG9yaXpvbnRhbE9ubHkgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gKHMgPT09ICcgJyB8fCBzID09PSAnXFx0JyB8fCAoIWhvcml6b250YWxPbmx5ICYmIChzID09PSAnXFxyJyB8fCBzID09PSAnXFxuJykpKTtcbiAgICB9XG4gICAgbWF0Y2gocykge1xuICAgICAgICB0aGlzLnNraXBXaGl0ZXNwYWNlKCk7XG4gICAgICAgIGlmICh0aGlzLmlucHV0LnN1YnN0cih0aGlzLnBvcywgcy5sZW5ndGgpICE9PSBzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihgVG9rZW4gbWlzbWF0Y2gsIGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkocyl9LCBmb3VuZCAke0pTT04uc3RyaW5naWZ5KHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCAyMCkpfS4uLmAsIHRoaXMpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvcyArPSBzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgIH1cbiAgICB0cnlNYXRjaChzKSB7XG4gICAgICAgIHRoaXMuc2tpcFdoaXRlc3BhY2UoKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLmlucHV0LnN1YnN0cih0aGlzLnBvcywgcy5sZW5ndGgpID09PSBzKTtcbiAgICAgICAgLy8gdGhpcy5za2lwV2hpdGVzcGFjZSgpXG4gICAgfVxuICAgIHNraXBXaGl0ZXNwYWNlKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aCAmJiB0aGlzLmlzV2hpdGVzcGFjZSh0aGlzLmlucHV0W3RoaXMucG9zXSkpXG4gICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICAvLyBzaGFkeVxuICAgICAgICBpZiAodGhpcy5pbnB1dFt0aGlzLnBvc10gPT09ICclJykge1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgdGhpcy5pbnB1dC5sZW5ndGggJiYgdGhpcy5pbnB1dFt0aGlzLnBvc10gIT09ICdcXG4nKVxuICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aCAmJiB0aGlzLmlzV2hpdGVzcGFjZSh0aGlzLmlucHV0W3RoaXMucG9zXSkpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZV9icmFjZXMoKSB7XG4gICAgICAgIGxldCBicmFjZWNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5tYXRjaCgneycpO1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBsZXQgbWF0aCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0W3RoaXMucG9zXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd7JzpcbiAgICAgICAgICAgICAgICAgICAgYnJhY2Vjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJyYWNlY291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdVbmNsb3NlZCBtYXRoIHNlY3Rpb24nLCB0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJhY2Vjb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICckJzpcbiAgICAgICAgICAgICAgICAgICAgbWF0aCA9ICFtYXRoO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihgVW50ZXJtaW5hdGVkIGJyYWNlLXZhbHVlICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pbnB1dC5zdWJzdHIoc3RhcnQsIDIwKSl9YCwgdGhpcyk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlX3F1b3RlcygpIHtcbiAgICAgICAgdGhpcy5tYXRjaCgnXCInKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBvcztcbiAgICAgICAgbGV0IGJyYWNlY291bnQgPSAwO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0W3RoaXMucG9zXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd7JzpcbiAgICAgICAgICAgICAgICAgICAgYnJhY2Vjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICAgICAgICAgICAgYnJhY2Vjb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICAgICAgICAgIGlmIChicmFjZWNvdW50IDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihgVW50ZXJtaW5hdGVkIHF1b3RlLXZhbHVlICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pbnB1dC5zdWJzdHIoc3RhcnQsIDIwKSl9YCwgdGhpcyk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNpbmdsZV92YWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudHJ5TWF0Y2goJ3snKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVfYnJhY2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy50cnlNYXRjaCgnXCInKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVfcXVvdGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5rZXkoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gW107XG4gICAgICAgIHZhbHVlcy5wdXNoKHRoaXMuc2luZ2xlX3ZhbHVlKCkpO1xuICAgICAgICB3aGlsZSAodGhpcy50cnlNYXRjaCgnIycpKSB7XG4gICAgICAgICAgICB0aGlzLm1hdGNoKCcjJyk7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLnNpbmdsZV92YWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVzLmpvaW4oJycpO1xuICAgIH1cbiAgICBrZXkoYWxsb3dVbmljb2RlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBvcztcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA9PT0gdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcignUnVuYXdheSBrZXknLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0W3RoaXMucG9zXS5tYXRjaCgvWydhLXpBLVowLTkmO186XFxcXC4vLV0vKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhbGxvd1VuaWNvZGUgJiYgdGhpcy5pbnB1dFt0aGlzLnBvc10ubWF0Y2gobGV0dGVyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBrZXlfZXF1YWxzX3ZhbHVlKCkge1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmtleSgpO1xuICAgICAgICBpZiAoIXRoaXMudHJ5TWF0Y2goJz0nKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IoYC4uLiA9IHZhbHVlIGV4cGVjdGVkLCBlcXVhbHMgc2lnbiBtaXNzaW5nOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCAyMCkpfS4uLmAsIHRoaXMpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hdGNoKCc9Jyk7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIFtrZXksIHZhbF07XG4gICAgfVxuICAgIGtleV92YWx1ZV9saXN0KCkge1xuICAgICAgICB0aGlzLmtleV9lcXVhbHNfdmFsdWUoKTtcbiAgICAgICAgd2hpbGUgKHRoaXMudHJ5TWF0Y2goJywnKSkge1xuICAgICAgICAgICAgdGhpcy5tYXRjaCgnLCcpO1xuICAgICAgICAgICAgLy8gZml4ZXMgcHJvYmxlbXMgd2l0aCBjb21tYXMgYXQgdGhlIGVuZCBvZiBhIGxpc3RcbiAgICAgICAgICAgIGlmICh0aGlzLnRyeU1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMua2V5X2VxdWFsc192YWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVudHJ5KGQpIHtcbiAgICAgICAgdGhpcy5wYXJzaW5nID0gdGhpcy5rZXkodHJ1ZSk7XG4gICAgICAgIHRoaXMubWF0Y2goJywnKTtcbiAgICAgICAgdGhpcy5rZXlfdmFsdWVfbGlzdCgpO1xuICAgIH1cbiAgICBkaXJlY3RpdmUoKSB7XG4gICAgICAgIHRoaXMubWF0Y2goJ0AnKTtcbiAgICAgICAgcmV0dXJuIGBAJHt0aGlzLmtleSgpfWAudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgc3RyaW5nKCkge1xuICAgICAgICB0aGlzLmtleV9lcXVhbHNfdmFsdWUoKTtcbiAgICB9XG4gICAgcHJlYW1ibGUoKSB7XG4gICAgICAgIHRoaXMudmFsdWUoKTtcbiAgICB9XG4gICAgY29tbWVudCgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaXNXaGl0ZXNwYWNlKHRoaXMuaW5wdXRbdGhpcy5wb3NdLCB0cnVlKSlcbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgIGlmICh0aGlzLmlucHV0W3RoaXMucG9zXSA9PT0gJ3snKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlX2JyYWNlcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlICh0aGlzLmlucHV0W3RoaXMucG9zXSAhPT0gJ1xcbicgJiYgdGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgfVxuICAgIC8qXG4gICAgcHJpdmF0ZSBwcm9ncmVzcygpIHtcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5yb3VuZCgodGhpcy5wb3MgLyB0aGlzLmlucHV0Lmxlbmd0aCAqIDEwMCkgLyA1KSAqIDUgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBpZiAodGhpcy5fcHJvZ3Jlc3MgIT09IHByb2dyZXNzKSB7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzID0gcHJvZ3Jlc3NcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCAoJHt0aGlzLl9wcm9ncmVzc30lKSBgKVxuICAgICAgfVxuICAgIH1cbiAgICAqL1xuICAgIGhhc01vcmUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1heF9lbnRyaWVzICYmIHRoaXMuZW50cmllcyA+PSB0aGlzLm1heF9lbnRyaWVzKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gKHRoaXMucG9zIDwgdGhpcy5pbnB1dC5sZW5ndGgpO1xuICAgIH1cbiAgICBiaWJ0ZXgoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLmhhc01vcmUoKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZU5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBiaWJ0ZXhBc3luYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzTW9yZSgpID8gKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZSh0aGlzLnBhcnNlTmV4dCgpKSkpLnRoZW4oKCkgPT4gdGhpcy5iaWJ0ZXhBc3luYygpKSA6IFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG4gICAgcGFyc2VOZXh0KCkge1xuICAgICAgICAvLyB0aGlzLnByb2dyZXNzKClcbiAgICAgICAgY29uc3QgY2h1bmsgPSB7XG4gICAgICAgICAgICBvZmZzZXQ6IHtcbiAgICAgICAgICAgICAgICBwb3M6IHRoaXMucG9zLFxuICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMuaW5wdXQuc3Vic3RyaW5nKDAsIHRoaXMucG9zKS5zcGxpdCgnXFxuJykubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgIHRleHQ6IG51bGwsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2tpcFdoaXRlc3BhY2UoKTtcbiAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMuaW5wdXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgZ3VhcmQgPSAnJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLmRpcmVjdGl2ZSgpO1xuICAgICAgICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnQHN0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2goJ3snKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCgnfScpO1xuICAgICAgICAgICAgICAgICAgICBjaHVuay5zdHJpbmdEZWNsYXJhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0BwcmVhbWJsZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2goJ3snKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVhbWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoKCd9Jyk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rLnByZWFtYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQGNvbW1lbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmsuY29tbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyeU1hdGNoKCd7JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGd1YXJkID0gJ3t9JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnRyeU1hdGNoKCcoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGd1YXJkID0gJygpJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGBUb2tlbiBtaXNtYXRjaCwgZXhwZWN0ZWQgJ3snIG9yICcoJywgZm91bmQgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmlucHV0LnN1YnN0cih0aGlzLnBvcywgMjApKX0uLi5gLCB0aGlzKTsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaChndWFyZFswXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cnkoZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2goZ3VhcmRbMV0pO1xuICAgICAgICAgICAgICAgICAgICBjaHVuay5lbnRyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcysrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLm5hbWUgIT09ICdQYXJzZUVycm9yJylcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICBjaHVuay5lcnJvciA9IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIC8vIHNraXAgYWhlYWQgdG8gdGhlIG5leHQgQCBhbmQgdHJ5IGFnYWluXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgPSBjaHVuay5vZmZzZXQucG9zICsgMTtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMuaW5wdXQubGVuZ3RoICYmIHRoaXMuaW5wdXRbdGhpcy5wb3NdICE9PSAnQCcpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcoY2h1bmsub2Zmc2V0LnBvcywgdGhpcy5wb3MpO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5jaHVua3MubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGNodW5rLmVycm9yICYmIHRoaXMuY2h1bmtzLmxlbmd0aCAmJiB0aGlzLmNodW5rc1tsYXN0XS5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5jaHVua3NbbGFzdF0udGV4dCArPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2h1bmsudGV4dCA9IHRleHQ7XG4gICAgICAgICAgICB0aGlzLmNodW5rcy5wdXNoKGNodW5rKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKlxuICogUmVhZHMgdGhlIGJpYnRleCBpbnB1dCBhbmQgc3BsaXRzIGl0IGludG8gc2VwYXJhdGUgY2h1bmtzIG9mIGBAc3RyaW5nYHMsIGBAY29tbWVudGBzLCBhbmQgYmlidGV4IGVudHJpZXMuIFVzZWZ1bCBmb3IgZGV0ZWN0aW5nIGlmIGEgZmlsZSBpcyBiaWJ0ZXggZmlsZSBhbmQgZm9yIGZpbHRlcmluZyBvdXQgYmFzaWMgZXJyb3JzIHRoYXQgd291bGRcbiAqIG1ha2UgdGhlIG1vcmUgc29waGlzdGljYXRlZCBbW2JpYnRleC5wYXJzZV1dIHJlamVjdCB0aGUgd2hvbGUgZmlsZVxuICpcbiAqIEByZXR1cm5zIGFycmF5IG9mIGNodW5rcywgd2l0aCBtYXJrZXJzIGZvciB0eXBlIGFuZCBlcnJvcnMgKGlmIGFueSkgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gKG5ldyBCaWJ0ZXhQYXJzZXIpLnBhcnNlKGlucHV0LCBvcHRpb25zKTtcbn1cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNodW5rZXIuanMubWFwIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzY2lpOiByZXF1aXJlKCcuL3RhYmxlcy9hc2NpaS5qc29uJyksXG4gIGFzY2lpX2JpYnRleF9jcmVhdG9yOiByZXF1aXJlKCcuL3RhYmxlcy9hc2NpaS1iaWJ0ZXgtY3JlYXRvci5qc29uJyksXG4gIHVuaWNvZGU6IHJlcXVpcmUoJy4vdGFibGVzL3VuaWNvZGUuanNvbicpLFxuICBsYXRleDogcmVxdWlyZSgnLi90YWJsZXMvbGF0ZXguanNvbicpLFxuICBkaWFjcml0aWNzOiByZXF1aXJlKCcuL3RhYmxlcy9kaWFjcml0aWNzLmpzb24nKSxcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IFtcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0MnLFxuICAgICAgICAnYWxpYXMnOiAnT3RoZXInLFxuICAgICAgICAnaXNCbXBMYXN0JzogdHJ1ZSxcbiAgICAgICAgJ2JtcCc6ICdcXDAtXFx4MUZcXHg3Ri1cXHg5RlxceEFEXFx1MDM3OFxcdTAzNzlcXHUwMzgwLVxcdTAzODNcXHUwMzhCXFx1MDM4RFxcdTAzQTJcXHUwNTMwXFx1MDU1N1xcdTA1NThcXHUwNThCXFx1MDU4Q1xcdTA1OTBcXHUwNUM4LVxcdTA1Q0ZcXHUwNUVCLVxcdTA1RUVcXHUwNUY1LVxcdTA2MDVcXHUwNjFDXFx1MDYxRFxcdTA2RERcXHUwNzBFXFx1MDcwRlxcdTA3NEJcXHUwNzRDXFx1MDdCMi1cXHUwN0JGXFx1MDdGQlxcdTA3RkNcXHUwODJFXFx1MDgyRlxcdTA4M0ZcXHUwODVDXFx1MDg1RFxcdTA4NUZcXHUwODZCLVxcdTA4OUZcXHUwOEI1XFx1MDhDOC1cXHUwOEQyXFx1MDhFMlxcdTA5ODRcXHUwOThEXFx1MDk4RVxcdTA5OTFcXHUwOTkyXFx1MDlBOVxcdTA5QjFcXHUwOUIzLVxcdTA5QjVcXHUwOUJBXFx1MDlCQlxcdTA5QzVcXHUwOUM2XFx1MDlDOVxcdTA5Q0FcXHUwOUNGLVxcdTA5RDZcXHUwOUQ4LVxcdTA5REJcXHUwOURFXFx1MDlFNFxcdTA5RTVcXHUwOUZGXFx1MEEwMFxcdTBBMDRcXHUwQTBCLVxcdTBBMEVcXHUwQTExXFx1MEExMlxcdTBBMjlcXHUwQTMxXFx1MEEzNFxcdTBBMzdcXHUwQTNBXFx1MEEzQlxcdTBBM0RcXHUwQTQzLVxcdTBBNDZcXHUwQTQ5XFx1MEE0QVxcdTBBNEUtXFx1MEE1MFxcdTBBNTItXFx1MEE1OFxcdTBBNURcXHUwQTVGLVxcdTBBNjVcXHUwQTc3LVxcdTBBODBcXHUwQTg0XFx1MEE4RVxcdTBBOTJcXHUwQUE5XFx1MEFCMVxcdTBBQjRcXHUwQUJBXFx1MEFCQlxcdTBBQzZcXHUwQUNBXFx1MEFDRVxcdTBBQ0ZcXHUwQUQxLVxcdTBBREZcXHUwQUU0XFx1MEFFNVxcdTBBRjItXFx1MEFGOFxcdTBCMDBcXHUwQjA0XFx1MEIwRFxcdTBCMEVcXHUwQjExXFx1MEIxMlxcdTBCMjlcXHUwQjMxXFx1MEIzNFxcdTBCM0FcXHUwQjNCXFx1MEI0NVxcdTBCNDZcXHUwQjQ5XFx1MEI0QVxcdTBCNEUtXFx1MEI1NFxcdTBCNTgtXFx1MEI1QlxcdTBCNUVcXHUwQjY0XFx1MEI2NVxcdTBCNzgtXFx1MEI4MVxcdTBCODRcXHUwQjhCLVxcdTBCOERcXHUwQjkxXFx1MEI5Ni1cXHUwQjk4XFx1MEI5QlxcdTBCOURcXHUwQkEwLVxcdTBCQTJcXHUwQkE1LVxcdTBCQTdcXHUwQkFCLVxcdTBCQURcXHUwQkJBLVxcdTBCQkRcXHUwQkMzLVxcdTBCQzVcXHUwQkM5XFx1MEJDRVxcdTBCQ0ZcXHUwQkQxLVxcdTBCRDZcXHUwQkQ4LVxcdTBCRTVcXHUwQkZCLVxcdTBCRkZcXHUwQzBEXFx1MEMxMVxcdTBDMjlcXHUwQzNBLVxcdTBDM0NcXHUwQzQ1XFx1MEM0OVxcdTBDNEUtXFx1MEM1NFxcdTBDNTdcXHUwQzVCLVxcdTBDNUZcXHUwQzY0XFx1MEM2NVxcdTBDNzAtXFx1MEM3NlxcdTBDOERcXHUwQzkxXFx1MENBOVxcdTBDQjRcXHUwQ0JBXFx1MENCQlxcdTBDQzVcXHUwQ0M5XFx1MENDRS1cXHUwQ0Q0XFx1MENENy1cXHUwQ0REXFx1MENERlxcdTBDRTRcXHUwQ0U1XFx1MENGMFxcdTBDRjMtXFx1MENGRlxcdTBEMERcXHUwRDExXFx1MEQ0NVxcdTBENDlcXHUwRDUwLVxcdTBENTNcXHUwRDY0XFx1MEQ2NVxcdTBEODBcXHUwRDg0XFx1MEQ5Ny1cXHUwRDk5XFx1MERCMlxcdTBEQkNcXHUwREJFXFx1MERCRlxcdTBEQzctXFx1MERDOVxcdTBEQ0ItXFx1MERDRVxcdTBERDVcXHUwREQ3XFx1MERFMC1cXHUwREU1XFx1MERGMFxcdTBERjFcXHUwREY1LVxcdTBFMDBcXHUwRTNCLVxcdTBFM0VcXHUwRTVDLVxcdTBFODBcXHUwRTgzXFx1MEU4NVxcdTBFOEJcXHUwRUE0XFx1MEVBNlxcdTBFQkVcXHUwRUJGXFx1MEVDNVxcdTBFQzdcXHUwRUNFXFx1MEVDRlxcdTBFREFcXHUwRURCXFx1MEVFMC1cXHUwRUZGXFx1MEY0OFxcdTBGNkQtXFx1MEY3MFxcdTBGOThcXHUwRkJEXFx1MEZDRFxcdTBGREItXFx1MEZGRlxcdTEwQzZcXHUxMEM4LVxcdTEwQ0NcXHUxMENFXFx1MTBDRlxcdTEyNDlcXHUxMjRFXFx1MTI0RlxcdTEyNTdcXHUxMjU5XFx1MTI1RVxcdTEyNUZcXHUxMjg5XFx1MTI4RVxcdTEyOEZcXHUxMkIxXFx1MTJCNlxcdTEyQjdcXHUxMkJGXFx1MTJDMVxcdTEyQzZcXHUxMkM3XFx1MTJEN1xcdTEzMTFcXHUxMzE2XFx1MTMxN1xcdTEzNUJcXHUxMzVDXFx1MTM3RC1cXHUxMzdGXFx1MTM5QS1cXHUxMzlGXFx1MTNGNlxcdTEzRjdcXHUxM0ZFXFx1MTNGRlxcdTE2OUQtXFx1MTY5RlxcdTE2RjktXFx1MTZGRlxcdTE3MERcXHUxNzE1LVxcdTE3MUZcXHUxNzM3LVxcdTE3M0ZcXHUxNzU0LVxcdTE3NUZcXHUxNzZEXFx1MTc3MVxcdTE3NzQtXFx1MTc3RlxcdTE3REVcXHUxN0RGXFx1MTdFQS1cXHUxN0VGXFx1MTdGQS1cXHUxN0ZGXFx1MTgwRVxcdTE4MEZcXHUxODFBLVxcdTE4MUZcXHUxODc5LVxcdTE4N0ZcXHUxOEFCLVxcdTE4QUZcXHUxOEY2LVxcdTE4RkZcXHUxOTFGXFx1MTkyQy1cXHUxOTJGXFx1MTkzQy1cXHUxOTNGXFx1MTk0MS1cXHUxOTQzXFx1MTk2RVxcdTE5NkZcXHUxOTc1LVxcdTE5N0ZcXHUxOUFDLVxcdTE5QUZcXHUxOUNBLVxcdTE5Q0ZcXHUxOURCLVxcdTE5RERcXHUxQTFDXFx1MUExRFxcdTFBNUZcXHUxQTdEXFx1MUE3RVxcdTFBOEEtXFx1MUE4RlxcdTFBOUEtXFx1MUE5RlxcdTFBQUVcXHUxQUFGXFx1MUFDMS1cXHUxQUZGXFx1MUI0Qy1cXHUxQjRGXFx1MUI3RC1cXHUxQjdGXFx1MUJGNC1cXHUxQkZCXFx1MUMzOC1cXHUxQzNBXFx1MUM0QS1cXHUxQzRDXFx1MUM4OS1cXHUxQzhGXFx1MUNCQlxcdTFDQkNcXHUxQ0M4LVxcdTFDQ0ZcXHUxQ0ZCLVxcdTFDRkZcXHUxREZBXFx1MUYxNlxcdTFGMTdcXHUxRjFFXFx1MUYxRlxcdTFGNDZcXHUxRjQ3XFx1MUY0RVxcdTFGNEZcXHUxRjU4XFx1MUY1QVxcdTFGNUNcXHUxRjVFXFx1MUY3RVxcdTFGN0ZcXHUxRkI1XFx1MUZDNVxcdTFGRDRcXHUxRkQ1XFx1MUZEQ1xcdTFGRjBcXHUxRkYxXFx1MUZGNVxcdTFGRkZcXHUyMDBCLVxcdTIwMEZcXHUyMDJBLVxcdTIwMkVcXHUyMDYwLVxcdTIwNkZcXHUyMDcyXFx1MjA3M1xcdTIwOEZcXHUyMDlELVxcdTIwOUZcXHUyMEMwLVxcdTIwQ0ZcXHUyMEYxLVxcdTIwRkZcXHUyMThDLVxcdTIxOEZcXHUyNDI3LVxcdTI0M0ZcXHUyNDRCLVxcdTI0NUZcXHUyQjc0XFx1MkI3NVxcdTJCOTZcXHUyQzJGXFx1MkM1RlxcdTJDRjQtXFx1MkNGOFxcdTJEMjZcXHUyRDI4LVxcdTJEMkNcXHUyRDJFXFx1MkQyRlxcdTJENjgtXFx1MkQ2RVxcdTJENzEtXFx1MkQ3RVxcdTJEOTctXFx1MkQ5RlxcdTJEQTdcXHUyREFGXFx1MkRCN1xcdTJEQkZcXHUyREM3XFx1MkRDRlxcdTJERDdcXHUyRERGXFx1MkU1My1cXHUyRTdGXFx1MkU5QVxcdTJFRjQtXFx1MkVGRlxcdTJGRDYtXFx1MkZFRlxcdTJGRkMtXFx1MkZGRlxcdTMwNDBcXHUzMDk3XFx1MzA5OFxcdTMxMDAtXFx1MzEwNFxcdTMxMzBcXHUzMThGXFx1MzFFNC1cXHUzMUVGXFx1MzIxRlxcdTlGRkQtXFx1OUZGRlxcdUE0OEQtXFx1QTQ4RlxcdUE0QzctXFx1QTRDRlxcdUE2MkMtXFx1QTYzRlxcdUE2RjgtXFx1QTZGRlxcdUE3QzBcXHVBN0MxXFx1QTdDQi1cXHVBN0Y0XFx1QTgyRC1cXHVBODJGXFx1QTgzQS1cXHVBODNGXFx1QTg3OC1cXHVBODdGXFx1QThDNi1cXHVBOENEXFx1QThEQS1cXHVBOERGXFx1QTk1NC1cXHVBOTVFXFx1QTk3RC1cXHVBOTdGXFx1QTlDRVxcdUE5REEtXFx1QTlERFxcdUE5RkZcXHVBQTM3LVxcdUFBM0ZcXHVBQTRFXFx1QUE0RlxcdUFBNUFcXHVBQTVCXFx1QUFDMy1cXHVBQURBXFx1QUFGNy1cXHVBQjAwXFx1QUIwN1xcdUFCMDhcXHVBQjBGXFx1QUIxMFxcdUFCMTctXFx1QUIxRlxcdUFCMjdcXHVBQjJGXFx1QUI2Qy1cXHVBQjZGXFx1QUJFRVxcdUFCRUZcXHVBQkZBLVxcdUFCRkZcXHVEN0E0LVxcdUQ3QUZcXHVEN0M3LVxcdUQ3Q0FcXHVEN0ZDLVxcdUY4RkZcXHVGQTZFXFx1RkE2RlxcdUZBREEtXFx1RkFGRlxcdUZCMDctXFx1RkIxMlxcdUZCMTgtXFx1RkIxQ1xcdUZCMzdcXHVGQjNEXFx1RkIzRlxcdUZCNDJcXHVGQjQ1XFx1RkJDMi1cXHVGQkQyXFx1RkQ0MC1cXHVGRDRGXFx1RkQ5MFxcdUZEOTFcXHVGREM4LVxcdUZERUZcXHVGREZFXFx1RkRGRlxcdUZFMUEtXFx1RkUxRlxcdUZFNTNcXHVGRTY3XFx1RkU2Qy1cXHVGRTZGXFx1RkU3NVxcdUZFRkQtXFx1RkYwMFxcdUZGQkYtXFx1RkZDMVxcdUZGQzhcXHVGRkM5XFx1RkZEMFxcdUZGRDFcXHVGRkQ4XFx1RkZEOVxcdUZGREQtXFx1RkZERlxcdUZGRTdcXHVGRkVGLVxcdUZGRkJcXHVGRkZFXFx1RkZGRicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEQzBDXFx1REMyN1xcdURDM0JcXHVEQzNFXFx1REM0RVxcdURDNEZcXHVEQzVFLVxcdURDN0ZcXHVEQ0ZCLVxcdURDRkZcXHVERDAzLVxcdUREMDZcXHVERDM0LVxcdUREMzZcXHVERDhGXFx1REQ5RC1cXHVERDlGXFx1RERBMS1cXHVERENGXFx1RERGRS1cXHVERTdGXFx1REU5RC1cXHVERTlGXFx1REVEMS1cXHVERURGXFx1REVGQy1cXHVERUZGXFx1REYyNC1cXHVERjJDXFx1REY0Qi1cXHVERjRGXFx1REY3Qi1cXHVERjdGXFx1REY5RVxcdURGQzQtXFx1REZDN1xcdURGRDYtXFx1REZGRl18XFx1RDgwMVtcXHVEQzlFXFx1REM5RlxcdURDQUEtXFx1RENBRlxcdURDRDQtXFx1RENEN1xcdURDRkMtXFx1RENGRlxcdUREMjgtXFx1REQyRlxcdURENjQtXFx1REQ2RVxcdURENzAtXFx1RERGRlxcdURGMzctXFx1REYzRlxcdURGNTYtXFx1REY1RlxcdURGNjgtXFx1REZGRl18XFx1RDgwMltcXHVEQzA2XFx1REMwN1xcdURDMDlcXHVEQzM2XFx1REMzOS1cXHVEQzNCXFx1REMzRFxcdURDM0VcXHVEQzU2XFx1REM5Ri1cXHVEQ0E2XFx1RENCMC1cXHVEQ0RGXFx1RENGM1xcdURDRjYtXFx1RENGQVxcdUREMUMtXFx1REQxRVxcdUREM0EtXFx1REQzRVxcdURENDAtXFx1REQ3RlxcdUREQjgtXFx1RERCQlxcdURERDBcXHVEREQxXFx1REUwNFxcdURFMDctXFx1REUwQlxcdURFMTRcXHVERTE4XFx1REUzNlxcdURFMzdcXHVERTNCLVxcdURFM0VcXHVERTQ5LVxcdURFNEZcXHVERTU5LVxcdURFNUZcXHVERUEwLVxcdURFQkZcXHVERUU3LVxcdURFRUFcXHVERUY3LVxcdURFRkZcXHVERjM2LVxcdURGMzhcXHVERjU2XFx1REY1N1xcdURGNzMtXFx1REY3N1xcdURGOTItXFx1REY5OFxcdURGOUQtXFx1REZBOFxcdURGQjAtXFx1REZGRl18XFx1RDgwM1tcXHVEQzQ5LVxcdURDN0ZcXHVEQ0IzLVxcdURDQkZcXHVEQ0YzLVxcdURDRjlcXHVERDI4LVxcdUREMkZcXHVERDNBLVxcdURFNUZcXHVERTdGXFx1REVBQVxcdURFQUVcXHVERUFGXFx1REVCMi1cXHVERUZGXFx1REYyOC1cXHVERjJGXFx1REY1QS1cXHVERkFGXFx1REZDQy1cXHVERkRGXFx1REZGNy1cXHVERkZGXXxcXHVEODA0W1xcdURDNEUtXFx1REM1MVxcdURDNzAtXFx1REM3RVxcdURDQkRcXHVEQ0MyLVxcdURDQ0ZcXHVEQ0U5LVxcdURDRUZcXHVEQ0ZBLVxcdURDRkZcXHVERDM1XFx1REQ0OC1cXHVERDRGXFx1REQ3Ny1cXHVERDdGXFx1RERFMFxcdURERjUtXFx1RERGRlxcdURFMTJcXHVERTNGLVxcdURFN0ZcXHVERTg3XFx1REU4OVxcdURFOEVcXHVERTlFXFx1REVBQS1cXHVERUFGXFx1REVFQi1cXHVERUVGXFx1REVGQS1cXHVERUZGXFx1REYwNFxcdURGMERcXHVERjBFXFx1REYxMVxcdURGMTJcXHVERjI5XFx1REYzMVxcdURGMzRcXHVERjNBXFx1REY0NVxcdURGNDZcXHVERjQ5XFx1REY0QVxcdURGNEVcXHVERjRGXFx1REY1MS1cXHVERjU2XFx1REY1OC1cXHVERjVDXFx1REY2NFxcdURGNjVcXHVERjZELVxcdURGNkZcXHVERjc1LVxcdURGRkZdfFxcdUQ4MDVbXFx1REM1Q1xcdURDNjItXFx1REM3RlxcdURDQzgtXFx1RENDRlxcdURDREEtXFx1REQ3RlxcdUREQjZcXHVEREI3XFx1RERERS1cXHVEREZGXFx1REU0NS1cXHVERTRGXFx1REU1QS1cXHVERTVGXFx1REU2RC1cXHVERTdGXFx1REVCOS1cXHVERUJGXFx1REVDQS1cXHVERUZGXFx1REYxQlxcdURGMUNcXHVERjJDLVxcdURGMkZcXHVERjQwLVxcdURGRkZdfFxcdUQ4MDZbXFx1REMzQy1cXHVEQzlGXFx1RENGMy1cXHVEQ0ZFXFx1REQwN1xcdUREMDhcXHVERDBBXFx1REQwQlxcdUREMTRcXHVERDE3XFx1REQzNlxcdUREMzlcXHVERDNBXFx1REQ0Ny1cXHVERDRGXFx1REQ1QS1cXHVERDlGXFx1RERBOFxcdUREQTlcXHVEREQ4XFx1REREOVxcdURERTUtXFx1RERGRlxcdURFNDgtXFx1REU0RlxcdURFQTMtXFx1REVCRlxcdURFRjktXFx1REZGRl18XFx1RDgwN1tcXHVEQzA5XFx1REMzN1xcdURDNDYtXFx1REM0RlxcdURDNkQtXFx1REM2RlxcdURDOTBcXHVEQzkxXFx1RENBOFxcdURDQjctXFx1RENGRlxcdUREMDdcXHVERDBBXFx1REQzNy1cXHVERDM5XFx1REQzQlxcdUREM0VcXHVERDQ4LVxcdURENEZcXHVERDVBLVxcdURENUZcXHVERDY2XFx1REQ2OVxcdUREOEZcXHVERDkyXFx1REQ5OS1cXHVERDlGXFx1RERBQS1cXHVERURGXFx1REVGOS1cXHVERkFGXFx1REZCMS1cXHVERkJGXFx1REZGMi1cXHVERkZFXXxcXHVEODA4W1xcdURGOUEtXFx1REZGRl18XFx1RDgwOVtcXHVEQzZGXFx1REM3NS1cXHVEQzdGXFx1REQ0NC1cXHVERkZGXXxbXFx1RDgwQVxcdUQ4MEJcXHVEODBFLVxcdUQ4MTBcXHVEODEyLVxcdUQ4MTlcXHVEODI0LVxcdUQ4MkJcXHVEODJEXFx1RDgyRVxcdUQ4MzAtXFx1RDgzM1xcdUQ4MzdcXHVEODM5XFx1RDgzRlxcdUQ4N0ItXFx1RDg3RFxcdUQ4N0ZcXHVEODg1LVxcdURCM0ZcXHVEQjQxLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18XFx1RDgwRFtcXHVEQzJGLVxcdURGRkZdfFxcdUQ4MTFbXFx1REU0Ny1cXHVERkZGXXxcXHVEODFBW1xcdURFMzktXFx1REUzRlxcdURFNUZcXHVERTZBLVxcdURFNkRcXHVERTcwLVxcdURFQ0ZcXHVERUVFXFx1REVFRlxcdURFRjYtXFx1REVGRlxcdURGNDYtXFx1REY0RlxcdURGNUFcXHVERjYyXFx1REY3OC1cXHVERjdDXFx1REY5MC1cXHVERkZGXXxcXHVEODFCW1xcdURDMDAtXFx1REUzRlxcdURFOUItXFx1REVGRlxcdURGNEItXFx1REY0RVxcdURGODgtXFx1REY4RVxcdURGQTAtXFx1REZERlxcdURGRTUtXFx1REZFRlxcdURGRjItXFx1REZGRl18XFx1RDgyMVtcXHVERkY4LVxcdURGRkZdfFxcdUQ4MjNbXFx1RENENi1cXHVEQ0ZGXFx1REQwOS1cXHVERkZGXXxcXHVEODJDW1xcdUREMUYtXFx1REQ0RlxcdURENTMtXFx1REQ2M1xcdURENjgtXFx1REQ2RlxcdURFRkMtXFx1REZGRl18XFx1RDgyRltcXHVEQzZCLVxcdURDNkZcXHVEQzdELVxcdURDN0ZcXHVEQzg5LVxcdURDOEZcXHVEQzlBXFx1REM5QlxcdURDQTAtXFx1REZGRl18XFx1RDgzNFtcXHVEQ0Y2LVxcdURDRkZcXHVERDI3XFx1REQyOFxcdURENzMtXFx1REQ3QVxcdURERTktXFx1RERGRlxcdURFNDYtXFx1REVERlxcdURFRjQtXFx1REVGRlxcdURGNTctXFx1REY1RlxcdURGNzktXFx1REZGRl18XFx1RDgzNVtcXHVEQzU1XFx1REM5RFxcdURDQTBcXHVEQ0ExXFx1RENBM1xcdURDQTRcXHVEQ0E3XFx1RENBOFxcdURDQURcXHVEQ0JBXFx1RENCQ1xcdURDQzRcXHVERDA2XFx1REQwQlxcdUREMENcXHVERDE1XFx1REQxRFxcdUREM0FcXHVERDNGXFx1REQ0NVxcdURENDctXFx1REQ0OVxcdURENTFcXHVERUE2XFx1REVBN1xcdURGQ0NcXHVERkNEXXxcXHVEODM2W1xcdURFOEMtXFx1REU5QVxcdURFQTBcXHVERUIwLVxcdURGRkZdfFxcdUQ4MzhbXFx1REMwN1xcdURDMTlcXHVEQzFBXFx1REMyMlxcdURDMjVcXHVEQzJCLVxcdURDRkZcXHVERDJELVxcdUREMkZcXHVERDNFXFx1REQzRlxcdURENEEtXFx1REQ0RFxcdURENTAtXFx1REVCRlxcdURFRkEtXFx1REVGRVxcdURGMDAtXFx1REZGRl18XFx1RDgzQVtcXHVEQ0M1XFx1RENDNlxcdURDRDctXFx1RENGRlxcdURENEMtXFx1REQ0RlxcdURENUEtXFx1REQ1RFxcdURENjAtXFx1REZGRl18XFx1RDgzQltcXHVEQzAwLVxcdURDNzBcXHVEQ0I1LVxcdUREMDBcXHVERDNFLVxcdURERkZcXHVERTA0XFx1REUyMFxcdURFMjNcXHVERTI1XFx1REUyNlxcdURFMjhcXHVERTMzXFx1REUzOFxcdURFM0FcXHVERTNDLVxcdURFNDFcXHVERTQzLVxcdURFNDZcXHVERTQ4XFx1REU0QVxcdURFNENcXHVERTUwXFx1REU1M1xcdURFNTVcXHVERTU2XFx1REU1OFxcdURFNUFcXHVERTVDXFx1REU1RVxcdURFNjBcXHVERTYzXFx1REU2NVxcdURFNjZcXHVERTZCXFx1REU3M1xcdURFNzhcXHVERTdEXFx1REU3RlxcdURFOEFcXHVERTlDLVxcdURFQTBcXHVERUE0XFx1REVBQVxcdURFQkMtXFx1REVFRlxcdURFRjItXFx1REZGRl18XFx1RDgzQ1tcXHVEQzJDLVxcdURDMkZcXHVEQzk0LVxcdURDOUZcXHVEQ0FGXFx1RENCMFxcdURDQzBcXHVEQ0QwXFx1RENGNi1cXHVEQ0ZGXFx1RERBRS1cXHVEREU1XFx1REUwMy1cXHVERTBGXFx1REUzQy1cXHVERTNGXFx1REU0OS1cXHVERTRGXFx1REU1Mi1cXHVERTVGXFx1REU2Ni1cXHVERUZGXXxcXHVEODNEW1xcdURFRDgtXFx1REVERlxcdURFRUQtXFx1REVFRlxcdURFRkQtXFx1REVGRlxcdURGNzQtXFx1REY3RlxcdURGRDktXFx1REZERlxcdURGRUMtXFx1REZGRl18XFx1RDgzRVtcXHVEQzBDLVxcdURDMEZcXHVEQzQ4LVxcdURDNEZcXHVEQzVBLVxcdURDNUZcXHVEQzg4LVxcdURDOEZcXHVEQ0FFXFx1RENBRlxcdURDQjItXFx1RENGRlxcdURENzlcXHVERENDXFx1REU1NC1cXHVERTVGXFx1REU2RVxcdURFNkZcXHVERTc1LVxcdURFNzdcXHVERTdCLVxcdURFN0ZcXHVERTg3LVxcdURFOEZcXHVERUE5LVxcdURFQUZcXHVERUI3LVxcdURFQkZcXHVERUMzLVxcdURFQ0ZcXHVERUQ3LVxcdURFRkZcXHVERjkzXFx1REZDQi1cXHVERkVGXFx1REZGQS1cXHVERkZGXXxcXHVEODY5W1xcdURFREUtXFx1REVGRl18XFx1RDg2RFtcXHVERjM1LVxcdURGM0ZdfFxcdUQ4NkVbXFx1REMxRVxcdURDMUZdfFxcdUQ4NzNbXFx1REVBMi1cXHVERUFGXXxcXHVEODdBW1xcdURGRTEtXFx1REZGRl18XFx1RDg3RVtcXHVERTFFLVxcdURGRkZdfFxcdUQ4ODRbXFx1REY0Qi1cXHVERkZGXXxcXHVEQjQwW1xcdURDMDAtXFx1RENGRlxcdURERjAtXFx1REZGRl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0NjJyxcbiAgICAgICAgJ2FsaWFzJzogJ0NvbnRyb2wnLFxuICAgICAgICAnYm1wJzogJ1xcMC1cXHgxRlxceDdGLVxceDlGJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdDZicsXG4gICAgICAgICdhbGlhcyc6ICdGb3JtYXQnLFxuICAgICAgICAnYm1wJzogJ1xceEFEXFx1MDYwMC1cXHUwNjA1XFx1MDYxQ1xcdTA2RERcXHUwNzBGXFx1MDhFMlxcdTE4MEVcXHUyMDBCLVxcdTIwMEZcXHUyMDJBLVxcdTIwMkVcXHUyMDYwLVxcdTIwNjRcXHUyMDY2LVxcdTIwNkZcXHVGRUZGXFx1RkZGOS1cXHVGRkZCJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODA0W1xcdURDQkRcXHVEQ0NEXXxcXHVEODBEW1xcdURDMzAtXFx1REMzOF18XFx1RDgyRltcXHVEQ0EwLVxcdURDQTNdfFxcdUQ4MzRbXFx1REQ3My1cXHVERDdBXXxcXHVEQjQwW1xcdURDMDFcXHVEQzIwLVxcdURDN0ZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdDbicsXG4gICAgICAgICdhbGlhcyc6ICdVbmFzc2lnbmVkJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMzc4XFx1MDM3OVxcdTAzODAtXFx1MDM4M1xcdTAzOEJcXHUwMzhEXFx1MDNBMlxcdTA1MzBcXHUwNTU3XFx1MDU1OFxcdTA1OEJcXHUwNThDXFx1MDU5MFxcdTA1QzgtXFx1MDVDRlxcdTA1RUItXFx1MDVFRVxcdTA1RjUtXFx1MDVGRlxcdTA2MURcXHUwNzBFXFx1MDc0QlxcdTA3NENcXHUwN0IyLVxcdTA3QkZcXHUwN0ZCXFx1MDdGQ1xcdTA4MkVcXHUwODJGXFx1MDgzRlxcdTA4NUNcXHUwODVEXFx1MDg1RlxcdTA4NkItXFx1MDg5RlxcdTA4QjVcXHUwOEM4LVxcdTA4RDJcXHUwOTg0XFx1MDk4RFxcdTA5OEVcXHUwOTkxXFx1MDk5MlxcdTA5QTlcXHUwOUIxXFx1MDlCMy1cXHUwOUI1XFx1MDlCQVxcdTA5QkJcXHUwOUM1XFx1MDlDNlxcdTA5QzlcXHUwOUNBXFx1MDlDRi1cXHUwOUQ2XFx1MDlEOC1cXHUwOURCXFx1MDlERVxcdTA5RTRcXHUwOUU1XFx1MDlGRlxcdTBBMDBcXHUwQTA0XFx1MEEwQi1cXHUwQTBFXFx1MEExMVxcdTBBMTJcXHUwQTI5XFx1MEEzMVxcdTBBMzRcXHUwQTM3XFx1MEEzQVxcdTBBM0JcXHUwQTNEXFx1MEE0My1cXHUwQTQ2XFx1MEE0OVxcdTBBNEFcXHUwQTRFLVxcdTBBNTBcXHUwQTUyLVxcdTBBNThcXHUwQTVEXFx1MEE1Ri1cXHUwQTY1XFx1MEE3Ny1cXHUwQTgwXFx1MEE4NFxcdTBBOEVcXHUwQTkyXFx1MEFBOVxcdTBBQjFcXHUwQUI0XFx1MEFCQVxcdTBBQkJcXHUwQUM2XFx1MEFDQVxcdTBBQ0VcXHUwQUNGXFx1MEFEMS1cXHUwQURGXFx1MEFFNFxcdTBBRTVcXHUwQUYyLVxcdTBBRjhcXHUwQjAwXFx1MEIwNFxcdTBCMERcXHUwQjBFXFx1MEIxMVxcdTBCMTJcXHUwQjI5XFx1MEIzMVxcdTBCMzRcXHUwQjNBXFx1MEIzQlxcdTBCNDVcXHUwQjQ2XFx1MEI0OVxcdTBCNEFcXHUwQjRFLVxcdTBCNTRcXHUwQjU4LVxcdTBCNUJcXHUwQjVFXFx1MEI2NFxcdTBCNjVcXHUwQjc4LVxcdTBCODFcXHUwQjg0XFx1MEI4Qi1cXHUwQjhEXFx1MEI5MVxcdTBCOTYtXFx1MEI5OFxcdTBCOUJcXHUwQjlEXFx1MEJBMC1cXHUwQkEyXFx1MEJBNS1cXHUwQkE3XFx1MEJBQi1cXHUwQkFEXFx1MEJCQS1cXHUwQkJEXFx1MEJDMy1cXHUwQkM1XFx1MEJDOVxcdTBCQ0VcXHUwQkNGXFx1MEJEMS1cXHUwQkQ2XFx1MEJEOC1cXHUwQkU1XFx1MEJGQi1cXHUwQkZGXFx1MEMwRFxcdTBDMTFcXHUwQzI5XFx1MEMzQS1cXHUwQzNDXFx1MEM0NVxcdTBDNDlcXHUwQzRFLVxcdTBDNTRcXHUwQzU3XFx1MEM1Qi1cXHUwQzVGXFx1MEM2NFxcdTBDNjVcXHUwQzcwLVxcdTBDNzZcXHUwQzhEXFx1MEM5MVxcdTBDQTlcXHUwQ0I0XFx1MENCQVxcdTBDQkJcXHUwQ0M1XFx1MENDOVxcdTBDQ0UtXFx1MENENFxcdTBDRDctXFx1MENERFxcdTBDREZcXHUwQ0U0XFx1MENFNVxcdTBDRjBcXHUwQ0YzLVxcdTBDRkZcXHUwRDBEXFx1MEQxMVxcdTBENDVcXHUwRDQ5XFx1MEQ1MC1cXHUwRDUzXFx1MEQ2NFxcdTBENjVcXHUwRDgwXFx1MEQ4NFxcdTBEOTctXFx1MEQ5OVxcdTBEQjJcXHUwREJDXFx1MERCRVxcdTBEQkZcXHUwREM3LVxcdTBEQzlcXHUwRENCLVxcdTBEQ0VcXHUwREQ1XFx1MEREN1xcdTBERTAtXFx1MERFNVxcdTBERjBcXHUwREYxXFx1MERGNS1cXHUwRTAwXFx1MEUzQi1cXHUwRTNFXFx1MEU1Qy1cXHUwRTgwXFx1MEU4M1xcdTBFODVcXHUwRThCXFx1MEVBNFxcdTBFQTZcXHUwRUJFXFx1MEVCRlxcdTBFQzVcXHUwRUM3XFx1MEVDRVxcdTBFQ0ZcXHUwRURBXFx1MEVEQlxcdTBFRTAtXFx1MEVGRlxcdTBGNDhcXHUwRjZELVxcdTBGNzBcXHUwRjk4XFx1MEZCRFxcdTBGQ0RcXHUwRkRCLVxcdTBGRkZcXHUxMEM2XFx1MTBDOC1cXHUxMENDXFx1MTBDRVxcdTEwQ0ZcXHUxMjQ5XFx1MTI0RVxcdTEyNEZcXHUxMjU3XFx1MTI1OVxcdTEyNUVcXHUxMjVGXFx1MTI4OVxcdTEyOEVcXHUxMjhGXFx1MTJCMVxcdTEyQjZcXHUxMkI3XFx1MTJCRlxcdTEyQzFcXHUxMkM2XFx1MTJDN1xcdTEyRDdcXHUxMzExXFx1MTMxNlxcdTEzMTdcXHUxMzVCXFx1MTM1Q1xcdTEzN0QtXFx1MTM3RlxcdTEzOUEtXFx1MTM5RlxcdTEzRjZcXHUxM0Y3XFx1MTNGRVxcdTEzRkZcXHUxNjlELVxcdTE2OUZcXHUxNkY5LVxcdTE2RkZcXHUxNzBEXFx1MTcxNS1cXHUxNzFGXFx1MTczNy1cXHUxNzNGXFx1MTc1NC1cXHUxNzVGXFx1MTc2RFxcdTE3NzFcXHUxNzc0LVxcdTE3N0ZcXHUxN0RFXFx1MTdERlxcdTE3RUEtXFx1MTdFRlxcdTE3RkEtXFx1MTdGRlxcdTE4MEZcXHUxODFBLVxcdTE4MUZcXHUxODc5LVxcdTE4N0ZcXHUxOEFCLVxcdTE4QUZcXHUxOEY2LVxcdTE4RkZcXHUxOTFGXFx1MTkyQy1cXHUxOTJGXFx1MTkzQy1cXHUxOTNGXFx1MTk0MS1cXHUxOTQzXFx1MTk2RVxcdTE5NkZcXHUxOTc1LVxcdTE5N0ZcXHUxOUFDLVxcdTE5QUZcXHUxOUNBLVxcdTE5Q0ZcXHUxOURCLVxcdTE5RERcXHUxQTFDXFx1MUExRFxcdTFBNUZcXHUxQTdEXFx1MUE3RVxcdTFBOEEtXFx1MUE4RlxcdTFBOUEtXFx1MUE5RlxcdTFBQUVcXHUxQUFGXFx1MUFDMS1cXHUxQUZGXFx1MUI0Qy1cXHUxQjRGXFx1MUI3RC1cXHUxQjdGXFx1MUJGNC1cXHUxQkZCXFx1MUMzOC1cXHUxQzNBXFx1MUM0QS1cXHUxQzRDXFx1MUM4OS1cXHUxQzhGXFx1MUNCQlxcdTFDQkNcXHUxQ0M4LVxcdTFDQ0ZcXHUxQ0ZCLVxcdTFDRkZcXHUxREZBXFx1MUYxNlxcdTFGMTdcXHUxRjFFXFx1MUYxRlxcdTFGNDZcXHUxRjQ3XFx1MUY0RVxcdTFGNEZcXHUxRjU4XFx1MUY1QVxcdTFGNUNcXHUxRjVFXFx1MUY3RVxcdTFGN0ZcXHUxRkI1XFx1MUZDNVxcdTFGRDRcXHUxRkQ1XFx1MUZEQ1xcdTFGRjBcXHUxRkYxXFx1MUZGNVxcdTFGRkZcXHUyMDY1XFx1MjA3MlxcdTIwNzNcXHUyMDhGXFx1MjA5RC1cXHUyMDlGXFx1MjBDMC1cXHUyMENGXFx1MjBGMS1cXHUyMEZGXFx1MjE4Qy1cXHUyMThGXFx1MjQyNy1cXHUyNDNGXFx1MjQ0Qi1cXHUyNDVGXFx1MkI3NFxcdTJCNzVcXHUyQjk2XFx1MkMyRlxcdTJDNUZcXHUyQ0Y0LVxcdTJDRjhcXHUyRDI2XFx1MkQyOC1cXHUyRDJDXFx1MkQyRVxcdTJEMkZcXHUyRDY4LVxcdTJENkVcXHUyRDcxLVxcdTJEN0VcXHUyRDk3LVxcdTJEOUZcXHUyREE3XFx1MkRBRlxcdTJEQjdcXHUyREJGXFx1MkRDN1xcdTJEQ0ZcXHUyREQ3XFx1MkRERlxcdTJFNTMtXFx1MkU3RlxcdTJFOUFcXHUyRUY0LVxcdTJFRkZcXHUyRkQ2LVxcdTJGRUZcXHUyRkZDLVxcdTJGRkZcXHUzMDQwXFx1MzA5N1xcdTMwOThcXHUzMTAwLVxcdTMxMDRcXHUzMTMwXFx1MzE4RlxcdTMxRTQtXFx1MzFFRlxcdTMyMUZcXHU5RkZELVxcdTlGRkZcXHVBNDhELVxcdUE0OEZcXHVBNEM3LVxcdUE0Q0ZcXHVBNjJDLVxcdUE2M0ZcXHVBNkY4LVxcdUE2RkZcXHVBN0MwXFx1QTdDMVxcdUE3Q0ItXFx1QTdGNFxcdUE4MkQtXFx1QTgyRlxcdUE4M0EtXFx1QTgzRlxcdUE4NzgtXFx1QTg3RlxcdUE4QzYtXFx1QThDRFxcdUE4REEtXFx1QThERlxcdUE5NTQtXFx1QTk1RVxcdUE5N0QtXFx1QTk3RlxcdUE5Q0VcXHVBOURBLVxcdUE5RERcXHVBOUZGXFx1QUEzNy1cXHVBQTNGXFx1QUE0RVxcdUFBNEZcXHVBQTVBXFx1QUE1QlxcdUFBQzMtXFx1QUFEQVxcdUFBRjctXFx1QUIwMFxcdUFCMDdcXHVBQjA4XFx1QUIwRlxcdUFCMTBcXHVBQjE3LVxcdUFCMUZcXHVBQjI3XFx1QUIyRlxcdUFCNkMtXFx1QUI2RlxcdUFCRUVcXHVBQkVGXFx1QUJGQS1cXHVBQkZGXFx1RDdBNC1cXHVEN0FGXFx1RDdDNy1cXHVEN0NBXFx1RDdGQy1cXHVEN0ZGXFx1RkE2RVxcdUZBNkZcXHVGQURBLVxcdUZBRkZcXHVGQjA3LVxcdUZCMTJcXHVGQjE4LVxcdUZCMUNcXHVGQjM3XFx1RkIzRFxcdUZCM0ZcXHVGQjQyXFx1RkI0NVxcdUZCQzItXFx1RkJEMlxcdUZENDAtXFx1RkQ0RlxcdUZEOTBcXHVGRDkxXFx1RkRDOC1cXHVGREVGXFx1RkRGRVxcdUZERkZcXHVGRTFBLVxcdUZFMUZcXHVGRTUzXFx1RkU2N1xcdUZFNkMtXFx1RkU2RlxcdUZFNzVcXHVGRUZEXFx1RkVGRVxcdUZGMDBcXHVGRkJGLVxcdUZGQzFcXHVGRkM4XFx1RkZDOVxcdUZGRDBcXHVGRkQxXFx1RkZEOFxcdUZGRDlcXHVGRkRELVxcdUZGREZcXHVGRkU3XFx1RkZFRi1cXHVGRkY4XFx1RkZGRVxcdUZGRkYnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REMwQ1xcdURDMjdcXHVEQzNCXFx1REMzRVxcdURDNEVcXHVEQzRGXFx1REM1RS1cXHVEQzdGXFx1RENGQi1cXHVEQ0ZGXFx1REQwMy1cXHVERDA2XFx1REQzNC1cXHVERDM2XFx1REQ4RlxcdUREOUQtXFx1REQ5RlxcdUREQTEtXFx1RERDRlxcdURERkUtXFx1REU3RlxcdURFOUQtXFx1REU5RlxcdURFRDEtXFx1REVERlxcdURFRkMtXFx1REVGRlxcdURGMjQtXFx1REYyQ1xcdURGNEItXFx1REY0RlxcdURGN0ItXFx1REY3RlxcdURGOUVcXHVERkM0LVxcdURGQzdcXHVERkQ2LVxcdURGRkZdfFxcdUQ4MDFbXFx1REM5RVxcdURDOUZcXHVEQ0FBLVxcdURDQUZcXHVEQ0Q0LVxcdURDRDdcXHVEQ0ZDLVxcdURDRkZcXHVERDI4LVxcdUREMkZcXHVERDY0LVxcdURENkVcXHVERDcwLVxcdURERkZcXHVERjM3LVxcdURGM0ZcXHVERjU2LVxcdURGNUZcXHVERjY4LVxcdURGRkZdfFxcdUQ4MDJbXFx1REMwNlxcdURDMDdcXHVEQzA5XFx1REMzNlxcdURDMzktXFx1REMzQlxcdURDM0RcXHVEQzNFXFx1REM1NlxcdURDOUYtXFx1RENBNlxcdURDQjAtXFx1RENERlxcdURDRjNcXHVEQ0Y2LVxcdURDRkFcXHVERDFDLVxcdUREMUVcXHVERDNBLVxcdUREM0VcXHVERDQwLVxcdUREN0ZcXHVEREI4LVxcdUREQkJcXHVEREQwXFx1REREMVxcdURFMDRcXHVERTA3LVxcdURFMEJcXHVERTE0XFx1REUxOFxcdURFMzZcXHVERTM3XFx1REUzQi1cXHVERTNFXFx1REU0OS1cXHVERTRGXFx1REU1OS1cXHVERTVGXFx1REVBMC1cXHVERUJGXFx1REVFNy1cXHVERUVBXFx1REVGNy1cXHVERUZGXFx1REYzNi1cXHVERjM4XFx1REY1NlxcdURGNTdcXHVERjczLVxcdURGNzdcXHVERjkyLVxcdURGOThcXHVERjlELVxcdURGQThcXHVERkIwLVxcdURGRkZdfFxcdUQ4MDNbXFx1REM0OS1cXHVEQzdGXFx1RENCMy1cXHVEQ0JGXFx1RENGMy1cXHVEQ0Y5XFx1REQyOC1cXHVERDJGXFx1REQzQS1cXHVERTVGXFx1REU3RlxcdURFQUFcXHVERUFFXFx1REVBRlxcdURFQjItXFx1REVGRlxcdURGMjgtXFx1REYyRlxcdURGNUEtXFx1REZBRlxcdURGQ0MtXFx1REZERlxcdURGRjctXFx1REZGRl18XFx1RDgwNFtcXHVEQzRFLVxcdURDNTFcXHVEQzcwLVxcdURDN0VcXHVEQ0MyLVxcdURDQ0NcXHVEQ0NFXFx1RENDRlxcdURDRTktXFx1RENFRlxcdURDRkEtXFx1RENGRlxcdUREMzVcXHVERDQ4LVxcdURENEZcXHVERDc3LVxcdUREN0ZcXHVEREUwXFx1RERGNS1cXHVEREZGXFx1REUxMlxcdURFM0YtXFx1REU3RlxcdURFODdcXHVERTg5XFx1REU4RVxcdURFOUVcXHVERUFBLVxcdURFQUZcXHVERUVCLVxcdURFRUZcXHVERUZBLVxcdURFRkZcXHVERjA0XFx1REYwRFxcdURGMEVcXHVERjExXFx1REYxMlxcdURGMjlcXHVERjMxXFx1REYzNFxcdURGM0FcXHVERjQ1XFx1REY0NlxcdURGNDlcXHVERjRBXFx1REY0RVxcdURGNEZcXHVERjUxLVxcdURGNTZcXHVERjU4LVxcdURGNUNcXHVERjY0XFx1REY2NVxcdURGNkQtXFx1REY2RlxcdURGNzUtXFx1REZGRl18XFx1RDgwNVtcXHVEQzVDXFx1REM2Mi1cXHVEQzdGXFx1RENDOC1cXHVEQ0NGXFx1RENEQS1cXHVERDdGXFx1RERCNlxcdUREQjdcXHVERERFLVxcdURERkZcXHVERTQ1LVxcdURFNEZcXHVERTVBLVxcdURFNUZcXHVERTZELVxcdURFN0ZcXHVERUI5LVxcdURFQkZcXHVERUNBLVxcdURFRkZcXHVERjFCXFx1REYxQ1xcdURGMkMtXFx1REYyRlxcdURGNDAtXFx1REZGRl18XFx1RDgwNltcXHVEQzNDLVxcdURDOUZcXHVEQ0YzLVxcdURDRkVcXHVERDA3XFx1REQwOFxcdUREMEFcXHVERDBCXFx1REQxNFxcdUREMTdcXHVERDM2XFx1REQzOVxcdUREM0FcXHVERDQ3LVxcdURENEZcXHVERDVBLVxcdUREOUZcXHVEREE4XFx1RERBOVxcdURERDhcXHVEREQ5XFx1RERFNS1cXHVEREZGXFx1REU0OC1cXHVERTRGXFx1REVBMy1cXHVERUJGXFx1REVGOS1cXHVERkZGXXxcXHVEODA3W1xcdURDMDlcXHVEQzM3XFx1REM0Ni1cXHVEQzRGXFx1REM2RC1cXHVEQzZGXFx1REM5MFxcdURDOTFcXHVEQ0E4XFx1RENCNy1cXHVEQ0ZGXFx1REQwN1xcdUREMEFcXHVERDM3LVxcdUREMzlcXHVERDNCXFx1REQzRVxcdURENDgtXFx1REQ0RlxcdURENUEtXFx1REQ1RlxcdURENjZcXHVERDY5XFx1REQ4RlxcdUREOTJcXHVERDk5LVxcdUREOUZcXHVEREFBLVxcdURFREZcXHVERUY5LVxcdURGQUZcXHVERkIxLVxcdURGQkZcXHVERkYyLVxcdURGRkVdfFxcdUQ4MDhbXFx1REY5QS1cXHVERkZGXXxcXHVEODA5W1xcdURDNkZcXHVEQzc1LVxcdURDN0ZcXHVERDQ0LVxcdURGRkZdfFtcXHVEODBBXFx1RDgwQlxcdUQ4MEUtXFx1RDgxMFxcdUQ4MTItXFx1RDgxOVxcdUQ4MjQtXFx1RDgyQlxcdUQ4MkRcXHVEODJFXFx1RDgzMC1cXHVEODMzXFx1RDgzN1xcdUQ4MzlcXHVEODNGXFx1RDg3Qi1cXHVEODdEXFx1RDg3RlxcdUQ4ODUtXFx1REIzRlxcdURCNDEtXFx1REI3Rl1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMkZcXHVEQzM5LVxcdURGRkZdfFxcdUQ4MTFbXFx1REU0Ny1cXHVERkZGXXxcXHVEODFBW1xcdURFMzktXFx1REUzRlxcdURFNUZcXHVERTZBLVxcdURFNkRcXHVERTcwLVxcdURFQ0ZcXHVERUVFXFx1REVFRlxcdURFRjYtXFx1REVGRlxcdURGNDYtXFx1REY0RlxcdURGNUFcXHVERjYyXFx1REY3OC1cXHVERjdDXFx1REY5MC1cXHVERkZGXXxcXHVEODFCW1xcdURDMDAtXFx1REUzRlxcdURFOUItXFx1REVGRlxcdURGNEItXFx1REY0RVxcdURGODgtXFx1REY4RVxcdURGQTAtXFx1REZERlxcdURGRTUtXFx1REZFRlxcdURGRjItXFx1REZGRl18XFx1RDgyMVtcXHVERkY4LVxcdURGRkZdfFxcdUQ4MjNbXFx1RENENi1cXHVEQ0ZGXFx1REQwOS1cXHVERkZGXXxcXHVEODJDW1xcdUREMUYtXFx1REQ0RlxcdURENTMtXFx1REQ2M1xcdURENjgtXFx1REQ2RlxcdURFRkMtXFx1REZGRl18XFx1RDgyRltcXHVEQzZCLVxcdURDNkZcXHVEQzdELVxcdURDN0ZcXHVEQzg5LVxcdURDOEZcXHVEQzlBXFx1REM5QlxcdURDQTQtXFx1REZGRl18XFx1RDgzNFtcXHVEQ0Y2LVxcdURDRkZcXHVERDI3XFx1REQyOFxcdURERTktXFx1RERGRlxcdURFNDYtXFx1REVERlxcdURFRjQtXFx1REVGRlxcdURGNTctXFx1REY1RlxcdURGNzktXFx1REZGRl18XFx1RDgzNVtcXHVEQzU1XFx1REM5RFxcdURDQTBcXHVEQ0ExXFx1RENBM1xcdURDQTRcXHVEQ0E3XFx1RENBOFxcdURDQURcXHVEQ0JBXFx1RENCQ1xcdURDQzRcXHVERDA2XFx1REQwQlxcdUREMENcXHVERDE1XFx1REQxRFxcdUREM0FcXHVERDNGXFx1REQ0NVxcdURENDctXFx1REQ0OVxcdURENTFcXHVERUE2XFx1REVBN1xcdURGQ0NcXHVERkNEXXxcXHVEODM2W1xcdURFOEMtXFx1REU5QVxcdURFQTBcXHVERUIwLVxcdURGRkZdfFxcdUQ4MzhbXFx1REMwN1xcdURDMTlcXHVEQzFBXFx1REMyMlxcdURDMjVcXHVEQzJCLVxcdURDRkZcXHVERDJELVxcdUREMkZcXHVERDNFXFx1REQzRlxcdURENEEtXFx1REQ0RFxcdURENTAtXFx1REVCRlxcdURFRkEtXFx1REVGRVxcdURGMDAtXFx1REZGRl18XFx1RDgzQVtcXHVEQ0M1XFx1RENDNlxcdURDRDctXFx1RENGRlxcdURENEMtXFx1REQ0RlxcdURENUEtXFx1REQ1RFxcdURENjAtXFx1REZGRl18XFx1RDgzQltcXHVEQzAwLVxcdURDNzBcXHVEQ0I1LVxcdUREMDBcXHVERDNFLVxcdURERkZcXHVERTA0XFx1REUyMFxcdURFMjNcXHVERTI1XFx1REUyNlxcdURFMjhcXHVERTMzXFx1REUzOFxcdURFM0FcXHVERTNDLVxcdURFNDFcXHVERTQzLVxcdURFNDZcXHVERTQ4XFx1REU0QVxcdURFNENcXHVERTUwXFx1REU1M1xcdURFNTVcXHVERTU2XFx1REU1OFxcdURFNUFcXHVERTVDXFx1REU1RVxcdURFNjBcXHVERTYzXFx1REU2NVxcdURFNjZcXHVERTZCXFx1REU3M1xcdURFNzhcXHVERTdEXFx1REU3RlxcdURFOEFcXHVERTlDLVxcdURFQTBcXHVERUE0XFx1REVBQVxcdURFQkMtXFx1REVFRlxcdURFRjItXFx1REZGRl18XFx1RDgzQ1tcXHVEQzJDLVxcdURDMkZcXHVEQzk0LVxcdURDOUZcXHVEQ0FGXFx1RENCMFxcdURDQzBcXHVEQ0QwXFx1RENGNi1cXHVEQ0ZGXFx1RERBRS1cXHVEREU1XFx1REUwMy1cXHVERTBGXFx1REUzQy1cXHVERTNGXFx1REU0OS1cXHVERTRGXFx1REU1Mi1cXHVERTVGXFx1REU2Ni1cXHVERUZGXXxcXHVEODNEW1xcdURFRDgtXFx1REVERlxcdURFRUQtXFx1REVFRlxcdURFRkQtXFx1REVGRlxcdURGNzQtXFx1REY3RlxcdURGRDktXFx1REZERlxcdURGRUMtXFx1REZGRl18XFx1RDgzRVtcXHVEQzBDLVxcdURDMEZcXHVEQzQ4LVxcdURDNEZcXHVEQzVBLVxcdURDNUZcXHVEQzg4LVxcdURDOEZcXHVEQ0FFXFx1RENBRlxcdURDQjItXFx1RENGRlxcdURENzlcXHVERENDXFx1REU1NC1cXHVERTVGXFx1REU2RVxcdURFNkZcXHVERTc1LVxcdURFNzdcXHVERTdCLVxcdURFN0ZcXHVERTg3LVxcdURFOEZcXHVERUE5LVxcdURFQUZcXHVERUI3LVxcdURFQkZcXHVERUMzLVxcdURFQ0ZcXHVERUQ3LVxcdURFRkZcXHVERjkzXFx1REZDQi1cXHVERkVGXFx1REZGQS1cXHVERkZGXXxcXHVEODY5W1xcdURFREUtXFx1REVGRl18XFx1RDg2RFtcXHVERjM1LVxcdURGM0ZdfFxcdUQ4NkVbXFx1REMxRVxcdURDMUZdfFxcdUQ4NzNbXFx1REVBMi1cXHVERUFGXXxcXHVEODdBW1xcdURGRTEtXFx1REZGRl18XFx1RDg3RVtcXHVERTFFLVxcdURGRkZdfFxcdUQ4ODRbXFx1REY0Qi1cXHVERkZGXXxcXHVEQjQwW1xcdURDMDBcXHVEQzAyLVxcdURDMUZcXHVEQzgwLVxcdURDRkZcXHVEREYwLVxcdURGRkZdfFtcXHVEQkJGXFx1REJGRl1bXFx1REZGRVxcdURGRkZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdDbycsXG4gICAgICAgICdhbGlhcyc6ICdQcml2YXRlX1VzZScsXG4gICAgICAgICdibXAnOiAnXFx1RTAwMC1cXHVGOEZGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdbXFx1REI4MC1cXHVEQkJFXFx1REJDMC1cXHVEQkZFXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEQkJGXFx1REJGRl1bXFx1REMwMC1cXHVERkZEXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnQ3MnLFxuICAgICAgICAnYWxpYXMnOiAnU3Vycm9nYXRlJyxcbiAgICAgICAgJ2JtcCc6ICdcXHVEODAwLVxcdURGRkYnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0wnLFxuICAgICAgICAnYWxpYXMnOiAnTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdBLVphLXpcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MC1cXHUwNTg4XFx1MDVEMC1cXHUwNUVBXFx1MDVFRi1cXHUwNUYyXFx1MDYyMC1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFNVxcdTA2RTZcXHUwNkVFXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgxNVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA4NDAtXFx1MDg1OFxcdTA4NjAtXFx1MDg2QVxcdTA4QTAtXFx1MDhCNFxcdTA4QjYtXFx1MDhDN1xcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MDlGQ1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwXFx1MEFFMVxcdTBBRjlcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0RcXHUwQzU4LVxcdTBDNUFcXHUwQzYwXFx1MEM2MVxcdTBDODBcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JEXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA0LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENTQtXFx1MEQ1NlxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODYtXFx1MEU4QVxcdTBFOEMtXFx1MEVBM1xcdTBFQTVcXHUwRUE3LVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RjEtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxMVxcdTE3MjAtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTgyMC1cXHUxODc4XFx1MTg4MC1cXHUxODg0XFx1MTg4Ny1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3RFxcdTFDODAtXFx1MUM4OFxcdTFDOTAtXFx1MUNCQVxcdTFDQkQtXFx1MUNCRlxcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGM1xcdTFDRjVcXHUxQ0Y2XFx1MUNGQVxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTgzXFx1MjE4NFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNFRVxcdTJDRjJcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MkUyRlxcdTMwMDVcXHUzMDA2XFx1MzAzMS1cXHUzMDM1XFx1MzAzQlxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkZcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkZcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQkZcXHU0RTAwLVxcdTlGRkNcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5RFxcdUE2QTAtXFx1QTZFNVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTdCRlxcdUE3QzItXFx1QTdDQVxcdUE3RjUtXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QThGRVxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNjlcXHVBQjcwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGREMnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REMwMC1cXHVEQzBCXFx1REMwRC1cXHVEQzI2XFx1REMyOC1cXHVEQzNBXFx1REMzQ1xcdURDM0RcXHVEQzNGLVxcdURDNERcXHVEQzUwLVxcdURDNURcXHVEQzgwLVxcdURDRkFcXHVERTgwLVxcdURFOUNcXHVERUEwLVxcdURFRDBcXHVERjAwLVxcdURGMUZcXHVERjJELVxcdURGNDBcXHVERjQyLVxcdURGNDlcXHVERjUwLVxcdURGNzVcXHVERjgwLVxcdURGOURcXHVERkEwLVxcdURGQzNcXHVERkM4LVxcdURGQ0ZdfFxcdUQ4MDFbXFx1REMwMC1cXHVEQzlEXFx1RENCMC1cXHVEQ0QzXFx1RENEOC1cXHVEQ0ZCXFx1REQwMC1cXHVERDI3XFx1REQzMC1cXHVERDYzXFx1REUwMC1cXHVERjM2XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjY3XXxcXHVEODAyW1xcdURDMDAtXFx1REMwNVxcdURDMDhcXHVEQzBBLVxcdURDMzVcXHVEQzM3XFx1REMzOFxcdURDM0NcXHVEQzNGLVxcdURDNTVcXHVEQzYwLVxcdURDNzZcXHVEQzgwLVxcdURDOUVcXHVEQ0UwLVxcdURDRjJcXHVEQ0Y0XFx1RENGNVxcdUREMDAtXFx1REQxNVxcdUREMjAtXFx1REQzOVxcdUREODAtXFx1RERCN1xcdUREQkVcXHVEREJGXFx1REUwMFxcdURFMTAtXFx1REUxM1xcdURFMTUtXFx1REUxN1xcdURFMTktXFx1REUzNVxcdURFNjAtXFx1REU3Q1xcdURFODAtXFx1REU5Q1xcdURFQzAtXFx1REVDN1xcdURFQzktXFx1REVFNFxcdURGMDAtXFx1REYzNVxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY3MlxcdURGODAtXFx1REY5MV18XFx1RDgwM1tcXHVEQzAwLVxcdURDNDhcXHVEQzgwLVxcdURDQjJcXHVEQ0MwLVxcdURDRjJcXHVERDAwLVxcdUREMjNcXHVERTgwLVxcdURFQTlcXHVERUIwXFx1REVCMVxcdURGMDAtXFx1REYxQ1xcdURGMjdcXHVERjMwLVxcdURGNDVcXHVERkIwLVxcdURGQzRcXHVERkUwLVxcdURGRjZdfFxcdUQ4MDRbXFx1REMwMy1cXHVEQzM3XFx1REM4My1cXHVEQ0FGXFx1RENEMC1cXHVEQ0U4XFx1REQwMy1cXHVERDI2XFx1REQ0NFxcdURENDdcXHVERDUwLVxcdURENzJcXHVERDc2XFx1REQ4My1cXHVEREIyXFx1RERDMS1cXHVEREM0XFx1REREQVxcdURERENcXHVERTAwLVxcdURFMTFcXHVERTEzLVxcdURFMkJcXHVERTgwLVxcdURFODZcXHVERTg4XFx1REU4QS1cXHVERThEXFx1REU4Ri1cXHVERTlEXFx1REU5Ri1cXHVERUE4XFx1REVCMC1cXHVERURFXFx1REYwNS1cXHVERjBDXFx1REYwRlxcdURGMTBcXHVERjEzLVxcdURGMjhcXHVERjJBLVxcdURGMzBcXHVERjMyXFx1REYzM1xcdURGMzUtXFx1REYzOVxcdURGM0RcXHVERjUwXFx1REY1RC1cXHVERjYxXXxcXHVEODA1W1xcdURDMDAtXFx1REMzNFxcdURDNDctXFx1REM0QVxcdURDNUYtXFx1REM2MVxcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURERDgtXFx1REREQlxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFcXHVERUI4XFx1REYwMC1cXHVERjFBXXxcXHVEODA2W1xcdURDMDAtXFx1REMyQlxcdURDQTAtXFx1RENERlxcdURDRkYtXFx1REQwNlxcdUREMDlcXHVERDBDLVxcdUREMTNcXHVERDE1XFx1REQxNlxcdUREMTgtXFx1REQyRlxcdUREM0ZcXHVERDQxXFx1RERBMC1cXHVEREE3XFx1RERBQS1cXHVEREQwXFx1RERFMVxcdURERTNcXHVERTAwXFx1REUwQi1cXHVERTMyXFx1REUzQVxcdURFNTBcXHVERTVDLVxcdURFODlcXHVERTlEXFx1REVDMC1cXHVERUY4XXxcXHVEODA3W1xcdURDMDAtXFx1REMwOFxcdURDMEEtXFx1REMyRVxcdURDNDBcXHVEQzcyLVxcdURDOEZcXHVERDAwLVxcdUREMDZcXHVERDA4XFx1REQwOVxcdUREMEItXFx1REQzMFxcdURENDZcXHVERDYwLVxcdURENjVcXHVERDY3XFx1REQ2OFxcdURENkEtXFx1REQ4OVxcdUREOThcXHVERUUwLVxcdURFRjJcXHVERkIwXXxcXHVEODA4W1xcdURDMDAtXFx1REY5OV18XFx1RDgwOVtcXHVEQzgwLVxcdURENDNdfFtcXHVEODBDXFx1RDgxQy1cXHVEODIwXFx1RDgyMlxcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3MlxcdUQ4NzQtXFx1RDg3OVxcdUQ4ODAtXFx1RDg4M11bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REVEMC1cXHVERUVEXFx1REYwMC1cXHVERjJGXFx1REY0MC1cXHVERjQzXFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURFNDAtXFx1REU3RlxcdURGMDAtXFx1REY0QVxcdURGNTBcXHVERjkzLVxcdURGOUZcXHVERkUwXFx1REZFMVxcdURGRTNdfFxcdUQ4MjFbXFx1REMwMC1cXHVERkY3XXxcXHVEODIzW1xcdURDMDAtXFx1RENENVxcdUREMDAtXFx1REQwOF18XFx1RDgyQ1tcXHVEQzAwLVxcdUREMUVcXHVERDUwLVxcdURENTJcXHVERDY0LVxcdURENjdcXHVERDcwLVxcdURFRkJdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JdfFxcdUQ4MzhbXFx1REQwMC1cXHVERDJDXFx1REQzNy1cXHVERDNEXFx1REQ0RVxcdURFQzAtXFx1REVFQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVERDAwLVxcdURENDNcXHVERDRCXXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUREXFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURcXHVEQzIwLVxcdURGRkZdfFxcdUQ4NzNbXFx1REMwMC1cXHVERUExXFx1REVCMC1cXHVERkZGXXxcXHVEODdBW1xcdURDMDAtXFx1REZFMF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdfFxcdUQ4ODRbXFx1REMwMC1cXHVERjRBXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTEMnLFxuICAgICAgICAnYWxpYXMnOiAnQ2FzZWRfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdBLVphLXpcXHhCNVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMUJBXFx1MDFCQy1cXHUwMUJGXFx1MDFDNC1cXHUwMjkzXFx1MDI5NS1cXHUwMkFGXFx1MDM3MC1cXHUwMzczXFx1MDM3NlxcdTAzNzdcXHUwMzdCLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTYwLVxcdTA1ODhcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkQtXFx1MTBGRlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTFDODAtXFx1MUM4OFxcdTFDOTAtXFx1MUNCQVxcdTFDQkQtXFx1MUNCRlxcdTFEMDAtXFx1MUQyQlxcdTFENkItXFx1MUQ3N1xcdTFENzktXFx1MUQ5QVxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzRcXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxODNcXHUyMTg0XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQzdCXFx1MkM3RS1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdUE2NDAtXFx1QTY2RFxcdUE2ODAtXFx1QTY5QlxcdUE3MjItXFx1QTc2RlxcdUE3NzEtXFx1QTc4N1xcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTdCRlxcdUE3QzItXFx1QTdDQVxcdUE3RjVcXHVBN0Y2XFx1QTdGQVxcdUFCMzAtXFx1QUI1QVxcdUFCNjAtXFx1QUI2OFxcdUFCNzAtXFx1QUJCRlxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMVtcXHVEQzAwLVxcdURDNEZcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJdfFxcdUQ4MDNbXFx1REM4MC1cXHVEQ0IyXFx1RENDMC1cXHVEQ0YyXXxcXHVEODA2W1xcdURDQTAtXFx1RENERl18XFx1RDgxQltcXHVERTQwLVxcdURFN0ZdfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzQVtcXHVERDAwLVxcdURENDNdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMbCcsXG4gICAgICAgICdhbGlhcyc6ICdMb3dlcmNhc2VfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdhLXpcXHhCNVxceERGLVxceEY2XFx4RjgtXFx4RkZcXHUwMTAxXFx1MDEwM1xcdTAxMDVcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDEwRlxcdTAxMTFcXHUwMTEzXFx1MDExNVxcdTAxMTdcXHUwMTE5XFx1MDExQlxcdTAxMURcXHUwMTFGXFx1MDEyMVxcdTAxMjNcXHUwMTI1XFx1MDEyN1xcdTAxMjlcXHUwMTJCXFx1MDEyRFxcdTAxMkZcXHUwMTMxXFx1MDEzM1xcdTAxMzVcXHUwMTM3XFx1MDEzOFxcdTAxM0FcXHUwMTNDXFx1MDEzRVxcdTAxNDBcXHUwMTQyXFx1MDE0NFxcdTAxNDZcXHUwMTQ4XFx1MDE0OVxcdTAxNEJcXHUwMTREXFx1MDE0RlxcdTAxNTFcXHUwMTUzXFx1MDE1NVxcdTAxNTdcXHUwMTU5XFx1MDE1QlxcdTAxNURcXHUwMTVGXFx1MDE2MVxcdTAxNjNcXHUwMTY1XFx1MDE2N1xcdTAxNjlcXHUwMTZCXFx1MDE2RFxcdTAxNkZcXHUwMTcxXFx1MDE3M1xcdTAxNzVcXHUwMTc3XFx1MDE3QVxcdTAxN0NcXHUwMTdFLVxcdTAxODBcXHUwMTgzXFx1MDE4NVxcdTAxODhcXHUwMThDXFx1MDE4RFxcdTAxOTJcXHUwMTk1XFx1MDE5OS1cXHUwMTlCXFx1MDE5RVxcdTAxQTFcXHUwMUEzXFx1MDFBNVxcdTAxQThcXHUwMUFBXFx1MDFBQlxcdTAxQURcXHUwMUIwXFx1MDFCNFxcdTAxQjZcXHUwMUI5XFx1MDFCQVxcdTAxQkQtXFx1MDFCRlxcdTAxQzZcXHUwMUM5XFx1MDFDQ1xcdTAxQ0VcXHUwMUQwXFx1MDFEMlxcdTAxRDRcXHUwMUQ2XFx1MDFEOFxcdTAxREFcXHUwMURDXFx1MDFERFxcdTAxREZcXHUwMUUxXFx1MDFFM1xcdTAxRTVcXHUwMUU3XFx1MDFFOVxcdTAxRUJcXHUwMUVEXFx1MDFFRlxcdTAxRjBcXHUwMUYzXFx1MDFGNVxcdTAxRjlcXHUwMUZCXFx1MDFGRFxcdTAxRkZcXHUwMjAxXFx1MDIwM1xcdTAyMDVcXHUwMjA3XFx1MDIwOVxcdTAyMEJcXHUwMjBEXFx1MDIwRlxcdTAyMTFcXHUwMjEzXFx1MDIxNVxcdTAyMTdcXHUwMjE5XFx1MDIxQlxcdTAyMURcXHUwMjFGXFx1MDIyMVxcdTAyMjNcXHUwMjI1XFx1MDIyN1xcdTAyMjlcXHUwMjJCXFx1MDIyRFxcdTAyMkZcXHUwMjMxXFx1MDIzMy1cXHUwMjM5XFx1MDIzQ1xcdTAyM0ZcXHUwMjQwXFx1MDI0MlxcdTAyNDdcXHUwMjQ5XFx1MDI0QlxcdTAyNERcXHUwMjRGLVxcdTAyOTNcXHUwMjk1LVxcdTAyQUZcXHUwMzcxXFx1MDM3M1xcdTAzNzdcXHUwMzdCLVxcdTAzN0RcXHUwMzkwXFx1MDNBQy1cXHUwM0NFXFx1MDNEMFxcdTAzRDFcXHUwM0Q1LVxcdTAzRDdcXHUwM0Q5XFx1MDNEQlxcdTAzRERcXHUwM0RGXFx1MDNFMVxcdTAzRTNcXHUwM0U1XFx1MDNFN1xcdTAzRTlcXHUwM0VCXFx1MDNFRFxcdTAzRUYtXFx1MDNGM1xcdTAzRjVcXHUwM0Y4XFx1MDNGQlxcdTAzRkNcXHUwNDMwLVxcdTA0NUZcXHUwNDYxXFx1MDQ2M1xcdTA0NjVcXHUwNDY3XFx1MDQ2OVxcdTA0NkJcXHUwNDZEXFx1MDQ2RlxcdTA0NzFcXHUwNDczXFx1MDQ3NVxcdTA0NzdcXHUwNDc5XFx1MDQ3QlxcdTA0N0RcXHUwNDdGXFx1MDQ4MVxcdTA0OEJcXHUwNDhEXFx1MDQ4RlxcdTA0OTFcXHUwNDkzXFx1MDQ5NVxcdTA0OTdcXHUwNDk5XFx1MDQ5QlxcdTA0OURcXHUwNDlGXFx1MDRBMVxcdTA0QTNcXHUwNEE1XFx1MDRBN1xcdTA0QTlcXHUwNEFCXFx1MDRBRFxcdTA0QUZcXHUwNEIxXFx1MDRCM1xcdTA0QjVcXHUwNEI3XFx1MDRCOVxcdTA0QkJcXHUwNEJEXFx1MDRCRlxcdTA0QzJcXHUwNEM0XFx1MDRDNlxcdTA0QzhcXHUwNENBXFx1MDRDQ1xcdTA0Q0VcXHUwNENGXFx1MDREMVxcdTA0RDNcXHUwNEQ1XFx1MDREN1xcdTA0RDlcXHUwNERCXFx1MDRERFxcdTA0REZcXHUwNEUxXFx1MDRFM1xcdTA0RTVcXHUwNEU3XFx1MDRFOVxcdTA0RUJcXHUwNEVEXFx1MDRFRlxcdTA0RjFcXHUwNEYzXFx1MDRGNVxcdTA0RjdcXHUwNEY5XFx1MDRGQlxcdTA0RkRcXHUwNEZGXFx1MDUwMVxcdTA1MDNcXHUwNTA1XFx1MDUwN1xcdTA1MDlcXHUwNTBCXFx1MDUwRFxcdTA1MEZcXHUwNTExXFx1MDUxM1xcdTA1MTVcXHUwNTE3XFx1MDUxOVxcdTA1MUJcXHUwNTFEXFx1MDUxRlxcdTA1MjFcXHUwNTIzXFx1MDUyNVxcdTA1MjdcXHUwNTI5XFx1MDUyQlxcdTA1MkRcXHUwNTJGXFx1MDU2MC1cXHUwNTg4XFx1MTBEMC1cXHUxMEZBXFx1MTBGRC1cXHUxMEZGXFx1MTNGOC1cXHUxM0ZEXFx1MUM4MC1cXHUxQzg4XFx1MUQwMC1cXHUxRDJCXFx1MUQ2Qi1cXHUxRDc3XFx1MUQ3OS1cXHUxRDlBXFx1MUUwMVxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTFFMDlcXHUxRTBCXFx1MUUwRFxcdTFFMEZcXHUxRTExXFx1MUUxM1xcdTFFMTVcXHUxRTE3XFx1MUUxOVxcdTFFMUJcXHUxRTFEXFx1MUUxRlxcdTFFMjFcXHUxRTIzXFx1MUUyNVxcdTFFMjdcXHUxRTI5XFx1MUUyQlxcdTFFMkRcXHUxRTJGXFx1MUUzMVxcdTFFMzNcXHUxRTM1XFx1MUUzN1xcdTFFMzlcXHUxRTNCXFx1MUUzRFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTFFNDVcXHUxRTQ3XFx1MUU0OVxcdTFFNEJcXHUxRTREXFx1MUU0RlxcdTFFNTFcXHUxRTUzXFx1MUU1NVxcdTFFNTdcXHUxRTU5XFx1MUU1QlxcdTFFNURcXHUxRTVGXFx1MUU2MVxcdTFFNjNcXHUxRTY1XFx1MUU2N1xcdTFFNjlcXHUxRTZCXFx1MUU2RFxcdTFFNkZcXHUxRTcxXFx1MUU3M1xcdTFFNzVcXHUxRTc3XFx1MUU3OVxcdTFFN0JcXHUxRTdEXFx1MUU3RlxcdTFFODFcXHUxRTgzXFx1MUU4NVxcdTFFODdcXHUxRTg5XFx1MUU4QlxcdTFFOERcXHUxRThGXFx1MUU5MVxcdTFFOTNcXHUxRTk1LVxcdTFFOURcXHUxRTlGXFx1MUVBMVxcdTFFQTNcXHUxRUE1XFx1MUVBN1xcdTFFQTlcXHUxRUFCXFx1MUVBRFxcdTFFQUZcXHUxRUIxXFx1MUVCM1xcdTFFQjVcXHUxRUI3XFx1MUVCOVxcdTFFQkJcXHUxRUJEXFx1MUVCRlxcdTFFQzFcXHUxRUMzXFx1MUVDNVxcdTFFQzdcXHUxRUM5XFx1MUVDQlxcdTFFQ0RcXHUxRUNGXFx1MUVEMVxcdTFFRDNcXHUxRUQ1XFx1MUVEN1xcdTFFRDlcXHUxRURCXFx1MUVERFxcdTFFREZcXHUxRUUxXFx1MUVFM1xcdTFFRTVcXHUxRUU3XFx1MUVFOVxcdTFFRUJcXHUxRUVEXFx1MUVFRlxcdTFFRjFcXHUxRUYzXFx1MUVGNVxcdTFFRjdcXHUxRUY5XFx1MUVGQlxcdTFFRkRcXHUxRUZGLVxcdTFGMDdcXHUxRjEwLVxcdTFGMTVcXHUxRjIwLVxcdTFGMjdcXHUxRjMwLVxcdTFGMzdcXHUxRjQwLVxcdTFGNDVcXHUxRjUwLVxcdTFGNTdcXHUxRjYwLVxcdTFGNjdcXHUxRjcwLVxcdTFGN0RcXHUxRjgwLVxcdTFGODdcXHUxRjkwLVxcdTFGOTdcXHUxRkEwLVxcdTFGQTdcXHUxRkIwLVxcdTFGQjRcXHUxRkI2XFx1MUZCN1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2XFx1MUZDN1xcdTFGRDAtXFx1MUZEM1xcdTFGRDZcXHUxRkQ3XFx1MUZFMC1cXHUxRkU3XFx1MUZGMi1cXHUxRkY0XFx1MUZGNlxcdTFGRjdcXHUyMTBBXFx1MjEwRVxcdTIxMEZcXHUyMTEzXFx1MjEyRlxcdTIxMzRcXHUyMTM5XFx1MjEzQ1xcdTIxM0RcXHUyMTQ2LVxcdTIxNDlcXHUyMTRFXFx1MjE4NFxcdTJDMzAtXFx1MkM1RVxcdTJDNjFcXHUyQzY1XFx1MkM2NlxcdTJDNjhcXHUyQzZBXFx1MkM2Q1xcdTJDNzFcXHUyQzczXFx1MkM3NFxcdTJDNzYtXFx1MkM3QlxcdTJDODFcXHUyQzgzXFx1MkM4NVxcdTJDODdcXHUyQzg5XFx1MkM4QlxcdTJDOERcXHUyQzhGXFx1MkM5MVxcdTJDOTNcXHUyQzk1XFx1MkM5N1xcdTJDOTlcXHUyQzlCXFx1MkM5RFxcdTJDOUZcXHUyQ0ExXFx1MkNBM1xcdTJDQTVcXHUyQ0E3XFx1MkNBOVxcdTJDQUJcXHUyQ0FEXFx1MkNBRlxcdTJDQjFcXHUyQ0IzXFx1MkNCNVxcdTJDQjdcXHUyQ0I5XFx1MkNCQlxcdTJDQkRcXHUyQ0JGXFx1MkNDMVxcdTJDQzNcXHUyQ0M1XFx1MkNDN1xcdTJDQzlcXHUyQ0NCXFx1MkNDRFxcdTJDQ0ZcXHUyQ0QxXFx1MkNEM1xcdTJDRDVcXHUyQ0Q3XFx1MkNEOVxcdTJDREJcXHUyQ0REXFx1MkNERlxcdTJDRTFcXHUyQ0UzXFx1MkNFNFxcdTJDRUNcXHUyQ0VFXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1QTY0MVxcdUE2NDNcXHVBNjQ1XFx1QTY0N1xcdUE2NDlcXHVBNjRCXFx1QTY0RFxcdUE2NEZcXHVBNjUxXFx1QTY1M1xcdUE2NTVcXHVBNjU3XFx1QTY1OVxcdUE2NUJcXHVBNjVEXFx1QTY1RlxcdUE2NjFcXHVBNjYzXFx1QTY2NVxcdUE2NjdcXHVBNjY5XFx1QTY2QlxcdUE2NkRcXHVBNjgxXFx1QTY4M1xcdUE2ODVcXHVBNjg3XFx1QTY4OVxcdUE2OEJcXHVBNjhEXFx1QTY4RlxcdUE2OTFcXHVBNjkzXFx1QTY5NVxcdUE2OTdcXHVBNjk5XFx1QTY5QlxcdUE3MjNcXHVBNzI1XFx1QTcyN1xcdUE3MjlcXHVBNzJCXFx1QTcyRFxcdUE3MkYtXFx1QTczMVxcdUE3MzNcXHVBNzM1XFx1QTczN1xcdUE3MzlcXHVBNzNCXFx1QTczRFxcdUE3M0ZcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBNzQ3XFx1QTc0OVxcdUE3NEJcXHVBNzREXFx1QTc0RlxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdUE3NTdcXHVBNzU5XFx1QTc1QlxcdUE3NURcXHVBNzVGXFx1QTc2MVxcdUE3NjNcXHVBNzY1XFx1QTc2N1xcdUE3NjlcXHVBNzZCXFx1QTc2RFxcdUE3NkZcXHVBNzcxLVxcdUE3NzhcXHVBNzdBXFx1QTc3Q1xcdUE3N0ZcXHVBNzgxXFx1QTc4M1xcdUE3ODVcXHVBNzg3XFx1QTc4Q1xcdUE3OEVcXHVBNzkxXFx1QTc5My1cXHVBNzk1XFx1QTc5N1xcdUE3OTlcXHVBNzlCXFx1QTc5RFxcdUE3OUZcXHVBN0ExXFx1QTdBM1xcdUE3QTVcXHVBN0E3XFx1QTdBOVxcdUE3QUZcXHVBN0I1XFx1QTdCN1xcdUE3QjlcXHVBN0JCXFx1QTdCRFxcdUE3QkZcXHVBN0MzXFx1QTdDOFxcdUE3Q0FcXHVBN0Y2XFx1QTdGQVxcdUFCMzAtXFx1QUI1QVxcdUFCNjAtXFx1QUI2OFxcdUFCNzAtXFx1QUJCRlxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZGNDEtXFx1RkY1QScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMVtcXHVEQzI4LVxcdURDNEZcXHVEQ0Q4LVxcdURDRkJdfFxcdUQ4MDNbXFx1RENDMC1cXHVEQ0YyXXxcXHVEODA2W1xcdURDQzAtXFx1RENERl18XFx1RDgxQltcXHVERTYwLVxcdURFN0ZdfFxcdUQ4MzVbXFx1REMxQS1cXHVEQzMzXFx1REM0RS1cXHVEQzU0XFx1REM1Ni1cXHVEQzY3XFx1REM4Mi1cXHVEQzlCXFx1RENCNi1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1RENDRlxcdURDRUEtXFx1REQwM1xcdUREMUUtXFx1REQzN1xcdURENTItXFx1REQ2QlxcdUREODYtXFx1REQ5RlxcdUREQkEtXFx1REREM1xcdURERUUtXFx1REUwN1xcdURFMjItXFx1REUzQlxcdURFNTYtXFx1REU2RlxcdURFOEEtXFx1REVBNVxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVFMVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYxQlxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY1NVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REY4RlxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDOVxcdURGQ0JdfFxcdUQ4M0FbXFx1REQyMi1cXHVERDQzXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTG0nLFxuICAgICAgICAnYWxpYXMnOiAnTW9kaWZpZXJfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMkIwLVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzRcXHUwMzdBXFx1MDU1OVxcdTA2NDBcXHUwNkU1XFx1MDZFNlxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA5NzFcXHUwRTQ2XFx1MEVDNlxcdTEwRkNcXHUxN0Q3XFx1MTg0M1xcdTFBQTdcXHUxQzc4LVxcdTFDN0RcXHUxRDJDLVxcdTFENkFcXHUxRDc4XFx1MUQ5Qi1cXHUxREJGXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyQzdDXFx1MkM3RFxcdTJENkZcXHUyRTJGXFx1MzAwNVxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMwRkMtXFx1MzBGRVxcdUEwMTVcXHVBNEY4LVxcdUE0RkRcXHVBNjBDXFx1QTY3RlxcdUE2OUNcXHVBNjlEXFx1QTcxNy1cXHVBNzFGXFx1QTc3MFxcdUE3ODhcXHVBN0Y4XFx1QTdGOVxcdUE5Q0ZcXHVBOUU2XFx1QUE3MFxcdUFBRERcXHVBQUYzXFx1QUFGNFxcdUFCNUMtXFx1QUI1RlxcdUFCNjlcXHVGRjcwXFx1RkY5RVxcdUZGOUYnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MUFbXFx1REY0MC1cXHVERjQzXXxcXHVEODFCW1xcdURGOTMtXFx1REY5RlxcdURGRTBcXHVERkUxXFx1REZFM118XFx1RDgzOFtcXHVERDM3LVxcdUREM0RdfFxcdUQ4M0FcXHVERDRCJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMbycsXG4gICAgICAgICdhbGlhcyc6ICdPdGhlcl9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ1xceEFBXFx4QkFcXHUwMUJCXFx1MDFDMC1cXHUwMUMzXFx1MDI5NFxcdTA1RDAtXFx1MDVFQVxcdTA1RUYtXFx1MDVGMlxcdTA2MjAtXFx1MDYzRlxcdTA2NDEtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDgwMC1cXHUwODE1XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEM3XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcyLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDQtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ1XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4Ni1cXHUwRThBXFx1MEU4Qy1cXHUwRUEzXFx1MEVBNVxcdTBFQTctXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTExMDAtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEQ1xcdTE4MjAtXFx1MTg0MlxcdTE4NDQtXFx1MTg3OFxcdTE4ODAtXFx1MTg4NFxcdTE4ODctXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3N1xcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGM1xcdTFDRjVcXHUxQ0Y2XFx1MUNGQVxcdTIxMzUtXFx1MjEzOFxcdTJEMzAtXFx1MkQ2N1xcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDZcXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkZcXHUzMTA1LVxcdTMxMkZcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkZcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQkZcXHU0RTAwLVxcdTlGRkNcXHVBMDAwLVxcdUEwMTRcXHVBMDE2LVxcdUE0OENcXHVBNEQwLVxcdUE0RjdcXHVBNTAwLVxcdUE2MEJcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NkVcXHVBNkEwLVxcdUE2RTVcXHVBNzhGXFx1QTdGN1xcdUE3RkItXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QThGRVxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5RTAtXFx1QTlFNFxcdUE5RTctXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE2RlxcdUFBNzEtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREJcXHVBQURDXFx1QUFFMC1cXHVBQUVBXFx1QUFGMlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGNjYtXFx1RkY2RlxcdUZGNzEtXFx1RkY5RFxcdUZGQTAtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0MFxcdURGNDItXFx1REY0OVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRl18XFx1RDgwMVtcXHVEQzUwLVxcdURDOURcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdUREMDAtXFx1REQyM1xcdURFODAtXFx1REVBOVxcdURFQjBcXHVERUIxXFx1REYwMC1cXHVERjFDXFx1REYyN1xcdURGMzAtXFx1REY0NVxcdURGQjAtXFx1REZDNFxcdURGRTAtXFx1REZGNl18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDQ0XFx1REQ0N1xcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1Ri1cXHVEQzYxXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1REQ4MC1cXHVEREFFXFx1REREOC1cXHVERERCXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFODAtXFx1REVBQVxcdURFQjhcXHVERjAwLVxcdURGMUFdfFxcdUQ4MDZbXFx1REMwMC1cXHVEQzJCXFx1RENGRi1cXHVERDA2XFx1REQwOVxcdUREMEMtXFx1REQxM1xcdUREMTVcXHVERDE2XFx1REQxOC1cXHVERDJGXFx1REQzRlxcdURENDFcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdURFRTAtXFx1REVGMlxcdURGQjBdfFxcdUQ4MDhbXFx1REMwMC1cXHVERjk5XXxcXHVEODA5W1xcdURDODAtXFx1REQ0M118W1xcdUQ4MENcXHVEODFDLVxcdUQ4MjBcXHVEODIyXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXFx1RDg3NC1cXHVEODc5XFx1RDg4MC1cXHVEODgzXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjRBXFx1REY1MF18XFx1RDgyMVtcXHVEQzAwLVxcdURGRjddfFxcdUQ4MjNbXFx1REMwMC1cXHVEQ0Q1XFx1REQwMC1cXHVERDA4XXxcXHVEODJDW1xcdURDMDAtXFx1REQxRVxcdURENTAtXFx1REQ1MlxcdURENjQtXFx1REQ2N1xcdURENzAtXFx1REVGQl18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzhbXFx1REQwMC1cXHVERDJDXFx1REQ0RVxcdURFQzAtXFx1REVFQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRERcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFcXHVERUIwLVxcdURGRkZdfFxcdUQ4N0FbXFx1REMwMC1cXHVERkUwXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF18XFx1RDg4NFtcXHVEQzAwLVxcdURGNEFdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMdCcsXG4gICAgICAgICdhbGlhcyc6ICdUaXRsZWNhc2VfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMUM1XFx1MDFDOFxcdTAxQ0JcXHUwMUYyXFx1MUY4OC1cXHUxRjhGXFx1MUY5OC1cXHUxRjlGXFx1MUZBOC1cXHUxRkFGXFx1MUZCQ1xcdTFGQ0NcXHUxRkZDJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMdScsXG4gICAgICAgICdhbGlhcyc6ICdVcHBlcmNhc2VfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdBLVpcXHhDMC1cXHhENlxceEQ4LVxceERFXFx1MDEwMFxcdTAxMDJcXHUwMTA0XFx1MDEwNlxcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAxMEVcXHUwMTEwXFx1MDExMlxcdTAxMTRcXHUwMTE2XFx1MDExOFxcdTAxMUFcXHUwMTFDXFx1MDExRVxcdTAxMjBcXHUwMTIyXFx1MDEyNFxcdTAxMjZcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTJFXFx1MDEzMFxcdTAxMzJcXHUwMTM0XFx1MDEzNlxcdTAxMzlcXHUwMTNCXFx1MDEzRFxcdTAxM0ZcXHUwMTQxXFx1MDE0M1xcdTAxNDVcXHUwMTQ3XFx1MDE0QVxcdTAxNENcXHUwMTRFXFx1MDE1MFxcdTAxNTJcXHUwMTU0XFx1MDE1NlxcdTAxNThcXHUwMTVBXFx1MDE1Q1xcdTAxNUVcXHUwMTYwXFx1MDE2MlxcdTAxNjRcXHUwMTY2XFx1MDE2OFxcdTAxNkFcXHUwMTZDXFx1MDE2RVxcdTAxNzBcXHUwMTcyXFx1MDE3NFxcdTAxNzZcXHUwMTc4XFx1MDE3OVxcdTAxN0JcXHUwMTdEXFx1MDE4MVxcdTAxODJcXHUwMTg0XFx1MDE4NlxcdTAxODdcXHUwMTg5LVxcdTAxOEJcXHUwMThFLVxcdTAxOTFcXHUwMTkzXFx1MDE5NFxcdTAxOTYtXFx1MDE5OFxcdTAxOUNcXHUwMTlEXFx1MDE5RlxcdTAxQTBcXHUwMUEyXFx1MDFBNFxcdTAxQTZcXHUwMUE3XFx1MDFBOVxcdTAxQUNcXHUwMUFFXFx1MDFBRlxcdTAxQjEtXFx1MDFCM1xcdTAxQjVcXHUwMUI3XFx1MDFCOFxcdTAxQkNcXHUwMUM0XFx1MDFDN1xcdTAxQ0FcXHUwMUNEXFx1MDFDRlxcdTAxRDFcXHUwMUQzXFx1MDFENVxcdTAxRDdcXHUwMUQ5XFx1MDFEQlxcdTAxREVcXHUwMUUwXFx1MDFFMlxcdTAxRTRcXHUwMUU2XFx1MDFFOFxcdTAxRUFcXHUwMUVDXFx1MDFFRVxcdTAxRjFcXHUwMUY0XFx1MDFGNi1cXHUwMUY4XFx1MDFGQVxcdTAxRkNcXHUwMUZFXFx1MDIwMFxcdTAyMDJcXHUwMjA0XFx1MDIwNlxcdTAyMDhcXHUwMjBBXFx1MDIwQ1xcdTAyMEVcXHUwMjEwXFx1MDIxMlxcdTAyMTRcXHUwMjE2XFx1MDIxOFxcdTAyMUFcXHUwMjFDXFx1MDIxRVxcdTAyMjBcXHUwMjIyXFx1MDIyNFxcdTAyMjZcXHUwMjI4XFx1MDIyQVxcdTAyMkNcXHUwMjJFXFx1MDIzMFxcdTAyMzJcXHUwMjNBXFx1MDIzQlxcdTAyM0RcXHUwMjNFXFx1MDI0MVxcdTAyNDMtXFx1MDI0NlxcdTAyNDhcXHUwMjRBXFx1MDI0Q1xcdTAyNEVcXHUwMzcwXFx1MDM3MlxcdTAzNzZcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFXFx1MDM4RlxcdTAzOTEtXFx1MDNBMVxcdTAzQTMtXFx1MDNBQlxcdTAzQ0ZcXHUwM0QyLVxcdTAzRDRcXHUwM0Q4XFx1MDNEQVxcdTAzRENcXHUwM0RFXFx1MDNFMFxcdTAzRTJcXHUwM0U0XFx1MDNFNlxcdTAzRThcXHUwM0VBXFx1MDNFQ1xcdTAzRUVcXHUwM0Y0XFx1MDNGN1xcdTAzRjlcXHUwM0ZBXFx1MDNGRC1cXHUwNDJGXFx1MDQ2MFxcdTA0NjJcXHUwNDY0XFx1MDQ2NlxcdTA0NjhcXHUwNDZBXFx1MDQ2Q1xcdTA0NkVcXHUwNDcwXFx1MDQ3MlxcdTA0NzRcXHUwNDc2XFx1MDQ3OFxcdTA0N0FcXHUwNDdDXFx1MDQ3RVxcdTA0ODBcXHUwNDhBXFx1MDQ4Q1xcdTA0OEVcXHUwNDkwXFx1MDQ5MlxcdTA0OTRcXHUwNDk2XFx1MDQ5OFxcdTA0OUFcXHUwNDlDXFx1MDQ5RVxcdTA0QTBcXHUwNEEyXFx1MDRBNFxcdTA0QTZcXHUwNEE4XFx1MDRBQVxcdTA0QUNcXHUwNEFFXFx1MDRCMFxcdTA0QjJcXHUwNEI0XFx1MDRCNlxcdTA0QjhcXHUwNEJBXFx1MDRCQ1xcdTA0QkVcXHUwNEMwXFx1MDRDMVxcdTA0QzNcXHUwNEM1XFx1MDRDN1xcdTA0QzlcXHUwNENCXFx1MDRDRFxcdTA0RDBcXHUwNEQyXFx1MDRENFxcdTA0RDZcXHUwNEQ4XFx1MDREQVxcdTA0RENcXHUwNERFXFx1MDRFMFxcdTA0RTJcXHUwNEU0XFx1MDRFNlxcdTA0RThcXHUwNEVBXFx1MDRFQ1xcdTA0RUVcXHUwNEYwXFx1MDRGMlxcdTA0RjRcXHUwNEY2XFx1MDRGOFxcdTA0RkFcXHUwNEZDXFx1MDRGRVxcdTA1MDBcXHUwNTAyXFx1MDUwNFxcdTA1MDZcXHUwNTA4XFx1MDUwQVxcdTA1MENcXHUwNTBFXFx1MDUxMFxcdTA1MTJcXHUwNTE0XFx1MDUxNlxcdTA1MThcXHUwNTFBXFx1MDUxQ1xcdTA1MUVcXHUwNTIwXFx1MDUyMlxcdTA1MjRcXHUwNTI2XFx1MDUyOFxcdTA1MkFcXHUwNTJDXFx1MDUyRVxcdTA1MzEtXFx1MDU1NlxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTNBMC1cXHUxM0Y1XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUUwMFxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTFFMDhcXHUxRTBBXFx1MUUwQ1xcdTFFMEVcXHUxRTEwXFx1MUUxMlxcdTFFMTRcXHUxRTE2XFx1MUUxOFxcdTFFMUFcXHUxRTFDXFx1MUUxRVxcdTFFMjBcXHUxRTIyXFx1MUUyNFxcdTFFMjZcXHUxRTI4XFx1MUUyQVxcdTFFMkNcXHUxRTJFXFx1MUUzMFxcdTFFMzJcXHUxRTM0XFx1MUUzNlxcdTFFMzhcXHUxRTNBXFx1MUUzQ1xcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTFFNDRcXHUxRTQ2XFx1MUU0OFxcdTFFNEFcXHUxRTRDXFx1MUU0RVxcdTFFNTBcXHUxRTUyXFx1MUU1NFxcdTFFNTZcXHUxRTU4XFx1MUU1QVxcdTFFNUNcXHUxRTVFXFx1MUU2MFxcdTFFNjJcXHUxRTY0XFx1MUU2NlxcdTFFNjhcXHUxRTZBXFx1MUU2Q1xcdTFFNkVcXHUxRTcwXFx1MUU3MlxcdTFFNzRcXHUxRTc2XFx1MUU3OFxcdTFFN0FcXHUxRTdDXFx1MUU3RVxcdTFFODBcXHUxRTgyXFx1MUU4NFxcdTFFODZcXHUxRTg4XFx1MUU4QVxcdTFFOENcXHUxRThFXFx1MUU5MFxcdTFFOTJcXHUxRTk0XFx1MUU5RVxcdTFFQTBcXHUxRUEyXFx1MUVBNFxcdTFFQTZcXHUxRUE4XFx1MUVBQVxcdTFFQUNcXHUxRUFFXFx1MUVCMFxcdTFFQjJcXHUxRUI0XFx1MUVCNlxcdTFFQjhcXHUxRUJBXFx1MUVCQ1xcdTFFQkVcXHUxRUMwXFx1MUVDMlxcdTFFQzRcXHUxRUM2XFx1MUVDOFxcdTFFQ0FcXHUxRUNDXFx1MUVDRVxcdTFFRDBcXHUxRUQyXFx1MUVENFxcdTFFRDZcXHUxRUQ4XFx1MUVEQVxcdTFFRENcXHUxRURFXFx1MUVFMFxcdTFFRTJcXHUxRUU0XFx1MUVFNlxcdTFFRThcXHUxRUVBXFx1MUVFQ1xcdTFFRUVcXHUxRUYwXFx1MUVGMlxcdTFFRjRcXHUxRUY2XFx1MUVGOFxcdTFFRkFcXHUxRUZDXFx1MUVGRVxcdTFGMDgtXFx1MUYwRlxcdTFGMTgtXFx1MUYxRFxcdTFGMjgtXFx1MUYyRlxcdTFGMzgtXFx1MUYzRlxcdTFGNDgtXFx1MUY0RFxcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUZcXHUxRjY4LVxcdTFGNkZcXHUxRkI4LVxcdTFGQkJcXHUxRkM4LVxcdTFGQ0JcXHUxRkQ4LVxcdTFGREJcXHUxRkU4LVxcdTFGRUNcXHUxRkY4LVxcdTFGRkJcXHUyMTAyXFx1MjEwN1xcdTIxMEItXFx1MjEwRFxcdTIxMTAtXFx1MjExMlxcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTMwLVxcdTIxMzNcXHUyMTNFXFx1MjEzRlxcdTIxNDVcXHUyMTgzXFx1MkMwMC1cXHUyQzJFXFx1MkM2MFxcdTJDNjItXFx1MkM2NFxcdTJDNjdcXHUyQzY5XFx1MkM2QlxcdTJDNkQtXFx1MkM3MFxcdTJDNzJcXHUyQzc1XFx1MkM3RS1cXHUyQzgwXFx1MkM4MlxcdTJDODRcXHUyQzg2XFx1MkM4OFxcdTJDOEFcXHUyQzhDXFx1MkM4RVxcdTJDOTBcXHUyQzkyXFx1MkM5NFxcdTJDOTZcXHUyQzk4XFx1MkM5QVxcdTJDOUNcXHUyQzlFXFx1MkNBMFxcdTJDQTJcXHUyQ0E0XFx1MkNBNlxcdTJDQThcXHUyQ0FBXFx1MkNBQ1xcdTJDQUVcXHUyQ0IwXFx1MkNCMlxcdTJDQjRcXHUyQ0I2XFx1MkNCOFxcdTJDQkFcXHUyQ0JDXFx1MkNCRVxcdTJDQzBcXHUyQ0MyXFx1MkNDNFxcdTJDQzZcXHUyQ0M4XFx1MkNDQVxcdTJDQ0NcXHUyQ0NFXFx1MkNEMFxcdTJDRDJcXHUyQ0Q0XFx1MkNENlxcdTJDRDhcXHUyQ0RBXFx1MkNEQ1xcdTJDREVcXHUyQ0UwXFx1MkNFMlxcdTJDRUJcXHUyQ0VEXFx1MkNGMlxcdUE2NDBcXHVBNjQyXFx1QTY0NFxcdUE2NDZcXHVBNjQ4XFx1QTY0QVxcdUE2NENcXHVBNjRFXFx1QTY1MFxcdUE2NTJcXHVBNjU0XFx1QTY1NlxcdUE2NThcXHVBNjVBXFx1QTY1Q1xcdUE2NUVcXHVBNjYwXFx1QTY2MlxcdUE2NjRcXHVBNjY2XFx1QTY2OFxcdUE2NkFcXHVBNjZDXFx1QTY4MFxcdUE2ODJcXHVBNjg0XFx1QTY4NlxcdUE2ODhcXHVBNjhBXFx1QTY4Q1xcdUE2OEVcXHVBNjkwXFx1QTY5MlxcdUE2OTRcXHVBNjk2XFx1QTY5OFxcdUE2OUFcXHVBNzIyXFx1QTcyNFxcdUE3MjZcXHVBNzI4XFx1QTcyQVxcdUE3MkNcXHVBNzJFXFx1QTczMlxcdUE3MzRcXHVBNzM2XFx1QTczOFxcdUE3M0FcXHVBNzNDXFx1QTczRVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3NDZcXHVBNzQ4XFx1QTc0QVxcdUE3NENcXHVBNzRFXFx1QTc1MFxcdUE3NTJcXHVBNzU0XFx1QTc1NlxcdUE3NThcXHVBNzVBXFx1QTc1Q1xcdUE3NUVcXHVBNzYwXFx1QTc2MlxcdUE3NjRcXHVBNzY2XFx1QTc2OFxcdUE3NkFcXHVBNzZDXFx1QTc2RVxcdUE3NzlcXHVBNzdCXFx1QTc3RFxcdUE3N0VcXHVBNzgwXFx1QTc4MlxcdUE3ODRcXHVBNzg2XFx1QTc4QlxcdUE3OERcXHVBNzkwXFx1QTc5MlxcdUE3OTZcXHVBNzk4XFx1QTc5QVxcdUE3OUNcXHVBNzlFXFx1QTdBMFxcdUE3QTJcXHVBN0E0XFx1QTdBNlxcdUE3QThcXHVBN0FBLVxcdUE3QUVcXHVBN0IwLVxcdUE3QjRcXHVBN0I2XFx1QTdCOFxcdUE3QkFcXHVBN0JDXFx1QTdCRVxcdUE3QzJcXHVBN0M0LVxcdUE3QzdcXHVBN0M5XFx1QTdGNVxcdUZGMjEtXFx1RkYzQScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMVtcXHVEQzAwLVxcdURDMjdcXHVEQ0IwLVxcdURDRDNdfFxcdUQ4MDNbXFx1REM4MC1cXHVEQ0IyXXxcXHVEODA2W1xcdURDQTAtXFx1RENCRl18XFx1RDgxQltcXHVERTQwLVxcdURFNUZdfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzE5XFx1REMzNC1cXHVEQzREXFx1REM2OC1cXHVEQzgxXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I1XFx1RENEMC1cXHVEQ0U5XFx1REQwNFxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDM4XFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDZDLVxcdUREODVcXHVEREEwLVxcdUREQjlcXHVEREQ0LVxcdURERURcXHVERTA4LVxcdURFMjFcXHVERTNDLVxcdURFNTVcXHVERTcwLVxcdURFODlcXHVERUE4LVxcdURFQzBcXHVERUUyLVxcdURFRkFcXHVERjFDLVxcdURGMzRcXHVERjU2LVxcdURGNkVcXHVERjkwLVxcdURGQThcXHVERkNBXXxcXHVEODNBW1xcdUREMDAtXFx1REQyMV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ00nLFxuICAgICAgICAnYWxpYXMnOiAnTWFyaycsXG4gICAgICAgICdibXAnOiAnXFx1MDMwMC1cXHUwMzZGXFx1MDQ4My1cXHUwNDg5XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDYxMC1cXHUwNjFBXFx1MDY0Qi1cXHUwNjVGXFx1MDY3MFxcdTA2RDYtXFx1MDZEQ1xcdTA2REYtXFx1MDZFNFxcdTA2RTdcXHUwNkU4XFx1MDZFQS1cXHUwNkVEXFx1MDcxMVxcdTA3MzAtXFx1MDc0QVxcdTA3QTYtXFx1MDdCMFxcdTA3RUItXFx1MDdGM1xcdTA3RkRcXHUwODE2LVxcdTA4MTlcXHUwODFCLVxcdTA4MjNcXHUwODI1LVxcdTA4MjdcXHUwODI5LVxcdTA4MkRcXHUwODU5LVxcdTA4NUJcXHUwOEQzLVxcdTA4RTFcXHUwOEUzLVxcdTA5MDNcXHUwOTNBLVxcdTA5M0NcXHUwOTNFLVxcdTA5NEZcXHUwOTUxLVxcdTA5NTdcXHUwOTYyXFx1MDk2M1xcdTA5ODEtXFx1MDk4M1xcdTA5QkNcXHUwOUJFLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRFxcdTA5RDdcXHUwOUUyXFx1MDlFM1xcdTA5RkVcXHUwQTAxLVxcdTBBMDNcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE3MFxcdTBBNzFcXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEFCQ1xcdTBBQkUtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRTJcXHUwQUUzXFx1MEFGQS1cXHUwQUZGXFx1MEIwMS1cXHUwQjAzXFx1MEIzQ1xcdTBCM0UtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NS1cXHUwQjU3XFx1MEI2MlxcdTBCNjNcXHUwQjgyXFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEN1xcdTBDMDAtXFx1MEMwNFxcdTBDM0UtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM2MlxcdTBDNjNcXHUwQzgxLVxcdTBDODNcXHUwQ0JDXFx1MENCRS1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0UyXFx1MENFM1xcdTBEMDAtXFx1MEQwM1xcdTBEM0JcXHUwRDNDXFx1MEQzRS1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDREXFx1MEQ1N1xcdTBENjJcXHUwRDYzXFx1MEQ4MS1cXHUwRDgzXFx1MERDQVxcdTBEQ0YtXFx1MERENFxcdTBERDZcXHUwREQ4LVxcdTBEREZcXHUwREYyXFx1MERGM1xcdTBFMzFcXHUwRTM0LVxcdTBFM0FcXHUwRTQ3LVxcdTBFNEVcXHUwRUIxXFx1MEVCNC1cXHUwRUJDXFx1MEVDOC1cXHUwRUNEXFx1MEYxOFxcdTBGMTlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFXFx1MEYzRlxcdTBGNzEtXFx1MEY4NFxcdTBGODZcXHUwRjg3XFx1MEY4RC1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMkItXFx1MTAzRVxcdTEwNTYtXFx1MTA1OVxcdTEwNUUtXFx1MTA2MFxcdTEwNjItXFx1MTA2NFxcdTEwNjctXFx1MTA2RFxcdTEwNzEtXFx1MTA3NFxcdTEwODItXFx1MTA4RFxcdTEwOEZcXHUxMDlBLVxcdTEwOURcXHUxMzVELVxcdTEzNUZcXHUxNzEyLVxcdTE3MTRcXHUxNzMyLVxcdTE3MzRcXHUxNzUyXFx1MTc1M1xcdTE3NzJcXHUxNzczXFx1MTdCNC1cXHUxN0QzXFx1MTdERFxcdTE4MEItXFx1MTgwRFxcdTE4ODVcXHUxODg2XFx1MThBOVxcdTE5MjAtXFx1MTkyQlxcdTE5MzAtXFx1MTkzQlxcdTFBMTctXFx1MUExQlxcdTFBNTUtXFx1MUE1RVxcdTFBNjAtXFx1MUE3Q1xcdTFBN0ZcXHUxQUIwLVxcdTFBQzBcXHUxQjAwLVxcdTFCMDRcXHUxQjM0LVxcdTFCNDRcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCODJcXHUxQkExLVxcdTFCQURcXHUxQkU2LVxcdTFCRjNcXHUxQzI0LVxcdTFDMzdcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRThcXHUxQ0VEXFx1MUNGNFxcdTFDRjctXFx1MUNGOVxcdTFEQzAtXFx1MURGOVxcdTFERkItXFx1MURGRlxcdTIwRDAtXFx1MjBGMFxcdTJDRUYtXFx1MkNGMVxcdTJEN0ZcXHUyREUwLVxcdTJERkZcXHUzMDJBLVxcdTMwMkZcXHUzMDk5XFx1MzA5QVxcdUE2NkYtXFx1QTY3MlxcdUE2NzQtXFx1QTY3RFxcdUE2OUVcXHVBNjlGXFx1QTZGMFxcdUE2RjFcXHVBODAyXFx1QTgwNlxcdUE4MEJcXHVBODIzLVxcdUE4MjdcXHVBODJDXFx1QTg4MFxcdUE4ODFcXHVBOEI0LVxcdUE4QzVcXHVBOEUwLVxcdUE4RjFcXHVBOEZGXFx1QTkyNi1cXHVBOTJEXFx1QTk0Ny1cXHVBOTUzXFx1QTk4MC1cXHVBOTgzXFx1QTlCMy1cXHVBOUMwXFx1QTlFNVxcdUFBMjktXFx1QUEzNlxcdUFBNDNcXHVBQTRDXFx1QUE0RFxcdUFBN0ItXFx1QUE3RFxcdUFBQjBcXHVBQUIyLVxcdUFBQjRcXHVBQUI3XFx1QUFCOFxcdUFBQkVcXHVBQUJGXFx1QUFDMVxcdUFBRUItXFx1QUFFRlxcdUFBRjVcXHVBQUY2XFx1QUJFMy1cXHVBQkVBXFx1QUJFQ1xcdUFCRURcXHVGQjFFXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTJGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURERkRcXHVERUUwXFx1REY3Ni1cXHVERjdBXXxcXHVEODAyW1xcdURFMDEtXFx1REUwM1xcdURFMDVcXHVERTA2XFx1REUwQy1cXHVERTBGXFx1REUzOC1cXHVERTNBXFx1REUzRlxcdURFRTVcXHVERUU2XXxcXHVEODAzW1xcdUREMjQtXFx1REQyN1xcdURFQUJcXHVERUFDXFx1REY0Ni1cXHVERjUwXXxcXHVEODA0W1xcdURDMDAtXFx1REMwMlxcdURDMzgtXFx1REM0NlxcdURDN0YtXFx1REM4MlxcdURDQjAtXFx1RENCQVxcdUREMDAtXFx1REQwMlxcdUREMjctXFx1REQzNFxcdURENDVcXHVERDQ2XFx1REQ3M1xcdUREODAtXFx1REQ4MlxcdUREQjMtXFx1RERDMFxcdUREQzktXFx1RERDQ1xcdUREQ0VcXHVERENGXFx1REUyQy1cXHVERTM3XFx1REUzRVxcdURFREYtXFx1REVFQVxcdURGMDAtXFx1REYwM1xcdURGM0JcXHVERjNDXFx1REYzRS1cXHVERjQ0XFx1REY0N1xcdURGNDhcXHVERjRCLVxcdURGNERcXHVERjU3XFx1REY2MlxcdURGNjNcXHVERjY2LVxcdURGNkNcXHVERjcwLVxcdURGNzRdfFxcdUQ4MDVbXFx1REMzNS1cXHVEQzQ2XFx1REM1RVxcdURDQjAtXFx1RENDM1xcdUREQUYtXFx1RERCNVxcdUREQjgtXFx1RERDMFxcdURERENcXHVEREREXFx1REUzMC1cXHVERTQwXFx1REVBQi1cXHVERUI3XFx1REYxRC1cXHVERjJCXXxcXHVEODA2W1xcdURDMkMtXFx1REMzQVxcdUREMzAtXFx1REQzNVxcdUREMzdcXHVERDM4XFx1REQzQi1cXHVERDNFXFx1REQ0MFxcdURENDJcXHVERDQzXFx1REREMS1cXHVEREQ3XFx1REREQS1cXHVEREUwXFx1RERFNFxcdURFMDEtXFx1REUwQVxcdURFMzMtXFx1REUzOVxcdURFM0ItXFx1REUzRVxcdURFNDdcXHVERTUxLVxcdURFNUJcXHVERThBLVxcdURFOTldfFxcdUQ4MDdbXFx1REMyRi1cXHVEQzM2XFx1REMzOC1cXHVEQzNGXFx1REM5Mi1cXHVEQ0E3XFx1RENBOS1cXHVEQ0I2XFx1REQzMS1cXHVERDM2XFx1REQzQVxcdUREM0NcXHVERDNEXFx1REQzRi1cXHVERDQ1XFx1REQ0N1xcdUREOEEtXFx1REQ4RVxcdUREOTBcXHVERDkxXFx1REQ5My1cXHVERDk3XFx1REVGMy1cXHVERUY2XXxcXHVEODFBW1xcdURFRjAtXFx1REVGNFxcdURGMzAtXFx1REYzNl18XFx1RDgxQltcXHVERjRGXFx1REY1MS1cXHVERjg3XFx1REY4Ri1cXHVERjkyXFx1REZFNFxcdURGRjBcXHVERkYxXXxcXHVEODJGW1xcdURDOURcXHVEQzlFXXxcXHVEODM0W1xcdURENjUtXFx1REQ2OVxcdURENkQtXFx1REQ3MlxcdUREN0ItXFx1REQ4MlxcdUREODUtXFx1REQ4QlxcdUREQUEtXFx1RERBRFxcdURFNDItXFx1REU0NF18XFx1RDgzNltcXHVERTAwLVxcdURFMzZcXHVERTNCLVxcdURFNkNcXHVERTc1XFx1REU4NFxcdURFOUItXFx1REU5RlxcdURFQTEtXFx1REVBRl18XFx1RDgzOFtcXHVEQzAwLVxcdURDMDZcXHVEQzA4LVxcdURDMThcXHVEQzFCLVxcdURDMjFcXHVEQzIzXFx1REMyNFxcdURDMjYtXFx1REMyQVxcdUREMzAtXFx1REQzNlxcdURFRUMtXFx1REVFRl18XFx1RDgzQVtcXHVEQ0QwLVxcdURDRDZcXHVERDQ0LVxcdURENEFdfFxcdURCNDBbXFx1REQwMC1cXHVEREVGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTWMnLFxuICAgICAgICAnYWxpYXMnOiAnU3BhY2luZ19NYXJrJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwOTAzXFx1MDkzQlxcdTA5M0UtXFx1MDk0MFxcdTA5NDktXFx1MDk0Q1xcdTA5NEVcXHUwOTRGXFx1MDk4MlxcdTA5ODNcXHUwOUJFLVxcdTA5QzBcXHUwOUM3XFx1MDlDOFxcdTA5Q0JcXHUwOUNDXFx1MDlEN1xcdTBBMDNcXHUwQTNFLVxcdTBBNDBcXHUwQTgzXFx1MEFCRS1cXHUwQUMwXFx1MEFDOVxcdTBBQ0JcXHUwQUNDXFx1MEIwMlxcdTBCMDNcXHUwQjNFXFx1MEI0MFxcdTBCNDdcXHUwQjQ4XFx1MEI0QlxcdTBCNENcXHUwQjU3XFx1MEJCRVxcdTBCQkZcXHUwQkMxXFx1MEJDMlxcdTBCQzYtXFx1MEJDOFxcdTBCQ0EtXFx1MEJDQ1xcdTBCRDdcXHUwQzAxLVxcdTBDMDNcXHUwQzQxLVxcdTBDNDRcXHUwQzgyXFx1MEM4M1xcdTBDQkVcXHUwQ0MwLVxcdTBDQzRcXHUwQ0M3XFx1MENDOFxcdTBDQ0FcXHUwQ0NCXFx1MENENVxcdTBDRDZcXHUwRDAyXFx1MEQwM1xcdTBEM0UtXFx1MEQ0MFxcdTBENDYtXFx1MEQ0OFxcdTBENEEtXFx1MEQ0Q1xcdTBENTdcXHUwRDgyXFx1MEQ4M1xcdTBEQ0YtXFx1MEREMVxcdTBERDgtXFx1MERERlxcdTBERjJcXHUwREYzXFx1MEYzRVxcdTBGM0ZcXHUwRjdGXFx1MTAyQlxcdTEwMkNcXHUxMDMxXFx1MTAzOFxcdTEwM0JcXHUxMDNDXFx1MTA1NlxcdTEwNTdcXHUxMDYyLVxcdTEwNjRcXHUxMDY3LVxcdTEwNkRcXHUxMDgzXFx1MTA4NFxcdTEwODctXFx1MTA4Q1xcdTEwOEZcXHUxMDlBLVxcdTEwOUNcXHUxN0I2XFx1MTdCRS1cXHUxN0M1XFx1MTdDN1xcdTE3QzhcXHUxOTIzLVxcdTE5MjZcXHUxOTI5LVxcdTE5MkJcXHUxOTMwXFx1MTkzMVxcdTE5MzMtXFx1MTkzOFxcdTFBMTlcXHUxQTFBXFx1MUE1NVxcdTFBNTdcXHUxQTYxXFx1MUE2M1xcdTFBNjRcXHUxQTZELVxcdTFBNzJcXHUxQjA0XFx1MUIzNVxcdTFCM0JcXHUxQjNELVxcdTFCNDFcXHUxQjQzXFx1MUI0NFxcdTFCODJcXHUxQkExXFx1MUJBNlxcdTFCQTdcXHUxQkFBXFx1MUJFN1xcdTFCRUEtXFx1MUJFQ1xcdTFCRUVcXHUxQkYyXFx1MUJGM1xcdTFDMjQtXFx1MUMyQlxcdTFDMzRcXHUxQzM1XFx1MUNFMVxcdTFDRjdcXHUzMDJFXFx1MzAyRlxcdUE4MjNcXHVBODI0XFx1QTgyN1xcdUE4ODBcXHVBODgxXFx1QThCNC1cXHVBOEMzXFx1QTk1MlxcdUE5NTNcXHVBOTgzXFx1QTlCNFxcdUE5QjVcXHVBOUJBXFx1QTlCQlxcdUE5QkUtXFx1QTlDMFxcdUFBMkZcXHVBQTMwXFx1QUEzM1xcdUFBMzRcXHVBQTREXFx1QUE3QlxcdUFBN0RcXHVBQUVCXFx1QUFFRVxcdUFBRUZcXHVBQUY1XFx1QUJFM1xcdUFCRTRcXHVBQkU2XFx1QUJFN1xcdUFCRTlcXHVBQkVBXFx1QUJFQycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwNFtcXHVEQzAwXFx1REMwMlxcdURDODJcXHVEQ0IwLVxcdURDQjJcXHVEQ0I3XFx1RENCOFxcdUREMkNcXHVERDQ1XFx1REQ0NlxcdUREODJcXHVEREIzLVxcdUREQjVcXHVEREJGXFx1RERDMFxcdUREQ0VcXHVERTJDLVxcdURFMkVcXHVERTMyXFx1REUzM1xcdURFMzVcXHVERUUwLVxcdURFRTJcXHVERjAyXFx1REYwM1xcdURGM0VcXHVERjNGXFx1REY0MS1cXHVERjQ0XFx1REY0N1xcdURGNDhcXHVERjRCLVxcdURGNERcXHVERjU3XFx1REY2MlxcdURGNjNdfFxcdUQ4MDVbXFx1REMzNS1cXHVEQzM3XFx1REM0MFxcdURDNDFcXHVEQzQ1XFx1RENCMC1cXHVEQ0IyXFx1RENCOVxcdURDQkItXFx1RENCRVxcdURDQzFcXHVEREFGLVxcdUREQjFcXHVEREI4LVxcdUREQkJcXHVEREJFXFx1REUzMC1cXHVERTMyXFx1REUzQlxcdURFM0NcXHVERTNFXFx1REVBQ1xcdURFQUVcXHVERUFGXFx1REVCNlxcdURGMjBcXHVERjIxXFx1REYyNl18XFx1RDgwNltcXHVEQzJDLVxcdURDMkVcXHVEQzM4XFx1REQzMC1cXHVERDM1XFx1REQzN1xcdUREMzhcXHVERDNEXFx1REQ0MFxcdURENDJcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREZcXHVEREU0XFx1REUzOVxcdURFNTdcXHVERTU4XFx1REU5N118XFx1RDgwN1tcXHVEQzJGXFx1REMzRVxcdURDQTlcXHVEQ0IxXFx1RENCNFxcdUREOEEtXFx1REQ4RVxcdUREOTNcXHVERDk0XFx1REQ5NlxcdURFRjVcXHVERUY2XXxcXHVEODFCW1xcdURGNTEtXFx1REY4N1xcdURGRjBcXHVERkYxXXxcXHVEODM0W1xcdURENjVcXHVERDY2XFx1REQ2RC1cXHVERDcyXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTWUnLFxuICAgICAgICAnYWxpYXMnOiAnRW5jbG9zaW5nX01hcmsnLFxuICAgICAgICAnYm1wJzogJ1xcdTA0ODhcXHUwNDg5XFx1MUFCRVxcdTIwREQtXFx1MjBFMFxcdTIwRTItXFx1MjBFNFxcdUE2NzAtXFx1QTY3MidcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTW4nLFxuICAgICAgICAnYWxpYXMnOiAnTm9uc3BhY2luZ19NYXJrJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMzAwLVxcdTAzNkZcXHUwNDgzLVxcdTA0ODdcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNjEwLVxcdTA2MUFcXHUwNjRCLVxcdTA2NUZcXHUwNjcwXFx1MDZENi1cXHUwNkRDXFx1MDZERi1cXHUwNkU0XFx1MDZFN1xcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExXFx1MDczMC1cXHUwNzRBXFx1MDdBNi1cXHUwN0IwXFx1MDdFQi1cXHUwN0YzXFx1MDdGRFxcdTA4MTYtXFx1MDgxOVxcdTA4MUItXFx1MDgyM1xcdTA4MjUtXFx1MDgyN1xcdTA4MjktXFx1MDgyRFxcdTA4NTktXFx1MDg1QlxcdTA4RDMtXFx1MDhFMVxcdTA4RTMtXFx1MDkwMlxcdTA5M0FcXHUwOTNDXFx1MDk0MS1cXHUwOTQ4XFx1MDk0RFxcdTA5NTEtXFx1MDk1N1xcdTA5NjJcXHUwOTYzXFx1MDk4MVxcdTA5QkNcXHUwOUMxLVxcdTA5QzRcXHUwOUNEXFx1MDlFMlxcdTA5RTNcXHUwOUZFXFx1MEEwMVxcdTBBMDJcXHUwQTNDXFx1MEE0MVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTcwXFx1MEE3MVxcdTBBNzVcXHUwQTgxXFx1MEE4MlxcdTBBQkNcXHUwQUMxLVxcdTBBQzVcXHUwQUM3XFx1MEFDOFxcdTBBQ0RcXHUwQUUyXFx1MEFFM1xcdTBBRkEtXFx1MEFGRlxcdTBCMDFcXHUwQjNDXFx1MEIzRlxcdTBCNDEtXFx1MEI0NFxcdTBCNERcXHUwQjU1XFx1MEI1NlxcdTBCNjJcXHUwQjYzXFx1MEI4MlxcdTBCQzBcXHUwQkNEXFx1MEMwMFxcdTBDMDRcXHUwQzNFLVxcdTBDNDBcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNjJcXHUwQzYzXFx1MEM4MVxcdTBDQkNcXHUwQ0JGXFx1MENDNlxcdTBDQ0NcXHUwQ0NEXFx1MENFMlxcdTBDRTNcXHUwRDAwXFx1MEQwMVxcdTBEM0JcXHUwRDNDXFx1MEQ0MS1cXHUwRDQ0XFx1MEQ0RFxcdTBENjJcXHUwRDYzXFx1MEQ4MVxcdTBEQ0FcXHUwREQyLVxcdTBERDRcXHUwREQ2XFx1MEUzMVxcdTBFMzQtXFx1MEUzQVxcdTBFNDctXFx1MEU0RVxcdTBFQjFcXHUwRUI0LVxcdTBFQkNcXHUwRUM4LVxcdTBFQ0RcXHUwRjE4XFx1MEYxOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGNzEtXFx1MEY3RVxcdTBGODAtXFx1MEY4NFxcdTBGODZcXHUwRjg3XFx1MEY4RC1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMkQtXFx1MTAzMFxcdTEwMzItXFx1MTAzN1xcdTEwMzlcXHUxMDNBXFx1MTAzRFxcdTEwM0VcXHUxMDU4XFx1MTA1OVxcdTEwNUUtXFx1MTA2MFxcdTEwNzEtXFx1MTA3NFxcdTEwODJcXHUxMDg1XFx1MTA4NlxcdTEwOERcXHUxMDlEXFx1MTM1RC1cXHUxMzVGXFx1MTcxMi1cXHUxNzE0XFx1MTczMi1cXHUxNzM0XFx1MTc1MlxcdTE3NTNcXHUxNzcyXFx1MTc3M1xcdTE3QjRcXHUxN0I1XFx1MTdCNy1cXHUxN0JEXFx1MTdDNlxcdTE3QzktXFx1MTdEM1xcdTE3RERcXHUxODBCLVxcdTE4MERcXHUxODg1XFx1MTg4NlxcdTE4QTlcXHUxOTIwLVxcdTE5MjJcXHUxOTI3XFx1MTkyOFxcdTE5MzJcXHUxOTM5LVxcdTE5M0JcXHUxQTE3XFx1MUExOFxcdTFBMUJcXHUxQTU2XFx1MUE1OC1cXHUxQTVFXFx1MUE2MFxcdTFBNjJcXHUxQTY1LVxcdTFBNkNcXHUxQTczLVxcdTFBN0NcXHUxQTdGXFx1MUFCMC1cXHUxQUJEXFx1MUFCRlxcdTFBQzBcXHUxQjAwLVxcdTFCMDNcXHUxQjM0XFx1MUIzNi1cXHUxQjNBXFx1MUIzQ1xcdTFCNDJcXHUxQjZCLVxcdTFCNzNcXHUxQjgwXFx1MUI4MVxcdTFCQTItXFx1MUJBNVxcdTFCQThcXHUxQkE5XFx1MUJBQi1cXHUxQkFEXFx1MUJFNlxcdTFCRThcXHUxQkU5XFx1MUJFRFxcdTFCRUYtXFx1MUJGMVxcdTFDMkMtXFx1MUMzM1xcdTFDMzZcXHUxQzM3XFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0UwXFx1MUNFMi1cXHUxQ0U4XFx1MUNFRFxcdTFDRjRcXHUxQ0Y4XFx1MUNGOVxcdTFEQzAtXFx1MURGOVxcdTFERkItXFx1MURGRlxcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRjBcXHUyQ0VGLVxcdTJDRjFcXHUyRDdGXFx1MkRFMC1cXHUyREZGXFx1MzAyQS1cXHUzMDJEXFx1MzA5OVxcdTMwOUFcXHVBNjZGXFx1QTY3NC1cXHVBNjdEXFx1QTY5RVxcdUE2OUZcXHVBNkYwXFx1QTZGMVxcdUE4MDJcXHVBODA2XFx1QTgwQlxcdUE4MjVcXHVBODI2XFx1QTgyQ1xcdUE4QzRcXHVBOEM1XFx1QThFMC1cXHVBOEYxXFx1QThGRlxcdUE5MjYtXFx1QTkyRFxcdUE5NDctXFx1QTk1MVxcdUE5ODAtXFx1QTk4MlxcdUE5QjNcXHVBOUI2LVxcdUE5QjlcXHVBOUJDXFx1QTlCRFxcdUE5RTVcXHVBQTI5LVxcdUFBMkVcXHVBQTMxXFx1QUEzMlxcdUFBMzVcXHVBQTM2XFx1QUE0M1xcdUFBNENcXHVBQTdDXFx1QUFCMFxcdUFBQjItXFx1QUFCNFxcdUFBQjdcXHVBQUI4XFx1QUFCRVxcdUFBQkZcXHVBQUMxXFx1QUFFQ1xcdUFBRURcXHVBQUY2XFx1QUJFNVxcdUFCRThcXHVBQkVEXFx1RkIxRVxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEREZEXFx1REVFMFxcdURGNzYtXFx1REY3QV18XFx1RDgwMltcXHVERTAxLVxcdURFMDNcXHVERTA1XFx1REUwNlxcdURFMEMtXFx1REUwRlxcdURFMzgtXFx1REUzQVxcdURFM0ZcXHVERUU1XFx1REVFNl18XFx1RDgwM1tcXHVERDI0LVxcdUREMjdcXHVERUFCXFx1REVBQ1xcdURGNDYtXFx1REY1MF18XFx1RDgwNFtcXHVEQzAxXFx1REMzOC1cXHVEQzQ2XFx1REM3Ri1cXHVEQzgxXFx1RENCMy1cXHVEQ0I2XFx1RENCOVxcdURDQkFcXHVERDAwLVxcdUREMDJcXHVERDI3LVxcdUREMkJcXHVERDJELVxcdUREMzRcXHVERDczXFx1REQ4MFxcdUREODFcXHVEREI2LVxcdUREQkVcXHVEREM5LVxcdUREQ0NcXHVERENGXFx1REUyRi1cXHVERTMxXFx1REUzNFxcdURFMzZcXHVERTM3XFx1REUzRVxcdURFREZcXHVERUUzLVxcdURFRUFcXHVERjAwXFx1REYwMVxcdURGM0JcXHVERjNDXFx1REY0MFxcdURGNjYtXFx1REY2Q1xcdURGNzAtXFx1REY3NF18XFx1RDgwNVtcXHVEQzM4LVxcdURDM0ZcXHVEQzQyLVxcdURDNDRcXHVEQzQ2XFx1REM1RVxcdURDQjMtXFx1RENCOFxcdURDQkFcXHVEQ0JGXFx1RENDMFxcdURDQzJcXHVEQ0MzXFx1RERCMi1cXHVEREI1XFx1RERCQ1xcdUREQkRcXHVEREJGXFx1RERDMFxcdURERENcXHVEREREXFx1REUzMy1cXHVERTNBXFx1REUzRFxcdURFM0ZcXHVERTQwXFx1REVBQlxcdURFQURcXHVERUIwLVxcdURFQjVcXHVERUI3XFx1REYxRC1cXHVERjFGXFx1REYyMi1cXHVERjI1XFx1REYyNy1cXHVERjJCXXxcXHVEODA2W1xcdURDMkYtXFx1REMzN1xcdURDMzlcXHVEQzNBXFx1REQzQlxcdUREM0NcXHVERDNFXFx1REQ0M1xcdURERDQtXFx1REREN1xcdUREREFcXHVERERCXFx1RERFMFxcdURFMDEtXFx1REUwQVxcdURFMzMtXFx1REUzOFxcdURFM0ItXFx1REUzRVxcdURFNDdcXHVERTUxLVxcdURFNTZcXHVERTU5LVxcdURFNUJcXHVERThBLVxcdURFOTZcXHVERTk4XFx1REU5OV18XFx1RDgwN1tcXHVEQzMwLVxcdURDMzZcXHVEQzM4LVxcdURDM0RcXHVEQzNGXFx1REM5Mi1cXHVEQ0E3XFx1RENBQS1cXHVEQ0IwXFx1RENCMlxcdURDQjNcXHVEQ0I1XFx1RENCNlxcdUREMzEtXFx1REQzNlxcdUREM0FcXHVERDNDXFx1REQzRFxcdUREM0YtXFx1REQ0NVxcdURENDdcXHVERDkwXFx1REQ5MVxcdUREOTVcXHVERDk3XFx1REVGM1xcdURFRjRdfFxcdUQ4MUFbXFx1REVGMC1cXHVERUY0XFx1REYzMC1cXHVERjM2XXxcXHVEODFCW1xcdURGNEZcXHVERjhGLVxcdURGOTJcXHVERkU0XXxcXHVEODJGW1xcdURDOURcXHVEQzlFXXxcXHVEODM0W1xcdURENjctXFx1REQ2OVxcdUREN0ItXFx1REQ4MlxcdUREODUtXFx1REQ4QlxcdUREQUEtXFx1RERBRFxcdURFNDItXFx1REU0NF18XFx1RDgzNltcXHVERTAwLVxcdURFMzZcXHVERTNCLVxcdURFNkNcXHVERTc1XFx1REU4NFxcdURFOUItXFx1REU5RlxcdURFQTEtXFx1REVBRl18XFx1RDgzOFtcXHVEQzAwLVxcdURDMDZcXHVEQzA4LVxcdURDMThcXHVEQzFCLVxcdURDMjFcXHVEQzIzXFx1REMyNFxcdURDMjYtXFx1REMyQVxcdUREMzAtXFx1REQzNlxcdURFRUMtXFx1REVFRl18XFx1RDgzQVtcXHVEQ0QwLVxcdURDRDZcXHVERDQ0LVxcdURENEFdfFxcdURCNDBbXFx1REQwMC1cXHVEREVGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTicsXG4gICAgICAgICdhbGlhcyc6ICdOdW1iZXInLFxuICAgICAgICAnYm1wJzogJzAtOVxceEIyXFx4QjNcXHhCOVxceEJDLVxceEJFXFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XFx1MDdDMC1cXHUwN0M5XFx1MDk2Ni1cXHUwOTZGXFx1MDlFNi1cXHUwOUVGXFx1MDlGNC1cXHUwOUY5XFx1MEE2Ni1cXHUwQTZGXFx1MEFFNi1cXHUwQUVGXFx1MEI2Ni1cXHUwQjZGXFx1MEI3Mi1cXHUwQjc3XFx1MEJFNi1cXHUwQkYyXFx1MEM2Ni1cXHUwQzZGXFx1MEM3OC1cXHUwQzdFXFx1MENFNi1cXHUwQ0VGXFx1MEQ1OC1cXHUwRDVFXFx1MEQ2Ni1cXHUwRDc4XFx1MERFNi1cXHUwREVGXFx1MEU1MC1cXHUwRTU5XFx1MEVEMC1cXHUwRUQ5XFx1MEYyMC1cXHUwRjMzXFx1MTA0MC1cXHUxMDQ5XFx1MTA5MC1cXHUxMDk5XFx1MTM2OS1cXHUxMzdDXFx1MTZFRS1cXHUxNkYwXFx1MTdFMC1cXHUxN0U5XFx1MTdGMC1cXHUxN0Y5XFx1MTgxMC1cXHUxODE5XFx1MTk0Ni1cXHUxOTRGXFx1MTlEMC1cXHUxOURBXFx1MUE4MC1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUI1MC1cXHUxQjU5XFx1MUJCMC1cXHUxQkI5XFx1MUM0MC1cXHUxQzQ5XFx1MUM1MC1cXHUxQzU5XFx1MjA3MFxcdTIwNzQtXFx1MjA3OVxcdTIwODAtXFx1MjA4OVxcdTIxNTAtXFx1MjE4MlxcdTIxODUtXFx1MjE4OVxcdTI0NjAtXFx1MjQ5QlxcdTI0RUEtXFx1MjRGRlxcdTI3NzYtXFx1Mjc5M1xcdTJDRkRcXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzOC1cXHUzMDNBXFx1MzE5Mi1cXHUzMTk1XFx1MzIyMC1cXHUzMjI5XFx1MzI0OC1cXHUzMjRGXFx1MzI1MS1cXHUzMjVGXFx1MzI4MC1cXHUzMjg5XFx1MzJCMS1cXHUzMkJGXFx1QTYyMC1cXHVBNjI5XFx1QTZFNi1cXHVBNkVGXFx1QTgzMC1cXHVBODM1XFx1QThEMC1cXHVBOEQ5XFx1QTkwMC1cXHVBOTA5XFx1QTlEMC1cXHVBOUQ5XFx1QTlGMC1cXHVBOUY5XFx1QUE1MC1cXHVBQTU5XFx1QUJGMC1cXHVBQkY5XFx1RkYxMC1cXHVGRjE5JyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdUREMDctXFx1REQzM1xcdURENDAtXFx1REQ3OFxcdUREOEFcXHVERDhCXFx1REVFMS1cXHVERUZCXFx1REYyMC1cXHVERjIzXFx1REY0MVxcdURGNEFcXHVERkQxLVxcdURGRDVdfFxcdUQ4MDFbXFx1RENBMC1cXHVEQ0E5XXxcXHVEODAyW1xcdURDNTgtXFx1REM1RlxcdURDNzktXFx1REM3RlxcdURDQTctXFx1RENBRlxcdURDRkItXFx1RENGRlxcdUREMTYtXFx1REQxQlxcdUREQkNcXHVEREJEXFx1RERDMC1cXHVERENGXFx1REREMi1cXHVEREZGXFx1REU0MC1cXHVERTQ4XFx1REU3RFxcdURFN0VcXHVERTlELVxcdURFOUZcXHVERUVCLVxcdURFRUZcXHVERjU4LVxcdURGNUZcXHVERjc4LVxcdURGN0ZcXHVERkE5LVxcdURGQUZdfFxcdUQ4MDNbXFx1RENGQS1cXHVEQ0ZGXFx1REQzMC1cXHVERDM5XFx1REU2MC1cXHVERTdFXFx1REYxRC1cXHVERjI2XFx1REY1MS1cXHVERjU0XFx1REZDNS1cXHVERkNCXXxcXHVEODA0W1xcdURDNTItXFx1REM2RlxcdURDRjAtXFx1RENGOVxcdUREMzYtXFx1REQzRlxcdURERDAtXFx1REREOVxcdURERTEtXFx1RERGNFxcdURFRjAtXFx1REVGOV18XFx1RDgwNVtcXHVEQzUwLVxcdURDNTlcXHVEQ0QwLVxcdURDRDlcXHVERTUwLVxcdURFNTlcXHVERUMwLVxcdURFQzlcXHVERjMwLVxcdURGM0JdfFxcdUQ4MDZbXFx1RENFMC1cXHVEQ0YyXFx1REQ1MC1cXHVERDU5XXxcXHVEODA3W1xcdURDNTAtXFx1REM2Q1xcdURENTAtXFx1REQ1OVxcdUREQTAtXFx1RERBOVxcdURGQzAtXFx1REZENF18XFx1RDgwOVtcXHVEQzAwLVxcdURDNkVdfFxcdUQ4MUFbXFx1REU2MC1cXHVERTY5XFx1REY1MC1cXHVERjU5XFx1REY1Qi1cXHVERjYxXXxcXHVEODFCW1xcdURFODAtXFx1REU5Nl18XFx1RDgzNFtcXHVERUUwLVxcdURFRjNcXHVERjYwLVxcdURGNzhdfFxcdUQ4MzVbXFx1REZDRS1cXHVERkZGXXxcXHVEODM4W1xcdURENDAtXFx1REQ0OVxcdURFRjAtXFx1REVGOV18XFx1RDgzQVtcXHVEQ0M3LVxcdURDQ0ZcXHVERDUwLVxcdURENTldfFxcdUQ4M0JbXFx1REM3MS1cXHVEQ0FCXFx1RENBRC1cXHVEQ0FGXFx1RENCMS1cXHVEQ0I0XFx1REQwMS1cXHVERDJEXFx1REQyRi1cXHVERDNEXXxcXHVEODNDW1xcdUREMDAtXFx1REQwQ118XFx1RDgzRVtcXHVERkYwLVxcdURGRjldJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdOZCcsXG4gICAgICAgICdhbGlhcyc6ICdEZWNpbWFsX051bWJlcicsXG4gICAgICAgICdibXAnOiAnMC05XFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XFx1MDdDMC1cXHUwN0M5XFx1MDk2Ni1cXHUwOTZGXFx1MDlFNi1cXHUwOUVGXFx1MEE2Ni1cXHUwQTZGXFx1MEFFNi1cXHUwQUVGXFx1MEI2Ni1cXHUwQjZGXFx1MEJFNi1cXHUwQkVGXFx1MEM2Ni1cXHUwQzZGXFx1MENFNi1cXHUwQ0VGXFx1MEQ2Ni1cXHUwRDZGXFx1MERFNi1cXHUwREVGXFx1MEU1MC1cXHUwRTU5XFx1MEVEMC1cXHUwRUQ5XFx1MEYyMC1cXHUwRjI5XFx1MTA0MC1cXHUxMDQ5XFx1MTA5MC1cXHUxMDk5XFx1MTdFMC1cXHUxN0U5XFx1MTgxMC1cXHUxODE5XFx1MTk0Ni1cXHUxOTRGXFx1MTlEMC1cXHUxOUQ5XFx1MUE4MC1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUI1MC1cXHUxQjU5XFx1MUJCMC1cXHUxQkI5XFx1MUM0MC1cXHUxQzQ5XFx1MUM1MC1cXHUxQzU5XFx1QTYyMC1cXHVBNjI5XFx1QThEMC1cXHVBOEQ5XFx1QTkwMC1cXHVBOTA5XFx1QTlEMC1cXHVBOUQ5XFx1QTlGMC1cXHVBOUY5XFx1QUE1MC1cXHVBQTU5XFx1QUJGMC1cXHVBQkY5XFx1RkYxMC1cXHVGRjE5JyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAxW1xcdURDQTAtXFx1RENBOV18XFx1RDgwM1tcXHVERDMwLVxcdUREMzldfFxcdUQ4MDRbXFx1REM2Ni1cXHVEQzZGXFx1RENGMC1cXHVEQ0Y5XFx1REQzNi1cXHVERDNGXFx1REREMC1cXHVEREQ5XFx1REVGMC1cXHVERUY5XXxcXHVEODA1W1xcdURDNTAtXFx1REM1OVxcdURDRDAtXFx1RENEOVxcdURFNTAtXFx1REU1OVxcdURFQzAtXFx1REVDOVxcdURGMzAtXFx1REYzOV18XFx1RDgwNltcXHVEQ0UwLVxcdURDRTlcXHVERDUwLVxcdURENTldfFxcdUQ4MDdbXFx1REM1MC1cXHVEQzU5XFx1REQ1MC1cXHVERDU5XFx1RERBMC1cXHVEREE5XXxcXHVEODFBW1xcdURFNjAtXFx1REU2OVxcdURGNTAtXFx1REY1OV18XFx1RDgzNVtcXHVERkNFLVxcdURGRkZdfFxcdUQ4MzhbXFx1REQ0MC1cXHVERDQ5XFx1REVGMC1cXHVERUY5XXxcXHVEODNBW1xcdURENTAtXFx1REQ1OV18XFx1RDgzRVtcXHVERkYwLVxcdURGRjldJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdObCcsXG4gICAgICAgICdhbGlhcyc6ICdMZXR0ZXJfTnVtYmVyJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUxNkVFLVxcdTE2RjBcXHUyMTYwLVxcdTIxODJcXHUyMTg1LVxcdTIxODhcXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzOC1cXHUzMDNBXFx1QTZFNi1cXHVBNkVGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURENDAtXFx1REQ3NFxcdURGNDFcXHVERjRBXFx1REZEMS1cXHVERkQ1XXxcXHVEODA5W1xcdURDMDAtXFx1REM2RV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ05vJyxcbiAgICAgICAgJ2FsaWFzJzogJ090aGVyX051bWJlcicsXG4gICAgICAgICdibXAnOiAnXFx4QjJcXHhCM1xceEI5XFx4QkMtXFx4QkVcXHUwOUY0LVxcdTA5RjlcXHUwQjcyLVxcdTBCNzdcXHUwQkYwLVxcdTBCRjJcXHUwQzc4LVxcdTBDN0VcXHUwRDU4LVxcdTBENUVcXHUwRDcwLVxcdTBENzhcXHUwRjJBLVxcdTBGMzNcXHUxMzY5LVxcdTEzN0NcXHUxN0YwLVxcdTE3RjlcXHUxOURBXFx1MjA3MFxcdTIwNzQtXFx1MjA3OVxcdTIwODAtXFx1MjA4OVxcdTIxNTAtXFx1MjE1RlxcdTIxODlcXHUyNDYwLVxcdTI0OUJcXHUyNEVBLVxcdTI0RkZcXHUyNzc2LVxcdTI3OTNcXHUyQ0ZEXFx1MzE5Mi1cXHUzMTk1XFx1MzIyMC1cXHUzMjI5XFx1MzI0OC1cXHUzMjRGXFx1MzI1MS1cXHUzMjVGXFx1MzI4MC1cXHUzMjg5XFx1MzJCMS1cXHUzMkJGXFx1QTgzMC1cXHVBODM1JyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdUREMDctXFx1REQzM1xcdURENzUtXFx1REQ3OFxcdUREOEFcXHVERDhCXFx1REVFMS1cXHVERUZCXFx1REYyMC1cXHVERjIzXXxcXHVEODAyW1xcdURDNTgtXFx1REM1RlxcdURDNzktXFx1REM3RlxcdURDQTctXFx1RENBRlxcdURDRkItXFx1RENGRlxcdUREMTYtXFx1REQxQlxcdUREQkNcXHVEREJEXFx1RERDMC1cXHVERENGXFx1REREMi1cXHVEREZGXFx1REU0MC1cXHVERTQ4XFx1REU3RFxcdURFN0VcXHVERTlELVxcdURFOUZcXHVERUVCLVxcdURFRUZcXHVERjU4LVxcdURGNUZcXHVERjc4LVxcdURGN0ZcXHVERkE5LVxcdURGQUZdfFxcdUQ4MDNbXFx1RENGQS1cXHVEQ0ZGXFx1REU2MC1cXHVERTdFXFx1REYxRC1cXHVERjI2XFx1REY1MS1cXHVERjU0XFx1REZDNS1cXHVERkNCXXxcXHVEODA0W1xcdURDNTItXFx1REM2NVxcdURERTEtXFx1RERGNF18XFx1RDgwNVtcXHVERjNBXFx1REYzQl18XFx1RDgwNltcXHVEQ0VBLVxcdURDRjJdfFxcdUQ4MDdbXFx1REM1QS1cXHVEQzZDXFx1REZDMC1cXHVERkQ0XXxcXHVEODFBW1xcdURGNUItXFx1REY2MV18XFx1RDgxQltcXHVERTgwLVxcdURFOTZdfFxcdUQ4MzRbXFx1REVFMC1cXHVERUYzXFx1REY2MC1cXHVERjc4XXxcXHVEODNBW1xcdURDQzctXFx1RENDRl18XFx1RDgzQltcXHVEQzcxLVxcdURDQUJcXHVEQ0FELVxcdURDQUZcXHVEQ0IxLVxcdURDQjRcXHVERDAxLVxcdUREMkRcXHVERDJGLVxcdUREM0RdfFxcdUQ4M0NbXFx1REQwMC1cXHVERDBDXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUCcsXG4gICAgICAgICdhbGlhcyc6ICdQdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnIS0jJS1cXFxcKiwtXFxcXC86O1xcXFw/QFxcXFxbLVxcXFxdX1xcXFx7XFxcXH1cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzc3XFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEYzQS1cXHUwRjNEXFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE0MDBcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTRGXFx1MkU1MlxcdTMwMDEtXFx1MzAwM1xcdTMwMDgtXFx1MzAxMVxcdTMwMTQtXFx1MzAxRlxcdTMwMzBcXHUzMDNEXFx1MzBBMFxcdTMwRkJcXHVBNEZFXFx1QTRGRlxcdUE2MEQtXFx1QTYwRlxcdUE2NzNcXHVBNjdFXFx1QTZGMi1cXHVBNkY3XFx1QTg3NC1cXHVBODc3XFx1QThDRVxcdUE4Q0ZcXHVBOEY4LVxcdUE4RkFcXHVBOEZDXFx1QTkyRVxcdUE5MkZcXHVBOTVGXFx1QTlDMS1cXHVBOUNEXFx1QTlERVxcdUE5REZcXHVBQTVDLVxcdUFBNUZcXHVBQURFXFx1QUFERlxcdUFBRjBcXHVBQUYxXFx1QUJFQlxcdUZEM0VcXHVGRDNGXFx1RkUxMC1cXHVGRTE5XFx1RkUzMC1cXHVGRTUyXFx1RkU1NC1cXHVGRTYxXFx1RkU2M1xcdUZFNjhcXHVGRTZBXFx1RkU2QlxcdUZGMDEtXFx1RkYwM1xcdUZGMDUtXFx1RkYwQVxcdUZGMEMtXFx1RkYwRlxcdUZGMUFcXHVGRjFCXFx1RkYxRlxcdUZGMjBcXHVGRjNCLVxcdUZGM0RcXHVGRjNGXFx1RkY1QlxcdUZGNURcXHVGRjVGLVxcdUZGNjUnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQwMC1cXHVERDAyXFx1REY5RlxcdURGRDBdfFxcdUQ4MDFcXHVERDZGfFxcdUQ4MDJbXFx1REM1N1xcdUREMUZcXHVERDNGXFx1REU1MC1cXHVERTU4XFx1REU3RlxcdURFRjAtXFx1REVGNlxcdURGMzktXFx1REYzRlxcdURGOTktXFx1REY5Q118XFx1RDgwM1tcXHVERUFEXFx1REY1NS1cXHVERjU5XXxcXHVEODA0W1xcdURDNDctXFx1REM0RFxcdURDQkJcXHVEQ0JDXFx1RENCRS1cXHVEQ0MxXFx1REQ0MC1cXHVERDQzXFx1REQ3NFxcdURENzVcXHVEREM1LVxcdUREQzhcXHVERENEXFx1REREQlxcdUREREQtXFx1RERERlxcdURFMzgtXFx1REUzRFxcdURFQTldfFxcdUQ4MDVbXFx1REM0Qi1cXHVEQzRGXFx1REM1QVxcdURDNUJcXHVEQzVEXFx1RENDNlxcdUREQzEtXFx1REREN1xcdURFNDEtXFx1REU0M1xcdURFNjAtXFx1REU2Q1xcdURGM0MtXFx1REYzRV18XFx1RDgwNltcXHVEQzNCXFx1REQ0NC1cXHVERDQ2XFx1RERFMlxcdURFM0YtXFx1REU0NlxcdURFOUEtXFx1REU5Q1xcdURFOUUtXFx1REVBMl18XFx1RDgwN1tcXHVEQzQxLVxcdURDNDVcXHVEQzcwXFx1REM3MVxcdURFRjdcXHVERUY4XFx1REZGRl18XFx1RDgwOVtcXHVEQzcwLVxcdURDNzRdfFxcdUQ4MUFbXFx1REU2RVxcdURFNkZcXHVERUY1XFx1REYzNy1cXHVERjNCXFx1REY0NF18XFx1RDgxQltcXHVERTk3LVxcdURFOUFcXHVERkUyXXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql18XFx1RDgzQVtcXHVERDVFXFx1REQ1Rl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BjJyxcbiAgICAgICAgJ2FsaWFzJzogJ0Nvbm5lY3Rvcl9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnX1xcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkYzRidcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUGQnLFxuICAgICAgICAnYWxpYXMnOiAnRGFzaF9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnXFxcXC1cXHUwNThBXFx1MDVCRVxcdTE0MDBcXHUxODA2XFx1MjAxMC1cXHUyMDE1XFx1MkUxN1xcdTJFMUFcXHUyRTNBXFx1MkUzQlxcdTJFNDBcXHUzMDFDXFx1MzAzMFxcdTMwQTBcXHVGRTMxXFx1RkUzMlxcdUZFNThcXHVGRTYzXFx1RkYwRCcsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwM1xcdURFQUQnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BlJyxcbiAgICAgICAgJ2FsaWFzJzogJ0Nsb3NlX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcKVxcXFxdXFxcXH1cXHUwRjNCXFx1MEYzRFxcdTE2OUNcXHUyMDQ2XFx1MjA3RVxcdTIwOEVcXHUyMzA5XFx1MjMwQlxcdTIzMkFcXHUyNzY5XFx1Mjc2QlxcdTI3NkRcXHUyNzZGXFx1Mjc3MVxcdTI3NzNcXHUyNzc1XFx1MjdDNlxcdTI3RTdcXHUyN0U5XFx1MjdFQlxcdTI3RURcXHUyN0VGXFx1Mjk4NFxcdTI5ODZcXHUyOTg4XFx1Mjk4QVxcdTI5OENcXHUyOThFXFx1Mjk5MFxcdTI5OTJcXHUyOTk0XFx1Mjk5NlxcdTI5OThcXHUyOUQ5XFx1MjlEQlxcdTI5RkRcXHUyRTIzXFx1MkUyNVxcdTJFMjdcXHUyRTI5XFx1MzAwOVxcdTMwMEJcXHUzMDBEXFx1MzAwRlxcdTMwMTFcXHUzMDE1XFx1MzAxN1xcdTMwMTlcXHUzMDFCXFx1MzAxRVxcdTMwMUZcXHVGRDNFXFx1RkUxOFxcdUZFMzZcXHVGRTM4XFx1RkUzQVxcdUZFM0NcXHVGRTNFXFx1RkU0MFxcdUZFNDJcXHVGRTQ0XFx1RkU0OFxcdUZFNUFcXHVGRTVDXFx1RkU1RVxcdUZGMDlcXHVGRjNEXFx1RkY1RFxcdUZGNjBcXHVGRjYzJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdQZicsXG4gICAgICAgICdhbGlhcyc6ICdGaW5hbF9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnXFx4QkJcXHUyMDE5XFx1MjAxRFxcdTIwM0FcXHUyRTAzXFx1MkUwNVxcdTJFMEFcXHUyRTBEXFx1MkUxRFxcdTJFMjEnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BpJyxcbiAgICAgICAgJ2FsaWFzJzogJ0luaXRpYWxfUHVuY3R1YXRpb24nLFxuICAgICAgICAnYm1wJzogJ1xceEFCXFx1MjAxOFxcdTIwMUJcXHUyMDFDXFx1MjAxRlxcdTIwMzlcXHUyRTAyXFx1MkUwNFxcdTJFMDlcXHUyRTBDXFx1MkUxQ1xcdTJFMjAnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BvJyxcbiAgICAgICAgJ2FsaWFzJzogJ090aGVyX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICchLSMlLVxcJ1xcXFwqLFxcXFwuXFxcXC86O1xcXFw/QFxcXFxcXHhBMVxceEE3XFx4QjZcXHhCN1xceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzc3XFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE2NkVcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwNVxcdTE4MDctXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDE2XFx1MjAxN1xcdTIwMjAtXFx1MjAyN1xcdTIwMzAtXFx1MjAzOFxcdTIwM0ItXFx1MjAzRVxcdTIwNDEtXFx1MjA0M1xcdTIwNDctXFx1MjA1MVxcdTIwNTNcXHUyMDU1LVxcdTIwNUVcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwXFx1MkUwMVxcdTJFMDYtXFx1MkUwOFxcdTJFMEJcXHUyRTBFLVxcdTJFMTZcXHUyRTE4XFx1MkUxOVxcdTJFMUJcXHUyRTFFXFx1MkUxRlxcdTJFMkEtXFx1MkUyRVxcdTJFMzAtXFx1MkUzOVxcdTJFM0MtXFx1MkUzRlxcdTJFNDFcXHUyRTQzLVxcdTJFNEZcXHUyRTUyXFx1MzAwMS1cXHUzMDAzXFx1MzAzRFxcdTMwRkJcXHVBNEZFXFx1QTRGRlxcdUE2MEQtXFx1QTYwRlxcdUE2NzNcXHVBNjdFXFx1QTZGMi1cXHVBNkY3XFx1QTg3NC1cXHVBODc3XFx1QThDRVxcdUE4Q0ZcXHVBOEY4LVxcdUE4RkFcXHVBOEZDXFx1QTkyRVxcdUE5MkZcXHVBOTVGXFx1QTlDMS1cXHVBOUNEXFx1QTlERVxcdUE5REZcXHVBQTVDLVxcdUFBNUZcXHVBQURFXFx1QUFERlxcdUFBRjBcXHVBQUYxXFx1QUJFQlxcdUZFMTAtXFx1RkUxNlxcdUZFMTlcXHVGRTMwXFx1RkU0NVxcdUZFNDZcXHVGRTQ5LVxcdUZFNENcXHVGRTUwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNTdcXHVGRTVGLVxcdUZFNjFcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMDdcXHVGRjBBXFx1RkYwQ1xcdUZGMEVcXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0NcXHVGRjYxXFx1RkY2NFxcdUZGNjUnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQwMC1cXHVERDAyXFx1REY5RlxcdURGRDBdfFxcdUQ4MDFcXHVERDZGfFxcdUQ4MDJbXFx1REM1N1xcdUREMUZcXHVERDNGXFx1REU1MC1cXHVERTU4XFx1REU3RlxcdURFRjAtXFx1REVGNlxcdURGMzktXFx1REYzRlxcdURGOTktXFx1REY5Q118XFx1RDgwM1tcXHVERjU1LVxcdURGNTldfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOFxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQzRCLVxcdURDNEZcXHVEQzVBXFx1REM1QlxcdURDNURcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REU2MC1cXHVERTZDXFx1REYzQy1cXHVERjNFXXxcXHVEODA2W1xcdURDM0JcXHVERDQ0LVxcdURENDZcXHVEREUyXFx1REUzRi1cXHVERTQ2XFx1REU5QS1cXHVERTlDXFx1REU5RS1cXHVERUEyXXxcXHVEODA3W1xcdURDNDEtXFx1REM0NVxcdURDNzBcXHVEQzcxXFx1REVGN1xcdURFRjhcXHVERkZGXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODFCW1xcdURFOTctXFx1REU5QVxcdURGRTJdfFxcdUQ4MkZcXHVEQzlGfFxcdUQ4MzZbXFx1REU4Ny1cXHVERThCXXxcXHVEODNBW1xcdURENUVcXHVERDVGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUHMnLFxuICAgICAgICAnYWxpYXMnOiAnT3Blbl9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnXFxcXChcXFxcW1xcXFx7XFx1MEYzQVxcdTBGM0NcXHUxNjlCXFx1MjAxQVxcdTIwMUVcXHUyMDQ1XFx1MjA3RFxcdTIwOERcXHUyMzA4XFx1MjMwQVxcdTIzMjlcXHUyNzY4XFx1Mjc2QVxcdTI3NkNcXHUyNzZFXFx1Mjc3MFxcdTI3NzJcXHUyNzc0XFx1MjdDNVxcdTI3RTZcXHUyN0U4XFx1MjdFQVxcdTI3RUNcXHUyN0VFXFx1Mjk4M1xcdTI5ODVcXHUyOTg3XFx1Mjk4OVxcdTI5OEJcXHUyOThEXFx1Mjk4RlxcdTI5OTFcXHUyOTkzXFx1Mjk5NVxcdTI5OTdcXHUyOUQ4XFx1MjlEQVxcdTI5RkNcXHUyRTIyXFx1MkUyNFxcdTJFMjZcXHUyRTI4XFx1MkU0MlxcdTMwMDhcXHUzMDBBXFx1MzAwQ1xcdTMwMEVcXHUzMDEwXFx1MzAxNFxcdTMwMTZcXHUzMDE4XFx1MzAxQVxcdTMwMURcXHVGRDNGXFx1RkUxN1xcdUZFMzVcXHVGRTM3XFx1RkUzOVxcdUZFM0JcXHVGRTNEXFx1RkUzRlxcdUZFNDFcXHVGRTQzXFx1RkU0N1xcdUZFNTlcXHVGRTVCXFx1RkU1RFxcdUZGMDhcXHVGRjNCXFx1RkY1QlxcdUZGNUZcXHVGRjYyJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTJyxcbiAgICAgICAgJ2FsaWFzJzogJ1N5bWJvbCcsXG4gICAgICAgICdibXAnOiAnXFxcXCRcXFxcKzwtPlxcXFxeYFxcXFx8flxceEEyLVxceEE2XFx4QThcXHhBOVxceEFDXFx4QUUtXFx4QjFcXHhCNFxceEI4XFx4RDdcXHhGN1xcdTAyQzItXFx1MDJDNVxcdTAyRDItXFx1MDJERlxcdTAyRTUtXFx1MDJFQlxcdTAyRURcXHUwMkVGLVxcdTAyRkZcXHUwMzc1XFx1MDM4NFxcdTAzODVcXHUwM0Y2XFx1MDQ4MlxcdTA1OEQtXFx1MDU4RlxcdTA2MDYtXFx1MDYwOFxcdTA2MEJcXHUwNjBFXFx1MDYwRlxcdTA2REVcXHUwNkU5XFx1MDZGRFxcdTA2RkVcXHUwN0Y2XFx1MDdGRVxcdTA3RkZcXHUwOUYyXFx1MDlGM1xcdTA5RkFcXHUwOUZCXFx1MEFGMVxcdTBCNzBcXHUwQkYzLVxcdTBCRkFcXHUwQzdGXFx1MEQ0RlxcdTBENzlcXHUwRTNGXFx1MEYwMS1cXHUwRjAzXFx1MEYxM1xcdTBGMTUtXFx1MEYxN1xcdTBGMUEtXFx1MEYxRlxcdTBGMzRcXHUwRjM2XFx1MEYzOFxcdTBGQkUtXFx1MEZDNVxcdTBGQzctXFx1MEZDQ1xcdTBGQ0VcXHUwRkNGXFx1MEZENS1cXHUwRkQ4XFx1MTA5RVxcdTEwOUZcXHUxMzkwLVxcdTEzOTlcXHUxNjZEXFx1MTdEQlxcdTE5NDBcXHUxOURFLVxcdTE5RkZcXHUxQjYxLVxcdTFCNkFcXHUxQjc0LVxcdTFCN0NcXHUxRkJEXFx1MUZCRi1cXHUxRkMxXFx1MUZDRC1cXHUxRkNGXFx1MUZERC1cXHUxRkRGXFx1MUZFRC1cXHUxRkVGXFx1MUZGRFxcdTFGRkVcXHUyMDQ0XFx1MjA1MlxcdTIwN0EtXFx1MjA3Q1xcdTIwOEEtXFx1MjA4Q1xcdTIwQTAtXFx1MjBCRlxcdTIxMDBcXHUyMTAxXFx1MjEwMy1cXHUyMTA2XFx1MjEwOFxcdTIxMDlcXHUyMTE0XFx1MjExNi1cXHUyMTE4XFx1MjExRS1cXHUyMTIzXFx1MjEyNVxcdTIxMjdcXHUyMTI5XFx1MjEyRVxcdTIxM0FcXHUyMTNCXFx1MjE0MC1cXHUyMTQ0XFx1MjE0QS1cXHUyMTREXFx1MjE0RlxcdTIxOEFcXHUyMThCXFx1MjE5MC1cXHUyMzA3XFx1MjMwQy1cXHUyMzI4XFx1MjMyQi1cXHUyNDI2XFx1MjQ0MC1cXHUyNDRBXFx1MjQ5Qy1cXHUyNEU5XFx1MjUwMC1cXHUyNzY3XFx1Mjc5NC1cXHUyN0M0XFx1MjdDNy1cXHUyN0U1XFx1MjdGMC1cXHUyOTgyXFx1Mjk5OS1cXHUyOUQ3XFx1MjlEQy1cXHUyOUZCXFx1MjlGRS1cXHUyQjczXFx1MkI3Ni1cXHUyQjk1XFx1MkI5Ny1cXHUyQkZGXFx1MkNFNS1cXHUyQ0VBXFx1MkU1MFxcdTJFNTFcXHUyRTgwLVxcdTJFOTlcXHUyRTlCLVxcdTJFRjNcXHUyRjAwLVxcdTJGRDVcXHUyRkYwLVxcdTJGRkJcXHUzMDA0XFx1MzAxMlxcdTMwMTNcXHUzMDIwXFx1MzAzNlxcdTMwMzdcXHUzMDNFXFx1MzAzRlxcdTMwOUJcXHUzMDlDXFx1MzE5MFxcdTMxOTFcXHUzMTk2LVxcdTMxOUZcXHUzMUMwLVxcdTMxRTNcXHUzMjAwLVxcdTMyMUVcXHUzMjJBLVxcdTMyNDdcXHUzMjUwXFx1MzI2MC1cXHUzMjdGXFx1MzI4QS1cXHUzMkIwXFx1MzJDMC1cXHUzM0ZGXFx1NERDMC1cXHU0REZGXFx1QTQ5MC1cXHVBNEM2XFx1QTcwMC1cXHVBNzE2XFx1QTcyMFxcdUE3MjFcXHVBNzg5XFx1QTc4QVxcdUE4MjgtXFx1QTgyQlxcdUE4MzYtXFx1QTgzOVxcdUFBNzctXFx1QUE3OVxcdUFCNUJcXHVBQjZBXFx1QUI2QlxcdUZCMjlcXHVGQkIyLVxcdUZCQzFcXHVGREZDXFx1RkRGRFxcdUZFNjJcXHVGRTY0LVxcdUZFNjZcXHVGRTY5XFx1RkYwNFxcdUZGMEJcXHVGRjFDLVxcdUZGMUVcXHVGRjNFXFx1RkY0MFxcdUZGNUNcXHVGRjVFXFx1RkZFMC1cXHVGRkU2XFx1RkZFOC1cXHVGRkVFXFx1RkZGQ1xcdUZGRkQnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQzNy1cXHVERDNGXFx1REQ3OS1cXHVERDg5XFx1REQ4Qy1cXHVERDhFXFx1REQ5MC1cXHVERDlDXFx1RERBMFxcdURERDAtXFx1RERGQ118XFx1RDgwMltcXHVEQzc3XFx1REM3OFxcdURFQzhdfFxcdUQ4MDVcXHVERjNGfFxcdUQ4MDdbXFx1REZENS1cXHVERkYxXXxcXHVEODFBW1xcdURGM0MtXFx1REYzRlxcdURGNDVdfFxcdUQ4MkZcXHVEQzlDfFxcdUQ4MzRbXFx1REMwMC1cXHVEQ0Y1XFx1REQwMC1cXHVERDI2XFx1REQyOS1cXHVERDY0XFx1REQ2QS1cXHVERDZDXFx1REQ4M1xcdUREODRcXHVERDhDLVxcdUREQTlcXHVEREFFLVxcdURERThcXHVERTAwLVxcdURFNDFcXHVERTQ1XFx1REYwMC1cXHVERjU2XXxcXHVEODM1W1xcdURFQzFcXHVERURCXFx1REVGQlxcdURGMTVcXHVERjM1XFx1REY0RlxcdURGNkZcXHVERjg5XFx1REZBOVxcdURGQzNdfFxcdUQ4MzZbXFx1REMwMC1cXHVEREZGXFx1REUzNy1cXHVERTNBXFx1REU2RC1cXHVERTc0XFx1REU3Ni1cXHVERTgzXFx1REU4NVxcdURFODZdfFxcdUQ4MzhbXFx1REQ0RlxcdURFRkZdfFxcdUQ4M0JbXFx1RENBQ1xcdURDQjBcXHVERDJFXFx1REVGMFxcdURFRjFdfFxcdUQ4M0NbXFx1REMwMC1cXHVEQzJCXFx1REMzMC1cXHVEQzkzXFx1RENBMC1cXHVEQ0FFXFx1RENCMS1cXHVEQ0JGXFx1RENDMS1cXHVEQ0NGXFx1RENEMS1cXHVEQ0Y1XFx1REQwRC1cXHVEREFEXFx1RERFNi1cXHVERTAyXFx1REUxMC1cXHVERTNCXFx1REU0MC1cXHVERTQ4XFx1REU1MFxcdURFNTFcXHVERTYwLVxcdURFNjVcXHVERjAwLVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVERUQ3XFx1REVFMC1cXHVERUVDXFx1REVGMC1cXHVERUZDXFx1REYwMC1cXHVERjczXFx1REY4MC1cXHVERkQ4XFx1REZFMC1cXHVERkVCXXxcXHVEODNFW1xcdURDMDAtXFx1REMwQlxcdURDMTAtXFx1REM0N1xcdURDNTAtXFx1REM1OVxcdURDNjAtXFx1REM4N1xcdURDOTAtXFx1RENBRFxcdURDQjBcXHVEQ0IxXFx1REQwMC1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVERTUzXFx1REU2MC1cXHVERTZEXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XFx1REYwMC1cXHVERjkyXFx1REY5NC1cXHVERkNBXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnU2MnLFxuICAgICAgICAnYWxpYXMnOiAnQ3VycmVuY3lfU3ltYm9sJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcJFxceEEyLVxceEE1XFx1MDU4RlxcdTA2MEJcXHUwN0ZFXFx1MDdGRlxcdTA5RjJcXHUwOUYzXFx1MDlGQlxcdTBBRjFcXHUwQkY5XFx1MEUzRlxcdTE3REJcXHUyMEEwLVxcdTIwQkZcXHVBODM4XFx1RkRGQ1xcdUZFNjlcXHVGRjA0XFx1RkZFMFxcdUZGRTFcXHVGRkU1XFx1RkZFNicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwN1tcXHVERkRELVxcdURGRTBdfFxcdUQ4MzhcXHVERUZGfFxcdUQ4M0JcXHVEQ0IwJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTaycsXG4gICAgICAgICdhbGlhcyc6ICdNb2RpZmllcl9TeW1ib2wnLFxuICAgICAgICAnYm1wJzogJ1xcXFxeYFxceEE4XFx4QUZcXHhCNFxceEI4XFx1MDJDMi1cXHUwMkM1XFx1MDJEMi1cXHUwMkRGXFx1MDJFNS1cXHUwMkVCXFx1MDJFRFxcdTAyRUYtXFx1MDJGRlxcdTAzNzVcXHUwMzg0XFx1MDM4NVxcdTFGQkRcXHUxRkJGLVxcdTFGQzFcXHUxRkNELVxcdTFGQ0ZcXHUxRkRELVxcdTFGREZcXHUxRkVELVxcdTFGRUZcXHUxRkZEXFx1MUZGRVxcdTMwOUJcXHUzMDlDXFx1QTcwMC1cXHVBNzE2XFx1QTcyMFxcdUE3MjFcXHVBNzg5XFx1QTc4QVxcdUFCNUJcXHVBQjZBXFx1QUI2QlxcdUZCQjItXFx1RkJDMVxcdUZGM0VcXHVGRjQwXFx1RkZFMycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTbScsXG4gICAgICAgICdhbGlhcyc6ICdNYXRoX1N5bWJvbCcsXG4gICAgICAgICdibXAnOiAnXFxcXCs8LT5cXFxcfH5cXHhBQ1xceEIxXFx4RDdcXHhGN1xcdTAzRjZcXHUwNjA2LVxcdTA2MDhcXHUyMDQ0XFx1MjA1MlxcdTIwN0EtXFx1MjA3Q1xcdTIwOEEtXFx1MjA4Q1xcdTIxMThcXHUyMTQwLVxcdTIxNDRcXHUyMTRCXFx1MjE5MC1cXHUyMTk0XFx1MjE5QVxcdTIxOUJcXHUyMUEwXFx1MjFBM1xcdTIxQTZcXHUyMUFFXFx1MjFDRVxcdTIxQ0ZcXHUyMUQyXFx1MjFENFxcdTIxRjQtXFx1MjJGRlxcdTIzMjBcXHUyMzIxXFx1MjM3Q1xcdTIzOUItXFx1MjNCM1xcdTIzREMtXFx1MjNFMVxcdTI1QjdcXHUyNUMxXFx1MjVGOC1cXHUyNUZGXFx1MjY2RlxcdTI3QzAtXFx1MjdDNFxcdTI3QzctXFx1MjdFNVxcdTI3RjAtXFx1MjdGRlxcdTI5MDAtXFx1Mjk4MlxcdTI5OTktXFx1MjlEN1xcdTI5REMtXFx1MjlGQlxcdTI5RkUtXFx1MkFGRlxcdTJCMzAtXFx1MkI0NFxcdTJCNDctXFx1MkI0Q1xcdUZCMjlcXHVGRTYyXFx1RkU2NC1cXHVGRTY2XFx1RkYwQlxcdUZGMUMtXFx1RkYxRVxcdUZGNUNcXHVGRjVFXFx1RkZFMlxcdUZGRTktXFx1RkZFQycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgzNVtcXHVERUMxXFx1REVEQlxcdURFRkJcXHVERjE1XFx1REYzNVxcdURGNEZcXHVERjZGXFx1REY4OVxcdURGQTlcXHVERkMzXXxcXHVEODNCW1xcdURFRjBcXHVERUYxXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnU28nLFxuICAgICAgICAnYWxpYXMnOiAnT3RoZXJfU3ltYm9sJyxcbiAgICAgICAgJ2JtcCc6ICdcXHhBNlxceEE5XFx4QUVcXHhCMFxcdTA0ODJcXHUwNThEXFx1MDU4RVxcdTA2MEVcXHUwNjBGXFx1MDZERVxcdTA2RTlcXHUwNkZEXFx1MDZGRVxcdTA3RjZcXHUwOUZBXFx1MEI3MFxcdTBCRjMtXFx1MEJGOFxcdTBCRkFcXHUwQzdGXFx1MEQ0RlxcdTBENzlcXHUwRjAxLVxcdTBGMDNcXHUwRjEzXFx1MEYxNS1cXHUwRjE3XFx1MEYxQS1cXHUwRjFGXFx1MEYzNFxcdTBGMzZcXHUwRjM4XFx1MEZCRS1cXHUwRkM1XFx1MEZDNy1cXHUwRkNDXFx1MEZDRVxcdTBGQ0ZcXHUwRkQ1LVxcdTBGRDhcXHUxMDlFXFx1MTA5RlxcdTEzOTAtXFx1MTM5OVxcdTE2NkRcXHUxOTQwXFx1MTlERS1cXHUxOUZGXFx1MUI2MS1cXHUxQjZBXFx1MUI3NC1cXHUxQjdDXFx1MjEwMFxcdTIxMDFcXHUyMTAzLVxcdTIxMDZcXHUyMTA4XFx1MjEwOVxcdTIxMTRcXHUyMTE2XFx1MjExN1xcdTIxMUUtXFx1MjEyM1xcdTIxMjVcXHUyMTI3XFx1MjEyOVxcdTIxMkVcXHUyMTNBXFx1MjEzQlxcdTIxNEFcXHUyMTRDXFx1MjE0RFxcdTIxNEZcXHUyMThBXFx1MjE4QlxcdTIxOTUtXFx1MjE5OVxcdTIxOUMtXFx1MjE5RlxcdTIxQTFcXHUyMUEyXFx1MjFBNFxcdTIxQTVcXHUyMUE3LVxcdTIxQURcXHUyMUFGLVxcdTIxQ0RcXHUyMUQwXFx1MjFEMVxcdTIxRDNcXHUyMUQ1LVxcdTIxRjNcXHUyMzAwLVxcdTIzMDdcXHUyMzBDLVxcdTIzMUZcXHUyMzIyLVxcdTIzMjhcXHUyMzJCLVxcdTIzN0JcXHUyMzdELVxcdTIzOUFcXHUyM0I0LVxcdTIzREJcXHUyM0UyLVxcdTI0MjZcXHUyNDQwLVxcdTI0NEFcXHUyNDlDLVxcdTI0RTlcXHUyNTAwLVxcdTI1QjZcXHUyNUI4LVxcdTI1QzBcXHUyNUMyLVxcdTI1RjdcXHUyNjAwLVxcdTI2NkVcXHUyNjcwLVxcdTI3NjdcXHUyNzk0LVxcdTI3QkZcXHUyODAwLVxcdTI4RkZcXHUyQjAwLVxcdTJCMkZcXHUyQjQ1XFx1MkI0NlxcdTJCNEQtXFx1MkI3M1xcdTJCNzYtXFx1MkI5NVxcdTJCOTctXFx1MkJGRlxcdTJDRTUtXFx1MkNFQVxcdTJFNTBcXHUyRTUxXFx1MkU4MC1cXHUyRTk5XFx1MkU5Qi1cXHUyRUYzXFx1MkYwMC1cXHUyRkQ1XFx1MkZGMC1cXHUyRkZCXFx1MzAwNFxcdTMwMTJcXHUzMDEzXFx1MzAyMFxcdTMwMzZcXHUzMDM3XFx1MzAzRVxcdTMwM0ZcXHUzMTkwXFx1MzE5MVxcdTMxOTYtXFx1MzE5RlxcdTMxQzAtXFx1MzFFM1xcdTMyMDAtXFx1MzIxRVxcdTMyMkEtXFx1MzI0N1xcdTMyNTBcXHUzMjYwLVxcdTMyN0ZcXHUzMjhBLVxcdTMyQjBcXHUzMkMwLVxcdTMzRkZcXHU0REMwLVxcdTRERkZcXHVBNDkwLVxcdUE0QzZcXHVBODI4LVxcdUE4MkJcXHVBODM2XFx1QTgzN1xcdUE4MzlcXHVBQTc3LVxcdUFBNzlcXHVGREZEXFx1RkZFNFxcdUZGRThcXHVGRkVEXFx1RkZFRVxcdUZGRkNcXHVGRkZEJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdUREMzctXFx1REQzRlxcdURENzktXFx1REQ4OVxcdUREOEMtXFx1REQ4RVxcdUREOTAtXFx1REQ5Q1xcdUREQTBcXHVEREQwLVxcdURERkNdfFxcdUQ4MDJbXFx1REM3N1xcdURDNzhcXHVERUM4XXxcXHVEODA1XFx1REYzRnxcXHVEODA3W1xcdURGRDUtXFx1REZEQ1xcdURGRTEtXFx1REZGMV18XFx1RDgxQVtcXHVERjNDLVxcdURGM0ZcXHVERjQ1XXxcXHVEODJGXFx1REM5Q3xcXHVEODM0W1xcdURDMDAtXFx1RENGNVxcdUREMDAtXFx1REQyNlxcdUREMjktXFx1REQ2NFxcdURENkEtXFx1REQ2Q1xcdUREODNcXHVERDg0XFx1REQ4Qy1cXHVEREE5XFx1RERBRS1cXHVEREU4XFx1REUwMC1cXHVERTQxXFx1REU0NVxcdURGMDAtXFx1REY1Nl18XFx1RDgzNltcXHVEQzAwLVxcdURERkZcXHVERTM3LVxcdURFM0FcXHVERTZELVxcdURFNzRcXHVERTc2LVxcdURFODNcXHVERTg1XFx1REU4Nl18XFx1RDgzOFxcdURENEZ8XFx1RDgzQltcXHVEQ0FDXFx1REQyRV18XFx1RDgzQ1tcXHVEQzAwLVxcdURDMkJcXHVEQzMwLVxcdURDOTNcXHVEQ0EwLVxcdURDQUVcXHVEQ0IxLVxcdURDQkZcXHVEQ0MxLVxcdURDQ0ZcXHVEQ0QxLVxcdURDRjVcXHVERDBELVxcdUREQURcXHVEREU2LVxcdURFMDJcXHVERTEwLVxcdURFM0JcXHVERTQwLVxcdURFNDhcXHVERTUwXFx1REU1MVxcdURFNjAtXFx1REU2NVxcdURGMDAtXFx1REZGQV18XFx1RDgzRFtcXHVEQzAwLVxcdURFRDdcXHVERUUwLVxcdURFRUNcXHVERUYwLVxcdURFRkNcXHVERjAwLVxcdURGNzNcXHVERjgwLVxcdURGRDhcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REMwMC1cXHVEQzBCXFx1REMxMC1cXHVEQzQ3XFx1REM1MC1cXHVEQzU5XFx1REM2MC1cXHVEQzg3XFx1REM5MC1cXHVEQ0FEXFx1RENCMFxcdURDQjFcXHVERDAwLVxcdURENzhcXHVERDdBLVxcdUREQ0JcXHVERENELVxcdURFNTNcXHVERTYwLVxcdURFNkRcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZcXHVERjAwLVxcdURGOTJcXHVERjk0LVxcdURGQ0FdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdaJyxcbiAgICAgICAgJ2FsaWFzJzogJ1NlcGFyYXRvcicsXG4gICAgICAgICdibXAnOiAnIFxceEEwXFx1MTY4MFxcdTIwMDAtXFx1MjAwQVxcdTIwMjhcXHUyMDI5XFx1MjAyRlxcdTIwNUZcXHUzMDAwJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdabCcsXG4gICAgICAgICdhbGlhcyc6ICdMaW5lX1NlcGFyYXRvcicsXG4gICAgICAgICdibXAnOiAnXFx1MjAyOCdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnWnAnLFxuICAgICAgICAnYWxpYXMnOiAnUGFyYWdyYXBoX1NlcGFyYXRvcicsXG4gICAgICAgICdibXAnOiAnXFx1MjAyOSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnWnMnLFxuICAgICAgICAnYWxpYXMnOiAnU3BhY2VfU2VwYXJhdG9yJyxcbiAgICAgICAgJ2JtcCc6ICcgXFx4QTBcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyRlxcdTIwNUZcXHUzMDAwJ1xuICAgIH1cbl07XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucGFyc2UgPSB2b2lkIDA7XG5mdW5jdGlvbiBkZWNvZGUocywgc2VwID0gJzsnKSB7XG4gICAgcyA9IHMucmVwbGFjZSgvXFxuL2csICcnKTtcbiAgICBsZXQgcG9zID0gMDtcbiAgICBjb25zdCByZWNvcmRzID0gWycnXTtcbiAgICB3aGlsZSAocG9zIDwgcy5sZW5ndGgpIHtcbiAgICAgICAgc3dpdGNoIChzW3Bvc10pIHtcbiAgICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgICAgIHBvcysrO1xuICAgICAgICAgICAgICAgIHJlY29yZHNbMF0gKz0gc1twb3NdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBzZXA6XG4gICAgICAgICAgICAgICAgcmVjb3Jkcy51bnNoaWZ0KCcnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVjb3Jkc1swXSArPSBzW3Bvc107XG4gICAgICAgIH1cbiAgICAgICAgcG9zKys7XG4gICAgfVxuICAgIHJldHVybiByZWNvcmRzLnJldmVyc2UoKS5maWx0ZXIocmVjb3JkID0+IHJlY29yZCk7XG59XG5jb25zdCBwcmVmaXhlcyA9IHtcbiAgICBmaWxlRGlyZWN0b3J5OiAnamFicmVmLW1ldGE6IGZpbGVEaXJlY3Rvcnk6JyxcbiAgICBncm91cHN2ZXJzaW9uOiAnamFicmVmLW1ldGE6IGdyb3Vwc3ZlcnNpb246JyxcbiAgICBncm91cHN0cmVlOiAnamFicmVmLW1ldGE6IGdyb3Vwc3RyZWU6JyxcbiAgICBncm91cGluZzogJ2phYnJlZi1tZXRhOiBncm91cGluZzonLFxufTtcbi8qKlxuICogSW1wb3J0IHRoZSBKYWJSZWYgZ3JvdXBzIGZyb20gdGhlIGBAc3RyaW5nYCBjb21tZW50cyBpbiB3aGljaCB0aGV5IHdlcmUgc3RvcmVkLiBZb3Ugd291bGQgdHlwaWNhbGx5IHBhc3MgdGhlIGNvbW1lbnRzIHBhcnNlZCBieSBbW2JpYnRleC5wYXJzZV1dIGluIGhlcmUuXG4gKlxuICogSmFiUmVmIGtub3dzIHNldmVyYWwgZ3JvdXAgdHlwZXMsIGFuZCB0aGlzIHBhcnNlciBwYXJzZXMgbW9zdCwgYnV0IG5vdCBhbGwgb2YgdGhlbTpcbiAqXG4gKiAqIGluZGVwZW5kZW50IGdyb3VwOiB0aGUga2V5cyBsaXN0ZWQgaW4gdGhlIGdyb3VwIGFyZSB0aGUgZW50cmllcyB0aGF0IGFyZSBjb25zaWRlcmVkIHRvIGJlbG9uZyB0byBpdFxuICogKiBpbnRlcnNlY3Rpb246IHRoZSBrZXlzIGxpc3RlZCBpbiB0aGUgZ3JvdXAgYXJlIGNvbnNpZGVyZWQgdG8gYmVsb25nIHRvIHRoZSBncm91cCBpZiB0aGV5J3JlIGFsc28gaW4gdGhlIHBhcmVudCBncm91cFxuICogKiB1bmlvbjogdGhlIGtleXMgbGlzdGVkIGluIHRoZSBncm91cCBhcmUgY29uc2lkZXJlZCB0byBiZWxvbmcgdG8gdGhlIGdyb3VwLCBhbmQgYWxzbyB0aGUga2V5cyB0aGF0IGFyZSBpbiB0aGUgcGFyZW50IGdyb3VwXG4gKiAqIHF1ZXJ5OiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGFyc2VyXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKGNvbW1lbnRzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICByb290OiBbXSxcbiAgICAgICAgZ3JvdXBzOiB7fSxcbiAgICAgICAgZmlsZURpcmVjdG9yeTogJycsXG4gICAgICAgIHZlcnNpb246ICcnLFxuICAgIH07XG4gICAgY29uc3QgbGV2ZWxzID0gW107XG4gICAgY29uc3QgZGVjb2RlZCA9IHtcbiAgICAgICAgZmlsZURpcmVjdG9yeTogbnVsbCxcbiAgICAgICAgZ3JvdXBzdmVyc2lvbjogbnVsbCxcbiAgICAgICAgZ3JvdXBzdHJlZTogbnVsbCxcbiAgICAgICAgZ3JvdXBpbmc6IG51bGwsXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgICAgZm9yIChjb25zdCBbbWV0YSwgcHJlZml4XSBvZiBPYmplY3QuZW50cmllcyhwcmVmaXhlcykpIHtcbiAgICAgICAgICAgIGlmIChjb21tZW50LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICAgICAgICAgIGRlY29kZWRbbWV0YV0gPSBkZWNvZGUoY29tbWVudC5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC52ZXJzaW9uID0gZGVjb2RlZC5ncm91cHN2ZXJzaW9uICYmIGRlY29kZWQuZ3JvdXBzdmVyc2lvblswXTtcbiAgICByZXN1bHQuZmlsZURpcmVjdG9yeSA9IGRlY29kZWQuZmlsZURpcmVjdG9yeSAmJiBkZWNvZGVkLmZpbGVEaXJlY3RvcnlbMF07XG4gICAgZm9yIChjb25zdCB0cmVlIG9mIFsnZ3JvdXBzdHJlZScsICdncm91cGluZyddKSB7XG4gICAgICAgIGlmICghZGVjb2RlZFt0cmVlXSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBmb3IgKGNvbnN0IGVuY29kZWQgb2YgZGVjb2RlZFt0cmVlXSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRzID0gZGVjb2RlKGVuY29kZWQpO1xuICAgICAgICAgICAgY29uc3QgbGV2ZWxfdHlwZV9uYW1lID0gZGVjb2RlKGZpZWxkcy5zaGlmdCgpLCAnOicpO1xuICAgICAgICAgICAgY29uc3QgbSA9IC9eKFswLTldKykgKC4rKS8uZXhlYyhsZXZlbF90eXBlX25hbWVbMF0pO1xuICAgICAgICAgICAgaWYgKCFtKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY29uc3QgbGV2ZWwgPSBwYXJzZUludChtWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBtWzJdOyAvLyB0ZXN0IGZvciBTdGF0aWNHcm91cD9cbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnQWxsRW50cmllc0dyb3VwJylcbiAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gcm9vdFxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGxldmVsX3R5cGVfbmFtZVsxXTtcbiAgICAgICAgICAgIGNvbnN0IGludGVyc2VjdGlvbiA9IGRlY29kZShmaWVsZHMuc2hpZnQoKSlbMF07XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gdHJlZSA9PT0gJ2dyb3VwaW5nJyA/IFtdIDogZmllbGRzLm1hcChmaWVsZCA9PiBkZWNvZGUoZmllbGQpWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0ge1xuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgZW50cmllczoga2V5cyxcbiAgICAgICAgICAgICAgICBncm91cHM6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3VsdC5ncm91cHNbbmFtZV0gPSByZXN1bHQuZ3JvdXBzW25hbWVdIHx8IGdyb3VwO1xuICAgICAgICAgICAgaWYgKGxldmVscy5sZW5ndGggPCBsZXZlbCkge1xuICAgICAgICAgICAgICAgIGxldmVscy5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldmVsc1tsZXZlbCAtIDFdID0gZ3JvdXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGV2ZWwgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucm9vdC5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGxldmVsc1tsZXZlbCAtIDJdO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJzZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzAnOiAvLyBpbmRlcGVuZGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzEnOiAvLyBpbnRlcnNlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmVudHJpZXMgPSBncm91cC5lbnRyaWVzLmZpbHRlcihrZXkgPT4gcGFyZW50LmVudHJpZXMuaW5jbHVkZXMoa2V5KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnMic6IC8vIHVuaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cC5lbnRyaWVzID0gZ3JvdXAuZW50cmllcy5jb25jYXQocGFyZW50LmVudHJpZXMuZmlsdGVyKGtleSA9PiAhZ3JvdXAuZW50cmllcy5pbmNsdWRlcyhrZXkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV2ZWxzW2xldmVsIC0gMl0uZ3JvdXBzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1qYWJyZWYuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmphYnJlZiA9IGV4cG9ydHMuY2h1bmtlciA9IGV4cG9ydHMuYXN0ID0gZXhwb3J0cy5wYXJzZSA9IHZvaWQgMDtcbmNvbnN0IGJpYnRleCA9IHJlcXVpcmUoXCIuL2dyYW1tYXJcIik7XG5jb25zdCBjaHVua2VyXzEgPSByZXF1aXJlKFwiLi9jaHVua2VyXCIpO1xuY29uc3QgdW5pY29kZTJsYXRleF8xID0gcmVxdWlyZShcInVuaWNvZGUybGF0ZXhcIik7XG5jbGFzcyBQYXJzZXJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBub2RlKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpOyAvLyAnRXJyb3InIGJyZWFrcyBwcm90b3R5cGUgY2hhaW4gaGVyZVxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOyAvLyByZXN0b3JlIHByb3RvdHlwZSBjaGFpblxuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgfVxufVxuY2xhc3MgVGVYRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZSwgbm9kZSwgdGV4dCkge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTsgLy8gJ0Vycm9yJyBicmVha3MgcHJvdG90eXBlIGNoYWluIGhlcmVcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIG5ldy50YXJnZXQucHJvdG90eXBlKTsgLy8gcmVzdG9yZSBwcm90b3R5cGUgY2hhaW5cbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgICAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIH1cbn1cbmNvbnN0IGNoYXJDYXRlZ29yaWVzID0gcmVxdWlyZShcInhyZWdleHAvdG9vbHMvb3V0cHV0L2NhdGVnb3JpZXNcIik7XG5jb25zdCBjaGFyQ2xhc3MgPSB7XG4gICAgTHU6IGNoYXJDYXRlZ29yaWVzLmZpbHRlcihjYXQgPT4gWydVcHBlcmNhc2VfTGV0dGVyJywgJ1RpdGxlY2FzZV9MZXR0ZXInXS5pbmNsdWRlcyhjYXQuYWxpYXMpKS5tYXAoY2F0ID0+IGNhdC5ibXApLmpvaW4oJycpLFxuICAgIExsOiBjaGFyQ2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuYWxpYXMgPT09ICdMb3dlcmNhc2VfTGV0dGVyJykuYm1wLFxuICAgIExub3RMdTogY2hhckNhdGVnb3JpZXMuZmlsdGVyKGNhdCA9PiBbJ0xvd2VyY2FzZV9MZXR0ZXInLCAnTW9kaWZpZXJfTGV0dGVyJywgJ090aGVyX0xldHRlcicsICdOb25zcGFjaW5nX01hcmsnLCAnU3BhY2luZ19NYXJrJywgJ0RlY2ltYWxfTnVtYmVyJywgJ0xldHRlcl9OdW1iZXInXS5pbmNsdWRlcyhjYXQuYWxpYXMpKS5tYXAoY2F0ID0+IGNhdC5ibXApLmpvaW4oJycpLFxuICAgIFA6IGNoYXJDYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5hbGlhcyA9PT0gJ1B1bmN0dWF0aW9uJykuYm1wLFxuICAgIEw6IGNoYXJDYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5hbGlhcyA9PT0gJ0xldHRlcicpLmJtcCxcbiAgICBOOiBjaGFyQ2F0ZWdvcmllcy5maWx0ZXIoY2F0ID0+IFsnRGVjaW1hbF9OdW1iZXInLCAnTGV0dGVyX051bWJlciddLmluY2x1ZGVzKGNhdC5hbGlhcykpLm1hcChjYXQgPT4gY2F0LmJtcCkuam9pbignJyksXG4gICAgQWxwaGFOdW06IGNoYXJDYXRlZ29yaWVzLmZpbHRlcihjYXQgPT4gWydMZXR0ZXInLCAnRGVjaW1hbF9OdW1iZXInLCAnTGV0dGVyX051bWJlciddLmluY2x1ZGVzKGNhdC5hbGlhcykpLm1hcChjYXQgPT4gY2F0LmJtcCkuam9pbignJyksXG4gICAgTEM6IGNoYXJDYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5hbGlhcyA9PT0gJ0Nhc2VkX0xldHRlcicpLmJtcCxcbn07XG5jb25zdCBtYXJrZXIgPSB7XG4gICAgYW5kOiAnXFx1MDAwMScsXG4gICAgY29tbWE6ICdcXHUwMDAyJyxcbiAgICBzcGFjZTogJ1xcdTAwMDMnLFxuICAgIGxpdGVyYWw6ICdcXHUwMDA0JyxcbiAgICBtYXJrdXA6ICdcXHUwMDA1JyxcbiAgICByZToge1xuICAgICAgICBhbmQ6IC8uLyxcbiAgICAgICAgY29tbWE6IC8uLyxcbiAgICAgICAgc3BhY2U6IC8uLyxcbiAgICAgICAgbGl0ZXJhbDogLy4vLFxuICAgICAgICBsaXRlcmFsTmFtZTogLy4vLFxuICAgIH0sXG4gICAgY2xlYW4ocykge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKG1hcmtlci5yZS5zcGFjZSwgJyAnKS5yZXBsYWNlKG1hcmtlci5yZS5jb21tYSwgJywgJykucmVwbGFjZShtYXJrZXIucmUubGl0ZXJhbCwgJycpO1xuICAgIH0sXG59O1xubWFya2VyLnJlID0ge1xuICAgIGFuZDogbmV3IFJlZ0V4cChtYXJrZXIuYW5kLCAnZycpLFxuICAgIGNvbW1hOiBuZXcgUmVnRXhwKG1hcmtlci5jb21tYSwgJ2cnKSxcbiAgICBzcGFjZTogbmV3IFJlZ0V4cChtYXJrZXIuc3BhY2UsICdnJyksXG4gICAgbGl0ZXJhbDogbmV3IFJlZ0V4cChtYXJrZXIubGl0ZXJhbCwgJ2cnKSxcbiAgICBsaXRlcmFsTmFtZTogbmV3IFJlZ0V4cChgXiR7bWFya2VyLmxpdGVyYWx9KFteJHttYXJrZXIubGl0ZXJhbH1dKikke21hcmtlci5saXRlcmFsfSRgKSxcbn07XG5jb25zdCBwcmVzZXJ2ZUNhc2UgPSB7XG4gICAgbGVhZGluZ0NhcDogbmV3IFJlZ0V4cChgXlske2NoYXJDbGFzcy5MdX1dWyR7Y2hhckNsYXNzLkxub3RMdX1dK1ske2NoYXJDbGFzcy5QfV0/JGApLFxuICAgIGFsbENhcHM6IG5ldyBSZWdFeHAoYF5bJHtjaGFyQ2xhc3MuTHV9JHtjaGFyQ2xhc3MuTn1dezIsfSRgKSxcbiAgICBhbGxMb3dlcjogbmV3IFJlZ0V4cChgXlske2NoYXJDbGFzcy5MbH0ke2NoYXJDbGFzcy5OfV17Mix9JGApLFxuICAgIGpvaW5lZDogbmV3IFJlZ0V4cChgXlske2NoYXJDbGFzcy5MdX1dWyR7Y2hhckNsYXNzLkxub3RMdX1dKihbLStdWyR7Y2hhckNsYXNzLkx9JHtjaGFyQ2xhc3MuTn1dKykqWyR7Y2hhckNsYXNzLlB9XSokYCksXG4gICAgaGFzVXBwZXI6IG5ldyBSZWdFeHAoYFske2NoYXJDbGFzcy5MdX1dYCksXG4gICAgaGFzTG93ZXI6IG5ldyBSZWdFeHAoYFske2NoYXJDbGFzcy5MbH1dYCksXG4gICAgaXNOdW1iZXI6IC9eWzAtOV0rJC8sXG4gICAgaGFzQWxwaGE6IG5ldyBSZWdFeHAoYFske2NoYXJDbGFzcy5MfV1gKSxcbiAgICBoYXNBbHBoYU51bTogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkFscGhhTnVtfV1gKSxcbiAgICBub3RBbHBoYU51bTogbmV3IFJlZ0V4cChgW14ke2NoYXJDbGFzcy5BbHBoYU51bX1dYCwgJ2cnKSxcbiAgICBzZW50ZW5jZVN0YXJ0OiBuZXcgUmVnRXhwKGAoXnwoW1xcdTIwMTQ6PyEuXVxcXFxzKykpWyR7Y2hhckNsYXNzLkx1fV1gLCAnZycpLFxuICAgIG1hcmt1cDogLzxcXC8/c3BhbltePl0qPi9nLFxuICAgIGFjcm9ueW06IG5ldyBSZWdFeHAoYC4qXFxcXC4ke21hcmtlci5tYXJrdXB9Klske2NoYXJDbGFzcy5MdX1dJHttYXJrZXIubWFya3VwfSpcXFxcLiRgKSxcbiAgICBub3RDYXNlU2Vuc2l0aXZlOiBuZXcgUmVnRXhwKGBbXiR7Y2hhckNsYXNzLkxDfV1gKSxcbiAgICBpc0Nhc2VTZW5zaXRpdmU6IG5ldyBSZWdFeHAoYFske2NoYXJDbGFzcy5MQ31dYCksXG4gICAgcXVvdGVkOiAvKFwiW15cIl0rXCIpfCjigJxbXuKAnF0r4oCcKS9nLFxufTtcbmNvbnN0IGZpZWxkcyA9IHtcbiAgICBjcmVhdG9yOiBbXG4gICAgICAgICdhdXRob3InLFxuICAgICAgICAnYm9va2F1dGhvcicsXG4gICAgICAgICdjb2xsYWJvcmF0b3InLFxuICAgICAgICAnY29tbWVudGF0b3InLFxuICAgICAgICAnZGlyZWN0b3InLFxuICAgICAgICAnZWRpdG9yJyxcbiAgICAgICAgJ2VkaXRvcmEnLFxuICAgICAgICAnZWRpdG9yYicsXG4gICAgICAgICdlZGl0b3JzJyxcbiAgICAgICAgJ2hvbGRlcicsXG4gICAgICAgICdzY3JpcHR3cml0ZXInLFxuICAgICAgICAndHJhbnNsYXRvcicsXG4gICAgXSxcbiAgICB0aXRsZTogW1xuICAgICAgICAndGl0bGUnLFxuICAgICAgICAnc2VyaWVzJyxcbiAgICAgICAgJ3Nob3J0dGl0bGUnLFxuICAgICAgICAnYm9va3RpdGxlJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAnb3JpZ3RpdGxlJyxcbiAgICAgICAgJ21haW50aXRsZScsXG4gICAgICAgICdldmVudHRpdGxlJyxcbiAgICBdLFxuICAgIHVubmVzdDogW1xuICAgICAgICAncHVibGlzaGVyJyxcbiAgICAgICAgJ2xvY2F0aW9uJyxcbiAgICBdLFxuICAgIHZlcmJhdGltOiBbXG4gICAgICAgICd1cmwnLFxuICAgICAgICAnZG9pJyxcbiAgICAgICAgJ2ZpbGUnLFxuICAgICAgICAnZmlsZXMnLFxuICAgICAgICAnZXByaW50JyxcbiAgICAgICAgJ3ZlcmJhJyxcbiAgICAgICAgJ3ZlcmJiJyxcbiAgICAgICAgJ3ZlcmJjJyxcbiAgICAgICAgJ2dyb3VwcycsXG4gICAgXSxcbiAgICBodG1sOiBbXG4gICAgICAgICdhbm5vdGF0aW9uJyxcbiAgICAgICAgJ2NvbW1lbnQnLFxuICAgICAgICAnYW5ub3RlJyxcbiAgICAgICAgJ3JldmlldycsXG4gICAgICAgICdub3RlcycsXG4gICAgICAgICdub3RlJyxcbiAgICBdLFxuICAgIHVuYWJicmV2OiBbXG4gICAgICAgICdqb3VybmFsJyxcbiAgICAgICAgJ2pvdXJuYWx0aXRsZScsXG4gICAgICAgICdqb3VybmFsLWZ1bGwnLFxuICAgIF0sXG59O1xuY29uc3QgZW5nbGlzaCA9IFtcbiAgICAnYW1lcmljYW4nLFxuICAgICdicml0aXNoJyxcbiAgICAnY2FuYWRpYW4nLFxuICAgICdlbmdsaXNoJyxcbiAgICAnYXVzdHJhbGlhbicsXG4gICAgJ25ld3plYWxhbmQnLFxuICAgICd1c2VuZ2xpc2gnLFxuICAgICd1a2VuZ2xpc2gnLFxuICAgICdlbicsXG4gICAgJ2VuZycsXG4gICAgJ2VuLWF1JyxcbiAgICAnZW4tYnonLFxuICAgICdlbi1jYScsXG4gICAgJ2VuLWNiJyxcbiAgICAnZW4tZ2InLFxuICAgICdlbi1pZScsXG4gICAgJ2VuLWptJyxcbiAgICAnZW4tbnonLFxuICAgICdlbi1waCcsXG4gICAgJ2VuLXR0JyxcbiAgICAnZW4tdXMnLFxuICAgICdlbi16YScsXG4gICAgJ2VuLXp3JyxcbiAgICAnYW5nbGFpcycsXG5dO1xuY2xhc3MgUGFyc2VyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5pbl9wcmVhbWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZWFtYmxlID0gW107XG4gICAgICAgIHRoaXMubG9nID0gZnVuY3Rpb24gKHN0cikgeyB9OyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIHZhcmlhYmxlLW5hbWUgb25seS1hcnJvdy1mdW5jdGlvbnMgbm8tZW1wdHlcbiAgICAgICAgZm9yIChjb25zdCBbb3B0aW9uLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucykpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zW29wdGlvbl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZXJyb3JIYW5kbGVyID09PSBmYWxzZSkge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG9ubHktYXJyb3ctZnVuY3Rpb25zIG5vLWVtcHR5XG4gICAgICAgICAgICBvcHRpb25zLmVycm9ySGFuZGxlciA9IGZ1bmN0aW9uIChlcnIpIHsgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zLmVycm9ySGFuZGxlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgb25seS1hcnJvdy1mdW5jdGlvbnNcbiAgICAgICAgICAgIG9wdGlvbnMuZXJyb3JIYW5kbGVyID0gZnVuY3Rpb24gKGVycikgeyB0aHJvdyBlcnI7IH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnNlbnRlbmNlQ2FzZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBvcHRpb25zLnNlbnRlbmNlQ2FzZSA9IG9wdGlvbnMuc2VudGVuY2VDYXNlID8gZW5nbGlzaCA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucy5zZW50ZW5jZUNhc2UgPSBvcHRpb25zLnNlbnRlbmNlQ2FzZSB8fCBlbmdsaXNoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb3B0aW9ucy5zdHJpbmdzKVxuICAgICAgICAgICAgb3B0aW9ucy5zdHJpbmdzID0ge307XG4gICAgICAgIGlmICghb3B0aW9ucy51bmFiYnJldmlhdGUpXG4gICAgICAgICAgICBvcHRpb25zLnVuYWJicmV2aWF0ZSA9IHt9O1xuICAgICAgICBpZiAob3B0aW9ucy5yYXcpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuc2VudGVuY2VDYXNlID0gZmFsc2U7XG4gICAgICAgICAgICBvcHRpb25zLmNhc2VQcm90ZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IGNhc2VQcm90ZWN0aW9uOiAnYXMtbmVlZGVkJywgdmVyYmF0aW1GaWVsZHM6IFsvXmNpdGV1bGlrZS1saW5rb3V0LVswLTldKyQvLCAuLi5maWVsZHMudmVyYmF0aW1dLCB2ZXJiYXRpbUNvbW1hbmRzOiBbJ3VybCcsICdocmVmJ10sIHVubmVzdEZpZWxkczogWy4uLmZpZWxkcy50aXRsZSwgLi4uZmllbGRzLnVubmVzdCwgLi4uZmllbGRzLnZlcmJhdGltXSwgdW5uZXN0TW9kZTogJ3Vud3JhcCcsIGh0bWxGaWVsZHM6IGZpZWxkcy5odG1sLCBndWVzc0FscmVhZHlTZW50ZW5jZUNhc2VkOiB0cnVlLCBtYXJrdXA6IHt9IH0sIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBtYXJrdXBfZGVmYXVsdHMgPSB7XG4gICAgICAgICAgICBlbnF1b3RlOiB7IG9wZW46ICdcXHUyMDFjJywgY2xvc2U6ICdcXHUyMDFkJyB9LFxuICAgICAgICAgICAgc3ViOiB7IG9wZW46ICc8c3ViPicsIGNsb3NlOiAnPC9zdWI+JyB9LFxuICAgICAgICAgICAgc3VwOiB7IG9wZW46ICc8c3VwPicsIGNsb3NlOiAnPC9zdXA+JyB9LFxuICAgICAgICAgICAgYm9sZDogeyBvcGVuOiAnPGI+JywgY2xvc2U6ICc8L2I+JyB9LFxuICAgICAgICAgICAgaXRhbGljczogeyBvcGVuOiAnPGk+JywgY2xvc2U6ICc8L2k+JyB9LFxuICAgICAgICAgICAgc21hbGxDYXBzOiB7IG9wZW46ICc8c3BhbiBzdHlsZT1cImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzO1wiPicsIGNsb3NlOiAnPC9zcGFuPicgfSxcbiAgICAgICAgICAgIGNhc2VQcm90ZWN0OiB7IG9wZW46ICc8c3BhbiBjbGFzcz1cIm5vY2FzZVwiPicsIGNsb3NlOiAnPC9zcGFuPicgfSxcbiAgICAgICAgICAgIHJvbWFuOiB7IG9wZW46ICcnLCBjbG9zZTogJycgfSxcbiAgICAgICAgICAgIGZpeGVkV2lkdGg6IHsgb3BlbjogJycsIGNsb3NlOiAnJyB9LFxuICAgICAgICB9O1xuICAgICAgICAvLyBwYXRjaCBpbiBiZWNhdXNlIHRoZSBvcHRpb25zIHdpbGwgbGlrZWx5IG5vdCBoYXZlIGVucXVvdGUgYW5kIGNhc2UtcHJvdGVjdFxuICAgICAgICBmb3IgKGNvbnN0IFttYXJrdXAsIHsgb3BlbiwgY2xvc2UgfV0gb2YgT2JqZWN0LmVudHJpZXMobWFya3VwX2RlZmF1bHRzKSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1hcmt1cFttYXJrdXBdID0gdGhpcy5vcHRpb25zLm1hcmt1cFttYXJrdXBdIHx8IHsgb3BlbiwgY2xvc2UgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgWzEsIDIsIDMsIDRdKSB7IC8vIHRzbGludDpkaXNhYmxlLWxpbmU6bm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1hcmt1cFtgaCR7aX1gXSA9IHRoaXMub3B0aW9ucy5tYXJrdXBbYGgke2l9YF0gfHwgeyBvcGVuOiBgPGgke2l9PmAsIGNsb3NlOiBgPC9oJHtpfT5gIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51bnJlc29sdmVkU3RyaW5ncyA9IHt9O1xuICAgICAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgICAgICB0aGlzLmNvbW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuZW50cmllcyA9IFtdO1xuICAgICAgICB0aGlzLnN0cmluZ3MgPSB7fTtcbiAgICAgICAgdGhpcy5uZXdjb21tYW5kcyA9IHt9O1xuICAgICAgICB0aGlzLmRlZmF1bHRfc3RyaW5ncyA9IHtcbiAgICAgICAgICAgIEpBTjogW3RoaXMudGV4dCgnMDEnKV0sXG4gICAgICAgICAgICBGRUI6IFt0aGlzLnRleHQoJzAyJyldLFxuICAgICAgICAgICAgTUFSOiBbdGhpcy50ZXh0KCcwMycpXSxcbiAgICAgICAgICAgIEFQUjogW3RoaXMudGV4dCgnMDQnKV0sXG4gICAgICAgICAgICBNQVk6IFt0aGlzLnRleHQoJzA1JyldLFxuICAgICAgICAgICAgSlVOOiBbdGhpcy50ZXh0KCcwNicpXSxcbiAgICAgICAgICAgIEpVTDogW3RoaXMudGV4dCgnMDcnKV0sXG4gICAgICAgICAgICBBVUc6IFt0aGlzLnRleHQoJzA4JyldLFxuICAgICAgICAgICAgU0VQOiBbdGhpcy50ZXh0KCcwOScpXSxcbiAgICAgICAgICAgIE9DVDogW3RoaXMudGV4dCgnMTAnKV0sXG4gICAgICAgICAgICBOT1Y6IFt0aGlzLnRleHQoJzExJyldLFxuICAgICAgICAgICAgREVDOiBbdGhpcy50ZXh0KCcxMicpXSxcbiAgICAgICAgICAgIEFDTUNTOiBbdGhpcy50ZXh0KCdBQ00gQ29tcHV0aW5nIFN1cnZleXMnKV0sXG4gICAgICAgICAgICBBQ1RBOiBbdGhpcy50ZXh0KCdBY3RhIEluZm9ybWF0aWNhJyldLFxuICAgICAgICAgICAgQ0FDTTogW3RoaXMudGV4dCgnQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTScpXSxcbiAgICAgICAgICAgIElCTUpSRDogW3RoaXMudGV4dCgnSUJNIEpvdXJuYWwgb2YgUmVzZWFyY2ggYW5kIERldmVsb3BtZW50JyldLFxuICAgICAgICAgICAgSUJNU0o6IFt0aGlzLnRleHQoJ0lCTSBTeXN0ZW1zIEpvdXJuYWwnKV0sXG4gICAgICAgICAgICBJRUVFU0U6IFt0aGlzLnRleHQoJ0lFRUUgVHJhbnNhY3Rpb25zIG9uIFNvZnR3YXJlIEVuZ2luZWVyaW5nJyldLFxuICAgICAgICAgICAgSUVFRVRDOiBbdGhpcy50ZXh0KCdJRUVFIFRyYW5zYWN0aW9ucyBvbiBDb21wdXRlcnMnKV0sXG4gICAgICAgICAgICBJRUVFVENBRDogW3RoaXMudGV4dCgnSUVFRSBUcmFuc2FjdGlvbnMgb24gQ29tcHV0ZXItQWlkZWQgRGVzaWduIG9mIEludGVncmF0ZWQgQ2lyY3VpdHMnKV0sXG4gICAgICAgICAgICBJUEw6IFt0aGlzLnRleHQoJ0luZm9ybWF0aW9uIFByb2Nlc3NpbmcgTGV0dGVycycpXSxcbiAgICAgICAgICAgIEpBQ006IFt0aGlzLnRleHQoJ0pvdXJuYWwgb2YgdGhlIEFDTScpXSxcbiAgICAgICAgICAgIEpDU1M6IFt0aGlzLnRleHQoJ0pvdXJuYWwgb2YgQ29tcHV0ZXIgYW5kIFN5c3RlbSBTY2llbmNlcycpXSxcbiAgICAgICAgICAgIFNDUDogW3RoaXMudGV4dCgnU2NpZW5jZSBvZiBDb21wdXRlciBQcm9ncmFtbWluZycpXSxcbiAgICAgICAgICAgIFNJQ09NUDogW3RoaXMudGV4dCgnU0lBTSBKb3VybmFsIG9uIENvbXB1dGluZycpXSxcbiAgICAgICAgICAgIFRPQ1M6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gQ29tcHV0ZXIgU3lzdGVtcycpXSxcbiAgICAgICAgICAgIFRPRFM6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gRGF0YWJhc2UgU3lzdGVtcycpXSxcbiAgICAgICAgICAgIFRPRzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBHcmFwaGljcycpXSxcbiAgICAgICAgICAgIFRPTVM6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlJyldLFxuICAgICAgICAgICAgVE9PSVM6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gT2ZmaWNlIEluZm9ybWF0aW9uIFN5c3RlbXMnKV0sXG4gICAgICAgICAgICBUT1BMQVM6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIGFuZCBTeXN0ZW1zJyldLFxuICAgICAgICAgICAgVENTOiBbdGhpcy50ZXh0KCdUaGVvcmV0aWNhbCBDb21wdXRlciBTY2llbmNlJyldLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3QoaW5wdXQsIGNsZWFuID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCBfYXN0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtlcl8xLnBhcnNlKGlucHV0KSkge1xuICAgICAgICAgICAgbGV0IGNodW5rX2FzdCA9IGJpYnRleC5wYXJzZShjaHVuay50ZXh0LCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0aW9ucyksIHsgY29tYmluaW5nRGlhY3JpdGljczogdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MuY29tbWFuZHMgfSkpO1xuICAgICAgICAgICAgaWYgKGNsZWFuKVxuICAgICAgICAgICAgICAgIGNodW5rX2FzdCA9IHRoaXMuY2xlYW4oY2h1bmtfYXN0KTtcbiAgICAgICAgICAgIF9hc3QucHVzaChjaHVua19hc3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfYXN0O1xuICAgIH1cbiAgICBwYXJzZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFzeW5jID8gdGhpcy5wYXJzZUFzeW5jKGlucHV0KSA6IHRoaXMucGFyc2VTeW5jKGlucHV0KTtcbiAgICB9XG4gICAgcGFyc2VTeW5jKGlucHV0KSB7XG4gICAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtlcl8xLnBhcnNlKGlucHV0KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZUNodW5rKGNodW5rKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZWQoKTtcbiAgICB9XG4gICAgYXN5bmMgcGFyc2VBc3luYyhpbnB1dCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGF3YWl0IGNodW5rZXJfMS5wYXJzZShpbnB1dCwgeyBhc3luYzogdHJ1ZSB9KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZUNodW5rKGNodW5rKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZWQoKTtcbiAgICB9XG4gICAgcGFyc2VkKCkge1xuICAgICAgICB0aGlzLmZpZWxkID0gbnVsbDtcbiAgICAgICAgY29uc3Qgc3RyaW5ncyA9IHt9O1xuICAgICAgICB0aGlzLmNsZWFuaW5nID0geyB0eXBlOiAnb3RoZXInIH07XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RyaW5ncykpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0BzdHJpbmcnLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICAgIHByZXNlcnZlUmFuZ2VzOiBudWxsLFxuICAgICAgICAgICAgICAgIHdvcmRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVwcGVyOiAwLFxuICAgICAgICAgICAgICAgICAgICBsb3dlcjogMCxcbiAgICAgICAgICAgICAgICAgICAgb3RoZXI6IDAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnQodGhpcy5jbGVhbih2YWx1ZSkpO1xuICAgICAgICAgICAgc3RyaW5nc1trZXldID0gdGhpcy5maWVsZC50ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlcnJvcnM6IHRoaXMuZXJyb3JzLFxuICAgICAgICAgICAgZW50cmllczogdGhpcy5lbnRyaWVzLFxuICAgICAgICAgICAgY29tbWVudHM6IHRoaXMuY29tbWVudHMsXG4gICAgICAgICAgICBzdHJpbmdzLFxuICAgICAgICAgICAgcHJlYW1ibGU6IHRoaXMucHJlYW1ibGUsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHByZXNlcnZlKHN0YXJ0LCBlbmQsIHJlYXNvbikge1xuICAgICAgICBpZiAoIXRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghZW5kKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvKlxuICAgICAgICB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzID0gdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcy5maWx0ZXIocmFuZ2UgPT4gcmFuZ2Uuc3RhcnQgPCBzdGFydCB8fCByYW5nZS5lbmQgPiBlbmQpXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzLmZpbmQocmFuZ2UgPT4gcmFuZ2Uuc3RhcnQgPD0gc3RhcnQgJiYgcmFuZ2UuZW5kID49IGVuZCkpIHJldHVyblxuICAgICAgICAqL1xuICAgICAgICAvKlxuICAgICAgICBpZiAodGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcyAmJiB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzW3RoaXMuZmllbGQucHJlc2VydmVSYW5nZXMubGVuZ3RoIC0gMV1cbiAgICAgICAgICBpZiAoc3RhcnQgPCBsYXN0LnN0YXJ0KSB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoey4uLmxhc3QsIG5ldzogeyBzdGFydCwgZW5kLCByZWFzb24gfSwgdGV4dDogdGhpcy5maWVsZC50ZXh0fSkpXG4gICAgICAgIH1cbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcy5wdXNoKHsgc3RhcnQsIGVuZCwgcmVhc29uIH0pO1xuICAgIH1cbiAgICBwYXJzZUNodW5rKGNodW5rKSB7XG4gICAgICAgIHRoaXMuY2h1bmsgPSBjaHVuay50ZXh0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGJpYiA9IGJpYnRleC5wYXJzZShjaHVuay50ZXh0LCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0aW9ucyksIHsgY29tYmluaW5nRGlhY3JpdGljczogdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MuY29tbWFuZHMgfSkpO1xuICAgICAgICAgICAgaWYgKGJpYi5raW5kICE9PSAnQmlibGlvZ3JhcGh5JylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5zaG93KGJpYikpO1xuICAgICAgICAgICAgYmliID0gdGhpcy5jbGVhbihiaWIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRpdHkgb2YgYmliLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlbnRpdHkua2luZCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdFbnRyeSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0JyYWNlZENvbW1lbnQnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdMaW5lQ29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1ByZWFtYmxlRXhwcmVzc2lvbic6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnQoZW50aXR5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdTdHJpbmdEZWNsYXJhdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05vbkVudHJ5VGV4dCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYmliO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICghZXJyLmxvY2F0aW9uKVxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIGxpbmU6IGVyci5sb2NhdGlvbi5zdGFydC5saW5lICsgY2h1bmsub2Zmc2V0LmxpbmUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBlcnIubG9jYXRpb24uc3RhcnQuY29sdW1uLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5jaHVuayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2hvdyhvKSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBwcmVmZXItdGVtcGxhdGVcbiAgICAgICAgbGV0IHRleHQgPSBKU09OLnN0cmluZ2lmeShvKTtcbiAgICAgICAgaWYgKHRoaXMuY2h1bmspXG4gICAgICAgICAgICB0ZXh0ICs9ICdcXG4nICsgdGhpcy5jaHVuay50cmltKCk7XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICB0ZXh0KHZhbHVlID0gJycpIHtcbiAgICAgICAgcmV0dXJuIHsga2luZDogJ1RleHQnLCB2YWx1ZSwgbW9kZTogJ3RleHQnIH07XG4gICAgfVxuICAgIGVycm9yKGVyciwgcmV0dXJudmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuZXJyb3JIYW5kbGVyID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmVycm9ySGFuZGxlcihlcnIpO1xuICAgICAgICByZXR1cm4gcmV0dXJudmFsdWU7XG4gICAgfVxuICAgIGNvbmRlbnNlKG5vZGUpIHtcbiAgICAgICAgLy8gYXBwbHkgY2xlYW5pbmcgdG8gcmVzdWx0aW5nIGNoaWxkcmVuXG4gICAgICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlLm1hcChjaGlsZCA9PiB0aGlzLmNsZWFuKGNoaWxkKSk7XG4gICAgICAgIC8vIHVucGFjayByZWR1bmRhbnQgYmxvY2tzXG4gICAgICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlLnJlZHVjZSgoYWNjLCBjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkLmtpbmQgPT09ICdCbG9jaycgJiYgIWNoaWxkLmNhc2UgJiYgT2JqZWN0LmtleXMoY2hpbGQubWFya3VwKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBhY2MgPSBhY2MuY29uY2F0KGNoaWxkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgLy8gY29uZGVuc2UgdGV4dCBub2RlcyB0byBtYWtlIHdob2xlIHdvcmRzIGZvciBzZW50ZW5jZSBjYXNpbmdcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWUucmVkdWNlKChhY2MsIGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWNjLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFzdCA9IGFjY1thY2MubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gbm9kZS52YWx1ZVtpICsgMV07XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uID09PSAnc3RyaWN0JyAmJiB0aGlzLm9ubHlDYXNlUHJvdGVjdGVkKGxhc3QpICYmIGNoaWxkLmtpbmQgPT09ICdUZXh0JyAmJiAhY2hpbGQudmFsdWUubWF0Y2gocHJlc2VydmVDYXNlLmlzQ2FzZVNlbnNpdGl2ZSkgJiYgdGhpcy5vbmx5Q2FzZVByb3RlY3RlZChuZXh0KSkge1xuICAgICAgICAgICAgICAgIGxhc3QudmFsdWUucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxhc3Quc291cmNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdC5raW5kID09PSAnQmxvY2snICYmIGNoaWxkLmtpbmQgPT09ICdCbG9jaycgJiYgT2JqZWN0LmtleXMobGFzdC5tYXJrdXApLnNvcnQoKS5qb2luKCcvJykgPT09IE9iamVjdC5rZXlzKGNoaWxkLm1hcmt1cCkuc29ydCgpLmpvaW4oJy8nKSkge1xuICAgICAgICAgICAgICAgIGxhc3QudmFsdWUgPSBsYXN0LnZhbHVlLmNvbmNhdChjaGlsZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxhc3Quc291cmNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdC5raW5kID09PSAnVGV4dCcgJiYgY2hpbGQua2luZCA9PT0gJ1RleHQnICYmIGxhc3QubW9kZSA9PT0gY2hpbGQubW9kZSkge1xuICAgICAgICAgICAgICAgIGxhc3QudmFsdWUgKz0gY2hpbGQudmFsdWU7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxhc3Quc291cmNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2MucHVzaChjaGlsZCk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuICAgIG9ubHlDYXNlUHJvdGVjdGVkKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUua2luZCkgPT09ICdCbG9jaycgJiYgbm9kZS5jYXNlID09PSAncHJvdGVjdCcgJiYgT2JqZWN0LmtleXMobm9kZS5tYXJrdXApLmpvaW4oJy8nKSA9PT0gJyc7XG4gICAgfVxuICAgIGFyZ3VtZW50KG5vZGUsIGtpbmQpIHtcbiAgICAgICAgaWYgKCFub2RlLmFyZ3VtZW50cyB8fCAhbm9kZS5hcmd1bWVudHMucmVxdWlyZWQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIChraW5kID09PSAnbm9uZScpO1xuICAgICAgICAvLyBleHBlY3QgJ24nIHRleHQgYXJndW1lbnRzXG4gICAgICAgIGlmICh0eXBlb2Yga2luZCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGggIT09IGtpbmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJldHVybiBmaXJzdCBhcmd1bWVudCBpZiBpdCdzIHRoZSBvbmx5IG9uZVxuICAgICAgICBpZiAobm9kZS5hcmd1bWVudHMucmVxdWlyZWQubGVuZ3RoICE9PSAxKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBsb29zZSBjaGVja2luZyBmb3IgdGV4dFxuICAgICAgICBpZiAoa2luZCA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdCA9IG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdO1xuICAgICAgICAgICAgaWYgKGZpcnN0LmtpbmQgPT09ICdCbG9jaycgJiYgZmlyc3QudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0LnZhbHVlWzBdLmtpbmQgPT09ICdUZXh0JylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0LnZhbHVlWzBdLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZmFsbCBiYWNrIHRvIHN0cmljdCBraW5kIGNoZWNrXG4gICAgICAgICAgICBraW5kID0gJ1RleHQnO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJldHVybiBmaXJzdCBhcmd1bWVudCBpZiBpdCdzIHRoZSBvbmx5IG9uZSBhbmQgaXMgb2YgdGhlIHNwZWNpZmllZCBraW5kXG4gICAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGggIT09IDEgfHwgbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0ua2luZCAhPT0ga2luZClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgICAgICBjYXNlICdUZXh0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0udmFsdWU7XG4gICAgICAgICAgICBjYXNlICdSZWd1bGFyQ29tbWFuZCc6XG4gICAgICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2xlYW4obm9kZSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSlcbiAgICAgICAgICAgIHJldHVybiBub2RlLm1hcChjaGlsZCA9PiB0aGlzLmNsZWFuKGNoaWxkKSk7XG4gICAgICAgIGRlbGV0ZSBub2RlLmxvYztcbiAgICAgICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ0lubGluZU1hdGgnOlxuICAgICAgICAgICAgY2FzZSAnRGlzcGxheU1hdGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2Jsb2NrKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnRW52aXJvbm1lbnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2Vudmlyb25tZW50KG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2Jsb2NrKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnQmlibGlvZ3JhcGh5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9iaWIobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdSZWd1bGFyQ29tbWFuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fY29tbWFuZChub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ0RpYWNyaXRpY0NvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2RpYWNyaXRpYyhub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ0VudHJ5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9lbnRyeShub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ0ZpZWxkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJhdyA/IG5vZGUgOiB0aGlzLmNsZWFuX2ZpZWxkKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnU3RyaW5nRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3N0cmluZ2RlY2wobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdTdHJpbmdSZWZlcmVuY2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3N0cmluZ3JlZihub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1N1YnNjcmlwdENvbW1hbmQnOlxuICAgICAgICAgICAgY2FzZSAnU3VwZXJzY3JpcHRDb21tYW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9zY3JpcHQobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdTeW1ib2xDb21tYW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9zeW1ib2wobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdQcmVhbWJsZUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3ByZWFtYmxlKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgICAgY2FzZSAnQnJhY2VkQ29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICdMaW5lQ29tbWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBQYXJzZXJFcnJvcihgbm8gY2xlYW51cCBtZXRob2QgZm9yICR7dGhpcy5zaG93KG5vZGUpfWAsIG5vZGUpLCB0aGlzLnRleHQoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2xlYW5fcHJlYW1ibGUobm9kZSkge1xuICAgICAgICB0aGlzLmluX3ByZWFtYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgY2xlYW4gPSB0aGlzLmNsZWFuKG5vZGUudmFsdWUpO1xuICAgICAgICB0aGlzLmluX3ByZWFtYmxlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBjbGVhbjtcbiAgICB9XG4gICAgY2xlYW5fYmliKG5vZGUpIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IGNoaWxkLmtpbmQgIT09ICdOb25FbnRyeVRleHQnKS5tYXAoY2hpbGQgPT4gdGhpcy5jbGVhbihjaGlsZCkpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgY2xlYW5fc3RyaW5nZGVjbChub2RlKSB7XG4gICAgICAgIHRoaXMuc3RyaW5nc1tub2RlLm5hbWUudG9VcHBlckNhc2UoKV0gPSBub2RlLnZhbHVlO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgY2xlYW5fc3RyaW5ncmVmKG5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBuYW1lID0gbm9kZS5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IF9zdHJpbmcgPSB0aGlzLnN0cmluZ3NbbmFtZV1cbiAgICAgICAgICAgIHx8IHRoaXMub3B0aW9ucy5zdHJpbmdzW25hbWVdXG4gICAgICAgICAgICB8fCB0aGlzLmRlZmF1bHRfc3RyaW5nc1tuYW1lXVxuICAgICAgICAgICAgfHwgKGZpZWxkcy51bmFiYnJldi5pbmNsdWRlcyh0aGlzLmNsZWFuaW5nLm5hbWUpICYmICgoX2EgPSB0aGlzLm9wdGlvbnMudW5hYmJyZXZpYXRlW25hbWVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgJiYgW3RoaXMudGV4dCh0aGlzLm9wdGlvbnMudW5hYmJyZXZpYXRlW25hbWVdLnRleHQpXSk7XG4gICAgICAgIGlmICghX3N0cmluZykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVucmVzb2x2ZWRTdHJpbmdzW25hbWVdKVxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goeyBtZXNzYWdlOiBgVW5yZXNvbHZlZCBAc3RyaW5nIHJlZmVyZW5jZSAke0pTT04uc3RyaW5naWZ5KG5vZGUubmFtZSl9YCB9KTtcbiAgICAgICAgICAgIHRoaXMudW5yZXNvbHZlZFN0cmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAvLyBpZiB0aGUgc3RyaW5nIGlzbid0IGZvdW5kLCBhZGQgaXQgYXMtaXMgYnV0IGV4ZW1wdCBpdCBmcm9tIHNlbnRlbmNlIGNhc2luZ1xuICAgICAgICAgICAgY2FzZTogX3N0cmluZyA/IHVuZGVmaW5lZCA6ICdwcmVzZXJ2ZScsXG4gICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgdmFsdWU6IF9zdHJpbmcgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF9zdHJpbmcpKSA6IFt0aGlzLnRleHQobm9kZS5uYW1lKV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjbGVhbl9lbnRyeShub2RlKSB7XG4gICAgICAgIGNvbnN0IHNob3J0am91cm5hbHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBub2RlLmZpZWxkcykge1xuICAgICAgICAgICAgaWYgKGZpZWxkcy51bmFiYnJldi5pbmNsdWRlcyhmaWVsZC5uYW1lKSAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFiYnIgPSBmaWVsZC52YWx1ZS5tYXAodiA9PiB2LnNvdXJjZSkuam9pbignJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgam91cm5hbCA9IHRoaXMub3B0aW9ucy51bmFiYnJldmlhdGVbYWJicl07XG4gICAgICAgICAgICAgICAgaWYgKGpvdXJuYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvcnRqb3VybmFscy5wdXNoKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmaWVsZCkpKSwgeyBuYW1lOiAnc2hvcnRqb3VybmFsJyB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShqb3VybmFsLmFzdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBub2RlLmZpZWxkcyA9IG5vZGUuZmllbGRzLmNvbmNhdChzaG9ydGpvdXJuYWxzKS5tYXAoY2hpbGQgPT4gdGhpcy5jbGVhbihjaGlsZCkpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgc3RhcnRDbGVhbmluZyhuYW1lKSB7XG4gICAgICAgIG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChmaWVsZHMudGl0bGUuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW5pbmcgPSB7IHR5cGU6ICd0aXRsZScsIG5hbWUgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaWVsZHMuY3JlYXRvci5pbmNsdWRlcyhuYW1lLnJlcGxhY2UoL3MkLywgJycpKSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbmluZyA9IHsgdHlwZTogJ2NyZWF0b3InLCBuYW1lOiBuYW1lLnJlcGxhY2UoL3MkLywgJycpIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFuaW5nID0geyB0eXBlOiAnb3RoZXInLCBuYW1lIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RyaXBOb0Nhc2Uobm9kZSwgc3RyaXAsIHByZXNlcnZlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdSZWd1bGFyQ29tbWFuZCc6XG4gICAgICAgICAgICAgICAgLy8gYSBiaXQgY2hlYXR5IHRvIGFzc3VtZSB0aGVzZSB0byBiZSBub2Nhc2VkLCBidXQgaXQncyBqdXN0IG1vcmUgbGlrZWx5IHRvIGJlIHdoYXQgcGVvcGxlIHdhbnRcbiAgICAgICAgICAgICAgICBpZiAoWydjaHNmJywgJ2JpYnN0cmluZycsICdjaXRlJ10uaW5jbHVkZXMobm9kZS5jb21tYW5kKSlcbiAgICAgICAgICAgICAgICAgICAgc3RyaXAgPSB0cnVlO1xuICAgICAgICAgICAgICAgIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLm1hcChhcmcgPT4gdGhpcy5zdHJpcE5vQ2FzZShhcmcsIHN0cmlwLCBwcmVzZXJ2ZSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgICAgY2FzZSAnSW5saW5lTWF0aCc6XG4gICAgICAgICAgICBjYXNlICdEaXNwbGF5TWF0aCc6XG4gICAgICAgICAgICAgICAgaWYgKHN0cmlwICYmIG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jYXNlID0gJ3ByZXNlcnZlJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBub2RlLmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbm9kZS52YWx1ZS5tYXAodiA9PiB0aGlzLnN0cmlwTm9DYXNlKHYsIHN0cmlwIHx8IG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnLCBwcmVzZXJ2ZSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRmllbGQnOlxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICBub2RlLnZhbHVlLm1hcCh2ID0+IHRoaXMuc3RyaXBOb0Nhc2Uodiwgc3RyaXAsIHByZXNlcnZlKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaXNWZXJiYXRpbUZpZWxkKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5vcHRpb25zLnZlcmJhdGltRmllbGRzLmZpbmQocCA9PiAodHlwZW9mIHAgPT09ICdzdHJpbmcnKSA/IG5hbWUgPT09IHAgOiBuYW1lLm1hdGNoKHApKTtcbiAgICB9XG4gICAgY2xlYW5fZmllbGQobm9kZSkge1xuICAgICAgICB0aGlzLnN0YXJ0Q2xlYW5pbmcobm9kZS5uYW1lKTtcbiAgICAgICAgdGhpcy5zdHJpcE5vQ2FzZShub2RlLCAhdGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uIHx8IHRoaXMuaXNWZXJiYXRpbUZpZWxkKG5vZGUubmFtZSksIHRoaXMub3B0aW9ucy5zZW50ZW5jZUNhc2UubGVuZ3RoID09PSAwKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS52YWx1ZSkpXG4gICAgICAgICAgICB0aGlzLmNvbmRlbnNlKG5vZGUpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgY2xlYW5fc2NyaXB0KG5vZGUpIHtcbiAgICAgICAgbGV0IG0sIHZhbHVlLCBzaW5nbGVjaGFyO1xuICAgICAgICAvLyByZWNvZ25pemUgY29tYmluZWQgZm9ybXMgbGlrZSBcXF5cXGNpcmNcbiAgICAgICAgaWYgKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbbm9kZS5zb3VyY2VdKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChzaW5nbGVjaGFyKTtcbiAgICAgICAgaWYgKChtID0gbm9kZS5zb3VyY2UubWF0Y2goL14oW1xcXl9dKShbXnt9XSspJC8pKSAmJiAoKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7bVsxXX0ke21bMl19YF0pIHx8IChzaW5nbGVjaGFyID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake21bMV19eyR7bVsyXX19YF0pKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoc2luZ2xlY2hhcik7XG4gICAgICAgIGlmICgobSA9IG5vZGUuc291cmNlLm1hdGNoKC9eKFtcXF5fXSlcXHsoW157fV0rKVxcfSQvKSkgJiYgKChzaW5nbGVjaGFyID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake21bMV19JHttWzJdfWBdKSB8fCAoc2luZ2xlY2hhciA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHttWzFdfXske21bMl19fWBdKSkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHNpbmdsZWNoYXIpO1xuICAgICAgICBjb25zdCBjbWQgPSBub2RlLmtpbmQgPT09ICdTdXBlcnNjcmlwdENvbW1hbmQnID8gJ14nIDogJ18nO1xuICAgICAgICBpZiAodHlwZW9mIG5vZGUudmFsdWUgPT09ICdzdHJpbmcnICYmIChzaW5nbGVjaGFyID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake2NtZH0ke25vZGUudmFsdWV9YF0gfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake2NtZH17JHtub2RlLnZhbHVlfX1gXSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoc2luZ2xlY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBub2RlLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSBbdGhpcy50ZXh0KG5vZGUudmFsdWUpXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghQXJyYXkuaXNBcnJheShub2RlLnZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBbbm9kZS52YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kZSA9IG5vZGUua2luZCA9PT0gJ1N1cGVyc2NyaXB0Q29tbWFuZCcgPyAnc3VwJyA6ICdzdWInO1xuICAgICAgICByZXR1cm4gdGhpcy5jbGVhbih7XG4gICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgbWFya3VwOiB7IFttb2RlXTogdHJ1ZSB9LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjbGVhbl9lbnZpcm9ubWVudChub2RlKSB7XG4gICAgICAgIHRoaXMuY29uZGVuc2Uobm9kZSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBuZWVkc1Byb3RlY3Rpb24od29yZCkge1xuICAgICAgICByZXR1cm4gIXdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmhhc1VwcGVyKSAmJiB3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5oYXNMb3dlcik7XG4gICAgfVxuICAgIGNsZWFuX2Jsb2NrKG5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLmNvbmRlbnNlKG5vZGUpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uICE9PSAnc3RyaWN0JyAmJiAoKF9hID0gdGhpcy5jbGVhbmluZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnR5cGUpID09PSAndGl0bGUnICYmIG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnKSB7XG4gICAgICAgICAgICAvLyB0ZXN0IHdoZXRoZXIgd2UgY2FuIGdldCBhd2F5IHdpdGggc2tpcHBpbmcgY2FzZSBwcm90ZWN0aW9uIGJlY2F1c2UgaXQgY29udGFpbnMgYWxsIHdvcmRzIHRoYXQgd2lsbCBiZSBwcmVzZXJ2ZWQgYW55d2F5IHdoZW4gY29udmVydGluZyBiYWNrIHRvIFRpdGxlIENhc2VcbiAgICAgICAgICAgIGxldCBwcmVzZXJ2ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQua2luZCA9PT0gJ1RleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2hpbGQudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZSA9ICF2YWx1ZS5tYXRjaChwcmVzZXJ2ZUNhc2UuaXNDYXNlU2Vuc2l0aXZlKSB8fCAhdmFsdWUuc3BsaXQoL1xccysvKS5maW5kKHdvcmQgPT4gdGhpcy5uZWVkc1Byb3RlY3Rpb24od29yZCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFwcmVzZXJ2ZSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJlc2VydmUpXG4gICAgICAgICAgICAgICAgbm9kZS5jYXNlID0gJ3ByZXNlcnZlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5raW5kID09PSAnQmxvY2snKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFttYXJrdXAsIG9uXSBvZiBPYmplY3QuZW50cmllcyhub2RlLm1hcmt1cCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW9uKVxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbm9kZS5tYXJrdXBbbWFya3VwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgY2xlYW5fZGlhY3JpdGljKG5vZGUpIHtcbiAgICAgICAgY29uc3QgY2hhciA9IG5vZGUuZG90bGVzcyA/IGBcXFxcJHtub2RlLmNoYXJhY3Rlcn1gIDogbm9kZS5jaGFyYWN0ZXI7XG4gICAgICAgIGxldCB1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLm1hcmt9eyR7Y2hhcn19YF1cbiAgICAgICAgICAgIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5tYXJrfSR7Y2hhcn1gXVxuICAgICAgICAgICAgfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2B7XFxcXCR7bm9kZS5tYXJrfSAke2NoYXJ9fWBdXG4gICAgICAgICAgICB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYHtcXFxcJHtub2RlLm1hcmt9JHtjaGFyfX1gXVxuICAgICAgICAgICAgfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLm1hcmt9ICR7Y2hhcn1gXTtcbiAgICAgICAgaWYgKCF1bmljb2RlICYmICFub2RlLmRvdGxlc3MgJiYgbm9kZS5jaGFyYWN0ZXIubGVuZ3RoID09PSAxICYmIHVuaWNvZGUybGF0ZXhfMS5kaWFjcml0aWNzLnRvdW5pY29kZVtub2RlLm1hcmtdKVxuICAgICAgICAgICAgdW5pY29kZSA9IG5vZGUuY2hhcmFjdGVyICsgdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MudG91bmljb2RlW25vZGUubWFya107XG4gICAgICAgIGlmICghdW5pY29kZSAmJiAhdGhpcy5pbl9wcmVhbWJsZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBUZVhFcnJvcihgVW5oYW5kbGVkIFxcXFwke25vZGUubWFya317JHtjaGFyfX1gLCBub2RlLCB0aGlzLmNodW5rKSwgdGhpcy50ZXh0KCkpO1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgIH1cbiAgICBjbGVhbl9zeW1ib2wobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5jb21tYW5kID09PSAnXFxcXCcpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCdcXG4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUuY29tbWFuZH1gXSB8fCBub2RlLmNvbW1hbmQpO1xuICAgIH1cbiAgICBmaXJzdF90ZXh0X2Jsb2NrKG5vZGUpIHtcbiAgICAgICAgaWYgKCFub2RlKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hpbGQua2luZCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdUZXh0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC52YWx1ZSA/IG5vZGUgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSB0aGlzLmZpcnN0X3RleHRfYmxvY2soY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGVhbl9jb21tYW5kKG5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBsZXQgYXJnLCB1bmljb2RlO1xuICAgICAgICBpZiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtub2RlLnNvdXJjZV0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICBzd2l0Y2ggKG5vZGUuY29tbWFuZCkge1xuICAgICAgICAgICAgY2FzZSAnbmV3Y29tbWFuZCc6XG4gICAgICAgICAgICAgICAgaWYgKCgoX2EgPSBub2RlLmFyZ3VtZW50cykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlcXVpcmVkLmxlbmd0aCkgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0ua2luZCA9PT0gJ0Jsb2NrJ1xuICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZS5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0udmFsdWVbMF0ua2luZCA9PT0gJ1JlZ3VsYXJDb21tYW5kJ1xuICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFsxXS5raW5kID09PSAnQmxvY2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3Y29tbWFuZHNbbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0udmFsdWVbMF0uY29tbWFuZF0gPSBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFsxXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbmV3Y29tbWFuZD8nLCBKU09OLnN0cmluZ2lmeShub2RlLCBudWxsLCAyKSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGtpbmQ6ICdNYXJrdXAnLCB2YWx1ZTogJzxsaT4nLCBzb3VyY2U6IG5vZGUuc291cmNlIH07XG4gICAgICAgICAgICBjYXNlICdmcmFjJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJnWzBdLmtpbmQgPT09ICdUZXh0JyAmJiBhcmdbMV0ua2luZCA9PT0gJ1RleHQnICYmICh1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcZnJhY3ske2FyZ1swXS52YWx1ZX19eyR7YXJnWzFdLnZhbHVlfX1gXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZTogJ3Byb3RlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBraW5kOiAnQmxvY2snLCBtYXJrdXA6IHsgc3VwOiB0cnVlIH0sIHZhbHVlOiBbYXJnWzBdXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCgnXFx1MjA0NCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2luZDogJ0Jsb2NrJywgbWFya3VwOiB7IHN1YjogdHJ1ZSB9LCB2YWx1ZTogW2FyZ1sxXV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgICAgY2FzZSAndnNwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ZwaGFudG9tJzpcbiAgICAgICAgICAgIGNhc2UgJ3BhdGgnOlxuICAgICAgICAgICAgY2FzZSAnYWZ0ZXJncm91cCc6XG4gICAgICAgICAgICBjYXNlICdpZ25vcmVzcGFjZXMnOlxuICAgICAgICAgICAgY2FzZSAncmVsYXgnOlxuICAgICAgICAgICAgY2FzZSAnbm9vcHNvcnQnOlxuICAgICAgICAgICAgY2FzZSAnaWZkZWZpbmVkJzpcbiAgICAgICAgICAgIGNhc2UgJ0RlY2xhcmVQcmVmQ2hhcnMnOlxuICAgICAgICAgICAgY2FzZSAnZWxzZSc6XG4gICAgICAgICAgICBjYXNlICdmaSc6XG4gICAgICAgICAgICBjYXNlICdtYWtlYXRsZXR0ZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgIGNhc2UgJ0Vsc2V2aWVyR2x5cGgnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdUZXh0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUuY29tbWFuZH17JHthcmd9fWBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGFyZywgMTYpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2hzZic6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXJndW1lbnQobm9kZSwgJ25vbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmlic3RyaW5nJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NpdGUnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGV4dHN1cGVyc2NyaXB0JzpcbiAgICAgICAgICAgIGNhc2UgJ3NwJzpcbiAgICAgICAgICAgICAgICBpZiAoKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ1RleHQnKSkgJiYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYF57JHthcmd9fWBdKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RleHRzdWJzY3JpcHQnOlxuICAgICAgICAgICAgY2FzZSAnc2InOlxuICAgICAgICAgICAgICAgIGlmICgoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKSAmJiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgX3ske2FyZ319YF0pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGV4dHNjJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VucXVvdGUnOlxuICAgICAgICAgICAgY2FzZSAnbWtiaWJxdW90ZSc6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXh0YmYnOlxuICAgICAgICAgICAgY2FzZSAnbWtiaWJib2xkJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY3Rpb24nOlxuICAgICAgICAgICAgY2FzZSAnc3Vic2VjdGlvbic6XG4gICAgICAgICAgICBjYXNlICdzdWJzdWJzZWN0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ3N1YnN1YnN1YnNlY3Rpb24nOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWtiaWJpdGFsaWMnOlxuICAgICAgICAgICAgY2FzZSAnbWtiaWJlbXBoJzpcbiAgICAgICAgICAgIGNhc2UgJ3RleHRpdCc6XG4gICAgICAgICAgICBjYXNlICdlbXBoJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbih7IGtpbmQ6ICdCbG9jaycsIG1hcmt1cDogeyBpdGFsaWNzOiB0cnVlIH0sIHZhbHVlOiBbdGhpcy50ZXh0KGFyZyldIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmliY3lyJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdoc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnbWF0aHJtJzpcbiAgICAgICAgICAgIGNhc2UgJ3RleHRybSc6XG4gICAgICAgICAgICBjYXNlICdvY2lyYyc6XG4gICAgICAgICAgICBjYXNlICdtYm94JzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUuY29tbWFuZH17JHthcmd9fWBdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUgfHwgKG5vZGUuY29tbWFuZCA9PT0gJ2hzcGFjZScgPyAnICcgOiBhcmcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIW5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBqdXN0IHRha2UgdGhlIFVSTD8gTm90IHRoZSBsYWJlbD9cbiAgICAgICAgICAgIGNhc2UgJ2hyZWYnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsIDIpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmdbMF0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KGFyZyk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzbCc6XG4gICAgICAgICAgICBjYXNlICdlbSc6XG4gICAgICAgICAgICBjYXNlICdpdCc6XG4gICAgICAgICAgICBjYXNlICdpdHNoYXBlJzpcbiAgICAgICAgICAgIGNhc2UgJ2JmJzpcbiAgICAgICAgICAgIGNhc2UgJ2Jmc2VyaWVzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NjJzpcbiAgICAgICAgICAgIGNhc2UgJ3Njc2hhcGUnOlxuICAgICAgICAgICAgY2FzZSAndHQnOlxuICAgICAgICAgICAgY2FzZSAncm0nOlxuICAgICAgICAgICAgY2FzZSAnc2YnOlxuICAgICAgICAgICAgY2FzZSAndmVyYic6XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlZCBpbiB0aGUgZ3JhbW1hclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgIC8vIHdvdWxkbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIHRoZXNlXG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICBjYXNlICdwYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoJ1xcblxcbicpO1xuICAgICAgICAgICAgY2FzZSAnY3lyJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwb2xoayc6XG4gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlICsgJ1xcdTAzMjgnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXJndW1lbnQobm9kZSwgJ25vbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgnXFx1MDMyOCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5raW5kID09PSAnUmVndWxhckNvbW1hbmQnICYmIHRoaXMubmV3Y29tbWFuZHNbbm9kZS5jb21tYW5kXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubmV3Y29tbWFuZHNbbm9kZS5jb21tYW5kXSkpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUybGF0ZXhfMS5kaWFjcml0aWNzLnRvdW5pY29kZVtub2RlLmNvbW1hbmRdKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkID0gdGhpcy5jbGVhbihub2RlLmFyZ3VtZW50cy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aCA9PT0gMSAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5raW5kID09PSAnVGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vIGlkZWEgd2h5IEkgY2FuJ3QganVzdCBzdHJhaWdodCByZXR1cm4gdGhpcyBidXQgdHlwZXNjcmlwdCBqdXN0IHdvbid0IHNodXQgdXBcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdEaWFjcml0aWNDb21tYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcms6IG5vZGUuY29tbWFuZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlcjogbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3RsZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0ubG9jLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGJsb2NrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChibG9jayA9IHRoaXMuZmlyc3RfdGV4dF9ibG9jayhub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaXhlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sudmFsdWUgPSBibG9jay52YWx1ZS5yZWR1Y2UoKHZhbHVlLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZml4ZWQgJiYgY2hpbGQua2luZCA9PT0gJ1RleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUucHVzaCh7IGtpbmQ6ICdEaWFjcml0aWNDb21tYW5kJywgbWFyazogbm9kZS5jb21tYW5kLCBjaGFyYWN0ZXI6IGNoaWxkLnZhbHVlWzBdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wdXNoKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY2hpbGQpLCB7IHZhbHVlOiBjaGlsZC52YWx1ZS5zdWJzdHJpbmcoMSkgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cDoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVybGluZSB3aXRob3V0IGFyZ3VtZW50cyBkb2Vzbid0IHNlZW0gdG8gcmVuZGVyIGluIExhVGVYXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5jb21tYW5kID09PSAnb3ZlcmxpbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cDoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFt0aGlzLnRleHQoJyAnICsgdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MudG91bmljb2RlW25vZGUuY29tbWFuZF0pXS5jb25jYXQobm9kZS5hcmd1bWVudHMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbbm9kZS5zb3VyY2VdIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHtub2RlLnNvdXJjZX17fWBdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGlmICgodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfWBdIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfXt9YF0pICYmIHRoaXMuYXJndW1lbnQobm9kZSwgJ25vbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ1RleHQnKSkgJiYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUuY29tbWFuZH17JHthcmd9fWBdKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbl9wcmVhbWJsZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQobm9kZS5zb3VyY2UpO1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihuZXcgVGVYRXJyb3IoYFVuaGFuZGxlZCBjb21tYW5kOiAke25vZGUuY29tbWFuZH1gICsgdGhpcy5zaG93KG5vZGUpLCBub2RlLCB0aGlzLmNodW5rKSwgdGhpcy50ZXh0KCkpO1xuICAgIH1cbiAgICBwcmVzZXJ2ZUNhc2Uod29yZCkge1xuICAgICAgICAvLyB3b3JkID0gd29yZC5yZXBsYWNlKG5ldyBSZWdFeHAoYFwiWyR7dGhpcy5tYXJrdXAuZW5xdW90ZS5vcGVufSR7dGhpcy5tYXJrdXAuZW5xdW90ZS5jbG9zZX06KCldYCwgJ2cnKSwgJycpXG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICghd29yZC50cmltKCkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghd29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaGFzQWxwaGFOdW0pKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHdvcmQgPSB3b3JkLnJlcGxhY2UoL1tcXC/igJkn4oCdOigpXS9nLCAnJyk7XG4gICAgICAgIGlmICh3b3JkID09PSAnSScpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAod29yZC5yZXBsYWNlKHByZXNlcnZlQ2FzZS5ub3RDYXNlU2Vuc2l0aXZlKSA9PT0gJycpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIHdvcmQgPSB3b3JkLnJlcGxhY2UocHJlc2VydmVDYXNlLm5vdEFscGhhTnVtLCAnJylcbiAgICAgICAgLy8gc2ltcGxlIGNhcCBhdCBzdGFydCBvZiBmaWVsZFxuICAgICAgICBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UubGVhZGluZ0NhcCkgJiYgKChfYiA9IChfYSA9IHRoaXMuZmllbGQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmFsbENhcHMpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh3b3JkLmxlbmd0aCA+IDEgJiYgd29yZC5tYXRjaChwcmVzZXJ2ZUNhc2Uuam9pbmVkKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmhhc1VwcGVyKSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaXNOdW1iZXIpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29udmVydChub2RlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUubWFwKGNoaWxkID0+IHRoaXMuY29udmVydChjaGlsZCkpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhdyAmJiB0aGlzLmZpZWxkKVxuICAgICAgICAgICAgbm9kZSA9IHRoaXMudGV4dChub2RlLnNvdXJjZSk7XG4gICAgICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdNYXJrdXAnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gbm9kZS52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JyYWNlZENvbW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnTGluZUNvbW1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudHMucHVzaChub2RlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudHJ5JzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRfZW50cnkobm9kZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydF9udW1iZXIobm9kZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdUZXh0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRfdGV4dChub2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICAgIGNhc2UgJ0lubGluZU1hdGgnOlxuICAgICAgICAgICAgY2FzZSAnRGlzcGxheU1hdGgnOlxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5maWVsZCA/IHRoaXMuZmllbGQudGV4dC5sZW5ndGggOiBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXNlcnZlID0gdHlwZW9mIHN0YXJ0ID09PSAnbnVtYmVyJyAmJiB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydF9ibG9jayhub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAocHJlc2VydmUgJiYgKG5vZGUuY2FzZSB8fCBub2RlLmtpbmQuZW5kc1dpdGgoJ01hdGgnKSkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VydmUoc3RhcnQsIHRoaXMuZmllbGQudGV4dC5sZW5ndGgpOyAvLyAsIGBjb252ZXJ0LWJsb2NrOiBjYXNlPSR7bm9kZS5jYXNlfSwgbWF0aD0ke25vZGUua2luZC5lbmRzV2l0aCgnTWF0aCcpfWApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFbnZpcm9ubWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0X2Vudmlyb25tZW50KG5vZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUHJlYW1ibGVFeHByZXNzaW9uJzpcbiAgICAgICAgICAgICAgICB0aGlzLnByZWFtYmxlLnB1c2gobm9kZS52YWx1ZS5tYXAocHJlYW1ibGUgPT4gcHJlYW1ibGUuc291cmNlKS5qb2luKCdcXG5cXG4nKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEaXNwbGF5TWF0aCc6XG4gICAgICAgICAgICBjYXNlICdJbmxpbmVNYXRoJzpcbiAgICAgICAgICAgIGNhc2UgJ1N0cmluZ0RlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFBhcnNlckVycm9yKGBubyBjb252ZXJ0ZXIgZm9yICR7bm9kZS5raW5kfTogJHt0aGlzLnNob3cobm9kZSl9YCwgbm9kZSksIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3BsaXRPbmNlKHMsIHNlcCwgZnJvbUVuZCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gZnJvbUVuZCA/IHMubGFzdEluZGV4T2Yoc2VwKSA6IHMuaW5kZXhPZihzZXApO1xuICAgICAgICByZXR1cm4gKHNwbGl0IDwgMCkgPyBbcywgJyddIDogW3Muc3Vic3RyKDAsIHNwbGl0KSwgcy5zdWJzdHIoc3BsaXQgKyAxKV07XG4gICAgfVxuICAgIHBhcnNlTmFtZShuYW1lKSB7XG4gICAgICAgIGxldCBwYXJzZWQgPSBudWxsO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IG5hbWUuc3BsaXQobWFya2VyLmNvbW1hKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCAmJiAhcGFydHMuZmluZChwID0+ICFwLm1hdGNoKC9eW2Etel0rKC1pKT89L2kpKSkgeyAvLyBleHRlbmRlZCBuYW1lIGZvcm1hdFxuICAgICAgICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkID0gcGFyc2VkIHx8IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IFthdHRyLCB2YWx1ZV0gPSB0aGlzLnNwbGl0T25jZShwYXJ0LnJlcGxhY2UobWFya2VyLnJlLnNwYWNlLCAnJyksICc9JykubWFwKHYgPT4gdi50cmltKCkpO1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0ci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhbWlseSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQubGFzdE5hbWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdnaXZlbi1pJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5pbml0aWFsID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2l2ZW4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLmZpcnN0TmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZWZpeCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucHJlZml4ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3VmZml4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5zdWZmaXggPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd1c2VwcmVmaXgnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnVzZXByZWZpeCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdqdW5pb3Jjb21tYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQudXNlcHJlZml4ID0gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRbYXR0ci50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IC8oLis/KVxccysodmVyZXx2b258dmFuIGRlbnx2YW4gZGVyfHZhbnxkZXxkZWx8ZGVsbGF8ZGVyfGRpfGRhfHBpZXRyb3x2YW5kZW58ZHV8c3QufHN0fGxhfGxvfHRlcnxiaW58aWJufHRlfHRlbnxvcHxiZW58YWwpXFxzKyguKykvO1xuICAgICAgICBsZXQgbTtcbiAgICAgICAgc3dpdGNoIChwYXJzZWQgPyAwIDogcGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBwYXJzZWRcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTogLy8gbmFtZSB3aXRob3V0IGNvbW1hc1xuICAgICAgICAgICAgICAgIC8vIGxpdGVyYWxcbiAgICAgICAgICAgICAgICBpZiAobWFya2VyLnJlLmxpdGVyYWxOYW1lLnRlc3QocGFydHNbMF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IHsgbGl0ZXJhbDogcGFydHNbMF0gfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobSA9IHBhcnRzWzBdLnJlcGxhY2UobWFya2VyLnJlLnNwYWNlLCAnICcpLm1hdGNoKHByZWZpeCkpIHsgLy8gc3BsaXQgb24gcHJlZml4XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogbVsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogbVsyXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBtWzNdLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9wLWxldmVsIFwiZmlyc3RuYW1lIGxhc3RuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2ZpcnN0TmFtZSwgbGFzdE5hbWVdID0gdGhpcy5zcGxpdE9uY2UocGFydHNbMF0sIG1hcmtlci5zcGFjZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0geyBmaXJzdE5hbWUsIGxhc3ROYW1lIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQgPSB7IGxhc3ROYW1lOiBmaXJzdE5hbWUgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjogLy8gbGFzdG5hbWUsIGZpcnN0bmFtZVxuICAgICAgICAgICAgICAgIHBhcnNlZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHBhcnRzWzBdLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHBhcnRzWzFdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OiAvLyBsYXN0bmFtZSwgc3VmZml4LCBmaXJzdG5hbWVcbiAgICAgICAgICAgICAgICBwYXJzZWQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBwYXJ0c1swXSxcbiAgICAgICAgICAgICAgICAgICAgc3VmZml4OiBwYXJ0c1sxXSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBwYXJ0cy5zbGljZSgyKS5qb2luKG1hcmtlci5jb21tYSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWQpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgcGFyc2VkW2tdID0gbWFya2VyLmNsZWFuKHYpLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH1cbiAgICBjb252ZXJ0X2VudHJ5KG5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLmVudHJ5ID0ge1xuICAgICAgICAgICAga2V5OiBub2RlLmlkLFxuICAgICAgICAgICAgdHlwZTogbm9kZS50eXBlLFxuICAgICAgICAgICAgZmllbGRzOiB7fSxcbiAgICAgICAgICAgIGNyZWF0b3JzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2godGhpcy5lbnRyeSk7XG4gICAgICAgIC8vIG9yZGVyIHRoZXNlIGZpcnN0IGZvciBsYW5ndWFnZS1kZXBlbmRlbnQgc2VudGVuY2UgY2FzaW5nXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydsYW5naWQnLCAnaHlwaGVuYXRpb24nLCAnbGFuZ3VhZ2UnXTtcbiAgICAgICAgbm9kZS5maWVsZHMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWEgPSBvcmRlci5pbmRleE9mKGEubmFtZSk7XG4gICAgICAgICAgICBjb25zdCBpYiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lKTtcbiAgICAgICAgICAgIGlmIChpYSA9PT0gLTEgJiYgaWIgPT09IC0xKVxuICAgICAgICAgICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpOyAvLyBkb2Vzbid0IG1hdHRlciByZWFsbHlcbiAgICAgICAgICAgIGlmIChpYSA9PT0gLTEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICBpZiAoaWIgPT09IC0xKVxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIHJldHVybiBpYSAtIGliO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IHNlbnRlbmNlQ2FzZSA9ICEhdGhpcy5vcHRpb25zLnNlbnRlbmNlQ2FzZS5sZW5ndGg7IC8vIGlmIHNlbnRlbmNlQ2FzZSBpcyBlbXB0eSwgbm8gc2VudGVuY2UgY2FzaW5nXG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2Ygbm9kZS5maWVsZHMpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5raW5kICE9PSAnRmllbGQnKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBQYXJzZXJFcnJvcihgRXhwZWN0ZWQgRmllbGQsIGdvdCAke2ZpZWxkLmtpbmR9YCwgbm9kZSksIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q2xlYW5pbmcoZmllbGQubmFtZSk7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYXcgJiYgdGhpcy5maWVsZFR5cGUgIT09ICdjcmVhdG9yJykge1xuICAgICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1tmaWVsZC5uYW1lXSA9IFsgZmllbGQudmFsdWUubWFwKHYgPT4gdi5zb3VyY2UpLmpvaW4oJycpIF1cbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmZpZWxkID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdXBwZXI6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxvd2VyOiAwLFxuICAgICAgICAgICAgICAgICAgICBvdGhlcjogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHByZXNlcnZlUmFuZ2VzOiAoc2VudGVuY2VDYXNlICYmIGZpZWxkcy50aXRsZS5pbmNsdWRlcyhmaWVsZC5uYW1lKSkgPyBbXSA6IG51bGwsXG4gICAgICAgICAgICAgICAgaHRtbDogdGhpcy5vcHRpb25zLmh0bWxGaWVsZHMuaW5jbHVkZXMoZmllbGQubmFtZSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXSA9IHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0gfHwgW107XG4gICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yICd0aXRsZSA9IDIwMjAnXG4gICAgICAgICAgICBpZiAoZmllbGQudmFsdWUua2luZCA9PT0gJ051bWJlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdLnB1c2goZmllbGQudmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb252ZXJ0KGZpZWxkLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCA9IHRoaXMuZmllbGQudGV4dC50cmltKCk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZSgvPFxcLyhbYS16XSk+PFxcMT4vZywgJycpO1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ID0gdGhpcy5maWVsZC50ZXh0LnJlcGxhY2UoLzwoW2Etel0pPihcXHMqKTxcXC9cXDE+L2csICckMScpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZpZWxkLnRleHQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBkaXNhYmxlIHNlbnRlbmNlQ2FzaW5nIGlmIG5vdCBhbiBlbmdsaXNoXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZmllbGQubmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmdpZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnaHlwaGVuYXRpb24nOlxuICAgICAgICAgICAgICAgICAgICBzZW50ZW5jZUNhc2UgPSBzZW50ZW5jZUNhc2UgJiYgdGhpcy5vcHRpb25zLnNlbnRlbmNlQ2FzZS5pbmNsdWRlcyh0aGlzLmZpZWxkLnRleHQudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlJzpcbiAgICAgICAgICAgICAgICAgICAgc2VudGVuY2VDYXNlID0gc2VudGVuY2VDYXNlICYmICEhKHRoaXMuZmllbGQudGV4dC50b0xvd2VyQ2FzZSgpLnRyaW0oKS5zcGxpdCgvXFxzKixcXHMqLykuZmluZChsYW5nID0+IHRoaXMub3B0aW9ucy5zZW50ZW5jZUNhc2UuaW5jbHVkZXMobGFuZykpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBcImdyb3Vwc1wiIGlzIGEgamFicmVmIDMuOCsgbW9uc3Ryb3NpdHlcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLm5hbWUubWF0Y2goL14oa2V5d29yZHM/fGdyb3VwcykkLykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB0ZXh0IG9mIHRoaXMuZmllbGQudGV4dC5zcGxpdChtYXJrZXIuY29tbWEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdLnB1c2godGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jbGVhbmluZy50eXBlID09PSAnY3JlYXRvcicpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW50cnkuY3JlYXRvcnNbdGhpcy5maWVsZC5uYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyeS5jcmVhdG9yc1t0aGlzLmZpZWxkLm5hbWVdID0gW107XG4gICAgICAgICAgICAgICAgLy8ge00uIEhhbGxlLCBKLiBCcmVzbmFuLCBhbmQgRy4gTWlsbGVyfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLnRleHQuaW5jbHVkZXMoYCR7bWFya2VyLmNvbW1hfSR7bWFya2VyLmFuZH1gKSkgeyAvL1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZShuZXcgUmVnRXhwKGAke21hcmtlci5jb21tYX0ke21hcmtlci5hbmR9YCwgJ2cnKSwgbWFya2VyLmFuZCkucmVwbGFjZShuZXcgUmVnRXhwKG1hcmtlci5jb21tYSksIG1hcmtlci5hbmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNyZWF0b3Igb2YgdGhpcy5maWVsZC50ZXh0LnNwbGl0KG1hcmtlci5hbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0ucHVzaChtYXJrZXIuY2xlYW4oY3JlYXRvcikpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmNyZWF0b3JzW3RoaXMuZmllbGQubmFtZV0ucHVzaCh0aGlzLnBhcnNlTmFtZShjcmVhdG9yKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZmllbGRzLnVuYWJicmV2LmluY2x1ZGVzKGZpZWxkLm5hbWUpKSB7IC8vIGRvZXNuJ3QgZ2V0IHNlbnRlbmNlIGNhc2luZyBhbnlob3cgVE9ETzogYm9va3RpdGxlIGRvZXMhXG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXS5wdXNoKCgoKF9hID0gdGhpcy5vcHRpb25zLnVuYWJicmV2aWF0ZVt0aGlzLmZpZWxkLnRleHRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgdGhpcy5maWVsZC50ZXh0KS5ub3JtYWxpemUoJ05GQycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZ3Vlc3NBbHJlYWR5U2VudGVuY2VDYXNlZCAmJiBNYXRoLm1heCh0aGlzLmZpZWxkLndvcmRzLnVwcGVyLCB0aGlzLmZpZWxkLndvcmRzLmxvd2VyKSA+ICh0aGlzLmZpZWxkLndvcmRzLm90aGVyICsgTWF0aC5taW4odGhpcy5maWVsZC53b3Jkcy51cHBlciwgdGhpcy5maWVsZC53b3Jkcy5sb3dlcikpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlKG51bGwsIG51bGwpOyAvLyAsICdtb3N0bHkgc2VudGVuY2UgY2FzZWQgYWxyZWFkeScpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZShwcmVzZXJ2ZUNhc2UubWFya3VwLCBtYXJrdXAgPT4gbWFya2VyLm1hcmt1cC5yZXBlYXQobWFya3VwLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVDYXNlLnNlbnRlbmNlU3RhcnQubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBwcmVzZXJ2ZUNhc2Uuc2VudGVuY2VTdGFydC5leGVjKHR4dCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjbHVkZSBzdHVmZiBsaWtlIFwiVS5TLiBUYXhlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoLmluZGV4ID4gMiAmJiB0eHQuc3Vic3RyKDAsIG1hdGNoLmluZGV4ICsgMSkubWF0Y2gocHJlc2VydmVDYXNlLmFjcm9ueW0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlKG1hdGNoLmluZGV4LCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7IC8vICwgYHNlbnRlbmNlU3RhcnQ6ICR7bWF0Y2hbMF19IGF0ICR7bWF0Y2guaW5kZXh9Li4ke21hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RofWApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUNhc2UucXVvdGVkLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gcHJlc2VydmVDYXNlLnF1b3RlZC5leGVjKHRoaXMuZmllbGQudGV4dCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpOyAvLyAsICdxdW90ZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0ucHVzaCh0aGlzLmNvbnZlcnRUb1NlbnRlbmNlQ2FzZSh0aGlzLmZpZWxkLnRleHQpLm5vcm1hbGl6ZSgnTkZDJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmllbGQgPSBudWxsO1xuICAgIH1cbiAgICBjb252ZXJ0VG9TZW50ZW5jZUNhc2UodGV4dCkge1xuICAgICAgICBpZiAoIXRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpXG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgLy8gYWx3YXlzIGtlZXAgdGhlIGxlYWRpbmcgY2hhciwgYnV0IHNraXAgbWFya3VwXG4gICAgICAgIGNvbnN0IGxlYWQgPSB0ZXh0Lm1hdGNoKC9eKDxbXj5dKz4pKi4vKTtcbiAgICAgICAgaWYgKGxlYWQpIHtcbiAgICAgICAgICAgIHRoaXMucHJlc2VydmUobGVhZFswXS5sZW5ndGggLSAxLCBsZWFkWzBdLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByZXNlcnZlKDAsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzZW50ZW5jZUNhc2VkID0gdGV4dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLygoW1xcPyFdXFxzKnxeKShbXFwnXFxcIsKhwr/igJzigJjigJ7Cq1xcc10rKT9bXlxcc10pL2csIHggPT4geC50b1VwcGVyQ2FzZSgpKTtcbiAgICAgICAgZm9yIChjb25zdCB7IHN0YXJ0LCBlbmQgfSBvZiB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzKSB7XG4gICAgICAgICAgICBzZW50ZW5jZUNhc2VkID0gc2VudGVuY2VDYXNlZC5zdWJzdHJpbmcoMCwgc3RhcnQpICsgdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCkgKyBzZW50ZW5jZUNhc2VkLnN1YnN0cmluZyhlbmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0ICE9PSBzZW50ZW5jZUNhc2VkKVxuICAgICAgICAgICAgdGhpcy5lbnRyeS5zZW50ZW5jZUNhc2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHNlbnRlbmNlQ2FzZWQ7XG4gICAgfVxuICAgIGNvbnZlcnRfbnVtYmVyKG5vZGUpIHtcbiAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IGAke25vZGUudmFsdWV9YDtcbiAgICB9XG4gICAgY29udmVydF90ZXh0KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubW9kZSA9PT0gJ3ZlcmJhdGltJykge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGhldXJpc3RpYyB0byBkZXRlY3QgcHJlLXNlbnRlbmNlY2FzZWQgdGV4dFxuICAgICAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygbm9kZS52YWx1ZS5zcGxpdCgvXFxiLykpIHtcbiAgICAgICAgICAgIGlmICh3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5hbGxMb3dlcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLndvcmRzLmxvd2VyKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5hbGxDYXBzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQud29yZHMudXBwZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmhhc0FscGhhKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQud29yZHMub3RoZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWVsZC5sZXZlbCA9PT0gMCAmJiB0aGlzLmNsZWFuaW5nLnR5cGUgPT09ICdjcmVhdG9yJykge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWUucmVwbGFjZSgvXFxzK2FuZFxccysvaWcsIG1hcmtlci5hbmQpLnJlcGxhY2UoL1xccyosXFxzKi9nLCBtYXJrZXIuY29tbWEpLnJlcGxhY2UoL1xccysvZywgbWFya2VyLnNwYWNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWVsZC5sZXZlbCA9PT0gMCAmJiB0aGlzLmZpZWxkLm5hbWUubWF0Y2goL14oa2V5d29yZHM/fGdyb3VwcykkLykpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSBub2RlLnZhbHVlLnJlcGxhY2UoL1xccypbOyxdXFxzKi9nLCBtYXJrZXIuY29tbWEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmh0bWwpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSBub2RlLnZhbHVlLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzKSB7XG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IG5vZGUudmFsdWUuc3BsaXQoLyhcXHMrKS8pO1xuICAgICAgICAgICAgZm9yIChjb25zdCB3b3JkIG9mIHdvcmRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmZpZWxkLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSB3b3JkO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByZXNlcnZlQ2FzZSh3b3JkKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZShzdGFydCwgdGhpcy5maWVsZC50ZXh0Lmxlbmd0aCk7IC8vICwgYHdvcmQ6ICR7SlNPTi5zdHJpbmdpZnkod29yZCl9YClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnZlcnRfZW52aXJvbm1lbnQobm9kZSkge1xuICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0geyBlbnVtZXJhdGU6ICc8b2w+JywgaXRlbWl6ZTogJzx1bD4nIH1bbm9kZS5lbnZdO1xuICAgICAgICB0aGlzLmNvbnZlcnRfYmxvY2soT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBub2RlKSwgeyBraW5kOiAnQmxvY2snLCBtYXJrdXA6IHt9IH0pKTtcbiAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IHsgZW51bWVyYXRlOiAnPC9vbD4nLCBpdGVtaXplOiAnPC91bD4nIH1bbm9kZS5lbnZdO1xuICAgIH1cbiAgICBjb252ZXJ0X2Jsb2NrKG5vZGUpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmZpZWxkLnRleHQubGVuZ3RoO1xuICAgICAgICBsZXQgcHJlZml4ID0gJyc7XG4gICAgICAgIGxldCBwb3N0Zml4ID0gJyc7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FzZVByb3RlY3Rpb24gIT09ICdzdHJpY3QnICYmIHRoaXMuY2xlYW5pbmcudHlwZSA9PT0gJ290aGVyJylcbiAgICAgICAgICAgIGRlbGV0ZSBub2RlLmNhc2U7XG4gICAgICAgIGlmICh0aGlzLmNsZWFuaW5nLnR5cGUgPT09ICdjcmVhdG9yJyAmJiBub2RlLmNhc2UgPT09ICdwcm90ZWN0Jykge1xuICAgICAgICAgICAgcHJlZml4ICs9IG1hcmtlci5saXRlcmFsO1xuICAgICAgICAgICAgcG9zdGZpeCA9IG1hcmtlci5saXRlcmFsICsgcG9zdGZpeDtcbiAgICAgICAgICAgIGRlbGV0ZSBub2RlLmNhc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnKSB7XG4gICAgICAgICAgICBwcmVmaXggKz0gdGhpcy5vcHRpb25zLm1hcmt1cC5jYXNlUHJvdGVjdC5vcGVuO1xuICAgICAgICAgICAgcG9zdGZpeCA9IHRoaXMub3B0aW9ucy5tYXJrdXAuY2FzZVByb3RlY3QuY2xvc2UgKyBwb3N0Zml4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFya3VwIG9mIE9iamVjdC5rZXlzKG5vZGUubWFya3VwKSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLm1hcmt1cFttYXJrdXBdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihuZXcgUGFyc2VyRXJyb3IoYG1hcmt1cDogJHttYXJrdXB9YCwgbm9kZSksIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgcHJlZml4ICs9IHRoaXMub3B0aW9ucy5tYXJrdXBbbWFya3VwXS5vcGVuO1xuICAgICAgICAgICAgICAgIHBvc3RmaXggPSB0aGlzLm9wdGlvbnMubWFya3VwW21hcmt1cF0uY2xvc2UgKyBwb3N0Zml4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZCA9IHtcbiAgICAgICAgICAgIHdpdGhvdXRQcmVmaXg6IHRoaXMuZmllbGQudGV4dC5sZW5ndGgsXG4gICAgICAgICAgICB3aXRoUHJlZml4OiB0aGlzLmZpZWxkLnRleHQubGVuZ3RoICsgcHJlZml4Lmxlbmd0aCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IHByZWZpeDtcbiAgICAgICAgdGhpcy5maWVsZC5sZXZlbCsrO1xuICAgICAgICB0aGlzLmNvbnZlcnQobm9kZS52YWx1ZSk7XG4gICAgICAgIHRoaXMuZmllbGQubGV2ZWwtLTtcbiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLmZpZWxkLnRleHQuc3Vic3RyaW5nKGVuZC53aXRoUHJlZml4KTtcbiAgICAgICAgY29uc3QgYWRkZWRfdGV4dCA9IGFkZGVkLnJlcGxhY2UoLzxcXC8/W14+XSs+L2csICcnKTtcbiAgICAgICAgY29uc3QgbmVlZHNQcm90ZWN0aW9uID0gYWRkZWRfdGV4dCAmJiAoKHRoaXMub3B0aW9ucy5jYXNlUHJvdGVjdGlvbiA9PT0gJ3N0cmljdCcgJiYgYWRkZWRfdGV4dC5tYXRjaChwcmVzZXJ2ZUNhc2UuaXNDYXNlU2Vuc2l0aXZlKSlcbiAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMub3B0aW9ucy5jYXNlUHJvdGVjdGlvbiA9PT0gJ2FzLW5lZWRlZCcgJiYgYWRkZWRfdGV4dC5zcGxpdCgvXFxzKy8pLmZpbmQod29yZCA9PiB0aGlzLm5lZWRzUHJvdGVjdGlvbih3b3JkKSkpKTtcbiAgICAgICAgaWYgKCFhZGRlZCkgeyAvLyBub3RoaW5nIHdhcyBhZGRlZCwgc28gcmVtb3ZlIHByZWZpeFxuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ID0gdGhpcy5maWVsZC50ZXh0LnN1YnN0cmluZygwLCBlbmQud2l0aG91dFByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcyAmJiBwcmVmaXggPT09IHRoaXMub3B0aW9ucy5tYXJrdXAuY2FzZVByb3RlY3Qub3BlbiAmJiAhbmVlZHNQcm90ZWN0aW9uKSB7XG4gICAgICAgICAgICAvLyBzb21ldGhpbmcgd2FzIGFkZGVkIHRoYXQgZGlkbid0IGFjdHVhbGx5IG5lZWQgY2FzZSBwcm90ZWN0aW9uXG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQuc3Vic3RyaW5nKDAsIGVuZC53aXRob3V0UHJlZml4KSArIGFkZGVkO1xuICAgICAgICAgICAgdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcyA9IHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMuZmlsdGVyKHJhbmdlID0+IHJhbmdlLnN0YXJ0IDwgZW5kLndpdGhvdXRQcmVmaXgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IHBvc3RmaXg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWVsZC50ZXh0ID0gdGhpcy5maWVsZC50ZXh0LnJlcGxhY2UoLzwoc3VwfHN1Yik+KFtePD5dKyk8XFwvXFwxPiQvaSwgKG0sIG1vZGUsIGNoYXJzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbWQgPSBtb2RlID09PSAnc3VwJyA/ICdeJyA6ICdfJztcbiAgICAgICAgICAgIGxldCBzY3JpcHQgPSAnJztcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjaGFycykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7Y21kfSR7Y2hhcn1gXSB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7Y21kfXske2NoYXJ9fWBdO1xuICAgICAgICAgICAgICAgIHNjcmlwdCArPSB1bmljb2RlID8gdW5pY29kZSA6IGA8JHttb2RlfT4ke2NoYXJ9PC8ke21vZGV9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY3JpcHQgPSBzY3JpcHQucmVwbGFjZShuZXcgUmVnRXhwKGA8LyR7bW9kZX0+PCR7bW9kZX0+YCwgJ2cnKSwgJycpO1xuICAgICAgICAgICAgcmV0dXJuIHNjcmlwdC5sZW5ndGggPCBtLmxlbmd0aCA/IHNjcmlwdCA6IG07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobm9kZS5jYXNlICYmIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpXG4gICAgICAgICAgICB0aGlzLnByZXNlcnZlKHN0YXJ0LCB0aGlzLmZpZWxkLnRleHQubGVuZ3RoKTsgLy8gLCAnaW4gY29udmVydC1ibG9jayAnICsgbm9kZS5zb3VyY2UgfHwgJzxzb3VyY2U+JylcbiAgICB9XG59XG4vKipcbiAqIHBhcnNlIGJpYnRleC4gVGhpcyB3aWxsIHRyeSB0byBjb252ZXJ0IFRlWCBjb21tYW5kcyBpbnRvIHVuaWNvZGUgZXF1aXZhbGVudHMsIGFuZCBhcHBseSBgQHN0cmluZ2AgZXhwYW5zaW9uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKG9wdGlvbnMpO1xuICAgIHJldHVybiBwYXJzZXIucGFyc2UoaW5wdXQpO1xufVxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuZnVuY3Rpb24gYXN0KGlucHV0LCBvcHRpb25zID0ge30sIGNsZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIob3B0aW9ucyk7XG4gICAgcmV0dXJuIHBhcnNlci5hc3QoaW5wdXQsIGNsZWFuKTtcbn1cbmV4cG9ydHMuYXN0ID0gYXN0O1xudmFyIGNodW5rZXJfMiA9IHJlcXVpcmUoXCIuL2NodW5rZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjaHVua2VyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjaHVua2VyXzIucGFyc2U7IH0gfSk7XG52YXIgamFicmVmXzEgPSByZXF1aXJlKFwiLi9qYWJyZWZcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJqYWJyZWZcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGphYnJlZl8xLnBhcnNlOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0ICogYXMgQmliVGVYUGFyc2VyIGZyb20gJ0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXInO1xuaW1wb3J0IHsgRW50cnkgYXMgRW50cnlEYXRhQmliTGFUZVggfSBmcm9tICdAcmV0b3JxdWVyZS9iaWJ0ZXgtcGFyc2VyJztcbi8vIEFsc28gbWFrZSBFbnRyeURhdGFCaWJMYVRlWCBhdmFpbGFibGUgdG8gb3RoZXIgbW9kdWxlc1xuZXhwb3J0IHsgRW50cnkgYXMgRW50cnlEYXRhQmliTGFUZVggfSBmcm9tICdAcmV0b3JxdWVyZS9iaWJ0ZXgtcGFyc2VyJztcblxuLy8gVHJpY2s6IGFsbG93IHN0cmluZyBpbmRleGluZyBvbnRvIG9iamVjdCBwcm9wZXJ0aWVzXG5leHBvcnQgaW50ZXJmYWNlIElJbmRleGFibGUge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmNvbnN0IGRhdGFiYXNlVHlwZXMgPSBbJ2NzbC1qc29uJywgJ2JpYmxhdGV4J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBEYXRhYmFzZVR5cGUgPSB0eXBlb2YgZGF0YWJhc2VUeXBlc1tudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgVEVNUExBVEVfVkFSSUFCTEVTID0ge1xuICBjaXRla2V5OiAnVW5pcXVlIGNpdGVrZXknLFxuICBhYnN0cmFjdDogJycsXG4gIGF1dGhvclN0cmluZzogJ0NvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGF1dGhvciBuYW1lcycsXG4gIGNvbnRhaW5lclRpdGxlOlxuICAgICdUaXRsZSBvZiB0aGUgY29udGFpbmVyIGhvbGRpbmcgdGhlIHJlZmVyZW5jZSAoZS5nLiBib29rIHRpdGxlIGZvciBhIGJvb2sgY2hhcHRlciwgb3IgdGhlIGpvdXJuYWwgdGl0bGUgZm9yIGEgam91cm5hbCBhcnRpY2xlKScsXG4gIERPSTogJycsXG4gIGVwcmludDogJycsXG4gIGVwcmludHR5cGU6ICcnLFxuICBldmVudFBsYWNlOiAnTG9jYXRpb24gb2YgZXZlbnQnLFxuICBub3RlOiAnJyxcbiAgcGFnZTogJ1BhZ2Ugb3IgcGFnZSByYW5nZScsXG4gIHB1Ymxpc2hlcjogJycsXG4gIHB1Ymxpc2hlclBsYWNlOiAnTG9jYXRpb24gb2YgcHVibGlzaGVyJyxcbiAgdGl0bGU6ICcnLFxuICB0aXRsZVNob3J0OiAnJyxcbiAgVVJMOiAnJyxcbiAgeWVhcjogJ1B1YmxpY2F0aW9uIHllYXInLFxuICB6b3Rlcm9TZWxlY3RVUkk6ICdVUkkgdG8gb3BlbiB0aGUgcmVmZXJlbmNlIGluIFpvdGVybycsXG59O1xuXG5leHBvcnQgY2xhc3MgTGlicmFyeSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnRyaWVzOiB7IFtjaXRla2V5OiBzdHJpbmddOiBFbnRyeSB9KSB7fVxuXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZW50cmllcykubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciB0aGUgZ2l2ZW4gY2l0ZWtleSwgZmluZCB0aGUgY29ycmVzcG9uZGluZyBgRW50cnlgIGFuZCByZXR1cm4gYVxuICAgKiBjb2xsZWN0aW9uIG9mIHRlbXBsYXRlIHZhcmlhYmxlIGFzc2lnbm1lbnRzLlxuICAgKi9cbiAgZ2V0VGVtcGxhdGVWYXJpYWJsZXNGb3JDaXRla2V5KGNpdGVrZXk6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IGVudHJ5OiBFbnRyeSA9IHRoaXMuZW50cmllc1tjaXRla2V5XTtcbiAgICBjb25zdCBzaG9ydGN1dHMgPSB7XG4gICAgICBjaXRla2V5OiBjaXRla2V5LFxuXG4gICAgICBhYnN0cmFjdDogZW50cnkuYWJzdHJhY3QsXG4gICAgICBhdXRob3JTdHJpbmc6IGVudHJ5LmF1dGhvclN0cmluZyxcbiAgICAgIGNvbnRhaW5lclRpdGxlOiBlbnRyeS5jb250YWluZXJUaXRsZSxcbiAgICAgIERPSTogZW50cnkuRE9JLFxuICAgICAgZXByaW50OiBlbnRyeS5lcHJpbnQsXG4gICAgICBlcHJpbnR0eXBlOiBlbnRyeS5lcHJpbnR0eXBlLFxuICAgICAgZXZlbnRQbGFjZTogZW50cnkuZXZlbnRQbGFjZSxcbiAgICAgIG5vdGU6IGVudHJ5Lm5vdGUsXG4gICAgICBwYWdlOiBlbnRyeS5wYWdlLFxuICAgICAgcHVibGlzaGVyOiBlbnRyeS5wdWJsaXNoZXIsXG4gICAgICBwdWJsaXNoZXJQbGFjZTogZW50cnkucHVibGlzaGVyUGxhY2UsXG4gICAgICB0aXRsZTogZW50cnkudGl0bGUsXG4gICAgICB0aXRsZVNob3J0OiBlbnRyeS50aXRsZVNob3J0LFxuICAgICAgVVJMOiBlbnRyeS5VUkwsXG4gICAgICB5ZWFyOiBlbnRyeS55ZWFyPy50b1N0cmluZygpLFxuICAgICAgem90ZXJvU2VsZWN0VVJJOiBlbnRyeS56b3Rlcm9TZWxlY3RVUkksXG4gICAgfTtcblxuICAgIHJldHVybiB7IGVudHJ5OiBlbnRyeS50b0pTT04oKSwgLi4uc2hvcnRjdXRzIH07XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIHJlZmVyZW5jZSBlbnRyaWVzIGZyb20gdGhlIGdpdmVuIHJhdyBkYXRhYmFzZSBkYXRhLlxuICpcbiAqIFJldHVybnMgYSBsaXN0IG9mIGBFbnRyeURhdGFgLCB3aGljaCBzaG91bGQgYmUgd3JhcHBlZCB3aXRoIHRoZSByZWxldmFudFxuICogYWRhcHRlciBhbmQgdXNlZCB0byBpbnN0YW50aWF0ZSBhIGBMaWJyYXJ5YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRFbnRyaWVzKFxuICBkYXRhYmFzZVJhdzogc3RyaW5nLFxuICBkYXRhYmFzZVR5cGU6IERhdGFiYXNlVHlwZSxcbik6IEVudHJ5RGF0YVtdIHtcbiAgbGV0IGxpYnJhcnlBcnJheTogRW50cnlEYXRhW107XG5cbiAgaWYgKGRhdGFiYXNlVHlwZSA9PSAnY3NsLWpzb24nKSB7XG4gICAgbGlicmFyeUFycmF5ID0gSlNPTi5wYXJzZShkYXRhYmFzZVJhdyk7XG4gIH0gZWxzZSBpZiAoZGF0YWJhc2VUeXBlID09ICdiaWJsYXRleCcpIHtcbiAgICBjb25zdCBvcHRpb25zOiBCaWJUZVhQYXJzZXIuUGFyc2VyT3B0aW9ucyA9IHtcbiAgICAgIGVycm9ySGFuZGxlcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ0NpdGF0aW9uIHBsdWdpbjogbm9uLWZhdGFsIGVycm9yIGxvYWRpbmcgQmliTGFUZVggZW50cnk6JyxcbiAgICAgICAgICBlcnIsXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBwYXJzZWQgPSBCaWJUZVhQYXJzZXIucGFyc2UoXG4gICAgICBkYXRhYmFzZVJhdyxcbiAgICAgIG9wdGlvbnMsXG4gICAgKSBhcyBCaWJUZVhQYXJzZXIuQmlibGlvZ3JhcGh5O1xuXG4gICAgcGFyc2VkLmVycm9ycy5mb3JFYWNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYENpdGF0aW9uIHBsdWdpbjogZmF0YWwgZXJyb3IgbG9hZGluZyBCaWJMYVRlWCBlbnRyeWAgK1xuICAgICAgICAgIGAgKGxpbmUgJHtlcnJvci5saW5lfSwgY29sdW1uICR7ZXJyb3IuY29sdW1ufSk6YCxcbiAgICAgICAgZXJyb3IubWVzc2FnZSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBsaWJyYXJ5QXJyYXkgPSBwYXJzZWQuZW50cmllcztcbiAgfVxuXG4gIHJldHVybiBsaWJyYXJ5QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yIHtcbiAgZ2l2ZW4/OiBzdHJpbmc7XG4gIGZhbWlseT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBgRW50cnlgIHJlcHJlc2VudHMgYSBzaW5nbGUgcmVmZXJlbmNlIGluIGEgcmVmZXJlbmNlIGRhdGFiYXNlLlxuICogRWFjaCBlbnRyeSBoYXMgYSB1bmlxdWUgaWRlbnRpZmllciwga25vd24gaW4gbW9zdCByZWZlcmVuY2UgbWFuYWdlcnMgYXMgaXRzXG4gKiBcImNpdGVrZXkuXCJcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudHJ5IHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZW50cnkgKGFsc28gdGhlIGNpdGVrZXkpLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlkOiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IHR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgYWJzdHJhY3QgYWJzdHJhY3Q/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBhdXRob3I/OiBBdXRob3JbXTtcblxuICAvKipcbiAgICogQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhdXRob3JzLCBlYWNoIG9mIHRoZSBmb3JtYXQgYDxmaXJzdG5hbWU+IDxsYXN0bmFtZT5gLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGF1dGhvclN0cmluZz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhpcyByZWZlcmVuY2UgLS0gaW4gdGhlIGNhc2Ugb2YgYSBib29rXG4gICAqIGNoYXB0ZXIgcmVmZXJlbmNlLCB0aGUgbmFtZSBvZiB0aGUgYm9vazsgaW4gdGhlIGNhc2Ugb2YgYSBqb3VybmFsIGFydGljbGUsXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBqb3VybmFsLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNvbnRhaW5lclRpdGxlPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBET0k/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBmaWxlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBvZiBpc3N1ZS4gTWFueSByZWZlcmVuY2VzIGRvIG5vdCBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IG1vbnRoXG4gICAqIGFuZCBkYXkgb2YgaXNzdWU7IGluIHRoaXMgY2FzZSwgdGhlIGBpc3N1ZWREYXRlYCB3aWxsIGNvbnRhaW4gZHVtbXkgbWluaW11bVxuICAgKiB2YWx1ZXMgZm9yIHRob3NlIGVsZW1lbnRzLiAoQSByZWZlcmVuY2Ugd2hpY2ggaXMgb25seSBlbmNvZGVkIGFzIGJlaW5nXG4gICAqIGlzc3VlZCBpbiAyMDAxIGlzIHJlcHJlc2VudGVkIGhlcmUgd2l0aCBhIGRhdGUgMjAwMS0wMS0wMSAwMDowMDowMCBVVEMuKVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzc3VlZERhdGU/OiBEYXRlO1xuXG4gIC8qKlxuICAgKiBQYWdlIG9yIHBhZ2UgcmFuZ2Ugb2YgdGhlIHJlZmVyZW5jZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwYWdlPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgdGl0bGU/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCB0aXRsZVNob3J0Pzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgVVJMPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBldmVudFBsYWNlPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBwdWJsaXNoZXI/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBwdWJsaXNoZXJQbGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogQmliTGFUZVgtc3BlY2lmaWMgcHJvcGVydGllc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGVwcmludD86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IGVwcmludHR5cGU/OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIF95ZWFyPzogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5feWVhclxuICAgICAgPyBwYXJzZUludCh0aGlzLl95ZWFyKVxuICAgICAgOiB0aGlzLmlzc3VlZERhdGU/LmdldFVUQ0Z1bGxZZWFyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX25vdGU/OiBzdHJpbmdbXTtcblxuICBwdWJsaWMgZ2V0IG5vdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbm90ZVxuICAgICAgPy5tYXAoKGVsKSA9PiBlbC5yZXBsYWNlKC8oem90ZXJvOlxcL1xcLy4rKS9nLCAnW0xpbmtdKCQxKScpKVxuICAgICAgLmpvaW4oJ1xcblxcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgVVJJIHdoaWNoIHdpbGwgb3BlbiB0aGUgcmVsZXZhbnQgZW50cnkgaW4gdGhlIFpvdGVybyBjbGllbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHpvdGVyb1NlbGVjdFVSSSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgem90ZXJvOi8vc2VsZWN0L2l0ZW1zL0Ake3RoaXMuaWR9YDtcbiAgfVxuXG4gIHRvSlNPTigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QganNvbk9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzKTtcblxuICAgIC8vIGFkZCBnZXR0ZXIgdmFsdWVzXG4gICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7XG4gICAgT2JqZWN0LmVudHJpZXMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocHJvdG8pKVxuICAgICAgLmZpbHRlcigoWywgZGVzY3JpcHRvcl0pID0+IHR5cGVvZiBkZXNjcmlwdG9yLmdldCA9PSAnZnVuY3Rpb24nKVxuICAgICAgLmZvckVhY2goKFtrZXksIGRlc2NyaXB0b3JdKSA9PiB7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yICYmIGtleVswXSAhPT0gJ18nKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9ICh0aGlzIGFzIElJbmRleGFibGUpW2tleV07XG4gICAgICAgICAgICBqc29uT2JqW2tleV0gPSB2YWw7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGpzb25PYmo7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRW50cnlEYXRhID0gRW50cnlEYXRhQ1NMIHwgRW50cnlEYXRhQmliTGFUZVg7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50cnlEYXRhQ1NMIHtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuXG4gIGFic3RyYWN0Pzogc3RyaW5nO1xuICBhdXRob3I/OiBBdXRob3JbXTtcbiAgJ2NvbnRhaW5lci10aXRsZSc/OiBzdHJpbmc7XG4gIERPST86IHN0cmluZztcbiAgJ2V2ZW50LXBsYWNlJz86IHN0cmluZztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgaXNzdWVkPzogeyAnZGF0ZS1wYXJ0cyc6IFthbnlbXV0gfTtcbiAgcGFnZT86IHN0cmluZztcbiAgcHVibGlzaGVyPzogc3RyaW5nO1xuICAncHVibGlzaGVyLXBsYWNlJz86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gICd0aXRsZS1zaG9ydCc/OiBzdHJpbmc7XG4gIFVSTD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVudHJ5Q1NMQWRhcHRlciBleHRlbmRzIEVudHJ5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhOiBFbnRyeURhdGFDU0wpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXByaW50OiBzdHJpbmcgPSBudWxsO1xuICBlcHJpbnR0eXBlOiBzdHJpbmcgPSBudWxsO1xuICBmaWxlczogc3RyaW5nW10gPSBudWxsO1xuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmlkO1xuICB9XG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEudHlwZTtcbiAgfVxuXG4gIGdldCBhYnN0cmFjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmFic3RyYWN0O1xuICB9XG4gIGdldCBhdXRob3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5hdXRob3I7XG4gIH1cblxuICBnZXQgYXV0aG9yU3RyaW5nKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmRhdGEuYXV0aG9yXG4gICAgICA/IHRoaXMuZGF0YS5hdXRob3IubWFwKChhKSA9PiBgJHthLmdpdmVufSAke2EuZmFtaWx5fWApLmpvaW4oJywgJylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGdldCBjb250YWluZXJUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhWydjb250YWluZXItdGl0bGUnXTtcbiAgfVxuXG4gIGdldCBET0koKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5ET0k7XG4gIH1cblxuICBnZXQgZXZlbnRQbGFjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhWydldmVudC1wbGFjZSddO1xuICB9XG5cbiAgZ2V0IGlzc3VlZERhdGUoKSB7XG4gICAgaWYgKFxuICAgICAgIShcbiAgICAgICAgdGhpcy5kYXRhLmlzc3VlZCAmJlxuICAgICAgICB0aGlzLmRhdGEuaXNzdWVkWydkYXRlLXBhcnRzJ10gJiZcbiAgICAgICAgdGhpcy5kYXRhLmlzc3VlZFsnZGF0ZS1wYXJ0cyddWzBdLmxlbmd0aCA+IDBcbiAgICAgIClcbiAgICApXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IFt5ZWFyLCBtb250aCwgZGF5XSA9IHRoaXMuZGF0YS5pc3N1ZWRbJ2RhdGUtcGFydHMnXVswXTtcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgKG1vbnRoIHx8IDEpIC0gMSwgZGF5IHx8IDEpKTtcbiAgfVxuXG4gIGdldCBwYWdlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEucGFnZTtcbiAgfVxuXG4gIGdldCBwdWJsaXNoZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5wdWJsaXNoZXI7XG4gIH1cblxuICBnZXQgcHVibGlzaGVyUGxhY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVsncHVibGlzaGVyLXBsYWNlJ107XG4gIH1cblxuICBnZXQgdGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50aXRsZTtcbiAgfVxuXG4gIGdldCB0aXRsZVNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbJ3RpdGxlLXNob3J0J107XG4gIH1cblxuICBnZXQgVVJMKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEuVVJMO1xuICB9XG59XG5cbmNvbnN0IEJJQkxBVEVYX1BST1BFUlRZX01BUFBJTkc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGFic3RyYWN0OiAnYWJzdHJhY3QnLFxuICBib29rdGl0bGU6ICdfY29udGFpbmVyVGl0bGUnLFxuICBkYXRlOiAnaXNzdWVkJyxcbiAgZG9pOiAnRE9JJyxcbiAgZXByaW50OiAnZXByaW50JyxcbiAgZXByaW50dHlwZTogJ2VwcmludHR5cGUnLFxuICBldmVudHRpdGxlOiAnZXZlbnQnLFxuICBqb3VybmFsOiAnX2NvbnRhaW5lclRpdGxlJyxcbiAgam91cm5hbHRpdGxlOiAnX2NvbnRhaW5lclRpdGxlJyxcbiAgbG9jYXRpb246ICdwdWJsaXNoZXJQbGFjZScsXG4gIHBhZ2VzOiAncGFnZScsXG4gIHNob3J0am91cm5hbDogJ2NvbnRhaW5lclRpdGxlU2hvcnQnLFxuICB0aXRsZTogJ3RpdGxlJyxcbiAgc2hvcnR0aXRsZTogJ3RpdGxlU2hvcnQnLFxuICB1cmw6ICdVUkwnLFxuICB2ZW51ZTogJ2V2ZW50UGxhY2UnLFxuICB5ZWFyOiAnX3llYXInLFxuICBwdWJsaXNoZXI6ICdwdWJsaXNoZXInLFxuICBub3RlOiAnX25vdGUnLFxufTtcblxuLy8gQmliTGFUZVggcGFyc2VyIHJldHVybnMgYXJyYXlzIG9mIHByb3BlcnR5IHZhbHVlcyAoYWxsb3dpbmcgZm9yIHJlcGVhdGVkXG4vLyBwcm9wZXJ0eSBlbnRyaWVzKS4gRm9yIHRoZSBmb2xsb3dpbmcgZmllbGRzLCBqdXN0IGJsaW5kbHkgdGFrZSB0aGUgZmlyc3QuXG5jb25zdCBCSUJMQVRFWF9QUk9QRVJUWV9UQUtFX0ZJUlNUOiBzdHJpbmdbXSA9IFtcbiAgJ2Fic3RyYWN0JyxcbiAgJ2Jvb2t0aXRsZScsXG4gICdfY29udGFpbmVyVGl0bGUnLFxuICAnZGF0ZScsXG4gICdkb2knLFxuICAnZXByaW50JyxcbiAgJ2VwcmludHR5cGUnLFxuICAnZXZlbnR0aXRsZScsXG4gICdqb3VybmFsdGl0bGUnLFxuICAnbG9jYXRpb24nLFxuICAncGFnZXMnLFxuICAnc2hvcnRqb3VybmFsJyxcbiAgJ3RpdGxlJyxcbiAgJ3Nob3J0dGl0bGUnLFxuICAndXJsJyxcbiAgJ3ZlbnVlJyxcbiAgJ195ZWFyJyxcbiAgJ3B1Ymxpc2hlcicsXG5dO1xuXG5leHBvcnQgY2xhc3MgRW50cnlCaWJMYVRlWEFkYXB0ZXIgZXh0ZW5kcyBFbnRyeSB7XG4gIGFic3RyYWN0Pzogc3RyaW5nO1xuICBfY29udGFpbmVyVGl0bGU/OiBzdHJpbmc7XG4gIGNvbnRhaW5lclRpdGxlU2hvcnQ/OiBzdHJpbmc7XG4gIERPST86IHN0cmluZztcbiAgZXByaW50Pzogc3RyaW5nO1xuICBlcHJpbnR0eXBlPzogc3RyaW5nO1xuICBldmVudD86IHN0cmluZztcbiAgZXZlbnRQbGFjZT86IHN0cmluZztcbiAgaXNzdWVkPzogc3RyaW5nO1xuICBwYWdlPzogc3RyaW5nO1xuICBwdWJsaXNoZXI/OiBzdHJpbmc7XG4gIHB1Ymxpc2hlclBsYWNlPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgdGl0bGVTaG9ydD86IHN0cmluZztcbiAgVVJMPzogc3RyaW5nO1xuICBfeWVhcj86IHN0cmluZztcbiAgX25vdGU/OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IEVudHJ5RGF0YUJpYkxhVGVYKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIE9iamVjdC5lbnRyaWVzKEJJQkxBVEVYX1BST1BFUlRZX01BUFBJTkcpLmZvckVhY2goXG4gICAgICAobWFwOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzcmMsIHRndF0gPSBtYXA7XG4gICAgICAgIGlmIChzcmMgaW4gdGhpcy5kYXRhLmZpZWxkcykge1xuICAgICAgICAgIGxldCB2YWwgPSB0aGlzLmRhdGEuZmllbGRzW3NyY107XG4gICAgICAgICAgaWYgKEJJQkxBVEVYX1BST1BFUlRZX1RBS0VfRklSU1QuaW5jbHVkZXMoc3JjKSkge1xuICAgICAgICAgICAgdmFsID0gKHZhbCBhcyBhbnlbXSlbMF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgKHRoaXMgYXMgSUluZGV4YWJsZSlbdGd0XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEua2V5O1xuICB9XG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEudHlwZTtcbiAgfVxuXG4gIGdldCBmaWxlcygpOiBzdHJpbmdbXSB7XG4gICAgLy8gRm9yIHNvbWUgcmVhc29uIHRoZSBiaWJ0ZXggcGFyc2VyIGRvZXNuJ3QgcmVsaWFibHkgcGFyc2UgZmlsZSBsaXN0IHRvXG4gICAgLy8gYXJyYXkgOyBzbyB3ZSdsbCBkbyBpdCBtYW51YWxseSAvIHJlZHVuZGFudGx5XG4gICAgbGV0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5kYXRhLmZpZWxkcy5maWxlKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KHRoaXMuZGF0YS5maWVsZHMuZmlsZS5mbGF0TWFwKCh4KSA9PiB4LnNwbGl0KCc7JykpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YS5maWVsZHMuZmlsZXMpIHtcbiAgICAgIHJldCA9IHJldC5jb25jYXQodGhpcy5kYXRhLmZpZWxkcy5maWxlcy5mbGF0TWFwKCh4KSA9PiB4LnNwbGl0KCc7JykpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgZ2V0IGF1dGhvclN0cmluZygpIHtcbiAgICBpZiAodGhpcy5kYXRhLmNyZWF0b3JzLmF1dGhvcikge1xuICAgICAgY29uc3QgbmFtZXMgPSB0aGlzLmRhdGEuY3JlYXRvcnMuYXV0aG9yLm1hcCgobmFtZSkgPT4ge1xuICAgICAgICBpZiAobmFtZS5saXRlcmFsKSByZXR1cm4gbmFtZS5saXRlcmFsO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IFtuYW1lLmZpcnN0TmFtZSwgbmFtZS5wcmVmaXgsIG5hbWUubGFzdE5hbWUsIG5hbWUuc3VmZml4XTtcbiAgICAgICAgLy8gRHJvcCBhbnkgbnVsbCBwYXJ0cyBhbmQgam9pblxuICAgICAgICByZXR1cm4gcGFydHMuZmlsdGVyKCh4KSA9PiB4KS5qb2luKCcgJyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuYW1lcy5qb2luKCcsICcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhLmZpZWxkcy5hdXRob3I/LmpvaW4oJywgJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbnRhaW5lclRpdGxlKCkge1xuICAgIGlmICh0aGlzLl9jb250YWluZXJUaXRsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lclRpdGxlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLmZpZWxkcy5lcHJpbnQpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZGF0YS5maWVsZHMuZXByaW50dHlwZVxuICAgICAgICA/IGAke3RoaXMuZGF0YS5maWVsZHMuZXByaW50dHlwZX06YFxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5kYXRhLmZpZWxkcy5wcmltYXJ5Y2xhc3NcbiAgICAgICAgPyBgIFske3RoaXMuZGF0YS5maWVsZHMucHJpbWFyeWNsYXNzfV1gXG4gICAgICAgIDogJyc7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fSR7dGhpcy5kYXRhLmZpZWxkcy5lcHJpbnR9JHtzdWZmaXh9YDtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNzdWVkRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc3N1ZWQgPyBuZXcgRGF0ZSh0aGlzLmlzc3VlZCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGF1dGhvcigpOiBBdXRob3JbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5jcmVhdG9ycy5hdXRob3I/Lm1hcCgoYSkgPT4gKHtcbiAgICAgIGdpdmVuOiBhLmZpcnN0TmFtZSxcbiAgICAgIGZhbWlseTogYS5sYXN0TmFtZSxcbiAgICB9KSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFic3RyYWN0VGV4dENvbXBvbmVudCxcbiAgQXBwLFxuICBEcm9wZG93bkNvbXBvbmVudCxcbiAgRmlsZVN5c3RlbUFkYXB0ZXIsXG4gIFBsdWdpblNldHRpbmdUYWIsXG4gIFNldHRpbmcsXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IENpdGF0aW9uUGx1Z2luIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBJSW5kZXhhYmxlLCBEYXRhYmFzZVR5cGUsIFRFTVBMQVRFX1ZBUklBQkxFUyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBDSVRBVElPTl9EQVRBQkFTRV9GT1JNQVRfTEFCRUxTOiBSZWNvcmQ8RGF0YWJhc2VUeXBlLCBzdHJpbmc+ID0ge1xuICAnY3NsLWpzb24nOiAnQ1NMLUpTT04nLFxuICBiaWJsYXRleDogJ0JpYkxhVGVYJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBDaXRhdGlvbnNQbHVnaW5TZXR0aW5ncyB7XG4gIHB1YmxpYyBjaXRhdGlvbkV4cG9ydFBhdGg6IHN0cmluZztcbiAgY2l0YXRpb25FeHBvcnRGb3JtYXQ6IERhdGFiYXNlVHlwZSA9ICdjc2wtanNvbic7XG5cbiAgbGl0ZXJhdHVyZU5vdGVUaXRsZVRlbXBsYXRlID0gJ0B7e2NpdGVrZXl9fSc7XG4gIGxpdGVyYXR1cmVOb3RlRm9sZGVyID0gJ1JlYWRpbmcgbm90ZXMnO1xuICBsaXRlcmF0dXJlTm90ZUNvbnRlbnRUZW1wbGF0ZTogc3RyaW5nID1cbiAgICAnLS0tXFxuJyArXG4gICAgJ3RpdGxlOiB7e3RpdGxlfX1cXG4nICtcbiAgICAnYXV0aG9yczoge3thdXRob3JTdHJpbmd9fVxcbicgK1xuICAgICd5ZWFyOiB7e3llYXJ9fVxcbicgK1xuICAgICctLS1cXG5cXG4nO1xuXG4gIG1hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZSA9ICdbQHt7Y2l0ZWtleX19XSc7XG4gIGFsdGVybmF0aXZlTWFya2Rvd25DaXRhdGlvblRlbXBsYXRlID0gJ0B7e2NpdGVrZXl9fSc7XG59XG5cbmV4cG9ydCBjbGFzcyBDaXRhdGlvblNldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcHJpdmF0ZSBwbHVnaW46IENpdGF0aW9uUGx1Z2luO1xuXG4gIGNpdGF0aW9uUGF0aExvYWRpbmdFbDogSFRNTEVsZW1lbnQ7XG4gIGNpdGF0aW9uUGF0aEVycm9yRWw6IEhUTUxFbGVtZW50O1xuICBjaXRhdGlvblBhdGhTdWNjZXNzRWw6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IENpdGF0aW9uUGx1Z2luKSB7XG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBzdXBlci5vcGVuKCk7XG4gICAgdGhpcy5jaGVja0NpdGF0aW9uRXhwb3J0UGF0aChcbiAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNpdGF0aW9uRXhwb3J0UGF0aCxcbiAgICApLnRoZW4oKCkgPT4gdGhpcy5zaG93Q2l0YXRpb25FeHBvcnRQYXRoU3VjY2VzcygpKTtcbiAgfVxuXG4gIGFkZFZhbHVlQ2hhbmdlQ2FsbGJhY2s8VCBleHRlbmRzIEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50PihcbiAgICBjb21wb25lbnQ6IEFic3RyYWN0VGV4dENvbXBvbmVudDxUPiB8IERyb3Bkb3duQ29tcG9uZW50LFxuICAgIHNldHRpbmdzS2V5OiBzdHJpbmcsXG4gICAgY2I/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgY29tcG9uZW50Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgKHRoaXMucGx1Z2luLnNldHRpbmdzIGFzIElJbmRleGFibGUpW3NldHRpbmdzS2V5XSA9IHZhbHVlO1xuICAgICAgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGlmIChjYikge1xuICAgICAgICAgIGNiKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBidWlsZFZhbHVlSW5wdXQ8VCBleHRlbmRzIEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50PihcbiAgICBjb21wb25lbnQ6IEFic3RyYWN0VGV4dENvbXBvbmVudDxUPiB8IERyb3Bkb3duQ29tcG9uZW50LFxuICAgIHNldHRpbmdzS2V5OiBzdHJpbmcsXG4gICAgY2I/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgY29tcG9uZW50LnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncyBhcyBJSW5kZXhhYmxlKVtzZXR0aW5nc0tleV0pO1xuICAgIHRoaXMuYWRkVmFsdWVDaGFuZ2VDYWxsYmFjayhjb21wb25lbnQsIHNldHRpbmdzS2V5LCBjYik7XG4gIH1cblxuICBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuICAgIGNvbnRhaW5lckVsLnNldEF0dHIoJ2lkJywgJ3pvdGVyb1NldHRpbmdUYWInKTtcblxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ0NpdGF0aW9uIHBsdWdpbiBzZXR0aW5ncycgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdDaXRhdGlvbiBkYXRhYmFzZSBmb3JtYXQnKVxuICAgICAgLmFkZERyb3Bkb3duKChjb21wb25lbnQpID0+XG4gICAgICAgIHRoaXMuYnVpbGRWYWx1ZUlucHV0KFxuICAgICAgICAgIGNvbXBvbmVudC5hZGRPcHRpb25zKENJVEFUSU9OX0RBVEFCQVNFX0ZPUk1BVF9MQUJFTFMpLFxuICAgICAgICAgICdjaXRhdGlvbkV4cG9ydEZvcm1hdCcsXG4gICAgICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrQ2l0YXRpb25FeHBvcnRQYXRoKFxuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydFBhdGgsXG4gICAgICAgICAgICApLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNpdGF0aW9uUGF0aFN1Y2Nlc3NFbC5hZGRDbGFzcygnZC1ub25lJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaXRhdGlvblBhdGhMb2FkaW5nRWwucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ubG9hZExpYnJhcnkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2l0YXRpb25QYXRoTG9hZGluZ0VsLmFkZENsYXNzKCdkLW5vbmUnKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NpdGF0aW9uRXhwb3J0UGF0aFN1Y2Nlc3MoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAvLyBOQjogd2UgZm9yY2UgcmVsb2FkIG9mIHRoZSBsaWJyYXJ5IG9uIHBhdGggY2hhbmdlLlxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0NpdGF0aW9uIGRhdGFiYXNlIHBhdGgnKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdQYXRoIHRvIGNpdGF0aW9uIGxpYnJhcnkgZXhwb3J0ZWQgYnkgeW91ciByZWZlcmVuY2UgbWFuYWdlci4gJyArXG4gICAgICAgICAgJ0NhbiBiZSBhbiBhYnNvbHV0ZSBwYXRoIG9yIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB2YXVsdCByb290IGZvbGRlci4gJyArXG4gICAgICAgICAgJ0NpdGF0aW9ucyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVsb2FkZWQgd2hlbmV2ZXIgdGhpcyBmaWxlIHVwZGF0ZXMuJyxcbiAgICAgIClcbiAgICAgIC5hZGRUZXh0KChpbnB1dCkgPT5cbiAgICAgICAgdGhpcy5idWlsZFZhbHVlSW5wdXQoXG4gICAgICAgICAgaW5wdXQuc2V0UGxhY2Vob2xkZXIoJy9wYXRoL3RvL2V4cG9ydC5qc29uJyksXG4gICAgICAgICAgJ2NpdGF0aW9uRXhwb3J0UGF0aCcsXG4gICAgICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrQ2l0YXRpb25FeHBvcnRQYXRoKHZhbHVlKS50aGVuKFxuICAgICAgICAgICAgICAoc3VjY2VzcykgPT5cbiAgICAgICAgICAgICAgICBzdWNjZXNzICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5cbiAgICAgICAgICAgICAgICAgIC5sb2FkTGlicmFyeSgpXG4gICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLnNob3dDaXRhdGlvbkV4cG9ydFBhdGhTdWNjZXNzKCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgIHRoaXMuY2l0YXRpb25QYXRoTG9hZGluZ0VsID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnLCB7XG4gICAgICBjbHM6ICd6b3Rlcm9TZXR0aW5nQ2l0YXRpb25QYXRoTG9hZGluZyBkLW5vbmUnLFxuICAgICAgdGV4dDogJ0xvYWRpbmcgY2l0YXRpb24gZGF0YWJhc2UuLi4nLFxuICAgIH0pO1xuICAgIHRoaXMuY2l0YXRpb25QYXRoRXJyb3JFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJywge1xuICAgICAgY2xzOiAnem90ZXJvU2V0dGluZ0NpdGF0aW9uUGF0aEVycm9yIGQtbm9uZScsXG4gICAgICB0ZXh0OlxuICAgICAgICAnVGhlIGNpdGF0aW9uIGV4cG9ydCBmaWxlIGNhbm5vdCBiZSBmb3VuZC4gUGxlYXNlIGNoZWNrIHRoZSBwYXRoIGFib3ZlLicsXG4gICAgfSk7XG4gICAgdGhpcy5jaXRhdGlvblBhdGhTdWNjZXNzRWwgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcsIHtcbiAgICAgIGNsczogJ3pvdGVyb1NldHRpbmdDaXRhdGlvblBhdGhTdWNjZXNzIGQtbm9uZScsXG4gICAgICB0ZXh0OiAnTG9hZGVkIGxpYnJhcnkgd2l0aCB7e259fSByZWZlcmVuY2VzLicsXG4gICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdMaXRlcmF0dXJlIG5vdGUgZm9sZGVyJylcbiAgICAgIC5hZGRUZXh0KChpbnB1dCkgPT4gdGhpcy5idWlsZFZhbHVlSW5wdXQoaW5wdXQsICdsaXRlcmF0dXJlTm90ZUZvbGRlcicpKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdTYXZlIGxpdGVyYXR1cmUgbm90ZSBmaWxlcyBpbiB0aGlzIGZvbGRlciB3aXRoaW4geW91ciB2YXVsdC4gSWYgZW1wdHksIG5vdGVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgdmF1bHQuJyxcbiAgICAgICk7XG5cbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7IHRleHQ6ICdUZW1wbGF0ZSBzZXR0aW5ncycgfSk7XG4gICAgY29uc3QgdGVtcGxhdGVJbnN0cnVjdGlvbnNFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XG4gICAgdGVtcGxhdGVJbnN0cnVjdGlvbnNFbC5hcHBlbmQoXG4gICAgICBjcmVhdGVTcGFuKHtcbiAgICAgICAgdGV4dDpcbiAgICAgICAgICAnVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBkZXRlcm1pbmUgaG93IHRoZSBub3RlcyBhbmQgbGlua3MgY3JlYXRlZCBieSAnICtcbiAgICAgICAgICAndGhlIHBsdWdpbiB3aWxsIGJlIHJlbmRlcmVkLiBZb3UgbWF5IHNwZWNpZnkgYSBjdXN0b20gdGVtcGxhdGUgZm9yICcgK1xuICAgICAgICAgICdlYWNoIHR5cGUgb2YgY29udGVudC4gVGVtcGxhdGVzIGFyZSBpbnRlcnByZXRlZCB1c2luZyAnLFxuICAgICAgfSksXG4gICAgKTtcbiAgICB0ZW1wbGF0ZUluc3RydWN0aW9uc0VsLmFwcGVuZChcbiAgICAgIGNyZWF0ZUVsKCdhJywge1xuICAgICAgICB0ZXh0OiAnSGFuZGxlYmFycycsXG4gICAgICAgIGhyZWY6ICdodHRwczovL2hhbmRsZWJhcnNqcy5jb20vZ3VpZGUvZXhwcmVzc2lvbnMuaHRtbCcsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHRlbXBsYXRlSW5zdHJ1Y3Rpb25zRWwuYXBwZW5kKFxuICAgICAgY3JlYXRlU3Bhbih7XG4gICAgICAgIHRleHQ6ICcgc3ludGF4LiBZb3UgY2FuIG1ha2UgcmVmZXJlbmNlIHRvIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzOicsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgdGVtcGxhdGVWYXJpYWJsZVVsID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3VsJywge1xuICAgICAgYXR0cjogeyBpZDogJ2NpdGF0aW9uVGVtcGxhdGVWYXJpYWJsZXMnIH0sXG4gICAgfSk7XG4gICAgT2JqZWN0LmVudHJpZXMoVEVNUExBVEVfVkFSSUFCTEVTKS5mb3JFYWNoKCh2YXJpYWJsZURhdGEpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIGRlc2NyaXB0aW9uXSA9IHZhcmlhYmxlRGF0YSxcbiAgICAgICAgdGVtcGxhdGVWYXJpYWJsZUl0ZW0gPSB0ZW1wbGF0ZVZhcmlhYmxlVWwuY3JlYXRlRWwoJ2xpJyk7XG5cbiAgICAgIHRlbXBsYXRlVmFyaWFibGVJdGVtLmNyZWF0ZUVsKCdzcGFuJywge1xuICAgICAgICBjbHM6ICd0ZXh0LW1vbm9zcGFjZScsXG4gICAgICAgIHRleHQ6ICd7eycgKyBrZXkgKyAnfX0nLFxuICAgICAgfSk7XG5cbiAgICAgIHRlbXBsYXRlVmFyaWFibGVJdGVtLmNyZWF0ZUVsKCdzcGFuJywge1xuICAgICAgICB0ZXh0OiBkZXNjcmlwdGlvbiA/IGAg4oCUICR7ZGVzY3JpcHRpb259YCA6ICcnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZUVudHJ5SW5zdHJ1Y3Rpb25zRWwgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xuICAgIHRlbXBsYXRlRW50cnlJbnN0cnVjdGlvbnNFbC5hcHBlbmQoXG4gICAgICBjcmVhdGVTcGFuKHsgdGV4dDogJ0FkdmFuY2VkIHVzZXJzIG1heSBhbHNvIHJlZmVyIHRvIHRoZSAnIH0pLFxuICAgICAgY3JlYXRlU3Bhbih7IHRleHQ6ICd7e2VudHJ5fX0nLCBjbHM6ICd0ZXh0LW1vbm9zcGFjZScgfSksXG4gICAgICBjcmVhdGVTcGFuKHtcbiAgICAgICAgdGV4dDpcbiAgICAgICAgICAnIHZhcmlhYmxlLCB3aGljaCBjb250YWlucyB0aGUgZnVsbCBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhlICcgK1xuICAgICAgICAgICdyZWZlcmVuY2UgYXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBwbHVnaW4uIFNlZSB0aGUgJyxcbiAgICAgIH0pLFxuICAgICAgY3JlYXRlRWwoJ2EnLCB7XG4gICAgICAgIHRleHQ6ICdwbHVnaW4gZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGhyZWY6ICdodHRwOi8vd3d3LmZvbGRsLm1lL29ic2lkaWFuLWNpdGF0aW9uLXBsdWdpbi9jbGFzc2VzL2VudHJ5Lmh0bWwnLFxuICAgICAgfSksXG4gICAgICBjcmVhdGVTcGFuKHsgdGV4dDogXCIgZm9yIGluZm9ybWF0aW9uIG9uIHRoaXMgb2JqZWN0J3Mgc3RydWN0dXJlLlwiIH0pLFxuICAgICk7XG5cbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7IHRleHQ6ICdMaXRlcmF0dXJlIG5vdGUgdGVtcGxhdGVzJyB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0xpdGVyYXR1cmUgbm90ZSB0aXRsZSB0ZW1wbGF0ZScpXG4gICAgICAuYWRkVGV4dCgoaW5wdXQpID0+XG4gICAgICAgIHRoaXMuYnVpbGRWYWx1ZUlucHV0KGlucHV0LCAnbGl0ZXJhdHVyZU5vdGVUaXRsZVRlbXBsYXRlJyksXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTGl0ZXJhdHVyZSBub3RlIGNvbnRlbnQgdGVtcGxhdGUnKVxuICAgICAgLmFkZFRleHRBcmVhKChpbnB1dCkgPT5cbiAgICAgICAgdGhpcy5idWlsZFZhbHVlSW5wdXQoaW5wdXQsICdsaXRlcmF0dXJlTm90ZUNvbnRlbnRUZW1wbGF0ZScpLFxuICAgICAgKTtcblxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHsgdGV4dDogJ01hcmtkb3duIGNpdGF0aW9uIHRlbXBsYXRlcycgfSk7XG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnLCB7XG4gICAgICB0ZXh0OlxuICAgICAgICAnWW91IGNhbiBpbnNlcnQgUGFuZG9jLXN0eWxlIE1hcmtkb3duIGNpdGF0aW9ucyByYXRoZXIgdGhhbiBsaXRlcmF0dXJlIG5vdGVzIGJ5IHVzaW5nIHRoZSBcIkluc2VydCBNYXJrZG93biBjaXRhdGlvblwiIGNvbW1hbmQuIFRoZSBiZWxvdyBvcHRpb25zIGFsbG93IGN1c3RvbWl6YXRpb24gb2YgdGhlIE1hcmtkb3duIGNpdGF0aW9uIGZvcm1hdC4nLFxuICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTWFya2Rvd24gcHJpbWFyeSBjaXRhdGlvbiB0ZW1wbGF0ZScpXG4gICAgICAuYWRkVGV4dCgoaW5wdXQpID0+XG4gICAgICAgIHRoaXMuYnVpbGRWYWx1ZUlucHV0KGlucHV0LCAnbWFya2Rvd25DaXRhdGlvblRlbXBsYXRlJyksXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTWFya2Rvd24gc2Vjb25kYXJ5IGNpdGF0aW9uIHRlbXBsYXRlJylcbiAgICAgIC5hZGRUZXh0KChpbnB1dCkgPT5cbiAgICAgICAgdGhpcy5idWlsZFZhbHVlSW5wdXQoaW5wdXQsICdhbHRlcm5hdGl2ZU1hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZScpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGV4aXN0czsgZGlzcGxheXMgZXJyb3IgYXMgYSBzaWRlLWVmZmVjdFxuICAgKi9cbiAgYXN5bmMgY2hlY2tDaXRhdGlvbkV4cG9ydFBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMuY2l0YXRpb25QYXRoTG9hZGluZ0VsLmFkZENsYXNzKCdkLW5vbmUnKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBGaWxlU3lzdGVtQWRhcHRlci5yZWFkTG9jYWxGaWxlKFxuICAgICAgICB0aGlzLnBsdWdpbi5yZXNvbHZlTGlicmFyeVBhdGgoZmlsZVBhdGgpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY2l0YXRpb25QYXRoRXJyb3JFbC5hZGRDbGFzcygnZC1ub25lJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5jaXRhdGlvblBhdGhTdWNjZXNzRWwuYWRkQ2xhc3MoJ2Qtbm9uZScpO1xuICAgICAgdGhpcy5jaXRhdGlvblBhdGhFcnJvckVsLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNob3dDaXRhdGlvbkV4cG9ydFBhdGhTdWNjZXNzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wbHVnaW4ubGlicmFyeSkgcmV0dXJuO1xuXG4gICAgdGhpcy5jaXRhdGlvblBhdGhTdWNjZXNzRWwuc2V0VGV4dChcbiAgICAgIGBMb2FkZWQgbGlicmFyeSB3aXRoICR7dGhpcy5wbHVnaW4ubGlicmFyeS5zaXplfSByZWZlcmVuY2VzLmAsXG4gICAgKTtcbiAgICB0aGlzLmNpdGF0aW9uUGF0aFN1Y2Nlc3NFbC5yZW1vdmVDbGFzcygnZC1ub25lJyk7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbWVzc2FnZUlkcyA9IDBcblxuZnVuY3Rpb24gb25NZXNzYWdlIChzZWxmLCBlKSB7XG4gIHZhciBtZXNzYWdlID0gZS5kYXRhXG4gIGlmICghQXJyYXkuaXNBcnJheShtZXNzYWdlKSB8fCBtZXNzYWdlLmxlbmd0aCA8IDIpIHtcbiAgICAvLyBJZ25vcmUgLSB0aGlzIG1lc3NhZ2UgaXMgbm90IGZvciB1cy5cbiAgICByZXR1cm5cbiAgfVxuICB2YXIgbWVzc2FnZUlkID0gbWVzc2FnZVswXVxuICB2YXIgZXJyb3IgPSBtZXNzYWdlWzFdXG4gIHZhciByZXN1bHQgPSBtZXNzYWdlWzJdXG5cbiAgdmFyIGNhbGxiYWNrID0gc2VsZi5fY2FsbGJhY2tzW21lc3NhZ2VJZF1cblxuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgLy8gSWdub3JlIC0gdXNlciBtaWdodCBoYXZlIGNyZWF0ZWQgbXVsdGlwbGUgUHJvbWlzZVdvcmtlcnMuXG4gICAgLy8gVGhpcyBtZXNzYWdlIGlzIG5vdCBmb3IgdXMuXG4gICAgcmV0dXJuXG4gIH1cblxuICBkZWxldGUgc2VsZi5fY2FsbGJhY2tzW21lc3NhZ2VJZF1cbiAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdClcbn1cblxuZnVuY3Rpb24gUHJvbWlzZVdvcmtlciAod29ya2VyKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICBzZWxmLl93b3JrZXIgPSB3b3JrZXJcbiAgc2VsZi5fY2FsbGJhY2tzID0ge31cblxuICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgb25NZXNzYWdlKHNlbGYsIGUpXG4gIH0pXG59XG5cblByb21pc2VXb3JrZXIucHJvdG90eXBlLnBvc3RNZXNzYWdlID0gZnVuY3Rpb24gKHVzZXJNZXNzYWdlKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbWVzc2FnZUlkID0gbWVzc2FnZUlkcysrXG5cbiAgdmFyIG1lc3NhZ2VUb1NlbmQgPSBbbWVzc2FnZUlkLCB1c2VyTWVzc2FnZV1cblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHNlbGYuX2NhbGxiYWNrc1ttZXNzYWdlSWRdID0gZnVuY3Rpb24gKGVycm9yLCByZXN1bHQpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKSlcbiAgICAgIH1cbiAgICAgIHJlc29sdmUocmVzdWx0KVxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0eXBlb2Ygc2VsZi5fd29ya2VyLmNvbnRyb2xsZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBzZXJ2aWNlIHdvcmtlciwgdXNlIE1lc3NhZ2VDaGFubmVscyBiZWNhdXNlIGUuc291cmNlIGlzIGJyb2tlbiBpbiBDaHJvbWUgPCA1MTpcbiAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU0MzE5OFxuICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKVxuICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBvbk1lc3NhZ2Uoc2VsZiwgZSlcbiAgICAgIH1cbiAgICAgIHNlbGYuX3dvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKG1lc3NhZ2VUb1NlbmQsIFtjaGFubmVsLnBvcnQyXSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2ViIHdvcmtlclxuICAgICAgc2VsZi5fd29ya2VyLnBvc3RNZXNzYWdlKG1lc3NhZ2VUb1NlbmQpXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21pc2VXb3JrZXJcbiIsIi8qKlxuICogRGVjbGFyZXMgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB3aGljaCBhcmUgbWlzc2luZyBmcm9tIHRoZSBPYnNpZGlhbiBBUEkuXG4gKi9cblxuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgY2xhc3MgTm90aWNlRXh0IGV4dGVuZHMgTm90aWNlIHtcbiAgc3RhdGljIERJU0FQUEVBUklOR19DTEFTUyA9ICdtb2QtZGlzYXBwZWFyaW5nJztcblxuICBub3RpY2VFbDogSFRNTEVsZW1lbnQ7XG59XG4iLCJpbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCBQcm9taXNlV29ya2VyIGZyb20gJ3Byb21pc2Utd29ya2VyJztcblxuaW1wb3J0IHsgTm90aWNlRXh0IH0gZnJvbSAnLi9vYnNpZGlhbi1leHRlbnNpb25zJztcblxuZXhwb3J0IGNvbnN0IERJU0FMTE9XRURfRklMRU5BTUVfQ0hBUkFDVEVSU19SRSA9IC9bKlwiXFxcXC88Pjp8P10vZztcblxuLyoqXG4gKiBNYW5hZ2VzIGEgY2F0ZWdvcnkgb2Ygbm90aWNlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIFVJLiBQcmV2ZW50cyBtdWx0aXBsZVxuICogbm90aWNlcyBiZWluZyBzaG93biBhdCB0aGUgc2FtZSB0aW1lLlxuICovXG5leHBvcnQgY2xhc3MgTm90aWZpZXIge1xuICBzdGF0aWMgRElTQVBQRUFSSU5HX0NMQVNTID0gJ21vZC1kaXNhcHBlYXJpbmcnO1xuICBjdXJyZW50Tm90aWNlPzogTm90aWNlRXh0O1xuICBtdXRhdGlvbk9ic2VydmVyPzogTXV0YXRpb25PYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGVmYXVsdE1lc3NhZ2U6IHN0cmluZykge31cblxuICB1bmxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgbm90aWNlIHdhcyBzaG93biwgYW5kIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgc2hvdyhtZXNzYWdlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UgfHwgdGhpcy5kZWZhdWx0TWVzc2FnZTtcbiAgICBpZiAodGhpcy5jdXJyZW50Tm90aWNlKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLmN1cnJlbnROb3RpY2UgPSBuZXcgTm90aWNlKG1lc3NhZ2UpIGFzIE5vdGljZUV4dDtcblxuICAgIC8vIFNldCB1cCBtdXRhdGlvbiBvYnNlcnZlciB0byB3YXRjaCBmb3Igd2hlbiB0aGUgbm90aWNlIGRpc2FwcGVhcnMuXG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGNoYW5nZXMsIG9ic2VydmVyKSA9PiB7XG4gICAgICBjb25zdCBpc0Rpc2FwcGVhcmluZyA9IGNoYW5nZXMuc29tZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gY2hhbmdlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjaGFuZ2UudHlwZSA9PSAnYXR0cmlidXRlcycgJiZcbiAgICAgICAgICBlbC5oYXNDbGFzcyhOb3RpY2VFeHQuRElTQVBQRUFSSU5HX0NMQVNTKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAoaXNEaXNhcHBlYXJpbmcpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Tm90aWNlID0gbnVsbDtcbiAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuY3VycmVudE5vdGljZS5ub3RpY2VFbCwge1xuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJ10sXG4gICAgfSk7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vdGljZT8uaGlkZSgpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuXG4gICAgdGhpcy5jdXJyZW50Tm90aWNlID0gbnVsbDtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBudWxsO1xuICB9XG59XG5cbi8qKlxuICogTWFuYWdlcyBhIFdvcmtlciwgcmVjb3JkaW5nIGl0cyBzdGF0ZSBhbmQgb3B0aW9uYWxseSBwcmV2ZW50aW5nXG4gKiBtZXNzYWdlIHBvc3RpbmdzIGJlZm9yZSByZXNwb25zZXMgdG8gcHJpb3IgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2VyTWFuYWdlciB7XG4gIHByaXZhdGUgd29ya2VyID0gbmV3IFByb21pc2VXb3JrZXIodGhpcy5fd29ya2VyKTtcbiAgb3B0aW9uczogV29ya2VyTWFuYWdlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIE9ubHkgcmVsZXZhbnQgd2hlbiBgYmxvY2tpbmdDaGFubmVsYCBvcHRpb24gaXMgdHJ1ZS5cbiAgICogVGhlbiB0aGlzIHByb3BlcnR5IGlzIHRydWUgaWZmIHRoZSB3b3JrZXIgaXMgY3VycmVudGx5IHByb2Nlc3NpbmcgYVxuICAgKiByZWNlaXZlZCBtZXNzYWdlLCBhbmQgaGFzIG5vdCB5ZXQgcG9zdGVkIGEgcmVzcG9uc2UuXG4gICAqL1xuICBibG9ja2VkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfd29ya2VyOiBXb3JrZXIsIG9wdGlvbnM6IFdvcmtlck1hbmFnZXJPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi53b3JrZXJNYW5hZ2VyRGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHBvc3QgYSBtZXNzYWdlIHRvIHRoZSB3b3JrZXIgYW5kIHJldHVybiBhIHByb21pc2UgcmVzcG9uc2UuXG4gICAqXG4gICAqIElmIGBibG9ja2luZ0NoYW5uZWxgIG9wdGlvbiBpcyB0cnVlIGFuZCB0aGUgY2hhbm5lbCBpcyBjdXJyZW50bHkgYmxvY2tlZCxcbiAgICogdGhlIG1lc3NhZ2Ugd2lsbCBiZSBkaXNjYXJkZWQgYW5kIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duLlxuICAgKi9cbiAgYXN5bmMgcG9zdDxUUmVzdWx0ID0gYW55LCBUSW5wdXQgPSBhbnk+KG1zZzogVElucHV0KTogUHJvbWlzZTxUUmVzdWx0PiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5ibG9ja2luZ0NoYW5uZWwgJiYgdGhpcy5ibG9ja2VkKSB7XG4gICAgICB0aHJvdyBuZXcgV29ya2VyTWFuYWdlckJsb2NrZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLndvcmtlci5wb3N0TWVzc2FnZShtc2cpLnRoZW4oXG4gICAgICAocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuYmxvY2tlZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdvcmtlck1hbmFnZXJCbG9ja2VkIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignV29ya2VyTWFuYWdlcjogZGlzY2FyZGVkIG1lc3NhZ2UgYmVjYXVzZSBjaGFubmVsIGlzIGJsb2NrZWQnKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgV29ya2VyTWFuYWdlckJsb2NrZWQucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtlck1hbmFnZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIHRydWUsIHRyZWF0IHRoZSB3b3JrZXIgY2hhbm5lbCBhcyBibG9ja2luZyAtLSB3aGVuIHRoZSB3b3JrZXIgcmVjZWl2ZXNcbiAgICogYSBtZXNzYWdlLCBubyBvdGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB1bnRpbCB0aGUgd29ya2VyIHNlbmRzIGEgbWVzc2FnZS5cbiAgICogTWVzc2FnZXMgd2hpY2ggYXJlIHNlbnQgZHVyaW5nIHRoZSBibG9ja2luZyBwZXJpb2Qgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAqL1xuICBibG9ja2luZ0NoYW5uZWw6IGJvb2xlYW47XG59XG5cbmNvbnN0IHdvcmtlck1hbmFnZXJEZWZhdWx0T3B0aW9uczogV29ya2VyTWFuYWdlck9wdGlvbnMgPSB7XG4gIGJsb2NraW5nQ2hhbm5lbDogZmFsc2UsXG59O1xuIiwiaW1wb3J0IHtcbiAgRmlsZVN5c3RlbUFkYXB0ZXIsXG4gIE1hcmtkb3duU291cmNlVmlldyxcbiAgTWFya2Rvd25WaWV3LFxuICBub3JtYWxpemVQYXRoLFxuICBQbHVnaW4sXG4gIFRGaWxlLFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2hva2lkYXIgZnJvbSAnY2hva2lkYXInO1xuaW1wb3J0ICogYXMgQ29kZU1pcnJvciBmcm9tICdjb2RlbWlycm9yJztcblxuaW1wb3J0IHtcbiAgY29tcGlsZSBhcyBjb21waWxlVGVtcGxhdGUsXG4gIFRlbXBsYXRlRGVsZWdhdGUgYXMgVGVtcGxhdGUsXG59IGZyb20gJ2hhbmRsZWJhcnMnO1xuXG5cbmltcG9ydCBDaXRhdGlvbkV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQge1xuICBJbnNlcnRDaXRhdGlvbk1vZGFsLFxuICBJbnNlcnROb3RlTGlua01vZGFsLFxuICBJbnNlcnROb3RlQ29udGVudE1vZGFsLFxuICBPcGVuTm90ZU1vZGFsLFxufSBmcm9tICcuL21vZGFscyc7XG5pbXBvcnQgeyBWYXVsdEV4dCB9IGZyb20gJy4vb2JzaWRpYW4tZXh0ZW5zaW9ucy5kJztcbmltcG9ydCB7IENpdGF0aW9uU2V0dGluZ1RhYiwgQ2l0YXRpb25zUGx1Z2luU2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCB7XG4gIEVudHJ5LFxuICBFbnRyeURhdGEsXG4gIEVudHJ5QmliTGFUZVhBZGFwdGVyLFxuICBFbnRyeUNTTEFkYXB0ZXIsXG4gIElJbmRleGFibGUsXG4gIExpYnJhcnksXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgRElTQUxMT1dFRF9GSUxFTkFNRV9DSEFSQUNURVJTX1JFLFxuICBOb3RpZmllcixcbiAgV29ya2VyTWFuYWdlcixcbiAgV29ya2VyTWFuYWdlckJsb2NrZWQsXG59IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgTG9hZFdvcmtlciBmcm9tICd3ZWItd29ya2VyOi4vd29ya2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2l0YXRpb25QbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBzZXR0aW5nczogQ2l0YXRpb25zUGx1Z2luU2V0dGluZ3M7XG4gIGxpYnJhcnk6IExpYnJhcnk7XG5cbiAgLy8gVGVtcGxhdGUgY29tcGlsYXRpb24gb3B0aW9uc1xuICBwcml2YXRlIHRlbXBsYXRlU2V0dGluZ3MgPSB7XG4gICAgbm9Fc2NhcGU6IHRydWUsXG4gIH07XG5cbiAgcHJpdmF0ZSBsb2FkV29ya2VyID0gbmV3IFdvcmtlck1hbmFnZXIobmV3IExvYWRXb3JrZXIoKSwge1xuICAgIGJsb2NraW5nQ2hhbm5lbDogdHJ1ZSxcbiAgfSk7XG5cbiAgZXZlbnRzID0gbmV3IENpdGF0aW9uRXZlbnRzKCk7XG5cbiAgbG9hZEVycm9yTm90aWZpZXIgPSBuZXcgTm90aWZpZXIoXG4gICAgJ1VuYWJsZSB0byBsb2FkIGNpdGF0aW9ucy4gUGxlYXNlIHVwZGF0ZSBDaXRhdGlvbnMgcGx1Z2luIHNldHRpbmdzLicsXG4gICk7XG4gIGxpdGVyYXR1cmVOb3RlRXJyb3JOb3RpZmllciA9IG5ldyBOb3RpZmllcihcbiAgICAnVW5hYmxlIHRvIGFjY2VzcyBsaXRlcmF0dXJlIG5vdGUuIFBsZWFzZSBjaGVjayB0aGF0IHRoZSBsaXRlcmF0dXJlIG5vdGUgZm9sZGVyIGV4aXN0cywgb3IgdXBkYXRlIHRoZSBDaXRhdGlvbnMgcGx1Z2luIHNldHRpbmdzLicsXG4gICk7XG5cbiAgZ2V0IGVkaXRvcigpOiBDb2RlTWlycm9yLkVkaXRvciB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmLnZpZXc7XG4gICAgaWYgKCEodmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldykpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3Qgc291cmNlVmlldyA9IHZpZXcuc291cmNlTW9kZTtcbiAgICByZXR1cm4gKHNvdXJjZVZpZXcgYXMgTWFya2Rvd25Tb3VyY2VWaWV3KS5jbUVkaXRvcjtcbiAgfVxuXG4gIGFzeW5jIGxvYWRTZXR0aW5ncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNldHRpbmdzID0gbmV3IENpdGF0aW9uc1BsdWdpblNldHRpbmdzKCk7XG5cbiAgICBjb25zdCBsb2FkZWRTZXR0aW5ncyA9IGF3YWl0IHRoaXMubG9hZERhdGEoKTtcbiAgICBpZiAoIWxvYWRlZFNldHRpbmdzKSByZXR1cm47XG5cbiAgICBjb25zdCB0b0xvYWQgPSBbXG4gICAgICAnY2l0YXRpb25FeHBvcnRQYXRoJyxcbiAgICAgICdjaXRhdGlvbkV4cG9ydEZvcm1hdCcsXG4gICAgICAnbGl0ZXJhdHVyZU5vdGVUaXRsZVRlbXBsYXRlJyxcbiAgICAgICdsaXRlcmF0dXJlTm90ZUZvbGRlcicsXG4gICAgICAnbGl0ZXJhdHVyZU5vdGVDb250ZW50VGVtcGxhdGUnLFxuICAgICAgJ21hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZScsXG4gICAgICAnYWx0ZXJuYXRpdmVNYXJrZG93bkNpdGF0aW9uVGVtcGxhdGUnLFxuICAgIF07XG4gICAgdG9Mb2FkLmZvckVhY2goKHNldHRpbmcpID0+IHtcbiAgICAgIGlmIChzZXR0aW5nIGluIGxvYWRlZFNldHRpbmdzKSB7XG4gICAgICAgICh0aGlzLnNldHRpbmdzIGFzIElJbmRleGFibGUpW3NldHRpbmddID0gbG9hZGVkU2V0dGluZ3Nbc2V0dGluZ107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzYXZlU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgfVxuXG4gIG9ubG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRTZXR0aW5ncygpLnRoZW4oKCkgPT4gdGhpcy5pbml0KCkpO1xuICB9XG5cbiAgYXN5bmMgaW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydFBhdGgpIHtcbiAgICAgIC8vIExvYWQgbGlicmFyeSBmb3IgdGhlIGZpcnN0IHRpbWVcbiAgICAgIHRoaXMubG9hZExpYnJhcnkoKTtcblxuICAgICAgLy8gU2V0IHVwIGEgd2F0Y2hlciB0byByZWZyZXNoIHdoZW5ldmVyIHRoZSBleHBvcnQgaXMgdXBkYXRlZFxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gV2FpdCB1bnRpbCBmaWxlcyBhcmUgZmluaXNoZWQgYmVpbmcgd3JpdHRlbiBiZWZvcmUgZ29pbmcgYWhlYWQgd2l0aFxuICAgICAgICAvLyB0aGUgcmVmcmVzaCAtLSBoZXJlLCB3ZSByZXF1ZXN0IHRoYXQgYGNoYW5nZWAgZXZlbnRzIGJlIGFjY3VtdWxhdGVkXG4gICAgICAgIC8vIHVudGlsIG5vdGhpbmcgc2hvd3MgdXAgZm9yIDUwMCBtc1xuICAgICAgICAvLyBUT0RPIG1hZ2ljIG51bWJlclxuICAgICAgICBjb25zdCB3YXRjaE9wdGlvbnMgPSB7XG4gICAgICAgICAgYXdhaXRXcml0ZUZpbmlzaDoge1xuICAgICAgICAgICAgc3RhYmlsaXR5VGhyZXNob2xkOiA1MDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBjaG9raWRhclxuICAgICAgICAgIC53YXRjaChcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUxpYnJhcnlQYXRoKHRoaXMuc2V0dGluZ3MuY2l0YXRpb25FeHBvcnRQYXRoKSxcbiAgICAgICAgICAgIHdhdGNoT3B0aW9ucyxcbiAgICAgICAgICApXG4gICAgICAgICAgLm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRMaWJyYXJ5KCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5sb2FkRXJyb3JOb3RpZmllci5zaG93KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE8gc2hvdyB3YXJuaW5nP1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ29wZW4tbGl0ZXJhdHVyZS1ub3RlJyxcbiAgICAgIG5hbWU6ICdPcGVuIGxpdGVyYXR1cmUgbm90ZScsXG4gICAgICBob3RrZXlzOiBbeyBtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLCBrZXk6ICdvJyB9XSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGFsID0gbmV3IE9wZW5Ob3RlTW9kYWwodGhpcy5hcHAsIHRoaXMpO1xuICAgICAgICBtb2RhbC5vcGVuKCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAndXBkYXRlLWJpYi1kYXRhJyxcbiAgICAgIG5hbWU6ICdSZWZyZXNoIGNpdGF0aW9uIGRhdGFiYXNlJyxcbiAgICAgIGhvdGtleXM6IFt7IG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sIGtleTogJ3InIH1dLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkTGlicmFyeSgpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2luc2VydC1jaXRhdGlvbicsXG4gICAgICBuYW1lOiAnSW5zZXJ0IGxpdGVyYXR1cmUgbm90ZSBsaW5rJyxcbiAgICAgIGhvdGtleXM6IFt7IG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sIGtleTogJ2UnIH1dLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9kYWwgPSBuZXcgSW5zZXJ0Tm90ZUxpbmtNb2RhbCh0aGlzLmFwcCwgdGhpcyk7XG4gICAgICAgIG1vZGFsLm9wZW4oKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdpbnNlcnQtbGl0ZXJhdHVyZS1ub3RlLWNvbnRlbnQnLFxuICAgICAgbmFtZTogJ0luc2VydCBsaXRlcmF0dXJlIG5vdGUgY29udGVudCBpbiB0aGUgY3VycmVudCBwYW5lJyxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGFsID0gbmV3IEluc2VydE5vdGVDb250ZW50TW9kYWwodGhpcy5hcHAsIHRoaXMpO1xuICAgICAgICBtb2RhbC5vcGVuKCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnaW5zZXJ0LW1hcmtkb3duLWNpdGF0aW9uJyxcbiAgICAgIG5hbWU6ICdJbnNlcnQgTWFya2Rvd24gY2l0YXRpb24nLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9kYWwgPSBuZXcgSW5zZXJ0Q2l0YXRpb25Nb2RhbCh0aGlzLmFwcCwgdGhpcyk7XG4gICAgICAgIG1vZGFsLm9wZW4oKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IENpdGF0aW9uU2V0dGluZ1RhYih0aGlzLmFwcCwgdGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSBwcm92aWRlZCBsaWJyYXJ5IHBhdGgsIGFsbG93aW5nIGZvciByZWxhdGl2ZSBwYXRocyByb290ZWQgYXRcbiAgICogdGhlIHZhdWx0IGRpcmVjdG9yeS5cbiAgICovXG4gIHJlc29sdmVMaWJyYXJ5UGF0aChyYXdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhdWx0Um9vdCA9XG4gICAgICB0aGlzLmFwcC52YXVsdC5hZGFwdGVyIGluc3RhbmNlb2YgRmlsZVN5c3RlbUFkYXB0ZXJcbiAgICAgICAgPyB0aGlzLmFwcC52YXVsdC5hZGFwdGVyLmdldEJhc2VQYXRoKClcbiAgICAgICAgOiAnLyc7XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh2YXVsdFJvb3QsIHJhd1BhdGgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZExpYnJhcnkoKTogUHJvbWlzZTxMaWJyYXJ5PiB7XG4gICAgY29uc29sZS5kZWJ1ZygnQ2l0YXRpb24gcGx1Z2luOiBSZWxvYWRpbmcgbGlicmFyeScpO1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmNpdGF0aW9uRXhwb3J0UGF0aCkge1xuICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLnJlc29sdmVMaWJyYXJ5UGF0aChcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydFBhdGgsXG4gICAgICApO1xuXG4gICAgICAvLyBVbmxvYWQgY3VycmVudCBsaWJyYXJ5LlxuICAgICAgdGhpcy5ldmVudHMudHJpZ2dlcignbGlicmFyeS1sb2FkLXN0YXJ0Jyk7XG4gICAgICB0aGlzLmxpYnJhcnkgPSBudWxsO1xuXG4gICAgICByZXR1cm4gRmlsZVN5c3RlbUFkYXB0ZXIucmVhZExvY2FsRmlsZShmaWxlUGF0aClcbiAgICAgICAgLnRoZW4oKGJ1ZmZlcikgPT4ge1xuICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcmVtYWluaW5nIGVycm9yIG1lc3NhZ2UsIGhpZGUgaXRcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvck5vdGlmaWVyLmhpZGUoKTtcblxuICAgICAgICAgIC8vIERlY29kZSBmaWxlIGFzIFVURi04LlxuICAgICAgICAgIGNvbnN0IGRhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG4gICAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigndXRmOCcpO1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGVjb2Rlci5kZWNvZGUoZGF0YVZpZXcpO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZFdvcmtlci5wb3N0KHtcbiAgICAgICAgICAgIGRhdGFiYXNlUmF3OiB2YWx1ZSxcbiAgICAgICAgICAgIGRhdGFiYXNlVHlwZTogdGhpcy5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydEZvcm1hdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKGVudHJpZXM6IEVudHJ5RGF0YVtdKSA9PiB7XG4gICAgICAgICAgbGV0IGFkYXB0ZXI6IG5ldyAoZGF0YTogRW50cnlEYXRhKSA9PiBFbnRyeTtcbiAgICAgICAgICBsZXQgaWRLZXk6IHN0cmluZztcblxuICAgICAgICAgIHN3aXRjaCAodGhpcy5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydEZvcm1hdCkge1xuICAgICAgICAgICAgY2FzZSAnYmlibGF0ZXgnOlxuICAgICAgICAgICAgICBhZGFwdGVyID0gRW50cnlCaWJMYVRlWEFkYXB0ZXI7XG4gICAgICAgICAgICAgIGlkS2V5ID0gJ2tleSc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NsLWpzb24nOlxuICAgICAgICAgICAgICBhZGFwdGVyID0gRW50cnlDU0xBZGFwdGVyO1xuICAgICAgICAgICAgICBpZEtleSA9ICdpZCc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubGlicmFyeSA9IG5ldyBMaWJyYXJ5KFxuICAgICAgICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICBlbnRyaWVzLm1hcCgoZSkgPT4gWyhlIGFzIElJbmRleGFibGUpW2lkS2V5XSwgbmV3IGFkYXB0ZXIoZSldKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgICAgICAgYENpdGF0aW9uIHBsdWdpbjogc3VjY2Vzc2Z1bGx5IGxvYWRlZCBsaWJyYXJ5IHdpdGggJHt0aGlzLmxpYnJhcnkuc2l6ZX0gZW50cmllcy5gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdsaWJyYXJ5LWxvYWQtY29tcGxldGUnKTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmxpYnJhcnk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgV29ya2VyTWFuYWdlckJsb2NrZWQpIHtcbiAgICAgICAgICAgIC8vIFNpbGVudGx5IGNhdGNoIFdvcmtlck1hbmFnZXIgZXJyb3IsIHdoaWNoIHdpbGwgYmUgdGhyb3duIGlmIHRoZVxuICAgICAgICAgICAgLy8gbGlicmFyeSBpcyBhbHJlYWR5IGJlaW5nIGxvYWRlZFxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgdGhpcy5sb2FkRXJyb3JOb3RpZmllci5zaG93KCk7XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ0NpdGF0aW9ucyBwbHVnaW46IGNpdGF0aW9uIGV4cG9ydCBwYXRoIGlzIG5vdCBzZXQuIFBsZWFzZSB1cGRhdGUgcGx1Z2luIHNldHRpbmdzLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBsaWJyYXJ5IGlzIGN1cnJlbnRseSBiZWluZyBsb2FkZWQgb24gdGhlIHdvcmtlciB0aHJlYWQuXG4gICAqL1xuICBnZXQgaXNMaWJyYXJ5TG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkV29ya2VyLmJsb2NrZWQ7XG4gIH1cblxuICBnZXQgbGl0ZXJhdHVyZU5vdGVUaXRsZVRlbXBsYXRlKCk6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4gY29tcGlsZVRlbXBsYXRlKFxuICAgICAgdGhpcy5zZXR0aW5ncy5saXRlcmF0dXJlTm90ZVRpdGxlVGVtcGxhdGUsXG4gICAgICB0aGlzLnRlbXBsYXRlU2V0dGluZ3MsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBsaXRlcmF0dXJlTm90ZUNvbnRlbnRUZW1wbGF0ZSgpOiBUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIGNvbXBpbGVUZW1wbGF0ZShcbiAgICAgIHRoaXMuc2V0dGluZ3MubGl0ZXJhdHVyZU5vdGVDb250ZW50VGVtcGxhdGUsXG4gICAgICB0aGlzLnRlbXBsYXRlU2V0dGluZ3MsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBtYXJrZG93bkNpdGF0aW9uVGVtcGxhdGUoKTogVGVtcGxhdGUge1xuICAgIHJldHVybiBjb21waWxlVGVtcGxhdGUoXG4gICAgICB0aGlzLnNldHRpbmdzLm1hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZSxcbiAgICAgIHRoaXMudGVtcGxhdGVTZXR0aW5ncyxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGFsdGVybmF0aXZlTWFya2Rvd25DaXRhdGlvblRlbXBsYXRlKCk6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4gY29tcGlsZVRlbXBsYXRlKFxuICAgICAgdGhpcy5zZXR0aW5ncy5hbHRlcm5hdGl2ZU1hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZSxcbiAgICAgIHRoaXMudGVtcGxhdGVTZXR0aW5ncyxcbiAgICApO1xuICB9XG5cbiAgZ2V0VGl0bGVGb3JDaXRla2V5KGNpdGVrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdW5zYWZlVGl0bGUgPSB0aGlzLmxpdGVyYXR1cmVOb3RlVGl0bGVUZW1wbGF0ZShcbiAgICAgIHRoaXMubGlicmFyeS5nZXRUZW1wbGF0ZVZhcmlhYmxlc0ZvckNpdGVrZXkoY2l0ZWtleSksXG4gICAgKTtcbiAgICByZXR1cm4gdW5zYWZlVGl0bGUucmVwbGFjZShESVNBTExPV0VEX0ZJTEVOQU1FX0NIQVJBQ1RFUlNfUkUsICdfJyk7XG4gIH1cblxuICBnZXRQYXRoRm9yQ2l0ZWtleShjaXRla2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5nZXRUaXRsZUZvckNpdGVrZXkoY2l0ZWtleSk7XG4gICAgLy8gVE9ETyBlc2NhcGUgbm90ZSB0aXRsZVxuICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5zZXR0aW5ncy5saXRlcmF0dXJlTm90ZUZvbGRlciwgYCR7dGl0bGV9Lm1kYCk7XG4gIH1cblxuICBnZXRJbml0aWFsQ29udGVudEZvckNpdGVrZXkoY2l0ZWtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5saXRlcmF0dXJlTm90ZUNvbnRlbnRUZW1wbGF0ZShcbiAgICAgIHRoaXMubGlicmFyeS5nZXRUZW1wbGF0ZVZhcmlhYmxlc0ZvckNpdGVrZXkoY2l0ZWtleSksXG4gICAgKTtcbiAgfVxuXG4gIGdldE1hcmtkb3duQ2l0YXRpb25Gb3JDaXRla2V5KGNpdGVrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFya2Rvd25DaXRhdGlvblRlbXBsYXRlKFxuICAgICAgdGhpcy5saWJyYXJ5LmdldFRlbXBsYXRlVmFyaWFibGVzRm9yQ2l0ZWtleShjaXRla2V5KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0QWx0ZXJuYXRpdmVNYXJrZG93bkNpdGF0aW9uRm9yQ2l0ZWtleShjaXRla2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsdGVybmF0aXZlTWFya2Rvd25DaXRhdGlvblRlbXBsYXRlKFxuICAgICAgdGhpcy5saWJyYXJ5LmdldFRlbXBsYXRlVmFyaWFibGVzRm9yQ2l0ZWtleShjaXRla2V5KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoIGZvciB0aGUgbGl0ZXJhdHVyZSBub3RlIGZpbGUgY29ycmVzcG9uZGluZyB0b1xuICAgKiB0aGUgZ2l2ZW4gY2l0ZWtleS4gSWYgbm8gY29ycmVzcG9uZGluZyBmaWxlIGlzIGZvdW5kLCBjcmVhdGUgb25lLlxuICAgKi9cbiAgYXN5bmMgZ2V0T3JDcmVhdGVMaXRlcmF0dXJlTm90ZUZpbGUoY2l0ZWtleTogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGhGb3JDaXRla2V5KGNpdGVrZXkpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoKTtcblxuICAgIGxldCBmaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG5vcm1hbGl6ZWRQYXRoKTtcbiAgICBpZiAoZmlsZSA9PSBudWxsKSB7XG4gICAgICAvLyBGaXJzdCB0cnkgYSBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cC5cbiAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLmFwcC52YXVsdFxuICAgICAgICAuZ2V0TWFya2Rvd25GaWxlcygpXG4gICAgICAgIC5maWx0ZXIoKGYpID0+IGYucGF0aC50b0xvd2VyQ2FzZSgpID09IG5vcm1hbGl6ZWRQYXRoLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWxlID0gbWF0Y2hlc1swXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZmlsZSA9IGF3YWl0IHRoaXMuYXBwLnZhdWx0LmNyZWF0ZShcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICB0aGlzLmdldEluaXRpYWxDb250ZW50Rm9yQ2l0ZWtleShjaXRla2V5KSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChleGMpIHtcbiAgICAgICAgICB0aGlzLmxpdGVyYXR1cmVOb3RlRXJyb3JOb3RpZmllci5zaG93KCk7XG4gICAgICAgICAgdGhyb3cgZXhjO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGUgYXMgVEZpbGU7XG4gIH1cblxuICBhc3luYyBvcGVuTGl0ZXJhdHVyZU5vdGUoY2l0ZWtleTogc3RyaW5nLCBuZXdQYW5lOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5nZXRPckNyZWF0ZUxpdGVyYXR1cmVOb3RlRmlsZShjaXRla2V5KVxuICAgICAgLnRoZW4oKGZpbGU6IFRGaWxlKSA9PiB7XG4gICAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5nZXRMZWFmKG5ld1BhbmUpLm9wZW5GaWxlKGZpbGUpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydExpdGVyYXR1cmVOb3RlTGluayhjaXRla2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmdldE9yQ3JlYXRlTGl0ZXJhdHVyZU5vdGVGaWxlKGNpdGVrZXkpXG4gICAgICAudGhlbigoZmlsZTogVEZpbGUpID0+IHtcbiAgICAgICAgY29uc3QgdXNlTWFya2Rvd246IGJvb2xlYW4gPSAoPFZhdWx0RXh0PnRoaXMuYXBwLnZhdWx0KS5nZXRDb25maWcoXG4gICAgICAgICAgJ3VzZU1hcmtkb3duTGlua3MnLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0aXRsZSA9IHRoaXMuZ2V0VGl0bGVGb3JDaXRla2V5KGNpdGVrZXkpO1xuXG4gICAgICAgIGxldCBsaW5rVGV4dDogc3RyaW5nO1xuICAgICAgICBpZiAodXNlTWFya2Rvd24pIHtcbiAgICAgICAgICBjb25zdCB1cmkgPSBlbmNvZGVVUkkoXG4gICAgICAgICAgICB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmZpbGVUb0xpbmt0ZXh0KGZpbGUsICcnLCBmYWxzZSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsaW5rVGV4dCA9IGBbJHt0aXRsZX1dKCR7dXJpfSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmtUZXh0ID0gYFtbJHt0aXRsZX1dXWA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKGxpbmtUZXh0KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGxpdGVyYXR1cmUgbm90ZSBjb250ZW50IGZvciBhIGdpdmVuIHJlZmVyZW5jZSBhbmQgaW5zZXJ0IGluIHRoZVxuICAgKiBjdXJyZW50bHkgYWN0aXZlIHBhbmUuXG4gICAqL1xuICBhc3luYyBpbnNlcnRMaXRlcmF0dXJlTm90ZUNvbnRlbnQoY2l0ZWtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0SW5pdGlhbENvbnRlbnRGb3JDaXRla2V5KGNpdGVrZXkpO1xuICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZShjb250ZW50LCB0aGlzLmVkaXRvci5nZXRDdXJzb3IoKSk7XG4gIH1cblxuICBhc3luYyBpbnNlcnRNYXJrZG93bkNpdGF0aW9uKFxuICAgIGNpdGVrZXk6IHN0cmluZyxcbiAgICBhbHRlcm5hdGl2ZSA9IGZhbHNlLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmdW5jID0gYWx0ZXJuYXRpdmVcbiAgICAgID8gdGhpcy5nZXRBbHRlcm5hdGl2ZU1hcmtkb3duQ2l0YXRpb25Gb3JDaXRla2V5XG4gICAgICA6IHRoaXMuZ2V0TWFya2Rvd25DaXRhdGlvbkZvckNpdGVrZXk7XG4gICAgY29uc3QgY2l0YXRpb24gPSBmdW5jLmJpbmQodGhpcykoY2l0ZWtleSk7XG5cbiAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UoY2l0YXRpb24sIHRoaXMuZWRpdG9yLmdldEN1cnNvcigpKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInBhdGgiLCJyZXF1aXJlJCQwIiwiUE9TSVhfUkVHRVhfU09VUkNFIiwicGFyc2UiLCJzY2FuIiwicmVxdWlyZSQkMSIsImZzIiwicGljb21hdGNoIiwic3lzUGF0aCIsInV0aWxzIiwiaXNPYmplY3QiLCJpc051bWJlciIsInN0cmluZ2lmeSIsInRvUmVnZXhSYW5nZSIsInV0aWwiLCJmaWxsIiwiTUFYX0xFTkdUSCIsIkNIQVJfQ09NTUEiLCJDSEFSX0RPVCIsIkNIQVJfTEVGVF9QQVJFTlRIRVNFUyIsIkNIQVJfUklHSFRfUEFSRU5USEVTRVMiLCJDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UiLCJDSEFSX1JJR0hUX0NVUkxZX0JSQUNFIiwiQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUIiwiQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCIsImNvbXBpbGUiLCJleHBhbmQiLCJwcm9taXNpZnkiLCJTVEFSIiwib3BlbiIsInN0YXQiLCJsc3RhdCIsIkVWX0FERCIsIkVWX0NIQU5HRSIsIkVWX0FERF9ESVIiLCJFVl9FUlJPUiIsIlNUUl9EQVRBIiwiU1RSX0VORCIsIkVNUFRZX0ZOIiwicmVhbHBhdGgiLCJzdGF0TWV0aG9kcyIsInJlcXVpcmUkJDIiLCJFVl9VTkxJTksiLCJCUkFDRV9TVEFSVCIsIkJBTkciLCJGVU5DVElPTl9UWVBFIiwiRU1QVFlfU1RSIiwiaXNXaW5kb3dzIiwicmVxdWlyZSQkMyIsInJlYWRkaXIiLCJicmFjZXMiLCJGc0V2ZW50c0hhbmRsZXIiLCJOb2RlRnNIYW5kbGVyIiwicmVhZGRpcnAiLCJfdXRpbHMiLCJfZXhjZXB0aW9uIiwiZ2xvYmFsIiwiX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmciLCJfaGVscGVyc0VhY2giLCJfaGVscGVyc0hlbHBlck1pc3NpbmciLCJfaGVscGVyc0lmIiwiX2hlbHBlcnNMb2ciLCJfaGVscGVyc0xvb2t1cCIsIl9oZWxwZXJzV2l0aCIsIl9kZWNvcmF0b3JzSW5saW5lIiwiX2xvZ2dlciIsIl9jcmVhdGVOZXdMb29rdXBPYmplY3QiLCJoZWxwZXJzIiwiZGVjb3JhdG9ycyIsIl9oZWxwZXJzIiwiX2RlY29yYXRvcnMiLCJfaW50ZXJuYWxQcm90b0FjY2VzcyIsIl9iYXNlIiwiX2ludGVybmFsV3JhcEhlbHBlciIsImJhc2UiLCJfaGFuZGxlYmFyc0Jhc2UiLCJfaGFuZGxlYmFyc1NhZmVTdHJpbmciLCJfaGFuZGxlYmFyc0V4Y2VwdGlvbiIsIl9oYW5kbGViYXJzVXRpbHMiLCJydW50aW1lIiwiX2hhbmRsZWJhcnNSdW50aW1lIiwiX2hhbmRsZWJhcnNOb0NvbmZsaWN0IiwiX3Zpc2l0b3IiLCJfcGFyc2VyIiwiX3doaXRlc3BhY2VDb250cm9sIiwiX2FzdCIsIkFycmF5U2V0IiwiTWFwcGluZ0xpc3QiLCJiYXNlNjRWTFEiLCJxdWlja1NvcnQiLCJTb3VyY2VNYXBHZW5lcmF0b3IiLCJkZWZpbmUiLCJfY29kZUdlbiIsIl9oYW5kbGViYXJzQ29tcGlsZXJBc3QiLCJfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyIiwiX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IiLCJfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIiLCJfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZSIsImhhbmRsZWJhcnMiLCJyZXF1aXJlIiwiRXZlbnRzIiwicmVuZGVyTWF0Y2hlcyIsIkZ1enp5U3VnZ2VzdE1vZGFsIiwiTm90aWNlIiwiY2hhckNhdGVnb3JpZXMiLCJjaHVua2VyXzEiLCJiaWJ0ZXgiLCJ1bmljb2RlMmxhdGV4XzEiLCJqYWJyZWZfMSIsIlNldHRpbmciLCJGaWxlU3lzdGVtQWRhcHRlciIsIlBsdWdpblNldHRpbmdUYWIiLCJQcm9taXNlV29ya2VyIiwiTG9hZFdvcmtlciIsIk1hcmtkb3duVmlldyIsImNob2tpZGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLndhdGNoIiwicGF0aC5yZXNvbHZlIiwiY29tcGlsZVRlbXBsYXRlIiwicGF0aC5qb2luIiwibm9ybWFsaXplUGF0aCIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25DLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjO0FBQ3pDLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFlBQVksS0FBSyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRixRQUFRLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxRyxJQUFJLE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFDRjtBQUNPLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDaEMsSUFBSSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzNDLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBQ0Q7QUFDTyxJQUFJLFFBQVEsR0FBRyxXQUFXO0FBQ2pDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JELFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0QsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFlBQVksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekYsU0FBUztBQUNULFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsTUFBSztBQUNMLElBQUksT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMzQyxFQUFDO0FBNEJEO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNPLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6SyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07QUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN4RSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0I7QUFDaEIsb0JBQW9CLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDaEksb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDMUcsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUN6RixvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FB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LElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzlFLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDdkQsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0MsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUM3RCxNQUFNLElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQztBQUM5QixNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ3BELE1BQU0sT0FBTztBQUNiLEtBQUs7QUFDTDtBQUNBLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNmLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUs7QUFDdkMsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3hFO0FBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNoQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUNoQyxJQUFJLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDMUQ7QUFDQSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDaEUsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDckUsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxNQUFNLFlBQVksR0FBRyxLQUFLLElBQUk7QUFDaEMsSUFBSSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3pEO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO0FBQ2pDLE1BQU0sSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQzdCO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzlFLFFBQVEsV0FBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksV0FBVyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUU7QUFDdEUsUUFBUSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BELE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDOUMsUUFBUSxLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztBQUNwQyxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDMUQsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEIsR0FBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN0RSxJQUFJLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUM1QjtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxLQUFLO0FBQ25HLE1BQU0sSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO0FBQzFCLFFBQVEsV0FBVyxHQUFHLElBQUksQ0FBQztBQUMzQixRQUFRLE9BQU8sQ0FBQyxDQUFDO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3pCLFFBQVEsSUFBSSxHQUFHLEVBQUU7QUFDakIsVUFBVSxPQUFPLEdBQUcsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZFLFNBQVM7QUFDVCxRQUFRLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUN6QixVQUFVLE9BQU8sVUFBVSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN0RSxTQUFTO0FBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3pCLFFBQVEsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRCxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRTtBQUN6QixRQUFRLElBQUksR0FBRyxFQUFFO0FBQ2pCLFVBQVUsT0FBTyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDbEQsU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBLElBQUksSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO0FBQzlCLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUNsQyxRQUFRLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMzQyxPQUFPLE1BQU07QUFDYixRQUFRLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUk7QUFDN0MsVUFBVSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztBQUMvRCxTQUFTLENBQUMsQ0FBQztBQUNYLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksTUFBTSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUNwRCxNQUFNLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzNCLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDbkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM1RCxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUU7QUFDakIsSUFBSSxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDdEI7QUFDQSxJQUFJLElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM1QixNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO0FBQ3hCLE1BQU0sTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDMUI7QUFDQSxNQUFNLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtBQUM5QyxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtBQUN4QyxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2pCLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQztBQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0QyxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUM3QyxNQUFNLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUN0QjtBQUNBLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDeEMsUUFBUSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNsQyxRQUFRLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDO0FBQy9CLFFBQVEsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMvQixVQUFVLEtBQUssSUFBSSxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUNsQyxRQUFRLEtBQUssR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDaEMsT0FBTyxNQUFNO0FBQ2IsUUFBUSxLQUFLLElBQUksT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ2pDLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtBQUNoQyxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0QyxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFO0FBQzVGLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ2pELFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDakMsVUFBVSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUM1QjtBQUNBLFVBQVUsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ25DLFlBQVksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakQsWUFBWSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsWUFBWSxNQUFNLEtBQUssR0FBR0Esb0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkQsWUFBWSxJQUFJLEtBQUssRUFBRTtBQUN2QixjQUFjLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUN2QyxjQUFjLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLGNBQWMsT0FBTyxFQUFFLENBQUM7QUFDeEI7QUFDQSxjQUFjLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzdELGdCQUFnQixHQUFHLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUN0QyxlQUFlO0FBQ2YsY0FBYyxTQUFTO0FBQ3ZCLGFBQWE7QUFDYixXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxNQUFNLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDbEYsUUFBUSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM3QixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksS0FBSyxLQUFLLEdBQUcsS0FBSyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFO0FBQ3hFLFFBQVEsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdEUsUUFBUSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ3BCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7QUFDMUIsTUFBTSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRTtBQUM3QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7QUFDMUIsTUFBTSxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLE9BQU87QUFDUCxNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3ZCLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtBQUM5RCxRQUFRLE1BQU0sSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNELE9BQU87QUFDUDtBQUNBLE1BQU0sTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEQsTUFBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQzFELFFBQVEsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ2pFLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtBQUNyRSxVQUFVLE1BQU0sSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdELFNBQVM7QUFDVDtBQUNBLFFBQVEsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0IsT0FBTyxNQUFNO0FBQ2IsUUFBUSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkMsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNuRyxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1RCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFO0FBQ2hDLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtBQUMxQyxVQUFVLE1BQU0sSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdELFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVELFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM1QjtBQUNBLE1BQU0sTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ25GLFFBQVEsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztBQUMxQixNQUFNLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDNUUsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsTUFBTSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO0FBQ3pDLFFBQVEsS0FBSyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUM7QUFDaEMsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztBQUM3QixRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELE1BQU0sS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ2pDLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDaEQsTUFBTSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUI7QUFDQSxNQUFNLE1BQU0sSUFBSSxHQUFHO0FBQ25CLFFBQVEsSUFBSSxFQUFFLE9BQU87QUFDckIsUUFBUSxLQUFLO0FBQ2IsUUFBUSxNQUFNLEVBQUUsR0FBRztBQUNuQixRQUFRLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07QUFDeEMsUUFBUSxXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ3hDLE9BQU8sQ0FBQztBQUNSO0FBQ0EsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3ZCLE1BQU0sTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUM7QUFDQSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDM0MsUUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNyRCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDdkI7QUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDL0IsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDekI7QUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsRCxVQUFVLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2QixVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7QUFDdkMsWUFBWSxNQUFNO0FBQ2xCLFdBQVc7QUFDWCxVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7QUFDdEMsWUFBWSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0EsUUFBUSxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxQyxRQUFRLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQy9CLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtBQUN2RCxRQUFRLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDN0QsUUFBUSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0QsUUFBUSxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzNDLFFBQVEsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDL0IsUUFBUSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUMzQixRQUFRLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQzlCLFVBQVUsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRCxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25CLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQy9CLFFBQVEsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDbkQsT0FBTztBQUNQLE1BQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDekI7QUFDQSxNQUFNLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFO0FBQ3pELFFBQVEsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDM0IsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ3JCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUM3QyxNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDbEUsUUFBUSxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDNUIsUUFBUSxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUMxQixRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNyQixRQUFRLElBQUksR0FBRyxHQUFHLENBQUM7QUFDbkIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFDNUQsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRTtBQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7QUFDbkQsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO0FBQzFELFFBQVEsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEQsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUMzQixRQUFRLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7QUFDNUIsUUFBUSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQixRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUMvRixRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzNELFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUM7QUFDakQsTUFBTSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ3BGLFFBQVEsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwQyxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUN6QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO0FBQzVCLFFBQVEsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzNCO0FBQ0EsUUFBUSxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtBQUMxRCxVQUFVLE1BQU0sSUFBSSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztBQUNyRixTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2pILFVBQVUsTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEMsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzlDLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtBQUMvRSxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQzdELFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRTtBQUNyRCxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDeEQsVUFBVSxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLFVBQVUsU0FBUztBQUNuQixTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3ZELFFBQVEsTUFBTSxFQUFFLENBQUM7QUFDakIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3ZCLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUN4RSxRQUFRLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsS0FBSyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtBQUNoRSxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQzVELFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUNySCxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0QyxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ3hFLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDcEMsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksS0FBSyxLQUFLLEdBQUcsRUFBRTtBQUN2QixNQUFNLElBQUksS0FBSyxLQUFLLEdBQUcsSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQzFDLFFBQVEsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDN0IsT0FBTztBQUNQO0FBQ0EsTUFBTSxNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUM5RCxNQUFNLElBQUksS0FBSyxFQUFFO0FBQ2pCLFFBQVEsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixRQUFRLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN2QyxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNwQyxNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtBQUNsRSxNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLE1BQU0sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdkIsTUFBTSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztBQUMxQixNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLE1BQU0sS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDN0IsTUFBTSxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUM1QixNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQixNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxHQUFHLFNBQVMsRUFBRSxDQUFDO0FBQzNCLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3pELE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqQyxNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7QUFDOUIsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO0FBQ3BDLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDOUIsTUFBTSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ2hDLE1BQU0sTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUM7QUFDckUsTUFBTSxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQztBQUN6RjtBQUNBLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDNUUsUUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQzdGLE1BQU0sTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0FBQzdGLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUN4RSxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xELFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQTtBQUNBLE1BQU0sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDekMsUUFBUSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QyxRQUFRLElBQUksS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDcEMsVUFBVSxNQUFNO0FBQ2hCLFNBQVM7QUFDVCxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFFBQVEsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDekMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztBQUMvQixRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO0FBQzVCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsUUFBUSxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDbkMsUUFBUSxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUM5QixRQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QixRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUN0RixRQUFRLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkYsUUFBUSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzVDO0FBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztBQUMvQixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzFFLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7QUFDNUIsUUFBUSxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUM5QixRQUFRLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ25ELFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZCLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDbEYsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNuRDtBQUNBLFFBQVEsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNuRixRQUFRLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDNUM7QUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEYsUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztBQUM1QjtBQUNBLFFBQVEsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDbkQsUUFBUSxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUM5QjtBQUNBLFFBQVEsT0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ25DO0FBQ0EsUUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEQsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ25ELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7QUFDL0IsUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztBQUM1QixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsUUFBUSxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDbkMsUUFBUSxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUM5QixRQUFRLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4RCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRTtBQUNBO0FBQ0EsTUFBTSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztBQUM3QixNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUM7QUFDMUI7QUFDQTtBQUNBLE1BQU0sS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2xDLE1BQU0sS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDNUIsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckIsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN4RDtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtBQUM1QixNQUFNLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUN4RCxRQUFRLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDNUMsT0FBTztBQUNQLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xCLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtBQUMzRixNQUFNLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xCLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7QUFDckYsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO0FBQy9CLFFBQVEsS0FBSyxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUM7QUFDckMsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQztBQUNwQztBQUNBLE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFO0FBQ3BDLFFBQVEsS0FBSyxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUM7QUFDdEMsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQztBQUNyQztBQUNBLE9BQU8sTUFBTTtBQUNiLFFBQVEsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7QUFDOUIsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQztBQUM3QixPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFO0FBQzFCLFFBQVEsS0FBSyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUM7QUFDakMsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQztBQUNoQyxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFO0FBQzdCLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRSxNQUFNLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6RixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZELElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUMzQixJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUUsTUFBTSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekYsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDM0IsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFLE1BQU0sSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkQsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEVBQUU7QUFDeEYsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFFLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO0FBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDdEI7QUFDQSxJQUFJLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtBQUN0QyxNQUFNLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3hFO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDeEIsUUFBUSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDckMsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sS0FBSztBQUN0QyxFQUFFLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUM5QixFQUFFLE1BQU0sR0FBRyxHQUFHLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNyRyxFQUFFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDM0IsRUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUU7QUFDakIsSUFBSSxNQUFNLElBQUksV0FBVyxDQUFDLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUYsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUN2QyxFQUFFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekM7QUFDQTtBQUNBLEVBQUUsTUFBTTtBQUNSLElBQUksV0FBVztBQUNmLElBQUksYUFBYTtBQUNqQixJQUFJLFFBQVE7QUFDWixJQUFJLFVBQVU7QUFDZCxJQUFJLE1BQU07QUFDVixJQUFJLE9BQU87QUFDWCxJQUFJLGFBQWE7QUFDakIsSUFBSSxJQUFJO0FBQ1IsSUFBSSxZQUFZO0FBQ2hCLEdBQUcsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDO0FBQ0EsRUFBRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDNUMsRUFBRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFDckQsRUFBRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDM0MsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQy9DLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQztBQUMvQztBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ3BCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxLQUFLO0FBQzdCLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQztBQUM5QyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUYsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSTtBQUN4QixJQUFJLFFBQVEsR0FBRztBQUNmLE1BQU0sS0FBSyxHQUFHO0FBQ2QsUUFBUSxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVDO0FBQ0EsTUFBTSxLQUFLLElBQUk7QUFDZixRQUFRLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEQ7QUFDQSxNQUFNLEtBQUssS0FBSztBQUNoQixRQUFRLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakU7QUFDQSxNQUFNLEtBQUssS0FBSztBQUNoQixRQUFRLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDOUU7QUFDQSxNQUFNLEtBQUssSUFBSTtBQUNmLFFBQVEsT0FBTyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsTUFBTSxLQUFLLE1BQU07QUFDakIsUUFBUSxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RjtBQUNBLE1BQU0sS0FBSyxRQUFRO0FBQ25CLFFBQVEsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEg7QUFDQSxNQUFNLEtBQUssT0FBTztBQUNsQixRQUFRLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2hHO0FBQ0EsTUFBTSxTQUFTO0FBQ2YsUUFBUSxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakQsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU87QUFDM0I7QUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QyxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUM1QjtBQUNBLFFBQVEsT0FBTyxNQUFNLEdBQUcsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRCxFQUFFLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QjtBQUNBLEVBQUUsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUU7QUFDN0MsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0EsV0FBYyxHQUFHLEtBQUs7O0FDOWlDdEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxHQUFHLEtBQUssS0FBSztBQUMxRCxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMzQixJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDMUUsSUFBSSxNQUFNLFlBQVksR0FBRyxHQUFHLElBQUk7QUFDaEMsTUFBTSxLQUFLLE1BQU0sT0FBTyxJQUFJLEdBQUcsRUFBRTtBQUNqQyxRQUFRLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksS0FBSyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2hDLE9BQU87QUFDUCxNQUFNLE9BQU8sS0FBSyxDQUFDO0FBQ25CLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxZQUFZLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzlEO0FBQ0EsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLEtBQUssT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDN0QsSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFDckUsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLElBQUksR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzdCLEVBQUUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6QyxFQUFFLE1BQU0sS0FBSyxHQUFHLE9BQU87QUFDdkIsTUFBTSxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7QUFDeEMsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25EO0FBQ0EsRUFBRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzVCLEVBQUUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3JCO0FBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQztBQUM5QixFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNuQixJQUFJLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNuRixJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDaEUsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsS0FBSyxLQUFLO0FBQ25ELElBQUksTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzlGLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDaEY7QUFDQSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUM3QyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLEVBQUU7QUFDM0IsTUFBTSxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUM3QixNQUFNLE9BQU8sWUFBWSxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDM0MsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMxQixNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtBQUMvQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsT0FBTztBQUNQLE1BQU0sTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDN0IsTUFBTSxPQUFPLFlBQVksR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzNDLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO0FBQzVDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQixLQUFLO0FBQ0wsSUFBSSxPQUFPLFlBQVksR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3hDLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxJQUFJLFdBQVcsRUFBRTtBQUNuQixJQUFJLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSztBQUNsRSxFQUFFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO0FBQ2pDLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3pELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO0FBQ3BCLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzFDLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxJQUFJLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztBQUM3QixFQUFFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxHQUFHLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdEUsRUFBRSxJQUFJLEtBQUssR0FBRyxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQzdCLEVBQUUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxLQUFLLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDekQ7QUFDQSxFQUFFLElBQUksS0FBSyxLQUFLLEtBQUssRUFBRTtBQUN2QixJQUFJLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM1QyxJQUFJLEtBQUssR0FBRyxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQzVCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQ2hELElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUMzRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLEtBQUssTUFBTTtBQUNYLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakMsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSztBQUNsRixFQUFFLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBWSxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hGLEVBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDRiwyQkFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sS0FBSyxTQUFTLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLO0FBQ3hDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxD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QUcsUUFBUSxDQUFDO0FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM1QyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNiLElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2QsSUFBSSxTQUFTLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDOUIsRUFBRSxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUM5QixFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFlLENBQUMsQ0FBQztBQUM3RDtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtBQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxD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QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25CLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2YsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDdkIsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFDRDtBQUNBLFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pDLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUM5QixFQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEMsRUFBRSxPQUFPLE9BQU8sSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxD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QU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO0FBQzVFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUMxQixLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEM7QUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7QUFDM0QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwQyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUNsQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNoRCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7QUFDaEQsUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDckQsUUFBUSxTQUFTO0FBQ2pCLE9B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QUFDQSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEQsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELEVBQUUsT0FBTyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsRUFBRSxNQUFNLElBQUksR0FBR0EsMkJBQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDLEVBQUUsTUFBTSxRQUFRLEdBQUdBLDJCQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLEVBQUUsV0FBVyxHQUFHLFdBQVcsSUFBSSxJQUFJO0FBQ25DLE1BQU0sV0FBVztBQUNqQixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPO0FBQ25EO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUks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QixFQUFFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN0QyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUM3QixFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUN0QixFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNiLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLEdBQUc7QUFDSCxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDdEIsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUMxQixFQUFFLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN6RSxFQUFFLElBQUksTUFBTSxHQUFHNkMsVUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2QyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FB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LENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFF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QUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxSCxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RSxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEMsb0JBQW9CLE1BQU07QUFDMUIsZ0JBQWdCLEtBQUssRUFBRTtBQUN2QixvQkFBb0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsb0JBQW9CLE1BQU07QUFDMUIsZ0JBQWdCLEtBQUssR0FBRztBQUN4QixvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLG9CQUFvQixNQUFNO0FBQzFCLGdCQUFnQixLQUFLLEdBQUc7QUFDeEIsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLG9CQUFvQixNQUFNO0FBQzFCLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDL2pkLFFBQVEsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFB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LEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkI7QUFDQSxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFOUMsZ0JBQWdCLEtBQUssRUFBRTtBQUN2QixvQkFBb0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTlDLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTVFLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTVFLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRW5GLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sU0FBUyxDQUFDO0FBRXJDLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sQ0FBQyxDQUFDO0FBRTdCLGFBQWE7QUFDYixTQUFTLENBQUM7QUFDVixRQUFRLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxlQUFlLEVBQUUsK0NBQStDLEVBQUUsd0JBQXdCLEVBQUUsb0VBQW9FLEVBQUUsOEJBQThCLEVBQUUseUJBQXlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLGlDQUFpQyxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLDRCQUE0QixFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLHlDQUF5QyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUseURBQXlELEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZqQyxRQUFRLEtBQUssQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUNoYSxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLEtBQUssR0FBRyxDQUFDO0FBQ1QsSUFBSSxNQUFNLENBQUMsS0FB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RyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDekIsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQ3JDLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksVUFBVSxHQUFHLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEI7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFO0FBQ3BDLElBQUksT0FBTyxDQUFDLElBQUksWUFBWSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUNELGFBQWEsR0FBRyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDdkQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDakQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFDMUQsWUFBWSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFDMUUsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFC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LENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxlQUFlQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdELGVBQWVBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLGVBQWVBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxlQUFlQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxRQUFRLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSUEsYUFBZSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN2SCxZQUFZLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHQSxhQUFlLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkYsUUFBUSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7QUFDekMsWUFBWSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUks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QUFBRCxDQUxBLENBQTBDLEtBQUssR0FLOUM7QUFXRCxJQUFNLDJCQUEyQixHQUF5QjtJQUN4RCxlQUFlLEVBQUUsS0FBSztDQUN2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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